diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/ActiveEdge.jpg b/ActiveEdge.jpg new file mode 100644 index 000000000..8ec807314 Binary files /dev/null and b/ActiveEdge.jpg differ diff --git a/ActiveVsInactiveContactNormal.jpg b/ActiveVsInactiveContactNormal.jpg new file mode 100644 index 000000000..434bc1420 Binary files /dev/null and b/ActiveVsInactiveContactNormal.jpg differ diff --git a/ConvexRadius.jpg b/ConvexRadius.jpg new file mode 100644 index 000000000..01d3c253d Binary files /dev/null and b/ConvexRadius.jpg differ diff --git a/EllipsoidAABB.png b/EllipsoidAABB.png new file mode 100644 index 000000000..f4ad423f1 Binary files /dev/null and b/EllipsoidAABB.png differ diff --git a/GhostCollision.jpg b/GhostCollision.jpg new file mode 100644 index 000000000..4458b08ed Binary files /dev/null and b/GhostCollision.jpg differ diff --git a/LogoSmall.png b/LogoSmall.png new file mode 100644 index 000000000..a3a2317c7 Binary files /dev/null and b/LogoSmall.png differ diff --git a/LongAndThin.jpg b/LongAndThin.jpg new file mode 100644 index 000000000..7a38199b3 Binary files /dev/null and b/LongAndThin.jpg differ diff --git a/MotionQuality.jpg b/MotionQuality.jpg new file mode 100644 index 000000000..a56a46bdc Binary files /dev/null and b/MotionQuality.jpg differ diff --git a/MotorDamping.jpg b/MotorDamping.jpg new file mode 100644 index 000000000..9e3c1e5ed Binary files /dev/null and b/MotorDamping.jpg differ diff --git a/MotorFrequency.jpg b/MotorFrequency.jpg new file mode 100644 index 000000000..4f66722e2 Binary files /dev/null and b/MotorFrequency.jpg differ diff --git a/PhysicsSystemUpdate.svg b/PhysicsSystemUpdate.svg new file mode 100644 index 000000000..475dc5791 --- /dev/null +++ b/PhysicsSystemUpdate.svg @@ -0,0 +1,4 @@ + + + +
Apply Gravity
(in batches)
Apply Gravity...
Setup Velocity Constraints
Setup Velocity C...
Pre Integrate
Pre Integrate
Finalize Islands
Finalize Islands
Solve Position Constraints,
Update Bodies Broadphase
(per island)
Solve Position C...
Set Body Island Idx
Set Body Island Idx
P
P
V
V
P
P
V
V
Read position
Read position
Read/write position
Read/write position
Read velocity
Read velocity
Read/write velocity
Read/write velocity
Broad Phase Update Prepare
Broad Phase Upda...
P
P
P
P
Solve Velocity Constraints
(per island)
Solve Velocity C...
V
V
P
P
V
V
P
P
V
V
P
P
P
P
Broad Phase Update Finalize
Broad Phase Upda...
Start Next Step
Start Next Step
Repeat CollisionStep Times
Repeat CollisionStep Times
A
A
A
A
Reads active bodies
Reads active bodies
Deactivates bodies
Deactivates bodies
Build Islands from Constraints
Build Islands fr...
P
P
A
A
A
A
Find Collisions
(per batch of active bodies and per pair)
Find Collisions...
P
P
V
V
A
A
Multiple concurrent jobs
Multiple concurrent jobs
Determine Active Constraints
(in batches)
Determine Active...
A
A
Activates bodies
Activates bodies
A
A
Can spawn
more jobs
Can spawn...
Find CCD Contacts
(per body)
Find CCD Contact...
Resolve CCD Contacts
Resolve CCD Cont...
V
V
P
P
A
A
P
P
Finalize Contact Cache,
Contact Removed Callbacks
Finalize Contact Cache,...
V
V
Not
Last
Step
Not...
Last Step
Last Step
Step Listeners
(in batches)
Step Listeners...
P
P
V
V
A
A
Integrate & Clamp Velocities (in batches)
Integrate & Clam...
Post Integrate
Post Integrate
If no CCD bodies
If no CCD bodies
Starts the final job
Starts the...
Soft Body Prepare
Soft Body Prepare
Soft Body Collide
Soft Body Collide
Soft Body Simulate
Soft Body Simula...
Soft Body Finalize
Soft Body Finali...
P
P
P
P
V
V
P
P
V
V
V
V
A
A
A
A
Text is not SVG - cannot display
\ No newline at end of file diff --git a/QuadTreeExample.png b/QuadTreeExample.png new file mode 100644 index 000000000..9e49489cf Binary files /dev/null and b/QuadTreeExample.png differ diff --git a/ShapeCenterOfMass.jpg b/ShapeCenterOfMass.jpg new file mode 100644 index 000000000..7126964e9 Binary files /dev/null and b/ShapeCenterOfMass.jpg differ diff --git a/SimulationIsland.jpg b/SimulationIsland.jpg new file mode 100644 index 000000000..ab80a988f Binary files /dev/null and b/SimulationIsland.jpg differ diff --git a/SoftBodySkinnedConstraint.jpg b/SoftBodySkinnedConstraint.jpg new file mode 100644 index 000000000..c26dc7858 Binary files /dev/null and b/SoftBodySkinnedConstraint.jpg differ diff --git a/SwingTwistConstraint.png b/SwingTwistConstraint.png new file mode 100644 index 000000000..10c16bc20 Binary files /dev/null and b/SwingTwistConstraint.png differ diff --git a/_a_a_b_b_tree_builder_8cpp.html b/_a_a_b_b_tree_builder_8cpp.html new file mode 100644 index 000000000..de2ceb673 --- /dev/null +++ b/_a_a_b_b_tree_builder_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/AABBTree/AABBTreeBuilder.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AABBTreeBuilder.cpp File Reference
+
+
+
+
+ + + + diff --git a/_a_a_b_b_tree_builder_8h.html b/_a_a_b_b_tree_builder_8h.html new file mode 100644 index 000000000..4603de883 --- /dev/null +++ b/_a_a_b_b_tree_builder_8h.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Jolt/AABBTree/AABBTreeBuilder.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AABBTreeBuilder.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

struct  AABBTreeBuilderStats
 
class  AABBTreeBuilder
 Helper class to build an AABB tree. More...
 
class  AABBTreeBuilder::Node
 A node in the tree, contains the AABox for the tree and any child nodes or triangles. More...
 
+
+
+ + + + diff --git a/_a_a_b_b_tree_builder_8h.js b/_a_a_b_b_tree_builder_8h.js new file mode 100644 index 000000000..e8019cea6 --- /dev/null +++ b/_a_a_b_b_tree_builder_8h.js @@ -0,0 +1,6 @@ +var _a_a_b_b_tree_builder_8h = +[ + [ "AABBTreeBuilderStats", "struct_a_a_b_b_tree_builder_stats.html", "struct_a_a_b_b_tree_builder_stats" ], + [ "AABBTreeBuilder", "class_a_a_b_b_tree_builder.html", "class_a_a_b_b_tree_builder" ], + [ "AABBTreeBuilder::Node", "class_a_a_b_b_tree_builder_1_1_node.html", "class_a_a_b_b_tree_builder_1_1_node" ] +]; \ No newline at end of file diff --git a/_a_a_b_b_tree_builder_8h_source.html b/_a_a_b_b_tree_builder_8h_source.html new file mode 100644 index 000000000..717177a1e --- /dev/null +++ b/_a_a_b_b_tree_builder_8h_source.html @@ -0,0 +1,242 @@ + + + + + + + +Jolt Physics: Jolt/AABBTree/AABBTreeBuilder.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AABBTreeBuilder.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
+ + + +
10
+ +
12
+
+ +
14{
+ +
17
+
19 float mSAHCost = 0.0f;
+
20 int mMinDepth = 0;
+
21 int mMaxDepth = 0;
+
22 int mNodeCount = 0;
+ +
24
+ +
27
+ + + +
32};
+
+
33
+
+ +
36{
+
37public:
+
+
39 class Node : public NonCopyable
+
40 {
+
41 public:
+ +
43
+
45 Node();
+
46 ~Node();
+
47
+
49 inline uint GetTriangleCount() const { return uint(mTriangles.size()); }
+
50
+
52 inline bool HasChildren() const { return mChild[0] != nullptr || mChild[1] != nullptr; }
+
53
+
55 uint GetMinDepth() const;
+
56
+
58 uint GetMaxDepth() const;
+
59
+
61 uint GetNodeCount() const;
+
62
+
64 uint GetLeafNodeCount() const;
+
65
+
67 uint GetTriangleCountInTree() const;
+
68
+
70 void GetTriangleCountPerNode(float &outAverage, uint &outMin, uint &outMax) const;
+
71
+
73 float CalculateSAHCost(float inCostTraversal, float inCostLeaf) const;
+
74
+
76 void GetNChildren(uint inN, Array<const Node *> &outChildren) const;
+
77
+ +
80
+ +
83
+
85 Node * mChild[2];
+
86
+
87 private:
+
88 friend class AABBTreeBuilder;
+
89
+
91 float CalculateSAHCostInternal(float inCostTraversalDivSurfaceArea, float inCostLeafDivSurfaceArea) const;
+
92
+
94 void GetTriangleCountPerNodeInternal(float &outAverage, uint &outAverageDivisor, uint &outMin, uint &outMax) const;
+
95 };
+
+
96
+
98 AABBTreeBuilder(TriangleSplitter &inSplitter, uint inMaxTrianglesPerLeaf = 16);
+
99
+
101 Node * Build(AABBTreeBuilderStats &outStats);
+
102
+
103private:
+
104 Node * BuildInternal(const TriangleSplitter::Range &inTriangles);
+
105
+
106 TriangleSplitter & mTriangleSplitter;
+
107 const uint mMaxTrianglesPerLeaf;
+
108};
+
+
109
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
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
+ + +
A node in the tree, contains the AABox for the tree and any child nodes or triangles.
Definition AABBTreeBuilder.h:40
+
AABox mBounds
Bounding box.
Definition AABBTreeBuilder.h:79
+
IndexedTriangleList mTriangles
Triangles (if no child nodes)
Definition AABBTreeBuilder.h:82
+
uint GetTriangleCount() const
Get number of triangles in this node.
Definition AABBTreeBuilder.h:49
+
bool HasChildren() const
Check if this node has any children.
Definition AABBTreeBuilder.h:52
+
Helper class to build an AABB tree.
Definition AABBTreeBuilder.h:36
+
Axis aligned box.
Definition AABox.h:16
+
Definition Array.h:36
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
A class that splits a triangle list into two parts for building a tree.
Definition TriangleSplitter.h:14
+
Definition AABBTreeBuilder.h:14
+
int mTreeMinTrianglesPerLeaf
Minimal amount of triangles in a leaf.
Definition AABBTreeBuilder.h:29
+
float mSAHCost
Surface Area Heuristic cost of this tree.
Definition AABBTreeBuilder.h:19
+
int mMaxTrianglesPerLeaf
Configured max triangles per leaf.
Definition AABBTreeBuilder.h:26
+
int mMaxDepth
Maximum depth of tree (number of nodes)
Definition AABBTreeBuilder.h:21
+
int mLeafNodeCount
Number of leaf nodes (that contain triangles)
Definition AABBTreeBuilder.h:23
+
float mTreeAvgTrianglesPerLeaf
Average amount of triangles in leaf nodes.
Definition AABBTreeBuilder.h:31
+
int mMinDepth
Minimal depth of tree (number of nodes)
Definition AABBTreeBuilder.h:20
+
TriangleSplitter::Stats mSplitterStats
Stats returned by the triangle splitter algorithm.
Definition AABBTreeBuilder.h:16
+
int mNodeCount
Number of nodes in the tree.
Definition AABBTreeBuilder.h:22
+
int mTreeMaxTrianglesPerLeaf
Maximal amount of triangles in a leaf.
Definition AABBTreeBuilder.h:30
+
Helper struct to indicate triangle range before and after the split.
Definition TriangleSplitter.h:33
+
Definition TriangleSplitter.h:23
+
+
+ + + + diff --git a/_a_a_b_b_tree_to_buffer_8h.html b/_a_a_b_b_tree_to_buffer_8h.html new file mode 100644 index 000000000..52ab50a0d --- /dev/null +++ b/_a_a_b_b_tree_to_buffer_8h.html @@ -0,0 +1,153 @@ + + + + + + + +Jolt Physics: Jolt/AABBTree/AABBTreeToBuffer.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AABBTreeToBuffer.h File Reference
+
+
+
#include <Jolt/AABBTree/AABBTreeBuilder.h>
+#include <Jolt/Core/ByteBuffer.h>
+#include <Jolt/Geometry/IndexedTriangle.h>
+#include <deque>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  AABBTreeToBuffer< TriangleCodec, NodeCodec >
 Conversion algorithm that converts an AABB tree to an optimized binary buffer. More...
 
+ + + + +

+Typedefs

template<class T >
using Deque = std::deque< T, STLAllocator< T > >
 
+

Typedef Documentation

+ +

◆ Deque

+ +
+
+
+template<class T >
+ + + + +
using Deque = std::deque<T, STLAllocator<T> >
+
+ +
+
+
+
+ + + + diff --git a/_a_a_b_b_tree_to_buffer_8h.js b/_a_a_b_b_tree_to_buffer_8h.js new file mode 100644 index 000000000..2b3831c4e --- /dev/null +++ b/_a_a_b_b_tree_to_buffer_8h.js @@ -0,0 +1,5 @@ +var _a_a_b_b_tree_to_buffer_8h = +[ + [ "AABBTreeToBuffer< TriangleCodec, NodeCodec >", "class_a_a_b_b_tree_to_buffer.html", "class_a_a_b_b_tree_to_buffer" ], + [ "Deque", "_a_a_b_b_tree_to_buffer_8h.html#a67d026216193591fdc45e5ac1abebac9", null ] +]; \ No newline at end of file diff --git a/_a_a_b_b_tree_to_buffer_8h_source.html b/_a_a_b_b_tree_to_buffer_8h_source.html new file mode 100644 index 000000000..9588a1eab --- /dev/null +++ b/_a_a_b_b_tree_to_buffer_8h_source.html @@ -0,0 +1,422 @@ + + + + + + + +Jolt Physics: Jolt/AABBTree/AABBTreeToBuffer.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AABBTreeToBuffer.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
+ + + +
10
+ +
12#include <deque>
+ +
14
+ +
16
+
17template <class T> using Deque = std::deque<T, STLAllocator<T>>;
+
18
+
20template <class TriangleCodec, class NodeCodec>
+
+ +
22{
+
23public:
+
25 using NodeHeader = typename NodeCodec::Header;
+
26
+ +
29
+ +
32
+ +
35
+ +
38
+
+
40 bool Convert(const VertexList &inVertices, const AABBTreeBuilder::Node *inRoot, bool inStoreUserData, const char *&outError)
+
41 {
+
42 const typename NodeCodec::EncodingContext node_ctx;
+
43 typename TriangleCodec::EncodingContext tri_ctx(inVertices);
+
44
+
45 // Estimate the amount of memory required
+
46 uint tri_count = inRoot->GetTriangleCountInTree();
+
47 uint node_count = inRoot->GetNodeCount();
+
48 uint nodes_size = node_ctx.GetPessimisticMemoryEstimate(node_count);
+
49 uint total_size = HeaderSize + TriangleHeaderSize + nodes_size + tri_ctx.GetPessimisticMemoryEstimate(tri_count, inStoreUserData);
+
50 mTree.reserve(total_size);
+
51
+
52 // Reset counters
+
53 mNodesSize = 0;
+
54
+
55 // Add headers
+
56 NodeHeader *header = HeaderSize > 0? mTree.Allocate<NodeHeader>() : nullptr;
+
57 TriangleHeader *triangle_header = TriangleHeaderSize > 0? mTree.Allocate<TriangleHeader>() : nullptr;
+
58
+
59 struct NodeData
+
60 {
+
61 const AABBTreeBuilder::Node * mNode = nullptr; // Node that this entry belongs to
+
62 Vec3 mNodeBoundsMin; // Quantized node bounds
+
63 Vec3 mNodeBoundsMax;
+
64 uint mNodeStart = uint(-1); // Start of node in mTree
+
65 uint mTriangleStart = uint(-1); // Start of the triangle data in mTree
+
66 uint mNumChildren = 0; // Number of children
+
67 uint mChildNodeStart[NumChildrenPerNode]; // Start of the children of the node in mTree
+
68 uint mChildTrianglesStart[NumChildrenPerNode]; // Start of the triangle data in mTree
+
69 uint * mParentChildNodeStart = nullptr; // Where to store mNodeStart (to patch mChildNodeStart of my parent)
+
70 uint * mParentTrianglesStart = nullptr; // Where to store mTriangleStart (to patch mChildTrianglesStart of my parent)
+
71 };
+
72
+
73 Deque<NodeData *> to_process;
+
74 Deque<NodeData *> to_process_triangles;
+
75 Array<NodeData> node_list;
+
76
+
77 node_list.reserve(node_count); // Needed to ensure that array is not reallocated, so we can keep pointers in the array
+
78
+
79 NodeData root;
+
80 root.mNode = inRoot;
+
81 root.mNodeBoundsMin = inRoot->mBounds.mMin;
+
82 root.mNodeBoundsMax = inRoot->mBounds.mMax;
+
83 node_list.push_back(root);
+
84 to_process.push_back(&node_list.back());
+
85
+
86 // Child nodes out of loop so we don't constantly realloc it
+ +
88 child_nodes.reserve(NumChildrenPerNode);
+
89
+
90 for (;;)
+
91 {
+
92 while (!to_process.empty())
+
93 {
+
94 // Get the next node to process
+
95 NodeData *node_data = to_process.back();
+
96 to_process.pop_back();
+
97
+
98 // Due to quantization box could have become bigger, not smaller
+
99 JPH_ASSERT(AABox(node_data->mNodeBoundsMin, node_data->mNodeBoundsMax).Contains(node_data->mNode->mBounds), "AABBTreeToBuffer: Bounding box became smaller!");
+
100
+
101 // Collect the first NumChildrenPerNode sub-nodes in the tree
+
102 child_nodes.clear(); // Won't free the memory
+
103 node_data->mNode->GetNChildren(NumChildrenPerNode, child_nodes);
+
104 node_data->mNumChildren = (uint)child_nodes.size();
+
105
+
106 // Fill in default child bounds
+
107 Vec3 child_bounds_min[NumChildrenPerNode], child_bounds_max[NumChildrenPerNode];
+
108 for (size_t i = 0; i < NumChildrenPerNode; ++i)
+
109 if (i < child_nodes.size())
+
110 {
+
111 child_bounds_min[i] = child_nodes[i]->mBounds.mMin;
+
112 child_bounds_max[i] = child_nodes[i]->mBounds.mMax;
+
113 }
+
114 else
+
115 {
+
116 child_bounds_min[i] = Vec3::sZero();
+
117 child_bounds_max[i] = Vec3::sZero();
+
118 }
+
119
+
120 // Start a new node
+
121 uint old_size = (uint)mTree.size();
+
122 node_data->mNodeStart = node_ctx.NodeAllocate(node_data->mNode, node_data->mNodeBoundsMin, node_data->mNodeBoundsMax, child_nodes, child_bounds_min, child_bounds_max, mTree, outError);
+
123 if (node_data->mNodeStart == uint(-1))
+
124 return false;
+
125 mNodesSize += (uint)mTree.size() - old_size;
+
126
+
127 if (node_data->mNode->HasChildren())
+
128 {
+
129 // Insert in reverse order so we process left child first when taking nodes from the back
+
130 for (int idx = int(child_nodes.size()) - 1; idx >= 0; --idx)
+
131 {
+
132 // Due to quantization box could have become bigger, not smaller
+
133 JPH_ASSERT(AABox(child_bounds_min[idx], child_bounds_max[idx]).Contains(child_nodes[idx]->mBounds), "AABBTreeToBuffer: Bounding box became smaller!");
+
134
+
135 // Add child to list of nodes to be processed
+
136 NodeData child;
+
137 child.mNode = child_nodes[idx];
+
138 child.mNodeBoundsMin = child_bounds_min[idx];
+
139 child.mNodeBoundsMax = child_bounds_max[idx];
+
140 child.mParentChildNodeStart = &node_data->mChildNodeStart[idx];
+
141 child.mParentTrianglesStart = &node_data->mChildTrianglesStart[idx];
+
142 NodeData *old = &node_list[0];
+
143 node_list.push_back(child);
+
144 if (old != &node_list[0])
+
145 {
+
146 outError = "Internal Error: Array reallocated, memory corruption!";
+
147 return false;
+
148 }
+
149
+
150 // Store triangles in separate list so we process them last
+
151 if (node_list.back().mNode->HasChildren())
+
152 to_process.push_back(&node_list.back());
+
153 else
+
154 to_process_triangles.push_back(&node_list.back());
+
155 }
+
156 }
+
157 else
+
158 {
+
159 // Add triangles
+
160 node_data->mTriangleStart = tri_ctx.Pack(node_data->mNode->mTriangles, inStoreUserData, mTree, outError);
+
161 if (node_data->mTriangleStart == uint(-1))
+
162 return false;
+
163 }
+
164
+
165 // Patch offset into parent
+
166 if (node_data->mParentChildNodeStart != nullptr)
+
167 {
+
168 *node_data->mParentChildNodeStart = node_data->mNodeStart;
+
169 *node_data->mParentTrianglesStart = node_data->mTriangleStart;
+
170 }
+
171 }
+
172
+
173 // If we've got triangles to process, loop again with just the triangles
+
174 if (to_process_triangles.empty())
+
175 break;
+
176 else
+
177 to_process.swap(to_process_triangles);
+
178 }
+
179
+
180 // Finalize all nodes
+
181 for (NodeData &n : node_list)
+
182 if (!node_ctx.NodeFinalize(n.mNode, n.mNodeStart, n.mNumChildren, n.mChildNodeStart, n.mChildTrianglesStart, mTree, outError))
+
183 return false;
+
184
+
185 // Finalize the triangles
+
186 tri_ctx.Finalize(inVertices, triangle_header, mTree);
+
187
+
188 // Validate that we reserved enough memory
+
189 if (nodes_size < mNodesSize)
+
190 {
+
191 outError = "Internal Error: Not enough memory reserved for nodes!";
+
192 return false;
+
193 }
+
194 if (total_size < (uint)mTree.size())
+
195 {
+
196 outError = "Internal Error: Not enough memory reserved for triangles!";
+
197 return false;
+
198 }
+
199
+
200 // Finalize the nodes
+
201 if (!node_ctx.Finalize(header, inRoot, node_list[0].mNodeStart, node_list[0].mTriangleStart, outError))
+
202 return false;
+
203
+
204 // Shrink the tree, this will invalidate the header and triangle_header variables
+
205 mTree.shrink_to_fit();
+
206
+
207 return true;
+
208 }
+
+
209
+
+
211 inline const ByteBuffer & GetBuffer() const
+
212 {
+
213 return mTree;
+
214 }
+
+
215
+
+ +
218 {
+
219 return mTree;
+
220 }
+
+
221
+
+
223 inline const NodeHeader * GetNodeHeader() const
+
224 {
+
225 return mTree.Get<NodeHeader>(0);
+
226 }
+
+
227
+
+
229 inline const TriangleHeader * GetTriangleHeader() const
+
230 {
+
231 return mTree.Get<TriangleHeader>(HeaderSize);
+
232 }
+
+
233
+
+
235 inline const void * GetRoot() const
+
236 {
+
237 return mTree.Get<void>(HeaderSize + TriangleHeaderSize);
+
238 }
+
+
239
+
240private:
+
241 ByteBuffer mTree;
+
242 uint mNodesSize;
+
243};
+
+
244
+ + +
std::deque< T, STLAllocator< T > > Deque
Definition AABBTreeToBuffer.h:17
+ +
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
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_ASSERT(...)
Definition IssueReporting.h:33
+
A node in the tree, contains the AABox for the tree and any child nodes or triangles.
Definition AABBTreeBuilder.h:40
+
AABox mBounds
Bounding box.
Definition AABBTreeBuilder.h:79
+
uint GetTriangleCountInTree() const
Get triangle count in tree.
Definition AABBTreeBuilder.cpp:63
+
uint GetNodeCount() const
Number of nodes in tree.
Definition AABBTreeBuilder.cpp:47
+
Conversion algorithm that converts an AABB tree to an optimized binary buffer.
Definition AABBTreeToBuffer.h:22
+
static const int TriangleHeaderSize
Size in bytes of the header for the triangles.
Definition AABBTreeToBuffer.h:37
+
typename TriangleCodec::TriangleHeader TriangleHeader
Header for the triangles.
Definition AABBTreeToBuffer.h:34
+
const ByteBuffer & GetBuffer() const
Get resulting data.
Definition AABBTreeToBuffer.h:211
+
typename NodeCodec::Header NodeHeader
Header for the tree.
Definition AABBTreeToBuffer.h:25
+
static const int HeaderSize
Size in bytes of the header of the tree.
Definition AABBTreeToBuffer.h:28
+
static const int NumChildrenPerNode
Maximum number of children per node in the tree.
Definition AABBTreeToBuffer.h:31
+
bool Convert(const VertexList &inVertices, const AABBTreeBuilder::Node *inRoot, bool inStoreUserData, const char *&outError)
Convert AABB tree. Returns false if failed.
Definition AABBTreeToBuffer.h:40
+
const TriangleHeader * GetTriangleHeader() const
Get header for triangles.
Definition AABBTreeToBuffer.h:229
+
const NodeHeader * GetNodeHeader() const
Get header for tree.
Definition AABBTreeToBuffer.h:223
+
ByteBuffer & GetBuffer()
Get resulting data.
Definition AABBTreeToBuffer.h:217
+
const void * GetRoot() const
Get root of resulting tree.
Definition AABBTreeToBuffer.h:235
+
Axis aligned box.
Definition AABox.h:16
+
Vec3 mMin
Bounding box min and max.
Definition AABox.h:300
+
bool Contains(const AABox &inOther) const
Check if this box contains another box.
Definition AABox.h:137
+
Vec3 mMax
Definition AABox.h:301
+ +
const T & back() const
Last element in the array.
Definition Array.h:492
+
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
void shrink_to_fit()
Reduce the capacity of the array to match its size.
Definition Array.h:330
+
void clear()
Destruct all elements and set length to zero.
Definition Array.h:143
+
void push_back(const T &inValue)
Add element to the back of the array.
Definition Array.h:275
+
void reserve(size_type inNewSize)
Reserve array space.
Definition Array.h:111
+
Simple byte buffer, aligned to a cache line.
Definition ByteBuffer.h:16
+
Type * Allocate(size_t inSize=1)
Allocate block of data of inSize elements and return the pointer.
Definition ByteBuffer.h:33
+
const Type * Get(size_t inPosition) const
Get object at inPosition (an offset in bytes)
Definition ByteBuffer.h:61
+
This class encodes and compresses quad tree nodes.
Definition NodeCodecQuadTreeHalfFloat.h:62
+
bool NodeFinalize(const AABBTreeBuilder::Node *inNode, uint inNodeStart, uint inNumChildren, const uint *inChildrenNodeStart, const uint *inChildrenTrianglesStart, ByteBuffer &ioBuffer, const char *&outError) const
Once all nodes have been added, this call finalizes all nodes by patching in the offsets of the child...
Definition NodeCodecQuadTreeHalfFloat.h:136
+
uint GetPessimisticMemoryEstimate(uint inNodeCount) const
Get an upper bound on the amount of bytes needed for a node tree with inNodeCount nodes.
Definition NodeCodecQuadTreeHalfFloat.h:65
+
bool Finalize(Header *outHeader, const AABBTreeBuilder::Node *inRoot, uint inRootNodeStart, uint inRootTrianglesStart, const char *&outError) const
Once all nodes have been finalized, this will finalize the header of the nodes.
Definition NodeCodecQuadTreeHalfFloat.h:166
+
uint NodeAllocate(const AABBTreeBuilder::Node *inNode, Vec3Arg inNodeBoundsMin, Vec3Arg inNodeBoundsMax, Array< const AABBTreeBuilder::Node * > &ioChildren, Vec3 outChildBoundsMin[NumChildrenPerNode], Vec3 outChildBoundsMax[NumChildrenPerNode], ByteBuffer &ioBuffer, const char *&outError) const
Definition NodeCodecQuadTreeHalfFloat.h:75
+
static constexpr int HeaderSize
Size of the header (an empty struct is always > 0 bytes so this needs a separate variable)
Definition NodeCodecQuadTreeHalfFloat.h:29
+
static constexpr int NumChildrenPerNode
Number of child nodes of this node.
Definition NodeCodecQuadTreeHalfFloat.h:18
+
This class is used to encode and compress triangle data into a byte buffer.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:133
+
void Finalize(const VertexList &inVertices, TriangleHeader *ioHeader, ByteBuffer &ioBuffer) const
After all triangles have been packed, this finalizes the header and triangle buffer.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:233
+
uint Pack(const IndexedTriangleList &inTriangles, bool inStoreUserData, ByteBuffer &ioBuffer, const char *&outError)
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:152
+
uint GetPessimisticMemoryEstimate(uint inTriangleCount, bool inStoreUserData) const
Get an upper bound on the amount of bytes needed to store inTriangleCount triangles.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:144
+
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:28
+
static constexpr int TriangleHeaderSize
Size of the header (an empty struct is always > 0 bytes so this needs a separate variable)
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:35
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Header for the tree.
Definition NodeCodecQuadTreeHalfFloat.h:22
+
+
+ + + + diff --git a/_a_a_box4_8h.html b/_a_a_box4_8h.html new file mode 100644 index 000000000..2fb98d4fa --- /dev/null +++ b/_a_a_box4_8h.html @@ -0,0 +1,842 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/AABox4.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AABox4.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_INLINE UVec4 AABox4VsBox (const AABox &inBox1, Vec4Arg inBox2MinX, Vec4Arg inBox2MinY, Vec4Arg inBox2MinZ, Vec4Arg inBox2MaxX, Vec4Arg inBox2MaxY, Vec4Arg inBox2MaxZ)
 
JPH_INLINE void AABox4Scale (Vec3Arg inScale, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, Vec4 &outBoundsMinX, Vec4 &outBoundsMinY, Vec4 &outBoundsMinZ, Vec4 &outBoundsMaxX, Vec4 &outBoundsMaxY, Vec4 &outBoundsMaxZ)
 Scale 4 axis aligned boxes.
 
JPH_INLINE void AABox4EnlargeWithExtent (Vec3Arg inExtent, Vec4 &ioBoundsMinX, Vec4 &ioBoundsMinY, Vec4 &ioBoundsMinZ, Vec4 &ioBoundsMaxX, Vec4 &ioBoundsMaxY, Vec4 &ioBoundsMaxZ)
 Enlarge 4 bounding boxes with extent (add to both sides)
 
JPH_INLINE UVec4 AABox4VsPoint (Vec3Arg inPoint, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
 Test if 4 bounding boxes overlap with a point.
 
JPH_INLINE UVec4 AABox4VsBox (Mat44Arg inOrientation, Vec3Arg inHalfExtents, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, float inEpsilon=1.0e-6f)
 Test if 4 bounding boxes overlap with an oriented box.
 
JPH_INLINE UVec4 AABox4VsBox (const OrientedBox &inBox, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, float inEpsilon=1.0e-6f)
 Convenience function that tests 4 AABoxes vs OrientedBox.
 
JPH_INLINE Vec4 AABox4DistanceSqToPoint (Vec4Arg inPointX, Vec4Arg inPointY, Vec4Arg inPointZ, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
 Get the squared distance between 4 AABoxes and a point.
 
JPH_INLINE Vec4 AABox4DistanceSqToPoint (Vec3 inPoint, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
 Get the squared distance between 4 AABoxes and a point.
 
JPH_INLINE UVec4 AABox4VsSphere (Vec4Arg inCenterX, Vec4Arg inCenterY, Vec4Arg inCenterZ, Vec4Arg inRadiusSq, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
 Test 4 AABoxes vs a sphere.
 
JPH_INLINE UVec4 AABox4VsSphere (Vec3Arg inCenter, float inRadiusSq, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
 Test 4 AABoxes vs a sphere.
 
+

Function Documentation

+ +

◆ AABox4DistanceSqToPoint() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE Vec4 AABox4DistanceSqToPoint (Vec3 inPoint,
Vec4Arg inBoxMinX,
Vec4Arg inBoxMinY,
Vec4Arg inBoxMinZ,
Vec4Arg inBoxMaxX,
Vec4Arg inBoxMaxY,
Vec4Arg inBoxMaxZ 
)
+
+ +

Get the squared distance between 4 AABoxes and a point.

+ +
+
+ +

◆ AABox4DistanceSqToPoint() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE Vec4 AABox4DistanceSqToPoint (Vec4Arg inPointX,
Vec4Arg inPointY,
Vec4Arg inPointZ,
Vec4Arg inBoxMinX,
Vec4Arg inBoxMinY,
Vec4Arg inBoxMinZ,
Vec4Arg inBoxMaxX,
Vec4Arg inBoxMaxY,
Vec4Arg inBoxMaxZ 
)
+
+ +

Get the squared distance between 4 AABoxes and a point.

+ +
+
+ +

◆ AABox4EnlargeWithExtent()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE void AABox4EnlargeWithExtent (Vec3Arg inExtent,
Vec4ioBoundsMinX,
Vec4ioBoundsMinY,
Vec4ioBoundsMinZ,
Vec4ioBoundsMaxX,
Vec4ioBoundsMaxY,
Vec4ioBoundsMaxZ 
)
+
+ +

Enlarge 4 bounding boxes with extent (add to both sides)

+ +
+
+ +

◆ AABox4Scale()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE void AABox4Scale (Vec3Arg inScale,
Vec4Arg inBoxMinX,
Vec4Arg inBoxMinY,
Vec4Arg inBoxMinZ,
Vec4Arg inBoxMaxX,
Vec4Arg inBoxMaxY,
Vec4Arg inBoxMaxZ,
Vec4outBoundsMinX,
Vec4outBoundsMinY,
Vec4outBoundsMinZ,
Vec4outBoundsMaxX,
Vec4outBoundsMaxY,
Vec4outBoundsMaxZ 
)
+
+ +

Scale 4 axis aligned boxes.

+ +
+
+ +

◆ AABox4VsBox() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_INLINE UVec4 AABox4VsBox (const AABoxinBox1,
Vec4Arg inBox2MinX,
Vec4Arg inBox2MinY,
Vec4Arg inBox2MinZ,
Vec4Arg inBox2MaxX,
Vec4Arg inBox2MaxY,
Vec4Arg inBox2MaxZ 
)
+
+

Helper functions that process 4 axis aligned boxes at the same time using SIMD Test if 4 bounding boxes overlap with 1 bounding box, splat 1 box

+ +
+
+ +

◆ AABox4VsBox() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE UVec4 AABox4VsBox (const OrientedBoxinBox,
Vec4Arg inBoxMinX,
Vec4Arg inBoxMinY,
Vec4Arg inBoxMinZ,
Vec4Arg inBoxMaxX,
Vec4Arg inBoxMaxY,
Vec4Arg inBoxMaxZ,
float inEpsilon = 1.0e-6f 
)
+
+ +

Convenience function that tests 4 AABoxes vs OrientedBox.

+ +
+
+ +

◆ AABox4VsBox() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE UVec4 AABox4VsBox (Mat44Arg inOrientation,
Vec3Arg inHalfExtents,
Vec4Arg inBoxMinX,
Vec4Arg inBoxMinY,
Vec4Arg inBoxMinZ,
Vec4Arg inBoxMaxX,
Vec4Arg inBoxMaxY,
Vec4Arg inBoxMaxZ,
float inEpsilon = 1.0e-6f 
)
+
+ +

Test if 4 bounding boxes overlap with an oriented box.

+ +
+
+ +

◆ AABox4VsPoint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE UVec4 AABox4VsPoint (Vec3Arg inPoint,
Vec4Arg inBoxMinX,
Vec4Arg inBoxMinY,
Vec4Arg inBoxMinZ,
Vec4Arg inBoxMaxX,
Vec4Arg inBoxMaxY,
Vec4Arg inBoxMaxZ 
)
+
+ +

Test if 4 bounding boxes overlap with a point.

+ +
+
+ +

◆ AABox4VsSphere() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE UVec4 AABox4VsSphere (Vec3Arg inCenter,
float inRadiusSq,
Vec4Arg inBoxMinX,
Vec4Arg inBoxMinY,
Vec4Arg inBoxMinZ,
Vec4Arg inBoxMaxX,
Vec4Arg inBoxMaxY,
Vec4Arg inBoxMaxZ 
)
+
+ +

Test 4 AABoxes vs a sphere.

+ +
+
+ +

◆ AABox4VsSphere() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE UVec4 AABox4VsSphere (Vec4Arg inCenterX,
Vec4Arg inCenterY,
Vec4Arg inCenterZ,
Vec4Arg inRadiusSq,
Vec4Arg inBoxMinX,
Vec4Arg inBoxMinY,
Vec4Arg inBoxMinZ,
Vec4Arg inBoxMaxX,
Vec4Arg inBoxMaxY,
Vec4Arg inBoxMaxZ 
)
+
+ +

Test 4 AABoxes vs a sphere.

+ +
+
+
+
+ + + + diff --git a/_a_a_box4_8h.js b/_a_a_box4_8h.js new file mode 100644 index 000000000..0e848cb21 --- /dev/null +++ b/_a_a_box4_8h.js @@ -0,0 +1,13 @@ +var _a_a_box4_8h = +[ + [ "AABox4DistanceSqToPoint", "_a_a_box4_8h.html#a6af0b6b352ebed5e3c0911b6fd716e65", null ], + [ "AABox4DistanceSqToPoint", "_a_a_box4_8h.html#af96966fc2a109dea8d4a109e541bea80", null ], + [ "AABox4EnlargeWithExtent", "_a_a_box4_8h.html#afc6a0849cd38d215de0f02ee553de99f", null ], + [ "AABox4Scale", "_a_a_box4_8h.html#afdbaad9921240fb3b210eab09cede242", null ], + [ "AABox4VsBox", "_a_a_box4_8h.html#a99b05cb64dcecc32ddc482050e45321c", null ], + [ "AABox4VsBox", "_a_a_box4_8h.html#af230429f2bab61ca7328aa79a2a4da93", null ], + [ "AABox4VsBox", "_a_a_box4_8h.html#a365fbed5e6017361416cd81c4fb3c175", null ], + [ "AABox4VsPoint", "_a_a_box4_8h.html#a96c8ee8d10ad0b3971de242ea1217cb9", null ], + [ "AABox4VsSphere", "_a_a_box4_8h.html#a6f08a548d80cd6a9c6209f1f2db4fde2", null ], + [ "AABox4VsSphere", "_a_a_box4_8h.html#a0a8ee1599da3fa8b3ea6dc868a6cba19", null ] +]; \ No newline at end of file diff --git a/_a_a_box4_8h_source.html b/_a_a_box4_8h_source.html new file mode 100644 index 000000000..1c3d4f51f --- /dev/null +++ b/_a_a_box4_8h_source.html @@ -0,0 +1,393 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/AABox4.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AABox4.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
+
+
13JPH_INLINE UVec4 AABox4VsBox(const AABox &inBox1, Vec4Arg inBox2MinX, Vec4Arg inBox2MinY, Vec4Arg inBox2MinZ, Vec4Arg inBox2MaxX, Vec4Arg inBox2MaxY, Vec4Arg inBox2MaxZ)
+
14{
+
15 // Splat values of box 1
+
16 Vec4 box1_minx = inBox1.mMin.SplatX();
+
17 Vec4 box1_miny = inBox1.mMin.SplatY();
+
18 Vec4 box1_minz = inBox1.mMin.SplatZ();
+
19 Vec4 box1_maxx = inBox1.mMax.SplatX();
+
20 Vec4 box1_maxy = inBox1.mMax.SplatY();
+
21 Vec4 box1_maxz = inBox1.mMax.SplatZ();
+
22
+
23 // Test separation over each axis
+
24 UVec4 nooverlapx = UVec4::sOr(Vec4::sGreater(box1_minx, inBox2MaxX), Vec4::sGreater(inBox2MinX, box1_maxx));
+
25 UVec4 nooverlapy = UVec4::sOr(Vec4::sGreater(box1_miny, inBox2MaxY), Vec4::sGreater(inBox2MinY, box1_maxy));
+
26 UVec4 nooverlapz = UVec4::sOr(Vec4::sGreater(box1_minz, inBox2MaxZ), Vec4::sGreater(inBox2MinZ, box1_maxz));
+
27
+
28 // Return overlap
+
29 return UVec4::sNot(UVec4::sOr(UVec4::sOr(nooverlapx, nooverlapy), nooverlapz));
+
30}
+
+
31
+
+
33JPH_INLINE void AABox4Scale(Vec3Arg inScale, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, Vec4 &outBoundsMinX, Vec4 &outBoundsMinY, Vec4 &outBoundsMinZ, Vec4 &outBoundsMaxX, Vec4 &outBoundsMaxY, Vec4 &outBoundsMaxZ)
+
34{
+
35 Vec4 scale_x = inScale.SplatX();
+
36 Vec4 scaled_min_x = scale_x * inBoxMinX;
+
37 Vec4 scaled_max_x = scale_x * inBoxMaxX;
+
38 outBoundsMinX = Vec4::sMin(scaled_min_x, scaled_max_x); // Negative scale can flip min and max
+
39 outBoundsMaxX = Vec4::sMax(scaled_min_x, scaled_max_x);
+
40
+
41 Vec4 scale_y = inScale.SplatY();
+
42 Vec4 scaled_min_y = scale_y * inBoxMinY;
+
43 Vec4 scaled_max_y = scale_y * inBoxMaxY;
+
44 outBoundsMinY = Vec4::sMin(scaled_min_y, scaled_max_y);
+
45 outBoundsMaxY = Vec4::sMax(scaled_min_y, scaled_max_y);
+
46
+
47 Vec4 scale_z = inScale.SplatZ();
+
48 Vec4 scaled_min_z = scale_z * inBoxMinZ;
+
49 Vec4 scaled_max_z = scale_z * inBoxMaxZ;
+
50 outBoundsMinZ = Vec4::sMin(scaled_min_z, scaled_max_z);
+
51 outBoundsMaxZ = Vec4::sMax(scaled_min_z, scaled_max_z);
+
52}
+
+
53
+
+
55JPH_INLINE void AABox4EnlargeWithExtent(Vec3Arg inExtent, Vec4 &ioBoundsMinX, Vec4 &ioBoundsMinY, Vec4 &ioBoundsMinZ, Vec4 &ioBoundsMaxX, Vec4 &ioBoundsMaxY, Vec4 &ioBoundsMaxZ)
+
56{
+
57 Vec4 extent_x = inExtent.SplatX();
+
58 ioBoundsMinX -= extent_x;
+
59 ioBoundsMaxX += extent_x;
+
60
+
61 Vec4 extent_y = inExtent.SplatY();
+
62 ioBoundsMinY -= extent_y;
+
63 ioBoundsMaxY += extent_y;
+
64
+
65 Vec4 extent_z = inExtent.SplatZ();
+
66 ioBoundsMinZ -= extent_z;
+
67 ioBoundsMaxZ += extent_z;
+
68}
+
+
69
+
+
71JPH_INLINE UVec4 AABox4VsPoint(Vec3Arg inPoint, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
+
72{
+
73 // Splat point to 4 component vectors
+
74 Vec4 point_x = Vec4(inPoint).SplatX();
+
75 Vec4 point_y = Vec4(inPoint).SplatY();
+
76 Vec4 point_z = Vec4(inPoint).SplatZ();
+
77
+
78 // Test if point overlaps with box
+
79 UVec4 overlapx = UVec4::sAnd(Vec4::sGreaterOrEqual(point_x, inBoxMinX), Vec4::sLessOrEqual(point_x, inBoxMaxX));
+
80 UVec4 overlapy = UVec4::sAnd(Vec4::sGreaterOrEqual(point_y, inBoxMinY), Vec4::sLessOrEqual(point_y, inBoxMaxY));
+
81 UVec4 overlapz = UVec4::sAnd(Vec4::sGreaterOrEqual(point_z, inBoxMinZ), Vec4::sLessOrEqual(point_z, inBoxMaxZ));
+
82
+
83 // Test if all are overlapping
+
84 return UVec4::sAnd(UVec4::sAnd(overlapx, overlapy), overlapz);
+
85}
+
+
86
+
+
88JPH_INLINE UVec4 AABox4VsBox(Mat44Arg inOrientation, Vec3Arg inHalfExtents, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, float inEpsilon = 1.0e-6f)
+
89{
+
90 // Taken from: Real Time Collision Detection - Christer Ericson
+
91 // Chapter 4.4.1, page 103-105.
+
92 // Note that the code is swapped around: A is the aabox and B is the oriented box (this saves us from having to invert the orientation of the oriented box)
+
93
+
94 // Compute translation vector t (the translation of B in the space of A)
+
95 Vec4 t[3] {
+
96 inOrientation.GetTranslation().SplatX() - 0.5f * (inBoxMinX + inBoxMaxX),
+
97 inOrientation.GetTranslation().SplatY() - 0.5f * (inBoxMinY + inBoxMaxY),
+
98 inOrientation.GetTranslation().SplatZ() - 0.5f * (inBoxMinZ + inBoxMaxZ) };
+
99
+
100 // Compute common subexpressions. Add in an epsilon term to
+
101 // counteract arithmetic errors when two edges are parallel and
+
102 // their cross product is (near) null (see text for details)
+
103 Vec3 epsilon = Vec3::sReplicate(inEpsilon);
+
104 Vec3 abs_r[3] { inOrientation.GetAxisX().Abs() + epsilon, inOrientation.GetAxisY().Abs() + epsilon, inOrientation.GetAxisZ().Abs() + epsilon };
+
105
+
106 // Half extents for a
+
107 Vec4 a_half_extents[3] {
+
108 0.5f * (inBoxMaxX - inBoxMinX),
+
109 0.5f * (inBoxMaxY - inBoxMinY),
+
110 0.5f * (inBoxMaxZ - inBoxMinZ) };
+
111
+
112 // Half extents of b
+
113 Vec4 b_half_extents_x = inHalfExtents.SplatX();
+
114 Vec4 b_half_extents_y = inHalfExtents.SplatY();
+
115 Vec4 b_half_extents_z = inHalfExtents.SplatZ();
+
116
+
117 // Each component corresponds to 1 overlapping OBB vs ABB
+
118 UVec4 overlaps = UVec4(0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff);
+
119
+
120 // Test axes L = A0, L = A1, L = A2
+
121 Vec4 ra, rb;
+
122 for (int i = 0; i < 3; i++)
+
123 {
+
124 ra = a_half_extents[i];
+
125 rb = b_half_extents_x * abs_r[0][i] + b_half_extents_y * abs_r[1][i] + b_half_extents_z * abs_r[2][i];
+
126 overlaps = UVec4::sAnd(overlaps, Vec4::sLessOrEqual(t[i].Abs(), ra + rb));
+
127 }
+
128
+
129 // Test axes L = B0, L = B1, L = B2
+
130 for (int i = 0; i < 3; i++)
+
131 {
+
132 ra = a_half_extents[0] * abs_r[i][0] + a_half_extents[1] * abs_r[i][1] + a_half_extents[2] * abs_r[i][2];
+
133 rb = Vec4::sReplicate(inHalfExtents[i]);
+
134 overlaps = UVec4::sAnd(overlaps, Vec4::sLessOrEqual((t[0] * inOrientation(0, i) + t[1] * inOrientation(1, i) + t[2] * inOrientation(2, i)).Abs(), ra + rb));
+
135 }
+
136
+
137 // Test axis L = A0 x B0
+
138 ra = a_half_extents[1] * abs_r[0][2] + a_half_extents[2] * abs_r[0][1];
+
139 rb = b_half_extents_y * abs_r[2][0] + b_half_extents_z * abs_r[1][0];
+
140 overlaps = UVec4::sAnd(overlaps, Vec4::sLessOrEqual((t[2] * inOrientation(1, 0) - t[1] * inOrientation(2, 0)).Abs(), ra + rb));
+
141
+
142 // Test axis L = A0 x B1
+
143 ra = a_half_extents[1] * abs_r[1][2] + a_half_extents[2] * abs_r[1][1];
+
144 rb = b_half_extents_x * abs_r[2][0] + b_half_extents_z * abs_r[0][0];
+
145 overlaps = UVec4::sAnd(overlaps, Vec4::sLessOrEqual((t[2] * inOrientation(1, 1) - t[1] * inOrientation(2, 1)).Abs(), ra + rb));
+
146
+
147 // Test axis L = A0 x B2
+
148 ra = a_half_extents[1] * abs_r[2][2] + a_half_extents[2] * abs_r[2][1];
+
149 rb = b_half_extents_x * abs_r[1][0] + b_half_extents_y * abs_r[0][0];
+
150 overlaps = UVec4::sAnd(overlaps, Vec4::sLessOrEqual((t[2] * inOrientation(1, 2) - t[1] * inOrientation(2, 2)).Abs(), ra + rb));
+
151
+
152 // Test axis L = A1 x B0
+
153 ra = a_half_extents[0] * abs_r[0][2] + a_half_extents[2] * abs_r[0][0];
+
154 rb = b_half_extents_y * abs_r[2][1] + b_half_extents_z * abs_r[1][1];
+
155 overlaps = UVec4::sAnd(overlaps, Vec4::sLessOrEqual((t[0] * inOrientation(2, 0) - t[2] * inOrientation(0, 0)).Abs(), ra + rb));
+
156
+
157 // Test axis L = A1 x B1
+
158 ra = a_half_extents[0] * abs_r[1][2] + a_half_extents[2] * abs_r[1][0];
+
159 rb = b_half_extents_x * abs_r[2][1] + b_half_extents_z * abs_r[0][1];
+
160 overlaps = UVec4::sAnd(overlaps, Vec4::sLessOrEqual((t[0] * inOrientation(2, 1) - t[2] * inOrientation(0, 1)).Abs(), ra + rb));
+
161
+
162 // Test axis L = A1 x B2
+
163 ra = a_half_extents[0] * abs_r[2][2] + a_half_extents[2] * abs_r[2][0];
+
164 rb = b_half_extents_x * abs_r[1][1] + b_half_extents_y * abs_r[0][1];
+
165 overlaps = UVec4::sAnd(overlaps, Vec4::sLessOrEqual((t[0] * inOrientation(2, 2) - t[2] * inOrientation(0, 2)).Abs(), ra + rb));
+
166
+
167 // Test axis L = A2 x B0
+
168 ra = a_half_extents[0] * abs_r[0][1] + a_half_extents[1] * abs_r[0][0];
+
169 rb = b_half_extents_y * abs_r[2][2] + b_half_extents_z * abs_r[1][2];
+
170 overlaps = UVec4::sAnd(overlaps, Vec4::sLessOrEqual((t[1] * inOrientation(0, 0) - t[0] * inOrientation(1, 0)).Abs(), ra + rb));
+
171
+
172 // Test axis L = A2 x B1
+
173 ra = a_half_extents[0] * abs_r[1][1] + a_half_extents[1] * abs_r[1][0];
+
174 rb = b_half_extents_x * abs_r[2][2] + b_half_extents_z * abs_r[0][2];
+
175 overlaps = UVec4::sAnd(overlaps, Vec4::sLessOrEqual((t[1] * inOrientation(0, 1) - t[0] * inOrientation(1, 1)).Abs(), ra + rb));
+
176
+
177 // Test axis L = A2 x B2
+
178 ra = a_half_extents[0] * abs_r[2][1] + a_half_extents[1] * abs_r[2][0];
+
179 rb = b_half_extents_x * abs_r[1][2] + b_half_extents_y * abs_r[0][2];
+
180 overlaps = UVec4::sAnd(overlaps, Vec4::sLessOrEqual((t[1] * inOrientation(0, 2) - t[0] * inOrientation(1, 2)).Abs(), ra + rb));
+
181
+
182 // Return if the OBB vs AABBs are intersecting
+
183 return overlaps;
+
184}
+
+
185
+
+
187JPH_INLINE UVec4 AABox4VsBox(const OrientedBox &inBox, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, float inEpsilon = 1.0e-6f)
+
188{
+
189 return AABox4VsBox(inBox.mOrientation, inBox.mHalfExtents, inBoxMinX, inBoxMinY, inBoxMinZ, inBoxMaxX, inBoxMaxY, inBoxMaxZ, inEpsilon);
+
190}
+
+
191
+
+
193JPH_INLINE Vec4 AABox4DistanceSqToPoint(Vec4Arg inPointX, Vec4Arg inPointY, Vec4Arg inPointZ, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
+
194{
+
195 // Get closest point on box
+
196 Vec4 closest_x = Vec4::sMin(Vec4::sMax(inPointX, inBoxMinX), inBoxMaxX);
+
197 Vec4 closest_y = Vec4::sMin(Vec4::sMax(inPointY, inBoxMinY), inBoxMaxY);
+
198 Vec4 closest_z = Vec4::sMin(Vec4::sMax(inPointZ, inBoxMinZ), inBoxMaxZ);
+
199
+
200 // Return the squared distance between the box and point
+
201 return Square(closest_x - inPointX) + Square(closest_y - inPointY) + Square(closest_z - inPointZ);
+
202}
+
+
203
+
+
205JPH_INLINE Vec4 AABox4DistanceSqToPoint(Vec3 inPoint, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
+
206{
+
207 return AABox4DistanceSqToPoint(inPoint.SplatX(), inPoint.SplatY(), inPoint.SplatZ(), inBoxMinX, inBoxMinY, inBoxMinZ, inBoxMaxX, inBoxMaxY, inBoxMaxZ);
+
208}
+
+
209
+
+
211JPH_INLINE UVec4 AABox4VsSphere(Vec4Arg inCenterX, Vec4Arg inCenterY, Vec4Arg inCenterZ, Vec4Arg inRadiusSq, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
+
212{
+
213 // Test the distance from the center of the sphere to the box is smaller than the radius
+
214 Vec4 distance_sq = AABox4DistanceSqToPoint(inCenterX, inCenterY, inCenterZ, inBoxMinX, inBoxMinY, inBoxMinZ, inBoxMaxX, inBoxMaxY, inBoxMaxZ);
+
215 return Vec4::sLessOrEqual(distance_sq, inRadiusSq);
+
216}
+
+
217
+
+
219JPH_INLINE UVec4 AABox4VsSphere(Vec3Arg inCenter, float inRadiusSq, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
+
220{
+
221 return AABox4VsSphere(inCenter.SplatX(), inCenter.SplatY(), inCenter.SplatZ(), Vec4::sReplicate(inRadiusSq), inBoxMinX, inBoxMinY, inBoxMinZ, inBoxMaxX, inBoxMaxY, inBoxMaxZ);
+
222}
+
+
223
+ +
JPH_INLINE UVec4 AABox4VsSphere(Vec4Arg inCenterX, Vec4Arg inCenterY, Vec4Arg inCenterZ, Vec4Arg inRadiusSq, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
Test 4 AABoxes vs a sphere.
Definition AABox4.h:211
+
JPH_INLINE UVec4 AABox4VsPoint(Vec3Arg inPoint, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
Test if 4 bounding boxes overlap with a point.
Definition AABox4.h:71
+
JPH_NAMESPACE_BEGIN JPH_INLINE UVec4 AABox4VsBox(const AABox &inBox1, Vec4Arg inBox2MinX, Vec4Arg inBox2MinY, Vec4Arg inBox2MinZ, Vec4Arg inBox2MaxX, Vec4Arg inBox2MaxY, Vec4Arg inBox2MaxZ)
Definition AABox4.h:13
+
JPH_INLINE Vec4 AABox4DistanceSqToPoint(Vec4Arg inPointX, Vec4Arg inPointY, Vec4Arg inPointZ, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
Get the squared distance between 4 AABoxes and a point.
Definition AABox4.h:193
+
JPH_INLINE void AABox4EnlargeWithExtent(Vec3Arg inExtent, Vec4 &ioBoundsMinX, Vec4 &ioBoundsMinY, Vec4 &ioBoundsMinZ, Vec4 &ioBoundsMaxX, Vec4 &ioBoundsMaxY, Vec4 &ioBoundsMaxZ)
Enlarge 4 bounding boxes with extent (add to both sides)
Definition AABox4.h:55
+
JPH_INLINE void AABox4Scale(Vec3Arg inScale, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, Vec4 &outBoundsMinX, Vec4 &outBoundsMinY, Vec4 &outBoundsMinZ, Vec4 &outBoundsMaxX, Vec4 &outBoundsMaxY, Vec4 &outBoundsMaxZ)
Scale 4 axis aligned boxes.
Definition AABox4.h:33
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+ +
Axis aligned box.
Definition AABox.h:16
+
Vec3 mMin
Bounding box min and max.
Definition AABox.h:300
+
Vec3 mMax
Definition AABox.h:301
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Vec3 GetAxisY() const
Definition Mat44.h:148
+
JPH_INLINE Vec3 GetAxisZ() const
Definition Mat44.h:150
+
JPH_INLINE Vec3 GetAxisX() const
Access to the columns.
Definition Mat44.h:146
+
JPH_INLINE Vec3 GetTranslation() const
Definition Mat44.h:152
+
Oriented box.
Definition OrientedBox.h:18
+
Mat44 mOrientation
Transform that positions and rotates the local space axis aligned box into world space.
Definition OrientedBox.h:35
+
Vec3 mHalfExtents
Half extents (half the size of the edge) of the local space axis aligned box.
Definition OrientedBox.h:36
+
Definition UVec4.h:12
+
static JPH_INLINE UVec4 sNot(UVec4Arg inV1)
Logical not (component wise)
Definition UVec4.inl:214
+
static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)
Logical and (component wise)
Definition UVec4.inl:199
+
static JPH_INLINE UVec4 sOr(UVec4Arg inV1, UVec4Arg inV2)
Logical or (component wise)
Definition UVec4.inl:171
+
Definition Vec3.h:17
+
JPH_INLINE Vec4 SplatX() const
Replicate the X component to all components.
Definition Vec3.inl:529
+
JPH_INLINE Vec3 Abs() const
Return the absolute value of each of the components.
Definition Vec3.inl:572
+
JPH_INLINE Vec4 SplatZ() const
Replicate the Z component to all components.
Definition Vec3.inl:551
+
JPH_INLINE Vec4 SplatY() const
Replicate the Y component to all components.
Definition Vec3.inl:540
+
static JPH_INLINE Vec3 sReplicate(float inV)
Replicate inV across all components.
Definition Vec3.inl:118
+
Definition Vec4.h:14
+
JPH_INLINE Vec4 SplatX() const
Replicate the X component to all components.
Definition Vec4.inl:555
+
static JPH_INLINE UVec4 sGreater(Vec4Arg inV1, Vec4Arg inV2)
Greater than (component wise)
Definition Vec4.inl:208
+
static JPH_INLINE UVec4 sLessOrEqual(Vec4Arg inV1, Vec4Arg inV2)
Less than or equal (component wise)
Definition Vec4.inl:194
+
JPH_INLINE Vec4 SplatY() const
Replicate the Y component to all components.
Definition Vec4.inl:566
+
static JPH_INLINE UVec4 sGreaterOrEqual(Vec4Arg inV1, Vec4Arg inV2)
Greater than or equal (component wise)
Definition Vec4.inl:222
+
static JPH_INLINE Vec4 sMin(Vec4Arg inV1, Vec4Arg inV2)
Return the minimum value of each of the components.
Definition Vec4.inl:138
+
JPH_INLINE Vec4 SplatZ() const
Replicate the Z component to all components.
Definition Vec4.inl:577
+
static JPH_INLINE Vec4 sMax(Vec4Arg inV1, Vec4Arg inV2)
Return the maximum of each of the components.
Definition Vec4.inl:152
+
static JPH_INLINE Vec4 sReplicate(float inV)
Replicate inV across all components.
Definition Vec4.inl:74
+
+
+ + + + diff --git a/_a_a_box_8h.html b/_a_a_box_8h.html new file mode 100644 index 000000000..81ac67188 --- /dev/null +++ b/_a_a_box_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/AABox.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AABox.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  AABox
 Axis aligned box. More...
 
+
+
+ + + + diff --git a/_a_a_box_8h.js b/_a_a_box_8h.js new file mode 100644 index 000000000..2cee749bd --- /dev/null +++ b/_a_a_box_8h.js @@ -0,0 +1,4 @@ +var _a_a_box_8h = +[ + [ "AABox", "class_a_a_box.html", "class_a_a_box" ] +]; \ No newline at end of file diff --git a/_a_a_box_8h_source.html b/_a_a_box_8h_source.html new file mode 100644 index 000000000..61db790f6 --- /dev/null +++ b/_a_a_box_8h_source.html @@ -0,0 +1,529 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/AABox.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AABox.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
+ + + +
10#include <Jolt/Math/Mat44.h>
+
11
+ +
13
+
+
15class [[nodiscard]] AABox
+
16{
+
17public:
+ +
19
+
21 AABox() : mMin(Vec3::sReplicate(FLT_MAX)), mMax(Vec3::sReplicate(-FLT_MAX)) { }
+
22 AABox(Vec3Arg inMin, Vec3Arg inMax) : mMin(inMin), mMax(inMax) { }
+
23 AABox(DVec3Arg inMin, DVec3Arg inMax) : mMin(inMin.ToVec3RoundDown()), mMax(inMax.ToVec3RoundUp()) { }
+
24 AABox(Vec3Arg inCenter, float inRadius) : mMin(inCenter - Vec3::sReplicate(inRadius)), mMax(inCenter + Vec3::sReplicate(inRadius)) { }
+
25
+
27 static AABox sFromTwoPoints(Vec3Arg inP1, Vec3Arg inP2) { return AABox(Vec3::sMin(inP1, inP2), Vec3::sMax(inP1, inP2)); }
+
28
+
+
30 static AABox sBiggest()
+
31 {
+
32 return AABox(Vec3::sReplicate(-FLT_MAX), Vec3::sReplicate(FLT_MAX));
+
33 }
+
+
34
+
36 bool operator == (const AABox &inRHS) const { return mMin == inRHS.mMin && mMax == inRHS.mMax; }
+
37 bool operator != (const AABox &inRHS) const { return mMin != inRHS.mMin || mMax != inRHS.mMax; }
+
38
+
+
40 void SetEmpty()
+
41 {
+
42 mMin = Vec3::sReplicate(FLT_MAX);
+
43 mMax = Vec3::sReplicate(-FLT_MAX);
+
44 }
+
+
45
+
+
47 bool IsValid() const
+
48 {
+
49 return mMin.GetX() <= mMax.GetX() && mMin.GetY() <= mMax.GetY() && mMin.GetZ() <= mMax.GetZ();
+
50 }
+
+
51
+
+
53 void Encapsulate(Vec3Arg inPos)
+
54 {
+
55 mMin = Vec3::sMin(mMin, inPos);
+
56 mMax = Vec3::sMax(mMax, inPos);
+
57 }
+
+
58
+
+
60 void Encapsulate(const AABox &inRHS)
+
61 {
+
62 mMin = Vec3::sMin(mMin, inRHS.mMin);
+
63 mMax = Vec3::sMax(mMax, inRHS.mMax);
+
64 }
+
+
65
+
+
67 void Encapsulate(const Triangle &inRHS)
+
68 {
+
69 Vec3 v = Vec3::sLoadFloat3Unsafe(inRHS.mV[0]);
+
70 Encapsulate(v);
+
71 v = Vec3::sLoadFloat3Unsafe(inRHS.mV[1]);
+
72 Encapsulate(v);
+
73 v = Vec3::sLoadFloat3Unsafe(inRHS.mV[2]);
+
74 Encapsulate(v);
+
75 }
+
+
76
+
+
78 void Encapsulate(const VertexList &inVertices, const IndexedTriangle &inTriangle)
+
79 {
+
80 for (uint32 idx : inTriangle.mIdx)
+
81 Encapsulate(Vec3(inVertices[idx]));
+
82 }
+
+
83
+
+
85 AABox Intersect(const AABox &inOther) const
+
86 {
+
87 return AABox(Vec3::sMax(mMin, inOther.mMin), Vec3::sMin(mMax, inOther.mMax));
+
88 }
+
+
89
+
+
91 void EnsureMinimalEdgeLength(float inMinEdgeLength)
+
92 {
+
93 Vec3 min_length = Vec3::sReplicate(inMinEdgeLength);
+
94 mMax = Vec3::sSelect(mMax, mMin + min_length, Vec3::sLess(mMax - mMin, min_length));
+
95 }
+
+
96
+
+
98 void ExpandBy(Vec3Arg inVector)
+
99 {
+
100 mMin -= inVector;
+
101 mMax += inVector;
+
102 }
+
+
103
+
+ +
106 {
+
107 return 0.5f * (mMin + mMax);
+
108 }
+
+
109
+
+ +
112 {
+
113 return 0.5f * (mMax - mMin);
+
114 }
+
+
115
+
+
117 Vec3 GetSize() const
+
118 {
+
119 return mMax - mMin;
+
120 }
+
+
121
+
+
123 float GetSurfaceArea() const
+
124 {
+
125 Vec3 extent = mMax - mMin;
+
126 return 2.0f * (extent.GetX() * extent.GetY() + extent.GetX() * extent.GetZ() + extent.GetY() * extent.GetZ());
+
127 }
+
+
128
+
+
130 float GetVolume() const
+
131 {
+
132 Vec3 extent = mMax - mMin;
+
133 return extent.GetX() * extent.GetY() * extent.GetZ();
+
134 }
+
+
135
+
+
137 bool Contains(const AABox &inOther) const
+
138 {
+
139 return UVec4::sAnd(Vec3::sLessOrEqual(mMin, inOther.mMin), Vec3::sGreaterOrEqual(mMax, inOther.mMax)).TestAllXYZTrue();
+
140 }
+
+
141
+
+
143 bool Contains(Vec3Arg inOther) const
+
144 {
+
145 return UVec4::sAnd(Vec3::sLessOrEqual(mMin, inOther), Vec3::sGreaterOrEqual(mMax, inOther)).TestAllXYZTrue();
+
146 }
+
+
147
+
+
149 bool Contains(DVec3Arg inOther) const
+
150 {
+
151 return Contains(Vec3(inOther));
+
152 }
+
+
153
+
+
155 bool Overlaps(const AABox &inOther) const
+
156 {
+
157 return !UVec4::sOr(Vec3::sGreater(mMin, inOther.mMax), Vec3::sLess(mMax, inOther.mMin)).TestAnyXYZTrue();
+
158 }
+
+
159
+
+
161 bool Overlaps(const Plane &inPlane) const
+
162 {
+
163 Vec3 normal = inPlane.GetNormal();
+
164 float dist_normal = inPlane.SignedDistance(GetSupport(normal));
+
165 float dist_min_normal = inPlane.SignedDistance(GetSupport(-normal));
+
166 return dist_normal * dist_min_normal <= 0.0f; // If both support points are on the same side of the plane we don't overlap
+
167 }
+
+
168
+
+
170 void Translate(Vec3Arg inTranslation)
+
171 {
+
172 mMin += inTranslation;
+
173 mMax += inTranslation;
+
174 }
+
+
175
+
+
177 void Translate(DVec3Arg inTranslation)
+
178 {
+
179 mMin = (DVec3(mMin) + inTranslation).ToVec3RoundDown();
+
180 mMax = (DVec3(mMax) + inTranslation).ToVec3RoundUp();
+
181 }
+
+
182
+
+
184 AABox Transformed(Mat44Arg inMatrix) const
+
185 {
+
186 // Start with the translation of the matrix
+
187 Vec3 new_min, new_max;
+
188 new_min = new_max = inMatrix.GetTranslation();
+
189
+
190 // Now find the extreme points by considering the product of the min and max with each column of inMatrix
+
191 for (int c = 0; c < 3; ++c)
+
192 {
+
193 Vec3 col = inMatrix.GetColumn3(c);
+
194
+
195 Vec3 a = col * mMin[c];
+
196 Vec3 b = col * mMax[c];
+
197
+
198 new_min += Vec3::sMin(a, b);
+
199 new_max += Vec3::sMax(a, b);
+
200 }
+
201
+
202 // Return the new bounding box
+
203 return AABox(new_min, new_max);
+
204 }
+
+
205
+
+ +
208 {
+
209 AABox transformed = Transformed(inMatrix.GetRotation());
+
210 transformed.Translate(inMatrix.GetTranslation());
+
211 return transformed;
+
212 }
+
+
213
+
+
215 AABox Scaled(Vec3Arg inScale) const
+
216 {
+
217 return AABox::sFromTwoPoints(mMin * inScale, mMax * inScale);
+
218 }
+
+
219
+
+
221 Vec3 GetSupport(Vec3Arg inDirection) const
+
222 {
+
223 return Vec3::sSelect(mMax, mMin, Vec3::sLess(inDirection, Vec3::sZero()));
+
224 }
+
+
225
+
227 template <class VERTEX_ARRAY>
+
+
228 void GetSupportingFace(Vec3Arg inDirection, VERTEX_ARRAY &outVertices) const
+
229 {
+
230 outVertices.resize(4);
+
231
+
232 int axis = inDirection.Abs().GetHighestComponentIndex();
+
233 if (inDirection[axis] < 0.0f)
+
234 {
+
235 switch (axis)
+
236 {
+
237 case 0:
+
238 outVertices[0] = Vec3(mMax.GetX(), mMin.GetY(), mMin.GetZ());
+
239 outVertices[1] = Vec3(mMax.GetX(), mMax.GetY(), mMin.GetZ());
+
240 outVertices[2] = Vec3(mMax.GetX(), mMax.GetY(), mMax.GetZ());
+
241 outVertices[3] = Vec3(mMax.GetX(), mMin.GetY(), mMax.GetZ());
+
242 break;
+
243
+
244 case 1:
+
245 outVertices[0] = Vec3(mMin.GetX(), mMax.GetY(), mMin.GetZ());
+
246 outVertices[1] = Vec3(mMin.GetX(), mMax.GetY(), mMax.GetZ());
+
247 outVertices[2] = Vec3(mMax.GetX(), mMax.GetY(), mMax.GetZ());
+
248 outVertices[3] = Vec3(mMax.GetX(), mMax.GetY(), mMin.GetZ());
+
249 break;
+
250
+
251 case 2:
+
252 outVertices[0] = Vec3(mMin.GetX(), mMin.GetY(), mMax.GetZ());
+
253 outVertices[1] = Vec3(mMax.GetX(), mMin.GetY(), mMax.GetZ());
+
254 outVertices[2] = Vec3(mMax.GetX(), mMax.GetY(), mMax.GetZ());
+
255 outVertices[3] = Vec3(mMin.GetX(), mMax.GetY(), mMax.GetZ());
+
256 break;
+
257 }
+
258 }
+
259 else
+
260 {
+
261 switch (axis)
+
262 {
+
263 case 0:
+
264 outVertices[0] = Vec3(mMin.GetX(), mMin.GetY(), mMin.GetZ());
+
265 outVertices[1] = Vec3(mMin.GetX(), mMin.GetY(), mMax.GetZ());
+
266 outVertices[2] = Vec3(mMin.GetX(), mMax.GetY(), mMax.GetZ());
+
267 outVertices[3] = Vec3(mMin.GetX(), mMax.GetY(), mMin.GetZ());
+
268 break;
+
269
+
270 case 1:
+
271 outVertices[0] = Vec3(mMin.GetX(), mMin.GetY(), mMin.GetZ());
+
272 outVertices[1] = Vec3(mMax.GetX(), mMin.GetY(), mMin.GetZ());
+
273 outVertices[2] = Vec3(mMax.GetX(), mMin.GetY(), mMax.GetZ());
+
274 outVertices[3] = Vec3(mMin.GetX(), mMin.GetY(), mMax.GetZ());
+
275 break;
+
276
+
277 case 2:
+
278 outVertices[0] = Vec3(mMin.GetX(), mMin.GetY(), mMin.GetZ());
+
279 outVertices[1] = Vec3(mMin.GetX(), mMax.GetY(), mMin.GetZ());
+
280 outVertices[2] = Vec3(mMax.GetX(), mMax.GetY(), mMin.GetZ());
+
281 outVertices[3] = Vec3(mMax.GetX(), mMin.GetY(), mMin.GetZ());
+
282 break;
+
283 }
+
284 }
+
285 }
+
+
286
+
+ +
289 {
+
290 return Vec3::sMin(Vec3::sMax(inPoint, mMin), mMax);
+
291 }
+
+
292
+
+
294 inline float GetSqDistanceTo(Vec3Arg inPoint) const
+
295 {
+
296 return (GetClosestPoint(inPoint) - inPoint).LengthSq();
+
297 }
+
+
298
+ + +
302};
+
+
303
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#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
+ + +
Axis aligned box.
Definition AABox.h:16
+
Vec3 GetExtent() const
Get extent of bounding box (half of the size)
Definition AABox.h:111
+
JPH_OVERRIDE_NEW_DELETE AABox()
Constructor.
Definition AABox.h:21
+
static AABox sBiggest()
Get bounding box of size 2 * FLT_MAX.
Definition AABox.h:30
+
void Translate(DVec3Arg inTranslation)
Translate bounding box.
Definition AABox.h:177
+
AABox Scaled(Vec3Arg inScale) const
Scale this bounding box, can handle non-uniform and negative scaling.
Definition AABox.h:215
+
bool Contains(Vec3Arg inOther) const
Check if this box contains a point.
Definition AABox.h:143
+
Vec3 GetSize() const
Get size of bounding box.
Definition AABox.h:117
+
void EnsureMinimalEdgeLength(float inMinEdgeLength)
Make sure that each edge of the bounding box has a minimal length.
Definition AABox.h:91
+
Vec3 mMin
Bounding box min and max.
Definition AABox.h:300
+
void SetEmpty()
Reset the bounding box to an empty bounding box.
Definition AABox.h:40
+
AABox Intersect(const AABox &inOther) const
Intersect this bounding box with inOther, returns the intersection.
Definition AABox.h:85
+
void ExpandBy(Vec3Arg inVector)
Widen the box on both sides by inVector.
Definition AABox.h:98
+
static AABox sFromTwoPoints(Vec3Arg inP1, Vec3Arg inP2)
Create box from 2 points.
Definition AABox.h:27
+
void Encapsulate(const AABox &inRHS)
Encapsulate bounding box in bounding box.
Definition AABox.h:60
+
AABox(Vec3Arg inMin, Vec3Arg inMax)
Definition AABox.h:22
+
void Encapsulate(const VertexList &inVertices, const IndexedTriangle &inTriangle)
Encapsulate triangle in bounding box.
Definition AABox.h:78
+
AABox Transformed(DMat44Arg inMatrix) const
Transform bounding box.
Definition AABox.h:207
+
void GetSupportingFace(Vec3Arg inDirection, VERTEX_ARRAY &outVertices) const
Get the vertices of the face that faces inDirection the most.
Definition AABox.h:228
+
float GetSqDistanceTo(Vec3Arg inPoint) const
Get the squared distance between inPoint and this box (will be 0 if in Point is inside the box)
Definition AABox.h:294
+
AABox(Vec3Arg inCenter, float inRadius)
Definition AABox.h:24
+
float GetVolume() const
Get volume of bounding box.
Definition AABox.h:130
+
Vec3 GetClosestPoint(Vec3Arg inPoint) const
Get the closest point on or in this box to inPoint.
Definition AABox.h:288
+
Vec3 GetSupport(Vec3Arg inDirection) const
Calculate the support vector for this convex shape.
Definition AABox.h:221
+
AABox Transformed(Mat44Arg inMatrix) const
Transform bounding box.
Definition AABox.h:184
+
bool Overlaps(const Plane &inPlane) const
Check if this box overlaps with a plane.
Definition AABox.h:161
+
bool Overlaps(const AABox &inOther) const
Check if this box overlaps with another box.
Definition AABox.h:155
+
AABox(DVec3Arg inMin, DVec3Arg inMax)
Definition AABox.h:23
+
float GetSurfaceArea() const
Get surface area of bounding box.
Definition AABox.h:123
+
void Translate(Vec3Arg inTranslation)
Translate bounding box.
Definition AABox.h:170
+
bool IsValid() const
Check if the bounding box is valid (max >= min)
Definition AABox.h:47
+
void Encapsulate(Vec3Arg inPos)
Encapsulate point in bounding box.
Definition AABox.h:53
+
Vec3 GetCenter() const
Get center of bounding box.
Definition AABox.h:105
+
bool Contains(const AABox &inOther) const
Check if this box contains another box.
Definition AABox.h:137
+
bool Contains(DVec3Arg inOther) const
Check if this box contains a point.
Definition AABox.h:149
+
void Encapsulate(const Triangle &inRHS)
Encapsulate triangle in bounding box.
Definition AABox.h:67
+
Vec3 mMax
Definition AABox.h:301
+ +
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
JPH_INLINE DVec3 GetTranslation() const
Definition DMat44.h:111
+
JPH_INLINE Mat44 GetRotation() const
Get rotation part only (note: retains the first 3 values from the bottom row)
Definition DMat44.h:128
+
Definition DVec3.h:14
+
Triangle with 32-bit indices and material index.
Definition IndexedTriangle.h:73
+
uint32 mIdx[3]
Definition IndexedTriangle.h:68
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Vec3 GetColumn3(uint inCol) const
Definition Mat44.h:158
+
JPH_INLINE Vec3 GetTranslation() const
Definition Mat44.h:152
+
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
Vec3 GetNormal() const
Definition Plane.h:30
+
float SignedDistance(Vec3Arg inPoint) const
Distance point to plane.
Definition Plane.h:54
+
A simple triangle and its material.
Definition Triangle.h:11
+
Float3 mV[3]
Vertices.
Definition Triangle.h:27
+
JPH_INLINE bool TestAnyXYZTrue() const
Test if any of X, Y or Z components are true (true is when highest bit of component is set)
Definition UVec4.inl:400
+
static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)
Logical and (component wise)
Definition UVec4.inl:199
+
static JPH_INLINE UVec4 sOr(UVec4Arg inV1, UVec4Arg inV2)
Logical or (component wise)
Definition UVec4.inl:171
+
JPH_INLINE bool TestAllXYZTrue() const
Test if X, Y and Z components are true (true is when highest bit of component is set)
Definition UVec4.inl:410
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sMax(Vec3Arg inV1, Vec3Arg inV2)
Return the maximum of each of the components.
Definition Vec3.inl:159
+
static JPH_INLINE Vec3 sMin(Vec3Arg inV1, Vec3Arg inV2)
Return the minimum value of each of the components.
Definition Vec3.inl:146
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
static JPH_INLINE UVec4 sGreaterOrEqual(Vec3Arg inV1, Vec3Arg inV2)
Greater than or equal (component wise)
Definition Vec3.inl:237
+
static JPH_INLINE UVec4 sLessOrEqual(Vec3Arg inV1, Vec3Arg inV2)
Less than or equal (component wise)
Definition Vec3.inl:207
+
JPH_INLINE Vec3 Abs() const
Return the absolute value of each of the components.
Definition Vec3.inl:572
+
static JPH_INLINE UVec4 sGreater(Vec3Arg inV1, Vec3Arg inV2)
Greater than (component wise)
Definition Vec3.inl:222
+
static JPH_INLINE Vec3 sSelect(Vec3Arg inV1, Vec3Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec3.inl:269
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE UVec4 sLess(Vec3Arg inV1, Vec3Arg inV2)
Less than (component wise)
Definition Vec3.inl:192
+
static JPH_INLINE Vec3 sReplicate(float inV)
Replicate inV across all components.
Definition Vec3.inl:118
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
JPH_INLINE int GetHighestComponentIndex() const
Get index of component with highest value.
Definition Vec3.inl:567
+
+
+ + + + diff --git a/_a_a_box_cast_8h.html b/_a_a_box_cast_8h.html new file mode 100644 index 000000000..b91185311 --- /dev/null +++ b/_a_a_box_cast_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/AABoxCast.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AABoxCast.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

struct  AABoxCast
 Structure that holds AABox moving linearly through 3d space. More...
 
+
+
+ + + + diff --git a/_a_a_box_cast_8h.js b/_a_a_box_cast_8h.js new file mode 100644 index 000000000..f4bb3e23d --- /dev/null +++ b/_a_a_box_cast_8h.js @@ -0,0 +1,4 @@ +var _a_a_box_cast_8h = +[ + [ "AABoxCast", "struct_a_a_box_cast.html", "struct_a_a_box_cast" ] +]; \ No newline at end of file diff --git a/_a_a_box_cast_8h_source.html b/_a_a_box_cast_8h_source.html new file mode 100644 index 000000000..99c639b29 --- /dev/null +++ b/_a_a_box_cast_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/AABoxCast.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AABoxCast.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
+ + +
18};
+
+
19
+ + +
#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
+
Axis aligned box.
Definition AABox.h:16
+
Definition Vec3.h:17
+
Structure that holds AABox moving linearly through 3d space.
Definition AABoxCast.h:13
+
JPH_OVERRIDE_NEW_DELETE AABox mBox
Axis aligned box at starting location.
Definition AABoxCast.h:16
+
Vec3 mDirection
Direction and length of the cast (anything beyond this length will not be reported as a hit)
Definition AABoxCast.h:17
+
+
+ + + + diff --git a/_a_p_i_changes_8md.html b/_a_p_i_changes_8md.html new file mode 100644 index 000000000..dec22676e --- /dev/null +++ b/_a_p_i_changes_8md.html @@ -0,0 +1,114 @@ + + + + + + + +Jolt Physics: Docs/APIChanges.md File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Docs/APIChanges.md File Reference
+
+
+
+
+ + + + diff --git a/_a_r_m_neon_8h.html b/_a_r_m_neon_8h.html new file mode 100644 index 000000000..711a1e57f --- /dev/null +++ b/_a_r_m_neon_8h.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Core/ARMNeon.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ARMNeon.h File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_a_r_m_neon_8h_source.html b/_a_r_m_neon_8h_source.html new file mode 100644 index 000000000..a6ab68a95 --- /dev/null +++ b/_a_r_m_neon_8h_source.html @@ -0,0 +1,215 @@ + + + + + + + +Jolt Physics: Jolt/Core/ARMNeon.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ARMNeon.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2022 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+
7#ifdef JPH_USE_NEON
+
8
+
9// Constructing NEON values
+
10#ifdef JPH_COMPILER_MSVC
+
11 #define JPH_NEON_INT32x4(v1, v2, v3, v4) { int64_t(v1) + (int64_t(v2) << 32), int64_t(v3) + (int64_t(v4) << 32) }
+
12 #define JPH_NEON_UINT32x4(v1, v2, v3, v4) { uint64_t(v1) + (uint64_t(v2) << 32), uint64_t(v3) + (uint64_t(v4) << 32) }
+
13 #define JPH_NEON_INT8x16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) { int64_t(v1) + (int64_t(v2) << 8) + (int64_t(v3) << 16) + (int64_t(v4) << 24) + (int64_t(v5) << 32) + (int64_t(v6) << 40) + (int64_t(v7) << 48) + (int64_t(v8) << 56), int64_t(v9) + (int64_t(v10) << 8) + (int64_t(v11) << 16) + (int64_t(v12) << 24) + (int64_t(v13) << 32) + (int64_t(v14) << 40) + (int64_t(v15) << 48) + (int64_t(v16) << 56) }
+
14 #define JPH_NEON_UINT8x16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) { uint64_t(v1) + (uint64_t(v2) << 8) + (uint64_t(v3) << 16) + (uint64_t(v4) << 24) + (uint64_t(v5) << 32) + (uint64_t(v6) << 40) + (uint64_t(v7) << 48) + (uint64_t(v8) << 56), uint64_t(v9) + (uint64_t(v10) << 8) + (uint64_t(v11) << 16) + (uint64_t(v12) << 24) + (uint64_t(v13) << 32) + (uint64_t(v14) << 40) + (uint64_t(v15) << 48) + (uint64_t(v16) << 56) }
+
15#else
+
16 #define JPH_NEON_INT32x4(v1, v2, v3, v4) { v1, v2, v3, v4 }
+
17 #define JPH_NEON_UINT32x4(v1, v2, v3, v4) { v1, v2, v3, v4 }
+
18 #define JPH_NEON_INT8x16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16 }
+
19 #define JPH_NEON_UINT8x16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) { v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16 }
+
20#endif
+
21
+
22// MSVC and GCC prior to version 12 don't define __builtin_shufflevector
+
23#if defined(JPH_COMPILER_MSVC) || (defined(JPH_COMPILER_GCC) && __GNUC__ < 12)
+ +
25
+
26 // Generic shuffle vector template
+
27 template <unsigned I1, unsigned I2, unsigned I3, unsigned I4>
+
28 JPH_INLINE float32x4_t NeonShuffleFloat32x4(float32x4_t inV1, float32x4_t inV2)
+
29 {
+
30 float32x4_t ret;
+
31 ret = vmovq_n_f32(vgetq_lane_f32(I1 >= 4? inV2 : inV1, I1 & 0b11));
+
32 ret = vsetq_lane_f32(vgetq_lane_f32(I2 >= 4? inV2 : inV1, I2 & 0b11), ret, 1);
+
33 ret = vsetq_lane_f32(vgetq_lane_f32(I3 >= 4? inV2 : inV1, I3 & 0b11), ret, 2);
+
34 ret = vsetq_lane_f32(vgetq_lane_f32(I4 >= 4? inV2 : inV1, I4 & 0b11), ret, 3);
+
35 return ret;
+
36 }
+
37
+
38 // Specializations
+
39 template <>
+
40 JPH_INLINE float32x4_t NeonShuffleFloat32x4<0, 1, 2, 2>(float32x4_t inV1, float32x4_t inV2)
+
41 {
+
42 return vcombine_f32(vget_low_f32(inV1), vdup_lane_f32(vget_high_f32(inV1), 0));
+
43 }
+
44
+
45 template <>
+
46 JPH_INLINE float32x4_t NeonShuffleFloat32x4<0, 1, 3, 3>(float32x4_t inV1, float32x4_t inV2)
+
47 {
+
48 return vcombine_f32(vget_low_f32(inV1), vdup_lane_f32(vget_high_f32(inV1), 1));
+
49 }
+
50
+
51 template <>
+
52 JPH_INLINE float32x4_t NeonShuffleFloat32x4<0, 1, 2, 3>(float32x4_t inV1, float32x4_t inV2)
+
53 {
+
54 return inV1;
+
55 }
+
56
+
57 template <>
+
58 JPH_INLINE float32x4_t NeonShuffleFloat32x4<1, 0, 3, 2>(float32x4_t inV1, float32x4_t inV2)
+
59 {
+
60 return vcombine_f32(vrev64_f32(vget_low_f32(inV1)), vrev64_f32(vget_high_f32(inV1)));
+
61 }
+
62
+
63 template <>
+
64 JPH_INLINE float32x4_t NeonShuffleFloat32x4<2, 2, 1, 0>(float32x4_t inV1, float32x4_t inV2)
+
65 {
+
66 return vcombine_f32(vdup_lane_f32(vget_high_f32(inV1), 0), vrev64_f32(vget_low_f32(inV1)));
+
67 }
+
68
+
69 template <>
+
70 JPH_INLINE float32x4_t NeonShuffleFloat32x4<2, 3, 0, 1>(float32x4_t inV1, float32x4_t inV2)
+
71 {
+
72 return vcombine_f32(vget_high_f32(inV1), vget_low_f32(inV1));
+
73 }
+
74
+
75 // Used extensively by cross product
+
76 template <>
+
77 JPH_INLINE float32x4_t NeonShuffleFloat32x4<1, 2, 0, 0>(float32x4_t inV1, float32x4_t inV2)
+
78 {
+
79 static uint8x16_t table = JPH_NEON_UINT8x16(0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x00, 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x03);
+
80 return vreinterpretq_f32_u8(vqtbl1q_u8(vreinterpretq_u8_f32(inV1), table));
+
81 }
+
82
+
83 // Shuffle a vector
+
84 #define JPH_NEON_SHUFFLE_F32x4(vec1, vec2, index1, index2, index3, index4) NeonShuffleFloat32x4<index1, index2, index3, index4>(vec1, vec2)
+
85 #define JPH_NEON_SHUFFLE_U32x4(vec1, vec2, index1, index2, index3, index4) vreinterpretq_u32_f32((NeonShuffleFloat32x4<index1, index2, index3, index4>(vreinterpretq_f32_u32(vec1), vreinterpretq_f32_u32(vec2))))
+
86
+ +
88#else
+
89 // Shuffle a vector
+
90 #define JPH_NEON_SHUFFLE_F32x4(vec1, vec2, index1, index2, index3, index4) __builtin_shufflevector(vec1, vec2, index1, index2, index3, index4)
+
91 #define JPH_NEON_SHUFFLE_U32x4(vec1, vec2, index1, index2, index3, index4) __builtin_shufflevector(vec1, vec2, index1, index2, index3, index4)
+
92#endif
+
93
+
94#endif // JPH_USE_NEON
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
+
+ + + + diff --git a/_active_edge_mode_8h.html b/_active_edge_mode_8h.html new file mode 100644 index 000000000..80eb81dd9 --- /dev/null +++ b/_active_edge_mode_8h.html @@ -0,0 +1,156 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ActiveEdgeMode.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ActiveEdgeMode.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Enumerations

enum class  EActiveEdgeMode : uint8 { CollideOnlyWithActive +, CollideWithAll + }
 
+

Enumeration Type Documentation

+ +

◆ EActiveEdgeMode

+ +
+
+ + + + + +
+ + + + +
enum class EActiveEdgeMode : uint8
+
+strong
+
+

How to treat active/inactive edges. An active edge is an edge that either has no neighbouring edge or if the angle between the two connecting faces is too large, see: ActiveEdges

+ + + +
Enumerator
CollideOnlyWithActive 

Do not collide with inactive edges. For physics simulation, this gives less ghost collisions.

+
CollideWithAll 

Collide with all edges. Use this when you're interested in all collisions.

+
+ +
+
+
+
+ + + + diff --git a/_active_edge_mode_8h.js b/_active_edge_mode_8h.js new file mode 100644 index 000000000..fb33d4ed1 --- /dev/null +++ b/_active_edge_mode_8h.js @@ -0,0 +1,7 @@ +var _active_edge_mode_8h = +[ + [ "EActiveEdgeMode", "_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183", [ + [ "CollideOnlyWithActive", "_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183a505c6aab0af57196fa3df673d7325917", null ], + [ "CollideWithAll", "_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183a48ac126dfa7b1b9eeeb736b03305ad48", null ] + ] ] +]; \ No newline at end of file diff --git a/_active_edge_mode_8h_source.html b/_active_edge_mode_8h_source.html new file mode 100644 index 000000000..a846bff1f --- /dev/null +++ b/_active_edge_mode_8h_source.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ActiveEdgeMode.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ActiveEdgeMode.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
+
+ +
12{
+ + +
15};
+
+
16
+ +
EActiveEdgeMode
Definition ActiveEdgeMode.h:12
+
@ CollideWithAll
Collide with all edges. Use this when you're interested in all collisions.
+
@ CollideOnlyWithActive
Do not collide with inactive edges. For physics simulation, this gives less ghost collisions.
+
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
+
+ + + + diff --git a/_active_edges_8h.html b/_active_edges_8h.html new file mode 100644 index 000000000..d38b2bf73 --- /dev/null +++ b/_active_edges_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ActiveEdges.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ActiveEdges.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Namespaces

namespace  ActiveEdges
 An active edge is an edge that either has no neighbouring edge or if the angle between the two connecting faces is too large.
 
+
+
+ + + + diff --git a/_active_edges_8h_source.html b/_active_edges_8h_source.html new file mode 100644 index 000000000..70d141459 --- /dev/null +++ b/_active_edges_8h_source.html @@ -0,0 +1,233 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ActiveEdges.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ActiveEdges.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
+
+
12namespace ActiveEdges
+
13{
+
19 inline static bool IsEdgeActive(Vec3Arg inNormal1, Vec3Arg inNormal2, Vec3Arg inEdgeDirection, float inCosThresholdAngle)
+
20 {
+
21 // If normals are opposite the edges are active (the triangles are back to back)
+
22 float cos_angle_normals = inNormal1.Dot(inNormal2);
+
23 if (cos_angle_normals < -0.999848f) // cos(179 degrees)
+
24 return true;
+
25
+
26 // Check if concave edge, if so we are not active
+
27 if (inNormal1.Cross(inNormal2).Dot(inEdgeDirection) < 0.0f)
+
28 return false;
+
29
+
30 // Convex edge, active when angle bigger than threshold
+
31 return cos_angle_normals < inCosThresholdAngle;
+
32 }
+
33
+
42 inline static Vec3 FixNormal(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inTriangleNormal, uint8 inActiveEdges, Vec3Arg inPoint, Vec3Arg inNormal, Vec3Arg inMovementDirection)
+
43 {
+
44 // Check: All of the edges are active, we have the correct normal already. No need to call this function!
+
45 JPH_ASSERT(inActiveEdges != 0b111);
+
46
+
47 // If inNormal would affect movement less than inTriangleNormal use inNormal
+
48 // This is done since it is really hard to make a distinction between sliding over a horizontal triangulated grid and hitting an edge (in this case you want to use the triangle normal)
+
49 // and sliding over a triangulated grid and grazing a vertical triangle with an inactive edge (in this case using the triangle normal will cause the object to bounce back so we want to use the calculated normal).
+
50 // To solve this we take a movement hint to give an indication of what direction our object is moving. If the edge normal results in less motion difference than the triangle normal we use the edge normal.
+
51 float normal_length = inNormal.Length();
+
52 float triangle_normal_length = inTriangleNormal.Length();
+
53 if (inMovementDirection.Dot(inNormal) * triangle_normal_length < inMovementDirection.Dot(inTriangleNormal) * normal_length)
+
54 return inNormal;
+
55
+
56 // Check: None of the edges are active, we need to use the triangle normal
+
57 if (inActiveEdges == 0)
+
58 return inTriangleNormal;
+
59
+
60 // Some edges are active.
+
61 // If normal is parallel to the triangle normal we don't need to check the active edges.
+
62 if (inTriangleNormal.Dot(inNormal) > 0.999848f * normal_length * triangle_normal_length) // cos(1 degree)
+
63 return inNormal;
+
64
+
65 const float cEpsilon = 1.0e-4f;
+
66 const float cOneMinusEpsilon = 1.0f - cEpsilon;
+
67
+
68 uint colliding_edge;
+
69
+
70 // Test where the contact point is in the triangle
+
71 float u, v, w;
+
72 ClosestPoint::GetBaryCentricCoordinates(inV0 - inPoint, inV1 - inPoint, inV2 - inPoint, u, v, w);
+
73 if (u > cOneMinusEpsilon)
+
74 {
+
75 // Colliding with v0, edge 0 or 2 needs to be active
+
76 colliding_edge = 0b101;
+
77 }
+
78 else if (v > cOneMinusEpsilon)
+
79 {
+
80 // Colliding with v1, edge 0 or 1 needs to be active
+
81 colliding_edge = 0b011;
+
82 }
+
83 else if (w > cOneMinusEpsilon)
+
84 {
+
85 // Colliding with v2, edge 1 or 2 needs to be active
+
86 colliding_edge = 0b110;
+
87 }
+
88 else if (u < cEpsilon)
+
89 {
+
90 // Colliding with edge v1, v2, edge 1 needs to be active
+
91 colliding_edge = 0b010;
+
92 }
+
93 else if (v < cEpsilon)
+
94 {
+
95 // Colliding with edge v0, v2, edge 2 needs to be active
+
96 colliding_edge = 0b100;
+
97 }
+
98 else if (w < cEpsilon)
+
99 {
+
100 // Colliding with edge v0, v1, edge 0 needs to be active
+
101 colliding_edge = 0b001;
+
102 }
+
103 else
+
104 {
+
105 // Interior hit
+
106 return inTriangleNormal;
+
107 }
+
108
+
109 // If this edge is active, use the provided normal instead of the triangle normal
+
110 return (inActiveEdges & colliding_edge) != 0? inNormal : inTriangleNormal;
+
111 }
+
112}
+
+
113
+ + +
std::uint8_t uint8
Definition Core.h:453
+
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_ASSERT(...)
Definition IssueReporting.h:33
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec3.inl:677
+
An active edge is an edge that either has no neighbouring edge or if the angle between the two connec...
Definition ActiveEdges.h:13
+
bool GetBaryCentricCoordinates(Vec3Arg inA, Vec3Arg inB, float &outU, float &outV)
Definition ClosestPoint.h:18
+
+
+ + + + diff --git a/_allowed_d_o_fs_8h.html b/_allowed_d_o_fs_8h.html new file mode 100644 index 000000000..0a72a2623 --- /dev/null +++ b/_allowed_d_o_fs_8h.html @@ -0,0 +1,465 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/AllowedDOFs.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AllowedDOFs.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Enumerations

enum class  EAllowedDOFs : uint8 {
+  None = 0b000000 +, All = 0b111111 +, TranslationX = 0b000001 +, TranslationY = 0b000010 +,
+  TranslationZ = 0b000100 +, RotationX = 0b001000 +, RotationY = 0b010000 +, RotationZ = 0b100000 +,
+  Plane2D = TranslationX | TranslationY | RotationZ +
+ }
 Enum used in BodyCreationSettings and MotionProperties to indicate which degrees of freedom a body has. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

constexpr EAllowedDOFs operator| (EAllowedDOFs inLHS, EAllowedDOFs inRHS)
 Bitwise OR operator for EAllowedDOFs.
 
constexpr EAllowedDOFs operator& (EAllowedDOFs inLHS, EAllowedDOFs inRHS)
 Bitwise AND operator for EAllowedDOFs.
 
constexpr EAllowedDOFs operator^ (EAllowedDOFs inLHS, EAllowedDOFs inRHS)
 Bitwise XOR operator for EAllowedDOFs.
 
constexpr EAllowedDOFs operator~ (EAllowedDOFs inAllowedDOFs)
 Bitwise NOT operator for EAllowedDOFs.
 
constexpr EAllowedDOFsoperator|= (EAllowedDOFs &ioLHS, EAllowedDOFs inRHS)
 Bitwise OR assignment operator for EAllowedDOFs.
 
constexpr EAllowedDOFsoperator&= (EAllowedDOFs &ioLHS, EAllowedDOFs inRHS)
 Bitwise AND assignment operator for EAllowedDOFs.
 
constexpr EAllowedDOFsoperator^= (EAllowedDOFs &ioLHS, EAllowedDOFs inRHS)
 Bitwise XOR assignment operator for EAllowedDOFs.
 
+

Enumeration Type Documentation

+ +

◆ EAllowedDOFs

+ +
+
+ + + + + +
+ + + + +
enum class EAllowedDOFs : uint8
+
+strong
+
+ +

Enum used in BodyCreationSettings and MotionProperties to indicate which degrees of freedom a body has.

+ + + + + + + + + + +
Enumerator
None 

No degrees of freedom are allowed. Note that this is not valid and will crash. Use a static body instead.

+
All 

All degrees of freedom are allowed.

+
TranslationX 

Body can move in world space X axis.

+
TranslationY 

Body can move in world space Y axis.

+
TranslationZ 

Body can move in world space Z axis.

+
RotationX 

Body can rotate around world space X axis.

+
RotationY 

Body can rotate around world space Y axis.

+
RotationZ 

Body can rotate around world space Z axis.

+
Plane2D 

Body can only move in X and Y axis and rotate around Z axis.

+
+ +
+
+

Function Documentation

+ +

◆ operator&()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
constexpr EAllowedDOFs operator& (EAllowedDOFs inLHS,
EAllowedDOFs inRHS 
)
+
+constexpr
+
+ +

Bitwise AND operator for EAllowedDOFs.

+ +
+
+ +

◆ operator&=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
constexpr EAllowedDOFs & operator&= (EAllowedDOFsioLHS,
EAllowedDOFs inRHS 
)
+
+constexpr
+
+ +

Bitwise AND assignment operator for EAllowedDOFs.

+ +
+
+ +

◆ operator^()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
constexpr EAllowedDOFs operator^ (EAllowedDOFs inLHS,
EAllowedDOFs inRHS 
)
+
+constexpr
+
+ +

Bitwise XOR operator for EAllowedDOFs.

+ +
+
+ +

◆ operator^=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
constexpr EAllowedDOFs & operator^= (EAllowedDOFsioLHS,
EAllowedDOFs inRHS 
)
+
+constexpr
+
+ +

Bitwise XOR assignment operator for EAllowedDOFs.

+ +
+
+ +

◆ operator|()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
constexpr EAllowedDOFs operator| (EAllowedDOFs inLHS,
EAllowedDOFs inRHS 
)
+
+constexpr
+
+ +

Bitwise OR operator for EAllowedDOFs.

+ +
+
+ +

◆ operator|=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
constexpr EAllowedDOFs & operator|= (EAllowedDOFsioLHS,
EAllowedDOFs inRHS 
)
+
+constexpr
+
+ +

Bitwise OR assignment operator for EAllowedDOFs.

+ +
+
+ +

◆ operator~()

+ +
+
+ + + + + +
+ + + + + + + + +
constexpr EAllowedDOFs operator~ (EAllowedDOFs inAllowedDOFs)
+
+constexpr
+
+ +

Bitwise NOT operator for EAllowedDOFs.

+ +
+
+
+
+ + + + diff --git a/_allowed_d_o_fs_8h.js b/_allowed_d_o_fs_8h.js new file mode 100644 index 000000000..1ee742198 --- /dev/null +++ b/_allowed_d_o_fs_8h.js @@ -0,0 +1,21 @@ +var _allowed_d_o_fs_8h = +[ + [ "EAllowedDOFs", "_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913", [ + [ "None", "_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a6adf97f83acf6453d4a6a4b1070f3754", null ], + [ "All", "_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ab1c94ca2fbc3e78fc30069c8d0f01680", null ], + [ "TranslationX", "_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913adf25457a4acbb8220b36cbd34903fc06", null ], + [ "TranslationY", "_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a5958d0bb6455dfb87376b3c24eeb9a46", null ], + [ "TranslationZ", "_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a7eac98e7f2c74960a4aa9a2a92a8874d", null ], + [ "RotationX", "_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a14dcec09ce1f4dfaac5955bc70825ebc", null ], + [ "RotationY", "_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a7527ced5a5153f3b21e31c4b177c2ea7", null ], + [ "RotationZ", "_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ae967cae1a9d601b4335123e013328d34", null ], + [ "Plane2D", "_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ab4428ecae408554a5383fb2c4a24ffa6", null ] + ] ], + [ "operator&", "_allowed_d_o_fs_8h.html#afe95ed30c0537646dfdabb25414d939a", null ], + [ "operator&=", "_allowed_d_o_fs_8h.html#a3003da2a6c8c46e329556000e4b3c458", null ], + [ "operator^", "_allowed_d_o_fs_8h.html#a371213476af99435f3ab12f02f53ec48", null ], + [ "operator^=", "_allowed_d_o_fs_8h.html#abdf6d90389c231402b383d003c609379", null ], + [ "operator|", "_allowed_d_o_fs_8h.html#aaa1b26e8bc12ba3755cc10db87c0bd0b", null ], + [ "operator|=", "_allowed_d_o_fs_8h.html#af7f3f5b21c11112fe7c7c467403b44a6", null ], + [ "operator~", "_allowed_d_o_fs_8h.html#a7560b098399ec920c9dc6fed56f338b1", null ] +]; \ No newline at end of file diff --git a/_allowed_d_o_fs_8h_source.html b/_allowed_d_o_fs_8h_source.html new file mode 100644 index 000000000..6fe024db7 --- /dev/null +++ b/_allowed_d_o_fs_8h_source.html @@ -0,0 +1,215 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/AllowedDOFs.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AllowedDOFs.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+
+
10enum class EAllowedDOFs : uint8
+
11{
+
12 None = 0b000000,
+
13 All = 0b111111,
+
14 TranslationX = 0b000001,
+
15 TranslationY = 0b000010,
+
16 TranslationZ = 0b000100,
+
17 RotationX = 0b001000,
+
18 RotationY = 0b010000,
+
19 RotationZ = 0b100000,
+ +
21};
+
+
22
+
+ +
25{
+
26 return EAllowedDOFs(uint8(inLHS) | uint8(inRHS));
+
27}
+
+
28
+
+ +
31{
+
32 return EAllowedDOFs(uint8(inLHS) & uint8(inRHS));
+
33}
+
+
34
+
+ +
37{
+
38 return EAllowedDOFs(uint8(inLHS) ^ uint8(inRHS));
+
39}
+
+
40
+
+
42constexpr EAllowedDOFs operator ~ (EAllowedDOFs inAllowedDOFs)
+
43{
+
44 return EAllowedDOFs(~uint8(inAllowedDOFs));
+
45}
+
+
46
+
+ +
49{
+
50 ioLHS = ioLHS | inRHS;
+
51 return ioLHS;
+
52}
+
+
53
+
+ +
56{
+
57 ioLHS = ioLHS & inRHS;
+
58 return ioLHS;
+
59}
+
+
60
+
+ +
63{
+
64 ioLHS = ioLHS ^ inRHS;
+
65 return ioLHS;
+
66}
+
+
67
+ +
constexpr EAllowedDOFs & operator&=(EAllowedDOFs &ioLHS, EAllowedDOFs inRHS)
Bitwise AND assignment operator for EAllowedDOFs.
Definition AllowedDOFs.h:55
+
constexpr EAllowedDOFs operator^(EAllowedDOFs inLHS, EAllowedDOFs inRHS)
Bitwise XOR operator for EAllowedDOFs.
Definition AllowedDOFs.h:36
+
EAllowedDOFs
Enum used in BodyCreationSettings and MotionProperties to indicate which degrees of freedom a body ha...
Definition AllowedDOFs.h:11
+
@ RotationX
Body can rotate around world space X axis.
+
@ TranslationY
Body can move in world space Y axis.
+
@ None
No degrees of freedom are allowed. Note that this is not valid and will crash. Use a static body inst...
+
@ RotationY
Body can rotate around world space Y axis.
+
@ TranslationZ
Body can move in world space Z axis.
+
@ All
All degrees of freedom are allowed.
+
@ Plane2D
Body can only move in X and Y axis and rotate around Z axis.
+
@ TranslationX
Body can move in world space X axis.
+
@ RotationZ
Body can rotate around world space Z axis.
+
constexpr EAllowedDOFs operator~(EAllowedDOFs inAllowedDOFs)
Bitwise NOT operator for EAllowedDOFs.
Definition AllowedDOFs.h:42
+
constexpr EAllowedDOFs operator|(EAllowedDOFs inLHS, EAllowedDOFs inRHS)
Bitwise OR operator for EAllowedDOFs.
Definition AllowedDOFs.h:24
+
constexpr EAllowedDOFs & operator^=(EAllowedDOFs &ioLHS, EAllowedDOFs inRHS)
Bitwise XOR assignment operator for EAllowedDOFs.
Definition AllowedDOFs.h:62
+
constexpr EAllowedDOFs & operator|=(EAllowedDOFs &ioLHS, EAllowedDOFs inRHS)
Bitwise OR assignment operator for EAllowedDOFs.
Definition AllowedDOFs.h:48
+
constexpr EAllowedDOFs operator&(EAllowedDOFs inLHS, EAllowedDOFs inRHS)
Bitwise AND operator for EAllowedDOFs.
Definition AllowedDOFs.h:30
+
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
+
+ + + + diff --git a/_angle_constraint_part_8h.html b/_angle_constraint_part_8h.html new file mode 100644 index 000000000..7e7a9edf5 --- /dev/null +++ b/_angle_constraint_part_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/AngleConstraintPart.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AngleConstraintPart.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  AngleConstraintPart
 
+
+
+ + + + diff --git a/_angle_constraint_part_8h.js b/_angle_constraint_part_8h.js new file mode 100644 index 000000000..02eeaa280 --- /dev/null +++ b/_angle_constraint_part_8h.js @@ -0,0 +1,4 @@ +var _angle_constraint_part_8h = +[ + [ "AngleConstraintPart", "class_angle_constraint_part.html", "class_angle_constraint_part" ] +]; \ No newline at end of file diff --git a/_angle_constraint_part_8h_source.html b/_angle_constraint_part_8h_source.html new file mode 100644 index 000000000..fc6309766 --- /dev/null +++ b/_angle_constraint_part_8h_source.html @@ -0,0 +1,381 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/AngleConstraintPart.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AngleConstraintPart.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
+ + + + +
11
+ +
13
+
+ +
37{
+
39 JPH_INLINE bool ApplyVelocityStep(Body &ioBody1, Body &ioBody2, float inLambda) const
+
40 {
+
41 // Apply impulse if delta is not zero
+
42 if (inLambda != 0.0f)
+
43 {
+
44 // Calculate velocity change due to constraint
+
45 //
+
46 // Impulse:
+
47 // P = J^T lambda
+
48 //
+
49 // Euler velocity integration:
+
50 // v' = v + M^-1 P
+
51 if (ioBody1.IsDynamic())
+
52 ioBody1.GetMotionProperties()->SubAngularVelocityStep(inLambda * mInvI1_Axis);
+
53 if (ioBody2.IsDynamic())
+
54 ioBody2.GetMotionProperties()->AddAngularVelocityStep(inLambda * mInvI2_Axis);
+
55 return true;
+
56 }
+
57
+
58 return false;
+
59 }
+
60
+
62 JPH_INLINE float CalculateInverseEffectiveMass(const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis)
+
63 {
+
64 JPH_ASSERT(inWorldSpaceAxis.IsNormalized(1.0e-4f));
+
65
+
66 // Calculate properties used below
+
67 mInvI1_Axis = inBody1.IsDynamic()? inBody1.GetMotionProperties()->MultiplyWorldSpaceInverseInertiaByVector(inBody1.GetRotation(), inWorldSpaceAxis) : Vec3::sZero();
+
68 mInvI2_Axis = inBody2.IsDynamic()? inBody2.GetMotionProperties()->MultiplyWorldSpaceInverseInertiaByVector(inBody2.GetRotation(), inWorldSpaceAxis) : Vec3::sZero();
+
69
+
70 // Calculate inverse effective mass: K = J M^-1 J^T
+
71 return inWorldSpaceAxis.Dot(mInvI1_Axis + mInvI2_Axis);
+
72 }
+
73
+
74public:
+
+
81 inline void CalculateConstraintProperties(const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias = 0.0f)
+
82 {
+
83 float inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inBody2, inWorldSpaceAxis);
+
84
+
85 if (inv_effective_mass == 0.0f)
+
86 Deactivate();
+
87 else
+
88 {
+
89 mEffectiveMass = 1.0f / inv_effective_mass;
+
90 mSpringPart.CalculateSpringPropertiesWithBias(inBias);
+
91 }
+
92 }
+
+
93
+
+
104 inline void CalculateConstraintPropertiesWithFrequencyAndDamping(float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inFrequency, float inDamping)
+
105 {
+
106 float inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inBody2, inWorldSpaceAxis);
+
107
+
108 if (inv_effective_mass == 0.0f)
+
109 Deactivate();
+
110 else
+
111 mSpringPart.CalculateSpringPropertiesWithFrequencyAndDamping(inDeltaTime, inv_effective_mass, inBias, inC, inFrequency, inDamping, mEffectiveMass);
+
112 }
+
+
113
+
+
124 inline void CalculateConstraintPropertiesWithStiffnessAndDamping(float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inStiffness, float inDamping)
+
125 {
+
126 float inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inBody2, inWorldSpaceAxis);
+
127
+
128 if (inv_effective_mass == 0.0f)
+
129 Deactivate();
+
130 else
+
131 mSpringPart.CalculateSpringPropertiesWithStiffnessAndDamping(inDeltaTime, inv_effective_mass, inBias, inC, inStiffness, inDamping, mEffectiveMass);
+
132 }
+
+
133
+
+
135 inline void CalculateConstraintPropertiesWithSettings(float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, const SpringSettings &inSpringSettings)
+
136 {
+
137 float inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inBody2, inWorldSpaceAxis);
+
138
+
139 if (inv_effective_mass == 0.0f)
+
140 Deactivate();
+
141 else if (inSpringSettings.mMode == ESpringMode::FrequencyAndDamping)
+
142 mSpringPart.CalculateSpringPropertiesWithFrequencyAndDamping(inDeltaTime, inv_effective_mass, inBias, inC, inSpringSettings.mFrequency, inSpringSettings.mDamping, mEffectiveMass);
+
143 else
+
144 mSpringPart.CalculateSpringPropertiesWithStiffnessAndDamping(inDeltaTime, inv_effective_mass, inBias, inC, inSpringSettings.mStiffness, inSpringSettings.mDamping, mEffectiveMass);
+
145 }
+
+
146
+
+
148 inline void Deactivate()
+
149 {
+
150 mEffectiveMass = 0.0f;
+
151 mTotalLambda = 0.0f;
+
152 }
+
+
153
+
+
155 inline bool IsActive() const
+
156 {
+
157 return mEffectiveMass != 0.0f;
+
158 }
+
+
159
+
+
164 inline void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
+
165 {
+
166 mTotalLambda *= inWarmStartImpulseRatio;
+
167 ApplyVelocityStep(ioBody1, ioBody2, mTotalLambda);
+
168 }
+
+
169
+
+
176 inline bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
+
177 {
+
178 // Lagrange multiplier is:
+
179 //
+
180 // lambda = -K^-1 (J v + b)
+
181 float lambda = mEffectiveMass * (inWorldSpaceAxis.Dot(ioBody1.GetAngularVelocity() - ioBody2.GetAngularVelocity()) - mSpringPart.GetBias(mTotalLambda));
+
182 float new_lambda = Clamp(mTotalLambda + lambda, inMinLambda, inMaxLambda); // Clamp impulse
+
183 lambda = new_lambda - mTotalLambda; // Lambda potentially got clamped, calculate the new impulse to apply
+
184 mTotalLambda = new_lambda; // Store accumulated impulse
+
185
+
186 return ApplyVelocityStep(ioBody1, ioBody2, lambda);
+
187 }
+
+
188
+
+
190 float GetTotalLambda() const
+
191 {
+
192 return mTotalLambda;
+
193 }
+
+
194
+
+
200 inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) const
+
201 {
+
202 // Only apply position constraint when the constraint is hard, otherwise the velocity bias will fix the constraint
+
203 if (inC != 0.0f && !mSpringPart.IsActive())
+
204 {
+
205 // Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
+
206 //
+
207 // lambda = -K^-1 * beta / dt * C
+
208 //
+
209 // We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
+
210 float lambda = -mEffectiveMass * inBaumgarte * inC;
+
211
+
212 // Directly integrate velocity change for one time step
+
213 //
+
214 // Euler velocity integration:
+
215 // dv = M^-1 P
+
216 //
+
217 // Impulse:
+
218 // P = J^T lambda
+
219 //
+
220 // Euler position integration:
+
221 // x' = x + dv * dt
+
222 //
+
223 // Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
+
224 // Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
+
225 // stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
+
226 // integrate + a position integrate and then discard the velocity change.
+
227 if (ioBody1.IsDynamic())
+
228 ioBody1.SubRotationStep(lambda * mInvI1_Axis);
+
229 if (ioBody2.IsDynamic())
+
230 ioBody2.AddRotationStep(lambda * mInvI2_Axis);
+
231 return true;
+
232 }
+
233
+
234 return false;
+
235 }
+
+
236
+
+
238 void SaveState(StateRecorder &inStream) const
+
239 {
+
240 inStream.Write(mTotalLambda);
+
241 }
+
+
242
+
+ +
245 {
+
246 inStream.Read(mTotalLambda);
+
247 }
+
+
248
+
249private:
+
250 Vec3 mInvI1_Axis;
+
251 Vec3 mInvI2_Axis;
+
252 float mEffectiveMass = 0.0f;
+
253 SpringPart mSpringPart;
+
254 float mTotalLambda = 0.0f;
+
255};
+
+
256
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)
Clamp a value between two values.
Definition Math.h:45
+ + +
@ FrequencyAndDamping
Frequency and damping are specified.
+ +
Definition AngleConstraintPart.h:37
+
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) const
Definition AngleConstraintPart.h:200
+
void CalculateConstraintPropertiesWithStiffnessAndDamping(float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inStiffness, float inDamping)
Definition AngleConstraintPart.h:124
+
void Deactivate()
Deactivate this constraint.
Definition AngleConstraintPart.h:148
+
bool IsActive() const
Check if constraint is active.
Definition AngleConstraintPart.h:155
+
void CalculateConstraintProperties(const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)
Definition AngleConstraintPart.h:81
+
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition AngleConstraintPart.h:244
+
void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
Definition AngleConstraintPart.h:164
+
bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
Definition AngleConstraintPart.h:176
+
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition AngleConstraintPart.h:238
+
void CalculateConstraintPropertiesWithSettings(float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, const SpringSettings &inSpringSettings)
Selects one of the above functions based on the spring settings.
Definition AngleConstraintPart.h:135
+
void CalculateConstraintPropertiesWithFrequencyAndDamping(float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inFrequency, float inDamping)
Definition AngleConstraintPart.h:104
+
float GetTotalLambda() const
Return lagrange multiplier.
Definition AngleConstraintPart.h:190
+
Definition Body.h:35
+
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:249
+
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:61
+
void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Update rotation using an Euler step (using during position integrate & constraint solving)
Definition Body.inl:81
+
Quat GetRotation() const
World space rotation of the body.
Definition Body.h:231
+
void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Definition Body.inl:100
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass (unit: rad/s)
Definition Body.h:153
+
void SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:194
+
JPH_INLINE Vec3 MultiplyWorldSpaceInverseInertiaByVector(QuatArg inBodyRotation, Vec3Arg inV) const
Multiply a vector with the inverse world space inertia tensor ( ). Zero if object is static or kinema...
Definition MotionProperties.inl:76
+
void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:193
+
Class used in other constraint parts to calculate the required bias factor in the lagrange multiplier...
Definition SpringPart.h:14
+
void CalculateSpringPropertiesWithFrequencyAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inFrequency, float inDamping, float &outEffectiveMass)
Definition SpringPart.h:86
+
void CalculateSpringPropertiesWithStiffnessAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inStiffness, float inDamping, float &outEffectiveMass)
Definition SpringPart.h:116
+
float GetBias(float inTotalLambda) const
Get total bias b, including supplied bias and bias for spring: lambda = J v + b.
Definition SpringPart.h:137
+
void CalculateSpringPropertiesWithBias(float inBias)
Definition SpringPart.h:71
+
bool IsActive() const
Returns if this spring is active.
Definition SpringPart.h:131
+
Settings for a linear or angular spring.
Definition SpringSettings.h:23
+
float mStiffness
Definition SpringSettings.h:60
+
float mDamping
Definition SpringSettings.h:67
+
ESpringMode mMode
Definition SpringSettings.h:44
+
float mFrequency
Definition SpringSettings.h:51
+
Definition StateRecorder.h:48
+
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:29
+
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:26
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const
Test if vector is normalized.
Definition Vec3.inl:745
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_architecture_8md.html b/_architecture_8md.html new file mode 100644 index 000000000..b80d51c79 --- /dev/null +++ b/_architecture_8md.html @@ -0,0 +1,114 @@ + + + + + + + +Jolt Physics: Docs/Architecture.md File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Docs/Architecture.md File Reference
+
+
+
+
+ + + + diff --git a/_array_8h.html b/_array_8h.html new file mode 100644 index 000000000..dd41adbab --- /dev/null +++ b/_array_8h.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Jolt/Core/Array.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Array.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  Array< T, Allocator >
 
+ + + +

+Namespaces

namespace  std
 
+
+
+ + + + diff --git a/_array_8h.js b/_array_8h.js new file mode 100644 index 000000000..b88ffe7db --- /dev/null +++ b/_array_8h.js @@ -0,0 +1,4 @@ +var _array_8h = +[ + [ "Array< T, Allocator >", "class_array.html", "class_array" ] +]; \ No newline at end of file diff --git a/_array_8h_source.html b/_array_8h_source.html new file mode 100644 index 000000000..0709bd5aa --- /dev/null +++ b/_array_8h_source.html @@ -0,0 +1,834 @@ + + + + + + + +Jolt Physics: Jolt/Core/Array.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Array.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + +
9
+
10#ifdef JPH_USE_STD_VECTOR
+
11
+ +
13#include <vector>
+ +
15
+ +
17
+
18template <class T, class Allocator = STLAllocator<T>> using Array = std::vector<T, Allocator>;
+
19
+ +
21
+
22#else
+
23
+ +
25
+
34template <class T, class Allocator = STLAllocator<T>>
+
+
35class [[nodiscard]] Array : private Allocator
+
36{
+
37public:
+
38 using value_type = T;
+
39 using size_type = size_t;
+
40 using pointer = T *;
+
41 using const_pointer = const T *;
+
42 using reference = T &;
+
43 using const_reference = const T &;
+
44
+
45 using const_iterator = const T *;
+
46 using iterator = T *;
+
47
+
48private:
+
50 inline void move(pointer inDestination, pointer inSource, size_type inCount)
+
51 {
+
52 if constexpr (std::is_trivially_copyable<T>())
+
53 memmove(inDestination, inSource, inCount * sizeof(T));
+
54 else
+
55 {
+
56 if (inDestination < inSource)
+
57 {
+
58 for (T *destination_end = inDestination + inCount; inDestination < destination_end; ++inDestination, ++inSource)
+
59 {
+
60 ::new (inDestination) T(std::move(*inSource));
+
61 inSource->~T();
+
62 }
+
63 }
+
64 else
+
65 {
+
66 for (T *destination = inDestination + inCount - 1, *source = inSource + inCount - 1; destination >= inDestination; --destination, --source)
+
67 {
+
68 ::new (destination) T(std::move(*source));
+
69 source->~T();
+
70 }
+
71 }
+
72 }
+
73 }
+
74
+
76 inline void reallocate(size_type inNewCapacity)
+
77 {
+
78 JPH_ASSERT(inNewCapacity > 0 && inNewCapacity >= mSize);
+
79
+
80 pointer pointer;
+ +
82 {
+
83 // Reallocate data block
+
84 pointer = get_allocator().reallocate(mElements, mCapacity, inNewCapacity);
+
85 }
+
86 else
+
87 {
+
88 // Copy data to a new location
+
89 pointer = get_allocator().allocate(inNewCapacity);
+
90 if (mElements != nullptr)
+
91 {
+
92 move(pointer, mElements, mSize);
+
93 get_allocator().deallocate(mElements, mCapacity);
+
94 }
+
95 }
+
96 mElements = pointer;
+
97 mCapacity = inNewCapacity;
+
98 }
+
99
+
101 inline void destruct(size_type inStart, size_type inEnd)
+
102 {
+
103 if constexpr (!is_trivially_destructible<T>())
+
104 if (inStart < inEnd)
+
105 for (T *element = mElements + inStart, *element_end = mElements + inEnd; element < element_end; ++element)
+
106 element->~T();
+
107 }
+
108
+
109public:
+
+
111 inline void reserve(size_type inNewSize)
+
112 {
+
113 if (mCapacity < inNewSize)
+
114 reallocate(inNewSize);
+
115 }
+
+
116
+
+
118 inline void resize(size_type inNewSize)
+
119 {
+
120 destruct(inNewSize, mSize);
+
121 reserve(inNewSize);
+
122
+
123 if constexpr (!is_trivially_constructible<T>())
+
124 for (T *element = mElements + mSize, *element_end = mElements + inNewSize; element < element_end; ++element)
+
125 ::new (element) T;
+
126 mSize = inNewSize;
+
127 }
+
+
128
+
+
130 inline void resize(size_type inNewSize, const T &inValue)
+
131 {
+
132 JPH_ASSERT(&inValue < mElements || &inValue >= mElements + mSize, "Can't pass an element from the array to resize");
+
133
+
134 destruct(inNewSize, mSize);
+
135 reserve(inNewSize);
+
136
+
137 for (T *element = mElements + mSize, *element_end = mElements + inNewSize; element < element_end; ++element)
+
138 ::new (element) T(inValue);
+
139 mSize = inNewSize;
+
140 }
+
+
141
+
+
143 inline void clear()
+
144 {
+
145 destruct(0, mSize);
+
146 mSize = 0;
+
147 }
+
+
148
+
149private:
+
151 inline void grow(size_type inAmount = 1)
+
152 {
+
153 size_type min_size = mSize + inAmount;
+
154 if (min_size > mCapacity)
+
155 {
+
156 size_type new_capacity = max(min_size, mCapacity * 2);
+
157 reserve(new_capacity);
+
158 }
+
159 }
+
160
+
162 inline void free()
+
163 {
+
164 get_allocator().deallocate(mElements, mCapacity);
+
165 mElements = nullptr;
+
166 mCapacity = 0;
+
167 }
+
168
+
170 inline void destroy()
+
171 {
+
172 if (mElements != nullptr)
+
173 {
+
174 clear();
+
175 free();
+
176 }
+
177 }
+
178
+
179public:
+
181 template <class Iterator>
+
+
182 inline void assign(Iterator inBegin, Iterator inEnd)
+
183 {
+
184 clear();
+
185 reserve(size_type(std::distance(inBegin, inEnd)));
+
186
+
187 for (Iterator element = inBegin; element != inEnd; ++element)
+
188 ::new (&mElements[mSize++]) T(*element);
+
189 }
+
+
190
+
+
192 inline void assign(std::initializer_list<T> inList)
+
193 {
+
194 clear();
+
195 reserve(size_type(inList.size()));
+
196
+
197 for (const T &v : inList)
+
198 ::new (&mElements[mSize++]) T(v);
+
199 }
+
+
200
+
202 Array() = default;
+
203
+
+
205 explicit inline Array(const Allocator &inAllocator) :
+
206 Allocator(inAllocator)
+
207 {
+
208 }
+
+
209
+
+
211 explicit inline Array(size_type inLength, const Allocator &inAllocator = { }) :
+
212 Allocator(inAllocator)
+
213 {
+
214 resize(inLength);
+
215 }
+
+
216
+
+
218 inline Array(size_type inLength, const T &inValue, const Allocator &inAllocator = { }) :
+
219 Allocator(inAllocator)
+
220 {
+
221 resize(inLength, inValue);
+
222 }
+
+
223
+
+
225 inline Array(std::initializer_list<T> inList, const Allocator &inAllocator = { }) :
+
226 Allocator(inAllocator)
+
227 {
+
228 assign(inList);
+
229 }
+
+
230
+
+
232 inline Array(const_iterator inBegin, const_iterator inEnd, const Allocator &inAllocator = { }) :
+
233 Allocator(inAllocator)
+
234 {
+
235 assign(inBegin, inEnd);
+
236 }
+
+
237
+
+
239 inline Array(const Array<T, Allocator> &inRHS) :
+
240 Allocator(inRHS.get_allocator())
+
241 {
+
242 assign(inRHS.begin(), inRHS.end());
+
243 }
+
+
244
+
+
246 inline Array(Array<T, Allocator> &&inRHS) noexcept :
+
247 Allocator(std::move(inRHS.get_allocator())),
+
248 mSize(inRHS.mSize),
+
249 mCapacity(inRHS.mCapacity),
+
250 mElements(inRHS.mElements)
+
251 {
+
252 inRHS.mSize = 0;
+
253 inRHS.mCapacity = 0;
+
254 inRHS.mElements = nullptr;
+
255 }
+
+
256
+
+
258 inline ~Array()
+
259 {
+
260 destroy();
+
261 }
+
+
262
+
+
264 inline Allocator & get_allocator()
+
265 {
+
266 return *this;
+
267 }
+
+
268
+
+
269 inline const Allocator &get_allocator() const
+
270 {
+
271 return *this;
+
272 }
+
+
273
+
+
275 inline void push_back(const T &inValue)
+
276 {
+
277 JPH_ASSERT(&inValue < mElements || &inValue >= mElements + mSize, "Can't pass an element from the array to push_back");
+
278
+
279 grow();
+
280
+
281 T *element = mElements + mSize++;
+
282 ::new (element) T(inValue);
+
283 }
+
+
284
+
+
285 inline void push_back(T &&inValue)
+
286 {
+
287 grow();
+
288
+
289 T *element = mElements + mSize++;
+
290 ::new (element) T(std::move(inValue));
+
291 }
+
+
292
+
294 template <class... A>
+
+
295 inline T & emplace_back(A &&... inValue)
+
296 {
+
297 grow();
+
298
+
299 T *element = mElements + mSize++;
+
300 ::new (element) T(std::forward<A>(inValue)...);
+
301 return *element;
+
302 }
+
+
303
+
+
305 inline void pop_back()
+
306 {
+
307 JPH_ASSERT(mSize > 0);
+
308 mElements[--mSize].~T();
+
309 }
+
+
310
+
+
312 inline bool empty() const
+
313 {
+
314 return mSize == 0;
+
315 }
+
+
316
+
+
318 inline size_type size() const
+
319 {
+
320 return mSize;
+
321 }
+
+
322
+
+
324 inline size_type capacity() const
+
325 {
+
326 return mCapacity;
+
327 }
+
+
328
+
+ +
331 {
+
332 if (mElements != nullptr)
+
333 {
+
334 if (mSize == 0)
+
335 free();
+
336 else if (mCapacity > mSize)
+
337 reallocate(mSize);
+
338 }
+
339 }
+
+
340
+
+
342 void swap(Array<T, Allocator> &inRHS) noexcept
+
343 {
+
344 std::swap(get_allocator(), inRHS.get_allocator());
+
345 std::swap(mSize, inRHS.mSize);
+
346 std::swap(mCapacity, inRHS.mCapacity);
+
347 std::swap(mElements, inRHS.mElements);
+
348 }
+
+
349
+
350 template <class Iterator>
+
+
351 void insert(const_iterator inPos, Iterator inBegin, Iterator inEnd)
+
352 {
+
353 size_type num_elements = size_type(std::distance(inBegin, inEnd));
+
354 if (num_elements > 0)
+
355 {
+
356 // After grow() inPos may be invalid
+
357 size_type first_element = inPos - mElements;
+
358
+
359 grow(num_elements);
+
360
+
361 T *element_begin = mElements + first_element;
+
362 T *element_end = element_begin + num_elements;
+
363 move(element_end, element_begin, mSize - first_element);
+
364
+
365 for (T *element = element_begin; element < element_end; ++element, ++inBegin)
+
366 ::new (element) T(*inBegin);
+
367
+
368 mSize += num_elements;
+
369 }
+
370 }
+
+
371
+
+
372 void insert(const_iterator inPos, const T &inValue)
+
373 {
+
374 JPH_ASSERT(&inValue < mElements || &inValue >= mElements + mSize, "Can't pass an element from the array to insert");
+
375
+
376 // After grow() inPos may be invalid
+
377 size_type first_element = inPos - mElements;
+
378
+
379 grow();
+
380
+
381 T *element = mElements + first_element;
+
382 move(element + 1, element, mSize - first_element);
+
383
+
384 ::new (element) T(inValue);
+
385 mSize++;
+
386 }
+
+
387
+
+ +
390 {
+
391 size_type p = size_type(inIter - begin());
+
392 JPH_ASSERT(p < mSize);
+
393 mElements[p].~T();
+
394 if (p + 1 < mSize)
+
395 move(mElements + p, mElements + p + 1, mSize - p - 1);
+
396 --mSize;
+
397 }
+
+
398
+
+ +
401 {
+
402 size_type p = size_type(inBegin - begin());
+
403 size_type n = size_type(inEnd - inBegin);
+
404 JPH_ASSERT(inEnd <= end());
+
405 destruct(p, p + n);
+
406 if (p + n < mSize)
+
407 move(mElements + p, mElements + p + n, mSize - p - n);
+
408 mSize -= n;
+
409 }
+
+
410
+
+
412 inline const_iterator begin() const
+
413 {
+
414 return mElements;
+
415 }
+
+
416
+
+
417 inline const_iterator end() const
+
418 {
+
419 return mElements + mSize;
+
420 }
+
+
421
+
+
422 inline const_iterator cbegin() const
+
423 {
+
424 return mElements;
+
425 }
+
+
426
+
+
427 inline const_iterator cend() const
+
428 {
+
429 return mElements + mSize;
+
430 }
+
+
431
+
+ +
433 {
+
434 return mElements;
+
435 }
+
+
436
+
+
437 inline iterator end()
+
438 {
+
439 return mElements + mSize;
+
440 }
+
+
441
+
+
442 inline const T * data() const
+
443 {
+
444 return mElements;
+
445 }
+
+
446
+
+
447 inline T * data()
+
448 {
+
449 return mElements;
+
450 }
+
+
451
+
+
453 inline T & operator [] (size_type inIdx)
+
454 {
+
455 JPH_ASSERT(inIdx < mSize);
+
456 return mElements[inIdx];
+
457 }
+
+
458
+
+
459 inline const T & operator [] (size_type inIdx) const
+
460 {
+
461 JPH_ASSERT(inIdx < mSize);
+
462 return mElements[inIdx];
+
463 }
+
+
464
+
+
466 inline T & at(size_type inIdx)
+
467 {
+
468 JPH_ASSERT(inIdx < mSize);
+
469 return mElements[inIdx];
+
470 }
+
+
471
+
+
472 inline const T & at(size_type inIdx) const
+
473 {
+
474 JPH_ASSERT(inIdx < mSize);
+
475 return mElements[inIdx];
+
476 }
+
+
477
+
+
479 inline const T & front() const
+
480 {
+
481 JPH_ASSERT(mSize > 0);
+
482 return mElements[0];
+
483 }
+
+
484
+
+
485 inline T & front()
+
486 {
+
487 JPH_ASSERT(mSize > 0);
+
488 return mElements[0];
+
489 }
+
+
490
+
+
492 inline const T & back() const
+
493 {
+
494 JPH_ASSERT(mSize > 0);
+
495 return mElements[mSize - 1];
+
496 }
+
+
497
+
+
498 inline T & back()
+
499 {
+
500 JPH_ASSERT(mSize > 0);
+
501 return mElements[mSize - 1];
+
502 }
+
+
503
+
+
505 Array<T, Allocator> & operator = (const Array<T, Allocator> &inRHS)
+
506 {
+
507 if (static_cast<const void *>(this) != static_cast<const void *>(&inRHS))
+
508 assign(inRHS.begin(), inRHS.end());
+
509
+
510 return *this;
+
511 }
+
+
512
+
+
514 Array<T, Allocator> & operator = (Array<T, Allocator> &&inRHS) noexcept
+
515 {
+
516 if (static_cast<const void *>(this) != static_cast<const void *>(&inRHS))
+
517 {
+
518 destroy();
+
519
+
520 get_allocator() = std::move(inRHS.get_allocator());
+
521
+
522 mSize = inRHS.mSize;
+
523 mCapacity = inRHS.mCapacity;
+
524 mElements = inRHS.mElements;
+
525
+
526 inRHS.mSize = 0;
+
527 inRHS.mCapacity = 0;
+
528 inRHS.mElements = nullptr;
+
529 }
+
530
+
531 return *this;
+
532 }
+
+
533
+
+
535 Array<T, Allocator> & operator = (std::initializer_list<T> inRHS)
+
536 {
+
537 assign(inRHS);
+
538
+
539 return *this;
+
540 }
+
+
541
+
+
543 bool operator == (const Array<T, Allocator> &inRHS) const
+
544 {
+
545 if (mSize != inRHS.mSize)
+
546 return false;
+
547 for (size_type i = 0; i < mSize; ++i)
+
548 if (!(mElements[i] == inRHS.mElements[i]))
+
549 return false;
+
550 return true;
+
551 }
+
+
552
+
+
553 bool operator != (const Array<T, Allocator> &inRHS) const
+
554 {
+
555 if (mSize != inRHS.mSize)
+
556 return true;
+
557 for (size_type i = 0; i < mSize; ++i)
+
558 if (mElements[i] != inRHS.mElements[i])
+
559 return true;
+
560 return false;
+
561 }
+
+
562
+
563private:
+
564 size_type mSize = 0;
+
565 size_type mCapacity = 0;
+
566 T * mElements = nullptr;
+
567};
+
+
568
+ +
570
+
571JPH_SUPPRESS_WARNING_PUSH
+
572JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat")
+
573
+
+
574namespace std
+
575{
+
577 template <class T, class Allocator>
+
578 struct hash<JPH::Array<T, Allocator>>
+
579 {
+
580 size_t operator () (const JPH::Array<T, Allocator> &inRHS) const
+
581 {
+
582 std::size_t ret = 0;
+
583
+
584 // Hash length first
+
585 JPH::HashCombine(ret, inRHS.size());
+
586
+
587 // Then hash elements
+
588 for (const T &t : inRHS)
+
589 JPH::HashCombine(ret, t);
+
590
+
591 return ret;
+
592 }
+
593 };
+
594}
+
+
595
+
596JPH_SUPPRESS_WARNING_POP
+
597
+
598#endif // JPH_USE_STD_VECTOR
+
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_CLANG_SUPPRESS_WARNING(w)
Definition Core.h:263
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
Definition Array.h:36
+
void resize(size_type inNewSize)
Resize array to new length.
Definition Array.h:118
+
Array()=default
Default constructor.
+
void push_back(T &&inValue)
Definition Array.h:285
+
void pop_back()
Remove element from the back of the array.
Definition Array.h:305
+
bool empty() const
Returns true if there are no elements in the array.
Definition Array.h:312
+
size_type capacity() const
Returns maximum amount of elements the array can hold.
Definition Array.h:324
+
Array(const Allocator &inAllocator)
Constructor with allocator.
Definition Array.h:205
+
size_t size_type
Definition Array.h:39
+
~Array()
Destruct all elements.
Definition Array.h:258
+
const T & back() const
Last element in the array.
Definition Array.h:492
+
const T * const_iterator
Definition Array.h:45
+
T * data()
Definition Array.h:447
+
const_iterator begin() const
Iterators.
Definition Array.h:412
+
const_iterator cbegin() const
Definition Array.h:422
+
void insert(const_iterator inPos, Iterator inBegin, Iterator inEnd)
Definition Array.h:351
+
iterator end()
Definition Array.h:437
+
void erase(const_iterator inBegin, const_iterator inEnd)
Remove multiple element from the array.
Definition Array.h:400
+
void resize(size_type inNewSize, const T &inValue)
Resize array to new length and initialize all elements with inValue.
Definition Array.h:130
+
iterator begin()
Definition Array.h:432
+
const T * const_pointer
Definition Array.h:41
+
void swap(Array< T, Allocator > &inRHS) noexcept
Swap the contents of two arrays.
Definition Array.h:342
+
Array(size_type inLength, const T &inValue, const Allocator &inAllocator={ })
Constructor with length and value.
Definition Array.h:218
+
const T * data() const
Definition Array.h:442
+
Array(std::initializer_list< T > inList, const Allocator &inAllocator={ })
Constructor from initializer list.
Definition Array.h:225
+
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
Array(Array< T, Allocator > &&inRHS) noexcept
Move constructor.
Definition Array.h:246
+
void shrink_to_fit()
Reduce the capacity of the array to match its size.
Definition Array.h:330
+
void clear()
Destruct all elements and set length to zero.
Definition Array.h:143
+
const_iterator cend() const
Definition Array.h:427
+
const Allocator & get_allocator() const
Definition Array.h:269
+
T & emplace_back(A &&... inValue)
Construct element at the back of the array.
Definition Array.h:295
+
T * pointer
Definition Array.h:40
+
T * iterator
Definition Array.h:46
+
Array(size_type inLength, const Allocator &inAllocator={ })
Constructor with length.
Definition Array.h:211
+
void push_back(const T &inValue)
Add element to the back of the array.
Definition Array.h:275
+
void insert(const_iterator inPos, const T &inValue)
Definition Array.h:372
+
T & back()
Definition Array.h:498
+
const T & const_reference
Definition Array.h:43
+
T & at(size_type inIdx)
Access element.
Definition Array.h:466
+
const T & front() const
First element in the array.
Definition Array.h:479
+
void reserve(size_type inNewSize)
Reserve array space.
Definition Array.h:111
+
void assign(Iterator inBegin, Iterator inEnd)
Replace the contents of this array with inBegin .. inEnd.
Definition Array.h:182
+
T value_type
Definition Array.h:38
+
Allocator & get_allocator()
Get the allocator.
Definition Array.h:264
+
void erase(const_iterator inIter)
Remove one element from the array.
Definition Array.h:389
+
const_iterator end() const
Definition Array.h:417
+
T & front()
Definition Array.h:485
+
T & reference
Definition Array.h:42
+
const T & at(size_type inIdx) const
Definition Array.h:472
+
Array(const_iterator inBegin, const_iterator inEnd, const Allocator &inAllocator={ })
Constructor from iterator.
Definition Array.h:232
+
void assign(std::initializer_list< T > inList)
Replace the contents of this array with inList.
Definition Array.h:192
+
Array(const Array< T, Allocator > &inRHS)
Copy constructor.
Definition Array.h:239
+
Definition Array.h:575
+
Default implementation of AllocatorHasReallocate which tells if an allocator has a reallocate functio...
Definition STLAllocator.h:10
+
+
+ + + + diff --git a/_atomics_8h.html b/_atomics_8h.html new file mode 100644 index 000000000..ccbf1dfdd --- /dev/null +++ b/_atomics_8h.html @@ -0,0 +1,208 @@ + + + + + + + +Jolt Physics: Jolt/Core/Atomics.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Atomics.h File Reference
+
+
+
#include <atomic>
+
+

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<class T >
bool AtomicMin (atomic< T > &ioAtomic, const T inValue, const memory_order inMemoryOrder=memory_order_seq_cst)
 Atomically compute the min(ioAtomic, inValue) and store it in ioAtomic, returns true if value was updated.
 
template<class T >
bool AtomicMax (atomic< T > &ioAtomic, const T inValue, const memory_order inMemoryOrder=memory_order_seq_cst)
 Atomically compute the max(ioAtomic, inValue) and store it in ioAtomic, returns true if value was updated.
 
+

Function Documentation

+ +

◆ AtomicMax()

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool AtomicMax (atomic< T > & ioAtomic,
const T inValue,
const memory_order inMemoryOrder = memory_order_seq_cst 
)
+
+ +

Atomically compute the max(ioAtomic, inValue) and store it in ioAtomic, returns true if value was updated.

+ +
+
+ +

◆ AtomicMin()

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool AtomicMin (atomic< T > & ioAtomic,
const T inValue,
const memory_order inMemoryOrder = memory_order_seq_cst 
)
+
+ +

Atomically compute the min(ioAtomic, inValue) and store it in ioAtomic, returns true if value was updated.

+ +
+
+
+
+ + + + diff --git a/_atomics_8h.js b/_atomics_8h.js new file mode 100644 index 000000000..eb4e17031 --- /dev/null +++ b/_atomics_8h.js @@ -0,0 +1,5 @@ +var _atomics_8h = +[ + [ "AtomicMax", "_atomics_8h.html#adda37c39156e9dc280788421bf35f7bf", null ], + [ "AtomicMin", "_atomics_8h.html#af71f53f1d43bb24611bd60d7c634a207", null ] +]; \ No newline at end of file diff --git a/_atomics_8h_source.html b/_atomics_8h_source.html new file mode 100644 index 000000000..32ecc0d21 --- /dev/null +++ b/_atomics_8h_source.html @@ -0,0 +1,171 @@ + + + + + + + +Jolt Physics: Jolt/Core/Atomics.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Atomics.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#include <atomic>
+ +
10
+ +
12
+
13// Things we're using from STL
+
14using std::atomic;
+
15using std::memory_order;
+
16using std::memory_order_relaxed;
+
17using std::memory_order_acquire;
+
18using std::memory_order_release;
+
19using std::memory_order_acq_rel;
+
20using std::memory_order_seq_cst;
+
21
+
23template <class T>
+
+
24bool AtomicMin(atomic<T> &ioAtomic, const T inValue, const memory_order inMemoryOrder = memory_order_seq_cst)
+
25{
+
26 T cur_value = ioAtomic.load(memory_order_relaxed);
+
27 while (cur_value > inValue)
+
28 if (ioAtomic.compare_exchange_weak(cur_value, inValue, inMemoryOrder))
+
29 return true;
+
30 return false;
+
31}
+
+
32
+
34template <class T>
+
+
35bool AtomicMax(atomic<T> &ioAtomic, const T inValue, const memory_order inMemoryOrder = memory_order_seq_cst)
+
36{
+
37 T cur_value = ioAtomic.load(memory_order_relaxed);
+
38 while (cur_value < inValue)
+
39 if (ioAtomic.compare_exchange_weak(cur_value, inValue, inMemoryOrder))
+
40 return true;
+
41 return false;
+
42}
+
+
43
+ +
bool AtomicMax(atomic< T > &ioAtomic, const T inValue, const memory_order inMemoryOrder=memory_order_seq_cst)
Atomically compute the max(ioAtomic, inValue) and store it in ioAtomic, returns true if value was upd...
Definition Atomics.h:35
+
bool AtomicMin(atomic< T > &ioAtomic, const T inValue, const memory_order inMemoryOrder=memory_order_seq_cst)
Atomically compute the min(ioAtomic, inValue) and store it in ioAtomic, returns true if value was upd...
Definition Atomics.h:24
+
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
+
+ + + + diff --git a/_axis_constraint_part_8h.html b/_axis_constraint_part_8h.html new file mode 100644 index 000000000..1a37c1a2c --- /dev/null +++ b/_axis_constraint_part_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/AxisConstraintPart.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AxisConstraintPart.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  AxisConstraintPart
 
+
+
+ + + + diff --git a/_axis_constraint_part_8h.js b/_axis_constraint_part_8h.js new file mode 100644 index 000000000..571ffb375 --- /dev/null +++ b/_axis_constraint_part_8h.js @@ -0,0 +1,4 @@ +var _axis_constraint_part_8h = +[ + [ "AxisConstraintPart", "class_axis_constraint_part.html", "class_axis_constraint_part" ] +]; \ No newline at end of file diff --git a/_axis_constraint_part_8h_source.html b/_axis_constraint_part_8h_source.html new file mode 100644 index 000000000..6c0b322bd --- /dev/null +++ b/_axis_constraint_part_8h_source.html @@ -0,0 +1,809 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/AxisConstraintPart.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AxisConstraintPart.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
+ + + + + +
12
+ +
14
+
+ +
43{
+
45 template <EMotionType Type1, EMotionType Type2>
+
46 JPH_INLINE bool ApplyVelocityStep(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inLambda) const
+
47 {
+
48 // Apply impulse if delta is not zero
+
49 if (inLambda != 0.0f)
+
50 {
+
51 // Calculate velocity change due to constraint
+
52 //
+
53 // Impulse:
+
54 // P = J^T lambda
+
55 //
+
56 // Euler velocity integration:
+
57 // v' = v + M^-1 P
+
58 if constexpr (Type1 == EMotionType::Dynamic)
+
59 {
+
60 ioMotionProperties1->SubLinearVelocityStep((inLambda * inInvMass1) * inWorldSpaceAxis);
+
61 ioMotionProperties1->SubAngularVelocityStep(inLambda * Vec3::sLoadFloat3Unsafe(mInvI1_R1PlusUxAxis));
+
62 }
+
63 if constexpr (Type2 == EMotionType::Dynamic)
+
64 {
+
65 ioMotionProperties2->AddLinearVelocityStep((inLambda * inInvMass2) * inWorldSpaceAxis);
+
66 ioMotionProperties2->AddAngularVelocityStep(inLambda * Vec3::sLoadFloat3Unsafe(mInvI2_R2xAxis));
+
67 }
+
68 return true;
+
69 }
+
70
+
71 return false;
+
72 }
+
73
+
75 template <EMotionType Type1, EMotionType Type2>
+
76 JPH_INLINE float TemplatedCalculateInverseEffectiveMass(float inInvMass1, Mat44Arg inInvI1, Vec3Arg inR1PlusU, float inInvMass2, Mat44Arg inInvI2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis)
+
77 {
+
78 JPH_ASSERT(inWorldSpaceAxis.IsNormalized(1.0e-5f));
+
79
+
80 // Calculate properties used below
+
81 Vec3 r1_plus_u_x_axis;
+
82 if constexpr (Type1 != EMotionType::Static)
+
83 {
+
84 r1_plus_u_x_axis = inR1PlusU.Cross(inWorldSpaceAxis);
+
85 r1_plus_u_x_axis.StoreFloat3(&mR1PlusUxAxis);
+
86 }
+
87 else
+
88 {
+
89 #ifdef JPH_DEBUG
+
90 Vec3::sNaN().StoreFloat3(&mR1PlusUxAxis);
+
91 #endif
+
92 }
+
93
+
94 Vec3 r2_x_axis;
+
95 if constexpr (Type2 != EMotionType::Static)
+
96 {
+
97 r2_x_axis = inR2.Cross(inWorldSpaceAxis);
+
98 r2_x_axis.StoreFloat3(&mR2xAxis);
+
99 }
+
100 else
+
101 {
+
102 #ifdef JPH_DEBUG
+
103 Vec3::sNaN().StoreFloat3(&mR2xAxis);
+
104 #endif
+
105 }
+
106
+
107 // Calculate inverse effective mass: K = J M^-1 J^T
+
108 float inv_effective_mass;
+
109
+
110 if constexpr (Type1 == EMotionType::Dynamic)
+
111 {
+
112 Vec3 invi1_r1_plus_u_x_axis = inInvI1.Multiply3x3(r1_plus_u_x_axis);
+
113 invi1_r1_plus_u_x_axis.StoreFloat3(&mInvI1_R1PlusUxAxis);
+
114 inv_effective_mass = inInvMass1 + invi1_r1_plus_u_x_axis.Dot(r1_plus_u_x_axis);
+
115 }
+
116 else
+
117 {
+
118 (void)r1_plus_u_x_axis; // Fix compiler warning: Not using this (it's not calculated either)
+
119 JPH_IF_DEBUG(Vec3::sNaN().StoreFloat3(&mInvI1_R1PlusUxAxis);)
+
120 inv_effective_mass = 0.0f;
+
121 }
+
122
+
123 if constexpr (Type2 == EMotionType::Dynamic)
+
124 {
+
125 Vec3 invi2_r2_x_axis = inInvI2.Multiply3x3(r2_x_axis);
+
126 invi2_r2_x_axis.StoreFloat3(&mInvI2_R2xAxis);
+
127 inv_effective_mass += inInvMass2 + invi2_r2_x_axis.Dot(r2_x_axis);
+
128 }
+
129 else
+
130 {
+
131 (void)r2_x_axis; // Fix compiler warning: Not using this (it's not calculated either)
+
132 JPH_IF_DEBUG(Vec3::sNaN().StoreFloat3(&mInvI2_R2xAxis);)
+
133 }
+
134
+
135 return inv_effective_mass;
+
136 }
+
137
+
139 JPH_INLINE float CalculateInverseEffectiveMass(const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis)
+
140 {
+
141 // Dispatch to the correct templated form
+
142 switch (inBody1.GetMotionType())
+
143 {
+ +
145 {
+
146 const MotionProperties *mp1 = inBody1.GetMotionPropertiesUnchecked();
+
147 float inv_m1 = mp1->GetInverseMass();
+
148 Mat44 inv_i1 = inBody1.GetInverseInertia();
+
149 switch (inBody2.GetMotionType())
+
150 {
+ +
152 return TemplatedCalculateInverseEffectiveMass<EMotionType::Dynamic, EMotionType::Dynamic>(inv_m1, inv_i1, inR1PlusU, inBody2.GetMotionPropertiesUnchecked()->GetInverseMass(), inBody2.GetInverseInertia(), inR2, inWorldSpaceAxis);
+
153
+ +
155 return TemplatedCalculateInverseEffectiveMass<EMotionType::Dynamic, EMotionType::Kinematic>(inv_m1, inv_i1, inR1PlusU, 0 /* Will not be used */, Mat44() /* Will not be used */, inR2, inWorldSpaceAxis);
+
156
+ +
158 return TemplatedCalculateInverseEffectiveMass<EMotionType::Dynamic, EMotionType::Static>(inv_m1, inv_i1, inR1PlusU, 0 /* Will not be used */, Mat44() /* Will not be used */, inR2, inWorldSpaceAxis);
+
159
+
160 default:
+
161 break;
+
162 }
+
163 break;
+
164 }
+
165
+ +
167 JPH_ASSERT(inBody2.IsDynamic());
+
168 return TemplatedCalculateInverseEffectiveMass<EMotionType::Kinematic, EMotionType::Dynamic>(0 /* Will not be used */, Mat44() /* Will not be used */, inR1PlusU, inBody2.GetMotionPropertiesUnchecked()->GetInverseMass(), inBody2.GetInverseInertia(), inR2, inWorldSpaceAxis);
+
169
+ +
171 JPH_ASSERT(inBody2.IsDynamic());
+
172 return TemplatedCalculateInverseEffectiveMass<EMotionType::Static, EMotionType::Dynamic>(0 /* Will not be used */, Mat44() /* Will not be used */, inR1PlusU, inBody2.GetMotionPropertiesUnchecked()->GetInverseMass(), inBody2.GetInverseInertia(), inR2, inWorldSpaceAxis);
+
173
+
174 default:
+
175 break;
+
176 }
+
177
+
178 JPH_ASSERT(false);
+
179 return 0.0f;
+
180 }
+
181
+
183 JPH_INLINE float CalculateInverseEffectiveMassWithMassOverride(const Body &inBody1, float inInvMass1, float inInvInertiaScale1, Vec3Arg inR1PlusU, const Body &inBody2, float inInvMass2, float inInvInertiaScale2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis)
+
184 {
+
185 // Dispatch to the correct templated form
+
186 switch (inBody1.GetMotionType())
+
187 {
+ +
189 {
+
190 Mat44 inv_i1 = inInvInertiaScale1 * inBody1.GetInverseInertia();
+
191 switch (inBody2.GetMotionType())
+
192 {
+ +
194 return TemplatedCalculateInverseEffectiveMass<EMotionType::Dynamic, EMotionType::Dynamic>(inInvMass1, inv_i1, inR1PlusU, inInvMass2, inInvInertiaScale2 * inBody2.GetInverseInertia(), inR2, inWorldSpaceAxis);
+
195
+ +
197 return TemplatedCalculateInverseEffectiveMass<EMotionType::Dynamic, EMotionType::Kinematic>(inInvMass1, inv_i1, inR1PlusU, 0 /* Will not be used */, Mat44() /* Will not be used */, inR2, inWorldSpaceAxis);
+
198
+ +
200 return TemplatedCalculateInverseEffectiveMass<EMotionType::Dynamic, EMotionType::Static>(inInvMass1, inv_i1, inR1PlusU, 0 /* Will not be used */, Mat44() /* Will not be used */, inR2, inWorldSpaceAxis);
+
201
+
202 default:
+
203 break;
+
204 }
+
205 break;
+
206 }
+
207
+ +
209 JPH_ASSERT(inBody2.IsDynamic());
+
210 return TemplatedCalculateInverseEffectiveMass<EMotionType::Kinematic, EMotionType::Dynamic>(0 /* Will not be used */, Mat44() /* Will not be used */, inR1PlusU, inInvMass2, inInvInertiaScale2 * inBody2.GetInverseInertia(), inR2, inWorldSpaceAxis);
+
211
+ +
213 JPH_ASSERT(inBody2.IsDynamic());
+
214 return TemplatedCalculateInverseEffectiveMass<EMotionType::Static, EMotionType::Dynamic>(0 /* Will not be used */, Mat44() /* Will not be used */, inR1PlusU, inInvMass2, inInvInertiaScale2 * inBody2.GetInverseInertia(), inR2, inWorldSpaceAxis);
+
215
+
216 default:
+
217 break;
+
218 }
+
219
+
220 JPH_ASSERT(false);
+
221 return 0.0f;
+
222 }
+
223
+
224public:
+
226 template <EMotionType Type1, EMotionType Type2>
+
+
227 JPH_INLINE void TemplatedCalculateConstraintProperties(float inInvMass1, Mat44Arg inInvI1, Vec3Arg inR1PlusU, float inInvMass2, Mat44Arg inInvI2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias = 0.0f)
+
228 {
+
229 float inv_effective_mass = TemplatedCalculateInverseEffectiveMass<Type1, Type2>(inInvMass1, inInvI1, inR1PlusU, inInvMass2, inInvI2, inR2, inWorldSpaceAxis);
+
230
+
231 if (inv_effective_mass == 0.0f)
+
232 Deactivate();
+
233 else
+
234 {
+
235 mEffectiveMass = 1.0f / inv_effective_mass;
+
236 mSpringPart.CalculateSpringPropertiesWithBias(inBias);
+
237 }
+
238
+
239 JPH_DET_LOG("TemplatedCalculateConstraintProperties: invM1: " << inInvMass1 << " invI1: " << inInvI1 << " r1PlusU: " << inR1PlusU << " invM2: " << inInvMass2 << " invI2: " << inInvI2 << " r2: " << inR2 << " bias: " << inBias << " r1PlusUxAxis: " << mR1PlusUxAxis << " r2xAxis: " << mR2xAxis << " invI1_R1PlusUxAxis: " << mInvI1_R1PlusUxAxis << " invI2_R2xAxis: " << mInvI2_R2xAxis << " effectiveMass: " << mEffectiveMass << " totalLambda: " << mTotalLambda);
+
240 }
+
+
241
+
+
249 inline void CalculateConstraintProperties(const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias = 0.0f)
+
250 {
+
251 float inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inR1PlusU, inBody2, inR2, inWorldSpaceAxis);
+
252
+
253 if (inv_effective_mass == 0.0f)
+
254 Deactivate();
+
255 else
+
256 {
+
257 mEffectiveMass = 1.0f / inv_effective_mass;
+
258 mSpringPart.CalculateSpringPropertiesWithBias(inBias);
+
259 }
+
260 }
+
+
261
+
+
273 inline void CalculateConstraintPropertiesWithMassOverride(const Body &inBody1, float inInvMass1, float inInvInertiaScale1, Vec3Arg inR1PlusU, const Body &inBody2, float inInvMass2, float inInvInertiaScale2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias = 0.0f)
+
274 {
+
275 float inv_effective_mass = CalculateInverseEffectiveMassWithMassOverride(inBody1, inInvMass1, inInvInertiaScale1, inR1PlusU, inBody2, inInvMass2, inInvInertiaScale2, inR2, inWorldSpaceAxis);
+
276
+
277 if (inv_effective_mass == 0.0f)
+
278 Deactivate();
+
279 else
+
280 {
+
281 mEffectiveMass = 1.0f / inv_effective_mass;
+
282 mSpringPart.CalculateSpringPropertiesWithBias(inBias);
+
283 }
+
284 }
+
+
285
+
+
297 inline void CalculateConstraintPropertiesWithFrequencyAndDamping(float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inFrequency, float inDamping)
+
298 {
+
299 float inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inR1PlusU, inBody2, inR2, inWorldSpaceAxis);
+
300
+
301 if (inv_effective_mass == 0.0f)
+
302 Deactivate();
+
303 else
+
304 mSpringPart.CalculateSpringPropertiesWithFrequencyAndDamping(inDeltaTime, inv_effective_mass, inBias, inC, inFrequency, inDamping, mEffectiveMass);
+
305 }
+
+
306
+
+
318 inline void CalculateConstraintPropertiesWithStiffnessAndDamping(float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inStiffness, float inDamping)
+
319 {
+
320 float inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inR1PlusU, inBody2, inR2, inWorldSpaceAxis);
+
321
+
322 if (inv_effective_mass == 0.0f)
+
323 Deactivate();
+
324 else
+
325 mSpringPart.CalculateSpringPropertiesWithStiffnessAndDamping(inDeltaTime, inv_effective_mass, inBias, inC, inStiffness, inDamping, mEffectiveMass);
+
326 }
+
+
327
+
+
329 inline void CalculateConstraintPropertiesWithSettings(float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, const SpringSettings &inSpringSettings)
+
330 {
+
331 float inv_effective_mass = CalculateInverseEffectiveMass(inBody1, inR1PlusU, inBody2, inR2, inWorldSpaceAxis);
+
332
+
333 if (inv_effective_mass == 0.0f)
+
334 Deactivate();
+
335 else if (inSpringSettings.mMode == ESpringMode::FrequencyAndDamping)
+
336 mSpringPart.CalculateSpringPropertiesWithFrequencyAndDamping(inDeltaTime, inv_effective_mass, inBias, inC, inSpringSettings.mFrequency, inSpringSettings.mDamping, mEffectiveMass);
+
337 else
+
338 mSpringPart.CalculateSpringPropertiesWithStiffnessAndDamping(inDeltaTime, inv_effective_mass, inBias, inC, inSpringSettings.mStiffness, inSpringSettings.mDamping, mEffectiveMass);
+
339 }
+
+
340
+
+
342 inline void Deactivate()
+
343 {
+
344 mEffectiveMass = 0.0f;
+
345 mTotalLambda = 0.0f;
+
346 }
+
+
347
+
+
349 inline bool IsActive() const
+
350 {
+
351 return mEffectiveMass != 0.0f;
+
352 }
+
+
353
+
355 template <EMotionType Type1, EMotionType Type2>
+
+
356 inline void TemplatedWarmStart(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inWarmStartImpulseRatio)
+
357 {
+
358 mTotalLambda *= inWarmStartImpulseRatio;
+
359
+
360 ApplyVelocityStep<Type1, Type2>(ioMotionProperties1, inInvMass1, ioMotionProperties2, inInvMass2, inWorldSpaceAxis, mTotalLambda);
+
361 }
+
+
362
+
+
368 inline void WarmStart(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inWarmStartImpulseRatio)
+
369 {
+
370 EMotionType motion_type1 = ioBody1.GetMotionType();
+
371 MotionProperties *motion_properties1 = ioBody1.GetMotionPropertiesUnchecked();
+
372
+
373 EMotionType motion_type2 = ioBody2.GetMotionType();
+
374 MotionProperties *motion_properties2 = ioBody2.GetMotionPropertiesUnchecked();
+
375
+
376 // Dispatch to the correct templated form
+
377 // Note: Warm starting doesn't differentiate between kinematic/static bodies so we handle both as static bodies
+
378 if (motion_type1 == EMotionType::Dynamic)
+
379 {
+
380 if (motion_type2 == EMotionType::Dynamic)
+
381 TemplatedWarmStart<EMotionType::Dynamic, EMotionType::Dynamic>(motion_properties1, motion_properties1->GetInverseMass(), motion_properties2, motion_properties2->GetInverseMass(), inWorldSpaceAxis, inWarmStartImpulseRatio);
+
382 else
+
383 TemplatedWarmStart<EMotionType::Dynamic, EMotionType::Static>(motion_properties1, motion_properties1->GetInverseMass(), motion_properties2, 0.0f /* Unused */, inWorldSpaceAxis, inWarmStartImpulseRatio);
+
384 }
+
385 else
+
386 {
+
387 JPH_ASSERT(motion_type2 == EMotionType::Dynamic);
+
388 TemplatedWarmStart<EMotionType::Static, EMotionType::Dynamic>(motion_properties1, 0.0f /* Unused */, motion_properties2, motion_properties2->GetInverseMass(), inWorldSpaceAxis, inWarmStartImpulseRatio);
+
389 }
+
390 }
+
+
391
+
393 template <EMotionType Type1, EMotionType Type2>
+
+
394 JPH_INLINE float TemplatedSolveVelocityConstraintGetTotalLambda(const MotionProperties *ioMotionProperties1, const MotionProperties *ioMotionProperties2, Vec3Arg inWorldSpaceAxis) const
+
395 {
+
396 // Calculate jacobian multiplied by linear velocity
+
397 float jv;
+
398 if constexpr (Type1 != EMotionType::Static && Type2 != EMotionType::Static)
+
399 jv = inWorldSpaceAxis.Dot(ioMotionProperties1->GetLinearVelocity() - ioMotionProperties2->GetLinearVelocity());
+
400 else if constexpr (Type1 != EMotionType::Static)
+
401 jv = inWorldSpaceAxis.Dot(ioMotionProperties1->GetLinearVelocity());
+
402 else if constexpr (Type2 != EMotionType::Static)
+
403 jv = inWorldSpaceAxis.Dot(-ioMotionProperties2->GetLinearVelocity());
+
404 else
+
405 JPH_ASSERT(false); // Static vs static is nonsensical!
+
406
+
407 // Calculate jacobian multiplied by angular velocity
+
408 if constexpr (Type1 != EMotionType::Static)
+
409 jv += Vec3::sLoadFloat3Unsafe(mR1PlusUxAxis).Dot(ioMotionProperties1->GetAngularVelocity());
+
410 if constexpr (Type2 != EMotionType::Static)
+
411 jv -= Vec3::sLoadFloat3Unsafe(mR2xAxis).Dot(ioMotionProperties2->GetAngularVelocity());
+
412
+
413 // Lagrange multiplier is:
+
414 //
+
415 // lambda = -K^-1 (J v + b)
+
416 float lambda = mEffectiveMass * (jv - mSpringPart.GetBias(mTotalLambda));
+
417
+
418 // Return the total accumulated lambda
+
419 return mTotalLambda + lambda;
+
420 }
+
+
421
+
423 template <EMotionType Type1, EMotionType Type2>
+
+
424 JPH_INLINE bool TemplatedSolveVelocityConstraintApplyLambda(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inTotalLambda)
+
425 {
+
426 float delta_lambda = inTotalLambda - mTotalLambda; // Calculate change in lambda
+
427 mTotalLambda = inTotalLambda; // Store accumulated impulse
+
428
+
429 return ApplyVelocityStep<Type1, Type2>(ioMotionProperties1, inInvMass1, ioMotionProperties2, inInvMass2, inWorldSpaceAxis, delta_lambda);
+
430 }
+
+
431
+
433 template <EMotionType Type1, EMotionType Type2>
+
+
434 inline bool TemplatedSolveVelocityConstraint(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
+
435 {
+
436 float total_lambda = TemplatedSolveVelocityConstraintGetTotalLambda<Type1, Type2>(ioMotionProperties1, ioMotionProperties2, inWorldSpaceAxis);
+
437
+
438 // Clamp impulse to specified range
+
439 total_lambda = Clamp(total_lambda, inMinLambda, inMaxLambda);
+
440
+
441 return TemplatedSolveVelocityConstraintApplyLambda<Type1, Type2>(ioMotionProperties1, inInvMass1, ioMotionProperties2, inInvMass2, inWorldSpaceAxis, total_lambda);
+
442 }
+
+
443
+
+
450 inline bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
+
451 {
+
452 EMotionType motion_type1 = ioBody1.GetMotionType();
+
453 MotionProperties *motion_properties1 = ioBody1.GetMotionPropertiesUnchecked();
+
454
+
455 EMotionType motion_type2 = ioBody2.GetMotionType();
+
456 MotionProperties *motion_properties2 = ioBody2.GetMotionPropertiesUnchecked();
+
457
+
458 // Dispatch to the correct templated form
+
459 switch (motion_type1)
+
460 {
+ +
462 switch (motion_type2)
+
463 {
+ +
465 return TemplatedSolveVelocityConstraint<EMotionType::Dynamic, EMotionType::Dynamic>(motion_properties1, motion_properties1->GetInverseMass(), motion_properties2, motion_properties2->GetInverseMass(), inWorldSpaceAxis, inMinLambda, inMaxLambda);
+
466
+ +
468 return TemplatedSolveVelocityConstraint<EMotionType::Dynamic, EMotionType::Kinematic>(motion_properties1, motion_properties1->GetInverseMass(), motion_properties2, 0.0f /* Unused */, inWorldSpaceAxis, inMinLambda, inMaxLambda);
+
469
+ +
471 return TemplatedSolveVelocityConstraint<EMotionType::Dynamic, EMotionType::Static>(motion_properties1, motion_properties1->GetInverseMass(), motion_properties2, 0.0f /* Unused */, inWorldSpaceAxis, inMinLambda, inMaxLambda);
+
472
+
473 default:
+
474 JPH_ASSERT(false);
+
475 break;
+
476 }
+
477 break;
+
478
+ +
480 JPH_ASSERT(motion_type2 == EMotionType::Dynamic);
+
481 return TemplatedSolveVelocityConstraint<EMotionType::Kinematic, EMotionType::Dynamic>(motion_properties1, 0.0f /* Unused */, motion_properties2, motion_properties2->GetInverseMass(), inWorldSpaceAxis, inMinLambda, inMaxLambda);
+
482
+ +
484 JPH_ASSERT(motion_type2 == EMotionType::Dynamic);
+
485 return TemplatedSolveVelocityConstraint<EMotionType::Static, EMotionType::Dynamic>(motion_properties1, 0.0f /* Unused */, motion_properties2, motion_properties2->GetInverseMass(), inWorldSpaceAxis, inMinLambda, inMaxLambda);
+
486
+
487 default:
+
488 JPH_ASSERT(false);
+
489 break;
+
490 }
+
491
+
492 return false;
+
493 }
+
+
494
+
+
503 inline bool SolveVelocityConstraintWithMassOverride(Body &ioBody1, float inInvMass1, Body &ioBody2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
+
504 {
+
505 EMotionType motion_type1 = ioBody1.GetMotionType();
+
506 MotionProperties *motion_properties1 = ioBody1.GetMotionPropertiesUnchecked();
+
507
+
508 EMotionType motion_type2 = ioBody2.GetMotionType();
+
509 MotionProperties *motion_properties2 = ioBody2.GetMotionPropertiesUnchecked();
+
510
+
511 // Dispatch to the correct templated form
+
512 switch (motion_type1)
+
513 {
+ +
515 switch (motion_type2)
+
516 {
+ +
518 return TemplatedSolveVelocityConstraint<EMotionType::Dynamic, EMotionType::Dynamic>(motion_properties1, inInvMass1, motion_properties2, inInvMass2, inWorldSpaceAxis, inMinLambda, inMaxLambda);
+
519
+ +
521 return TemplatedSolveVelocityConstraint<EMotionType::Dynamic, EMotionType::Kinematic>(motion_properties1, inInvMass1, motion_properties2, 0.0f /* Unused */, inWorldSpaceAxis, inMinLambda, inMaxLambda);
+
522
+ +
524 return TemplatedSolveVelocityConstraint<EMotionType::Dynamic, EMotionType::Static>(motion_properties1, inInvMass1, motion_properties2, 0.0f /* Unused */, inWorldSpaceAxis, inMinLambda, inMaxLambda);
+
525
+
526 default:
+
527 JPH_ASSERT(false);
+
528 break;
+
529 }
+
530 break;
+
531
+ +
533 JPH_ASSERT(motion_type2 == EMotionType::Dynamic);
+
534 return TemplatedSolveVelocityConstraint<EMotionType::Kinematic, EMotionType::Dynamic>(motion_properties1, 0.0f /* Unused */, motion_properties2, inInvMass2, inWorldSpaceAxis, inMinLambda, inMaxLambda);
+
535
+ +
537 JPH_ASSERT(motion_type2 == EMotionType::Dynamic);
+
538 return TemplatedSolveVelocityConstraint<EMotionType::Static, EMotionType::Dynamic>(motion_properties1, 0.0f /* Unused */, motion_properties2, inInvMass2, inWorldSpaceAxis, inMinLambda, inMaxLambda);
+
539
+
540 default:
+
541 JPH_ASSERT(false);
+
542 break;
+
543 }
+
544
+
545 return false;
+
546 }
+
+
547
+
+
554 inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inC, float inBaumgarte) const
+
555 {
+
556 // Only apply position constraint when the constraint is hard, otherwise the velocity bias will fix the constraint
+
557 if (inC != 0.0f && !mSpringPart.IsActive())
+
558 {
+
559 // Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
+
560 //
+
561 // lambda = -K^-1 * beta / dt * C
+
562 //
+
563 // We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
+
564 float lambda = -mEffectiveMass * inBaumgarte * inC;
+
565
+
566 // Directly integrate velocity change for one time step
+
567 //
+
568 // Euler velocity integration:
+
569 // dv = M^-1 P
+
570 //
+
571 // Impulse:
+
572 // P = J^T lambda
+
573 //
+
574 // Euler position integration:
+
575 // x' = x + dv * dt
+
576 //
+
577 // Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
+
578 // Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
+
579 // stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
+
580 // integrate + a position integrate and then discard the velocity change.
+
581 if (ioBody1.IsDynamic())
+
582 {
+
583 ioBody1.SubPositionStep((lambda * ioBody1.GetMotionProperties()->GetInverseMass()) * inWorldSpaceAxis);
+
584 ioBody1.SubRotationStep(lambda * Vec3::sLoadFloat3Unsafe(mInvI1_R1PlusUxAxis));
+
585 }
+
586 if (ioBody2.IsDynamic())
+
587 {
+
588 ioBody2.AddPositionStep((lambda * ioBody2.GetMotionProperties()->GetInverseMass()) * inWorldSpaceAxis);
+
589 ioBody2.AddRotationStep(lambda * Vec3::sLoadFloat3Unsafe(mInvI2_R2xAxis));
+
590 }
+
591 return true;
+
592 }
+
593
+
594 return false;
+
595 }
+
+
596
+
+
605 inline bool SolvePositionConstraintWithMassOverride(Body &ioBody1, float inInvMass1, Body &ioBody2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inC, float inBaumgarte) const
+
606 {
+
607 // Only apply position constraint when the constraint is hard, otherwise the velocity bias will fix the constraint
+
608 if (inC != 0.0f && !mSpringPart.IsActive())
+
609 {
+
610 // Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
+
611 //
+
612 // lambda = -K^-1 * beta / dt * C
+
613 //
+
614 // We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
+
615 float lambda = -mEffectiveMass * inBaumgarte * inC;
+
616
+
617 // Directly integrate velocity change for one time step
+
618 //
+
619 // Euler velocity integration:
+
620 // dv = M^-1 P
+
621 //
+
622 // Impulse:
+
623 // P = J^T lambda
+
624 //
+
625 // Euler position integration:
+
626 // x' = x + dv * dt
+
627 //
+
628 // Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
+
629 // Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
+
630 // stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
+
631 // integrate + a position integrate and then discard the velocity change.
+
632 if (ioBody1.IsDynamic())
+
633 {
+
634 ioBody1.SubPositionStep((lambda * inInvMass1) * inWorldSpaceAxis);
+
635 ioBody1.SubRotationStep(lambda * Vec3::sLoadFloat3Unsafe(mInvI1_R1PlusUxAxis));
+
636 }
+
637 if (ioBody2.IsDynamic())
+
638 {
+
639 ioBody2.AddPositionStep((lambda * inInvMass2) * inWorldSpaceAxis);
+
640 ioBody2.AddRotationStep(lambda * Vec3::sLoadFloat3Unsafe(mInvI2_R2xAxis));
+
641 }
+
642 return true;
+
643 }
+
644
+
645 return false;
+
646 }
+
+
647
+
+
649 inline void SetTotalLambda(float inLambda)
+
650 {
+
651 mTotalLambda = inLambda;
+
652 }
+
+
653
+
+
655 inline float GetTotalLambda() const
+
656 {
+
657 return mTotalLambda;
+
658 }
+
+
659
+
+
661 void SaveState(StateRecorder &inStream) const
+
662 {
+
663 inStream.Write(mTotalLambda);
+
664 }
+
+
665
+
+ +
668 {
+
669 inStream.Read(mTotalLambda);
+
670 }
+
+
671
+
672private:
+
673 Float3 mR1PlusUxAxis;
+
674 Float3 mR2xAxis;
+
675 Float3 mInvI1_R1PlusUxAxis;
+
676 Float3 mInvI2_R2xAxis;
+
677 float mEffectiveMass = 0.0f;
+
678 SpringPart mSpringPart;
+
679 float mTotalLambda = 0.0f;
+
680};
+
+
681
+ + +
#define JPH_IF_DEBUG(...)
Definition Core.h:509
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_DET_LOG(...)
By default we log nothing.
Definition DeterminismLog.h:155
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)
Clamp a value between two values.
Definition Math.h:45
+
EMotionType
Motion type of a physics body.
Definition MotionType.h:11
+
@ Kinematic
Movable using velocities only, does not respond to forces.
+
@ Static
Non movable.
+
@ Dynamic
Responds to forces as a normal physics object.
+ + +
@ FrequencyAndDamping
Frequency and damping are specified.
+ +
Definition AxisConstraintPart.h:43
+
float GetTotalLambda() const
Return lagrange multiplier.
Definition AxisConstraintPart.h:655
+
bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
Definition AxisConstraintPart.h:450
+
void CalculateConstraintPropertiesWithSettings(float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, const SpringSettings &inSpringSettings)
Selects one of the above functions based on the spring settings.
Definition AxisConstraintPart.h:329
+
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inC, float inBaumgarte) const
Definition AxisConstraintPart.h:554
+
bool IsActive() const
Check if constraint is active.
Definition AxisConstraintPart.h:349
+
void SetTotalLambda(float inLambda)
Override total lagrange multiplier, can be used to set the initial value for warm starting.
Definition AxisConstraintPart.h:649
+
bool TemplatedSolveVelocityConstraint(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
Templated form of SolveVelocityConstraint with the motion types baked in.
Definition AxisConstraintPart.h:434
+
JPH_INLINE void TemplatedCalculateConstraintProperties(float inInvMass1, Mat44Arg inInvI1, Vec3Arg inR1PlusU, float inInvMass2, Mat44Arg inInvI2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)
Templated form of CalculateConstraintProperties with the motion types baked in.
Definition AxisConstraintPart.h:227
+
void CalculateConstraintPropertiesWithFrequencyAndDamping(float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inFrequency, float inDamping)
Definition AxisConstraintPart.h:297
+
void WarmStart(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inWarmStartImpulseRatio)
Definition AxisConstraintPart.h:368
+
void Deactivate()
Deactivate this constraint.
Definition AxisConstraintPart.h:342
+
void CalculateConstraintPropertiesWithMassOverride(const Body &inBody1, float inInvMass1, float inInvInertiaScale1, Vec3Arg inR1PlusU, const Body &inBody2, float inInvMass2, float inInvInertiaScale2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)
Definition AxisConstraintPart.h:273
+
bool SolvePositionConstraintWithMassOverride(Body &ioBody1, float inInvMass1, Body &ioBody2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inC, float inBaumgarte) const
Definition AxisConstraintPart.h:605
+
JPH_INLINE float TemplatedSolveVelocityConstraintGetTotalLambda(const MotionProperties *ioMotionProperties1, const MotionProperties *ioMotionProperties2, Vec3Arg inWorldSpaceAxis) const
Templated form of SolveVelocityConstraint with the motion types baked in, part 1: get the total lambd...
Definition AxisConstraintPart.h:394
+
bool SolveVelocityConstraintWithMassOverride(Body &ioBody1, float inInvMass1, Body &ioBody2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
Definition AxisConstraintPart.h:503
+
JPH_INLINE bool TemplatedSolveVelocityConstraintApplyLambda(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inTotalLambda)
Templated form of SolveVelocityConstraint with the motion types baked in, part 2: apply new lambda.
Definition AxisConstraintPart.h:424
+
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition AxisConstraintPart.h:661
+
void TemplatedWarmStart(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inWarmStartImpulseRatio)
Templated form of WarmStart with the motion types baked in.
Definition AxisConstraintPart.h:356
+
void CalculateConstraintPropertiesWithStiffnessAndDamping(float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inStiffness, float inDamping)
Definition AxisConstraintPart.h:318
+
void CalculateConstraintProperties(const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)
Definition AxisConstraintPart.h:249
+
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition AxisConstraintPart.h:667
+
Definition Body.h:35
+
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:249
+
EMotionType GetMotionType() const
Get the bodies motion type.
Definition Body.h:112
+
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:61
+
void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Update rotation using an Euler step (using during position integrate & constraint solving)
Definition Body.inl:81
+
void SubPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)
Definition Body.h:284
+
Mat44 GetInverseInertia() const
Get inverse inertia tensor in world space.
Definition Body.inl:120
+
void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Definition Body.inl:100
+
const MotionProperties * GetMotionPropertiesUnchecked() const
Access to the motion properties (version that does not check if the object is kinematic or dynamic)
Definition Body.h:253
+
void AddPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)
Update position using an Euler step (used during position integrate & constraint solving)
Definition Body.h:283
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.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
+
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition Mat44.inl:316
+
The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...
Definition MotionProperties.h:29
+
void AddLinearVelocityStep(Vec3Arg inLinearVelocityChange)
Definition MotionProperties.h:191
+
Vec3 GetLinearVelocity() const
Get world space linear velocity of the center of mass.
Definition MotionProperties.h:43
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass.
Definition MotionProperties.h:52
+
void SubLinearVelocityStep(Vec3Arg inLinearVelocityChange)
Definition MotionProperties.h:192
+
float GetInverseMass() const
Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies ha...
Definition MotionProperties.h:95
+
void SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:194
+
void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:193
+
Class used in other constraint parts to calculate the required bias factor in the lagrange multiplier...
Definition SpringPart.h:14
+
void CalculateSpringPropertiesWithFrequencyAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inFrequency, float inDamping, float &outEffectiveMass)
Definition SpringPart.h:86
+
void CalculateSpringPropertiesWithStiffnessAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inStiffness, float inDamping, float &outEffectiveMass)
Definition SpringPart.h:116
+
float GetBias(float inTotalLambda) const
Get total bias b, including supplied bias and bias for spring: lambda = J v + b.
Definition SpringPart.h:137
+
void CalculateSpringPropertiesWithBias(float inBias)
Definition SpringPart.h:71
+
bool IsActive() const
Returns if this spring is active.
Definition SpringPart.h:131
+
Settings for a linear or angular spring.
Definition SpringSettings.h:23
+
float mStiffness
Definition SpringSettings.h:60
+
float mDamping
Definition SpringSettings.h:67
+
ESpringMode mMode
Definition SpringSettings.h:44
+
float mFrequency
Definition SpringSettings.h:51
+
Definition StateRecorder.h:48
+
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:29
+
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:26
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const
Test if vector is normalized.
Definition Vec3.inl:745
+
JPH_INLINE void StoreFloat3(Float3 *outV) const
Store 3 floats to memory.
Definition Vec3.inl:765
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
static JPH_INLINE Vec3 sNaN()
Vector with all NaN's.
Definition Vec3.inl:129
+
+
+ + + + diff --git a/_back_face_mode_8h.html b/_back_face_mode_8h.html new file mode 100644 index 000000000..68957e6a5 --- /dev/null +++ b/_back_face_mode_8h.html @@ -0,0 +1,158 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BackFaceMode.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BackFaceMode.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Enumerations

enum class  EBackFaceMode : uint8 { IgnoreBackFaces +, CollideWithBackFaces + }
 How collision detection functions will treat back facing triangles. More...
 
+

Enumeration Type Documentation

+ +

◆ EBackFaceMode

+ +
+
+ + + + + +
+ + + + +
enum class EBackFaceMode : uint8
+
+strong
+
+ +

How collision detection functions will treat back facing triangles.

+ + + +
Enumerator
IgnoreBackFaces 

Ignore collision with back facing surfaces/triangles.

+
CollideWithBackFaces 

Collide with back facing surfaces/triangles.

+
+ +
+
+
+
+ + + + diff --git a/_back_face_mode_8h.js b/_back_face_mode_8h.js new file mode 100644 index 000000000..c87125ebb --- /dev/null +++ b/_back_face_mode_8h.js @@ -0,0 +1,7 @@ +var _back_face_mode_8h = +[ + [ "EBackFaceMode", "_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70", [ + [ "IgnoreBackFaces", "_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70af6243a236f136f9c790a0d9cfd71c408", null ], + [ "CollideWithBackFaces", "_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70a7a77865372b008d1495ee006663e08ab", null ] + ] ] +]; \ No newline at end of file diff --git a/_back_face_mode_8h_source.html b/_back_face_mode_8h_source.html new file mode 100644 index 000000000..2aab32965 --- /dev/null +++ b/_back_face_mode_8h_source.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BackFaceMode.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BackFaceMode.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
+
+
10enum class EBackFaceMode : uint8
+
11{
+ + +
14};
+
+
15
+ +
EBackFaceMode
How collision detection functions will treat back facing triangles.
Definition BackFaceMode.h:11
+
@ CollideWithBackFaces
Collide with back facing surfaces/triangles.
+
@ IgnoreBackFaces
Ignore collision with back facing surfaces/triangles.
+
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
+
+ + + + diff --git a/_body_8cpp.html b/_body_8cpp.html new file mode 100644 index 000000000..ca18c0ec6 --- /dev/null +++ b/_body_8cpp.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/Body.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Body.cpp File Reference
+
+
+
+
+ + + + diff --git a/_body_8h.html b/_body_8h.html new file mode 100644 index 000000000..92b403531 --- /dev/null +++ b/_body_8h.html @@ -0,0 +1,137 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/Body.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Body.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  Body
 
+
+
+ + + + diff --git a/_body_8h.js b/_body_8h.js new file mode 100644 index 000000000..c3ba742c5 --- /dev/null +++ b/_body_8h.js @@ -0,0 +1,4 @@ +var _body_8h = +[ + [ "Body", "class_body.html", "class_body" ] +]; \ No newline at end of file diff --git a/_body_8h_source.html b/_body_8h_source.html new file mode 100644 index 000000000..60592a5b8 --- /dev/null +++ b/_body_8h_source.html @@ -0,0 +1,520 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/Body.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Body.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
+ + + + + + + + + + + + +
19
+ +
21
+
22class StateRecorder;
+ + +
25
+
+
34class alignas(JPH_RVECTOR_ALIGNMENT) JPH_EXPORT_GCC_BUG_WORKAROUND Body : public NonCopyable
+
35{
+
36public:
+ +
38
+
40 inline const BodyID & GetID() const { return mID; }
+
41
+
43 inline EBodyType GetBodyType() const { return mBodyType; }
+
44
+
46 inline bool IsRigidBody() const { return mBodyType == EBodyType::RigidBody; }
+
47
+
49 inline bool IsSoftBody() const { return mBodyType == EBodyType::SoftBody; }
+
50
+
52 inline bool IsActive() const { return mMotionProperties != nullptr && mMotionProperties->mIndexInActiveBodies != cInactiveIndex; }
+
53
+
55 inline bool IsStatic() const { return mMotionType == EMotionType::Static; }
+
56
+
58 inline bool IsKinematic() const { return mMotionType == EMotionType::Kinematic; }
+
59
+
61 inline bool IsDynamic() const { return mMotionType == EMotionType::Dynamic; }
+
62
+
64 inline bool CanBeKinematicOrDynamic() const { return mMotionProperties != nullptr; }
+
65
+
71 inline void SetIsSensor(bool inIsSensor) { JPH_ASSERT(IsRigidBody()); if (inIsSensor) mFlags.fetch_or(uint8(EFlags::IsSensor), memory_order_relaxed); else mFlags.fetch_and(uint8(~uint8(EFlags::IsSensor)), memory_order_relaxed); }
+
72
+
74 inline bool IsSensor() const { return (mFlags.load(memory_order_relaxed) & uint8(EFlags::IsSensor)) != 0; }
+
75
+
79 inline void SetCollideKinematicVsNonDynamic(bool inCollide) { JPH_ASSERT(IsRigidBody()); if (inCollide) mFlags.fetch_or(uint8(EFlags::CollideKinematicVsNonDynamic), memory_order_relaxed); else mFlags.fetch_and(uint8(~uint8(EFlags::CollideKinematicVsNonDynamic)), memory_order_relaxed); }
+
80
+
82 inline bool GetCollideKinematicVsNonDynamic() const { return (mFlags.load(memory_order_relaxed) & uint8(EFlags::CollideKinematicVsNonDynamic)) != 0; }
+
83
+
88 inline void SetUseManifoldReduction(bool inUseReduction) { JPH_ASSERT(IsRigidBody()); if (inUseReduction) mFlags.fetch_or(uint8(EFlags::UseManifoldReduction), memory_order_relaxed); else mFlags.fetch_and(uint8(~uint8(EFlags::UseManifoldReduction)), memory_order_relaxed); }
+
89
+
91 inline bool GetUseManifoldReduction() const { return (mFlags.load(memory_order_relaxed) & uint8(EFlags::UseManifoldReduction)) != 0; }
+
92
+
94 inline bool GetUseManifoldReductionWithBody(const Body &inBody2) const { return ((mFlags.load(memory_order_relaxed) & inBody2.mFlags.load(memory_order_relaxed)) & uint8(EFlags::UseManifoldReduction)) != 0; }
+
95
+
97 inline void SetApplyGyroscopicForce(bool inApply) { JPH_ASSERT(IsRigidBody()); if (inApply) mFlags.fetch_or(uint8(EFlags::ApplyGyroscopicForce), memory_order_relaxed); else mFlags.fetch_and(uint8(~uint8(EFlags::ApplyGyroscopicForce)), memory_order_relaxed); }
+
98
+
100 inline bool GetApplyGyroscopicForce() const { return (mFlags.load(memory_order_relaxed) & uint8(EFlags::ApplyGyroscopicForce)) != 0; }
+
101
+
103 inline void SetEnhancedInternalEdgeRemoval(bool inApply) { JPH_ASSERT(IsRigidBody()); if (inApply) mFlags.fetch_or(uint8(EFlags::EnhancedInternalEdgeRemoval), memory_order_relaxed); else mFlags.fetch_and(uint8(~uint8(EFlags::EnhancedInternalEdgeRemoval)), memory_order_relaxed); }
+
104
+
106 inline bool GetEnhancedInternalEdgeRemoval() const { return (mFlags.load(memory_order_relaxed) & uint8(EFlags::EnhancedInternalEdgeRemoval)) != 0; }
+
107
+
109 inline bool GetEnhancedInternalEdgeRemovalWithBody(const Body &inBody2) const { return ((mFlags.load(memory_order_relaxed) | inBody2.mFlags.load(memory_order_relaxed)) & uint8(EFlags::EnhancedInternalEdgeRemoval)) != 0; }
+
110
+
112 inline EMotionType GetMotionType() const { return mMotionType; }
+
113
+
115 void SetMotionType(EMotionType inMotionType);
+
116
+
118 inline BroadPhaseLayer GetBroadPhaseLayer() const { return mBroadPhaseLayer; }
+
119
+
121 inline ObjectLayer GetObjectLayer() const { return mObjectLayer; }
+
122
+
124 const CollisionGroup & GetCollisionGroup() const { return mCollisionGroup; }
+
125 CollisionGroup & GetCollisionGroup() { return mCollisionGroup; }
+
126 void SetCollisionGroup(const CollisionGroup &inGroup) { mCollisionGroup = inGroup; }
+
127
+
129 bool GetAllowSleeping() const { return mMotionProperties->mAllowSleeping; }
+
130 void SetAllowSleeping(bool inAllow);
+
131
+
133 inline void ResetSleepTimer();
+
134
+
136 inline float GetFriction() const { return mFriction; }
+
137 void SetFriction(float inFriction) { mFriction = inFriction; }
+
138
+
140 inline float GetRestitution() const { return mRestitution; }
+
141 void SetRestitution(float inRestitution) { mRestitution = inRestitution; }
+
142
+
144 inline Vec3 GetLinearVelocity() const { return !IsStatic()? mMotionProperties->GetLinearVelocity() : Vec3::sZero(); }
+
145
+
147 void SetLinearVelocity(Vec3Arg inLinearVelocity) { JPH_ASSERT(!IsStatic()); mMotionProperties->SetLinearVelocity(inLinearVelocity); }
+
148
+
150 void SetLinearVelocityClamped(Vec3Arg inLinearVelocity) { JPH_ASSERT(!IsStatic()); mMotionProperties->SetLinearVelocityClamped(inLinearVelocity); }
+
151
+
153 inline Vec3 GetAngularVelocity() const { return !IsStatic()? mMotionProperties->GetAngularVelocity() : Vec3::sZero(); }
+
154
+
156 void SetAngularVelocity(Vec3Arg inAngularVelocity) { JPH_ASSERT(!IsStatic()); mMotionProperties->SetAngularVelocity(inAngularVelocity); }
+
157
+
159 void SetAngularVelocityClamped(Vec3Arg inAngularVelocity) { JPH_ASSERT(!IsStatic()); mMotionProperties->SetAngularVelocityClamped(inAngularVelocity); }
+
160
+
162 inline Vec3 GetPointVelocityCOM(Vec3Arg inPointRelativeToCOM) const { return !IsStatic()? mMotionProperties->GetPointVelocityCOM(inPointRelativeToCOM) : Vec3::sZero(); }
+
163
+
165 inline Vec3 GetPointVelocity(RVec3Arg inPoint) const { JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::Read)); return GetPointVelocityCOM(Vec3(inPoint - mPosition)); }
+
166
+
168 inline void AddForce(Vec3Arg inForce) { JPH_ASSERT(IsDynamic()); (Vec3::sLoadFloat3Unsafe(mMotionProperties->mForce) + inForce).StoreFloat3(&mMotionProperties->mForce); }
+
169
+
171 inline void AddForce(Vec3Arg inForce, RVec3Arg inPosition);
+
172
+
174 inline void AddTorque(Vec3Arg inTorque) { JPH_ASSERT(IsDynamic()); (Vec3::sLoadFloat3Unsafe(mMotionProperties->mTorque) + inTorque).StoreFloat3(&mMotionProperties->mTorque); }
+
175
+
176 // Get the total amount of force applied to the center of mass this time step (through AddForce calls). Note that it will reset to zero after PhysicsSystem::Update.
+
177 inline Vec3 GetAccumulatedForce() const { JPH_ASSERT(IsDynamic()); return mMotionProperties->GetAccumulatedForce(); }
+
178
+
179 // Get the total amount of torque applied to the center of mass this time step (through AddForce/AddTorque calls). Note that it will reset to zero after PhysicsSystem::Update.
+
180 inline Vec3 GetAccumulatedTorque() const { JPH_ASSERT(IsDynamic()); return mMotionProperties->GetAccumulatedTorque(); }
+
181
+
182 // Reset the total accumulated force, not that this will be done automatically after every time step.
+
183 JPH_INLINE void ResetForce() { JPH_ASSERT(IsDynamic()); return mMotionProperties->ResetForce(); }
+
184
+
185 // Reset the total accumulated torque, not that this will be done automatically after every time step.
+
186 JPH_INLINE void ResetTorque() { JPH_ASSERT(IsDynamic()); return mMotionProperties->ResetTorque(); }
+
187
+
188 // Reset the current velocity and accumulated force and torque.
+
189 JPH_INLINE void ResetMotion() { JPH_ASSERT(!IsStatic()); return mMotionProperties->ResetMotion(); }
+
190
+
192 inline Mat44 GetInverseInertia() const;
+
193
+
195 inline void AddImpulse(Vec3Arg inImpulse);
+
196
+
198 inline void AddImpulse(Vec3Arg inImpulse, RVec3Arg inPosition);
+
199
+
201 inline void AddAngularImpulse(Vec3Arg inAngularImpulse);
+
202
+
204 void MoveKinematic(RVec3Arg inTargetPosition, QuatArg inTargetRotation, float inDeltaTime);
+
205
+
216 bool ApplyBuoyancyImpulse(RVec3Arg inSurfacePosition, Vec3Arg inSurfaceNormal, float inBuoyancy, float inLinearDrag, float inAngularDrag, Vec3Arg inFluidVelocity, Vec3Arg inGravity, float inDeltaTime);
+
217
+
219 inline bool IsInBroadPhase() const { return (mFlags.load(memory_order_relaxed) & uint8(EFlags::IsInBroadPhase)) != 0; }
+
220
+
222 inline bool IsCollisionCacheInvalid() const { return (mFlags.load(memory_order_relaxed) & uint8(EFlags::InvalidateContactCache)) != 0; }
+
223
+
225 inline const Shape * GetShape() const { return mShape; }
+
226
+
228 inline RVec3 GetPosition() const { JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::Read)); return mPosition - mRotation * mShape->GetCenterOfMass(); }
+
229
+
231 inline Quat GetRotation() const { JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::Read)); return mRotation; }
+
232
+
234 inline RMat44 GetWorldTransform() const;
+
235
+
237 inline RVec3 GetCenterOfMassPosition() const { JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::Read)); return mPosition; }
+
238
+
240 inline RMat44 GetCenterOfMassTransform() const;
+
241
+
243 inline RMat44 GetInverseCenterOfMassTransform() const;
+
244
+
246 inline const AABox & GetWorldSpaceBounds() const { return mBounds; }
+
247
+
249 const MotionProperties *GetMotionProperties() const { JPH_ASSERT(!IsStatic()); return mMotionProperties; }
+
250 MotionProperties * GetMotionProperties() { JPH_ASSERT(!IsStatic()); return mMotionProperties; }
+
251
+
253 const MotionProperties *GetMotionPropertiesUnchecked() const { return mMotionProperties; }
+
254 MotionProperties * GetMotionPropertiesUnchecked() { return mMotionProperties; }
+
255
+
257 uint64 GetUserData() const { return mUserData; }
+
258 void SetUserData(uint64 inUserData) { mUserData = inUserData; }
+
259
+
261 inline Vec3 GetWorldSpaceSurfaceNormal(const SubShapeID &inSubShapeID, RVec3Arg inPosition) const;
+
262
+
264 inline TransformedShape GetTransformedShape() const { JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::Read)); return TransformedShape(mPosition, mRotation, mShape, mID); }
+
265
+
267 BodyCreationSettings GetBodyCreationSettings() const;
+
268
+
270 SoftBodyCreationSettings GetSoftBodyCreationSettings() const;
+
271
+ +
274
+
277
+
280 static inline bool sFindCollidingPairsCanCollide(const Body &inBody1, const Body &inBody2);
+
281
+
283 inline void AddPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime) { JPH_ASSERT(IsRigidBody()); JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::ReadWrite)); mPosition += mMotionProperties->LockTranslation(inLinearVelocityTimesDeltaTime); JPH_ASSERT(!mPosition.IsNaN()); }
+
284 inline void SubPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime) { JPH_ASSERT(IsRigidBody()); JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::ReadWrite)); mPosition -= mMotionProperties->LockTranslation(inLinearVelocityTimesDeltaTime); JPH_ASSERT(!mPosition.IsNaN()); }
+
285
+
287 inline void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime);
+
288 inline void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime);
+
289
+
291 inline void SetInBroadPhaseInternal(bool inInBroadPhase) { if (inInBroadPhase) mFlags.fetch_or(uint8(EFlags::IsInBroadPhase), memory_order_relaxed); else mFlags.fetch_and(uint8(~uint8(EFlags::IsInBroadPhase)), memory_order_relaxed); }
+
292
+
294 inline bool InvalidateContactCacheInternal() { return (mFlags.fetch_or(uint8(EFlags::InvalidateContactCache), memory_order_relaxed) & uint8(EFlags::InvalidateContactCache)) == 0; }
+
295
+
297 inline void ValidateContactCacheInternal() { JPH_IF_ENABLE_ASSERTS(uint8 old_val = ) mFlags.fetch_and(uint8(~uint8(EFlags::InvalidateContactCache)), memory_order_relaxed); JPH_ASSERT((old_val & uint8(EFlags::InvalidateContactCache)) != 0); }
+
298
+
300 void CalculateWorldSpaceBoundsInternal();
+
301
+
303 void SetPositionAndRotationInternal(RVec3Arg inPosition, QuatArg inRotation, bool inResetSleepTimer = true);
+
304
+
308 void UpdateCenterOfMassInternal(Vec3Arg inPreviousCenterOfMass, bool inUpdateMassProperties);
+
309
+
313 void SetShapeInternal(const Shape *inShape, bool inUpdateMassProperties);
+
314
+
316 uint32 GetIndexInActiveBodiesInternal() const { return mMotionProperties != nullptr? mMotionProperties->mIndexInActiveBodies : cInactiveIndex; }
+
317
+
319 ECanSleep UpdateSleepStateInternal(float inDeltaTime, float inMaxMovement, float inTimeBeforeSleep);
+
320
+
322 void SaveState(StateRecorder &inStream) const;
+
323
+
325 void RestoreState(StateRecorder &inStream);
+
326
+
328
+
329 static constexpr uint32 cInactiveIndex = MotionProperties::cInactiveIndex;
+
330
+
331private:
+
332 friend class BodyManager;
+ + +
335
+
336 Body() = default;
+
337
+
338 explicit Body(bool);
+
339
+
340 ~Body() { JPH_ASSERT(mMotionProperties == nullptr); }
+
341
+
342 inline void GetSleepTestPoints(RVec3 *outPoints) const;
+
343
+
344 enum class EFlags : uint8
+
345 {
+
346 IsSensor = 1 << 0,
+
347 CollideKinematicVsNonDynamic = 1 << 1,
+
348 IsInBroadPhase = 1 << 2,
+
349 InvalidateContactCache = 1 << 3,
+
350 UseManifoldReduction = 1 << 4,
+
351 ApplyGyroscopicForce = 1 << 5,
+
352 EnhancedInternalEdgeRemoval = 1 << 6,
+
353 };
+
354
+
355 // 16 byte aligned
+
356 RVec3 mPosition;
+
357 Quat mRotation;
+
358 AABox mBounds;
+
359
+
360 // 8 byte aligned
+
361 RefConst<Shape> mShape;
+
362 MotionProperties * mMotionProperties = nullptr;
+
363 uint64 mUserData = 0;
+
364 CollisionGroup mCollisionGroup;
+
365
+
366 // 4 byte aligned
+
367 float mFriction;
+
368 float mRestitution;
+
369 BodyID mID;
+
370
+
371 // 2 or 4 bytes aligned
+
372 ObjectLayer mObjectLayer;
+
373
+
374 // 1 byte aligned
+
375 EBodyType mBodyType;
+
376 BroadPhaseLayer mBroadPhaseLayer;
+
377 EMotionType mMotionType;
+
378 atomic<uint8> mFlags = 0;
+
379
+
380 // 122 bytes up to here (64-bit mode, single precision, 16-bit ObjectLayer)
+
381};
+
+
382
+
383static_assert(JPH_CPU_ADDRESS_BITS != 64 || sizeof(Body) == JPH_IF_SINGLE_PRECISION_ELSE(128, 160), "Body size is incorrect");
+
384static_assert(alignof(Body) == JPH_RVECTOR_ALIGNMENT, "Body should properly align");
+
385
+ +
387
+
388#include "Body.inl"
+ + + + + +
EBodyType
Type of body.
Definition BodyType.h:11
+
@ RigidBody
Rigid body consisting of a rigid shape.
+
@ SoftBody
Soft body consisting of a deformable shape.
+ + +
std::uint8_t uint8
Definition Core.h:453
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_EXPORT_GCC_BUG_WORKAROUND
Definition Core.h:240
+
#define JPH_IF_SINGLE_PRECISION_ELSE(s, d)
Definition Core.h:530
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
ECanSleep
Enum that determines if an object can go to sleep.
Definition MotionProperties.h:22
+
EMotionType
Motion type of a physics body.
Definition MotionType.h:11
+
@ Kinematic
Movable using velocities only, does not respond to forces.
+
@ Static
Non movable.
+
@ Dynamic
Responds to forces as a normal physics object.
+ + +
uint16 ObjectLayer
Definition ObjectLayer.h:16
+
#define JPH_RVECTOR_ALIGNMENT
Definition Real.h:34
+ + + +
Axis aligned box.
Definition AABox.h:16
+
Settings for constructing a rigid body.
Definition BodyCreationSettings.h:31
+
Definition Body.h:35
+
Vec3 GetPointVelocity(RVec3Arg inPoint) const
Velocity of point inPoint (in world space, e.g. on the surface of the body) of the body (unit: m/s)
Definition Body.h:165
+
bool IsInBroadPhase() const
Check if this body has been added to the physics system.
Definition Body.h:219
+
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:249
+
RVec3 GetCenterOfMassPosition() const
Gets the world space position of this body's center of mass.
Definition Body.h:237
+
EMotionType GetMotionType() const
Get the bodies motion type.
Definition Body.h:112
+
void SetAngularVelocity(Vec3Arg inAngularVelocity)
Set world space angular velocity of the center of mass (unit: rad/s)
Definition Body.h:156
+
void SetCollisionGroup(const CollisionGroup &inGroup)
Definition Body.h:126
+
Vec3 GetPointVelocityCOM(Vec3Arg inPointRelativeToCOM) const
Velocity of point inPoint (in center of mass space, e.g. on the surface of the body) of the body (uni...
Definition Body.h:162
+
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:61
+
bool GetAllowSleeping() const
If this body can go to sleep. Note that disabling sleeping on a sleeping object will not wake it up.
Definition Body.h:129
+
bool IsSensor() const
Check if this body is a sensor.
Definition Body.h:74
+
bool GetEnhancedInternalEdgeRemovalWithBody(const Body &inBody2) const
Checks if the combination of this body and inBody2 should use enhanced internal edge removal.
Definition Body.h:109
+
const AABox & GetWorldSpaceBounds() const
Get world space bounding box.
Definition Body.h:246
+
void SubPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)
Definition Body.h:284
+
void SetUserData(uint64 inUserData)
Definition Body.h:258
+
bool IsSoftBody() const
Check if this body is a soft body.
Definition Body.h:49
+
const Shape * GetShape() const
Get the shape of this body.
Definition Body.h:225
+
bool InvalidateContactCacheInternal()
Invalidate the contact cache (should only be called by the BodyManager), will be reset the next simul...
Definition Body.h:294
+
uint64 GetUserData() const
Access to the user data, can be used for anything by the application.
Definition Body.h:257
+
BroadPhaseLayer GetBroadPhaseLayer() const
Get broadphase layer, this determines in which broad phase sub-tree the object is placed.
Definition Body.h:118
+
float GetRestitution() const
Restitution (dimensionless number, usually between 0 and 1, 0 = completely inelastic collision respon...
Definition Body.h:140
+
const CollisionGroup & GetCollisionGroup() const
Collision group and sub-group ID, determines which other objects it collides with.
Definition Body.h:124
+
void SetIsSensor(bool inIsSensor)
Definition Body.h:71
+
void SetLinearVelocityClamped(Vec3Arg inLinearVelocity)
Set world space linear velocity of the center of mass, will make sure the value is clamped against th...
Definition Body.h:150
+
bool GetUseManifoldReductionWithBody(const Body &inBody2) const
Checks if the combination of this body and inBody2 should use manifold reduction.
Definition Body.h:94
+
void SetLinearVelocity(Vec3Arg inLinearVelocity)
Set world space linear velocity of the center of mass (unit: m/s)
Definition Body.h:147
+
uint32 GetIndexInActiveBodiesInternal() const
Access to the index in the BodyManager::mActiveBodies list.
Definition Body.h:316
+
Vec3 GetLinearVelocity() const
Get world space linear velocity of the center of mass (unit: m/s)
Definition Body.h:144
+
ObjectLayer GetObjectLayer() const
Get object layer, this determines which other objects it collides with.
Definition Body.h:121
+
void SetRestitution(float inRestitution)
Definition Body.h:141
+
bool IsCollisionCacheInvalid() const
Check if this body has been changed in such a way that the collision cache should be considered inval...
Definition Body.h:222
+
bool IsRigidBody() const
Check if this body is a rigid body.
Definition Body.h:46
+
bool IsStatic() const
Check if this body is static (not movable)
Definition Body.h:55
+
EBodyType GetBodyType() const
Get the type of body (rigid or soft)
Definition Body.h:43
+
void SetEnhancedInternalEdgeRemoval(bool inApply)
Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with int...
Definition Body.h:103
+
bool GetCollideKinematicVsNonDynamic() const
Check if kinematic objects can generate contact points against other kinematic or static objects.
Definition Body.h:82
+
void SetUseManifoldReduction(bool inUseReduction)
Definition Body.h:88
+
static Body sFixedToWorld
A dummy body that can be used by constraints to attach a constraint to the world instead of another b...
Definition Body.h:273
+
void SetAngularVelocityClamped(Vec3Arg inAngularVelocity)
Set world space angular velocity of the center of mass, will make sure the value is clamped against t...
Definition Body.h:159
+
JPH_INLINE void ResetForce()
Definition Body.h:183
+
Vec3 GetAccumulatedTorque() const
Definition Body.h:180
+
bool CanBeKinematicOrDynamic() const
Check if a body could be made kinematic or dynamic (if it was created dynamic or with mAllowDynamicOr...
Definition Body.h:64
+
bool GetEnhancedInternalEdgeRemoval() const
Check if enhanced internal edge removal is turned on.
Definition Body.h:106
+
void SetInBroadPhaseInternal(bool inInBroadPhase)
Flag if body is in the broadphase (should only be called by the BroadPhase)
Definition Body.h:291
+
MotionProperties * GetMotionProperties()
Definition Body.h:250
+
Quat GetRotation() const
World space rotation of the body.
Definition Body.h:231
+
TransformedShape GetTransformedShape() const
Get the transformed shape of this body, which can be used to do collision detection outside of a body...
Definition Body.h:264
+
JPH_INLINE void ResetTorque()
Definition Body.h:186
+
bool IsKinematic() const
Check if this body is kinematic (keyframed), which means that it will move according to its current v...
Definition Body.h:58
+
float GetFriction() const
Friction (dimensionless number, usually between 0 and 1, 0 = no friction, 1 = friction force equals f...
Definition Body.h:136
+
const MotionProperties * GetMotionPropertiesUnchecked() const
Access to the motion properties (version that does not check if the object is kinematic or dynamic)
Definition Body.h:253
+
CollisionGroup & GetCollisionGroup()
Definition Body.h:125
+
void SetApplyGyroscopicForce(bool inApply)
Set to indicate that the gyroscopic force should be applied to this body (aka Dzhanibekov effect,...
Definition Body.h:97
+
JPH_OVERRIDE_NEW_DELETE const BodyID & GetID() const
Get the id of this body.
Definition Body.h:40
+
MotionProperties * GetMotionPropertiesUnchecked()
Definition Body.h:254
+
Vec3 GetAccumulatedForce() const
Definition Body.h:177
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass (unit: rad/s)
Definition Body.h:153
+
RVec3 GetPosition() const
World space position of the body.
Definition Body.h:228
+
void AddForce(Vec3Arg inForce)
Add force (unit: N) at center of mass for the next time step, will be reset after the next call to Ph...
Definition Body.h:168
+
void SetCollideKinematicVsNonDynamic(bool inCollide)
Definition Body.h:79
+
bool IsActive() const
If this body is currently actively simulating (true) or sleeping (false)
Definition Body.h:52
+
bool GetUseManifoldReduction() const
Check if this body can use manifold reduction.
Definition Body.h:91
+
JPH_INLINE void ResetMotion()
Definition Body.h:189
+
void AddTorque(Vec3Arg inTorque)
Add torque (unit: N m) for the next time step, will be reset after the next call to PhysicsSystem::Up...
Definition Body.h:174
+
void ValidateContactCacheInternal()
Reset the collision cache invalid flag (should only be called by the BodyManager).
Definition Body.h:297
+
void SetFriction(float inFriction)
Definition Body.h:137
+
bool GetApplyGyroscopicForce() const
Check if the gyroscopic force is being applied for this body.
Definition Body.h:100
+
void AddPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)
Update position using an Euler step (used during position integrate & constraint solving)
Definition Body.h:283
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Class that contains all bodies.
Definition BodyManager.h:44
+
Definition BodyManager.cpp:52
+
Definition BroadPhaseLayer.h:18
+
Definition CollisionGroup.h:20
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...
Definition MotionProperties.h:29
+
static constexpr uint32 cInactiveIndex
Constant indicating that body is not active.
Definition MotionProperties.h:229
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition Quat.h:33
+
Definition Reference.h:151
+
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition Shape.h:184
+
Definition SoftBodyCreationSettings.h:18
+
Definition BodyManager.cpp:61
+
Definition StateRecorder.h:48
+
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 TransformedShape.h:26
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
+
+ + + + diff --git a/_body_8inl.html b/_body_8inl.html new file mode 100644 index 000000000..38df66988 --- /dev/null +++ b/_body_8inl.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/Body.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Body.inl File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_body_8inl_source.html b/_body_8inl_source.html new file mode 100644 index 000000000..57050b67b --- /dev/null +++ b/_body_8inl_source.html @@ -0,0 +1,402 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/Body.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Body.inl
+
+
+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{
+
11 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::Read));
+
12
+
13 return RMat44::sRotationTranslation(mRotation, mPosition).PreTranslated(-mShape->GetCenterOfMass());
+
14}
+
+
15
+
+ +
17{
+
18 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::Read));
+
19
+
20 return RMat44::sRotationTranslation(mRotation, mPosition);
+
21}
+
+
22
+
+ +
24{
+
25 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::Read));
+
26
+
27 return RMat44::sInverseRotationTranslation(mRotation, mPosition);
+
28}
+
+
29
+
+
30inline bool Body::sFindCollidingPairsCanCollide(const Body &inBody1, const Body &inBody2)
+
31{
+
32 // First body should never be a soft body
+
33 JPH_ASSERT(!inBody1.IsSoftBody());
+
34
+
35 // One of these conditions must be true
+
36 // - We always allow detecting collisions between kinematic and non-dynamic bodies
+
37 // - One of the bodies must be dynamic to collide
+
38 // - A kinematic object can collide with a sensor
+ + +
41 && (!inBody1.IsDynamic() && !inBody2.IsDynamic())
+
42 && !(inBody1.IsKinematic() && inBody2.IsSensor())
+
43 && !(inBody2.IsKinematic() && inBody1.IsSensor()))
+
44 return false;
+
45
+
46 // Check that body 1 is active
+
47 uint32 body1_index_in_active_bodies = inBody1.GetIndexInActiveBodiesInternal();
+
48 JPH_ASSERT(!inBody1.IsStatic() && body1_index_in_active_bodies != Body::cInactiveIndex, "This function assumes that Body 1 is active");
+
49
+
50 // If the pair A, B collides we need to ensure that the pair B, A does not collide or else we will handle the collision twice.
+
51 // If A is the same body as B we don't want to collide (1)
+
52 // If A is dynamic / kinematic and B is static we should collide (2)
+
53 // If A is dynamic / kinematic and B is dynamic / kinematic we should only collide if
+
54 // - A is active and B is not active (3)
+
55 // - A is active and B will become active during this simulation step (4)
+
56 // - A is active and B is active, we require a condition that makes A, B collide and B, A not (5)
+
57 //
+
58 // In order to implement this we use the index in the active body list and make use of the fact that
+
59 // a body not in the active list has Body.Index = 0xffffffff which is the highest possible value for an uint32.
+
60 //
+
61 // Because we know that A is active we know that A.Index != 0xffffffff:
+
62 // (1) Because A.Index != 0xffffffff, if A.Index = B.Index then A = B, so to collide A.Index != B.Index
+
63 // (2) A.Index != 0xffffffff, B.Index = 0xffffffff (because it's static and cannot be in the active list), so to collide A.Index != B.Index
+
64 // (3) A.Index != 0xffffffff, B.Index = 0xffffffff (because it's not yet active), so to collide A.Index != B.Index
+
65 // (4) A.Index != 0xffffffff, B.Index = 0xffffffff currently. But it can activate during the Broad/NarrowPhase step at which point it
+
66 // will be added to the end of the active list which will make B.Index > A.Index (this holds only true when we don't deactivate
+
67 // bodies during the Broad/NarrowPhase step), so to collide A.Index < B.Index.
+
68 // (5) As tie breaker we can use the same condition A.Index < B.Index to collide, this means that if A, B collides then B, A won't
+
69 static_assert(Body::cInactiveIndex == 0xffffffff, "The algorithm below uses this value");
+
70 if (!inBody2.IsSoftBody() && body1_index_in_active_bodies >= inBody2.GetIndexInActiveBodiesInternal())
+
71 return false;
+
72 JPH_ASSERT(inBody1.GetID() != inBody2.GetID(), "Read the comment above, A and B are the same body which should not be possible!");
+
73
+
74 // Check collision group filter
+
75 if (!inBody1.GetCollisionGroup().CanCollide(inBody2.GetCollisionGroup()))
+
76 return false;
+
77
+
78 return true;
+
79}
+
+
80
+
+
81void Body::AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
+
82{
+ +
84 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::ReadWrite));
+
85
+
86 // This used to use the equation: d/dt R(t) = 1/2 * w(t) * R(t) so that R(t + dt) = R(t) + 1/2 * w(t) * R(t) * dt
+
87 // See: Appendix B of An Introduction to Physically Based Modeling: Rigid Body Simulation II-Nonpenetration Constraints
+
88 // URL: https://www.cs.cmu.edu/~baraff/sigcourse/notesd2.pdf
+
89 // But this is a first order approximation and does not work well for kinematic ragdolls that are driven to a new
+
90 // pose if the poses differ enough. So now we split w(t) * dt into an axis and angle part and create a quaternion with it.
+
91 // Note that the resulting quaternion is normalized since otherwise numerical drift will eventually make the rotation non-normalized.
+
92 float len = inAngularVelocityTimesDeltaTime.Length();
+
93 if (len > 1.0e-6f)
+
94 {
+
95 mRotation = (Quat::sRotation(inAngularVelocityTimesDeltaTime / len, len) * mRotation).Normalized();
+
96 JPH_ASSERT(!mRotation.IsNaN());
+
97 }
+
98}
+
+
99
+
+
100void Body::SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
+
101{
+ +
103 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::ReadWrite));
+
104
+
105 // See comment at Body::AddRotationStep
+
106 float len = inAngularVelocityTimesDeltaTime.Length();
+
107 if (len > 1.0e-6f)
+
108 {
+
109 mRotation = (Quat::sRotation(inAngularVelocityTimesDeltaTime / len, -len) * mRotation).Normalized();
+
110 JPH_ASSERT(!mRotation.IsNaN());
+
111 }
+
112}
+
+
113
+
+
114Vec3 Body::GetWorldSpaceSurfaceNormal(const SubShapeID &inSubShapeID, RVec3Arg inPosition) const
+
115{
+ +
117 return inv_com.Multiply3x3Transposed(mShape->GetSurfaceNormal(inSubShapeID, Vec3(inv_com * inPosition))).Normalized();
+
118}
+
+
119
+
+ +
121{
+ +
123
+ +
125}
+
+
126
+
+
127void Body::AddForce(Vec3Arg inForce, RVec3Arg inPosition)
+
128{
+
129 AddForce(inForce);
+
130 AddTorque(Vec3(inPosition - mPosition).Cross(inForce));
+
131}
+
+
132
+
+ +
134{
+ +
136
+
137 SetLinearVelocityClamped(mMotionProperties->GetLinearVelocity() + inImpulse * mMotionProperties->GetInverseMass());
+
138}
+
+
139
+
+
140void Body::AddImpulse(Vec3Arg inImpulse, RVec3Arg inPosition)
+
141{
+ +
143
+
144 SetLinearVelocityClamped(mMotionProperties->GetLinearVelocity() + inImpulse * mMotionProperties->GetInverseMass());
+
145
+
146 SetAngularVelocityClamped(mMotionProperties->GetAngularVelocity() + mMotionProperties->MultiplyWorldSpaceInverseInertiaByVector(mRotation, Vec3(inPosition - mPosition).Cross(inImpulse)));
+
147}
+
+
148
+
+
149void Body::AddAngularImpulse(Vec3Arg inAngularImpulse)
+
150{
+ +
152
+
153 SetAngularVelocityClamped(mMotionProperties->GetAngularVelocity() + mMotionProperties->MultiplyWorldSpaceInverseInertiaByVector(mRotation, inAngularImpulse));
+
154}
+
+
155
+
156void Body::GetSleepTestPoints(RVec3 *outPoints) const
+
157{
+
158 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::Read));
+
159
+
160 // Center of mass is the first position
+
161 outPoints[0] = mPosition;
+
162
+
163 // The second and third position are on the largest axis of the bounding box
+
164 Vec3 extent = mShape->GetLocalBounds().GetExtent();
+
165 int lowest_component = extent.GetLowestComponentIndex();
+
166 Mat44 rotation = Mat44::sRotation(mRotation);
+
167 switch (lowest_component)
+
168 {
+
169 case 0:
+
170 outPoints[1] = mPosition + extent.GetY() * rotation.GetColumn3(1);
+
171 outPoints[2] = mPosition + extent.GetZ() * rotation.GetColumn3(2);
+
172 break;
+
173
+
174 case 1:
+
175 outPoints[1] = mPosition + extent.GetX() * rotation.GetColumn3(0);
+
176 outPoints[2] = mPosition + extent.GetZ() * rotation.GetColumn3(2);
+
177 break;
+
178
+
179 case 2:
+
180 outPoints[1] = mPosition + extent.GetX() * rotation.GetColumn3(0);
+
181 outPoints[2] = mPosition + extent.GetY() * rotation.GetColumn3(1);
+
182 break;
+
183
+
184 default:
+
185 JPH_ASSERT(false);
+
186 break;
+
187 }
+
188}
+
189
+
+ +
191{
+
192 RVec3 points[3];
+
193 GetSleepTestPoints(points);
+
194 mMotionProperties->ResetSleepTestSpheres(points);
+
195}
+
+
196
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
Vec3 GetExtent() const
Get extent of bounding box (half of the size)
Definition AABox.h:111
+
Definition Body.h:35
+
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:249
+
Vec3 GetWorldSpaceSurfaceNormal(const SubShapeID &inSubShapeID, RVec3Arg inPosition) const
Get surface normal of a particular sub shape and its world space surface position on this body.
Definition Body.inl:114
+
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:61
+
bool IsSensor() const
Check if this body is a sensor.
Definition Body.h:74
+
void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Update rotation using an Euler step (using during position integrate & constraint solving)
Definition Body.inl:81
+
bool IsSoftBody() const
Check if this body is a soft body.
Definition Body.h:49
+
RMat44 GetWorldTransform() const
Calculates the transform of this body.
Definition Body.inl:9
+
const CollisionGroup & GetCollisionGroup() const
Collision group and sub-group ID, determines which other objects it collides with.
Definition Body.h:124
+
void SetLinearVelocityClamped(Vec3Arg inLinearVelocity)
Set world space linear velocity of the center of mass, will make sure the value is clamped against th...
Definition Body.h:150
+
uint32 GetIndexInActiveBodiesInternal() const
Access to the index in the BodyManager::mActiveBodies list.
Definition Body.h:316
+
static constexpr uint32 cInactiveIndex
Constant indicating that body is not active.
Definition Body.h:329
+
static bool sFindCollidingPairsCanCollide(const Body &inBody1, const Body &inBody2)
Definition Body.inl:30
+
Mat44 GetInverseInertia() const
Get inverse inertia tensor in world space.
Definition Body.inl:120
+
bool IsRigidBody() const
Check if this body is a rigid body.
Definition Body.h:46
+
bool IsStatic() const
Check if this body is static (not movable)
Definition Body.h:55
+
bool GetCollideKinematicVsNonDynamic() const
Check if kinematic objects can generate contact points against other kinematic or static objects.
Definition Body.h:82
+
void SetAngularVelocityClamped(Vec3Arg inAngularVelocity)
Set world space angular velocity of the center of mass, will make sure the value is clamped against t...
Definition Body.h:159
+
RMat44 GetCenterOfMassTransform() const
Calculates the transform for this body's center of mass.
Definition Body.inl:16
+
void ResetSleepTimer()
Resets the sleep timer. This does not wake up the body if it is sleeping, but allows resetting the sy...
Definition Body.inl:190
+
RMat44 GetInverseCenterOfMassTransform() const
Calculates the inverse of the transform for this body's center of mass.
Definition Body.inl:23
+
void AddAngularImpulse(Vec3Arg inAngularImpulse)
Add angular impulse in world space (unit: N m s)
Definition Body.inl:149
+
void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Definition Body.inl:100
+
bool IsKinematic() const
Check if this body is kinematic (keyframed), which means that it will move according to its current v...
Definition Body.h:58
+
JPH_OVERRIDE_NEW_DELETE const BodyID & GetID() const
Get the id of this body.
Definition Body.h:40
+
void AddForce(Vec3Arg inForce)
Add force (unit: N) at center of mass for the next time step, will be reset after the next call to Ph...
Definition Body.h:168
+
void AddTorque(Vec3Arg inTorque)
Add torque (unit: N m) for the next time step, will be reset after the next call to PhysicsSystem::Up...
Definition Body.h:174
+
void AddImpulse(Vec3Arg inImpulse)
Add impulse to center of mass (unit: kg m/s)
Definition Body.inl:133
+
bool CanCollide(const CollisionGroup &inOther) const
Check if this object collides with another object.
Definition CollisionGroup.h:71
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Mat44 PreTranslated(Vec3Arg inTranslation) const
Pre multiply by translation matrix: result = this * Mat44::sTranslation(inTranslation)
Definition Mat44.inl:898
+
JPH_INLINE Vec3 Multiply3x3Transposed(Vec3Arg inV) const
Multiply vector by only 3x3 part of the transpose of the matrix ( )
Definition Mat44.inl:336
+
JPH_INLINE Vec3 GetColumn3(uint inCol) const
Definition Mat44.h:158
+
static JPH_INLINE Mat44 sRotationTranslation(QuatArg inR, Vec3Arg inT)
Get matrix that rotates and translates.
Definition Mat44.inl:149
+
static JPH_INLINE Mat44 sRotation(Vec3Arg inAxis, float inAngle)
Rotate around arbitrary axis.
Definition Mat44.inl:139
+
static JPH_INLINE Mat44 sInverseRotationTranslation(QuatArg inR, Vec3Arg inT)
Get inverse matrix of sRotationTranslation.
Definition Mat44.inl:156
+
Vec3 GetLinearVelocity() const
Get world space linear velocity of the center of mass.
Definition MotionProperties.h:43
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass.
Definition MotionProperties.h:52
+
float GetInverseMass() const
Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies ha...
Definition MotionProperties.h:95
+
JPH_INLINE Vec3 MultiplyWorldSpaceInverseInertiaByVector(QuatArg inBodyRotation, Vec3Arg inV) const
Multiply a vector with the inverse world space inertia tensor ( ). Zero if object is static or kinema...
Definition MotionProperties.inl:76
+
void ResetSleepTestSpheres(const RVec3 *inPoints)
Reset spheres to center around inPoints with radius 0.
Definition MotionProperties.inl:144
+
Mat44 GetInverseInertiaForRotation(Mat44Arg inRotation) const
Get inverse inertia matrix ( ) for a given object rotation (translation will be ignored)....
Definition MotionProperties.inl:59
+
static JPH_INLINE Quat sRotation(Vec3Arg inAxis, float inAngle)
Rotation from axis and angle.
Definition Quat.inl:74
+
bool IsNaN() const
If any component of this quaternion is a NaN (not a number)
Definition Quat.h:62
+
virtual AABox GetLocalBounds() const =0
Get local bounding box including convex radius, this box is centered around the center of mass rather...
+
virtual Vec3 GetCenterOfMass() const
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition Shape.h:209
+
virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const =0
+
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
+
JPH_INLINE Vec3 Normalized() const
Normalize vector.
Definition Vec3.inl:702
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec3.inl:677
+
JPH_INLINE int GetLowestComponentIndex() const
Get index of component with lowest value.
Definition Vec3.inl:562
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
+
+ + + + diff --git a/_body_access_8cpp.html b/_body_access_8cpp.html new file mode 100644 index 000000000..379d3d935 --- /dev/null +++ b/_body_access_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyAccess.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyAccess.cpp File Reference
+
+
+
+
+ + + + diff --git a/_body_access_8h.html b/_body_access_8h.html new file mode 100644 index 000000000..bd4652d53 --- /dev/null +++ b/_body_access_8h.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyAccess.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyAccess.h File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_body_access_8h_source.html b/_body_access_8h_source.html new file mode 100644 index 000000000..802ac0cc8 --- /dev/null +++ b/_body_access_8h_source.html @@ -0,0 +1,176 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyAccess.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyAccess.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
+
7#ifdef JPH_ENABLE_ASSERTS
+
8
+ +
10
+
11class BodyAccess
+
12{
+
13public:
+
15 enum class EAccess : uint8
+
16 {
+
17 None = 0,
+
18 Read = 1,
+
19 ReadWrite = 3,
+
20 };
+
21
+
23 class Grant
+
24 {
+
25 public:
+
26 inline Grant(EAccess inVelocity, EAccess inPosition)
+
27 {
+
28 JPH_ASSERT(sVelocityAccess == EAccess::ReadWrite);
+
29 JPH_ASSERT(sPositionAccess == EAccess::ReadWrite);
+
30
+
31 sVelocityAccess = inVelocity;
+
32 sPositionAccess = inPosition;
+
33 }
+
34
+
35 inline ~Grant()
+
36 {
+
37 sVelocityAccess = EAccess::ReadWrite;
+
38 sPositionAccess = EAccess::ReadWrite;
+
39 }
+
40 };
+
41
+
43 static bool sCheckRights(EAccess inRights, EAccess inDesiredRights)
+
44 {
+
45 return (uint8(inRights) & uint8(inDesiredRights)) == uint8(inDesiredRights);
+
46 }
+
47
+
48 // Various permissions that can be granted
+
49 static thread_local EAccess sVelocityAccess;
+
50 static thread_local EAccess sPositionAccess;
+
51};
+
52
+ +
54
+
55#endif // JPH_ENABLE_ASSERTS
+
@ None
No degrees of freedom are allowed. Note that this is not valid and will crash. Use a static body inst...
+
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
+
+ + + + diff --git a/_body_activation_listener_8h.html b/_body_activation_listener_8h.html new file mode 100644 index 000000000..138060217 --- /dev/null +++ b/_body_activation_listener_8h.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyActivationListener.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyActivationListener.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  BodyActivationListener
 
+
+
+ + + + diff --git a/_body_activation_listener_8h.js b/_body_activation_listener_8h.js new file mode 100644 index 000000000..4dbd4b250 --- /dev/null +++ b/_body_activation_listener_8h.js @@ -0,0 +1,4 @@ +var _body_activation_listener_8h = +[ + [ "BodyActivationListener", "class_body_activation_listener.html", "class_body_activation_listener" ] +]; \ No newline at end of file diff --git a/_body_activation_listener_8h_source.html b/_body_activation_listener_8h_source.html new file mode 100644 index 000000000..6319ba32b --- /dev/null +++ b/_body_activation_listener_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyActivationListener.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyActivationListener.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
+
9class BodyID;
+
10
+
+ +
14{
+
15public:
+
17 virtual ~BodyActivationListener() = default;
+
18
+
21 virtual void OnBodyActivated(const BodyID &inBodyID, uint64 inBodyUserData) = 0;
+
22
+
25 virtual void OnBodyDeactivated(const BodyID &inBodyID, uint64 inBodyUserData) = 0;
+
26};
+
+
27
+ +
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
Definition BodyActivationListener.h:14
+
virtual ~BodyActivationListener()=default
Ensure virtual destructor.
+
virtual void OnBodyActivated(const BodyID &inBodyID, uint64 inBodyUserData)=0
+
virtual void OnBodyDeactivated(const BodyID &inBodyID, uint64 inBodyUserData)=0
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
+
+ + + + diff --git a/_body_creation_settings_8cpp.html b/_body_creation_settings_8cpp.html new file mode 100644 index 000000000..678b1b464 --- /dev/null +++ b/_body_creation_settings_8cpp.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyCreationSettings.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyCreationSettings.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (BodyCreationSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (BodyCreationSettings )
+
+ +
+
+
+
+ + + + diff --git a/_body_creation_settings_8cpp.js b/_body_creation_settings_8cpp.js new file mode 100644 index 000000000..ac6000038 --- /dev/null +++ b/_body_creation_settings_8cpp.js @@ -0,0 +1,4 @@ +var _body_creation_settings_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_body_creation_settings_8cpp.html#a68abc39f80927978924c4fa79c9a04de", null ] +]; \ No newline at end of file diff --git a/_body_creation_settings_8h.html b/_body_creation_settings_8h.html new file mode 100644 index 000000000..ba648fa56 --- /dev/null +++ b/_body_creation_settings_8h.html @@ -0,0 +1,176 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyCreationSettings.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyCreationSettings.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  BodyCreationSettings
 Settings for constructing a rigid body. More...
 
+ + + + +

+Enumerations

enum class  EOverrideMassProperties : uint8 { CalculateMassAndInertia +, CalculateInertia +, MassAndInertiaProvided + }
 Enum used in BodyCreationSettings to indicate how mass and inertia should be calculated. More...
 
+

Enumeration Type Documentation

+ +

◆ EOverrideMassProperties

+ +
+
+ + + + + +
+ + + + +
enum class EOverrideMassProperties : uint8
+
+strong
+
+ +

Enum used in BodyCreationSettings to indicate how mass and inertia should be calculated.

+ + + + +
Enumerator
CalculateMassAndInertia 

Tells the system to calculate the mass and inertia based on density.

+
CalculateInertia 

Tells the system to take the mass from mMassPropertiesOverride and to calculate the inertia based on density of the shapes and to scale it to the provided mass.

+
MassAndInertiaProvided 

Tells the system to take the mass and inertia from mMassPropertiesOverride.

+
+ +
+
+
+
+ + + + diff --git a/_body_creation_settings_8h.js b/_body_creation_settings_8h.js new file mode 100644 index 000000000..0c356852b --- /dev/null +++ b/_body_creation_settings_8h.js @@ -0,0 +1,9 @@ +var _body_creation_settings_8h = +[ + [ "BodyCreationSettings", "class_body_creation_settings.html", "class_body_creation_settings" ], + [ "EOverrideMassProperties", "_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38", [ + [ "CalculateMassAndInertia", "_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a945736934966a328b226aea49bb2ead6", null ], + [ "CalculateInertia", "_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a71aee60a0e48bbd1bd2020f47b7d7682", null ], + [ "MassAndInertiaProvided", "_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a851f1413e004fb968effbb7c8e8d5965", null ] + ] ] +]; \ No newline at end of file diff --git a/_body_creation_settings_8h_source.html b/_body_creation_settings_8h_source.html new file mode 100644 index 000000000..db602efb1 --- /dev/null +++ b/_body_creation_settings_8h_source.html @@ -0,0 +1,283 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyCreationSettings.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyCreationSettings.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
+ + + + + + + + +
15
+ +
17
+
18class StreamIn;
+
19class StreamOut;
+
20
+ +
28
+
+ +
31{
+
32public:
+ +
34
+
35
+ +
37 BodyCreationSettings(const ShapeSettings *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer) : mPosition(inPosition), mRotation(inRotation), mObjectLayer(inObjectLayer), mMotionType(inMotionType), mShape(inShape) { }
+
38 BodyCreationSettings(const Shape *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer) : mPosition(inPosition), mRotation(inRotation), mObjectLayer(inObjectLayer), mMotionType(inMotionType), mShapePtr(inShape) { }
+
39
+
41 const ShapeSettings * GetShapeSettings() const { return mShape; }
+
42 void SetShapeSettings(const ShapeSettings *inShape) { mShape = inShape; mShapePtr = nullptr; }
+
43
+
45 Shape::ShapeResult ConvertShapeSettings();
+
46
+
48 const Shape * GetShape() const;
+
49 void SetShape(const Shape *inShape) { mShapePtr = inShape; mShape = nullptr; }
+
50
+
52 bool HasMassProperties() const { return mAllowDynamicOrKinematic || mMotionType != EMotionType::Static; }
+
53
+
55 MassProperties GetMassProperties() const;
+
56
+
58 void SaveBinaryState(StreamOut &inStream) const;
+
59
+
61 void RestoreBinaryState(StreamIn &inStream);
+
62
+ + + + + + +
69
+
73 void SaveWithChildren(StreamOut &inStream, ShapeToIDMap *ioShapeMap, MaterialToIDMap *ioMaterialMap, GroupFilterToIDMap *ioGroupFilterMap) const;
+
74
+ +
76
+
78 static BCSResult sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap, IDToGroupFilterMap &ioGroupFilterMap);
+
79
+
80 RVec3 mPosition = RVec3::sZero();
+
81 Quat mRotation = Quat::sIdentity();
+
82 Vec3 mLinearVelocity = Vec3::sZero();
+
83 Vec3 mAngularVelocity = Vec3::sZero();
+
84
+
86 uint64 mUserData = 0;
+
87
+
89 ObjectLayer mObjectLayer = 0;
+ +
91
+ + +
95 bool mAllowDynamicOrKinematic = false;
+
96 bool mIsSensor = false;
+
97 bool mCollideKinematicVsNonDynamic = false;
+
98 bool mUseManifoldReduction = true;
+
99 bool mApplyGyroscopicForce = false;
+ +
101 bool mEnhancedInternalEdgeRemoval = false;
+
102 bool mAllowSleeping = true;
+
103 float mFriction = 0.2f;
+
104 float mRestitution = 0.0f;
+
105 float mLinearDamping = 0.05f;
+
106 float mAngularDamping = 0.05f;
+
107 float mMaxLinearVelocity = 500.0f;
+
108 float mMaxAngularVelocity = 0.25f * JPH_PI * 60.0f;
+
109 float mGravityFactor = 1.0f;
+
110 uint mNumVelocityStepsOverride = 0;
+
111 uint mNumPositionStepsOverride = 0;
+
112
+ +
115 float mInertiaMultiplier = 1.0f;
+ +
117
+
118private:
+ +
121 RefConst<Shape> mShapePtr;
+
122};
+
+
123
+ + +
EAllowedDOFs
Enum used in BodyCreationSettings and MotionProperties to indicate which degrees of freedom a body ha...
Definition AllowedDOFs.h:11
+
@ All
All degrees of freedom are allowed.
+
EOverrideMassProperties
Enum used in BodyCreationSettings to indicate how mass and inertia should be calculated.
Definition BodyCreationSettings.h:23
+
@ CalculateInertia
Tells the system to take the mass from mMassPropertiesOverride and to calculate the inertia based on ...
+
@ MassAndInertiaProvided
Tells the system to take the mass and inertia from mMassPropertiesOverride.
+
@ CalculateMassAndInertia
Tells the system to calculate the mass and inertia based on density.
+ +
std::uint8_t uint8
Definition Core.h:453
+
#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
+ +
EMotionQuality
Motion quality, or how well it detects collisions when it has a high velocity.
Definition MotionQuality.h:11
+ + +
EMotionType
Motion type of a physics body.
Definition MotionType.h:11
+
@ Static
Non movable.
+
@ Dynamic
Responds to forces as a normal physics object.
+ +
uint16 ObjectLayer
Definition ObjectLayer.h:16
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ + +
Definition Array.h:36
+
Settings for constructing a rigid body.
Definition BodyCreationSettings.h:31
+
void SetShape(const Shape *inShape)
Definition BodyCreationSettings.h:49
+
StreamUtils::ObjectToIDMap< GroupFilter > GroupFilterToIDMap
Definition BodyCreationSettings.h:63
+
StreamUtils::ObjectToIDMap< PhysicsMaterial > MaterialToIDMap
Definition BodyCreationSettings.h:67
+
const ShapeSettings * GetShapeSettings() const
Access to the shape settings object. This contains serializable (non-runtime optimized) information a...
Definition BodyCreationSettings.h:41
+
BodyCreationSettings(const Shape *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)
Definition BodyCreationSettings.h:38
+
bool HasMassProperties() const
Check if the mass properties of this body will be calculated (only relevant for kinematic or dynamic ...
Definition BodyCreationSettings.h:52
+
CollisionGroup mCollisionGroup
The collision group this body belongs to (determines if two objects can collide)
Definition BodyCreationSettings.h:90
+
Shape::ShapeToIDMap ShapeToIDMap
Definition BodyCreationSettings.h:65
+
MassProperties mMassPropertiesOverride
Contains replacement mass settings which override the automatically calculated values.
Definition BodyCreationSettings.h:116
+
void SetShapeSettings(const ShapeSettings *inShape)
Definition BodyCreationSettings.h:42
+
Definition CollisionGroup.h:20
+
Describes the mass and inertia properties of a body. Used during body construction only.
Definition MassProperties.h:16
+
Definition Quat.h:33
+
static JPH_INLINE Quat sIdentity()
Definition Quat.h:103
+
Definition Reference.h:151
+ +
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition Shape.h:184
+
StreamUtils::IDToObjectMap< Shape > IDToShapeMap
Definition Shape.h:394
+
StreamUtils::ObjectToIDMap< Shape > ShapeToIDMap
Definition Shape.h:393
+
Definition Shape.h:145
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
UnorderedMap< const Type *, uint32 > ObjectToIDMap
Definition StreamUtils.h:18
+
+
+ + + + diff --git a/_body_filter_8h.html b/_body_filter_8h.html new file mode 100644 index 000000000..0c534acde --- /dev/null +++ b/_body_filter_8h.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyFilter.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyFilter.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + +

+Classes

class  BodyFilter
 Class function to filter out bodies, returns true if test should collide with body. More...
 
class  IgnoreSingleBodyFilter
 A simple body filter implementation that ignores a single, specified body. More...
 
class  IgnoreMultipleBodiesFilter
 A simple body filter implementation that ignores multiple, specified bodies. More...
 
class  IgnoreSingleBodyFilterChained
 Ignores a single body and chains the filter to another filter. More...
 
class  BodyDrawFilter
 Class function to filter out bodies for debug rendering, returns true if body should be rendered. More...
 
+
+
+ + + + diff --git a/_body_filter_8h.js b/_body_filter_8h.js new file mode 100644 index 000000000..d5353fb6e --- /dev/null +++ b/_body_filter_8h.js @@ -0,0 +1,8 @@ +var _body_filter_8h = +[ + [ "BodyFilter", "class_body_filter.html", "class_body_filter" ], + [ "IgnoreSingleBodyFilter", "class_ignore_single_body_filter.html", "class_ignore_single_body_filter" ], + [ "IgnoreMultipleBodiesFilter", "class_ignore_multiple_bodies_filter.html", "class_ignore_multiple_bodies_filter" ], + [ "IgnoreSingleBodyFilterChained", "class_ignore_single_body_filter_chained.html", "class_ignore_single_body_filter_chained" ], + [ "BodyDrawFilter", "class_body_draw_filter.html", "class_body_draw_filter" ] +]; \ No newline at end of file diff --git a/_body_filter_8h_source.html b/_body_filter_8h_source.html new file mode 100644 index 000000000..faeb77b73 --- /dev/null +++ b/_body_filter_8h_source.html @@ -0,0 +1,293 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyFilter.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyFilter.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
+ + +
9
+ +
11
+
12class Body;
+
13
+
+ +
16{
+
17public:
+
19 virtual ~BodyFilter() = default;
+
20
+
+
22 virtual bool ShouldCollide([[maybe_unused]] const BodyID &inBodyID) const
+
23 {
+
24 return true;
+
25 }
+
+
26
+
+
28 virtual bool ShouldCollideLocked([[maybe_unused]] const Body &inBody) const
+
29 {
+
30 return true;
+
31 }
+
+
32};
+
+
33
+
+ +
36{
+
37public:
+
+
39 explicit IgnoreSingleBodyFilter(const BodyID &inBodyID) :
+
40 mBodyID(inBodyID)
+
41 {
+
42 }
+
+
43
+
+
45 virtual bool ShouldCollide(const BodyID &inBodyID) const override
+
46 {
+
47 return mBodyID != inBodyID;
+
48 }
+
+
49
+
50private:
+
51 BodyID mBodyID;
+
52};
+
+
53
+
+ +
56{
+
57public:
+
+
59 void Clear()
+
60 {
+
61 mBodyIDs.clear();
+
62 }
+
+
63
+
+
65 void Reserve(uint inSize)
+
66 {
+
67 mBodyIDs.reserve(inSize);
+
68 }
+
+
69
+
+
71 void IgnoreBody(const BodyID &inBodyID)
+
72 {
+
73 mBodyIDs.push_back(inBodyID);
+
74 }
+
+
75
+
+
77 virtual bool ShouldCollide(const BodyID &inBodyID) const override
+
78 {
+
79 return std::find(mBodyIDs.begin(), mBodyIDs.end(), inBodyID) == mBodyIDs.end();
+
80 }
+
+
81
+
82private:
+
83 Array<BodyID> mBodyIDs;
+
84};
+
+
85
+
+ +
88{
+
89public:
+
+
91 explicit IgnoreSingleBodyFilterChained(const BodyID inBodyID, const BodyFilter &inFilter) :
+
92 mBodyID(inBodyID),
+
93 mFilter(inFilter)
+
94 {
+
95 }
+
+
96
+
+
98 virtual bool ShouldCollide(const BodyID &inBodyID) const override
+
99 {
+
100 return inBodyID != mBodyID && mFilter.ShouldCollide(inBodyID);
+
101 }
+
+
102
+
+
104 virtual bool ShouldCollideLocked(const Body &inBody) const override
+
105 {
+
106 return mFilter.ShouldCollideLocked(inBody);
+
107 }
+
+
108
+
109private:
+
110 BodyID mBodyID;
+
111 const BodyFilter & mFilter;
+
112};
+
+
113
+
114#ifdef JPH_DEBUG_RENDERER
+
+ +
117{
+
118public:
+
120 virtual ~BodyDrawFilter() = default;
+
121
+
+
123 virtual bool ShouldDraw([[maybe_unused]] const Body& inBody) const
+
124 {
+
125 return true;
+
126 }
+
+
127};
+
+
128#endif // JPH_DEBUG_RENDERER
+
129
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Definition Array.h:36
+
Class function to filter out bodies for debug rendering, returns true if body should be rendered.
Definition BodyFilter.h:117
+
virtual bool ShouldDraw(const Body &inBody) const
Filter function. Returns true if inBody should be rendered.
Definition BodyFilter.h:123
+
virtual ~BodyDrawFilter()=default
Destructor.
+
Class function to filter out bodies, returns true if test should collide with body.
Definition BodyFilter.h:16
+
virtual bool ShouldCollideLocked(const Body &inBody) const
Filter function. Returns true if we should collide with inBody (this is called after the body is lock...
Definition BodyFilter.h:28
+
virtual ~BodyFilter()=default
Destructor.
+
virtual bool ShouldCollide(const BodyID &inBodyID) const
Filter function. Returns true if we should collide with inBodyID.
Definition BodyFilter.h:22
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
A simple body filter implementation that ignores multiple, specified bodies.
Definition BodyFilter.h:56
+
virtual bool ShouldCollide(const BodyID &inBodyID) const override
Filter function. Returns true if we should collide with inBodyID.
Definition BodyFilter.h:77
+
void Reserve(uint inSize)
Reserve space for inSize body ID's.
Definition BodyFilter.h:65
+
void IgnoreBody(const BodyID &inBodyID)
Add a body to be ignored.
Definition BodyFilter.h:71
+
void Clear()
Remove all bodies from the filter.
Definition BodyFilter.h:59
+
Ignores a single body and chains the filter to another filter.
Definition BodyFilter.h:88
+
IgnoreSingleBodyFilterChained(const BodyID inBodyID, const BodyFilter &inFilter)
Constructor.
Definition BodyFilter.h:91
+
virtual bool ShouldCollide(const BodyID &inBodyID) const override
Filter function. Returns true if we should collide with inBodyID.
Definition BodyFilter.h:98
+
virtual bool ShouldCollideLocked(const Body &inBody) const override
Filter function. Returns true if we should collide with inBody (this is called after the body is lock...
Definition BodyFilter.h:104
+
A simple body filter implementation that ignores a single, specified body.
Definition BodyFilter.h:36
+
virtual bool ShouldCollide(const BodyID &inBodyID) const override
Filter function. Returns true if we should collide with inBodyID.
Definition BodyFilter.h:45
+
IgnoreSingleBodyFilter(const BodyID &inBodyID)
Constructor, pass the body you want to ignore.
Definition BodyFilter.h:39
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
+
+ + + + diff --git a/_body_i_d_8h.html b/_body_i_d_8h.html new file mode 100644 index 000000000..8c70a6352 --- /dev/null +++ b/_body_i_d_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyID.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyID.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  BodyID
 ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding race conditions. More...
 
+
+
+ + + + diff --git a/_body_i_d_8h.js b/_body_i_d_8h.js new file mode 100644 index 000000000..9adaf4ca3 --- /dev/null +++ b/_body_i_d_8h.js @@ -0,0 +1,4 @@ +var _body_i_d_8h = +[ + [ "BodyID", "class_body_i_d.html", "class_body_i_d" ] +]; \ No newline at end of file diff --git a/_body_i_d_8h_source.html b/_body_i_d_8h_source.html new file mode 100644 index 000000000..04a29b4eb --- /dev/null +++ b/_body_i_d_8h_source.html @@ -0,0 +1,252 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyID.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyID.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
+
+
12class BodyID
+
13{
+
14public:
+ +
16
+
17 static constexpr uint32 cInvalidBodyID = 0xffffffff;
+
18 static constexpr uint32 cBroadPhaseBit = 0x00800000;
+
19 static constexpr uint32 cMaxBodyIndex = 0x7fffff;
+
20 static constexpr uint8 cMaxSequenceNumber = 0xff;
+
21
+
+ + +
25 {
+
26 }
+
+
27
+
+
29 explicit BodyID(uint32 inID) :
+
30 mID(inID)
+
31 {
+
32 JPH_ASSERT((inID & cBroadPhaseBit) == 0 || inID == cInvalidBodyID); // Check bit used by broadphase
+
33 }
+
+
34
+
+
36 explicit BodyID(uint32 inID, uint8 inSequenceNumber) :
+
37 mID((uint32(inSequenceNumber) << 24) | inID)
+
38 {
+
39 JPH_ASSERT(inID < cMaxBodyIndex); // Should not use bit pattern for invalid ID and should not use the broadphase bit
+
40 }
+
+
41
+
+
43 inline uint32 GetIndex() const
+
44 {
+
45 return mID & cMaxBodyIndex;
+
46 }
+
+
47
+
+
52 inline uint8 GetSequenceNumber() const
+
53 {
+
54 return uint8(mID >> 24);
+
55 }
+
+
56
+
+ +
59 {
+
60 return mID;
+
61 }
+
+
62
+
+
64 inline bool IsInvalid() const
+
65 {
+
66 return mID == cInvalidBodyID;
+
67 }
+
+
68
+
+
70 inline bool operator == (const BodyID &inRHS) const
+
71 {
+
72 return mID == inRHS.mID;
+
73 }
+
+
74
+
+
76 inline bool operator != (const BodyID &inRHS) const
+
77 {
+
78 return mID != inRHS.mID;
+
79 }
+
+
80
+
+
82 inline bool operator < (const BodyID &inRHS) const
+
83 {
+
84 return mID < inRHS.mID;
+
85 }
+
+
86
+
+
88 inline bool operator > (const BodyID &inRHS) const
+
89 {
+
90 return mID > inRHS.mID;
+
91 }
+
+
92
+
93private:
+
94 uint32 mID;
+
95};
+
+
96
+ +
98
+
99// Create a std::hash for BodyID
+
100JPH_MAKE_HASHABLE(JPH::BodyID, t.GetIndexAndSequenceNumber())
+
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_MAKE_HASHABLE(type,...)
Definition HashCombine.h:87
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
bool IsInvalid() const
Check if the ID is valid.
Definition BodyID.h:64
+
bool operator<(const BodyID &inRHS) const
Smaller than operator, can be used for sorting bodies.
Definition BodyID.h:82
+
BodyID()
Construct invalid body ID.
Definition BodyID.h:23
+
BodyID(uint32 inID)
Construct from index and sequence number combined in a single uint32 (use with care!...
Definition BodyID.h:29
+
BodyID(uint32 inID, uint8 inSequenceNumber)
Construct from index and sequence number.
Definition BodyID.h:36
+
bool operator==(const BodyID &inRHS) const
Equals check.
Definition BodyID.h:70
+
bool operator!=(const BodyID &inRHS) const
Not equals check.
Definition BodyID.h:76
+
static constexpr uint32 cMaxBodyIndex
Maximum value for body index (also the maximum amount of bodies supported - 1)
Definition BodyID.h:19
+
static constexpr uint32 cBroadPhaseBit
This bit is used by the broadphase.
Definition BodyID.h:18
+
bool operator>(const BodyID &inRHS) const
Greater than operator, can be used for sorting bodies.
Definition BodyID.h:88
+
uint32 GetIndexAndSequenceNumber() const
Returns the index and sequence number combined in an uint32.
Definition BodyID.h:58
+
static constexpr uint8 cMaxSequenceNumber
Maximum value for the sequence number.
Definition BodyID.h:20
+
uint32 GetIndex() const
Get index in body array.
Definition BodyID.h:43
+
uint8 GetSequenceNumber() const
Definition BodyID.h:52
+
static JPH_OVERRIDE_NEW_DELETE constexpr uint32 cInvalidBodyID
The value for an invalid body ID.
Definition BodyID.h:17
+
+
+ + + + diff --git a/_body_interface_8cpp.html b/_body_interface_8cpp.html new file mode 100644 index 000000000..8da380c98 --- /dev/null +++ b/_body_interface_8cpp.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyInterface.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyInterface.cpp File Reference
+
+
+
+
+ + + + diff --git a/_body_interface_8h.html b/_body_interface_8h.html new file mode 100644 index 000000000..8a85cdc02 --- /dev/null +++ b/_body_interface_8h.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyInterface.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyInterface.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  BodyInterface
 
+
+
+ + + + diff --git a/_body_interface_8h.js b/_body_interface_8h.js new file mode 100644 index 000000000..a18a857b8 --- /dev/null +++ b/_body_interface_8h.js @@ -0,0 +1,4 @@ +var _body_interface_8h = +[ + [ "BodyInterface", "class_body_interface.html", "class_body_interface" ] +]; \ No newline at end of file diff --git a/_body_interface_8h_source.html b/_body_interface_8h_source.html new file mode 100644 index 000000000..2d54d96af --- /dev/null +++ b/_body_interface_8h_source.html @@ -0,0 +1,342 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyInterface.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyInterface.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
+ + + + + + +
13#include <Jolt/Core/Reference.h>
+
14
+ +
16
+
17class Body;
+ + + +
21class BroadPhase;
+
22class BodyManager;
+ +
24class PhysicsMaterial;
+
25class SubShapeID;
+
26class Shape;
+ + + +
30class AABox;
+
31
+
+ +
35{
+
36public:
+
38 void Init(BodyLockInterface &inBodyLockInterface, BodyManager &inBodyManager, BroadPhase &inBroadPhase) { mBodyLockInterface = &inBodyLockInterface; mBodyManager = &inBodyManager; mBroadPhase = &inBroadPhase; }
+
39
+
42 Body * CreateBody(const BodyCreationSettings &inSettings);
+
43
+
46 Body * CreateSoftBody(const SoftBodyCreationSettings &inSettings);
+
47
+
51 Body * CreateBodyWithID(const BodyID &inBodyID, const BodyCreationSettings &inSettings);
+
52
+
54 Body * CreateSoftBodyWithID(const BodyID &inBodyID, const SoftBodyCreationSettings &inSettings);
+
55
+
59 Body * CreateBodyWithoutID(const BodyCreationSettings &inSettings) const;
+
60
+
62 Body * CreateSoftBodyWithoutID(const SoftBodyCreationSettings &inSettings) const;
+
63
+
66 void DestroyBodyWithoutID(Body *inBody) const;
+
67
+
70 bool AssignBodyID(Body *ioBody);
+
71
+
74 bool AssignBodyID(Body *ioBody, const BodyID &inBodyID);
+
75
+
77 Body * UnassignBodyID(const BodyID &inBodyID);
+
78
+
84 void UnassignBodyIDs(const BodyID *inBodyIDs, int inNumber, Body **outBodies);
+
85
+
88 void DestroyBody(const BodyID &inBodyID);
+
89
+
92 void DestroyBodies(const BodyID *inBodyIDs, int inNumber);
+
93
+
98 void AddBody(const BodyID &inBodyID, EActivation inActivationMode);
+
99
+
101 void RemoveBody(const BodyID &inBodyID);
+
102
+
104 bool IsAdded(const BodyID &inBodyID) const;
+
105
+
108 BodyID CreateAndAddBody(const BodyCreationSettings &inSettings, EActivation inActivationMode);
+
109
+
112 BodyID CreateAndAddSoftBody(const SoftBodyCreationSettings &inSettings, EActivation inActivationMode);
+
113
+
115 using AddState = void *;
+
116
+
119
+
123 AddState AddBodiesPrepare(BodyID *ioBodies, int inNumber);
+
124
+
127 void AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState, EActivation inActivationMode);
+
128
+
132 void AddBodiesAbort(BodyID *ioBodies, int inNumber, AddState inAddState);
+
133
+
136 void RemoveBodies(BodyID *ioBodies, int inNumber);
+
138
+
141 void ActivateBody(const BodyID &inBodyID);
+
142 void ActivateBodies(const BodyID *inBodyIDs, int inNumber);
+
143 void ActivateBodiesInAABox(const AABox &inBox, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter);
+
144 void DeactivateBody(const BodyID &inBodyID);
+
145 void DeactivateBodies(const BodyID *inBodyIDs, int inNumber);
+
146 bool IsActive(const BodyID &inBodyID) const;
+
147 void ResetSleepTimer(const BodyID &inBodyID);
+
149
+
151 TwoBodyConstraint * CreateConstraint(const TwoBodyConstraintSettings *inSettings, const BodyID &inBodyID1, const BodyID &inBodyID2);
+
152
+
154 void ActivateConstraint(const TwoBodyConstraint *inConstraint);
+
155
+
158
+
160 RefConst<Shape> GetShape(const BodyID &inBodyID) const;
+
161
+
167 void SetShape(const BodyID &inBodyID, const Shape *inShape, bool inUpdateMassProperties, EActivation inActivationMode) const;
+
168
+
174 void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inPreviousCenterOfMass, bool inUpdateMassProperties, EActivation inActivationMode) const;
+
176
+
179 void SetObjectLayer(const BodyID &inBodyID, ObjectLayer inLayer);
+
180 ObjectLayer GetObjectLayer(const BodyID &inBodyID) const;
+
182
+
185 void SetPositionAndRotation(const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode);
+
186 void SetPositionAndRotationWhenChanged(const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode);
+
187 void GetPositionAndRotation(const BodyID &inBodyID, RVec3 &outPosition, Quat &outRotation) const;
+
188 void SetPosition(const BodyID &inBodyID, RVec3Arg inPosition, EActivation inActivationMode);
+
189 RVec3 GetPosition(const BodyID &inBodyID) const;
+
190 RVec3 GetCenterOfMassPosition(const BodyID &inBodyID) const;
+
191 void SetRotation(const BodyID &inBodyID, QuatArg inRotation, EActivation inActivationMode);
+
192 Quat GetRotation(const BodyID &inBodyID) const;
+
193 RMat44 GetWorldTransform(const BodyID &inBodyID) const;
+
194 RMat44 GetCenterOfMassTransform(const BodyID &inBodyID) const;
+
196
+
198 void MoveKinematic(const BodyID &inBodyID, RVec3Arg inTargetPosition, QuatArg inTargetRotation, float inDeltaTime);
+
199
+
202 void SetLinearAndAngularVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity);
+
203 void GetLinearAndAngularVelocity(const BodyID &inBodyID, Vec3 &outLinearVelocity, Vec3 &outAngularVelocity) const;
+
204 void SetLinearVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity);
+
205 Vec3 GetLinearVelocity(const BodyID &inBodyID) const;
+
206 void AddLinearVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity);
+
207 void AddLinearAndAngularVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity);
+
208 void SetAngularVelocity(const BodyID &inBodyID, Vec3Arg inAngularVelocity);
+
209 Vec3 GetAngularVelocity(const BodyID &inBodyID) const;
+
210 Vec3 GetPointVelocity(const BodyID &inBodyID, RVec3Arg inPoint) const;
+
211
+
214 void SetPositionRotationAndVelocity(const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity);
+
215
+
218 void AddForce(const BodyID &inBodyID, Vec3Arg inForce, EActivation inActivationMode = EActivation::Activate);
+
219 void AddForce(const BodyID &inBodyID, Vec3Arg inForce, RVec3Arg inPoint, EActivation inActivationMode = EActivation::Activate);
+
220 void AddTorque(const BodyID &inBodyID, Vec3Arg inTorque, EActivation inActivationMode = EActivation::Activate);
+
221 void AddForceAndTorque(const BodyID &inBodyID, Vec3Arg inForce, Vec3Arg inTorque, EActivation inActivationMode = EActivation::Activate);
+
223
+
226 void AddImpulse(const BodyID &inBodyID, Vec3Arg inImpulse);
+
227 void AddImpulse(const BodyID &inBodyID, Vec3Arg inImpulse, RVec3Arg inPoint);
+
228 void AddAngularImpulse(const BodyID &inBodyID, Vec3Arg inAngularImpulse);
+
229 bool ApplyBuoyancyImpulse(const BodyID &inBodyID, RVec3Arg inSurfacePosition, Vec3Arg inSurfaceNormal, float inBuoyancy, float inLinearDrag, float inAngularDrag, Vec3Arg inFluidVelocity, Vec3Arg inGravity, float inDeltaTime);
+
231
+
234 EBodyType GetBodyType(const BodyID &inBodyID) const;
+
236
+
239 void SetMotionType(const BodyID &inBodyID, EMotionType inMotionType, EActivation inActivationMode);
+
240 EMotionType GetMotionType(const BodyID &inBodyID) const;
+
242
+
245 void SetMotionQuality(const BodyID &inBodyID, EMotionQuality inMotionQuality);
+
246 EMotionQuality GetMotionQuality(const BodyID &inBodyID) const;
+
248
+
250 Mat44 GetInverseInertia(const BodyID &inBodyID) const;
+
251
+
254 void SetRestitution(const BodyID &inBodyID, float inRestitution);
+
255 float GetRestitution(const BodyID &inBodyID) const;
+
257
+
260 void SetFriction(const BodyID &inBodyID, float inFriction);
+
261 float GetFriction(const BodyID &inBodyID) const;
+
263
+
266 void SetGravityFactor(const BodyID &inBodyID, float inGravityFactor);
+
267 float GetGravityFactor(const BodyID &inBodyID) const;
+
269
+
272 void SetUseManifoldReduction(const BodyID &inBodyID, bool inUseReduction);
+
273 bool GetUseManifoldReduction(const BodyID &inBodyID) const;
+
275
+
277 TransformedShape GetTransformedShape(const BodyID &inBodyID) const;
+
278
+
280 uint64 GetUserData(const BodyID &inBodyID) const;
+
281 void SetUserData(const BodyID &inBodyID, uint64 inUserData) const;
+
282
+
284 const PhysicsMaterial * GetMaterial(const BodyID &inBodyID, const SubShapeID &inSubShapeID) const;
+
285
+
287 void InvalidateContactCache(const BodyID &inBodyID);
+
288
+
289private:
+
291 JPH_INLINE void ActivateBodyInternal(Body &ioBody) const;
+
292
+
293 BodyLockInterface * mBodyLockInterface = nullptr;
+
294 BodyManager * mBodyManager = nullptr;
+
295 BroadPhase * mBroadPhase = nullptr;
+
296};
+
+
297
+ + + +
EBodyType
Type of body.
Definition BodyType.h:11
+
#define JPH_EXPORT
Definition Core.h:236
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
EActivation
Enum used by AddBody to determine if the body needs to be initially active.
Definition EActivation.h:11
+
@ Activate
Activate the body, making it part of the simulation.
+ +
EMotionQuality
Motion quality, or how well it detects collisions when it has a high velocity.
Definition MotionQuality.h:11
+ +
EMotionType
Motion type of a physics body.
Definition MotionType.h:11
+ +
uint16 ObjectLayer
Definition ObjectLayer.h:16
+ +
Axis aligned box.
Definition AABox.h:16
+
Settings for constructing a rigid body.
Definition BodyCreationSettings.h:31
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Definition BodyInterface.h:35
+
void Init(BodyLockInterface &inBodyLockInterface, BodyManager &inBodyManager, BroadPhase &inBroadPhase)
Initialize the interface (should only be called by PhysicsSystem)
Definition BodyInterface.h:38
+
void * AddState
Add state handle, used to keep track of a batch of bodies while adding them to the PhysicsSystem.
Definition BodyInterface.h:115
+
Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLock...
Definition BodyLockInterface.h:17
+
Class that contains all bodies.
Definition BodyManager.h:44
+
Used to do coarse collision detection operations to quickly prune out bodies that will not collide.
Definition BroadPhase.h:26
+
Filter class for broadphase layers.
Definition BroadPhaseLayer.h:94
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Filter class for object layers.
Definition ObjectLayer.h:28
+
Definition PhysicsMaterial.h:23
+
Definition Quat.h:33
+
Definition Reference.h:151
+
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition Shape.h:184
+
Definition SoftBodyCreationSettings.h:18
+
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 TransformedShape.h:26
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_body_lock_8h.html b/_body_lock_8h.html new file mode 100644 index 000000000..cbdd9a924 --- /dev/null +++ b/_body_lock_8h.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyLock.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyLock.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

class  BodyLockBase< Write, BodyType >
 Base class for locking bodies for the duration of the scope of this class (do not use directly) More...
 
class  BodyLockRead
 
class  BodyLockWrite
 Specialization that locks a body for writing to. More...
 
+
+
+ + + + diff --git a/_body_lock_8h.js b/_body_lock_8h.js new file mode 100644 index 000000000..f30cddff8 --- /dev/null +++ b/_body_lock_8h.js @@ -0,0 +1,6 @@ +var _body_lock_8h = +[ + [ "BodyLockBase< Write, BodyType >", "class_body_lock_base.html", "class_body_lock_base" ], + [ "BodyLockRead", "class_body_lock_read.html", null ], + [ "BodyLockWrite", "class_body_lock_write.html", null ] +]; \ No newline at end of file diff --git a/_body_lock_8h_source.html b/_body_lock_8h_source.html new file mode 100644 index 000000000..af62dcd1c --- /dev/null +++ b/_body_lock_8h_source.html @@ -0,0 +1,244 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyLock.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyLock.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
+
12template <bool Write, class BodyType>
+
+ +
14{
+
15public:
+
+
17 BodyLockBase(const BodyLockInterface &inBodyLockInterface, const BodyID &inBodyID) :
+
18 mBodyLockInterface(inBodyLockInterface)
+
19 {
+
20 if (inBodyID == BodyID())
+
21 {
+
22 // Invalid body id
+
23 mBodyLockMutex = nullptr;
+
24 mBody = nullptr;
+
25 }
+
26 else
+
27 {
+
28 // Get mutex
+
29 mBodyLockMutex = Write? inBodyLockInterface.LockWrite(inBodyID) : inBodyLockInterface.LockRead(inBodyID);
+
30
+
31 // Get a reference to the body or nullptr when it is no longer valid
+
32 mBody = inBodyLockInterface.TryGetBody(inBodyID);
+
33 }
+
34 }
+
+
35
+
+
37 inline void ReleaseLock()
+
38 {
+
39 if (mBodyLockMutex != nullptr)
+
40 {
+
41 if (Write)
+
42 mBodyLockInterface.UnlockWrite(mBodyLockMutex);
+
43 else
+
44 mBodyLockInterface.UnlockRead(mBodyLockMutex);
+
45
+
46 mBodyLockMutex = nullptr;
+
47 mBody = nullptr;
+
48 }
+
49 }
+
+
50
+
+ +
53 {
+ +
55 }
+
+
56
+
+
58 inline bool Succeeded() const
+
59 {
+
60 return mBody != nullptr;
+
61 }
+
+
62
+
+
64 inline bool SucceededAndIsInBroadPhase() const
+
65 {
+
66 return mBody != nullptr && mBody->IsInBroadPhase();
+
67 }
+
+
68
+
+
70 inline BodyType & GetBody() const
+
71 {
+
72 JPH_ASSERT(mBody != nullptr, "Should check Succeeded() first");
+
73 return *mBody;
+
74 }
+
+
75
+
76private:
+
77 const BodyLockInterface & mBodyLockInterface;
+
78 SharedMutex * mBodyLockMutex;
+
79 BodyType * mBody;
+
80};
+
+
81
+
+
100class BodyLockRead : public BodyLockBase<false, const Body>
+
101{
+ +
103};
+
+
104
+
+
106class BodyLockWrite : public BodyLockBase<true, Body>
+
107{
+ +
109};
+
+
110
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Base class for locking bodies for the duration of the scope of this class (do not use directly)
Definition BodyLock.h:14
+
~BodyLockBase()
Destructor will unlock the body.
Definition BodyLock.h:52
+
BodyLockBase(const BodyLockInterface &inBodyLockInterface, const BodyID &inBodyID)
Constructor will lock the body.
Definition BodyLock.h:17
+
bool Succeeded() const
Test if the lock was successful (if the body ID was valid)
Definition BodyLock.h:58
+
bool SucceededAndIsInBroadPhase() const
Test if the lock was successful (if the body ID was valid) and the body is still in the broad phase.
Definition BodyLock.h:64
+
BodyType & GetBody() const
Access the body.
Definition BodyLock.h:70
+
void ReleaseLock()
Explicitly release the lock (normally this is done in the destructor)
Definition BodyLock.h:37
+
Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLock...
Definition BodyLockInterface.h:17
+
virtual void UnlockRead(SharedMutex *inMutex) const =0
+
Body * TryGetBody(const BodyID &inBodyID) const
Convert body ID to body.
Definition BodyLockInterface.h:50
+
virtual void UnlockWrite(SharedMutex *inMutex) const =0
+
virtual SharedMutex * LockRead(const BodyID &inBodyID) const =0
+
virtual SharedMutex * LockWrite(const BodyID &inBodyID) const =0
+
Definition BodyLock.h:101
+
Specialization that locks a body for writing to.
Definition BodyLock.h:107
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition Mutex.h:166
+
+
+ + + + diff --git a/_body_lock_interface_8h.html b/_body_lock_interface_8h.html new file mode 100644 index 000000000..91d561d89 --- /dev/null +++ b/_body_lock_interface_8h.html @@ -0,0 +1,135 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyLockInterface.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyLockInterface.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Classes

class  BodyLockInterface
 Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLockMultiRead / BodyLockMultiWrite instead. More...
 
class  BodyLockInterfaceNoLock
 Implementation that performs no locking (assumes the lock has already been taken) More...
 
class  BodyLockInterfaceLocking
 Implementation that uses the body manager to lock the correct mutex for a body. More...
 
+
+
+ + + + diff --git a/_body_lock_interface_8h.js b/_body_lock_interface_8h.js new file mode 100644 index 000000000..515625dc3 --- /dev/null +++ b/_body_lock_interface_8h.js @@ -0,0 +1,6 @@ +var _body_lock_interface_8h = +[ + [ "BodyLockInterface", "class_body_lock_interface.html", "class_body_lock_interface" ], + [ "BodyLockInterfaceNoLock", "class_body_lock_interface_no_lock.html", "class_body_lock_interface_no_lock" ], + [ "BodyLockInterfaceLocking", "class_body_lock_interface_locking.html", "class_body_lock_interface_locking" ] +]; \ No newline at end of file diff --git a/_body_lock_interface_8h_source.html b/_body_lock_interface_8h_source.html new file mode 100644 index 000000000..7eb09ddce --- /dev/null +++ b/_body_lock_interface_8h_source.html @@ -0,0 +1,323 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyLockInterface.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyLockInterface.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
+
6#pragma once
+
7
+ + + +
11#include <Jolt/Core/Mutex.h>
+
12
+ +
14
+
+ +
17{
+
18public:
+ +
21
+
23 explicit BodyLockInterface(BodyManager &inBodyManager) : mBodyManager(inBodyManager) { }
+
24 virtual ~BodyLockInterface() = default;
+
25
+
28 virtual SharedMutex * LockRead(const BodyID &inBodyID) const = 0;
+
29 virtual void UnlockRead(SharedMutex *inMutex) const = 0;
+
30 virtual SharedMutex * LockWrite(const BodyID &inBodyID) const = 0;
+
31 virtual void UnlockWrite(SharedMutex *inMutex) const = 0;
+
33
+
+ +
36 {
+ +
38 }
+
+
39
+
42 virtual MutexMask GetMutexMask(const BodyID *inBodies, int inNumber) const = 0;
+
43 virtual void LockRead(MutexMask inMutexMask) const = 0;
+
44 virtual void UnlockRead(MutexMask inMutexMask) const = 0;
+
45 virtual void LockWrite(MutexMask inMutexMask) const = 0;
+
46 virtual void UnlockWrite(MutexMask inMutexMask) const = 0;
+
48
+
50 inline Body * TryGetBody(const BodyID &inBodyID) const { return mBodyManager.TryGetBody(inBodyID); }
+
51
+
52protected:
+ +
54};
+
+
55
+
+ +
58{
+
59public:
+ +
61
+
63 virtual SharedMutex * LockRead([[maybe_unused]] const BodyID &inBodyID) const override { return nullptr; }
+
64 virtual void UnlockRead([[maybe_unused]] SharedMutex *inMutex) const override { /* Nothing to do */ }
+
65 virtual SharedMutex * LockWrite([[maybe_unused]] const BodyID &inBodyID) const override { return nullptr; }
+
66 virtual void UnlockWrite([[maybe_unused]] SharedMutex *inMutex) const override { /* Nothing to do */ }
+
67
+
69 virtual MutexMask GetMutexMask([[maybe_unused]] const BodyID *inBodies, [[maybe_unused]] int inNumber) const override { return 0; }
+
70 virtual void LockRead([[maybe_unused]] MutexMask inMutexMask) const override { /* Nothing to do */ }
+
71 virtual void UnlockRead([[maybe_unused]] MutexMask inMutexMask) const override { /* Nothing to do */ }
+
72 virtual void LockWrite([[maybe_unused]] MutexMask inMutexMask) const override { /* Nothing to do */ }
+
73 virtual void UnlockWrite([[maybe_unused]] MutexMask inMutexMask) const override { /* Nothing to do */ }
+
74};
+
+
75
+
+ +
78{
+
79public:
+ +
81
+
+
83 virtual SharedMutex * LockRead(const BodyID &inBodyID) const override
+
84 {
+
85 SharedMutex &mutex = mBodyManager.GetMutexForBody(inBodyID);
+
86 PhysicsLock::sLockShared(mutex JPH_IF_ENABLE_ASSERTS(, &mBodyManager, EPhysicsLockTypes::PerBody));
+
87 return &mutex;
+
88 }
+
+
89
+
+
90 virtual void UnlockRead(SharedMutex *inMutex) const override
+
91 {
+
92 PhysicsLock::sUnlockShared(*inMutex JPH_IF_ENABLE_ASSERTS(, &mBodyManager, EPhysicsLockTypes::PerBody));
+
93 }
+
+
94
+
+
95 virtual SharedMutex * LockWrite(const BodyID &inBodyID) const override
+
96 {
+
97 SharedMutex &mutex = mBodyManager.GetMutexForBody(inBodyID);
+
98 PhysicsLock::sLock(mutex JPH_IF_ENABLE_ASSERTS(, &mBodyManager, EPhysicsLockTypes::PerBody));
+
99 return &mutex;
+
100 }
+
+
101
+
+
102 virtual void UnlockWrite(SharedMutex *inMutex) const override
+
103 {
+
104 PhysicsLock::sUnlock(*inMutex JPH_IF_ENABLE_ASSERTS(, &mBodyManager, EPhysicsLockTypes::PerBody));
+
105 }
+
+
106
+
+
108 virtual MutexMask GetMutexMask(const BodyID *inBodies, int inNumber) const override
+
109 {
+
110 return mBodyManager.GetMutexMask(inBodies, inNumber);
+
111 }
+
+
112
+
+
113 virtual void LockRead(MutexMask inMutexMask) const override
+
114 {
+
115 mBodyManager.LockRead(inMutexMask);
+
116 }
+
+
117
+
+
118 virtual void UnlockRead(MutexMask inMutexMask) const override
+
119 {
+
120 mBodyManager.UnlockRead(inMutexMask);
+
121 }
+
+
122
+
+
123 virtual void LockWrite(MutexMask inMutexMask) const override
+
124 {
+
125 mBodyManager.LockWrite(inMutexMask);
+
126 }
+
+
127
+
+
128 virtual void UnlockWrite(MutexMask inMutexMask) const override
+
129 {
+
130 mBodyManager.UnlockWrite(inMutexMask);
+
131 }
+
+
132};
+
+
133
+ + + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
+ + +
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLock...
Definition BodyLockInterface.h:17
+
virtual void UnlockRead(SharedMutex *inMutex) const =0
+
BodyManager & mBodyManager
Definition BodyLockInterface.h:53
+
virtual MutexMask GetMutexMask(const BodyID *inBodies, int inNumber) const =0
+
BodyLockInterface(BodyManager &inBodyManager)
Constructor.
Definition BodyLockInterface.h:23
+
Body * TryGetBody(const BodyID &inBodyID) const
Convert body ID to body.
Definition BodyLockInterface.h:50
+
virtual void UnlockRead(MutexMask inMutexMask) const =0
+
MutexMask GetAllBodiesMutexMask() const
Get the mask needed to lock all bodies.
Definition BodyLockInterface.h:35
+
BodyManager::MutexMask MutexMask
Redefine MutexMask.
Definition BodyLockInterface.h:20
+
virtual void UnlockWrite(SharedMutex *inMutex) const =0
+
virtual SharedMutex * LockRead(const BodyID &inBodyID) const =0
+
virtual void LockWrite(MutexMask inMutexMask) const =0
+
virtual SharedMutex * LockWrite(const BodyID &inBodyID) const =0
+
virtual ~BodyLockInterface()=default
+
virtual void LockRead(MutexMask inMutexMask) const =0
+
virtual void UnlockWrite(MutexMask inMutexMask) const =0
+
Implementation that uses the body manager to lock the correct mutex for a body.
Definition BodyLockInterface.h:78
+
virtual void UnlockWrite(SharedMutex *inMutex) const override
Definition BodyLockInterface.h:102
+
virtual SharedMutex * LockWrite(const BodyID &inBodyID) const override
Definition BodyLockInterface.h:95
+
virtual void UnlockRead(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:118
+
virtual void UnlockWrite(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:128
+
virtual void LockWrite(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:123
+
virtual void UnlockRead(SharedMutex *inMutex) const override
Definition BodyLockInterface.h:90
+
virtual SharedMutex * LockRead(const BodyID &inBodyID) const override
Definition BodyLockInterface.h:83
+
virtual MutexMask GetMutexMask(const BodyID *inBodies, int inNumber) const override
Definition BodyLockInterface.h:108
+
virtual void LockRead(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:113
+
Implementation that performs no locking (assumes the lock has already been taken)
Definition BodyLockInterface.h:58
+
virtual void LockWrite(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:72
+
virtual MutexMask GetMutexMask(const BodyID *inBodies, int inNumber) const override
Definition BodyLockInterface.h:69
+
virtual void UnlockRead(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:71
+
virtual SharedMutex * LockRead(const BodyID &inBodyID) const override
Definition BodyLockInterface.h:63
+
virtual void UnlockWrite(SharedMutex *inMutex) const override
Definition BodyLockInterface.h:66
+
virtual SharedMutex * LockWrite(const BodyID &inBodyID) const override
Definition BodyLockInterface.h:65
+
virtual void UnlockWrite(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:73
+
virtual void UnlockRead(SharedMutex *inMutex) const override
Definition BodyLockInterface.h:64
+
virtual void LockRead(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:70
+
Class that contains all bodies.
Definition BodyManager.h:44
+
void LockWrite(MutexMask inMutexMask) const
Definition BodyManager.cpp:714
+
void UnlockWrite(MutexMask inMutexMask) const
Definition BodyManager.cpp:724
+
void UnlockRead(MutexMask inMutexMask) const
Definition BodyManager.cpp:704
+
MutexMask GetMutexMask(const BodyID *inBodies, int inNumber) const
Definition BodyManager.cpp:672
+
MutexMask GetAllBodiesMutexMask() const
Definition BodyManager.h:183
+
SharedMutex & GetMutexForBody(const BodyID &inID) const
Access the mutex for a single body.
Definition BodyManager.h:176
+
void LockRead(MutexMask inMutexMask) const
Definition BodyManager.cpp:694
+
const Body * TryGetBody(const BodyID &inID) const
Access a body, will return a nullptr if the body ID is no longer valid (not protected by lock)
Definition BodyManager.h:148
+
uint64 MutexMask
Bodies are protected using an array of mutexes (so a fixed number, not 1 per body)....
Definition BodyManager.h:179
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
static void sLockShared(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:68
+
static void sUnlock(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:61
+
static void sUnlockShared(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:75
+
static void sLock(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:54
+
Definition Mutex.h:166
+
+
+ + + + diff --git a/_body_lock_multi_8h.html b/_body_lock_multi_8h.html new file mode 100644 index 000000000..f277c9803 --- /dev/null +++ b/_body_lock_multi_8h.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyLockMulti.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyLockMulti.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

class  BodyLockMultiBase< Write, BodyType >
 Base class for locking multiple bodies for the duration of the scope of this class (do not use directly) More...
 
class  BodyLockMultiRead
 
class  BodyLockMultiWrite
 Specialization that locks multiple bodies for writing to. More...
 
+
+
+ + + + diff --git a/_body_lock_multi_8h.js b/_body_lock_multi_8h.js new file mode 100644 index 000000000..fc0c1592f --- /dev/null +++ b/_body_lock_multi_8h.js @@ -0,0 +1,6 @@ +var _body_lock_multi_8h = +[ + [ "BodyLockMultiBase< Write, BodyType >", "class_body_lock_multi_base.html", "class_body_lock_multi_base" ], + [ "BodyLockMultiRead", "class_body_lock_multi_read.html", null ], + [ "BodyLockMultiWrite", "class_body_lock_multi_write.html", null ] +]; \ No newline at end of file diff --git a/_body_lock_multi_8h_source.html b/_body_lock_multi_8h_source.html new file mode 100644 index 000000000..51cca78e8 --- /dev/null +++ b/_body_lock_multi_8h_source.html @@ -0,0 +1,227 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyLockMulti.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyLockMulti.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
+
12template <bool Write, class BodyType>
+
+ +
14{
+
15public:
+ +
18
+
+
20 BodyLockMultiBase(const BodyLockInterface &inBodyLockInterface, const BodyID *inBodyIDs, int inNumber) :
+
21 mBodyLockInterface(inBodyLockInterface),
+
22 mMutexMask(inBodyLockInterface.GetMutexMask(inBodyIDs, inNumber)),
+
23 mBodyIDs(inBodyIDs),
+
24 mNumBodyIDs(inNumber)
+
25 {
+
26 if (mMutexMask != 0)
+
27 {
+
28 // Get mutex
+
29 if (Write)
+
30 inBodyLockInterface.LockWrite(mMutexMask);
+
31 else
+
32 inBodyLockInterface.LockRead(mMutexMask);
+
33 }
+
34 }
+
+
35
+
+ +
38 {
+
39 if (mMutexMask != 0)
+
40 {
+
41 if (Write)
+
42 mBodyLockInterface.UnlockWrite(mMutexMask);
+
43 else
+
44 mBodyLockInterface.UnlockRead(mMutexMask);
+
45 }
+
46 }
+
+
47
+
+
49 inline BodyType * GetBody(int inBodyIndex) const
+
50 {
+
51 // Range check
+
52 JPH_ASSERT(inBodyIndex >= 0 && inBodyIndex < mNumBodyIDs);
+
53
+
54 // Get body ID
+
55 const BodyID &body_id = mBodyIDs[inBodyIndex];
+
56 if (body_id.IsInvalid())
+
57 return nullptr;
+
58
+
59 // Get a reference to the body or nullptr when it is no longer valid
+
60 return mBodyLockInterface.TryGetBody(body_id);
+
61 }
+
+
62
+
63private:
+
64 const BodyLockInterface & mBodyLockInterface;
+
65 MutexMask mMutexMask;
+
66 const BodyID * mBodyIDs;
+
67 int mNumBodyIDs;
+
68};
+
+
69
+
+
93class BodyLockMultiRead : public BodyLockMultiBase<false, const Body>
+
94{
+ +
96};
+
+
97
+
+
99class BodyLockMultiWrite : public BodyLockMultiBase<true, Body>
+
100{
+ +
102};
+
+
103
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
bool IsInvalid() const
Check if the ID is valid.
Definition BodyID.h:64
+
Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLock...
Definition BodyLockInterface.h:17
+
virtual void UnlockRead(SharedMutex *inMutex) const =0
+
Body * TryGetBody(const BodyID &inBodyID) const
Convert body ID to body.
Definition BodyLockInterface.h:50
+
BodyManager::MutexMask MutexMask
Redefine MutexMask.
Definition BodyLockInterface.h:20
+
virtual void UnlockWrite(SharedMutex *inMutex) const =0
+
virtual SharedMutex * LockRead(const BodyID &inBodyID) const =0
+
virtual SharedMutex * LockWrite(const BodyID &inBodyID) const =0
+
Base class for locking multiple bodies for the duration of the scope of this class (do not use direct...
Definition BodyLockMulti.h:14
+
BodyType * GetBody(int inBodyIndex) const
Access the body (returns null if body was not properly locked)
Definition BodyLockMulti.h:49
+
~BodyLockMultiBase()
Destructor will unlock the bodies.
Definition BodyLockMulti.h:37
+
BodyLockMultiBase(const BodyLockInterface &inBodyLockInterface, const BodyID *inBodyIDs, int inNumber)
Constructor will lock the bodies.
Definition BodyLockMulti.h:20
+
BodyLockInterface::MutexMask MutexMask
Redefine MutexMask.
Definition BodyLockMulti.h:17
+
Definition BodyLockMulti.h:94
+
Specialization that locks multiple bodies for writing to.
Definition BodyLockMulti.h:100
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
+
+ + + + diff --git a/_body_manager_8cpp.html b/_body_manager_8cpp.html new file mode 100644 index 000000000..c63bb4ecd --- /dev/null +++ b/_body_manager_8cpp.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyManager.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyManager.cpp File Reference
+
+
+ + + + + + +

+Classes

class  BodyWithMotionProperties
 
class  SoftBodyWithMotionPropertiesAndShape
 
+
+
+ + + + diff --git a/_body_manager_8cpp.js b/_body_manager_8cpp.js new file mode 100644 index 000000000..e1f94c64a --- /dev/null +++ b/_body_manager_8cpp.js @@ -0,0 +1,5 @@ +var _body_manager_8cpp = +[ + [ "BodyWithMotionProperties", "class_body_with_motion_properties.html", "class_body_with_motion_properties" ], + [ "SoftBodyWithMotionPropertiesAndShape", "class_soft_body_with_motion_properties_and_shape.html", "class_soft_body_with_motion_properties_and_shape" ] +]; \ No newline at end of file diff --git a/_body_manager_8h.html b/_body_manager_8h.html new file mode 100644 index 000000000..3c1f64d7a --- /dev/null +++ b/_body_manager_8h.html @@ -0,0 +1,219 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyManager.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyManager.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Classes

class  BodyManager
 Class that contains all bodies. More...
 
struct  BodyManager::BodyStats
 Helper struct that counts the number of bodies of each type. More...
 
struct  BodyManager::DrawSettings
 Draw settings. More...
 
+ + + + + + + +

+Typedefs

using BodyVector = Array< Body * >
 Array of bodies.
 
using BodyIDVector = Array< BodyID >
 Array of body ID's.
 
+ + + + +

+Enumerations

enum class  ESoftBodyConstraintColor { ConstraintType +, ConstraintGroup +, ConstraintOrder + }
 Defines how to color soft body constraints. More...
 
+

Typedef Documentation

+ +

◆ BodyIDVector

+ +
+
+ + + + +
using BodyIDVector = Array<BodyID>
+
+ +

Array of body ID's.

+ +
+
+ +

◆ BodyVector

+ +
+
+ + + + +
using BodyVector = Array<Body *>
+
+ +

Array of bodies.

+ +
+
+

Enumeration Type Documentation

+ +

◆ ESoftBodyConstraintColor

+ +
+
+ + + + + +
+ + + + +
enum class ESoftBodyConstraintColor
+
+strong
+
+ +

Defines how to color soft body constraints.

+ + + + +
Enumerator
ConstraintType 
ConstraintGroup 

Draw different types of constraints in different colors.

+
ConstraintOrder 

Draw constraints in the same group in the same color, non-parallel group will be red.

+
+ +
+
+
+
+ + + + diff --git a/_body_manager_8h.js b/_body_manager_8h.js new file mode 100644 index 000000000..3a83648a3 --- /dev/null +++ b/_body_manager_8h.js @@ -0,0 +1,13 @@ +var _body_manager_8h = +[ + [ "BodyManager", "class_body_manager.html", "class_body_manager" ], + [ "BodyManager::BodyStats", "struct_body_manager_1_1_body_stats.html", "struct_body_manager_1_1_body_stats" ], + [ "BodyManager::DrawSettings", "struct_body_manager_1_1_draw_settings.html", "struct_body_manager_1_1_draw_settings" ], + [ "BodyIDVector", "_body_manager_8h.html#afc1c8d959352d66db407f29003a66bb8", null ], + [ "BodyVector", "_body_manager_8h.html#ae4e246af993ca15dd65cd797e6bf7640", null ], + [ "ESoftBodyConstraintColor", "_body_manager_8h.html#af3216c8a98a28ccd29f5e19f037a59e2", [ + [ "ConstraintType", "_body_manager_8h.html#af3216c8a98a28ccd29f5e19f037a59e2a69d368f8d2fdfe82b285196816193865", null ], + [ "ConstraintGroup", "_body_manager_8h.html#af3216c8a98a28ccd29f5e19f037a59e2a76f95f1dbe57491e9abdeb1a4baa6e92", null ], + [ "ConstraintOrder", "_body_manager_8h.html#af3216c8a98a28ccd29f5e19f037a59e2ae268207a2077e72a6a83030f885a1e43", null ] + ] ] +]; \ No newline at end of file diff --git a/_body_manager_8h_source.html b/_body_manager_8h_source.html new file mode 100644 index 000000000..dd9c1a125 --- /dev/null +++ b/_body_manager_8h_source.html @@ -0,0 +1,489 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyManager.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyManager.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#include <Jolt/Core/Mutex.h>
+ +
10
+ +
12
+
13// Classes
+ + + + +
18struct PhysicsSettings;
+
19#ifdef JPH_DEBUG_RENDERER
+
20class DebugRenderer;
+
21class BodyDrawFilter;
+
22#endif // JPH_DEBUG_RENDERER
+
23
+
24#ifdef JPH_DEBUG_RENDERER
+
25
+
+ +
28{
+ + + +
32};
+
+
33
+
34#endif // JPH_DEBUG_RENDERER
+
35
+ +
38
+ +
41
+
+ +
44{
+
45public:
+ +
47
+ +
50
+
52 void Init(uint inMaxBodies, uint inNumBodyMutexes, const BroadPhaseLayerInterface &inLayerInterface);
+
53
+
55 uint GetNumBodies() const;
+
56
+
58 uint GetMaxBodies() const { return uint(mBodies.capacity()); }
+
59
+
+
61 struct BodyStats
+
62 {
+
63 uint mNumBodies = 0;
+
64 uint mMaxBodies = 0;
+
65
+
66 uint mNumBodiesStatic = 0;
+
67
+
68 uint mNumBodiesDynamic = 0;
+
69 uint mNumActiveBodiesDynamic = 0;
+
70
+
71 uint mNumBodiesKinematic = 0;
+
72 uint mNumActiveBodiesKinematic = 0;
+
73
+
74 uint mNumSoftBodies = 0;
+
75 uint mNumActiveSoftBodies = 0;
+
76 };
+
+
77
+
79 BodyStats GetBodyStats() const;
+
80
+
82 Body * AllocateBody(const BodyCreationSettings &inBodyCreationSettings) const;
+
83
+
85 Body * AllocateSoftBody(const SoftBodyCreationSettings &inSoftBodyCreationSettings) const;
+
86
+
88 void FreeBody(Body *inBody) const;
+
89
+
91 bool AddBody(Body *ioBody);
+
92
+
94 bool AddBodyWithCustomID(Body *ioBody, const BodyID &inBodyID);
+
95
+
97 void RemoveBodies(const BodyID *inBodyIDs, int inNumber, Body **outBodies);
+
98
+
100 void DestroyBodies(const BodyID *inBodyIDs, int inNumber);
+
101
+
104 void ActivateBodies(const BodyID *inBodyIDs, int inNumber);
+
105
+
108 void DeactivateBodies(const BodyID *inBodyIDs, int inNumber);
+
109
+
111 void SetMotionQuality(Body &ioBody, EMotionQuality inMotionQuality);
+
112
+
114 void GetActiveBodies(EBodyType inType, BodyIDVector &outBodyIDs) const;
+
115
+
117 const BodyID * GetActiveBodiesUnsafe(EBodyType inType) const { return mActiveBodies[int(inType)]; }
+
118
+
120 uint32 GetNumActiveBodies(EBodyType inType) const { return mNumActiveBodies[int(inType)]; }
+
121
+
123 uint32 GetNumActiveCCDBodies() const { return mNumActiveCCDBodies; }
+
124
+
126 void SetBodyActivationListener(BodyActivationListener *inListener);
+
127 BodyActivationListener * GetBodyActivationListener() const { return mActivationListener; }
+
128
+
130 static inline bool sIsValidBodyPointer(const Body *inBody) { return (uintptr_t(inBody) & cIsFreedBody) == 0; }
+
131
+
133 const BodyVector & GetBodies() const { return mBodies; }
+
134
+
136 BodyVector & GetBodies() { return mBodies; }
+
137
+
139 void GetBodyIDs(BodyIDVector &outBodies) const;
+
140
+
142 const Body & GetBody(const BodyID &inID) const { return *mBodies[inID.GetIndex()]; }
+
143
+
145 Body & GetBody(const BodyID &inID) { return *mBodies[inID.GetIndex()]; }
+
146
+
+
148 const Body * TryGetBody(const BodyID &inID) const
+
149 {
+
150 uint32 idx = inID.GetIndex();
+
151 if (idx >= mBodies.size())
+
152 return nullptr;
+
153
+
154 const Body *body = mBodies[idx];
+
155 if (sIsValidBodyPointer(body) && body->GetID() == inID)
+
156 return body;
+
157
+
158 return nullptr;
+
159 }
+
+
160
+
+
162 Body * TryGetBody(const BodyID &inID)
+
163 {
+
164 uint32 idx = inID.GetIndex();
+
165 if (idx >= mBodies.size())
+
166 return nullptr;
+
167
+
168 Body *body = mBodies[idx];
+
169 if (sIsValidBodyPointer(body) && body->GetID() == inID)
+
170 return body;
+
171
+
172 return nullptr;
+
173 }
+
+
174
+
176 SharedMutex & GetMutexForBody(const BodyID &inID) const { return mBodyMutexes.GetMutexByObjectIndex(inID.GetIndex()); }
+
177
+ +
180
+
183 MutexMask GetAllBodiesMutexMask() const { return mBodyMutexes.GetNumMutexes() == sizeof(MutexMask) * 8? ~MutexMask(0) : (MutexMask(1) << mBodyMutexes.GetNumMutexes()) - 1; }
+
184 MutexMask GetMutexMask(const BodyID *inBodies, int inNumber) const;
+
185 void LockRead(MutexMask inMutexMask) const;
+
186 void UnlockRead(MutexMask inMutexMask) const;
+
187 void LockWrite(MutexMask inMutexMask) const;
+
188 void UnlockWrite(MutexMask inMutexMask) const;
+
190
+
192 void LockAllBodies() const;
+
193
+
195 void UnlockAllBodies() const;
+
196
+
198 inline void SetBodyObjectLayerInternal(Body &ioBody, ObjectLayer inLayer) const { ioBody.mObjectLayer = inLayer; ioBody.mBroadPhaseLayer = mBroadPhaseLayerInterface->GetBroadPhaseLayer(inLayer); }
+
199
+
201 void InvalidateContactCacheForBody(Body &ioBody);
+
202
+
204 void ValidateContactCacheForAllBodies();
+
205
+
207 void SaveState(StateRecorder &inStream, const StateRecorderFilter *inFilter) const;
+
208
+
210 bool RestoreState(StateRecorder &inStream);
+
211
+
213 void SaveBodyState(const Body &inBody, StateRecorder &inStream) const;
+
214
+
216 void RestoreBodyState(Body &inBody, StateRecorder &inStream);
+
217
+
218#ifdef JPH_DEBUG_RENDERER
+
+
219 enum class EShapeColor
+
220 {
+
221 InstanceColor,
+
222 ShapeTypeColor,
+
223 MotionTypeColor,
+
224 SleepColor,
+
225 IslandColor,
+
226 MaterialColor,
+
227 };
+
+
228
+
+ +
231 {
+
232 bool mDrawGetSupportFunction = false;
+
233 bool mDrawSupportDirection = false;
+
234 bool mDrawGetSupportingFace = false;
+
235 bool mDrawShape = true;
+
236 bool mDrawShapeWireframe = false;
+
237 EShapeColor mDrawShapeColor = EShapeColor::MotionTypeColor;
+
238 bool mDrawBoundingBox = false;
+
239 bool mDrawCenterOfMassTransform = false;
+
240 bool mDrawWorldTransform = false;
+
241 bool mDrawVelocity = false;
+
242 bool mDrawMassAndInertia = false;
+
243 bool mDrawSleepStats = false;
+
244 bool mDrawSoftBodyVertices = false;
+
245 bool mDrawSoftBodyVertexVelocities = false;
+
246 bool mDrawSoftBodyEdgeConstraints = false;
+
247 bool mDrawSoftBodyBendConstraints = false;
+
248 bool mDrawSoftBodyVolumeConstraints = false;
+
249 bool mDrawSoftBodySkinConstraints = false;
+
250 bool mDrawSoftBodyLRAConstraints = false;
+
251 bool mDrawSoftBodyPredictedBounds = false;
+ +
253 };
+
+
254
+
256 void Draw(const DrawSettings &inSettings, const PhysicsSettings &inPhysicsSettings, DebugRenderer *inRenderer, const BodyDrawFilter *inBodyFilter = nullptr);
+
257#endif // JPH_DEBUG_RENDERER
+
258
+
259#ifdef JPH_ENABLE_ASSERTS
+
261 void SetActiveBodiesLocked(bool inLocked) { mActiveBodiesLocked = inLocked; }
+
262
+
264 class GrantActiveBodiesAccess
+
265 {
+
266 public:
+
267 inline GrantActiveBodiesAccess(bool inAllowActivation, bool inAllowDeactivation)
+
268 {
+
269 JPH_ASSERT(!sGetOverrideAllowActivation());
+
270 sSetOverrideAllowActivation(inAllowActivation);
+
271
+
272 JPH_ASSERT(!sGetOverrideAllowDeactivation());
+
273 sSetOverrideAllowDeactivation(inAllowDeactivation);
+
274 }
+
275
+
276 inline ~GrantActiveBodiesAccess()
+
277 {
+
278 sSetOverrideAllowActivation(false);
+
279 sSetOverrideAllowDeactivation(false);
+
280 }
+
281 };
+
282#endif
+
283
+
284#ifdef JPH_DEBUG
+
286 void ValidateActiveBodyBounds();
+
287#endif // JPH_DEBUG
+
288
+
289private:
+
291#ifdef JPH_COMPILER_CLANG
+
292 __attribute__((no_sanitize("implicit-conversion"))) // We intentionally overflow the uint8 sequence number
+
293#endif
+
294 inline uint8 GetNextSequenceNumber(int inBodyIndex) { return ++mBodySequenceNumbers[inBodyIndex]; }
+
295
+
297 inline void AddBodyToActiveBodies(Body &ioBody);
+
298
+
300 inline void RemoveBodyFromActiveBodies(Body &ioBody);
+
301
+
303 JPH_INLINE Body * RemoveBodyInternal(const BodyID &inBodyID);
+
304
+
306 inline static void sDeleteBody(Body *inBody);
+
307
+
308#if defined(JPH_DEBUG) && defined(JPH_ENABLE_ASSERTS)
+
310 void ValidateFreeList() const;
+
311#endif // defined(JPH_DEBUG) && _defined(JPH_ENABLE_ASSERTS)
+
312
+
314 BodyVector mBodies;
+
315
+
317 uint mNumBodies = 0;
+
318
+
320 static constexpr uintptr_t cBodyIDFreeListEnd = ~uintptr_t(0);
+
321
+
323 static constexpr uintptr_t cIsFreedBody = uintptr_t(1);
+
324
+
326 static constexpr uint cFreedBodyIndexShift = 1;
+
327
+
329 uintptr_t mBodyIDFreeListStart = cBodyIDFreeListEnd;
+
330
+
332 mutable Mutex mBodiesMutex;
+
333
+
335 using BodyMutexes = MutexArray<SharedMutex>;
+
336 mutable BodyMutexes mBodyMutexes;
+
337
+
339 Array<uint8> mBodySequenceNumbers;
+
340
+
342 mutable Mutex mActiveBodiesMutex;
+
343
+
345 BodyID * mActiveBodies[cBodyTypeCount] = { };
+
346
+
348 atomic<uint32> mNumActiveBodies[cBodyTypeCount] = { };
+
349
+
351 uint32 mNumActiveCCDBodies = 0;
+
352
+
354 mutable Mutex mBodiesCacheInvalidMutex;
+
355
+
357 BodyIDVector mBodiesCacheInvalid;
+
358
+
360 BodyActivationListener * mActivationListener = nullptr;
+
361
+
363 const BroadPhaseLayerInterface *mBroadPhaseLayerInterface = nullptr;
+
364
+
365#ifdef JPH_ENABLE_ASSERTS
+
366 static bool sGetOverrideAllowActivation();
+
367 static void sSetOverrideAllowActivation(bool inValue);
+
368
+
369 static bool sGetOverrideAllowDeactivation();
+
370 static void sSetOverrideAllowDeactivation(bool inValue);
+
371
+
373 bool mActiveBodiesLocked = false;
+
374#endif
+
375};
+
+
376
+ + +
ESoftBodyConstraintColor
Defines how to color soft body constraints.
Definition BodyManager.h:28
+ +
@ ConstraintGroup
Draw different types of constraints in different colors.
+
@ ConstraintOrder
Draw constraints in the same group in the same color, non-parallel group will be red.
+
EBodyType
Type of body.
Definition BodyType.h:11
+
std::uint8_t uint8
Definition Core.h:453
+
#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
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
EMotionQuality
Motion quality, or how well it detects collisions when it has a high velocity.
Definition MotionQuality.h:11
+ + +
uint16 ObjectLayer
Definition ObjectLayer.h:16
+ +
Definition BodyActivationListener.h:14
+
Settings for constructing a rigid body.
Definition BodyCreationSettings.h:31
+
Class function to filter out bodies for debug rendering, returns true if body should be rendered.
Definition BodyFilter.h:117
+
Definition Body.h:35
+
JPH_OVERRIDE_NEW_DELETE const BodyID & GetID() const
Get the id of this body.
Definition Body.h:40
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
uint32 GetIndex() const
Get index in body array.
Definition BodyID.h:43
+
Class that contains all bodies.
Definition BodyManager.h:44
+
static bool sIsValidBodyPointer(const Body *inBody)
Check if this is a valid body pointer. When a body is freed the memory that the pointer occupies is r...
Definition BodyManager.h:130
+
Body & GetBody(const BodyID &inID)
Access a body (not protected by lock)
Definition BodyManager.h:145
+
BodyActivationListener * GetBodyActivationListener() const
Definition BodyManager.h:127
+
uint32 GetNumActiveCCDBodies() const
Get the number of active bodies that are using continuous collision detection.
Definition BodyManager.h:123
+
MutexMask GetAllBodiesMutexMask() const
Definition BodyManager.h:183
+
Body * TryGetBody(const BodyID &inID)
Access a body, will return a nullptr if the body ID is no longer valid (not protected by lock)
Definition BodyManager.h:162
+
SharedMutex & GetMutexForBody(const BodyID &inID) const
Access the mutex for a single body.
Definition BodyManager.h:176
+
const Body * TryGetBody(const BodyID &inID) const
Access a body, will return a nullptr if the body ID is no longer valid (not protected by lock)
Definition BodyManager.h:148
+
const BodyID * GetActiveBodiesUnsafe(EBodyType inType) const
Get the list of active bodies. Note: Not thread safe. The active bodies list can change at any moment...
Definition BodyManager.h:117
+
const BodyVector & GetBodies() const
Get all bodies. Note that this can contain invalid body pointers, call sIsValidBodyPointer to check.
Definition BodyManager.h:133
+
BodyVector & GetBodies()
Get all bodies. Note that this can contain invalid body pointers, call sIsValidBodyPointer to check.
Definition BodyManager.h:136
+
uint GetMaxBodies() const
Gets the max bodies that we can support.
Definition BodyManager.h:58
+
EShapeColor
Definition BodyManager.h:220
+
void SetBodyObjectLayerInternal(Body &ioBody, ObjectLayer inLayer) const
Function to update body's layer (should only be called by the BodyInterface since it also requires up...
Definition BodyManager.h:198
+
const Body & GetBody(const BodyID &inID) const
Access a body (not protected by lock)
Definition BodyManager.h:142
+
uint64 MutexMask
Bodies are protected using an array of mutexes (so a fixed number, not 1 per body)....
Definition BodyManager.h:179
+
uint32 GetNumActiveBodies(EBodyType inType) const
Get the number of active bodies.
Definition BodyManager.h:120
+
Interface that the application should implement to allow mapping object layers to broadphase layers.
Definition BroadPhaseLayer.h:61
+
Definition DebugRenderer.h:47
+
Definition MutexArray.h:17
+
Definition Mutex.h:122
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition Mutex.h:166
+
Definition SoftBodyCreationSettings.h:18
+
User callbacks that allow determining which parts of the simulation should be saved by a StateRecorde...
Definition StateRecorder.h:29
+
Definition StateRecorder.h:48
+
Helper struct that counts the number of bodies of each type.
Definition BodyManager.h:62
+
Draw settings.
Definition BodyManager.h:231
+
Definition PhysicsSettings.h:28
+
+
+ + + + diff --git a/_body_pair_8h.html b/_body_pair_8h.html new file mode 100644 index 000000000..d86361c6d --- /dev/null +++ b/_body_pair_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyPair.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyPair.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

struct  BodyPair
 Structure that holds a body pair. More...
 
+
+
+ + + + diff --git a/_body_pair_8h.js b/_body_pair_8h.js new file mode 100644 index 000000000..ec7dab931 --- /dev/null +++ b/_body_pair_8h.js @@ -0,0 +1,4 @@ +var _body_pair_8h = +[ + [ "BodyPair", "struct_body_pair.html", "struct_body_pair" ] +]; \ No newline at end of file diff --git a/_body_pair_8h_source.html b/_body_pair_8h_source.html new file mode 100644 index 000000000..9ae4f09c2 --- /dev/null +++ b/_body_pair_8h_source.html @@ -0,0 +1,166 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyPair.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyPair.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
+ + +
9
+ +
11
+
+
13struct alignas(uint64) BodyPair
+
14{
+ +
16
+
18 BodyPair() = default;
+
19 BodyPair(BodyID inA, BodyID inB) : mBodyA(inA), mBodyB(inB) { }
+
20
+
22 bool operator == (const BodyPair &inRHS) const { return *reinterpret_cast<const uint64 *>(this) == *reinterpret_cast<const uint64 *>(&inRHS); }
+
23
+
25 bool operator < (const BodyPair &inRHS) const { return *reinterpret_cast<const uint64 *>(this) < *reinterpret_cast<const uint64 *>(&inRHS); }
+
26
+
28 uint64 GetHash() const { return Hash64(*reinterpret_cast<const uint64 *>(this)); }
+
29
+ + +
32};
+
+
33
+
34static_assert(sizeof(BodyPair) == sizeof(uint64), "Mismatch in class size");
+
35
+ + +
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
uint64 Hash64(uint64 inValue)
Definition HashCombine.h:30
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Structure that holds a body pair.
Definition BodyPair.h:14
+
uint64 GetHash() const
Get the hash value of this object.
Definition BodyPair.h:28
+
BodyPair(BodyID inA, BodyID inB)
Definition BodyPair.h:19
+
BodyID mBodyA
Definition BodyPair.h:30
+
BodyID mBodyB
Definition BodyPair.h:31
+
JPH_OVERRIDE_NEW_DELETE BodyPair()=default
Constructor.
+
+
+ + + + diff --git a/_body_type_8h.html b/_body_type_8h.html new file mode 100644 index 000000000..d618011c1 --- /dev/null +++ b/_body_type_8h.html @@ -0,0 +1,158 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyType.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyType.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Enumerations

enum class  EBodyType : uint8 { RigidBody +, SoftBody + }
 Type of body. More...
 
+

Enumeration Type Documentation

+ +

◆ EBodyType

+ +
+
+ + + + + +
+ + + + +
enum class EBodyType : uint8
+
+strong
+
+ +

Type of body.

+ + + +
Enumerator
RigidBody 

Rigid body consisting of a rigid shape.

+
SoftBody 

Soft body consisting of a deformable shape.

+
+ +
+
+
+
+ + + + diff --git a/_body_type_8h.js b/_body_type_8h.js new file mode 100644 index 000000000..a03ac3bfc --- /dev/null +++ b/_body_type_8h.js @@ -0,0 +1,7 @@ +var _body_type_8h = +[ + [ "EBodyType", "_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666", [ + [ "RigidBody", "_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666a81db01c2775d4446d91c2caba27c53e8", null ], + [ "SoftBody", "_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666aaae0baf0b48c5dcbb8097a4b857f077d", null ] + ] ] +]; \ No newline at end of file diff --git a/_body_type_8h_source.html b/_body_type_8h_source.html new file mode 100644 index 000000000..d320bbb0f --- /dev/null +++ b/_body_type_8h_source.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/BodyType.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyType.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+
+
10enum class EBodyType : uint8
+
11{
+
12 RigidBody,
+
13 SoftBody,
+
14};
+
+
15
+
17static constexpr uint cBodyTypeCount = 2;
+
18
+ +
EBodyType
Type of body.
Definition BodyType.h:11
+
@ RigidBody
Rigid body consisting of a rigid shape.
+
@ SoftBody
Soft body consisting of a deformable shape.
+
std::uint8_t uint8
Definition Core.h:453
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
+
+ + + + diff --git a/_box_shape_8cpp.html b/_box_shape_8cpp.html new file mode 100644 index 000000000..b8b3e25dc --- /dev/null +++ b/_box_shape_8cpp.html @@ -0,0 +1,161 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/BoxShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BoxShape.cpp File Reference
+
+
+ + + + +

+Classes

class  BoxShape::Box
 
+ + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (BoxShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (BoxShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_box_shape_8cpp.js b/_box_shape_8cpp.js new file mode 100644 index 000000000..4966ff24d --- /dev/null +++ b/_box_shape_8cpp.js @@ -0,0 +1,5 @@ +var _box_shape_8cpp = +[ + [ "BoxShape::Box", "class_box_shape_1_1_box.html", "class_box_shape_1_1_box" ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_box_shape_8cpp.html#ad8b757db11e2517ae31d0751931502bf", null ] +]; \ No newline at end of file diff --git a/_box_shape_8h.html b/_box_shape_8h.html new file mode 100644 index 000000000..d4746a831 --- /dev/null +++ b/_box_shape_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/BoxShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BoxShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  BoxShapeSettings
 Class that constructs a BoxShape. More...
 
class  BoxShape
 A box, centered around the origin. More...
 
+
+
+ + + + diff --git a/_box_shape_8h.js b/_box_shape_8h.js new file mode 100644 index 000000000..854c2c74f --- /dev/null +++ b/_box_shape_8h.js @@ -0,0 +1,5 @@ +var _box_shape_8h = +[ + [ "BoxShapeSettings", "class_box_shape_settings.html", "class_box_shape_settings" ], + [ "BoxShape", "class_box_shape.html", "class_box_shape" ] +]; \ No newline at end of file diff --git a/_box_shape_8h_source.html b/_box_shape_8h_source.html new file mode 100644 index 000000000..488769d2f --- /dev/null +++ b/_box_shape_8h_source.html @@ -0,0 +1,277 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/BoxShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BoxShape.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
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+ +
17
+
18
+
19 BoxShapeSettings() = default;
+
20
+
23 BoxShapeSettings(Vec3Arg inHalfExtent, float inConvexRadius = cDefaultConvexRadius, const PhysicsMaterial *inMaterial = nullptr) : ConvexShapeSettings(inMaterial), mHalfExtent(inHalfExtent), mConvexRadius(inConvexRadius) { }
+
24
+
25 // See: ShapeSettings
+
26 virtual ShapeResult Create() const override;
+
27
+
28 Vec3 mHalfExtent = Vec3::sZero();
+
29 float mConvexRadius = 0.0f;
+
30};
+
+
31
+
+
33class JPH_EXPORT BoxShape final : public ConvexShape
+
34{
+
35public:
+ +
37
+ +
40 BoxShape(const BoxShapeSettings &inSettings, ShapeResult &outResult);
+
41
+
44 BoxShape(Vec3Arg inHalfExtent, float inConvexRadius = cDefaultConvexRadius, const PhysicsMaterial *inMaterial = nullptr) : ConvexShape(EShapeSubType::Box, inMaterial), mHalfExtent(inHalfExtent), mConvexRadius(inConvexRadius) { JPH_ASSERT(inConvexRadius >= 0.0f); JPH_ASSERT(inHalfExtent.ReduceMin() >= inConvexRadius); }
+
45
+
47 Vec3 GetHalfExtent() const { return mHalfExtent; }
+
48
+
49 // See Shape::GetLocalBounds
+
50 virtual AABox GetLocalBounds() const override { return AABox(-mHalfExtent, mHalfExtent); }
+
51
+
52 // See Shape::GetInnerRadius
+
53 virtual float GetInnerRadius() const override { return mHalfExtent.ReduceMin(); }
+
54
+
55 // See Shape::GetMassProperties
+
56 virtual MassProperties GetMassProperties() const override;
+
57
+
58 // See Shape::GetSurfaceNormal
+
59 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
60
+
61 // See Shape::GetSupportingFace
+
62 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
63
+
64 // See ConvexShape::GetSupportFunction
+
65 virtual const Support * GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override;
+
66
+
67#ifdef JPH_DEBUG_RENDERER
+
68 // See Shape::Draw
+
69 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
70#endif // JPH_DEBUG_RENDERER
+
71
+
72 // See Shape::CastRay
+
73 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
74 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
75
+
76 // See: Shape::CollidePoint
+
77 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
78
+
79 // See: Shape::CollideSoftBodyVertices
+
80 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
81
+
82 // See Shape::GetTrianglesStart
+
83 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override;
+
84
+
85 // See Shape::GetTrianglesNext
+
86 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override;
+
87
+
88 // See Shape
+
89 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
90
+
91 // See Shape::GetStats
+
92 virtual Stats GetStats() const override { return Stats(sizeof(*this), 12); }
+
93
+
94 // See Shape::GetVolume
+
95 virtual float GetVolume() const override { return GetLocalBounds().GetVolume(); }
+
96
+
98 float GetConvexRadius() const { return mConvexRadius; }
+
99
+
100 // Register shape functions with the registry
+
101 static void sRegister();
+
102
+
103protected:
+
104 // See: Shape::RestoreBinaryState
+
105 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
106
+
107private:
+
108 // Class for GetSupportFunction
+
109 class Box;
+
110
+
111 Vec3 mHalfExtent = Vec3::sZero();
+
112 float mConvexRadius = 0.0f;
+
113};
+
+
114
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
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_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
constexpr float cDefaultConvexRadius
How much padding to add around objects.
Definition PhysicsSettings.h:16
+
#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:76
+ +
Axis aligned box.
Definition AABox.h:16
+
Definition BoxShape.cpp:73
+
A box, centered around the origin.
Definition BoxShape.h:34
+
virtual float GetVolume() const override
Definition BoxShape.h:95
+
float GetConvexRadius() const
Get the convex radius of this box.
Definition BoxShape.h:98
+
JPH_OVERRIDE_NEW_DELETE BoxShape()
Constructor.
Definition BoxShape.h:39
+
Vec3 GetHalfExtent() const
Get half extent of box.
Definition BoxShape.h:47
+
BoxShape(Vec3Arg inHalfExtent, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)
Definition BoxShape.h:44
+
virtual float GetInnerRadius() const override
Definition BoxShape.h:53
+
virtual AABox GetLocalBounds() const override
Get local bounding box including convex radius, this box is centered around the center of mass rather...
Definition BoxShape.h:50
+
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition BoxShape.h:92
+
Class that constructs a BoxShape.
Definition BoxShape.h:14
+
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
+
Class that constructs a ConvexShape (abstract)
Definition ConvexShape.h:18
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
Definition Quat.h:33
+
Specialization of cast result against a shape.
Definition CastResult.h:30
+
Settings to be passed with a ray cast.
Definition RayCast.h:70
+
Filter class.
Definition ShapeFilter.h:17
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
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 Vec3.h:17
+
JPH_INLINE float ReduceMin() const
Get the minimum of X, Y and Z.
Definition Vec3.inl:806
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Definition RayCast.h:47
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
+
+ + + + diff --git a/_broad_phase_8cpp.html b/_broad_phase_8cpp.html new file mode 100644 index 000000000..53564c72a --- /dev/null +++ b/_broad_phase_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhase.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhase.cpp File Reference
+
+
+
+
+ + + + diff --git a/_broad_phase_8h.html b/_broad_phase_8h.html new file mode 100644 index 000000000..a4c29d833 --- /dev/null +++ b/_broad_phase_8h.html @@ -0,0 +1,176 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhase.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhase.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  BroadPhase
 Used to do coarse collision detection operations to quickly prune out bodies that will not collide. More...
 
struct  BroadPhase::UpdateState
 Context used during broadphase update. More...
 
+ + + +

+Macros

#define JPH_IF_TRACK_BROADPHASE_STATS(...)
 
+ + + +

+Typedefs

using BodyPairCollector = CollisionCollector< BodyPair, CollisionCollectorTraitsCollideShape >
 
+

Macro Definition Documentation

+ +

◆ JPH_IF_TRACK_BROADPHASE_STATS

+ +
+
+ + + + + + + + +
#define JPH_IF_TRACK_BROADPHASE_STATS( ...)
+
+ +
+
+

Typedef Documentation

+ +

◆ BodyPairCollector

+ + +
+
+ + + + diff --git a/_broad_phase_8h.js b/_broad_phase_8h.js new file mode 100644 index 000000000..2eac4b9f3 --- /dev/null +++ b/_broad_phase_8h.js @@ -0,0 +1,7 @@ +var _broad_phase_8h = +[ + [ "BroadPhase", "class_broad_phase.html", "class_broad_phase" ], + [ "BroadPhase::UpdateState", "struct_broad_phase_1_1_update_state.html", "struct_broad_phase_1_1_update_state" ], + [ "JPH_IF_TRACK_BROADPHASE_STATS", "_broad_phase_8h.html#a1fd93e96654ff2092f35485924d94df9", null ], + [ "BodyPairCollector", "_broad_phase_8h.html#a79c28d9ca80b345aca4b3ab03ab8f82a", null ] +]; \ No newline at end of file diff --git a/_broad_phase_8h_source.html b/_broad_phase_8h_source.html new file mode 100644 index 000000000..5c96821a9 --- /dev/null +++ b/_broad_phase_8h_source.html @@ -0,0 +1,227 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhase.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhase.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
+ + +
9
+ +
11
+
12// Shorthand function to ifdef out code if broadphase stats tracking is off
+
13#ifdef JPH_TRACK_BROADPHASE_STATS
+
14 #define JPH_IF_TRACK_BROADPHASE_STATS(...) __VA_ARGS__
+
15#else
+
16 #define JPH_IF_TRACK_BROADPHASE_STATS(...)
+
17#endif // JPH_TRACK_BROADPHASE_STATS
+
18
+
19class BodyManager;
+
20struct BodyPair;
+
21
+ +
23
+
+ +
26{
+
27public:
+
32 virtual void Init(BodyManager *inBodyManager, const BroadPhaseLayerInterface &inLayerInterface);
+
33
+
35 virtual void Optimize() { /* Optionally overridden by implementation */ }
+
36
+
38 virtual void FrameSync() { /* Optionally overridden by implementation */ }
+
39
+
41 virtual void LockModifications() { /* Optionally overridden by implementation */ }
+
42
+
44 struct UpdateState { void *mData[4]; };
+
45
+
48 virtual UpdateState UpdatePrepare() { return UpdateState(); }
+
49
+
51 virtual void UpdateFinalize([[maybe_unused]] const UpdateState &inUpdateState) { /* Optionally overridden by implementation */ }
+
52
+
54 virtual void UnlockModifications() { /* Optionally overridden by implementation */ }
+
55
+
57 using AddState = void *;
+
58
+
62 virtual AddState AddBodiesPrepare([[maybe_unused]] BodyID *ioBodies, [[maybe_unused]] int inNumber) { return nullptr; } // By default the broadphase doesn't support this
+
63
+
66 virtual void AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState) = 0;
+
67
+
71 virtual void AddBodiesAbort([[maybe_unused]] BodyID *ioBodies, [[maybe_unused]] int inNumber, [[maybe_unused]] AddState inAddState) { /* By default nothing needs to be done */ }
+
72
+
75 virtual void RemoveBodies(BodyID *ioBodies, int inNumber) = 0;
+
76
+
79 virtual void NotifyBodiesAABBChanged(BodyID *ioBodies, int inNumber, bool inTakeLock = true) = 0;
+
80
+
82 virtual void NotifyBodiesLayerChanged(BodyID *ioBodies, int inNumber) = 0;
+
83
+
93 virtual void FindCollidingPairs(BodyID *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter, BodyPairCollector &ioPairCollector) const = 0;
+
94
+
96 virtual void CastAABoxNoLock(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const = 0;
+
97
+
99 virtual AABox GetBounds() const = 0;
+
100
+
101#ifdef JPH_TRACK_BROADPHASE_STATS
+
104 virtual void ReportStats() { /* Can be implemented by derived classes */ }
+
105#endif // JPH_TRACK_BROADPHASE_STATS
+
106
+
107protected:
+
109 BodyManager * mBodyManager = nullptr;
+
110};
+
+
111
+ + + +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
Axis aligned box.
Definition AABox.h:16
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Class that contains all bodies.
Definition BodyManager.h:44
+
Used to do coarse collision detection operations to quickly prune out bodies that will not collide.
Definition BroadPhase.h:26
+
virtual void AddBodiesAbort(BodyID *ioBodies, int inNumber, AddState inAddState)
Definition BroadPhase.h:71
+
virtual void AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState)=0
+
virtual void LockModifications()
Must be called before UpdatePrepare to prevent modifications from being made to the tree.
Definition BroadPhase.h:41
+
virtual void NotifyBodiesAABBChanged(BodyID *ioBodies, int inNumber, bool inTakeLock=true)=0
+
virtual void CastAABoxNoLock(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const =0
Same as BroadPhaseQuery::CastAABox but can be implemented in a way to take no broad phase locks.
+
virtual void FrameSync()
Must be called just before updating the broadphase when none of the body mutexes are locked.
Definition BroadPhase.h:38
+
virtual void UnlockModifications()
Must be called after UpdateFinalize to allow modifications to the broadphase.
Definition BroadPhase.h:54
+
virtual void NotifyBodiesLayerChanged(BodyID *ioBodies, int inNumber)=0
Call whenever the layer (and optionally the aabb as well) of a body changes (can change order of ioBo...
+
virtual void Optimize()
Should be called after many objects have been inserted to make the broadphase more efficient,...
Definition BroadPhase.h:35
+
virtual void UpdateFinalize(const UpdateState &inUpdateState)
Finalizing the update will quickly apply the changes.
Definition BroadPhase.h:51
+
virtual AABox GetBounds() const =0
Get the bounding box of all objects in the broadphase.
+
virtual AddState AddBodiesPrepare(BodyID *ioBodies, int inNumber)
Definition BroadPhase.h:62
+
virtual void RemoveBodies(BodyID *ioBodies, int inNumber)=0
+
void * AddState
Handle used during adding bodies to the broadphase.
Definition BroadPhase.h:57
+
virtual void FindCollidingPairs(BodyID *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter, BodyPairCollector &ioPairCollector) const =0
+
virtual UpdateState UpdatePrepare()
Definition BroadPhase.h:48
+
Filter class for broadphase layers.
Definition BroadPhaseLayer.h:94
+
Interface that the application should implement to allow mapping object layers to broadphase layers.
Definition BroadPhaseLayer.h:61
+
Definition BroadPhaseQuery.h:29
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
Filter class for object layers.
Definition ObjectLayer.h:28
+
Filter class to test if two objects can collide based on their object layer. Used while finding colli...
Definition ObjectLayer.h:50
+
Class to test if an object can collide with a broadphase layer. Used while finding collision pairs.
Definition BroadPhaseLayer.h:80
+
Structure that holds AABox moving linearly through 3d space.
Definition AABoxCast.h:13
+
Structure that holds a body pair.
Definition BodyPair.h:14
+
Context used during broadphase update.
Definition BroadPhase.h:44
+
+
+ + + + diff --git a/_broad_phase_brute_force_8cpp.html b/_broad_phase_brute_force_8cpp.html new file mode 100644 index 000000000..915382713 --- /dev/null +++ b/_broad_phase_brute_force_8cpp.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseBruteForce.cpp File Reference
+
+
+
+
+ + + + diff --git a/_broad_phase_brute_force_8h.html b/_broad_phase_brute_force_8h.html new file mode 100644 index 000000000..4058883e0 --- /dev/null +++ b/_broad_phase_brute_force_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseBruteForce.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  BroadPhaseBruteForce
 Test BroadPhase implementation that does not do anything to speed up the operations. Can be used as a reference implementation. More...
 
+
+
+ + + + diff --git a/_broad_phase_brute_force_8h.js b/_broad_phase_brute_force_8h.js new file mode 100644 index 000000000..958c81e22 --- /dev/null +++ b/_broad_phase_brute_force_8h.js @@ -0,0 +1,4 @@ +var _broad_phase_brute_force_8h = +[ + [ "BroadPhaseBruteForce", "class_broad_phase_brute_force.html", "class_broad_phase_brute_force" ] +]; \ No newline at end of file diff --git a/_broad_phase_brute_force_8h_source.html b/_broad_phase_brute_force_8h_source.html new file mode 100644 index 000000000..c3b698ba5 --- /dev/null +++ b/_broad_phase_brute_force_8h_source.html @@ -0,0 +1,193 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseBruteForce.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#include <Jolt/Core/Mutex.h>
+
9
+ +
11
+
+ +
14{
+
15public:
+ +
17
+
18 // Implementing interface of BroadPhase (see BroadPhase for documentation)
+
19 virtual void AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState) override;
+
20 virtual void RemoveBodies(BodyID *ioBodies, int inNumber) override;
+
21 virtual void NotifyBodiesAABBChanged(BodyID *ioBodies, int inNumber, bool inTakeLock) override;
+
22 virtual void NotifyBodiesLayerChanged(BodyID *ioBodies, int inNumber) override;
+
23 virtual void CastRay(const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
24 virtual void CollideAABox(const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
25 virtual void CollideSphere(Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
26 virtual void CollidePoint(Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
27 virtual void CollideOrientedBox(const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
28 virtual void CastAABoxNoLock(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
29 virtual void CastAABox(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
30 virtual void FindCollidingPairs(BodyID *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter, BodyPairCollector &ioPairCollector) const override;
+
31 virtual AABox GetBounds() const override;
+
32
+
33private:
+
34 Array<BodyID> mBodyIDs;
+
35 mutable SharedMutex mMutex;
+
36};
+
+
37
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
#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
+ +
Axis aligned box.
Definition AABox.h:16
+
Definition Array.h:36
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Test BroadPhase implementation that does not do anything to speed up the operations....
Definition BroadPhaseBruteForce.h:14
+
Used to do coarse collision detection operations to quickly prune out bodies that will not collide.
Definition BroadPhase.h:26
+
virtual void AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState)=0
+
virtual void NotifyBodiesAABBChanged(BodyID *ioBodies, int inNumber, bool inTakeLock=true)=0
+
virtual void CastAABoxNoLock(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const =0
Same as BroadPhaseQuery::CastAABox but can be implemented in a way to take no broad phase locks.
+
virtual void NotifyBodiesLayerChanged(BodyID *ioBodies, int inNumber)=0
Call whenever the layer (and optionally the aabb as well) of a body changes (can change order of ioBo...
+
virtual AABox GetBounds() const =0
Get the bounding box of all objects in the broadphase.
+
virtual void RemoveBodies(BodyID *ioBodies, int inNumber)=0
+
void * AddState
Handle used during adding bodies to the broadphase.
Definition BroadPhase.h:57
+
virtual void FindCollidingPairs(BodyID *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter, BodyPairCollector &ioPairCollector) const =0
+
Filter class for broadphase layers.
Definition BroadPhaseLayer.h:94
+
virtual void CollidePoint(Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Get bodies intersecting with a point and any hits to ioCollector.
+
virtual void CastRay(const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Cast a ray and add any hits to ioCollector.
+
virtual void CollideAABox(const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Get bodies intersecting with inBox and any hits to ioCollector.
+
virtual void CastAABox(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Cast a box and add any hits to ioCollector.
+
virtual void CollideOrientedBox(const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Get bodies intersecting with an oriented box and any hits to ioCollector.
+
virtual void CollideSphere(Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Get bodies intersecting with a sphere and any hits to ioCollector.
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
Filter class for object layers.
Definition ObjectLayer.h:28
+
Filter class to test if two objects can collide based on their object layer. Used while finding colli...
Definition ObjectLayer.h:50
+
Class to test if an object can collide with a broadphase layer. Used while finding collision pairs.
Definition BroadPhaseLayer.h:80
+
Oriented box.
Definition OrientedBox.h:18
+
Definition Mutex.h:166
+
Definition Vec3.h:17
+
Structure that holds AABox moving linearly through 3d space.
Definition AABoxCast.h:13
+
Definition RayCast.h:47
+
+
+ + + + diff --git a/_broad_phase_layer_8h.html b/_broad_phase_layer_8h.html new file mode 100644 index 000000000..48f55a514 --- /dev/null +++ b/_broad_phase_layer_8h.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseLayer.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + +

+Classes

class  BroadPhaseLayer
 
class  BroadPhaseLayerInterface
 Interface that the application should implement to allow mapping object layers to broadphase layers. More...
 
class  ObjectVsBroadPhaseLayerFilter
 Class to test if an object can collide with a broadphase layer. Used while finding collision pairs. More...
 
class  BroadPhaseLayerFilter
 Filter class for broadphase layers. More...
 
class  DefaultBroadPhaseLayerFilter
 Default filter class that uses the pair filter in combination with a specified layer to filter layers. More...
 
class  SpecifiedBroadPhaseLayerFilter
 Allows objects from a specific broad phase layer only. More...
 
+
+
+ + + + diff --git a/_broad_phase_layer_8h.js b/_broad_phase_layer_8h.js new file mode 100644 index 000000000..c76e1967d --- /dev/null +++ b/_broad_phase_layer_8h.js @@ -0,0 +1,9 @@ +var _broad_phase_layer_8h = +[ + [ "BroadPhaseLayer", "class_broad_phase_layer.html", "class_broad_phase_layer" ], + [ "BroadPhaseLayerInterface", "class_broad_phase_layer_interface.html", "class_broad_phase_layer_interface" ], + [ "ObjectVsBroadPhaseLayerFilter", "class_object_vs_broad_phase_layer_filter.html", "class_object_vs_broad_phase_layer_filter" ], + [ "BroadPhaseLayerFilter", "class_broad_phase_layer_filter.html", "class_broad_phase_layer_filter" ], + [ "DefaultBroadPhaseLayerFilter", "class_default_broad_phase_layer_filter.html", "class_default_broad_phase_layer_filter" ], + [ "SpecifiedBroadPhaseLayerFilter", "class_specified_broad_phase_layer_filter.html", "class_specified_broad_phase_layer_filter" ] +]; \ No newline at end of file diff --git a/_broad_phase_layer_8h_source.html b/_broad_phase_layer_8h_source.html new file mode 100644 index 000000000..5ae6baafa --- /dev/null +++ b/_broad_phase_layer_8h_source.html @@ -0,0 +1,316 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseLayer.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
+ + +
9
+ +
11
+
+ +
18{
+
19public:
+
20 using Type = uint8;
+
21
+
22 JPH_INLINE BroadPhaseLayer() = default;
+
23 JPH_INLINE explicit constexpr BroadPhaseLayer(Type inValue) : mValue(inValue) { }
+
24 JPH_INLINE constexpr BroadPhaseLayer(const BroadPhaseLayer &) = default;
+
25 JPH_INLINE BroadPhaseLayer & operator = (const BroadPhaseLayer &) = default;
+
26
+
+
27 JPH_INLINE constexpr bool operator == (const BroadPhaseLayer &inRHS) const
+
28 {
+
29 return mValue == inRHS.mValue;
+
30 }
+
+
31
+
+
32 JPH_INLINE constexpr bool operator != (const BroadPhaseLayer &inRHS) const
+
33 {
+
34 return mValue != inRHS.mValue;
+
35 }
+
+
36
+
+
37 JPH_INLINE constexpr bool operator < (const BroadPhaseLayer &inRHS) const
+
38 {
+
39 return mValue < inRHS.mValue;
+
40 }
+
+
41
+
+
42 JPH_INLINE explicit constexpr operator Type() const
+
43 {
+
44 return mValue;
+
45 }
+
+
46
+
+
47 JPH_INLINE Type GetValue() const
+
48 {
+
49 return mValue;
+
50 }
+
+
51
+
52private:
+
53 Type mValue;
+
54};
+
+
55
+
57static constexpr BroadPhaseLayer cBroadPhaseLayerInvalid(0xff);
+
58
+
+ +
61{
+
62public:
+
64 virtual ~BroadPhaseLayerInterface() = default;
+
65
+
67 virtual uint GetNumBroadPhaseLayers() const = 0;
+
68
+ +
71
+
72#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
74 virtual const char * GetBroadPhaseLayerName(BroadPhaseLayer inLayer) const = 0;
+
75#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED
+
76};
+
+
77
+
+ +
80{
+
81public:
+
83 virtual ~ObjectVsBroadPhaseLayerFilter() = default;
+
84
+
+
86 virtual bool ShouldCollide([[maybe_unused]] ObjectLayer inLayer1, [[maybe_unused]] BroadPhaseLayer inLayer2) const
+
87 {
+
88 return true;
+
89 }
+
+
90};
+
+
91
+
+ +
94{
+
95public:
+
97 virtual ~BroadPhaseLayerFilter() = default;
+
98
+
+
100 virtual bool ShouldCollide([[maybe_unused]] BroadPhaseLayer inLayer) const
+
101 {
+
102 return true;
+
103 }
+
+
104};
+
+
105
+
+ +
108{
+
109public:
+
+
111 DefaultBroadPhaseLayerFilter(const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, ObjectLayer inLayer) :
+
112 mObjectVsBroadPhaseLayerFilter(inObjectVsBroadPhaseLayerFilter),
+
113 mLayer(inLayer)
+
114 {
+
115 }
+
+
116
+
117 // See BroadPhaseLayerFilter::ShouldCollide
+
+
118 virtual bool ShouldCollide(BroadPhaseLayer inLayer) const override
+
119 {
+
120 return mObjectVsBroadPhaseLayerFilter.ShouldCollide(mLayer, inLayer);
+
121 }
+
+
122
+
123private:
+
124 const ObjectVsBroadPhaseLayerFilter &mObjectVsBroadPhaseLayerFilter;
+
125 ObjectLayer mLayer;
+
126};
+
+
127
+
+ +
130{
+
131public:
+
+ +
134 mLayer(inLayer)
+
135 {
+
136 }
+
+
137
+
138 // See BroadPhaseLayerFilter::ShouldCollide
+
+
139 virtual bool ShouldCollide(BroadPhaseLayer inLayer) const override
+
140 {
+
141 return mLayer == inLayer;
+
142 }
+
+
143
+
144private:
+
145 BroadPhaseLayer mLayer;
+
146};
+
+
147
+ +
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
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
uint16 ObjectLayer
Definition ObjectLayer.h:16
+
Filter class for broadphase layers.
Definition BroadPhaseLayer.h:94
+
virtual ~BroadPhaseLayerFilter()=default
Destructor.
+
virtual bool ShouldCollide(BroadPhaseLayer inLayer) const
Function to filter out broadphase layers when doing collision query test (return true to allow testin...
Definition BroadPhaseLayer.h:100
+
Definition BroadPhaseLayer.h:18
+
JPH_INLINE constexpr bool operator<(const BroadPhaseLayer &inRHS) const
Definition BroadPhaseLayer.h:37
+
JPH_INLINE BroadPhaseLayer()=default
+
JPH_INLINE constexpr BroadPhaseLayer(Type inValue)
Definition BroadPhaseLayer.h:23
+
JPH_INLINE Type GetValue() const
Definition BroadPhaseLayer.h:47
+
uint8 Type
Definition BroadPhaseLayer.h:20
+
JPH_INLINE BroadPhaseLayer & operator=(const BroadPhaseLayer &)=default
+
JPH_INLINE constexpr bool operator!=(const BroadPhaseLayer &inRHS) const
Definition BroadPhaseLayer.h:32
+
JPH_INLINE constexpr BroadPhaseLayer(const BroadPhaseLayer &)=default
+
JPH_INLINE constexpr bool operator==(const BroadPhaseLayer &inRHS) const
Definition BroadPhaseLayer.h:27
+
Interface that the application should implement to allow mapping object layers to broadphase layers.
Definition BroadPhaseLayer.h:61
+
virtual uint GetNumBroadPhaseLayers() const =0
Return the number of broadphase layers there are.
+
virtual BroadPhaseLayer GetBroadPhaseLayer(ObjectLayer inLayer) const =0
Convert an object layer to the corresponding broadphase layer.
+
virtual ~BroadPhaseLayerInterface()=default
Destructor.
+
virtual const char * GetBroadPhaseLayerName(BroadPhaseLayer inLayer) const =0
Get the user readable name of a broadphase layer (debugging purposes)
+
Default filter class that uses the pair filter in combination with a specified layer to filter layers...
Definition BroadPhaseLayer.h:108
+
DefaultBroadPhaseLayerFilter(const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, ObjectLayer inLayer)
Constructor.
Definition BroadPhaseLayer.h:111
+
virtual bool ShouldCollide(BroadPhaseLayer inLayer) const override
Function to filter out broadphase layers when doing collision query test (return true to allow testin...
Definition BroadPhaseLayer.h:118
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Class to test if an object can collide with a broadphase layer. Used while finding collision pairs.
Definition BroadPhaseLayer.h:80
+
virtual bool ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const
Returns true if an object layer should collide with a broadphase layer.
Definition BroadPhaseLayer.h:86
+
virtual ~ObjectVsBroadPhaseLayerFilter()=default
Destructor.
+
Allows objects from a specific broad phase layer only.
Definition BroadPhaseLayer.h:130
+
SpecifiedBroadPhaseLayerFilter(BroadPhaseLayer inLayer)
Constructor.
Definition BroadPhaseLayer.h:133
+
virtual bool ShouldCollide(BroadPhaseLayer inLayer) const override
Function to filter out broadphase layers when doing collision query test (return true to allow testin...
Definition BroadPhaseLayer.h:139
+
+
+ + + + diff --git a/_broad_phase_layer_interface_mask_8h.html b/_broad_phase_layer_interface_mask_8h.html new file mode 100644 index 000000000..b63b69f59 --- /dev/null +++ b/_broad_phase_layer_interface_mask_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceMask.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseLayerInterfaceMask.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  BroadPhaseLayerInterfaceMask
 
+
+
+ + + + diff --git a/_broad_phase_layer_interface_mask_8h.js b/_broad_phase_layer_interface_mask_8h.js new file mode 100644 index 000000000..c7395454b --- /dev/null +++ b/_broad_phase_layer_interface_mask_8h.js @@ -0,0 +1,4 @@ +var _broad_phase_layer_interface_mask_8h = +[ + [ "BroadPhaseLayerInterfaceMask", "class_broad_phase_layer_interface_mask.html", "class_broad_phase_layer_interface_mask" ] +]; \ No newline at end of file diff --git a/_broad_phase_layer_interface_mask_8h_source.html b/_broad_phase_layer_interface_mask_8h_source.html new file mode 100644 index 000000000..773761660 --- /dev/null +++ b/_broad_phase_layer_interface_mask_8h_source.html @@ -0,0 +1,248 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceMask.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseLayerInterfaceMask.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + +
9
+ +
11
+
+ +
18{
+
19public:
+ +
21
+
+
22 explicit BroadPhaseLayerInterfaceMask(uint inNumBroadPhaseLayers)
+
23 {
+
24 JPH_ASSERT(inNumBroadPhaseLayers > 0);
+
25 mMapping.resize(inNumBroadPhaseLayers);
+
26
+
27#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
28 mBroadPhaseLayerNames.resize(inNumBroadPhaseLayers, "Undefined");
+
29#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED
+
30 }
+
+
31
+
32 // Configures a broadphase layer.
+
+
33 void ConfigureLayer(BroadPhaseLayer inBroadPhaseLayer, uint32 inGroupsToInclude, uint32 inGroupsToExclude)
+
34 {
+
35 JPH_ASSERT((BroadPhaseLayer::Type)inBroadPhaseLayer < (uint)mMapping.size());
+
36 Mapping &m = mMapping[(BroadPhaseLayer::Type)inBroadPhaseLayer];
+
37 m.mGroupsToInclude = inGroupsToInclude;
+
38 m.mGroupsToExclude = inGroupsToExclude;
+
39 }
+
+
40
+
+
41 virtual uint GetNumBroadPhaseLayers() const override
+
42 {
+
43 return (uint)mMapping.size();
+
44 }
+
+
45
+
+
46 virtual BroadPhaseLayer GetBroadPhaseLayer(ObjectLayer inLayer) const override
+
47 {
+
48 // Try to find the first broadphase layer that matches
+ +
50 for (const Mapping &m : mMapping)
+
51 if ((group & m.mGroupsToInclude) != 0 && (group & m.mGroupsToExclude) == 0)
+
52 return BroadPhaseLayer(BroadPhaseLayer::Type(&m - mMapping.data()));
+
53
+
54 // Fall back to the last broadphase layer
+
55 return BroadPhaseLayer(BroadPhaseLayer::Type(mMapping.size() - 1));
+
56 }
+
+
57
+
+
59 inline bool ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const
+
60 {
+ +
62 const Mapping &m = mMapping[(BroadPhaseLayer::Type)inLayer2];
+
63 return &m == &mMapping.back() // Last layer may collide with anything
+
64 || (m.mGroupsToInclude & mask) != 0; // Mask allows it to collide with objects that could reside in this layer
+
65 }
+
+
66
+
67#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
+
68 void SetBroadPhaseLayerName(BroadPhaseLayer inLayer, const char *inName)
+
69 {
+
70 mBroadPhaseLayerNames[(BroadPhaseLayer::Type)inLayer] = inName;
+
71 }
+
+
72
+
+
73 virtual const char * GetBroadPhaseLayerName(BroadPhaseLayer inLayer) const override
+
74 {
+
75 return mBroadPhaseLayerNames[(BroadPhaseLayer::Type)inLayer];
+
76 }
+
+
77#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED
+
78
+
79private:
+
80 struct Mapping
+
81 {
+
82 uint32 mGroupsToInclude = 0;
+
83 uint32 mGroupsToExclude = ~uint32(0);
+
84 };
+
85 Array<Mapping> mMapping;
+
86
+
87#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
88 Array<const char *> mBroadPhaseLayerNames;
+
89#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED
+
90};
+
+
91
+ + +
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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
uint16 ObjectLayer
Definition ObjectLayer.h:16
+ +
Definition Array.h:36
+
void resize(size_type inNewSize)
Resize array to new length.
Definition Array.h:118
+
const T & back() const
Last element in the array.
Definition Array.h:492
+
const T * data() const
Definition Array.h:442
+
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
Definition BroadPhaseLayer.h:18
+
uint8 Type
Definition BroadPhaseLayer.h:20
+
Interface that the application should implement to allow mapping object layers to broadphase layers.
Definition BroadPhaseLayer.h:61
+
Definition BroadPhaseLayerInterfaceMask.h:18
+
void ConfigureLayer(BroadPhaseLayer inBroadPhaseLayer, uint32 inGroupsToInclude, uint32 inGroupsToExclude)
Definition BroadPhaseLayerInterfaceMask.h:33
+
void SetBroadPhaseLayerName(BroadPhaseLayer inLayer, const char *inName)
Definition BroadPhaseLayerInterfaceMask.h:68
+
virtual uint GetNumBroadPhaseLayers() const override
Return the number of broadphase layers there are.
Definition BroadPhaseLayerInterfaceMask.h:41
+
virtual BroadPhaseLayer GetBroadPhaseLayer(ObjectLayer inLayer) const override
Convert an object layer to the corresponding broadphase layer.
Definition BroadPhaseLayerInterfaceMask.h:46
+
JPH_OVERRIDE_NEW_DELETE BroadPhaseLayerInterfaceMask(uint inNumBroadPhaseLayers)
Definition BroadPhaseLayerInterfaceMask.h:22
+
virtual const char * GetBroadPhaseLayerName(BroadPhaseLayer inLayer) const override
Get the user readable name of a broadphase layer (debugging purposes)
Definition BroadPhaseLayerInterfaceMask.h:73
+
bool ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const
Returns true if an object layer should collide with a broadphase layer, this function is being called...
Definition BroadPhaseLayerInterfaceMask.h:59
+
static uint32 sGetGroup(ObjectLayer inObjectLayer)
Get the group bits from an ObjectLayer.
Definition ObjectLayerPairFilterMask.h:33
+
static uint32 sGetMask(ObjectLayer inObjectLayer)
Get the mask bits from an ObjectLayer.
Definition ObjectLayerPairFilterMask.h:39
+
+
+ + + + diff --git a/_broad_phase_layer_interface_table_8h.html b/_broad_phase_layer_interface_table_8h.html new file mode 100644 index 000000000..658ffbb5e --- /dev/null +++ b/_broad_phase_layer_interface_table_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceTable.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseLayerInterfaceTable.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  BroadPhaseLayerInterfaceTable
 
+
+
+ + + + diff --git a/_broad_phase_layer_interface_table_8h.js b/_broad_phase_layer_interface_table_8h.js new file mode 100644 index 000000000..198bc3d9c --- /dev/null +++ b/_broad_phase_layer_interface_table_8h.js @@ -0,0 +1,4 @@ +var _broad_phase_layer_interface_table_8h = +[ + [ "BroadPhaseLayerInterfaceTable", "class_broad_phase_layer_interface_table.html", "class_broad_phase_layer_interface_table" ] +]; \ No newline at end of file diff --git a/_broad_phase_layer_interface_table_8h_source.html b/_broad_phase_layer_interface_table_8h_source.html new file mode 100644 index 000000000..65b1e24f0 --- /dev/null +++ b/_broad_phase_layer_interface_table_8h_source.html @@ -0,0 +1,213 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceTable.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseLayerInterfaceTable.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+
+ +
15{
+
16public:
+ +
18
+
+
19 BroadPhaseLayerInterfaceTable(uint inNumObjectLayers, uint inNumBroadPhaseLayers) :
+
20 mNumBroadPhaseLayers(inNumBroadPhaseLayers)
+
21 {
+
22 mObjectToBroadPhase.resize(inNumObjectLayers, BroadPhaseLayer(0));
+
23#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
24 mBroadPhaseLayerNames.resize(inNumBroadPhaseLayers, "Undefined");
+
25#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED
+
26 }
+
+
27
+
+
28 void MapObjectToBroadPhaseLayer(ObjectLayer inObjectLayer, BroadPhaseLayer inBroadPhaseLayer)
+
29 {
+
30 JPH_ASSERT((BroadPhaseLayer::Type)inBroadPhaseLayer < mNumBroadPhaseLayers);
+
31 mObjectToBroadPhase[inObjectLayer] = inBroadPhaseLayer;
+
32 }
+
+
33
+
+
34 virtual uint GetNumBroadPhaseLayers() const override
+
35 {
+
36 return mNumBroadPhaseLayers;
+
37 }
+
+
38
+
+
39 virtual BroadPhaseLayer GetBroadPhaseLayer(ObjectLayer inLayer) const override
+
40 {
+
41 return mObjectToBroadPhase[inLayer];
+
42 }
+
+
43
+
44#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
+
45 void SetBroadPhaseLayerName(BroadPhaseLayer inLayer, const char *inName)
+
46 {
+
47 mBroadPhaseLayerNames[(BroadPhaseLayer::Type)inLayer] = inName;
+
48 }
+
+
49
+
+
50 virtual const char * GetBroadPhaseLayerName(BroadPhaseLayer inLayer) const override
+
51 {
+
52 return mBroadPhaseLayerNames[(BroadPhaseLayer::Type)inLayer];
+
53 }
+
+
54#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED
+
55
+
56private:
+
57 uint mNumBroadPhaseLayers;
+
58 Array<BroadPhaseLayer> mObjectToBroadPhase;
+
59#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
60 Array<const char *> mBroadPhaseLayerNames;
+
61#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED
+
62};
+
+
63
+ + +
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_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
uint16 ObjectLayer
Definition ObjectLayer.h:16
+
Definition Array.h:36
+
void resize(size_type inNewSize)
Resize array to new length.
Definition Array.h:118
+
Definition BroadPhaseLayer.h:18
+
uint8 Type
Definition BroadPhaseLayer.h:20
+
Interface that the application should implement to allow mapping object layers to broadphase layers.
Definition BroadPhaseLayer.h:61
+
Definition BroadPhaseLayerInterfaceTable.h:15
+
virtual BroadPhaseLayer GetBroadPhaseLayer(ObjectLayer inLayer) const override
Convert an object layer to the corresponding broadphase layer.
Definition BroadPhaseLayerInterfaceTable.h:39
+
virtual uint GetNumBroadPhaseLayers() const override
Return the number of broadphase layers there are.
Definition BroadPhaseLayerInterfaceTable.h:34
+
void MapObjectToBroadPhaseLayer(ObjectLayer inObjectLayer, BroadPhaseLayer inBroadPhaseLayer)
Definition BroadPhaseLayerInterfaceTable.h:28
+
void SetBroadPhaseLayerName(BroadPhaseLayer inLayer, const char *inName)
Definition BroadPhaseLayerInterfaceTable.h:45
+
virtual const char * GetBroadPhaseLayerName(BroadPhaseLayer inLayer) const override
Get the user readable name of a broadphase layer (debugging purposes)
Definition BroadPhaseLayerInterfaceTable.h:50
+
JPH_OVERRIDE_NEW_DELETE BroadPhaseLayerInterfaceTable(uint inNumObjectLayers, uint inNumBroadPhaseLayers)
Definition BroadPhaseLayerInterfaceTable.h:19
+
+
+ + + + diff --git a/_broad_phase_quad_tree_8cpp.html b/_broad_phase_quad_tree_8cpp.html new file mode 100644 index 000000000..59186b4bc --- /dev/null +++ b/_broad_phase_quad_tree_8cpp.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseQuadTree.cpp File Reference
+
+
+
+
+ + + + diff --git a/_broad_phase_quad_tree_8h.html b/_broad_phase_quad_tree_8h.html new file mode 100644 index 000000000..ae4968aaa --- /dev/null +++ b/_broad_phase_quad_tree_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseQuadTree.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  BroadPhaseQuadTree
 Fast SIMD based quad tree BroadPhase that is multithreading aware and tries to do a minimal amount of locking. More...
 
+
+
+ + + + diff --git a/_broad_phase_quad_tree_8h.js b/_broad_phase_quad_tree_8h.js new file mode 100644 index 000000000..5d007d133 --- /dev/null +++ b/_broad_phase_quad_tree_8h.js @@ -0,0 +1,4 @@ +var _broad_phase_quad_tree_8h = +[ + [ "BroadPhaseQuadTree", "class_broad_phase_quad_tree.html", "class_broad_phase_quad_tree" ] +]; \ No newline at end of file diff --git a/_broad_phase_quad_tree_8h_source.html b/_broad_phase_quad_tree_8h_source.html new file mode 100644 index 000000000..6cdd679a0 --- /dev/null +++ b/_broad_phase_quad_tree_8h_source.html @@ -0,0 +1,270 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseQuadTree.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
+ + + +
10
+ +
12
+
+ +
15{
+
16public:
+ +
18
+
20 virtual ~BroadPhaseQuadTree() override;
+
21
+
22 // Implementing interface of BroadPhase (see BroadPhase for documentation)
+
23 virtual void Init(BodyManager *inBodyManager, const BroadPhaseLayerInterface &inLayerInterface) override;
+
24 virtual void Optimize() override;
+
25 virtual void FrameSync() override;
+
26 virtual void LockModifications() override;
+
27 virtual UpdateState UpdatePrepare() override;
+
28 virtual void UpdateFinalize(const UpdateState &inUpdateState) override;
+
29 virtual void UnlockModifications() override;
+
30 virtual AddState AddBodiesPrepare(BodyID *ioBodies, int inNumber) override;
+
31 virtual void AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState) override;
+
32 virtual void AddBodiesAbort(BodyID *ioBodies, int inNumber, AddState inAddState) override;
+
33 virtual void RemoveBodies(BodyID *ioBodies, int inNumber) override;
+
34 virtual void NotifyBodiesAABBChanged(BodyID *ioBodies, int inNumber, bool inTakeLock) override;
+
35 virtual void NotifyBodiesLayerChanged(BodyID *ioBodies, int inNumber) override;
+
36 virtual void CastRay(const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
37 virtual void CollideAABox(const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
38 virtual void CollideSphere(Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
39 virtual void CollidePoint(Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
40 virtual void CollideOrientedBox(const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
41 virtual void CastAABoxNoLock(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
42 virtual void CastAABox(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override;
+
43 virtual void FindCollidingPairs(BodyID *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter, BodyPairCollector &ioPairCollector) const override;
+
44 virtual AABox GetBounds() const override;
+
45#ifdef JPH_TRACK_BROADPHASE_STATS
+
46 virtual void ReportStats() override;
+
47#endif // JPH_TRACK_BROADPHASE_STATS
+
48
+
49private:
+
51 struct LayerState
+
52 {
+ +
54
+
55 BodyID * mBodyStart = nullptr;
+
56 BodyID * mBodyEnd;
+
57 QuadTree::AddState mAddState;
+
58 };
+
59
+ + +
62
+
63#ifdef JPH_ENABLE_ASSERTS
+
65 PhysicsLockContext mLockContext = nullptr;
+
66#endif // JPH_ENABLE_ASSERTS
+
67
+
69 size_t mMaxBodies = 0;
+
70
+
72 TrackingVector mTracking;
+
73
+
75 QuadTree::Allocator mAllocator;
+
76
+
78 const BroadPhaseLayerInterface *mBroadPhaseLayerInterface = nullptr;
+
79
+
81 QuadTree * mLayers;
+
82 uint mNumLayers;
+
83
+
85 struct UpdateStateImpl
+
86 {
+
87 QuadTree * mTree;
+
88 QuadTree::UpdateState mUpdateState;
+
89 };
+
90
+
91 static_assert(sizeof(UpdateStateImpl) <= sizeof(UpdateState));
+
92 static_assert(alignof(UpdateStateImpl) <= alignof(UpdateState));
+
93
+
95 SharedMutex mUpdateMutex;
+
96
+
99 mutable SharedMutex mQueryLocks[2];
+
100
+
102 atomic<uint32> mQueryLockIdx { 0 };
+
103
+
105 uint32 mNextLayerToUpdate = 0;
+
106};
+
+
107
+ + +
#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
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ + +
Axis aligned box.
Definition AABox.h:16
+
Definition Array.h:36
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Class that contains all bodies.
Definition BodyManager.h:44
+
Used to do coarse collision detection operations to quickly prune out bodies that will not collide.
Definition BroadPhase.h:26
+
virtual void AddBodiesAbort(BodyID *ioBodies, int inNumber, AddState inAddState)
Definition BroadPhase.h:71
+
virtual void AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState)=0
+
virtual void LockModifications()
Must be called before UpdatePrepare to prevent modifications from being made to the tree.
Definition BroadPhase.h:41
+
virtual void NotifyBodiesAABBChanged(BodyID *ioBodies, int inNumber, bool inTakeLock=true)=0
+
virtual void CastAABoxNoLock(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const =0
Same as BroadPhaseQuery::CastAABox but can be implemented in a way to take no broad phase locks.
+
virtual void FrameSync()
Must be called just before updating the broadphase when none of the body mutexes are locked.
Definition BroadPhase.h:38
+
virtual void UnlockModifications()
Must be called after UpdateFinalize to allow modifications to the broadphase.
Definition BroadPhase.h:54
+
virtual void NotifyBodiesLayerChanged(BodyID *ioBodies, int inNumber)=0
Call whenever the layer (and optionally the aabb as well) of a body changes (can change order of ioBo...
+
virtual void Optimize()
Should be called after many objects have been inserted to make the broadphase more efficient,...
Definition BroadPhase.h:35
+
virtual void UpdateFinalize(const UpdateState &inUpdateState)
Finalizing the update will quickly apply the changes.
Definition BroadPhase.h:51
+
virtual AABox GetBounds() const =0
Get the bounding box of all objects in the broadphase.
+
virtual void Init(BodyManager *inBodyManager, const BroadPhaseLayerInterface &inLayerInterface)
Definition BroadPhase.cpp:11
+
virtual AddState AddBodiesPrepare(BodyID *ioBodies, int inNumber)
Definition BroadPhase.h:62
+
virtual void RemoveBodies(BodyID *ioBodies, int inNumber)=0
+
void * AddState
Handle used during adding bodies to the broadphase.
Definition BroadPhase.h:57
+
virtual void FindCollidingPairs(BodyID *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter, BodyPairCollector &ioPairCollector) const =0
+
virtual UpdateState UpdatePrepare()
Definition BroadPhase.h:48
+
Filter class for broadphase layers.
Definition BroadPhaseLayer.h:94
+
Interface that the application should implement to allow mapping object layers to broadphase layers.
Definition BroadPhaseLayer.h:61
+
Fast SIMD based quad tree BroadPhase that is multithreading aware and tries to do a minimal amount of...
Definition BroadPhaseQuadTree.h:15
+
virtual void CollidePoint(Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Get bodies intersecting with a point and any hits to ioCollector.
+
virtual void CastRay(const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Cast a ray and add any hits to ioCollector.
+
virtual void CollideAABox(const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Get bodies intersecting with inBox and any hits to ioCollector.
+
virtual void CastAABox(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Cast a box and add any hits to ioCollector.
+
virtual void CollideOrientedBox(const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Get bodies intersecting with an oriented box and any hits to ioCollector.
+
virtual void CollideSphere(Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Get bodies intersecting with a sphere and any hits to ioCollector.
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+ +
Filter class for object layers.
Definition ObjectLayer.h:28
+
Filter class to test if two objects can collide based on their object layer. Used while finding colli...
Definition ObjectLayer.h:50
+
Class to test if an object can collide with a broadphase layer. Used while finding collision pairs.
Definition BroadPhaseLayer.h:80
+
Oriented box.
Definition OrientedBox.h:18
+
Definition QuadTree.h:21
+
Array< Tracking > TrackingVector
Definition QuadTree.h:169
+
Definition Mutex.h:166
+
Definition Vec3.h:17
+
Structure that holds AABox moving linearly through 3d space.
Definition AABoxCast.h:13
+
Context used during broadphase update.
Definition BroadPhase.h:44
+
Temporary data structure to pass information between AddBodiesPrepare and AddBodiesFinalize/Abort.
Definition QuadTree.h:210
+
Data to track location of a Body in the tree.
Definition QuadTree.h:156
+
Definition QuadTree.h:193
+
Definition RayCast.h:47
+
+
+ + + + diff --git a/_broad_phase_query_8h.html b/_broad_phase_query_8h.html new file mode 100644 index 000000000..8a7909455 --- /dev/null +++ b/_broad_phase_query_8h.html @@ -0,0 +1,182 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseQuery.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseQuery.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  BroadPhaseQuery
 
+ + + + + + + +

+Typedefs

using RayCastBodyCollector = CollisionCollector< BroadPhaseCastResult, CollisionCollectorTraitsCastRay >
 
using CastShapeBodyCollector = CollisionCollector< BroadPhaseCastResult, CollisionCollectorTraitsCastShape >
 
using CollideShapeBodyCollector = CollisionCollector< BodyID, CollisionCollectorTraitsCollideShape >
 
+

Typedef Documentation

+ +

◆ CastShapeBodyCollector

+ + + +

◆ CollideShapeBodyCollector

+ + + +

◆ RayCastBodyCollector

+ + +
+
+ + + + diff --git a/_broad_phase_query_8h.js b/_broad_phase_query_8h.js new file mode 100644 index 000000000..860920490 --- /dev/null +++ b/_broad_phase_query_8h.js @@ -0,0 +1,7 @@ +var _broad_phase_query_8h = +[ + [ "BroadPhaseQuery", "class_broad_phase_query.html", "class_broad_phase_query" ], + [ "CastShapeBodyCollector", "_broad_phase_query_8h.html#adec8e742b1ef969e096cfd4e19902353", null ], + [ "CollideShapeBodyCollector", "_broad_phase_query_8h.html#acb6931761cab44f04e48cfb6ebc7fa7b", null ], + [ "RayCastBodyCollector", "_broad_phase_query_8h.html#a398068f8b89e507b29d1a3d89471a5bb", null ] +]; \ No newline at end of file diff --git a/_broad_phase_query_8h_source.html b/_broad_phase_query_8h_source.html new file mode 100644 index 000000000..946d1ac5f --- /dev/null +++ b/_broad_phase_query_8h_source.html @@ -0,0 +1,191 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/BroadPhaseQuery.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseQuery.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
+ + + + + +
12
+ +
14
+
15struct RayCast;
+ +
17class AABox;
+
18class OrientedBox;
+
19struct AABoxCast;
+
20
+
21// Various collector configurations
+ + + +
25
+
+ +
29{
+
30public:
+
32 virtual ~BroadPhaseQuery() = default;
+
33
+
35 virtual void CastRay(const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter = { }, const ObjectLayerFilter &inObjectLayerFilter = { }) const = 0;
+
36
+
38 virtual void CollideAABox(const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter = { }, const ObjectLayerFilter &inObjectLayerFilter = { }) const = 0;
+
39
+
41 virtual void CollideSphere(Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter = { }, const ObjectLayerFilter &inObjectLayerFilter = { }) const = 0;
+
42
+
44 virtual void CollidePoint(Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter = { }, const ObjectLayerFilter &inObjectLayerFilter = { }) const = 0;
+
45
+
47 virtual void CollideOrientedBox(const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter = { }, const ObjectLayerFilter &inObjectLayerFilter = { }) const = 0;
+
48
+
50 virtual void CastAABox(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter = { }, const ObjectLayerFilter &inObjectLayerFilter = { }) const = 0;
+
51};
+
+
52
+ + + + +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
Axis aligned box.
Definition AABox.h:16
+
Structure that holds a ray cast or other object cast hit.
Definition CastResult.h:14
+
Filter class for broadphase layers.
Definition BroadPhaseLayer.h:94
+
Definition BroadPhaseQuery.h:29
+
virtual void CollidePoint(Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Get bodies intersecting with a point and any hits to ioCollector.
+
virtual void CastRay(const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Cast a ray and add any hits to ioCollector.
+
virtual ~BroadPhaseQuery()=default
Virtual destructor.
+
virtual void CollideAABox(const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Get bodies intersecting with inBox and any hits to ioCollector.
+
virtual void CastAABox(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Cast a box and add any hits to ioCollector.
+
virtual void CollideOrientedBox(const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Get bodies intersecting with an oriented box and any hits to ioCollector.
+
virtual void CollideSphere(Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
Get bodies intersecting with a sphere and any hits to ioCollector.
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Filter class for object layers.
Definition ObjectLayer.h:28
+
Oriented box.
Definition OrientedBox.h:18
+
Definition Vec3.h:17
+
Structure that holds AABox moving linearly through 3d space.
Definition AABoxCast.h:13
+
Definition RayCast.h:47
+
+
+ + + + diff --git a/_byte_buffer_8h.html b/_byte_buffer_8h.html new file mode 100644 index 000000000..79de380fa --- /dev/null +++ b/_byte_buffer_8h.html @@ -0,0 +1,150 @@ + + + + + + + +Jolt Physics: Jolt/Core/ByteBuffer.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ByteBuffer.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  ByteBuffer
 Simple byte buffer, aligned to a cache line. More...
 
+ + + + +

+Typedefs

using ByteBufferVector = Array< uint8, STLAlignedAllocator< uint8, JPH_CACHE_LINE_SIZE > >
 Underlying data type for ByteBuffer.
 
+

Typedef Documentation

+ +

◆ ByteBufferVector

+ +
+
+ +

Underlying data type for ByteBuffer.

+ +
+
+
+
+ + + + diff --git a/_byte_buffer_8h.js b/_byte_buffer_8h.js new file mode 100644 index 000000000..82dd3bf25 --- /dev/null +++ b/_byte_buffer_8h.js @@ -0,0 +1,5 @@ +var _byte_buffer_8h = +[ + [ "ByteBuffer", "class_byte_buffer.html", "class_byte_buffer" ], + [ "ByteBufferVector", "_byte_buffer_8h.html#add9a56154edb042637c21f9d3544bf81", null ] +]; \ No newline at end of file diff --git a/_byte_buffer_8h_source.html b/_byte_buffer_8h_source.html new file mode 100644 index 000000000..ce7a068be --- /dev/null +++ b/_byte_buffer_8h_source.html @@ -0,0 +1,216 @@ + + + + + + + +Jolt Physics: Jolt/Core/ByteBuffer.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ByteBuffer.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
+
+ +
16{
+
17public:
+
+
19 size_t Align(size_t inSize)
+
20 {
+
21 // Assert power of 2
+
22 JPH_ASSERT(IsPowerOf2(inSize));
+
23
+
24 // Calculate new size and resize buffer
+
25 size_t s = AlignUp(size(), inSize);
+
26 resize(s, 0);
+
27
+
28 return s;
+
29 }
+
+
30
+
32 template <class Type>
+
+
33 Type * Allocate(size_t inSize = 1)
+
34 {
+
35 // Reserve space
+
36 size_t s = size();
+
37 resize(s + inSize * sizeof(Type));
+
38
+
39 // Get data pointer
+
40 Type *data = reinterpret_cast<Type *>(&at(s));
+
41
+
42 // Construct elements
+
43 for (Type *d = data, *d_end = data + inSize; d < d_end; ++d)
+
44 ::new (d) Type;
+
45
+
46 // Return pointer
+
47 return data;
+
48 }
+
+
49
+
51 template <class Type>
+
+
52 void AppendVector(const Array<Type> &inData)
+
53 {
+
54 size_t size = inData.size() * sizeof(Type);
+
55 uint8 *data = Allocate<uint8>(size);
+
56 memcpy(data, &inData[0], size);
+
57 }
+
+
58
+
60 template <class Type>
+
+
61 const Type * Get(size_t inPosition) const
+
62 {
+
63 return reinterpret_cast<const Type *>(&at(inPosition));
+
64 }
+
+
65
+
67 template <class Type>
+
+
68 Type * Get(size_t inPosition)
+
69 {
+
70 return reinterpret_cast<Type *>(&at(inPosition));
+
71 }
+
+
72};
+
+
73
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
constexpr bool IsPowerOf2(T inV)
Check if inV is a power of 2.
Definition Math.h:73
+
T AlignUp(T inV, uint64 inAlignment)
Align inV up to the next inAlignment bytes.
Definition Math.h:80
+ +
Definition Array.h:36
+
void resize(size_type inNewSize)
Resize array to new length.
Definition Array.h:118
+
const T * data() const
Definition Array.h:442
+
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
T & at(size_type inIdx)
Access element.
Definition Array.h:466
+
Simple byte buffer, aligned to a cache line.
Definition ByteBuffer.h:16
+
Type * Get(size_t inPosition)
Get object at inPosition (an offset in bytes)
Definition ByteBuffer.h:68
+
Type * Allocate(size_t inSize=1)
Allocate block of data of inSize elements and return the pointer.
Definition ByteBuffer.h:33
+
void AppendVector(const Array< Type > &inData)
Append inData to the buffer.
Definition ByteBuffer.h:52
+
size_t Align(size_t inSize)
Align the size to a multiple of inSize, returns the length after alignment.
Definition ByteBuffer.h:19
+
const Type * Get(size_t inPosition) const
Get object at inPosition (an offset in bytes)
Definition ByteBuffer.h:61
+
+
+ + + + diff --git a/_calculate_solver_steps_8h.html b/_calculate_solver_steps_8h.html new file mode 100644 index 000000000..8fd7cc38a --- /dev/null +++ b/_calculate_solver_steps_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/CalculateSolverSteps.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CalculateSolverSteps.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  CalculateSolverSteps
 Class used to calculate the total number of velocity and position steps. More...
 
class  DummyCalculateSolverSteps
 Dummy class to replace the steps calculator when we don't need the result. More...
 
+
+
+ + + + diff --git a/_calculate_solver_steps_8h.js b/_calculate_solver_steps_8h.js new file mode 100644 index 000000000..36e04db1e --- /dev/null +++ b/_calculate_solver_steps_8h.js @@ -0,0 +1,5 @@ +var _calculate_solver_steps_8h = +[ + [ "CalculateSolverSteps", "class_calculate_solver_steps.html", "class_calculate_solver_steps" ], + [ "DummyCalculateSolverSteps", "class_dummy_calculate_solver_steps.html", "class_dummy_calculate_solver_steps" ] +]; \ No newline at end of file diff --git a/_calculate_solver_steps_8h_source.html b/_calculate_solver_steps_8h_source.html new file mode 100644 index 000000000..9238166bb --- /dev/null +++ b/_calculate_solver_steps_8h_source.html @@ -0,0 +1,204 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/CalculateSolverSteps.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CalculateSolverSteps.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+
+ +
13{
+
14public:
+
16 JPH_INLINE explicit CalculateSolverSteps(const PhysicsSettings &inSettings) : mSettings(inSettings) { }
+
17
+
19 template <class Type>
+
+
20 JPH_INLINE void operator () (const Type *inObject)
+
21 {
+
22 uint num_velocity_steps = inObject->GetNumVelocityStepsOverride();
+
23 mNumVelocitySteps = max(mNumVelocitySteps, num_velocity_steps);
+
24 mApplyDefaultVelocity |= num_velocity_steps == 0;
+
25
+
26 uint num_position_steps = inObject->GetNumPositionStepsOverride();
+
27 mNumPositionSteps = max(mNumPositionSteps, num_position_steps);
+
28 mApplyDefaultPosition |= num_position_steps == 0;
+
29 }
+
+
30
+
+
32 JPH_INLINE void Finalize()
+
33 {
+
34 // If we have a default velocity/position step count, take the max of the default and the overrides
+
35 if (mApplyDefaultVelocity)
+
36 mNumVelocitySteps = max(mNumVelocitySteps, mSettings.mNumVelocitySteps);
+
37 if (mApplyDefaultPosition)
+
38 mNumPositionSteps = max(mNumPositionSteps, mSettings.mNumPositionSteps);
+
39 }
+
+
40
+
42 JPH_INLINE uint GetNumPositionSteps() const { return mNumPositionSteps; }
+
43 JPH_INLINE uint GetNumVelocitySteps() const { return mNumVelocitySteps; }
+
44
+
45private:
+
46 const PhysicsSettings & mSettings;
+
47
+
48 uint mNumVelocitySteps = 0;
+
49 uint mNumPositionSteps = 0;
+
50
+
51 bool mApplyDefaultVelocity = false;
+
52 bool mApplyDefaultPosition = false;
+
53};
+
+
54
+
+ +
57{
+
58public:
+
59 template <class Type>
+
+
60 JPH_INLINE void operator () (const Type *) const
+
61 {
+
62 /* Nothing to do */
+
63 }
+
+
64};
+
+
65
+ +
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Class used to calculate the total number of velocity and position steps.
Definition CalculateSolverSteps.h:13
+
JPH_INLINE CalculateSolverSteps(const PhysicsSettings &inSettings)
Constructor.
Definition CalculateSolverSteps.h:16
+
JPH_INLINE uint GetNumVelocitySteps() const
Definition CalculateSolverSteps.h:43
+
JPH_INLINE void Finalize()
Must be called after all bodies/constraints have been processed.
Definition CalculateSolverSteps.h:32
+
JPH_INLINE void operator()(const Type *inObject)
Combine the number of velocity and position steps for this body/constraint with the current values.
Definition CalculateSolverSteps.h:20
+
JPH_INLINE uint GetNumPositionSteps() const
Get the results of the calculation.
Definition CalculateSolverSteps.h:42
+
Dummy class to replace the steps calculator when we don't need the result.
Definition CalculateSolverSteps.h:57
+
JPH_INLINE void operator()(const Type *) const
Definition CalculateSolverSteps.h:60
+
Definition PhysicsSettings.h:28
+
uint mNumPositionSteps
Number of solver position iterations to run.
Definition PhysicsSettings.h:81
+
uint mNumVelocitySteps
Definition PhysicsSettings.h:78
+
+
+ + + + diff --git a/_capsule_shape_8cpp.html b/_capsule_shape_8cpp.html new file mode 100644 index 000000000..222b1d757 --- /dev/null +++ b/_capsule_shape_8cpp.html @@ -0,0 +1,164 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/CapsuleShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CapsuleShape.cpp File Reference
+
+
+ + + + + + +

+Classes

class  CapsuleShape::CapsuleNoConvex
 
class  CapsuleShape::CapsuleWithConvex
 
+ + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (CapsuleShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (CapsuleShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_capsule_shape_8cpp.js b/_capsule_shape_8cpp.js new file mode 100644 index 000000000..988706acf --- /dev/null +++ b/_capsule_shape_8cpp.js @@ -0,0 +1,6 @@ +var _capsule_shape_8cpp = +[ + [ "CapsuleShape::CapsuleNoConvex", "class_capsule_shape_1_1_capsule_no_convex.html", "class_capsule_shape_1_1_capsule_no_convex" ], + [ "CapsuleShape::CapsuleWithConvex", "class_capsule_shape_1_1_capsule_with_convex.html", "class_capsule_shape_1_1_capsule_with_convex" ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_capsule_shape_8cpp.html#a1089f509712863264e2a34c91c82c1f1", null ] +]; \ No newline at end of file diff --git a/_capsule_shape_8h.html b/_capsule_shape_8h.html new file mode 100644 index 000000000..dd1412c22 --- /dev/null +++ b/_capsule_shape_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/CapsuleShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CapsuleShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  CapsuleShapeSettings
 Class that constructs a CapsuleShape. More...
 
class  CapsuleShape
 A capsule, implemented as a line segment with convex radius. More...
 
+
+
+ + + + diff --git a/_capsule_shape_8h.js b/_capsule_shape_8h.js new file mode 100644 index 000000000..b0ba6f9ad --- /dev/null +++ b/_capsule_shape_8h.js @@ -0,0 +1,5 @@ +var _capsule_shape_8h = +[ + [ "CapsuleShapeSettings", "class_capsule_shape_settings.html", null ], + [ "CapsuleShape", "class_capsule_shape.html", "class_capsule_shape" ] +]; \ No newline at end of file diff --git a/_capsule_shape_8h_source.html b/_capsule_shape_8h_source.html new file mode 100644 index 000000000..876a2734b --- /dev/null +++ b/_capsule_shape_8h_source.html @@ -0,0 +1,289 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/CapsuleShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CapsuleShape.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 CapsuleShapeSettings() = default;
+
18
+
20 CapsuleShapeSettings(float inHalfHeightOfCylinder, float inRadius, const PhysicsMaterial *inMaterial = nullptr) : ConvexShapeSettings(inMaterial), mRadius(inRadius), mHalfHeightOfCylinder(inHalfHeightOfCylinder) { }
+
21
+
23 bool IsValid() const { return mRadius > 0.0f && mHalfHeightOfCylinder >= 0.0f; }
+
24
+
26 bool IsSphere() const { return mHalfHeightOfCylinder == 0.0f; }
+
27
+
28 // See: ShapeSettings
+
29 virtual ShapeResult Create() const override;
+
30
+
31 float mRadius = 0.0f;
+
32 float mHalfHeightOfCylinder = 0.0f;
+
33};
+
+
34
+
+ +
37{
+
38public:
+ +
40
+ +
43 CapsuleShape(const CapsuleShapeSettings &inSettings, ShapeResult &outResult);
+
44
+
46 CapsuleShape(float inHalfHeightOfCylinder, float inRadius, const PhysicsMaterial *inMaterial = nullptr) : ConvexShape(EShapeSubType::Capsule, inMaterial), mRadius(inRadius), mHalfHeightOfCylinder(inHalfHeightOfCylinder) { JPH_ASSERT(inHalfHeightOfCylinder > 0.0f); JPH_ASSERT(inRadius > 0.0f); }
+
47
+
49 float GetRadius() const { return mRadius; }
+
50
+
52 float GetHalfHeightOfCylinder() const { return mHalfHeightOfCylinder; }
+
53
+
54 // See Shape::GetLocalBounds
+
55 virtual AABox GetLocalBounds() const override;
+
56
+
57 // See Shape::GetWorldSpaceBounds
+
58 virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+ +
60
+
61 // See Shape::GetInnerRadius
+
62 virtual float GetInnerRadius() const override { return mRadius; }
+
63
+
64 // See Shape::GetMassProperties
+
65 virtual MassProperties GetMassProperties() const override;
+
66
+
67 // See Shape::GetSurfaceNormal
+
68 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
69
+
70 // See Shape::GetSupportingFace
+
71 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
72
+
73 // See ConvexShape::GetSupportFunction
+
74 virtual const Support * GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override;
+
75
+
76#ifdef JPH_DEBUG_RENDERER
+
77 // See Shape::Draw
+
78 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
79#endif // JPH_DEBUG_RENDERER
+
80
+
81 // See Shape::CastRay
+ +
83 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
84
+
85 // See: Shape::CollidePoint
+
86 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
87
+
88 // See: Shape::CollideSoftBodyVertices
+
89 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
90
+
91 // See Shape::GetTrianglesStart
+
92 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override;
+
93
+
94 // See Shape::GetTrianglesNext
+
95 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override;
+
96
+
97 // See Shape
+
98 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
99
+
100 // See Shape::GetStats
+
101 virtual Stats GetStats() const override { return Stats(sizeof(*this), 0); }
+
102
+
103 // See Shape::GetVolume
+
104 virtual float GetVolume() const override { return 4.0f / 3.0f * JPH_PI * Cubed(mRadius) + 2.0f * JPH_PI * mHalfHeightOfCylinder * Square(mRadius); }
+
105
+
106 // See Shape::IsValidScale
+
107 virtual bool IsValidScale(Vec3Arg inScale) const override;
+
108
+
109 // See Shape::MakeScaleValid
+
110 virtual Vec3 MakeScaleValid(Vec3Arg inScale) const override;
+
111
+
112 // Register shape functions with the registry
+
113 static void sRegister();
+
114
+
115protected:
+
116 // See: Shape::RestoreBinaryState
+
117 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
118
+
119private:
+
120 // Classes for GetSupportFunction
+
121 class CapsuleNoConvex;
+
122 class CapsuleWithConvex;
+
123
+
124 float mRadius = 0.0f;
+
125 float mHalfHeightOfCylinder = 0.0f;
+
126};
+
+
127
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
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_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
JPH_INLINE constexpr T Cubed(T inV)
Returns .
Definition Math.h:59
+
#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:76
+ +
Axis aligned box.
Definition AABox.h:16
+
A capsule, implemented as a line segment with convex radius.
Definition CapsuleShape.h:37
+
float GetHalfHeightOfCylinder() const
Get half of the height of the cylinder.
Definition CapsuleShape.h:52
+
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition CapsuleShape.h:101
+
float GetRadius() const
Radius of the cylinder.
Definition CapsuleShape.h:49
+
CapsuleShape(float inHalfHeightOfCylinder, float inRadius, const PhysicsMaterial *inMaterial=nullptr)
Create a capsule centered around the origin with one sphere cap at (0, -inHalfHeightOfCylinder,...
Definition CapsuleShape.h:46
+
JPH_OVERRIDE_NEW_DELETE CapsuleShape()
Constructor.
Definition CapsuleShape.h:42
+
virtual float GetVolume() const override
Definition CapsuleShape.h:104
+
virtual float GetInnerRadius() const override
Definition CapsuleShape.h:62
+
Class that constructs a CapsuleShape.
Definition CapsuleShape.h:13
+
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
+
virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
Definition ConvexShape.cpp:159
+
Class that constructs a ConvexShape (abstract)
Definition ConvexShape.h:18
+
ConvexShapeSettings()=default
Constructor.
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
Definition Quat.h:33
+
Specialization of cast result against a shape.
Definition CastResult.h:30
+ +
Filter class.
Definition ShapeFilter.h:17
+
virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
Definition Shape.h:220
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
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 Vec3.h:17
+
Definition RayCast.h:47
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
+
+ + + + diff --git a/_cast_convex_vs_triangles_8cpp.html b/_cast_convex_vs_triangles_8cpp.html new file mode 100644 index 000000000..fa2a6f18c --- /dev/null +++ b/_cast_convex_vs_triangles_8cpp.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CastConvexVsTriangles.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CastConvexVsTriangles.cpp File Reference
+
+
+
+
+ + + + diff --git a/_cast_convex_vs_triangles_8h.html b/_cast_convex_vs_triangles_8h.html new file mode 100644 index 000000000..eec316409 --- /dev/null +++ b/_cast_convex_vs_triangles_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CastConvexVsTriangles.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CastConvexVsTriangles.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  CastConvexVsTriangles
 Collision detection helper that casts a convex object vs one or more triangles. More...
 
+
+
+ + + + diff --git a/_cast_convex_vs_triangles_8h.js b/_cast_convex_vs_triangles_8h.js new file mode 100644 index 000000000..65fe6e79b --- /dev/null +++ b/_cast_convex_vs_triangles_8h.js @@ -0,0 +1,4 @@ +var _cast_convex_vs_triangles_8h = +[ + [ "CastConvexVsTriangles", "class_cast_convex_vs_triangles.html", "class_cast_convex_vs_triangles" ] +]; \ No newline at end of file diff --git a/_cast_convex_vs_triangles_8h_source.html b/_cast_convex_vs_triangles_8h_source.html new file mode 100644 index 000000000..38e03794b --- /dev/null +++ b/_cast_convex_vs_triangles_8h_source.html @@ -0,0 +1,176 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CastConvexVsTriangles.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CastConvexVsTriangles.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
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+
23 CastConvexVsTriangles(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, CastShapeCollector &ioCollector);
+
24
+
30 void Cast(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2);
+
31
+
32protected:
+ + + + + + +
39
+
40private:
+
41 ConvexShape::SupportBuffer mSupportBuffer;
+
42 const ConvexShape::Support * mSupport = nullptr;
+
43 float mScaleSign;
+
44};
+
+
45
+ + +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Collision detection helper that casts a convex object vs one or more triangles.
Definition CastConvexVsTriangles.h:14
+
Vec3 mScale
Definition CastConvexVsTriangles.h:36
+
CastShapeCollector & mCollector
Definition CastConvexVsTriangles.h:38
+
const Mat44 & mCenterOfMassTransform2
Definition CastConvexVsTriangles.h:35
+
SubShapeIDCreator mSubShapeIDCreator1
Definition CastConvexVsTriangles.h:37
+
const ShapeCast & mShapeCast
Definition CastConvexVsTriangles.h:33
+
const ShapeCastSettings & mShapeCastSettings
Definition CastConvexVsTriangles.h:34
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
Buffer to hold a Support object, used to avoid dynamic memory allocations.
Definition ConvexShape.h:85
+
Function that provides an interface for GJK.
Definition ConvexShape.h:69
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Settings to be passed with a shape cast.
Definition ShapeCast.h:92
+
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 Vec3.h:17
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_cast_result_8h.html b/_cast_result_8h.html new file mode 100644 index 000000000..8740b4353 --- /dev/null +++ b/_cast_result_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CastResult.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CastResult.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  BroadPhaseCastResult
 Structure that holds a ray cast or other object cast hit. More...
 
class  RayCastResult
 Specialization of cast result against a shape. More...
 
+
+
+ + + + diff --git a/_cast_result_8h.js b/_cast_result_8h.js new file mode 100644 index 000000000..64b9756b5 --- /dev/null +++ b/_cast_result_8h.js @@ -0,0 +1,5 @@ +var _cast_result_8h = +[ + [ "BroadPhaseCastResult", "class_broad_phase_cast_result.html", "class_broad_phase_cast_result" ], + [ "RayCastResult", "class_ray_cast_result.html", "class_ray_cast_result" ] +]; \ No newline at end of file diff --git a/_cast_result_8h_source.html b/_cast_result_8h_source.html new file mode 100644 index 000000000..497a6f76a --- /dev/null +++ b/_cast_result_8h_source.html @@ -0,0 +1,170 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CastResult.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CastResult.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
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+ +
17
+
19 inline float GetEarlyOutFraction() const { return mFraction; }
+
20
+
22 inline void Reset() { mBodyID = BodyID(); mFraction = 1.0f + FLT_EPSILON; }
+
23
+ +
25 float mFraction = 1.0f + FLT_EPSILON;
+
26};
+
+
27
+
+ +
30{
+
31public:
+ +
33
+ +
35};
+
+
36
+ + +
#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
+ +
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Structure that holds a ray cast or other object cast hit.
Definition CastResult.h:14
+
JPH_OVERRIDE_NEW_DELETE float GetEarlyOutFraction() const
Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'....
Definition CastResult.h:19
+
float mFraction
Hit fraction of the ray/object [0, 1], HitPoint = Start + mFraction * (End - Start)
Definition CastResult.h:25
+
void Reset()
Reset this result so it can be reused for a new cast.
Definition CastResult.h:22
+
BodyID mBodyID
Body that was hit.
Definition CastResult.h:24
+
Specialization of cast result against a shape.
Definition CastResult.h:30
+
JPH_OVERRIDE_NEW_DELETE SubShapeID mSubShapeID2
Sub shape ID of shape that we collided against.
Definition CastResult.h:34
+
A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...
Definition SubShapeID.h:23
+
+
+ + + + diff --git a/_cast_sphere_vs_triangles_8cpp.html b/_cast_sphere_vs_triangles_8cpp.html new file mode 100644 index 000000000..8bc3fed09 --- /dev/null +++ b/_cast_sphere_vs_triangles_8cpp.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CastSphereVsTriangles.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CastSphereVsTriangles.cpp File Reference
+
+
+
+
+ + + + diff --git a/_cast_sphere_vs_triangles_8h.html b/_cast_sphere_vs_triangles_8h.html new file mode 100644 index 000000000..a54ce85d1 --- /dev/null +++ b/_cast_sphere_vs_triangles_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CastSphereVsTriangles.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CastSphereVsTriangles.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  CastSphereVsTriangles
 Collision detection helper that casts a sphere vs one or more triangles. More...
 
+
+
+ + + + diff --git a/_cast_sphere_vs_triangles_8h.js b/_cast_sphere_vs_triangles_8h.js new file mode 100644 index 000000000..f0d2f9b7d --- /dev/null +++ b/_cast_sphere_vs_triangles_8h.js @@ -0,0 +1,4 @@ +var _cast_sphere_vs_triangles_8h = +[ + [ "CastSphereVsTriangles", "class_cast_sphere_vs_triangles.html", "class_cast_sphere_vs_triangles" ] +]; \ No newline at end of file diff --git a/_cast_sphere_vs_triangles_8h_source.html b/_cast_sphere_vs_triangles_8h_source.html new file mode 100644 index 000000000..a3daa36d9 --- /dev/null +++ b/_cast_sphere_vs_triangles_8h_source.html @@ -0,0 +1,179 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CastSphereVsTriangles.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CastSphereVsTriangles.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{
+
14public:
+
22 CastSphereVsTriangles(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, CastShapeCollector &ioCollector);
+
23
+
29 void Cast(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2);
+
30
+
31protected:
+ + +
34 float mRadius;
+ + + + + +
40
+
41private:
+
42 void AddHit(bool inBackFacing, const SubShapeID &inSubShapeID2, float inFraction, Vec3Arg inContactPointA, Vec3Arg inContactPointB, Vec3Arg inContactNormal);
+
43 void AddHitWithActiveEdgeDetection(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, bool inBackFacing, Vec3Arg inTriangleNormal, uint8 inActiveEdges, const SubShapeID &inSubShapeID2, float inFraction, Vec3Arg inContactPointA, Vec3Arg inContactPointB, Vec3Arg inContactNormal);
+
44 float RayCylinder(Vec3Arg inRayDirection, Vec3Arg inCylinderA, Vec3Arg inCylinderB, float inRadius) const;
+
45
+
46 float mScaleSign;
+
47};
+
+
48
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_NAMESPACE_BEGIN JPH_INLINE float RayCylinder(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCylinderRadius)
Definition RayCylinder.h:17
+ +
Collision detection helper that casts a sphere vs one or more triangles.
Definition CastSphereVsTriangles.h:13
+
const Mat44 & mCenterOfMassTransform2
Definition CastSphereVsTriangles.h:36
+
SubShapeIDCreator mSubShapeIDCreator1
Definition CastSphereVsTriangles.h:38
+
Vec3 mDirection
Direction and length of movement of sphere.
Definition CastSphereVsTriangles.h:33
+
CastShapeCollector & mCollector
Definition CastSphereVsTriangles.h:39
+
Vec3 mStart
Starting location of the sphere.
Definition CastSphereVsTriangles.h:32
+
Vec3 mScale
Definition CastSphereVsTriangles.h:37
+
float mRadius
Scaled radius of sphere.
Definition CastSphereVsTriangles.h:34
+
const ShapeCastSettings & mShapeCastSettings
Definition CastSphereVsTriangles.h:35
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Settings to be passed with a shape cast.
Definition ShapeCast.h:92
+
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 Vec3.h:17
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_character_8cpp.html b/_character_8cpp.html new file mode 100644 index 000000000..2a88cf39c --- /dev/null +++ b/_character_8cpp.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Character/Character.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Character.cpp File Reference
+
+
+
+
+ + + + diff --git a/_character_8h.html b/_character_8h.html new file mode 100644 index 000000000..0686d152c --- /dev/null +++ b/_character_8h.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Character/Character.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Character.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  CharacterSettings
 Contains the configuration of a character. More...
 
class  Character
 
+
+
+ + + + diff --git a/_character_8h.js b/_character_8h.js new file mode 100644 index 000000000..f20961716 --- /dev/null +++ b/_character_8h.js @@ -0,0 +1,5 @@ +var _character_8h = +[ + [ "CharacterSettings", "class_character_settings.html", "class_character_settings" ], + [ "Character", "class_character.html", "class_character" ] +]; \ No newline at end of file diff --git a/_character_8h_source.html b/_character_8h_source.html new file mode 100644 index 000000000..f7fd3e9a6 --- /dev/null +++ b/_character_8h_source.html @@ -0,0 +1,242 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Character/Character.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Character.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
+ + + + +
11
+ +
13
+
+ +
16{
+
17public:
+ +
19
+
21 ObjectLayer mLayer = 0;
+
22
+
24 float mMass = 80.0f;
+
25
+
27 float mFriction = 0.2f;
+
28
+
30 float mGravityFactor = 1.0f;
+
31};
+
+
32
+
+ +
38{
+
39public:
+ +
41
+
48 Character(const CharacterSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, uint64 inUserData, PhysicsSystem *inSystem);
+
49
+
51 virtual ~Character() override;
+
52
+
54 void AddToPhysicsSystem(EActivation inActivationMode = EActivation::Activate, bool inLockBodies = true);
+
55
+
57 void RemoveFromPhysicsSystem(bool inLockBodies = true);
+
58
+
60 void Activate(bool inLockBodies = true);
+
61
+
65 void PostSimulation(float inMaxSeparationDistance, bool inLockBodies = true);
+
66
+
68 void SetLinearAndAngularVelocity(Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity, bool inLockBodies = true);
+
69
+
71 Vec3 GetLinearVelocity(bool inLockBodies = true) const;
+
72
+
74 void SetLinearVelocity(Vec3Arg inLinearVelocity, bool inLockBodies = true);
+
75
+
77 void AddLinearVelocity(Vec3Arg inLinearVelocity, bool inLockBodies = true);
+
78
+
80 void AddImpulse(Vec3Arg inImpulse, bool inLockBodies = true);
+
81
+
83 BodyID GetBodyID() const { return mBodyID; }
+
84
+
86 void GetPositionAndRotation(RVec3 &outPosition, Quat &outRotation, bool inLockBodies = true) const;
+
87
+
89 void SetPositionAndRotation(RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode = EActivation::Activate, bool inLockBodies = true) const;
+
90
+
92 RVec3 GetPosition(bool inLockBodies = true) const;
+
93
+
95 void SetPosition(RVec3Arg inPostion, EActivation inActivationMode = EActivation::Activate, bool inLockBodies = true);
+
96
+
98 Quat GetRotation(bool inLockBodies = true) const;
+
99
+
101 void SetRotation(QuatArg inRotation, EActivation inActivationMode = EActivation::Activate, bool inLockBodies = true);
+
102
+
104 RVec3 GetCenterOfMassPosition(bool inLockBodies = true) const;
+
105
+
107 RMat44 GetWorldTransform(bool inLockBodies = true) const;
+
108
+
110 ObjectLayer GetLayer() const { return mLayer; }
+
111
+
113 void SetLayer(ObjectLayer inLayer, bool inLockBodies = true);
+
114
+
117 bool SetShape(const Shape *inShape, float inMaxPenetrationDepth, bool inLockBodies = true);
+
118
+
120 TransformedShape GetTransformedShape(bool inLockBodies = true) const;
+
121
+
131 void CheckCollision(RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inMovementDirection, float inMaxSeparationDistance, const Shape *inShape, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, bool inLockBodies = true) const;
+
132
+
133private:
+
135 void CheckCollision(RMat44Arg inCenterOfMassTransform, Vec3Arg inMovementDirection, float inMaxSeparationDistance, const Shape *inShape, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, bool inLockBodies) const;
+
136
+
138 void CheckCollision(const Shape *inShape, float inMaxSeparationDistance, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, bool inLockBodies) const;
+
139
+
141 BodyID mBodyID;
+
142
+
144 ObjectLayer mLayer;
+
145};
+
+
146
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
EActivation
Enum used by AddBody to determine if the body needs to be initially active.
Definition EActivation.h:11
+
@ Activate
Activate the body, making it part of the simulation.
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
uint16 ObjectLayer
Definition ObjectLayer.h:16
+ +
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Base class for character class.
Definition CharacterBase.h:54
+
Base class for configuration of a character.
Definition CharacterBase.h:21
+
Definition Character.h:38
+
BodyID GetBodyID() const
Get the body associated with this character.
Definition Character.h:83
+
ObjectLayer GetLayer() const
Get the layer of the character.
Definition Character.h:110
+
Contains the configuration of a character.
Definition Character.h:16
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Definition PhysicsSystem.h:29
+
Definition Quat.h:33
+
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition Shape.h:184
+
Definition TransformedShape.h:26
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_character_base_8cpp.html b/_character_base_8cpp.html new file mode 100644 index 000000000..abd19fc56 --- /dev/null +++ b/_character_base_8cpp.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Character/CharacterBase.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterBase.cpp File Reference
+
+
+
+
+ + + + diff --git a/_character_base_8h.html b/_character_base_8h.html new file mode 100644 index 000000000..7474998ec --- /dev/null +++ b/_character_base_8h.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Character/CharacterBase.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CharacterBase.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  CharacterBaseSettings
 Base class for configuration of a character. More...
 
class  CharacterBase
 Base class for character class. More...
 
+
+
+ + + + diff --git a/_character_base_8h.js b/_character_base_8h.js new file mode 100644 index 000000000..38d380627 --- /dev/null +++ b/_character_base_8h.js @@ -0,0 +1,5 @@ +var _character_base_8h = +[ + [ "CharacterBaseSettings", "class_character_base_settings.html", "class_character_base_settings" ], + [ "CharacterBase", "class_character_base.html", "class_character_base" ] +]; \ No newline at end of file diff --git a/_character_base_8h_source.html b/_character_base_8h_source.html new file mode 100644 index 000000000..acfd9619e --- /dev/null +++ b/_character_base_8h_source.html @@ -0,0 +1,314 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Character/CharacterBase.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterBase.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
+ + + + + + +
13
+ +
15
+
16class PhysicsSystem;
+
17class StateRecorder;
+
18
+
+
20class JPH_EXPORT CharacterBaseSettings : public RefTarget<CharacterBaseSettings>
+
21{
+
22public:
+ +
24
+ +
27 CharacterBaseSettings(const CharacterBaseSettings &inSettings) = default;
+ +
29
+
31 virtual ~CharacterBaseSettings() = default;
+
32
+ +
35
+
39 Plane mSupportingVolume { Vec3::sAxisY(), -1.0e10f };
+
40
+
42 float mMaxSlopeAngle = DegreesToRadians(50.0f);
+
43
+
45 bool mEnhancedInternalEdgeRemoval = false;
+
46
+ +
50};
+
+
51
+
+
53class JPH_EXPORT CharacterBase : public RefTarget<CharacterBase>, public NonCopyable
+
54{
+
55public:
+ +
57
+
59 CharacterBase(const CharacterBaseSettings *inSettings, PhysicsSystem *inSystem);
+
60
+
62 virtual ~CharacterBase() = default;
+
63
+
65 void SetMaxSlopeAngle(float inMaxSlopeAngle) { mCosMaxSlopeAngle = Cos(inMaxSlopeAngle); }
+
66 float GetCosMaxSlopeAngle() const { return mCosMaxSlopeAngle; }
+
67
+
69 void SetUp(Vec3Arg inUp) { mUp = inUp; }
+
70 Vec3 GetUp() const { return mUp; }
+
71
+
+
73 bool IsSlopeTooSteep(Vec3Arg inNormal) const
+
74 {
+
75 // If cos max slope angle is close to one the system is turned off,
+
76 // otherwise check the angle between the up and normal vector
+
77 return mCosMaxSlopeAngle < cNoMaxSlopeAngle && inNormal.Dot(mUp) < mCosMaxSlopeAngle;
+
78 }
+
+
79
+
81 const Shape * GetShape() const { return mShape; }
+
82
+
+
83 enum class EGroundState
+
84 {
+
85 OnGround,
+
86 OnSteepGround,
+
87 NotSupported,
+
88 InAir,
+
89 };
+
+
90
+
92 static const char * sToString(EGroundState inState);
+
93
+
95
+
97 EGroundState GetGroundState() const { return mGroundState; }
+
98
+
100 bool IsSupported() const { return mGroundState == EGroundState::OnGround || mGroundState == EGroundState::OnSteepGround; }
+
101
+
103 RVec3 GetGroundPosition() const { return mGroundPosition; }
+
104
+
106 Vec3 GetGroundNormal() const { return mGroundNormal; }
+
107
+
109 Vec3 GetGroundVelocity() const { return mGroundVelocity; }
+
110
+
112 const PhysicsMaterial * GetGroundMaterial() const { return mGroundMaterial; }
+
113
+
115 BodyID GetGroundBodyID() const { return mGroundBodyID; }
+
116
+
118 SubShapeID GetGroundSubShapeID() const { return mGroundBodySubShapeID; }
+
119
+
121 uint64 GetGroundUserData() const { return mGroundUserData; }
+
122
+
123 // Saving / restoring state for replay
+
124 virtual void SaveState(StateRecorder &inStream) const;
+
125 virtual void RestoreState(StateRecorder &inStream);
+
126
+
127protected:
+
128 // Cached physics system
+ +
130
+
131 // The shape that the body currently has
+ +
133
+
134 // The character's world space up axis
+ +
136
+
137 // Every contact behind this plane can support the character
+ +
139
+
140 // Beyond this value there is no max slope
+
141 static constexpr float cNoMaxSlopeAngle = 0.9999f;
+
142
+
143 // Cosine of the maximum angle of slope that character can still walk on
+ +
145
+
146 // Ground properties
+
147 EGroundState mGroundState = EGroundState::InAir;
+ + +
150 RVec3 mGroundPosition = RVec3::sZero();
+
151 Vec3 mGroundNormal = Vec3::sZero();
+
152 Vec3 mGroundVelocity = Vec3::sZero();
+ +
154 uint64 mGroundUserData = 0;
+
155};
+
+
156
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_INLINE constexpr float DegreesToRadians(float inV)
Convert a value from degrees to radians.
Definition Math.h:13
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ + + + + +
JPH_INLINE float Cos(float inX)
Cosine of x (input in radians)
Definition Trigonometry.h:20
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Base class for character class.
Definition CharacterBase.h:54
+
void SetMaxSlopeAngle(float inMaxSlopeAngle)
Set the maximum angle of slope that character can still walk on (radians)
Definition CharacterBase.h:65
+
RVec3 GetGroundPosition() const
Get the contact point with the ground.
Definition CharacterBase.h:103
+
Vec3 GetUp() const
Definition CharacterBase.h:70
+
SubShapeID GetGroundSubShapeID() const
Sub part of the body that we're standing on.
Definition CharacterBase.h:118
+
void SetUp(Vec3Arg inUp)
Set the up vector for the character.
Definition CharacterBase.h:69
+
RefConst< Shape > mShape
Definition CharacterBase.h:132
+
virtual ~CharacterBase()=default
Destructor.
+
Vec3 mUp
Definition CharacterBase.h:135
+
Vec3 GetGroundVelocity() const
Velocity in world space of ground.
Definition CharacterBase.h:109
+
bool IsSupported() const
Returns true if the player is supported by normal or steep ground.
Definition CharacterBase.h:100
+
EGroundState
Definition CharacterBase.h:84
+
bool IsSlopeTooSteep(Vec3Arg inNormal) const
Check if the normal of the ground surface is too steep to walk on.
Definition CharacterBase.h:73
+
BodyID mGroundBodyID
Definition CharacterBase.h:148
+
float mCosMaxSlopeAngle
Definition CharacterBase.h:144
+
float GetCosMaxSlopeAngle() const
Definition CharacterBase.h:66
+
BodyID GetGroundBodyID() const
BodyID of the object the character is standing on. Note may have been removed!
Definition CharacterBase.h:115
+
EGroundState GetGroundState() const
Current ground state.
Definition CharacterBase.h:97
+
const PhysicsMaterial * GetGroundMaterial() const
Material that the character is standing on.
Definition CharacterBase.h:112
+
PhysicsSystem * mSystem
Definition CharacterBase.h:129
+
Vec3 GetGroundNormal() const
Get the contact normal with the ground.
Definition CharacterBase.h:106
+
uint64 GetGroundUserData() const
User data value of the body that we're standing on.
Definition CharacterBase.h:121
+
Plane mSupportingVolume
Definition CharacterBase.h:138
+
SubShapeID mGroundBodySubShapeID
Definition CharacterBase.h:149
+
const Shape * GetShape() const
Get the current shape that the character is using.
Definition CharacterBase.h:81
+
Base class for configuration of a character.
Definition CharacterBase.h:21
+
virtual ~CharacterBaseSettings()=default
Virtual destructor.
+
CharacterBaseSettings(const CharacterBaseSettings &inSettings)=default
+
RefConst< Shape > mShape
Definition CharacterBase.h:49
+
JPH_OVERRIDE_NEW_DELETE CharacterBaseSettings()=default
Constructor.
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition PhysicsMaterial.h:23
+
static RefConst< PhysicsMaterial > sDefault
Default material that is used when a shape has no materials defined.
Definition PhysicsMaterial.h:31
+
Definition PhysicsSystem.h:29
+
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
Definition Reference.h:151
+
Definition Reference.h:35
+
RefTarget & operator=(const RefTarget &)
Assignment operator.
Definition Reference.h:48
+
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition Shape.h:184
+
Definition StateRecorder.h:48
+
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
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
static JPH_INLINE Vec3 sAxisY()
Definition Vec3.h:54
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_character_virtual_8cpp.html b/_character_virtual_8cpp.html new file mode 100644 index 000000000..07350fa99 --- /dev/null +++ b/_character_virtual_8cpp.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Character/CharacterVirtual.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterVirtual.cpp File Reference
+
+
+
+
+ + + + diff --git a/_character_virtual_8h.html b/_character_virtual_8h.html new file mode 100644 index 000000000..c8be27e32 --- /dev/null +++ b/_character_virtual_8h.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Character/CharacterVirtual.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CharacterVirtual.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  CharacterVirtualSettings
 Contains the configuration of a character. More...
 
class  CharacterContactSettings
 This class contains settings that allow you to override the behavior of a character's collision response. More...
 
class  CharacterContactListener
 This class receives callbacks when a virtual character hits something. More...
 
class  CharacterVsCharacterCollision
 
class  CharacterVsCharacterCollisionSimple
 
class  CharacterVirtual
 
struct  CharacterVirtual::ExtendedUpdateSettings
 Settings struct with settings for ExtendedUpdate. More...
 
struct  CharacterVirtual::Contact
 
+
+
+ + + + diff --git a/_character_virtual_8h.js b/_character_virtual_8h.js new file mode 100644 index 000000000..0c61de855 --- /dev/null +++ b/_character_virtual_8h.js @@ -0,0 +1,11 @@ +var _character_virtual_8h = +[ + [ "CharacterVirtualSettings", "class_character_virtual_settings.html", "class_character_virtual_settings" ], + [ "CharacterContactSettings", "class_character_contact_settings.html", "class_character_contact_settings" ], + [ "CharacterContactListener", "class_character_contact_listener.html", "class_character_contact_listener" ], + [ "CharacterVsCharacterCollision", "class_character_vs_character_collision.html", "class_character_vs_character_collision" ], + [ "CharacterVsCharacterCollisionSimple", "class_character_vs_character_collision_simple.html", "class_character_vs_character_collision_simple" ], + [ "CharacterVirtual", "class_character_virtual.html", "class_character_virtual" ], + [ "CharacterVirtual::ExtendedUpdateSettings", "struct_character_virtual_1_1_extended_update_settings.html", "struct_character_virtual_1_1_extended_update_settings" ], + [ "CharacterVirtual::Contact", "struct_character_virtual_1_1_contact.html", "struct_character_virtual_1_1_contact" ] +]; \ No newline at end of file diff --git a/_character_virtual_8h_source.html b/_character_virtual_8h_source.html new file mode 100644 index 000000000..eebd040e4 --- /dev/null +++ b/_character_virtual_8h_source.html @@ -0,0 +1,728 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Character/CharacterVirtual.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterVirtual.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
+ + + + + + + +
14
+ +
16
+ + +
19
+
+ +
22{
+
23public:
+ +
25
+
27 float mMass = 70.0f;
+
28
+
30 float mMaxStrength = 100.0f;
+
31
+
33 Vec3 mShapeOffset = Vec3::sZero();
+
34
+ +
37 float mPredictiveContactDistance = 0.1f;
+
38 uint mMaxCollisionIterations = 5;
+
39 uint mMaxConstraintIterations = 15;
+
40 float mMinTimeRemaining = 1.0e-4f;
+
41 float mCollisionTolerance = 1.0e-3f;
+
42 float mCharacterPadding = 0.02f;
+
43 uint mMaxNumHits = 256;
+
44 float mHitReductionCosMaxAngle = 0.999f;
+
45 float mPenetrationRecoverySpeed = 1.0f;
+
46
+ +
52
+
54 ObjectLayer mInnerBodyLayer = 0;
+
55};
+
+
56
+
+ +
59{
+
60public:
+
62 bool mCanPushCharacter = true;
+
63
+ +
68};
+
+
69
+
+ +
72{
+
73public:
+
75 virtual ~CharacterContactListener() = default;
+
76
+
79 virtual void OnAdjustBodyVelocity(const CharacterVirtual *inCharacter, const Body &inBody2, Vec3 &ioLinearVelocity, Vec3 &ioAngularVelocity) { /* Do nothing, the linear and angular velocity are already filled in */ }
+
80
+
82 virtual bool OnContactValidate(const CharacterVirtual *inCharacter, const BodyID &inBodyID2, const SubShapeID &inSubShapeID2) { return true; }
+
83
+
85 virtual bool OnCharacterContactValidate(const CharacterVirtual *inCharacter, const CharacterVirtual *inOtherCharacter, const SubShapeID &inSubShapeID2) { return true; }
+
86
+
94 virtual void OnContactAdded(const CharacterVirtual *inCharacter, const BodyID &inBodyID2, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, CharacterContactSettings &ioSettings) { /* Default do nothing */ }
+
95
+
97 virtual void OnCharacterContactAdded(const CharacterVirtual *inCharacter, const CharacterVirtual *inOtherCharacter, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, CharacterContactSettings &ioSettings) { /* Default do nothing */ }
+
98
+
109 virtual void OnContactSolve(const CharacterVirtual *inCharacter, const BodyID &inBodyID2, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, Vec3Arg inContactVelocity, const PhysicsMaterial *inContactMaterial, Vec3Arg inCharacterVelocity, Vec3 &ioNewCharacterVelocity) { /* Default do nothing */ }
+
110
+
112 virtual void OnCharacterContactSolve(const CharacterVirtual *inCharacter, const CharacterVirtual *inOtherCharacter, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, Vec3Arg inContactVelocity, const PhysicsMaterial *inContactMaterial, Vec3Arg inCharacterVelocity, Vec3 &ioNewCharacterVelocity) { /* Default do nothing */ }
+
113};
+
+
114
+
+ +
119{
+
120public:
+ +
122
+
129 virtual void CollideCharacter(const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector) const = 0;
+
130
+
138 virtual void CastCharacter(const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, Vec3Arg inDirection, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector) const = 0;
+
139};
+
+
140
+
+ +
144{
+
145public:
+
147 void Add(CharacterVirtual *inCharacter) { mCharacters.push_back(inCharacter); }
+
148
+
150 void Remove(const CharacterVirtual *inCharacter);
+
151
+
152 // See: CharacterVsCharacterCollision
+
153 virtual void CollideCharacter(const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector) const override;
+
154 virtual void CastCharacter(const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, Vec3Arg inDirection, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector) const override;
+
155
+ +
157};
+
+
158
+
+ +
165{
+
166public:
+ +
168
+
175 CharacterVirtual(const CharacterVirtualSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, uint64 inUserData, PhysicsSystem *inSystem);
+
176
+
178 CharacterVirtual(const CharacterVirtualSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, PhysicsSystem *inSystem) : CharacterVirtual(inSettings, inPosition, inRotation, 0, inSystem) { }
+
179
+
181 virtual ~CharacterVirtual() override;
+
182
+
184 void SetListener(CharacterContactListener *inListener) { mListener = inListener; }
+
185
+
187 CharacterContactListener * GetListener() const { return mListener; }
+
188
+
190 void SetCharacterVsCharacterCollision(CharacterVsCharacterCollision *inCharacterVsCharacterCollision) { mCharacterVsCharacterCollision = inCharacterVsCharacterCollision; }
+
191
+
193 Vec3 GetLinearVelocity() const { return mLinearVelocity; }
+
194
+
196 void SetLinearVelocity(Vec3Arg inLinearVelocity) { mLinearVelocity = inLinearVelocity; }
+
197
+
199 RVec3 GetPosition() const { return mPosition; }
+
200
+
202 void SetPosition(RVec3Arg inPosition) { mPosition = inPosition; UpdateInnerBodyTransform(); }
+
203
+
205 Quat GetRotation() const { return mRotation; }
+
206
+
208 void SetRotation(QuatArg inRotation) { mRotation = inRotation; UpdateInnerBodyTransform(); }
+
209
+
210 // Get the center of mass position of the shape
+
211 inline RVec3 GetCenterOfMassPosition() const { return mPosition + (mRotation * (mShapeOffset + mShape->GetCenterOfMass()) + mCharacterPadding * mUp); }
+
212
+
214 RMat44 GetWorldTransform() const { return RMat44::sRotationTranslation(mRotation, mPosition); }
+
215
+
217 RMat44 GetCenterOfMassTransform() const { return GetCenterOfMassTransform(mPosition, mRotation, mShape); }
+
218
+
220 float GetMass() const { return mMass; }
+
221 void SetMass(float inMass) { mMass = inMass; }
+
222
+
224 float GetMaxStrength() const { return mMaxStrength; }
+
225 void SetMaxStrength(float inMaxStrength) { mMaxStrength = inMaxStrength; }
+
226
+
228 float GetPenetrationRecoverySpeed() const { return mPenetrationRecoverySpeed; }
+
229 void SetPenetrationRecoverySpeed(float inSpeed) { mPenetrationRecoverySpeed = inSpeed; }
+
230
+ +
233 void SetEnhancedInternalEdgeRemoval(bool inApply) { mEnhancedInternalEdgeRemoval = inApply; }
+
234
+
236 float GetCharacterPadding() const { return mCharacterPadding; }
+
237
+
239 uint GetMaxNumHits() const { return mMaxNumHits; }
+
240 void SetMaxNumHits(uint inMaxHits) { mMaxNumHits = inMaxHits; }
+
241
+
243 float GetHitReductionCosMaxAngle() const { return mHitReductionCosMaxAngle; }
+
244 void SetHitReductionCosMaxAngle(float inCosMaxAngle) { mHitReductionCosMaxAngle = inCosMaxAngle; }
+
245
+
250 bool GetMaxHitsExceeded() const { return mMaxHitsExceeded; }
+
251
+
253 Vec3 GetShapeOffset() const { return mShapeOffset; }
+
254 void SetShapeOffset(Vec3Arg inShapeOffset) { mShapeOffset = inShapeOffset; UpdateInnerBodyTransform(); }
+
255
+
257 uint64 GetUserData() const { return mUserData; }
+
258 void SetUserData(uint64 inUserData);
+
259
+
261 BodyID GetInnerBodyID() const { return mInnerBodyID; }
+
262
+
267 Vec3 CancelVelocityTowardsSteepSlopes(Vec3Arg inDesiredVelocity) const;
+
268
+
279 void Update(float inDeltaTime, Vec3Arg inGravity, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator);
+
280
+
284 bool CanWalkStairs(Vec3Arg inLinearVelocity) const;
+
285
+
298 bool WalkStairs(float inDeltaTime, Vec3Arg inStepUp, Vec3Arg inStepForward, Vec3Arg inStepForwardTest, Vec3Arg inStepDownExtra, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator);
+
299
+
310 bool StickToFloor(Vec3Arg inStepDown, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator);
+
311
+
+ +
314 {
+
315 Vec3 mStickToFloorStepDown { 0, -0.5f, 0 };
+
316 Vec3 mWalkStairsStepUp { 0, 0.4f, 0 };
+
317 float mWalkStairsMinStepForward { 0.02f };
+
318 float mWalkStairsStepForwardTest { 0.15f };
+
319 float mWalkStairsCosAngleForwardContact { Cos(DegreesToRadians(75.0f)) };
+
320 Vec3 mWalkStairsStepDownExtra { Vec3::sZero() };
+
321 };
+
+
322
+
335 void ExtendedUpdate(float inDeltaTime, Vec3Arg inGravity, const ExtendedUpdateSettings &inSettings, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator);
+
336
+
338 void RefreshContacts(const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator);
+
339
+
342 void UpdateGroundVelocity();
+
343
+
353 bool SetShape(const Shape *inShape, float inMaxPenetrationDepth, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator);
+
354
+
356 void SetInnerBodyShape(const Shape *inShape);
+
357
+
359 TransformedShape GetTransformedShape() const { return TransformedShape(GetCenterOfMassPosition(), mRotation, mShape, mInnerBodyID); }
+
360
+
374 void CheckCollision(RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inMovementDirection, float inMaxSeparationDistance, const Shape *inShape, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter) const;
+
375
+
376 // Saving / restoring state for replay
+
377 virtual void SaveState(StateRecorder &inStream) const override;
+
378 virtual void RestoreState(StateRecorder &inStream) override;
+
379
+
380#ifdef JPH_DEBUG_RENDERER
+
381 static inline bool sDrawConstraints = false;
+
382 static inline bool sDrawWalkStairs = false;
+
383 static inline bool sDrawStickToFloor = false;
+
384#endif
+
385
+
386 // Encapsulates a collision contact
+
+
387 struct Contact
+
388 {
+
389 // Saving / restoring state for replay
+
390 void SaveState(StateRecorder &inStream) const;
+
391 void RestoreState(StateRecorder &inStream);
+
392
+
393 // Checks if two contacts refer to the same body (or virtual character)
+
394 inline bool IsSameBody(const Contact &inOther) const { return mBodyB == inOther.mBodyB && mCharacterB == inOther.mCharacterB; }
+
395
+ + + + +
400 float mDistance;
+
401 float mFraction;
+ +
403 CharacterVirtual * mCharacterB = nullptr;
+ + + + + +
409 bool mHadCollision = false;
+
410 bool mWasDiscarded = false;
+
411 bool mCanPushCharacter = true;
+
412 };
+
+
413
+ + +
416
+
418 const ContactList & GetActiveContacts() const { return mActiveContacts; }
+
419
+
+
421 bool HasCollidedWith(const BodyID &inBody) const
+
422 {
+
423 for (const CharacterVirtual::Contact &c : mActiveContacts)
+
424 if (c.mHadCollision && c.mBodyB == inBody)
+
425 return true;
+
426 return false;
+
427 }
+
+
428
+
+
430 bool HasCollidedWith(const CharacterVirtual *inCharacter) const
+
431 {
+
432 for (const CharacterVirtual::Contact &c : mActiveContacts)
+
433 if (c.mHadCollision && c.mCharacterB == inCharacter)
+
434 return true;
+
435 return false;
+
436 }
+
+
437
+
438private:
+
439 // Sorting predicate for making contact order deterministic
+
440 struct ContactOrderingPredicate
+
441 {
+
442 inline bool operator () (const Contact &inLHS, const Contact &inRHS) const
+
443 {
+
444 if (inLHS.mBodyB != inRHS.mBodyB)
+
445 return inLHS.mBodyB < inRHS.mBodyB;
+
446
+
447 return inLHS.mSubShapeIDB.GetValue() < inRHS.mSubShapeIDB.GetValue();
+
448 }
+
449 };
+
450
+
451 // A contact that needs to be ignored
+
452 struct IgnoredContact
+
453 {
+
454 IgnoredContact() = default;
+
455 IgnoredContact(const BodyID &inBodyID, const SubShapeID &inSubShapeID) : mBodyID(inBodyID), mSubShapeID(inSubShapeID) { }
+
456
+
457 BodyID mBodyID;
+
458 SubShapeID mSubShapeID;
+
459 };
+
460
+ +
462
+
463 // A constraint that limits the movement of the character
+
464 struct Constraint
+
465 {
+
466 Contact * mContact;
+
467 float mTOI;
+
468 float mProjectedVelocity;
+
469 Vec3 mLinearVelocity;
+
470 Plane mPlane;
+
471 bool mIsSteepSlope = false;
+
472 };
+
473
+ +
475
+
476 // Collision collector that collects hits for CollideShape
+
477 class ContactCollector : public CollideShapeCollector
+
478 {
+
479 public:
+
480 ContactCollector(PhysicsSystem *inSystem, const CharacterVirtual *inCharacter, uint inMaxHits, float inHitReductionCosMaxAngle, Vec3Arg inUp, RVec3Arg inBaseOffset, TempContactList &outContacts) : mBaseOffset(inBaseOffset), mUp(inUp), mSystem(inSystem), mCharacter(inCharacter), mContacts(outContacts), mMaxHits(inMaxHits), mHitReductionCosMaxAngle(inHitReductionCosMaxAngle) { }
+
481
+
482 virtual void SetUserData(uint64 inUserData) override { mOtherCharacter = reinterpret_cast<CharacterVirtual *>(inUserData); }
+
483
+
484 virtual void AddHit(const CollideShapeResult &inResult) override;
+
485
+
486 RVec3 mBaseOffset;
+
487 Vec3 mUp;
+
488 PhysicsSystem * mSystem;
+
489 const CharacterVirtual * mCharacter;
+
490 CharacterVirtual * mOtherCharacter = nullptr;
+
491 TempContactList & mContacts;
+
492 uint mMaxHits;
+
493 float mHitReductionCosMaxAngle;
+
494 bool mMaxHitsExceeded = false;
+
495 };
+
496
+
497 // A collision collector that collects hits for CastShape
+
498 class ContactCastCollector : public CastShapeCollector
+
499 {
+
500 public:
+
501 ContactCastCollector(PhysicsSystem *inSystem, const CharacterVirtual *inCharacter, Vec3Arg inDisplacement, Vec3Arg inUp, const IgnoredContactList &inIgnoredContacts, RVec3Arg inBaseOffset, Contact &outContact) : mBaseOffset(inBaseOffset), mDisplacement(inDisplacement), mUp(inUp), mSystem(inSystem), mCharacter(inCharacter), mIgnoredContacts(inIgnoredContacts), mContact(outContact) { }
+
502
+
503 virtual void SetUserData(uint64 inUserData) override { mOtherCharacter = reinterpret_cast<CharacterVirtual *>(inUserData); }
+
504
+
505 virtual void AddHit(const ShapeCastResult &inResult) override;
+
506
+
507 RVec3 mBaseOffset;
+
508 Vec3 mDisplacement;
+
509 Vec3 mUp;
+
510 PhysicsSystem * mSystem;
+
511 const CharacterVirtual * mCharacter;
+
512 CharacterVirtual * mOtherCharacter = nullptr;
+
513 const IgnoredContactList & mIgnoredContacts;
+
514 Contact & mContact;
+
515 };
+
516
+
517 // Helper function to convert a Jolt collision result into a contact
+
518 template <class taCollector>
+
519 inline static void sFillContactProperties(const CharacterVirtual *inCharacter, Contact &outContact, const Body &inBody, Vec3Arg inUp, RVec3Arg inBaseOffset, const taCollector &inCollector, const CollideShapeResult &inResult);
+
520 inline static void sFillCharacterContactProperties(Contact &outContact, CharacterVirtual *inOtherCharacter, RVec3Arg inBaseOffset, const CollideShapeResult &inResult);
+
521
+
522 // Move the shape from ioPosition and try to displace it by inVelocity * inDeltaTime, this will try to slide the shape along the world geometry
+
523 void MoveShape(RVec3 &ioPosition, Vec3Arg inVelocity, float inDeltaTime, ContactList *outActiveContacts, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator
+
524 #ifdef JPH_DEBUG_RENDERER
+
525 , bool inDrawConstraints = false
+
526 #endif // JPH_DEBUG_RENDERER
+
527 ) const;
+
528
+
529 // Ask the callback if inContact is a valid contact point
+
530 bool ValidateContact(const Contact &inContact) const;
+
531
+
532 // Trigger the contact callback for inContact and get the contact settings
+
533 void ContactAdded(const Contact &inContact, CharacterContactSettings &ioSettings) const;
+
534
+
535 // Tests the shape for collision around inPosition
+
536 void GetContactsAtPosition(RVec3Arg inPosition, Vec3Arg inMovementDirection, const Shape *inShape, TempContactList &outContacts, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter) const;
+
537
+
538 // Remove penetrating contacts with the same body that have conflicting normals, leaving these will make the character mover get stuck
+
539 void RemoveConflictingContacts(TempContactList &ioContacts, IgnoredContactList &outIgnoredContacts) const;
+
540
+
541 // Convert contacts into constraints. The character is assumed to start at the origin and the constraints are planes around the origin that confine the movement of the character.
+
542 void DetermineConstraints(TempContactList &inContacts, float inDeltaTime, ConstraintList &outConstraints) const;
+
543
+
544 // Use the constraints to solve the displacement of the character. This will slide the character on the planes around the origin for as far as possible.
+
545 void SolveConstraints(Vec3Arg inVelocity, float inDeltaTime, float inTimeRemaining, ConstraintList &ioConstraints, IgnoredContactList &ioIgnoredContacts, float &outTimeSimulated, Vec3 &outDisplacement, TempAllocator &inAllocator
+
546 #ifdef JPH_DEBUG_RENDERER
+
547 , bool inDrawConstraints = false
+
548 #endif // JPH_DEBUG_RENDERER
+
549 ) const;
+
550
+
551 // Get the velocity of a body adjusted by the contact listener
+
552 void GetAdjustedBodyVelocity(const Body& inBody, Vec3 &outLinearVelocity, Vec3 &outAngularVelocity) const;
+
553
+
554 // Calculate the ground velocity of the character assuming it's standing on an object with specified linear and angular velocity and with specified center of mass.
+
555 // Note that we don't just take the point velocity because a point on an object with angular velocity traces an arc,
+
556 // so if you just take point velocity * delta time you get an error that accumulates over time
+
557 Vec3 CalculateCharacterGroundVelocity(RVec3Arg inCenterOfMass, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity, float inDeltaTime) const;
+
558
+
559 // Handle contact with physics object that we're colliding against
+
560 bool HandleContact(Vec3Arg inVelocity, Constraint &ioConstraint, float inDeltaTime) const;
+
561
+
562 // Does a swept test of the shape from inPosition with displacement inDisplacement, returns true if there was a collision
+
563 bool GetFirstContactForSweep(RVec3Arg inPosition, Vec3Arg inDisplacement, Contact &outContact, const IgnoredContactList &inIgnoredContacts, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter) const;
+
564
+
565 // Store contacts so that we have proper ground information
+
566 void StoreActiveContacts(const TempContactList &inContacts, TempAllocator &inAllocator);
+
567
+
568 // This function will determine which contacts are touching the character and will calculate the one that is supporting us
+
569 void UpdateSupportingContact(bool inSkipContactVelocityCheck, TempAllocator &inAllocator);
+
570
+
572 void MoveToContact(RVec3Arg inPosition, const Contact &inContact, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator);
+
573
+
574 // This function returns the actual center of mass of the shape, not corrected for the character padding
+
575 inline RMat44 GetCenterOfMassTransform(RVec3Arg inPosition, QuatArg inRotation, const Shape *inShape) const
+
576 {
+
577 return RMat44::sRotationTranslation(inRotation, inPosition).PreTranslated(mShapeOffset + inShape->GetCenterOfMass()).PostTranslated(mCharacterPadding * mUp);
+
578 }
+
579
+
580 // This function returns the position of the inner rigid body
+
581 inline RVec3 GetInnerBodyPosition() const
+
582 {
+
583 return mPosition + (mRotation * mShapeOffset + mCharacterPadding * mUp);
+
584 }
+
585
+
586 // Move the inner rigid body to the current position
+
587 void UpdateInnerBodyTransform();
+
588
+
589 // Our main listener for contacts
+
590 CharacterContactListener * mListener = nullptr;
+
591
+
592 // Interface to detect collision between characters
+
593 CharacterVsCharacterCollision * mCharacterVsCharacterCollision = nullptr;
+
594
+
595 // Movement settings
+
596 EBackFaceMode mBackFaceMode; // When colliding with back faces, the character will not be able to move through back facing triangles. Use this if you have triangles that need to collide on both sides.
+
597 float mPredictiveContactDistance; // How far to scan outside of the shape for predictive contacts. A value of 0 will most likely cause the character to get stuck as it cannot properly calculate a sliding direction anymore. A value that's too high will cause ghost collisions.
+
598 uint mMaxCollisionIterations; // Max amount of collision loops
+
599 uint mMaxConstraintIterations; // How often to try stepping in the constraint solving
+
600 float mMinTimeRemaining; // Early out condition: If this much time is left to simulate we are done
+
601 float mCollisionTolerance; // How far we're willing to penetrate geometry
+
602 float mCharacterPadding; // How far we try to stay away from the geometry, this ensures that the sweep will hit as little as possible lowering the collision cost and reducing the risk of getting stuck
+
603 uint mMaxNumHits; // Max num hits to collect in order to avoid excess of contact points collection
+
604 float mHitReductionCosMaxAngle; // Cos(angle) where angle is the maximum angle between two hits contact normals that are allowed to be merged during hit reduction. Default is around 2.5 degrees. Set to -1 to turn off.
+
605 float mPenetrationRecoverySpeed; // This value governs how fast a penetration will be resolved, 0 = nothing is resolved, 1 = everything in one update
+
606 bool mEnhancedInternalEdgeRemoval; // Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.
+
607
+
608 // Character mass (kg)
+
609 float mMass;
+
610
+
611 // Maximum force with which the character can push other bodies (N)
+
612 float mMaxStrength;
+
613
+
614 // An extra offset applied to the shape in local space. This allows applying an extra offset to the shape in local space.
+
615 Vec3 mShapeOffset = Vec3::sZero();
+
616
+
617 // Current position (of the base, not the center of mass)
+
618 RVec3 mPosition = RVec3::sZero();
+
619
+
620 // Current rotation (of the base, not of the center of mass)
+
621 Quat mRotation = Quat::sIdentity();
+
622
+
623 // Current linear velocity
+
624 Vec3 mLinearVelocity = Vec3::sZero();
+
625
+
626 // List of contacts that were active in the last frame
+
627 ContactList mActiveContacts;
+
628
+
629 // Remembers the delta time of the last update
+
630 float mLastDeltaTime = 1.0f / 60.0f;
+
631
+
632 // Remember if we exceeded the maximum number of hits and had to remove similar contacts
+
633 mutable bool mMaxHitsExceeded = false;
+
634
+
635 // User data, can be used for anything by the application
+
636 uint64 mUserData = 0;
+
637
+
638 // The inner rigid body that proxies the character in the world
+
639 BodyID mInnerBodyID;
+
640};
+
+
641
+ +
EBackFaceMode
How collision detection functions will treat back facing triangles.
Definition BackFaceMode.h:11
+
@ CollideWithBackFaces
Collide with back facing surfaces/triangles.
+ + + +
#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
+
JPH_INLINE constexpr float DegreesToRadians(float inV)
Convert a value from degrees to radians.
Definition Math.h:13
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
EMotionType
Motion type of a physics body.
Definition MotionType.h:11
+ +
uint16 ObjectLayer
Definition ObjectLayer.h:16
+ + +
JPH_INLINE float Cos(float inX)
Cosine of x (input in radians)
Definition Trigonometry.h:20
+
Definition Array.h:36
+
Class function to filter out bodies, returns true if test should collide with body.
Definition BodyFilter.h:16
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Filter class for broadphase layers.
Definition BroadPhaseLayer.h:94
+
Base class for character class.
Definition CharacterBase.h:54
+
Base class for configuration of a character.
Definition CharacterBase.h:21
+
bool mEnhancedInternalEdgeRemoval
Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with int...
Definition CharacterBase.h:45
+
Vec3 mUp
Vector indicating the up direction of the character.
Definition CharacterBase.h:34
+
This class receives callbacks when a virtual character hits something.
Definition CharacterVirtual.h:72
+
virtual void OnContactAdded(const CharacterVirtual *inCharacter, const BodyID &inBodyID2, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, CharacterContactSettings &ioSettings)
Definition CharacterVirtual.h:94
+
virtual ~CharacterContactListener()=default
Destructor.
+
virtual bool OnContactValidate(const CharacterVirtual *inCharacter, const BodyID &inBodyID2, const SubShapeID &inSubShapeID2)
Checks if a character can collide with specified body. Return true if the contact is valid.
Definition CharacterVirtual.h:82
+
virtual void OnContactSolve(const CharacterVirtual *inCharacter, const BodyID &inBodyID2, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, Vec3Arg inContactVelocity, const PhysicsMaterial *inContactMaterial, Vec3Arg inCharacterVelocity, Vec3 &ioNewCharacterVelocity)
Definition CharacterVirtual.h:109
+
virtual bool OnCharacterContactValidate(const CharacterVirtual *inCharacter, const CharacterVirtual *inOtherCharacter, const SubShapeID &inSubShapeID2)
Same as OnContactValidate but when colliding with a CharacterVirtual.
Definition CharacterVirtual.h:85
+
virtual void OnCharacterContactAdded(const CharacterVirtual *inCharacter, const CharacterVirtual *inOtherCharacter, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, CharacterContactSettings &ioSettings)
Same as OnContactAdded but when colliding with a CharacterVirtual.
Definition CharacterVirtual.h:97
+
virtual void OnAdjustBodyVelocity(const CharacterVirtual *inCharacter, const Body &inBody2, Vec3 &ioLinearVelocity, Vec3 &ioAngularVelocity)
Definition CharacterVirtual.h:79
+
virtual void OnCharacterContactSolve(const CharacterVirtual *inCharacter, const CharacterVirtual *inOtherCharacter, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, Vec3Arg inContactVelocity, const PhysicsMaterial *inContactMaterial, Vec3Arg inCharacterVelocity, Vec3 &ioNewCharacterVelocity)
Same as OnContactSolve but when colliding with a CharacterVirtual.
Definition CharacterVirtual.h:112
+
This class contains settings that allow you to override the behavior of a character's collision respo...
Definition CharacterVirtual.h:59
+
bool mCanPushCharacter
True when the object can push the virtual character.
Definition CharacterVirtual.h:62
+
bool mCanReceiveImpulses
Definition CharacterVirtual.h:67
+
Definition CharacterVirtual.h:165
+
void SetEnhancedInternalEdgeRemoval(bool inApply)
Definition CharacterVirtual.h:233
+
TransformedShape GetTransformedShape() const
Get the transformed shape that represents the volume of the character, can be used for collision chec...
Definition CharacterVirtual.h:359
+
float GetMass() const
Character mass (kg)
Definition CharacterVirtual.h:220
+
float GetPenetrationRecoverySpeed() const
This value governs how fast a penetration will be resolved, 0 = nothing is resolved,...
Definition CharacterVirtual.h:228
+
RVec3 GetPosition() const
Get the position of the character.
Definition CharacterVirtual.h:199
+
void SetLinearVelocity(Vec3Arg inLinearVelocity)
Set the linear velocity of the character (m / s)
Definition CharacterVirtual.h:196
+
const ContactList & GetActiveContacts() const
Access to the internal list of contacts that the character has found.
Definition CharacterVirtual.h:418
+
RMat44 GetWorldTransform() const
Calculate the world transform of the character.
Definition CharacterVirtual.h:214
+
void SetCharacterVsCharacterCollision(CharacterVsCharacterCollision *inCharacterVsCharacterCollision)
Set the character vs character collision interface.
Definition CharacterVirtual.h:190
+
RVec3 GetCenterOfMassPosition() const
Definition CharacterVirtual.h:211
+
bool GetMaxHitsExceeded() const
Definition CharacterVirtual.h:250
+
bool HasCollidedWith(const BodyID &inBody) const
Check if the character is currently in contact with or has collided with another body in the last tim...
Definition CharacterVirtual.h:421
+
void SetMaxStrength(float inMaxStrength)
Definition CharacterVirtual.h:225
+
float GetCharacterPadding() const
Character padding.
Definition CharacterVirtual.h:236
+
void SetMaxNumHits(uint inMaxHits)
Definition CharacterVirtual.h:240
+
uint GetMaxNumHits() const
Max num hits to collect in order to avoid excess of contact points collection.
Definition CharacterVirtual.h:239
+
float GetMaxStrength() const
Maximum force with which the character can push other bodies (N)
Definition CharacterVirtual.h:224
+
void SetShapeOffset(Vec3Arg inShapeOffset)
Definition CharacterVirtual.h:254
+
BodyID GetInnerBodyID() const
Optional inner rigid body that proxies the character in the world. Can be used to update body propert...
Definition CharacterVirtual.h:261
+
void SetMass(float inMass)
Definition CharacterVirtual.h:221
+
bool GetEnhancedInternalEdgeRemoval() const
Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with int...
Definition CharacterVirtual.h:232
+
Vec3 GetLinearVelocity() const
Get the linear velocity of the character (m / s)
Definition CharacterVirtual.h:193
+
CharacterContactListener * GetListener() const
Get the current contact listener.
Definition CharacterVirtual.h:187
+
RMat44 GetCenterOfMassTransform() const
Calculates the transform for this character's center of mass.
Definition CharacterVirtual.h:217
+
CharacterVirtual(const CharacterVirtualSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, PhysicsSystem *inSystem)
Constructor without user data.
Definition CharacterVirtual.h:178
+
void SetRotation(QuatArg inRotation)
Set the rotation of the character.
Definition CharacterVirtual.h:208
+
void SetHitReductionCosMaxAngle(float inCosMaxAngle)
Definition CharacterVirtual.h:244
+
uint64 GetUserData() const
Access to the user data, can be used for anything by the application.
Definition CharacterVirtual.h:257
+
Vec3 GetShapeOffset() const
An extra offset applied to the shape in local space. This allows applying an extra offset to the shap...
Definition CharacterVirtual.h:253
+
void SetPenetrationRecoverySpeed(float inSpeed)
Definition CharacterVirtual.h:229
+
bool HasCollidedWith(const CharacterVirtual *inCharacter) const
Check if the character is currently in contact with or has collided with another character in the las...
Definition CharacterVirtual.h:430
+
float GetHitReductionCosMaxAngle() const
Cos(angle) where angle is the maximum angle between two hits contact normals that are allowed to be m...
Definition CharacterVirtual.h:243
+
void SetPosition(RVec3Arg inPosition)
Set the position of the character.
Definition CharacterVirtual.h:202
+
void SetListener(CharacterContactListener *inListener)
Set the contact listener.
Definition CharacterVirtual.h:184
+
Quat GetRotation() const
Get the rotation of the character.
Definition CharacterVirtual.h:205
+
Contains the configuration of a character.
Definition CharacterVirtual.h:22
+
RefConst< Shape > mInnerBodyShape
Definition CharacterVirtual.h:51
+
Definition CharacterVirtual.h:119
+
virtual void CollideCharacter(const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector) const =0
+
virtual ~CharacterVsCharacterCollision()=default
+
virtual void CastCharacter(const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, Vec3Arg inDirection, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector) const =0
+
Definition CharacterVirtual.h:144
+
void Add(CharacterVirtual *inCharacter)
Add a character to the list of characters to check collision against.
Definition CharacterVirtual.h:147
+
Array< CharacterVirtual * > mCharacters
The list of characters to check collision against.
Definition CharacterVirtual.h:156
+
Class that contains all information of two colliding shapes.
Definition CollideShape.h:19
+
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 all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:103
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Mat44 PostTranslated(Vec3Arg inTranslation) const
Post multiply by translation matrix: result = Mat44::sTranslation(inTranslation) * this (i....
Definition Mat44.inl:903
+
JPH_INLINE Mat44 PreTranslated(Vec3Arg inTranslation) const
Pre multiply by translation matrix: result = this * Mat44::sTranslation(inTranslation)
Definition Mat44.inl:898
+
static JPH_INLINE Mat44 sRotationTranslation(QuatArg inR, Vec3Arg inT)
Get matrix that rotates and translates.
Definition Mat44.inl:149
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Filter class for object layers.
Definition ObjectLayer.h:28
+
Definition PhysicsMaterial.h:23
+
Definition PhysicsSystem.h:29
+
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
Definition Quat.h:33
+
static JPH_INLINE Quat sIdentity()
Definition Quat.h:103
+
Definition Reference.h:151
+
Result of a shape cast test.
Definition ShapeCast.h:114
+
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:184
+
virtual Vec3 GetCenterOfMass() const
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition Shape.h:209
+
Definition StateRecorder.h:48
+
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
+
Definition TransformedShape.h:26
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Definition CharacterVirtual.h:388
+
EMotionType mMotionTypeB
Motion type of B, used to determine the priority of the contact.
Definition CharacterVirtual.h:405
+
Vec3 mContactNormal
Contact normal, pointing towards the character.
Definition CharacterVirtual.h:398
+
const PhysicsMaterial * mMaterial
Material of B.
Definition CharacterVirtual.h:408
+
float mFraction
Fraction along the path where this contact takes place.
Definition CharacterVirtual.h:401
+
CharacterVirtual * mCharacterB
Character we're colliding with (if not null)
Definition CharacterVirtual.h:403
+
uint64 mUserData
User data of B.
Definition CharacterVirtual.h:407
+
BodyID mBodyB
ID of body we're colliding with (if not invalid)
Definition CharacterVirtual.h:402
+
SubShapeID mSubShapeIDB
Sub shape ID of body we're colliding with.
Definition CharacterVirtual.h:404
+
bool IsSameBody(const Contact &inOther) const
Definition CharacterVirtual.h:394
+
Vec3 mLinearVelocity
Velocity of the contact point.
Definition CharacterVirtual.h:397
+
float mDistance
Distance to the contact <= 0 means that it is an actual contact, > 0 means predictive.
Definition CharacterVirtual.h:400
+
Vec3 mSurfaceNormal
Surface normal of the contact.
Definition CharacterVirtual.h:399
+
RVec3 mPosition
Position where the character makes contact.
Definition CharacterVirtual.h:396
+
bool mIsSensorB
If B is a sensor.
Definition CharacterVirtual.h:406
+
Settings struct with settings for ExtendedUpdate.
Definition CharacterVirtual.h:314
+
+
+ + + + diff --git a/_clip_poly_8h.html b/_clip_poly_8h.html new file mode 100644 index 000000000..d8522d55e --- /dev/null +++ b/_clip_poly_8h.html @@ -0,0 +1,316 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/ClipPoly.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ClipPoly.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<class VERTEX_ARRAY >
JPH_NAMESPACE_BEGIN void ClipPolyVsPlane (const VERTEX_ARRAY &inPolygonToClip, Vec3Arg inPlaneOrigin, Vec3Arg inPlaneNormal, VERTEX_ARRAY &outClippedPolygon)
 
template<class VERTEX_ARRAY >
void ClipPolyVsPoly (const VERTEX_ARRAY &inPolygonToClip, const VERTEX_ARRAY &inClippingPolygon, Vec3Arg inClippingPolygonNormal, VERTEX_ARRAY &outClippedPolygon)
 
template<class VERTEX_ARRAY >
void ClipPolyVsEdge (const VERTEX_ARRAY &inPolygonToClip, Vec3Arg inEdgeVertex1, Vec3Arg inEdgeVertex2, Vec3Arg inClippingEdgeNormal, VERTEX_ARRAY &outClippedPolygon)
 
template<class VERTEX_ARRAY >
void ClipPolyVsAABox (const VERTEX_ARRAY &inPolygonToClip, const AABox &inAABox, VERTEX_ARRAY &outClippedPolygon)
 
+

Function Documentation

+ +

◆ ClipPolyVsAABox()

+ +
+
+
+template<class VERTEX_ARRAY >
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ClipPolyVsAABox (const VERTEX_ARRAY & inPolygonToClip,
const AABoxinAABox,
VERTEX_ARRAY & outClippedPolygon 
)
+
+

Clip polygon vs axis aligned box, inPolygonToClip is assume to be in counter clockwise order. Output will be stored in outClippedPolygon. Everything inside inAABox will be kept.

+ +
+
+ +

◆ ClipPolyVsEdge()

+ +
+
+
+template<class VERTEX_ARRAY >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ClipPolyVsEdge (const VERTEX_ARRAY & inPolygonToClip,
Vec3Arg inEdgeVertex1,
Vec3Arg inEdgeVertex2,
Vec3Arg inClippingEdgeNormal,
VERTEX_ARRAY & outClippedPolygon 
)
+
+

Clip inPolygonToClip against an edge, the edge is projected on inPolygonToClip using inClippingEdgeNormal. The positive half space (the side on the edge in the direction of inClippingEdgeNormal) is cut away.

+ +
+
+ +

◆ ClipPolyVsPlane()

+ +
+
+
+template<class VERTEX_ARRAY >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void ClipPolyVsPlane (const VERTEX_ARRAY & inPolygonToClip,
Vec3Arg inPlaneOrigin,
Vec3Arg inPlaneNormal,
VERTEX_ARRAY & outClippedPolygon 
)
+
+

Clip inPolygonToClip against the positive halfspace of plane defined by inPlaneOrigin and inPlaneNormal. inPlaneNormal does not need to be normalized.

+ +
+
+ +

◆ ClipPolyVsPoly()

+ +
+
+
+template<class VERTEX_ARRAY >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ClipPolyVsPoly (const VERTEX_ARRAY & inPolygonToClip,
const VERTEX_ARRAY & inClippingPolygon,
Vec3Arg inClippingPolygonNormal,
VERTEX_ARRAY & outClippedPolygon 
)
+
+

Clip polygon versus polygon. Both polygons are assumed to be in counter clockwise order.

Parameters
+ + + + + +
inClippingPolygonNormalis used to create planes of all edges in inClippingPolygon against which inPolygonToClip is clipped, inClippingPolygonNormal does not need to be normalized
inClippingPolygonis the polygon which inClippedPolygon is clipped against
inPolygonToClipis the polygon that is clipped
outClippedPolygonwill contain clipped polygon when function returns
+
+
+ +
+
+
+
+ + + + diff --git a/_clip_poly_8h.js b/_clip_poly_8h.js new file mode 100644 index 000000000..c9c200a5c --- /dev/null +++ b/_clip_poly_8h.js @@ -0,0 +1,7 @@ +var _clip_poly_8h = +[ + [ "ClipPolyVsAABox", "_clip_poly_8h.html#acce14d72c569854e088c08101fc77f9f", null ], + [ "ClipPolyVsEdge", "_clip_poly_8h.html#a3091df734384a4e35e6e73df4bd3778d", null ], + [ "ClipPolyVsPlane", "_clip_poly_8h.html#a1e329aac71675f1c682331399d3cc86c", null ], + [ "ClipPolyVsPoly", "_clip_poly_8h.html#a16e399a850db50914749f07fa7d3e38d", null ] +]; \ No newline at end of file diff --git a/_clip_poly_8h_source.html b/_clip_poly_8h_source.html new file mode 100644 index 000000000..35ca762a3 --- /dev/null +++ b/_clip_poly_8h_source.html @@ -0,0 +1,332 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/ClipPoly.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ClipPoly.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
+
13template <class VERTEX_ARRAY>
+
+
14void ClipPolyVsPlane(const VERTEX_ARRAY &inPolygonToClip, Vec3Arg inPlaneOrigin, Vec3Arg inPlaneNormal, VERTEX_ARRAY &outClippedPolygon)
+
15{
+
16 JPH_ASSERT(inPolygonToClip.size() >= 2);
+
17 JPH_ASSERT(outClippedPolygon.empty());
+
18
+
19 // Determine state of last point
+
20 Vec3 e1 = inPolygonToClip[inPolygonToClip.size() - 1];
+
21 float prev_num = (inPlaneOrigin - e1).Dot(inPlaneNormal);
+
22 bool prev_inside = prev_num < 0.0f;
+
23
+
24 // Loop through all vertices
+
25 for (typename VERTEX_ARRAY::size_type j = 0; j < inPolygonToClip.size(); ++j)
+
26 {
+
27 // Check if second point is inside
+
28 Vec3Arg e2 = inPolygonToClip[j];
+
29 float num = (inPlaneOrigin - e2).Dot(inPlaneNormal);
+
30 bool cur_inside = num < 0.0f;
+
31
+
32 // In -> Out or Out -> In: Add point on clipping plane
+
33 if (cur_inside != prev_inside)
+
34 {
+
35 // Solve: (X - inPlaneOrigin) . inPlaneNormal = 0 and X = e1 + t * (e2 - e1) for X
+
36 Vec3 e12 = e2 - e1;
+
37 float denom = e12.Dot(inPlaneNormal);
+
38 if (denom != 0.0f)
+
39 outClippedPolygon.push_back(e1 + (prev_num / denom) * e12);
+
40 else
+
41 cur_inside = prev_inside; // Edge is parallel to plane, treat point as if it were on the same side as the last point
+
42 }
+
43
+
44 // Point inside, add it
+
45 if (cur_inside)
+
46 outClippedPolygon.push_back(e2);
+
47
+
48 // Update previous state
+
49 prev_num = num;
+
50 prev_inside = cur_inside;
+
51 e1 = e2;
+
52 }
+
53}
+
+
54
+
61template <class VERTEX_ARRAY>
+
+
62void ClipPolyVsPoly(const VERTEX_ARRAY &inPolygonToClip, const VERTEX_ARRAY &inClippingPolygon, Vec3Arg inClippingPolygonNormal, VERTEX_ARRAY &outClippedPolygon)
+
63{
+
64 JPH_ASSERT(inPolygonToClip.size() >= 2);
+
65 JPH_ASSERT(inClippingPolygon.size() >= 3);
+
66
+
67 VERTEX_ARRAY tmp_vertices[2];
+
68 int tmp_vertices_idx = 0;
+
69
+
70 for (typename VERTEX_ARRAY::size_type i = 0; i < inClippingPolygon.size(); ++i)
+
71 {
+
72 // Get edge to clip against
+
73 Vec3 clip_e1 = inClippingPolygon[i];
+
74 Vec3 clip_e2 = inClippingPolygon[(i + 1) % inClippingPolygon.size()];
+
75 Vec3 clip_normal = inClippingPolygonNormal.Cross(clip_e2 - clip_e1); // Pointing inward to the clipping polygon
+
76
+
77 // Get source and target polygon
+
78 const VERTEX_ARRAY &src_polygon = (i == 0)? inPolygonToClip : tmp_vertices[tmp_vertices_idx];
+
79 tmp_vertices_idx ^= 1;
+
80 VERTEX_ARRAY &tgt_polygon = (i == inClippingPolygon.size() - 1)? outClippedPolygon : tmp_vertices[tmp_vertices_idx];
+
81 tgt_polygon.clear();
+
82
+
83 // Clip against the edge
+
84 ClipPolyVsPlane(src_polygon, clip_e1, clip_normal, tgt_polygon);
+
85
+
86 // Break out if no polygon left
+
87 if (tgt_polygon.size() < 3)
+
88 {
+
89 outClippedPolygon.clear();
+
90 break;
+
91 }
+
92 }
+
93}
+
+
94
+
97template <class VERTEX_ARRAY>
+
+
98void ClipPolyVsEdge(const VERTEX_ARRAY &inPolygonToClip, Vec3Arg inEdgeVertex1, Vec3Arg inEdgeVertex2, Vec3Arg inClippingEdgeNormal, VERTEX_ARRAY &outClippedPolygon)
+
99{
+
100 JPH_ASSERT(inPolygonToClip.size() >= 3);
+
101 JPH_ASSERT(outClippedPolygon.empty());
+
102
+
103 // Get normal that is perpendicular to the edge and the clipping edge normal
+
104 Vec3 edge = inEdgeVertex2 - inEdgeVertex1;
+
105 Vec3 edge_normal = inClippingEdgeNormal.Cross(edge);
+
106
+
107 // Project vertices of edge on inPolygonToClip
+
108 Vec3 polygon_normal = (inPolygonToClip[2] - inPolygonToClip[0]).Cross(inPolygonToClip[1] - inPolygonToClip[0]);
+
109 float polygon_normal_len_sq = polygon_normal.LengthSq();
+
110 Vec3 v1 = inEdgeVertex1 + polygon_normal.Dot(inPolygonToClip[0] - inEdgeVertex1) * polygon_normal / polygon_normal_len_sq;
+
111 Vec3 v2 = inEdgeVertex2 + polygon_normal.Dot(inPolygonToClip[0] - inEdgeVertex2) * polygon_normal / polygon_normal_len_sq;
+
112 Vec3 v12 = v2 - v1;
+
113 float v12_len_sq = v12.LengthSq();
+
114
+
115 // Determine state of last point
+
116 Vec3 e1 = inPolygonToClip[inPolygonToClip.size() - 1];
+
117 float prev_num = (inEdgeVertex1 - e1).Dot(edge_normal);
+
118 bool prev_inside = prev_num < 0.0f;
+
119
+
120 // Loop through all vertices
+
121 for (typename VERTEX_ARRAY::size_type j = 0; j < inPolygonToClip.size(); ++j)
+
122 {
+
123 // Check if second point is inside
+
124 Vec3 e2 = inPolygonToClip[j];
+
125 float num = (inEdgeVertex1 - e2).Dot(edge_normal);
+
126 bool cur_inside = num < 0.0f;
+
127
+
128 // In -> Out or Out -> In: Add point on clipping plane
+
129 if (cur_inside != prev_inside)
+
130 {
+
131 // Solve: (inEdgeVertex1 - X) . edge_normal = 0 and X = e1 + t * (e2 - e1) for X
+
132 Vec3 e12 = e2 - e1;
+
133 float denom = e12.Dot(edge_normal);
+
134 Vec3 clipped_point = denom != 0.0f? e1 + (prev_num / denom) * e12 : e1;
+
135
+
136 // Project point on line segment v1, v2 so see if it falls outside if the edge
+
137 float projection = (clipped_point - v1).Dot(v12);
+
138 if (projection < 0.0f)
+
139 outClippedPolygon.push_back(v1);
+
140 else if (projection > v12_len_sq)
+
141 outClippedPolygon.push_back(v2);
+
142 else
+
143 outClippedPolygon.push_back(clipped_point);
+
144 }
+
145
+
146 // Update previous state
+
147 prev_num = num;
+
148 prev_inside = cur_inside;
+
149 e1 = e2;
+
150 }
+
151}
+
+
152
+
155template <class VERTEX_ARRAY>
+
+
156void ClipPolyVsAABox(const VERTEX_ARRAY &inPolygonToClip, const AABox &inAABox, VERTEX_ARRAY &outClippedPolygon)
+
157{
+
158 JPH_ASSERT(inPolygonToClip.size() >= 2);
+
159
+
160 VERTEX_ARRAY tmp_vertices[2];
+
161 int tmp_vertices_idx = 0;
+
162
+
163 for (int coord = 0; coord < 3; ++coord)
+
164 for (int side = 0; side < 2; ++side)
+
165 {
+
166 // Get plane to clip against
+
167 Vec3 origin = Vec3::sZero(), normal = Vec3::sZero();
+
168 if (side == 0)
+
169 {
+
170 normal.SetComponent(coord, 1.0f);
+
171 origin.SetComponent(coord, inAABox.mMin[coord]);
+
172 }
+
173 else
+
174 {
+
175 normal.SetComponent(coord, -1.0f);
+
176 origin.SetComponent(coord, inAABox.mMax[coord]);
+
177 }
+
178
+
179 // Get source and target polygon
+
180 const VERTEX_ARRAY &src_polygon = tmp_vertices_idx == 0? inPolygonToClip : tmp_vertices[tmp_vertices_idx & 1];
+
181 tmp_vertices_idx++;
+
182 VERTEX_ARRAY &tgt_polygon = tmp_vertices_idx == 6? outClippedPolygon : tmp_vertices[tmp_vertices_idx & 1];
+
183 tgt_polygon.clear();
+
184
+
185 // Clip against the edge
+
186 ClipPolyVsPlane(src_polygon, origin, normal, tgt_polygon);
+
187
+
188 // Break out if no polygon left
+
189 if (tgt_polygon.size() < 3)
+
190 {
+
191 outClippedPolygon.clear();
+
192 return;
+
193 }
+
194
+
195 // Flip normal
+
196 normal = -normal;
+
197 }
+
198}
+
+
199
+ + +
void ClipPolyVsPoly(const VERTEX_ARRAY &inPolygonToClip, const VERTEX_ARRAY &inClippingPolygon, Vec3Arg inClippingPolygonNormal, VERTEX_ARRAY &outClippedPolygon)
Definition ClipPoly.h:62
+
JPH_NAMESPACE_BEGIN void ClipPolyVsPlane(const VERTEX_ARRAY &inPolygonToClip, Vec3Arg inPlaneOrigin, Vec3Arg inPlaneNormal, VERTEX_ARRAY &outClippedPolygon)
Definition ClipPoly.h:14
+
void ClipPolyVsEdge(const VERTEX_ARRAY &inPolygonToClip, Vec3Arg inEdgeVertex1, Vec3Arg inEdgeVertex2, Vec3Arg inClippingEdgeNormal, VERTEX_ARRAY &outClippedPolygon)
Definition ClipPoly.h:98
+
void ClipPolyVsAABox(const VERTEX_ARRAY &inPolygonToClip, const AABox &inAABox, VERTEX_ARRAY &outClippedPolygon)
Definition ClipPoly.h:156
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
Axis aligned box.
Definition AABox.h:16
+
Vec3 mMin
Bounding box min and max.
Definition AABox.h:300
+
Vec3 mMax
Definition AABox.h:301
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE void SetComponent(uint inCoordinate, float inValue)
Set float component by index.
Definition Vec3.h:141
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_closest_point_8h.html b/_closest_point_8h.html new file mode 100644 index 000000000..1cc34b25e --- /dev/null +++ b/_closest_point_8h.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/ClosestPoint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ClosestPoint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Namespaces

namespace  ClosestPoint
 Helper utils to find the closest point to a line segment, triangle or tetrahedron.
 
+ + + + + + + + + + + + + + + + + + +

+Functions

bool ClosestPoint::GetBaryCentricCoordinates (Vec3Arg inA, Vec3Arg inB, float &outU, float &outV)
 
bool ClosestPoint::GetBaryCentricCoordinates (Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, float &outU, float &outV, float &outW)
 
Vec3 ClosestPoint::GetClosestPointOnLine (Vec3Arg inA, Vec3Arg inB, uint32 &outSet)
 
template<bool MustIncludeC = false>
Vec3 ClosestPoint::GetClosestPointOnTriangle (Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, uint32 &outSet)
 
bool ClosestPoint::OriginOutsideOfPlane (Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, Vec3Arg inD)
 Check if the origin is outside the plane of triangle (inA, inB, inC). inD specifies the front side of the plane.
 
UVec4 ClosestPoint::OriginOutsideOfTetrahedronPlanes (Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, Vec3Arg inD)
 
template<bool MustIncludeD = false>
Vec3 ClosestPoint::GetClosestPointOnTetrahedron (Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, Vec3Arg inD, uint32 &outSet)
 
+
+
+ + + + diff --git a/_closest_point_8h.js b/_closest_point_8h.js new file mode 100644 index 000000000..3ddc12662 --- /dev/null +++ b/_closest_point_8h.js @@ -0,0 +1,10 @@ +var _closest_point_8h = +[ + [ "GetBaryCentricCoordinates", "_closest_point_8h.html#a194f91c80641bfd1071c5316705a2c85", null ], + [ "GetBaryCentricCoordinates", "_closest_point_8h.html#ae01251b466c3944d7c9cc6a9e01ce915", null ], + [ "GetClosestPointOnLine", "_closest_point_8h.html#ad687ef98922a03b7128a5d3a5a64ab39", null ], + [ "GetClosestPointOnTetrahedron", "_closest_point_8h.html#abafebdbe3dea0fe6674c20fc9ccc8540", null ], + [ "GetClosestPointOnTriangle", "_closest_point_8h.html#a25fcaaf786d8724b11d02406ab74e0bc", null ], + [ "OriginOutsideOfPlane", "_closest_point_8h.html#ad4bc500e8c3ea1bc2b2bc1a289408f1b", null ], + [ "OriginOutsideOfTetrahedronPlanes", "_closest_point_8h.html#a7221bb45d1aec01527f66683bf2611e0", null ] +]; \ No newline at end of file diff --git a/_closest_point_8h_source.html b/_closest_point_8h_source.html new file mode 100644 index 000000000..7cfe4f3be --- /dev/null +++ b/_closest_point_8h_source.html @@ -0,0 +1,642 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/ClosestPoint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ClosestPoint.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
+
9// Turn off fused multiply add instruction because it makes the equations of the form a * b - c * d inaccurate below
+
10JPH_PRECISE_MATH_ON
+
11
+
+
13namespace ClosestPoint
+
14{
+
+
18 inline bool GetBaryCentricCoordinates(Vec3Arg inA, Vec3Arg inB, float &outU, float &outV)
+
19 {
+
20 Vec3 ab = inB - inA;
+
21 float denominator = ab.LengthSq();
+
22 if (denominator < Square(FLT_EPSILON))
+
23 {
+
24 // Degenerate line segment, fallback to points
+
25 if (inA.LengthSq() < inB.LengthSq())
+
26 {
+
27 // A closest
+
28 outU = 1.0f;
+
29 outV = 0.0f;
+
30 }
+
31 else
+
32 {
+
33 // B closest
+
34 outU = 0.0f;
+
35 outV = 1.0f;
+
36 }
+
37 return false;
+
38 }
+
39 else
+
40 {
+
41 outV = -inA.Dot(ab) / denominator;
+
42 outU = 1.0f - outV;
+
43 }
+
44 return true;
+
45 }
+
+
46
+
+
50 inline bool GetBaryCentricCoordinates(Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, float &outU, float &outV, float &outW)
+
51 {
+
52 // Taken from: Real-Time Collision Detection - Christer Ericson (Section: Barycentric Coordinates)
+
53 // With p = 0
+
54 // Adjusted to always include the shortest edge of the triangle in the calculation to improve numerical accuracy
+
55
+
56 // First calculate the three edges
+
57 Vec3 v0 = inB - inA;
+
58 Vec3 v1 = inC - inA;
+
59 Vec3 v2 = inC - inB;
+
60
+
61 // Make sure that the shortest edge is included in the calculation to keep the products a * b - c * d as small as possible to preserve accuracy
+
62 float d00 = v0.LengthSq();
+
63 float d11 = v1.LengthSq();
+
64 float d22 = v2.LengthSq();
+
65 if (d00 <= d22)
+
66 {
+
67 // Use v0 and v1 to calculate barycentric coordinates
+
68 float d01 = v0.Dot(v1);
+
69
+
70 // Denominator must be positive:
+
71 // |v0|^2 * |v1|^2 - (v0 . v1)^2 = |v0|^2 * |v1|^2 * (1 - cos(angle)^2) >= 0
+
72 float denominator = d00 * d11 - d01 * d01;
+
73 if (denominator < 1.0e-12f)
+
74 {
+
75 // Degenerate triangle, return coordinates along longest edge
+
76 if (d00 > d11)
+
77 {
+
78 GetBaryCentricCoordinates(inA, inB, outU, outV);
+
79 outW = 0.0f;
+
80 }
+
81 else
+
82 {
+
83 GetBaryCentricCoordinates(inA, inC, outU, outW);
+
84 outV = 0.0f;
+
85 }
+
86 return false;
+
87 }
+
88 else
+
89 {
+
90 float a0 = inA.Dot(v0);
+
91 float a1 = inA.Dot(v1);
+
92 outV = (d01 * a1 - d11 * a0) / denominator;
+
93 outW = (d01 * a0 - d00 * a1) / denominator;
+
94 outU = 1.0f - outV - outW;
+
95 }
+
96 }
+
97 else
+
98 {
+
99 // Use v1 and v2 to calculate barycentric coordinates
+
100 float d12 = v1.Dot(v2);
+
101
+
102 float denominator = d11 * d22 - d12 * d12;
+
103 if (denominator < 1.0e-12f)
+
104 {
+
105 // Degenerate triangle, return coordinates along longest edge
+
106 if (d11 > d22)
+
107 {
+
108 GetBaryCentricCoordinates(inA, inC, outU, outW);
+
109 outV = 0.0f;
+
110 }
+
111 else
+
112 {
+
113 GetBaryCentricCoordinates(inB, inC, outV, outW);
+
114 outU = 0.0f;
+
115 }
+
116 return false;
+
117 }
+
118 else
+
119 {
+
120 float c1 = inC.Dot(v1);
+
121 float c2 = inC.Dot(v2);
+
122 outU = (d22 * c1 - d12 * c2) / denominator;
+
123 outV = (d11 * c2 - d12 * c1) / denominator;
+
124 outW = 1.0f - outU - outV;
+
125 }
+
126 }
+
127 return true;
+
128 }
+
+
129
+
+ +
133 {
+
134 float u, v;
+
135 GetBaryCentricCoordinates(inA, inB, u, v);
+
136 if (v <= 0.0f)
+
137 {
+
138 // inA is closest point
+
139 outSet = 0b0001;
+
140 return inA;
+
141 }
+
142 else if (u <= 0.0f)
+
143 {
+
144 // inB is closest point
+
145 outSet = 0b0010;
+
146 return inB;
+
147 }
+
148 else
+
149 {
+
150 // Closest point lies on line inA inB
+
151 outSet = 0b0011;
+
152 return u * inA + v * inB;
+
153 }
+
154 }
+
+
155
+
159 template <bool MustIncludeC = false>
+
+ +
161 {
+
162 // Taken from: Real-Time Collision Detection - Christer Ericson (Section: Closest Point on Triangle to Point)
+
163 // With p = 0
+
164
+
165 // The most accurate normal is calculated by using the two shortest edges
+
166 // See: https://box2d.org/posts/2014/01/troublesome-triangle/
+
167 // The difference in normals is most pronounced when one edge is much smaller than the others (in which case the other 2 must have roughly the same length).
+
168 // Therefore we can suffice by just picking the shortest from 2 edges and use that with the 3rd edge to calculate the normal.
+
169 // We first check which of the edges is shorter and if bc is shorter than ac then we swap a with c to a is always on the shortest edge
+
170 UVec4 swap_ac;
+
171 {
+
172 Vec3 ac = inC - inA;
+
173 Vec3 bc = inC - inB;
+
174 swap_ac = Vec4::sLess(bc.DotV4(bc), ac.DotV4(ac));
+
175 }
+
176 Vec3 a = Vec3::sSelect(inA, inC, swap_ac);
+
177 Vec3 c = Vec3::sSelect(inC, inA, swap_ac);
+
178
+
179 // Calculate normal
+
180 Vec3 ab = inB - a;
+
181 Vec3 ac = c - a;
+
182 Vec3 n = ab.Cross(ac);
+
183 float n_len_sq = n.LengthSq();
+
184
+
185 // Check degenerate
+
186 if (n_len_sq < 1.0e-10f) // Square(FLT_EPSILON) was too small and caused numerical problems, see test case TestCollideParallelTriangleVsCapsule
+
187 {
+
188 // Degenerate, fallback to vertices and edges
+
189
+
190 // Start with vertex C being the closest
+
191 uint32 closest_set = 0b0100;
+
192 Vec3 closest_point = inC;
+
193 float best_dist_sq = inC.LengthSq();
+
194
+
195 // If the closest point must include C then A or B cannot be closest
+
196 // Note that we test vertices first because we want to prefer a closest vertex over a closest edge (this results in an outSet with fewer bits set)
+
197 if constexpr (!MustIncludeC)
+
198 {
+
199 // Try vertex A
+
200 float a_len_sq = inA.LengthSq();
+
201 if (a_len_sq < best_dist_sq)
+
202 {
+
203 closest_set = 0b0001;
+
204 closest_point = inA;
+
205 best_dist_sq = a_len_sq;
+
206 }
+
207
+
208 // Try vertex B
+
209 float b_len_sq = inB.LengthSq();
+
210 if (b_len_sq < best_dist_sq)
+
211 {
+
212 closest_set = 0b0010;
+
213 closest_point = inB;
+
214 best_dist_sq = b_len_sq;
+
215 }
+
216 }
+
217
+
218 // Edge AC
+
219 float ac_len_sq = ac.LengthSq();
+
220 if (ac_len_sq > Square(FLT_EPSILON))
+
221 {
+
222 float v = Clamp(-a.Dot(ac) / ac_len_sq, 0.0f, 1.0f);
+
223 Vec3 q = a + v * ac;
+
224 float dist_sq = q.LengthSq();
+
225 if (dist_sq < best_dist_sq)
+
226 {
+
227 closest_set = 0b0101;
+
228 closest_point = q;
+
229 best_dist_sq = dist_sq;
+
230 }
+
231 }
+
232
+
233 // Edge BC
+
234 Vec3 bc = inC - inB;
+
235 float bc_len_sq = bc.LengthSq();
+
236 if (bc_len_sq > Square(FLT_EPSILON))
+
237 {
+
238 float v = Clamp(-inB.Dot(bc) / bc_len_sq, 0.0f, 1.0f);
+
239 Vec3 q = inB + v * bc;
+
240 float dist_sq = q.LengthSq();
+
241 if (dist_sq < best_dist_sq)
+
242 {
+
243 closest_set = 0b0110;
+
244 closest_point = q;
+
245 best_dist_sq = dist_sq;
+
246 }
+
247 }
+
248
+
249 // If the closest point must include C then AB cannot be closest
+
250 if constexpr (!MustIncludeC)
+
251 {
+
252 // Edge AB
+
253 ab = inB - inA;
+
254 float ab_len_sq = ab.LengthSq();
+
255 if (ab_len_sq > Square(FLT_EPSILON))
+
256 {
+
257 float v = Clamp(-inA.Dot(ab) / ab_len_sq, 0.0f, 1.0f);
+
258 Vec3 q = inA + v * ab;
+
259 float dist_sq = q.LengthSq();
+
260 if (dist_sq < best_dist_sq)
+
261 {
+
262 closest_set = 0b0011;
+
263 closest_point = q;
+
264 best_dist_sq = dist_sq;
+
265 }
+
266 }
+
267 }
+
268
+
269 outSet = closest_set;
+
270 return closest_point;
+
271 }
+
272
+
273 // Check if P in vertex region outside A
+
274 Vec3 ap = -a;
+
275 float d1 = ab.Dot(ap);
+
276 float d2 = ac.Dot(ap);
+
277 if (d1 <= 0.0f && d2 <= 0.0f)
+
278 {
+
279 outSet = swap_ac.GetX()? 0b0100 : 0b0001;
+
280 return a; // barycentric coordinates (1,0,0)
+
281 }
+
282
+
283 // Check if P in vertex region outside B
+
284 Vec3 bp = -inB;
+
285 float d3 = ab.Dot(bp);
+
286 float d4 = ac.Dot(bp);
+
287 if (d3 >= 0.0f && d4 <= d3)
+
288 {
+
289 outSet = 0b0010;
+
290 return inB; // barycentric coordinates (0,1,0)
+
291 }
+
292
+
293 // Check if P in edge region of AB, if so return projection of P onto AB
+
294 if (d1 * d4 <= d3 * d2 && d1 >= 0.0f && d3 <= 0.0f)
+
295 {
+
296 float v = d1 / (d1 - d3);
+
297 outSet = swap_ac.GetX()? 0b0110 : 0b0011;
+
298 return a + v * ab; // barycentric coordinates (1-v,v,0)
+
299 }
+
300
+
301 // Check if P in vertex region outside C
+
302 Vec3 cp = -c;
+
303 float d5 = ab.Dot(cp);
+
304 float d6 = ac.Dot(cp);
+
305 if (d6 >= 0.0f && d5 <= d6)
+
306 {
+
307 outSet = swap_ac.GetX()? 0b0001 : 0b0100;
+
308 return c; // barycentric coordinates (0,0,1)
+
309 }
+
310
+
311 // Check if P in edge region of AC, if so return projection of P onto AC
+
312 if (d5 * d2 <= d1 * d6 && d2 >= 0.0f && d6 <= 0.0f)
+
313 {
+
314 float w = d2 / (d2 - d6);
+
315 outSet = 0b0101;
+
316 return a + w * ac; // barycentric coordinates (1-w,0,w)
+
317 }
+
318
+
319 // Check if P in edge region of BC, if so return projection of P onto BC
+
320 float d4_d3 = d4 - d3;
+
321 float d5_d6 = d5 - d6;
+
322 if (d3 * d6 <= d5 * d4 && d4_d3 >= 0.0f && d5_d6 >= 0.0f)
+
323 {
+
324 float w = d4_d3 / (d4_d3 + d5_d6);
+
325 outSet = swap_ac.GetX()? 0b0011 : 0b0110;
+
326 return inB + w * (c - inB); // barycentric coordinates (0,1-w,w)
+
327 }
+
328
+
329 // P inside face region.
+
330 // Here we deviate from Christer Ericson's article to improve accuracy.
+
331 // Determine distance between triangle and origin: distance = (centroid - origin) . normal / |normal|
+
332 // Closest point to origin is then: distance . normal / |normal|
+
333 // Note that this way of calculating the closest point is much more accurate than first calculating barycentric coordinates
+
334 // and then calculating the closest point based on those coordinates.
+
335 outSet = 0b0111;
+
336 return n * (a + inB + c).Dot(n) / (3.0f * n_len_sq);
+
337 }
+
+
338
+
+
340 inline bool OriginOutsideOfPlane(Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, Vec3Arg inD)
+
341 {
+
342 // Taken from: Real-Time Collision Detection - Christer Ericson (Section: Closest Point on Tetrahedron to Point)
+
343 // With p = 0
+
344
+
345 // Test if point p and d lie on opposite sides of plane through abc
+
346 Vec3 n = (inB - inA).Cross(inC - inA);
+
347 float signp = inA.Dot(n); // [AP AB AC]
+
348 float signd = (inD - inA).Dot(n); // [AD AB AC]
+
349
+
350 // Points on opposite sides if expression signs are the same
+
351 // Note that we left out the minus sign in signp so we need to check > 0 instead of < 0 as in Christer's book
+
352 // We compare against a small negative value to allow for a little bit of slop in the calculations
+
353 return signp * signd > -FLT_EPSILON;
+
354 }
+
+
355
+
+ +
363 {
+
364 Vec3 ab = inB - inA;
+
365 Vec3 ac = inC - inA;
+
366 Vec3 ad = inD - inA;
+
367 Vec3 bd = inD - inB;
+
368 Vec3 bc = inC - inB;
+
369
+
370 Vec3 ab_cross_ac = ab.Cross(ac);
+
371 Vec3 ac_cross_ad = ac.Cross(ad);
+
372 Vec3 ad_cross_ab = ad.Cross(ab);
+
373 Vec3 bd_cross_bc = bd.Cross(bc);
+
374
+
375 // For each plane get the side on which the origin is
+
376 float signp0 = inA.Dot(ab_cross_ac); // ABC
+
377 float signp1 = inA.Dot(ac_cross_ad); // ACD
+
378 float signp2 = inA.Dot(ad_cross_ab); // ADB
+
379 float signp3 = inB.Dot(bd_cross_bc); // BDC
+
380 Vec4 signp(signp0, signp1, signp2, signp3);
+
381
+
382 // For each plane get the side that is outside (determined by the 4th point)
+
383 float signd0 = ad.Dot(ab_cross_ac); // D
+
384 float signd1 = ab.Dot(ac_cross_ad); // B
+
385 float signd2 = ac.Dot(ad_cross_ab); // C
+
386 float signd3 = -ab.Dot(bd_cross_bc); // A
+
387 Vec4 signd(signd0, signd1, signd2, signd3);
+
388
+
389 // The winding of all triangles has been chosen so that signd should have the
+
390 // same sign for all components. If this is not the case the tetrahedron
+
391 // is degenerate and we return that the origin is in front of all sides
+
392 int sign_bits = signd.GetSignBits();
+
393 switch (sign_bits)
+
394 {
+
395 case 0:
+
396 // All positive
+
397 return Vec4::sGreaterOrEqual(signp, Vec4::sReplicate(-FLT_EPSILON));
+
398
+
399 case 0xf:
+
400 // All negative
+
401 return Vec4::sLessOrEqual(signp, Vec4::sReplicate(FLT_EPSILON));
+
402
+
403 default:
+
404 // Mixed signs, degenerate tetrahedron
+
405 return UVec4::sReplicate(0xffffffff);
+
406 }
+
407 }
+
+
408
+
412 template <bool MustIncludeD = false>
+
+ +
414 {
+
415 // Taken from: Real-Time Collision Detection - Christer Ericson (Section: Closest Point on Tetrahedron to Point)
+
416 // With p = 0
+
417
+
418 // Start out assuming point inside all halfspaces, so closest to itself
+
419 uint32 closest_set = 0b1111;
+
420 Vec3 closest_point = Vec3::sZero();
+
421 float best_dist_sq = FLT_MAX;
+
422
+
423 // Determine for each of the faces of the tetrahedron if the origin is in front of the plane
+
424 UVec4 origin_out_of_planes = OriginOutsideOfTetrahedronPlanes(inA, inB, inC, inD);
+
425
+
426 // If point outside face abc then compute closest point on abc
+
427 if (origin_out_of_planes.GetX()) // OriginOutsideOfPlane(inA, inB, inC, inD)
+
428 {
+
429 if constexpr (MustIncludeD)
+
430 {
+
431 // If the closest point must include D then ABC cannot be closest but the closest point
+
432 // cannot be an interior point either so we return A as closest point
+
433 closest_set = 0b0001;
+
434 closest_point = inA;
+
435 }
+
436 else
+
437 {
+
438 // Test the face normally
+
439 closest_point = GetClosestPointOnTriangle<false>(inA, inB, inC, closest_set);
+
440 }
+
441 best_dist_sq = closest_point.LengthSq();
+
442 }
+
443
+
444 // Repeat test for face acd
+
445 if (origin_out_of_planes.GetY()) // OriginOutsideOfPlane(inA, inC, inD, inB)
+
446 {
+
447 uint32 set;
+
448 Vec3 q = GetClosestPointOnTriangle<MustIncludeD>(inA, inC, inD, set);
+
449 float dist_sq = q.LengthSq();
+
450 if (dist_sq < best_dist_sq)
+
451 {
+
452 best_dist_sq = dist_sq;
+
453 closest_point = q;
+
454 closest_set = (set & 0b0001) + ((set & 0b0110) << 1);
+
455 }
+
456 }
+
457
+
458 // Repeat test for face adb
+
459 if (origin_out_of_planes.GetZ()) // OriginOutsideOfPlane(inA, inD, inB, inC)
+
460 {
+
461 // Keep original vertex order, it doesn't matter if the triangle is facing inward or outward
+
462 // and it improves consistency for GJK which will always add a new vertex D and keep the closest
+
463 // feature from the previous iteration in ABC
+
464 uint32 set;
+
465 Vec3 q = GetClosestPointOnTriangle<MustIncludeD>(inA, inB, inD, set);
+
466 float dist_sq = q.LengthSq();
+
467 if (dist_sq < best_dist_sq)
+
468 {
+
469 best_dist_sq = dist_sq;
+
470 closest_point = q;
+
471 closest_set = (set & 0b0011) + ((set & 0b0100) << 1);
+
472 }
+
473 }
+
474
+
475 // Repeat test for face bdc
+
476 if (origin_out_of_planes.GetW()) // OriginOutsideOfPlane(inB, inD, inC, inA)
+
477 {
+
478 // Keep original vertex order, it doesn't matter if the triangle is facing inward or outward
+
479 // and it improves consistency for GJK which will always add a new vertex D and keep the closest
+
480 // feature from the previous iteration in ABC
+
481 uint32 set;
+
482 Vec3 q = GetClosestPointOnTriangle<MustIncludeD>(inB, inC, inD, set);
+
483 float dist_sq = q.LengthSq();
+
484 if (dist_sq < best_dist_sq)
+
485 {
+
486 closest_point = q;
+
487 closest_set = set << 1;
+
488 }
+
489 }
+
490
+
491 outSet = closest_set;
+
492 return closest_point;
+
493 }
+
+
494};
+
+
495
+
496JPH_PRECISE_MATH_OFF
+
497
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)
Clamp a value between two values.
Definition Math.h:45
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
Definition UVec4.h:12
+
JPH_INLINE uint32 GetZ() const
Definition UVec4.h:104
+
JPH_INLINE uint32 GetY() const
Definition UVec4.h:103
+
static JPH_INLINE UVec4 sReplicate(uint32 inV)
Replicate int inV across all components.
Definition UVec4.inl:56
+
JPH_INLINE uint32 GetW() const
Definition UVec4.h:105
+
JPH_INLINE uint32 GetX() const
Get individual components.
Definition UVec4.h:102
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE Vec4 DotV4(Vec3Arg inV2) const
Dot product, returns the dot product in X, Y, Z and W components.
Definition Vec3.inl:629
+
static JPH_INLINE Vec3 sSelect(Vec3Arg inV1, Vec3Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec3.inl:269
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Definition Vec4.h:14
+
static JPH_INLINE UVec4 sLessOrEqual(Vec4Arg inV1, Vec4Arg inV2)
Less than or equal (component wise)
Definition Vec4.inl:194
+
static JPH_INLINE UVec4 sLess(Vec4Arg inV1, Vec4Arg inV2)
Less than (component wise)
Definition Vec4.inl:180
+
static JPH_INLINE UVec4 sGreaterOrEqual(Vec4Arg inV1, Vec4Arg inV2)
Greater than or equal (component wise)
Definition Vec4.inl:222
+
JPH_INLINE int GetSignBits() const
Store if X is negative in bit 0, Y in bit 1, Z in bit 2 and W in bit 3.
Definition Vec4.inl:749
+
static JPH_INLINE Vec4 sReplicate(float inV)
Replicate inV across all components.
Definition Vec4.inl:74
+
Helper utils to find the closest point to a line segment, triangle or tetrahedron.
Definition ClosestPoint.h:14
+
bool GetBaryCentricCoordinates(Vec3Arg inA, Vec3Arg inB, float &outU, float &outV)
Definition ClosestPoint.h:18
+
Vec3 GetClosestPointOnTriangle(Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, uint32 &outSet)
Definition ClosestPoint.h:160
+
UVec4 OriginOutsideOfTetrahedronPlanes(Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, Vec3Arg inD)
Definition ClosestPoint.h:362
+
Vec3 GetClosestPointOnTetrahedron(Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, Vec3Arg inD, uint32 &outSet)
Definition ClosestPoint.h:413
+
bool OriginOutsideOfPlane(Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, Vec3Arg inD)
Check if the origin is outside the plane of triangle (inA, inB, inC). inD specifies the front side of...
Definition ClosestPoint.h:340
+
Vec3 GetClosestPointOnLine(Vec3Arg inA, Vec3Arg inB, uint32 &outSet)
Definition ClosestPoint.h:132
+
+
+ + + + diff --git a/_collect_faces_mode_8h.html b/_collect_faces_mode_8h.html new file mode 100644 index 000000000..2d4d0199e --- /dev/null +++ b/_collect_faces_mode_8h.html @@ -0,0 +1,158 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollectFacesMode.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollectFacesMode.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Enumerations

enum class  ECollectFacesMode : uint8 { CollectFaces +, NoFaces + }
 Whether or not to collect faces, used by CastShape and CollideShape. More...
 
+

Enumeration Type Documentation

+ +

◆ ECollectFacesMode

+ +
+
+ + + + + +
+ + + + +
enum class ECollectFacesMode : uint8
+
+strong
+
+ +

Whether or not to collect faces, used by CastShape and CollideShape.

+ + + +
Enumerator
CollectFaces 

mShape1/2Face is desired

+
NoFaces 

mShape1/2Face is not desired

+
+ +
+
+
+
+ + + + diff --git a/_collect_faces_mode_8h.js b/_collect_faces_mode_8h.js new file mode 100644 index 000000000..591964ea9 --- /dev/null +++ b/_collect_faces_mode_8h.js @@ -0,0 +1,7 @@ +var _collect_faces_mode_8h = +[ + [ "ECollectFacesMode", "_collect_faces_mode_8h.html#a43f9b52c7b53fe169fd83842e75935b6", [ + [ "CollectFaces", "_collect_faces_mode_8h.html#a43f9b52c7b53fe169fd83842e75935b6a745d09152cc2f19f8d94f805226bae7e", null ], + [ "NoFaces", "_collect_faces_mode_8h.html#a43f9b52c7b53fe169fd83842e75935b6af92940cc2936d4efee54451acd04e6b8", null ] + ] ] +]; \ No newline at end of file diff --git a/_collect_faces_mode_8h_source.html b/_collect_faces_mode_8h_source.html new file mode 100644 index 000000000..b1f947f10 --- /dev/null +++ b/_collect_faces_mode_8h_source.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollectFacesMode.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollectFacesMode.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
+
+ +
11{
+ +
13 NoFaces
+
14};
+
+
15
+ +
ECollectFacesMode
Whether or not to collect faces, used by CastShape and CollideShape.
Definition CollectFacesMode.h:11
+
@ CollectFaces
mShape1/2Face is desired
+
@ NoFaces
mShape1/2Face is not desired
+
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
+
+ + + + diff --git a/_collide_convex_vs_triangles_8cpp.html b/_collide_convex_vs_triangles_8cpp.html new file mode 100644 index 000000000..ade4e01c0 --- /dev/null +++ b/_collide_convex_vs_triangles_8cpp.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollideConvexVsTriangles.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollideConvexVsTriangles.cpp File Reference
+
+
+
+
+ + + + diff --git a/_collide_convex_vs_triangles_8h.html b/_collide_convex_vs_triangles_8h.html new file mode 100644 index 000000000..cdf2b1d7c --- /dev/null +++ b/_collide_convex_vs_triangles_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollideConvexVsTriangles.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollideConvexVsTriangles.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  CollideConvexVsTriangles
 Collision detection helper that collides a convex object vs one or more triangles. More...
 
+
+
+ + + + diff --git a/_collide_convex_vs_triangles_8h.js b/_collide_convex_vs_triangles_8h.js new file mode 100644 index 000000000..7e1769cdd --- /dev/null +++ b/_collide_convex_vs_triangles_8h.js @@ -0,0 +1,4 @@ +var _collide_convex_vs_triangles_8h = +[ + [ "CollideConvexVsTriangles", "class_collide_convex_vs_triangles.html", "class_collide_convex_vs_triangles" ] +]; \ No newline at end of file diff --git a/_collide_convex_vs_triangles_8h_source.html b/_collide_convex_vs_triangles_8h_source.html new file mode 100644 index 000000000..342469beb --- /dev/null +++ b/_collide_convex_vs_triangles_8h_source.html @@ -0,0 +1,193 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollideConvexVsTriangles.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollideConvexVsTriangles.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
+ + + + +
11
+ +
13
+ +
15
+
+ +
18{
+
19public:
+
29 CollideConvexVsTriangles(const ConvexShape *inShape1, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeID &inSubShapeID1, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector);
+
30
+
36 void Collide(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2);
+
37
+
38protected:
+ + + + + + + + + + + + + +
52 const ConvexShape::Support * mShape1ExCvxRadius = nullptr;
+
53 const ConvexShape::Support * mShape1IncCvxRadius = nullptr;
+
54};
+
+
55
+ + + +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
Axis aligned box.
Definition AABox.h:16
+
Collision detection helper that collides a convex object vs one or more triangles.
Definition CollideConvexVsTriangles.h:18
+
ConvexShape::SupportBuffer mBufferExCvxRadius
Buffer that holds the support function data excluding convex radius.
Definition CollideConvexVsTriangles.h:50
+
float mScaleSign2
Sign of the scale of object 2, -1 if object is inside out, 1 if not.
Definition CollideConvexVsTriangles.h:49
+
Vec3 mScale2
The scale of the shape (in shape local space) of the shape we're colliding against.
Definition CollideConvexVsTriangles.h:43
+
Vec3 mScale1
The scale of the shape (in shape local space) of the shape we're colliding with.
Definition CollideConvexVsTriangles.h:42
+
const ConvexShape * mShape1
The shape that we're colliding with.
Definition CollideConvexVsTriangles.h:41
+
CollideShapeCollector & mCollector
The collector that will receive the results.
Definition CollideConvexVsTriangles.h:40
+
AABox mBoundsOf1
Bounds of the colliding shape in local space.
Definition CollideConvexVsTriangles.h:46
+
const CollideShapeSettings & mCollideShapeSettings
Settings for this collision operation.
Definition CollideConvexVsTriangles.h:39
+
Mat44 mTransform1
Transform of the shape we're colliding with.
Definition CollideConvexVsTriangles.h:44
+
ConvexShape::SupportBuffer mBufferIncCvxRadius
Buffer that holds the support function data including convex radius.
Definition CollideConvexVsTriangles.h:51
+
AABox mBoundsOf1InSpaceOf2
Bounds of the colliding shape in space of shape we're colliding with.
Definition CollideConvexVsTriangles.h:47
+
Mat44 mTransform2To1
Transform that takes a point in space of the colliding shape to the shape we're colliding with.
Definition CollideConvexVsTriangles.h:45
+
SubShapeID mSubShapeID1
Sub shape ID of colliding shape.
Definition CollideConvexVsTriangles.h:48
+
Settings to be passed with a collision query.
Definition CollideShape.h:94
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
Buffer to hold a Support object, used to avoid dynamic memory allocations.
Definition ConvexShape.h:85
+
Function that provides an interface for GJK.
Definition ConvexShape.h:69
+
Base class for all convex shapes. Defines a virtual interface.
Definition ConvexShape.h:36
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
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
+
+
+ + + + diff --git a/_collide_point_result_8h.html b/_collide_point_result_8h.html new file mode 100644 index 000000000..2fa447d1f --- /dev/null +++ b/_collide_point_result_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollidePointResult.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollidePointResult.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  CollidePointResult
 Structure that holds the result of colliding a point against a shape. More...
 
+
+
+ + + + diff --git a/_collide_point_result_8h.js b/_collide_point_result_8h.js new file mode 100644 index 000000000..1fdf4369a --- /dev/null +++ b/_collide_point_result_8h.js @@ -0,0 +1,4 @@ +var _collide_point_result_8h = +[ + [ "CollidePointResult", "class_collide_point_result.html", "class_collide_point_result" ] +]; \ No newline at end of file diff --git a/_collide_point_result_8h_source.html b/_collide_point_result_8h_source.html new file mode 100644 index 000000000..3a5a16725 --- /dev/null +++ b/_collide_point_result_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollidePointResult.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollidePointResult.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
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+ +
17
+
19 inline float GetEarlyOutFraction() const { return 0.0f; }
+
20
+ + +
23};
+
+
24
+ + +
#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
+ +
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Structure that holds the result of colliding a point against a shape.
Definition CollidePointResult.h:14
+
JPH_OVERRIDE_NEW_DELETE float GetEarlyOutFraction() const
Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'....
Definition CollidePointResult.h:19
+
BodyID mBodyID
Body that was hit.
Definition CollidePointResult.h:21
+
SubShapeID mSubShapeID2
Sub shape ID of shape that we collided against.
Definition CollidePointResult.h:22
+
A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...
Definition SubShapeID.h:23
+
+
+ + + + diff --git a/_collide_shape_8h.html b/_collide_shape_8h.html new file mode 100644 index 000000000..e5427e410 --- /dev/null +++ b/_collide_shape_8h.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollideShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollideShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Classes

class  CollideShapeResult
 Class that contains all information of two colliding shapes. More...
 
class  CollideSettingsBase
 Settings to be passed with a collision query. More...
 
class  CollideShapeSettings
 Settings to be passed with a collision query. More...
 
+
+
+ + + + diff --git a/_collide_shape_8h.js b/_collide_shape_8h.js new file mode 100644 index 000000000..d9393b75f --- /dev/null +++ b/_collide_shape_8h.js @@ -0,0 +1,6 @@ +var _collide_shape_8h = +[ + [ "CollideShapeResult", "class_collide_shape_result.html", "class_collide_shape_result" ], + [ "CollideSettingsBase", "class_collide_settings_base.html", "class_collide_settings_base" ], + [ "CollideShapeSettings", "class_collide_shape_settings.html", "class_collide_shape_settings" ] +]; \ No newline at end of file diff --git a/_collide_shape_8h_source.html b/_collide_shape_8h_source.html new file mode 100644 index 000000000..854f97f2d --- /dev/null +++ b/_collide_shape_8h_source.html @@ -0,0 +1,266 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollideShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollideShape.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
+ + + + + + + +
14
+ +
16
+
+ +
19{
+
20public:
+ +
22
+
24 CollideShapeResult() = default;
+
25
+
+
27 CollideShapeResult(Vec3Arg inContactPointOn1, Vec3Arg inContactPointOn2, Vec3Arg inPenetrationAxis, float inPenetrationDepth, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2) :
+
28 mContactPointOn1(inContactPointOn1),
+
29 mContactPointOn2(inContactPointOn2),
+
30 mPenetrationAxis(inPenetrationAxis),
+
31 mPenetrationDepth(inPenetrationDepth),
+
32 mSubShapeID1(inSubShapeID1),
+
33 mSubShapeID2(inSubShapeID2),
+
34 mBodyID2(inBodyID2)
+
35 {
+
36 }
+
+
37
+
39 inline float GetEarlyOutFraction() const { return -mPenetrationDepth; }
+
40
+
+ +
43 {
+
44 CollideShapeResult result;
+ + + + + + +
51 result.mBodyID2 = mBodyID2;
+
52 result.mShape2Face = mShape1Face;
+
53 result.mShape1Face = mShape2Face;
+
54 return result;
+
55 }
+
+
56
+ +
58
+ + + + + + + + + +
68};
+
+
69
+ +
91
+ +
104
+ + +
EActiveEdgeMode
Definition ActiveEdgeMode.h:12
+
@ CollideOnlyWithActive
Do not collide with inactive edges. For physics simulation, this gives less ghost collisions.
+ +
EBackFaceMode
How collision detection functions will treat back facing triangles.
Definition BackFaceMode.h:11
+
@ IgnoreBackFaces
Ignore collision with back facing surfaces/triangles.
+ + +
ECollectFacesMode
Whether or not to collect faces, used by CastShape and CollideShape.
Definition CollectFacesMode.h:11
+
@ NoFaces
mShape1/2Face is not desired
+
#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
+ +
JPH_NAMESPACE_BEGIN constexpr float cDefaultCollisionTolerance
If objects are closer than this distance, they are considered to be colliding (used for GJK) (unit: m...
Definition PhysicsSettings.h:10
+
constexpr float cDefaultPenetrationTolerance
A factor that determines the accuracy of the penetration depth calculation. If the change of the squa...
Definition PhysicsSettings.h:13
+ + +
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Settings to be passed with a collision query.
Definition CollideShape.h:72
+
float mCollisionTolerance
If objects are closer than this distance, they are considered to be colliding (used for GJK) (unit: m...
Definition CollideShape.h:83
+
ECollectFacesMode mCollectFacesMode
If colliding faces should be collected or only the collision point.
Definition CollideShape.h:80
+
float mPenetrationTolerance
A factor that determines the accuracy of the penetration depth calculation. If the change of the squa...
Definition CollideShape.h:86
+
JPH_OVERRIDE_NEW_DELETE EActiveEdgeMode mActiveEdgeMode
How active edges (edges that a moving object should bump into) are handled.
Definition CollideShape.h:77
+
Vec3 mActiveEdgeMovementDirection
When mActiveEdgeMode is CollideOnlyWithActive a movement direction can be provided....
Definition CollideShape.h:89
+
Class that contains all information of two colliding shapes.
Definition CollideShape.h:19
+
SubShapeID mSubShapeID1
Sub shape ID that identifies the face on shape 1.
Definition CollideShape.h:63
+
BodyID mBodyID2
BodyID to which shape 2 belongs to.
Definition CollideShape.h:65
+
Vec3 mContactPointOn2
Contact point on the surface of shape 2 (in world space or relative to base offset)....
Definition CollideShape.h:60
+
Vec3 mPenetrationAxis
Direction to move shape 2 out of collision along the shortest path (magnitude is meaningless,...
Definition CollideShape.h:61
+
Vec3 mContactPointOn1
Contact point on the surface of shape 1 (in world space or relative to base offset)
Definition CollideShape.h:59
+
JPH_OVERRIDE_NEW_DELETE CollideShapeResult()=default
Default constructor.
+
CollideShapeResult Reversed() const
Reverses the hit result, swapping contact point 1 with contact point 2 etc.
Definition CollideShape.h:42
+
CollideShapeResult(Vec3Arg inContactPointOn1, Vec3Arg inContactPointOn2, Vec3Arg inPenetrationAxis, float inPenetrationDepth, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2)
Constructor.
Definition CollideShape.h:27
+
float mPenetrationDepth
Penetration depth (move shape 2 by this distance to resolve the collision)
Definition CollideShape.h:62
+
Face mShape1Face
Colliding face on shape 1 (optional result, in world space or relative to base offset)
Definition CollideShape.h:66
+
SubShapeID mSubShapeID2
Sub shape ID that identifies the face on shape 2.
Definition CollideShape.h:64
+
float GetEarlyOutFraction() const
Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'....
Definition CollideShape.h:39
+
Face mShape2Face
Colliding face on shape 2 (optional result, in world space or relative to base offset)
Definition CollideShape.h:67
+
Settings to be passed with a collision query.
Definition CollideShape.h:94
+
JPH_OVERRIDE_NEW_DELETE float mMaxSeparationDistance
When > 0 contacts in the vicinity of the query shape can be found. All nearest contacts that are not ...
Definition CollideShape.h:99
+
EBackFaceMode mBackFaceMode
How backfacing triangles should be treated.
Definition CollideShape.h:102
+ +
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
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_collide_soft_body_vertices_vs_triangles_8h.html b/_collide_soft_body_vertices_vs_triangles_8h.html new file mode 100644 index 000000000..050533177 --- /dev/null +++ b/_collide_soft_body_vertices_vs_triangles_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollideSoftBodyVerticesVsTriangles.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollideSoftBodyVerticesVsTriangles.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  CollideSoftBodyVerticesVsTriangles
 Collision detection helper that collides soft body vertices vs triangles. More...
 
+
+
+ + + + diff --git a/_collide_soft_body_vertices_vs_triangles_8h.js b/_collide_soft_body_vertices_vs_triangles_8h.js new file mode 100644 index 000000000..756a69a8c --- /dev/null +++ b/_collide_soft_body_vertices_vs_triangles_8h.js @@ -0,0 +1,4 @@ +var _collide_soft_body_vertices_vs_triangles_8h = +[ + [ "CollideSoftBodyVerticesVsTriangles", "class_collide_soft_body_vertices_vs_triangles.html", "class_collide_soft_body_vertices_vs_triangles" ] +]; \ No newline at end of file diff --git a/_collide_soft_body_vertices_vs_triangles_8h_source.html b/_collide_soft_body_vertices_vs_triangles_8h_source.html new file mode 100644 index 000000000..9ec331a84 --- /dev/null +++ b/_collide_soft_body_vertices_vs_triangles_8h_source.html @@ -0,0 +1,260 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollideSoftBodyVerticesVsTriangles.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollideSoftBodyVerticesVsTriangles.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+
+
16 CollideSoftBodyVerticesVsTriangles(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) :
+
17 mTransform(inCenterOfMassTransform * Mat44::sScale(inScale)),
+
18 mInvTransform(mTransform.Inversed()),
+
19 mNormalSign(ScaleHelpers::IsInsideOut(inScale)? -1.0f : 1.0f)
+
20 {
+
21 }
+
+
22
+
+
23 JPH_INLINE void StartVertex(const SoftBodyVertex &inVertex)
+
24 {
+
25 mLocalPosition = mInvTransform * inVertex.mPosition;
+
26 mClosestDistanceSq = FLT_MAX;
+
27 }
+
+
28
+
+
29 JPH_INLINE void ProcessTriangle(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2)
+
30 {
+
31 // Get the closest point from the vertex to the triangle
+
32 uint32 set;
+
33 Vec3 closest_point = ClosestPoint::GetClosestPointOnTriangle(inV0 - mLocalPosition, inV1 - mLocalPosition, inV2 - mLocalPosition, set);
+
34 float dist_sq = closest_point.LengthSq();
+
35 if (dist_sq < mClosestDistanceSq)
+
36 {
+
37 mV0 = inV0;
+
38 mV1 = inV1;
+
39 mV2 = inV2;
+
40 mClosestPoint = closest_point;
+
41 mClosestDistanceSq = dist_sq;
+
42 mSet = set;
+
43 }
+
44 }
+
+
45
+
+
46 JPH_INLINE void FinishVertex(SoftBodyVertex &ioVertex, int inCollidingShapeIndex) const
+
47 {
+
48 if (mClosestDistanceSq < FLT_MAX)
+
49 {
+
50 // Convert triangle to world space
+
51 Vec3 v0 = mTransform * mV0;
+
52 Vec3 v1 = mTransform * mV1;
+
53 Vec3 v2 = mTransform * mV2;
+
54 Vec3 triangle_normal = mNormalSign * (v1 - v0).Cross(v2 - v0).NormalizedOr(Vec3::sAxisY());
+
55
+
56 if (mSet == 0b111)
+
57 {
+
58 // Closest is interior to the triangle, use plane as collision plane but don't allow more than 0.1 m penetration
+
59 // because otherwise a triangle half a level a way will have a huge penetration if it is back facing
+
60 float penetration = min(triangle_normal.Dot(v0 - ioVertex.mPosition), 0.1f);
+
61 if (penetration > ioVertex.mLargestPenetration)
+
62 {
+
63 ioVertex.mLargestPenetration = penetration;
+
64 ioVertex.mCollisionPlane = Plane::sFromPointAndNormal(v0, triangle_normal);
+
65 ioVertex.mCollidingShapeIndex = inCollidingShapeIndex;
+
66 }
+
67 }
+
68 else
+
69 {
+
70 // Closest point is on an edge or vertex, use closest point as collision plane
+
71 Vec3 closest_point = mTransform * (mLocalPosition + mClosestPoint);
+
72 Vec3 normal = ioVertex.mPosition - closest_point;
+
73 if (normal.Dot(triangle_normal) > 0.0f) // Ignore back facing edges
+
74 {
+
75 float normal_length = normal.Length();
+
76 float penetration = -normal_length;
+
77 if (penetration > ioVertex.mLargestPenetration)
+
78 {
+
79 ioVertex.mLargestPenetration = penetration;
+
80 ioVertex.mCollisionPlane = Plane::sFromPointAndNormal(closest_point, normal_length > 0.0f? normal / normal_length : triangle_normal);
+
81 ioVertex.mCollidingShapeIndex = inCollidingShapeIndex;
+
82 }
+
83 }
+
84 }
+
85 }
+
86 }
+
+
87
+ + + +
91 Vec3 mV0, mV1, mV2;
+ + + + +
96};
+
+
97
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Collision detection helper that collides soft body vertices vs triangles.
Definition CollideSoftBodyVerticesVsTriangles.h:14
+
JPH_INLINE void ProcessTriangle(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2)
Definition CollideSoftBodyVerticesVsTriangles.h:29
+
uint32 mSet
Definition CollideSoftBodyVerticesVsTriangles.h:95
+
Mat44 mInvTransform
Definition CollideSoftBodyVerticesVsTriangles.h:89
+
Vec3 mLocalPosition
Definition CollideSoftBodyVerticesVsTriangles.h:90
+
CollideSoftBodyVerticesVsTriangles(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale)
Definition CollideSoftBodyVerticesVsTriangles.h:16
+
float mClosestDistanceSq
Definition CollideSoftBodyVerticesVsTriangles.h:94
+
float mNormalSign
Definition CollideSoftBodyVerticesVsTriangles.h:93
+
Vec3 mClosestPoint
Definition CollideSoftBodyVerticesVsTriangles.h:92
+
JPH_INLINE void FinishVertex(SoftBodyVertex &ioVertex, int inCollidingShapeIndex) const
Definition CollideSoftBodyVerticesVsTriangles.h:46
+
Mat44 mTransform
Definition CollideSoftBodyVerticesVsTriangles.h:88
+
Vec3 mV0
Definition CollideSoftBodyVerticesVsTriangles.h:91
+
JPH_INLINE void StartVertex(const SoftBodyVertex &inVertex)
Definition CollideSoftBodyVerticesVsTriangles.h:23
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static Plane sFromPointAndNormal(Vec3Arg inPoint, Vec3Arg inNormal)
Create from point and normal.
Definition Plane.h:21
+
Definition SoftBodyVertex.h:16
+
float mLargestPenetration
Used while finding the collision plane, stores the largest penetration found so far.
Definition SoftBodyVertex.h:24
+
int mCollidingShapeIndex
Index in the colliding shapes list of the body we may collide with.
Definition SoftBodyVertex.h:22
+
Plane mCollisionPlane
Nearest collision plane, relative to the center of mass of the soft body.
Definition SoftBodyVertex.h:21
+
Vec3 mPosition
Position, relative to the center of mass of the soft body.
Definition SoftBodyVertex.h:19
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
static JPH_INLINE Vec3 sAxisY()
Definition Vec3.h:54
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec3.inl:677
+
JPH_INLINE Vec3 NormalizedOr(Vec3Arg inZeroValue) const
Normalize vector or return inZeroValue if the length of the vector is zero.
Definition Vec3.inl:716
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
Vec3 GetClosestPointOnTriangle(Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, uint32 &outSet)
Definition ClosestPoint.h:160
+
Helper functions to get properties of a scaling vector.
Definition ScaleHelpers.h:13
+
+
+ + + + diff --git a/_collide_sphere_vs_triangles_8cpp.html b/_collide_sphere_vs_triangles_8cpp.html new file mode 100644 index 000000000..8fcd6c016 --- /dev/null +++ b/_collide_sphere_vs_triangles_8cpp.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollideSphereVsTriangles.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollideSphereVsTriangles.cpp File Reference
+
+
+
+
+ + + + diff --git a/_collide_sphere_vs_triangles_8h.html b/_collide_sphere_vs_triangles_8h.html new file mode 100644 index 000000000..b6700c568 --- /dev/null +++ b/_collide_sphere_vs_triangles_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollideSphereVsTriangles.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollideSphereVsTriangles.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  CollideSphereVsTriangles
 Collision detection helper that collides a sphere vs one or more triangles. More...
 
+
+
+ + + + diff --git a/_collide_sphere_vs_triangles_8h.js b/_collide_sphere_vs_triangles_8h.js new file mode 100644 index 000000000..62043136d --- /dev/null +++ b/_collide_sphere_vs_triangles_8h.js @@ -0,0 +1,4 @@ +var _collide_sphere_vs_triangles_8h = +[ + [ "CollideSphereVsTriangles", "class_collide_sphere_vs_triangles.html", "class_collide_sphere_vs_triangles" ] +]; \ No newline at end of file diff --git a/_collide_sphere_vs_triangles_8h_source.html b/_collide_sphere_vs_triangles_8h_source.html new file mode 100644 index 000000000..cfc04756c --- /dev/null +++ b/_collide_sphere_vs_triangles_8h_source.html @@ -0,0 +1,180 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollideSphereVsTriangles.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollideSphereVsTriangles.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
+ + + +
10
+ +
12
+ +
14
+
+ +
17{
+
18public:
+
28 CollideSphereVsTriangles(const SphereShape *inShape1, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeID &inSubShapeID1, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector);
+
29
+
35 void Collide(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2);
+
36
+
37protected:
+ + + + + + + + +
46 float mRadius;
+ +
48};
+
+
49
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + + +
Settings to be passed with a collision query.
Definition CollideShape.h:94
+
Collision detection helper that collides a sphere vs one or more triangles.
Definition CollideSphereVsTriangles.h:17
+
float mRadius
Radius of the sphere.
Definition CollideSphereVsTriangles.h:46
+
Vec3 mSphereCenterIn2
The center of the sphere in the space of 2.
Definition CollideSphereVsTriangles.h:43
+
float mScaleSign2
Sign of the scale of object 2, -1 if object is inside out, 1 if not.
Definition CollideSphereVsTriangles.h:45
+
CollideShapeCollector & mCollector
The collector that will receive the results.
Definition CollideSphereVsTriangles.h:39
+
Mat44 mTransform2
Transform of the shape we're colliding against.
Definition CollideSphereVsTriangles.h:42
+
const SphereShape * mShape1
The shape that we're colliding with.
Definition CollideSphereVsTriangles.h:40
+
SubShapeID mSubShapeID1
Sub shape ID of colliding shape.
Definition CollideSphereVsTriangles.h:44
+
float mRadiusPlusMaxSeparationSq
(Radius + Max SeparationDistance)^2
Definition CollideSphereVsTriangles.h:47
+
const CollideShapeSettings & mCollideShapeSettings
Settings for this collision operation.
Definition CollideSphereVsTriangles.h:38
+
Vec3 mScale2
The scale of the shape (in shape local space) of the shape we're colliding against.
Definition CollideSphereVsTriangles.h:41
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Definition SphereShape.h:32
+
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
+
+
+ + + + diff --git a/_collision_collector_8h.html b/_collision_collector_8h.html new file mode 100644 index 000000000..edeabf656 --- /dev/null +++ b/_collision_collector_8h.html @@ -0,0 +1,158 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollisionCollector.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionCollector.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

class  CollisionCollectorTraitsCastRay
 Traits to use for CastRay. More...
 
class  CollisionCollectorTraitsCastShape
 Traits to use for CastShape. More...
 
class  CollisionCollectorTraitsCollideShape
 Traits to use for CollideShape. More...
 
class  CollisionCollector< ResultTypeArg, TraitsType >
 Virtual interface that allows collecting multiple collision results. More...
 
+ + + + +

+Typedefs

using CollisionCollectorTraitsCollidePoint = CollisionCollectorTraitsCollideShape
 Traits to use for CollidePoint.
 
+

Typedef Documentation

+ +

◆ CollisionCollectorTraitsCollidePoint

+ +
+
+ +

Traits to use for CollidePoint.

+ +
+
+
+
+ + + + diff --git a/_collision_collector_8h.js b/_collision_collector_8h.js new file mode 100644 index 000000000..680767667 --- /dev/null +++ b/_collision_collector_8h.js @@ -0,0 +1,8 @@ +var _collision_collector_8h = +[ + [ "CollisionCollectorTraitsCastRay", "class_collision_collector_traits_cast_ray.html", null ], + [ "CollisionCollectorTraitsCastShape", "class_collision_collector_traits_cast_shape.html", null ], + [ "CollisionCollectorTraitsCollideShape", "class_collision_collector_traits_collide_shape.html", null ], + [ "CollisionCollector< ResultTypeArg, TraitsType >", "class_collision_collector.html", "class_collision_collector" ], + [ "CollisionCollectorTraitsCollidePoint", "_collision_collector_8h.html#a752023f1ea66323b2045dc2331831284", null ] +]; \ No newline at end of file diff --git a/_collision_collector_8h_source.html b/_collision_collector_8h_source.html new file mode 100644 index 000000000..3ae2049ee --- /dev/null +++ b/_collision_collector_8h_source.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollisionCollector.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionCollector.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
+
9class Body;
+ +
11
+
+ +
14{
+
15public:
+
17 static constexpr float InitialEarlyOutFraction = 1.0f + FLT_EPSILON;
+
18 static constexpr float ShouldEarlyOutFraction = 0.0f;
+
19};
+
+
20
+
+ +
23{
+
24public:
+
26 static constexpr float InitialEarlyOutFraction = 1.0f + FLT_EPSILON;
+
27 static constexpr float ShouldEarlyOutFraction = -FLT_MAX;
+
28};
+
+
29
+
+ +
32{
+
33public:
+
35 static constexpr float InitialEarlyOutFraction = FLT_MAX;
+
36 static constexpr float ShouldEarlyOutFraction = -FLT_MAX;
+
37};
+
+
38
+ +
41
+
43template <class ResultTypeArg, class TraitsType>
+
+ +
45{
+
46public:
+
48 using ResultType = ResultTypeArg;
+
49
+
51 CollisionCollector() = default;
+
52
+
54 template <class ResultTypeArg2>
+
55 explicit CollisionCollector(const CollisionCollector<ResultTypeArg2, TraitsType> &inRHS) : mEarlyOutFraction(inRHS.GetEarlyOutFraction()), mContext(inRHS.GetContext()) { }
+ +
57
+
59 virtual ~CollisionCollector() = default;
+
60
+
62 virtual void Reset() { mEarlyOutFraction = TraitsType::InitialEarlyOutFraction; }
+
63
+
67 virtual void OnBody([[maybe_unused]] const Body &inBody) { /* Collects nothing by default */ }
+
68
+
70 void SetContext(const TransformedShape *inContext) { mContext = inContext; }
+
71 const TransformedShape *GetContext() const { return mContext; }
+
72
+
74 virtual void SetUserData(uint64 inUserData) { /* Does nothing by default */ }
+
75
+
77 virtual void AddHit(const ResultType &inResult) = 0;
+
78
+
80 inline void UpdateEarlyOutFraction(float inFraction) { JPH_ASSERT(inFraction <= mEarlyOutFraction); mEarlyOutFraction = inFraction; }
+
81
+
83 inline void ResetEarlyOutFraction(float inFraction = TraitsType::InitialEarlyOutFraction) { mEarlyOutFraction = inFraction; }
+
84
+
86 inline void ForceEarlyOut() { mEarlyOutFraction = TraitsType::ShouldEarlyOutFraction; }
+
87
+
89 inline bool ShouldEarlyOut() const { return mEarlyOutFraction <= TraitsType::ShouldEarlyOutFraction; }
+
90
+
92 inline float GetEarlyOutFraction() const { return mEarlyOutFraction; }
+
93
+
95 inline float GetPositiveEarlyOutFraction() const { return max(FLT_MIN, mEarlyOutFraction); }
+
96
+
97private:
+
99 float mEarlyOutFraction = TraitsType::InitialEarlyOutFraction;
+
100
+
102 const TransformedShape *mContext = nullptr;
+
103};
+
+
104
+ +
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
Definition Body.h:35
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
void ForceEarlyOut()
Force the collision detection algorithm to terminate as soon as possible. Call this from the AddHit f...
Definition CollisionCollector.h:86
+
void ResetEarlyOutFraction(float inFraction=TraitsType::InitialEarlyOutFraction)
Reset the early out fraction to a specific value.
Definition CollisionCollector.h:83
+
CollisionCollector()=default
Default constructor.
+
virtual ~CollisionCollector()=default
Destructor.
+
bool ShouldEarlyOut() const
When true, the collector will no longer accept any additional hits and the collision detection routin...
Definition CollisionCollector.h:89
+
virtual void AddHit(const ResultType &inResult)=0
This function will be called for every hit found, it's up to the application to decide how to store t...
+
virtual void Reset()
If you want to reuse this collector, call Reset()
Definition CollisionCollector.h:62
+
CollisionCollector(const CollisionCollector< ResultTypeArg2, TraitsType > &inRHS)
Constructor to initialize from another collector.
Definition CollisionCollector.h:55
+
CollisionCollector(const CollisionCollector< ResultTypeArg, TraitsType > &inRHS)=default
+
float GetEarlyOutFraction() const
Get the current early out value.
Definition CollisionCollector.h:92
+
const TransformedShape * GetContext() const
Definition CollisionCollector.h:71
+
virtual void OnBody(const Body &inBody)
Definition CollisionCollector.h:67
+
void UpdateEarlyOutFraction(float inFraction)
Update the early out fraction (should be lower than before)
Definition CollisionCollector.h:80
+
ResultTypeArg ResultType
Declare ResultType so that derived classes can use it.
Definition CollisionCollector.h:48
+
void SetContext(const TransformedShape *inContext)
Set by the collision detection functions to the current TransformedShape that we're colliding against...
Definition CollisionCollector.h:70
+
float GetPositiveEarlyOutFraction() const
Get the current early out value but make sure it's bigger than zero, this is used for shape casting a...
Definition CollisionCollector.h:95
+
virtual void SetUserData(uint64 inUserData)
This function can be used to set some user data on the collision collector.
Definition CollisionCollector.h:74
+
Traits to use for CastRay.
Definition CollisionCollector.h:14
+
static constexpr float InitialEarlyOutFraction
For rays the early out fraction is the fraction along the line to order hits.
Definition CollisionCollector.h:17
+
static constexpr float ShouldEarlyOutFraction
Closest hit: Fraction is 0.
Definition CollisionCollector.h:18
+
Traits to use for CastShape.
Definition CollisionCollector.h:23
+
static constexpr float InitialEarlyOutFraction
For rays the early out fraction is the fraction along the line to order hits.
Definition CollisionCollector.h:26
+
static constexpr float ShouldEarlyOutFraction
Deepest hit: Penetration is infinite.
Definition CollisionCollector.h:27
+
Traits to use for CollideShape.
Definition CollisionCollector.h:32
+
static constexpr float InitialEarlyOutFraction
For shape collisions we use -penetration depth to order hits.
Definition CollisionCollector.h:35
+
static constexpr float ShouldEarlyOutFraction
Deepest hit: Penetration is infinite.
Definition CollisionCollector.h:36
+
Definition TransformedShape.h:26
+
+
+ + + + diff --git a/_collision_collector_impl_8h.html b/_collision_collector_impl_8h.html new file mode 100644 index 000000000..10de32fba --- /dev/null +++ b/_collision_collector_impl_8h.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollisionCollectorImpl.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionCollectorImpl.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Classes

class  AllHitCollisionCollector< CollectorType >
 Simple implementation that collects all hits and optionally sorts them on distance. More...
 
class  ClosestHitCollisionCollector< CollectorType >
 Simple implementation that collects the closest / deepest hit. More...
 
class  AnyHitCollisionCollector< CollectorType >
 Simple implementation that collects any hit. More...
 
+
+
+ + + + diff --git a/_collision_collector_impl_8h.js b/_collision_collector_impl_8h.js new file mode 100644 index 000000000..9d962f434 --- /dev/null +++ b/_collision_collector_impl_8h.js @@ -0,0 +1,6 @@ +var _collision_collector_impl_8h = +[ + [ "AllHitCollisionCollector< CollectorType >", "class_all_hit_collision_collector.html", "class_all_hit_collision_collector" ], + [ "ClosestHitCollisionCollector< CollectorType >", "class_closest_hit_collision_collector.html", "class_closest_hit_collision_collector" ], + [ "AnyHitCollisionCollector< CollectorType >", "class_any_hit_collision_collector.html", "class_any_hit_collision_collector" ] +]; \ No newline at end of file diff --git a/_collision_collector_impl_8h_source.html b/_collision_collector_impl_8h_source.html new file mode 100644 index 000000000..7afff9cec --- /dev/null +++ b/_collision_collector_impl_8h_source.html @@ -0,0 +1,300 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollisionCollectorImpl.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionCollectorImpl.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
+ + +
9
+ +
11
+
13template <class CollectorType>
+
+
14class AllHitCollisionCollector : public CollectorType
+
15{
+
16public:
+
18 using ResultType = typename CollectorType::ResultType;
+
19
+
20 // See: CollectorType::Reset
+
+
21 virtual void Reset() override
+
22 {
+
23 CollectorType::Reset();
+
24
+
25 mHits.clear();
+
26 }
+
+
27
+
28 // See: CollectorType::AddHit
+
+
29 virtual void AddHit(const ResultType &inResult) override
+
30 {
+
31 mHits.push_back(inResult);
+
32 }
+
+
33
+
+
35 void Sort()
+
36 {
+
37 QuickSort(mHits.begin(), mHits.end(), [](const ResultType &inLHS, const ResultType &inRHS) { return inLHS.GetEarlyOutFraction() < inRHS.GetEarlyOutFraction(); });
+
38 }
+
+
39
+
+
41 inline bool HadHit() const
+
42 {
+
43 return !mHits.empty();
+
44 }
+
+
45
+ +
47};
+
+
48
+
50template <class CollectorType>
+
+
51class ClosestHitCollisionCollector : public CollectorType
+
52{
+
53public:
+
55 using ResultType = typename CollectorType::ResultType;
+
56
+
57 // See: CollectorType::Reset
+
+
58 virtual void Reset() override
+
59 {
+
60 CollectorType::Reset();
+
61
+
62 mHadHit = false;
+
63 }
+
+
64
+
65 // See: CollectorType::AddHit
+
+
66 virtual void AddHit(const ResultType &inResult) override
+
67 {
+
68 float early_out = inResult.GetEarlyOutFraction();
+
69 if (!mHadHit || early_out < mHit.GetEarlyOutFraction())
+
70 {
+
71 // Update early out fraction
+
72 CollectorType::UpdateEarlyOutFraction(early_out);
+
73
+
74 // Store hit
+
75 mHit = inResult;
+
76 mHadHit = true;
+
77 }
+
78 }
+
+
79
+
+
81 inline bool HadHit() const
+
82 {
+
83 return mHadHit;
+
84 }
+
+
85
+ +
87
+
88private:
+
89 bool mHadHit = false;
+
90};
+
+
91
+
93template <class CollectorType>
+
+
94class AnyHitCollisionCollector : public CollectorType
+
95{
+
96public:
+
98 using ResultType = typename CollectorType::ResultType;
+
99
+
100 // See: CollectorType::Reset
+
+
101 virtual void Reset() override
+
102 {
+
103 CollectorType::Reset();
+
104
+
105 mHadHit = false;
+
106 }
+
+
107
+
108 // See: CollectorType::AddHit
+
+
109 virtual void AddHit(const ResultType &inResult) override
+
110 {
+
111 // Test that the collector is not collecting more hits after forcing an early out
+
112 JPH_ASSERT(!mHadHit);
+
113
+
114 // Abort any further testing
+
115 CollectorType::ForceEarlyOut();
+
116
+
117 // Store hit
+
118 mHit = inResult;
+
119 mHadHit = true;
+
120 }
+
+
121
+
+
123 inline bool HadHit() const
+
124 {
+
125 return mHadHit;
+
126 }
+
+
127
+ +
129
+
130private:
+
131 bool mHadHit = false;
+
132};
+
+
133
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
void QuickSort(Iterator inBegin, Iterator inEnd, Compare inCompare)
Implementation of the quick sort algorithm. The STL version implementation is not consistent across p...
Definition QuickSort.h:53
+
Simple implementation that collects all hits and optionally sorts them on distance.
Definition CollisionCollectorImpl.h:15
+
void Sort()
Order hits on closest first.
Definition CollisionCollectorImpl.h:35
+
bool HadHit() const
Check if any hits were collected.
Definition CollisionCollectorImpl.h:41
+
typename CollectorType::ResultType ResultType
Redeclare ResultType.
Definition CollisionCollectorImpl.h:18
+
Array< ResultType > mHits
Definition CollisionCollectorImpl.h:46
+
virtual void AddHit(const ResultType &inResult) override
Definition CollisionCollectorImpl.h:29
+
virtual void Reset() override
Definition CollisionCollectorImpl.h:21
+
Simple implementation that collects any hit.
Definition CollisionCollectorImpl.h:95
+
virtual void Reset() override
Definition CollisionCollectorImpl.h:101
+
virtual void AddHit(const ResultType &inResult) override
Definition CollisionCollectorImpl.h:109
+
typename CollectorType::ResultType ResultType
Redeclare ResultType.
Definition CollisionCollectorImpl.h:98
+
bool HadHit() const
Check if this collector has had a hit.
Definition CollisionCollectorImpl.h:123
+
ResultType mHit
Definition CollisionCollectorImpl.h:128
+
Definition Array.h:36
+
bool empty() const
Returns true if there are no elements in the array.
Definition Array.h:312
+
const_iterator begin() const
Iterators.
Definition Array.h:412
+
void clear()
Destruct all elements and set length to zero.
Definition Array.h:143
+
void push_back(const T &inValue)
Add element to the back of the array.
Definition Array.h:275
+
const_iterator end() const
Definition Array.h:417
+
Simple implementation that collects the closest / deepest hit.
Definition CollisionCollectorImpl.h:52
+
virtual void Reset() override
Definition CollisionCollectorImpl.h:58
+
virtual void AddHit(const ResultType &inResult) override
Definition CollisionCollectorImpl.h:66
+
ResultType mHit
Definition CollisionCollectorImpl.h:86
+
bool HadHit() const
Check if this collector has had a hit.
Definition CollisionCollectorImpl.h:81
+
typename CollectorType::ResultType ResultType
Redeclare ResultType.
Definition CollisionCollectorImpl.h:55
+
+
+ + + + diff --git a/_collision_dispatch_8cpp.html b/_collision_dispatch_8cpp.html new file mode 100644 index 000000000..35fe8a6ad --- /dev/null +++ b/_collision_dispatch_8cpp.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollisionDispatch.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionDispatch.cpp File Reference
+
+
+
+
+ + + + diff --git a/_collision_dispatch_8h.html b/_collision_dispatch_8h.html new file mode 100644 index 000000000..c1efc224d --- /dev/null +++ b/_collision_dispatch_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollisionDispatch.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionDispatch.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  CollisionDispatch
 Dispatch function, main function to handle collisions between shapes. More...
 
+
+
+ + + + diff --git a/_collision_dispatch_8h.js b/_collision_dispatch_8h.js new file mode 100644 index 000000000..32b56ee0f --- /dev/null +++ b/_collision_dispatch_8h.js @@ -0,0 +1,4 @@ +var _collision_dispatch_8h = +[ + [ "CollisionDispatch", "class_collision_dispatch.html", "class_collision_dispatch" ] +]; \ No newline at end of file diff --git a/_collision_dispatch_8h_source.html b/_collision_dispatch_8h_source.html new file mode 100644 index 000000000..bbe731adb --- /dev/null +++ b/_collision_dispatch_8h_source.html @@ -0,0 +1,223 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollisionDispatch.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionDispatch.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
+ + + + + +
12
+ +
14
+ +
16
+
+ +
19{
+
20public:
+
+
33 static inline void sCollideShapeVsShape(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 = { })
+
34 {
+
35 JPH_IF_TRACK_NARROWPHASE_STATS(TrackNarrowPhaseStat track(NarrowPhaseStat::sCollideShape[(int)inShape1->GetSubType()][(int)inShape2->GetSubType()]);)
+
36
+
37 // Only test shape if it passes the shape filter
+
38 if (inShapeFilter.ShouldCollide(inShape1, inSubShapeIDCreator1.GetID(), inShape2, inSubShapeIDCreator2.GetID()))
+
39 sCollideShape[(int)inShape1->GetSubType()][(int)inShape2->GetSubType()](inShape1, inShape2, inScale1, inScale2, inCenterOfMassTransform1, inCenterOfMassTransform2, inSubShapeIDCreator1, inSubShapeIDCreator2, inCollideShapeSettings, ioCollector, inShapeFilter);
+
40 }
+
+
41
+
+
53 static inline void sCastShapeVsShapeLocalSpace(const ShapeCast &inShapeCastLocal, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)
+
54 {
+
55 JPH_IF_TRACK_NARROWPHASE_STATS(TrackNarrowPhaseStat track(NarrowPhaseStat::sCastShape[(int)inShapeCastLocal.mShape->GetSubType()][(int)inShape->GetSubType()]);)
+
56
+
57 // Only test shape if it passes the shape filter
+
58 if (inShapeFilter.ShouldCollide(inShapeCastLocal.mShape, inSubShapeIDCreator1.GetID(), inShape, inSubShapeIDCreator2.GetID()))
+
59 sCastShape[(int)inShapeCastLocal.mShape->GetSubType()][(int)inShape->GetSubType()](inShapeCastLocal, inShapeCastSettings, inShape, inScale, inShapeFilter, inCenterOfMassTransform2, inSubShapeIDCreator1, inSubShapeIDCreator2, ioCollector);
+
60 }
+
+
61
+
+
65 static inline void sCastShapeVsShapeWorldSpace(const ShapeCast &inShapeCastWorld, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)
+
66 {
+
67 ShapeCast local_shape_cast = inShapeCastWorld.PostTransformed(inCenterOfMassTransform2.InversedRotationTranslation());
+
68 sCastShapeVsShapeLocalSpace(local_shape_cast, inShapeCastSettings, inShape, inScale, inShapeFilter, inCenterOfMassTransform2, inSubShapeIDCreator1, inSubShapeIDCreator2, ioCollector);
+
69 }
+
+
70
+
72 using CollideShape = void (*)(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);
+
73
+
75 using CastShape = void (*)(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
76
+
78 static void sInit();
+
79
+
81 static void sRegisterCollideShape(EShapeSubType inType1, EShapeSubType inType2, CollideShape inFunction) { sCollideShape[(int)inType1][(int)inType2] = inFunction; }
+
82
+
84 static void sRegisterCastShape(EShapeSubType inType1, EShapeSubType inType2, CastShape inFunction) { sCastShape[(int)inType1][(int)inType2] = inFunction; }
+
85
+
87 static void sReversedCollideShape(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);
+
88
+
90 static void sReversedCastShape(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
91
+
92private:
+
93 static CollideShape sCollideShape[NumSubShapeTypes][NumSubShapeTypes];
+
94 static CastShape sCastShape[NumSubShapeTypes][NumSubShapeTypes];
+
95};
+
+
96
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_IF_TRACK_NARROWPHASE_STATS(...)
Definition NarrowPhaseStats.h:17
+ +
EShapeSubType
This enumerates all shape types, each shape can return its type through Shape::GetSubType.
Definition Shape.h:76
+ + + +
Settings to be passed with a collision query.
Definition CollideShape.h:94
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
Dispatch function, main function to handle collisions between shapes.
Definition CollisionDispatch.h:19
+
static void sRegisterCollideShape(EShapeSubType inType1, EShapeSubType inType2, CollideShape inFunction)
Register a collide shape function in the collision table.
Definition CollisionDispatch.h:81
+
static void sRegisterCastShape(EShapeSubType inType1, EShapeSubType inType2, CastShape inFunction)
Register a cast shape function in the collision table.
Definition CollisionDispatch.h:84
+
static void sCollideShapeVsShape(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={ })
Definition CollisionDispatch.h:33
+
static void sCastShapeVsShapeWorldSpace(const ShapeCast &inShapeCastWorld, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)
Definition CollisionDispatch.h:65
+
static void sCastShapeVsShapeLocalSpace(const ShapeCast &inShapeCastLocal, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)
Definition CollisionDispatch.h:53
+
void(*)(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector) CastShape
Function that casts a shape vs another shape (see sCastShapeVsShapeLocalSpace)
Definition CollisionDispatch.h:75
+
void(*)(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) CollideShape
Function that collides 2 shapes (see sCollideShapeVsShape)
Definition CollisionDispatch.h:72
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Mat44 InversedRotationTranslation() const
Inverse 4x4 matrix when it only contains rotation and translation.
Definition Mat44.inl:729
+
Settings to be passed with a shape cast.
Definition ShapeCast.h:92
+
Filter class.
Definition ShapeFilter.h:17
+
virtual bool ShouldCollide(const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const
Definition ShapeFilter.h:26
+
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition Shape.h:184
+
EShapeSubType GetSubType() const
Definition Shape.h:199
+
Definition SubShapeID.h:108
+
const SubShapeID & GetID() const
Definition SubShapeID.h:122
+
Definition Vec3.h:17
+
Definition ShapeCast.h:69
+
const Shape * mShape
Shape that's being cast (cannot be mesh shape). Note that this structure does not assume ownership ov...
Definition ShapeCast.h:61
+
ShapeCastType PostTransformed(typename Mat::ArgType inTransform) const
Transform this shape cast using inTransform. Multiply transform on the left left hand side.
Definition ShapeCast.h:42
+
+
+ + + + diff --git a/_collision_group_8cpp.html b/_collision_group_8cpp.html new file mode 100644 index 000000000..7d3216721 --- /dev/null +++ b/_collision_group_8cpp.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollisionGroup.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionGroup.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (CollisionGroup)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (CollisionGroup )
+
+ +
+
+
+
+ + + + diff --git a/_collision_group_8cpp.js b/_collision_group_8cpp.js new file mode 100644 index 000000000..31a95a82e --- /dev/null +++ b/_collision_group_8cpp.js @@ -0,0 +1,4 @@ +var _collision_group_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_collision_group_8cpp.html#a3e7fe78695055e5ca077341741e349e0", null ] +]; \ No newline at end of file diff --git a/_collision_group_8h.html b/_collision_group_8h.html new file mode 100644 index 000000000..77eb121f3 --- /dev/null +++ b/_collision_group_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollisionGroup.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionGroup.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  CollisionGroup
 
+
+
+ + + + diff --git a/_collision_group_8h.js b/_collision_group_8h.js new file mode 100644 index 000000000..09ddf295c --- /dev/null +++ b/_collision_group_8h.js @@ -0,0 +1,4 @@ +var _collision_group_8h = +[ + [ "CollisionGroup", "class_collision_group.html", "class_collision_group" ] +]; \ No newline at end of file diff --git a/_collision_group_8h_source.html b/_collision_group_8h_source.html new file mode 100644 index 000000000..aae9e3e52 --- /dev/null +++ b/_collision_group_8h_source.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/CollisionGroup.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionGroup.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
+ + +
9
+ +
11
+
12class StreamIn;
+
13class StreamOut;
+
14
+
+ +
20{
+
21public:
+ +
23
+
24 using GroupID = uint32;
+ +
26
+
27 static const GroupID cInvalidGroup = ~GroupID(0);
+
28 static const SubGroupID cInvalidSubGroup = ~SubGroupID(0);
+
29
+
31 CollisionGroup() = default;
+
32
+
34 CollisionGroup(const GroupFilter *inFilter, GroupID inGroupID, SubGroupID inSubGroupID) : mGroupFilter(inFilter), mGroupID(inGroupID), mSubGroupID(inSubGroupID) { }
+
35
+
+
37 inline void SetGroupFilter(const GroupFilter *inFilter)
+
38 {
+
39 mGroupFilter = inFilter;
+
40 }
+
+
41
+
+
43 inline const GroupFilter *GetGroupFilter() const
+
44 {
+
45 return mGroupFilter;
+
46 }
+
+
47
+
+
49 inline void SetGroupID(GroupID inID)
+
50 {
+
51 mGroupID = inID;
+
52 }
+
+
53
+
+
54 inline GroupID GetGroupID() const
+
55 {
+
56 return mGroupID;
+
57 }
+
+
58
+
+
60 inline void SetSubGroupID(SubGroupID inID)
+
61 {
+
62 mSubGroupID = inID;
+
63 }
+
+
64
+
+ +
66 {
+
67 return mSubGroupID;
+
68 }
+
+
69
+
+
71 bool CanCollide(const CollisionGroup &inOther) const
+
72 {
+
73 // Call the CanCollide function of the first group filter that's not null
+
74 if (mGroupFilter != nullptr)
+
75 return mGroupFilter->CanCollide(*this, inOther);
+
76 else if (inOther.mGroupFilter != nullptr)
+
77 return inOther.mGroupFilter->CanCollide(inOther, *this);
+
78 else
+
79 return true;
+
80 }
+
+
81
+
83 void SaveBinaryState(StreamOut &inStream) const;
+
84
+
86 void RestoreBinaryState(StreamIn &inStream);
+
87
+
88private:
+
89 RefConst<GroupFilter> mGroupFilter;
+
90 GroupID mGroupID = cInvalidGroup;
+
91 SubGroupID mSubGroupID = cInvalidSubGroup;
+
92};
+
+
93
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+
Definition CollisionGroup.h:20
+
GroupID GetGroupID() const
Definition CollisionGroup.h:54
+
SubGroupID GetSubGroupID() const
Definition CollisionGroup.h:65
+
void SetGroupFilter(const GroupFilter *inFilter)
Set the collision group filter.
Definition CollisionGroup.h:37
+
void SetSubGroupID(SubGroupID inID)
Add this object to a sub group.
Definition CollisionGroup.h:60
+
bool CanCollide(const CollisionGroup &inOther) const
Check if this object collides with another object.
Definition CollisionGroup.h:71
+
uint32 GroupID
Definition CollisionGroup.h:24
+
void SetGroupID(GroupID inID)
Set the main group id for this object.
Definition CollisionGroup.h:49
+
const GroupFilter * GetGroupFilter() const
Get the collision group filter.
Definition CollisionGroup.h:43
+
uint32 SubGroupID
Definition CollisionGroup.h:25
+
Abstract class that checks if two CollisionGroups collide.
Definition GroupFilter.h:18
+
virtual bool CanCollide(const CollisionGroup &inGroup1, const CollisionGroup &inGroup2) const =0
Check if two groups collide.
+
Definition Reference.h:151
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
+
+ + + + diff --git a/_color_8cpp.html b/_color_8cpp.html new file mode 100644 index 000000000..2b4611ce8 --- /dev/null +++ b/_color_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Core/Color.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Color.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <Jolt/Core/Color.h>
+
+
+ + + + diff --git a/_color_8h.html b/_color_8h.html new file mode 100644 index 000000000..502be1eae --- /dev/null +++ b/_color_8h.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: Jolt/Core/Color.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Color.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  Color
 Class that holds an RGBA color with 8-bits per component. More...
 
+ + + + +

+Typedefs

using ColorArg = Color
 Type to use for passing arguments to a function.
 
+

Typedef Documentation

+ +

◆ ColorArg

+ +
+
+ + + + +
using ColorArg = Color
+
+ +

Type to use for passing arguments to a function.

+ +
+
+
+
+ + + + diff --git a/_color_8h.js b/_color_8h.js new file mode 100644 index 000000000..a87a6a76a --- /dev/null +++ b/_color_8h.js @@ -0,0 +1,5 @@ +var _color_8h = +[ + [ "Color", "class_color.html", "class_color" ], + [ "ColorArg", "_color_8h.html#a3daf1ee578b30da1860ff132c70474b5", null ] +]; \ No newline at end of file diff --git a/_color_8h_source.html b/_color_8h_source.html new file mode 100644 index 000000000..6176206a9 --- /dev/null +++ b/_color_8h_source.html @@ -0,0 +1,231 @@ + + + + + + + +Jolt Physics: Jolt/Core/Color.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Color.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
+
9class Color;
+
10
+ +
13
+
+ +
16{
+
17public:
+
19 Color() = default;
+
20 Color(const Color &inRHS) = default;
+
21 Color & operator = (const Color &inRHS) = default;
+
22 explicit constexpr Color(uint32 inColor) : mU32(inColor) { }
+
23 constexpr Color(uint8 inRed, uint8 inGreen, uint8 inBlue, uint8 inAlpha = 255) : r(inRed), g(inGreen), b(inBlue), a(inAlpha) { }
+
24 constexpr Color(ColorArg inRHS, uint8 inAlpha) : r(inRHS.r), g(inRHS.g), b(inRHS.b), a(inAlpha) { }
+
25
+
27 inline bool operator == (ColorArg inRHS) const { return mU32 == inRHS.mU32; }
+
28 inline bool operator != (ColorArg inRHS) const { return mU32 != inRHS.mU32; }
+
29
+
31 uint32 GetUInt32() const { return mU32; }
+
32
+
34 inline uint8 operator () (uint inIdx) const { JPH_ASSERT(inIdx < 4); return (&r)[inIdx]; }
+
35 inline uint8 & operator () (uint inIdx) { JPH_ASSERT(inIdx < 4); return (&r)[inIdx]; }
+
36
+
38 inline Color operator * (const Color &inRHS) const { return Color(uint8((uint32(r) * inRHS.r) >> 8), uint8((uint32(g) * inRHS.g) >> 8), uint8((uint32(b) * inRHS.b) >> 8), uint8((uint32(a) * inRHS.a) >> 8)); }
+
39
+
41 inline Color operator * (float inIntensity) const { return Color(uint8(r * inIntensity), uint8(g * inIntensity), uint8(b * inIntensity), a); }
+
42
+
44 inline Vec4 ToVec4() const { return Vec4(r, g, b, a) / 255.0f; }
+
45
+
47 inline uint8 GetIntensity() const { return uint8((uint32(r) * 54 + g * 183 + b * 19) >> 8); }
+
48
+
50 static Color sGetDistinctColor(int inIndex);
+
51
+
53 static const Color sBlack;
+
54 static const Color sDarkRed;
+
55 static const Color sRed;
+
56 static const Color sDarkGreen;
+
57 static const Color sGreen;
+
58 static const Color sDarkBlue;
+
59 static const Color sBlue;
+
60 static const Color sYellow;
+
61 static const Color sPurple;
+
62 static const Color sCyan;
+
63 static const Color sOrange;
+
64 static const Color sDarkOrange;
+
65 static const Color sGrey;
+
66 static const Color sLightGrey;
+
67 static const Color sWhite;
+
68
+
69 union
+
70 {
+ +
72 struct
+
73 {
+ + + + +
78 };
+
79 };
+
80};
+
+
81
+
82static_assert(is_trivial<Color>(), "Is supposed to be a trivial type!");
+
83
+ +
std::uint8_t uint8
Definition Core.h:453
+
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_EXPORT_GCC_BUG_WORKAROUND
Definition Core.h:240
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:451
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
static const Color sDarkRed
Definition Color.h:54
+
uint8 b
Blue channel.
Definition Color.h:76
+
static const Color sBlack
Predefined colors.
Definition Color.h:53
+
uint32 mU32
Combined value for red, green, blue and alpha.
Definition Color.h:71
+
static const Color sBlue
Definition Color.h:59
+
constexpr Color(ColorArg inRHS, uint8 inAlpha)
Definition Color.h:24
+
static const Color sPurple
Definition Color.h:61
+
static const Color sGreen
Definition Color.h:57
+
static const Color sWhite
Definition Color.h:67
+
Color()=default
Constructors.
+
uint8 a
Alpha channel.
Definition Color.h:77
+
constexpr Color(uint32 inColor)
Definition Color.h:22
+
static const Color sDarkOrange
Definition Color.h:64
+
uint8 g
Green channel.
Definition Color.h:75
+
static const Color sLightGrey
Definition Color.h:66
+
static const Color sOrange
Definition Color.h:63
+
static const Color sDarkBlue
Definition Color.h:58
+
Color(const Color &inRHS)=default
+
Vec4 ToVec4() const
Convert to Vec4 with range [0, 1].
Definition Color.h:44
+
uint8 r
Red channel.
Definition Color.h:74
+
static const Color sDarkGreen
Definition Color.h:56
+
static const Color sGrey
Definition Color.h:65
+
static const Color sCyan
Definition Color.h:62
+
uint32 GetUInt32() const
Convert to uint32.
Definition Color.h:31
+
static const Color sRed
Definition Color.h:55
+
static const Color sYellow
Definition Color.h:60
+
uint8 GetIntensity() const
Get grayscale intensity of color.
Definition Color.h:47
+
constexpr Color(uint8 inRed, uint8 inGreen, uint8 inBlue, uint8 inAlpha=255)
Definition Color.h:23
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_compound_shape_8cpp.html b/_compound_shape_8cpp.html new file mode 100644 index 000000000..4cf2cc9cd --- /dev/null +++ b/_compound_shape_8cpp.html @@ -0,0 +1,172 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/CompoundShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CompoundShape.cpp File Reference
+
+
+ + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (CompoundShapeSettings)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (CompoundShapeSettings::SubShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (CompoundShapeSettings )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (CompoundShapeSettings::SubShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_compound_shape_8cpp.js b/_compound_shape_8cpp.js new file mode 100644 index 000000000..34ac1c487 --- /dev/null +++ b/_compound_shape_8cpp.js @@ -0,0 +1,5 @@ +var _compound_shape_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT", "_compound_shape_8cpp.html#abc5239a29f3d49bd5cdc17e9d593f020", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_compound_shape_8cpp.html#a6da7739bc136c8ca3cb6c48c5c339d56", null ] +]; \ No newline at end of file diff --git a/_compound_shape_8h.html b/_compound_shape_8h.html new file mode 100644 index 000000000..63c635af4 --- /dev/null +++ b/_compound_shape_8h.html @@ -0,0 +1,135 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/CompoundShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CompoundShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + +

+Classes

class  CompoundShapeSettings
 Base class settings to construct a compound shape. More...
 
struct  CompoundShapeSettings::SubShapeSettings
 
class  CompoundShape
 Base class for a compound shape. More...
 
struct  CompoundShape::SubShape
 
+
+
+ + + + diff --git a/_compound_shape_8h.js b/_compound_shape_8h.js new file mode 100644 index 000000000..8c0ce72f4 --- /dev/null +++ b/_compound_shape_8h.js @@ -0,0 +1,7 @@ +var _compound_shape_8h = +[ + [ "CompoundShapeSettings", "class_compound_shape_settings.html", "class_compound_shape_settings" ], + [ "CompoundShapeSettings::SubShapeSettings", "struct_compound_shape_settings_1_1_sub_shape_settings.html", "struct_compound_shape_settings_1_1_sub_shape_settings" ], + [ "CompoundShape", "class_compound_shape.html", "class_compound_shape" ], + [ "CompoundShape::SubShape", "struct_compound_shape_1_1_sub_shape.html", "struct_compound_shape_1_1_sub_shape" ] +]; \ No newline at end of file diff --git a/_compound_shape_8h_source.html b/_compound_shape_8h_source.html new file mode 100644 index 000000000..39ab5fa35 --- /dev/null +++ b/_compound_shape_8h_source.html @@ -0,0 +1,563 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/CompoundShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CompoundShape.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
+ + + +
10
+ +
12
+ +
14class OrientedBox;
+
15
+
+ +
18{
+
19public:
+ +
21
+
22
+ +
24
+
26 void AddShape(Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape, uint32 inUserData = 0);
+
27
+
29 void AddShape(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape, uint32 inUserData = 0);
+
30
+
+ +
32 {
+ +
34
+ +
36 RefConst<Shape> mShapePtr;
+
37 Vec3 mPosition;
+
38 Quat mRotation;
+
39 uint32 mUserData = 0;
+
40 };
+
+
41
+ +
43
+
44 SubShapes mSubShapes;
+
45};
+
+
46
+
+ +
49{
+
50public:
+ +
52
+
54 explicit CompoundShape(EShapeSubType inSubType) : Shape(EShapeType::Compound, inSubType) { }
+
55 CompoundShape(EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult) : Shape(EShapeType::Compound, inSubType, inSettings, outResult) { }
+
56
+
57 // See Shape::GetCenterOfMass
+
58 virtual Vec3 GetCenterOfMass() const override { return mCenterOfMass; }
+
59
+
60 // See Shape::MustBeStatic
+
61 virtual bool MustBeStatic() const override;
+
62
+
63 // See Shape::GetLocalBounds
+
64 virtual AABox GetLocalBounds() const override { return mLocalBounds; }
+
65
+
66 // See Shape::GetSubShapeIDBitsRecursive
+
67 virtual uint GetSubShapeIDBitsRecursive() const override;
+
68
+
69 // See Shape::GetWorldSpaceBounds
+
70 virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+ +
72
+
73 // See Shape::GetInnerRadius
+
74 virtual float GetInnerRadius() const override { return mInnerRadius; }
+
75
+
76 // See Shape::GetMassProperties
+
77 virtual MassProperties GetMassProperties() const override;
+
78
+
79 // See Shape::GetMaterial
+
80 virtual const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const override;
+
81
+
82 // See Shape::GetLeafShape
+
83 virtual const Shape * GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const override;
+
84
+
85 // See Shape::GetSubShapeUserData
+
86 virtual uint64 GetSubShapeUserData(const SubShapeID &inSubShapeID) const override;
+
87
+
88 // See Shape::GetSubShapeTransformedShape
+
89 virtual TransformedShape GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const override;
+
90
+
91 // See Shape::GetSurfaceNormal
+
92 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
93
+
94 // See Shape::GetSupportingFace
+
95 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
96
+
97 // See Shape::GetSubmergedVolume
+
98 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override;
+
99
+
100#ifdef JPH_DEBUG_RENDERER
+
101 // See Shape::Draw
+
102 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
103
+
104 // See Shape::DrawGetSupportFunction
+
105 virtual void DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override;
+
106
+
107 // See Shape::DrawGetSupportingFace
+
108 virtual void DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+
109#endif // JPH_DEBUG_RENDERER
+
110
+
111 // See: Shape::CollideSoftBodyVertices
+
112 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
113
+
114 // See Shape::TransformShape
+
115 virtual void TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const override;
+
116
+
117 // See Shape::GetTrianglesStart
+
118 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override { JPH_ASSERT(false, "Cannot call on non-leaf shapes, use CollectTransformedShapes to collect the leaves first!"); }
+
119
+
120 // See Shape::GetTrianglesNext
+
121 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override { JPH_ASSERT(false, "Cannot call on non-leaf shapes, use CollectTransformedShapes to collect the leaves first!"); return 0; }
+
122
+
128 virtual int GetIntersectingSubShapes(const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const = 0;
+
129
+
135 virtual int GetIntersectingSubShapes(const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const = 0;
+
136
+
+
137 struct SubShape
+
138 {
+
+ +
144 {
+
145 if (inSettings.mShapePtr != nullptr)
+
146 {
+
147 // Use provided shape
+
148 mShape = inSettings.mShapePtr;
+
149 }
+
150 else
+
151 {
+
152 // Create child shape
+
153 ShapeResult child_result = inSettings.mShape->Create();
+
154 if (!child_result.IsValid())
+
155 {
+
156 outResult = child_result;
+
157 return false;
+
158 }
+
159 mShape = child_result.Get();
+
160 }
+
161
+
162 // Copy user data
+
163 mUserData = inSettings.mUserData;
+
164
+
165 SetTransform(inSettings.mPosition, inSettings.mRotation, Vec3::sZero() /* Center of mass not yet calculated */);
+
166 return true;
+
167 }
+
+
168
+
+
173 JPH_INLINE void SetTransform(Vec3Arg inPosition, QuatArg inRotation, Vec3Arg inCenterOfMass)
+
174 {
+
175 SetPositionCOM(inPosition - inCenterOfMass + inRotation * mShape->GetCenterOfMass());
+
176
+
177 mIsRotationIdentity = inRotation.IsClose(Quat::sIdentity()) || inRotation.IsClose(-Quat::sIdentity());
+
178 SetRotation(mIsRotationIdentity? Quat::sIdentity() : inRotation);
+
179 }
+
+
180
+
+
184 JPH_INLINE Mat44 GetLocalTransformNoScale(Vec3Arg inScale) const
+
185 {
+
186 JPH_ASSERT(IsValidScale(inScale));
+
187 return Mat44::sRotationTranslation(GetRotation(), inScale * GetPositionCOM());
+
188 }
+
+
189
+
+
191 inline bool IsValidScale(Vec3Arg inScale) const
+
192 {
+
193 // We can always handle uniform scale or identity rotations
+
194 if (mIsRotationIdentity || ScaleHelpers::IsUniformScale(inScale))
+
195 return true;
+
196
+
197 return ScaleHelpers::CanScaleBeRotated(GetRotation(), inScale);
+
198 }
+
+
199
+
+
201 inline Vec3 TransformScale(Vec3Arg inScale) const
+
202 {
+
203 // We don't need to transform uniform scale or if the rotation is identity
+
204 if (mIsRotationIdentity || ScaleHelpers::IsUniformScale(inScale))
+
205 return inScale;
+
206
+
207 return ScaleHelpers::RotateScale(GetRotation(), inScale);
+
208 }
+
+
209
+
+
211 JPH_INLINE void SetPositionCOM(Vec3Arg inPositionCOM)
+
212 {
+
213 inPositionCOM.StoreFloat3(&mPositionCOM);
+
214 }
+
+
215
+
+
217 JPH_INLINE Vec3 GetPositionCOM() const
+
218 {
+
219 return Vec3::sLoadFloat3Unsafe(mPositionCOM);
+
220 }
+
+
221
+
+
223 JPH_INLINE void SetRotation(QuatArg inRotation)
+
224 {
+
225 inRotation.StoreFloat3(&mRotation);
+
226 }
+
+
227
+
+
229 JPH_INLINE Quat GetRotation() const
+
230 {
+
231 return mIsRotationIdentity? Quat::sIdentity() : Quat::sLoadFloat3Unsafe(mRotation);
+
232 }
+
+
233
+ + + + + +
239 // 3 padding bytes left
+
240 };
+
+
241
+
242 static_assert(sizeof(SubShape) == (JPH_CPU_ADDRESS_BITS == 64? 40 : 36), "Compiler added unexpected padding");
+
243
+ +
245
+
247 const SubShapes & GetSubShapes() const { return mSubShapes; }
+
248
+
250 uint GetNumSubShapes() const { return uint(mSubShapes.size()); }
+
251
+
253 const SubShape & GetSubShape(uint inIdx) const { return mSubShapes[inIdx]; }
+
254
+
256 uint32 GetCompoundUserData(uint inIdx) const { return mSubShapes[inIdx].mUserData; }
+
257
+
259 void SetCompoundUserData(uint inIdx, uint32 inUserData) { mSubShapes[inIdx].mUserData = inUserData; }
+
260
+
+
264 inline bool IsSubShapeIDValid(SubShapeID inSubShapeID) const
+
265 {
+
266 SubShapeID remainder;
+
267 return inSubShapeID.PopID(GetSubShapeIDBits(), remainder) < mSubShapes.size();
+
268 }
+
+
269
+
+
274 inline uint32 GetSubShapeIndexFromID(SubShapeID inSubShapeID, SubShapeID &outRemainder) const
+
275 {
+
276 uint32 idx = inSubShapeID.PopID(GetSubShapeIDBits(), outRemainder);
+
277 JPH_ASSERT(idx < mSubShapes.size(), "Invalid SubShapeID");
+
278 return idx;
+
279 }
+
+
280
+
+
285 inline SubShapeIDCreator GetSubShapeIDFromIndex(int inIdx, const SubShapeIDCreator &inParentSubShapeID) const
+
286 {
+
287 return inParentSubShapeID.PushID(inIdx, GetSubShapeIDBits());
+
288 }
+
+
289
+
290 // See Shape
+
291 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
292 virtual void SaveSubShapeState(ShapeList &outSubShapes) const override;
+
293 virtual void RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes) override;
+
294
+
295 // See Shape::GetStatsRecursive
+
296 virtual Stats GetStatsRecursive(VisitedShapes &ioVisitedShapes) const override;
+
297
+
298 // See Shape::GetVolume
+
299 virtual float GetVolume() const override;
+
300
+
301 // See Shape::IsValidScale
+
302 virtual bool IsValidScale(Vec3Arg inScale) const override;
+
303
+
304 // See Shape::MakeScaleValid
+
305 virtual Vec3 MakeScaleValid(Vec3Arg inScale) const override;
+
306
+
307 // Register shape functions with the registry
+
308 static void sRegister();
+
309
+
310protected:
+
311 // See: Shape::RestoreBinaryState
+
312 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
313
+
314 // Visitors for collision detection
+
315 struct CastRayVisitor;
+
316 struct CastRayVisitorCollector;
+
317 struct CollidePointVisitor;
+
318 struct CastShapeVisitor;
+
319 struct CollectTransformedShapesVisitor;
+
320 struct CollideCompoundVsShapeVisitor;
+
321 struct CollideShapeVsCompoundVisitor;
+
322 template <class BoxType> struct GetIntersectingSubShapesVisitor;
+
323
+
+
325 inline uint GetSubShapeIDBits() const
+
326 {
+
327 // Ensure we have enough bits to encode our shape [0, n - 1]
+
328 uint32 n = uint32(mSubShapes.size()) - 1;
+
329 return 32 - CountLeadingZeros(n);
+
330 }
+
+
331
+
+ +
334 {
+
335 mInnerRadius = FLT_MAX;
+
336 for (const SubShape &s : mSubShapes)
+
337 mInnerRadius = min(mInnerRadius, s.mShape->GetInnerRadius());
+
338 }
+
+
339
+
340 Vec3 mCenterOfMass { Vec3::sZero() };
+ + +
343 float mInnerRadius = FLT_MAX;
+
344
+
345private:
+
346 // Helper functions called by CollisionDispatch
+
347 static void sCastCompoundVsShape(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
348};
+
+
349
+ +
#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
+
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
+
#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_ABSTRACT(linkage, class_name)
Definition SerializableObject.h:120
+
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ +
EShapeSubType
This enumerates all shape types, each shape can return its type through Shape::GetSubType.
Definition Shape.h:76
+
EShapeType
Shapes are categorized in groups, each shape can return which group it belongs to through its Shape::...
Definition Shape.h:57
+
@ Compound
Used by CompoundShape.
+ +
Axis aligned box.
Definition AABox.h:16
+ +
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
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 a compound shape.
Definition CompoundShape.h:49
+
virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
Definition CompoundShape.h:118
+
AABox mLocalBounds
Definition CompoundShape.h:341
+
const SubShapes & GetSubShapes() const
Access to the sub shapes of this compound.
Definition CompoundShape.h:247
+
virtual int GetIntersectingSubShapes(const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const =0
+
uint GetSubShapeIDBits() const
Determine amount of bits needed to encode sub shape id.
Definition CompoundShape.h:325
+
bool IsSubShapeIDValid(SubShapeID inSubShapeID) const
Definition CompoundShape.h:264
+
uint32 GetCompoundUserData(uint inIdx) const
Get the user data associated with a shape in this compound.
Definition CompoundShape.h:256
+
SubShapeIDCreator GetSubShapeIDFromIndex(int inIdx, const SubShapeIDCreator &inParentSubShapeID) const
Convert a sub shape index to a sub shape ID.
Definition CompoundShape.h:285
+
JPH_OVERRIDE_NEW_DELETE CompoundShape(EShapeSubType inSubType)
Constructor.
Definition CompoundShape.h:54
+
uint32 GetSubShapeIndexFromID(SubShapeID inSubShapeID, SubShapeID &outRemainder) const
Definition CompoundShape.h:274
+
void SetCompoundUserData(uint inIdx, uint32 inUserData)
Set the user data associated with a shape in this compound.
Definition CompoundShape.h:259
+
virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
Definition CompoundShape.h:121
+
void CalculateInnerRadius()
Determine the inner radius of this shape.
Definition CompoundShape.h:333
+
uint GetNumSubShapes() const
Get the total number of sub shapes.
Definition CompoundShape.h:250
+
virtual int GetIntersectingSubShapes(const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const =0
+
CompoundShape(EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
Definition CompoundShape.h:55
+
SubShapes mSubShapes
Definition CompoundShape.h:342
+
virtual float GetInnerRadius() const override
Definition CompoundShape.h:74
+
virtual AABox GetLocalBounds() const override
Get local bounding box including convex radius, this box is centered around the center of mass rather...
Definition CompoundShape.h:64
+
virtual Vec3 GetCenterOfMass() const override
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition CompoundShape.h:58
+
const SubShape & GetSubShape(uint inIdx) const
Access to a particular sub shape.
Definition CompoundShape.h:253
+
Base class settings to construct a compound shape.
Definition CompoundShape.h:18
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
static JPH_INLINE Mat44 sRotationTranslation(QuatArg inR, Vec3Arg inT)
Get matrix that rotates and translates.
Definition Mat44.inl:149
+
Oriented box.
Definition OrientedBox.h:18
+
Definition PhysicsMaterial.h:23
+
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
Definition Quat.h:33
+
static JPH_INLINE Quat sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (X, Y and Z component and then calculates W) reads 32 bits extra which it d...
Definition Quat.inl:321
+
static JPH_INLINE Quat sIdentity()
Definition Quat.h:103
+
bool IsClose(QuatArg inRHS, float inMaxDistSq=1.0e-12f) const
If this quaternion is close to inRHS. Note that q and -q represent the same rotation,...
Definition Quat.h:56
+
JPH_INLINE void StoreFloat3(Float3 *outV) const
Store 3 as floats to memory (X, Y and Z component)
Definition Quat.inl:315
+
Definition Reference.h:151
+ +
bool IsValid() const
Checks if the result is valid.
Definition Result.h:134
+
const Type & Get() const
Get the result value.
Definition Result.h:137
+
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:184
+
virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
Definition Shape.h:220
+
Definition Shape.h:145
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
Definition SoftBodyVertex.h:16
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition SubShapeID.h:108
+
SubShapeIDCreator PushID(uint inValue, uint inBits) const
Add a new id to the chain of id's and return it.
Definition SubShapeID.h:111
+
A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...
Definition SubShapeID.h:23
+
Type PopID(uint inBits, SubShapeID &outRemainder) const
Get the next id in the chain of ids (pops parents before children)
Definition SubShapeID.h:42
+
Definition TransformedShape.h:26
+
Definition Vec3.h:17
+
JPH_INLINE void StoreFloat3(Float3 *outV) const
Store 3 floats to memory.
Definition Vec3.inl:765
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
bool CanScaleBeRotated(QuatArg inRotation, Vec3Arg inScale)
Definition ScaleHelpers.h:51
+
Vec3 RotateScale(QuatArg inRotation, Vec3Arg inScale)
Definition ScaleHelpers.h:75
+
bool IsUniformScale(Vec3Arg inScale)
Test if a scale is uniform.
Definition ScaleHelpers.h:24
+
Definition CompoundShape.h:138
+
JPH_INLINE Quat GetRotation() const
Uncompress the rotation.
Definition CompoundShape.h:229
+
Float3 mPositionCOM
Note: Position of center of mass of sub shape!
Definition CompoundShape.h:235
+
JPH_INLINE Mat44 GetLocalTransformNoScale(Vec3Arg inScale) const
Definition CompoundShape.h:184
+
bool mIsRotationIdentity
If mRotation is close to identity (put here because it falls in padding bytes)
Definition CompoundShape.h:238
+
bool FromSettings(const CompoundShapeSettings::SubShapeSettings &inSettings, ShapeResult &outResult)
Definition CompoundShape.h:143
+
bool IsValidScale(Vec3Arg inScale) const
Test if inScale is valid for this sub shape.
Definition CompoundShape.h:191
+
JPH_INLINE void SetTransform(Vec3Arg inPosition, QuatArg inRotation, Vec3Arg inCenterOfMass)
Definition CompoundShape.h:173
+
Float3 mRotation
Note: X, Y, Z of rotation quaternion - note we read 4 bytes beyond this so make sure there's somethin...
Definition CompoundShape.h:236
+
uint32 mUserData
User data value (put here because it falls in padding bytes)
Definition CompoundShape.h:237
+
Vec3 TransformScale(Vec3Arg inScale) const
Transform the scale to the local space of the child shape.
Definition CompoundShape.h:201
+
JPH_INLINE Vec3 GetPositionCOM() const
Uncompress the center of mass position.
Definition CompoundShape.h:217
+
JPH_INLINE void SetPositionCOM(Vec3Arg inPositionCOM)
Compress the center of mass position.
Definition CompoundShape.h:211
+
JPH_INLINE void SetRotation(QuatArg inRotation)
Compress the rotation.
Definition CompoundShape.h:223
+
RefConst< Shape > mShape
Definition CompoundShape.h:234
+
Definition CompoundShape.h:32
+
uint32 mUserData
User data value (can be used by the application for any purpose)
Definition CompoundShape.h:39
+
Quat mRotation
Rotation of the sub shape.
Definition CompoundShape.h:38
+
RefConst< ShapeSettings > mShape
Sub shape (either this or mShapePtr needs to be filled up)
Definition CompoundShape.h:35
+
Vec3 mPosition
Position of the sub shape.
Definition CompoundShape.h:37
+
RefConst< Shape > mShapePtr
Sub shape (either this or mShape needs to be filled up)
Definition CompoundShape.h:36
+
An opaque buffer that holds shape specific information during GetTrianglesStart/Next.
Definition Shape.h:348
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_compound_shape_visitors_8h.html b/_compound_shape_visitors_8h.html new file mode 100644 index 000000000..d3f1cf5d8 --- /dev/null +++ b/_compound_shape_visitors_8h.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/CompoundShapeVisitors.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CompoundShapeVisitors.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Classes

struct  CompoundShape::CastRayVisitor
 
struct  CompoundShape::CastRayVisitorCollector
 
struct  CompoundShape::CollidePointVisitor
 
struct  CompoundShape::CastShapeVisitor
 
struct  CompoundShape::CollectTransformedShapesVisitor
 
struct  CompoundShape::CollideCompoundVsShapeVisitor
 
struct  CompoundShape::CollideShapeVsCompoundVisitor
 
struct  CompoundShape::GetIntersectingSubShapesVisitor< BoxType >
 
+
+
+ + + + diff --git a/_compound_shape_visitors_8h.js b/_compound_shape_visitors_8h.js new file mode 100644 index 000000000..7a75c52e5 --- /dev/null +++ b/_compound_shape_visitors_8h.js @@ -0,0 +1,11 @@ +var _compound_shape_visitors_8h = +[ + [ "CompoundShape::CastRayVisitor", "struct_compound_shape_1_1_cast_ray_visitor.html", "struct_compound_shape_1_1_cast_ray_visitor" ], + [ "CompoundShape::CastRayVisitorCollector", "struct_compound_shape_1_1_cast_ray_visitor_collector.html", "struct_compound_shape_1_1_cast_ray_visitor_collector" ], + [ "CompoundShape::CollidePointVisitor", "struct_compound_shape_1_1_collide_point_visitor.html", "struct_compound_shape_1_1_collide_point_visitor" ], + [ "CompoundShape::CastShapeVisitor", "struct_compound_shape_1_1_cast_shape_visitor.html", "struct_compound_shape_1_1_cast_shape_visitor" ], + [ "CompoundShape::CollectTransformedShapesVisitor", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html", "struct_compound_shape_1_1_collect_transformed_shapes_visitor" ], + [ "CompoundShape::CollideCompoundVsShapeVisitor", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor" ], + [ "CompoundShape::CollideShapeVsCompoundVisitor", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor" ], + [ "CompoundShape::GetIntersectingSubShapesVisitor< BoxType >", "struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html", "struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor" ] +]; \ No newline at end of file diff --git a/_compound_shape_visitors_8h_source.html b/_compound_shape_visitors_8h_source.html new file mode 100644 index 000000000..e831700a6 --- /dev/null +++ b/_compound_shape_visitors_8h_source.html @@ -0,0 +1,810 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/CompoundShapeVisitors.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CompoundShapeVisitors.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
+ + + + + + + + + + +
17
+ +
19
+
+ +
21{
+
+
22 JPH_INLINE CastRayVisitor(const RayCast &inRay, const CompoundShape *inShape, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) :
+
23 mRay(inRay),
+
24 mHit(ioHit),
+
25 mSubShapeIDCreator(inSubShapeIDCreator),
+ +
27 {
+
28 // Determine ray properties of cast
+ +
30 }
+
+
31
+
+
33 JPH_INLINE bool ShouldAbort() const
+
34 {
+
35 return mHit.mFraction <= 0.0f;
+
36 }
+
+
37
+
+
39 JPH_INLINE Vec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
+
40 {
+
41 return RayAABox4(mRay.mOrigin, mInvDirection, inBoundsMinX, inBoundsMinY, inBoundsMinZ, inBoundsMaxX, inBoundsMaxY, inBoundsMaxZ);
+
42 }
+
+
43
+
+
45 JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
+
46 {
+
47 // Create ID for sub shape
+
48 SubShapeIDCreator shape2_sub_shape_id = mSubShapeIDCreator.PushID(inSubShapeIndex, mSubShapeBits);
+
49
+
50 // Transform the ray
+
51 Mat44 transform = Mat44::sInverseRotationTranslation(inSubShape.GetRotation(), inSubShape.GetPositionCOM());
+
52 RayCast ray = mRay.Transformed(transform);
+
53 if (inSubShape.mShape->CastRay(ray, shape2_sub_shape_id, mHit))
+
54 mReturnValue = true;
+
55 }
+
+
56
+ +
58 const RayCast & mRay;
+ + + +
62 bool mReturnValue = false;
+
63};
+
+
64
+
+ +
66{
+
+
67 JPH_INLINE CastRayVisitorCollector(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const CompoundShape *inShape, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter) :
+
68 mRay(inRay),
+
69 mCollector(ioCollector),
+
70 mSubShapeIDCreator(inSubShapeIDCreator),
+ +
72 mRayCastSettings(inRayCastSettings),
+
73 mShapeFilter(inShapeFilter)
+
74 {
+
75 // Determine ray properties of cast
+ +
77 }
+
+
78
+
+
80 JPH_INLINE bool ShouldAbort() const
+
81 {
+ +
83 }
+
+
84
+
+
86 JPH_INLINE Vec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
+
87 {
+
88 return RayAABox4(mRay.mOrigin, mInvDirection, inBoundsMinX, inBoundsMinY, inBoundsMinZ, inBoundsMaxX, inBoundsMaxY, inBoundsMaxZ);
+
89 }
+
+
90
+
+
92 JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
+
93 {
+
94 // Create ID for sub shape
+
95 SubShapeIDCreator shape2_sub_shape_id = mSubShapeIDCreator.PushID(inSubShapeIndex, mSubShapeBits);
+
96
+
97 // Transform the ray
+
98 Mat44 transform = Mat44::sInverseRotationTranslation(inSubShape.GetRotation(), inSubShape.GetPositionCOM());
+
99 RayCast ray = mRay.Transformed(transform);
+
100 inSubShape.mShape->CastRay(ray, mRayCastSettings, shape2_sub_shape_id, mCollector, mShapeFilter);
+
101 }
+
+
102
+ +
104 const RayCast & mRay;
+ + + + + +
110};
+
+
111
+
+ +
113{
+
+
114 JPH_INLINE CollidePointVisitor(Vec3Arg inPoint, const CompoundShape *inShape, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter) :
+
115 mPoint(inPoint),
+
116 mSubShapeIDCreator(inSubShapeIDCreator),
+
117 mCollector(ioCollector),
+ +
119 mShapeFilter(inShapeFilter)
+
120 {
+
121 }
+
+
122
+
+
124 JPH_INLINE bool ShouldAbort() const
+
125 {
+
126 return mCollector.ShouldEarlyOut();
+
127 }
+
+
128
+
+
130 JPH_INLINE UVec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
+
131 {
+
132 return AABox4VsPoint(mPoint, inBoundsMinX, inBoundsMinY, inBoundsMinZ, inBoundsMaxX, inBoundsMaxY, inBoundsMaxZ);
+
133 }
+
+
134
+
+
136 JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
+
137 {
+
138 // Create ID for sub shape
+
139 SubShapeIDCreator shape2_sub_shape_id = mSubShapeIDCreator.PushID(inSubShapeIndex, mSubShapeBits);
+
140
+
141 // Transform the point
+
142 Mat44 transform = Mat44::sInverseRotationTranslation(inSubShape.GetRotation(), inSubShape.GetPositionCOM());
+
143 inSubShape.mShape->CollidePoint(transform * mPoint, shape2_sub_shape_id, mCollector, mShapeFilter);
+
144 }
+
+
145
+ + + + + +
151};
+
+
152
+
+ +
154{
+
+
155 JPH_INLINE CastShapeVisitor(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const CompoundShape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector) :
+
156 mBoxCenter(inShapeCast.mShapeWorldBounds.GetCenter()),
+
157 mBoxExtent(inShapeCast.mShapeWorldBounds.GetExtent()),
+
158 mScale(inScale),
+
159 mShapeCast(inShapeCast),
+
160 mShapeCastSettings(inShapeCastSettings),
+
161 mShapeFilter(inShapeFilter),
+
162 mCollector(ioCollector),
+
163 mCenterOfMassTransform2(inCenterOfMassTransform2),
+
164 mSubShapeIDCreator1(inSubShapeIDCreator1),
+
165 mSubShapeIDCreator2(inSubShapeIDCreator2),
+ +
167 {
+
168 // Determine ray properties of cast
+
169 mInvDirection.Set(inShapeCast.mDirection);
+
170 }
+
+
171
+
+
173 JPH_INLINE bool ShouldAbort() const
+
174 {
+
175 return mCollector.ShouldEarlyOut();
+
176 }
+
+
177
+
+
179 JPH_INLINE Vec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
+
180 {
+
181 // Scale the bounding boxes
+
182 Vec4 bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z;
+
183 AABox4Scale(mScale, inBoundsMinX, inBoundsMinY, inBoundsMinZ, inBoundsMaxX, inBoundsMaxY, inBoundsMaxZ, bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z);
+
184
+
185 // Enlarge them by the casted shape's box extents
+
186 AABox4EnlargeWithExtent(mBoxExtent, bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z);
+
187
+
188 // Test ray against the bounding boxes
+
189 return RayAABox4(mBoxCenter, mInvDirection, bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z);
+
190 }
+
+
191
+
+
193 JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
+
194 {
+
195 JPH_ASSERT(inSubShape.IsValidScale(mScale));
+
196
+
197 // Create ID for sub shape
+
198 SubShapeIDCreator shape2_sub_shape_id = mSubShapeIDCreator2.PushID(inSubShapeIndex, mSubShapeBits);
+
199
+
200 // Calculate the local transform for this sub shape
+
201 Mat44 local_transform = Mat44::sRotationTranslation(inSubShape.GetRotation(), mScale * inSubShape.GetPositionCOM());
+
202
+
203 // Transform the center of mass of 2
+
204 Mat44 center_of_mass_transform2 = mCenterOfMassTransform2 * local_transform;
+
205
+
206 // Transform the shape cast
+
207 ShapeCast shape_cast = mShapeCast.PostTransformed(local_transform.InversedRotationTranslation());
+
208
+
209 CollisionDispatch::sCastShapeVsShapeLocalSpace(shape_cast, mShapeCastSettings, inSubShape.mShape, inSubShape.TransformScale(mScale), mShapeFilter, center_of_mass_transform2, mSubShapeIDCreator1, shape2_sub_shape_id, mCollector);
+
210 }
+
+
211
+ + + + + + + + + + + + +
224};
+
+
225
+
+ +
227{
+
+
228 JPH_INLINE CollectTransformedShapesVisitor(const AABox &inBox, const CompoundShape *inShape, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) :
+
229 mBox(inBox),
+
230 mLocalBox(Mat44::sInverseRotationTranslation(inRotation, inPositionCOM), inBox),
+
231 mPositionCOM(inPositionCOM),
+
232 mRotation(inRotation),
+
233 mScale(inScale),
+
234 mSubShapeIDCreator(inSubShapeIDCreator),
+
235 mCollector(ioCollector),
+ +
237 mShapeFilter(inShapeFilter)
+
238 {
+
239 }
+
+
240
+
+
242 JPH_INLINE bool ShouldAbort() const
+
243 {
+
244 return mCollector.ShouldEarlyOut();
+
245 }
+
+
246
+
+
248 JPH_INLINE UVec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
+
249 {
+
250 // Scale the bounding boxes of this node
+
251 Vec4 bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z;
+
252 AABox4Scale(mScale, inBoundsMinX, inBoundsMinY, inBoundsMinZ, inBoundsMaxX, inBoundsMaxY, inBoundsMaxZ, bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z);
+
253
+
254 // Test which nodes collide
+
255 return AABox4VsBox(mLocalBox, bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z);
+
256 }
+
+
257
+
+
259 JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
+
260 {
+
261 JPH_ASSERT(inSubShape.IsValidScale(mScale));
+
262
+
263 // Create ID for sub shape
+
264 SubShapeIDCreator sub_shape_id = mSubShapeIDCreator.PushID(inSubShapeIndex, mSubShapeBits);
+
265
+
266 // Calculate world transform for sub shape
+
267 Vec3 position = mPositionCOM + mRotation * (mScale * inSubShape.GetPositionCOM());
+
268 Quat rotation = mRotation * inSubShape.GetRotation();
+
269
+
270 // Recurse to sub shape
+
271 inSubShape.mShape->CollectTransformedShapes(mBox, position, rotation, inSubShape.TransformScale(mScale), sub_shape_id, mCollector, mShapeFilter);
+
272 }
+
+
273
+ + + + + + + + + +
283};
+
+
284
+
+ +
286{
+
+
287 JPH_INLINE CollideCompoundVsShapeVisitor(const CompoundShape *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) :
+
288 mCollideShapeSettings(inCollideShapeSettings),
+
289 mCollector(ioCollector),
+
290 mShape2(inShape2),
+
291 mScale1(inScale1),
+
292 mScale2(inScale2),
+
293 mTransform1(inCenterOfMassTransform1),
+
294 mTransform2(inCenterOfMassTransform2),
+
295 mSubShapeIDCreator1(inSubShapeIDCreator1),
+
296 mSubShapeIDCreator2(inSubShapeIDCreator2),
+
297 mSubShapeBits(inShape1->GetSubShapeIDBits()),
+
298 mShapeFilter(inShapeFilter)
+
299 {
+
300 // Get transform from shape 2 to shape 1
+
301 Mat44 transform2_to_1 = inCenterOfMassTransform1.InversedRotationTranslation() * inCenterOfMassTransform2;
+
302
+
303 // Convert bounding box of 2 into space of 1
+
304 mBoundsOf2InSpaceOf1 = inShape2->GetLocalBounds().Scaled(inScale2).Transformed(transform2_to_1);
+
305 }
+
+
306
+
+
308 JPH_INLINE bool ShouldAbort() const
+
309 {
+
310 return mCollector.ShouldEarlyOut();
+
311 }
+
+
312
+
+
314 JPH_INLINE UVec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
+
315 {
+
316 // Scale the bounding boxes
+
317 Vec4 bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z;
+
318 AABox4Scale(mScale1, inBoundsMinX, inBoundsMinY, inBoundsMinZ, inBoundsMaxX, inBoundsMaxY, inBoundsMaxZ, bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z);
+
319
+
320 // Test which boxes collide
+
321 return AABox4VsBox(mBoundsOf2InSpaceOf1, bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z);
+
322 }
+
+
323
+
+
325 JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
+
326 {
+
327 // Get world transform of 1
+
328 Mat44 transform1 = mTransform1 * inSubShape.GetLocalTransformNoScale(mScale1);
+
329
+
330 // Create ID for sub shape
+
331 SubShapeIDCreator shape1_sub_shape_id = mSubShapeIDCreator1.PushID(inSubShapeIndex, mSubShapeBits);
+
332
+ +
334 }
+
+
335
+ + +
338 const Shape * mShape2;
+ + + + + + + + + +
348};
+
+
349
+
+ +
351{
+
+
352 JPH_INLINE CollideShapeVsCompoundVisitor(const Shape *inShape1, const CompoundShape *inShape2, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) :
+
353 mCollideShapeSettings(inCollideShapeSettings),
+
354 mCollector(ioCollector),
+
355 mShape1(inShape1),
+
356 mScale1(inScale1),
+
357 mScale2(inScale2),
+
358 mTransform1(inCenterOfMassTransform1),
+
359 mTransform2(inCenterOfMassTransform2),
+
360 mSubShapeIDCreator1(inSubShapeIDCreator1),
+
361 mSubShapeIDCreator2(inSubShapeIDCreator2),
+
362 mSubShapeBits(inShape2->GetSubShapeIDBits()),
+
363 mShapeFilter(inShapeFilter)
+
364 {
+
365 // Get transform from shape 1 to shape 2
+
366 Mat44 transform1_to_2 = inCenterOfMassTransform2.InversedRotationTranslation() * inCenterOfMassTransform1;
+
367
+
368 // Convert bounding box of 1 into space of 2
+
369 mBoundsOf1InSpaceOf2 = inShape1->GetLocalBounds().Scaled(inScale1).Transformed(transform1_to_2);
+ +
371 }
+
+
372
+
+
374 JPH_INLINE bool ShouldAbort() const
+
375 {
+
376 return mCollector.ShouldEarlyOut();
+
377 }
+
+
378
+
+
380 JPH_INLINE UVec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
+
381 {
+
382 // Scale the bounding boxes
+
383 Vec4 bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z;
+
384 AABox4Scale(mScale2, inBoundsMinX, inBoundsMinY, inBoundsMinZ, inBoundsMaxX, inBoundsMaxY, inBoundsMaxZ, bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z);
+
385
+
386 // Test which bounding boxes collide
+
387 return AABox4VsBox(mBoundsOf1InSpaceOf2, bounds_min_x, bounds_min_y, bounds_min_z, bounds_max_x, bounds_max_y, bounds_max_z);
+
388 }
+
+
389
+
+
391 JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
+
392 {
+
393 // Create ID for sub shape
+
394 SubShapeIDCreator shape2_sub_shape_id = mSubShapeIDCreator2.PushID(inSubShapeIndex, mSubShapeBits);
+
395
+
396 // Get world transform of 2
+
397 Mat44 transform2 = mTransform2 * inSubShape.GetLocalTransformNoScale(mScale2);
+
398
+ +
400 }
+
+
401
+ + +
404 const Shape * mShape1;
+ + + + + + + + + +
414};
+
+
415
+
416template <class BoxType>
+
+ +
418{
+
+
419 JPH_INLINE GetIntersectingSubShapesVisitor(const BoxType &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) :
+
420 mBox(inBox),
+
421 mSubShapeIndices(outSubShapeIndices),
+
422 mMaxSubShapeIndices(inMaxSubShapeIndices)
+
423 {
+
424 }
+
+
425
+
+
427 JPH_INLINE bool ShouldAbort() const
+
428 {
+
429 return mNumResults >= mMaxSubShapeIndices;
+
430 }
+
+
431
+
+
433 JPH_INLINE UVec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
+
434 {
+
435 // Test which bounding boxes collide
+
436 return AABox4VsBox(mBox, inBoundsMinX, inBoundsMinY, inBoundsMinZ, inBoundsMaxX, inBoundsMaxY, inBoundsMaxZ);
+
437 }
+
+
438
+
+
440 JPH_INLINE void VisitShape([[maybe_unused]] const SubShape &inSubShape, uint32 inSubShapeIndex)
+
441 {
+
442 JPH_ASSERT(mNumResults < mMaxSubShapeIndices);
+
443 *mSubShapeIndices++ = inSubShapeIndex;
+
444 mNumResults++;
+
445 }
+
+
446
+
+
448 JPH_INLINE int GetNumResults() const
+
449 {
+
450 return mNumResults;
+
451 }
+
+
452
+
453private:
+
454 BoxType mBox;
+
455 uint * mSubShapeIndices;
+
456 int mMaxSubShapeIndices;
+
457 int mNumResults = 0;
+
458};
+
+
459
+ + +
JPH_INLINE UVec4 AABox4VsPoint(Vec3Arg inPoint, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ)
Test if 4 bounding boxes overlap with a point.
Definition AABox4.h:71
+
JPH_NAMESPACE_BEGIN JPH_INLINE UVec4 AABox4VsBox(const AABox &inBox1, Vec4Arg inBox2MinX, Vec4Arg inBox2MinY, Vec4Arg inBox2MinZ, Vec4Arg inBox2MaxX, Vec4Arg inBox2MaxY, Vec4Arg inBox2MaxZ)
Definition AABox4.h:13
+
JPH_INLINE void AABox4EnlargeWithExtent(Vec3Arg inExtent, Vec4 &ioBoundsMinX, Vec4 &ioBoundsMinY, Vec4 &ioBoundsMinZ, Vec4 &ioBoundsMaxX, Vec4 &ioBoundsMaxY, Vec4 &ioBoundsMaxZ)
Enlarge 4 bounding boxes with extent (add to both sides)
Definition AABox4.h:55
+
JPH_INLINE void AABox4Scale(Vec3Arg inScale, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, Vec4 &outBoundsMinX, Vec4 &outBoundsMinY, Vec4 &outBoundsMinZ, Vec4 &outBoundsMaxX, Vec4 &outBoundsMaxY, Vec4 &outBoundsMaxZ)
Scale 4 axis aligned boxes.
Definition AABox4.h:33
+ + + +
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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ + +
JPH_INLINE Vec4 RayAABox4(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ)
Definition RayAABox.h:72
+ + + + +
Axis aligned box.
Definition AABox.h:16
+
AABox Scaled(Vec3Arg inScale) const
Scale this bounding box, can handle non-uniform and negative scaling.
Definition AABox.h:215
+
void ExpandBy(Vec3Arg inVector)
Widen the box on both sides by inVector.
Definition AABox.h:98
+
AABox Transformed(Mat44Arg inMatrix) const
Transform bounding box.
Definition AABox.h:184
+
float mFraction
Hit fraction of the ray/object [0, 1], HitPoint = Start + mFraction * (End - Start)
Definition CastResult.h:25
+
Settings to be passed with a collision query.
Definition CollideShape.h:94
+
JPH_OVERRIDE_NEW_DELETE float mMaxSeparationDistance
When > 0 contacts in the vicinity of the query shape can be found. All nearest contacts that are not ...
Definition CollideShape.h:99
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
bool ShouldEarlyOut() const
When true, the collector will no longer accept any additional hits and the collision detection routin...
Definition CollisionCollector.h:89
+
static void sCollideShapeVsShape(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={ })
Definition CollisionDispatch.h:33
+
static void sCastShapeVsShapeLocalSpace(const ShapeCast &inShapeCastLocal, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)
Definition CollisionDispatch.h:53
+
Base class for a compound shape.
Definition CompoundShape.h:49
+
uint GetSubShapeIDBits() const
Determine amount of bits needed to encode sub shape id.
Definition CompoundShape.h:325
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sRotationTranslation(QuatArg inR, Vec3Arg inT)
Get matrix that rotates and translates.
Definition Mat44.inl:149
+
static JPH_INLINE Mat44 sInverseRotationTranslation(QuatArg inR, Vec3Arg inT)
Get inverse matrix of sRotationTranslation.
Definition Mat44.inl:156
+
JPH_INLINE Mat44 InversedRotationTranslation() const
Inverse 4x4 matrix when it only contains rotation and translation.
Definition Mat44.inl:729
+
Oriented box.
Definition OrientedBox.h:18
+
Definition Quat.h:33
+
Specialization of cast result against a shape.
Definition CastResult.h:30
+
Settings to be passed with a ray cast.
Definition RayCast.h:70
+
Helper structure holding the reciprocal of a ray for Ray vs AABox testing.
Definition RayAABox.h:11
+
void Set(Vec3Arg inDirection)
Set reciprocal from ray direction.
Definition RayAABox.h:18
+
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:184
+
virtual AABox GetLocalBounds() const =0
Get local bounding box including convex radius, this box is centered around the center of mass rather...
+
virtual void CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
Definition Shape.cpp:52
+
virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const =0
+
virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0
+
Definition SubShapeID.h:108
+
SubShapeIDCreator PushID(uint inValue, uint inBits) const
Add a new id to the chain of id's and return it.
Definition SubShapeID.h:111
+
Definition UVec4.h:12
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sReplicate(float inV)
Replicate inV across all components.
Definition Vec3.inl:118
+
Definition Vec4.h:14
+
Definition CompoundShapeVisitors.h:66
+
const ShapeFilter & mShapeFilter
Definition CompoundShapeVisitors.h:109
+
RayCastSettings mRayCastSettings
Definition CompoundShapeVisitors.h:108
+
const RayCast & mRay
Definition CompoundShapeVisitors.h:104
+
JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
Test the ray against a single subshape.
Definition CompoundShapeVisitors.h:92
+
SubShapeIDCreator mSubShapeIDCreator
Definition CompoundShapeVisitors.h:106
+
uint mSubShapeBits
Definition CompoundShapeVisitors.h:107
+
JPH_INLINE Vec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
Test ray against 4 bounding boxes and returns the distance where the ray enters the bounding box.
Definition CompoundShapeVisitors.h:86
+
CastRayCollector & mCollector
Definition CompoundShapeVisitors.h:105
+
JPH_INLINE bool ShouldAbort() const
Returns true when collision detection should abort because it's not possible to find a better hit.
Definition CompoundShapeVisitors.h:80
+
JPH_INLINE CastRayVisitorCollector(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const CompoundShape *inShape, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter)
Definition CompoundShapeVisitors.h:67
+
RayInvDirection mInvDirection
Definition CompoundShapeVisitors.h:103
+
Definition CompoundShapeVisitors.h:21
+
uint mSubShapeBits
Definition CompoundShapeVisitors.h:61
+
JPH_INLINE Vec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
Test ray against 4 bounding boxes and returns the distance where the ray enters the bounding box.
Definition CompoundShapeVisitors.h:39
+
SubShapeIDCreator mSubShapeIDCreator
Definition CompoundShapeVisitors.h:60
+
const RayCast & mRay
Definition CompoundShapeVisitors.h:58
+
JPH_INLINE bool ShouldAbort() const
Returns true when collision detection should abort because it's not possible to find a better hit.
Definition CompoundShapeVisitors.h:33
+
JPH_INLINE CastRayVisitor(const RayCast &inRay, const CompoundShape *inShape, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit)
Definition CompoundShapeVisitors.h:22
+
RayInvDirection mInvDirection
Definition CompoundShapeVisitors.h:57
+
bool mReturnValue
Definition CompoundShapeVisitors.h:62
+
RayCastResult & mHit
Definition CompoundShapeVisitors.h:59
+
JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
Test the ray against a single subshape.
Definition CompoundShapeVisitors.h:45
+
Definition CompoundShapeVisitors.h:154
+
Vec3 mScale
Definition CompoundShapeVisitors.h:215
+
JPH_INLINE bool ShouldAbort() const
Returns true when collision detection should abort because it's not possible to find a better hit.
Definition CompoundShapeVisitors.h:173
+
CastShapeCollector & mCollector
Definition CompoundShapeVisitors.h:219
+
const ShapeCastSettings & mShapeCastSettings
Definition CompoundShapeVisitors.h:217
+
SubShapeIDCreator mSubShapeIDCreator2
Definition CompoundShapeVisitors.h:222
+
Vec3 mBoxExtent
Definition CompoundShapeVisitors.h:214
+
uint mSubShapeBits
Definition CompoundShapeVisitors.h:223
+
const ShapeCast & mShapeCast
Definition CompoundShapeVisitors.h:216
+
const ShapeFilter & mShapeFilter
Definition CompoundShapeVisitors.h:218
+
SubShapeIDCreator mSubShapeIDCreator1
Definition CompoundShapeVisitors.h:221
+
JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
Test the cast shape against a single subshape.
Definition CompoundShapeVisitors.h:193
+
JPH_INLINE Vec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
Tests the shape cast against 4 bounding boxes, returns the distance along the shape cast where the sh...
Definition CompoundShapeVisitors.h:179
+
JPH_INLINE CastShapeVisitor(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const CompoundShape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)
Definition CompoundShapeVisitors.h:155
+
Vec3 mBoxCenter
Definition CompoundShapeVisitors.h:213
+
RayInvDirection mInvDirection
Definition CompoundShapeVisitors.h:212
+
Mat44 mCenterOfMassTransform2
Definition CompoundShapeVisitors.h:220
+
Definition CompoundShapeVisitors.h:227
+
JPH_INLINE bool ShouldAbort() const
Returns true when collision detection should abort because it's not possible to find a better hit.
Definition CompoundShapeVisitors.h:242
+
Vec3 mPositionCOM
Definition CompoundShapeVisitors.h:276
+
JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
Collect the transformed sub shapes for a single subshape.
Definition CompoundShapeVisitors.h:259
+
Quat mRotation
Definition CompoundShapeVisitors.h:277
+
AABox mBox
Definition CompoundShapeVisitors.h:274
+
SubShapeIDCreator mSubShapeIDCreator
Definition CompoundShapeVisitors.h:279
+
JPH_INLINE CollectTransformedShapesVisitor(const AABox &inBox, const CompoundShape *inShape, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter)
Definition CompoundShapeVisitors.h:228
+
Vec3 mScale
Definition CompoundShapeVisitors.h:278
+
TransformedShapeCollector & mCollector
Definition CompoundShapeVisitors.h:280
+
const ShapeFilter & mShapeFilter
Definition CompoundShapeVisitors.h:282
+
JPH_INLINE UVec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
Tests 4 bounding boxes against the query box, returns true for the ones that collide.
Definition CompoundShapeVisitors.h:248
+
uint mSubShapeBits
Definition CompoundShapeVisitors.h:281
+
OrientedBox mLocalBox
Definition CompoundShapeVisitors.h:275
+
Definition CompoundShapeVisitors.h:286
+
CollideShapeCollector & mCollector
Definition CompoundShapeVisitors.h:337
+
Mat44 mTransform1
Definition CompoundShapeVisitors.h:341
+
JPH_INLINE bool ShouldAbort() const
Returns true when collision detection should abort because it's not possible to find a better hit.
Definition CompoundShapeVisitors.h:308
+
const CollideShapeSettings & mCollideShapeSettings
Definition CompoundShapeVisitors.h:336
+
Mat44 mTransform2
Definition CompoundShapeVisitors.h:342
+
uint mSubShapeBits
Definition CompoundShapeVisitors.h:346
+
const ShapeFilter & mShapeFilter
Definition CompoundShapeVisitors.h:347
+
Vec3 mScale1
Definition CompoundShapeVisitors.h:339
+
SubShapeIDCreator mSubShapeIDCreator2
Definition CompoundShapeVisitors.h:345
+
Vec3 mScale2
Definition CompoundShapeVisitors.h:340
+
JPH_INLINE CollideCompoundVsShapeVisitor(const CompoundShape *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)
Definition CompoundShapeVisitors.h:287
+
AABox mBoundsOf2InSpaceOf1
Definition CompoundShapeVisitors.h:343
+
JPH_INLINE UVec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
Tests the bounds of shape 2 vs 4 bounding boxes, returns true for the ones that intersect.
Definition CompoundShapeVisitors.h:314
+
const Shape * mShape2
Definition CompoundShapeVisitors.h:338
+
JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
Test the shape against a single subshape.
Definition CompoundShapeVisitors.h:325
+
SubShapeIDCreator mSubShapeIDCreator1
Definition CompoundShapeVisitors.h:344
+
Definition CompoundShapeVisitors.h:113
+
JPH_INLINE UVec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
Test if point overlaps with 4 boxes, returns true for the ones that do.
Definition CompoundShapeVisitors.h:130
+
Vec3 mPoint
Definition CompoundShapeVisitors.h:146
+
SubShapeIDCreator mSubShapeIDCreator
Definition CompoundShapeVisitors.h:147
+
JPH_INLINE CollidePointVisitor(Vec3Arg inPoint, const CompoundShape *inShape, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
Definition CompoundShapeVisitors.h:114
+
JPH_INLINE bool ShouldAbort() const
Returns true when collision detection should abort because it's not possible to find a better hit.
Definition CompoundShapeVisitors.h:124
+
CollidePointCollector & mCollector
Definition CompoundShapeVisitors.h:148
+
uint mSubShapeBits
Definition CompoundShapeVisitors.h:149
+
JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
Test the point against a single subshape.
Definition CompoundShapeVisitors.h:136
+
const ShapeFilter & mShapeFilter
Definition CompoundShapeVisitors.h:150
+
Definition CompoundShapeVisitors.h:351
+
JPH_INLINE bool ShouldAbort() const
Returns true when collision detection should abort because it's not possible to find a better hit.
Definition CompoundShapeVisitors.h:374
+
uint mSubShapeBits
Definition CompoundShapeVisitors.h:412
+
const Shape * mShape1
Definition CompoundShapeVisitors.h:404
+
const ShapeFilter & mShapeFilter
Definition CompoundShapeVisitors.h:413
+
SubShapeIDCreator mSubShapeIDCreator2
Definition CompoundShapeVisitors.h:411
+
const CollideShapeSettings & mCollideShapeSettings
Definition CompoundShapeVisitors.h:402
+
CollideShapeCollector & mCollector
Definition CompoundShapeVisitors.h:403
+
Mat44 mTransform1
Definition CompoundShapeVisitors.h:407
+
AABox mBoundsOf1InSpaceOf2
Definition CompoundShapeVisitors.h:409
+
Vec3 mScale1
Definition CompoundShapeVisitors.h:405
+
Vec3 mScale2
Definition CompoundShapeVisitors.h:406
+
JPH_INLINE UVec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
Tests the bounds of shape 1 vs 4 bounding boxes, returns true for the ones that intersect.
Definition CompoundShapeVisitors.h:380
+
SubShapeIDCreator mSubShapeIDCreator1
Definition CompoundShapeVisitors.h:410
+
JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
Test the shape against a single subshape.
Definition CompoundShapeVisitors.h:391
+
Mat44 mTransform2
Definition CompoundShapeVisitors.h:408
+
JPH_INLINE CollideShapeVsCompoundVisitor(const Shape *inShape1, const CompoundShape *inShape2, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector, const ShapeFilter &inShapeFilter)
Definition CompoundShapeVisitors.h:352
+
Definition CompoundShapeVisitors.h:418
+
JPH_INLINE UVec4 TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
Tests the box vs 4 bounding boxes, returns true for the ones that intersect.
Definition CompoundShapeVisitors.h:433
+
JPH_INLINE bool ShouldAbort() const
Returns true when collision detection should abort because the buffer is full.
Definition CompoundShapeVisitors.h:427
+
JPH_INLINE GetIntersectingSubShapesVisitor(const BoxType &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices)
Definition CompoundShapeVisitors.h:419
+
JPH_INLINE void VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)
Records a hit.
Definition CompoundShapeVisitors.h:440
+
JPH_INLINE int GetNumResults() const
Get the number of indices that were found.
Definition CompoundShapeVisitors.h:448
+
Definition CompoundShape.h:138
+
JPH_INLINE Quat GetRotation() const
Uncompress the rotation.
Definition CompoundShape.h:229
+
JPH_INLINE Mat44 GetLocalTransformNoScale(Vec3Arg inScale) const
Definition CompoundShape.h:184
+
bool IsValidScale(Vec3Arg inScale) const
Test if inScale is valid for this sub shape.
Definition CompoundShape.h:191
+
Vec3 TransformScale(Vec3Arg inScale) const
Transform the scale to the local space of the child shape.
Definition CompoundShape.h:201
+
JPH_INLINE Vec3 GetPositionCOM() const
Uncompress the center of mass position.
Definition CompoundShape.h:217
+
RefConst< Shape > mShape
Definition CompoundShape.h:234
+
Definition RayCast.h:47
+
Vec3 mDirection
Direction and length of the ray (anything beyond this length will not be reported as a hit)
Definition RayCast.h:43
+
RayCastType Transformed(typename Mat::ArgType inTransform) const
Transform this ray using inTransform.
Definition RayCast.h:23
+
Vec mOrigin
Origin of the ray.
Definition RayCast.h:42
+
Definition ShapeCast.h:69
+
const Vec3 mDirection
Direction and length of the cast (anything beyond this length will not be reported as a hit)
Definition ShapeCast.h:64
+
ShapeCastType PostTransformed(typename Mat::ArgType inTransform) const
Transform this shape cast using inTransform. Multiply transform on the left left hand side.
Definition ShapeCast.h:42
+
+
+ + + + diff --git a/_cone_constraint_8cpp.html b/_cone_constraint_8cpp.html new file mode 100644 index 000000000..e3e41fe75 --- /dev/null +++ b/_cone_constraint_8cpp.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConeConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConeConstraint.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (ConeConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (ConeConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_cone_constraint_8cpp.js b/_cone_constraint_8cpp.js new file mode 100644 index 000000000..272c2fc12 --- /dev/null +++ b/_cone_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _cone_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_cone_constraint_8cpp.html#a3d8d9451b39e9e1813644586363f1c03", null ] +]; \ No newline at end of file diff --git a/_cone_constraint_8h.html b/_cone_constraint_8h.html new file mode 100644 index 000000000..4558df77b --- /dev/null +++ b/_cone_constraint_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConeConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConeConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  ConeConstraintSettings
 Cone constraint settings, used to create a cone constraint. More...
 
class  ConeConstraint
 
+
+
+ + + + diff --git a/_cone_constraint_8h.js b/_cone_constraint_8h.js new file mode 100644 index 000000000..4c663369f --- /dev/null +++ b/_cone_constraint_8h.js @@ -0,0 +1,5 @@ +var _cone_constraint_8h = +[ + [ "ConeConstraintSettings", "class_cone_constraint_settings.html", "class_cone_constraint_settings" ], + [ "ConeConstraint", "class_cone_constraint.html", "class_cone_constraint" ] +]; \ No newline at end of file diff --git a/_cone_constraint_8h_source.html b/_cone_constraint_8h_source.html new file mode 100644 index 000000000..bb060bfc0 --- /dev/null +++ b/_cone_constraint_8h_source.html @@ -0,0 +1,261 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConeConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConeConstraint.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
+ + + +
10
+ +
12
+
+ +
15{
+
16public:
+ +
18
+
19 // See: ConstraintSettings::SaveBinaryState
+
20 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
21
+
23 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
+
24
+ +
27
+
29 RVec3 mPoint1 = RVec3::sZero();
+
30 Vec3 mTwistAxis1 = Vec3::sAxisX();
+
31
+
33 RVec3 mPoint2 = RVec3::sZero();
+
34 Vec3 mTwistAxis2 = Vec3::sAxisX();
+
35
+
37 float mHalfConeAngle = 0.0f;
+
38
+
39protected:
+
40 // See: ConstraintSettings::RestoreBinaryState
+
41 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
42};
+
+
43
+
+ +
70{
+
71public:
+ +
73
+
75 ConeConstraint(Body &inBody1, Body &inBody2, const ConeConstraintSettings &inSettings);
+
76
+
77 // Generic interface of a constraint
+
78 virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::Cone; }
+
79 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override;
+
80 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
81 virtual void ResetWarmStart() override;
+
82 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
83 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
84 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
85#ifdef JPH_DEBUG_RENDERER
+
86 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
87 virtual void DrawConstraintLimits(DebugRenderer *inRenderer) const override;
+
88#endif // JPH_DEBUG_RENDERER
+
89 virtual void SaveState(StateRecorder &inStream) const override;
+
90 virtual void RestoreState(StateRecorder &inStream) override;
+
91 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
92
+
93 // See: TwoBodyConstraint
+
94 virtual Mat44 GetConstraintToBody1Matrix() const override;
+
95 virtual Mat44 GetConstraintToBody2Matrix() const override;
+
96
+
98 void SetHalfConeAngle(float inHalfConeAngle) { JPH_ASSERT(inHalfConeAngle >= 0.0f && inHalfConeAngle <= JPH_PI); mCosHalfConeAngle = Cos(inHalfConeAngle); }
+
99 float GetCosHalfConeAngle() const { return mCosHalfConeAngle; }
+
100
+
102 inline Vec3 GetTotalLambdaPosition() const { return mPointConstraintPart.GetTotalLambda(); }
+
103 inline float GetTotalLambdaRotation() const { return mAngleConstraintPart.GetTotalLambda(); }
+
104
+
105private:
+
106 // Internal helper function to calculate the values below
+
107 void CalculateRotationConstraintProperties(Mat44Arg inRotation1, Mat44Arg inRotation2);
+
108
+
109 // CONFIGURATION PROPERTIES FOLLOW
+
110
+
111 // Local space constraint positions
+
112 Vec3 mLocalSpacePosition1;
+
113 Vec3 mLocalSpacePosition2;
+
114
+
115 // Local space constraint axis
+
116 Vec3 mLocalSpaceTwistAxis1;
+
117 Vec3 mLocalSpaceTwistAxis2;
+
118
+
119 // Angular limits
+
120 float mCosHalfConeAngle;
+
121
+
122 // RUN TIME PROPERTIES FOLLOW
+
123
+
124 // Axis and angle of rotation between the two bodies
+
125 Vec3 mWorldSpaceRotationAxis;
+
126 float mCosTheta;
+
127
+
128 // The constraint parts
+
129 PointConstraintPart mPointConstraintPart;
+
130 AngleConstraintPart mAngleConstraintPart;
+
131};
+
+
132
+ + +
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
+
@ WorldSpace
All constraint properties are specified in world space.
+
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#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
+
JPH_INLINE float Cos(float inX)
Cosine of x (input in radians)
Definition Trigonometry.h:20
+ +
Definition AngleConstraintPart.h:37
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Definition ConeConstraint.h:70
+
float GetTotalLambdaRotation() const
Definition ConeConstraint.h:103
+
float GetCosHalfConeAngle() const
Definition ConeConstraint.h:99
+
virtual EConstraintSubType GetSubType() const override
Get the sub type of a constraint.
Definition ConeConstraint.h:78
+
void SetHalfConeAngle(float inHalfConeAngle)
Update maximum angle between body 1 and 2 (see ConeConstraintSettings)
Definition ConeConstraint.h:98
+
Vec3 GetTotalLambdaPosition() const
Definition ConeConstraint.h:102
+
Cone constraint settings, used to create a cone constraint.
Definition ConeConstraint.h:15
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Definition PointConstraintPart.h:41
+
Definition Reference.h:101
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition Vec3.h:53
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_configuration_string_8h.html b/_configuration_string_8h.html new file mode 100644 index 000000000..37cc6f83c --- /dev/null +++ b/_configuration_string_8h.html @@ -0,0 +1,153 @@ + + + + + + + +Jolt Physics: Jolt/ConfigurationString.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConfigurationString.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Functions

JPH_NAMESPACE_BEGIN const char * GetConfigurationString ()
 Construct a string that lists the most important configuration settings.
 
+

Function Documentation

+ +

◆ GetConfigurationString()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_NAMESPACE_BEGIN const char * GetConfigurationString ()
+
+inline
+
+ +

Construct a string that lists the most important configuration settings.

+ +
+
+
+
+ + + + diff --git a/_configuration_string_8h.js b/_configuration_string_8h.js new file mode 100644 index 000000000..edafdc2d6 --- /dev/null +++ b/_configuration_string_8h.js @@ -0,0 +1,4 @@ +var _configuration_string_8h = +[ + [ "GetConfigurationString", "_configuration_string_8h.html#afe111af004398b9269362467f062bf75", null ] +]; \ No newline at end of file diff --git a/_configuration_string_8h_source.html b/_configuration_string_8h_source.html new file mode 100644 index 000000000..5cbfa5cfa --- /dev/null +++ b/_configuration_string_8h_source.html @@ -0,0 +1,218 @@ + + + + + + + +Jolt Physics: Jolt/ConfigurationString.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConfigurationString.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+
+
10inline const char *GetConfigurationString()
+
11{
+
12 return JPH_IF_SINGLE_PRECISION_ELSE("Single", "Double") " precision "
+
13#if defined(JPH_CPU_X86)
+
14 "x86 "
+
15#elif defined(JPH_CPU_ARM)
+
16 "ARM "
+
17#elif defined(JPH_PLATFORM_WASM)
+
18 "WASM "
+
19#endif
+
20#if JPH_CPU_ADDRESS_BITS == 64
+
21 "64-bit "
+
22#elif JPH_CPU_ADDRESS_BITS == 32
+
23 "32-bit "
+
24#endif
+
25 "with instructions: "
+
26#ifdef JPH_USE_NEON
+
27 "NEON "
+
28#endif
+
29#ifdef JPH_USE_SSE
+
30 "SSE2 "
+
31#endif
+
32#ifdef JPH_USE_SSE4_1
+
33 "SSE4.1 "
+
34#endif
+
35#ifdef JPH_USE_SSE4_2
+
36 "SSE4.2 "
+
37#endif
+
38#ifdef JPH_USE_AVX
+
39 "AVX "
+
40#endif
+
41#ifdef JPH_USE_AVX2
+
42 "AVX2 "
+
43#endif
+
44#ifdef JPH_USE_AVX512
+
45 "AVX512 "
+
46#endif
+
47#ifdef JPH_USE_F16C
+
48 "F16C "
+
49#endif
+
50#ifdef JPH_USE_LZCNT
+
51 "LZCNT "
+
52#endif
+
53#ifdef JPH_USE_TZCNT
+
54 "TZCNT "
+
55#endif
+
56#ifdef JPH_USE_FMADD
+
57 "FMADD "
+
58#endif
+
59#ifdef JPH_CROSS_PLATFORM_DETERMINISTIC
+
60 "(Cross Platform Deterministic) "
+
61#endif
+
62#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
63 "(FP Exceptions) "
+
64#endif
+
65#ifdef JPH_DEBUG_RENDERER
+
66 "(Debug Renderer) "
+
67#endif
+
68#ifdef JPH_PROFILE_ENABLED
+
69 "(Profile) "
+
70#endif
+
71#if defined(JPH_OBJECT_LAYER_BITS) && JPH_OBJECT_LAYER_BITS == 32
+
72 "(32-bit ObjectLayer) "
+
73#else
+
74 "(16-bit ObjectLayer) "
+
75#endif
+
76#ifdef JPH_ENABLE_ASSERTS
+
77 "(Assertions) "
+
78#endif
+
79#ifdef JPH_OBJECT_STREAM
+
80 "(ObjectStream) "
+
81#endif
+
82#ifdef JPH_DEBUG
+
83 "(Debug) "
+
84#endif
+
85#if defined(__cpp_rtti) && __cpp_rtti
+
86 "(C++ RTTI) "
+
87#endif
+
88#if defined(__cpp_exceptions) && __cpp_exceptions
+
89 "(C++ Exceptions) "
+
90#endif
+
91 ;
+
92}
+
+
93
+ +
JPH_NAMESPACE_BEGIN const char * GetConfigurationString()
Construct a string that lists the most important configuration settings.
Definition ConfigurationString.h:10
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_IF_SINGLE_PRECISION_ELSE(s, d)
Definition Core.h:530
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
+
+ + + + diff --git a/_constraint_8cpp.html b/_constraint_8cpp.html new file mode 100644 index 000000000..fbf7cfee6 --- /dev/null +++ b/_constraint_8cpp.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/Constraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Constraint.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (ConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (ConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_constraint_8cpp.js b/_constraint_8cpp.js new file mode 100644 index 000000000..23a0c3b3a --- /dev/null +++ b/_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_constraint_8cpp.html#ab0532b53f75294bf0bdb08fd2a71f5ed", null ] +]; \ No newline at end of file diff --git a/_constraint_8h.html b/_constraint_8h.html new file mode 100644 index 000000000..f18a4e0cd --- /dev/null +++ b/_constraint_8h.html @@ -0,0 +1,275 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/Constraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Constraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  ConstraintSettings
 Class used to store the configuration of a constraint. Allows run-time creation of constraints. More...
 
class  Constraint
 Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rigid body. More...
 
+ + + + + + + + + + +

+Enumerations

enum class  EConstraintType { Constraint +, TwoBodyConstraint + }
 Enum to identify constraint type. More...
 
enum class  EConstraintSubType {
+  Fixed +, Point +, Hinge +, Slider +,
+  Distance +, Cone +, SwingTwist +, SixDOF +,
+  Path +, Vehicle +, RackAndPinion +, Gear +,
+  Pulley +, User1 +, User2 +, User3 +,
+  User4 +
+ }
 Enum to identify constraint sub type. More...
 
enum class  EConstraintSpace { LocalToBodyCOM +, WorldSpace + }
 Certain constraints support setting them up in local or world space. This governs what is used. More...
 
+

Enumeration Type Documentation

+ +

◆ EConstraintSpace

+ +
+
+ + + + + +
+ + + + +
enum class EConstraintSpace
+
+strong
+
+ +

Certain constraints support setting them up in local or world space. This governs what is used.

+ + + +
Enumerator
LocalToBodyCOM 

All constraint properties are specified in local space to center of mass of the bodies that are being constrained (so e.g. 'constraint position 1' will be local to body 1 COM, 'constraint position 2' will be local to body 2 COM). Note that this means you need to subtract Shape::GetCenterOfMass() from positions!

+
WorldSpace 

All constraint properties are specified in world space.

+
+ +
+
+ +

◆ EConstraintSubType

+ +
+
+ + + + + +
+ + + + +
enum class EConstraintSubType
+
+strong
+
+ +

Enum to identify constraint sub type.

+ + + + + + + + + + + + + + + + + + +
Enumerator
Fixed 
Point 
Hinge 
Slider 
Distance 
Cone 
SwingTwist 
SixDOF 
Path 
Vehicle 
RackAndPinion 
Gear 
Pulley 
User1 

User defined constraint types start here.

+
User2 
User3 
User4 
+ +
+
+ +

◆ EConstraintType

+ +
+
+ + + + + +
+ + + + +
enum class EConstraintType
+
+strong
+
+ +

Enum to identify constraint type.

+ + + +
Enumerator
Constraint 
TwoBodyConstraint 
+ +
+
+
+
+ + + + diff --git a/_constraint_8h.js b/_constraint_8h.js new file mode 100644 index 000000000..2860e185f --- /dev/null +++ b/_constraint_8h.js @@ -0,0 +1,32 @@ +var _constraint_8h = +[ + [ "ConstraintSettings", "class_constraint_settings.html", "class_constraint_settings" ], + [ "Constraint", "class_constraint.html", "class_constraint" ], + [ "EConstraintSpace", "_constraint_8h.html#a5951578637c20f8aad819c13ad09b1be", [ + [ "LocalToBodyCOM", "_constraint_8h.html#a5951578637c20f8aad819c13ad09b1bea337c8a797ceff07104efbfcdea102759", null ], + [ "WorldSpace", "_constraint_8h.html#a5951578637c20f8aad819c13ad09b1bea43c5bd4a88c440bd0862f954e4faa177", null ] + ] ], + [ "EConstraintSubType", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2d", [ + [ "Fixed", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da4457d440870ad6d42bab9082d9bf9b61", null ], + [ "Point", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da2a3cd5946cfd317eb99c3d32e35e2d4c", null ], + [ "Hinge", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da18205404fe6507d42b3b2d25aaf62f21", null ], + [ "Slider", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da2d9b9a764fb0be4be10e1b2fce63f561", null ], + [ "Distance", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da0aa6f4210bf373c95eda00232e93cd98", null ], + [ "Cone", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dacd2c8bc6e5f1ea17c918ccaf89660104", null ], + [ "SwingTwist", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da45c50d709bcdfc9e1733315ce452aeb2", null ], + [ "SixDOF", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dac3d163397733dea0f5563f2b7b3fa4a2", null ], + [ "Path", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2daac70412e939d72a9234cdebb1af5867b", null ], + [ "Vehicle", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dad6af9c1eaff2a89ebd3f8d0c542be12b", null ], + [ "RackAndPinion", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da8ee4f481186dec454e1fac31c622045e", null ], + [ "Gear", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dafb845762a66c26782f477febab5344dc", null ], + [ "Pulley", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2daba41903d01ed39b1b98768512c8e65f5", null ], + [ "User1", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da6b908b785fdba05a6446347dae08d8c5", null ], + [ "User2", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2daa09bccf2b2963982b34dc0e08d8b582a", null ], + [ "User3", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dae5d2ad241ec44cf155bc78ae8d11f715", null ], + [ "User4", "_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da5ad55d96abf0e50647d6de116530d6df", null ] + ] ], + [ "EConstraintType", "_constraint_8h.html#a2a4cc5b25efd5f8862f80eb2f5fcdc47", [ + [ "Constraint", "_constraint_8h.html#a2a4cc5b25efd5f8862f80eb2f5fcdc47a5573c74299e0af37fd558445022c4b15", null ], + [ "TwoBodyConstraint", "_constraint_8h.html#a2a4cc5b25efd5f8862f80eb2f5fcdc47a279848af426fbf128cc3620da5bd99bd", null ] + ] ] +]; \ No newline at end of file diff --git a/_constraint_8h_source.html b/_constraint_8h_source.html new file mode 100644 index 000000000..586893844 --- /dev/null +++ b/_constraint_8h_source.html @@ -0,0 +1,400 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/Constraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Constraint.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
+ + +
9#include <Jolt/Core/Result.h>
+ +
11
+ +
13
+
14class BodyID;
+
15class IslandBuilder;
+ +
17class BodyManager;
+
18class StateRecorder;
+
19class StreamIn;
+
20class StreamOut;
+
21#ifdef JPH_DEBUG_RENDERER
+
22class DebugRenderer;
+
23#endif // JPH_DEBUG_RENDERER
+
24
+
+ +
27{
+ + +
30};
+
+
31
+
+ +
34{
+
35 Fixed,
+
36 Point,
+
37 Hinge,
+
38 Slider,
+ +
40 Cone,
+ +
42 SixDOF,
+
43 Path,
+
44 Vehicle,
+ +
46 Gear,
+
47 Pulley,
+
48
+
50 User1,
+
51 User2,
+
52 User3,
+
53 User4
+
54};
+
+
55
+
+ +
58{
+ + +
61};
+
+
62
+
+
64class JPH_EXPORT ConstraintSettings : public SerializableObject, public RefTarget<ConstraintSettings>
+
65{
+
66public:
+ +
68
+ +
70
+
72 virtual void SaveBinaryState(StreamOut &inStream) const;
+
73
+
75 static ConstraintResult sRestoreFromBinaryState(StreamIn &inStream);
+
76
+
78 bool mEnabled = true;
+
79
+
82 uint32 mConstraintPriority = 0;
+
83
+
85 uint mNumVelocityStepsOverride = 0;
+
86
+
88 uint mNumPositionStepsOverride = 0;
+
89
+
91 float mDrawConstraintSize = 1.0f;
+
92
+
94 uint64 mUserData = 0;
+
95
+
96protected:
+
98 virtual void RestoreBinaryState(StreamIn &inStream);
+
99};
+
+
100
+
+ +
103{
+
104public:
+ +
106
+
+
108 explicit Constraint(const ConstraintSettings &inSettings) :
+
109#ifdef JPH_DEBUG_RENDERER
+
110 mDrawConstraintSize(inSettings.mDrawConstraintSize),
+
111#endif // JPH_DEBUG_RENDERER
+
112 mConstraintPriority(inSettings.mConstraintPriority),
+
113 mNumVelocityStepsOverride(uint8(inSettings.mNumVelocityStepsOverride)),
+
114 mNumPositionStepsOverride(uint8(inSettings.mNumPositionStepsOverride)),
+
115 mEnabled(inSettings.mEnabled),
+
116 mUserData(inSettings.mUserData)
+
117 {
+
118 JPH_ASSERT(inSettings.mNumVelocityStepsOverride < 256);
+
119 JPH_ASSERT(inSettings.mNumPositionStepsOverride < 256);
+
120 }
+
+
121
+
123 virtual ~Constraint() = default;
+
124
+ +
127
+
129 virtual EConstraintSubType GetSubType() const = 0;
+
130
+
133 uint32 GetConstraintPriority() const { return mConstraintPriority; }
+
134 void SetConstraintPriority(uint32 inPriority) { mConstraintPriority = inPriority; }
+
135
+
137 void SetNumVelocityStepsOverride(uint inN) { JPH_ASSERT(inN < 256); mNumVelocityStepsOverride = uint8(inN); }
+
138 uint GetNumVelocityStepsOverride() const { return mNumVelocityStepsOverride; }
+
139
+
141 void SetNumPositionStepsOverride(uint inN) { JPH_ASSERT(inN < 256); mNumPositionStepsOverride = uint8(inN); }
+
142 uint GetNumPositionStepsOverride() const { return mNumPositionStepsOverride; }
+
143
+
148 void SetEnabled(bool inEnabled) { mEnabled = inEnabled; }
+
149
+
151 bool GetEnabled() const { return mEnabled; }
+
152
+
154 uint64 GetUserData() const { return mUserData; }
+
155 void SetUserData(uint64 inUserData) { mUserData = inUserData; }
+
156
+
161 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) = 0;
+
162
+
167 virtual void ResetWarmStart() = 0;
+
168
+
171 virtual bool IsActive() const { return mEnabled; }
+
172 virtual void SetupVelocityConstraint(float inDeltaTime) = 0;
+
173 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) = 0;
+
174 virtual bool SolveVelocityConstraint(float inDeltaTime) = 0;
+
175 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) = 0;
+
177
+
179 virtual void BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) = 0;
+
180
+
182 virtual uint BuildIslandSplits(LargeIslandSplitter &ioSplitter) const = 0;
+
183
+
184#ifdef JPH_DEBUG_RENDERER
+
185 // Drawing interface
+
186 virtual void DrawConstraint(DebugRenderer *inRenderer) const = 0;
+
187 virtual void DrawConstraintLimits([[maybe_unused]] DebugRenderer *inRenderer) const { }
+
188 virtual void DrawConstraintReferenceFrame([[maybe_unused]] DebugRenderer *inRenderer) const { }
+
189
+
191 float GetDrawConstraintSize() const { return mDrawConstraintSize; }
+
192 void SetDrawConstraintSize(float inSize) { mDrawConstraintSize = inSize; }
+
193#endif // JPH_DEBUG_RENDERER
+
194
+
196 virtual void SaveState(StateRecorder &inStream) const;
+
197
+
199 virtual void RestoreState(StateRecorder &inStream);
+
200
+ +
203
+
204protected:
+
206 void ToConstraintSettings(ConstraintSettings &outSettings) const;
+
207
+
208#ifdef JPH_DEBUG_RENDERER
+ +
211#endif // JPH_DEBUG_RENDERER
+
212
+
213private:
+
214 friend class ConstraintManager;
+
215
+
217 static constexpr uint32 cInvalidConstraintIndex = 0xffffffff;
+
218
+
220 uint32 mConstraintIndex = cInvalidConstraintIndex;
+
221
+
223 uint32 mConstraintPriority = 0;
+
224
+
226 uint8 mNumVelocityStepsOverride = 0;
+
227
+
229 uint8 mNumPositionStepsOverride = 0;
+
230
+
232 bool mEnabled = true;
+
233
+
235 uint64 mUserData;
+
236};
+
+
237
+ +
EConstraintType
Enum to identify constraint type.
Definition Constraint.h:27
+ + +
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
+
@ LocalToBodyCOM
All constraint properties are specified in local space to center of mass of the bodies that are being...
+
@ WorldSpace
All constraint properties are specified in world space.
+
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ + + + + + + +
@ User1
User defined constraint types start here.
+ + + + + + + + + +
std::uint8_t uint8
Definition Core.h:453
+
#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
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#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
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Class that contains all bodies.
Definition BodyManager.h:44
+
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:103
+
virtual ~Constraint()=default
Virtual destructor.
+
virtual void SetupVelocityConstraint(float inDeltaTime)=0
+
virtual bool IsActive() const
Definition Constraint.h:171
+
virtual Ref< ConstraintSettings > GetConstraintSettings() const =0
Debug function to convert a constraint to its settings, note that this will not save to which bodies ...
+
bool GetEnabled() const
Test if a constraint is enabled.
Definition Constraint.h:151
+
void SetUserData(uint64 inUserData)
Definition Constraint.h:155
+
virtual bool SolveVelocityConstraint(float inDeltaTime)=0
+
virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM)=0
+
void SetConstraintPriority(uint32 inPriority)
Definition Constraint.h:134
+
void SetNumVelocityStepsOverride(uint inN)
Used only when the constraint is active. Override for the number of solver velocity iterations to run...
Definition Constraint.h:137
+
uint64 GetUserData() const
Access to the user data, can be used for anything by the application.
Definition Constraint.h:154
+
virtual void DrawConstraintLimits(DebugRenderer *inRenderer) const
Definition Constraint.h:187
+
uint GetNumVelocityStepsOverride() const
Definition Constraint.h:138
+
virtual EConstraintSubType GetSubType() const =0
Get the sub type of a constraint.
+
virtual uint BuildIslandSplits(LargeIslandSplitter &ioSplitter) const =0
Link bodies that are connected by this constraint in the same split. Returns the split index.
+
uint32 GetConstraintPriority() const
Definition Constraint.h:133
+
virtual EConstraintType GetType() const
Get the type of a constraint.
Definition Constraint.h:126
+
float GetDrawConstraintSize() const
Size of constraint when drawing it through the debug renderer.
Definition Constraint.h:191
+
void SetNumPositionStepsOverride(uint inN)
Used only when the constraint is active. Override for the number of solver position iterations to run...
Definition Constraint.h:141
+
virtual void DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const
Definition Constraint.h:188
+
void SetEnabled(bool inEnabled)
Definition Constraint.h:148
+
virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio)=0
+
virtual void DrawConstraint(DebugRenderer *inRenderer) const =0
+
uint GetNumPositionStepsOverride() const
Definition Constraint.h:142
+
virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte)=0
+
JPH_OVERRIDE_NEW_DELETE Constraint(const ConstraintSettings &inSettings)
Constructor.
Definition Constraint.h:108
+
void SetDrawConstraintSize(float inSize)
Definition Constraint.h:192
+
float mDrawConstraintSize
Size of constraint when drawing it through the debug renderer.
Definition Constraint.h:210
+
virtual void BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager)=0
Link bodies that are connected by this constraint in the island builder.
+
virtual void ResetWarmStart()=0
+
A constraint manager manages all constraints of the same type.
Definition ConstraintManager.h:25
+
Class used to store the configuration of a constraint. Allows run-time creation of constraints.
Definition Constraint.h:65
+
uint mNumPositionStepsOverride
Used only when the constraint is active. Override for the number of solver position iterations to run...
Definition Constraint.h:88
+
uint mNumVelocityStepsOverride
Used only when the constraint is active. Override for the number of solver velocity iterations to run...
Definition Constraint.h:85
+
Definition DebugRenderer.h:47
+
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
Definition IslandBuilder.h:19
+
Definition LargeIslandSplitter.h:25
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition Reference.h:101
+
Definition Reference.h:35
+
Helper class that either contains a valid result or an error.
Definition Result.h:12
+
Definition SerializableObject.h:156
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_constraint_manager_8cpp.html b/_constraint_manager_8cpp.html new file mode 100644 index 000000000..006499f5e --- /dev/null +++ b/_constraint_manager_8cpp.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintManager.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConstraintManager.cpp File Reference
+
+
+
+
+ + + + diff --git a/_constraint_manager_8h.html b/_constraint_manager_8h.html new file mode 100644 index 000000000..99914ac31 --- /dev/null +++ b/_constraint_manager_8h.html @@ -0,0 +1,152 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintManager.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConstraintManager.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  ConstraintManager
 A constraint manager manages all constraints of the same type. More...
 
+ + + + +

+Typedefs

using Constraints = Array< Ref< Constraint > >
 A list of constraints.
 
+

Typedef Documentation

+ +

◆ Constraints

+ +
+
+ + + + +
using Constraints = Array<Ref<Constraint> >
+
+ +

A list of constraints.

+ +
+
+
+
+ + + + diff --git a/_constraint_manager_8h.js b/_constraint_manager_8h.js new file mode 100644 index 000000000..510a7ce21 --- /dev/null +++ b/_constraint_manager_8h.js @@ -0,0 +1,5 @@ +var _constraint_manager_8h = +[ + [ "ConstraintManager", "class_constraint_manager.html", "class_constraint_manager" ], + [ "Constraints", "_constraint_manager_8h.html#acbbaf4aa1ca19ae6a91452046a99062c", null ] +]; \ No newline at end of file diff --git a/_constraint_manager_8h_source.html b/_constraint_manager_8h_source.html new file mode 100644 index 000000000..e20878010 --- /dev/null +++ b/_constraint_manager_8h_source.html @@ -0,0 +1,222 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintManager.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConstraintManager.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
+ + +
9#include <Jolt/Core/Mutex.h>
+
10
+ +
12
+
13class IslandBuilder;
+
14class BodyManager;
+ +
16#ifdef JPH_DEBUG_RENDERER
+
17class DebugRenderer;
+
18#endif // JPH_DEBUG_RENDERER
+
19
+ +
22
+
+ +
25{
+
26public:
+ +
28
+
29#ifdef JPH_ENABLE_ASSERTS
+
31 ConstraintManager(PhysicsLockContext inContext) : mLockContext(inContext) { }
+
32#endif // JPH_ENABLE_ASSERTS
+
33
+
36 void Add(Constraint **inConstraints, int inNumber);
+
37
+
40 void Remove(Constraint **inConstraint, int inNumber);
+
41
+
43 Constraints GetConstraints() const;
+
44
+
46 inline uint32 GetNumConstraints() const { return uint32(mConstraints.size()); }
+
47
+
49 void GetActiveConstraints(uint32 inStartConstraintIdx, uint32 inEndConstraintIdx, Constraint **outActiveConstraints, uint32 &outNumActiveConstraints) const;
+
50
+
52 static void sBuildIslands(Constraint **inActiveConstraints, uint32 inNumActiveConstraints, IslandBuilder &ioBuilder, BodyManager &inBodyManager);
+
53
+
55 static void sSortConstraints(Constraint **inActiveConstraints, uint32 *inConstraintIdxBegin, uint32 *inConstraintIdxEnd);
+
56
+
58 static void sSetupVelocityConstraints(Constraint **inActiveConstraints, uint32 inNumActiveConstraints, float inDeltaTime);
+
59
+
61 template <class ConstraintCallback>
+
62 static void sWarmStartVelocityConstraints(Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inWarmStartImpulseRatio, ConstraintCallback &ioCallback);
+
63
+
65 static bool sSolveVelocityConstraints(Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inDeltaTime);
+
66
+
68 static bool sSolvePositionConstraints(Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inDeltaTime, float inBaumgarte);
+
69
+
70#ifdef JPH_DEBUG_RENDERER
+
72 void DrawConstraints(DebugRenderer *inRenderer) const;
+
73
+
75 void DrawConstraintLimits(DebugRenderer *inRenderer) const;
+
76
+
78 void DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const;
+
79#endif // JPH_DEBUG_RENDERER
+
80
+
82 void SaveState(StateRecorder &inStream, const StateRecorderFilter *inFilter) const;
+
83
+
85 bool RestoreState(StateRecorder &inStream);
+
86
+
88 void LockAllConstraints() { PhysicsLock::sLock(mConstraintsMutex JPH_IF_ENABLE_ASSERTS(, mLockContext, EPhysicsLockTypes::ConstraintsList)); }
+
89 void UnlockAllConstraints() { PhysicsLock::sUnlock(mConstraintsMutex JPH_IF_ENABLE_ASSERTS(, mLockContext, EPhysicsLockTypes::ConstraintsList)); }
+
90
+
91private:
+
92#ifdef JPH_ENABLE_ASSERTS
+
93 PhysicsLockContext mLockContext;
+
94#endif // JPH_ENABLE_ASSERTS
+
95 Constraints mConstraints;
+
96 mutable Mutex mConstraintsMutex;
+
97};
+
+
98
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ + + +
Class that contains all bodies.
Definition BodyManager.h:44
+
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:103
+
A constraint manager manages all constraints of the same type.
Definition ConstraintManager.h:25
+
uint32 GetNumConstraints() const
Get total number of constraints.
Definition ConstraintManager.h:46
+
void LockAllConstraints()
Lock all constraints. This should only be done during PhysicsSystem::Update().
Definition ConstraintManager.h:88
+
void UnlockAllConstraints()
Definition ConstraintManager.h:89
+
Definition DebugRenderer.h:47
+
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
Definition IslandBuilder.h:19
+
Definition Mutex.h:122
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
static void sUnlock(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:61
+
static void sLock(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:54
+
User callbacks that allow determining which parts of the simulation should be saved by a StateRecorde...
Definition StateRecorder.h:29
+
Definition StateRecorder.h:48
+
+
+ + + + diff --git a/_contact_constraint_manager_8cpp.html b/_contact_constraint_manager_8cpp.html new file mode 100644 index 000000000..a27109b25 --- /dev/null +++ b/_contact_constraint_manager_8cpp.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ContactConstraintManager.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ContactConstraintManager.cpp File Reference
+
+
+
+
+ + + + diff --git a/_contact_constraint_manager_8h.html b/_contact_constraint_manager_8h.html new file mode 100644 index 000000000..d1439c834 --- /dev/null +++ b/_contact_constraint_manager_8h.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ContactConstraintManager.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ContactConstraintManager.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  ContactConstraintManager
 
class  ContactConstraintManager::ContactAllocator
 Contacts are allocated in a lock free hash map. More...
 
+
+
+ + + + diff --git a/_contact_constraint_manager_8h.js b/_contact_constraint_manager_8h.js new file mode 100644 index 000000000..d562bada1 --- /dev/null +++ b/_contact_constraint_manager_8h.js @@ -0,0 +1,5 @@ +var _contact_constraint_manager_8h = +[ + [ "ContactConstraintManager", "class_contact_constraint_manager.html", "class_contact_constraint_manager" ], + [ "ContactConstraintManager::ContactAllocator", "class_contact_constraint_manager_1_1_contact_allocator.html", "class_contact_constraint_manager_1_1_contact_allocator" ] +]; \ No newline at end of file diff --git a/_contact_constraint_manager_8h_source.html b/_contact_constraint_manager_8h_source.html new file mode 100644 index 000000000..f878896b2 --- /dev/null +++ b/_contact_constraint_manager_8h_source.html @@ -0,0 +1,525 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ContactConstraintManager.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ContactConstraintManager.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
+ + + + + + + + + + +
17
+ +
19#include <atomic>
+ +
21
+ +
23
+
24struct PhysicsSettings;
+ +
26
+
+ +
28{
+
29public:
+ +
31
+
33 explicit ContactConstraintManager(const PhysicsSettings &inPhysicsSettings);
+ +
35
+
39 void Init(uint inMaxBodyPairs, uint inMaxContactConstraints);
+
40
+
42 void SetContactListener(ContactListener *inListener) { mContactListener = inListener; }
+
43 ContactListener * GetContactListener() const { return mContactListener; }
+
44
+
48 using CombineFunction = float (*)(const Body &inBody1, const SubShapeID &inSubShapeID1, const Body &inBody2, const SubShapeID &inSubShapeID2);
+
49
+
52 void SetCombineFriction(CombineFunction inCombineFriction) { mCombineFriction = inCombineFriction; }
+
53 CombineFunction GetCombineFriction() const { return mCombineFriction; }
+
54
+
57 void SetCombineRestitution(CombineFunction inCombineRestitution) { mCombineRestitution = inCombineRestitution; }
+
58 CombineFunction GetCombineRestitution() const { return mCombineRestitution; }
+
59
+
61 uint32 GetMaxConstraints() const { return mMaxConstraints; }
+
62
+
+
64 inline ValidateResult ValidateContactPoint(const Body &inBody1, const Body &inBody2, RVec3Arg inBaseOffset, const CollideShapeResult &inCollisionResult) const
+
65 {
+
66 if (mContactListener == nullptr)
+ +
68
+
69 return mContactListener->OnContactValidate(inBody1, inBody2, inBaseOffset, inCollisionResult);
+
70 }
+
+
71
+
73 void PrepareConstraintBuffer(PhysicsUpdateContext *inContext);
+
74
+
76 static const int MaxContactPoints = 4;
+
77
+
+ +
80 {
+
81 public:
+ +
83
+
84 uint mNumBodyPairs = 0;
+
85 uint mNumManifolds = 0;
+ +
87 };
+
+
88
+
90 ContactAllocator GetContactAllocator() { return mCache[mCacheWriteIdx].GetContactAllocator(); }
+
91
+
95 void GetContactsFromCache(ContactAllocator &ioContactAllocator, Body &inBody1, Body &inBody2, bool &outPairHandled, bool &outConstraintCreated);
+
96
+
98 using BodyPairHandle = void *;
+
99
+
102 BodyPairHandle AddBodyPair(ContactAllocator &ioContactAllocator, const Body &inBody1, const Body &inBody2);
+
103
+
145 bool AddContactConstraint(ContactAllocator &ioContactAllocator, BodyPairHandle inBodyPair, Body &inBody1, Body &inBody2, const ContactManifold &inManifold);
+
146
+
151 void FinalizeContactCacheAndCallContactPointRemovedCallbacks(uint inExpectedNumBodyPairs, uint inExpectedNumManifolds);
+
152
+
155 bool WereBodiesInContact(const BodyID &inBody1ID, const BodyID &inBody2ID) const;
+
156
+
158 uint32 GetNumConstraints() const { return min<uint32>(mNumConstraints, mMaxConstraints); }
+
159
+
161 void SortContacts(uint32 *inConstraintIdxBegin, uint32 *inConstraintIdxEnd) const;
+
162
+
+
164 inline void GetAffectedBodies(uint32 inConstraintIdx, const Body *&outBody1, const Body *&outBody2) const
+
165 {
+
166 const ContactConstraint &constraint = mConstraints[inConstraintIdx];
+
167 outBody1 = constraint.mBody1;
+
168 outBody2 = constraint.mBody2;
+
169 }
+
+
170
+
172 template <class MotionPropertiesCallback>
+
173 void WarmStartVelocityConstraints(const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inWarmStartImpulseRatio, MotionPropertiesCallback &ioCallback);
+
174
+
205 bool SolveVelocityConstraints(const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd);
+
206
+
208 void StoreAppliedImpulses(const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd) const;
+
209
+
226 bool SolvePositionConstraints(const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd);
+
227
+
229 void RecycleConstraintBuffer();
+
230
+
232 void FinishConstraintBuffer();
+
233
+
240 void OnCCDContactAdded(ContactAllocator &ioContactAllocator, const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &outSettings);
+
241
+
242#ifdef JPH_DEBUG_RENDERER
+
243 // Drawing properties
+
244 static bool sDrawContactPoint;
+ + + +
248#endif // JPH_DEBUG_RENDERER
+
249
+
251 void SaveState(StateRecorder &inStream, const StateRecorderFilter *inFilter) const;
+
252
+
254 bool RestoreState(StateRecorder &inStream);
+
255
+
256private:
+
258 class CachedContactPoint
+
259 {
+
260 public:
+
262 void SaveState(StateRecorder &inStream) const;
+
263 void RestoreState(StateRecorder &inStream);
+
264
+
267 Float3 mPosition1;
+
268 Float3 mPosition2;
+
269
+
271 float mNonPenetrationLambda;
+
272 Vector<2> mFrictionLambda;
+
273 };
+
274
+
275 static_assert(sizeof(CachedContactPoint) == 36, "Unexpected size");
+
276 static_assert(alignof(CachedContactPoint) == 4, "Assuming 4 byte aligned");
+
277
+
279 class CachedManifold
+
280 {
+
281 public:
+
283 static int sGetRequiredExtraSize(int inNumContactPoints) { return max(0, inNumContactPoints - 1) * sizeof(CachedContactPoint); }
+
284
+
286 static int sGetRequiredTotalSize(int inNumContactPoints) { return sizeof(CachedManifold) + sGetRequiredExtraSize(inNumContactPoints); }
+
287
+
289 void SaveState(StateRecorder &inStream) const;
+
290 void RestoreState(StateRecorder &inStream);
+
291
+
293 uint32 mNextWithSameBodyPair;
+
294
+
297 Float3 mContactNormal;
+
298
+
300 enum class EFlags : uint16
+
301 {
+
302 ContactPersisted = 1,
+
303 CCDContact = 2
+
304 };
+
305
+
307 mutable atomic<uint16> mFlags { 0 };
+
308
+
310 uint16 mNumContactPoints;
+
311
+
313 CachedContactPoint mContactPoints[1];
+
314 };
+
315
+
316 static_assert(sizeof(CachedManifold) == 56, "This structure is expect to not contain any waste due to alignment");
+
317 static_assert(alignof(CachedManifold) == 4, "Assuming 4 byte aligned");
+
318
+ +
321 using MKeyValue = ManifoldMap::KeyValue;
+
322 using MKVAndCreated = pair<MKeyValue *, bool>;
+
323
+
325 class CachedBodyPair
+
326 {
+
327 public:
+
329 void SaveState(StateRecorder &inStream) const;
+
330 void RestoreState(StateRecorder &inStream);
+
331
+
334 Float3 mDeltaPosition;
+
335
+
338 Float3 mDeltaRotation;
+
339
+
341 uint32 mFirstCachedManifold;
+
342 };
+
343
+
344 static_assert(sizeof(CachedBodyPair) == 28, "Unexpected size");
+
345 static_assert(alignof(CachedBodyPair) == 4, "Assuming 4 byte aligned");
+
346
+ +
349 using BPKeyValue = BodyPairMap::KeyValue;
+
350
+
352 class ManifoldCache
+
353 {
+
354 public:
+
356 void Init(uint inMaxBodyPairs, uint inMaxContactConstraints, uint inCachedManifoldsSize);
+
357
+
359 void Clear();
+
360
+
363 void Prepare(uint inExpectedNumBodyPairs, uint inExpectedNumManifolds);
+
364
+
366 ContactAllocator GetContactAllocator() { return ContactAllocator(mAllocator, cAllocatorBlockSize); }
+
367
+
369 const MKeyValue * Find(const SubShapeIDPair &inKey, uint64 inKeyHash) const;
+
370 MKeyValue * Create(ContactAllocator &ioContactAllocator, const SubShapeIDPair &inKey, uint64 inKeyHash, int inNumContactPoints);
+
371 MKVAndCreated FindOrCreate(ContactAllocator &ioContactAllocator, const SubShapeIDPair &inKey, uint64 inKeyHash, int inNumContactPoints);
+
372 uint32 ToHandle(const MKeyValue *inKeyValue) const;
+
373 const MKeyValue * FromHandle(uint32 inHandle) const;
+
374
+
376 const BPKeyValue * Find(const BodyPair &inKey, uint64 inKeyHash) const;
+
377 BPKeyValue * Create(ContactAllocator &ioContactAllocator, const BodyPair &inKey, uint64 inKeyHash);
+
378 void GetAllBodyPairsSorted(Array<const BPKeyValue *> &outAll) const;
+
379 void GetAllManifoldsSorted(const CachedBodyPair &inBodyPair, Array<const MKeyValue *> &outAll) const;
+
380 void GetAllCCDManifoldsSorted(Array<const MKeyValue *> &outAll) const;
+
381 void ContactPointRemovedCallbacks(ContactListener *inListener);
+
382
+
383#ifdef JPH_ENABLE_ASSERTS
+
385 uint GetNumManifolds() const { return mCachedManifolds.GetNumKeyValues(); }
+
386
+
388 uint GetNumBodyPairs() const { return mCachedBodyPairs.GetNumKeyValues(); }
+
389
+
391 void Finalize();
+
392#endif
+
393
+
395 void SaveState(StateRecorder &inStream, const StateRecorderFilter *inFilter) const;
+
396 bool RestoreState(const ManifoldCache &inReadCache, StateRecorder &inStream);
+
397
+
398 private:
+
400 static constexpr uint32 cAllocatorBlockSize = 4096;
+
401
+
403 LFHMAllocator mAllocator;
+
404
+
406 ManifoldMap mCachedManifolds { mAllocator };
+
407
+
409 BodyPairMap mCachedBodyPairs { mAllocator };
+
410
+
411#ifdef JPH_ENABLE_ASSERTS
+
412 bool mIsFinalized = false;
+
413#endif
+
414 };
+
415
+
416 ManifoldCache mCache[2];
+
417 int mCacheWriteIdx = 0;
+
418
+
420 class WorldContactPoint
+
421 {
+
422 public:
+
424 void CalculateNonPenetrationConstraintProperties(const Body &inBody1, float inInvMass1, float inInvInertiaScale1, const Body &inBody2, float inInvMass2, float inInvInertiaScale2, RVec3Arg inWorldSpacePosition1, RVec3Arg inWorldSpacePosition2, Vec3Arg inWorldSpaceNormal);
+
425
+
426 template <EMotionType Type1, EMotionType Type2>
+
427 JPH_INLINE void TemplatedCalculateFrictionAndNonPenetrationConstraintProperties(float inDeltaTime, const Body &inBody1, const Body &inBody2, float inInvM1, float inInvM2, Mat44Arg inInvI1, Mat44Arg inInvI2, RVec3Arg inWorldSpacePosition1, RVec3Arg inWorldSpacePosition2, Vec3Arg inWorldSpaceNormal, Vec3Arg inWorldSpaceTangent1, Vec3Arg inWorldSpaceTangent2, const ContactSettings &inSettings, float inMinVelocityForRestitution);
+
428
+
430 AxisConstraintPart mNonPenetrationConstraint;
+
431 AxisConstraintPart mFrictionConstraint1;
+
432 AxisConstraintPart mFrictionConstraint2;
+
433
+
435 CachedContactPoint * mContactPoint;
+
436 };
+
437
+
438 using WorldContactPoints = StaticArray<WorldContactPoint, MaxContactPoints>;
+
439
+
441 class ContactConstraint
+
442 {
+
443 public:
+
444 #ifdef JPH_DEBUG_RENDERER
+
446 void Draw(DebugRenderer *inRenderer, ColorArg inManifoldColor) const;
+
447 #endif // JPH_DEBUG_RENDERER
+
448
+
450 JPH_INLINE Vec3 GetWorldSpaceNormal() const
+
451 {
+
452 return Vec3::sLoadFloat3Unsafe(mWorldSpaceNormal);
+
453 }
+
454
+
456 JPH_INLINE void GetTangents(Vec3 &outTangent1, Vec3 &outTangent2) const
+
457 {
+
458 Vec3 ws_normal = GetWorldSpaceNormal();
+
459 outTangent1 = ws_normal.GetNormalizedPerpendicular();
+
460 outTangent2 = ws_normal.Cross(outTangent1);
+
461 }
+
462
+
463 Body * mBody1;
+
464 Body * mBody2;
+
465 uint64 mSortKey;
+
466 Float3 mWorldSpaceNormal;
+
467 float mCombinedFriction;
+
468 float mInvMass1;
+
469 float mInvInertiaScale1;
+
470 float mInvMass2;
+
471 float mInvInertiaScale2;
+
472 WorldContactPoints mContactPoints;
+
473 };
+
474
+
476 template <EMotionType Type1, EMotionType Type2>
+
477 JPH_INLINE void TemplatedCalculateFrictionAndNonPenetrationConstraintProperties(ContactConstraint &ioConstraint, const ContactSettings &inSettings, float inDeltaTime, RMat44Arg inTransformBody1, RMat44Arg inTransformBody2, const Body &inBody1, const Body &inBody2);
+
478
+
480 inline void CalculateFrictionAndNonPenetrationConstraintProperties(ContactConstraint &ioConstraint, const ContactSettings &inSettings, float inDeltaTime, RMat44Arg inTransformBody1, RMat44Arg inTransformBody2, const Body &inBody1, const Body &inBody2);
+
481
+
483 template <EMotionType Type1, EMotionType Type2>
+
484 bool TemplatedAddContactConstraint(ContactAllocator &ioContactAllocator, BodyPairHandle inBodyPairHandle, Body &inBody1, Body &inBody2, const ContactManifold &inManifold);
+
485
+
487 template <EMotionType Type1, EMotionType Type2>
+
488 JPH_INLINE static void sWarmStartConstraint(ContactConstraint &ioConstraint, MotionProperties *ioMotionProperties1, MotionProperties *ioMotionProperties2, float inWarmStartImpulseRatio);
+
489
+
491 template <EMotionType Type1, EMotionType Type2>
+
492 JPH_INLINE static bool sSolveVelocityConstraint(ContactConstraint &ioConstraint, MotionProperties *ioMotionProperties1, MotionProperties *ioMotionProperties2);
+
493
+
495 const PhysicsSettings & mPhysicsSettings;
+
496
+
498 ContactListener * mContactListener = nullptr;
+
499
+
501 CombineFunction mCombineFriction = [](const Body &inBody1, const SubShapeID &, const Body &inBody2, const SubShapeID &) { return sqrt(inBody1.GetFriction() * inBody2.GetFriction()); };
+
502 CombineFunction mCombineRestitution = [](const Body &inBody1, const SubShapeID &, const Body &inBody2, const SubShapeID &) { return max(inBody1.GetRestitution(), inBody2.GetRestitution()); };
+
503
+
505 ContactConstraint * mConstraints = nullptr;
+
506 uint32 mMaxConstraints = 0;
+
507 atomic<uint32> mNumConstraints { 0 };
+
508
+
510 PhysicsUpdateContext * mUpdateContext;
+
511};
+
+
512
+ + + +
ValidateResult
Definition ContactListener.h:57
+
@ AcceptAllContactsForThisBodyPair
Accept this and any further contact points for this body pair.
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
std::uint64_t uint64
Definition Core.h:456
+
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
+
std::uint16_t uint16
Definition Core.h:454
+ + +
EPhysicsUpdateError
Enum used by PhysicsSystem to report error conditions during the PhysicsSystem::Update call....
Definition EPhysicsUpdateError.h:11
+ + + + +
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ + + +
Definition Array.h:36
+
Definition AxisConstraintPart.h:43
+
Definition Body.h:35
+
float GetRestitution() const
Restitution (dimensionless number, usually between 0 and 1, 0 = completely inelastic collision respon...
Definition Body.h:140
+
float GetFriction() const
Friction (dimensionless number, usually between 0 and 1, 0 = no friction, 1 = friction force equals f...
Definition Body.h:136
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Class that contains all information of two colliding shapes.
Definition CollideShape.h:19
+
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
Contacts are allocated in a lock free hash map.
Definition ContactConstraintManager.h:80
+
Definition ContactConstraintManager.h:28
+
static bool sDrawContactPoint
Definition ContactConstraintManager.h:244
+
CombineFunction GetCombineFriction() const
Definition ContactConstraintManager.h:53
+
CombineFunction GetCombineRestitution() const
Definition ContactConstraintManager.h:58
+
ValidateResult ValidateContactPoint(const Body &inBody1, const Body &inBody2, RVec3Arg inBaseOffset, const CollideShapeResult &inCollisionResult) const
Check with the listener if inBody1 and inBody2 could collide, returns false if not.
Definition ContactConstraintManager.h:64
+
uint32 GetMaxConstraints() const
Get the max number of contact constraints that are allowed.
Definition ContactConstraintManager.h:61
+
static bool sDrawContactPointReduction
Definition ContactConstraintManager.h:246
+
void * BodyPairHandle
Handle used to keep track of the current body pair.
Definition ContactConstraintManager.h:98
+
ContactListener * GetContactListener() const
Definition ContactConstraintManager.h:43
+
static bool sDrawSupportingFaces
Definition ContactConstraintManager.h:245
+
void GetAffectedBodies(uint32 inConstraintIdx, const Body *&outBody1, const Body *&outBody2) const
Get the affected bodies for a given constraint.
Definition ContactConstraintManager.h:164
+
uint32 GetNumConstraints() const
Get the number of contact constraints that were found.
Definition ContactConstraintManager.h:158
+
void SetCombineFriction(CombineFunction inCombineFriction)
Definition ContactConstraintManager.h:52
+
void SetContactListener(ContactListener *inListener)
Listener that is notified whenever a contact point between two bodies is added/updated/removed.
Definition ContactConstraintManager.h:42
+
float(*)(const Body &inBody1, const SubShapeID &inSubShapeID1, const Body &inBody2, const SubShapeID &inSubShapeID2) CombineFunction
Definition ContactConstraintManager.h:48
+
void SetCombineRestitution(CombineFunction inCombineRestitution)
Definition ContactConstraintManager.h:57
+
ContactAllocator GetContactAllocator()
Get a new allocator context for storing contacts. Note that you should call this once and then add mu...
Definition ContactConstraintManager.h:90
+
static bool sDrawContactManifolds
Definition ContactConstraintManager.h:247
+
Definition ContactListener.h:69
+
Manifold class, describes the contact surface between two bodies.
Definition ContactListener.h:20
+
Definition ContactListener.h:41
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
Definition LockFreeHashMap.h:49
+
LFHMAllocatorContext(LFHMAllocator &inAllocator, uint32 inBlockSize)
Construct a new allocator context.
Definition LockFreeHashMap.inl:80
+
Allocator for a lock free hash map.
Definition LockFreeHashMap.h:14
+
Definition LockFreeHashMap.h:72
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...
Definition MotionProperties.h:29
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Information used during the Update call.
Definition PhysicsUpdateContext.h:24
+
User callbacks that allow determining which parts of the simulation should be saved by a StateRecorde...
Definition StateRecorder.h:29
+
Definition StateRecorder.h:48
+
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...
Definition SubShapeID.h:23
+
A pair of bodies and their sub shape ID's. Can be used as a key in a map to find a contact point.
Definition SubShapeIDPair.h:15
+
Definition Vec3.h:17
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE Vec3 GetNormalizedPerpendicular() const
Get normalized vector that is perpendicular to this vector.
Definition Vec3.inl:820
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
Templatized vector class.
Definition Vector.h:12
+
Structure that holds a body pair.
Definition BodyPair.h:14
+
Definition PhysicsSettings.h:28
+
+
+ + + + diff --git a/_contact_listener_8h.html b/_contact_listener_8h.html new file mode 100644 index 000000000..12cb14cb5 --- /dev/null +++ b/_contact_listener_8h.html @@ -0,0 +1,199 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ContactListener.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ContactListener.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + +

+Classes

class  ContactManifold
 Manifold class, describes the contact surface between two bodies. More...
 
class  ContactSettings
 
class  ContactListener
 
+ + + + +

+Typedefs

using ContactPoints = StaticArray< Vec3, 64 >
 Array of contact points.
 
+ + + +

+Enumerations

enum class  ValidateResult { AcceptAllContactsForThisBodyPair +, AcceptContact +, RejectContact +, RejectAllContactsForThisBodyPair + }
 
+

Typedef Documentation

+ +

◆ ContactPoints

+ +
+
+ + + + +
using ContactPoints = StaticArray<Vec3, 64>
+
+ +

Array of contact points.

+ +
+
+

Enumeration Type Documentation

+ +

◆ ValidateResult

+ +
+
+ + + + + +
+ + + + +
enum class ValidateResult
+
+strong
+
+

Return value for the OnContactValidate callback. Determines if the contact is being processed or not. Results are ordered so that the strongest accept has the lowest number and the strongest reject the highest number (which allows for easy combining of results)

+ + + + + +
Enumerator
AcceptAllContactsForThisBodyPair 

Accept this and any further contact points for this body pair.

+
AcceptContact 

Accept this contact only (and continue calling this callback for every contact manifold for the same body pair)

+
RejectContact 

Reject this contact only (but process any other contact manifolds for the same body pair)

+
RejectAllContactsForThisBodyPair 

Rejects this and any further contact points for this body pair.

+
+ +
+
+
+
+ + + + diff --git a/_contact_listener_8h.js b/_contact_listener_8h.js new file mode 100644 index 000000000..cb1850989 --- /dev/null +++ b/_contact_listener_8h.js @@ -0,0 +1,13 @@ +var _contact_listener_8h = +[ + [ "ContactManifold", "class_contact_manifold.html", "class_contact_manifold" ], + [ "ContactSettings", "class_contact_settings.html", "class_contact_settings" ], + [ "ContactListener", "class_contact_listener.html", "class_contact_listener" ], + [ "ContactPoints", "_contact_listener_8h.html#ac6f5f34116f161cc13203803010c37c1", null ], + [ "ValidateResult", "_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93c", [ + [ "AcceptAllContactsForThisBodyPair", "_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93ca8796185ae90c58f159c3940f24112507", null ], + [ "AcceptContact", "_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93cac965aae814c53bfa33f418d5187d4cdc", null ], + [ "RejectContact", "_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93ca4c312fb94f5fa9ebabb3968b56ed0221", null ], + [ "RejectAllContactsForThisBodyPair", "_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93ca0e08391f08898fa9bd658afcbd26e2c0", null ] + ] ] +]; \ No newline at end of file diff --git a/_contact_listener_8h_source.html b/_contact_listener_8h_source.html new file mode 100644 index 000000000..16db31888 --- /dev/null +++ b/_contact_listener_8h_source.html @@ -0,0 +1,241 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ContactListener.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ContactListener.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
+ + +
9
+ +
11
+
12class Body;
+ +
14
+ +
17
+ +
37
+ +
53
+ +
63
+
+ +
69{
+
70public:
+
72 virtual ~ContactListener() = default;
+
73
+
83 virtual ValidateResult OnContactValidate([[maybe_unused]] const Body &inBody1, [[maybe_unused]] const Body &inBody2, [[maybe_unused]] RVec3Arg inBaseOffset, [[maybe_unused]] const CollideShapeResult &inCollisionResult) { return ValidateResult::AcceptAllContactsForThisBodyPair; }
+
84
+
93 virtual void OnContactAdded([[maybe_unused]] const Body &inBody1, [[maybe_unused]] const Body &inBody2, [[maybe_unused]] const ContactManifold &inManifold, [[maybe_unused]] ContactSettings &ioSettings) { /* Do nothing */ }
+
94
+
103 virtual void OnContactPersisted([[maybe_unused]] const Body &inBody1, [[maybe_unused]] const Body &inBody2, [[maybe_unused]] const ContactManifold &inManifold, [[maybe_unused]] ContactSettings &ioSettings) { /* Do nothing */ }
+
104
+
116 virtual void OnContactRemoved([[maybe_unused]] const SubShapeIDPair &inSubShapePair) { /* Do nothing */ }
+
117};
+
+
118
+ +
ValidateResult
Definition ContactListener.h:57
+
@ RejectAllContactsForThisBodyPair
Rejects this and any further contact points for this body pair.
+
@ RejectContact
Reject this contact only (but process any other contact manifolds for the same body pair)
+
@ AcceptAllContactsForThisBodyPair
Accept this and any further contact points for this body pair.
+
@ AcceptContact
Accept this contact only (and continue calling this callback for every contact manifold for the same ...
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
Definition Body.h:35
+
Class that contains all information of two colliding shapes.
Definition CollideShape.h:19
+
Definition ContactListener.h:69
+
virtual ~ContactListener()=default
Ensure virtual destructor.
+
virtual void OnContactPersisted(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &ioSettings)
Definition ContactListener.h:103
+
virtual ValidateResult OnContactValidate(const Body &inBody1, const Body &inBody2, RVec3Arg inBaseOffset, const CollideShapeResult &inCollisionResult)
Definition ContactListener.h:83
+
virtual void OnContactAdded(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &ioSettings)
Definition ContactListener.h:93
+
virtual void OnContactRemoved(const SubShapeIDPair &inSubShapePair)
Definition ContactListener.h:116
+
Manifold class, describes the contact surface between two bodies.
Definition ContactListener.h:20
+
RVec3 GetWorldSpaceContactPointOn1(uint inIndex) const
Access to the world space contact positions.
Definition ContactListener.h:26
+
RVec3 GetWorldSpaceContactPointOn2(uint inIndex) const
Definition ContactListener.h:27
+
ContactManifold SwapShapes() const
Swaps shape 1 and 2.
Definition ContactListener.h:23
+
SubShapeID mSubShapeID2
Definition ContactListener.h:33
+
RVec3 mBaseOffset
Offset to which all the contact points are relative.
Definition ContactListener.h:29
+
ContactPoints mRelativeContactPointsOn2
Contact points on the surface of shape 2 relative to mBaseOffset. If there's no penetration,...
Definition ContactListener.h:35
+
ContactPoints mRelativeContactPointsOn1
Contact points on the surface of shape 1 relative to mBaseOffset.
Definition ContactListener.h:34
+
Vec3 mWorldSpaceNormal
Normal for this manifold, direction along which to move body 2 out of collision along the shortest pa...
Definition ContactListener.h:30
+
SubShapeID mSubShapeID1
Sub shapes that formed this manifold (note that when multiple manifolds are combined because they're ...
Definition ContactListener.h:32
+
float mPenetrationDepth
Penetration depth (move shape 2 by this distance to resolve the collision). If this value is negative...
Definition ContactListener.h:31
+
Definition ContactListener.h:41
+
bool mIsSensor
If the contact should be treated as a sensor vs body contact (no collision response)
Definition ContactListener.h:49
+
float mInvMassScale2
Scale factor for the inverse mass of body 2 (0 = infinite mass, 1 = use original mass,...
Definition ContactListener.h:47
+
Vec3 mRelativeLinearSurfaceVelocity
Relative linear surface velocity between the bodies (world space surface velocity of body 2 - world s...
Definition ContactListener.h:50
+
Vec3 mRelativeAngularSurfaceVelocity
Relative angular surface velocity between the bodies (world space angular surface velocity of body 2 ...
Definition ContactListener.h:51
+
float mInvInertiaScale2
Scale factor for the inverse inertia of body 2 (usually same as mInvMassScale2)
Definition ContactListener.h:48
+
float mInvMassScale1
Scale factor for the inverse mass of body 1 (0 = infinite mass, 1 = use original mass,...
Definition ContactListener.h:45
+
float mCombinedFriction
Combined friction for the body pair (see: PhysicsSystem::SetCombineFriction)
Definition ContactListener.h:43
+
float mInvInertiaScale1
Scale factor for the inverse inertia of body 1 (usually same as mInvMassScale1)
Definition ContactListener.h:46
+
float mCombinedRestitution
Combined restitution for the body pair (see: PhysicsSystem::SetCombineRestitution)
Definition ContactListener.h:44
+ +
A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...
Definition SubShapeID.h:23
+
A pair of bodies and their sub shape ID's. Can be used as a key in a map to find a contact point.
Definition SubShapeIDPair.h:15
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_convex_hull_builder2_d_8cpp.html b/_convex_hull_builder2_d_8cpp.html new file mode 100644 index 000000000..3b6155022 --- /dev/null +++ b/_convex_hull_builder2_d_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/ConvexHullBuilder2D.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullBuilder2D.cpp File Reference
+
+
+
+
+ + + + diff --git a/_convex_hull_builder2_d_8h.html b/_convex_hull_builder2_d_8h.html new file mode 100644 index 000000000..ae124c105 --- /dev/null +++ b/_convex_hull_builder2_d_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/ConvexHullBuilder2D.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullBuilder2D.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  ConvexHullBuilder2D
 A convex hull builder that tries to create 2D hulls as accurately as possible. Used for offline processing. More...
 
+
+
+ + + + diff --git a/_convex_hull_builder2_d_8h.js b/_convex_hull_builder2_d_8h.js new file mode 100644 index 000000000..3bbe85d36 --- /dev/null +++ b/_convex_hull_builder2_d_8h.js @@ -0,0 +1,4 @@ +var _convex_hull_builder2_d_8h = +[ + [ "ConvexHullBuilder2D", "class_convex_hull_builder2_d.html", "class_convex_hull_builder2_d" ] +]; \ No newline at end of file diff --git a/_convex_hull_builder2_d_8h_source.html b/_convex_hull_builder2_d_8h_source.html new file mode 100644 index 000000000..7612cf312 --- /dev/null +++ b/_convex_hull_builder2_d_8h_source.html @@ -0,0 +1,216 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/ConvexHullBuilder2D.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullBuilder2D.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
+
9//#define JPH_CONVEX_BUILDER_2D_DEBUG
+
10
+ +
12
+
+ +
15{
+
16public:
+ + +
19
+
22 explicit ConvexHullBuilder2D(const Positions &inPositions);
+
23
+ +
26
+
+
28 enum class EResult
+
29 {
+
30 Success,
+
31 MaxVerticesReached,
+
32 };
+
+
33
+
41 EResult Initialize(int inIdx1, int inIdx2, int inIdx3, int inMaxVertices, float inTolerance, Edges &outEdges);
+
42
+
43private:
+
44#ifdef JPH_CONVEX_BUILDER_2D_DEBUG
+
46 static constexpr Real cDrawScale = 10;
+
47#endif
+
48
+
49 class Edge;
+
50
+
52 void FreeEdges();
+
53
+
57 void AssignPointToEdge(int inPositionIdx, const Array<Edge *> &inEdges) const;
+
58
+
59#ifdef JPH_CONVEX_BUILDER_2D_DEBUG
+
61 void DrawState();
+
62#endif
+
63
+
64#ifdef JPH_ENABLE_ASSERTS
+
66 void ValidateEdges() const;
+
67#endif
+
68
+
69 using ConflictList = Array<int>;
+
70
+
72 class Edge
+
73 {
+
74 public:
+ +
76
+
78 explicit Edge(int inStartIdx) : mStartIdx(inStartIdx) { }
+
79
+
81 void CalculateNormalAndCenter(const Vec3 *inPositions);
+
82
+
84 inline bool IsFacing(Vec3Arg inPosition) const { return mNormal.Dot(inPosition - mCenter) > 0.0f; }
+
85
+
86 Vec3 mNormal;
+
87 Vec3 mCenter;
+
88 ConflictList mConflictList;
+
89 Edge * mPrevEdge = nullptr;
+
90 Edge * mNextEdge = nullptr;
+
91 int mStartIdx;
+
92 float mFurthestPointDistanceSq = 0.0f;
+
93 };
+
94
+
95 const Positions & mPositions;
+
96 Edge * mFirstEdge = nullptr;
+
97 int mNumEdges = 0;
+
98
+
99#ifdef JPH_CONVEX_BUILDER_2D_DEBUG
+
100 RVec3 mOffset;
+
101 Vec3 mDelta;
+
102#endif
+
103};
+
+
104
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#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
+ +
float Real
Definition Real.h:27
+ +
A convex hull builder that tries to create 2D hulls as accurately as possible. Used for offline proce...
Definition ConvexHullBuilder2D.h:15
+
EResult
Result enum that indicates how the hull got created.
Definition ConvexHullBuilder2D.h:29
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_convex_hull_builder_8cpp.html b/_convex_hull_builder_8cpp.html new file mode 100644 index 000000000..86a5b17cf --- /dev/null +++ b/_convex_hull_builder_8cpp.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/ConvexHullBuilder.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullBuilder.cpp File Reference
+
+
+
+
+ + + + diff --git a/_convex_hull_builder_8h.html b/_convex_hull_builder_8h.html new file mode 100644 index 000000000..514708157 --- /dev/null +++ b/_convex_hull_builder_8h.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/ConvexHullBuilder.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullBuilder.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Classes

class  ConvexHullBuilder
 A convex hull builder that tries to create hulls as accurately as possible. Used for offline processing. More...
 
class  ConvexHullBuilder::Edge
 Class that holds the information of an edge. More...
 
class  ConvexHullBuilder::Face
 Class that holds the information of one face. More...
 
+
+
+ + + + diff --git a/_convex_hull_builder_8h.js b/_convex_hull_builder_8h.js new file mode 100644 index 000000000..5487312c2 --- /dev/null +++ b/_convex_hull_builder_8h.js @@ -0,0 +1,6 @@ +var _convex_hull_builder_8h = +[ + [ "ConvexHullBuilder", "class_convex_hull_builder.html", "class_convex_hull_builder" ], + [ "ConvexHullBuilder::Edge", "class_convex_hull_builder_1_1_edge.html", "class_convex_hull_builder_1_1_edge" ], + [ "ConvexHullBuilder::Face", "class_convex_hull_builder_1_1_face.html", "class_convex_hull_builder_1_1_face" ] +]; \ No newline at end of file diff --git a/_convex_hull_builder_8h_source.html b/_convex_hull_builder_8h_source.html new file mode 100644 index 000000000..9841c4ffc --- /dev/null +++ b/_convex_hull_builder_8h_source.html @@ -0,0 +1,362 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/ConvexHullBuilder.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullBuilder.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
+
7//#define JPH_CONVEX_BUILDER_DEBUG
+
8//#define JPH_CONVEX_BUILDER_DUMP_SHAPE
+
9
+
10#ifdef JPH_CONVEX_BUILDER_DEBUG
+
11 #include <Jolt/Core/Color.h>
+
12#endif
+
13
+ + +
16
+ +
18
+
+ +
21{
+
22public:
+
23 // Forward declare
+
24 class Face;
+
25
+
+
27 class Edge : public NonCopyable
+
28 {
+
29 public:
+ +
31
+
33 Edge(Face *inFace, int inStartIdx) : mFace(inFace), mStartIdx(inStartIdx) { }
+
34
+
+ +
37 {
+
38 Edge *prev_edge = this;
+
39 while (prev_edge->mNextEdge != this)
+
40 prev_edge = prev_edge->mNextEdge;
+
41 return prev_edge;
+
42 }
+
+
43
+ +
45 Edge * mNextEdge = nullptr;
+
46 Edge * mNeighbourEdge = nullptr;
+ +
48 };
+
+
49
+ +
51
+
+
53 class Face : public NonCopyable
+
54 {
+
55 public:
+ +
57
+
59 ~Face();
+
60
+
62 void Initialize(int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions);
+
63
+
65 void CalculateNormalAndCentroid(const Vec3 *inPositions);
+
66
+
+
68 inline bool IsFacing(Vec3Arg inPosition) const
+
69 {
+
70 JPH_ASSERT(!mRemoved);
+
71 return mNormal.Dot(inPosition - mCentroid) > 0.0f;
+
72 }
+
+
73
+ + + +
77 Edge * mFirstEdge = nullptr;
+
78 float mFurthestPointDistanceSq = 0.0f;
+
79 bool mRemoved = false;
+
80#ifdef JPH_CONVEX_BUILDER_DEBUG
+
81 int mIteration;
+
82#endif
+
83 };
+
+
84
+
85 // Typedefs
+ + +
88
+
90 explicit ConvexHullBuilder(const Positions &inPositions);
+
91
+
93 ~ConvexHullBuilder() { FreeFaces(); }
+
94
+
+
96 enum class EResult
+
97 {
+
98 Success,
+
99 MaxVerticesReached,
+
100 TooFewPoints,
+
101 TooFewFaces,
+
102 Degenerate,
+
103 };
+
+
104
+
111 EResult Initialize(int inMaxVertices, float inTolerance, const char *&outError);
+
112
+
114 int GetNumVerticesUsed() const;
+
115
+
117 bool ContainsFace(const Array<int> &inIndices) const;
+
118
+
120 void GetCenterOfMassAndVolume(Vec3 &outCenterOfMass, float &outVolume) const;
+
121
+
127 void DetermineMaxError(Face *&outFaceWithMaxError, float &outMaxError, int &outMaxErrorPositionIdx, float &outCoplanarDistance) const;
+
128
+
130 const Faces & GetFaces() const { return mFaces; }
+
131
+
132private:
+
134 static constexpr float cMinTriangleAreaSq = 1.0e-12f;
+
135
+
136#ifdef JPH_CONVEX_BUILDER_DEBUG
+
138 static constexpr Real cDrawScale = 10;
+
139#endif
+
140
+
142 class FullEdge
+
143 {
+
144 public:
+
145 Edge * mNeighbourEdge;
+
146 int mStartIdx;
+
147 int mEndIdx;
+
148 };
+
149
+
150 // Private typedefs
+
151 using FullEdges = Array<FullEdge>;
+
152
+
153 // Determine a suitable tolerance for detecting that points are coplanar
+
154 float DetermineCoplanarDistance() const;
+
155
+
161 void GetFaceForPoint(Vec3Arg inPoint, const Faces &inFaces, Face *&outFace, float &outDistSq) const;
+
162
+
167 float GetDistanceToEdgeSq(Vec3Arg inPoint, const Face *inFace) const;
+
168
+
174 bool AssignPointToFace(int inPositionIdx, const Faces &inFaces, float inToleranceSq);
+
175
+
177 void AddPoint(Face *inFacingFace, int inIdx, float inToleranceSq, Faces &outNewFaces);
+
178
+
180 void GarbageCollectFaces();
+
181
+
183 Face * CreateFace();
+
184
+
186 Face * CreateTriangle(int inIdx1, int inIdx2, int inIdx3);
+
187
+
189 void FreeFace(Face *inFace);
+
190
+
192 void FreeFaces();
+
193
+
195 static void sLinkFace(Edge *inEdge1, Edge *inEdge2);
+
196
+
198 static void sUnlinkFace(Face *inFace);
+
199
+
202 void FindEdge(Face *inFacingFace, Vec3Arg inVertex, FullEdges &outEdges) const;
+
203
+
205 void MergeFaces(Edge *inEdge);
+
206
+
208 void MergeDegenerateFace(Face *inFace, Faces &ioAffectedFaces);
+
209
+
212 void MergeCoplanarOrConcaveFaces(Face *inFace, float inToleranceSq, Faces &ioAffectedFaces);
+
213
+
215 static void sMarkAffected(Face *inFace, Faces &ioAffectedFaces);
+
216
+
221 void RemoveInvalidEdges(Face *inFace, Faces &ioAffectedFaces);
+
222
+
226 bool RemoveTwoEdgeFace(Face *inFace, Faces &ioAffectedFaces) const;
+
227
+
228#ifdef JPH_ENABLE_ASSERTS
+
230 void DumpFace(const Face *inFace) const;
+
231
+
233 void DumpFaces() const;
+
234
+
236 void ValidateFace(const Face *inFace) const;
+
237
+
239 void ValidateFaces() const;
+
240#endif
+
241
+
242#ifdef JPH_CONVEX_BUILDER_DEBUG
+
244 void DrawState(bool inDrawConflictList = false) const;
+
245
+
247 void DrawWireFace(const Face *inFace, ColorArg inColor) const;
+
248
+
250 void DrawEdge(const Edge *inEdge, ColorArg inColor) const;
+
251#endif
+
252
+
253#ifdef JPH_CONVEX_BUILDER_DUMP_SHAPE
+
254 void DumpShape() const;
+
255#endif
+
256
+
257 const Positions & mPositions;
+
258 Faces mFaces;
+
259
+
260 struct Coplanar
+
261 {
+
262 int mPositionIdx;
+
263 float mDistanceSq;
+
264 };
+
265 using CoplanarList = Array<Coplanar>;
+
266
+
267 CoplanarList mCoplanarList;
+
268
+
269#ifdef JPH_CONVEX_BUILDER_DEBUG
+
270 int mIteration;
+
271 mutable RVec3 mOffset;
+
272 Vec3 mDelta;
+
273#endif
+
274};
+
+
275
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
float Real
Definition Real.h:27
+ + +
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
Class that holds the information of an edge.
Definition ConvexHullBuilder.h:28
+
JPH_OVERRIDE_NEW_DELETE Edge(Face *inFace, int inStartIdx)
Constructor.
Definition ConvexHullBuilder.h:33
+
Edge * mNextEdge
Next edge of this face.
Definition ConvexHullBuilder.h:45
+
int mStartIdx
Vertex index in mPositions that indicates the start vertex of this edge.
Definition ConvexHullBuilder.h:47
+
Face * mFace
Face that this edge belongs to.
Definition ConvexHullBuilder.h:44
+
Edge * GetPreviousEdge()
Get the previous edge.
Definition ConvexHullBuilder.h:36
+
Class that holds the information of one face.
Definition ConvexHullBuilder.h:54
+
Vec3 mCentroid
Center of the face.
Definition ConvexHullBuilder.h:75
+
bool IsFacing(Vec3Arg inPosition) const
Check if face inFace is facing inPosition.
Definition ConvexHullBuilder.h:68
+
Vec3 mNormal
Normal of this face, length is 2 times area of face.
Definition ConvexHullBuilder.h:74
+
ConflictList mConflictList
Positions associated with this edge (that are closest to this edge). The last position in the list is...
Definition ConvexHullBuilder.h:76
+
A convex hull builder that tries to create hulls as accurately as possible. Used for offline processi...
Definition ConvexHullBuilder.h:21
+
const Faces & GetFaces() const
Access to the created faces. Memory is owned by the convex hull builder.
Definition ConvexHullBuilder.h:130
+
~ConvexHullBuilder()
Destructor.
Definition ConvexHullBuilder.h:93
+
EResult
Result enum that indicates how the hull got created.
Definition ConvexHullBuilder.h:97
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_convex_hull_shape_8cpp.html b/_convex_hull_shape_8cpp.html new file mode 100644 index 000000000..059dda627 --- /dev/null +++ b/_convex_hull_shape_8cpp.html @@ -0,0 +1,170 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/ConvexHullShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullShape.cpp File Reference
+
+
+ + + + + + + + + + +

+Classes

class  ConvexHullShape::HullNoConvex
 
class  ConvexHullShape::HullWithConvex
 
class  ConvexHullShape::HullWithConvexScaled
 
class  ConvexHullShape::CHSGetTrianglesContext
 
+ + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (ConvexHullShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (ConvexHullShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_convex_hull_shape_8cpp.js b/_convex_hull_shape_8cpp.js new file mode 100644 index 000000000..6baa44676 --- /dev/null +++ b/_convex_hull_shape_8cpp.js @@ -0,0 +1,8 @@ +var _convex_hull_shape_8cpp = +[ + [ "ConvexHullShape::HullNoConvex", "class_convex_hull_shape_1_1_hull_no_convex.html", "class_convex_hull_shape_1_1_hull_no_convex" ], + [ "ConvexHullShape::HullWithConvex", "class_convex_hull_shape_1_1_hull_with_convex.html", "class_convex_hull_shape_1_1_hull_with_convex" ], + [ "ConvexHullShape::HullWithConvexScaled", "class_convex_hull_shape_1_1_hull_with_convex_scaled.html", "class_convex_hull_shape_1_1_hull_with_convex_scaled" ], + [ "ConvexHullShape::CHSGetTrianglesContext", "class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html", "class_convex_hull_shape_1_1_c_h_s_get_triangles_context" ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_convex_hull_shape_8cpp.html#a1117da9e9762ac1d9953954311651b38", null ] +]; \ No newline at end of file diff --git a/_convex_hull_shape_8h.html b/_convex_hull_shape_8h.html new file mode 100644 index 000000000..47ff709da --- /dev/null +++ b/_convex_hull_shape_8h.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/ConvexHullShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  ConvexHullShapeSettings
 Class that constructs a ConvexHullShape. More...
 
class  ConvexHullShape
 A convex hull. More...
 
+
+
+ + + + diff --git a/_convex_hull_shape_8h.js b/_convex_hull_shape_8h.js new file mode 100644 index 000000000..147cf86a0 --- /dev/null +++ b/_convex_hull_shape_8h.js @@ -0,0 +1,5 @@ +var _convex_hull_shape_8h = +[ + [ "ConvexHullShapeSettings", "class_convex_hull_shape_settings.html", "class_convex_hull_shape_settings" ], + [ "ConvexHullShape", "class_convex_hull_shape.html", "class_convex_hull_shape" ] +]; \ No newline at end of file diff --git a/_convex_hull_shape_8h_source.html b/_convex_hull_shape_8h_source.html new file mode 100644 index 000000000..a6987cd07 --- /dev/null +++ b/_convex_hull_shape_8h_source.html @@ -0,0 +1,367 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/ConvexHullShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullShape.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
+ + + +
10#ifdef JPH_DEBUG_RENDERER
+ +
12#endif // JPH_DEBUG_RENDERER
+
13
+ +
15
+
+ +
18{
+
19public:
+ +
21
+
22
+ +
24
+
27 ConvexHullShapeSettings(const Vec3 *inPoints, int inNumPoints, float inMaxConvexRadius = cDefaultConvexRadius, const PhysicsMaterial *inMaterial = nullptr) : ConvexShapeSettings(inMaterial), mPoints(inPoints, inPoints + inNumPoints), mMaxConvexRadius(inMaxConvexRadius) { }
+
28 ConvexHullShapeSettings(const Array<Vec3> &inPoints, float inConvexRadius = cDefaultConvexRadius, const PhysicsMaterial *inMaterial = nullptr) : ConvexShapeSettings(inMaterial), mPoints(inPoints), mMaxConvexRadius(inConvexRadius) { }
+
29
+
30 // See: ShapeSettings
+
31 virtual ShapeResult Create() const override;
+
32
+ +
34 float mMaxConvexRadius = 0.0f;
+
35 float mMaxErrorConvexRadius = 0.05f;
+
36 float mHullTolerance = 1.0e-3f;
+
37};
+
+
38
+
+ +
41{
+
42public:
+ +
44
+
47 static constexpr int cMaxPointsInHull = 256;
+
48
+ +
51 ConvexHullShape(const ConvexHullShapeSettings &inSettings, ShapeResult &outResult);
+
52
+
53 // See Shape::GetCenterOfMass
+
54 virtual Vec3 GetCenterOfMass() const override { return mCenterOfMass; }
+
55
+
56 // See Shape::GetLocalBounds
+
57 virtual AABox GetLocalBounds() const override { return mLocalBounds; }
+
58
+
59 // See Shape::GetInnerRadius
+
60 virtual float GetInnerRadius() const override { return mInnerRadius; }
+
61
+
62 // See Shape::GetMassProperties
+
63 virtual MassProperties GetMassProperties() const override;
+
64
+
65 // See Shape::GetSurfaceNormal
+
66 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
67
+
68 // See Shape::GetSupportingFace
+
69 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
70
+
71 // See ConvexShape::GetSupportFunction
+
72 virtual const Support * GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override;
+
73
+
74 // See Shape::GetSubmergedVolume
+
75 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override;
+
76
+
77#ifdef JPH_DEBUG_RENDERER
+
78 // See Shape::Draw
+
79 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
80
+
82 void DrawShrunkShape(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const;
+
83#endif // JPH_DEBUG_RENDERER
+
84
+
85 // See Shape::CastRay
+
86 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
87 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
88
+
89 // See: Shape::CollidePoint
+
90 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
91
+
92 // See: Shape::CollideSoftBodyVertices
+
93 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
94
+
95 // See Shape::GetTrianglesStart
+
96 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override;
+
97
+
98 // See Shape::GetTrianglesNext
+
99 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override;
+
100
+
101 // See Shape
+
102 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
103
+
104 // See Shape::GetStats
+
105 virtual Stats GetStats() const override;
+
106
+
107 // See Shape::GetVolume
+
108 virtual float GetVolume() const override { return mVolume; }
+
109
+
111 float GetConvexRadius() const { return mConvexRadius; }
+
112
+
114 const Array<Plane> & GetPlanes() const { return mPlanes; }
+
115
+
117 inline uint GetNumPoints() const { return uint(mPoints.size()); }
+
118
+
120 inline Vec3 GetPoint(uint inIndex) const { return mPoints[inIndex].mPosition; }
+
121
+
123 inline uint GetNumFaces() const { return uint(mFaces.size()); }
+
124
+
126 inline uint GetNumVerticesInFace(uint inFaceIndex) const { return mFaces[inFaceIndex].mNumVertices; }
+
127
+
+
133 inline uint GetFaceVertices(uint inFaceIndex, uint inMaxVertices, uint *outVertices) const
+
134 {
+
135 const Face &face = mFaces[inFaceIndex];
+
136 const uint8 *first_vertex = mVertexIdx.data() + face.mFirstVertex;
+
137 uint num_vertices = min<uint>(face.mNumVertices, inMaxVertices);
+
138 for (uint i = 0; i < num_vertices; ++i)
+
139 outVertices[i] = first_vertex[i];
+
140 return face.mNumVertices;
+
141 }
+
+
142
+
143 // Register shape functions with the registry
+
144 static void sRegister();
+
145
+
146#ifdef JPH_DEBUG_RENDERER
+
148 inline static bool sDrawFaceOutlines = false;
+
149#endif // JPH_DEBUG_RENDERER
+
150
+
151protected:
+
152 // See: Shape::RestoreBinaryState
+
153 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
154
+
155private:
+
157 bool CastRayHelper(const RayCast &inRay, float &outMinFraction, float &outMaxFraction) const;
+
158
+ +
161
+
163 class HullNoConvex;
+
164 class HullWithConvex;
+ +
166
+
167 struct Face
+
168 {
+
169 uint16 mFirstVertex;
+
170 uint16 mNumVertices = 0;
+
171 };
+
172
+
173 static_assert(sizeof(Face) == 4, "Unexpected size");
+
174 static_assert(alignof(Face) == 2, "Unexpected alignment");
+
175
+
176 struct Point
+
177 {
+
178 Vec3 mPosition;
+
179 int mNumFaces = 0;
+
180 int mFaces[3] = { -1, -1, -1 };
+
181 };
+
182
+
183 static_assert(sizeof(Point) == 32, "Unexpected size");
+
184 static_assert(alignof(Point) == JPH_VECTOR_ALIGNMENT, "Unexpected alignment");
+
185
+
186 Vec3 mCenterOfMass;
+
187 Mat44 mInertia;
+
188 AABox mLocalBounds;
+
189 Array<Point> mPoints;
+
190 Array<Face> mFaces;
+
191 Array<Plane> mPlanes;
+
192 Array<uint8> mVertexIdx;
+
193 float mConvexRadius = 0.0f;
+
194 float mVolume;
+
195 float mInnerRadius = FLT_MAX;
+
196
+
197#ifdef JPH_DEBUG_RENDERER
+
198 mutable DebugRenderer::GeometryRef mGeometry;
+
199#endif // JPH_DEBUG_RENDERER
+
200};
+
+
201
+ + + +
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
+
#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_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
constexpr float cDefaultConvexRadius
How much padding to add around objects.
Definition PhysicsSettings.h:16
+ +
#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:76
+ +
Axis aligned box.
Definition AABox.h:16
+
Definition Array.h:36
+
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
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
+
Definition ConvexHullShape.cpp:1169
+
Definition ConvexHullShape.cpp:397
+
Definition ConvexHullShape.cpp:449
+
Definition ConvexHullShape.cpp:488
+
A convex hull.
Definition ConvexHullShape.h:41
+
virtual Vec3 GetCenterOfMass() const override
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition ConvexHullShape.h:54
+
virtual float GetVolume() const override
Definition ConvexHullShape.h:108
+
uint GetFaceVertices(uint inFaceIndex, uint inMaxVertices, uint *outVertices) const
Definition ConvexHullShape.h:133
+
virtual float GetInnerRadius() const override
Definition ConvexHullShape.h:60
+
virtual AABox GetLocalBounds() const override
Get local bounding box including convex radius, this box is centered around the center of mass rather...
Definition ConvexHullShape.h:57
+
uint GetNumVerticesInFace(uint inFaceIndex) const
Get the number of vertices in a face.
Definition ConvexHullShape.h:126
+
Vec3 GetPoint(uint inIndex) const
Get a vertex of this convex hull relative to the center of mass.
Definition ConvexHullShape.h:120
+
const Array< Plane > & GetPlanes() const
Get the planes of this convex hull.
Definition ConvexHullShape.h:114
+
uint GetNumFaces() const
Get the number of faces in this convex hull.
Definition ConvexHullShape.h:123
+
ConvexHullShape()
Constructor.
Definition ConvexHullShape.h:50
+
uint GetNumPoints() const
Get the number of vertices in this convex hull.
Definition ConvexHullShape.h:117
+
float GetConvexRadius() const
Get the convex radius of this convex hull.
Definition ConvexHullShape.h:111
+
Class that constructs a ConvexHullShape.
Definition ConvexHullShape.h:18
+
ConvexHullShapeSettings(const Array< Vec3 > &inPoints, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)
Definition ConvexHullShape.h:28
+
Array< Vec3 > mPoints
Points to create the hull from.
Definition ConvexHullShape.h:33
+
Base class for all convex shapes. Defines a virtual interface.
Definition ConvexShape.h:36
+
Class that constructs a ConvexShape (abstract)
Definition ConvexShape.h:18
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
Definition Quat.h:33
+
Specialization of cast result against a shape.
Definition CastResult.h:30
+
Settings to be passed with a ray cast.
Definition RayCast.h:70
+ +
Filter class.
Definition ShapeFilter.h:17
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
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 Vec3.h:17
+
Definition RayCast.h:47
+
+
+ + + + diff --git a/_convex_shape_8cpp.html b/_convex_shape_8cpp.html new file mode 100644 index 000000000..205aad272 --- /dev/null +++ b/_convex_shape_8cpp.html @@ -0,0 +1,213 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/ConvexShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexShape.cpp File Reference
+
+
+ + + + +

+Classes

class  ConvexShape::CSGetTrianglesContext
 
+ + + +

+Macros

#define MAKE_FACE(a, b, c, d)   { a, b, c, d, ((1 << a) | (1 << b) | (1 << c) | (1 << d)) }
 
+ + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (ConvexShapeSettings)
 
+

Macro Definition Documentation

+ +

◆ MAKE_FACE

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define MAKE_FACE( a,
 b,
 c,
 
)   { a, b, c, d, ((1 << a) | (1 << b) | (1 << c) | (1 << d)) }
+
+ +
+
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (ConvexShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_convex_shape_8cpp.js b/_convex_shape_8cpp.js new file mode 100644 index 000000000..8159331ca --- /dev/null +++ b/_convex_shape_8cpp.js @@ -0,0 +1,6 @@ +var _convex_shape_8cpp = +[ + [ "ConvexShape::CSGetTrianglesContext", "class_convex_shape_1_1_c_s_get_triangles_context.html", "class_convex_shape_1_1_c_s_get_triangles_context" ], + [ "MAKE_FACE", "_convex_shape_8cpp.html#a96549debc24a06a6c11ca18a1e11d35f", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT", "_convex_shape_8cpp.html#a9cf42585bb42addd8eabed35352f18bc", null ] +]; \ No newline at end of file diff --git a/_convex_shape_8h.html b/_convex_shape_8h.html new file mode 100644 index 000000000..d18f2a7df --- /dev/null +++ b/_convex_shape_8h.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/ConvexShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

class  ConvexShapeSettings
 Class that constructs a ConvexShape (abstract) More...
 
class  ConvexShape
 Base class for all convex shapes. Defines a virtual interface. More...
 
class  ConvexShape::Support
 Function that provides an interface for GJK. More...
 
class  ConvexShape::SupportBuffer
 Buffer to hold a Support object, used to avoid dynamic memory allocations. More...
 
+
+
+ + + + diff --git a/_convex_shape_8h.js b/_convex_shape_8h.js new file mode 100644 index 000000000..16818ef05 --- /dev/null +++ b/_convex_shape_8h.js @@ -0,0 +1,7 @@ +var _convex_shape_8h = +[ + [ "ConvexShapeSettings", "class_convex_shape_settings.html", "class_convex_shape_settings" ], + [ "ConvexShape", "class_convex_shape.html", "class_convex_shape" ], + [ "ConvexShape::Support", "class_convex_shape_1_1_support.html", "class_convex_shape_1_1_support" ], + [ "ConvexShape::SupportBuffer", "class_convex_shape_1_1_support_buffer.html", "class_convex_shape_1_1_support_buffer" ] +]; \ No newline at end of file diff --git a/_convex_shape_8h_source.html b/_convex_shape_8h_source.html new file mode 100644 index 000000000..6e986e242 --- /dev/null +++ b/_convex_shape_8h_source.html @@ -0,0 +1,325 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/ConvexShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexShape.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
+ + + + +
11
+ +
13
+ +
15
+
+ +
18{
+
19public:
+ +
21
+
22
+ +
24 explicit ConvexShapeSettings(const PhysicsMaterial *inMaterial) : mMaterial(inMaterial) { }
+
25
+
27 void SetDensity(float inDensity) { mDensity = inDensity; }
+
28
+
29 // Properties
+ +
31 float mDensity = 1000.0f;
+
32};
+
+
33
+
+ +
+ +
37public:
+ +
39
+
41 explicit ConvexShape(EShapeSubType inSubType) : Shape(EShapeType::Convex, inSubType) { }
+
42 ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult) : Shape(EShapeType::Convex, inSubType, inSettings, outResult), mMaterial(inSettings.mMaterial), mDensity(inSettings.mDensity) { }
+
43 ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial) : Shape(EShapeType::Convex, inSubType), mMaterial(inMaterial) { }
+
+
44
+
45 // See Shape::GetSubShapeIDBitsRecursive
+
46 virtual uint GetSubShapeIDBitsRecursive() const override { return 0; } // Convex shapes don't have sub shapes
+
47
+
48 // See Shape::GetMaterial
+
49 virtual const PhysicsMaterial * GetMaterial([[maybe_unused]] const SubShapeID &inSubShapeID) const override { JPH_ASSERT(inSubShapeID.IsEmpty(), "Invalid subshape ID"); return GetMaterial(); }
+
50
+
51 // See Shape::CastRay
+
52 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
53 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
54
+
55 // See: Shape::CollidePoint
+
56 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
57
+
58 // See Shape::GetTrianglesStart
+
59 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override;
+
60
+
61 // See Shape::GetTrianglesNext
+
62 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override;
+
63
+
64 // See Shape::GetSubmergedVolume
+
65 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override;
+
66
+
+
68 class Support
+
69 {
+
70 public:
+
72 virtual ~Support() = default;
+
73
+
76 virtual Vec3 GetSupport(Vec3Arg inDirection) const = 0;
+
77
+
80 virtual float GetConvexRadius() const = 0;
+
81 };
+
+
82
+
+
84 class alignas(16) SupportBuffer
+
85 {
+
86 public:
+
87 uint8 mData[4160];
+
88 };
+
+
89
+
+
91 enum class ESupportMode
+
92 {
+
93 ExcludeConvexRadius,
+
94 IncludeConvexRadius,
+
95 Default,
+
96 };
+
+
97
+
102 virtual const Support * GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const = 0;
+
103
+
105 void SetMaterial(const PhysicsMaterial *inMaterial) { mMaterial = inMaterial; }
+
106 const PhysicsMaterial * GetMaterial() const { return mMaterial != nullptr? mMaterial : PhysicsMaterial::sDefault; }
+
107
+
109 void SetDensity(float inDensity) { mDensity = inDensity; }
+
110
+
112 float GetDensity() const { return mDensity; }
+
113
+
114#ifdef JPH_DEBUG_RENDERER
+
115 // See Shape::DrawGetSupportFunction
+
116 virtual void DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override;
+
117
+
118 // See Shape::DrawGetSupportingFace
+
119 virtual void DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+
120#endif // JPH_DEBUG_RENDERER
+
121
+
122 // See Shape
+
123 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
124 virtual void SaveMaterialState(PhysicsMaterialList &outMaterials) const override;
+
125 virtual void RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override;
+
126
+
127 // Register shape functions with the registry
+
128 static void sRegister();
+
129
+
130protected:
+
131 // See: Shape::RestoreBinaryState
+
132 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
133
+
135 static const StaticArray<Vec3, 384> sUnitSphereTriangles;
+
136
+
137private:
+
138 // Class for GetTrianglesStart/Next
+
139 class CSGetTrianglesContext;
+
140
+
141 // Helper functions called by CollisionDispatch
+
142 static void sCollideConvexVsConvex(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);
+
143 static void sCastConvexVsConvex(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
144
+
145 // Properties
+
146 RefConst<PhysicsMaterial> mMaterial;
+
147 float mDensity = 1000.0f;
+
148};
+
+
149
+ +
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
+
#define JPH_IF_DEBUG_RENDERER(...)
Definition Core.h:536
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
#define JPH_DECLARE_SERIALIZABLE_ABSTRACT(linkage, class_name)
Definition SerializableObject.h:120
+ +
EShapeSubType
This enumerates all shape types, each shape can return its type through Shape::GetSubType.
Definition Shape.h:76
+
EShapeType
Shapes are categorized in groups, each shape can return which group it belongs to through its Shape::...
Definition Shape.h:57
+
@ Convex
Used by ConvexShape, all shapes that use the generic convex vs convex collision detection system (box...
+ + +
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
+
Buffer to hold a Support object, used to avoid dynamic memory allocations.
Definition ConvexShape.h:85
+
Function that provides an interface for GJK.
Definition ConvexShape.h:69
+
virtual ~Support()=default
Warning: Virtual destructor will not be called on this object!
+
virtual Vec3 GetSupport(Vec3Arg inDirection) const =0
+
virtual float GetConvexRadius() const =0
+
Base class for all convex shapes. Defines a virtual interface.
Definition ConvexShape.h:36
+
void SetDensity(float inDensity)
Set density of the shape (kg / m^3)
Definition ConvexShape.h:109
+
ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)
Definition ConvexShape.h:42
+
float GetDensity() const
Get density of the shape (kg / m^3)
Definition ConvexShape.h:112
+
void SetMaterial(const PhysicsMaterial *inMaterial)
Material of the shape.
Definition ConvexShape.h:105
+
ESupportMode
How the GetSupport function should behave.
Definition ConvexShape.h:92
+
JPH_OVERRIDE_NEW_DELETE ConvexShape(EShapeSubType inSubType)
Constructor.
Definition ConvexShape.h:41
+
virtual const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const override
Get the material assigned to a particular sub shape ID.
Definition ConvexShape.h:49
+
const PhysicsMaterial * GetMaterial() const
Definition ConvexShape.h:106
+
ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial)
Definition ConvexShape.h:43
+
virtual const Support * GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const =0
+
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 ConvexShape.h:46
+
Class that constructs a ConvexShape (abstract)
Definition ConvexShape.h:18
+
RefConst< PhysicsMaterial > mMaterial
Material assigned to this shape.
Definition ConvexShape.h:30
+
void SetDensity(float inDensity)
Set the density of the object in kg / m^3.
Definition ConvexShape.h:27
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.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
+
static RefConst< PhysicsMaterial > sDefault
Default material that is used when a shape has no materials defined.
Definition PhysicsMaterial.h:31
+
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
Definition Quat.h:33
+
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:151
+ +
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:184
+
Definition Shape.h:145
+
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
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 Vec3.h:17
+
Definition RayCast.h:47
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_convex_support_8h.html b/_convex_support_8h.html new file mode 100644 index 000000000..f82286776 --- /dev/null +++ b/_convex_support_8h.html @@ -0,0 +1,140 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/ConvexSupport.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexSupport.h File Reference
+
+
+
#include <Jolt/Math/Mat44.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + +

+Classes

struct  TransformedConvexObject< ConvexObject >
 
struct  AddConvexRadius< ConvexObject >
 Structure that adds a convex radius. More...
 
struct  MinkowskiDifference< ConvexObjectA, ConvexObjectB >
 Structure that performs a Minkowski difference A - B. More...
 
struct  PointConvexSupport
 Class that wraps a point so that it can be used with convex collision detection. More...
 
struct  TriangleConvexSupport
 Class that wraps a triangle so that it can used with convex collision detection. More...
 
struct  PolygonConvexSupport< VERTEX_ARRAY >
 Class that wraps a polygon so that it can used with convex collision detection. More...
 
+
+
+ + + + diff --git a/_convex_support_8h.js b/_convex_support_8h.js new file mode 100644 index 000000000..64920909d --- /dev/null +++ b/_convex_support_8h.js @@ -0,0 +1,9 @@ +var _convex_support_8h = +[ + [ "TransformedConvexObject< ConvexObject >", "struct_transformed_convex_object.html", "struct_transformed_convex_object" ], + [ "AddConvexRadius< ConvexObject >", "struct_add_convex_radius.html", "struct_add_convex_radius" ], + [ "MinkowskiDifference< ConvexObjectA, ConvexObjectB >", "struct_minkowski_difference.html", "struct_minkowski_difference" ], + [ "PointConvexSupport", "struct_point_convex_support.html", "struct_point_convex_support" ], + [ "TriangleConvexSupport", "struct_triangle_convex_support.html", "struct_triangle_convex_support" ], + [ "PolygonConvexSupport< VERTEX_ARRAY >", "struct_polygon_convex_support.html", "struct_polygon_convex_support" ] +]; \ No newline at end of file diff --git a/_convex_support_8h_source.html b/_convex_support_8h_source.html new file mode 100644 index 000000000..82b47ef2b --- /dev/null +++ b/_convex_support_8h_source.html @@ -0,0 +1,365 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/ConvexSupport.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexSupport.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
+
7#include <Jolt/Math/Mat44.h>
+
8
+ +
10
+
13template <typename ConvexObject>
+
+ +
15{
+
+
17 TransformedConvexObject(Mat44Arg inTransform, const ConvexObject &inObject) :
+
18 mTransform(inTransform),
+
19 mObject(inObject)
+
20 {
+
21 }
+
+
22
+
+
24 Vec3 GetSupport(Vec3Arg inDirection) const
+
25 {
+
26 return mTransform * mObject.GetSupport(mTransform.Multiply3x3Transposed(inDirection));
+
27 }
+
+
28
+
30 template <class VERTEX_ARRAY>
+
+
31 void GetSupportingFace(Vec3Arg inDirection, VERTEX_ARRAY &outVertices) const
+
32 {
+
33 mObject.GetSupportingFace(mTransform.Multiply3x3Transposed(inDirection), outVertices);
+
34
+
35 for (Vec3 &v : outVertices)
+
36 v = mTransform * v;
+
37 }
+
+
38
+ +
40 const ConvexObject & mObject;
+
41};
+
+
42
+
44template <typename ConvexObject>
+
+ +
46{
+
+
47 AddConvexRadius(const ConvexObject &inObject, float inRadius) :
+
48 mObject(inObject),
+
49 mRadius(inRadius)
+
50 {
+
51 }
+
+
52
+
+
54 Vec3 GetSupport(Vec3Arg inDirection) const
+
55 {
+
56 float length = inDirection.Length();
+
57 return length > 0.0f ? mObject.GetSupport(inDirection) + (mRadius / length) * inDirection : mObject.GetSupport(inDirection);
+
58 }
+
+
59
+
60 const ConvexObject & mObject;
+
61 float mRadius;
+
62};
+
+
63
+
65template <typename ConvexObjectA, typename ConvexObjectB>
+
+ +
67{
+
+
68 MinkowskiDifference(const ConvexObjectA &inObjectA, const ConvexObjectB &inObjectB) :
+
69 mObjectA(inObjectA),
+
70 mObjectB(inObjectB)
+
71 {
+
72 }
+
+
73
+
+
75 Vec3 GetSupport(Vec3Arg inDirection) const
+
76 {
+
77 return mObjectA.GetSupport(inDirection) - mObjectB.GetSupport(-inDirection);
+
78 }
+
+
79
+
80 const ConvexObjectA & mObjectA;
+
81 const ConvexObjectB & mObjectB;
+
82};
+
+
83
+
+ +
86{
+
+
88 Vec3 GetSupport([[maybe_unused]] Vec3Arg inDirection) const
+
89 {
+
90 return mPoint;
+
91 }
+
+
92
+ +
94};
+
+
95
+
+ +
98{
+
+ +
101 mV1(inV1),
+
102 mV2(inV2),
+
103 mV3(inV3)
+
104 {
+
105 }
+
+
106
+
+
108 Vec3 GetSupport(Vec3Arg inDirection) const
+
109 {
+
110 // Project vertices on inDirection
+
111 float d1 = mV1.Dot(inDirection);
+
112 float d2 = mV2.Dot(inDirection);
+
113 float d3 = mV3.Dot(inDirection);
+
114
+
115 // Return vertex with biggest projection
+
116 if (d1 > d2)
+
117 {
+
118 if (d1 > d3)
+
119 return mV1;
+
120 else
+
121 return mV3;
+
122 }
+
123 else
+
124 {
+
125 if (d2 > d3)
+
126 return mV2;
+
127 else
+
128 return mV3;
+
129 }
+
130 }
+
+
131
+
133 template <class VERTEX_ARRAY>
+
+
134 void GetSupportingFace([[maybe_unused]] Vec3Arg inDirection, VERTEX_ARRAY &outVertices) const
+
135 {
+
136 outVertices.push_back(mV1);
+
137 outVertices.push_back(mV2);
+
138 outVertices.push_back(mV3);
+
139 }
+
+
140
+ + + +
145};
+
+
146
+
148template <class VERTEX_ARRAY>
+
+ +
150{
+
+
152 explicit PolygonConvexSupport(const VERTEX_ARRAY &inVertices) :
+
153 mVertices(inVertices)
+
154 {
+
155 }
+
+
156
+
+
158 Vec3 GetSupport(Vec3Arg inDirection) const
+
159 {
+
160 Vec3 support_point = mVertices[0];
+
161 float best_dot = mVertices[0].Dot(inDirection);
+
162
+
163 for (typename VERTEX_ARRAY::const_iterator v = mVertices.begin() + 1; v < mVertices.end(); ++v)
+
164 {
+
165 float dot = v->Dot(inDirection);
+
166 if (dot > best_dot)
+
167 {
+
168 best_dot = dot;
+
169 support_point = *v;
+
170 }
+
171 }
+
172
+
173 return support_point;
+
174 }
+
+
175
+
177 template <class VERTEX_ARRAY_ARG>
+
+
178 void GetSupportingFace([[maybe_unused]] Vec3Arg inDirection, VERTEX_ARRAY_ARG &outVertices) const
+
179 {
+
180 for (Vec3 v : mVertices)
+
181 outVertices.push_back(v);
+
182 }
+
+
183
+
185 const VERTEX_ARRAY & mVertices;
+
186};
+
+
187
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Vec3 Multiply3x3Transposed(Vec3Arg inV) const
Multiply vector by only 3x3 part of the transpose of the matrix ( )
Definition Mat44.inl:336
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec3.inl:677
+
Structure that adds a convex radius.
Definition ConvexSupport.h:46
+
const ConvexObject & mObject
Definition ConvexSupport.h:60
+
AddConvexRadius(const ConvexObject &inObject, float inRadius)
Definition ConvexSupport.h:47
+
Vec3 GetSupport(Vec3Arg inDirection) const
Calculate the support vector for this convex shape.
Definition ConvexSupport.h:54
+
float mRadius
Definition ConvexSupport.h:61
+
Structure that performs a Minkowski difference A - B.
Definition ConvexSupport.h:67
+
MinkowskiDifference(const ConvexObjectA &inObjectA, const ConvexObjectB &inObjectB)
Definition ConvexSupport.h:68
+
const ConvexObjectA & mObjectA
Definition ConvexSupport.h:80
+
Vec3 GetSupport(Vec3Arg inDirection) const
Calculate the support vector for this convex shape.
Definition ConvexSupport.h:75
+
const ConvexObjectB & mObjectB
Definition ConvexSupport.h:81
+
Class that wraps a point so that it can be used with convex collision detection.
Definition ConvexSupport.h:86
+
Vec3 mPoint
Definition ConvexSupport.h:93
+
Vec3 GetSupport(Vec3Arg inDirection) const
Calculate the support vector for this convex shape.
Definition ConvexSupport.h:88
+
Class that wraps a polygon so that it can used with convex collision detection.
Definition ConvexSupport.h:150
+
void GetSupportingFace(Vec3Arg inDirection, VERTEX_ARRAY_ARG &outVertices) const
Get the vertices of the face that faces inDirection the most.
Definition ConvexSupport.h:178
+
Vec3 GetSupport(Vec3Arg inDirection) const
Calculate the support vector for this convex shape.
Definition ConvexSupport.h:158
+
PolygonConvexSupport(const VERTEX_ARRAY &inVertices)
Constructor.
Definition ConvexSupport.h:152
+
const VERTEX_ARRAY & mVertices
The vertices of the polygon.
Definition ConvexSupport.h:185
+
Definition ConvexSupport.h:15
+
Vec3 GetSupport(Vec3Arg inDirection) const
Calculate the support vector for this convex shape.
Definition ConvexSupport.h:24
+
Mat44 mTransform
Definition ConvexSupport.h:39
+
const ConvexObject & mObject
Definition ConvexSupport.h:40
+
void GetSupportingFace(Vec3Arg inDirection, VERTEX_ARRAY &outVertices) const
Get the vertices of the face that faces inDirection the most.
Definition ConvexSupport.h:31
+
TransformedConvexObject(Mat44Arg inTransform, const ConvexObject &inObject)
Create transformed convex object.
Definition ConvexSupport.h:17
+
Class that wraps a triangle so that it can used with convex collision detection.
Definition ConvexSupport.h:98
+
Vec3 mV1
The three vertices of the triangle.
Definition ConvexSupport.h:142
+
Vec3 mV3
Definition ConvexSupport.h:144
+
void GetSupportingFace(Vec3Arg inDirection, VERTEX_ARRAY &outVertices) const
Get the vertices of the face that faces inDirection the most.
Definition ConvexSupport.h:134
+
Vec3 GetSupport(Vec3Arg inDirection) const
Calculate the support vector for this convex shape.
Definition ConvexSupport.h:108
+
Vec3 mV2
Definition ConvexSupport.h:143
+
TriangleConvexSupport(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3)
Constructor.
Definition ConvexSupport.h:100
+
+
+ + + + diff --git a/_core_8h.html b/_core_8h.html new file mode 100644 index 000000000..6c76cd636 --- /dev/null +++ b/_core_8h.html @@ -0,0 +1,1047 @@ + + + + + + + +Jolt Physics: Jolt/Core/Core.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Core.h File Reference
+
+
+
#include <winapifamily.h>
+#include <float.h>
+#include <limits.h>
+#include <string.h>
+#include <utility>
+#include <cmath>
+#include <sstream>
+#include <functional>
+#include <algorithm>
+#include <cstdint>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define JPH_VERSION_MAJOR   5
 
#define JPH_VERSION_MINOR   1
 
#define JPH_VERSION_PATCH   1
 
#define JPH_VERSION_FEATURE_BIT_1   0
 
#define JPH_VERSION_FEATURE_BIT_2   0
 
#define JPH_VERSION_FEATURE_BIT_3   0
 
#define JPH_VERSION_FEATURE_BIT_4   1
 
#define JPH_VERSION_FEATURE_BIT_5   0
 
#define JPH_VERSION_FEATURE_BIT_6   1
 
#define JPH_VERSION_FEATURE_BIT_7   0
 
#define JPH_VERSION_FEATURE_BIT_8   0
 
#define JPH_VERSION_FEATURE_BIT_9   0
 
#define JPH_VERSION_FEATURE_BIT_10   0
 
#define JPH_VERSION_FEATURE_BIT_11   1
 
#define JPH_VERSION_FEATURES   (uint64(JPH_VERSION_FEATURE_BIT_1) | (JPH_VERSION_FEATURE_BIT_2 << 1) | (JPH_VERSION_FEATURE_BIT_3 << 2) | (JPH_VERSION_FEATURE_BIT_4 << 3) | (JPH_VERSION_FEATURE_BIT_5 << 4) | (JPH_VERSION_FEATURE_BIT_6 << 5) | (JPH_VERSION_FEATURE_BIT_7 << 6) | (JPH_VERSION_FEATURE_BIT_8 << 7) | (JPH_VERSION_FEATURE_BIT_9 << 8) | (JPH_VERSION_FEATURE_BIT_10 << 9) | (JPH_VERSION_FEATURE_BIT_11 << 10))
 
#define JPH_VERSION_ID   ((JPH_VERSION_FEATURES << 24) | (JPH_VERSION_MAJOR << 16) | (JPH_VERSION_MINOR << 8) | JPH_VERSION_PATCH)
 
#define JPH_PLATFORM_WINDOWS_UWP
 
#define JPH_PLATFORM_WINDOWS
 
#define JPH_IF_NOT_ANDROID(x)   x
 
#define JPH_EXPORT
 
#define JPH_EXPORT_GCC_BUG_WORKAROUND   JPH_EXPORT
 
#define JPH_NO_EXPORT
 
#define JPH_CLANG_SUPPRESS_WARNING(w)
 
#define JPH_CLANG_13_PLUS_SUPPRESS_WARNING(w)
 
#define JPH_CLANG_16_PLUS_SUPPRESS_WARNING(w)
 
#define JPH_GCC_SUPPRESS_WARNING(w)
 
#define JPH_MSVC_SUPPRESS_WARNING(w)
 
#define JPH_MSVC2019_SUPPRESS_WARNING(w)
 
#define JPH_SUPPRESS_WARNINGS
 
#define JPH_BREAKPOINT   __debugbreak()
 
#define JPH_NAMESPACE_BEGIN
 
#define JPH_NAMESPACE_END
 
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
 
#define JPH_SUPPRESS_WARNINGS_STD_END    JPH_SUPPRESS_WARNING_POP
 
#define JPH_DEBUG
 
#define JPH_CACHE_LINE_SIZE   64
 
#define JPH_STACK_ALLOC(n)   alloca(n)
 
#define JPH_IF_DEBUG(...)   __VA_ARGS__
 
#define JPH_IF_NOT_DEBUG(...)
 
#define JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED(...)
 
#define JPH_IF_SINGLE_PRECISION(...)   __VA_ARGS__
 
#define JPH_IF_SINGLE_PRECISION_ELSE(s, d)   s
 
#define JPH_IF_DOUBLE_PRECISION(...)
 
#define JPH_IF_DEBUG_RENDERER(...)   __VA_ARGS__
 
#define JPH_IF_NOT_DEBUG_RENDERER(...)
 
#define JPH_UNUSED(x)   (void)x
 
+ + + + + + + + + + + +

+Typedefs

using uint = unsigned int
 
using uint8 = std::uint8_t
 
using uint16 = std::uint16_t
 
using uint32 = std::uint32_t
 
using uint64 = std::uint64_t
 
+

Macro Definition Documentation

+ +

◆ JPH_BREAKPOINT

+ +
+
+ + + + +
#define JPH_BREAKPOINT   __debugbreak()
+
+ +
+
+ +

◆ JPH_CACHE_LINE_SIZE

+ +
+
+ + + + +
#define JPH_CACHE_LINE_SIZE   64
+
+ +
+
+ +

◆ JPH_CLANG_13_PLUS_SUPPRESS_WARNING

+ +
+
+ + + + + + + + +
#define JPH_CLANG_13_PLUS_SUPPRESS_WARNING( w)
+
+ +
+
+ +

◆ JPH_CLANG_16_PLUS_SUPPRESS_WARNING

+ +
+
+ + + + + + + + +
#define JPH_CLANG_16_PLUS_SUPPRESS_WARNING( w)
+
+ +
+
+ +

◆ JPH_CLANG_SUPPRESS_WARNING

+ +
+
+ + + + + + + + +
#define JPH_CLANG_SUPPRESS_WARNING( w)
+
+ +
+
+ +

◆ JPH_DEBUG

+ +
+
+ + + + +
#define JPH_DEBUG
+
+ +
+
+ +

◆ JPH_EXPORT

+ +
+
+ + + + +
#define JPH_EXPORT
+
+ +
+
+ +

◆ JPH_EXPORT_GCC_BUG_WORKAROUND

+ +
+
+ + + + +
#define JPH_EXPORT_GCC_BUG_WORKAROUND   JPH_EXPORT
+
+ +
+
+ +

◆ JPH_GCC_SUPPRESS_WARNING

+ +
+
+ + + + + + + + +
#define JPH_GCC_SUPPRESS_WARNING( w)
+
+ +
+
+ +

◆ JPH_IF_DEBUG

+ +
+
+ + + + + + + + +
#define JPH_IF_DEBUG( ...)   __VA_ARGS__
+
+ +
+
+ +

◆ JPH_IF_DEBUG_RENDERER

+ +
+
+ + + + + + + + +
#define JPH_IF_DEBUG_RENDERER( ...)   __VA_ARGS__
+
+ +
+
+ +

◆ JPH_IF_DOUBLE_PRECISION

+ +
+
+ + + + + + + + +
#define JPH_IF_DOUBLE_PRECISION( ...)
+
+ +
+
+ +

◆ JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED

+ +
+
+ + + + + + + + +
#define JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED( ...)
+
+ +
+
+ +

◆ JPH_IF_NOT_ANDROID

+ +
+
+ + + + + + + + +
#define JPH_IF_NOT_ANDROID( x)   x
+
+ +
+
+ +

◆ JPH_IF_NOT_DEBUG

+ +
+
+ + + + + + + + +
#define JPH_IF_NOT_DEBUG( ...)
+
+ +
+
+ +

◆ JPH_IF_NOT_DEBUG_RENDERER

+ +
+
+ + + + + + + + +
#define JPH_IF_NOT_DEBUG_RENDERER( ...)
+
+ +
+
+ +

◆ JPH_IF_SINGLE_PRECISION

+ +
+
+ + + + + + + + +
#define JPH_IF_SINGLE_PRECISION( ...)   __VA_ARGS__
+
+ +
+
+ +

◆ JPH_IF_SINGLE_PRECISION_ELSE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_IF_SINGLE_PRECISION_ELSE( s,
 
)   s
+
+ +
+
+ +

◆ JPH_MSVC2019_SUPPRESS_WARNING

+ +
+
+ + + + + + + + +
#define JPH_MSVC2019_SUPPRESS_WARNING( w)
+
+ +
+
+ +

◆ JPH_MSVC_SUPPRESS_WARNING

+ +
+
+ + + + + + + + +
#define JPH_MSVC_SUPPRESS_WARNING( w)
+
+ +
+
+ +

◆ JPH_NAMESPACE_BEGIN

+ +
+
+ + + + +
#define JPH_NAMESPACE_BEGIN
+
+Value:
JPH_SUPPRESS_WARNING_PUSH \
+
JPH_SUPPRESS_WARNINGS \
+
namespace JPH {
+
+
+
+ +

◆ JPH_NAMESPACE_END

+ +
+
+ + + + +
#define JPH_NAMESPACE_END
+
+Value:
} \
+
JPH_SUPPRESS_WARNING_POP
+
+
+
+ +

◆ JPH_NO_EXPORT

+ +
+
+ + + + +
#define JPH_NO_EXPORT
+
+ +
+
+ +

◆ JPH_PLATFORM_WINDOWS

+ +
+
+ + + + +
#define JPH_PLATFORM_WINDOWS
+
+ +
+
+ +

◆ JPH_PLATFORM_WINDOWS_UWP

+ +
+
+ + + + +
#define JPH_PLATFORM_WINDOWS_UWP
+
+ +
+
+ +

◆ JPH_STACK_ALLOC

+ +
+
+ + + + + + + + +
#define JPH_STACK_ALLOC( n)   alloca(n)
+
+ +
+
+ +

◆ JPH_SUPPRESS_WARNINGS

+ +
+
+ + + + +
#define JPH_SUPPRESS_WARNINGS
+
+ +
+
+ +

◆ JPH_SUPPRESS_WARNINGS_STD_BEGIN

+ +
+
+ + + + +
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
+
+Value:
JPH_SUPPRESS_WARNING_PUSH \
+
JPH_MSVC_SUPPRESS_WARNING(4365) \
+
JPH_MSVC_SUPPRESS_WARNING(4619) \
+
JPH_MSVC_SUPPRESS_WARNING(4710) \
+
JPH_MSVC_SUPPRESS_WARNING(4711) \
+
JPH_MSVC_SUPPRESS_WARNING(4820) \
+
JPH_MSVC_SUPPRESS_WARNING(4514) \
+
JPH_MSVC_SUPPRESS_WARNING(5262) \
+
JPH_MSVC_SUPPRESS_WARNING(5264) \
+
JPH_MSVC_SUPPRESS_WARNING(4738)
+
+
+
+ +

◆ JPH_SUPPRESS_WARNINGS_STD_END

+ +
+
+ + + + +
#define JPH_SUPPRESS_WARNINGS_STD_END    JPH_SUPPRESS_WARNING_POP
+
+ +
+
+ +

◆ JPH_UNUSED

+ +
+
+ + + + + + + + +
#define JPH_UNUSED( x)   (void)x
+
+ +
+
+ +

◆ JPH_VERSION_FEATURE_BIT_1

+ +
+
+ + + + +
#define JPH_VERSION_FEATURE_BIT_1   0
+
+ +
+
+ +

◆ JPH_VERSION_FEATURE_BIT_10

+ +
+
+ + + + +
#define JPH_VERSION_FEATURE_BIT_10   0
+
+ +
+
+ +

◆ JPH_VERSION_FEATURE_BIT_11

+ +
+
+ + + + +
#define JPH_VERSION_FEATURE_BIT_11   1
+
+ +
+
+ +

◆ JPH_VERSION_FEATURE_BIT_2

+ +
+
+ + + + +
#define JPH_VERSION_FEATURE_BIT_2   0
+
+ +
+
+ +

◆ JPH_VERSION_FEATURE_BIT_3

+ +
+
+ + + + +
#define JPH_VERSION_FEATURE_BIT_3   0
+
+ +
+
+ +

◆ JPH_VERSION_FEATURE_BIT_4

+ +
+
+ + + + +
#define JPH_VERSION_FEATURE_BIT_4   1
+
+ +
+
+ +

◆ JPH_VERSION_FEATURE_BIT_5

+ +
+
+ + + + +
#define JPH_VERSION_FEATURE_BIT_5   0
+
+ +
+
+ +

◆ JPH_VERSION_FEATURE_BIT_6

+ +
+
+ + + + +
#define JPH_VERSION_FEATURE_BIT_6   1
+
+ +
+
+ +

◆ JPH_VERSION_FEATURE_BIT_7

+ +
+
+ + + + +
#define JPH_VERSION_FEATURE_BIT_7   0
+
+ +
+
+ +

◆ JPH_VERSION_FEATURE_BIT_8

+ +
+
+ + + + +
#define JPH_VERSION_FEATURE_BIT_8   0
+
+ +
+
+ +

◆ JPH_VERSION_FEATURE_BIT_9

+ +
+
+ + + + +
#define JPH_VERSION_FEATURE_BIT_9   0
+
+ +
+
+ +

◆ JPH_VERSION_FEATURES

+ + + +

◆ JPH_VERSION_ID

+ +
+
+ + + + +
#define JPH_VERSION_ID   ((JPH_VERSION_FEATURES << 24) | (JPH_VERSION_MAJOR << 16) | (JPH_VERSION_MINOR << 8) | JPH_VERSION_PATCH)
+
+ +
+
+ +

◆ JPH_VERSION_MAJOR

+ +
+
+ + + + +
#define JPH_VERSION_MAJOR   5
+
+ +
+
+ +

◆ JPH_VERSION_MINOR

+ +
+
+ + + + +
#define JPH_VERSION_MINOR   1
+
+ +
+
+ +

◆ JPH_VERSION_PATCH

+ +
+
+ + + + +
#define JPH_VERSION_PATCH   1
+
+ +
+
+

Typedef Documentation

+ +

◆ uint

+ +
+
+ + + + +
using uint = unsigned int
+
+ +
+
+ +

◆ uint16

+ +
+
+ + + + +
using uint16 = std::uint16_t
+
+ +
+
+ +

◆ uint32

+ +
+
+ + + + +
using uint32 = std::uint32_t
+
+ +
+
+ +

◆ uint64

+ +
+
+ + + + +
using uint64 = std::uint64_t
+
+ +
+
+ +

◆ uint8

+ +
+
+ + + + +
using uint8 = std::uint8_t
+
+ +
+
+
+
+ + + + diff --git a/_core_8h.js b/_core_8h.js new file mode 100644 index 000000000..ba4e0ed13 --- /dev/null +++ b/_core_8h.js @@ -0,0 +1,54 @@ +var _core_8h = +[ + [ "JPH_BREAKPOINT", "_core_8h.html#a252846bbcc9c2281dba7ad4673e708ce", null ], + [ "JPH_CACHE_LINE_SIZE", "_core_8h.html#a2eca4e00d11d8fdbbd04c4a23a244278", null ], + [ "JPH_CLANG_13_PLUS_SUPPRESS_WARNING", "_core_8h.html#a56b2f8bbe701eb1d5abb795108938d94", null ], + [ "JPH_CLANG_16_PLUS_SUPPRESS_WARNING", "_core_8h.html#a8fdd598df1d0bcd8ef890ece041ec39e", null ], + [ "JPH_CLANG_SUPPRESS_WARNING", "_core_8h.html#a7e4d18d1740a496e87b0b745a83175e1", null ], + [ "JPH_DEBUG", "_core_8h.html#a06f6299732e98a727ed302e921611d56", null ], + [ "JPH_EXPORT", "_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8", null ], + [ "JPH_EXPORT_GCC_BUG_WORKAROUND", "_core_8h.html#a99479aa3165acf219093ab9549833cf9", null ], + [ "JPH_GCC_SUPPRESS_WARNING", "_core_8h.html#a46d791d2b1f95fa056399441a2ad8667", null ], + [ "JPH_IF_DEBUG", "_core_8h.html#a3feba9adfefa0cf951f6b4aeb4990fb4", null ], + [ "JPH_IF_DEBUG_RENDERER", "_core_8h.html#ab6d002cadb39841b46bb93fe8a20e00e", null ], + [ "JPH_IF_DOUBLE_PRECISION", "_core_8h.html#a53c63d069a8c5c75085ed00c3725e0ab", null ], + [ "JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED", "_core_8h.html#a9f995afb38a0d149ed20606b43a3e2fb", null ], + [ "JPH_IF_NOT_ANDROID", "_core_8h.html#aac5e592f9e714fda0c006772758e3c6f", null ], + [ "JPH_IF_NOT_DEBUG", "_core_8h.html#a19cd70ae9b66fee2faf10a0d00fe8a13", null ], + [ "JPH_IF_NOT_DEBUG_RENDERER", "_core_8h.html#a5f790aaecc28630723d8d68801ce8865", null ], + [ "JPH_IF_SINGLE_PRECISION", "_core_8h.html#a2b44b10d432bafc0db7e105e3c246425", null ], + [ "JPH_IF_SINGLE_PRECISION_ELSE", "_core_8h.html#aa004a0f7df4c0472bb33a149fce1f21c", null ], + [ "JPH_MSVC2019_SUPPRESS_WARNING", "_core_8h.html#abbf86de84b7cb1817f2be1e28b6b754f", null ], + [ "JPH_MSVC_SUPPRESS_WARNING", "_core_8h.html#a7e50ac7352b8f5948a91b543756c84a8", null ], + [ "JPH_NAMESPACE_BEGIN", "_core_8h.html#ad14098b68b8c44ea6112601031268405", null ], + [ "JPH_NAMESPACE_END", "_core_8h.html#a73da8725998b00321a9db341202d650d", null ], + [ "JPH_NO_EXPORT", "_core_8h.html#ac2c075faa1ac3c9c5263a6729726c931", null ], + [ "JPH_PLATFORM_WINDOWS", "_core_8h.html#a06421dbef09f6a781ed52965f5f5eac8", null ], + [ "JPH_PLATFORM_WINDOWS_UWP", "_core_8h.html#a32aff07e497254f9fbe9bbe669c94bcf", null ], + [ "JPH_STACK_ALLOC", "_core_8h.html#a438e7b853f86742bcbdf0faeaa2094a2", null ], + [ "JPH_SUPPRESS_WARNINGS", "_core_8h.html#a0e5e358b4576bd9e1692d2ce14088702", null ], + [ "JPH_SUPPRESS_WARNINGS_STD_BEGIN", "_core_8h.html#a4ac413403e9ca00d24a3e2f244cf5456", null ], + [ "JPH_SUPPRESS_WARNINGS_STD_END", "_core_8h.html#a5f6b64537a538d9204b253532b799467", null ], + [ "JPH_UNUSED", "_core_8h.html#a719a73b9e445920bf5969f05d01ce69c", null ], + [ "JPH_VERSION_FEATURE_BIT_1", "_core_8h.html#a7fdb6c3ad10d37a8e64b98aaa2bea89b", null ], + [ "JPH_VERSION_FEATURE_BIT_10", "_core_8h.html#a69c4f6512bd5a3cd5625e1841162198d", null ], + [ "JPH_VERSION_FEATURE_BIT_11", "_core_8h.html#ad0fafdd184b95c8932542acd32ae9d90", null ], + [ "JPH_VERSION_FEATURE_BIT_2", "_core_8h.html#a5a41e47408cd3e5bc9164210ef9b9fd6", null ], + [ "JPH_VERSION_FEATURE_BIT_3", "_core_8h.html#a4c2959424fe3c6d654334c4e9826c56e", null ], + [ "JPH_VERSION_FEATURE_BIT_4", "_core_8h.html#ab3724ebc5d00bb7dbe874d35b25b07e8", null ], + [ "JPH_VERSION_FEATURE_BIT_5", "_core_8h.html#a3a29a20b88a94c0a2618546d1c3e361e", null ], + [ "JPH_VERSION_FEATURE_BIT_6", "_core_8h.html#a628e5cc2f7334d21fd9c519989735933", null ], + [ "JPH_VERSION_FEATURE_BIT_7", "_core_8h.html#adb1f1905de0e1144e41db647cc72c6e7", null ], + [ "JPH_VERSION_FEATURE_BIT_8", "_core_8h.html#ac10d408390f93609210bc469945a653a", null ], + [ "JPH_VERSION_FEATURE_BIT_9", "_core_8h.html#a34ad201212816f7bbc8441654be0f7b1", null ], + [ "JPH_VERSION_FEATURES", "_core_8h.html#abac97305fdb6c1af52b2d54b68a8ecb2", null ], + [ "JPH_VERSION_ID", "_core_8h.html#a551c9a48a48d58a1c50f1c86a9d8f768", null ], + [ "JPH_VERSION_MAJOR", "_core_8h.html#adaf29d8692253d347af230caf6a23d62", null ], + [ "JPH_VERSION_MINOR", "_core_8h.html#a58a399239375f51b002e0c9efd7a20e8", null ], + [ "JPH_VERSION_PATCH", "_core_8h.html#ad43713eef248686b3d0eab591804c769", null ], + [ "uint", "_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d", null ], + [ "uint16", "_core_8h.html#aea9840dd402bd5d5201bef4633398cb3", null ], + [ "uint32", "_core_8h.html#a8f95e75e58492e87412191fabadd8ca8", null ], + [ "uint64", "_core_8h.html#a60e8696a4678cd348e991a1f172e53f7", null ], + [ "uint8", "_core_8h.html#a115946cb5fc5879545e9ccea096a6031", null ] +]; \ No newline at end of file diff --git a/_core_8h_source.html b/_core_8h_source.html new file mode 100644 index 000000000..5a03e6389 --- /dev/null +++ b/_core_8h_source.html @@ -0,0 +1,719 @@ + + + + + + + +Jolt Physics: Jolt/Core/Core.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Core.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
+
7// Jolt library version
+
8#define JPH_VERSION_MAJOR 5
+
9#define JPH_VERSION_MINOR 1
+
10#define JPH_VERSION_PATCH 1
+
11
+
12// Determine which features the library was compiled with
+
13#ifdef JPH_DOUBLE_PRECISION
+
14 #define JPH_VERSION_FEATURE_BIT_1 1
+
15#else
+
16 #define JPH_VERSION_FEATURE_BIT_1 0
+
17#endif
+
18#ifdef JPH_CROSS_PLATFORM_DETERMINISTIC
+
19 #define JPH_VERSION_FEATURE_BIT_2 1
+
20#else
+
21 #define JPH_VERSION_FEATURE_BIT_2 0
+
22#endif
+
23#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
24 #define JPH_VERSION_FEATURE_BIT_3 1
+
25#else
+
26 #define JPH_VERSION_FEATURE_BIT_3 0
+
27#endif
+
28#ifdef JPH_PROFILE_ENABLED
+
29 #define JPH_VERSION_FEATURE_BIT_4 1
+
30#else
+
31 #define JPH_VERSION_FEATURE_BIT_4 0
+
32#endif
+
33#ifdef JPH_EXTERNAL_PROFILE
+
34 #define JPH_VERSION_FEATURE_BIT_5 1
+
35#else
+
36 #define JPH_VERSION_FEATURE_BIT_5 0
+
37#endif
+
38#ifdef JPH_DEBUG_RENDERER
+
39 #define JPH_VERSION_FEATURE_BIT_6 1
+
40#else
+
41 #define JPH_VERSION_FEATURE_BIT_6 0
+
42#endif
+
43#ifdef JPH_DISABLE_TEMP_ALLOCATOR
+
44 #define JPH_VERSION_FEATURE_BIT_7 1
+
45#else
+
46 #define JPH_VERSION_FEATURE_BIT_7 0
+
47#endif
+
48#ifdef JPH_DISABLE_CUSTOM_ALLOCATOR
+
49 #define JPH_VERSION_FEATURE_BIT_8 1
+
50#else
+
51 #define JPH_VERSION_FEATURE_BIT_8 0
+
52#endif
+
53#if defined(JPH_OBJECT_LAYER_BITS) && JPH_OBJECT_LAYER_BITS == 32
+
54 #define JPH_VERSION_FEATURE_BIT_9 1
+
55#else
+
56 #define JPH_VERSION_FEATURE_BIT_9 0
+
57#endif
+
58#ifdef JPH_ENABLE_ASSERTS
+
59 #define JPH_VERSION_FEATURE_BIT_10 1
+
60#else
+
61 #define JPH_VERSION_FEATURE_BIT_10 0
+
62#endif
+
63#ifdef JPH_OBJECT_STREAM
+
64 #define JPH_VERSION_FEATURE_BIT_11 1
+
65#else
+
66 #define JPH_VERSION_FEATURE_BIT_11 0
+
67#endif
+
68#define JPH_VERSION_FEATURES (uint64(JPH_VERSION_FEATURE_BIT_1) | (JPH_VERSION_FEATURE_BIT_2 << 1) | (JPH_VERSION_FEATURE_BIT_3 << 2) | (JPH_VERSION_FEATURE_BIT_4 << 3) | (JPH_VERSION_FEATURE_BIT_5 << 4) | (JPH_VERSION_FEATURE_BIT_6 << 5) | (JPH_VERSION_FEATURE_BIT_7 << 6) | (JPH_VERSION_FEATURE_BIT_8 << 7) | (JPH_VERSION_FEATURE_BIT_9 << 8) | (JPH_VERSION_FEATURE_BIT_10 << 9) | (JPH_VERSION_FEATURE_BIT_11 << 10))
+
69
+
70// Combine the version and features in a single ID
+
71#define JPH_VERSION_ID ((JPH_VERSION_FEATURES << 24) | (JPH_VERSION_MAJOR << 16) | (JPH_VERSION_MINOR << 8) | JPH_VERSION_PATCH)
+
72
+
73// Determine platform
+
74#if defined(JPH_PLATFORM_BLUE)
+
75 // Correct define already defined, this overrides everything else
+
76#elif defined(_WIN32) || defined(_WIN64)
+
77 #include <winapifamily.h>
+
78 #if WINAPI_FAMILY == WINAPI_FAMILY_APP
+
79 #define JPH_PLATFORM_WINDOWS_UWP // Building for Universal Windows Platform
+
80 #endif
+
81 #define JPH_PLATFORM_WINDOWS
+
82#elif defined(__ANDROID__) // Android is linux too, so that's why we check it first
+
83 #define JPH_PLATFORM_ANDROID
+
84#elif defined(__linux__)
+
85 #define JPH_PLATFORM_LINUX
+
86#elif defined(__FreeBSD__)
+
87 #define JPH_PLATFORM_FREEBSD
+
88#elif defined(__APPLE__)
+
89 #include <TargetConditionals.h>
+
90 #if defined(TARGET_OS_IPHONE) && !TARGET_OS_IPHONE
+
91 #define JPH_PLATFORM_MACOS
+
92 #else
+
93 #define JPH_PLATFORM_IOS
+
94 #endif
+
95#elif defined(__EMSCRIPTEN__)
+
96 #define JPH_PLATFORM_WASM
+
97#endif
+
98
+
99// Platform helper macros
+
100#ifdef JPH_PLATFORM_ANDROID
+
101 #define JPH_IF_NOT_ANDROID(x)
+
102#else
+
103 #define JPH_IF_NOT_ANDROID(x) x
+
104#endif
+
105
+
106// Determine compiler
+
107#if defined(__clang__)
+
108 #define JPH_COMPILER_CLANG
+
109#elif defined(__GNUC__)
+
110 #define JPH_COMPILER_GCC
+
111#elif defined(_MSC_VER)
+
112 #define JPH_COMPILER_MSVC
+
113#endif
+
114
+
115#if defined(__MINGW64__) || defined (__MINGW32__)
+
116 #define JPH_COMPILER_MINGW
+
117#endif
+
118
+
119// Detect CPU architecture
+
120#if defined(__x86_64__) || defined(_M_X64) || defined(__i386__) || defined(_M_IX86)
+
121 // X86 CPU architecture
+
122 #define JPH_CPU_X86
+
123 #if defined(__x86_64__) || defined(_M_X64)
+
124 #define JPH_CPU_ADDRESS_BITS 64
+
125 #else
+
126 #define JPH_CPU_ADDRESS_BITS 32
+
127 #endif
+
128 #define JPH_USE_SSE
+
129 #define JPH_VECTOR_ALIGNMENT 16
+
130 #define JPH_DVECTOR_ALIGNMENT 32
+
131
+
132 // Detect enabled instruction sets
+
133 #if defined(__AVX512F__) && defined(__AVX512VL__) && defined(__AVX512DQ__) && !defined(JPH_USE_AVX512)
+
134 #define JPH_USE_AVX512
+
135 #endif
+
136 #if (defined(__AVX2__) || defined(JPH_USE_AVX512)) && !defined(JPH_USE_AVX2)
+
137 #define JPH_USE_AVX2
+
138 #endif
+
139 #if (defined(__AVX__) || defined(JPH_USE_AVX2)) && !defined(JPH_USE_AVX)
+
140 #define JPH_USE_AVX
+
141 #endif
+
142 #if (defined(__SSE4_2__) || defined(JPH_USE_AVX)) && !defined(JPH_USE_SSE4_2)
+
143 #define JPH_USE_SSE4_2
+
144 #endif
+
145 #if (defined(__SSE4_1__) || defined(JPH_USE_SSE4_2)) && !defined(JPH_USE_SSE4_1)
+
146 #define JPH_USE_SSE4_1
+
147 #endif
+
148 #if (defined(__F16C__) || defined(JPH_USE_AVX2)) && !defined(JPH_USE_F16C)
+
149 #define JPH_USE_F16C
+
150 #endif
+
151 #if (defined(__LZCNT__) || defined(JPH_USE_AVX2)) && !defined(JPH_USE_LZCNT)
+
152 #define JPH_USE_LZCNT
+
153 #endif
+
154 #if (defined(__BMI__) || defined(JPH_USE_AVX2)) && !defined(JPH_USE_TZCNT)
+
155 #define JPH_USE_TZCNT
+
156 #endif
+
157 #ifndef JPH_CROSS_PLATFORM_DETERMINISTIC // FMA is not compatible with cross platform determinism
+
158 #if defined(JPH_COMPILER_CLANG) || defined(JPH_COMPILER_GCC)
+
159 #if defined(__FMA__) && !defined(JPH_USE_FMADD)
+
160 #define JPH_USE_FMADD
+
161 #endif
+
162 #elif defined(JPH_COMPILER_MSVC)
+
163 #if defined(__AVX2__) && !defined(JPH_USE_FMADD) // AVX2 also enables fused multiply add
+
164 #define JPH_USE_FMADD
+
165 #endif
+
166 #else
+
167 #error Undefined compiler
+
168 #endif
+
169 #endif
+
170#elif defined(__aarch64__) || defined(_M_ARM64) || defined(__arm__) || defined(_M_ARM)
+
171 // ARM CPU architecture
+
172 #define JPH_CPU_ARM
+
173 #if defined(__aarch64__) || defined(_M_ARM64)
+
174 #define JPH_CPU_ADDRESS_BITS 64
+
175 #define JPH_USE_NEON
+
176 #define JPH_VECTOR_ALIGNMENT 16
+
177 #define JPH_DVECTOR_ALIGNMENT 32
+
178 #else
+
179 #define JPH_CPU_ADDRESS_BITS 32
+
180 #define JPH_VECTOR_ALIGNMENT 8 // 32-bit ARM does not support aligning on the stack on 16 byte boundaries
+
181 #define JPH_DVECTOR_ALIGNMENT 8
+
182 #endif
+
183#elif defined(JPH_PLATFORM_WASM)
+
184 // WebAssembly CPU architecture
+
185 #define JPH_CPU_WASM
+
186 #define JPH_CPU_ADDRESS_BITS 32
+
187 #define JPH_VECTOR_ALIGNMENT 16
+
188 #define JPH_DVECTOR_ALIGNMENT 32
+
189 #ifdef __wasm_simd128__
+
190 #define JPH_USE_SSE
+
191 #define JPH_USE_SSE4_1
+
192 #define JPH_USE_SSE4_2
+
193 #endif
+
194#elif defined(__e2k__)
+
195 // E2K CPU architecture (MCST Elbrus 2000)
+
196 #define JPH_CPU_E2K
+
197 #define JPH_CPU_ADDRESS_BITS 64
+
198 #define JPH_VECTOR_ALIGNMENT 16
+
199 #define JPH_DVECTOR_ALIGNMENT 32
+
200
+
201 // Compiler flags on e2k arch determine CPU features
+
202 #if defined(__SSE__) && !defined(JPH_USE_SSE)
+
203 #define JPH_USE_SSE
+
204 #endif
+
205#else
+
206 #error Unsupported CPU architecture
+
207#endif
+
208
+
209// If this define is set, Jolt is compiled as a shared library
+
210#ifdef JPH_SHARED_LIBRARY
+
211 #ifdef JPH_BUILD_SHARED_LIBRARY
+
212 // While building the shared library, we must export these symbols
+
213 #ifdef JPH_PLATFORM_WINDOWS
+
214 #define JPH_EXPORT __declspec(dllexport)
+
215 #else
+
216 #define JPH_EXPORT __attribute__ ((visibility ("default")))
+
217 #if defined(JPH_COMPILER_GCC)
+
218 // Prevents an issue with GCC attribute parsing (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69585)
+
219 #define JPH_EXPORT_GCC_BUG_WORKAROUND [[gnu::visibility("default")]]
+
220 #endif
+
221 #endif
+
222 #else
+
223 // When linking against Jolt, we must import these symbols
+
224 #ifdef JPH_PLATFORM_WINDOWS
+
225 #define JPH_EXPORT __declspec(dllimport)
+
226 #else
+
227 #define JPH_EXPORT __attribute__ ((visibility ("default")))
+
228 #if defined(JPH_COMPILER_GCC)
+
229 // Prevents an issue with GCC attribute parsing (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69585)
+
230 #define JPH_EXPORT_GCC_BUG_WORKAROUND [[gnu::visibility("default")]]
+
231 #endif
+
232 #endif
+
233 #endif
+
234#else
+
235 // If the define is not set, we use static linking and symbols don't need to be imported or exported
+
236 #define JPH_EXPORT
+
237#endif
+
238
+
239#ifndef JPH_EXPORT_GCC_BUG_WORKAROUND
+
240 #define JPH_EXPORT_GCC_BUG_WORKAROUND JPH_EXPORT
+
241#endif
+
242
+
243// Macro used by the RTTI macros to not export a function
+
244#define JPH_NO_EXPORT
+
245
+
246// Pragmas to store / restore the warning state and to disable individual warnings
+
247#ifdef JPH_COMPILER_CLANG
+
248#define JPH_PRAGMA(x) _Pragma(#x)
+
249#define JPH_SUPPRESS_WARNING_PUSH JPH_PRAGMA(clang diagnostic push)
+
250#define JPH_SUPPRESS_WARNING_POP JPH_PRAGMA(clang diagnostic pop)
+
251#define JPH_CLANG_SUPPRESS_WARNING(w) JPH_PRAGMA(clang diagnostic ignored w)
+
252#if __clang_major__ >= 13
+
253 #define JPH_CLANG_13_PLUS_SUPPRESS_WARNING(w) JPH_CLANG_SUPPRESS_WARNING(w)
+
254#else
+
255 #define JPH_CLANG_13_PLUS_SUPPRESS_WARNING(w)
+
256#endif
+
257#if __clang_major__ >= 16
+
258 #define JPH_CLANG_16_PLUS_SUPPRESS_WARNING(w) JPH_CLANG_SUPPRESS_WARNING(w)
+
259#else
+
260 #define JPH_CLANG_16_PLUS_SUPPRESS_WARNING(w)
+
261#endif
+
262#else
+
263#define JPH_CLANG_SUPPRESS_WARNING(w)
+
264#define JPH_CLANG_13_PLUS_SUPPRESS_WARNING(w)
+
265#define JPH_CLANG_16_PLUS_SUPPRESS_WARNING(w)
+
266#endif
+
267#ifdef JPH_COMPILER_GCC
+
268#define JPH_PRAGMA(x) _Pragma(#x)
+
269#define JPH_SUPPRESS_WARNING_PUSH JPH_PRAGMA(GCC diagnostic push)
+
270#define JPH_SUPPRESS_WARNING_POP JPH_PRAGMA(GCC diagnostic pop)
+
271#define JPH_GCC_SUPPRESS_WARNING(w) JPH_PRAGMA(GCC diagnostic ignored w)
+
272#else
+
273#define JPH_GCC_SUPPRESS_WARNING(w)
+
274#endif
+
275#ifdef JPH_COMPILER_MSVC
+
276#define JPH_PRAGMA(x) __pragma(x)
+
277#define JPH_SUPPRESS_WARNING_PUSH JPH_PRAGMA(warning (push))
+
278#define JPH_SUPPRESS_WARNING_POP JPH_PRAGMA(warning (pop))
+
279#define JPH_MSVC_SUPPRESS_WARNING(w) JPH_PRAGMA(warning (disable : w))
+
280#if _MSC_VER >= 1920 && _MSC_VER < 1930
+
281 #define JPH_MSVC2019_SUPPRESS_WARNING(w) JPH_MSVC_SUPPRESS_WARNING(w)
+
282#else
+
283 #define JPH_MSVC2019_SUPPRESS_WARNING(w)
+
284#endif
+
285#else
+
286#define JPH_MSVC_SUPPRESS_WARNING(w)
+
287#define JPH_MSVC2019_SUPPRESS_WARNING(w)
+
288#endif
+
289
+
290// Disable common warnings triggered by Jolt when compiling with -Wall
+
+
291#define JPH_SUPPRESS_WARNINGS \
+
292 JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat") \
+
293 JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat-pedantic") \
+
294 JPH_CLANG_SUPPRESS_WARNING("-Wfloat-equal") \
+
295 JPH_CLANG_SUPPRESS_WARNING("-Wsign-conversion") \
+
296 JPH_CLANG_SUPPRESS_WARNING("-Wold-style-cast") \
+
297 JPH_CLANG_SUPPRESS_WARNING("-Wgnu-anonymous-struct") \
+
298 JPH_CLANG_SUPPRESS_WARNING("-Wnested-anon-types") \
+
299 JPH_CLANG_SUPPRESS_WARNING("-Wglobal-constructors") \
+
300 JPH_CLANG_SUPPRESS_WARNING("-Wexit-time-destructors") \
+
301 JPH_CLANG_SUPPRESS_WARNING("-Wnonportable-system-include-path") \
+
302 JPH_CLANG_SUPPRESS_WARNING("-Wlanguage-extension-token") \
+
303 JPH_CLANG_SUPPRESS_WARNING("-Wunused-parameter") \
+
304 JPH_CLANG_SUPPRESS_WARNING("-Wformat-nonliteral") \
+
305 JPH_CLANG_SUPPRESS_WARNING("-Wcovered-switch-default") \
+
306 JPH_CLANG_SUPPRESS_WARNING("-Wcast-align") \
+
307 JPH_CLANG_SUPPRESS_WARNING("-Winvalid-offsetof") \
+
308 JPH_CLANG_SUPPRESS_WARNING("-Wgnu-zero-variadic-macro-arguments") \
+
309 JPH_CLANG_SUPPRESS_WARNING("-Wdocumentation-unknown-command") \
+
310 JPH_CLANG_SUPPRESS_WARNING("-Wctad-maybe-unsupported") \
+
311 JPH_CLANG_13_PLUS_SUPPRESS_WARNING("-Wdeprecated-copy") \
+
312 JPH_CLANG_13_PLUS_SUPPRESS_WARNING("-Wdeprecated-copy-with-dtor") \
+
313 JPH_CLANG_16_PLUS_SUPPRESS_WARNING("-Wunsafe-buffer-usage") \
+
314 JPH_IF_NOT_ANDROID(JPH_CLANG_SUPPRESS_WARNING("-Wimplicit-int-float-conversion")) \
+
315 \
+
316 JPH_GCC_SUPPRESS_WARNING("-Wcomment") \
+
317 JPH_GCC_SUPPRESS_WARNING("-Winvalid-offsetof") \
+
318 JPH_GCC_SUPPRESS_WARNING("-Wclass-memaccess") \
+
319 JPH_GCC_SUPPRESS_WARNING("-Wpedantic") \
+
320 JPH_GCC_SUPPRESS_WARNING("-Wunused-parameter") \
+
321 JPH_GCC_SUPPRESS_WARNING("-Wmaybe-uninitialized") \
+
322 \
+
323 JPH_MSVC_SUPPRESS_WARNING(4619) /* #pragma warning: there is no warning number 'XXXX' */ \
+
324 JPH_MSVC_SUPPRESS_WARNING(4514) /* 'X' : unreferenced inline function has been removed */ \
+
325 JPH_MSVC_SUPPRESS_WARNING(4710) /* 'X' : function not inlined */ \
+
326 JPH_MSVC_SUPPRESS_WARNING(4711) /* function 'X' selected for automatic inline expansion */ \
+
327 JPH_MSVC_SUPPRESS_WARNING(4820) /* 'X': 'Y' bytes padding added after data member 'Z' */ \
+
328 JPH_MSVC_SUPPRESS_WARNING(4100) /* 'X' : unreferenced formal parameter */ \
+
329 JPH_MSVC_SUPPRESS_WARNING(4626) /* 'X' : assignment operator was implicitly defined as deleted because a base class assignment operator is inaccessible or deleted */ \
+
330 JPH_MSVC_SUPPRESS_WARNING(5027) /* 'X' : move assignment operator was implicitly defined as deleted because a base class move assignment operator is inaccessible or deleted */ \
+
331 JPH_MSVC_SUPPRESS_WARNING(4365) /* 'argument' : conversion from 'X' to 'Y', signed / unsigned mismatch */ \
+
332 JPH_MSVC_SUPPRESS_WARNING(4324) /* 'X' : structure was padded due to alignment specifier */ \
+
333 JPH_MSVC_SUPPRESS_WARNING(4625) /* 'X' : copy constructor was implicitly defined as deleted because a base class copy constructor is inaccessible or deleted */ \
+
334 JPH_MSVC_SUPPRESS_WARNING(5026) /* 'X': move constructor was implicitly defined as deleted because a base class move constructor is inaccessible or deleted */ \
+
335 JPH_MSVC_SUPPRESS_WARNING(4623) /* 'X' : default constructor was implicitly defined as deleted */ \
+
336 JPH_MSVC_SUPPRESS_WARNING(4201) /* nonstandard extension used: nameless struct/union */ \
+
337 JPH_MSVC_SUPPRESS_WARNING(4371) /* 'X': layout of class may have changed from a previous version of the compiler due to better packing of member 'Y' */ \
+
338 JPH_MSVC_SUPPRESS_WARNING(5045) /* Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified */ \
+
339 JPH_MSVC_SUPPRESS_WARNING(4583) /* 'X': destructor is not implicitly called */ \
+
340 JPH_MSVC_SUPPRESS_WARNING(4582) /* 'X': constructor is not implicitly called */ \
+
341 JPH_MSVC_SUPPRESS_WARNING(5219) /* implicit conversion from 'X' to 'Y', possible loss of data */ \
+
342 JPH_MSVC_SUPPRESS_WARNING(4826) /* Conversion from 'X *' to 'JPH::uint64' is sign-extended. This may cause unexpected runtime behavior. (32-bit) */ \
+
343 JPH_MSVC_SUPPRESS_WARNING(5264) /* 'X': 'const' variable is not used */ \
+
344 JPH_MSVC_SUPPRESS_WARNING(4251) /* class 'X' needs to have DLL-interface to be used by clients of class 'Y' */ \
+
345 JPH_MSVC_SUPPRESS_WARNING(4738) /* storing 32-bit float result in memory, possible loss of performance */ \
+
346 JPH_MSVC2019_SUPPRESS_WARNING(5246) /* the initialization of a subobject should be wrapped in braces */
+
+
347
+
348// OS-specific includes
+
349#if defined(JPH_PLATFORM_WINDOWS)
+
350 #define JPH_BREAKPOINT __debugbreak()
+
351#elif defined(JPH_PLATFORM_BLUE)
+
352 // Configuration for a popular game console.
+
353 // This file is not distributed because it would violate an NDA.
+
354 // Creating one should only be a couple of minutes of work if you have the documentation for the platform
+
355 // (you only need to define JPH_BREAKPOINT, JPH_PLATFORM_BLUE_GET_TICKS, JPH_PLATFORM_BLUE_MUTEX*, JPH_PLATFORM_BLUE_RWLOCK* and include the right header).
+
356 #include <Jolt/Core/PlatformBlue.h>
+
357#elif defined(JPH_PLATFORM_LINUX) || defined(JPH_PLATFORM_ANDROID) || defined(JPH_PLATFORM_MACOS) || defined(JPH_PLATFORM_IOS) || defined(JPH_PLATFORM_FREEBSD)
+
358 #if defined(JPH_CPU_X86)
+
359 #define JPH_BREAKPOINT __asm volatile ("int $0x3")
+
360 #elif defined(JPH_CPU_ARM)
+
361 #define JPH_BREAKPOINT __builtin_trap()
+
362 #elif defined(JPH_CPU_E2K)
+
363 #define JPH_BREAKPOINT __builtin_trap()
+
364 #endif
+
365#elif defined(JPH_PLATFORM_WASM)
+
366 #define JPH_BREAKPOINT do { } while (false) // Not supported
+
367#else
+
368 #error Unknown platform
+
369#endif
+
370
+
371// Begin the JPH namespace
+
+
372#define JPH_NAMESPACE_BEGIN \
+
373 JPH_SUPPRESS_WARNING_PUSH \
+
374 JPH_SUPPRESS_WARNINGS \
+
375 namespace JPH {
+
+
376
+
377// End the JPH namespace
+
+
378#define JPH_NAMESPACE_END \
+
379 } \
+
380 JPH_SUPPRESS_WARNING_POP
+
+
381
+
382// Suppress warnings generated by the standard template library
+
+
383#define JPH_SUPPRESS_WARNINGS_STD_BEGIN \
+
384 JPH_SUPPRESS_WARNING_PUSH \
+
385 JPH_MSVC_SUPPRESS_WARNING(4365) \
+
386 JPH_MSVC_SUPPRESS_WARNING(4619) \
+
387 JPH_MSVC_SUPPRESS_WARNING(4710) \
+
388 JPH_MSVC_SUPPRESS_WARNING(4711) \
+
389 JPH_MSVC_SUPPRESS_WARNING(4820) \
+
390 JPH_MSVC_SUPPRESS_WARNING(4514) \
+
391 JPH_MSVC_SUPPRESS_WARNING(5262) \
+
392 JPH_MSVC_SUPPRESS_WARNING(5264) \
+
393 JPH_MSVC_SUPPRESS_WARNING(4738)
+
+
394
+
+
395#define JPH_SUPPRESS_WARNINGS_STD_END \
+
396 JPH_SUPPRESS_WARNING_POP
+
+
397
+
398// Standard C++ includes
+ +
400#include <float.h>
+
401#include <limits.h>
+
402#include <string.h>
+
403#include <utility>
+
404#include <cmath>
+
405#include <sstream>
+
406#include <functional>
+
407#include <algorithm>
+
408#include <cstdint>
+
409#ifdef JPH_COMPILER_MSVC
+
410 #include <malloc.h> // for alloca
+
411#endif
+
412#if defined(JPH_USE_SSE)
+
413 #include <immintrin.h>
+
414#elif defined(JPH_USE_NEON)
+
415 #ifdef JPH_COMPILER_MSVC
+
416 #include <intrin.h>
+
417 #include <arm64_neon.h>
+
418 #else
+
419 #include <arm_neon.h>
+
420 #endif
+
421#endif
+ +
423
+ +
425
+
426// Commonly used STL types
+
427using std::pair;
+
428using std::min;
+
429using std::max;
+
430using std::abs;
+
431using std::sqrt;
+
432using std::ceil;
+
433using std::floor;
+
434using std::trunc;
+
435using std::round;
+
436using std::fmod;
+
437using std::swap;
+
438using std::size;
+
439using std::string;
+
440using std::string_view;
+
441using std::function;
+
442using std::numeric_limits;
+
443using std::isfinite;
+
444using std::isnan;
+
445using std::is_trivial;
+
446using std::is_trivially_constructible;
+
447using std::is_trivially_destructible;
+
448using std::ostream;
+
449using std::istream;
+
450
+
451// Standard types
+
452using uint = unsigned int;
+
453using uint8 = std::uint8_t;
+
454using uint16 = std::uint16_t;
+
455using uint32 = std::uint32_t;
+
456using uint64 = std::uint64_t;
+
457
+
458// Assert sizes of types
+
459static_assert(sizeof(uint) >= 4, "Invalid size of uint");
+
460static_assert(sizeof(uint8) == 1, "Invalid size of uint8");
+
461static_assert(sizeof(uint16) == 2, "Invalid size of uint16");
+
462static_assert(sizeof(uint32) == 4, "Invalid size of uint32");
+
463static_assert(sizeof(uint64) == 8, "Invalid size of uint64");
+
464static_assert(sizeof(void *) == (JPH_CPU_ADDRESS_BITS == 64? 8 : 4), "Invalid size of pointer" );
+
465
+
466// Determine if we want extra debugging code to be active
+
467#if !defined(NDEBUG) && !defined(JPH_NO_DEBUG)
+
468 #define JPH_DEBUG
+
469#endif
+
470
+
471// Define inline macro
+
472#if defined(JPH_NO_FORCE_INLINE)
+
473 #define JPH_INLINE inline
+
474#elif defined(JPH_COMPILER_CLANG)
+
475 #define JPH_INLINE __inline__ __attribute__((always_inline))
+
476#elif defined(JPH_COMPILER_GCC)
+
477 // On gcc 14 using always_inline in debug mode causes error: "inlining failed in call to 'always_inline' 'XXX': function not considered for inlining"
+
478 // See: https://github.com/jrouwe/JoltPhysics/issues/1096
+
479 #if __GNUC__ >= 14 && defined(JPH_DEBUG)
+
480 #define JPH_INLINE inline
+
481 #else
+
482 #define JPH_INLINE __inline__ __attribute__((always_inline))
+
483 #endif
+
484#elif defined(JPH_COMPILER_MSVC)
+
485 #define JPH_INLINE __forceinline
+
486#else
+
487 #error Undefined
+
488#endif
+
489
+
490// Cache line size (used for aligning to cache line)
+
491#ifndef JPH_CACHE_LINE_SIZE
+
492 #define JPH_CACHE_LINE_SIZE 64
+
493#endif
+
494
+
495// Define macro to get current function name
+
496#if defined(JPH_COMPILER_CLANG) || defined(JPH_COMPILER_GCC)
+
497 #define JPH_FUNCTION_NAME __PRETTY_FUNCTION__
+
498#elif defined(JPH_COMPILER_MSVC)
+
499 #define JPH_FUNCTION_NAME __FUNCTION__
+
500#else
+
501 #error Undefined
+
502#endif
+
503
+
504// Stack allocation
+
505#define JPH_STACK_ALLOC(n) alloca(n)
+
506
+
507// Shorthand for #ifdef JPH_DEBUG / #endif
+
508#ifdef JPH_DEBUG
+
509 #define JPH_IF_DEBUG(...) __VA_ARGS__
+
510 #define JPH_IF_NOT_DEBUG(...)
+
511#else
+
512 #define JPH_IF_DEBUG(...)
+
513 #define JPH_IF_NOT_DEBUG(...) __VA_ARGS__
+
514#endif
+
515
+
516// Shorthand for #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED / #endif
+
517#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
518 #define JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED(...) __VA_ARGS__
+
519#else
+
520 #define JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED(...)
+
521#endif
+
522
+
523// Helper macros to detect if we're running in single or double precision mode
+
524#ifdef JPH_DOUBLE_PRECISION
+
525 #define JPH_IF_SINGLE_PRECISION(...)
+
526 #define JPH_IF_SINGLE_PRECISION_ELSE(s, d) d
+
527 #define JPH_IF_DOUBLE_PRECISION(...) __VA_ARGS__
+
528#else
+
529 #define JPH_IF_SINGLE_PRECISION(...) __VA_ARGS__
+
530 #define JPH_IF_SINGLE_PRECISION_ELSE(s, d) s
+
531 #define JPH_IF_DOUBLE_PRECISION(...)
+
532#endif
+
533
+
534// Helper macro to detect if the debug renderer is active
+
535#ifdef JPH_DEBUG_RENDERER
+
536 #define JPH_IF_DEBUG_RENDERER(...) __VA_ARGS__
+
537 #define JPH_IF_NOT_DEBUG_RENDERER(...)
+
538#else
+
539 #define JPH_IF_DEBUG_RENDERER(...)
+
540 #define JPH_IF_NOT_DEBUG_RENDERER(...) __VA_ARGS__
+
541#endif
+
542
+
543// Macro to indicate that a parameter / variable is unused
+
544#define JPH_UNUSED(x) (void)x
+
545
+
546// Macro to enable floating point precise mode and to disable fused multiply add instructions
+
547#if defined(JPH_COMPILER_GCC) || defined(JPH_CROSS_PLATFORM_DETERMINISTIC)
+
548 // We compile without -ffast-math and -ffp-contract=fast, so we don't need to disable anything
+
549 #define JPH_PRECISE_MATH_ON
+
550 #define JPH_PRECISE_MATH_OFF
+
551#elif defined(JPH_COMPILER_CLANG)
+
552 // We compile without -ffast-math because pragma float_control(precise, on) doesn't seem to actually negate all of the -ffast-math effects and causes the unit tests to fail (even if the pragma is added to all files)
+
553 // On clang 14 and later we can turn off float contraction through a pragma (before it was buggy), so if FMA is on we can disable it through this macro
+
554 #if (defined(JPH_CPU_ARM) && !defined(JPH_PLATFORM_ANDROID) && __clang_major__ >= 16) || (defined(JPH_CPU_X86) && __clang_major__ >= 14)
+
555 #define JPH_PRECISE_MATH_ON \
+
556 _Pragma("float_control(precise, on, push)") \
+
557 _Pragma("clang fp contract(off)")
+
558 #define JPH_PRECISE_MATH_OFF \
+
559 _Pragma("float_control(pop)")
+
560 #elif __clang_major__ >= 14 && (defined(JPH_USE_FMADD) || defined(FP_FAST_FMA))
+
561 #define JPH_PRECISE_MATH_ON \
+
562 _Pragma("clang fp contract(off)")
+
563 #define JPH_PRECISE_MATH_OFF \
+
564 _Pragma("clang fp contract(on)")
+
565 #else
+
566 #define JPH_PRECISE_MATH_ON
+
567 #define JPH_PRECISE_MATH_OFF
+
568 #endif
+
569#elif defined(JPH_COMPILER_MSVC)
+
570 // Unfortunately there is no way to push the state of fp_contract, so we have to assume it was turned on before JPH_PRECISE_MATH_ON
+
571 #define JPH_PRECISE_MATH_ON \
+
572 __pragma(float_control(precise, on, push)) \
+
573 __pragma(fp_contract(off))
+
574 #define JPH_PRECISE_MATH_OFF \
+
575 __pragma(fp_contract(on)) \
+
576 __pragma(float_control(pop))
+
577#else
+
578 #error Undefined
+
579#endif
+
580
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
std::uint64_t uint64
Definition Core.h:456
+
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
+
std::uint16_t uint16
Definition Core.h:454
+
+
+ + + + diff --git a/_cylinder_shape_8cpp.html b/_cylinder_shape_8cpp.html new file mode 100644 index 000000000..eed12132d --- /dev/null +++ b/_cylinder_shape_8cpp.html @@ -0,0 +1,161 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/CylinderShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CylinderShape.cpp File Reference
+
+
+ + + + +

+Classes

class  CylinderShape::Cylinder
 
+ + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (CylinderShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (CylinderShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_cylinder_shape_8cpp.js b/_cylinder_shape_8cpp.js new file mode 100644 index 000000000..3ebeab7b2 --- /dev/null +++ b/_cylinder_shape_8cpp.js @@ -0,0 +1,5 @@ +var _cylinder_shape_8cpp = +[ + [ "CylinderShape::Cylinder", "class_cylinder_shape_1_1_cylinder.html", "class_cylinder_shape_1_1_cylinder" ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_cylinder_shape_8cpp.html#aa2d67f34026bab44416c0d170da0864a", null ] +]; \ No newline at end of file diff --git a/_cylinder_shape_8h.html b/_cylinder_shape_8h.html new file mode 100644 index 000000000..9fdf5bfb5 --- /dev/null +++ b/_cylinder_shape_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/CylinderShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CylinderShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  CylinderShapeSettings
 Class that constructs a CylinderShape. More...
 
class  CylinderShape
 A cylinder. More...
 
+
+
+ + + + diff --git a/_cylinder_shape_8h.js b/_cylinder_shape_8h.js new file mode 100644 index 000000000..453b957e3 --- /dev/null +++ b/_cylinder_shape_8h.js @@ -0,0 +1,5 @@ +var _cylinder_shape_8h = +[ + [ "CylinderShapeSettings", "class_cylinder_shape_settings.html", "class_cylinder_shape_settings" ], + [ "CylinderShape", "class_cylinder_shape.html", "class_cylinder_shape" ] +]; \ No newline at end of file diff --git a/_cylinder_shape_8h_source.html b/_cylinder_shape_8h_source.html new file mode 100644 index 000000000..5916646e6 --- /dev/null +++ b/_cylinder_shape_8h_source.html @@ -0,0 +1,284 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/CylinderShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CylinderShape.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
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+ +
17
+
18
+ +
20
+
23 CylinderShapeSettings(float inHalfHeight, float inRadius, float inConvexRadius = cDefaultConvexRadius, const PhysicsMaterial *inMaterial = nullptr) : ConvexShapeSettings(inMaterial), mHalfHeight(inHalfHeight), mRadius(inRadius), mConvexRadius(inConvexRadius) { }
+
24
+
25 // See: ShapeSettings
+
26 virtual ShapeResult Create() const override;
+
27
+
28 float mHalfHeight = 0.0f;
+
29 float mRadius = 0.0f;
+
30 float mConvexRadius = 0.0f;
+
31};
+
+
32
+
+ +
35{
+
36public:
+ +
38
+ +
41 CylinderShape(const CylinderShapeSettings &inSettings, ShapeResult &outResult);
+
42
+
45 CylinderShape(float inHalfHeight, float inRadius, float inConvexRadius = cDefaultConvexRadius, const PhysicsMaterial *inMaterial = nullptr);
+
46
+
48 float GetHalfHeight() const { return mHalfHeight; }
+
49
+
51 float GetRadius() const { return mRadius; }
+
52
+
53 // See Shape::GetLocalBounds
+
54 virtual AABox GetLocalBounds() const override;
+
55
+
56 // See Shape::GetInnerRadius
+
57 virtual float GetInnerRadius() const override { return min(mHalfHeight, mRadius); }
+
58
+
59 // See Shape::GetMassProperties
+
60 virtual MassProperties GetMassProperties() const override;
+
61
+
62 // See Shape::GetSurfaceNormal
+
63 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
64
+
65 // See Shape::GetSupportingFace
+
66 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
67
+
68 // See ConvexShape::GetSupportFunction
+
69 virtual const Support * GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override;
+
70
+
71#ifdef JPH_DEBUG_RENDERER
+
72 // See Shape::Draw
+
73 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
74#endif // JPH_DEBUG_RENDERER
+
75
+
76 // See Shape::CastRay
+ +
78 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
79
+
80 // See: Shape::CollidePoint
+
81 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
82
+
83 // See: Shape::CollideSoftBodyVertices
+
84 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
85
+
86 // See Shape::GetTrianglesStart
+
87 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override;
+
88
+
89 // See Shape::GetTrianglesNext
+
90 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override;
+
91
+
92 // See Shape
+
93 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
94
+
95 // See Shape::GetStats
+
96 virtual Stats GetStats() const override { return Stats(sizeof(*this), 0); }
+
97
+
98 // See Shape::GetVolume
+
99 virtual float GetVolume() const override { return 2.0f * JPH_PI * mHalfHeight * Square(mRadius); }
+
100
+
102 float GetConvexRadius() const { return mConvexRadius; }
+
103
+
104 // See Shape::IsValidScale
+
105 virtual bool IsValidScale(Vec3Arg inScale) const override;
+
106
+
107 // See Shape::MakeScaleValid
+
108 virtual Vec3 MakeScaleValid(Vec3Arg inScale) const override;
+
109
+
110 // Register shape functions with the registry
+
111 static void sRegister();
+
112
+
113protected:
+
114 // See: Shape::RestoreBinaryState
+
115 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
116
+
117private:
+
118 // Class for GetSupportFunction
+
119 class Cylinder;
+
120
+
121 float mHalfHeight = 0.0f;
+
122 float mRadius = 0.0f;
+
123 float mConvexRadius = 0.0f;
+
124};
+
+
125
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
constexpr float cDefaultConvexRadius
How much padding to add around objects.
Definition PhysicsSettings.h:16
+
#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:76
+ +
Axis aligned box.
Definition AABox.h:16
+
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
+
virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
Definition ConvexShape.cpp:159
+
Class that constructs a ConvexShape (abstract)
Definition ConvexShape.h:18
+
Definition CylinderShape.cpp:129
+
A cylinder.
Definition CylinderShape.h:35
+
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition CylinderShape.h:96
+
float GetConvexRadius() const
Get the convex radius of this cylinder.
Definition CylinderShape.h:102
+
float GetHalfHeight() const
Get half height of cylinder.
Definition CylinderShape.h:48
+
virtual float GetVolume() const override
Definition CylinderShape.h:99
+
float GetRadius() const
Get radius of cylinder.
Definition CylinderShape.h:51
+
virtual float GetInnerRadius() const override
Definition CylinderShape.h:57
+
JPH_OVERRIDE_NEW_DELETE CylinderShape()
Constructor.
Definition CylinderShape.h:40
+
Class that constructs a CylinderShape.
Definition CylinderShape.h:14
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
Definition Quat.h:33
+
Specialization of cast result against a shape.
Definition CastResult.h:30
+
Filter class.
Definition ShapeFilter.h:17
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
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 Vec3.h:17
+
Definition RayCast.h:47
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
+
+ + + + diff --git a/_d_mat44_8h.html b/_d_mat44_8h.html new file mode 100644 index 000000000..e5df63618 --- /dev/null +++ b/_d_mat44_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Math/DMat44.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DMat44.h File Reference
+
+
+
#include <Jolt/Math/MathTypes.h>
+#include "DMat44.inl"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  DMat44
 Holds a 4x4 matrix of floats with the last column consisting of doubles. More...
 
+
+
+ + + + diff --git a/_d_mat44_8h.js b/_d_mat44_8h.js new file mode 100644 index 000000000..4736811e4 --- /dev/null +++ b/_d_mat44_8h.js @@ -0,0 +1,4 @@ +var _d_mat44_8h = +[ + [ "DMat44", "class_d_mat44.html", "class_d_mat44" ] +]; \ No newline at end of file diff --git a/_d_mat44_8h_source.html b/_d_mat44_8h_source.html new file mode 100644 index 000000000..daa61336a --- /dev/null +++ b/_d_mat44_8h_source.html @@ -0,0 +1,298 @@ + + + + + + + +Jolt Physics: Jolt/Math/DMat44.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DMat44.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2022 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+
+
12class [[nodiscard]] alignas(JPH_DVECTOR_ALIGNMENT) DMat44
+
13{
+
14public:
+ +
16
+
17 // Underlying column type
+ + + +
21
+
22 // Argument type
+ +
24
+
26 DMat44() = default;
+
27 JPH_INLINE DMat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, DVec3Arg inC4);
+
28 DMat44(const DMat44 &inM2) = default;
+
29 DMat44 & operator = (const DMat44 &inM2) = default;
+
30 JPH_INLINE explicit DMat44(Mat44Arg inM);
+
31 JPH_INLINE DMat44(Mat44Arg inRot, DVec3Arg inT);
+
32 JPH_INLINE DMat44(Type inC1, Type inC2, Type inC3, DTypeArg inC4);
+
33
+
35 static JPH_INLINE DMat44 sZero();
+
36
+
38 static JPH_INLINE DMat44 sIdentity();
+
39
+
41 static JPH_INLINE DMat44 sRotation(QuatArg inQuat) { return DMat44(Mat44::sRotation(inQuat), DVec3::sZero()); }
+
42
+
44 static JPH_INLINE DMat44 sTranslation(DVec3Arg inV) { return DMat44(Vec4(1, 0, 0, 0), Vec4(0, 1, 0, 0), Vec4(0, 0, 1, 0), inV); }
+
45
+
47 static JPH_INLINE DMat44 sRotationTranslation(QuatArg inR, DVec3Arg inT) { return DMat44(Mat44::sRotation(inR), inT); }
+
48
+
50 static JPH_INLINE DMat44 sInverseRotationTranslation(QuatArg inR, DVec3Arg inT);
+
51
+
53 static JPH_INLINE DMat44 sScale(Vec3Arg inV) { return DMat44(Mat44::sScale(inV), DVec3::sZero()); }
+
54
+
56 JPH_INLINE Mat44 ToMat44() const { return Mat44(mCol[0], mCol[1], mCol[2], Vec3(mCol3)); }
+
57
+
59 JPH_INLINE bool operator == (DMat44Arg inM2) const;
+
60 JPH_INLINE bool operator != (DMat44Arg inM2) const { return !(*this == inM2); }
+
61
+
63 JPH_INLINE bool IsClose(DMat44Arg inM2, float inMaxDistSq = 1.0e-12f) const;
+
64
+
66 JPH_INLINE DMat44 operator * (Mat44Arg inM) const;
+
67
+
69 JPH_INLINE DMat44 operator * (DMat44Arg inM) const;
+
70
+
72 JPH_INLINE DVec3 operator * (Vec3Arg inV) const;
+
73
+
75 JPH_INLINE DVec3 operator * (DVec3Arg inV) const;
+
76
+
78 JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const { return GetRotation().Multiply3x3(inV); }
+
79
+
81 JPH_INLINE DVec3 Multiply3x3(DVec3Arg inV) const;
+
82
+
84 JPH_INLINE Vec3 Multiply3x3Transposed(Vec3Arg inV) const { return GetRotation().Multiply3x3Transposed(inV); }
+
85
+
87 JPH_INLINE DMat44 PreScaled(Vec3Arg inScale) const;
+
88
+
90 JPH_INLINE DMat44 PostScaled(Vec3Arg inScale) const;
+
91
+
93 JPH_INLINE DMat44 PreTranslated(Vec3Arg inTranslation) const;
+
94
+
96 JPH_INLINE DMat44 PreTranslated(DVec3Arg inTranslation) const;
+
97
+
99 JPH_INLINE DMat44 PostTranslated(Vec3Arg inTranslation) const;
+
100
+
102 JPH_INLINE DMat44 PostTranslated(DVec3Arg inTranslation) const;
+
103
+
105 JPH_INLINE Vec3 GetAxisX() const { return Vec3(mCol[0]); }
+
106 JPH_INLINE void SetAxisX(Vec3Arg inV) { mCol[0] = Vec4(inV, 0.0f); }
+
107 JPH_INLINE Vec3 GetAxisY() const { return Vec3(mCol[1]); }
+
108 JPH_INLINE void SetAxisY(Vec3Arg inV) { mCol[1] = Vec4(inV, 0.0f); }
+
109 JPH_INLINE Vec3 GetAxisZ() const { return Vec3(mCol[2]); }
+
110 JPH_INLINE void SetAxisZ(Vec3Arg inV) { mCol[2] = Vec4(inV, 0.0f); }
+
111 JPH_INLINE DVec3 GetTranslation() const { return mCol3; }
+
112 JPH_INLINE void SetTranslation(DVec3Arg inV) { mCol3 = inV; }
+
113 JPH_INLINE Vec3 GetColumn3(uint inCol) const { JPH_ASSERT(inCol < 3); return Vec3(mCol[inCol]); }
+
114 JPH_INLINE void SetColumn3(uint inCol, Vec3Arg inV) { JPH_ASSERT(inCol < 3); mCol[inCol] = Vec4(inV, 0.0f); }
+
115 JPH_INLINE Vec4 GetColumn4(uint inCol) const { JPH_ASSERT(inCol < 3); return mCol[inCol]; }
+
116 JPH_INLINE void SetColumn4(uint inCol, Vec4Arg inV) { JPH_ASSERT(inCol < 3); mCol[inCol] = inV; }
+
117
+
119 JPH_INLINE Mat44 Transposed3x3() const { return GetRotation().Transposed3x3(); }
+
120
+
122 JPH_INLINE DMat44 Inversed() const;
+
123
+
125 JPH_INLINE DMat44 InversedRotationTranslation() const;
+
126
+
128 JPH_INLINE Mat44 GetRotation() const { return Mat44(mCol[0], mCol[1], mCol[2], Vec4(0, 0, 0, 1)); }
+
129
+
131 JPH_INLINE void SetRotation(Mat44Arg inRotation);
+
132
+
134 JPH_INLINE Quat GetQuaternion() const { return GetRotation().GetQuaternion(); }
+
135
+
137 JPH_INLINE Mat44 GetDirectionPreservingMatrix() const { return GetRotation().Inversed3x3().Transposed3x3(); }
+
138
+
140 JPH_INLINE DMat44 Decompose(Vec3 &outScale) const { return DMat44(GetRotation().Decompose(outScale), mCol3); }
+
141
+
+
143 friend ostream & operator << (ostream &inStream, DMat44Arg inM)
+
144 {
+
145 inStream << inM.mCol[0] << ", " << inM.mCol[1] << ", " << inM.mCol[2] << ", " << inM.mCol3;
+
146 return inStream;
+
147 }
+
+
148
+
149private:
+
150 Vec4 mCol[3];
+
151 DVec3 mCol3;
+
152};
+
+
153
+
154static_assert(is_trivial<DMat44>(), "Is supposed to be a trivial type!");
+
155
+ +
157
+
158#include "DMat44.inl"
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:451
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
const DMat44 & DMat44Arg
Definition MathTypes.h:32
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
JPH_INLINE void SetColumn4(uint inCol, Vec4Arg inV)
Definition DMat44.h:116
+
DVec3::Type DType
Definition DMat44.h:19
+
DVec3::TypeArg DTypeArg
Definition DMat44.h:20
+
JPH_INLINE void SetColumn3(uint inCol, Vec3Arg inV)
Definition DMat44.h:114
+
JPH_INLINE void SetTranslation(DVec3Arg inV)
Definition DMat44.h:112
+
JPH_INLINE void SetAxisZ(Vec3Arg inV)
Definition DMat44.h:110
+
JPH_INLINE void SetAxisX(Vec3Arg inV)
Definition DMat44.h:106
+
JPH_INLINE Mat44 GetDirectionPreservingMatrix() const
Get matrix that transforms a direction with the same transform as this matrix (length is not preserve...
Definition DMat44.h:137
+
JPH_INLINE Vec4 GetColumn4(uint inCol) const
Definition DMat44.h:115
+
static JPH_INLINE DMat44 sRotationTranslation(QuatArg inR, DVec3Arg inT)
Get matrix that rotates and translates.
Definition DMat44.h:47
+
JPH_INLINE Mat44 ToMat44() const
Convert to Mat44 rounding to nearest.
Definition DMat44.h:56
+
JPH_INLINE Mat44 Transposed3x3() const
Transpose 3x3 subpart of matrix.
Definition DMat44.h:119
+
JPH_INLINE Vec3 Multiply3x3Transposed(Vec3Arg inV) const
Multiply vector by only 3x3 part of the transpose of the matrix ( )
Definition DMat44.h:84
+
static JPH_INLINE DMat44 sScale(Vec3Arg inV)
Get matrix that scales (produces a matrix with (inV, 1) on its diagonal)
Definition DMat44.h:53
+
DMat44()=default
Constructor.
+
JPH_INLINE void SetAxisY(Vec3Arg inV)
Definition DMat44.h:108
+
JPH_INLINE Quat GetQuaternion() const
Convert to quaternion.
Definition DMat44.h:134
+
static JPH_INLINE DMat44 sRotation(QuatArg inQuat)
Rotate from quaternion.
Definition DMat44.h:41
+
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition DMat44.h:78
+
static JPH_INLINE DMat44 sTranslation(DVec3Arg inV)
Get matrix that translates.
Definition DMat44.h:44
+
JPH_INLINE Vec3 GetAxisX() const
Access to the columns.
Definition DMat44.h:105
+
JPH_INLINE DMat44 Decompose(Vec3 &outScale) const
Works identical to Mat44::Decompose.
Definition DMat44.h:140
+
DMat44(const DMat44 &inM2)=default
+
JPH_INLINE DVec3 GetTranslation() const
Definition DMat44.h:111
+
JPH_INLINE Mat44 GetRotation() const
Get rotation part only (note: retains the first 3 values from the bottom row)
Definition DMat44.h:128
+
Vec4::Type Type
Definition DMat44.h:18
+
JPH_INLINE Vec3 GetColumn3(uint inCol) const
Definition DMat44.h:113
+
JPH_INLINE Vec3 GetAxisZ() const
Definition DMat44.h:109
+
JPH_INLINE Vec3 GetAxisY() const
Definition DMat44.h:107
+
Definition DVec3.h:14
+
{ double mData[4] Type
Definition DVec3.h:29
+
const Type & TypeArg
Definition DVec3.h:30
+
static JPH_INLINE DVec3 sZero()
Vector with all zeros.
Definition DVec3.inl:120
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Mat44 Transposed3x3() const
Transpose 3x3 subpart of matrix.
Definition Mat44.inl:502
+
static JPH_INLINE Mat44 sScale(float inScale)
Get matrix that scales uniformly.
Definition Mat44.inl:163
+
static JPH_INLINE Mat44 sRotation(Vec3Arg inAxis, float inAngle)
Rotate around arbitrary axis.
Definition Mat44.inl:139
+
JPH_INLINE Mat44 Inversed3x3() const
Inverse 3x3 matrix.
Definition Mat44.inl:753
+
Definition Quat.h:33
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
{ float mData[4] Type
Definition Vec4.h:24
+
+
+ + + + diff --git a/_d_mat44_8inl.html b/_d_mat44_8inl.html new file mode 100644 index 000000000..e4e04cd90 --- /dev/null +++ b/_d_mat44_8inl.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/Math/DMat44.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DMat44.inl File Reference
+
+
+
#include <Jolt/Math/DVec3.h>
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/_d_mat44_8inl_source.html b/_d_mat44_8inl_source.html new file mode 100644 index 000000000..6c6d49c91 --- /dev/null +++ b/_d_mat44_8inl_source.html @@ -0,0 +1,523 @@ + + + + + + + +Jolt Physics: Jolt/Math/DMat44.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DMat44.inl
+
+
+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
+
7#include <Jolt/Math/DVec3.h>
+
8
+ +
10
+
+ +
12 mCol { inC1, inC2, inC3 },
+
13 mCol3(inC4)
+
14{
+
15}
+
+
16
+
+
17DMat44::DMat44(Type inC1, Type inC2, Type inC3, DTypeArg inC4) :
+
18 mCol { inC1, inC2, inC3 },
+
19 mCol3(inC4)
+
20{
+
21}
+
+
22
+
+ +
24 mCol { inM.GetColumn4(0), inM.GetColumn4(1), inM.GetColumn4(2) },
+
25 mCol3(inM.GetTranslation())
+
26{
+
27}
+
+
28
+
+ +
30 mCol { inRot.GetColumn4(0), inRot.GetColumn4(1), inRot.GetColumn4(2) },
+
31 mCol3(inT)
+
32{
+
33}
+
+
34
+
+ +
36{
+ +
38}
+
+
39
+
+ +
41{
+
42 return DMat44(Vec4(1, 0, 0, 0), Vec4(0, 1, 0, 0), Vec4(0, 0, 1, 0), DVec3::sZero());
+
43}
+
+
44
+
+ +
46{
+ +
48 DMat44 dm(m, DVec3::sZero());
+
49 dm.SetTranslation(-dm.Multiply3x3(inT));
+
50 return dm;
+
51}
+
+
52
+
+ +
54{
+
55 return mCol[0] == inM2.mCol[0]
+
56 && mCol[1] == inM2.mCol[1]
+
57 && mCol[2] == inM2.mCol[2]
+
58 && mCol3 == inM2.mCol3;
+
59}
+
+
60
+
+
61bool DMat44::IsClose(DMat44Arg inM2, float inMaxDistSq) const
+
62{
+
63 for (int i = 0; i < 3; ++i)
+
64 if (!mCol[i].IsClose(inM2.mCol[i], inMaxDistSq))
+
65 return false;
+
66 return mCol3.IsClose(inM2.mCol3, double(inMaxDistSq));
+
67}
+
+
68
+
+ +
70{
+
71#if defined(JPH_USE_AVX)
+
72 __m128 t = _mm_mul_ps(mCol[0].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(0, 0, 0, 0)));
+
73 t = _mm_add_ps(t, _mm_mul_ps(mCol[1].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(1, 1, 1, 1))));
+
74 t = _mm_add_ps(t, _mm_mul_ps(mCol[2].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(2, 2, 2, 2))));
+
75 return DVec3::sFixW(_mm256_add_pd(mCol3.mValue, _mm256_cvtps_pd(t)));
+
76#elif defined(JPH_USE_SSE)
+
77 __m128 t = _mm_mul_ps(mCol[0].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(0, 0, 0, 0)));
+
78 t = _mm_add_ps(t, _mm_mul_ps(mCol[1].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(1, 1, 1, 1))));
+
79 t = _mm_add_ps(t, _mm_mul_ps(mCol[2].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(2, 2, 2, 2))));
+
80 __m128d low = _mm_add_pd(mCol3.mValue.mLow, _mm_cvtps_pd(t));
+
81 __m128d high = _mm_add_pd(mCol3.mValue.mHigh, _mm_cvtps_pd(_mm_shuffle_ps(t, t, _MM_SHUFFLE(2, 2, 2, 2))));
+
82 return DVec3({ low, high });
+
83#elif defined(JPH_USE_NEON)
+
84 float32x4_t t = vmulq_f32(mCol[0].mValue, vdupq_laneq_f32(inV.mValue, 0));
+
85 t = vmlaq_f32(t, mCol[1].mValue, vdupq_laneq_f32(inV.mValue, 1));
+
86 t = vmlaq_f32(t, mCol[2].mValue, vdupq_laneq_f32(inV.mValue, 2));
+
87 float64x2_t low = vaddq_f64(mCol3.mValue.val[0], vcvt_f64_f32(vget_low_f32(t)));
+
88 float64x2_t high = vaddq_f64(mCol3.mValue.val[1], vcvt_high_f64_f32(t));
+
89 return DVec3::sFixW({ low, high });
+
90#else
+
91 return DVec3(
+
92 mCol3.mF64[0] + double(mCol[0].mF32[0] * inV.mF32[0] + mCol[1].mF32[0] * inV.mF32[1] + mCol[2].mF32[0] * inV.mF32[2]),
+
93 mCol3.mF64[1] + double(mCol[0].mF32[1] * inV.mF32[0] + mCol[1].mF32[1] * inV.mF32[1] + mCol[2].mF32[1] * inV.mF32[2]),
+
94 mCol3.mF64[2] + double(mCol[0].mF32[2] * inV.mF32[0] + mCol[1].mF32[2] * inV.mF32[1] + mCol[2].mF32[2] * inV.mF32[2]));
+
95#endif
+
96}
+
+
97
+
+ +
99{
+
100#if defined(JPH_USE_AVX)
+
101 __m256d t = _mm256_add_pd(mCol3.mValue, _mm256_mul_pd(_mm256_cvtps_pd(mCol[0].mValue), _mm256_set1_pd(inV.mF64[0])));
+
102 t = _mm256_add_pd(t, _mm256_mul_pd(_mm256_cvtps_pd(mCol[1].mValue), _mm256_set1_pd(inV.mF64[1])));
+
103 t = _mm256_add_pd(t, _mm256_mul_pd(_mm256_cvtps_pd(mCol[2].mValue), _mm256_set1_pd(inV.mF64[2])));
+
104 return DVec3::sFixW(t);
+
105#elif defined(JPH_USE_SSE)
+
106 __m128d xxxx = _mm_set1_pd(inV.mF64[0]);
+
107 __m128d yyyy = _mm_set1_pd(inV.mF64[1]);
+
108 __m128d zzzz = _mm_set1_pd(inV.mF64[2]);
+
109 __m128 col0 = mCol[0].mValue;
+
110 __m128 col1 = mCol[1].mValue;
+
111 __m128 col2 = mCol[2].mValue;
+
112 __m128d t_low = _mm_add_pd(mCol3.mValue.mLow, _mm_mul_pd(_mm_cvtps_pd(col0), xxxx));
+
113 t_low = _mm_add_pd(t_low, _mm_mul_pd(_mm_cvtps_pd(col1), yyyy));
+
114 t_low = _mm_add_pd(t_low, _mm_mul_pd(_mm_cvtps_pd(col2), zzzz));
+
115 __m128d t_high = _mm_add_pd(mCol3.mValue.mHigh, _mm_mul_pd(_mm_cvtps_pd(_mm_shuffle_ps(col0, col0, _MM_SHUFFLE(2, 2, 2, 2))), xxxx));
+
116 t_high = _mm_add_pd(t_high, _mm_mul_pd(_mm_cvtps_pd(_mm_shuffle_ps(col1, col1, _MM_SHUFFLE(2, 2, 2, 2))), yyyy));
+
117 t_high = _mm_add_pd(t_high, _mm_mul_pd(_mm_cvtps_pd(_mm_shuffle_ps(col2, col2, _MM_SHUFFLE(2, 2, 2, 2))), zzzz));
+
118 return DVec3({ t_low, t_high });
+
119#elif defined(JPH_USE_NEON)
+
120 float64x2_t xxxx = vdupq_laneq_f64(inV.mValue.val[0], 0);
+
121 float64x2_t yyyy = vdupq_laneq_f64(inV.mValue.val[0], 1);
+
122 float64x2_t zzzz = vdupq_laneq_f64(inV.mValue.val[1], 0);
+
123 float32x4_t col0 = mCol[0].mValue;
+
124 float32x4_t col1 = mCol[1].mValue;
+
125 float32x4_t col2 = mCol[2].mValue;
+
126 float64x2_t t_low = vaddq_f64(mCol3.mValue.val[0], vmulq_f64(vcvt_f64_f32(vget_low_f32(col0)), xxxx));
+
127 t_low = vaddq_f64(t_low, vmulq_f64(vcvt_f64_f32(vget_low_f32(col1)), yyyy));
+
128 t_low = vaddq_f64(t_low, vmulq_f64(vcvt_f64_f32(vget_low_f32(col2)), zzzz));
+
129 float64x2_t t_high = vaddq_f64(mCol3.mValue.val[1], vmulq_f64(vcvt_high_f64_f32(col0), xxxx));
+
130 t_high = vaddq_f64(t_high, vmulq_f64(vcvt_high_f64_f32(col1), yyyy));
+
131 t_high = vaddq_f64(t_high, vmulq_f64(vcvt_high_f64_f32(col2), zzzz));
+
132 return DVec3::sFixW({ t_low, t_high });
+
133#else
+
134 return DVec3(
+
135 mCol3.mF64[0] + double(mCol[0].mF32[0]) * inV.mF64[0] + double(mCol[1].mF32[0]) * inV.mF64[1] + double(mCol[2].mF32[0]) * inV.mF64[2],
+
136 mCol3.mF64[1] + double(mCol[0].mF32[1]) * inV.mF64[0] + double(mCol[1].mF32[1]) * inV.mF64[1] + double(mCol[2].mF32[1]) * inV.mF64[2],
+
137 mCol3.mF64[2] + double(mCol[0].mF32[2]) * inV.mF64[0] + double(mCol[1].mF32[2]) * inV.mF64[1] + double(mCol[2].mF32[2]) * inV.mF64[2]);
+
138#endif
+
139}
+
+
140
+
+ +
142{
+
143#if defined(JPH_USE_AVX)
+
144 __m256d t = _mm256_mul_pd(_mm256_cvtps_pd(mCol[0].mValue), _mm256_set1_pd(inV.mF64[0]));
+
145 t = _mm256_add_pd(t, _mm256_mul_pd(_mm256_cvtps_pd(mCol[1].mValue), _mm256_set1_pd(inV.mF64[1])));
+
146 t = _mm256_add_pd(t, _mm256_mul_pd(_mm256_cvtps_pd(mCol[2].mValue), _mm256_set1_pd(inV.mF64[2])));
+
147 return DVec3::sFixW(t);
+
148#elif defined(JPH_USE_SSE)
+
149 __m128d xxxx = _mm_set1_pd(inV.mF64[0]);
+
150 __m128d yyyy = _mm_set1_pd(inV.mF64[1]);
+
151 __m128d zzzz = _mm_set1_pd(inV.mF64[2]);
+
152 __m128 col0 = mCol[0].mValue;
+
153 __m128 col1 = mCol[1].mValue;
+
154 __m128 col2 = mCol[2].mValue;
+
155 __m128d t_low = _mm_mul_pd(_mm_cvtps_pd(col0), xxxx);
+
156 t_low = _mm_add_pd(t_low, _mm_mul_pd(_mm_cvtps_pd(col1), yyyy));
+
157 t_low = _mm_add_pd(t_low, _mm_mul_pd(_mm_cvtps_pd(col2), zzzz));
+
158 __m128d t_high = _mm_mul_pd(_mm_cvtps_pd(_mm_shuffle_ps(col0, col0, _MM_SHUFFLE(2, 2, 2, 2))), xxxx);
+
159 t_high = _mm_add_pd(t_high, _mm_mul_pd(_mm_cvtps_pd(_mm_shuffle_ps(col1, col1, _MM_SHUFFLE(2, 2, 2, 2))), yyyy));
+
160 t_high = _mm_add_pd(t_high, _mm_mul_pd(_mm_cvtps_pd(_mm_shuffle_ps(col2, col2, _MM_SHUFFLE(2, 2, 2, 2))), zzzz));
+
161 return DVec3({ t_low, t_high });
+
162#elif defined(JPH_USE_NEON)
+
163 float64x2_t xxxx = vdupq_laneq_f64(inV.mValue.val[0], 0);
+
164 float64x2_t yyyy = vdupq_laneq_f64(inV.mValue.val[0], 1);
+
165 float64x2_t zzzz = vdupq_laneq_f64(inV.mValue.val[1], 0);
+
166 float32x4_t col0 = mCol[0].mValue;
+
167 float32x4_t col1 = mCol[1].mValue;
+
168 float32x4_t col2 = mCol[2].mValue;
+
169 float64x2_t t_low = vmulq_f64(vcvt_f64_f32(vget_low_f32(col0)), xxxx);
+
170 t_low = vaddq_f64(t_low, vmulq_f64(vcvt_f64_f32(vget_low_f32(col1)), yyyy));
+
171 t_low = vaddq_f64(t_low, vmulq_f64(vcvt_f64_f32(vget_low_f32(col2)), zzzz));
+
172 float64x2_t t_high = vmulq_f64(vcvt_high_f64_f32(col0), xxxx);
+
173 t_high = vaddq_f64(t_high, vmulq_f64(vcvt_high_f64_f32(col1), yyyy));
+
174 t_high = vaddq_f64(t_high, vmulq_f64(vcvt_high_f64_f32(col2), zzzz));
+
175 return DVec3::sFixW({ t_low, t_high });
+
176#else
+
177 return DVec3(
+
178 double(mCol[0].mF32[0]) * inV.mF64[0] + double(mCol[1].mF32[0]) * inV.mF64[1] + double(mCol[2].mF32[0]) * inV.mF64[2],
+
179 double(mCol[0].mF32[1]) * inV.mF64[0] + double(mCol[1].mF32[1]) * inV.mF64[1] + double(mCol[2].mF32[1]) * inV.mF64[2],
+
180 double(mCol[0].mF32[2]) * inV.mF64[0] + double(mCol[1].mF32[2]) * inV.mF64[1] + double(mCol[2].mF32[2]) * inV.mF64[2]);
+
181#endif
+
182}
+
+
183
+
+ +
185{
+
186 DMat44 result;
+
187
+
188 // Rotation part
+
189#if defined(JPH_USE_SSE)
+
190 for (int i = 0; i < 3; ++i)
+
191 {
+
192 __m128 c = inM.GetColumn4(i).mValue;
+
193 __m128 t = _mm_mul_ps(mCol[0].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(0, 0, 0, 0)));
+
194 t = _mm_add_ps(t, _mm_mul_ps(mCol[1].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(1, 1, 1, 1))));
+
195 t = _mm_add_ps(t, _mm_mul_ps(mCol[2].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(2, 2, 2, 2))));
+
196 result.mCol[i].mValue = t;
+
197 }
+
198#elif defined(JPH_USE_NEON)
+
199 for (int i = 0; i < 3; ++i)
+
200 {
+
201 Type c = inM.GetColumn4(i).mValue;
+
202 Type t = vmulq_f32(mCol[0].mValue, vdupq_laneq_f32(c, 0));
+
203 t = vmlaq_f32(t, mCol[1].mValue, vdupq_laneq_f32(c, 1));
+
204 t = vmlaq_f32(t, mCol[2].mValue, vdupq_laneq_f32(c, 2));
+
205 result.mCol[i].mValue = t;
+
206 }
+
207#else
+
208 for (int i = 0; i < 3; ++i)
+
209 {
+
210 Vec4 coli = inM.GetColumn4(i);
+
211 result.mCol[i] = mCol[0] * coli.mF32[0] + mCol[1] * coli.mF32[1] + mCol[2] * coli.mF32[2];
+
212 }
+
213#endif
+
214
+
215 // Translation part
+
216 result.mCol3 = *this * inM.GetTranslation();
+
217
+
218 return result;
+
219}
+
+
220
+
+ +
222{
+
223 DMat44 result;
+
224
+
225 // Rotation part
+
226#if defined(JPH_USE_SSE)
+
227 for (int i = 0; i < 3; ++i)
+
228 {
+
229 __m128 c = inM.mCol[i].mValue;
+
230 __m128 t = _mm_mul_ps(mCol[0].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(0, 0, 0, 0)));
+
231 t = _mm_add_ps(t, _mm_mul_ps(mCol[1].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(1, 1, 1, 1))));
+
232 t = _mm_add_ps(t, _mm_mul_ps(mCol[2].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(2, 2, 2, 2))));
+
233 result.mCol[i].mValue = t;
+
234 }
+
235#elif defined(JPH_USE_NEON)
+
236 for (int i = 0; i < 3; ++i)
+
237 {
+
238 Type c = inM.GetColumn4(i).mValue;
+
239 Type t = vmulq_f32(mCol[0].mValue, vdupq_laneq_f32(c, 0));
+
240 t = vmlaq_f32(t, mCol[1].mValue, vdupq_laneq_f32(c, 1));
+
241 t = vmlaq_f32(t, mCol[2].mValue, vdupq_laneq_f32(c, 2));
+
242 result.mCol[i].mValue = t;
+
243 }
+
244#else
+
245 for (int i = 0; i < 3; ++i)
+
246 {
+
247 Vec4 coli = inM.mCol[i];
+
248 result.mCol[i] = mCol[0] * coli.mF32[0] + mCol[1] * coli.mF32[1] + mCol[2] * coli.mF32[2];
+
249 }
+
250#endif
+
251
+
252 // Translation part
+
253 result.mCol3 = *this * inM.GetTranslation();
+
254
+
255 return result;
+
256}
+
+
257
+
+ +
259{
+
260 mCol[0] = inRotation.GetColumn4(0);
+
261 mCol[1] = inRotation.GetColumn4(1);
+
262 mCol[2] = inRotation.GetColumn4(2);
+
263}
+
+
264
+
+ +
266{
+
267 return DMat44(inScale.GetX() * mCol[0], inScale.GetY() * mCol[1], inScale.GetZ() * mCol[2], mCol3);
+
268}
+
+
269
+
+ +
271{
+
272 Vec4 scale(inScale, 1);
+
273 return DMat44(scale * mCol[0], scale * mCol[1], scale * mCol[2], DVec3(scale) * mCol3);
+
274}
+
+
275
+
+ +
277{
+
278 return DMat44(mCol[0], mCol[1], mCol[2], GetTranslation() + Multiply3x3(inTranslation));
+
279}
+
+
280
+
+ +
282{
+
283 return DMat44(mCol[0], mCol[1], mCol[2], GetTranslation() + Multiply3x3(inTranslation));
+
284}
+
+
285
+
+ +
287{
+
288 return DMat44(mCol[0], mCol[1], mCol[2], GetTranslation() + inTranslation);
+
289}
+
+
290
+
+ +
292{
+
293 return DMat44(mCol[0], mCol[1], mCol[2], GetTranslation() + inTranslation);
+
294}
+
+
295
+
+ +
297{
+
298 DMat44 m(GetRotation().Inversed3x3());
+
299 m.mCol3 = -m.Multiply3x3(mCol3);
+
300 return m;
+
301}
+
+
302
+
+ +
304{
+ +
306 m.mCol3 = -m.Multiply3x3(mCol3);
+
307 return m;
+
308}
+
+
309
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
JPH_INLINE bool operator==(DMat44Arg inM2) const
Comparison.
Definition DMat44.inl:53
+
DVec3::TypeArg DTypeArg
Definition DMat44.h:20
+
JPH_INLINE void SetTranslation(DVec3Arg inV)
Definition DMat44.h:112
+
JPH_INLINE Vec4 GetColumn4(uint inCol) const
Definition DMat44.h:115
+
JPH_INLINE DMat44 PostTranslated(Vec3Arg inTranslation) const
Post multiply by translation matrix: result = Mat44::sTranslation(inTranslation) * this (i....
Definition DMat44.inl:286
+
JPH_INLINE Mat44 Transposed3x3() const
Transpose 3x3 subpart of matrix.
Definition DMat44.h:119
+
JPH_INLINE DMat44 PreTranslated(Vec3Arg inTranslation) const
Pre multiply by translation matrix: result = this * Mat44::sTranslation(inTranslation)
Definition DMat44.inl:276
+
static JPH_INLINE DMat44 sZero()
Zero matrix.
Definition DMat44.inl:35
+
DMat44()=default
Constructor.
+
static JPH_INLINE DMat44 sIdentity()
Identity matrix.
Definition DMat44.inl:40
+
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition DMat44.h:78
+
JPH_INLINE DMat44 PostScaled(Vec3Arg inScale) const
Scale a matrix: result = Mat44::sScale(inScale) * this.
Definition DMat44.inl:270
+
static JPH_INLINE DMat44 sInverseRotationTranslation(QuatArg inR, DVec3Arg inT)
Get inverse matrix of sRotationTranslation.
Definition DMat44.inl:45
+
JPH_INLINE void SetRotation(Mat44Arg inRotation)
Updates the rotation part of this matrix (the first 3 columns)
Definition DMat44.inl:258
+
JPH_INLINE DMat44 PreScaled(Vec3Arg inScale) const
Scale a matrix: result = this * Mat44::sScale(inScale)
Definition DMat44.inl:265
+
JPH_INLINE DMat44 InversedRotationTranslation() const
Inverse 4x4 matrix when it only contains rotation and translation.
Definition DMat44.inl:303
+
JPH_INLINE DMat44 Inversed() const
Inverse 4x4 matrix.
Definition DMat44.inl:296
+
JPH_INLINE DVec3 GetTranslation() const
Definition DMat44.h:111
+
JPH_INLINE DMat44 operator*(Mat44Arg inM) const
Multiply matrix by matrix.
Definition DMat44.inl:184
+
JPH_INLINE bool IsClose(DMat44Arg inM2, float inMaxDistSq=1.0e-12f) const
Test if two matrices are close.
Definition DMat44.inl:61
+
JPH_INLINE Mat44 GetRotation() const
Get rotation part only (note: retains the first 3 values from the bottom row)
Definition DMat44.h:128
+
Vec4::Type Type
Definition DMat44.h:18
+
Definition DVec3.h:14
+
double mF64[4]
Definition DVec3.h:280
+
static JPH_INLINE Type sFixW(TypeArg inValue)
Internal helper function that ensures that the Z component is replicated to the W component to preven...
Definition DVec3.inl:92
+
Type mValue
Definition DVec3.h:279
+
JPH_INLINE bool IsClose(DVec3Arg inV2, double inMaxDistSq=1.0e-24) const
Test if two vectors are close.
Definition DVec3.inl:414
+
static JPH_INLINE DVec3 sZero()
Vector with all zeros.
Definition DVec3.inl:120
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Vec4 GetColumn4(uint inCol) const
Definition Mat44.h:160
+
JPH_INLINE Vec3 GetTranslation() const
Definition Mat44.h:152
+
static JPH_INLINE Mat44 sRotation(Vec3Arg inAxis, float inAngle)
Rotate around arbitrary axis.
Definition Mat44.inl:139
+
Definition Quat.h:33
+
JPH_INLINE Quat Conjugated() const
The conjugate [w, -x, -y, -z] is the same as the inverse for unit quaternions.
Definition Quat.h:178
+
Definition Vec3.h:17
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
Type mValue
Definition Vec3.h:286
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
float mF32[4]
Definition Vec3.h:287
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
Definition Vec4.h:14
+
float mF32[4]
Definition Vec4.h:275
+
static JPH_INLINE Vec4 sZero()
Vector with all zeros.
Definition Vec4.inl:63
+
Type mValue
Definition Vec4.h:274
+
+
+ + + + diff --git a/_d_vec3_8h.html b/_d_vec3_8h.html new file mode 100644 index 000000000..894c14529 --- /dev/null +++ b/_d_vec3_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Math/DVec3.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DVec3.h File Reference
+
+
+
#include <Jolt/Math/Double3.h>
+#include "DVec3.inl"
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  DVec3
 
+
+
+ + + + diff --git a/_d_vec3_8h.js b/_d_vec3_8h.js new file mode 100644 index 000000000..7d0aab7df --- /dev/null +++ b/_d_vec3_8h.js @@ -0,0 +1,4 @@ +var _d_vec3_8h = +[ + [ "DVec3", "class_d_vec3.html", "class_d_vec3" ] +]; \ No newline at end of file diff --git a/_d_vec3_8h_source.html b/_d_vec3_8h_source.html new file mode 100644 index 000000000..5881b6749 --- /dev/null +++ b/_d_vec3_8h_source.html @@ -0,0 +1,372 @@ + + + + + + + +Jolt Physics: Jolt/Math/DVec3.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DVec3.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
+
7#include <Jolt/Math/Double3.h>
+
8
+ +
10
+
+
13class [[nodiscard]] alignas(JPH_DVECTOR_ALIGNMENT) DVec3
+
14{
+
15public:
+ +
17
+
18 // Underlying vector type
+
19#if defined(JPH_USE_AVX)
+
20 using Type = __m256d;
+
21 using TypeArg = __m256d;
+
22#elif defined(JPH_USE_SSE)
+
23 using Type = struct { __m128d mLow, mHigh; };
+
24 using TypeArg = const Type &;
+
25#elif defined(JPH_USE_NEON)
+
26 using Type = float64x2x2_t;
+
27 using TypeArg = const Type &;
+
28#else
+
29 using Type = struct { double mData[4]; };
+
30 using TypeArg = const Type &;
+
31#endif
+
32
+
33 // Argument type
+ +
35
+
37 DVec3() = default;
+
38 DVec3(const DVec3 &inRHS) = default;
+
39 DVec3 & operator = (const DVec3 &inRHS) = default;
+
40 JPH_INLINE explicit DVec3(Vec3Arg inRHS);
+
41 JPH_INLINE explicit DVec3(Vec4Arg inRHS);
+
42 JPH_INLINE DVec3(TypeArg inRHS) : mValue(inRHS) { CheckW(); }
+
43
+
45 JPH_INLINE DVec3(double inX, double inY, double inZ);
+
46
+
48 explicit JPH_INLINE DVec3(const Double3 &inV);
+
49
+
51 static JPH_INLINE DVec3 sZero();
+
52
+
54 static JPH_INLINE DVec3 sAxisX() { return DVec3(1, 0, 0); }
+
55 static JPH_INLINE DVec3 sAxisY() { return DVec3(0, 1, 0); }
+
56 static JPH_INLINE DVec3 sAxisZ() { return DVec3(0, 0, 1); }
+
57
+
59 static JPH_INLINE DVec3 sReplicate(double inV);
+
60
+
62 static JPH_INLINE DVec3 sNaN();
+
63
+
65 static JPH_INLINE DVec3 sLoadDouble3Unsafe(const Double3 &inV);
+
66
+
68 JPH_INLINE void StoreDouble3(Double3 *outV) const;
+
69
+
71 JPH_INLINE explicit operator Vec3() const;
+
72
+
74 JPH_INLINE DVec3 PrepareRoundToZero() const;
+
75
+
77 JPH_INLINE DVec3 PrepareRoundToInf() const;
+
78
+
80 JPH_INLINE Vec3 ToVec3RoundDown() const;
+
81
+
83 JPH_INLINE Vec3 ToVec3RoundUp() const;
+
84
+
86 static JPH_INLINE DVec3 sMin(DVec3Arg inV1, DVec3Arg inV2);
+
87
+
89 static JPH_INLINE DVec3 sMax(DVec3Arg inV1, DVec3Arg inV2);
+
90
+
92 static JPH_INLINE DVec3 sClamp(DVec3Arg inV, DVec3Arg inMin, DVec3Arg inMax);
+
93
+
95 static JPH_INLINE DVec3 sEquals(DVec3Arg inV1, DVec3Arg inV2);
+
96
+
98 static JPH_INLINE DVec3 sLess(DVec3Arg inV1, DVec3Arg inV2);
+
99
+
101 static JPH_INLINE DVec3 sLessOrEqual(DVec3Arg inV1, DVec3Arg inV2);
+
102
+
104 static JPH_INLINE DVec3 sGreater(DVec3Arg inV1, DVec3Arg inV2);
+
105
+
107 static JPH_INLINE DVec3 sGreaterOrEqual(DVec3Arg inV1, DVec3Arg inV2);
+
108
+
110 static JPH_INLINE DVec3 sFusedMultiplyAdd(DVec3Arg inMul1, DVec3Arg inMul2, DVec3Arg inAdd);
+
111
+
113 static JPH_INLINE DVec3 sSelect(DVec3Arg inV1, DVec3Arg inV2, DVec3Arg inControl);
+
114
+
116 static JPH_INLINE DVec3 sOr(DVec3Arg inV1, DVec3Arg inV2);
+
117
+
119 static JPH_INLINE DVec3 sXor(DVec3Arg inV1, DVec3Arg inV2);
+
120
+
122 static JPH_INLINE DVec3 sAnd(DVec3Arg inV1, DVec3Arg inV2);
+
123
+
125 JPH_INLINE int GetTrues() const;
+
126
+
128 JPH_INLINE bool TestAnyTrue() const;
+
129
+
131 JPH_INLINE bool TestAllTrue() const;
+
132
+
134#if defined(JPH_USE_AVX)
+
135 JPH_INLINE double GetX() const { return _mm_cvtsd_f64(_mm256_castpd256_pd128(mValue)); }
+
136 JPH_INLINE double GetY() const { return mF64[1]; }
+
137 JPH_INLINE double GetZ() const { return mF64[2]; }
+
138#elif defined(JPH_USE_SSE)
+
139 JPH_INLINE double GetX() const { return _mm_cvtsd_f64(mValue.mLow); }
+
140 JPH_INLINE double GetY() const { return mF64[1]; }
+
141 JPH_INLINE double GetZ() const { return _mm_cvtsd_f64(mValue.mHigh); }
+
142#elif defined(JPH_USE_NEON)
+
143 JPH_INLINE double GetX() const { return vgetq_lane_f64(mValue.val[0], 0); }
+
144 JPH_INLINE double GetY() const { return vgetq_lane_f64(mValue.val[0], 1); }
+
145 JPH_INLINE double GetZ() const { return vgetq_lane_f64(mValue.val[1], 0); }
+
146#else
+
147 JPH_INLINE double GetX() const { return mF64[0]; }
+
148 JPH_INLINE double GetY() const { return mF64[1]; }
+
149 JPH_INLINE double GetZ() const { return mF64[2]; }
+
150#endif
+
151
+
153 JPH_INLINE void SetX(double inX) { mF64[0] = inX; }
+
154 JPH_INLINE void SetY(double inY) { mF64[1] = inY; }
+
155 JPH_INLINE void SetZ(double inZ) { mF64[2] = mF64[3] = inZ; } // Assure Z and W are the same
+
156
+
158 JPH_INLINE void Set(double inX, double inY, double inZ) { *this = DVec3(inX, inY, inZ); }
+
159
+
161 JPH_INLINE double operator [] (uint inCoordinate) const { JPH_ASSERT(inCoordinate < 3); return mF64[inCoordinate]; }
+
162
+
164 JPH_INLINE void SetComponent(uint inCoordinate, double inValue) { JPH_ASSERT(inCoordinate < 3); mF64[inCoordinate] = inValue; mValue = sFixW(mValue); } // Assure Z and W are the same
+
165
+
167 JPH_INLINE bool operator == (DVec3Arg inV2) const;
+
168 JPH_INLINE bool operator != (DVec3Arg inV2) const { return !(*this == inV2); }
+
169
+
171 JPH_INLINE bool IsClose(DVec3Arg inV2, double inMaxDistSq = 1.0e-24) const;
+
172
+
174 JPH_INLINE bool IsNearZero(double inMaxDistSq = 1.0e-24) const;
+
175
+
177 JPH_INLINE bool IsNormalized(double inTolerance = 1.0e-12) const;
+
178
+
180 JPH_INLINE bool IsNaN() const;
+
181
+
183 JPH_INLINE DVec3 operator * (DVec3Arg inV2) const;
+
184
+
186 JPH_INLINE DVec3 operator * (double inV2) const;
+
187
+
189 friend JPH_INLINE DVec3 operator * (double inV1, DVec3Arg inV2);
+
190
+
192 JPH_INLINE DVec3 operator / (double inV2) const;
+
193
+
195 JPH_INLINE DVec3 & operator *= (double inV2);
+
196
+
198 JPH_INLINE DVec3 & operator *= (DVec3Arg inV2);
+
199
+
201 JPH_INLINE DVec3 & operator /= (double inV2);
+
202
+
204 JPH_INLINE DVec3 operator + (Vec3Arg inV2) const;
+
205
+
207 JPH_INLINE DVec3 operator + (DVec3Arg inV2) const;
+
208
+
210 JPH_INLINE DVec3 & operator += (Vec3Arg inV2);
+
211
+
213 JPH_INLINE DVec3 & operator += (DVec3Arg inV2);
+
214
+
216 JPH_INLINE DVec3 operator - () const;
+
217
+
219 JPH_INLINE DVec3 operator - (Vec3Arg inV2) const;
+
220
+
222 JPH_INLINE DVec3 operator - (DVec3Arg inV2) const;
+
223
+
225 JPH_INLINE DVec3 & operator -= (Vec3Arg inV2);
+
226
+
228 JPH_INLINE DVec3 & operator -= (DVec3Arg inV2);
+
229
+
231 JPH_INLINE DVec3 operator / (DVec3Arg inV2) const;
+
232
+
234 JPH_INLINE DVec3 Abs() const;
+
235
+
237 JPH_INLINE DVec3 Reciprocal() const;
+
238
+
240 JPH_INLINE DVec3 Cross(DVec3Arg inV2) const;
+
241
+
243 JPH_INLINE double Dot(DVec3Arg inV2) const;
+
244
+
246 JPH_INLINE double LengthSq() const;
+
247
+
249 JPH_INLINE double Length() const;
+
250
+
252 JPH_INLINE DVec3 Normalized() const;
+
253
+
255 JPH_INLINE DVec3 Sqrt() const;
+
256
+
258 JPH_INLINE DVec3 GetSign() const;
+
259
+
+
261 friend ostream & operator << (ostream &inStream, DVec3Arg inV)
+
262 {
+
263 inStream << inV.mF64[0] << ", " << inV.mF64[1] << ", " << inV.mF64[2];
+
264 return inStream;
+
265 }
+
+
266
+
268 JPH_INLINE void CheckW() const;
+
269
+
271 static JPH_INLINE Type sFixW(TypeArg inValue);
+
272
+
274 inline static const double cTrue = BitCast<double>(~uint64(0));
+
275 inline static const double cFalse = 0.0;
+
276
+
277 union
+
278 {
+ +
280 double mF64[4];
+
281 };
+
282};
+
+
283
+
284static_assert(is_trivial<DVec3>(), "Is supposed to be a trivial type!");
+
285
+ +
287
+
288#include "DVec3.inl"
+
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
+ +
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:451
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
const DVec3 & DVec3Arg
Definition MathTypes.h:24
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
Definition DVec3.h:14
+
double mF64[4]
Definition DVec3.h:280
+
{ double mData[4] Type
Definition DVec3.h:29
+
static JPH_INLINE DVec3 sAxisY()
Definition DVec3.h:55
+
JPH_INLINE DVec3(TypeArg inRHS)
Definition DVec3.h:42
+
Type mValue
Definition DVec3.h:279
+
const Type & TypeArg
Definition DVec3.h:30
+
JPH_INLINE void SetComponent(uint inCoordinate, double inValue)
Set double component by index.
Definition DVec3.h:164
+
JPH_INLINE void Set(double inX, double inY, double inZ)
Set all components.
Definition DVec3.h:158
+
static JPH_INLINE DVec3 sAxisX()
Vectors with the principal axis.
Definition DVec3.h:54
+
JPH_INLINE void SetY(double inY)
Definition DVec3.h:154
+
JPH_INLINE double GetZ() const
Definition DVec3.h:149
+
DVec3()=default
Constructor.
+
static JPH_INLINE DVec3 sAxisZ()
Definition DVec3.h:56
+
JPH_INLINE DVec3(Vec3Arg inRHS)
+
JPH_INLINE void SetZ(double inZ)
Definition DVec3.h:155
+
JPH_INLINE double GetY() const
Definition DVec3.h:148
+
DVec3(const DVec3 &inRHS)=default
+
JPH_INLINE void SetX(double inX)
Set individual components.
Definition DVec3.h:153
+
JPH_INLINE double GetX() const
Get individual components.
Definition DVec3.h:147
+
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition Double3.h:13
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_d_vec3_8inl.html b/_d_vec3_8inl.html new file mode 100644 index 000000000..6e9805edb --- /dev/null +++ b/_d_vec3_8inl.html @@ -0,0 +1,196 @@ + + + + + + + +Jolt Physics: Jolt/Math/DVec3.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DVec3.inl File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

 JPH_MAKE_HASHABLE (JPH::DVec3, t.GetX(), t.GetY(), t.GetZ()) JPH_NAMESPACE_BEGIN DVec3
 
DVec3 operator* (double inV1, DVec3Arg inV2)
 
+

Function Documentation

+ +

◆ JPH_MAKE_HASHABLE()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_MAKE_HASHABLE (JPH::DVec3 ,
t. GetX(),
t. GetY(),
t. GetZ() 
)
+
+ +
+
+ +

◆ operator*()

+ +
+
+ + + + + + + + + + + + + + + + + + +
DVec3 operator* (double inV1,
DVec3Arg inV2 
)
+
+ +
+
+
+
+ + + + diff --git a/_d_vec3_8inl.js b/_d_vec3_8inl.js new file mode 100644 index 000000000..7d42fa764 --- /dev/null +++ b/_d_vec3_8inl.js @@ -0,0 +1,5 @@ +var _d_vec3_8inl = +[ + [ "JPH_MAKE_HASHABLE", "_d_vec3_8inl.html#ad63a526073dd7f77a10ad035f668caed", null ], + [ "operator*", "_d_vec3_8inl.html#a786dfc8f87f225995cb77bbf53c39244", null ] +]; \ No newline at end of file diff --git a/_d_vec3_8inl_source.html b/_d_vec3_8inl_source.html new file mode 100644 index 000000000..9a69eb7b6 --- /dev/null +++ b/_d_vec3_8inl_source.html @@ -0,0 +1,1252 @@ + + + + + + + +Jolt Physics: Jolt/Math/DVec3.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DVec3.inl
+
+
+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
+
9// Create a std::hash for DVec3
+
+
10JPH_MAKE_HASHABLE(JPH::DVec3, t.GetX(), t.GetY(), t.GetZ())
+
11
+ +
13
+
14DVec3::DVec3(Vec3Arg inRHS)
+
15{
+
16#if defined(JPH_USE_AVX)
+
17 mValue = _mm256_cvtps_pd(inRHS.mValue);
+
18#elif defined(JPH_USE_SSE)
+
19 mValue.mLow = _mm_cvtps_pd(inRHS.mValue);
+
20 mValue.mHigh = _mm_cvtps_pd(_mm_shuffle_ps(inRHS.mValue, inRHS.mValue, _MM_SHUFFLE(2, 2, 2, 2)));
+
21#elif defined(JPH_USE_NEON)
+
22 mValue.val[0] = vcvt_f64_f32(vget_low_f32(inRHS.mValue));
+
23 mValue.val[1] = vcvt_high_f64_f32(inRHS.mValue);
+
24#else
+
25 mF64[0] = (double)inRHS.GetX();
+
26 mF64[1] = (double)inRHS.GetY();
+
27 mF64[2] = (double)inRHS.GetZ();
+
28 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
29 mF64[3] = mF64[2];
+
30 #endif
+
31#endif
+
32}
+
+
33
+
+ +
35 DVec3(Vec3(inRHS))
+
36{
+
37}
+
+
38
+
+
39DVec3::DVec3(double inX, double inY, double inZ)
+
40{
+
41#if defined(JPH_USE_AVX)
+
42 mValue = _mm256_set_pd(inZ, inZ, inY, inX); // Assure Z and W are the same
+
43#elif defined(JPH_USE_SSE)
+
44 mValue.mLow = _mm_set_pd(inY, inX);
+
45 mValue.mHigh = _mm_set1_pd(inZ);
+
46#elif defined(JPH_USE_NEON)
+
47 mValue.val[0] = vcombine_f64(vcreate_f64(BitCast<uint64>(inX)), vcreate_f64(BitCast<uint64>(inY)));
+
48 mValue.val[1] = vdupq_n_f64(inZ);
+
49#else
+
50 mF64[0] = inX;
+
51 mF64[1] = inY;
+
52 mF64[2] = inZ;
+
53 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
54 mF64[3] = mF64[2];
+
55 #endif
+
56#endif
+
57}
+
+
58
+
+ +
60{
+
61#if defined(JPH_USE_AVX)
+
62 Type x = _mm256_castpd128_pd256(_mm_load_sd(&inV.x));
+
63 Type y = _mm256_castpd128_pd256(_mm_load_sd(&inV.y));
+
64 Type z = _mm256_broadcast_sd(&inV.z);
+
65 Type xy = _mm256_unpacklo_pd(x, y);
+
66 mValue = _mm256_blend_pd(xy, z, 0b1100); // Assure Z and W are the same
+
67#elif defined(JPH_USE_SSE)
+
68 mValue.mLow = _mm_loadu_pd(&inV.x);
+
69 mValue.mHigh = _mm_set1_pd(inV.z);
+
70#elif defined(JPH_USE_NEON)
+
71 mValue.val[0] = vld1q_f64(&inV.x);
+
72 mValue.val[1] = vdupq_n_f64(inV.z);
+
73#else
+
74 mF64[0] = inV.x;
+
75 mF64[1] = inV.y;
+
76 mF64[2] = inV.z;
+
77 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
78 mF64[3] = mF64[2];
+
79 #endif
+
80#endif
+
81}
+
+
82
+
+
83void DVec3::CheckW() const
+
84{
+
85#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
86 // Avoid asserts when both components are NaN
+
87 JPH_ASSERT(reinterpret_cast<const uint64 *>(mF64)[2] == reinterpret_cast<const uint64 *>(mF64)[3]);
+
88#endif // JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
89}
+
+
90
+
+ +
93{
+
94#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
95 #if defined(JPH_USE_AVX)
+
96 return _mm256_shuffle_pd(inValue, inValue, 2);
+
97 #elif defined(JPH_USE_SSE)
+
98 Type value;
+
99 value.mLow = inValue.mLow;
+
100 value.mHigh = _mm_shuffle_pd(inValue.mHigh, inValue.mHigh, 0);
+
101 return value;
+
102 #elif defined(JPH_USE_NEON)
+
103 Type value;
+
104 value.val[0] = inValue.val[0];
+
105 value.val[1] = vdupq_laneq_f64(inValue.val[1], 0);
+
106 return value;
+
107 #else
+
108 Type value;
+
109 value.mData[0] = inValue.mData[0];
+
110 value.mData[1] = inValue.mData[1];
+
111 value.mData[2] = inValue.mData[2];
+
112 value.mData[3] = inValue.mData[2];
+
113 return value;
+
114 #endif
+
115#else
+
116 return inValue;
+
117#endif // JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
118}
+
+
119
+
+ +
121{
+
122#if defined(JPH_USE_AVX)
+
123 return _mm256_setzero_pd();
+
124#elif defined(JPH_USE_SSE)
+
125 __m128d zero = _mm_setzero_pd();
+
126 return DVec3({ zero, zero });
+
127#elif defined(JPH_USE_NEON)
+
128 float64x2_t zero = vdupq_n_f64(0.0);
+
129 return DVec3({ zero, zero });
+
130#else
+
131 return DVec3(0, 0, 0);
+
132#endif
+
133}
+
+
134
+
+ +
136{
+
137#if defined(JPH_USE_AVX)
+
138 return _mm256_set1_pd(inV);
+
139#elif defined(JPH_USE_SSE)
+
140 __m128d value = _mm_set1_pd(inV);
+
141 return DVec3({ value, value });
+
142#elif defined(JPH_USE_NEON)
+
143 float64x2_t value = vdupq_n_f64(inV);
+
144 return DVec3({ value, value });
+
145#else
+
146 return DVec3(inV, inV, inV);
+
147#endif
+
148}
+
+
149
+
+ +
151{
+
152 return sReplicate(numeric_limits<double>::quiet_NaN());
+
153}
+
+
154
+
+ +
156{
+
157#if defined(JPH_USE_AVX)
+
158 Type v = _mm256_loadu_pd(&inV.x);
+
159#elif defined(JPH_USE_SSE)
+
160 Type v;
+
161 v.mLow = _mm_loadu_pd(&inV.x);
+
162 v.mHigh = _mm_set1_pd(inV.z);
+
163#elif defined(JPH_USE_NEON)
+
164 Type v = vld1q_f64_x2(&inV.x);
+
165#else
+
166 Type v = { inV.x, inV.y, inV.z };
+
167#endif
+
168 return sFixW(v);
+
169}
+
+
170
+
+ +
172{
+
173 outV->x = mF64[0];
+
174 outV->y = mF64[1];
+
175 outV->z = mF64[2];
+
176}
+
+
177
+
+
178DVec3::operator Vec3() const
+
179{
+
180#if defined(JPH_USE_AVX)
+
181 return _mm256_cvtpd_ps(mValue);
+
182#elif defined(JPH_USE_SSE)
+
183 __m128 low = _mm_cvtpd_ps(mValue.mLow);
+
184 __m128 high = _mm_cvtpd_ps(mValue.mHigh);
+
185 return _mm_shuffle_ps(low, high, _MM_SHUFFLE(1, 0, 1, 0));
+
186#elif defined(JPH_USE_NEON)
+
187 return vcvt_high_f32_f64(vcvtx_f32_f64(mValue.val[0]), mValue.val[1]);
+
188#else
+
189 return Vec3((float)GetX(), (float)GetY(), (float)GetZ());
+
190#endif
+
191}
+
+
192
+
+ +
194{
+
195#if defined(JPH_USE_AVX)
+
196 return _mm256_min_pd(inV1.mValue, inV2.mValue);
+
197#elif defined(JPH_USE_SSE)
+
198 return DVec3({ _mm_min_pd(inV1.mValue.mLow, inV2.mValue.mLow), _mm_min_pd(inV1.mValue.mHigh, inV2.mValue.mHigh) });
+
199#elif defined(JPH_USE_NEON)
+
200 return DVec3({ vminq_f64(inV1.mValue.val[0], inV2.mValue.val[0]), vminq_f64(inV1.mValue.val[1], inV2.mValue.val[1]) });
+
201#else
+
202 return DVec3(min(inV1.mF64[0], inV2.mF64[0]),
+
203 min(inV1.mF64[1], inV2.mF64[1]),
+
204 min(inV1.mF64[2], inV2.mF64[2]));
+
205#endif
+
206}
+
+
207
+
+ +
209{
+
210#if defined(JPH_USE_AVX)
+
211 return _mm256_max_pd(inV1.mValue, inV2.mValue);
+
212#elif defined(JPH_USE_SSE)
+
213 return DVec3({ _mm_max_pd(inV1.mValue.mLow, inV2.mValue.mLow), _mm_max_pd(inV1.mValue.mHigh, inV2.mValue.mHigh) });
+
214#elif defined(JPH_USE_NEON)
+
215 return DVec3({ vmaxq_f64(inV1.mValue.val[0], inV2.mValue.val[0]), vmaxq_f64(inV1.mValue.val[1], inV2.mValue.val[1]) });
+
216#else
+
217 return DVec3(max(inV1.mF64[0], inV2.mF64[0]),
+
218 max(inV1.mF64[1], inV2.mF64[1]),
+
219 max(inV1.mF64[2], inV2.mF64[2]));
+
220#endif
+
221}
+
+
222
+
+ +
224{
+
225 return sMax(sMin(inV, inMax), inMin);
+
226}
+
+
227
+
+ +
229{
+
230#if defined(JPH_USE_AVX)
+
231 return _mm256_cmp_pd(inV1.mValue, inV2.mValue, _CMP_EQ_OQ);
+
232#elif defined(JPH_USE_SSE)
+
233 return DVec3({ _mm_cmpeq_pd(inV1.mValue.mLow, inV2.mValue.mLow), _mm_cmpeq_pd(inV1.mValue.mHigh, inV2.mValue.mHigh) });
+
234#elif defined(JPH_USE_NEON)
+
235 return DVec3({ vreinterpretq_f64_u64(vceqq_f64(inV1.mValue.val[0], inV2.mValue.val[0])), vreinterpretq_f64_u64(vceqq_f64(inV1.mValue.val[1], inV2.mValue.val[1])) });
+
236#else
+
237 return DVec3(inV1.mF64[0] == inV2.mF64[0]? cTrue : cFalse,
+
238 inV1.mF64[1] == inV2.mF64[1]? cTrue : cFalse,
+
239 inV1.mF64[2] == inV2.mF64[2]? cTrue : cFalse);
+
240#endif
+
241}
+
+
242
+
+ +
244{
+
245#if defined(JPH_USE_AVX)
+
246 return _mm256_cmp_pd(inV1.mValue, inV2.mValue, _CMP_LT_OQ);
+
247#elif defined(JPH_USE_SSE)
+
248 return DVec3({ _mm_cmplt_pd(inV1.mValue.mLow, inV2.mValue.mLow), _mm_cmplt_pd(inV1.mValue.mHigh, inV2.mValue.mHigh) });
+
249#elif defined(JPH_USE_NEON)
+
250 return DVec3({ vreinterpretq_f64_u64(vcltq_f64(inV1.mValue.val[0], inV2.mValue.val[0])), vreinterpretq_f64_u64(vcltq_f64(inV1.mValue.val[1], inV2.mValue.val[1])) });
+
251#else
+
252 return DVec3(inV1.mF64[0] < inV2.mF64[0]? cTrue : cFalse,
+
253 inV1.mF64[1] < inV2.mF64[1]? cTrue : cFalse,
+
254 inV1.mF64[2] < inV2.mF64[2]? cTrue : cFalse);
+
255#endif
+
256}
+
+
257
+
+ +
259{
+
260#if defined(JPH_USE_AVX)
+
261 return _mm256_cmp_pd(inV1.mValue, inV2.mValue, _CMP_LE_OQ);
+
262#elif defined(JPH_USE_SSE)
+
263 return DVec3({ _mm_cmple_pd(inV1.mValue.mLow, inV2.mValue.mLow), _mm_cmple_pd(inV1.mValue.mHigh, inV2.mValue.mHigh) });
+
264#elif defined(JPH_USE_NEON)
+
265 return DVec3({ vreinterpretq_f64_u64(vcleq_f64(inV1.mValue.val[0], inV2.mValue.val[0])), vreinterpretq_f64_u64(vcleq_f64(inV1.mValue.val[1], inV2.mValue.val[1])) });
+
266#else
+
267 return DVec3(inV1.mF64[0] <= inV2.mF64[0]? cTrue : cFalse,
+
268 inV1.mF64[1] <= inV2.mF64[1]? cTrue : cFalse,
+
269 inV1.mF64[2] <= inV2.mF64[2]? cTrue : cFalse);
+
270#endif
+
271}
+
+
272
+
+ +
274{
+
275#if defined(JPH_USE_AVX)
+
276 return _mm256_cmp_pd(inV1.mValue, inV2.mValue, _CMP_GT_OQ);
+
277#elif defined(JPH_USE_SSE)
+
278 return DVec3({ _mm_cmpgt_pd(inV1.mValue.mLow, inV2.mValue.mLow), _mm_cmpgt_pd(inV1.mValue.mHigh, inV2.mValue.mHigh) });
+
279#elif defined(JPH_USE_NEON)
+
280 return DVec3({ vreinterpretq_f64_u64(vcgtq_f64(inV1.mValue.val[0], inV2.mValue.val[0])), vreinterpretq_f64_u64(vcgtq_f64(inV1.mValue.val[1], inV2.mValue.val[1])) });
+
281#else
+
282 return DVec3(inV1.mF64[0] > inV2.mF64[0]? cTrue : cFalse,
+
283 inV1.mF64[1] > inV2.mF64[1]? cTrue : cFalse,
+
284 inV1.mF64[2] > inV2.mF64[2]? cTrue : cFalse);
+
285#endif
+
286}
+
+
287
+
+ +
289{
+
290#if defined(JPH_USE_AVX)
+
291 return _mm256_cmp_pd(inV1.mValue, inV2.mValue, _CMP_GE_OQ);
+
292#elif defined(JPH_USE_SSE)
+
293 return DVec3({ _mm_cmpge_pd(inV1.mValue.mLow, inV2.mValue.mLow), _mm_cmpge_pd(inV1.mValue.mHigh, inV2.mValue.mHigh) });
+
294#elif defined(JPH_USE_NEON)
+
295 return DVec3({ vreinterpretq_f64_u64(vcgeq_f64(inV1.mValue.val[0], inV2.mValue.val[0])), vreinterpretq_f64_u64(vcgeq_f64(inV1.mValue.val[1], inV2.mValue.val[1])) });
+
296#else
+
297 return DVec3(inV1.mF64[0] >= inV2.mF64[0]? cTrue : cFalse,
+
298 inV1.mF64[1] >= inV2.mF64[1]? cTrue : cFalse,
+
299 inV1.mF64[2] >= inV2.mF64[2]? cTrue : cFalse);
+
300#endif
+
301}
+
+
302
+
+ +
304{
+
305#if defined(JPH_USE_AVX)
+
306 #ifdef JPH_USE_FMADD
+
307 return _mm256_fmadd_pd(inMul1.mValue, inMul2.mValue, inAdd.mValue);
+
308 #else
+
309 return _mm256_add_pd(_mm256_mul_pd(inMul1.mValue, inMul2.mValue), inAdd.mValue);
+
310 #endif
+
311#elif defined(JPH_USE_NEON)
+
312 return DVec3({ vmlaq_f64(inAdd.mValue.val[0], inMul1.mValue.val[0], inMul2.mValue.val[0]), vmlaq_f64(inAdd.mValue.val[1], inMul1.mValue.val[1], inMul2.mValue.val[1]) });
+
313#else
+
314 return inMul1 * inMul2 + inAdd;
+
315#endif
+
316}
+
+
317
+
+ +
319{
+
320#if defined(JPH_USE_AVX)
+
321 return _mm256_blendv_pd(inV1.mValue, inV2.mValue, inControl.mValue);
+
322#elif defined(JPH_USE_SSE4_1)
+
323 Type v = { _mm_blendv_pd(inV1.mValue.mLow, inV2.mValue.mLow, inControl.mValue.mLow), _mm_blendv_pd(inV1.mValue.mHigh, inV2.mValue.mHigh, inControl.mValue.mHigh) };
+
324 return sFixW(v);
+
325#elif defined(JPH_USE_NEON)
+
326 Type v = { vbslq_f64(vreinterpretq_u64_s64(vshrq_n_s64(vreinterpretq_s64_f64(inControl.mValue.val[0]), 63)), inV2.mValue.val[0], inV1.mValue.val[0]),
+
327 vbslq_f64(vreinterpretq_u64_s64(vshrq_n_s64(vreinterpretq_s64_f64(inControl.mValue.val[1]), 63)), inV2.mValue.val[1], inV1.mValue.val[1]) };
+
328 return sFixW(v);
+
329#else
+
330 DVec3 result;
+
331 for (int i = 0; i < 3; i++)
+
332 result.mF64[i] = BitCast<uint64>(inControl.mF64[i])? inV2.mF64[i] : inV1.mF64[i];
+
333#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
334 result.mF64[3] = result.mF64[2];
+
335#endif // JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
336 return result;
+
337#endif
+
338}
+
+
339
+
+ +
341{
+
342#if defined(JPH_USE_AVX)
+
343 return _mm256_or_pd(inV1.mValue, inV2.mValue);
+
344#elif defined(JPH_USE_SSE)
+
345 return DVec3({ _mm_or_pd(inV1.mValue.mLow, inV2.mValue.mLow), _mm_or_pd(inV1.mValue.mHigh, inV2.mValue.mHigh) });
+
346#elif defined(JPH_USE_NEON)
+
347 return DVec3({ vreinterpretq_f64_u64(vorrq_u64(vreinterpretq_u64_f64(inV1.mValue.val[0]), vreinterpretq_u64_f64(inV2.mValue.val[0]))),
+
348 vreinterpretq_f64_u64(vorrq_u64(vreinterpretq_u64_f64(inV1.mValue.val[1]), vreinterpretq_u64_f64(inV2.mValue.val[1]))) });
+
349#else
+
350 return DVec3(BitCast<double>(BitCast<uint64>(inV1.mF64[0]) | BitCast<uint64>(inV2.mF64[0])),
+
351 BitCast<double>(BitCast<uint64>(inV1.mF64[1]) | BitCast<uint64>(inV2.mF64[1])),
+
352 BitCast<double>(BitCast<uint64>(inV1.mF64[2]) | BitCast<uint64>(inV2.mF64[2])));
+
353#endif
+
354}
+
+
355
+
+ +
357{
+
358#if defined(JPH_USE_AVX)
+
359 return _mm256_xor_pd(inV1.mValue, inV2.mValue);
+
360#elif defined(JPH_USE_SSE)
+
361 return DVec3({ _mm_xor_pd(inV1.mValue.mLow, inV2.mValue.mLow), _mm_xor_pd(inV1.mValue.mHigh, inV2.mValue.mHigh) });
+
362#elif defined(JPH_USE_NEON)
+
363 return DVec3({ vreinterpretq_f64_u64(veorq_u64(vreinterpretq_u64_f64(inV1.mValue.val[0]), vreinterpretq_u64_f64(inV2.mValue.val[0]))),
+
364 vreinterpretq_f64_u64(veorq_u64(vreinterpretq_u64_f64(inV1.mValue.val[1]), vreinterpretq_u64_f64(inV2.mValue.val[1]))) });
+
365#else
+
366 return DVec3(BitCast<double>(BitCast<uint64>(inV1.mF64[0]) ^ BitCast<uint64>(inV2.mF64[0])),
+
367 BitCast<double>(BitCast<uint64>(inV1.mF64[1]) ^ BitCast<uint64>(inV2.mF64[1])),
+
368 BitCast<double>(BitCast<uint64>(inV1.mF64[2]) ^ BitCast<uint64>(inV2.mF64[2])));
+
369#endif
+
370}
+
+
371
+
+ +
373{
+
374#if defined(JPH_USE_AVX)
+
375 return _mm256_and_pd(inV1.mValue, inV2.mValue);
+
376#elif defined(JPH_USE_SSE)
+
377 return DVec3({ _mm_and_pd(inV1.mValue.mLow, inV2.mValue.mLow), _mm_and_pd(inV1.mValue.mHigh, inV2.mValue.mHigh) });
+
378#elif defined(JPH_USE_NEON)
+
379 return DVec3({ vreinterpretq_f64_u64(vandq_u64(vreinterpretq_u64_f64(inV1.mValue.val[0]), vreinterpretq_u64_f64(inV2.mValue.val[0]))),
+
380 vreinterpretq_f64_u64(vandq_u64(vreinterpretq_u64_f64(inV1.mValue.val[1]), vreinterpretq_u64_f64(inV2.mValue.val[1]))) });
+
381#else
+
382 return DVec3(BitCast<double>(BitCast<uint64>(inV1.mF64[0]) & BitCast<uint64>(inV2.mF64[0])),
+
383 BitCast<double>(BitCast<uint64>(inV1.mF64[1]) & BitCast<uint64>(inV2.mF64[1])),
+
384 BitCast<double>(BitCast<uint64>(inV1.mF64[2]) & BitCast<uint64>(inV2.mF64[2])));
+
385#endif
+
386}
+
+
387
+
+ +
389{
+
390#if defined(JPH_USE_AVX)
+
391 return _mm256_movemask_pd(mValue) & 0x7;
+
392#elif defined(JPH_USE_SSE)
+
393 return (_mm_movemask_pd(mValue.mLow) + (_mm_movemask_pd(mValue.mHigh) << 2)) & 0x7;
+
394#else
+
395 return int((BitCast<uint64>(mF64[0]) >> 63) | ((BitCast<uint64>(mF64[1]) >> 63) << 1) | ((BitCast<uint64>(mF64[2]) >> 63) << 2));
+
396#endif
+
397}
+
+
398
+
+ +
400{
+
401 return GetTrues() != 0;
+
402}
+
+
403
+
+ +
405{
+
406 return GetTrues() == 0x7;
+
407}
+
+
408
+
+ +
410{
+
411 return sEquals(*this, inV2).TestAllTrue();
+
412}
+
+
413
+
+
414bool DVec3::IsClose(DVec3Arg inV2, double inMaxDistSq) const
+
415{
+
416 return (inV2 - *this).LengthSq() <= inMaxDistSq;
+
417}
+
+
418
+
+
419bool DVec3::IsNearZero(double inMaxDistSq) const
+
420{
+
421 return LengthSq() <= inMaxDistSq;
+
422}
+
+
423
+
+ +
425{
+
426#if defined(JPH_USE_AVX)
+
427 return _mm256_mul_pd(mValue, inV2.mValue);
+
428#elif defined(JPH_USE_SSE)
+
429 return DVec3({ _mm_mul_pd(mValue.mLow, inV2.mValue.mLow), _mm_mul_pd(mValue.mHigh, inV2.mValue.mHigh) });
+
430#elif defined(JPH_USE_NEON)
+
431 return DVec3({ vmulq_f64(mValue.val[0], inV2.mValue.val[0]), vmulq_f64(mValue.val[1], inV2.mValue.val[1]) });
+
432#else
+
433 return DVec3(mF64[0] * inV2.mF64[0], mF64[1] * inV2.mF64[1], mF64[2] * inV2.mF64[2]);
+
434#endif
+
435}
+
+
436
+
+
437DVec3 DVec3::operator * (double inV2) const
+
438{
+
439#if defined(JPH_USE_AVX)
+
440 return _mm256_mul_pd(mValue, _mm256_set1_pd(inV2));
+
441#elif defined(JPH_USE_SSE)
+
442 __m128d v = _mm_set1_pd(inV2);
+
443 return DVec3({ _mm_mul_pd(mValue.mLow, v), _mm_mul_pd(mValue.mHigh, v) });
+
444#elif defined(JPH_USE_NEON)
+
445 return DVec3({ vmulq_n_f64(mValue.val[0], inV2), vmulq_n_f64(mValue.val[1], inV2) });
+
446#else
+
447 return DVec3(mF64[0] * inV2, mF64[1] * inV2, mF64[2] * inV2);
+
448#endif
+
449}
+
+
450
+
+
451DVec3 operator * (double inV1, DVec3Arg inV2)
+
452{
+
453#if defined(JPH_USE_AVX)
+
454 return _mm256_mul_pd(_mm256_set1_pd(inV1), inV2.mValue);
+
455#elif defined(JPH_USE_SSE)
+
456 __m128d v = _mm_set1_pd(inV1);
+
457 return DVec3({ _mm_mul_pd(v, inV2.mValue.mLow), _mm_mul_pd(v, inV2.mValue.mHigh) });
+
458#elif defined(JPH_USE_NEON)
+
459 return DVec3({ vmulq_n_f64(inV2.mValue.val[0], inV1), vmulq_n_f64(inV2.mValue.val[1], inV1) });
+
460#else
+
461 return DVec3(inV1 * inV2.mF64[0], inV1 * inV2.mF64[1], inV1 * inV2.mF64[2]);
+
462#endif
+
463}
+
+
464
+
+
465DVec3 DVec3::operator / (double inV2) const
+
466{
+
467#if defined(JPH_USE_AVX)
+
468 return _mm256_div_pd(mValue, _mm256_set1_pd(inV2));
+
469#elif defined(JPH_USE_SSE)
+
470 __m128d v = _mm_set1_pd(inV2);
+
471 return DVec3({ _mm_div_pd(mValue.mLow, v), _mm_div_pd(mValue.mHigh, v) });
+
472#elif defined(JPH_USE_NEON)
+
473 float64x2_t v = vdupq_n_f64(inV2);
+
474 return DVec3({ vdivq_f64(mValue.val[0], v), vdivq_f64(mValue.val[1], v) });
+
475#else
+
476 return DVec3(mF64[0] / inV2, mF64[1] / inV2, mF64[2] / inV2);
+
477#endif
+
478}
+
+
479
+
+ +
481{
+
482#if defined(JPH_USE_AVX)
+
483 mValue = _mm256_mul_pd(mValue, _mm256_set1_pd(inV2));
+
484#elif defined(JPH_USE_SSE)
+
485 __m128d v = _mm_set1_pd(inV2);
+
486 mValue.mLow = _mm_mul_pd(mValue.mLow, v);
+
487 mValue.mHigh = _mm_mul_pd(mValue.mHigh, v);
+
488#elif defined(JPH_USE_NEON)
+
489 mValue.val[0] = vmulq_n_f64(mValue.val[0], inV2);
+
490 mValue.val[1] = vmulq_n_f64(mValue.val[1], inV2);
+
491#else
+
492 for (int i = 0; i < 3; ++i)
+
493 mF64[i] *= inV2;
+
494 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
495 mF64[3] = mF64[2];
+
496 #endif
+
497#endif
+
498 return *this;
+
499}
+
+
500
+
+ +
502{
+
503#if defined(JPH_USE_AVX)
+
504 mValue = _mm256_mul_pd(mValue, inV2.mValue);
+
505#elif defined(JPH_USE_SSE)
+
506 mValue.mLow = _mm_mul_pd(mValue.mLow, inV2.mValue.mLow);
+
507 mValue.mHigh = _mm_mul_pd(mValue.mHigh, inV2.mValue.mHigh);
+
508#elif defined(JPH_USE_NEON)
+
509 mValue.val[0] = vmulq_f64(mValue.val[0], inV2.mValue.val[0]);
+
510 mValue.val[1] = vmulq_f64(mValue.val[1], inV2.mValue.val[1]);
+
511#else
+
512 for (int i = 0; i < 3; ++i)
+
513 mF64[i] *= inV2.mF64[i];
+
514 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
515 mF64[3] = mF64[2];
+
516 #endif
+
517#endif
+
518 return *this;
+
519}
+
+
520
+
+ +
522{
+
523#if defined(JPH_USE_AVX)
+
524 mValue = _mm256_div_pd(mValue, _mm256_set1_pd(inV2));
+
525#elif defined(JPH_USE_SSE)
+
526 __m128d v = _mm_set1_pd(inV2);
+
527 mValue.mLow = _mm_div_pd(mValue.mLow, v);
+
528 mValue.mHigh = _mm_div_pd(mValue.mHigh, v);
+
529#elif defined(JPH_USE_NEON)
+
530 float64x2_t v = vdupq_n_f64(inV2);
+
531 mValue.val[0] = vdivq_f64(mValue.val[0], v);
+
532 mValue.val[1] = vdivq_f64(mValue.val[1], v);
+
533#else
+
534 for (int i = 0; i < 3; ++i)
+
535 mF64[i] /= inV2;
+
536 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
537 mF64[3] = mF64[2];
+
538 #endif
+
539#endif
+
540 return *this;
+
541}
+
+
542
+
+ +
544{
+
545#if defined(JPH_USE_AVX)
+
546 return _mm256_add_pd(mValue, _mm256_cvtps_pd(inV2.mValue));
+
547#elif defined(JPH_USE_SSE)
+
548 return DVec3({ _mm_add_pd(mValue.mLow, _mm_cvtps_pd(inV2.mValue)), _mm_add_pd(mValue.mHigh, _mm_cvtps_pd(_mm_shuffle_ps(inV2.mValue, inV2.mValue, _MM_SHUFFLE(2, 2, 2, 2)))) });
+
549#elif defined(JPH_USE_NEON)
+
550 return DVec3({ vaddq_f64(mValue.val[0], vcvt_f64_f32(vget_low_f32(inV2.mValue))), vaddq_f64(mValue.val[1], vcvt_high_f64_f32(inV2.mValue)) });
+
551#else
+
552 return DVec3(mF64[0] + inV2.mF32[0], mF64[1] + inV2.mF32[1], mF64[2] + inV2.mF32[2]);
+
553#endif
+
554}
+
+
555
+
+ +
557{
+
558#if defined(JPH_USE_AVX)
+
559 return _mm256_add_pd(mValue, inV2.mValue);
+
560#elif defined(JPH_USE_SSE)
+
561 return DVec3({ _mm_add_pd(mValue.mLow, inV2.mValue.mLow), _mm_add_pd(mValue.mHigh, inV2.mValue.mHigh) });
+
562#elif defined(JPH_USE_NEON)
+
563 return DVec3({ vaddq_f64(mValue.val[0], inV2.mValue.val[0]), vaddq_f64(mValue.val[1], inV2.mValue.val[1]) });
+
564#else
+
565 return DVec3(mF64[0] + inV2.mF64[0], mF64[1] + inV2.mF64[1], mF64[2] + inV2.mF64[2]);
+
566#endif
+
567}
+
+
568
+
+ +
570{
+
571#if defined(JPH_USE_AVX)
+
572 mValue = _mm256_add_pd(mValue, _mm256_cvtps_pd(inV2.mValue));
+
573#elif defined(JPH_USE_SSE)
+
574 mValue.mLow = _mm_add_pd(mValue.mLow, _mm_cvtps_pd(inV2.mValue));
+
575 mValue.mHigh = _mm_add_pd(mValue.mHigh, _mm_cvtps_pd(_mm_shuffle_ps(inV2.mValue, inV2.mValue, _MM_SHUFFLE(2, 2, 2, 2))));
+
576#elif defined(JPH_USE_NEON)
+
577 mValue.val[0] = vaddq_f64(mValue.val[0], vcvt_f64_f32(vget_low_f32(inV2.mValue)));
+
578 mValue.val[1] = vaddq_f64(mValue.val[1], vcvt_high_f64_f32(inV2.mValue));
+
579#else
+
580 for (int i = 0; i < 3; ++i)
+
581 mF64[i] += inV2.mF32[i];
+
582 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
583 mF64[3] = mF64[2];
+
584 #endif
+
585#endif
+
586 return *this;
+
587}
+
+
588
+
+ +
590{
+
591#if defined(JPH_USE_AVX)
+
592 mValue = _mm256_add_pd(mValue, inV2.mValue);
+
593#elif defined(JPH_USE_SSE)
+
594 mValue.mLow = _mm_add_pd(mValue.mLow, inV2.mValue.mLow);
+
595 mValue.mHigh = _mm_add_pd(mValue.mHigh, inV2.mValue.mHigh);
+
596#elif defined(JPH_USE_NEON)
+
597 mValue.val[0] = vaddq_f64(mValue.val[0], inV2.mValue.val[0]);
+
598 mValue.val[1] = vaddq_f64(mValue.val[1], inV2.mValue.val[1]);
+
599#else
+
600 for (int i = 0; i < 3; ++i)
+
601 mF64[i] += inV2.mF64[i];
+
602 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
603 mF64[3] = mF64[2];
+
604 #endif
+
605#endif
+
606 return *this;
+
607}
+
+
608
+
+ +
610{
+
611#if defined(JPH_USE_AVX)
+
612 return _mm256_sub_pd(_mm256_setzero_pd(), mValue);
+
613#elif defined(JPH_USE_SSE)
+
614 __m128d zero = _mm_setzero_pd();
+
615 return DVec3({ _mm_sub_pd(zero, mValue.mLow), _mm_sub_pd(zero, mValue.mHigh) });
+
616#elif defined(JPH_USE_NEON)
+
617 #ifdef JPH_CROSS_PLATFORM_DETERMINISTIC
+
618 float64x2_t zero = vdupq_n_f64(0);
+
619 return DVec3({ vsubq_f64(zero, mValue.val[0]), vsubq_f64(zero, mValue.val[1]) });
+
620 #else
+
621 return DVec3({ vnegq_f64(mValue.val[0]), vnegq_f64(mValue.val[1]) });
+
622 #endif
+
623#else
+
624 #ifdef JPH_CROSS_PLATFORM_DETERMINISTIC
+
625 return DVec3(0.0 - mF64[0], 0.0 - mF64[1], 0.0 - mF64[2]);
+
626 #else
+
627 return DVec3(-mF64[0], -mF64[1], -mF64[2]);
+
628 #endif
+
629#endif
+
630}
+
+
631
+
+ +
633{
+
634#if defined(JPH_USE_AVX)
+
635 return _mm256_sub_pd(mValue, _mm256_cvtps_pd(inV2.mValue));
+
636#elif defined(JPH_USE_SSE)
+
637 return DVec3({ _mm_sub_pd(mValue.mLow, _mm_cvtps_pd(inV2.mValue)), _mm_sub_pd(mValue.mHigh, _mm_cvtps_pd(_mm_shuffle_ps(inV2.mValue, inV2.mValue, _MM_SHUFFLE(2, 2, 2, 2)))) });
+
638#elif defined(JPH_USE_NEON)
+
639 return DVec3({ vsubq_f64(mValue.val[0], vcvt_f64_f32(vget_low_f32(inV2.mValue))), vsubq_f64(mValue.val[1], vcvt_high_f64_f32(inV2.mValue)) });
+
640#else
+
641 return DVec3(mF64[0] - inV2.mF32[0], mF64[1] - inV2.mF32[1], mF64[2] - inV2.mF32[2]);
+
642#endif
+
643}
+
+
644
+
+ +
646{
+
647#if defined(JPH_USE_AVX)
+
648 return _mm256_sub_pd(mValue, inV2.mValue);
+
649#elif defined(JPH_USE_SSE)
+
650 return DVec3({ _mm_sub_pd(mValue.mLow, inV2.mValue.mLow), _mm_sub_pd(mValue.mHigh, inV2.mValue.mHigh) });
+
651#elif defined(JPH_USE_NEON)
+
652 return DVec3({ vsubq_f64(mValue.val[0], inV2.mValue.val[0]), vsubq_f64(mValue.val[1], inV2.mValue.val[1]) });
+
653#else
+
654 return DVec3(mF64[0] - inV2.mF64[0], mF64[1] - inV2.mF64[1], mF64[2] - inV2.mF64[2]);
+
655#endif
+
656}
+
+
657
+
+ +
659{
+
660#if defined(JPH_USE_AVX)
+
661 mValue = _mm256_sub_pd(mValue, _mm256_cvtps_pd(inV2.mValue));
+
662#elif defined(JPH_USE_SSE)
+
663 mValue.mLow = _mm_sub_pd(mValue.mLow, _mm_cvtps_pd(inV2.mValue));
+
664 mValue.mHigh = _mm_sub_pd(mValue.mHigh, _mm_cvtps_pd(_mm_shuffle_ps(inV2.mValue, inV2.mValue, _MM_SHUFFLE(2, 2, 2, 2))));
+
665#elif defined(JPH_USE_NEON)
+
666 mValue.val[0] = vsubq_f64(mValue.val[0], vcvt_f64_f32(vget_low_f32(inV2.mValue)));
+
667 mValue.val[1] = vsubq_f64(mValue.val[1], vcvt_high_f64_f32(inV2.mValue));
+
668#else
+
669 for (int i = 0; i < 3; ++i)
+
670 mF64[i] -= inV2.mF32[i];
+
671 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
672 mF64[3] = mF64[2];
+
673 #endif
+
674#endif
+
675 return *this;
+
676}
+
+
677
+
+ +
679{
+
680#if defined(JPH_USE_AVX)
+
681 mValue = _mm256_sub_pd(mValue, inV2.mValue);
+
682#elif defined(JPH_USE_SSE)
+
683 mValue.mLow = _mm_sub_pd(mValue.mLow, inV2.mValue.mLow);
+
684 mValue.mHigh = _mm_sub_pd(mValue.mHigh, inV2.mValue.mHigh);
+
685#elif defined(JPH_USE_NEON)
+
686 mValue.val[0] = vsubq_f64(mValue.val[0], inV2.mValue.val[0]);
+
687 mValue.val[1] = vsubq_f64(mValue.val[1], inV2.mValue.val[1]);
+
688#else
+
689 for (int i = 0; i < 3; ++i)
+
690 mF64[i] -= inV2.mF64[i];
+
691 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
692 mF64[3] = mF64[2];
+
693 #endif
+
694#endif
+
695 return *this;
+
696}
+
+
697
+
+ +
699{
+
700 inV2.CheckW();
+
701#if defined(JPH_USE_AVX)
+
702 return _mm256_div_pd(mValue, inV2.mValue);
+
703#elif defined(JPH_USE_SSE)
+
704 return DVec3({ _mm_div_pd(mValue.mLow, inV2.mValue.mLow), _mm_div_pd(mValue.mHigh, inV2.mValue.mHigh) });
+
705#elif defined(JPH_USE_NEON)
+
706 return DVec3({ vdivq_f64(mValue.val[0], inV2.mValue.val[0]), vdivq_f64(mValue.val[1], inV2.mValue.val[1]) });
+
707#else
+
708 return DVec3(mF64[0] / inV2.mF64[0], mF64[1] / inV2.mF64[1], mF64[2] / inV2.mF64[2]);
+
709#endif
+
710}
+
+
711
+
+ +
713{
+
714#if defined(JPH_USE_AVX512)
+
715 return _mm256_range_pd(mValue, mValue, 0b1000);
+
716#elif defined(JPH_USE_AVX)
+
717 return _mm256_max_pd(_mm256_sub_pd(_mm256_setzero_pd(), mValue), mValue);
+
718#elif defined(JPH_USE_SSE)
+
719 __m128d zero = _mm_setzero_pd();
+
720 return DVec3({ _mm_max_pd(_mm_sub_pd(zero, mValue.mLow), mValue.mLow), _mm_max_pd(_mm_sub_pd(zero, mValue.mHigh), mValue.mHigh) });
+
721#elif defined(JPH_USE_NEON)
+
722 return DVec3({ vabsq_f64(mValue.val[0]), vabsq_f64(mValue.val[1]) });
+
723#else
+
724 return DVec3(abs(mF64[0]), abs(mF64[1]), abs(mF64[2]));
+
725#endif
+
726}
+
+
727
+
+ +
729{
+
730 return sReplicate(1.0) / mValue;
+
731}
+
+
732
+
+ +
734{
+
735#if defined(JPH_USE_AVX2)
+
736 __m256d t1 = _mm256_permute4x64_pd(inV2.mValue, _MM_SHUFFLE(0, 0, 2, 1)); // Assure Z and W are the same
+
737 t1 = _mm256_mul_pd(t1, mValue);
+
738 __m256d t2 = _mm256_permute4x64_pd(mValue, _MM_SHUFFLE(0, 0, 2, 1)); // Assure Z and W are the same
+
739 t2 = _mm256_mul_pd(t2, inV2.mValue);
+
740 __m256d t3 = _mm256_sub_pd(t1, t2);
+
741 return _mm256_permute4x64_pd(t3, _MM_SHUFFLE(0, 0, 2, 1)); // Assure Z and W are the same
+
742#else
+
743 return DVec3(mF64[1] * inV2.mF64[2] - mF64[2] * inV2.mF64[1],
+
744 mF64[2] * inV2.mF64[0] - mF64[0] * inV2.mF64[2],
+
745 mF64[0] * inV2.mF64[1] - mF64[1] * inV2.mF64[0]);
+
746#endif
+
747}
+
+
748
+
+
749double DVec3::Dot(DVec3Arg inV2) const
+
750{
+
751#if defined(JPH_USE_AVX)
+
752 __m256d mul = _mm256_mul_pd(mValue, inV2.mValue);
+
753 __m128d xy = _mm256_castpd256_pd128(mul);
+
754 __m128d yx = _mm_shuffle_pd(xy, xy, 1);
+
755 __m128d sum = _mm_add_pd(xy, yx);
+
756 __m128d zw = _mm256_extractf128_pd(mul, 1);
+
757 sum = _mm_add_pd(sum, zw);
+
758 return _mm_cvtsd_f64(sum);
+
759#elif defined(JPH_USE_SSE)
+
760 __m128d xy = _mm_mul_pd(mValue.mLow, inV2.mValue.mLow);
+
761 __m128d yx = _mm_shuffle_pd(xy, xy, 1);
+
762 __m128d sum = _mm_add_pd(xy, yx);
+
763 __m128d z = _mm_mul_sd(mValue.mHigh, inV2.mValue.mHigh);
+
764 sum = _mm_add_pd(sum, z);
+
765 return _mm_cvtsd_f64(sum);
+
766#elif defined(JPH_USE_NEON)
+
767 float64x2_t mul_low = vmulq_f64(mValue.val[0], inV2.mValue.val[0]);
+
768 float64x2_t mul_high = vmulq_f64(mValue.val[1], inV2.mValue.val[1]);
+
769 return vaddvq_f64(mul_low) + vgetq_lane_f64(mul_high, 0);
+
770#else
+
771 double dot = 0.0;
+
772 for (int i = 0; i < 3; i++)
+
773 dot += mF64[i] * inV2.mF64[i];
+
774 return dot;
+
775#endif
+
776}
+
+
777
+
+
778double DVec3::LengthSq() const
+
779{
+
780 return Dot(*this);
+
781}
+
+
782
+
+ +
784{
+
785#if defined(JPH_USE_AVX)
+
786 return _mm256_sqrt_pd(mValue);
+
787#elif defined(JPH_USE_SSE)
+
788 return DVec3({ _mm_sqrt_pd(mValue.mLow), _mm_sqrt_pd(mValue.mHigh) });
+
789#elif defined(JPH_USE_NEON)
+
790 return DVec3({ vsqrtq_f64(mValue.val[0]), vsqrtq_f64(mValue.val[1]) });
+
791#else
+
792 return DVec3(sqrt(mF64[0]), sqrt(mF64[1]), sqrt(mF64[2]));
+
793#endif
+
794}
+
+
795
+
+
796double DVec3::Length() const
+
797{
+
798 return sqrt(Dot(*this));
+
799}
+
+
800
+
+ +
802{
+
803 return *this / Length();
+
804}
+
+
805
+
+
806bool DVec3::IsNormalized(double inTolerance) const
+
807{
+
808 return abs(LengthSq() - 1.0) <= inTolerance;
+
809}
+
+
810
+
+
811bool DVec3::IsNaN() const
+
812{
+
813#if defined(JPH_USE_AVX512)
+
814 return (_mm256_fpclass_pd_mask(mValue, 0b10000001) & 0x7) != 0;
+
815#elif defined(JPH_USE_AVX)
+
816 return (_mm256_movemask_pd(_mm256_cmp_pd(mValue, mValue, _CMP_UNORD_Q)) & 0x7) != 0;
+
817#elif defined(JPH_USE_SSE)
+
818 return ((_mm_movemask_pd(_mm_cmpunord_pd(mValue.mLow, mValue.mLow)) + (_mm_movemask_pd(_mm_cmpunord_pd(mValue.mHigh, mValue.mHigh)) << 2)) & 0x7) != 0;
+
819#else
+
820 return isnan(mF64[0]) || isnan(mF64[1]) || isnan(mF64[2]);
+
821#endif
+
822}
+
+
823
+
+ +
825{
+
826#if defined(JPH_USE_AVX512)
+
827 return _mm256_fixupimm_pd(mValue, mValue, _mm256_set1_epi32(0xA9A90A00), 0);
+
828#elif defined(JPH_USE_AVX)
+
829 __m256d minus_one = _mm256_set1_pd(-1.0);
+
830 __m256d one = _mm256_set1_pd(1.0);
+
831 return _mm256_or_pd(_mm256_and_pd(mValue, minus_one), one);
+
832#elif defined(JPH_USE_SSE)
+
833 __m128d minus_one = _mm_set1_pd(-1.0);
+
834 __m128d one = _mm_set1_pd(1.0);
+
835 return DVec3({ _mm_or_pd(_mm_and_pd(mValue.mLow, minus_one), one), _mm_or_pd(_mm_and_pd(mValue.mHigh, minus_one), one) });
+
836#elif defined(JPH_USE_NEON)
+
837 uint64x2_t minus_one = vreinterpretq_u64_f64(vdupq_n_f64(-1.0f));
+
838 uint64x2_t one = vreinterpretq_u64_f64(vdupq_n_f64(1.0f));
+
839 return DVec3({ vreinterpretq_f64_u64(vorrq_u64(vandq_u64(vreinterpretq_u64_f64(mValue.val[0]), minus_one), one)),
+
840 vreinterpretq_f64_u64(vorrq_u64(vandq_u64(vreinterpretq_u64_f64(mValue.val[1]), minus_one), one)) });
+
841#else
+
842 return DVec3(std::signbit(mF64[0])? -1.0 : 1.0,
+
843 std::signbit(mF64[1])? -1.0 : 1.0,
+
844 std::signbit(mF64[2])? -1.0 : 1.0);
+
845#endif
+
846}
+
+
847
+
+ +
849{
+
850 // Float has 23 bit mantissa, double 52 bit mantissa => we lose 29 bits when converting from double to float
+
851 constexpr uint64 cDoubleToFloatMantissaLoss = (1U << 29) - 1;
+
852
+
853#if defined(JPH_USE_AVX)
+
854 return _mm256_and_pd(mValue, _mm256_castsi256_pd(_mm256_set1_epi64x(int64_t(~cDoubleToFloatMantissaLoss))));
+
855#elif defined(JPH_USE_SSE)
+
856 __m128d mask = _mm_castsi128_pd(_mm_set1_epi64x(int64_t(~cDoubleToFloatMantissaLoss)));
+
857 return DVec3({ _mm_and_pd(mValue.mLow, mask), _mm_and_pd(mValue.mHigh, mask) });
+
858#elif defined(JPH_USE_NEON)
+
859 uint64x2_t mask = vdupq_n_u64(~cDoubleToFloatMantissaLoss);
+
860 return DVec3({ vreinterpretq_f64_u64(vandq_u64(vreinterpretq_u64_f64(mValue.val[0]), mask)),
+
861 vreinterpretq_f64_u64(vandq_u64(vreinterpretq_u64_f64(mValue.val[1]), mask)) });
+
862#else
+
863 double x = BitCast<double>(BitCast<uint64>(mF64[0]) & ~cDoubleToFloatMantissaLoss);
+
864 double y = BitCast<double>(BitCast<uint64>(mF64[1]) & ~cDoubleToFloatMantissaLoss);
+
865 double z = BitCast<double>(BitCast<uint64>(mF64[2]) & ~cDoubleToFloatMantissaLoss);
+
866
+
867 return DVec3(x, y, z);
+
868#endif
+
869}
+
+
870
+
+ +
872{
+
873 // Float has 23 bit mantissa, double 52 bit mantissa => we lose 29 bits when converting from double to float
+
874 constexpr uint64 cDoubleToFloatMantissaLoss = (1U << 29) - 1;
+
875
+
876#if defined(JPH_USE_AVX512)
+
877 __m256i mantissa_loss = _mm256_set1_epi64x(cDoubleToFloatMantissaLoss);
+
878 __mmask8 is_zero = _mm256_testn_epi64_mask(_mm256_castpd_si256(mValue), mantissa_loss);
+
879 __m256d value_or_mantissa_loss = _mm256_or_pd(mValue, _mm256_castsi256_pd(mantissa_loss));
+
880 return _mm256_mask_blend_pd(is_zero, value_or_mantissa_loss, mValue);
+
881#elif defined(JPH_USE_AVX)
+
882 __m256i mantissa_loss = _mm256_set1_epi64x(cDoubleToFloatMantissaLoss);
+
883 __m256d value_and_mantissa_loss = _mm256_and_pd(mValue, _mm256_castsi256_pd(mantissa_loss));
+
884 __m256d is_zero = _mm256_cmp_pd(value_and_mantissa_loss, _mm256_setzero_pd(), _CMP_EQ_OQ);
+
885 __m256d value_or_mantissa_loss = _mm256_or_pd(mValue, _mm256_castsi256_pd(mantissa_loss));
+
886 return _mm256_blendv_pd(value_or_mantissa_loss, mValue, is_zero);
+
887#elif defined(JPH_USE_SSE4_1)
+
888 __m128i mantissa_loss = _mm_set1_epi64x(cDoubleToFloatMantissaLoss);
+
889 __m128d zero = _mm_setzero_pd();
+
890 __m128d value_and_mantissa_loss_low = _mm_and_pd(mValue.mLow, _mm_castsi128_pd(mantissa_loss));
+
891 __m128d is_zero_low = _mm_cmpeq_pd(value_and_mantissa_loss_low, zero);
+
892 __m128d value_or_mantissa_loss_low = _mm_or_pd(mValue.mLow, _mm_castsi128_pd(mantissa_loss));
+
893 __m128d value_and_mantissa_loss_high = _mm_and_pd(mValue.mHigh, _mm_castsi128_pd(mantissa_loss));
+
894 __m128d is_zero_high = _mm_cmpeq_pd(value_and_mantissa_loss_high, zero);
+
895 __m128d value_or_mantissa_loss_high = _mm_or_pd(mValue.mHigh, _mm_castsi128_pd(mantissa_loss));
+
896 return DVec3({ _mm_blendv_pd(value_or_mantissa_loss_low, mValue.mLow, is_zero_low), _mm_blendv_pd(value_or_mantissa_loss_high, mValue.mHigh, is_zero_high) });
+
897#elif defined(JPH_USE_NEON)
+
898 uint64x2_t mantissa_loss = vdupq_n_u64(cDoubleToFloatMantissaLoss);
+
899 float64x2_t zero = vdupq_n_f64(0.0);
+
900 float64x2_t value_and_mantissa_loss_low = vreinterpretq_f64_u64(vandq_u64(vreinterpretq_u64_f64(mValue.val[0]), mantissa_loss));
+
901 uint64x2_t is_zero_low = vceqq_f64(value_and_mantissa_loss_low, zero);
+
902 float64x2_t value_or_mantissa_loss_low = vreinterpretq_f64_u64(vorrq_u64(vreinterpretq_u64_f64(mValue.val[0]), mantissa_loss));
+
903 float64x2_t value_and_mantissa_loss_high = vreinterpretq_f64_u64(vandq_u64(vreinterpretq_u64_f64(mValue.val[1]), mantissa_loss));
+
904 float64x2_t value_low = vbslq_f64(is_zero_low, mValue.val[0], value_or_mantissa_loss_low);
+
905 uint64x2_t is_zero_high = vceqq_f64(value_and_mantissa_loss_high, zero);
+
906 float64x2_t value_or_mantissa_loss_high = vreinterpretq_f64_u64(vorrq_u64(vreinterpretq_u64_f64(mValue.val[1]), mantissa_loss));
+
907 float64x2_t value_high = vbslq_f64(is_zero_high, mValue.val[1], value_or_mantissa_loss_high);
+
908 return DVec3({ value_low, value_high });
+
909#else
+
910 uint64 ux = BitCast<uint64>(mF64[0]);
+
911 uint64 uy = BitCast<uint64>(mF64[1]);
+
912 uint64 uz = BitCast<uint64>(mF64[2]);
+
913
+
914 double x = BitCast<double>((ux & cDoubleToFloatMantissaLoss) == 0? ux : (ux | cDoubleToFloatMantissaLoss));
+
915 double y = BitCast<double>((uy & cDoubleToFloatMantissaLoss) == 0? uy : (uy | cDoubleToFloatMantissaLoss));
+
916 double z = BitCast<double>((uz & cDoubleToFloatMantissaLoss) == 0? uz : (uz | cDoubleToFloatMantissaLoss));
+
917
+
918 return DVec3(x, y, z);
+
919#endif
+
920}
+
+
921
+
+ +
923{
+
924 DVec3 to_zero = PrepareRoundToZero();
+
925 DVec3 to_inf = PrepareRoundToInf();
+
926 return Vec3(DVec3::sSelect(to_zero, to_inf, DVec3::sLess(*this, DVec3::sZero())));
+
927}
+
+
928
+
+ +
930{
+
931 DVec3 to_zero = PrepareRoundToZero();
+
932 DVec3 to_inf = PrepareRoundToInf();
+
933 return Vec3(DVec3::sSelect(to_inf, to_zero, DVec3::sLess(*this, DVec3::sZero())));
+
934}
+
+
935
+ +
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:451
+ +
#define JPH_MAKE_HASHABLE(type,...)
Definition HashCombine.h:87
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
Definition DVec3.h:14
+
static JPH_INLINE DVec3 sLess(DVec3Arg inV1, DVec3Arg inV2)
Less than (component wise)
Definition DVec3.inl:243
+
double mF64[4]
Definition DVec3.h:280
+
static JPH_INLINE DVec3 sMax(DVec3Arg inV1, DVec3Arg inV2)
Return the maximum of each of the components.
Definition DVec3.inl:208
+
{ double mData[4] Type
Definition DVec3.h:29
+
JPH_INLINE bool TestAnyTrue() const
Test if any of the components are true (true is when highest bit of component is set)
Definition DVec3.inl:399
+
JPH_INLINE Vec3 ToVec3RoundDown() const
Convert to float vector 3 rounding down.
Definition DVec3.inl:922
+
static JPH_INLINE DVec3 sClamp(DVec3Arg inV, DVec3Arg inMin, DVec3Arg inMax)
Clamp a vector between min and max (component wise)
Definition DVec3.inl:223
+
static JPH_INLINE DVec3 sMin(DVec3Arg inV1, DVec3Arg inV2)
Return the minimum value of each of the components.
Definition DVec3.inl:193
+
JPH_INLINE int GetTrues() const
Store if X is true in bit 0, Y in bit 1, Z in bit 2 and W in bit 3 (true is when highest bit of compo...
Definition DVec3.inl:388
+
static JPH_INLINE DVec3 sAnd(DVec3Arg inV1, DVec3Arg inV2)
Logical and (component wise)
Definition DVec3.inl:372
+
JPH_INLINE DVec3 & operator*=(double inV2)
Multiply vector with double.
Definition DVec3.inl:480
+
JPH_INLINE DVec3 Abs() const
Return the absolute value of each of the components.
Definition DVec3.inl:712
+
static JPH_INLINE DVec3 sFusedMultiplyAdd(DVec3Arg inMul1, DVec3Arg inMul2, DVec3Arg inAdd)
Calculates inMul1 * inMul2 + inAdd.
Definition DVec3.inl:303
+
static JPH_INLINE Type sFixW(TypeArg inValue)
Internal helper function that ensures that the Z component is replicated to the W component to preven...
Definition DVec3.inl:92
+
JPH_INLINE DVec3 Sqrt() const
Component wise square root.
Definition DVec3.inl:783
+
JPH_INLINE DVec3 GetSign() const
Get vector that contains the sign of each element (returns 1 if positive, -1 if negative)
Definition DVec3.inl:824
+
Type mValue
Definition DVec3.h:279
+
static JPH_INLINE DVec3 sXor(DVec3Arg inV1, DVec3Arg inV2)
Logical xor (component wise)
Definition DVec3.inl:356
+
static JPH_INLINE DVec3 sGreaterOrEqual(DVec3Arg inV1, DVec3Arg inV2)
Greater than or equal (component wise)
Definition DVec3.inl:288
+
JPH_INLINE DVec3 operator+(Vec3Arg inV2) const
Add two vectors (component wise)
Definition DVec3.inl:543
+
JPH_INLINE bool IsClose(DVec3Arg inV2, double inMaxDistSq=1.0e-24) const
Test if two vectors are close.
Definition DVec3.inl:414
+
JPH_INLINE bool IsNormalized(double inTolerance=1.0e-12) const
Test if vector is normalized.
Definition DVec3.inl:806
+
const Type & TypeArg
Definition DVec3.h:30
+
static JPH_INLINE DVec3 sNaN()
Vector with all NaN's.
Definition DVec3.inl:150
+
friend JPH_INLINE DVec3 operator*(double inV1, DVec3Arg inV2)
Multiply vector with double.
Definition DVec3.inl:451
+
static JPH_INLINE DVec3 sGreater(DVec3Arg inV1, DVec3Arg inV2)
Greater than (component wise)
Definition DVec3.inl:273
+
JPH_INLINE void StoreDouble3(Double3 *outV) const
Store 3 doubles to memory.
Definition DVec3.inl:171
+
static JPH_INLINE DVec3 sOr(DVec3Arg inV1, DVec3Arg inV2)
Logical or (component wise)
Definition DVec3.inl:340
+
static JPH_INLINE DVec3 sSelect(DVec3Arg inV1, DVec3Arg inV2, DVec3Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition DVec3.inl:318
+
static JPH_INLINE DVec3 sZero()
Vector with all zeros.
Definition DVec3.inl:120
+
JPH_INLINE bool TestAllTrue() const
Test if all components are true (true is when highest bit of component is set)
Definition DVec3.inl:404
+
JPH_INLINE double Length() const
Length of vector.
Definition DVec3.inl:796
+
JPH_INLINE DVec3 operator-() const
Negate.
Definition DVec3.inl:609
+
JPH_INLINE bool IsNaN() const
Test if vector contains NaN elements.
Definition DVec3.inl:811
+
JPH_INLINE Vec3 ToVec3RoundUp() const
Convert to float vector 3 rounding up.
Definition DVec3.inl:929
+
static const double cTrue
Representations of true and false for boolean operations.
Definition DVec3.h:274
+
DVec3()=default
Constructor.
+
JPH_INLINE void CheckW() const
Internal helper function that checks that W is equal to Z, so e.g. dividing by it should not generate...
Definition DVec3.inl:83
+
JPH_INLINE double LengthSq() const
Squared length of vector.
Definition DVec3.inl:778
+
JPH_INLINE DVec3 Normalized() const
Normalize vector.
Definition DVec3.inl:801
+
JPH_INLINE DVec3 operator/(double inV2) const
Divide vector by double.
Definition DVec3.inl:465
+
JPH_INLINE double Dot(DVec3Arg inV2) const
Dot product.
Definition DVec3.inl:749
+
static JPH_INLINE DVec3 sReplicate(double inV)
Replicate inV across all components.
Definition DVec3.inl:135
+
static JPH_INLINE DVec3 sLessOrEqual(DVec3Arg inV1, DVec3Arg inV2)
Less than or equal (component wise)
Definition DVec3.inl:258
+
JPH_INLINE DVec3 PrepareRoundToInf() const
Prepare to convert to float vector 3 rounding towards positive/negative inf (returns DVec3 that can b...
Definition DVec3.inl:871
+
JPH_INLINE DVec3 & operator+=(Vec3Arg inV2)
Add two vectors (component wise)
Definition DVec3.inl:569
+
static JPH_INLINE DVec3 sLoadDouble3Unsafe(const Double3 &inV)
Load 3 doubles from memory (reads 64 bits extra which it doesn't use)
Definition DVec3.inl:155
+
JPH_INLINE DVec3 & operator/=(double inV2)
Divide vector by double.
Definition DVec3.inl:521
+
JPH_INLINE DVec3 Cross(DVec3Arg inV2) const
Cross product.
Definition DVec3.inl:733
+
JPH_INLINE DVec3 & operator-=(Vec3Arg inV2)
Add two vectors (component wise)
Definition DVec3.inl:658
+
JPH_INLINE DVec3 PrepareRoundToZero() const
Prepare to convert to float vector 3 rounding towards zero (returns DVec3 that can be converted to a ...
Definition DVec3.inl:848
+
JPH_INLINE DVec3 Reciprocal() const
Reciprocal vector (1 / value) for each of the components.
Definition DVec3.inl:728
+
static JPH_INLINE DVec3 sEquals(DVec3Arg inV1, DVec3Arg inV2)
Equals (component wise)
Definition DVec3.inl:228
+
JPH_INLINE bool IsNearZero(double inMaxDistSq=1.0e-24) const
Test if vector is near zero.
Definition DVec3.inl:419
+
JPH_INLINE bool operator==(DVec3Arg inV2) const
Comparison.
Definition DVec3.inl:409
+
static const double cFalse
Definition DVec3.h:275
+
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition Double3.h:13
+
double z
Definition Double3.h:40
+
double y
Definition Double3.h:39
+
double x
Definition Double3.h:38
+
Definition Vec3.h:17
+
Type mValue
Definition Vec3.h:286
+
float mF32[4]
Definition Vec3.h:287
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_debug_renderer_8cpp.html b/_debug_renderer_8cpp.html new file mode 100644 index 000000000..59d92ce54 --- /dev/null +++ b/_debug_renderer_8cpp.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Jolt/Renderer/DebugRenderer.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRenderer.cpp File Reference
+
+
+
+
+ + + + diff --git a/_debug_renderer_8h.html b/_debug_renderer_8h.html new file mode 100644 index 000000000..53268c536 --- /dev/null +++ b/_debug_renderer_8h.html @@ -0,0 +1,165 @@ + + + + + + + +Jolt Physics: Jolt/Renderer/DebugRenderer.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DebugRenderer.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + +

+Classes

class  DebugRenderer
 
class  DebugRenderer::Vertex
 Vertex format used by the triangle renderer. More...
 
class  DebugRenderer::Triangle
 A single triangle. More...
 
class  DebugRenderer::LOD
 A single level of detail. More...
 
class  DebugRenderer::Geometry
 A geometry primitive containing triangle batches for various lods. More...
 
+ + + +

+Macros

#define JPH_DEBUG_RENDERER_EXPORT   JPH_EXPORT
 
+

Macro Definition Documentation

+ +

◆ JPH_DEBUG_RENDERER_EXPORT

+ +
+
+ + + + +
#define JPH_DEBUG_RENDERER_EXPORT   JPH_EXPORT
+
+ +
+
+
+
+ + + + diff --git a/_debug_renderer_8h.js b/_debug_renderer_8h.js new file mode 100644 index 000000000..aa43808f0 --- /dev/null +++ b/_debug_renderer_8h.js @@ -0,0 +1,9 @@ +var _debug_renderer_8h = +[ + [ "DebugRenderer", "class_debug_renderer.html", "class_debug_renderer" ], + [ "DebugRenderer::Vertex", "class_debug_renderer_1_1_vertex.html", "class_debug_renderer_1_1_vertex" ], + [ "DebugRenderer::Triangle", "class_debug_renderer_1_1_triangle.html", "class_debug_renderer_1_1_triangle" ], + [ "DebugRenderer::LOD", "class_debug_renderer_1_1_l_o_d.html", "class_debug_renderer_1_1_l_o_d" ], + [ "DebugRenderer::Geometry", "class_debug_renderer_1_1_geometry.html", "class_debug_renderer_1_1_geometry" ], + [ "JPH_DEBUG_RENDERER_EXPORT", "_debug_renderer_8h.html#a1eb8c8b4d1d3d0232455eed4ac196289", null ] +]; \ No newline at end of file diff --git a/_debug_renderer_8h_source.html b/_debug_renderer_8h_source.html new file mode 100644 index 000000000..76a7cfa2e --- /dev/null +++ b/_debug_renderer_8h_source.html @@ -0,0 +1,471 @@ + + + + + + + +Jolt Physics: Jolt/Renderer/DebugRenderer.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRenderer.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
+
7#ifndef JPH_DEBUG_RENDERER
+
8 #error This file should only be included when JPH_DEBUG_RENDERER is defined
+
9#endif // !JPH_DEBUG_RENDERER
+
10
+
11#ifndef JPH_DEBUG_RENDERER_EXPORT
+
12 // By default export the debug renderer
+
13 #define JPH_DEBUG_RENDERER_EXPORT JPH_EXPORT
+
14#endif // !JPH_DEBUG_RENDERER_EXPORT
+
15
+
16#include <Jolt/Core/Color.h>
+
17#include <Jolt/Core/Reference.h>
+ + + +
21#include <Jolt/Math/Float2.h>
+ +
23#include <Jolt/Geometry/AABox.h>
+
24
+ +
26
+
27class OrientedBox;
+
28
+
+ +
47{
+
48public:
+ +
50
+ +
53 virtual ~DebugRenderer();
+
54
+
56 void NextFrame();
+
57
+
59 virtual void DrawLine(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor) = 0;
+
60
+
62 void DrawWireBox(const AABox &inBox, ColorArg inColor);
+
63 void DrawWireBox(const OrientedBox &inBox, ColorArg inColor);
+
64 void DrawWireBox(RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor);
+
65
+
67 void DrawMarker(RVec3Arg inPosition, ColorArg inColor, float inSize);
+
68
+
70 void DrawArrow(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor, float inSize);
+
71
+
73 void DrawCoordinateSystem(RMat44Arg inTransform, float inSize = 1.0f);
+
74
+
76 void DrawPlane(RVec3Arg inPoint, Vec3Arg inNormal, ColorArg inColor, float inSize);
+
77
+
79 void DrawWireTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor);
+
80
+
82 template <class VERTEX_ARRAY>
+
83 void DrawWirePolygon(RMat44Arg inTransform, const VERTEX_ARRAY &inVertices, ColorArg inColor, float inArrowSize = 0.0f) { for (typename VERTEX_ARRAY::size_type i = 0; i < inVertices.size(); ++i) DrawArrow(inTransform * inVertices[i], inTransform * inVertices[(i + 1) % inVertices.size()], inColor, inArrowSize); }
+
84
+
86 void DrawWireSphere(RVec3Arg inCenter, float inRadius, ColorArg inColor, int inLevel = 3);
+
87 void DrawWireUnitSphere(RMat44Arg inMatrix, ColorArg inColor, int inLevel = 3);
+
88
+
+
90 enum class ECastShadow
+
91 {
+
92 On,
+
93 Off
+
94 };
+
+
95
+
+
97 enum class EDrawMode
+
98 {
+
99 Solid,
+
100 Wireframe,
+
101 };
+
+
102
+
104 virtual void DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow = ECastShadow::Off) = 0;
+
105
+
107 void DrawBox(const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid);
+
108 void DrawBox(RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid);
+
109
+
111 void DrawSphere(RVec3Arg inCenter, float inRadius, ColorArg inColor, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid);
+
112 void DrawUnitSphere(RMat44Arg inMatrix, ColorArg inColor, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid);
+
113
+
116 void DrawCapsule(RMat44Arg inMatrix, float inHalfHeightOfCylinder, float inRadius, ColorArg inColor, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid);
+
117
+
120 void DrawCylinder(RMat44Arg inMatrix, float inHalfHeight, float inRadius, ColorArg inColor, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid);
+
121
+
131 void DrawOpenCone(RVec3Arg inTop, Vec3Arg inAxis, Vec3Arg inPerpendicular, float inHalfAngle, float inLength, ColorArg inColor, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid);
+
132
+
141 void DrawSwingConeLimits(RMat44Arg inMatrix, float inSwingYHalfAngle, float inSwingZHalfAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid);
+
142
+
153 void DrawSwingPyramidLimits(RMat44Arg inMatrix, float inMinSwingYAngle, float inMaxSwingYAngle, float inMinSwingZAngle, float inMaxSwingZAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid);
+
154
+
165 void DrawPie(RVec3Arg inCenter, float inRadius, Vec3Arg inNormal, Vec3Arg inAxis, float inMinAngle, float inMaxAngle, ColorArg inColor, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid);
+
166
+
176 void DrawTaperedCylinder(RMat44Arg inMatrix, float inTop, float inBottom, float inTopRadius, float inBottomRadius, ColorArg inColor, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid);
+
177
+ +
180
+
+
182 class Vertex
+
183 {
+
184 public:
+ + + + +
189 };
+
+
190
+
+ +
193 {
+
194 public:
+
195 Triangle() = default;
+
196 Triangle(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, ColorArg inColor);
+
197 Triangle(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, ColorArg inColor, Vec3Arg inUVOrigin, Vec3Arg inUVDirection);
+
198
+
199 Vertex mV[3];
+
200 };
+
+
201
+ +
204
+
+
206 class LOD
+
207 {
+
208 public:
+ + +
211 };
+
+
212
+
+
214 class Geometry : public RefTarget<Geometry>
+
215 {
+
216 public:
+ +
218
+
220 Geometry(const AABox &inBounds) : mBounds(inBounds) { }
+
221 Geometry(const Batch &inBatch, const AABox &inBounds) : mBounds(inBounds) { mLODs.push_back({ inBatch, FLT_MAX }); }
+
222
+
+
228 const LOD & GetLOD(Vec3Arg inCameraPosition, const AABox &inWorldSpaceBounds, float inLODScaleSq) const
+
229 {
+
230 float dist_sq = inWorldSpaceBounds.GetSqDistanceTo(inCameraPosition);
+
231 for (const LOD &lod : mLODs)
+
232 if (dist_sq <= inLODScaleSq * Square(lod.mDistance))
+
233 return lod;
+
234
+
235 return mLODs.back();
+
236 }
+
+
237
+ +
240
+ +
243 };
+
+
244
+ +
247
+
249 static AABox sCalculateBounds(const Vertex *inVertices, int inVertexCount);
+
250
+
252 virtual Batch CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount) = 0;
+
253 virtual Batch CreateTriangleBatch(const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount) = 0;
+
254 Batch CreateTriangleBatch(const Array<Triangle> &inTriangles) { return CreateTriangleBatch(inTriangles.empty()? nullptr : &inTriangles[0], int(inTriangles.size())); }
+
255 Batch CreateTriangleBatch(const Array<Vertex> &inVertices, const Array<uint32> &inIndices) { return CreateTriangleBatch(inVertices.empty()? nullptr : &inVertices[0], int(inVertices.size()), inIndices.empty()? nullptr : &inIndices[0], int(inIndices.size())); }
+
256 Batch CreateTriangleBatch(const VertexList &inVertices, const IndexedTriangleNoMaterialList &inTriangles);
+
257
+
259 using SupportFunction = function<Vec3 (Vec3Arg inDirection)>;
+
260 Batch CreateTriangleBatchForConvex(SupportFunction inGetSupport, int inLevel, AABox *outBounds = nullptr);
+
261 GeometryRef CreateTriangleGeometryForConvex(SupportFunction inGetSupport);
+
262
+
+
264 enum class ECullMode
+
265 {
+
266 CullBackFace,
+
267 CullFrontFace,
+
268 Off
+
269 };
+
+
270
+
280 virtual void DrawGeometry(RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode = ECullMode::CullBackFace, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid) = 0;
+
281 void DrawGeometry(RMat44Arg inModelMatrix, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode = ECullMode::CullBackFace, ECastShadow inCastShadow = ECastShadow::On, EDrawMode inDrawMode = EDrawMode::Solid) { DrawGeometry(inModelMatrix, inGeometry->mBounds.Transformed(inModelMatrix), max(max(inModelMatrix.GetAxisX().LengthSq(), inModelMatrix.GetAxisY().LengthSq()), inModelMatrix.GetAxisZ().LengthSq()), inModelColor, inGeometry, inCullMode, inCastShadow, inDrawMode); }
+
282
+
284 virtual void DrawText3D(RVec3Arg inPosition, const string_view &inString, ColorArg inColor = Color::sWhite, float inHeight = 0.5f) = 0;
+
285
+
286protected:
+
288 void Initialize();
+
289
+
290private:
+
292 void DrawWireUnitSphereRecursive(RMat44Arg inMatrix, ColorArg inColor, Vec3Arg inDir1, Vec3Arg inDir2, Vec3Arg inDir3, int inLevel);
+
293
+
295 void CreateQuad(Array<uint32> &ioIndices, Array<Vertex> &ioVertices, Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, Vec3Arg inV4);
+
296
+
298 void Create8thSphereRecursive(Array<uint32> &ioIndices, Array<Vertex> &ioVertices, Vec3Arg inDir1, uint32 &ioIdx1, Vec3Arg inDir2, uint32 &ioIdx2, Vec3Arg inDir3, uint32 &ioIdx3, const Float2 &inUV, SupportFunction inGetSupport, int inLevel);
+
299 void Create8thSphere(Array<uint32> &ioIndices, Array<Vertex> &ioVertices, Vec3Arg inDir1, Vec3Arg inDir2, Vec3Arg inDir3, const Float2 &inUV, SupportFunction inGetSupport, int inLevel);
+
300
+
302 Batch CreateCylinder(float inTop, float inBottom, float inTopRadius, float inBottomRadius, int inLevel);
+
303
+
305 Geometry * CreateSwingLimitGeometry(int inNumSegments, const Vec3 *inVertices);
+
306
+
307 // Predefined shapes
+
308 GeometryRef mBox;
+
309 GeometryRef mSphere;
+
310 GeometryRef mCapsuleTop;
+
311 GeometryRef mCapsuleMid;
+
312 GeometryRef mCapsuleBottom;
+
313 GeometryRef mOpenCone;
+
314 GeometryRef mCylinder;
+
315
+
316 struct SwingConeLimits
+
317 {
+
318 bool operator == (const SwingConeLimits &inRHS) const
+
319 {
+
320 return mSwingYHalfAngle == inRHS.mSwingYHalfAngle
+
321 && mSwingZHalfAngle == inRHS.mSwingZHalfAngle;
+
322 }
+
323
+
324 float mSwingYHalfAngle;
+
325 float mSwingZHalfAngle;
+
326 };
+
327
+
328 JPH_MAKE_HASH_STRUCT(SwingConeLimits, SwingConeLimitsHasher, t.mSwingYHalfAngle, t.mSwingZHalfAngle)
+
329
+
330 using SwingConeBatches = UnorderedMap<SwingConeLimits, GeometryRef, SwingConeLimitsHasher>;
+
331 SwingConeBatches mSwingConeLimits;
+
332 SwingConeBatches mPrevSwingConeLimits;
+
333
+
334 struct SwingPyramidLimits
+
335 {
+
336 bool operator == (const SwingPyramidLimits &inRHS) const
+
337 {
+
338 return mMinSwingYAngle == inRHS.mMinSwingYAngle
+
339 && mMaxSwingYAngle == inRHS.mMaxSwingYAngle
+
340 && mMinSwingZAngle == inRHS.mMinSwingZAngle
+
341 && mMaxSwingZAngle == inRHS.mMaxSwingZAngle;
+
342 }
+
343
+
344 float mMinSwingYAngle;
+
345 float mMaxSwingYAngle;
+
346 float mMinSwingZAngle;
+
347 float mMaxSwingZAngle;
+
348 };
+
349
+
350 JPH_MAKE_HASH_STRUCT(SwingPyramidLimits, SwingPyramidLimitsHasher, t.mMinSwingYAngle, t.mMaxSwingYAngle, t.mMinSwingZAngle, t.mMaxSwingZAngle)
+
351
+
352 using SwingPyramidBatches = UnorderedMap<SwingPyramidLimits, GeometryRef, SwingPyramidLimitsHasher>;
+
353 SwingPyramidBatches mSwingPyramidLimits;
+
354 SwingPyramidBatches mPrevSwingPyramidLimits;
+
355
+
356 using PieBatces = UnorderedMap<float, GeometryRef>;
+
357 PieBatces mPieLimits;
+
358 PieBatces mPrevPieLimits;
+
359
+
360 struct TaperedCylinder
+
361 {
+
362 bool operator == (const TaperedCylinder &inRHS) const
+
363 {
+
364 return mTop == inRHS.mTop
+
365 && mBottom == inRHS.mBottom
+
366 && mTopRadius == inRHS.mTopRadius
+
367 && mBottomRadius == inRHS.mBottomRadius;
+
368 }
+
369
+
370 float mTop;
+
371 float mBottom;
+
372 float mTopRadius;
+
373 float mBottomRadius;
+
374 };
+
375
+
376 JPH_MAKE_HASH_STRUCT(TaperedCylinder, TaperedCylinderHasher, t.mTop, t.mBottom, t.mTopRadius, t.mBottomRadius)
+
377
+
378 using TaperedCylinderBatces = UnorderedMap<TaperedCylinder, GeometryRef, TaperedCylinderHasher>;
+
379 TaperedCylinderBatces mTaperedCylinders;
+
380 TaperedCylinderBatces mPrevTaperedCylinders;
+
381};
+
+
382
+ + + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_DEBUG_RENDERER_EXPORT
Definition DebugRenderer.h:13
+ + +
#define JPH_MAKE_HASH_STRUCT(type, name,...)
Definition HashCombine.h:76
+ +
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
@ Off
Motor is off.
+ + + + +
std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > > UnorderedMap
Definition UnorderedMap.h:13
+
Axis aligned box.
Definition AABox.h:16
+
float GetSqDistanceTo(Vec3Arg inPoint) const
Get the squared distance between inPoint and this box (will be 0 if in Point is inside the box)
Definition AABox.h:294
+
Definition Array.h:36
+
bool empty() const
Returns true if there are no elements in the array.
Definition Array.h:312
+
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
static const Color sWhite
Definition Color.h:67
+
A geometry primitive containing triangle batches for various lods.
Definition DebugRenderer.h:215
+
AABox mBounds
Bounding box that encapsulates all LODs.
Definition DebugRenderer.h:242
+
const LOD & GetLOD(Vec3Arg inCameraPosition, const AABox &inWorldSpaceBounds, float inLODScaleSq) const
Definition DebugRenderer.h:228
+
Array< LOD > mLODs
All level of details for this mesh.
Definition DebugRenderer.h:239
+
JPH_OVERRIDE_NEW_DELETE Geometry(const AABox &inBounds)
Constructor.
Definition DebugRenderer.h:220
+
Geometry(const Batch &inBatch, const AABox &inBounds)
Definition DebugRenderer.h:221
+
A single level of detail.
Definition DebugRenderer.h:207
+
Batch mTriangleBatch
Definition DebugRenderer.h:209
+
float mDistance
Definition DebugRenderer.h:210
+
A single triangle.
Definition DebugRenderer.h:193
+ +
Vertex format used by the triangle renderer.
Definition DebugRenderer.h:183
+
Float3 mPosition
Definition DebugRenderer.h:185
+
Float2 mUV
Definition DebugRenderer.h:187
+
Color mColor
Definition DebugRenderer.h:188
+
Float3 mNormal
Definition DebugRenderer.h:186
+
Definition DebugRenderer.h:47
+
virtual void DrawText3D(RVec3Arg inPosition, const string_view &inString, ColorArg inColor=Color::sWhite, float inHeight=0.5f)=0
Draw text.
+
ECullMode
Determines which polygons are culled.
Definition DebugRenderer.h:265
+
virtual Batch CreateTriangleBatch(const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount)=0
+
virtual Batch CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount)=0
Create a batch of triangles that can be drawn efficiently.
+
virtual void DrawGeometry(RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)=0
+
ECastShadow
Enum that determines if a shadow should be cast or not.
Definition DebugRenderer.h:91
+
static DebugRenderer * sInstance
Singleton instance.
Definition DebugRenderer.h:179
+
Batch CreateTriangleBatch(const Array< Triangle > &inTriangles)
Definition DebugRenderer.h:254
+
EDrawMode
Determines how triangles are drawn.
Definition DebugRenderer.h:98
+
Batch CreateTriangleBatch(const Array< Vertex > &inVertices, const Array< uint32 > &inIndices)
Definition DebugRenderer.h:255
+
void DrawGeometry(RMat44Arg inModelMatrix, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
Definition DebugRenderer.h:281
+
void DrawWirePolygon(RMat44Arg inTransform, const VERTEX_ARRAY &inVertices, ColorArg inColor, float inArrowSize=0.0f)
Draw a wireframe polygon.
Definition DebugRenderer.h:83
+
virtual void DrawLine(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor)=0
Draw line.
+
function< Vec3(Vec3Arg inDirection)> SupportFunction
Create a primitive for a convex shape using its support function.
Definition DebugRenderer.h:259
+
virtual void DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::Off)=0
Draw a single back face culled triangle.
+
Class that holds 2 floats, used as a storage class mainly.
Definition Float2.h:11
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.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
+
JPH_INLINE Vec3 GetAxisY() const
Definition Mat44.h:148
+
JPH_INLINE Vec3 GetAxisZ() const
Definition Mat44.h:150
+
JPH_INLINE Vec3 GetAxisX() const
Access to the columns.
Definition Mat44.h:146
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Oriented box.
Definition OrientedBox.h:18
+ +
Definition Reference.h:35
+
Definition Vec3.h:17
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
+
+ + + + diff --git a/_debug_renderer_playback_8cpp.html b/_debug_renderer_playback_8cpp.html new file mode 100644 index 000000000..590568c1f --- /dev/null +++ b/_debug_renderer_playback_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Renderer/DebugRendererPlayback.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRendererPlayback.cpp File Reference
+
+
+
+
+ + + + diff --git a/_debug_renderer_playback_8h.html b/_debug_renderer_playback_8h.html new file mode 100644 index 000000000..c0a1972e8 --- /dev/null +++ b/_debug_renderer_playback_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Renderer/DebugRendererPlayback.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DebugRendererPlayback.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  DebugRendererPlayback
 Class that can read a recorded stream from DebugRendererRecorder and plays it back trough a DebugRenderer. More...
 
+
+
+ + + + diff --git a/_debug_renderer_playback_8h.js b/_debug_renderer_playback_8h.js new file mode 100644 index 000000000..f185dbee9 --- /dev/null +++ b/_debug_renderer_playback_8h.js @@ -0,0 +1,4 @@ +var _debug_renderer_playback_8h = +[ + [ "DebugRendererPlayback", "class_debug_renderer_playback.html", "class_debug_renderer_playback" ] +]; \ No newline at end of file diff --git a/_debug_renderer_playback_8h_source.html b/_debug_renderer_playback_8h_source.html new file mode 100644 index 000000000..5da78f6d3 --- /dev/null +++ b/_debug_renderer_playback_8h_source.html @@ -0,0 +1,175 @@ + + + + + + + +Jolt Physics: Jolt/Renderer/DebugRendererPlayback.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRendererPlayback.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
+
7#ifndef JPH_DEBUG_RENDERER
+
8 #error This file should only be included when JPH_DEBUG_RENDERER is defined
+
9#endif // !JPH_DEBUG_RENDERER
+
10
+ +
12#include <Jolt/Core/StreamIn.h>
+ +
14
+ +
16
+
+ +
19{
+
20public:
+
22 DebugRendererPlayback(DebugRenderer &inRenderer) : mRenderer(inRenderer) { }
+
23
+
25 void Parse(StreamIn &inStream);
+
26
+
28 uint GetNumFrames() const { return (uint)mFrames.size(); }
+
29
+
31 void DrawFrame(uint inFrameNumber) const;
+
32
+
33private:
+
35 DebugRenderer & mRenderer;
+
36
+ +
39
+ +
42
+
44 using Frame = DebugRendererRecorder::Frame;
+
45 Array<Frame> mFrames;
+
46};
+
+
47
+ +
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_DEBUG_RENDERER_EXPORT
Definition DebugRenderer.h:13
+ + + +
std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > > UnorderedMap
Definition UnorderedMap.h:13
+
Definition Array.h:36
+
Definition DebugRenderer.h:47
+
Class that can read a recorded stream from DebugRendererRecorder and plays it back trough a DebugRend...
Definition DebugRendererPlayback.h:19
+
DebugRendererPlayback(DebugRenderer &inRenderer)
Constructor.
Definition DebugRendererPlayback.h:22
+
uint GetNumFrames() const
Get the number of parsed frames.
Definition DebugRendererPlayback.h:28
+
Simple binary input stream.
Definition StreamIn.h:13
+
All information for a single frame.
Definition DebugRendererRecorder.h:90
+
+
+ + + + diff --git a/_debug_renderer_recorder_8cpp.html b/_debug_renderer_recorder_8cpp.html new file mode 100644 index 000000000..d16c39e32 --- /dev/null +++ b/_debug_renderer_recorder_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Renderer/DebugRendererRecorder.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRendererRecorder.cpp File Reference
+
+
+
+
+ + + + diff --git a/_debug_renderer_recorder_8h.html b/_debug_renderer_recorder_8h.html new file mode 100644 index 000000000..816b2b58a --- /dev/null +++ b/_debug_renderer_recorder_8h.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Jolt/Renderer/DebugRendererRecorder.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DebugRendererRecorder.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Classes

class  DebugRendererRecorder
 Implementation of DebugRenderer that records the API invocations to be played back later. More...
 
struct  DebugRendererRecorder::LineBlob
 Holds a single line segment. More...
 
struct  DebugRendererRecorder::TriangleBlob
 Holds a single triangle. More...
 
struct  DebugRendererRecorder::TextBlob
 Holds a single text entry. More...
 
struct  DebugRendererRecorder::GeometryBlob
 Holds a single geometry draw call. More...
 
struct  DebugRendererRecorder::Frame
 All information for a single frame. More...
 
+
+
+ + + + diff --git a/_debug_renderer_recorder_8h.js b/_debug_renderer_recorder_8h.js new file mode 100644 index 000000000..6df4a2237 --- /dev/null +++ b/_debug_renderer_recorder_8h.js @@ -0,0 +1,9 @@ +var _debug_renderer_recorder_8h = +[ + [ "DebugRendererRecorder", "class_debug_renderer_recorder.html", "class_debug_renderer_recorder" ], + [ "DebugRendererRecorder::LineBlob", "struct_debug_renderer_recorder_1_1_line_blob.html", "struct_debug_renderer_recorder_1_1_line_blob" ], + [ "DebugRendererRecorder::TriangleBlob", "struct_debug_renderer_recorder_1_1_triangle_blob.html", "struct_debug_renderer_recorder_1_1_triangle_blob" ], + [ "DebugRendererRecorder::TextBlob", "struct_debug_renderer_recorder_1_1_text_blob.html", "struct_debug_renderer_recorder_1_1_text_blob" ], + [ "DebugRendererRecorder::GeometryBlob", "struct_debug_renderer_recorder_1_1_geometry_blob.html", "struct_debug_renderer_recorder_1_1_geometry_blob" ], + [ "DebugRendererRecorder::Frame", "struct_debug_renderer_recorder_1_1_frame.html", "struct_debug_renderer_recorder_1_1_frame" ] +]; \ No newline at end of file diff --git a/_debug_renderer_recorder_8h_source.html b/_debug_renderer_recorder_8h_source.html new file mode 100644 index 000000000..3248a9c0f --- /dev/null +++ b/_debug_renderer_recorder_8h_source.html @@ -0,0 +1,310 @@ + + + + + + + +Jolt Physics: Jolt/Renderer/DebugRendererRecorder.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRendererRecorder.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
+
7#ifndef JPH_DEBUG_RENDERER
+
8 #error This file should only be included when JPH_DEBUG_RENDERER is defined
+
9#endif // !JPH_DEBUG_RENDERER
+
10
+ +
12#include <Jolt/Core/StreamOut.h>
+
13#include <Jolt/Core/Mutex.h>
+ +
15
+ +
17
+
+ +
20{
+
21public:
+ +
23
+
25 DebugRendererRecorder(StreamOut &inStream) : mStream(inStream) { Initialize(); }
+
26
+
28 virtual void DrawLine(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor) override;
+
29 virtual void DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow) override;
+
30 virtual Batch CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount) override;
+
31 virtual Batch CreateTriangleBatch(const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount) override;
+
32 virtual void DrawGeometry(RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode, ECastShadow inCastShadow, EDrawMode inDrawMode) override;
+
33 virtual void DrawText3D(RVec3Arg inPosition, const string_view &inString, ColorArg inColor, float inHeight) override;
+
34
+
36 void EndFrame();
+
37
+
+
39 enum class ECommand : uint8
+
40 {
+
41 CreateBatch,
+
42 CreateBatchIndexed,
+
43 CreateGeometry,
+
44 EndFrame
+
45 };
+
+
46
+
+
48 struct LineBlob
+
49 {
+ + + +
53 };
+
+
54
+ +
64
+
+
66 struct TextBlob
+
67 {
+
68 TextBlob() = default;
+
69 TextBlob(RVec3Arg inPosition, const string_view &inString, ColorArg inColor, float inHeight) : mPosition(inPosition), mString(inString), mColor(inColor), mHeight(inHeight) { }
+
70
+ + + +
74 float mHeight;
+
75 };
+
+
76
+ +
87
+ +
96
+
97private:
+
99 class BatchImpl : public RefTargetVirtual
+
100 {
+
101 public:
+ +
103
+
104 BatchImpl(uint32 inID) : mID(inID) { }
+
105
+
106 virtual void AddRef() override { ++mRefCount; }
+
107 virtual void Release() override { if (--mRefCount == 0) delete this; }
+
108
+
109 atomic<uint32> mRefCount = 0;
+
110 uint32 mID;
+
111 };
+
112
+
114 Mutex mMutex;
+
115
+
117 StreamOut & mStream;
+
118
+
120 uint32 mNextBatchID = 1;
+
121 uint32 mNextGeometryID = 1;
+
122
+ +
125
+
127 Frame mCurrentFrame;
+
128};
+
+
129
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_DEBUG_RENDERER_EXPORT
Definition DebugRenderer.h:13
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+ + +
std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > > UnorderedMap
Definition UnorderedMap.h:13
+
Axis aligned box.
Definition AABox.h:16
+
Definition Array.h:36
+
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
Definition DebugRenderer.h:47
+
virtual void DrawText3D(RVec3Arg inPosition, const string_view &inString, ColorArg inColor=Color::sWhite, float inHeight=0.5f)=0
Draw text.
+
void Initialize()
Initialize the system, must be called from the constructor of the DebugRenderer implementation.
Definition DebugRenderer.cpp:463
+
ECullMode
Determines which polygons are culled.
Definition DebugRenderer.h:265
+
virtual Batch CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount)=0
Create a batch of triangles that can be drawn efficiently.
+
virtual void DrawGeometry(RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)=0
+
ECastShadow
Enum that determines if a shadow should be cast or not.
Definition DebugRenderer.h:91
+
EDrawMode
Determines how triangles are drawn.
Definition DebugRenderer.h:98
+
virtual void DrawLine(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor)=0
Draw line.
+
virtual void DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::Off)=0
Draw a single back face culled triangle.
+
Implementation of DebugRenderer that records the API invocations to be played back later.
Definition DebugRendererRecorder.h:20
+
ECommand
Control commands written into the stream.
Definition DebugRendererRecorder.h:40
+
JPH_OVERRIDE_NEW_DELETE DebugRendererRecorder(StreamOut &inStream)
Constructor.
Definition DebugRendererRecorder.h:25
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Definition Mutex.h:122
+
Pure virtual version of RefTarget.
Definition Reference.h:82
+
Simple binary output stream.
Definition StreamOut.h:13
+
A simple triangle and its material.
Definition Triangle.h:11
+
Definition Vec3.h:17
+
All information for a single frame.
Definition DebugRendererRecorder.h:90
+
Array< LineBlob > mLines
Definition DebugRendererRecorder.h:91
+
Array< TextBlob > mTexts
Definition DebugRendererRecorder.h:93
+
Array< GeometryBlob > mGeometries
Definition DebugRendererRecorder.h:94
+
Array< TriangleBlob > mTriangles
Definition DebugRendererRecorder.h:92
+
Holds a single geometry draw call.
Definition DebugRendererRecorder.h:79
+
EDrawMode mDrawMode
Definition DebugRendererRecorder.h:85
+
uint32 mGeometryID
Definition DebugRendererRecorder.h:82
+
ECullMode mCullMode
Definition DebugRendererRecorder.h:83
+
ECastShadow mCastShadow
Definition DebugRendererRecorder.h:84
+
Color mModelColor
Definition DebugRendererRecorder.h:81
+
RMat44 mModelMatrix
Definition DebugRendererRecorder.h:80
+
Holds a single line segment.
Definition DebugRendererRecorder.h:49
+
RVec3 mTo
Definition DebugRendererRecorder.h:51
+
RVec3 mFrom
Definition DebugRendererRecorder.h:50
+
Color mColor
Definition DebugRendererRecorder.h:52
+
Holds a single text entry.
Definition DebugRendererRecorder.h:67
+ +
String mString
Definition DebugRendererRecorder.h:72
+
float mHeight
Definition DebugRendererRecorder.h:74
+
TextBlob(RVec3Arg inPosition, const string_view &inString, ColorArg inColor, float inHeight)
Definition DebugRendererRecorder.h:69
+
Color mColor
Definition DebugRendererRecorder.h:73
+
RVec3 mPosition
Definition DebugRendererRecorder.h:71
+
Holds a single triangle.
Definition DebugRendererRecorder.h:57
+
RVec3 mV1
Definition DebugRendererRecorder.h:58
+
Color mColor
Definition DebugRendererRecorder.h:61
+
RVec3 mV3
Definition DebugRendererRecorder.h:60
+
ECastShadow mCastShadow
Definition DebugRendererRecorder.h:62
+
RVec3 mV2
Definition DebugRendererRecorder.h:59
+
+
+ + + + diff --git a/_debug_renderer_simple_8cpp.html b/_debug_renderer_simple_8cpp.html new file mode 100644 index 000000000..cb1bc1fcb --- /dev/null +++ b/_debug_renderer_simple_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Renderer/DebugRendererSimple.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRendererSimple.cpp File Reference
+
+
+
+
+ + + + diff --git a/_debug_renderer_simple_8h.html b/_debug_renderer_simple_8h.html new file mode 100644 index 000000000..6352baa2c --- /dev/null +++ b/_debug_renderer_simple_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Renderer/DebugRendererSimple.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DebugRendererSimple.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  DebugRendererSimple
 
+
+
+ + + + diff --git a/_debug_renderer_simple_8h.js b/_debug_renderer_simple_8h.js new file mode 100644 index 000000000..e17ef48b6 --- /dev/null +++ b/_debug_renderer_simple_8h.js @@ -0,0 +1,4 @@ +var _debug_renderer_simple_8h = +[ + [ "DebugRendererSimple", "class_debug_renderer_simple.html", "class_debug_renderer_simple" ] +]; \ No newline at end of file diff --git a/_debug_renderer_simple_8h_source.html b/_debug_renderer_simple_8h_source.html new file mode 100644 index 000000000..05bdb3930 --- /dev/null +++ b/_debug_renderer_simple_8h_source.html @@ -0,0 +1,205 @@ + + + + + + + +Jolt Physics: Jolt/Renderer/DebugRendererSimple.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRendererSimple.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+
7#ifndef JPH_DEBUG_RENDERER
+
8 #error This file should only be included when JPH_DEBUG_RENDERER is defined
+
9#endif // !JPH_DEBUG_RENDERER
+
10
+ +
12
+ +
14
+
+ +
38{
+
39public:
+ +
41
+ +
44
+
+
47 void SetCameraPos(RVec3Arg inCameraPos)
+
48 {
+
49 mCameraPos = inCameraPos;
+
50 mCameraPosSet = true;
+
51 }
+
+
52
+
+
54 virtual void DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow) override
+
55 {
+
56 DrawLine(inV1, inV2, inColor);
+
57 DrawLine(inV2, inV3, inColor);
+
58 DrawLine(inV3, inV1, inColor);
+
59 }
+
+
60
+
61protected:
+
63 virtual Batch CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount) override;
+
64 virtual Batch CreateTriangleBatch(const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount) override;
+
65 virtual void DrawGeometry(RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode, ECastShadow inCastShadow, EDrawMode inDrawMode) override;
+
66
+
67private:
+
69 class BatchImpl : public RefTargetVirtual
+
70 {
+
71 public:
+ +
73
+
74 virtual void AddRef() override { ++mRefCount; }
+
75 virtual void Release() override { if (--mRefCount == 0) delete this; }
+
76
+
77 Array<Triangle> mTriangles;
+
78
+
79 private:
+
80 atomic<uint32> mRefCount = 0;
+
81 };
+
82
+
84 RVec3 mCameraPos;
+
85 bool mCameraPosSet = false;
+
86};
+
+
87
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_DEBUG_RENDERER_EXPORT
Definition DebugRenderer.h:13
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
Axis aligned box.
Definition AABox.h:16
+
Definition Array.h:36
+
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
Definition DebugRenderer.h:47
+
virtual Batch CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount)=0
Create a batch of triangles that can be drawn efficiently.
+
virtual void DrawGeometry(RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)=0
+
ECastShadow
Enum that determines if a shadow should be cast or not.
Definition DebugRenderer.h:91
+
virtual void DrawLine(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor)=0
Draw line.
+
Definition DebugRendererSimple.h:38
+
void SetCameraPos(RVec3Arg inCameraPos)
Definition DebugRendererSimple.h:47
+
virtual void DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow) override
Fallback implementation that uses DrawLine to draw a triangle (override this if you have a version th...
Definition DebugRendererSimple.h:54
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Pure virtual version of RefTarget.
Definition Reference.h:82
+
A simple triangle and its material.
Definition Triangle.h:11
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_decorated_shape_8cpp.html b/_decorated_shape_8cpp.html new file mode 100644 index 000000000..86b2d87e5 --- /dev/null +++ b/_decorated_shape_8cpp.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/DecoratedShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DecoratedShape.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (DecoratedShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (DecoratedShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_decorated_shape_8cpp.js b/_decorated_shape_8cpp.js new file mode 100644 index 000000000..45ba03913 --- /dev/null +++ b/_decorated_shape_8cpp.js @@ -0,0 +1,4 @@ +var _decorated_shape_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT", "_decorated_shape_8cpp.html#a8370ba1be883863dbda714bda7dc109e", null ] +]; \ No newline at end of file diff --git a/_decorated_shape_8h.html b/_decorated_shape_8h.html new file mode 100644 index 000000000..551256221 --- /dev/null +++ b/_decorated_shape_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/DecoratedShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DecoratedShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  DecoratedShapeSettings
 Class that constructs a DecoratedShape. More...
 
class  DecoratedShape
 Base class for shapes that decorate another shape with extra functionality (e.g. scale, translation etc.) More...
 
+
+
+ + + + diff --git a/_decorated_shape_8h.js b/_decorated_shape_8h.js new file mode 100644 index 000000000..7e9f68c40 --- /dev/null +++ b/_decorated_shape_8h.js @@ -0,0 +1,5 @@ +var _decorated_shape_8h = +[ + [ "DecoratedShapeSettings", "class_decorated_shape_settings.html", null ], + [ "DecoratedShape", "class_decorated_shape.html", "class_decorated_shape" ] +]; \ No newline at end of file diff --git a/_decorated_shape_8h_source.html b/_decorated_shape_8h_source.html new file mode 100644 index 000000000..7038712a1 --- /dev/null +++ b/_decorated_shape_8h_source.html @@ -0,0 +1,229 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/DecoratedShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
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::GetLeafShape
+
51 virtual const Shape * GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const override { return mInnerShape->GetLeafShape(inSubShapeID, outRemainder); }
+
52
+
53 // See Shape::GetMaterial
+
54 virtual const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const override;
+
55
+
56 // See Shape::GetSupportingFace
+
57 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
58
+
59 // See Shape::GetSubShapeUserData
+
60 virtual uint64 GetSubShapeUserData(const SubShapeID &inSubShapeID) const override;
+
61
+
62 // See Shape
+
63 virtual void SaveSubShapeState(ShapeList &outSubShapes) const override;
+
64 virtual void RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes) override;
+
65
+
66 // See Shape::GetStatsRecursive
+
67 virtual Stats GetStatsRecursive(VisitedShapes &ioVisitedShapes) const override;
+
68
+
69 // See Shape::IsValidScale
+
70 virtual bool IsValidScale(Vec3Arg inScale) const override { return mInnerShape->IsValidScale(inScale); }
+
71
+
72 // See Shape::MakeScaleValid
+
73 virtual Vec3 MakeScaleValid(Vec3Arg inScale) const override { return mInnerShape->MakeScaleValid(inScale); }
+
74
+
75protected:
+ +
77};
+
+
78
+ +
#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:76
+
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
+
virtual const Shape * GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const override
Definition DecoratedShape.h:51
+
RefConst< Shape > mInnerShape
Definition DecoratedShape.h:76
+
virtual bool IsValidScale(Vec3Arg inScale) const override
Definition DecoratedShape.h:70
+
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:73
+
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:184
+
virtual const Shape * GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
Definition Shape.cpp:35
+
Definition Shape.h:145
+
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
+
+
+ + + + diff --git a/_determinism_log_8cpp.html b/_determinism_log_8cpp.html new file mode 100644 index 000000000..494e832a5 --- /dev/null +++ b/_determinism_log_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Physics/DeterminismLog.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DeterminismLog.cpp File Reference
+
+
+
+
+ + + + diff --git a/_determinism_log_8h.html b/_determinism_log_8h.html new file mode 100644 index 000000000..4890c9ff7 --- /dev/null +++ b/_determinism_log_8h.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Physics/DeterminismLog.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DeterminismLog.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Macros

#define JPH_DET_LOG(...)
 By default we log nothing.
 
+

Macro Definition Documentation

+ +

◆ JPH_DET_LOG

+ +
+
+ + + + + + + + +
#define JPH_DET_LOG( ...)
+
+ +

By default we log nothing.

+ +
+
+
+
+ + + + diff --git a/_determinism_log_8h.js b/_determinism_log_8h.js new file mode 100644 index 000000000..a3c6bf69c --- /dev/null +++ b/_determinism_log_8h.js @@ -0,0 +1,4 @@ +var _determinism_log_8h = +[ + [ "JPH_DET_LOG", "_determinism_log_8h.html#a61c37041df47384bded07d7067fc8cf7", null ] +]; \ No newline at end of file diff --git a/_determinism_log_8h_source.html b/_determinism_log_8h_source.html new file mode 100644 index 000000000..8f8a1e15b --- /dev/null +++ b/_determinism_log_8h_source.html @@ -0,0 +1,312 @@ + + + + + + + +Jolt Physics: Jolt/Physics/DeterminismLog.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DeterminismLog.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2022 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+
7//#define JPH_ENABLE_DETERMINISM_LOG
+
8#ifdef JPH_ENABLE_DETERMINISM_LOG
+
9
+ + +
12
+ +
14#include <iomanip>
+
15#include <fstream>
+ +
17
+ +
19
+
21class DeterminismLog
+
22{
+
23private:
+
24 JPH_INLINE uint32 Convert(float inValue) const
+
25 {
+
26 return *(uint32 *)&inValue;
+
27 }
+
28
+
29 JPH_INLINE uint64 Convert(double inValue) const
+
30 {
+
31 return *(uint64 *)&inValue;
+
32 }
+
33
+
34public:
+
35 DeterminismLog()
+
36 {
+
37 mLog.open("detlog.txt", std::ios::out | std::ios::trunc | std::ios::binary); // Binary because we don't want a difference between Unix and Windows line endings.
+
38 mLog.fill('0');
+
39 }
+
40
+
41 DeterminismLog & operator << (char inValue)
+
42 {
+
43 mLog << inValue;
+
44 return *this;
+
45 }
+
46
+
47 DeterminismLog & operator << (const char *inValue)
+
48 {
+
49 mLog << std::dec << inValue;
+
50 return *this;
+
51 }
+
52
+
53 DeterminismLog & operator << (const string &inValue)
+
54 {
+
55 mLog << std::dec << inValue;
+
56 return *this;
+
57 }
+
58
+
59 DeterminismLog & operator << (const BodyID &inValue)
+
60 {
+
61 mLog << std::hex << std::setw(8) << inValue.GetIndexAndSequenceNumber();
+
62 return *this;
+
63 }
+
64
+
65 DeterminismLog & operator << (const SubShapeID &inValue)
+
66 {
+
67 mLog << std::hex << std::setw(8) << inValue.GetValue();
+
68 return *this;
+
69 }
+
70
+
71 DeterminismLog & operator << (float inValue)
+
72 {
+
73 mLog << std::hex << std::setw(8) << Convert(inValue);
+
74 return *this;
+
75 }
+
76
+
77 DeterminismLog & operator << (int inValue)
+
78 {
+
79 mLog << inValue;
+
80 return *this;
+
81 }
+
82
+
83 DeterminismLog & operator << (uint32 inValue)
+
84 {
+
85 mLog << std::hex << std::setw(8) << inValue;
+
86 return *this;
+
87 }
+
88
+
89 DeterminismLog & operator << (uint64 inValue)
+
90 {
+
91 mLog << std::hex << std::setw(16) << inValue;
+
92 return *this;
+
93 }
+
94
+
95 DeterminismLog & operator << (Vec3Arg inValue)
+
96 {
+
97 mLog << std::hex << std::setw(8) << Convert(inValue.GetX()) << " " << std::setw(8) << Convert(inValue.GetY()) << " " << std::setw(8) << Convert(inValue.GetZ());
+
98 return *this;
+
99 }
+
100
+
101 DeterminismLog & operator << (DVec3Arg inValue)
+
102 {
+
103 mLog << std::hex << std::setw(16) << Convert(inValue.GetX()) << " " << std::setw(16) << Convert(inValue.GetY()) << " " << std::setw(16) << Convert(inValue.GetZ());
+
104 return *this;
+
105 }
+
106
+
107 DeterminismLog & operator << (Vec4Arg inValue)
+
108 {
+
109 mLog << std::hex << std::setw(8) << Convert(inValue.GetX()) << " " << std::setw(8) << Convert(inValue.GetY()) << " " << std::setw(8) << Convert(inValue.GetZ()) << " " << std::setw(8) << Convert(inValue.GetW());
+
110 return *this;
+
111 }
+
112
+
113 DeterminismLog & operator << (const Float3 &inValue)
+
114 {
+
115 mLog << std::hex << std::setw(8) << Convert(inValue.x) << " " << std::setw(8) << Convert(inValue.y) << " " << std::setw(8) << Convert(inValue.z);
+
116 return *this;
+
117 }
+
118
+
119 DeterminismLog & operator << (Mat44Arg inValue)
+
120 {
+
121 *this << inValue.GetColumn4(0) << " " << inValue.GetColumn4(1) << " " << inValue.GetColumn4(2) << " " << inValue.GetColumn4(3);
+
122 return *this;
+
123 }
+
124
+
125 DeterminismLog & operator << (DMat44Arg inValue)
+
126 {
+
127 *this << inValue.GetColumn4(0) << " " << inValue.GetColumn4(1) << " " << inValue.GetColumn4(2) << " " << inValue.GetTranslation();
+
128 return *this;
+
129 }
+
130
+
131 DeterminismLog & operator << (QuatArg inValue)
+
132 {
+
133 *this << inValue.GetXYZW();
+
134 return *this;
+
135 }
+
136
+
137 // Singleton instance
+
138 static DeterminismLog sLog;
+
139
+
140private:
+
141 std::ofstream mLog;
+
142};
+
143
+
145#define JPH_DET_LOG(...) DeterminismLog::sLog << __VA_ARGS__ << '\n'
+
146
+ +
148
+
149#else
+
150
+
151JPH_SUPPRESS_WARNING_PUSH
+ +
153
+
155#define JPH_DET_LOG(...)
+
156
+
157JPH_SUPPRESS_WARNING_POP
+
158
+
159#endif // JPH_ENABLE_DETERMINISM_LOG
+ +
#define JPH_SUPPRESS_WARNINGS
Definition Core.h:291
+
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
uint32 GetIndexAndSequenceNumber() const
Returns the index and sequence number combined in an uint32.
Definition BodyID.h:58
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
JPH_INLINE Vec4 GetColumn4(uint inCol) const
Definition DMat44.h:115
+
JPH_INLINE DVec3 GetTranslation() const
Definition DMat44.h:111
+
Definition DVec3.h:14
+
JPH_INLINE double GetZ() const
Definition DVec3.h:149
+
JPH_INLINE double GetY() const
Definition DVec3.h:148
+
JPH_INLINE double GetX() const
Get individual components.
Definition DVec3.h:147
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
float y
Definition Float3.h:39
+
float z
Definition Float3.h:40
+
float x
Definition Float3.h:38
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Vec4 GetColumn4(uint inCol) const
Definition Mat44.h:160
+
Definition Quat.h:33
+
JPH_INLINE Vec4 GetXYZW() const
Get the quaternion as a Vec4.
Definition Quat.h:84
+
A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...
Definition SubShapeID.h:23
+
Type GetValue() const
Get the value of the path to the sub shape ID.
Definition SubShapeID.h:52
+
Definition Vec3.h:17
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
Definition Vec4.h:14
+
JPH_INLINE float GetW() const
Definition Vec4.h:116
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec4.h:113
+
JPH_INLINE float GetZ() const
Definition Vec4.h:115
+
JPH_INLINE float GetY() const
Definition Vec4.h:114
+
+
+ + + + diff --git a/_distance_constraint_8cpp.html b/_distance_constraint_8cpp.html new file mode 100644 index 000000000..f79c0d7f6 --- /dev/null +++ b/_distance_constraint_8cpp.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/DistanceConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DistanceConstraint.cpp File Reference
+
+
+ + + + +

+Functions

 JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (DistanceConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (DistanceConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_distance_constraint_8cpp.js b/_distance_constraint_8cpp.js new file mode 100644 index 000000000..85ec975dc --- /dev/null +++ b/_distance_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _distance_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_distance_constraint_8cpp.html#ac6925a5681a34ff551aeb3276e4f06db", null ] +]; \ No newline at end of file diff --git a/_distance_constraint_8h.html b/_distance_constraint_8h.html new file mode 100644 index 000000000..bd79e6d52 --- /dev/null +++ b/_distance_constraint_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/DistanceConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DistanceConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  DistanceConstraintSettings
 Distance constraint settings, used to create a distance constraint. More...
 
class  DistanceConstraint
 This constraint is a stiff spring that holds 2 points at a fixed distance from each other. More...
 
+
+
+ + + + diff --git a/_distance_constraint_8h.js b/_distance_constraint_8h.js new file mode 100644 index 000000000..7bd5b2af5 --- /dev/null +++ b/_distance_constraint_8h.js @@ -0,0 +1,5 @@ +var _distance_constraint_8h = +[ + [ "DistanceConstraintSettings", "class_distance_constraint_settings.html", "class_distance_constraint_settings" ], + [ "DistanceConstraint", "class_distance_constraint.html", "class_distance_constraint" ] +]; \ No newline at end of file diff --git a/_distance_constraint_8h_source.html b/_distance_constraint_8h_source.html new file mode 100644 index 000000000..7b89f3f08 --- /dev/null +++ b/_distance_constraint_8h_source.html @@ -0,0 +1,272 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/DistanceConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DistanceConstraint.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
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+ +
17
+
18 // See: ConstraintSettings::SaveBinaryState
+
19 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
20
+
22 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
+
23
+ +
26
+
30 RVec3 mPoint1 = RVec3::sZero();
+
31
+
33 RVec3 mPoint2 = RVec3::sZero();
+
34
+
36 float mMinDistance = -1.0f;
+
37 float mMaxDistance = -1.0f;
+
38
+ +
41
+
42protected:
+
43 // See: ConstraintSettings::RestoreBinaryState
+
44 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
45};
+
+
46
+
+ +
49{
+
50public:
+ +
52
+
54 DistanceConstraint(Body &inBody1, Body &inBody2, const DistanceConstraintSettings &inSettings);
+
55
+
56 // Generic interface of a constraint
+
57 virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::Distance; }
+
58 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override;
+
59 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
60 virtual void ResetWarmStart() override;
+
61 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
62 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
63 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
64#ifdef JPH_DEBUG_RENDERER
+
65 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
66#endif // JPH_DEBUG_RENDERER
+
67 virtual void SaveState(StateRecorder &inStream) const override;
+
68 virtual void RestoreState(StateRecorder &inStream) override;
+
69 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
70
+
71 // See: TwoBodyConstraint
+
72 virtual Mat44 GetConstraintToBody1Matrix() const override { return Mat44::sTranslation(mLocalSpacePosition1); }
+
73 virtual Mat44 GetConstraintToBody2Matrix() const override { return Mat44::sTranslation(mLocalSpacePosition2); } // Note: Incorrect rotation as we don't track the original rotation difference, should not matter though as the constraint is not limiting rotation.
+
74
+
76 void SetDistance(float inMinDistance, float inMaxDistance) { JPH_ASSERT(inMinDistance <= inMaxDistance); mMinDistance = inMinDistance; mMaxDistance = inMaxDistance; }
+
77 float GetMinDistance() const { return mMinDistance; }
+
78 float GetMaxDistance() const { return mMaxDistance; }
+
79
+
81 const SpringSettings & GetLimitsSpringSettings() const { return mLimitsSpringSettings; }
+
82 SpringSettings & GetLimitsSpringSettings() { return mLimitsSpringSettings; }
+
83 void SetLimitsSpringSettings(const SpringSettings &inLimitsSpringSettings) { mLimitsSpringSettings = inLimitsSpringSettings; }
+
84
+
86 inline float GetTotalLambdaPosition() const { return mAxisConstraint.GetTotalLambda(); }
+
87
+
88private:
+
89 // Internal helper function to calculate the values below
+
90 void CalculateConstraintProperties(float inDeltaTime);
+
91
+
92 // CONFIGURATION PROPERTIES FOLLOW
+
93
+
94 // Local space constraint positions
+
95 Vec3 mLocalSpacePosition1;
+
96 Vec3 mLocalSpacePosition2;
+
97
+
98 // Min/max distance that must be kept between the world space points
+
99 float mMinDistance;
+
100 float mMaxDistance;
+
101
+
102 // Soft constraint limits
+
103 SpringSettings mLimitsSpringSettings;
+
104
+
105 // RUN TIME PROPERTIES FOLLOW
+
106
+
107 // World space positions and normal
+
108 RVec3 mWorldSpacePosition1;
+
109 RVec3 mWorldSpacePosition2;
+
110 Vec3 mWorldSpaceNormal;
+
111
+
112 // Depending on if the distance < min or distance > max we can apply forces to prevent further violations
+
113 float mMinLambda;
+
114 float mMaxLambda;
+
115
+
116 // The constraint part
+
117 AxisConstraintPart mAxisConstraint;
+
118};
+
+
119
+ + +
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
+
@ WorldSpace
All constraint properties are specified in world space.
+
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#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
+ +
Definition AxisConstraintPart.h:43
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
This constraint is a stiff spring that holds 2 points at a fixed distance from each other.
Definition DistanceConstraint.h:49
+
void SetLimitsSpringSettings(const SpringSettings &inLimitsSpringSettings)
Definition DistanceConstraint.h:83
+
const SpringSettings & GetLimitsSpringSettings() const
Update the limits spring settings.
Definition DistanceConstraint.h:81
+
virtual Mat44 GetConstraintToBody2Matrix() const override
Calculates the transform that transforms from constraint space to body 2 space. The first column of t...
Definition DistanceConstraint.h:73
+
float GetMinDistance() const
Definition DistanceConstraint.h:77
+
float GetMaxDistance() const
Definition DistanceConstraint.h:78
+
float GetTotalLambdaPosition() const
Definition DistanceConstraint.h:86
+
virtual EConstraintSubType GetSubType() const override
Get the sub type of a constraint.
Definition DistanceConstraint.h:57
+
void SetDistance(float inMinDistance, float inMaxDistance)
Update the minimum and maximum distance for the constraint.
Definition DistanceConstraint.h:76
+
SpringSettings & GetLimitsSpringSettings()
Definition DistanceConstraint.h:82
+
virtual Mat44 GetConstraintToBody1Matrix() const override
Calculates the transform that transforms from constraint space to body 1 space. The first column of t...
Definition DistanceConstraint.h:72
+
Distance constraint settings, used to create a distance constraint.
Definition DistanceConstraint.h:14
+
SpringSettings mLimitsSpringSettings
When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will...
Definition DistanceConstraint.h:40
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sTranslation(Vec3Arg inV)
Get matrix that translates.
Definition Mat44.inl:144
+
Definition Reference.h:101
+
Settings for a linear or angular spring.
Definition SpringSettings.h:23
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_double3_8h.html b/_double3_8h.html new file mode 100644 index 000000000..0490c4c5a --- /dev/null +++ b/_double3_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Math/Double3.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Double3.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  Double3
 Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations. More...
 
+
+
+ + + + diff --git a/_double3_8h.js b/_double3_8h.js new file mode 100644 index 000000000..79362a2a9 --- /dev/null +++ b/_double3_8h.js @@ -0,0 +1,4 @@ +var _double3_8h = +[ + [ "Double3", "class_double3.html", "class_double3" ] +]; \ No newline at end of file diff --git a/_double3_8h_source.html b/_double3_8h_source.html new file mode 100644 index 000000000..c733e3e79 --- /dev/null +++ b/_double3_8h_source.html @@ -0,0 +1,187 @@ + + + + + + + +Jolt Physics: Jolt/Math/Double3.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Double3.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
+
+
12class [[nodiscard]] Double3
+
13{
+
14public:
+ +
16
+
17 Double3() = default;
+
18 Double3(const Double3 &inRHS) = default;
+
19 Double3 & operator = (const Double3 &inRHS) = default;
+
20 Double3(double inX, double inY, double inZ) : x(inX), y(inY), z(inZ) { }
+
21
+
+
22 double operator [] (int inCoordinate) const
+
23 {
+
24 JPH_ASSERT(inCoordinate < 3);
+
25 return *(&x + inCoordinate);
+
26 }
+
+
27
+
+
28 bool operator == (const Double3 &inRHS) const
+
29 {
+
30 return x == inRHS.x && y == inRHS.y && z == inRHS.z;
+
31 }
+
+
32
+
+
33 bool operator != (const Double3 &inRHS) const
+
34 {
+
35 return x != inRHS.x || y != inRHS.y || z != inRHS.z;
+
36 }
+
+
37
+
38 double x;
+
39 double y;
+
40 double z;
+
41};
+
+
42
+
43static_assert(is_trivial<Double3>(), "Is supposed to be a trivial type!");
+
44
+ +
46
+
47// Create a std::hash for Double3
+
48JPH_MAKE_HASHABLE(JPH::Double3, t.x, t.y, t.z)
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_MAKE_HASHABLE(type,...)
Definition HashCombine.h:87
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition Double3.h:13
+
double z
Definition Double3.h:40
+
double y
Definition Double3.h:39
+
JPH_OVERRIDE_NEW_DELETE Double3()=default
Intentionally not initialized for performance reasons.
+
Double3(const Double3 &inRHS)=default
+
double x
Definition Double3.h:38
+
Double3(double inX, double inY, double inZ)
Definition Double3.h:20
+
+
+ + + + diff --git a/_dual_axis_constraint_part_8h.html b/_dual_axis_constraint_part_8h.html new file mode 100644 index 000000000..673f0b6cc --- /dev/null +++ b/_dual_axis_constraint_part_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/DualAxisConstraintPart.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DualAxisConstraintPart.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  DualAxisConstraintPart
 
+
+
+ + + + diff --git a/_dual_axis_constraint_part_8h.js b/_dual_axis_constraint_part_8h.js new file mode 100644 index 000000000..d923b39f2 --- /dev/null +++ b/_dual_axis_constraint_part_8h.js @@ -0,0 +1,4 @@ +var _dual_axis_constraint_part_8h = +[ + [ "DualAxisConstraintPart", "class_dual_axis_constraint_part.html", "class_dual_axis_constraint_part" ] +]; \ No newline at end of file diff --git a/_dual_axis_constraint_part_8h_source.html b/_dual_axis_constraint_part_8h_source.html new file mode 100644 index 000000000..9b1f3013b --- /dev/null +++ b/_dual_axis_constraint_part_8h_source.html @@ -0,0 +1,424 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/DualAxisConstraintPart.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DualAxisConstraintPart.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
+ + +
9#include <Jolt/Math/Vector.h>
+
10#include <Jolt/Math/Matrix.h>
+
11
+ +
13
+
+ +
48{
+
49public:
+
50 using Vec2 = Vector<2>;
+ +
52
+
53private:
+
55 JPH_INLINE bool ApplyVelocityStep(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, const Vec2 &inLambda) const
+
56 {
+
57 // Apply impulse if delta is not zero
+
58 if (!inLambda.IsZero())
+
59 {
+
60 // Calculate velocity change due to constraint
+
61 //
+
62 // Impulse:
+
63 // P = J^T lambda
+
64 //
+
65 // Euler velocity integration:
+
66 // v' = v + M^-1 P
+
67 Vec3 impulse = inN1 * inLambda[0] + inN2 * inLambda[1];
+
68 if (ioBody1.IsDynamic())
+
69 {
+ +
71 mp1->SubLinearVelocityStep(mp1->GetInverseMass() * impulse);
+
72 mp1->SubAngularVelocityStep(mInvI1_R1PlusUxN1 * inLambda[0] + mInvI1_R1PlusUxN2 * inLambda[1]);
+
73 }
+
74 if (ioBody2.IsDynamic())
+
75 {
+ +
77 mp2->AddLinearVelocityStep(mp2->GetInverseMass() * impulse);
+
78 mp2->AddAngularVelocityStep(mInvI2_R2xN1 * inLambda[0] + mInvI2_R2xN2 * inLambda[1]);
+
79 }
+
80 return true;
+
81 }
+
82
+
83 return false;
+
84 }
+
85
+
87 inline void CalculateLagrangeMultiplier(const Body &inBody1, const Body &inBody2, Vec3Arg inN1, Vec3Arg inN2, Vec2 &outLambda) const
+
88 {
+
89 // Calculate lagrange multiplier:
+
90 //
+
91 // lambda = -K^-1 (J v + b)
+
92 Vec3 delta_lin = inBody1.GetLinearVelocity() - inBody2.GetLinearVelocity();
+
93 Vec2 jv;
+
94 jv[0] = inN1.Dot(delta_lin) + mR1PlusUxN1.Dot(inBody1.GetAngularVelocity()) - mR2xN1.Dot(inBody2.GetAngularVelocity());
+
95 jv[1] = inN2.Dot(delta_lin) + mR1PlusUxN2.Dot(inBody1.GetAngularVelocity()) - mR2xN2.Dot(inBody2.GetAngularVelocity());
+
96 outLambda = mEffectiveMass * jv;
+
97 }
+
98
+
99public:
+
+
102 inline void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inR1PlusU, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inR2, Vec3Arg inN1, Vec3Arg inN2)
+
103 {
+
104 JPH_ASSERT(inN1.IsNormalized(1.0e-5f));
+
105 JPH_ASSERT(inN2.IsNormalized(1.0e-5f));
+
106
+
107 // Calculate properties used during constraint solving
+
108 mR1PlusUxN1 = inR1PlusU.Cross(inN1);
+
109 mR1PlusUxN2 = inR1PlusU.Cross(inN2);
+
110 mR2xN1 = inR2.Cross(inN1);
+
111 mR2xN2 = inR2.Cross(inN2);
+
112
+
113 // Calculate effective mass: K^-1 = (J M^-1 J^T)^-1, eq 59
+
114 Mat22 inv_effective_mass;
+
115 if (inBody1.IsDynamic())
+
116 {
+
117 const MotionProperties *mp1 = inBody1.GetMotionProperties();
+
118 Mat44 inv_i1 = mp1->GetInverseInertiaForRotation(inRotation1);
+
119 mInvI1_R1PlusUxN1 = inv_i1.Multiply3x3(mR1PlusUxN1);
+
120 mInvI1_R1PlusUxN2 = inv_i1.Multiply3x3(mR1PlusUxN2);
+
121
+
122 inv_effective_mass(0, 0) = mp1->GetInverseMass() + mR1PlusUxN1.Dot(mInvI1_R1PlusUxN1);
+
123 inv_effective_mass(0, 1) = mR1PlusUxN1.Dot(mInvI1_R1PlusUxN2);
+
124 inv_effective_mass(1, 0) = mR1PlusUxN2.Dot(mInvI1_R1PlusUxN1);
+
125 inv_effective_mass(1, 1) = mp1->GetInverseMass() + mR1PlusUxN2.Dot(mInvI1_R1PlusUxN2);
+
126 }
+
127 else
+
128 {
+
129 JPH_IF_DEBUG(mInvI1_R1PlusUxN1 = Vec3::sNaN();)
+
130 JPH_IF_DEBUG(mInvI1_R1PlusUxN2 = Vec3::sNaN();)
+
131
+
132 inv_effective_mass = Mat22::sZero();
+
133 }
+
134
+
135 if (inBody2.IsDynamic())
+
136 {
+
137 const MotionProperties *mp2 = inBody2.GetMotionProperties();
+
138 Mat44 inv_i2 = mp2->GetInverseInertiaForRotation(inRotation2);
+
139 mInvI2_R2xN1 = inv_i2.Multiply3x3(mR2xN1);
+
140 mInvI2_R2xN2 = inv_i2.Multiply3x3(mR2xN2);
+
141
+
142 inv_effective_mass(0, 0) += mp2->GetInverseMass() + mR2xN1.Dot(mInvI2_R2xN1);
+
143 inv_effective_mass(0, 1) += mR2xN1.Dot(mInvI2_R2xN2);
+
144 inv_effective_mass(1, 0) += mR2xN2.Dot(mInvI2_R2xN1);
+
145 inv_effective_mass(1, 1) += mp2->GetInverseMass() + mR2xN2.Dot(mInvI2_R2xN2);
+
146 }
+
147 else
+
148 {
+
149 JPH_IF_DEBUG(mInvI2_R2xN1 = Vec3::sNaN();)
+
150 JPH_IF_DEBUG(mInvI2_R2xN2 = Vec3::sNaN();)
+
151 }
+
152
+
153 if (!mEffectiveMass.SetInversed(inv_effective_mass))
+
154 Deactivate();
+
155 }
+
+
156
+
+
158 inline void Deactivate()
+
159 {
+
160 mEffectiveMass.SetZero();
+
161 mTotalLambda.SetZero();
+
162 }
+
+
163
+
+
165 inline bool IsActive() const
+
166 {
+
167 return !mEffectiveMass.IsZero();
+
168 }
+
+
169
+
+
172 inline void WarmStart(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inWarmStartImpulseRatio)
+
173 {
+
174 mTotalLambda *= inWarmStartImpulseRatio;
+
175 ApplyVelocityStep(ioBody1, ioBody2, inN1, inN2, mTotalLambda);
+
176 }
+
+
177
+
+
180 inline bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2)
+
181 {
+
182 Vec2 lambda;
+
183 CalculateLagrangeMultiplier(ioBody1, ioBody2, inN1, inN2, lambda);
+
184
+
185 // Store accumulated lambda
+
186 mTotalLambda += lambda;
+
187
+
188 return ApplyVelocityStep(ioBody1, ioBody2, inN1, inN2, lambda);
+
189 }
+
+
190
+
+
193 inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inU, Vec3Arg inN1, Vec3Arg inN2, float inBaumgarte) const
+
194 {
+
195 Vec2 c;
+
196 c[0] = inU.Dot(inN1);
+
197 c[1] = inU.Dot(inN2);
+
198 if (!c.IsZero())
+
199 {
+
200 // Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
+
201 //
+
202 // lambda = -K^-1 * beta / dt * C
+
203 //
+
204 // We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
+
205 Vec2 lambda = -inBaumgarte * (mEffectiveMass * c);
+
206
+
207 // Directly integrate velocity change for one time step
+
208 //
+
209 // Euler velocity integration:
+
210 // dv = M^-1 P
+
211 //
+
212 // Impulse:
+
213 // P = J^T lambda
+
214 //
+
215 // Euler position integration:
+
216 // x' = x + dv * dt
+
217 //
+
218 // Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
+
219 // Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
+
220 // stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
+
221 // integrate + a position integrate and then discard the velocity change.
+
222 Vec3 impulse = inN1 * lambda[0] + inN2 * lambda[1];
+
223 if (ioBody1.IsDynamic())
+
224 {
+
225 ioBody1.SubPositionStep(ioBody1.GetMotionProperties()->GetInverseMass() * impulse);
+
226 ioBody1.SubRotationStep(mInvI1_R1PlusUxN1 * lambda[0] + mInvI1_R1PlusUxN2 * lambda[1]);
+
227 }
+
228 if (ioBody2.IsDynamic())
+
229 {
+
230 ioBody2.AddPositionStep(ioBody2.GetMotionProperties()->GetInverseMass() * impulse);
+
231 ioBody2.AddRotationStep(mInvI2_R2xN1 * lambda[0] + mInvI2_R2xN2 * lambda[1]);
+
232 }
+
233 return true;
+
234 }
+
235
+
236 return false;
+
237 }
+
+
238
+
+
240 inline void SetTotalLambda(const Vec2 &inLambda)
+
241 {
+
242 mTotalLambda = inLambda;
+
243 }
+
+
244
+
+
246 inline const Vec2 & GetTotalLambda() const
+
247 {
+
248 return mTotalLambda;
+
249 }
+
+
250
+
+
252 void SaveState(StateRecorder &inStream) const
+
253 {
+
254 inStream.Write(mTotalLambda);
+
255 }
+
+
256
+
+ +
259 {
+
260 inStream.Read(mTotalLambda);
+
261 }
+
+
262
+
263private:
+
264 Vec3 mR1PlusUxN1;
+
265 Vec3 mR1PlusUxN2;
+
266 Vec3 mR2xN1;
+
267 Vec3 mR2xN2;
+
268 Vec3 mInvI1_R1PlusUxN1;
+
269 Vec3 mInvI1_R1PlusUxN2;
+
270 Vec3 mInvI2_R2xN1;
+
271 Vec3 mInvI2_R2xN2;
+
272 Mat22 mEffectiveMass;
+
273 Vec2 mTotalLambda { Vec2::sZero() };
+
274};
+
+
275
+ + +
#define JPH_IF_DEBUG(...)
Definition Core.h:509
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ + + +
Definition Body.h:35
+
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:249
+
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:61
+
void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Update rotation using an Euler step (using during position integrate & constraint solving)
Definition Body.inl:81
+
void SubPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)
Definition Body.h:284
+
Vec3 GetLinearVelocity() const
Get world space linear velocity of the center of mass (unit: m/s)
Definition Body.h:144
+
void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Definition Body.inl:100
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass (unit: rad/s)
Definition Body.h:153
+
void AddPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)
Update position using an Euler step (used during position integrate & constraint solving)
Definition Body.h:283
+
Definition DualAxisConstraintPart.h:48
+
bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2)
Definition DualAxisConstraintPart.h:180
+
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition DualAxisConstraintPart.h:258
+
Matrix< 2, 2 > Mat22
Definition DualAxisConstraintPart.h:51
+
void WarmStart(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inWarmStartImpulseRatio)
Definition DualAxisConstraintPart.h:172
+
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inU, Vec3Arg inN1, Vec3Arg inN2, float inBaumgarte) const
Definition DualAxisConstraintPart.h:193
+
Vector< 2 > Vec2
Definition DualAxisConstraintPart.h:50
+
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition DualAxisConstraintPart.h:252
+
const Vec2 & GetTotalLambda() const
Return lagrange multiplier.
Definition DualAxisConstraintPart.h:246
+
void SetTotalLambda(const Vec2 &inLambda)
Override total lagrange multiplier, can be used to set the initial value for warm starting.
Definition DualAxisConstraintPart.h:240
+
bool IsActive() const
Check if constraint is active.
Definition DualAxisConstraintPart.h:165
+
void Deactivate()
Deactivate this constraint.
Definition DualAxisConstraintPart.h:158
+
void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inR1PlusU, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inR2, Vec3Arg inN1, Vec3Arg inN2)
Definition DualAxisConstraintPart.h:102
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition Mat44.inl:316
+ +
static Matrix sZero()
Definition Matrix.h:32
+
bool SetInversed(const Matrix &inM)
Inverse matrix.
Definition Matrix.h:200
+
void SetZero()
Zero matrix.
Definition Matrix.h:26
+
bool IsZero() const
Check if this matrix consists of all zeros.
Definition Matrix.h:35
+
The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...
Definition MotionProperties.h:29
+
void AddLinearVelocityStep(Vec3Arg inLinearVelocityChange)
Definition MotionProperties.h:191
+
void SubLinearVelocityStep(Vec3Arg inLinearVelocityChange)
Definition MotionProperties.h:192
+
float GetInverseMass() const
Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies ha...
Definition MotionProperties.h:95
+
void SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:194
+
Mat44 GetInverseInertiaForRotation(Mat44Arg inRotation) const
Get inverse inertia matrix ( ) for a given object rotation (translation will be ignored)....
Definition MotionProperties.inl:59
+
void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:193
+
Definition StateRecorder.h:48
+
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:29
+
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:26
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const
Test if vector is normalized.
Definition Vec3.inl:745
+
static JPH_INLINE Vec3 sNaN()
Vector with all NaN's.
Definition Vec3.inl:129
+ +
void SetZero()
Vector with all zeros.
Definition Vector.h:22
+
bool IsZero() const
Test if vector consists of all zeros.
Definition Vector.h:69
+
static Vector sZero()
Definition Vector.h:28
+
+
+ + + + diff --git a/_dyn_matrix_8h.html b/_dyn_matrix_8h.html new file mode 100644 index 000000000..4e1a6e832 --- /dev/null +++ b/_dyn_matrix_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Math/DynMatrix.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DynMatrix.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  DynMatrix
 Dynamic resizable matrix class. More...
 
+
+
+ + + + diff --git a/_dyn_matrix_8h.js b/_dyn_matrix_8h.js new file mode 100644 index 000000000..14421362e --- /dev/null +++ b/_dyn_matrix_8h.js @@ -0,0 +1,4 @@ +var _dyn_matrix_8h = +[ + [ "DynMatrix", "class_dyn_matrix.html", "class_dyn_matrix" ] +]; \ No newline at end of file diff --git a/_dyn_matrix_8h_source.html b/_dyn_matrix_8h_source.html new file mode 100644 index 000000000..37587ab6e --- /dev/null +++ b/_dyn_matrix_8h_source.html @@ -0,0 +1,158 @@ + + + + + + + +Jolt Physics: Jolt/Math/DynMatrix.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DynMatrix.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2022 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+
+
10class [[nodiscard]] DynMatrix
+
11{
+
12public:
+
14 DynMatrix(const DynMatrix &) = default;
+
15 DynMatrix(uint inRows, uint inCols) : mRows(inRows), mCols(inCols) { mElements.resize(inRows * inCols); }
+
16
+
18 float operator () (uint inRow, uint inCol) const { JPH_ASSERT(inRow < mRows && inCol < mCols); return mElements[inRow * mCols + inCol]; }
+
19 float & operator () (uint inRow, uint inCol) { JPH_ASSERT(inRow < mRows && inCol < mCols); return mElements[inRow * mCols + inCol]; }
+
20
+
22 uint GetCols() const { return mCols; }
+
23 uint GetRows() const { return mRows; }
+
24
+
25private:
+
26 uint mRows;
+
27 uint mCols;
+
28 Array<float> mElements;
+
29};
+
+
30
+ +
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_ASSERT(...)
Definition IssueReporting.h:33
+
Definition Array.h:36
+
Dynamic resizable matrix class.
Definition DynMatrix.h:11
+
DynMatrix(const DynMatrix &)=default
Constructor.
+
uint GetCols() const
Get dimensions.
Definition DynMatrix.h:22
+
uint GetRows() const
Definition DynMatrix.h:23
+
DynMatrix(uint inRows, uint inCols)
Definition DynMatrix.h:15
+
+
+ + + + diff --git a/_e_activation_8h.html b/_e_activation_8h.html new file mode 100644 index 000000000..dd6842809 --- /dev/null +++ b/_e_activation_8h.html @@ -0,0 +1,158 @@ + + + + + + + +Jolt Physics: Jolt/Physics/EActivation.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EActivation.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Enumerations

enum class  EActivation { Activate +, DontActivate + }
 Enum used by AddBody to determine if the body needs to be initially active. More...
 
+

Enumeration Type Documentation

+ +

◆ EActivation

+ +
+
+ + + + + +
+ + + + +
enum class EActivation
+
+strong
+
+ +

Enum used by AddBody to determine if the body needs to be initially active.

+ + + +
Enumerator
Activate 

Activate the body, making it part of the simulation.

+
DontActivate 

Leave activation state as it is (will not deactivate an active body)

+
+ +
+
+
+
+ + + + diff --git a/_e_activation_8h.js b/_e_activation_8h.js new file mode 100644 index 000000000..e54df66a6 --- /dev/null +++ b/_e_activation_8h.js @@ -0,0 +1,7 @@ +var _e_activation_8h = +[ + [ "EActivation", "_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6", [ + [ "Activate", "_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6aa13367a8e2a3f3bf4f3409079e3fdf87", null ], + [ "DontActivate", "_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6ac332d31032ba5ee48cf9a0dd42916743", null ] + ] ] +]; \ No newline at end of file diff --git a/_e_activation_8h_source.html b/_e_activation_8h_source.html new file mode 100644 index 000000000..49c3fe4e1 --- /dev/null +++ b/_e_activation_8h_source.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Jolt/Physics/EActivation.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EActivation.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
+
+
10enum class EActivation
+
11{
+
12 Activate,
+ +
14};
+
+
15
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
EActivation
Enum used by AddBody to determine if the body needs to be initially active.
Definition EActivation.h:11
+
@ Activate
Activate the body, making it part of the simulation.
+
@ DontActivate
Leave activation state as it is (will not deactivate an active body)
+
+
+ + + + diff --git a/_e_p_a_convex_hull_builder_8h.html b/_e_p_a_convex_hull_builder_8h.html new file mode 100644 index 000000000..54f76fcdd --- /dev/null +++ b/_e_p_a_convex_hull_builder_8h.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/EPAConvexHullBuilder.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EPAConvexHullBuilder.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Classes

class  EPAConvexHullBuilder
 A convex hull builder specifically made for the EPA penetration depth calculation. It trades accuracy for speed and will simply abort of the hull forms defects due to numerical precision problems. More...
 
class  EPAConvexHullBuilder::Edge
 Class that holds the information of an edge. More...
 
class  EPAConvexHullBuilder::Triangle
 Class that holds the information of one triangle. More...
 
class  EPAConvexHullBuilder::TriangleFactory
 Factory that creates triangles in a fixed size buffer. More...
 
class  EPAConvexHullBuilder::Points
 Specialized points list that allows direct access to the size. More...
 
class  EPAConvexHullBuilder::TriangleQueue
 Specialized triangles list that keeps them sorted on closest distance to origin. More...
 
+
+
+ + + + diff --git a/_e_p_a_convex_hull_builder_8h.js b/_e_p_a_convex_hull_builder_8h.js new file mode 100644 index 000000000..83da60fc2 --- /dev/null +++ b/_e_p_a_convex_hull_builder_8h.js @@ -0,0 +1,9 @@ +var _e_p_a_convex_hull_builder_8h = +[ + [ "EPAConvexHullBuilder", "class_e_p_a_convex_hull_builder.html", "class_e_p_a_convex_hull_builder" ], + [ "EPAConvexHullBuilder::Edge", "class_e_p_a_convex_hull_builder_1_1_edge.html", "class_e_p_a_convex_hull_builder_1_1_edge" ], + [ "EPAConvexHullBuilder::Triangle", "class_e_p_a_convex_hull_builder_1_1_triangle.html", "class_e_p_a_convex_hull_builder_1_1_triangle" ], + [ "EPAConvexHullBuilder::TriangleFactory", "class_e_p_a_convex_hull_builder_1_1_triangle_factory.html", "class_e_p_a_convex_hull_builder_1_1_triangle_factory" ], + [ "EPAConvexHullBuilder::Points", "class_e_p_a_convex_hull_builder_1_1_points.html", "class_e_p_a_convex_hull_builder_1_1_points" ], + [ "EPAConvexHullBuilder::TriangleQueue", "class_e_p_a_convex_hull_builder_1_1_triangle_queue.html", "class_e_p_a_convex_hull_builder_1_1_triangle_queue" ] +]; \ No newline at end of file diff --git a/_e_p_a_convex_hull_builder_8h_source.html b/_e_p_a_convex_hull_builder_8h_source.html new file mode 100644 index 000000000..95add5106 --- /dev/null +++ b/_e_p_a_convex_hull_builder_8h_source.html @@ -0,0 +1,1057 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/EPAConvexHullBuilder.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EPAConvexHullBuilder.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
+
7// Define to validate the integrity of the hull structure
+
8//#define JPH_EPA_CONVEX_BUILDER_VALIDATE
+
9
+
10// Define to draw the building of the hull for debugging purposes
+
11//#define JPH_EPA_CONVEX_BUILDER_DRAW
+
12
+ +
14
+
15#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+ + +
18#endif
+
19
+ +
21
+
+ +
24{
+
25private:
+
26#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
28 static constexpr Real cDrawScale = 10;
+
29#endif
+
30
+
31public:
+
32 // Due to the Euler characteristic (https://en.wikipedia.org/wiki/Euler_characteristic) we know that Vertices - Edges + Faces = 2
+
33 // In our case we only have triangles and they are always fully connected, so each edge is shared exactly between 2 faces: Edges = Faces * 3 / 2
+
34 // Substituting: Vertices = Faces / 2 + 2 which is approximately Faces / 2.
+
35 static constexpr int cMaxTriangles = 256;
+
36 static constexpr int cMaxPoints = cMaxTriangles / 2;
+
37
+
38 // Constants
+
39 static constexpr int cMaxEdgeLength = 128;
+
40 static constexpr float cMinTriangleArea = 1.0e-10f;
+
41 static constexpr float cBarycentricEpsilon = 1.0e-3f;
+
42
+
43 // Forward declare
+
44 class Triangle;
+
45
+
+
47 class Edge
+
48 {
+
49 public:
+ + +
53
+ +
55 };
+
+
56
+ + +
59
+
+
61 class Triangle : public NonCopyable
+
62 {
+
63 public:
+
65 inline Triangle(int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions);
+
66
+
+
68 inline bool IsFacing(Vec3Arg inPosition) const
+
69 {
+ +
71 return mNormal.Dot(inPosition - mCentroid) > 0.0f;
+
72 }
+
+
73
+
+
75 inline bool IsFacingOrigin() const
+
76 {
+ +
78 return mNormal.Dot(mCentroid) < 0.0f;
+
79 }
+
+
80
+
+
82 inline const Edge & GetNextEdge(int inIndex) const
+
83 {
+
84 return mEdge[(inIndex + 1) % 3];
+
85 }
+
+
86
+ + + +
90 float mClosestLenSq = FLT_MAX;
+
91 float mLambda[2];
+ +
93 bool mClosestPointInterior = false;
+
94 bool mRemoved = false;
+
95 bool mInQueue = false;
+
96#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
97 int mIteration;
+
98#endif
+
99 };
+
+
100
+
+ +
103 {
+
104 private:
+
106 union alignas(Triangle) Block
+
107 {
+
108 uint8 mTriangle[sizeof(Triangle)];
+
109 Block * mNextFree;
+
110 };
+
111
+
113 Block mTriangles[cMaxTriangles];
+
114 Block * mNextFree = nullptr;
+
115 int mHighWatermark = 0;
+
116
+
117 public:
+
+
119 void Clear()
+
120 {
+
121 mNextFree = nullptr;
+
122 mHighWatermark = 0;
+
123 }
+
+
124
+
+
126 Triangle * CreateTriangle(int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions)
+
127 {
+
128 Triangle *t;
+
129 if (mNextFree != nullptr)
+
130 {
+
131 // Entry available from the free list
+
132 t = reinterpret_cast<Triangle *>(&mNextFree->mTriangle);
+
133 mNextFree = mNextFree->mNextFree;
+
134 }
+
135 else
+
136 {
+
137 // Allocate from never used before triangle store
+
138 if (mHighWatermark >= cMaxTriangles)
+
139 return nullptr; // Buffer full
+
140 t = reinterpret_cast<Triangle *>(&mTriangles[mHighWatermark].mTriangle);
+
141 ++mHighWatermark;
+
142 }
+
143
+
144 // Call constructor
+
145 new (t) Triangle(inIdx0, inIdx1, inIdx2, inPositions);
+
146
+
147 return t;
+
148 }
+
+
149
+
+ +
152 {
+
153 // Destruct triangle
+
154 inT->~Triangle();
+
155#ifdef JPH_DEBUG
+
156 memset(inT, 0xcd, sizeof(Triangle));
+
157#endif
+
158
+
159 // Add triangle to the free list
+
160 Block *tu = reinterpret_cast<Block *>(inT);
+
161 tu->mNextFree = mNextFree;
+
162 mNextFree = tu;
+
163 }
+
+
164 };
+
+
165
+
166 // Typedefs
+ + +
169
+
+
171 class Points : public PointsBase
+
172 {
+
173 public:
+
+ +
175 {
+
176 return mSize;
+
177 }
+
+
178 };
+
+
179
+
+ +
182 {
+
183 public:
+
+
185 static bool sTriangleSorter(const Triangle *inT1, const Triangle *inT2)
+
186 {
+
187 return inT1->mClosestLenSq > inT2->mClosestLenSq;
+
188 }
+
+
189
+
+ +
192 {
+
193 // Add to base
+
194 Triangles::push_back(inT);
+
195
+
196 // Mark in queue
+
197 inT->mInQueue = true;
+
198
+
199 // Resort heap
+
200 std::push_heap(begin(), end(), sTriangleSorter);
+
201 }
+
+
202
+
+ +
205 {
+
206 return front();
+
207 }
+
+
208
+
+ +
211 {
+
212 // Move closest to end
+
213 std::pop_heap(begin(), end(), sTriangleSorter);
+
214
+
215 // Remove last triangle
+
216 Triangle *t = back();
+
217 pop_back();
+
218 return t;
+
219 }
+
+
220 };
+
+
221
+
+
223 explicit EPAConvexHullBuilder(const Points &inPositions) :
+
224 mPositions(inPositions)
+
225 {
+
226#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
227 mIteration = 0;
+
228 mOffset = RVec3::sZero();
+
229#endif
+
230 }
+
+
231
+
+
233 void Initialize(int inIdx1, int inIdx2, int inIdx3)
+
234 {
+
235 // Release triangles
+
236 mFactory.Clear();
+
237
+
238 // Create triangles (back to back)
+
239 Triangle *t1 = CreateTriangle(inIdx1, inIdx2, inIdx3);
+
240 Triangle *t2 = CreateTriangle(inIdx1, inIdx3, inIdx2);
+
241
+
242 // Link triangles edges
+
243 sLinkTriangle(t1, 0, t2, 2);
+
244 sLinkTriangle(t1, 1, t2, 1);
+
245 sLinkTriangle(t1, 2, t2, 0);
+
246
+
247 // Always add both triangles to the priority queue
+
248 mTriangleQueue.push_back(t1);
+
249 mTriangleQueue.push_back(t2);
+
250
+
251#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
252 // Draw current state
+
253 DrawState();
+
254
+
255 // Increment iteration counter
+
256 ++mIteration;
+
257#endif
+
258 }
+
+
259
+
+
261 bool HasNextTriangle() const
+
262 {
+
263 return !mTriangleQueue.empty();
+
264 }
+
+
265
+
+ +
268 {
+
269 return mTriangleQueue.PeekClosest();
+
270 }
+
+
271
+
+ +
274 {
+
275 return mTriangleQueue.PopClosest();
+
276 }
+
+
277
+
+
280 Triangle * FindFacingTriangle(Vec3Arg inPosition, float &outBestDistSq)
+
281 {
+
282 Triangle *best = nullptr;
+
283 float best_dist_sq = 0.0f;
+
284
+
285 for (Triangle *t : mTriangleQueue)
+
286 if (!t->mRemoved)
+
287 {
+
288 float dot = t->mNormal.Dot(inPosition - t->mCentroid);
+
289 if (dot > 0.0f)
+
290 {
+
291 float dist_sq = dot * dot / t->mNormal.LengthSq();
+
292 if (dist_sq > best_dist_sq)
+
293 {
+
294 best = t;
+
295 best_dist_sq = dist_sq;
+
296 }
+
297 }
+
298 }
+
299
+
300 outBestDistSq = best_dist_sq;
+
301 return best;
+
302 }
+
+
303
+
+
305 bool AddPoint(Triangle *inFacingTriangle, int inIdx, float inClosestDistSq, NewTriangles &outTriangles)
+
306 {
+
307 // Get position
+
308 Vec3 pos = mPositions[inIdx];
+
309
+
310#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
311 // Draw new support point
+
312 DrawMarker(pos, Color::sYellow, 1.0f);
+
313#endif
+
314
+
315#ifdef JPH_EPA_CONVEX_BUILDER_VALIDATE
+
316 // Check if structure is intact
+
317 ValidateTriangles();
+
318#endif
+
319
+
320 // Find edge of convex hull of triangles that are not facing the new vertex w
+
321 Edges edges;
+
322 if (!FindEdge(inFacingTriangle, pos, edges))
+
323 return false;
+
324
+
325 // Create new triangles
+
326 int num_edges = edges.size();
+
327 for (int i = 0; i < num_edges; ++i)
+
328 {
+
329 // Create new triangle
+
330 Triangle *nt = CreateTriangle(edges[i].mStartIdx, edges[(i + 1) % num_edges].mStartIdx, inIdx);
+
331 if (nt == nullptr)
+
332 return false;
+
333 outTriangles.push_back(nt);
+
334
+
335 // Check if we need to put this triangle in the priority queue
+
336 if ((nt->mClosestPointInterior && nt->mClosestLenSq < inClosestDistSq) // For the main algorithm
+
337 || nt->mClosestLenSq < 0.0f) // For when the origin is not inside the hull yet
+
338 mTriangleQueue.push_back(nt);
+
339 }
+
340
+
341 // Link edges
+
342 for (int i = 0; i < num_edges; ++i)
+
343 {
+
344 sLinkTriangle(outTriangles[i], 0, edges[i].mNeighbourTriangle, edges[i].mNeighbourEdge);
+
345 sLinkTriangle(outTriangles[i], 1, outTriangles[(i + 1) % num_edges], 2);
+
346 }
+
347
+
348#ifdef JPH_EPA_CONVEX_BUILDER_VALIDATE
+
349 // Check if structure is intact
+
350 ValidateTriangles();
+
351#endif
+
352
+
353#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
354 // Draw state of the hull
+
355 DrawState();
+
356
+
357 // Increment iteration counter
+
358 ++mIteration;
+
359#endif
+
360
+
361 return true;
+
362 }
+
+
363
+
+ +
366 {
+
367#ifdef JPH_ENABLE_ASSERTS
+
368 // Make sure that this triangle is not connected
+
369 JPH_ASSERT(inT->mRemoved);
+
370 for (const Edge &e : inT->mEdge)
+
371 JPH_ASSERT(e.mNeighbourTriangle == nullptr);
+
372#endif
+
373
+
374#if defined(JPH_EPA_CONVEX_BUILDER_VALIDATE) || defined(JPH_EPA_CONVEX_BUILDER_DRAW)
+
375 // Remove from list of all triangles
+
376 Triangles::iterator i = std::find(mTriangles.begin(), mTriangles.end(), inT);
+
377 JPH_ASSERT(i != mTriangles.end());
+
378 mTriangles.erase(i);
+
379#endif
+
380
+
381 mFactory.FreeTriangle(inT);
+
382 }
+
+
383
+
384private:
+
386 Triangle * CreateTriangle(int inIdx1, int inIdx2, int inIdx3)
+
387 {
+
388 // Call provider to create triangle
+
389 Triangle *t = mFactory.CreateTriangle(inIdx1, inIdx2, inIdx3, mPositions.data());
+
390 if (t == nullptr)
+
391 return nullptr;
+
392
+
393#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
394 // Remember iteration counter
+
395 t->mIteration = mIteration;
+
396#endif
+
397
+
398#if defined(JPH_EPA_CONVEX_BUILDER_VALIDATE) || defined(JPH_EPA_CONVEX_BUILDER_DRAW)
+
399 // Add to list of triangles for debugging purposes
+
400 mTriangles.push_back(t);
+
401#endif
+
402
+
403 return t;
+
404 }
+
405
+
407 static void sLinkTriangle(Triangle *inT1, int inEdge1, Triangle *inT2, int inEdge2)
+
408 {
+
409 JPH_ASSERT(inEdge1 >= 0 && inEdge1 < 3);
+
410 JPH_ASSERT(inEdge2 >= 0 && inEdge2 < 3);
+
411 Edge &e1 = inT1->mEdge[inEdge1];
+
412 Edge &e2 = inT2->mEdge[inEdge2];
+
413
+
414 // Check not connected yet
+
415 JPH_ASSERT(e1.mNeighbourTriangle == nullptr);
+
416 JPH_ASSERT(e2.mNeighbourTriangle == nullptr);
+
417
+
418 // Check vertices match
+
419 JPH_ASSERT(e1.mStartIdx == inT2->GetNextEdge(inEdge2).mStartIdx);
+
420 JPH_ASSERT(e2.mStartIdx == inT1->GetNextEdge(inEdge1).mStartIdx);
+
421
+
422 // Link up
+
423 e1.mNeighbourTriangle = inT2;
+
424 e1.mNeighbourEdge = inEdge2;
+
425 e2.mNeighbourTriangle = inT1;
+
426 e2.mNeighbourEdge = inEdge1;
+
427 }
+
428
+
430 void UnlinkTriangle(Triangle *inT)
+
431 {
+
432 // Unlink from neighbours
+
433 for (int i = 0; i < 3; ++i)
+
434 {
+
435 Edge &edge = inT->mEdge[i];
+
436 if (edge.mNeighbourTriangle != nullptr)
+
437 {
+
438 Edge &neighbour_edge = edge.mNeighbourTriangle->mEdge[edge.mNeighbourEdge];
+
439
+
440 // Validate that neighbour points to us
+
441 JPH_ASSERT(neighbour_edge.mNeighbourTriangle == inT);
+
442 JPH_ASSERT(neighbour_edge.mNeighbourEdge == i);
+
443
+
444 // Unlink
+
445 neighbour_edge.mNeighbourTriangle = nullptr;
+
446 edge.mNeighbourTriangle = nullptr;
+
447 }
+
448 }
+
449
+
450 // If this triangle is not in the priority queue, we can delete it now
+
451 if (!inT->mInQueue)
+
452 FreeTriangle(inT);
+
453 }
+
454
+
457 bool FindEdge(Triangle *inFacingTriangle, Vec3Arg inVertex, Edges &outEdges)
+
458 {
+
459 // Assert that we were given an empty array
+
460 JPH_ASSERT(outEdges.empty());
+
461
+
462 // Should start with a facing triangle
+
463 JPH_ASSERT(inFacingTriangle->IsFacing(inVertex));
+
464
+
465 // Flag as removed
+
466 inFacingTriangle->mRemoved = true;
+
467
+
468 // Instead of recursing, we build our own stack with the information we need
+
469 struct StackEntry
+
470 {
+
471 Triangle * mTriangle;
+
472 int mEdge;
+
473 int mIter;
+
474 };
+
475 StackEntry stack[cMaxEdgeLength];
+
476 int cur_stack_pos = 0;
+
477
+
478 // Start with the triangle / edge provided
+
479 stack[0].mTriangle = inFacingTriangle;
+
480 stack[0].mEdge = 0;
+
481 stack[0].mIter = -1; // Start with edge 0 (is incremented below before use)
+
482
+
483 // Next index that we expect to find, if we don't then there are 'islands'
+
484 int next_expected_start_idx = -1;
+
485
+
486 for (;;)
+
487 {
+
488 StackEntry &cur_entry = stack[cur_stack_pos];
+
489
+
490 // Next iteration
+
491 if (++cur_entry.mIter >= 3)
+
492 {
+
493 // This triangle needs to be removed, unlink it now
+
494 UnlinkTriangle(cur_entry.mTriangle);
+
495
+
496 // Pop from stack
+
497 if (--cur_stack_pos < 0)
+
498 break;
+
499 }
+
500 else
+
501 {
+
502 // Visit neighbour
+
503 Edge &e = cur_entry.mTriangle->mEdge[(cur_entry.mEdge + cur_entry.mIter) % 3];
+
504 Triangle *n = e.mNeighbourTriangle;
+
505 if (n != nullptr && !n->mRemoved)
+
506 {
+
507 // Check if vertex is on the front side of this triangle
+
508 if (n->IsFacing(inVertex))
+
509 {
+
510 // Vertex on front, this triangle needs to be removed
+
511 n->mRemoved = true;
+
512
+
513 // Add element to the stack of elements to visit
+
514 cur_stack_pos++;
+
515 JPH_ASSERT(cur_stack_pos < cMaxEdgeLength);
+
516 StackEntry &new_entry = stack[cur_stack_pos];
+
517 new_entry.mTriangle = n;
+
518 new_entry.mEdge = e.mNeighbourEdge;
+
519 new_entry.mIter = 0; // Is incremented before use, we don't need to test this edge again since we came from it
+
520 }
+
521 else
+
522 {
+
523 // Detect if edge doesn't connect to previous edge, if this happens we have found and 'island' which means
+
524 // the newly added point is so close to the triangles of the hull that we classified some (nearly) coplanar
+
525 // triangles as before and some behind the point. At this point we just abort adding the point because
+
526 // we've reached numerical precision.
+
527 // Note that we do not need to test if the first and last edge connect, since when there are islands
+
528 // there should be at least 2 disconnects.
+
529 if (e.mStartIdx != next_expected_start_idx && next_expected_start_idx != -1)
+
530 return false;
+
531
+
532 // Next expected index is the start index of our neighbour's edge
+
533 next_expected_start_idx = n->mEdge[e.mNeighbourEdge].mStartIdx;
+
534
+
535 // Vertex behind, keep edge
+
536 outEdges.push_back(e);
+
537 }
+
538 }
+
539 }
+
540 }
+
541
+
542 // Assert that we have a fully connected loop
+
543 JPH_ASSERT(outEdges.empty() || outEdges[0].mStartIdx == next_expected_start_idx);
+
544
+
545#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
546 // Draw edge of facing triangles
+
547 for (int i = 0; i < (int)outEdges.size(); ++i)
+
548 {
+
549 RVec3 edge_start = cDrawScale * (mOffset + mPositions[outEdges[i].mStartIdx]);
+
550 DebugRenderer::sInstance->DrawArrow(edge_start, cDrawScale * (mOffset + mPositions[outEdges[(i + 1) % outEdges.size()].mStartIdx]), Color::sYellow, 0.01f);
+
551 DebugRenderer::sInstance->DrawText3D(edge_start, ConvertToString(outEdges[i].mStartIdx), Color::sWhite);
+
552 }
+
553
+
554 // Draw the state with the facing triangles removed
+
555 DrawState();
+
556#endif
+
557
+
558 // When we start with two triangles facing away from each other and adding a point that is on the plane,
+
559 // sometimes we consider the point in front of both causing both triangles to be removed resulting in an empty edge list.
+
560 // In this case we fail to add the point which will result in no collision reported (the shapes are contacting in 1 point so there's 0 penetration)
+
561 return outEdges.size() >= 3;
+
562 }
+
563
+
564#ifdef JPH_EPA_CONVEX_BUILDER_VALIDATE
+
566 void ValidateTriangle(const Triangle *inT) const
+
567 {
+
568 if (inT->mRemoved)
+
569 {
+
570 // Validate that removed triangles are not connected to anything
+
571 for (const Edge &my_edge : inT->mEdge)
+
572 JPH_ASSERT(my_edge.mNeighbourTriangle == nullptr);
+
573 }
+
574 else
+
575 {
+
576 for (int i = 0; i < 3; ++i)
+
577 {
+
578 const Edge &my_edge = inT->mEdge[i];
+
579
+
580 // Assert that we have a neighbour
+
581 const Triangle *nb = my_edge.mNeighbourTriangle;
+
582 JPH_ASSERT(nb != nullptr);
+
583
+
584 if (nb != nullptr)
+
585 {
+
586 // Assert that our neighbours edge points to us
+
587 const Edge &nb_edge = nb->mEdge[my_edge.mNeighbourEdge];
+
588 JPH_ASSERT(nb_edge.mNeighbourTriangle == inT);
+
589 JPH_ASSERT(nb_edge.mNeighbourEdge == i);
+
590
+
591 // Assert that the next edge of the neighbour points to the same vertex as this edge's vertex
+
592 const Edge &nb_next_edge = nb->GetNextEdge(my_edge.mNeighbourEdge);
+
593 JPH_ASSERT(nb_next_edge.mStartIdx == my_edge.mStartIdx);
+
594
+
595 // Assert that my next edge points to the same vertex as my neighbours vertex
+
596 const Edge &my_next_edge = inT->GetNextEdge(i);
+
597 JPH_ASSERT(my_next_edge.mStartIdx == nb_edge.mStartIdx);
+
598 }
+
599 }
+
600 }
+
601 }
+
602
+
604 void ValidateTriangles() const
+
605 {
+
606 for (const Triangle *t : mTriangles)
+
607 ValidateTriangle(t);
+
608 }
+
609#endif
+
610
+
611#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
612public:
+
614 void DrawState()
+
615 {
+
616 // Draw origin
+ +
618
+
619 // Draw triangles
+
620 for (const Triangle *t : mTriangles)
+
621 if (!t->mRemoved)
+
622 {
+
623 // Calculate the triangle vertices
+
624 RVec3 p1 = cDrawScale * (mOffset + mPositions[t->mEdge[0].mStartIdx]);
+
625 RVec3 p2 = cDrawScale * (mOffset + mPositions[t->mEdge[1].mStartIdx]);
+
626 RVec3 p3 = cDrawScale * (mOffset + mPositions[t->mEdge[2].mStartIdx]);
+
627
+
628 // Draw triangle
+ + +
631
+
632 // Draw normal
+
633 RVec3 centroid = cDrawScale * (mOffset + t->mCentroid);
+
634 float len = t->mNormal.Length();
+
635 if (len > 0.0f)
+
636 DebugRenderer::sInstance->DrawArrow(centroid, centroid + t->mNormal / len, Color::sDarkGreen, 0.01f);
+
637 }
+
638
+
639 // Determine max position
+
640 float min_x = FLT_MAX;
+
641 float max_x = -FLT_MAX;
+
642 for (Vec3 p : mPositions)
+
643 {
+
644 min_x = min(min_x, p.GetX());
+
645 max_x = max(max_x, p.GetX());
+
646 }
+
647
+
648 // Offset to the right
+
649 mOffset += Vec3(max_x - min_x + 0.5f, 0.0f, 0.0f);
+
650 }
+
651
+
653 void DrawLabel(const string_view &inText)
+
654 {
+
655 DebugRenderer::sInstance->DrawText3D(cDrawScale * mOffset, inText, Color::sWhite, 0.1f * cDrawScale);
+
656
+
657 mOffset += Vec3(5.0f, 0.0f, 0.0f);
+
658 }
+
659
+
661 void DrawGeometry(const DebugRenderer::GeometryRef &inGeometry, ColorArg inColor)
+
662 {
+
663 RMat44 origin = RMat44::sScale(Vec3::sReplicate(cDrawScale)) * RMat44::sTranslation(mOffset);
+
664 DebugRenderer::sInstance->DrawGeometry(origin, inGeometry->mBounds.Transformed(origin), inGeometry->mBounds.GetExtent().LengthSq(), inColor, inGeometry);
+
665
+
666 mOffset += Vec3(inGeometry->mBounds.GetSize().GetX(), 0, 0);
+
667 }
+
668
+
670 void DrawWireTriangle(const Triangle &inTriangle, ColorArg inColor)
+
671 {
+
672 RVec3 prev = cDrawScale * (mOffset + mPositions[inTriangle.mEdge[2].mStartIdx]);
+
673 for (const Edge &edge : inTriangle.mEdge)
+
674 {
+
675 RVec3 cur = cDrawScale * (mOffset + mPositions[edge.mStartIdx]);
+
676 DebugRenderer::sInstance->DrawArrow(prev, cur, inColor, 0.01f);
+
677 prev = cur;
+
678 }
+
679 }
+
680
+
682 void DrawMarker(Vec3Arg inPosition, ColorArg inColor, float inSize)
+
683 {
+
684 DebugRenderer::sInstance->DrawMarker(cDrawScale * (mOffset + inPosition), inColor, inSize);
+
685 }
+
686
+
688 void DrawArrow(Vec3Arg inFrom, Vec3Arg inTo, ColorArg inColor, float inArrowSize)
+
689 {
+
690 DebugRenderer::sInstance->DrawArrow(cDrawScale * (mOffset + inFrom), cDrawScale * (mOffset + inTo), inColor, inArrowSize);
+
691 }
+
692#endif
+
693
+
694private:
+
695 TriangleFactory mFactory;
+
696 const Points & mPositions;
+
697 TriangleQueue mTriangleQueue;
+
698
+
699#if defined(JPH_EPA_CONVEX_BUILDER_VALIDATE) || defined(JPH_EPA_CONVEX_BUILDER_DRAW)
+
700 Triangles mTriangles;
+
701#endif
+
702
+
703#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
704 int mIteration;
+
705 RVec3 mOffset;
+
706#endif
+
707};
+
+
708
+
709// The determinant that is calculated in the Triangle constructor is really sensitive
+
710// to numerical round off, disable the fmadd instructions to maintain precision.
+
711JPH_PRECISE_MATH_ON
+
712
+
+
713EPAConvexHullBuilder::Triangle::Triangle(int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions)
+
714{
+
715 // Fill in indexes
+
716 JPH_ASSERT(inIdx0 != inIdx1 && inIdx0 != inIdx2 && inIdx1 != inIdx2);
+
717 mEdge[0].mStartIdx = inIdx0;
+
718 mEdge[1].mStartIdx = inIdx1;
+
719 mEdge[2].mStartIdx = inIdx2;
+
720
+
721 // Clear links
+
722 mEdge[0].mNeighbourTriangle = nullptr;
+
723 mEdge[1].mNeighbourTriangle = nullptr;
+
724 mEdge[2].mNeighbourTriangle = nullptr;
+
725
+
726 // Get vertex positions
+
727 Vec3 y0 = inPositions[inIdx0];
+
728 Vec3 y1 = inPositions[inIdx1];
+
729 Vec3 y2 = inPositions[inIdx2];
+
730
+
731 // Calculate centroid
+
732 mCentroid = (y0 + y1 + y2) / 3.0f;
+
733
+
734 // Calculate edges
+
735 Vec3 y10 = y1 - y0;
+
736 Vec3 y20 = y2 - y0;
+
737 Vec3 y21 = y2 - y1;
+
738
+
739 // The most accurate normal is calculated by using the two shortest edges
+
740 // See: https://box2d.org/posts/2014/01/troublesome-triangle/
+
741 // The difference in normals is most pronounced when one edge is much smaller than the others (in which case the other 2 must have roughly the same length).
+
742 // Therefore we can suffice by just picking the shortest from 2 edges and use that with the 3rd edge to calculate the normal.
+
743 // We first check which of the edges is shorter.
+
744 float y20_dot_y20 = y20.Dot(y20);
+
745 float y21_dot_y21 = y21.Dot(y21);
+
746 if (y20_dot_y20 < y21_dot_y21)
+
747 {
+
748 // We select the edges y10 and y20
+
749 mNormal = y10.Cross(y20);
+
750
+
751 // Check if triangle is degenerate
+
752 float normal_len_sq = mNormal.LengthSq();
+
753 if (normal_len_sq > cMinTriangleArea)
+
754 {
+
755 // Determine distance between triangle and origin: distance = (centroid - origin) . normal / |normal|
+
756 // Note that this way of calculating the closest point is much more accurate than first calculating barycentric coordinates and then calculating the closest
+
757 // point based on those coordinates. Note that we preserve the sign of the distance to check on which side the origin is.
+
758 float c_dot_n = mCentroid.Dot(mNormal);
+
759 mClosestLenSq = abs(c_dot_n) * c_dot_n / normal_len_sq;
+
760
+
761 // Calculate closest point to origin using barycentric coordinates:
+
762 //
+
763 // v = y0 + l0 * (y1 - y0) + l1 * (y2 - y0)
+
764 // v . (y1 - y0) = 0
+
765 // v . (y2 - y0) = 0
+
766 //
+
767 // Written in matrix form:
+
768 //
+
769 // | y10.y10 y20.y10 | | l0 | = | -y0.y10 |
+
770 // | y10.y20 y20.y20 | | l1 | | -y0.y20 |
+
771 //
+
772 // (y10 = y1 - y0 etc.)
+
773 //
+
774 // Cramers rule to invert matrix:
+
775 float y10_dot_y10 = y10.LengthSq();
+
776 float y10_dot_y20 = y10.Dot(y20);
+
777 float determinant = y10_dot_y10 * y20_dot_y20 - y10_dot_y20 * y10_dot_y20;
+
778 if (determinant > 0.0f) // If determinant == 0 then the system is linearly dependent and the triangle is degenerate, since y10.10 * y20.y20 > y10.y20^2 it should also be > 0
+
779 {
+
780 float y0_dot_y10 = y0.Dot(y10);
+
781 float y0_dot_y20 = y0.Dot(y20);
+
782 float l0 = (y10_dot_y20 * y0_dot_y20 - y20_dot_y20 * y0_dot_y10) / determinant;
+
783 float l1 = (y10_dot_y20 * y0_dot_y10 - y10_dot_y10 * y0_dot_y20) / determinant;
+
784 mLambda[0] = l0;
+
785 mLambda[1] = l1;
+
786 mLambdaRelativeTo0 = true;
+
787
+
788 // Check if closest point is interior to the triangle. For a convex hull which contains the origin each face must contain the origin, but because
+
789 // our faces are triangles, we can have multiple coplanar triangles and only 1 will have the origin as an interior point. We want to use this triangle
+
790 // to calculate the contact points because it gives the most accurate results, so we will only add these triangles to the priority queue.
+
791 if (l0 > -cBarycentricEpsilon && l1 > -cBarycentricEpsilon && l0 + l1 < 1.0f + cBarycentricEpsilon)
+
792 mClosestPointInterior = true;
+
793 }
+
794 }
+
795 }
+
796 else
+
797 {
+
798 // We select the edges y10 and y21
+
799 mNormal = y10.Cross(y21);
+
800
+
801 // Check if triangle is degenerate
+
802 float normal_len_sq = mNormal.LengthSq();
+
803 if (normal_len_sq > cMinTriangleArea)
+
804 {
+
805 // Again calculate distance between triangle and origin
+
806 float c_dot_n = mCentroid.Dot(mNormal);
+
807 mClosestLenSq = abs(c_dot_n) * c_dot_n / normal_len_sq;
+
808
+
809 // Calculate closest point to origin using barycentric coordinates but this time using y1 as the reference vertex
+
810 //
+
811 // v = y1 + l0 * (y0 - y1) + l1 * (y2 - y1)
+
812 // v . (y0 - y1) = 0
+
813 // v . (y2 - y1) = 0
+
814 //
+
815 // Written in matrix form:
+
816 //
+
817 // | y10.y10 -y21.y10 | | l0 | = | y1.y10 |
+
818 // | -y10.y21 y21.y21 | | l1 | | -y1.y21 |
+
819 //
+
820 // Cramers rule to invert matrix:
+
821 float y10_dot_y10 = y10.LengthSq();
+
822 float y10_dot_y21 = y10.Dot(y21);
+
823 float determinant = y10_dot_y10 * y21_dot_y21 - y10_dot_y21 * y10_dot_y21;
+
824 if (determinant > 0.0f)
+
825 {
+
826 float y1_dot_y10 = y1.Dot(y10);
+
827 float y1_dot_y21 = y1.Dot(y21);
+
828 float l0 = (y21_dot_y21 * y1_dot_y10 - y10_dot_y21 * y1_dot_y21) / determinant;
+
829 float l1 = (y10_dot_y21 * y1_dot_y10 - y10_dot_y10 * y1_dot_y21) / determinant;
+
830 mLambda[0] = l0;
+
831 mLambda[1] = l1;
+
832 mLambdaRelativeTo0 = false;
+
833
+
834 // Again check if the closest point is inside the triangle
+
835 if (l0 > -cBarycentricEpsilon && l1 > -cBarycentricEpsilon && l0 + l1 < 1.0f + cBarycentricEpsilon)
+
836 mClosestPointInterior = true;
+
837 }
+
838 }
+
839 }
+
840}
+
+
841
+
842JPH_PRECISE_MATH_OFF
+
843
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
float Real
Definition Real.h:27
+ +
String ConvertToString(const T &inValue)
Convert type to string.
Definition StringTools.h:15
+
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
static const Color sWhite
Definition Color.h:67
+
static Color sGetDistinctColor(int inIndex)
Get a visually distinct color.
Definition Color.cpp:31
+
static const Color sDarkGreen
Definition Color.h:56
+
static const Color sGrey
Definition Color.h:65
+
static const Color sYellow
Definition Color.h:60
+
virtual void DrawText3D(RVec3Arg inPosition, const string_view &inString, ColorArg inColor=Color::sWhite, float inHeight=0.5f)=0
Draw text.
+
void DrawMarker(RVec3Arg inPosition, ColorArg inColor, float inSize)
Draw a marker on a position.
Definition DebugRenderer.cpp:172
+
void DrawWireTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor)
Draw wireframe triangle.
Definition DebugRenderer.cpp:242
+
void DrawCoordinateSystem(RMat44Arg inTransform, float inSize=1.0f)
Draw coordinate system (3 arrows, x = red, y = green, z = blue)
Definition DebugRenderer.cpp:206
+
virtual void DrawGeometry(RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)=0
+
static DebugRenderer * sInstance
Singleton instance.
Definition DebugRenderer.h:179
+
void DrawArrow(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor, float inSize)
Draw an arrow.
Definition DebugRenderer.cpp:184
+
virtual void DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::Off)=0
Draw a single back face culled triangle.
+
Class that holds the information of an edge.
Definition EPAConvexHullBuilder.h:48
+
int mStartIdx
Vertex index in mPositions that indicates the start vertex of this edge.
Definition EPAConvexHullBuilder.h:54
+
Triangle * mNeighbourTriangle
Information about neighbouring triangle.
Definition EPAConvexHullBuilder.h:51
+
int mNeighbourEdge
Index in mEdge that specifies edge that this Edge is connected to.
Definition EPAConvexHullBuilder.h:52
+
Specialized points list that allows direct access to the size.
Definition EPAConvexHullBuilder.h:172
+
size_type & GetSizeRef()
Definition EPAConvexHullBuilder.h:174
+
Factory that creates triangles in a fixed size buffer.
Definition EPAConvexHullBuilder.h:103
+
Triangle * CreateTriangle(int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions)
Allocate a new triangle with 3 indexes.
Definition EPAConvexHullBuilder.h:126
+
void FreeTriangle(Triangle *inT)
Free a triangle.
Definition EPAConvexHullBuilder.h:151
+
void Clear()
Return all triangles to the free pool.
Definition EPAConvexHullBuilder.h:119
+
Class that holds the information of one triangle.
Definition EPAConvexHullBuilder.h:62
+
Vec3 mCentroid
Center of the triangle.
Definition EPAConvexHullBuilder.h:89
+
bool mClosestPointInterior
Flag that indicates that the closest point from this triangle to the origin is an interior point.
Definition EPAConvexHullBuilder.h:93
+
bool IsFacing(Vec3Arg inPosition) const
Check if triangle is facing inPosition.
Definition EPAConvexHullBuilder.h:68
+
const Edge & GetNextEdge(int inIndex) const
Get the next edge of edge inIndex.
Definition EPAConvexHullBuilder.h:82
+
Vec3 mNormal
Normal of this triangle, length is 2 times area of triangle.
Definition EPAConvexHullBuilder.h:88
+
Edge mEdge[3]
3 edges of this triangle
Definition EPAConvexHullBuilder.h:87
+
bool IsFacingOrigin() const
Check if triangle is facing the origin.
Definition EPAConvexHullBuilder.h:75
+
float mClosestLenSq
Closest distance^2 from origin to triangle.
Definition EPAConvexHullBuilder.h:90
+
Triangle(int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions)
Constructor.
Definition EPAConvexHullBuilder.h:713
+
bool mInQueue
Flag that indicates that this triangle was placed in the sorted heap (stays true after it is popped b...
Definition EPAConvexHullBuilder.h:95
+
float mLambda[2]
Barycentric coordinates of closest point to origin on triangle.
Definition EPAConvexHullBuilder.h:91
+
bool mLambdaRelativeTo0
How to calculate the closest point, true: y0 + l0 * (y1 - y0) + l1 * (y2 - y0), false: y1 + l0 * (y0 ...
Definition EPAConvexHullBuilder.h:92
+
bool mRemoved
Flag that indicates that triangle has been removed.
Definition EPAConvexHullBuilder.h:94
+
Specialized triangles list that keeps them sorted on closest distance to origin.
Definition EPAConvexHullBuilder.h:182
+
void push_back(Triangle *inT)
Add triangle to the list.
Definition EPAConvexHullBuilder.h:191
+
Triangle * PeekClosest()
Peek the next closest triangle without removing it.
Definition EPAConvexHullBuilder.h:204
+
Triangle * PopClosest()
Get next closest triangle.
Definition EPAConvexHullBuilder.h:210
+
static bool sTriangleSorter(const Triangle *inT1, const Triangle *inT2)
Function to sort triangles on closest distance to origin.
Definition EPAConvexHullBuilder.h:185
+
A convex hull builder specifically made for the EPA penetration depth calculation....
Definition EPAConvexHullBuilder.h:24
+
Triangle * PeekClosestTriangleInQueue()
Access to the next closest triangle to the origin (won't remove it from the queue).
Definition EPAConvexHullBuilder.h:267
+
bool HasNextTriangle() const
Check if there's another triangle to process from the queue.
Definition EPAConvexHullBuilder.h:261
+
static constexpr int cMaxTriangles
Max triangles in hull.
Definition EPAConvexHullBuilder.h:35
+
StaticArray< Edge, cMaxEdgeLength > Edges
Definition EPAConvexHullBuilder.h:57
+
static constexpr float cMinTriangleArea
Minimum area of a triangle before, if smaller than this it will not be added to the priority queue.
Definition EPAConvexHullBuilder.h:40
+
static constexpr float cBarycentricEpsilon
Epsilon value used to determine if a point is in the interior of a triangle.
Definition EPAConvexHullBuilder.h:41
+
static constexpr int cMaxPoints
Max number of points in hull.
Definition EPAConvexHullBuilder.h:36
+
Triangle * PopClosestTriangleFromQueue()
Access to the next closest triangle to the origin and remove it from the queue.
Definition EPAConvexHullBuilder.h:273
+
static constexpr int cMaxEdgeLength
Max number of edges in FindEdge.
Definition EPAConvexHullBuilder.h:39
+
void FreeTriangle(Triangle *inT)
Free a triangle.
Definition EPAConvexHullBuilder.h:365
+
Triangle * FindFacingTriangle(Vec3Arg inPosition, float &outBestDistSq)
Definition EPAConvexHullBuilder.h:280
+
void Initialize(int inIdx1, int inIdx2, int inIdx3)
Initialize the hull with 3 points.
Definition EPAConvexHullBuilder.h:233
+
bool AddPoint(Triangle *inFacingTriangle, int inIdx, float inClosestDistSq, NewTriangles &outTriangles)
Add a new point to the convex hull.
Definition EPAConvexHullBuilder.h:305
+
EPAConvexHullBuilder(const Points &inPositions)
Constructor.
Definition EPAConvexHullBuilder.h:223
+
StaticArray< Triangle *, cMaxTriangles > Triangles
Definition EPAConvexHullBuilder.h:168
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sScale(float inScale)
Get matrix that scales uniformly.
Definition Mat44.inl:163
+
static JPH_INLINE Mat44 sTranslation(Vec3Arg inV)
Get matrix that translates.
Definition Mat44.inl:144
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+ +
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
void push_back(const T &inElement)
Add element to the back of the array.
Definition StaticArray.h:61
+
T * iterator
Definition StaticArray.h:126
+
uint size_type
Definition StaticArray.h:18
+
size_type size() const
Returns amount of elements in the array.
Definition StaticArray.h:89
+
A simple triangle and its material.
Definition Triangle.h:11
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
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
+
+
+ + + + diff --git a/_e_p_a_penetration_depth_8h.html b/_e_p_a_penetration_depth_8h.html new file mode 100644 index 000000000..67cd11621 --- /dev/null +++ b/_e_p_a_penetration_depth_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/EPAPenetrationDepth.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EPAPenetrationDepth.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  EPAPenetrationDepth
 
+
+
+ + + + diff --git a/_e_p_a_penetration_depth_8h.js b/_e_p_a_penetration_depth_8h.js new file mode 100644 index 000000000..910756950 --- /dev/null +++ b/_e_p_a_penetration_depth_8h.js @@ -0,0 +1,4 @@ +var _e_p_a_penetration_depth_8h = +[ + [ "EPAPenetrationDepth", "class_e_p_a_penetration_depth.html", "class_e_p_a_penetration_depth" ] +]; \ No newline at end of file diff --git a/_e_p_a_penetration_depth_8h_source.html b/_e_p_a_penetration_depth_8h_source.html new file mode 100644 index 000000000..76e4f35c8 --- /dev/null +++ b/_e_p_a_penetration_depth_8h_source.html @@ -0,0 +1,690 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/EPAPenetrationDepth.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EPAPenetrationDepth.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
+ + + + +
11
+
12//#define JPH_EPA_PENETRATION_DEPTH_DEBUG
+
13
+ +
15
+
+ +
37{
+
38private:
+
39 // Typedefs
+
40 static constexpr int cMaxPoints = EPAConvexHullBuilder::cMaxPoints;
+
41 static constexpr int cMaxPointsToIncludeOriginInHull = 32;
+
42 static_assert(cMaxPointsToIncludeOriginInHull < cMaxPoints);
+
43
+ + +
46
+
48 GJKClosestPoint mGJK;
+
49
+
50#ifdef JPH_ENABLE_ASSERTS
+
52 float mGJKTolerance = 0.0f;
+
53#endif // JPH_ENABLE_ASSERTS
+
54
+
56 class SupportPoints
+
57 {
+
58 public:
+
60 Points mY;
+
61 Vec3 mP[cMaxPoints];
+
62 Vec3 mQ[cMaxPoints];
+
63
+
65 template <typename A, typename B>
+
66 Vec3 Add(const A &inA, const B &inB, Vec3Arg inDirection, int &outIndex)
+
67 {
+
68 // Get support point of the minkowski sum A - B
+
69 Vec3 p = inA.GetSupport(inDirection);
+
70 Vec3 q = inB.GetSupport(-inDirection);
+
71 Vec3 w = p - q;
+
72
+
73 // Store new point
+
74 outIndex = mY.size();
+
75 mY.push_back(w);
+
76 mP[outIndex] = p;
+
77 mQ[outIndex] = q;
+
78
+
79 return w;
+
80 }
+
81 };
+
82
+
83public:
+
+
85 enum class EStatus
+
86 {
+ +
88 Colliding,
+ +
90 };
+
+
91
+
103 template <typename AE, typename BE>
+
+
104 EStatus GetPenetrationDepthStepGJK(const AE &inAExcludingConvexRadius, float inConvexRadiusA, const BE &inBExcludingConvexRadius, float inConvexRadiusB, float inTolerance, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)
+
105 {
+ +
107
+
108 JPH_IF_ENABLE_ASSERTS(mGJKTolerance = inTolerance;)
+
109
+
110 // Don't supply a zero ioV, we only want to get points on the hull of the Minkowsky sum and not internal points
+
111 JPH_ASSERT(!ioV.IsNearZero());
+
112
+
113 // Get closest points
+
114 float combined_radius = inConvexRadiusA + inConvexRadiusB;
+
115 float combined_radius_sq = combined_radius * combined_radius;
+
116 float closest_points_dist_sq = mGJK.GetClosestPoints(inAExcludingConvexRadius, inBExcludingConvexRadius, inTolerance, combined_radius_sq, ioV, outPointA, outPointB);
+
117 if (closest_points_dist_sq > combined_radius_sq)
+
118 {
+
119 // No collision
+ +
121 }
+
122 if (closest_points_dist_sq > 0.0f)
+
123 {
+
124 // Collision within convex radius, adjust points for convex radius
+
125 float v_len = sqrt(closest_points_dist_sq); // GetClosestPoints function returns |ioV|^2 when return value < FLT_MAX
+
126 outPointA += ioV * (inConvexRadiusA / v_len);
+
127 outPointB -= ioV * (inConvexRadiusB / v_len);
+
128 return EStatus::Colliding;
+
129 }
+
130
+ +
132 }
+
+
133
+
146 template <typename AI, typename BI>
+
+
147 bool GetPenetrationDepthStepEPA(const AI &inAIncludingConvexRadius, const BI &inBIncludingConvexRadius, float inTolerance, Vec3 &outV, Vec3 &outPointA, Vec3 &outPointB)
+
148 {
+ +
150
+
151 // Check that the tolerance makes sense (smaller value than this will just result in needless iterations)
+
152 JPH_ASSERT(inTolerance >= FLT_EPSILON);
+
153
+
154 // Fetch the simplex from GJK algorithm
+
155 SupportPoints support_points;
+
156 mGJK.GetClosestPointsSimplex(support_points.mY.data(), support_points.mP, support_points.mQ, support_points.mY.GetSizeRef());
+
157
+
158 // Fill up the amount of support points to 4
+
159 switch (support_points.mY.size())
+
160 {
+
161 case 1:
+
162 {
+
163 // 1 vertex, which must be at the origin, which is useless for our purpose
+
164 JPH_ASSERT(support_points.mY[0].IsNearZero(Square(mGJKTolerance)));
+
165 support_points.mY.pop_back();
+
166
+
167 // Add support points in 4 directions to form a tetrahedron around the origin
+
168 int p1, p2, p3, p4;
+
169 (void)support_points.Add(inAIncludingConvexRadius, inBIncludingConvexRadius, Vec3(0, 1, 0), p1);
+
170 (void)support_points.Add(inAIncludingConvexRadius, inBIncludingConvexRadius, Vec3(-1, -1, -1), p2);
+
171 (void)support_points.Add(inAIncludingConvexRadius, inBIncludingConvexRadius, Vec3(1, -1, -1), p3);
+
172 (void)support_points.Add(inAIncludingConvexRadius, inBIncludingConvexRadius, Vec3(0, -1, 1), p4);
+
173 JPH_ASSERT(p1 == 0);
+
174 JPH_ASSERT(p2 == 1);
+
175 JPH_ASSERT(p3 == 2);
+
176 JPH_ASSERT(p4 == 3);
+
177 break;
+
178 }
+
179
+
180 case 2:
+
181 {
+
182 // Two vertices, create 3 extra by taking perpendicular axis and rotating it around in 120 degree increments
+
183 Vec3 axis = (support_points.mY[1] - support_points.mY[0]).Normalized();
+
184 Mat44 rotation = Mat44::sRotation(axis, DegreesToRadians(120.0f));
+
185 Vec3 dir1 = axis.GetNormalizedPerpendicular();
+
186 Vec3 dir2 = rotation * dir1;
+
187 Vec3 dir3 = rotation * dir2;
+
188 int p1, p2, p3;
+
189 (void)support_points.Add(inAIncludingConvexRadius, inBIncludingConvexRadius, dir1, p1);
+
190 (void)support_points.Add(inAIncludingConvexRadius, inBIncludingConvexRadius, dir2, p2);
+
191 (void)support_points.Add(inAIncludingConvexRadius, inBIncludingConvexRadius, dir3, p3);
+
192 JPH_ASSERT(p1 == 2);
+
193 JPH_ASSERT(p2 == 3);
+
194 JPH_ASSERT(p3 == 4);
+
195 break;
+
196 }
+
197
+
198 case 3:
+
199 case 4:
+
200 // We already have enough points
+
201 break;
+
202 }
+
203
+
204 // Create hull out of the initial points
+
205 JPH_ASSERT(support_points.mY.size() >= 3);
+
206 EPAConvexHullBuilder hull(support_points.mY);
+
207#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
208 hull.DrawLabel("Build initial hull");
+
209#endif
+
210#ifdef JPH_EPA_PENETRATION_DEPTH_DEBUG
+
211 Trace("Init: num_points = %u", (uint)support_points.mY.size());
+
212#endif
+
213 hull.Initialize(0, 1, 2);
+
214 for (typename Points::size_type i = 3; i < support_points.mY.size(); ++i)
+
215 {
+
216 float dist_sq;
+
217 Triangle *t = hull.FindFacingTriangle(support_points.mY[i], dist_sq);
+
218 if (t != nullptr)
+
219 {
+ +
221 if (!hull.AddPoint(t, i, FLT_MAX, new_triangles))
+
222 {
+
223 // We can't recover from a failure to add a point to the hull because the old triangles have been unlinked already.
+
224 // Assume no collision. This can happen if the shapes touch in 1 point (or plane) in which case the hull is degenerate.
+
225 return false;
+
226 }
+
227 }
+
228 }
+
229
+
230#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
231 hull.DrawLabel("Complete hull");
+
232
+
233 // Generate the hull of the Minkowski difference for visualization
+
234 MinkowskiDifference diff(inAIncludingConvexRadius, inBIncludingConvexRadius);
+
235 DebugRenderer::GeometryRef geometry = DebugRenderer::sInstance->CreateTriangleGeometryForConvex([&diff](Vec3Arg inDirection) { return diff.GetSupport(inDirection); });
+
236 hull.DrawGeometry(geometry, Color::sYellow);
+
237
+
238 hull.DrawLabel("Ensure origin in hull");
+
239#endif
+
240
+
241 // Loop until we are sure that the origin is inside the hull
+
242 for (;;)
+
243 {
+
244 // Get the next closest triangle
+ +
246
+
247 // Don't process removed triangles, just free them (because they're in a heap we don't remove them earlier since we would have to rebuild the sorted heap)
+
248 if (t->mRemoved)
+
249 {
+ +
251
+
252 // If we run out of triangles, we couldn't include the origin in the hull so there must be very little penetration and we report no collision.
+
253 if (!hull.HasNextTriangle())
+
254 return false;
+
255
+
256 hull.FreeTriangle(t);
+
257 continue;
+
258 }
+
259
+
260 // If the closest to the triangle is zero or positive, the origin is in the hull and we can proceed to the main algorithm
+
261 if (t->mClosestLenSq >= 0.0f)
+
262 break;
+
263
+
264#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
265 hull.DrawLabel("Next iteration");
+
266#endif
+
267#ifdef JPH_EPA_PENETRATION_DEPTH_DEBUG
+
268 Trace("EncapsulateOrigin: verts = (%d, %d, %d), closest_dist_sq = %g, centroid = (%g, %g, %g), normal = (%g, %g, %g)",
+
269 t->mEdge[0].mStartIdx, t->mEdge[1].mStartIdx, t->mEdge[2].mStartIdx,
+
270 t->mClosestLenSq,
+
271 t->mCentroid.GetX(), t->mCentroid.GetY(), t->mCentroid.GetZ(),
+
272 t->mNormal.GetX(), t->mNormal.GetY(), t->mNormal.GetZ());
+
273#endif
+
274
+
275 // Remove the triangle from the queue before we start adding new ones (which may result in a new closest triangle at the front of the queue)
+ +
277
+
278 // Add a support point to get the origin inside the hull
+
279 int new_index;
+
280 Vec3 w = support_points.Add(inAIncludingConvexRadius, inBIncludingConvexRadius, t->mNormal, new_index);
+
281
+
282#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
283 // Draw the point that we're adding
+
284 hull.DrawMarker(w, Color::sRed, 1.0f);
+
285 hull.DrawWireTriangle(*t, Color::sRed);
+
286 hull.DrawState();
+
287#endif
+
288
+
289 // Add the point to the hull, if we fail we terminate and report no collision
+ +
291 if (!t->IsFacing(w) || !hull.AddPoint(t, new_index, FLT_MAX, new_triangles))
+
292 return false;
+
293
+
294 // The triangle is facing the support point "w" and can now be safely removed
+ +
296 hull.FreeTriangle(t);
+
297
+
298 // If we run out of triangles or points, we couldn't include the origin in the hull so there must be very little penetration and we report no collision.
+
299 if (!hull.HasNextTriangle() || support_points.mY.size() >= cMaxPointsToIncludeOriginInHull)
+
300 return false;
+
301 }
+
302
+
303#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
304 hull.DrawLabel("Main algorithm");
+
305#endif
+
306
+
307 // Current closest distance to origin
+
308 float closest_dist_sq = FLT_MAX;
+
309
+
310 // Remember last good triangle
+
311 Triangle *last = nullptr;
+
312
+
313 // If we want to flip the penetration depth
+
314 bool flip_v_sign = false;
+
315
+
316 // Loop until closest point found
+
317 do
+
318 {
+
319 // Get closest triangle to the origin
+ +
321
+
322 // Don't process removed triangles, just free them (because they're in a heap we don't remove them earlier since we would have to rebuild the sorted heap)
+
323 if (t->mRemoved)
+
324 {
+
325 hull.FreeTriangle(t);
+
326 continue;
+
327 }
+
328
+
329#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
330 hull.DrawLabel("Next iteration");
+
331#endif
+
332#ifdef JPH_EPA_PENETRATION_DEPTH_DEBUG
+
333 Trace("FindClosest: verts = (%d, %d, %d), closest_len_sq = %g, centroid = (%g, %g, %g), normal = (%g, %g, %g)",
+
334 t->mEdge[0].mStartIdx, t->mEdge[1].mStartIdx, t->mEdge[2].mStartIdx,
+
335 t->mClosestLenSq,
+
336 t->mCentroid.GetX(), t->mCentroid.GetY(), t->mCentroid.GetZ(),
+
337 t->mNormal.GetX(), t->mNormal.GetY(), t->mNormal.GetZ());
+
338#endif
+
339 // Check if next triangle is further away than closest point, we've found the closest point
+
340 if (t->mClosestLenSq >= closest_dist_sq)
+
341 break;
+
342
+
343 // Replace last good with this triangle
+
344 if (last != nullptr)
+
345 hull.FreeTriangle(last);
+
346 last = t;
+
347
+
348 // Add support point in direction of normal of the plane
+
349 // Note that the article uses the closest point between the origin and plane, but this always has the exact same direction as the normal (if the origin is behind the plane)
+
350 // and this way we do less calculations and lose less precision
+
351 int new_index;
+
352 Vec3 w = support_points.Add(inAIncludingConvexRadius, inBIncludingConvexRadius, t->mNormal, new_index);
+
353
+
354 // Project w onto the triangle normal
+
355 float dot = t->mNormal.Dot(w);
+
356
+
357 // Check if we just found a separating axis. This can happen if the shape shrunk by convex radius and then expanded by
+
358 // convex radius is bigger then the original shape due to inaccuracies in the shrinking process.
+
359 if (dot < 0.0f)
+
360 return false;
+
361
+
362 // Get the distance squared (along normal) to the support point
+
363 float dist_sq = Square(dot) / t->mNormal.LengthSq();
+
364
+
365#ifdef JPH_EPA_PENETRATION_DEPTH_DEBUG
+
366 Trace("FindClosest: w = (%g, %g, %g), dot = %g, dist_sq = %g",
+
367 w.GetX(), w.GetY(), w.GetZ(),
+
368 dot, dist_sq);
+
369#endif
+
370#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
371 // Draw the point that we're adding
+
372 hull.DrawMarker(w, Color::sPurple, 1.0f);
+
373 hull.DrawWireTriangle(*t, Color::sPurple);
+
374 hull.DrawState();
+
375#endif
+
376
+
377 // If the error became small enough, we've converged
+
378 if (dist_sq - t->mClosestLenSq < t->mClosestLenSq * inTolerance)
+
379 {
+
380#ifdef JPH_EPA_PENETRATION_DEPTH_DEBUG
+
381 Trace("Converged");
+
382#endif // JPH_EPA_PENETRATION_DEPTH_DEBUG
+
383 break;
+
384 }
+
385
+
386 // Keep track of the minimum distance
+
387 closest_dist_sq = min(closest_dist_sq, dist_sq);
+
388
+
389 // If the triangle thinks this point is not front facing, we've reached numerical precision and we're done
+
390 if (!t->IsFacing(w))
+
391 {
+
392#ifdef JPH_EPA_PENETRATION_DEPTH_DEBUG
+
393 Trace("Not facing triangle");
+
394#endif // JPH_EPA_PENETRATION_DEPTH_DEBUG
+
395 break;
+
396 }
+
397
+
398 // Add point to hull
+ +
400 if (!hull.AddPoint(t, new_index, closest_dist_sq, new_triangles))
+
401 {
+
402#ifdef JPH_EPA_PENETRATION_DEPTH_DEBUG
+
403 Trace("Could not add point");
+
404#endif // JPH_EPA_PENETRATION_DEPTH_DEBUG
+
405 break;
+
406 }
+
407
+
408 // If the hull is starting to form defects then we're reaching numerical precision and we have to stop
+
409 bool has_defect = false;
+
410 for (const Triangle *nt : new_triangles)
+
411 if (nt->IsFacingOrigin())
+
412 {
+
413 has_defect = true;
+
414 break;
+
415 }
+
416 if (has_defect)
+
417 {
+
418#ifdef JPH_EPA_PENETRATION_DEPTH_DEBUG
+
419 Trace("Has defect");
+
420#endif // JPH_EPA_PENETRATION_DEPTH_DEBUG
+
421 // When the hull has defects it is possible that the origin has been classified on the wrong side of the triangle
+
422 // so we do an additional check to see if the penetration in the -triangle normal direction is smaller than
+
423 // the penetration in the triangle normal direction. If so we must flip the sign of the penetration depth.
+
424 Vec3 w2 = inAIncludingConvexRadius.GetSupport(-t->mNormal) - inBIncludingConvexRadius.GetSupport(t->mNormal);
+
425 float dot2 = -t->mNormal.Dot(w2);
+
426 if (dot2 < dot)
+
427 flip_v_sign = true;
+
428 break;
+
429 }
+
430 }
+
431 while (hull.HasNextTriangle() && support_points.mY.size() < cMaxPoints);
+
432
+
433 // Determine closest points, if last == null it means the hull was a plane so there's no penetration
+
434 if (last == nullptr)
+
435 return false;
+
436
+
437#ifdef JPH_EPA_CONVEX_BUILDER_DRAW
+
438 hull.DrawLabel("Closest found");
+
439 hull.DrawWireTriangle(*last, Color::sWhite);
+
440 hull.DrawArrow(last->mCentroid, last->mCentroid + last->mNormal.NormalizedOr(Vec3::sZero()), Color::sWhite, 0.1f);
+
441 hull.DrawState();
+
442#endif
+
443
+
444 // Calculate penetration by getting the vector from the origin to the closest point on the triangle:
+
445 // distance = (centroid - origin) . normal / |normal|, closest = origin + distance * normal / |normal|
+
446 outV = (last->mCentroid.Dot(last->mNormal) / last->mNormal.LengthSq()) * last->mNormal;
+
447
+
448 // If penetration is near zero, treat this as a non collision since we cannot find a good normal
+
449 if (outV.IsNearZero())
+
450 return false;
+
451
+
452 // Check if we have to flip the sign of the penetration depth
+
453 if (flip_v_sign)
+
454 outV = -outV;
+
455
+
456 // Use the barycentric coordinates for the closest point to the origin to find the contact points on A and B
+
457 Vec3 p0 = support_points.mP[last->mEdge[0].mStartIdx];
+
458 Vec3 p1 = support_points.mP[last->mEdge[1].mStartIdx];
+
459 Vec3 p2 = support_points.mP[last->mEdge[2].mStartIdx];
+
460
+
461 Vec3 q0 = support_points.mQ[last->mEdge[0].mStartIdx];
+
462 Vec3 q1 = support_points.mQ[last->mEdge[1].mStartIdx];
+
463 Vec3 q2 = support_points.mQ[last->mEdge[2].mStartIdx];
+
464
+
465 if (last->mLambdaRelativeTo0)
+
466 {
+
467 // y0 was the reference vertex
+
468 outPointA = p0 + last->mLambda[0] * (p1 - p0) + last->mLambda[1] * (p2 - p0);
+
469 outPointB = q0 + last->mLambda[0] * (q1 - q0) + last->mLambda[1] * (q2 - q0);
+
470 }
+
471 else
+
472 {
+
473 // y1 was the reference vertex
+
474 outPointA = p1 + last->mLambda[0] * (p0 - p1) + last->mLambda[1] * (p2 - p1);
+
475 outPointB = q1 + last->mLambda[0] * (q0 - q1) + last->mLambda[1] * (q2 - q1);
+
476 }
+
477
+
478 return true;
+
479 }
+
+
480
+
484 template <typename AE, typename AI, typename BE, typename BI>
+
+
485 bool GetPenetrationDepth(const AE &inAExcludingConvexRadius, const AI &inAIncludingConvexRadius, float inConvexRadiusA, const BE &inBExcludingConvexRadius, const BI &inBIncludingConvexRadius, float inConvexRadiusB, float inCollisionToleranceSq, float inPenetrationTolerance, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)
+
486 {
+
487 // Check result of collision detection
+
488 switch (GetPenetrationDepthStepGJK(inAExcludingConvexRadius, inConvexRadiusA, inBExcludingConvexRadius, inConvexRadiusB, inCollisionToleranceSq, ioV, outPointA, outPointB))
+
489 {
+ +
491 return true;
+
492
+ +
494 return false;
+
495
+ +
497 return GetPenetrationDepthStepEPA(inAIncludingConvexRadius, inBIncludingConvexRadius, inPenetrationTolerance, ioV, outPointA, outPointB);
+
498 }
+
499
+
500 JPH_ASSERT(false);
+
501 return false;
+
502 }
+
+
503
+
521 template <typename A, typename B>
+
+
522 bool CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inCollisionTolerance, float inPenetrationTolerance, const A &inA, const B &inB, float inConvexRadiusA, float inConvexRadiusB, bool inReturnDeepestPoint, float &ioLambda, Vec3 &outPointA, Vec3 &outPointB, Vec3 &outContactNormal)
+
523 {
+
524 JPH_IF_ENABLE_ASSERTS(mGJKTolerance = inCollisionTolerance;)
+
525
+
526 // First determine if there's a collision at all
+
527 if (!mGJK.CastShape(inStart, inDirection, inCollisionTolerance, inA, inB, inConvexRadiusA, inConvexRadiusB, ioLambda, outPointA, outPointB, outContactNormal))
+
528 return false;
+
529
+
530 // When our contact normal is too small, we don't have an accurate result
+
531 bool contact_normal_invalid = outContactNormal.IsNearZero(Square(inCollisionTolerance));
+
532
+
533 if (inReturnDeepestPoint
+
534 && ioLambda == 0.0f // Only when lambda = 0 we can have the bodies overlap
+
535 && (inConvexRadiusA + inConvexRadiusB == 0.0f // When no convex radius was provided we can never trust contact points at lambda = 0
+
536 || contact_normal_invalid))
+
537 {
+
538 // If we're initially intersecting, we need to run the EPA algorithm in order to find the deepest contact point
+
539 AddConvexRadius<A> add_convex_a(inA, inConvexRadiusA);
+
540 AddConvexRadius<B> add_convex_b(inB, inConvexRadiusB);
+
541 TransformedConvexObject<AddConvexRadius<A>> transformed_a(inStart, add_convex_a);
+
542 if (!GetPenetrationDepthStepEPA(transformed_a, add_convex_b, inPenetrationTolerance, outContactNormal, outPointA, outPointB))
+
543 return false;
+
544 }
+
545 else if (contact_normal_invalid)
+
546 {
+
547 // If we weren't able to calculate a contact normal, use the cast direction instead
+
548 outContactNormal = inDirection;
+
549 }
+
550
+
551 return true;
+
552 }
+
+
553};
+
+
554
+ +
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
TraceFunction Trace
Definition IssueReporting.cpp:18
+
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
JPH_INLINE constexpr float DegreesToRadians(float inV)
Convert a value from degrees to radians.
Definition Math.h:13
+ +
#define JPH_PROFILE_FUNCTION()
Scope profiling for function.
Definition Profiler.h:271
+ +
static const Color sPurple
Definition Color.h:61
+
static const Color sWhite
Definition Color.h:67
+
static const Color sRed
Definition Color.h:55
+
static const Color sYellow
Definition Color.h:60
+
GeometryRef CreateTriangleGeometryForConvex(SupportFunction inGetSupport)
Definition DebugRenderer.cpp:698
+
static DebugRenderer * sInstance
Singleton instance.
Definition DebugRenderer.h:179
+
int mStartIdx
Vertex index in mPositions that indicates the start vertex of this edge.
Definition EPAConvexHullBuilder.h:54
+
Specialized points list that allows direct access to the size.
Definition EPAConvexHullBuilder.h:172
+
Class that holds the information of one triangle.
Definition EPAConvexHullBuilder.h:62
+
Vec3 mCentroid
Center of the triangle.
Definition EPAConvexHullBuilder.h:89
+
bool IsFacing(Vec3Arg inPosition) const
Check if triangle is facing inPosition.
Definition EPAConvexHullBuilder.h:68
+
Vec3 mNormal
Normal of this triangle, length is 2 times area of triangle.
Definition EPAConvexHullBuilder.h:88
+
Edge mEdge[3]
3 edges of this triangle
Definition EPAConvexHullBuilder.h:87
+
float mClosestLenSq
Closest distance^2 from origin to triangle.
Definition EPAConvexHullBuilder.h:90
+
float mLambda[2]
Barycentric coordinates of closest point to origin on triangle.
Definition EPAConvexHullBuilder.h:91
+
bool mLambdaRelativeTo0
How to calculate the closest point, true: y0 + l0 * (y1 - y0) + l1 * (y2 - y0), false: y1 + l0 * (y0 ...
Definition EPAConvexHullBuilder.h:92
+
bool mRemoved
Flag that indicates that triangle has been removed.
Definition EPAConvexHullBuilder.h:94
+
A convex hull builder specifically made for the EPA penetration depth calculation....
Definition EPAConvexHullBuilder.h:24
+
Triangle * PeekClosestTriangleInQueue()
Access to the next closest triangle to the origin (won't remove it from the queue).
Definition EPAConvexHullBuilder.h:267
+
bool HasNextTriangle() const
Check if there's another triangle to process from the queue.
Definition EPAConvexHullBuilder.h:261
+
static constexpr int cMaxPoints
Max number of points in hull.
Definition EPAConvexHullBuilder.h:36
+
Triangle * PopClosestTriangleFromQueue()
Access to the next closest triangle to the origin and remove it from the queue.
Definition EPAConvexHullBuilder.h:273
+
void FreeTriangle(Triangle *inT)
Free a triangle.
Definition EPAConvexHullBuilder.h:365
+
Triangle * FindFacingTriangle(Vec3Arg inPosition, float &outBestDistSq)
Definition EPAConvexHullBuilder.h:280
+
void Initialize(int inIdx1, int inIdx2, int inIdx3)
Initialize the hull with 3 points.
Definition EPAConvexHullBuilder.h:233
+
bool AddPoint(Triangle *inFacingTriangle, int inIdx, float inClosestDistSq, NewTriangles &outTriangles)
Add a new point to the convex hull.
Definition EPAConvexHullBuilder.h:305
+
Definition EPAPenetrationDepth.h:37
+
bool CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inCollisionTolerance, float inPenetrationTolerance, const A &inA, const B &inB, float inConvexRadiusA, float inConvexRadiusB, bool inReturnDeepestPoint, float &ioLambda, Vec3 &outPointA, Vec3 &outPointB, Vec3 &outContactNormal)
Definition EPAPenetrationDepth.h:522
+
bool GetPenetrationDepth(const AE &inAExcludingConvexRadius, const AI &inAIncludingConvexRadius, float inConvexRadiusA, const BE &inBExcludingConvexRadius, const BI &inBIncludingConvexRadius, float inConvexRadiusB, float inCollisionToleranceSq, float inPenetrationTolerance, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)
Definition EPAPenetrationDepth.h:485
+
EStatus GetPenetrationDepthStepGJK(const AE &inAExcludingConvexRadius, float inConvexRadiusA, const BE &inBExcludingConvexRadius, float inConvexRadiusB, float inTolerance, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)
Definition EPAPenetrationDepth.h:104
+
EStatus
Return code for GetPenetrationDepthStepGJK.
Definition EPAPenetrationDepth.h:86
+
@ NotColliding
Returned if the objects don't collide, in this case outPointA/outPointB are invalid.
+
@ Indeterminate
Returned if the objects penetrate further than the convex radius. In this case you need to call GetPe...
+
@ Colliding
Returned if the objects penetrate.
+
bool GetPenetrationDepthStepEPA(const AI &inAIncludingConvexRadius, const BI &inBIncludingConvexRadius, float inTolerance, Vec3 &outV, Vec3 &outPointA, Vec3 &outPointB)
Definition EPAPenetrationDepth.h:147
+
Definition GJKClosestPoint.h:23
+
bool CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float &ioLambda)
Definition GJKClosestPoint.h:659
+
void GetClosestPointsSimplex(Vec3 *outY, Vec3 *outP, Vec3 *outQ, uint &outNumPoints) const
Definition GJKClosestPoint.h:496
+
float GetClosestPoints(const A &inA, const B &inB, float inTolerance, float inMaxDistSq, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)
Definition GJKClosestPoint.h:328
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sRotation(Vec3Arg inAxis, float inAngle)
Rotate around arbitrary axis.
Definition Mat44.inl:139
+ +
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
void push_back(const T &inElement)
Add element to the back of the array.
Definition StaticArray.h:61
+
uint size_type
Definition StaticArray.h:18
+
size_type size() const
Returns amount of elements in the array.
Definition StaticArray.h:89
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE Vec3 GetNormalizedPerpendicular() const
Get normalized vector that is perpendicular to this vector.
Definition Vec3.inl:820
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
JPH_INLINE Vec3 NormalizedOr(Vec3Arg inZeroValue) const
Normalize vector or return inZeroValue if the length of the vector is zero.
Definition Vec3.inl:716
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
JPH_INLINE bool IsNearZero(float inMaxDistSq=1.0e-12f) const
Test if vector is near zero.
Definition Vec3.inl:347
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
Structure that adds a convex radius.
Definition ConvexSupport.h:46
+
Structure that performs a Minkowski difference A - B.
Definition ConvexSupport.h:67
+
Vec3 GetSupport(Vec3Arg inDirection) const
Calculate the support vector for this convex shape.
Definition ConvexSupport.h:75
+
Definition ConvexSupport.h:15
+
+
+ + + + diff --git a/_e_physics_update_error_8h.html b/_e_physics_update_error_8h.html new file mode 100644 index 000000000..8939dec02 --- /dev/null +++ b/_e_physics_update_error_8h.html @@ -0,0 +1,292 @@ + + + + + + + +Jolt Physics: Jolt/Physics/EPhysicsUpdateError.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EPhysicsUpdateError.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Enumerations

enum class  EPhysicsUpdateError : uint32 { None = 0 +, ManifoldCacheFull = 1 << 0 +, BodyPairCacheFull = 1 << 1 +, ContactConstraintsFull = 1 << 2 + }
 Enum used by PhysicsSystem to report error conditions during the PhysicsSystem::Update call. This is a bit field, multiple errors can trigger in the same update. More...
 
+ + + + + + + + + + +

+Functions

EPhysicsUpdateError operator| (EPhysicsUpdateError inA, EPhysicsUpdateError inB)
 OR operator for EPhysicsUpdateError.
 
EPhysicsUpdateError operator|= (EPhysicsUpdateError &ioA, EPhysicsUpdateError inB)
 OR operator for EPhysicsUpdateError.
 
EPhysicsUpdateError operator& (EPhysicsUpdateError inA, EPhysicsUpdateError inB)
 AND operator for EPhysicsUpdateError.
 
+

Enumeration Type Documentation

+ +

◆ EPhysicsUpdateError

+ +
+
+ + + + + +
+ + + + +
enum class EPhysicsUpdateError : uint32
+
+strong
+
+ +

Enum used by PhysicsSystem to report error conditions during the PhysicsSystem::Update call. This is a bit field, multiple errors can trigger in the same update.

+ + + + + +
Enumerator
None 

No errors.

+
ManifoldCacheFull 

The manifold cache is full, this means that the total number of contacts between bodies is too high. Some contacts were ignored. Increase inMaxContactConstraints in PhysicsSystem::Init.

+
BodyPairCacheFull 

The body pair cache is full, this means that too many bodies contacted. Some contacts were ignored. Increase inMaxBodyPairs in PhysicsSystem::Init.

+
ContactConstraintsFull 

The contact constraints buffer is full. Some contacts were ignored. Increase inMaxContactConstraints in PhysicsSystem::Init.

+
+ +
+
+

Function Documentation

+ +

◆ operator&()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
EPhysicsUpdateError operator& (EPhysicsUpdateError inA,
EPhysicsUpdateError inB 
)
+
+inline
+
+ +

AND operator for EPhysicsUpdateError.

+ +
+
+ +

◆ operator|()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
EPhysicsUpdateError operator| (EPhysicsUpdateError inA,
EPhysicsUpdateError inB 
)
+
+inline
+
+ +

OR operator for EPhysicsUpdateError.

+ +
+
+ +

◆ operator|=()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
EPhysicsUpdateError operator|= (EPhysicsUpdateErrorioA,
EPhysicsUpdateError inB 
)
+
+inline
+
+ +

OR operator for EPhysicsUpdateError.

+ +
+
+
+
+ + + + diff --git a/_e_physics_update_error_8h.js b/_e_physics_update_error_8h.js new file mode 100644 index 000000000..ea13f7c10 --- /dev/null +++ b/_e_physics_update_error_8h.js @@ -0,0 +1,12 @@ +var _e_physics_update_error_8h = +[ + [ "EPhysicsUpdateError", "_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1", [ + [ "None", "_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1a6adf97f83acf6453d4a6a4b1070f3754", null ], + [ "ManifoldCacheFull", "_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1af70fe751732841aff62ebf25b54b16c0", null ], + [ "BodyPairCacheFull", "_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1a35c89f6a1eb10c72daa6336df0374fa1", null ], + [ "ContactConstraintsFull", "_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1ac8ef9103ce98948ba4d14f7318cf05e2", null ] + ] ], + [ "operator&", "_e_physics_update_error_8h.html#af38237fdd96afc7f0ca862bdff6d4cb9", null ], + [ "operator|", "_e_physics_update_error_8h.html#a8f7b83ff42ced4840cfbb0d3d0f02f0d", null ], + [ "operator|=", "_e_physics_update_error_8h.html#abaecadefb2cb3ff68d5c610b8cb0968a", null ] +]; \ No newline at end of file diff --git a/_e_physics_update_error_8h_source.html b/_e_physics_update_error_8h_source.html new file mode 100644 index 000000000..776fb1543 --- /dev/null +++ b/_e_physics_update_error_8h_source.html @@ -0,0 +1,171 @@ + + + + + + + +Jolt Physics: Jolt/Physics/EPhysicsUpdateError.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EPhysicsUpdateError.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+
+ +
11{
+
12 None = 0,
+
13 ManifoldCacheFull = 1 << 0,
+
14 BodyPairCacheFull = 1 << 1,
+
15 ContactConstraintsFull = 1 << 2,
+
16};
+
+
17
+
+ +
20{
+
21 return static_cast<EPhysicsUpdateError>(static_cast<uint32>(inA) | static_cast<uint32>(inB));
+
22}
+
+
23
+
+ +
26{
+
27 ioA = ioA | inB;
+
28 return ioA;
+
29}
+
+
30
+
+ +
33{
+
34 return static_cast<EPhysicsUpdateError>(static_cast<uint32>(inA) & static_cast<uint32>(inB));
+
35}
+
+
36
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
EPhysicsUpdateError
Enum used by PhysicsSystem to report error conditions during the PhysicsSystem::Update call....
Definition EPhysicsUpdateError.h:11
+
@ BodyPairCacheFull
The body pair cache is full, this means that too many bodies contacted. Some contacts were ignored....
+ +
@ ContactConstraintsFull
The contact constraints buffer is full. Some contacts were ignored. Increase inMaxContactConstraints ...
+
@ ManifoldCacheFull
The manifold cache is full, this means that the total number of contacts between bodies is too high....
+
EPhysicsUpdateError operator|(EPhysicsUpdateError inA, EPhysicsUpdateError inB)
OR operator for EPhysicsUpdateError.
Definition EPhysicsUpdateError.h:19
+
EPhysicsUpdateError operator|=(EPhysicsUpdateError &ioA, EPhysicsUpdateError inB)
OR operator for EPhysicsUpdateError.
Definition EPhysicsUpdateError.h:25
+
EPhysicsUpdateError operator&(EPhysicsUpdateError inA, EPhysicsUpdateError inB)
AND operator for EPhysicsUpdateError.
Definition EPhysicsUpdateError.h:32
+
+
+ + + + diff --git a/_eigen_value_symmetric_8h.html b/_eigen_value_symmetric_8h.html new file mode 100644 index 000000000..4ac91679e --- /dev/null +++ b/_eigen_value_symmetric_8h.html @@ -0,0 +1,233 @@ + + + + + + + +Jolt Physics: Jolt/Math/EigenValueSymmetric.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EigenValueSymmetric.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Macros

#define JPH_EVS_ROTATE(a, i, j, k, l)
 
+ + + + +

+Functions

template<class Vector , class Matrix >
JPH_NAMESPACE_BEGIN bool EigenValueSymmetric (const Matrix &inMatrix, Matrix &outEigVec, Vector &outEigVal)
 
+

Macro Definition Documentation

+ +

◆ JPH_EVS_ROTATE

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define JPH_EVS_ROTATE( a,
 i,
 j,
 k,
 
)
+
+Value:
g = a(i, j), \
+
h = a(k, l), \
+
a(i, j) = g - s * (h + g * tau), \
+
a(k, l) = h + s * (g - h * tau)
+
+
+
+

Function Documentation

+ +

◆ EigenValueSymmetric()

+ +
+
+
+template<class Vector , class Matrix >
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN bool EigenValueSymmetric (const MatrixinMatrix,
MatrixoutEigVec,
VectoroutEigVal 
)
+
+

Function to determine the eigen vectors and values of a N x N real symmetric matrix by Jacobi transformations. This method is most suitable for N < 10.

+

Taken and adapted from Numerical Recipies paragraph 11.1

+

An eigen vector is a vector v for which \(A \: v = \lambda \: v\)

+

Where: A: A square matrix. \(\lambda\): a non-zero constant value.

+
See also
https://en.wikipedia.org/wiki/Eigenvalues_and_eigenvectors
+

Matrix is a matrix type, which has dimensions N x N.

Parameters
+ + + + +
inMatrixis the matrix of which to return the eigenvalues and vectors
outEigVecwill contain a matrix whose columns contain the normalized eigenvectors (must be identity before call)
outEigValwill contain the eigenvalues
+
+
+ +
+
+
+
+ + + + diff --git a/_eigen_value_symmetric_8h.js b/_eigen_value_symmetric_8h.js new file mode 100644 index 000000000..65f4acc92 --- /dev/null +++ b/_eigen_value_symmetric_8h.js @@ -0,0 +1,5 @@ +var _eigen_value_symmetric_8h = +[ + [ "JPH_EVS_ROTATE", "_eigen_value_symmetric_8h.html#a7de93add3597eb0ea0e78c5cd45f9725", null ], + [ "EigenValueSymmetric", "_eigen_value_symmetric_8h.html#a63488e363acda8a1bd4cd3d297bf4d54", null ] +]; \ No newline at end of file diff --git a/_eigen_value_symmetric_8h_source.html b/_eigen_value_symmetric_8h_source.html new file mode 100644 index 000000000..287a25d0c --- /dev/null +++ b/_eigen_value_symmetric_8h_source.html @@ -0,0 +1,299 @@ + + + + + + + +Jolt Physics: Jolt/Math/EigenValueSymmetric.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EigenValueSymmetric.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
+
28template <class Vector, class Matrix>
+
+
29bool EigenValueSymmetric(const Matrix &inMatrix, Matrix &outEigVec, Vector &outEigVal)
+
30{
+
31 // This algorithm can generate infinite values, see comment below
+
32 FPExceptionDisableInvalid disable_invalid;
+
33 (void)disable_invalid;
+
34
+
35 // Maximum number of sweeps to make
+
36 const int cMaxSweeps = 50;
+
37
+
38 // Get problem dimension
+
39 const uint n = inMatrix.GetRows();
+
40
+
41 // Make sure the dimensions are right
+
42 JPH_ASSERT(inMatrix.GetRows() == n);
+
43 JPH_ASSERT(inMatrix.GetCols() == n);
+
44 JPH_ASSERT(outEigVec.GetRows() == n);
+
45 JPH_ASSERT(outEigVec.GetCols() == n);
+
46 JPH_ASSERT(outEigVal.GetRows() == n);
+
47 JPH_ASSERT(outEigVec.IsIdentity());
+
48
+
49 // Get the matrix in a so we can mess with it
+
50 Matrix a = inMatrix;
+
51
+
52 Vector b, z;
+
53
+
54 for (uint ip = 0; ip < n; ++ip)
+
55 {
+
56 // Initialize b to diagonal of a
+
57 b[ip] = a(ip, ip);
+
58
+
59 // Initialize output to diagonal of a
+
60 outEigVal[ip] = a(ip, ip);
+
61
+
62 // Reset z
+
63 z[ip] = 0.0f;
+
64 }
+
65
+
66 for (int sweep = 0; sweep < cMaxSweeps; ++sweep)
+
67 {
+
68 // Get the sum of the off-diagonal elements of a
+
69 float sm = 0.0f;
+
70 for (uint ip = 0; ip < n - 1; ++ip)
+
71 for (uint iq = ip + 1; iq < n; ++iq)
+
72 sm += abs(a(ip, iq));
+
73 float avg_sm = sm / Square(n);
+
74
+
75 // Normal return, convergence to machine underflow
+
76 if (avg_sm < FLT_MIN) // Original code: sm == 0.0f, when the average is denormal, we also consider it machine underflow
+
77 {
+
78 // Sanity checks
+
79 #ifdef JPH_ENABLE_ASSERTS
+
80 for (uint c = 0; c < n; ++c)
+
81 {
+
82 // Check if the eigenvector is normalized
+
83 JPH_ASSERT(outEigVec.GetColumn(c).IsNormalized());
+
84
+
85 // Check if inMatrix * eigen_vector = eigen_value * eigen_vector
+
86 Vector mat_eigvec = inMatrix * outEigVec.GetColumn(c);
+
87 Vector eigval_eigvec = outEigVal[c] * outEigVec.GetColumn(c);
+
88 JPH_ASSERT(mat_eigvec.IsClose(eigval_eigvec, max(mat_eigvec.LengthSq(), eigval_eigvec.LengthSq()) * 1.0e-6f));
+
89 }
+
90 #endif
+
91
+
92 // Success
+
93 return true;
+
94 }
+
95
+
96 // On the first three sweeps use a fraction of the sum of the off diagonal elements as threshold
+
97 // Note that we pick a minimum threshold of FLT_MIN because dividing by a denormalized number is likely to result in infinity.
+
98 float tresh = sweep < 4? 0.2f * avg_sm : FLT_MIN; // Original code: 0.0f instead of FLT_MIN
+
99
+
100 for (uint ip = 0; ip < n - 1; ++ip)
+
101 for (uint iq = ip + 1; iq < n; ++iq)
+
102 {
+
103 float &a_pq = a(ip, iq);
+
104 float &eigval_p = outEigVal[ip];
+
105 float &eigval_q = outEigVal[iq];
+
106
+
107 float abs_a_pq = abs(a_pq);
+
108 float g = 100.0f * abs_a_pq;
+
109
+
110 // After four sweeps, skip the rotation if the off-diagonal element is small
+
111 if (sweep > 4
+
112 && abs(eigval_p) + g == abs(eigval_p)
+
113 && abs(eigval_q) + g == abs(eigval_q))
+
114 {
+
115 a_pq = 0.0f;
+
116 }
+
117 else if (abs_a_pq > tresh)
+
118 {
+
119 float h = eigval_q - eigval_p;
+
120 float abs_h = abs(h);
+
121
+
122 float t;
+
123 if (abs_h + g == abs_h)
+
124 {
+
125 t = a_pq / h;
+
126 }
+
127 else
+
128 {
+
129 float theta = 0.5f * h / a_pq; // Warning: Can become infinite if a(ip, iq) is very small which may trigger an invalid float exception
+
130 t = 1.0f / (abs(theta) + sqrt(1.0f + theta * theta)); // If theta becomes inf, t will be 0 so the infinite is not a problem for the algorithm
+
131 if (theta < 0.0f) t = -t;
+
132 }
+
133
+
134 float c = 1.0f / sqrt(1.0f + t * t);
+
135 float s = t * c;
+
136 float tau = s / (1.0f + c);
+
137 h = t * a_pq;
+
138
+
139 a_pq = 0.0f;
+
140
+
141 z[ip] -= h;
+
142 z[iq] += h;
+
143
+
144 eigval_p -= h;
+
145 eigval_q += h;
+
146
+
147 #define JPH_EVS_ROTATE(a, i, j, k, l) \
+
148 g = a(i, j), \
+
149 h = a(k, l), \
+
150 a(i, j) = g - s * (h + g * tau), \
+
151 a(k, l) = h + s * (g - h * tau)
+
152
+
153 uint j;
+
154 for (j = 0; j < ip; ++j) JPH_EVS_ROTATE(a, j, ip, j, iq);
+
155 for (j = ip + 1; j < iq; ++j) JPH_EVS_ROTATE(a, ip, j, j, iq);
+
156 for (j = iq + 1; j < n; ++j) JPH_EVS_ROTATE(a, ip, j, iq, j);
+
157 for (j = 0; j < n; ++j) JPH_EVS_ROTATE(outEigVec, j, ip, j, iq);
+
158
+
159 #undef JPH_EVS_ROTATE
+
160 }
+
161 }
+
162
+
163 // Update eigenvalues with the sum of ta_pq and reinitialize z
+
164 for (uint ip = 0; ip < n; ++ip)
+
165 {
+
166 b[ip] += z[ip];
+
167 outEigVal[ip] = b[ip];
+
168 z[ip] = 0.0f;
+
169 }
+
170 }
+
171
+
172 // Failure
+
173 JPH_ASSERT(false, "Too many iterations");
+
174 return false;
+
175}
+
+
176
+ +
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_NAMESPACE_BEGIN bool EigenValueSymmetric(const Matrix &inMatrix, Matrix &outEigVec, Vector &outEigVal)
Definition EigenValueSymmetric.h:29
+
#define JPH_EVS_ROTATE(a, i, j, k, l)
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
Definition FPException.h:69
+
Templatized matrix class.
Definition Matrix.h:15
+
uint GetRows() const
Dimensions.
Definition Matrix.h:22
+
bool IsIdentity() const
Check if this matrix is identity.
Definition Matrix.h:58
+
uint GetCols() const
Definition Matrix.h:23
+
const Vector< Rows > & GetColumn(int inIdx) const
Column access.
Definition Matrix.h:225
+
Templatized vector class.
Definition Vector.h:12
+
uint GetRows() const
Dimensions.
Definition Vector.h:19
+
bool IsClose(const Vector &inV2, float inMaxDistSq=1.0e-12f)
Test if two vectors are close to each other.
Definition Vector.h:78
+
float LengthSq() const
Squared length of vector.
Definition Vector.h:175
+
+
+ + + + diff --git a/_ellipse_8h.html b/_ellipse_8h.html new file mode 100644 index 000000000..f90c6c0b7 --- /dev/null +++ b/_ellipse_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/Ellipse.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Ellipse.h File Reference
+
+
+
#include <Jolt/Math/Float2.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  Ellipse
 
+
+
+ + + + diff --git a/_ellipse_8h.js b/_ellipse_8h.js new file mode 100644 index 000000000..c9cfa6ef7 --- /dev/null +++ b/_ellipse_8h.js @@ -0,0 +1,4 @@ +var _ellipse_8h = +[ + [ "Ellipse", "class_ellipse.html", "class_ellipse" ] +]; \ No newline at end of file diff --git a/_ellipse_8h_source.html b/_ellipse_8h_source.html new file mode 100644 index 000000000..2ac4da663 --- /dev/null +++ b/_ellipse_8h_source.html @@ -0,0 +1,211 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/Ellipse.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Ellipse.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
+
7#include <Jolt/Math/Float2.h>
+
8
+ +
10
+
+ +
14{
+
15public:
+ +
17
+
19 Ellipse(float inA, float inB) : mA(inA), mB(inB) { JPH_ASSERT(inA > 0.0f); JPH_ASSERT(inB > 0.0f); }
+
20
+
+
22 bool IsInside(const Float2 &inPoint) const
+
23 {
+
24 return Square(inPoint.x / mA) + Square(inPoint.y / mB) <= 1.0f;
+
25 }
+
+
26
+
+
30 Float2 GetClosestPoint(const Float2 &inPoint) const
+
31 {
+
32 float a_sq = Square(mA);
+
33 float b_sq = Square(mB);
+
34
+
35 // Equation of ellipse: f(x, y) = (x/a)^2 + (y/b)^2 - 1 = 0 [1]
+
36 // Normal on surface: (df/dx, df/dy) = (2 x / a^2, 2 y / b^2)
+
37 // Closest point (x', y') on ellipse to point (x, y): (x', y') + t (x / a^2, y / b^2) = (x, y)
+
38 // <=> (x', y') = (a^2 x / (t + a^2), b^2 y / (t + b^2))
+
39 // Requiring point to be on ellipse (substituting into [1]): g(t) = (a x / (t + a^2))^2 + (b y / (t + b^2))^2 - 1 = 0
+
40
+
41 // Newton raphson iteration, starting at t = 0
+
42 float t = 0.0f;
+
43 for (;;)
+
44 {
+
45 // Calculate g(t)
+
46 float t_plus_a_sq = t + a_sq;
+
47 float t_plus_b_sq = t + b_sq;
+
48 float gt = Square(mA * inPoint.x / t_plus_a_sq) + Square(mB * inPoint.y / t_plus_b_sq) - 1.0f;
+
49
+
50 // Check if g(t) it is close enough to zero
+
51 if (abs(gt) < 1.0e-6f)
+
52 return Float2(a_sq * inPoint.x / t_plus_a_sq, b_sq * inPoint.y / t_plus_b_sq);
+
53
+
54 // Get derivative dg/dt = g'(t) = -2 (b^2 y^2 / (t + b^2)^3 + a^2 x^2 / (t + a^2)^3)
+
55 float gt_accent = -2.0f *
+
56 (a_sq * Square(inPoint.x) / Cubed(t_plus_a_sq)
+
57 + b_sq * Square(inPoint.y) / Cubed(t_plus_b_sq));
+
58
+
59 // Calculate t for next iteration: tn+1 = tn - g(t) / g'(t)
+
60 float tn = t - gt / gt_accent;
+
61 t = tn;
+
62 }
+
63 }
+
+
64
+
+
66 Float2 GetNormal(const Float2 &inPoint) const
+
67 {
+
68 // Calculated by [d/dx f(x, y), d/dy f(x, y)], where f(x, y) is the ellipse equation from above
+
69 return Float2(inPoint.x / Square(mA), inPoint.y / Square(mB));
+
70 }
+
+
71
+
72private:
+
73 float mA;
+
74 float mB;
+
75};
+
+
76
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
JPH_INLINE constexpr T Cubed(T inV)
Returns .
Definition Math.h:59
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
Definition Ellipse.h:14
+
Float2 GetClosestPoint(const Float2 &inPoint) const
Definition Ellipse.h:30
+
JPH_OVERRIDE_NEW_DELETE Ellipse(float inA, float inB)
Construct ellipse with radius A along the X-axis and B along the Y-axis.
Definition Ellipse.h:19
+
bool IsInside(const Float2 &inPoint) const
Check if inPoint is inside the ellipse.
Definition Ellipse.h:22
+
Float2 GetNormal(const Float2 &inPoint) const
Get normal at point inPoint (non-normalized vector)
Definition Ellipse.h:66
+
Class that holds 2 floats, used as a storage class mainly.
Definition Float2.h:11
+
float y
Definition Float2.h:31
+
float x
Definition Float2.h:30
+
+
+ + + + diff --git a/_estimate_collision_response_8cpp.html b/_estimate_collision_response_8cpp.html new file mode 100644 index 000000000..d540af271 --- /dev/null +++ b/_estimate_collision_response_8cpp.html @@ -0,0 +1,204 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/EstimateCollisionResponse.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EstimateCollisionResponse.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN void EstimateCollisionResponse (const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, CollisionEstimationResult &outResult, float inCombinedFriction, float inCombinedRestitution, float inMinVelocityForRestitution, uint inNumIterations)
 
+

Function Documentation

+ +

◆ EstimateCollisionResponse()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void EstimateCollisionResponse (const BodyinBody1,
const BodyinBody2,
const ContactManifoldinManifold,
CollisionEstimationResultoutResult,
float inCombinedFriction,
float inCombinedRestitution,
float inMinVelocityForRestitution = 1.0f,
uint inNumIterations = 10 
)
+
+

This function estimates the contact impulses and body velocity changes as a result of a collision. It can be used in the ContactListener::OnContactAdded to determine the strength of the collision to e.g. play a sound or trigger a particle system. This function is accurate when two bodies collide but will not be accurate when more than 2 bodies collide at the same time as it does not know about these other collisions.

+
Parameters
+ + + + + + + + + +
inBody1Colliding body 1
inBody2Colliding body 2
inManifoldThe collision manifold
outResultA structure that contains the estimated contact and friction impulses and the resulting body velocities
inCombinedFrictionThe combined friction of body 1 and body 2 (see ContactSettings::mCombinedFriction)
inCombinedRestitutionThe combined restitution of body 1 and body 2 (see ContactSettings::mCombinedRestitution)
inMinVelocityForRestitutionMinimal velocity required for restitution to be applied (see PhysicsSettings::mMinVelocityForRestitution)
inNumIterationsNumber of iterations to use for the impulse estimation (see PhysicsSettings::mNumVelocitySteps, note you can probably use a lower number for a decent estimate). If you set the number of iterations to 1 then no friction will be calculated.
+
+
+ +
+
+
+
+ + + + diff --git a/_estimate_collision_response_8cpp.js b/_estimate_collision_response_8cpp.js new file mode 100644 index 000000000..37d83b037 --- /dev/null +++ b/_estimate_collision_response_8cpp.js @@ -0,0 +1,4 @@ +var _estimate_collision_response_8cpp = +[ + [ "EstimateCollisionResponse", "_estimate_collision_response_8cpp.html#a64da30a754090f2e72e7cb37b55b035f", null ] +]; \ No newline at end of file diff --git a/_estimate_collision_response_8h.html b/_estimate_collision_response_8h.html new file mode 100644 index 000000000..f5ddb256d --- /dev/null +++ b/_estimate_collision_response_8h.html @@ -0,0 +1,213 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/EstimateCollisionResponse.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EstimateCollisionResponse.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

struct  CollisionEstimationResult
 A structure that contains the estimated contact and friction impulses and the resulting body velocities. More...
 
struct  CollisionEstimationResult::Impulse
 
+ + + +

+Functions

JPH_EXPORT void EstimateCollisionResponse (const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, CollisionEstimationResult &outResult, float inCombinedFriction, float inCombinedRestitution, float inMinVelocityForRestitution=1.0f, uint inNumIterations=10)
 
+

Function Documentation

+ +

◆ EstimateCollisionResponse()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_EXPORT void EstimateCollisionResponse (const BodyinBody1,
const BodyinBody2,
const ContactManifoldinManifold,
CollisionEstimationResultoutResult,
float inCombinedFriction,
float inCombinedRestitution,
float inMinVelocityForRestitution = 1.0f,
uint inNumIterations = 10 
)
+
+

This function estimates the contact impulses and body velocity changes as a result of a collision. It can be used in the ContactListener::OnContactAdded to determine the strength of the collision to e.g. play a sound or trigger a particle system. This function is accurate when two bodies collide but will not be accurate when more than 2 bodies collide at the same time as it does not know about these other collisions.

+
Parameters
+ + + + + + + + + +
inBody1Colliding body 1
inBody2Colliding body 2
inManifoldThe collision manifold
outResultA structure that contains the estimated contact and friction impulses and the resulting body velocities
inCombinedFrictionThe combined friction of body 1 and body 2 (see ContactSettings::mCombinedFriction)
inCombinedRestitutionThe combined restitution of body 1 and body 2 (see ContactSettings::mCombinedRestitution)
inMinVelocityForRestitutionMinimal velocity required for restitution to be applied (see PhysicsSettings::mMinVelocityForRestitution)
inNumIterationsNumber of iterations to use for the impulse estimation (see PhysicsSettings::mNumVelocitySteps, note you can probably use a lower number for a decent estimate). If you set the number of iterations to 1 then no friction will be calculated.
+
+
+ +
+
+
+
+ + + + diff --git a/_estimate_collision_response_8h.js b/_estimate_collision_response_8h.js new file mode 100644 index 000000000..5a42c537d --- /dev/null +++ b/_estimate_collision_response_8h.js @@ -0,0 +1,6 @@ +var _estimate_collision_response_8h = +[ + [ "CollisionEstimationResult", "struct_collision_estimation_result.html", "struct_collision_estimation_result" ], + [ "CollisionEstimationResult::Impulse", "struct_collision_estimation_result_1_1_impulse.html", "struct_collision_estimation_result_1_1_impulse" ], + [ "EstimateCollisionResponse", "_estimate_collision_response_8h.html#aca51bbbf4aaefaa7850fd9b0365b031c", null ] +]; \ No newline at end of file diff --git a/_estimate_collision_response_8h_source.html b/_estimate_collision_response_8h_source.html new file mode 100644 index 000000000..7273dd208 --- /dev/null +++ b/_estimate_collision_response_8h_source.html @@ -0,0 +1,180 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/EstimateCollisionResponse.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EstimateCollisionResponse.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+ +
33
+
46JPH_EXPORT void EstimateCollisionResponse(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, CollisionEstimationResult &outResult, float inCombinedFriction, float inCombinedRestitution, float inMinVelocityForRestitution = 1.0f, uint inNumIterations = 10);
+
47
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_EXPORT void EstimateCollisionResponse(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, CollisionEstimationResult &outResult, float inCombinedFriction, float inCombinedRestitution, float inMinVelocityForRestitution=1.0f, uint inNumIterations=10)
Definition EstimateCollisionResponse.cpp:12
+
Definition Body.h:35
+
Manifold class, describes the contact surface between two bodies.
Definition ContactListener.h:20
+ +
Definition Vec3.h:17
+
Definition EstimateCollisionResponse.h:23
+
float mFrictionImpulse2
Estimated friction impulses in the direction of tangent 2 (kg m / s)
Definition EstimateCollisionResponse.h:26
+
float mContactImpulse
Estimated contact impulses (kg m / s)
Definition EstimateCollisionResponse.h:24
+
float mFrictionImpulse1
Estimated friction impulses in the direction of tangent 1 (kg m / s)
Definition EstimateCollisionResponse.h:25
+
A structure that contains the estimated contact and friction impulses and the resulting body velociti...
Definition EstimateCollisionResponse.h:13
+
Vec3 mLinearVelocity2
The estimated linear velocity of body 2 after collision.
Definition EstimateCollisionResponse.h:16
+
Vec3 mAngularVelocity1
The estimated angular velocity of body 1 after collision.
Definition EstimateCollisionResponse.h:15
+
Vec3 mTangent2
Second normalized tangent of contact normal (forms a basis with mTangent1 and mWorldSpaceNormal)
Definition EstimateCollisionResponse.h:20
+
Vec3 mTangent1
Normalized tangent of contact normal.
Definition EstimateCollisionResponse.h:19
+
Impulses mImpulses
Definition EstimateCollisionResponse.h:31
+
Vec3 mLinearVelocity1
The estimated linear velocity of body 1 after collision.
Definition EstimateCollisionResponse.h:14
+
Vec3 mAngularVelocity2
The estimated angular velocity of body 2 after collision.
Definition EstimateCollisionResponse.h:17
+
+
+ + + + diff --git a/_f_p_control_word_8h.html b/_f_p_control_word_8h.html new file mode 100644 index 000000000..2c601b87d --- /dev/null +++ b/_f_p_control_word_8h.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/Core/FPControlWord.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FPControlWord.h File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_f_p_control_word_8h_source.html b/_f_p_control_word_8h_source.html new file mode 100644 index 000000000..4f2f1026b --- /dev/null +++ b/_f_p_control_word_8h_source.html @@ -0,0 +1,253 @@ + + + + + + + +Jolt Physics: Jolt/Core/FPControlWord.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FPControlWord.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
+
11#if defined(JPH_CPU_WASM)
+
12
+
13// Not supported
+
14
+
15#elif defined(JPH_USE_SSE)
+
16
+
19template <uint Value, uint Mask>
+
20class FPControlWord : public NonCopyable
+
21{
+
22public:
+
23 FPControlWord()
+
24 {
+
25 mPrevState = _mm_getcsr();
+
26 _mm_setcsr((mPrevState & ~Mask) | Value);
+
27 }
+
28
+
29 ~FPControlWord()
+
30 {
+
31 _mm_setcsr((_mm_getcsr() & ~Mask) | (mPrevState & Mask));
+
32 }
+
33
+
34private:
+
35 uint mPrevState;
+
36};
+
37
+
38#elif defined(JPH_CPU_ARM) && defined(JPH_COMPILER_MSVC)
+
39
+
42template <unsigned int Value, unsigned int Mask>
+
43class FPControlWord : public NonCopyable
+
44{
+
45public:
+
46 FPControlWord()
+
47 {
+
48 // Read state before change
+
49 _controlfp_s(&mPrevState, 0, 0);
+
50
+
51 // Update the state
+
52 unsigned int dummy;
+
53 _controlfp_s(&dummy, Value, Mask);
+
54 }
+
55
+
56 ~FPControlWord()
+
57 {
+
58 // Restore state
+
59 unsigned int dummy;
+
60 _controlfp_s(&dummy, mPrevState, Mask);
+
61 }
+
62
+
63private:
+
64 unsigned int mPrevState;
+
65};
+
66
+
67#elif defined(JPH_CPU_ARM) && defined(JPH_USE_NEON)
+
68
+
71template <uint64 Value, uint64 Mask>
+
72class FPControlWord : public NonCopyable
+
73{
+
74public:
+
75 FPControlWord()
+
76 {
+
77 uint64 val;
+
78 asm volatile("mrs %0, fpcr" : "=r" (val));
+
79 mPrevState = val;
+
80 val &= ~Mask;
+
81 val |= Value;
+
82 asm volatile("msr fpcr, %0" : /* no output */ : "r" (val));
+
83 }
+
84
+
85 ~FPControlWord()
+
86 {
+
87 uint64 val;
+
88 asm volatile("mrs %0, fpcr" : "=r" (val));
+
89 val &= ~Mask;
+
90 val |= mPrevState & Mask;
+
91 asm volatile("msr fpcr, %0" : /* no output */ : "r" (val));
+
92 }
+
93
+
94private:
+
95 uint64 mPrevState;
+
96};
+
97
+
98#elif defined(JPH_CPU_ARM)
+
99
+
102template <uint32 Value, uint32 Mask>
+
103class FPControlWord : public NonCopyable
+
104{
+
105public:
+
106 FPControlWord()
+
107 {
+
108 uint32 val;
+
109 asm volatile("vmrs %0, fpscr" : "=r" (val));
+
110 mPrevState = val;
+
111 val &= ~Mask;
+
112 val |= Value;
+
113 asm volatile("vmsr fpscr, %0" : /* no output */ : "r" (val));
+
114 }
+
115
+
116 ~FPControlWord()
+
117 {
+
118 uint32 val;
+
119 asm volatile("vmrs %0, fpscr" : "=r" (val));
+
120 val &= ~Mask;
+
121 val |= mPrevState & Mask;
+
122 asm volatile("vmsr fpscr, %0" : /* no output */ : "r" (val));
+
123 }
+
124
+
125private:
+
126 uint32 mPrevState;
+
127};
+
128
+
129#else
+
130
+
131#error Unsupported CPU architecture
+
132
+
133#endif
+
134
+ +
std::uint64_t uint64
Definition Core.h:456
+
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
+ +
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
+
+ + + + diff --git a/_f_p_exception_8h.html b/_f_p_exception_8h.html new file mode 100644 index 000000000..96124d57f --- /dev/null +++ b/_f_p_exception_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Core/FPException.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FPException.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + +

+Classes

class  FPExceptionsEnable
 Dummy implementations. More...
 
class  FPExceptionDisableInvalid
 
class  FPExceptionDisableDivByZero
 
+
+
+ + + + diff --git a/_f_p_exception_8h.js b/_f_p_exception_8h.js new file mode 100644 index 000000000..7cce2da42 --- /dev/null +++ b/_f_p_exception_8h.js @@ -0,0 +1,6 @@ +var _f_p_exception_8h = +[ + [ "FPExceptionsEnable", "class_f_p_exceptions_enable.html", null ], + [ "FPExceptionDisableInvalid", "class_f_p_exception_disable_invalid.html", null ], + [ "FPExceptionDisableDivByZero", "class_f_p_exception_disable_div_by_zero.html", null ] +]; \ No newline at end of file diff --git a/_f_p_exception_8h_source.html b/_f_p_exception_8h_source.html new file mode 100644 index 000000000..f4a901a9c --- /dev/null +++ b/_f_p_exception_8h_source.html @@ -0,0 +1,188 @@ + + + + + + + +Jolt Physics: Jolt/Core/FPException.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FPException.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
+
11#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
12
+
13#if defined(JPH_CPU_WASM)
+
14
+
15// Not supported
+
16class FPExceptionsEnable { };
+ + +
19
+
20#elif defined(JPH_USE_SSE)
+
21
+
23class FPExceptionsEnable : public FPControlWord<0, _MM_MASK_DIV_ZERO | _MM_MASK_INVALID> { };
+
24
+
26class FPExceptionDisableInvalid : public FPControlWord<_MM_MASK_INVALID, _MM_MASK_INVALID> { };
+
27
+
29class FPExceptionDisableDivByZero : public FPControlWord<_MM_MASK_DIV_ZERO, _MM_MASK_DIV_ZERO> { };
+
30
+
31#elif defined(JPH_CPU_ARM) && defined(JPH_COMPILER_MSVC)
+
32
+
34class FPExceptionsEnable : public FPControlWord<0, _EM_INVALID | _EM_ZERODIVIDE> { };
+
35
+
37class FPExceptionDisableInvalid : public FPControlWord<_EM_INVALID, _EM_INVALID> { };
+
38
+
40class FPExceptionDisableDivByZero : public FPControlWord<_EM_ZERODIVIDE, _EM_ZERODIVIDE> { };
+
41
+
42#elif defined(JPH_CPU_ARM)
+
43
+
45static constexpr uint64 FP_IOE = 1 << 8;
+
46
+
48static constexpr uint64 FP_DZE = 1 << 9;
+
49
+
51class FPExceptionsEnable : public FPControlWord<FP_IOE | FP_DZE, FP_IOE | FP_DZE> { };
+
52
+
54class FPExceptionDisableInvalid : public FPControlWord<0, FP_IOE> { };
+
55
+
57class FPExceptionDisableDivByZero : public FPControlWord<0, FP_DZE> { };
+
58
+
59#else
+
60
+
61#error Unsupported CPU architecture
+
62
+
63#endif
+
64
+
65#else
+
66
+ + + +
71
+
72#endif
+
73
+ +
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Definition FPException.h:70
+
Definition FPException.h:69
+
Dummy implementations.
Definition FPException.h:68
+
+
+ + + + diff --git a/_f_p_flush_denormals_8h.html b/_f_p_flush_denormals_8h.html new file mode 100644 index 000000000..d52410a18 --- /dev/null +++ b/_f_p_flush_denormals_8h.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/Core/FPFlushDenormals.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FPFlushDenormals.h File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_f_p_flush_denormals_8h_source.html b/_f_p_flush_denormals_8h_source.html new file mode 100644 index 000000000..e50bdd8f5 --- /dev/null +++ b/_f_p_flush_denormals_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: Jolt/Core/FPFlushDenormals.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FPFlushDenormals.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
+
11#if defined(JPH_CPU_WASM)
+
12
+
13// Not supported
+
14class FPFlushDenormals { };
+
15
+
16#elif defined(JPH_USE_SSE)
+
17
+
20class FPFlushDenormals : public FPControlWord<_MM_FLUSH_ZERO_ON, _MM_FLUSH_ZERO_MASK> { };
+
21
+
22#elif defined(JPH_CPU_ARM) && defined(JPH_COMPILER_MSVC)
+
23
+
24class FPFlushDenormals : public FPControlWord<_DN_FLUSH, _MCW_DN> { };
+
25
+
26#elif defined(JPH_CPU_ARM)
+
27
+
29static constexpr uint64 FP_FZ = 1 << 24;
+
30
+
33class FPFlushDenormals : public FPControlWord<FP_FZ, FP_FZ> { };
+
34
+
35#else
+
36
+
37#error Unsupported CPU architecture
+
38
+
39#endif
+
40
+ +
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
+
+ + + + diff --git a/_factory_8cpp.html b/_factory_8cpp.html new file mode 100644 index 000000000..c1d51874c --- /dev/null +++ b/_factory_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Core/Factory.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Factory.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <Jolt/Core/Factory.h>
+
+
+ + + + diff --git a/_factory_8h.html b/_factory_8h.html new file mode 100644 index 000000000..4b68378a3 --- /dev/null +++ b/_factory_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Core/Factory.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Factory.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  Factory
 This class is responsible for creating instances of classes based on their name or hash and is mainly used for deserialization of saved data. More...
 
+
+
+ + + + diff --git a/_factory_8h.js b/_factory_8h.js new file mode 100644 index 000000000..5874d339a --- /dev/null +++ b/_factory_8h.js @@ -0,0 +1,4 @@ +var _factory_8h = +[ + [ "Factory", "class_factory.html", "class_factory" ] +]; \ No newline at end of file diff --git a/_factory_8h_source.html b/_factory_8h_source.html new file mode 100644 index 000000000..1f0ce01f4 --- /dev/null +++ b/_factory_8h_source.html @@ -0,0 +1,178 @@ + + + + + + + +Jolt Physics: Jolt/Core/Factory.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Factory.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
+
7#include <Jolt/Core/RTTI.h>
+ +
9
+ +
11
+
+ +
14{
+
15public:
+ +
17
+
19 void * CreateObject(const char *inName);
+
20
+
22 const RTTI * Find(const char *inName);
+
23
+
25 const RTTI * Find(uint32 inHash);
+
26
+
28 bool Register(const RTTI *inRTTI);
+
29
+
31 bool Register(const RTTI **inRTTIs, uint inNumber);
+
32
+
34 void Clear();
+
35
+
37 Array<const RTTI *> GetAllClasses() const;
+
38
+ +
41
+
42private:
+
43 using ClassNameMap = UnorderedMap<string_view, const RTTI *>;
+
44
+
45 using ClassHashMap = UnorderedMap<uint32, const RTTI *>;
+
46
+
48 ClassNameMap mClassNameMap;
+
49
+
50 // Map of class hash to type info
+
51 ClassHashMap mClassHashMap;
+
52};
+
+
53
+ +
#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
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ + +
std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > > UnorderedMap
Definition UnorderedMap.h:13
+
Definition Array.h:36
+
This class is responsible for creating instances of classes based on their name or hash and is mainly...
Definition Factory.h:14
+
static Factory * sInstance
Singleton factory instance.
Definition Factory.h:40
+
Definition RTTI.h:122
+
+
+ + + + diff --git a/_find_root_8h.html b/_find_root_8h.html new file mode 100644 index 000000000..c669ba054 --- /dev/null +++ b/_find_root_8h.html @@ -0,0 +1,183 @@ + + + + + + + +Jolt Physics: Jolt/Math/FindRoot.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FindRoot.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Functions

template<typename T >
JPH_NAMESPACE_BEGIN int FindRoot (const T inA, const T inB, const T inC, T &outX1, T &outX2)
 
+

Function Documentation

+ +

◆ FindRoot()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN int FindRoot (const T inA,
const T inB,
const T inC,
T & outX1,
T & outX2 
)
+
+inline
+
+

Find the roots of \(inA \: x^2 + inB \: x + inC = 0\).

Returns
The number of roots, actual roots in outX1 and outX2. If number of roots returned is 1 then outX1 == outX2.
+ +
+
+
+
+ + + + diff --git a/_find_root_8h.js b/_find_root_8h.js new file mode 100644 index 000000000..1319a63de --- /dev/null +++ b/_find_root_8h.js @@ -0,0 +1,4 @@ +var _find_root_8h = +[ + [ "FindRoot", "_find_root_8h.html#a3bec219d038a3c84a22b1c07b49b9eca", null ] +]; \ No newline at end of file diff --git a/_find_root_8h_source.html b/_find_root_8h_source.html new file mode 100644 index 000000000..4da4807e5 --- /dev/null +++ b/_find_root_8h_source.html @@ -0,0 +1,165 @@ + + + + + + + +Jolt Physics: Jolt/Math/FindRoot.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FindRoot.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
+
12template <typename T>
+
+
13inline int FindRoot(const T inA, const T inB, const T inC, T &outX1, T &outX2)
+
14{
+
15 // Check if this is a linear equation
+
16 if (inA == T(0))
+
17 {
+
18 // Check if this is a constant equation
+
19 if (inB == T(0))
+
20 return 0;
+
21
+
22 // Linear equation with 1 solution
+
23 outX1 = outX2 = -inC / inB;
+
24 return 1;
+
25 }
+
26
+
27 // See Numerical Recipes in C, Chapter 5.6 Quadratic and Cubic Equations
+
28 T det = Square(inB) - T(4) * inA * inC;
+
29 if (det < T(0))
+
30 return 0;
+
31 T q = (inB + Sign(inB) * sqrt(det)) / T(-2);
+
32 outX1 = q / inA;
+
33 if (q == T(0))
+
34 {
+
35 outX2 = outX1;
+
36 return 1;
+
37 }
+
38 outX2 = inC / q;
+
39 return 2;
+
40}
+
+
41
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_NAMESPACE_BEGIN int FindRoot(const T inA, const T inB, const T inC, T &outX1, T &outX2)
Definition FindRoot.h:13
+
JPH_INLINE constexpr T Sign(T inV)
Get the sign of a value.
Definition Math.h:66
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
+
+ + + + diff --git a/_fixed_constraint_8cpp.html b/_fixed_constraint_8cpp.html new file mode 100644 index 000000000..e7ebe1fec --- /dev/null +++ b/_fixed_constraint_8cpp.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/FixedConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FixedConstraint.cpp File Reference
+
+
+ + + + +

+Functions

 JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (FixedConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (FixedConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_fixed_constraint_8cpp.js b/_fixed_constraint_8cpp.js new file mode 100644 index 000000000..de8fbcea9 --- /dev/null +++ b/_fixed_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _fixed_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_fixed_constraint_8cpp.html#a03a99c0021002c2836af157b408dbc3c", null ] +]; \ No newline at end of file diff --git a/_fixed_constraint_8h.html b/_fixed_constraint_8h.html new file mode 100644 index 000000000..daed93520 --- /dev/null +++ b/_fixed_constraint_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/FixedConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FixedConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  FixedConstraintSettings
 Fixed constraint settings, used to create a fixed constraint. More...
 
class  FixedConstraint
 
+
+
+ + + + diff --git a/_fixed_constraint_8h.js b/_fixed_constraint_8h.js new file mode 100644 index 000000000..0d0953d5a --- /dev/null +++ b/_fixed_constraint_8h.js @@ -0,0 +1,5 @@ +var _fixed_constraint_8h = +[ + [ "FixedConstraintSettings", "class_fixed_constraint_settings.html", "class_fixed_constraint_settings" ], + [ "FixedConstraint", "class_fixed_constraint.html", "class_fixed_constraint" ] +]; \ No newline at end of file diff --git a/_fixed_constraint_8h_source.html b/_fixed_constraint_8h_source.html new file mode 100644 index 000000000..867b5d685 --- /dev/null +++ b/_fixed_constraint_8h_source.html @@ -0,0 +1,250 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/FixedConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FixedConstraint.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
+ + + +
10
+ +
12
+
+ +
15{
+
16public:
+ +
18
+
19 // See: ConstraintSettings::SaveBinaryState
+
20 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
21
+
23 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
+
24
+ +
27
+
29 bool mAutoDetectPoint = false;
+
30
+
32 RVec3 mPoint1 = RVec3::sZero();
+
33 Vec3 mAxisX1 = Vec3::sAxisX();
+
34 Vec3 mAxisY1 = Vec3::sAxisY();
+
35
+
37 RVec3 mPoint2 = RVec3::sZero();
+
38 Vec3 mAxisX2 = Vec3::sAxisX();
+
39 Vec3 mAxisY2 = Vec3::sAxisY();
+
40
+
41protected:
+
42 // See: ConstraintSettings::RestoreBinaryState
+
43 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
44};
+
+
45
+
+ +
49{
+
50public:
+ +
52
+
54 FixedConstraint(Body &inBody1, Body &inBody2, const FixedConstraintSettings &inSettings);
+
55
+
56 // Generic interface of a constraint
+
57 virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::Fixed; }
+
58 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override;
+
59 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
60 virtual void ResetWarmStart() override;
+
61 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
62 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
63 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
64#ifdef JPH_DEBUG_RENDERER
+
65 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
66#endif // JPH_DEBUG_RENDERER
+
67 virtual void SaveState(StateRecorder &inStream) const override;
+
68 virtual void RestoreState(StateRecorder &inStream) override;
+
69 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
70
+
71 // See: TwoBodyConstraint
+
72 virtual Mat44 GetConstraintToBody1Matrix() const override { return Mat44::sTranslation(mLocalSpacePosition1); }
+
73 virtual Mat44 GetConstraintToBody2Matrix() const override { return Mat44::sRotationTranslation(mInvInitialOrientation, mLocalSpacePosition2); }
+
74
+
76 inline Vec3 GetTotalLambdaPosition() const { return mPointConstraintPart.GetTotalLambda(); }
+
77 inline Vec3 GetTotalLambdaRotation() const { return mRotationConstraintPart.GetTotalLambda(); }
+
78
+
79private:
+
80 // CONFIGURATION PROPERTIES FOLLOW
+
81
+
82 // Local space constraint positions
+
83 Vec3 mLocalSpacePosition1;
+
84 Vec3 mLocalSpacePosition2;
+
85
+
86 // Inverse of initial rotation from body 1 to body 2 in body 1 space
+
87 Quat mInvInitialOrientation;
+
88
+
89 // RUN TIME PROPERTIES FOLLOW
+
90
+
91 // The constraint parts
+
92 RotationEulerConstraintPart mRotationConstraintPart;
+
93 PointConstraintPart mPointConstraintPart;
+
94};
+
+
95
+ +
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
+
@ WorldSpace
All constraint properties are specified in world space.
+
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#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
+ +
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
Definition FixedConstraint.h:49
+
Vec3 GetTotalLambdaPosition() const
Definition FixedConstraint.h:76
+
Vec3 GetTotalLambdaRotation() const
Definition FixedConstraint.h:77
+
virtual Mat44 GetConstraintToBody2Matrix() const override
Calculates the transform that transforms from constraint space to body 2 space. The first column of t...
Definition FixedConstraint.h:73
+
virtual Mat44 GetConstraintToBody1Matrix() const override
Calculates the transform that transforms from constraint space to body 1 space. The first column of t...
Definition FixedConstraint.h:72
+
virtual EConstraintSubType GetSubType() const override
Get the sub type of a constraint.
Definition FixedConstraint.h:57
+
Fixed constraint settings, used to create a fixed constraint.
Definition FixedConstraint.h:15
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sTranslation(Vec3Arg inV)
Get matrix that translates.
Definition Mat44.inl:144
+
static JPH_INLINE Mat44 sRotationTranslation(QuatArg inR, Vec3Arg inT)
Get matrix that rotates and translates.
Definition Mat44.inl:149
+
Definition PointConstraintPart.h:41
+
Definition Quat.h:33
+
Definition Reference.h:101
+
Definition RotationEulerConstraintPart.h:36
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition Vec3.h:53
+
static JPH_INLINE Vec3 sAxisY()
Definition Vec3.h:54
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_fixed_size_free_list_8h.html b/_fixed_size_free_list_8h.html new file mode 100644 index 000000000..2c45474af --- /dev/null +++ b/_fixed_size_free_list_8h.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Jolt/Core/FixedSizeFreeList.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FixedSizeFreeList.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  FixedSizeFreeList< Object >
 
struct  FixedSizeFreeList< Object >::Batch
 A batch of objects that can be destructed. More...
 
+
+
+ + + + diff --git a/_fixed_size_free_list_8h.js b/_fixed_size_free_list_8h.js new file mode 100644 index 000000000..94a80ee93 --- /dev/null +++ b/_fixed_size_free_list_8h.js @@ -0,0 +1,5 @@ +var _fixed_size_free_list_8h = +[ + [ "FixedSizeFreeList< Object >", "class_fixed_size_free_list.html", "class_fixed_size_free_list" ], + [ "FixedSizeFreeList< Object >::Batch", "struct_fixed_size_free_list_1_1_batch.html", "struct_fixed_size_free_list_1_1_batch" ] +]; \ No newline at end of file diff --git a/_fixed_size_free_list_8h_source.html b/_fixed_size_free_list_8h_source.html new file mode 100644 index 000000000..0af5d2750 --- /dev/null +++ b/_fixed_size_free_list_8h_source.html @@ -0,0 +1,237 @@ + + + + + + + +Jolt Physics: Jolt/Core/FixedSizeFreeList.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FixedSizeFreeList.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#include <Jolt/Core/Mutex.h>
+
9#include <Jolt/Core/Atomics.h>
+
10
+ +
12
+
16template <typename Object>
+
+ +
18{
+
19private:
+
21 struct ObjectStorage
+
22 {
+
24 Object mObject;
+
25
+
28 atomic<uint32> mNextFreeObject;
+
29 };
+
30
+
31 static_assert(alignof(ObjectStorage) == alignof(Object), "Object not properly aligned");
+
32
+
34 const ObjectStorage & GetStorage(uint32 inObjectIndex) const { return mPages[inObjectIndex >> mPageShift][inObjectIndex & mObjectMask]; }
+
35 ObjectStorage & GetStorage(uint32 inObjectIndex) { return mPages[inObjectIndex >> mPageShift][inObjectIndex & mObjectMask]; }
+
36
+
38 uint32 mPageSize;
+
39
+
41 uint32 mPageShift;
+
42
+
44 uint32 mObjectMask;
+
45
+
47 uint32 mNumPages;
+
48
+
50 uint32 mNumObjectsAllocated;
+
51
+
53 ObjectStorage ** mPages = nullptr;
+
54
+
58 alignas(JPH_CACHE_LINE_SIZE) Mutex mPageMutex;
+
59
+
61#ifdef JPH_ENABLE_ASSERTS
+
62 atomic<uint32> mNumFreeObjects;
+
63#endif // JPH_ENABLE_ASSERTS
+
64
+
66 atomic<uint32> mAllocationTag;
+
67
+
69 atomic<uint64> mFirstFreeObjectAndTag;
+
70
+
72 atomic<uint32> mFirstFreeObjectInNewPage;
+
73
+
74public:
+
76 static const uint32 cInvalidObjectIndex = 0xffffffff;
+
77
+
79 static const int ObjectStorageSize = sizeof(ObjectStorage);
+
80
+
82 inline ~FixedSizeFreeList();
+
83
+
85 inline void Init(uint inMaxObjects, uint inPageSize);
+
86
+
88 template <typename... Parameters>
+
89 inline uint32 ConstructObject(Parameters &&... inParameters);
+
90
+
92 inline void DestructObject(uint32 inObjectIndex);
+
93
+
95 inline void DestructObject(Object *inObject);
+
96
+ +
104
+
108 inline void AddObjectToBatch(Batch &ioBatch, uint32 inObjectIndex);
+
109
+
111 inline void DestructObjectBatch(Batch &ioBatch);
+
112
+
114 inline Object & Get(uint32 inObjectIndex) { return GetStorage(inObjectIndex).mObject; }
+
115
+
117 inline const Object & Get(uint32 inObjectIndex) const { return GetStorage(inObjectIndex).mObject; }
+
118};
+
+
119
+ +
121
+
122#include "FixedSizeFreeList.inl"
+ +
#define JPH_CACHE_LINE_SIZE
Definition Core.h:492
+
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
+ + + +
@ Object
Start of a new object.
+
Definition FixedSizeFreeList.h:18
+
void Init(uint inMaxObjects, uint inPageSize)
Initialize the free list, up to inMaxObjects can be allocated.
Definition FixedSizeFreeList.inl:25
+
void DestructObjectBatch(Batch &ioBatch)
Lockless destruct batch of objects.
Definition FixedSizeFreeList.inl:124
+
uint32 ConstructObject(Parameters &&... inParameters)
Lockless construct a new object, inParameters are passed on to the constructor.
Definition FixedSizeFreeList.inl:54
+
static const int ObjectStorageSize
Size of an object + bookkeeping for the freelist.
Definition FixedSizeFreeList.h:79
+
~FixedSizeFreeList()
Destructor.
Definition FixedSizeFreeList.inl:8
+
void DestructObject(uint32 inObjectIndex)
Lockless destruct an object and return it to the free pool.
Definition FixedSizeFreeList.inl:172
+
static const uint32 cInvalidObjectIndex
Invalid index.
Definition FixedSizeFreeList.h:76
+
Object & Get(uint32 inObjectIndex)
Access an object by index.
Definition FixedSizeFreeList.h:114
+
const Object & Get(uint32 inObjectIndex) const
Access an object by index.
Definition FixedSizeFreeList.h:117
+
void AddObjectToBatch(Batch &ioBatch, uint32 inObjectIndex)
Definition FixedSizeFreeList.inl:109
+
Definition Mutex.h:122
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
A batch of objects that can be destructed.
Definition FixedSizeFreeList.h:99
+
uint32 mFirstObjectIndex
Definition FixedSizeFreeList.h:100
+
uint32 mNumObjects
Definition FixedSizeFreeList.h:102
+
uint32 mLastObjectIndex
Definition FixedSizeFreeList.h:101
+
+
+ + + + diff --git a/_fixed_size_free_list_8inl.html b/_fixed_size_free_list_8inl.html new file mode 100644 index 000000000..44954260d --- /dev/null +++ b/_fixed_size_free_list_8inl.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Core/FixedSizeFreeList.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FixedSizeFreeList.inl File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_fixed_size_free_list_8inl_source.html b/_fixed_size_free_list_8inl_source.html new file mode 100644 index 000000000..e4e5b49b8 --- /dev/null +++ b/_fixed_size_free_list_8inl_source.html @@ -0,0 +1,384 @@ + + + + + + + +Jolt Physics: Jolt/Core/FixedSizeFreeList.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FixedSizeFreeList.inl
+
+
+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
+ +
6
+
7template <typename Object>
+
+ +
9{
+
10 // Check if we got our Init call
+
11 if (mPages != nullptr)
+
12 {
+
13 // Ensure everything is freed before the freelist is destructed
+
14 JPH_ASSERT(mNumFreeObjects.load(memory_order_relaxed) == mNumPages * mPageSize);
+
15
+
16 // Free memory for pages
+
17 uint32 num_pages = mNumObjectsAllocated / mPageSize;
+
18 for (uint32 page = 0; page < num_pages; ++page)
+
19 AlignedFree(mPages[page]);
+
20 Free(mPages);
+
21 }
+
22}
+
+
23
+
24template <typename Object>
+
+
25void FixedSizeFreeList<Object>::Init(uint inMaxObjects, uint inPageSize)
+
26{
+
27 // Check sanity
+
28 JPH_ASSERT(inPageSize > 0 && IsPowerOf2(inPageSize));
+
29 JPH_ASSERT(mPages == nullptr);
+
30
+
31 // Store configuration parameters
+
32 mNumPages = (inMaxObjects + inPageSize - 1) / inPageSize;
+
33 mPageSize = inPageSize;
+
34 mPageShift = CountTrailingZeros(inPageSize);
+
35 mObjectMask = inPageSize - 1;
+
36 JPH_IF_ENABLE_ASSERTS(mNumFreeObjects = mNumPages * inPageSize;)
+
37
+
38 // Allocate page table
+
39 mPages = reinterpret_cast<ObjectStorage **>(Allocate(mNumPages * sizeof(ObjectStorage *)));
+
40
+
41 // We didn't yet use any objects of any page
+
42 mNumObjectsAllocated = 0;
+
43 mFirstFreeObjectInNewPage = 0;
+
44
+
45 // Start with 1 as the first tag
+
46 mAllocationTag = 1;
+
47
+
48 // Set first free object (with tag 0)
+
49 mFirstFreeObjectAndTag = cInvalidObjectIndex;
+
50}
+
+
51
+
52template <typename Object>
+
53template <typename... Parameters>
+
+ +
55{
+
56 for (;;)
+
57 {
+
58 // Get first object from the linked list
+
59 uint64 first_free_object_and_tag = mFirstFreeObjectAndTag.load(memory_order_acquire);
+
60 uint32 first_free = uint32(first_free_object_and_tag);
+
61 if (first_free == cInvalidObjectIndex)
+
62 {
+
63 // The free list is empty, we take an object from the page that has never been used before
+
64 first_free = mFirstFreeObjectInNewPage.fetch_add(1, memory_order_relaxed);
+
65 if (first_free >= mNumObjectsAllocated)
+
66 {
+
67 // Allocate new page
+
68 lock_guard lock(mPageMutex);
+
69 while (first_free >= mNumObjectsAllocated)
+
70 {
+
71 uint32 next_page = mNumObjectsAllocated / mPageSize;
+
72 if (next_page == mNumPages)
+
73 return cInvalidObjectIndex; // Out of space!
+
74 mPages[next_page] = reinterpret_cast<ObjectStorage *>(AlignedAllocate(mPageSize * sizeof(ObjectStorage), max<size_t>(alignof(ObjectStorage), JPH_CACHE_LINE_SIZE)));
+
75 mNumObjectsAllocated += mPageSize;
+
76 }
+
77 }
+
78
+
79 // Allocation successful
+
80 JPH_IF_ENABLE_ASSERTS(mNumFreeObjects.fetch_sub(1, memory_order_relaxed);)
+
81 ObjectStorage &storage = GetStorage(first_free);
+
+
82 ::new (&storage.mObject) Object(std::forward<Parameters>(inParameters)...);
+
83 storage.mNextFreeObject.store(first_free, memory_order_release);
+
84 return first_free;
+
+
85 }
+
86 else
+
87 {
+
88 // Load next pointer
+
+
89 uint32 new_first_free = GetStorage(first_free).mNextFreeObject.load(memory_order_acquire);
+
90
+
91 // Construct a new first free object tag
+
+
92 uint64 new_first_free_object_and_tag = uint64(new_first_free) + (uint64(mAllocationTag.fetch_add(1, memory_order_relaxed)) << 32);
+
93
+
94 // Compare and swap
+
+
95 if (mFirstFreeObjectAndTag.compare_exchange_weak(first_free_object_and_tag, new_first_free_object_and_tag, memory_order_release))
+
96 {
+
97 // Allocation successful
+
98 JPH_IF_ENABLE_ASSERTS(mNumFreeObjects.fetch_sub(1, memory_order_relaxed);)
+
99 ObjectStorage &storage = GetStorage(first_free);
+
100 ::new (&storage.mObject) Object(std::forward<Parameters>(inParameters)...);
+
101 storage.mNextFreeObject.store(first_free, memory_order_release);
+
102 return first_free;
+
103 }
+
104 }
+
105 }
+
106}
+
107
+
+
108template <typename Object>
+
+ +
110{
+
+
111 JPH_ASSERT(GetStorage(inObjectIndex).mNextFreeObject.load(memory_order_relaxed) == inObjectIndex, "Trying to add a object to the batch that is already in a free list");
+
112 JPH_ASSERT(ioBatch.mNumObjects != uint32(-1), "Trying to reuse a batch that has already been freed");
+
113
+
114 // Link object in batch to free
+
115 if (ioBatch.mFirstObjectIndex == cInvalidObjectIndex)
+
116 ioBatch.mFirstObjectIndex = inObjectIndex;
+
117 else
+
118 GetStorage(ioBatch.mLastObjectIndex).mNextFreeObject.store(inObjectIndex, memory_order_release);
+
119 ioBatch.mLastObjectIndex = inObjectIndex;
+
120 ioBatch.mNumObjects++;
+
121}
+
122
+
123template <typename Object>
+
+ +
125{
+
126 if (ioBatch.mFirstObjectIndex != cInvalidObjectIndex)
+
127 {
+
128 // Call destructors
+
129 if constexpr (!is_trivially_destructible<Object>())
+
130 {
+
131 uint32 object_idx = ioBatch.mFirstObjectIndex;
+
132 do
+
133 {
+
134 ObjectStorage &storage = GetStorage(object_idx);
+
135 storage.mObject.~Object();
+
136 object_idx = storage.mNextFreeObject.load(memory_order_relaxed);
+
137 }
+
138 while (object_idx != cInvalidObjectIndex);
+
139 }
+
140
+
141 // Add to objects free list
+
142 ObjectStorage &storage = GetStorage(ioBatch.mLastObjectIndex);
+
143 for (;;)
+
144 {
+
145 // Get first object from the list
+
146 uint64 first_free_object_and_tag = mFirstFreeObjectAndTag.load(memory_order_acquire);
+
147 uint32 first_free = uint32(first_free_object_and_tag);
+
148
+
149 // Make it the next pointer of the last object in the batch that is to be freed
+
150 storage.mNextFreeObject.store(first_free, memory_order_release);
+
151
+
152 // Construct a new first free object tag
+
153 uint64 new_first_free_object_and_tag = uint64(ioBatch.mFirstObjectIndex) + (uint64(mAllocationTag.fetch_add(1, memory_order_relaxed)) << 32);
+
154
+
155 // Compare and swap
+
156 if (mFirstFreeObjectAndTag.compare_exchange_weak(first_free_object_and_tag, new_first_free_object_and_tag, memory_order_release))
+
157 {
+
158 // Free successful
+
159 JPH_IF_ENABLE_ASSERTS(mNumFreeObjects.fetch_add(ioBatch.mNumObjects, memory_order_relaxed);)
+
160
+
161 // Mark the batch as freed
+
162#ifdef JPH_ENABLE_ASSERTS
+
163 ioBatch.mNumObjects = uint32(-1);
+
164#endif
+
165 return;
+
166 }
+
167 }
+
168 }
+
169}
+
+
+
170
+
171template <typename Object>
+
+ +
173{
+
174 JPH_ASSERT(inObjectIndex != cInvalidObjectIndex);
+
175
+
176 // Call destructor
+
177 ObjectStorage &storage = GetStorage(inObjectIndex);
+
178 storage.mObject.~Object();
+
179
+
180 // Add to object free list
+
181 for (;;)
+
182 {
+
183 // Get first object from the list
+
184 uint64 first_free_object_and_tag = mFirstFreeObjectAndTag.load(memory_order_acquire);
+
185 uint32 first_free = uint32(first_free_object_and_tag);
+
186
+
187 // Make it the next pointer of the last object in the batch that is to be freed
+
188 storage.mNextFreeObject.store(first_free, memory_order_release);
+
189
+
190 // Construct a new first free object tag
+
191 uint64 new_first_free_object_and_tag = uint64(inObjectIndex) + (uint64(mAllocationTag.fetch_add(1, memory_order_relaxed)) << 32);
+
192
+
193 // Compare and swap
+
194 if (mFirstFreeObjectAndTag.compare_exchange_weak(first_free_object_and_tag, new_first_free_object_and_tag, memory_order_release))
+
195 {
+
196 // Free successful
+
197 JPH_IF_ENABLE_ASSERTS(mNumFreeObjects.fetch_add(1, memory_order_relaxed);)
+
198 return;
+
199 }
+
200 }
+
201}
+
+
202
+
203template<typename Object>
+
+ +
205{
+
206 uint32 index = reinterpret_cast<ObjectStorage *>(inObject)->mNextFreeObject.load(memory_order_relaxed);
+
207 JPH_ASSERT(index < mNumObjectsAllocated);
+
208 DestructObject(index);
+
209}
+
+
210
+ +
+
+
+
+
+
+
+
+
#define JPH_CACHE_LINE_SIZE
Definition Core.h:492
+
std::uint64_t uint64
Definition Core.h:456
+
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
+
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
constexpr bool IsPowerOf2(T inV)
Check if inV is a power of 2.
Definition Math.h:73
+
uint CountTrailingZeros(uint32 inValue)
Compute number of trailing zero bits (how many low bits are zero)
Definition Math.h:95
+
AllocateFunction Allocate
Definition Memory.cpp:68
+
FreeFunction Free
Definition Memory.cpp:70
+
AlignedFreeFunction AlignedFree
Definition Memory.cpp:72
+
AlignedAllocateFunction AlignedAllocate
Definition Memory.cpp:71
+
@ Object
Start of a new object.
+
void Init(uint inMaxObjects, uint inPageSize)
Initialize the free list, up to inMaxObjects can be allocated.
Definition FixedSizeFreeList.inl:25
+
void DestructObjectBatch(Batch &ioBatch)
Lockless destruct batch of objects.
Definition FixedSizeFreeList.inl:124
+
uint32 ConstructObject(Parameters &&... inParameters)
Lockless construct a new object, inParameters are passed on to the constructor.
Definition FixedSizeFreeList.inl:54
+
~FixedSizeFreeList()
Destructor.
Definition FixedSizeFreeList.inl:8
+
void DestructObject(uint32 inObjectIndex)
Lockless destruct an object and return it to the free pool.
Definition FixedSizeFreeList.inl:172
+
void AddObjectToBatch(Batch &ioBatch, uint32 inObjectIndex)
Definition FixedSizeFreeList.inl:109
+
Definition Array.h:575
+
A batch of objects that can be destructed.
Definition FixedSizeFreeList.h:99
+
uint32 mFirstObjectIndex
Definition FixedSizeFreeList.h:100
+
uint32 mNumObjects
Definition FixedSizeFreeList.h:102
+
uint32 mLastObjectIndex
Definition FixedSizeFreeList.h:101
+
+
+ + + + diff --git a/_float2_8h.html b/_float2_8h.html new file mode 100644 index 000000000..84806a09c --- /dev/null +++ b/_float2_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Math/Float2.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Float2.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  Float2
 Class that holds 2 floats, used as a storage class mainly. More...
 
+
+
+ + + + diff --git a/_float2_8h.js b/_float2_8h.js new file mode 100644 index 000000000..422eda359 --- /dev/null +++ b/_float2_8h.js @@ -0,0 +1,4 @@ +var _float2_8h = +[ + [ "Float2", "class_float2.html", "class_float2" ] +]; \ No newline at end of file diff --git a/_float2_8h_source.html b/_float2_8h_source.html new file mode 100644 index 000000000..5acaa2cc2 --- /dev/null +++ b/_float2_8h_source.html @@ -0,0 +1,166 @@ + + + + + + + +Jolt Physics: Jolt/Math/Float2.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Float2.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
+
+
10class [[nodiscard]] Float2
+
11{
+
12public:
+ +
14
+
15 Float2() = default;
+
16 Float2(const Float2 &inRHS) = default;
+
17 Float2 & operator = (const Float2 &inRHS) = default;
+
18 Float2(float inX, float inY) : x(inX), y(inY) { }
+
19
+
20 bool operator == (const Float2 &inRHS) const { return x == inRHS.x && y == inRHS.y; }
+
21 bool operator != (const Float2 &inRHS) const { return x != inRHS.x || y != inRHS.y; }
+
22
+
+
24 friend ostream & operator << (ostream &inStream, const Float2 &inV)
+
25 {
+
26 inStream << inV.x << ", " << inV.y;
+
27 return inStream;
+
28 }
+
+
29
+
30 float x;
+
31 float y;
+
32};
+
+
33
+
34static_assert(is_trivial<Float2>(), "Is supposed to be a trivial type!");
+
35
+ +
#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
+
Class that holds 2 floats, used as a storage class mainly.
Definition Float2.h:11
+
Float2(const Float2 &inRHS)=default
+
JPH_OVERRIDE_NEW_DELETE Float2()=default
Intentionally not initialized for performance reasons.
+
float y
Definition Float2.h:31
+
float x
Definition Float2.h:30
+
Float2(float inX, float inY)
Definition Float2.h:18
+
+
+ + + + diff --git a/_float3_8h.html b/_float3_8h.html new file mode 100644 index 000000000..6bf72aafb --- /dev/null +++ b/_float3_8h.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Jolt/Math/Float3.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Float3.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  Float3
 Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations. More...
 
+ + + +

+Typedefs

using VertexList = Array< Float3 >
 
+

Typedef Documentation

+ +

◆ VertexList

+ +
+
+ + + + +
using VertexList = Array<Float3>
+
+ +
+
+
+
+ + + + diff --git a/_float3_8h.js b/_float3_8h.js new file mode 100644 index 000000000..b8ac99a41 --- /dev/null +++ b/_float3_8h.js @@ -0,0 +1,5 @@ +var _float3_8h = +[ + [ "Float3", "class_float3.html", "class_float3" ], + [ "VertexList", "_float3_8h.html#a32da0440c866d584cf09520c5eb11c17", null ] +]; \ No newline at end of file diff --git a/_float3_8h_source.html b/_float3_8h_source.html new file mode 100644 index 000000000..63c6ab811 --- /dev/null +++ b/_float3_8h_source.html @@ -0,0 +1,190 @@ + + + + + + + +Jolt Physics: Jolt/Math/Float3.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Float3.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
+
+
12class [[nodiscard]] Float3
+
13{
+
14public:
+ +
16
+
17 Float3() = default;
+
18 Float3(const Float3 &inRHS) = default;
+
19 Float3 & operator = (const Float3 &inRHS) = default;
+
20 constexpr Float3(float inX, float inY, float inZ) : x(inX), y(inY), z(inZ) { }
+
21
+
+
22 float operator [] (int inCoordinate) const
+
23 {
+
24 JPH_ASSERT(inCoordinate < 3);
+
25 return *(&x + inCoordinate);
+
26 }
+
+
27
+
+
28 bool operator == (const Float3 &inRHS) const
+
29 {
+
30 return x == inRHS.x && y == inRHS.y && z == inRHS.z;
+
31 }
+
+
32
+
+
33 bool operator != (const Float3 &inRHS) const
+
34 {
+
35 return x != inRHS.x || y != inRHS.y || z != inRHS.z;
+
36 }
+
+
37
+
38 float x;
+
39 float y;
+
40 float z;
+
41};
+
+
42
+ +
44
+
45static_assert(is_trivial<Float3>(), "Is supposed to be a trivial type!");
+
46
+ +
48
+
49// Create a std::hash for Float3
+
50JPH_MAKE_HASHABLE(JPH::Float3, t.x, t.y, t.z)
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_MAKE_HASHABLE(type,...)
Definition HashCombine.h:87
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
constexpr Float3(float inX, float inY, float inZ)
Definition Float3.h:20
+
float y
Definition Float3.h:39
+
float z
Definition Float3.h:40
+
JPH_OVERRIDE_NEW_DELETE Float3()=default
Intentionally not initialized for performance reasons.
+
float x
Definition Float3.h:38
+
Float3(const Float3 &inRHS)=default
+
+
+ + + + diff --git a/_float4_8h.html b/_float4_8h.html new file mode 100644 index 000000000..37339b354 --- /dev/null +++ b/_float4_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Math/Float4.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Float4.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  Float4
 Class that holds 4 float values. Convert to Vec4 to perform calculations. More...
 
+
+
+ + + + diff --git a/_float4_8h.js b/_float4_8h.js new file mode 100644 index 000000000..c9fa5cdf4 --- /dev/null +++ b/_float4_8h.js @@ -0,0 +1,4 @@ +var _float4_8h = +[ + [ "Float4", "class_float4.html", "class_float4" ] +]; \ No newline at end of file diff --git a/_float4_8h_source.html b/_float4_8h_source.html new file mode 100644 index 000000000..db9fe62c4 --- /dev/null +++ b/_float4_8h_source.html @@ -0,0 +1,167 @@ + + + + + + + +Jolt Physics: Jolt/Math/Float4.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Float4.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
+
+
10class [[nodiscard]] Float4
+
11{
+
12public:
+ +
14
+
15 Float4() = default;
+
16 Float4(const Float4 &inRHS) = default;
+
17 Float4(float inX, float inY, float inZ, float inW) : x(inX), y(inY), z(inZ), w(inW) { }
+
18
+
+
19 float operator [] (int inCoordinate) const
+
20 {
+
21 JPH_ASSERT(inCoordinate < 4);
+
22 return *(&x + inCoordinate);
+
23 }
+
+
24
+
25 float x;
+
26 float y;
+
27 float z;
+
28 float w;
+
29};
+
+
30
+
31static_assert(is_trivial<Float4>(), "Is supposed to be a trivial type!");
+
32
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
Class that holds 4 float values. Convert to Vec4 to perform calculations.
Definition Float4.h:11
+
float x
Definition Float4.h:25
+
float y
Definition Float4.h:26
+
Float4(const Float4 &inRHS)=default
+
float z
Definition Float4.h:27
+
float w
Definition Float4.h:28
+
Float4(float inX, float inY, float inZ, float inW)
Definition Float4.h:17
+
JPH_OVERRIDE_NEW_DELETE Float4()=default
Intentionally not initialized for performance reasons.
+
+
+ + + + diff --git a/_g_j_k_closest_point_8h.html b/_g_j_k_closest_point_8h.html new file mode 100644 index 000000000..7a75bbe9d --- /dev/null +++ b/_g_j_k_closest_point_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/GJKClosestPoint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GJKClosestPoint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  GJKClosestPoint
 
+
+
+ + + + diff --git a/_g_j_k_closest_point_8h.js b/_g_j_k_closest_point_8h.js new file mode 100644 index 000000000..49a328245 --- /dev/null +++ b/_g_j_k_closest_point_8h.js @@ -0,0 +1,4 @@ +var _g_j_k_closest_point_8h = +[ + [ "GJKClosestPoint", "class_g_j_k_closest_point.html", "class_g_j_k_closest_point" ] +]; \ No newline at end of file diff --git a/_g_j_k_closest_point_8h_source.html b/_g_j_k_closest_point_8h_source.html new file mode 100644 index 000000000..d020eec7c --- /dev/null +++ b/_g_j_k_closest_point_8h_source.html @@ -0,0 +1,1054 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/GJKClosestPoint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GJKClosestPoint.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
+ + + + +
11
+
12//#define JPH_GJK_DEBUG
+
13#ifdef JPH_GJK_DEBUG
+ + +
16#endif
+
17
+ +
19
+
+ +
23{
+
24private:
+
36 template <bool LastPointPartOfClosestFeature>
+
37 bool GetClosest(float inPrevVLenSq, Vec3 &outV, float &outVLenSq, uint32 &outSet) const
+
38 {
+
39#ifdef JPH_GJK_DEBUG
+
40 for (int i = 0; i < mNumPoints; ++i)
+
41 Trace("y[%d] = [%s], |y[%d]| = %g", i, ConvertToString(mY[i]).c_str(), i, (double)mY[i].Length());
+
42#endif
+
43
+
44 uint32 set;
+
45 Vec3 v;
+
46
+
47 switch (mNumPoints)
+
48 {
+
49 case 1:
+
50 // Single point
+
51 set = 0b0001;
+
52 v = mY[0];
+
53 break;
+
54
+
55 case 2:
+
56 // Line segment
+
57 v = ClosestPoint::GetClosestPointOnLine(mY[0], mY[1], set);
+
58 break;
+
59
+
60 case 3:
+
61 // Triangle
+
62 v = ClosestPoint::GetClosestPointOnTriangle<LastPointPartOfClosestFeature>(mY[0], mY[1], mY[2], set);
+
63 break;
+
64
+
65 case 4:
+
66 // Tetrahedron
+
67 v = ClosestPoint::GetClosestPointOnTetrahedron<LastPointPartOfClosestFeature>(mY[0], mY[1], mY[2], mY[3], set);
+
68 break;
+
69
+
70 default:
+
71 JPH_ASSERT(false);
+
72 return false;
+
73 }
+
74
+
75#ifdef JPH_GJK_DEBUG
+
76 Trace("GetClosest: set = 0b%s, v = [%s], |v| = %g", NibbleToBinary(set), ConvertToString(v).c_str(), (double)v.Length());
+
77#endif
+
78
+
79 float v_len_sq = v.LengthSq();
+
80 if (v_len_sq < inPrevVLenSq) // Note, comparison order important: If v_len_sq is NaN then this expression will be false so we will return false
+
81 {
+
82 // Return closest point
+
83 outV = v;
+
84 outVLenSq = v_len_sq;
+
85 outSet = set;
+
86 return true;
+
87 }
+
88
+
89 // No better match found
+
90#ifdef JPH_GJK_DEBUG
+
91 Trace("New closer point is further away, failed to converge");
+
92#endif
+
93 return false;
+
94 }
+
95
+
96 // Get max(|Y_0|^2 .. |Y_n|^2)
+
97 float GetMaxYLengthSq() const
+
98 {
+
99 float y_len_sq = mY[0].LengthSq();
+
100 for (int i = 1; i < mNumPoints; ++i)
+
101 y_len_sq = max(y_len_sq, mY[i].LengthSq());
+
102 return y_len_sq;
+
103 }
+
104
+
105 // Remove points that are not in the set, only updates mY
+
106 void UpdatePointSetY(uint32 inSet)
+
107 {
+
108 int num_points = 0;
+
109 for (int i = 0; i < mNumPoints; ++i)
+
110 if ((inSet & (1 << i)) != 0)
+
111 {
+
112 mY[num_points] = mY[i];
+
113 ++num_points;
+
114 }
+
115 mNumPoints = num_points;
+
116 }
+
117
+
118 // Remove points that are not in the set, only updates mP
+
119 void UpdatePointSetP(uint32 inSet)
+
120 {
+
121 int num_points = 0;
+
122 for (int i = 0; i < mNumPoints; ++i)
+
123 if ((inSet & (1 << i)) != 0)
+
124 {
+
125 mP[num_points] = mP[i];
+
126 ++num_points;
+
127 }
+
128 mNumPoints = num_points;
+
129 }
+
130
+
131 // Remove points that are not in the set, only updates mP and mQ
+
132 void UpdatePointSetPQ(uint32 inSet)
+
133 {
+
134 int num_points = 0;
+
135 for (int i = 0; i < mNumPoints; ++i)
+
136 if ((inSet & (1 << i)) != 0)
+
137 {
+
138 mP[num_points] = mP[i];
+
139 mQ[num_points] = mQ[i];
+
140 ++num_points;
+
141 }
+
142 mNumPoints = num_points;
+
143 }
+
144
+
145 // Remove points that are not in the set, updates mY, mP and mQ
+
146 void UpdatePointSetYPQ(uint32 inSet)
+
147 {
+
148 int num_points = 0;
+
149 for (int i = 0; i < mNumPoints; ++i)
+
150 if ((inSet & (1 << i)) != 0)
+
151 {
+
152 mY[num_points] = mY[i];
+
153 mP[num_points] = mP[i];
+
154 mQ[num_points] = mQ[i];
+
155 ++num_points;
+
156 }
+
157 mNumPoints = num_points;
+
158 }
+
159
+
160 // Calculate closest points on A and B
+
161 void CalculatePointAAndB(Vec3 &outPointA, Vec3 &outPointB) const
+
162 {
+
163 switch (mNumPoints)
+
164 {
+
165 case 1:
+
166 outPointA = mP[0];
+
167 outPointB = mQ[0];
+
168 break;
+
169
+
170 case 2:
+
171 {
+
172 float u, v;
+
173 ClosestPoint::GetBaryCentricCoordinates(mY[0], mY[1], u, v);
+
174 outPointA = u * mP[0] + v * mP[1];
+
175 outPointB = u * mQ[0] + v * mQ[1];
+
176 }
+
177 break;
+
178
+
179 case 3:
+
180 {
+
181 float u, v, w;
+
182 ClosestPoint::GetBaryCentricCoordinates(mY[0], mY[1], mY[2], u, v, w);
+
183 outPointA = u * mP[0] + v * mP[1] + w * mP[2];
+
184 outPointB = u * mQ[0] + v * mQ[1] + w * mQ[2];
+
185 }
+
186 break;
+
187
+
188 case 4:
+
189 #ifdef JPH_DEBUG
+
190 memset(&outPointA, 0xcd, sizeof(outPointA));
+
191 memset(&outPointB, 0xcd, sizeof(outPointB));
+
192 #endif
+
193 break;
+
194 }
+
195 }
+
196
+
197public:
+
207 template <typename A, typename B>
+
+
208 bool Intersects(const A &inA, const B &inB, float inTolerance, Vec3 &ioV)
+
209 {
+
210 float tolerance_sq = Square(inTolerance);
+
211
+
212 // Reset state
+
213 mNumPoints = 0;
+
214
+
215#ifdef JPH_GJK_DEBUG
+
216 for (int i = 0; i < 4; ++i)
+
217 mY[i] = Vec3::sZero();
+
218#endif
+
219
+
220 // Previous length^2 of v
+
221 float prev_v_len_sq = FLT_MAX;
+
222
+
223 for (;;)
+
224 {
+
225#ifdef JPH_GJK_DEBUG
+
226 Trace("v = [%s], num_points = %d", ConvertToString(ioV).c_str(), mNumPoints);
+
227#endif
+
228
+
229 // Get support points for shape A and B in the direction of v
+
230 Vec3 p = inA.GetSupport(ioV);
+
231 Vec3 q = inB.GetSupport(-ioV);
+
232
+
233 // Get support point of the minkowski sum A - B of v
+
234 Vec3 w = p - q;
+
235
+
236 // If the support point sA-B(v) is in the opposite direction as v, then we have found a separating axis and there is no intersection
+
237 if (ioV.Dot(w) < 0.0f)
+
238 {
+
239 // Separating axis found
+
240#ifdef JPH_GJK_DEBUG
+
241 Trace("Separating axis");
+
242#endif
+
243 return false;
+
244 }
+
245
+
246 // Store the point for later use
+
247 mY[mNumPoints] = w;
+
248 ++mNumPoints;
+
249
+
250#ifdef JPH_GJK_DEBUG
+
251 Trace("w = [%s]", ConvertToString(w).c_str());
+
252#endif
+
253
+
254 // Determine the new closest point
+
255 float v_len_sq; // Length^2 of v
+
256 uint32 set; // Set of points that form the new simplex
+
257 if (!GetClosest<true>(prev_v_len_sq, ioV, v_len_sq, set))
+
258 return false;
+
259
+
260 // If there are 4 points, the origin is inside the tetrahedron and we're done
+
261 if (set == 0xf)
+
262 {
+
263#ifdef JPH_GJK_DEBUG
+
264 Trace("Full simplex");
+
265#endif
+
266 ioV = Vec3::sZero();
+
267 return true;
+
268 }
+
269
+
270 // If v is very close to zero, we consider this a collision
+
271 if (v_len_sq <= tolerance_sq)
+
272 {
+
273#ifdef JPH_GJK_DEBUG
+
274 Trace("Distance zero");
+
275#endif
+
276 ioV = Vec3::sZero();
+
277 return true;
+
278 }
+
279
+
280 // If v is very small compared to the length of y, we also consider this a collision
+
281 if (v_len_sq <= FLT_EPSILON * GetMaxYLengthSq())
+
282 {
+
283#ifdef JPH_GJK_DEBUG
+
284 Trace("Machine precision reached");
+
285#endif
+
286 ioV = Vec3::sZero();
+
287 return true;
+
288 }
+
289
+
290 // The next separation axis to test is the negative of the closest point of the Minkowski sum to the origin
+
291 // Note: This must be done before terminating as converged since the separating axis is -v
+
292 ioV = -ioV;
+
293
+
294 // If the squared length of v is not changing enough, we've converged and there is no collision
+
295 JPH_ASSERT(prev_v_len_sq >= v_len_sq);
+
296 if (prev_v_len_sq - v_len_sq <= FLT_EPSILON * prev_v_len_sq)
+
297 {
+
298 // v is a separating axis
+
299#ifdef JPH_GJK_DEBUG
+
300 Trace("Converged");
+
301#endif
+
302 return false;
+
303 }
+
304 prev_v_len_sq = v_len_sq;
+
305
+
306 // Update the points of the simplex
+
307 UpdatePointSetY(set);
+
308 }
+
309 }
+
+
310
+
327 template <typename A, typename B>
+
+
328 float GetClosestPoints(const A &inA, const B &inB, float inTolerance, float inMaxDistSq, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)
+
329 {
+
330 float tolerance_sq = Square(inTolerance);
+
331
+
332 // Reset state
+
333 mNumPoints = 0;
+
334
+
335#ifdef JPH_GJK_DEBUG
+
336 // Generate the hull of the Minkowski difference for visualization
+
337 MinkowskiDifference diff(inA, inB);
+
338 mGeometry = DebugRenderer::sInstance->CreateTriangleGeometryForConvex([&diff](Vec3Arg inDirection) { return diff.GetSupport(inDirection); });
+
339
+
340 for (int i = 0; i < 4; ++i)
+
341 {
+
342 mY[i] = Vec3::sZero();
+
343 mP[i] = Vec3::sZero();
+
344 mQ[i] = Vec3::sZero();
+
345 }
+
346#endif
+
347
+
348 // Length^2 of v
+
349 float v_len_sq = ioV.LengthSq();
+
350
+
351 // Previous length^2 of v
+
352 float prev_v_len_sq = FLT_MAX;
+
353
+
354 for (;;)
+
355 {
+
356#ifdef JPH_GJK_DEBUG
+
357 Trace("v = [%s], num_points = %d", ConvertToString(ioV).c_str(), mNumPoints);
+
358#endif
+
359
+
360 // Get support points for shape A and B in the direction of v
+
361 Vec3 p = inA.GetSupport(ioV);
+
362 Vec3 q = inB.GetSupport(-ioV);
+
363
+
364 // Get support point of the minkowski sum A - B of v
+
365 Vec3 w = p - q;
+
366
+
367 float dot = ioV.Dot(w);
+
368
+
369#ifdef JPH_GJK_DEBUG
+
370 // Draw -ioV to show the closest point to the origin from the previous simplex
+
371 DebugRenderer::sInstance->DrawArrow(mOffset, mOffset - ioV, Color::sOrange, 0.05f);
+
372
+
373 // Draw ioV to show where we're probing next
+
374 DebugRenderer::sInstance->DrawArrow(mOffset, mOffset + ioV, Color::sCyan, 0.05f);
+
375
+
376 // Draw w, the support point
+
377 DebugRenderer::sInstance->DrawArrow(mOffset, mOffset + w, Color::sGreen, 0.05f);
+ +
379
+
380 // Draw the simplex and the Minkowski difference around it
+
381 DrawState();
+
382#endif
+
383
+
384 // Test if we have a separation of more than inMaxDistSq, in which case we terminate early
+
385 if (dot < 0.0f && dot * dot > v_len_sq * inMaxDistSq)
+
386 {
+
387#ifdef JPH_GJK_DEBUG
+
388 Trace("Distance bigger than max");
+
389#endif
+
390#ifdef JPH_DEBUG
+
391 memset(&outPointA, 0xcd, sizeof(outPointA));
+
392 memset(&outPointB, 0xcd, sizeof(outPointB));
+
393#endif
+
394 return FLT_MAX;
+
395 }
+
396
+
397 // Store the point for later use
+
398 mY[mNumPoints] = w;
+
399 mP[mNumPoints] = p;
+
400 mQ[mNumPoints] = q;
+
401 ++mNumPoints;
+
402
+
403#ifdef JPH_GJK_DEBUG
+
404 Trace("w = [%s]", ConvertToString(w).c_str());
+
405#endif
+
406
+
407 uint32 set;
+
408 if (!GetClosest<true>(prev_v_len_sq, ioV, v_len_sq, set))
+
409 {
+
410 --mNumPoints; // Undo add last point
+
411 break;
+
412 }
+
413
+
414 // If there are 4 points, the origin is inside the tetrahedron and we're done
+
415 if (set == 0xf)
+
416 {
+
417#ifdef JPH_GJK_DEBUG
+
418 Trace("Full simplex");
+
419#endif
+
420 ioV = Vec3::sZero();
+
421 v_len_sq = 0.0f;
+
422 break;
+
423 }
+
424
+
425 // Update the points of the simplex
+
426 UpdatePointSetYPQ(set);
+
427
+
428 // If v is very close to zero, we consider this a collision
+
429 if (v_len_sq <= tolerance_sq)
+
430 {
+
431#ifdef JPH_GJK_DEBUG
+
432 Trace("Distance zero");
+
433#endif
+
434 ioV = Vec3::sZero();
+
435 v_len_sq = 0.0f;
+
436 break;
+
437 }
+
438
+
439 // If v is very small compared to the length of y, we also consider this a collision
+
440#ifdef JPH_GJK_DEBUG
+
441 Trace("Check v small compared to y: %g <= %g", (double)v_len_sq, (double)(FLT_EPSILON * GetMaxYLengthSq()));
+
442#endif
+
443 if (v_len_sq <= FLT_EPSILON * GetMaxYLengthSq())
+
444 {
+
445#ifdef JPH_GJK_DEBUG
+
446 Trace("Machine precision reached");
+
447#endif
+
448 ioV = Vec3::sZero();
+
449 v_len_sq = 0.0f;
+
450 break;
+
451 }
+
452
+
453 // The next separation axis to test is the negative of the closest point of the Minkowski sum to the origin
+
454 // Note: This must be done before terminating as converged since the separating axis is -v
+
455 ioV = -ioV;
+
456
+
457 // If the squared length of v is not changing enough, we've converged and there is no collision
+
458#ifdef JPH_GJK_DEBUG
+
459 Trace("Check v not changing enough: %g <= %g", (double)(prev_v_len_sq - v_len_sq), (double)(FLT_EPSILON * prev_v_len_sq));
+
460#endif
+
461 JPH_ASSERT(prev_v_len_sq >= v_len_sq);
+
462 if (prev_v_len_sq - v_len_sq <= FLT_EPSILON * prev_v_len_sq)
+
463 {
+
464 // v is a separating axis
+
465#ifdef JPH_GJK_DEBUG
+
466 Trace("Converged");
+
467#endif
+
468 break;
+
469 }
+
470 prev_v_len_sq = v_len_sq;
+
471 }
+
472
+
473 // Get the closest points
+
474 CalculatePointAAndB(outPointA, outPointB);
+
475
+
476#ifdef JPH_GJK_DEBUG
+
477 Trace("Return: v = [%s], |v| = %g", ConvertToString(ioV).c_str(), (double)ioV.Length());
+
478
+
479 // Draw -ioV to show the closest point to the origin from the previous simplex
+
480 DebugRenderer::sInstance->DrawArrow(mOffset, mOffset - ioV, Color::sOrange, 0.05f);
+
481
+
482 // Draw the closest points
+
483 DebugRenderer::sInstance->DrawMarker(mOffset + outPointA, Color::sGreen, 1.0f);
+
484 DebugRenderer::sInstance->DrawMarker(mOffset + outPointB, Color::sPurple, 1.0f);
+
485
+
486 // Draw the simplex and the Minkowski difference around it
+
487 DrawState();
+
488#endif
+
489
+
490 JPH_ASSERT(ioV.LengthSq() == v_len_sq);
+
491 return v_len_sq;
+
492 }
+
+
493
+
+
496 void GetClosestPointsSimplex(Vec3 *outY, Vec3 *outP, Vec3 *outQ, uint &outNumPoints) const
+
497 {
+
498 uint size = sizeof(Vec3) * mNumPoints;
+
499 memcpy(outY, mY, size);
+
500 memcpy(outP, mP, size);
+
501 memcpy(outQ, mQ, size);
+
502 outNumPoints = mNumPoints;
+
503 }
+
+
504
+
516 template <typename A>
+
+
517 bool CastRay(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inTolerance, const A &inA, float &ioLambda)
+
518 {
+
519 float tolerance_sq = Square(inTolerance);
+
520
+
521 // Reset state
+
522 mNumPoints = 0;
+
523
+
524 float lambda = 0.0f;
+
525 Vec3 x = inRayOrigin;
+
526 Vec3 v = x - inA.GetSupport(Vec3::sZero());
+
527 float v_len_sq = FLT_MAX;
+
528 bool allow_restart = false;
+
529
+
530 for (;;)
+
531 {
+
532#ifdef JPH_GJK_DEBUG
+
533 Trace("v = [%s], num_points = %d", ConvertToString(v).c_str(), mNumPoints);
+
534#endif
+
535
+
536 // Get new support point
+
537 Vec3 p = inA.GetSupport(v);
+
538 Vec3 w = x - p;
+
539
+
540#ifdef JPH_GJK_DEBUG
+
541 Trace("w = [%s]", ConvertToString(w).c_str());
+
542#endif
+
543
+
544 float v_dot_w = v.Dot(w);
+
545#ifdef JPH_GJK_DEBUG
+
546 Trace("v . w = %g", (double)v_dot_w);
+
547#endif
+
548 if (v_dot_w > 0.0f)
+
549 {
+
550 // If ray and normal are in the same direction, we've passed A and there's no collision
+
551 float v_dot_r = v.Dot(inRayDirection);
+
552#ifdef JPH_GJK_DEBUG
+
553 Trace("v . r = %g", (double)v_dot_r);
+
554#endif
+
555 if (v_dot_r >= 0.0f)
+
556 return false;
+
557
+
558 // Update the lower bound for lambda
+
559 float delta = v_dot_w / v_dot_r;
+
560 float old_lambda = lambda;
+
561 lambda -= delta;
+
562#ifdef JPH_GJK_DEBUG
+
563 Trace("lambda = %g, delta = %g", (double)lambda, (double)delta);
+
564#endif
+
565
+
566 // If lambda didn't change, we cannot converge any further and we assume a hit
+
567 if (old_lambda == lambda)
+
568 break;
+
569
+
570 // If lambda is bigger or equal than max, we don't have a hit
+
571 if (lambda >= ioLambda)
+
572 return false;
+
573
+
574 // Update x to new closest point on the ray
+
575 x = inRayOrigin + lambda * inRayDirection;
+
576
+
577 // We've shifted x, so reset v_len_sq so that it is not used as early out for GetClosest
+
578 v_len_sq = FLT_MAX;
+
579
+
580 // We allow rebuilding the simplex once after x changes because the simplex was built
+
581 // for another x and numerical round off builds up as you keep adding points to an
+
582 // existing simplex
+
583 allow_restart = true;
+
584 }
+
585
+
586 // Add p to set P: P = P U {p}
+
587 mP[mNumPoints] = p;
+
588 ++mNumPoints;
+
589
+
590 // Calculate Y = {x} - P
+
591 for (int i = 0; i < mNumPoints; ++i)
+
592 mY[i] = x - mP[i];
+
593
+
594 // Determine the new closest point from Y to origin
+
595 uint32 set; // Set of points that form the new simplex
+
596 if (!GetClosest<false>(v_len_sq, v, v_len_sq, set))
+
597 {
+
598#ifdef JPH_GJK_DEBUG
+
599 Trace("Failed to converge");
+
600#endif
+
601
+
602 // Only allow 1 restart, if we still can't get a closest point
+
603 // we're so close that we return this as a hit
+
604 if (!allow_restart)
+
605 break;
+
606
+
607 // If we fail to converge, we start again with the last point as simplex
+
608#ifdef JPH_GJK_DEBUG
+
609 Trace("Restarting");
+
610#endif
+
611 allow_restart = false;
+
612 mP[0] = p;
+
613 mNumPoints = 1;
+
614 v = x - p;
+
615 v_len_sq = FLT_MAX;
+
616 continue;
+
617 }
+
618 else if (set == 0xf)
+
619 {
+
620#ifdef JPH_GJK_DEBUG
+
621 Trace("Full simplex");
+
622#endif
+
623
+
624 // We're inside the tetrahedron, we have a hit (verify that length of v is 0)
+
625 JPH_ASSERT(v_len_sq == 0.0f);
+
626 break;
+
627 }
+
628
+
629 // Update the points P to form the new simplex
+
630 // Note: We're not updating Y as Y will shift with x so we have to calculate it every iteration
+
631 UpdatePointSetP(set);
+
632
+
633 // Check if x is close enough to inA
+
634 if (v_len_sq <= tolerance_sq)
+
635 {
+
636#ifdef JPH_GJK_DEBUG
+
637 Trace("Converged");
+
638#endif
+
639 break;
+
640 }
+
641 }
+
642
+
643 // Store hit fraction
+
644 ioLambda = lambda;
+
645 return true;
+
646 }
+
+
647
+
658 template <typename A, typename B>
+
+
659 bool CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float &ioLambda)
+
660 {
+
661 // Transform the shape to be cast to the starting position
+
662 TransformedConvexObject transformed_a(inStart, inA);
+
663
+
664 // Calculate the minkowski difference inB - inA
+
665 // inA is moving, so we need to add the back side of inB to the front side of inA
+
666 MinkowskiDifference difference(inB, transformed_a);
+
667
+
668 // Do a raycast against the Minkowski difference
+
669 return CastRay(Vec3::sZero(), inDirection, inTolerance, difference, ioLambda);
+
670 }
+
+
671
+
689 template <typename A, typename B>
+
+
690 bool CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float inConvexRadiusA, float inConvexRadiusB, float &ioLambda, Vec3 &outPointA, Vec3 &outPointB, Vec3 &outSeparatingAxis)
+
691 {
+
692 float tolerance_sq = Square(inTolerance);
+
693
+
694 // Calculate how close A and B (without their convex radius) need to be to each other in order for us to consider this a collision
+
695 float sum_convex_radius = inConvexRadiusA + inConvexRadiusB;
+
696
+
697 // Transform the shape to be cast to the starting position
+
698 TransformedConvexObject transformed_a(inStart, inA);
+
699
+
700 // Reset state
+
701 mNumPoints = 0;
+
702
+
703 float lambda = 0.0f;
+
704 Vec3 x = Vec3::sZero(); // Since A is already transformed we can start the cast from zero
+
705 Vec3 v = -inB.GetSupport(Vec3::sZero()) + transformed_a.GetSupport(Vec3::sZero()); // See CastRay: v = x - inA.GetSupport(Vec3::sZero()) where inA is the Minkowski difference inB - transformed_a (see CastShape above) and x is zero
+
706 float v_len_sq = FLT_MAX;
+
707 bool allow_restart = false;
+
708
+
709 // Keeps track of separating axis of the previous iteration.
+
710 // Initialized at zero as we don't know if our first v is actually a separating axis.
+
711 Vec3 prev_v = Vec3::sZero();
+
712
+
713 for (;;)
+
714 {
+
715#ifdef JPH_GJK_DEBUG
+
716 Trace("v = [%s], num_points = %d", ConvertToString(v).c_str(), mNumPoints);
+
717#endif
+
718
+
719 // Calculate the minkowski difference inB - inA
+
720 // inA is moving, so we need to add the back side of inB to the front side of inA
+
721 // Keep the support points on A and B separate so that in the end we can calculate a contact point
+
722 Vec3 p = transformed_a.GetSupport(-v);
+
723 Vec3 q = inB.GetSupport(v);
+
724 Vec3 w = x - (q - p);
+
725
+
726#ifdef JPH_GJK_DEBUG
+
727 Trace("w = [%s]", ConvertToString(w).c_str());
+
728#endif
+
729
+
730 // Difference from article to this code:
+
731 // We did not include the convex radius in p and q in order to be able to calculate a good separating axis at the end of the algorithm.
+
732 // However when moving forward along inDirection we do need to take this into account so that we keep A and B separated by the sum of their convex radii.
+
733 // From p we have to subtract: inConvexRadiusA * v / |v|
+
734 // To q we have to add: inConvexRadiusB * v / |v|
+
735 // This means that to w we have to add: -(inConvexRadiusA + inConvexRadiusB) * v / |v|
+
736 // So to v . w we have to add: v . (-(inConvexRadiusA + inConvexRadiusB) * v / |v|) = -(inConvexRadiusA + inConvexRadiusB) * |v|
+
737 float v_dot_w = v.Dot(w) - sum_convex_radius * v.Length();
+
738#ifdef JPH_GJK_DEBUG
+
739 Trace("v . w = %g", (double)v_dot_w);
+
740#endif
+
741 if (v_dot_w > 0.0f)
+
742 {
+
743 // If ray and normal are in the same direction, we've passed A and there's no collision
+
744 float v_dot_r = v.Dot(inDirection);
+
745#ifdef JPH_GJK_DEBUG
+
746 Trace("v . r = %g", (double)v_dot_r);
+
747#endif
+
748 if (v_dot_r >= 0.0f)
+
749 return false;
+
750
+
751 // Update the lower bound for lambda
+
752 float delta = v_dot_w / v_dot_r;
+
753 float old_lambda = lambda;
+
754 lambda -= delta;
+
755#ifdef JPH_GJK_DEBUG
+
756 Trace("lambda = %g, delta = %g", (double)lambda, (double)delta);
+
757#endif
+
758
+
759 // If lambda didn't change, we cannot converge any further and we assume a hit
+
760 if (old_lambda == lambda)
+
761 break;
+
762
+
763 // If lambda is bigger or equal than max, we don't have a hit
+
764 if (lambda >= ioLambda)
+
765 return false;
+
766
+
767 // Update x to new closest point on the ray
+
768 x = lambda * inDirection;
+
769
+
770 // We've shifted x, so reset v_len_sq so that it is not used as early out when GetClosest returns false
+
771 v_len_sq = FLT_MAX;
+
772
+
773 // Now that we've moved, we know that A and B are not intersecting at lambda = 0, so we can update our tolerance to stop iterating
+
774 // as soon as A and B are inConvexRadiusA + inConvexRadiusB apart
+
775 tolerance_sq = Square(inTolerance + sum_convex_radius);
+
776
+
777 // We allow rebuilding the simplex once after x changes because the simplex was built
+
778 // for another x and numerical round off builds up as you keep adding points to an
+
779 // existing simplex
+
780 allow_restart = true;
+
781 }
+
782
+
783 // Add p to set P, q to set Q: P = P U {p}, Q = Q U {q}
+
784 mP[mNumPoints] = p;
+
785 mQ[mNumPoints] = q;
+
786 ++mNumPoints;
+
787
+
788 // Calculate Y = {x} - (Q - P)
+
789 for (int i = 0; i < mNumPoints; ++i)
+
790 mY[i] = x - (mQ[i] - mP[i]);
+
791
+
792 // Determine the new closest point from Y to origin
+
793 uint32 set; // Set of points that form the new simplex
+
794 if (!GetClosest<false>(v_len_sq, v, v_len_sq, set))
+
795 {
+
796#ifdef JPH_GJK_DEBUG
+
797 Trace("Failed to converge");
+
798#endif
+
799
+
800 // Only allow 1 restart, if we still can't get a closest point
+
801 // we're so close that we return this as a hit
+
802 if (!allow_restart)
+
803 break;
+
804
+
805 // If we fail to converge, we start again with the last point as simplex
+
806#ifdef JPH_GJK_DEBUG
+
807 Trace("Restarting");
+
808#endif
+
809 allow_restart = false;
+
810 mP[0] = p;
+
811 mQ[0] = q;
+
812 mNumPoints = 1;
+
813 v = x - q;
+
814 v_len_sq = FLT_MAX;
+
815 continue;
+
816 }
+
817 else if (set == 0xf)
+
818 {
+
819#ifdef JPH_GJK_DEBUG
+
820 Trace("Full simplex");
+
821#endif
+
822
+
823 // We're inside the tetrahedron, we have a hit (verify that length of v is 0)
+
824 JPH_ASSERT(v_len_sq == 0.0f);
+
825 break;
+
826 }
+
827
+
828 // Update the points P and Q to form the new simplex
+
829 // Note: We're not updating Y as Y will shift with x so we have to calculate it every iteration
+
830 UpdatePointSetPQ(set);
+
831
+
832 // Check if A and B are touching according to our tolerance
+
833 if (v_len_sq <= tolerance_sq)
+
834 {
+
835#ifdef JPH_GJK_DEBUG
+
836 Trace("Converged");
+
837#endif
+
838 break;
+
839 }
+
840
+
841 // Store our v to return as separating axis
+
842 prev_v = v;
+
843 }
+
844
+
845 // Calculate Y = {x} - (Q - P) again so we can calculate the contact points
+
846 for (int i = 0; i < mNumPoints; ++i)
+
847 mY[i] = x - (mQ[i] - mP[i]);
+
848
+
849 // Calculate the offset we need to apply to A and B to correct for the convex radius
+
850 Vec3 normalized_v = v.NormalizedOr(Vec3::sZero());
+
851 Vec3 convex_radius_a = inConvexRadiusA * normalized_v;
+
852 Vec3 convex_radius_b = inConvexRadiusB * normalized_v;
+
853
+
854 // Get the contact point
+
855 // Note that A and B will coincide when lambda > 0. In this case we calculate only B as it is more accurate as it contains less terms.
+
856 switch (mNumPoints)
+
857 {
+
858 case 1:
+
859 outPointB = mQ[0] + convex_radius_b;
+
860 outPointA = lambda > 0.0f? outPointB : mP[0] - convex_radius_a;
+
861 break;
+
862
+
863 case 2:
+
864 {
+
865 float bu, bv;
+
866 ClosestPoint::GetBaryCentricCoordinates(mY[0], mY[1], bu, bv);
+
867 outPointB = bu * mQ[0] + bv * mQ[1] + convex_radius_b;
+
868 outPointA = lambda > 0.0f? outPointB : bu * mP[0] + bv * mP[1] - convex_radius_a;
+
869 }
+
870 break;
+
871
+
872 case 3:
+
873 case 4: // A full simplex, we can't properly determine a contact point! As contact point we take the closest point of the previous iteration.
+
874 {
+
875 float bu, bv, bw;
+
876 ClosestPoint::GetBaryCentricCoordinates(mY[0], mY[1], mY[2], bu, bv, bw);
+
877 outPointB = bu * mQ[0] + bv * mQ[1] + bw * mQ[2] + convex_radius_b;
+
878 outPointA = lambda > 0.0f? outPointB : bu * mP[0] + bv * mP[1] + bw * mP[2] - convex_radius_a;
+
879 }
+
880 break;
+
881 }
+
882
+
883 // Store separating axis, in case we have a convex radius we can just return v,
+
884 // otherwise v will be very small and we resort to returning previous v as an approximation.
+
885 outSeparatingAxis = sum_convex_radius > 0.0f? -v : -prev_v;
+
886
+
887 // Store hit fraction
+
888 ioLambda = lambda;
+
889 return true;
+
890 }
+
+
891
+
892private:
+
893#ifdef JPH_GJK_DEBUG
+
895 void DrawState()
+
896 {
+
897 RMat44 origin = RMat44::sTranslation(mOffset);
+
898
+
899 // Draw origin
+ +
901
+
902 // Draw the hull
+
903 DebugRenderer::sInstance->DrawGeometry(origin, mGeometry->mBounds.Transformed(origin), mGeometry->mBounds.GetExtent().LengthSq(), Color::sYellow, mGeometry);
+
904
+
905 // Draw Y
+
906 for (int i = 0; i < mNumPoints; ++i)
+
907 {
+
908 // Draw support point
+
909 RVec3 y_i = origin * mY[i];
+ +
911 for (int j = i + 1; j < mNumPoints; ++j)
+
912 {
+
913 // Draw edge
+
914 RVec3 y_j = origin * mY[j];
+ +
916 for (int k = j + 1; k < mNumPoints; ++k)
+
917 {
+
918 // Make sure triangle faces the origin
+
919 RVec3 y_k = origin * mY[k];
+
920 RVec3 center = (y_i + y_j + y_k) / Real(3);
+
921 RVec3 normal = (y_j - y_i).Cross(y_k - y_i);
+
922 if (normal.Dot(center) < Real(0))
+
923 DebugRenderer::sInstance->DrawTriangle(y_i, y_j, y_k, Color::sLightGrey);
+
924 else
+ +
926 }
+
927 }
+
928 }
+
929
+
930 // Offset to the right
+
931 mOffset += Vec3(mGeometry->mBounds.GetSize().GetX() + 2.0f, 0, 0);
+
932 }
+
933#endif // JPH_GJK_DEBUG
+
934
+
935 Vec3 mY[4];
+
936 Vec3 mP[4];
+
937 Vec3 mQ[4];
+
938 int mNumPoints = 0;
+
939
+
940#ifdef JPH_GJK_DEBUG
+ +
942 RVec3 mOffset = RVec3::sZero();
+
943#endif
+
944};
+
+
945
+ + + +
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
+ + +
TraceFunction Trace
Definition IssueReporting.cpp:18
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+ +
float Real
Definition Real.h:27
+
const char * NibbleToBinary(uint32 inNibble)
Converts the lower 4 bits of inNibble to a string that represents the number in binary format.
Definition StringTools.cpp:95
+ +
String ConvertToString(const T &inValue)
Convert type to string.
Definition StringTools.h:15
+
static const Color sPurple
Definition Color.h:61
+
static const Color sGreen
Definition Color.h:57
+
static const Color sLightGrey
Definition Color.h:66
+
static const Color sOrange
Definition Color.h:63
+
static const Color sCyan
Definition Color.h:62
+
static const Color sRed
Definition Color.h:55
+
static const Color sYellow
Definition Color.h:60
+
GeometryRef CreateTriangleGeometryForConvex(SupportFunction inGetSupport)
Definition DebugRenderer.cpp:698
+
void DrawMarker(RVec3Arg inPosition, ColorArg inColor, float inSize)
Draw a marker on a position.
Definition DebugRenderer.cpp:172
+
void DrawCoordinateSystem(RMat44Arg inTransform, float inSize=1.0f)
Draw coordinate system (3 arrows, x = red, y = green, z = blue)
Definition DebugRenderer.cpp:206
+
virtual void DrawGeometry(RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)=0
+
static DebugRenderer * sInstance
Singleton instance.
Definition DebugRenderer.h:179
+
virtual void DrawLine(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor)=0
Draw line.
+
void DrawArrow(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor, float inSize)
Draw an arrow.
Definition DebugRenderer.cpp:184
+
virtual void DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::Off)=0
Draw a single back face culled triangle.
+
Definition GJKClosestPoint.h:23
+
bool Intersects(const A &inA, const B &inB, float inTolerance, Vec3 &ioV)
Definition GJKClosestPoint.h:208
+
bool CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float &ioLambda)
Definition GJKClosestPoint.h:659
+
void GetClosestPointsSimplex(Vec3 *outY, Vec3 *outP, Vec3 *outQ, uint &outNumPoints) const
Definition GJKClosestPoint.h:496
+
bool CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float inConvexRadiusA, float inConvexRadiusB, float &ioLambda, Vec3 &outPointA, Vec3 &outPointB, Vec3 &outSeparatingAxis)
Definition GJKClosestPoint.h:690
+
float GetClosestPoints(const A &inA, const B &inB, float inTolerance, float inMaxDistSq, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)
Definition GJKClosestPoint.h:328
+
bool CastRay(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inTolerance, const A &inA, float &ioLambda)
Definition GJKClosestPoint.h:517
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sTranslation(Vec3Arg inV)
Get matrix that translates.
Definition Mat44.inl:144
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+ +
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec3.inl:677
+
JPH_INLINE Vec3 NormalizedOr(Vec3Arg inZeroValue) const
Normalize vector or return inZeroValue if the length of the vector is zero.
Definition Vec3.inl:716
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
bool GetBaryCentricCoordinates(Vec3Arg inA, Vec3Arg inB, float &outU, float &outV)
Definition ClosestPoint.h:18
+
Vec3 GetClosestPointOnLine(Vec3Arg inA, Vec3Arg inB, uint32 &outSet)
Definition ClosestPoint.h:132
+
Structure that performs a Minkowski difference A - B.
Definition ConvexSupport.h:67
+
Vec3 GetSupport(Vec3Arg inDirection) const
Calculate the support vector for this convex shape.
Definition ConvexSupport.h:75
+
Definition ConvexSupport.h:15
+
Vec3 GetSupport(Vec3Arg inDirection) const
Calculate the support vector for this convex shape.
Definition ConvexSupport.h:24
+
+
+ + + + diff --git a/_gaussian_elimination_8h.html b/_gaussian_elimination_8h.html new file mode 100644 index 000000000..143bcb4eb --- /dev/null +++ b/_gaussian_elimination_8h.html @@ -0,0 +1,165 @@ + + + + + + + +Jolt Physics: Jolt/Math/GaussianElimination.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GaussianElimination.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Functions

template<class MatrixA , class MatrixB >
JPH_NAMESPACE_BEGIN bool GaussianElimination (MatrixA &ioA, MatrixB &ioB, float inTolerance=1.0e-16f)
 
+

Function Documentation

+ +

◆ GaussianElimination()

+ +
+
+
+template<class MatrixA , class MatrixB >
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN bool GaussianElimination (MatrixA & ioA,
MatrixB & ioB,
float inTolerance = 1.0e-16f 
)
+
+

This function performs Gauss-Jordan elimination to solve a matrix equation. A must be an NxN matrix and B must be an NxM matrix forming the equation A * x = B on output B will contain x and A will be destroyed.

+

This code can be used for example to compute the inverse of a matrix. Set A to the matrix to invert, set B to identity and let GaussianElimination solve the equation, on return B will be the inverse of A. And A is destroyed.

+

Taken and adapted from Numerical Recipies in C paragraph 2.1

+ +
+
+
+
+ + + + diff --git a/_gaussian_elimination_8h.js b/_gaussian_elimination_8h.js new file mode 100644 index 000000000..d5b3b7ca5 --- /dev/null +++ b/_gaussian_elimination_8h.js @@ -0,0 +1,4 @@ +var _gaussian_elimination_8h = +[ + [ "GaussianElimination", "_gaussian_elimination_8h.html#a292d56457a5c67858f083798c34b111c", null ] +]; \ No newline at end of file diff --git a/_gaussian_elimination_8h_source.html b/_gaussian_elimination_8h_source.html new file mode 100644 index 000000000..fb9781b1d --- /dev/null +++ b/_gaussian_elimination_8h_source.html @@ -0,0 +1,220 @@ + + + + + + + +Jolt Physics: Jolt/Math/GaussianElimination.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GaussianElimination.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
+
18template <class MatrixA, class MatrixB>
+
+
19bool GaussianElimination(MatrixA &ioA, MatrixB &ioB, float inTolerance = 1.0e-16f)
+
20{
+
21 // Get problem dimensions
+
22 const uint n = ioA.GetCols();
+
23 const uint m = ioB.GetCols();
+
24
+
25 // Check matrix requirement
+
26 JPH_ASSERT(ioA.GetRows() == n);
+
27 JPH_ASSERT(ioB.GetRows() == n);
+
28
+
29 // Create array for bookkeeping on pivoting
+
30 int *ipiv = (int *)JPH_STACK_ALLOC(n * sizeof(int));
+
31 memset(ipiv, 0, n * sizeof(int));
+
32
+
33 for (uint i = 0; i < n; ++i)
+
34 {
+
35 // Initialize pivot element as the diagonal
+
36 uint pivot_row = i, pivot_col = i;
+
37
+
38 // Determine pivot element
+
39 float largest_element = 0.0f;
+
40 for (uint j = 0; j < n; ++j)
+
41 if (ipiv[j] != 1)
+
42 for (uint k = 0; k < n; ++k)
+
43 {
+
44 if (ipiv[k] == 0)
+
45 {
+
46 float element = abs(ioA(j, k));
+
47 if (element >= largest_element)
+
48 {
+
49 largest_element = element;
+
50 pivot_row = j;
+
51 pivot_col = k;
+
52 }
+
53 }
+
54 else if (ipiv[k] > 1)
+
55 {
+
56 return false;
+
57 }
+
58 }
+
59
+
60 // Mark this column as used
+
61 ++ipiv[pivot_col];
+
62
+
63 // Exchange rows when needed so that the pivot element is at ioA(pivot_col, pivot_col) instead of at ioA(pivot_row, pivot_col)
+
64 if (pivot_row != pivot_col)
+
65 {
+
66 for (uint j = 0; j < n; ++j)
+
67 swap(ioA(pivot_row, j), ioA(pivot_col, j));
+
68 for (uint j = 0; j < m; ++j)
+
69 swap(ioB(pivot_row, j), ioB(pivot_col, j));
+
70 }
+
71
+
72 // Get diagonal element that we are about to set to 1
+
73 float diagonal_element = ioA(pivot_col, pivot_col);
+
74 if (abs(diagonal_element) < inTolerance)
+
75 return false;
+
76
+
77 // Divide the whole row by the pivot element, making ioA(pivot_col, pivot_col) = 1
+
78 for (uint j = 0; j < n; ++j)
+
79 ioA(pivot_col, j) /= diagonal_element;
+
80 for (uint j = 0; j < m; ++j)
+
81 ioB(pivot_col, j) /= diagonal_element;
+
82 ioA(pivot_col, pivot_col) = 1.0f;
+
83
+
84 // Next reduce the rows, except for the pivot one,
+
85 // after this step the pivot_col column is zero except for the pivot element which is 1
+
86 for (uint j = 0; j < n; ++j)
+
87 if (j != pivot_col)
+
88 {
+
89 float element = ioA(j, pivot_col);
+
90 for (uint k = 0; k < n; ++k)
+
91 ioA(j, k) -= ioA(pivot_col, k) * element;
+
92 for (uint k = 0; k < m; ++k)
+
93 ioB(j, k) -= ioB(pivot_col, k) * element;
+
94 ioA(j, pivot_col) = 0.0f;
+
95 }
+
96 }
+
97
+
98 // Success
+
99 return true;
+
100}
+
+
101
+ +
#define JPH_STACK_ALLOC(n)
Definition Core.h:505
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_NAMESPACE_BEGIN bool GaussianElimination(MatrixA &ioA, MatrixB &ioB, float inTolerance=1.0e-16f)
Definition GaussianElimination.h:19
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
+
+ + + + diff --git a/_gear_constraint_8cpp.html b/_gear_constraint_8cpp.html new file mode 100644 index 000000000..2143105b8 --- /dev/null +++ b/_gear_constraint_8cpp.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/GearConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GearConstraint.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (GearConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (GearConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_gear_constraint_8cpp.js b/_gear_constraint_8cpp.js new file mode 100644 index 000000000..6c8849338 --- /dev/null +++ b/_gear_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _gear_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_gear_constraint_8cpp.html#a121621e2af4057b49d6e5d846a63e6f5", null ] +]; \ No newline at end of file diff --git a/_gear_constraint_8h.html b/_gear_constraint_8h.html new file mode 100644 index 000000000..a88701350 --- /dev/null +++ b/_gear_constraint_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/GearConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GearConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  GearConstraintSettings
 Gear constraint settings. More...
 
class  GearConstraint
 
+
+
+ + + + diff --git a/_gear_constraint_8h.js b/_gear_constraint_8h.js new file mode 100644 index 000000000..31b14ff3a --- /dev/null +++ b/_gear_constraint_8h.js @@ -0,0 +1,5 @@ +var _gear_constraint_8h = +[ + [ "GearConstraintSettings", "class_gear_constraint_settings.html", "class_gear_constraint_settings" ], + [ "GearConstraint", "class_gear_constraint.html", "class_gear_constraint" ] +]; \ No newline at end of file diff --git a/_gear_constraint_8h_source.html b/_gear_constraint_8h_source.html new file mode 100644 index 000000000..4a8f3c4ed --- /dev/null +++ b/_gear_constraint_8h_source.html @@ -0,0 +1,262 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/GearConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GearConstraint.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
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+ +
17
+
18 // See: ConstraintSettings::SaveBinaryState
+
19 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
20
+
22 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
+
23
+
+
28 void SetRatio(int inNumTeethGear1, int inNumTeethGear2)
+
29 {
+
30 mRatio = float(inNumTeethGear2) / float(inNumTeethGear1);
+
31 }
+
+
32
+ +
35
+
37 Vec3 mHingeAxis1 = Vec3::sAxisX();
+
38
+
40 Vec3 mHingeAxis2 = Vec3::sAxisX();
+
41
+
43 float mRatio = 1.0f;
+
44
+
45protected:
+
46 // See: ConstraintSettings::RestoreBinaryState
+
47 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
48};
+
+
49
+
+ +
53{
+
54public:
+ +
56
+
58 GearConstraint(Body &inBody1, Body &inBody2, const GearConstraintSettings &inSettings);
+
59
+
60 // Generic interface of a constraint
+
61 virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::Gear; }
+
62 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override { /* Do nothing */ }
+
63 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
64 virtual void ResetWarmStart() override;
+
65 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
66 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
67 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
68#ifdef JPH_DEBUG_RENDERER
+
69 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
70#endif // JPH_DEBUG_RENDERER
+
71 virtual void SaveState(StateRecorder &inStream) const override;
+
72 virtual void RestoreState(StateRecorder &inStream) override;
+
73 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
74
+
75 // See: TwoBodyConstraint
+
76 virtual Mat44 GetConstraintToBody1Matrix() const override;
+
77 virtual Mat44 GetConstraintToBody2Matrix() const override;
+
78
+
80 void SetConstraints(const Constraint *inGear1, const Constraint *inGear2) { mGear1Constraint = inGear1; mGear2Constraint = inGear2; }
+
81
+
83 inline float GetTotalLambda() const { return mGearConstraintPart.GetTotalLambda(); }
+
84
+
85private:
+
86 // Internal helper function to calculate the values below
+
87 void CalculateConstraintProperties(Mat44Arg inRotation1, Mat44Arg inRotation2);
+
88
+
89 // CONFIGURATION PROPERTIES FOLLOW
+
90
+
91 // Local space hinge axis for body 1
+
92 Vec3 mLocalSpaceHingeAxis1;
+
93
+
94 // Local space hinge axis for body 2
+
95 Vec3 mLocalSpaceHingeAxis2;
+
96
+
97 // Ratio between gear 1 and 2
+
98 float mRatio;
+
99
+
100 // The constraints that constrain both gears (2 hinges), optional and used to calculate the rotation error and fix numerical drift.
+
101 RefConst<Constraint> mGear1Constraint;
+
102 RefConst<Constraint> mGear2Constraint;
+
103
+
104 // RUN TIME PROPERTIES FOLLOW
+
105
+
106 // World space hinge axis for body 1
+
107 Vec3 mWorldSpaceHingeAxis1;
+
108
+
109 // World space hinge axis for body 2
+
110 Vec3 mWorldSpaceHingeAxis2;
+
111
+
112 // The constraint parts
+
113 GearConstraintPart mGearConstraintPart;
+
114};
+
+
115
+ +
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
+
@ WorldSpace
All constraint properties are specified in world space.
+
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#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
+ +
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:103
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
Definition GearConstraint.h:53
+
float GetTotalLambda() const
Definition GearConstraint.h:83
+
virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
Definition GearConstraint.h:62
+
void SetConstraints(const Constraint *inGear1, const Constraint *inGear2)
The constraints that constrain both gears (2 hinges), optional and used to calculate the rotation err...
Definition GearConstraint.h:80
+
virtual EConstraintSubType GetSubType() const override
Get the sub type of a constraint.
Definition GearConstraint.h:61
+
Definition GearConstraintPart.h:40
+
Gear constraint settings.
Definition GearConstraint.h:14
+
void SetRatio(int inNumTeethGear1, int inNumTeethGear2)
Definition GearConstraint.h:28
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Definition Reference.h:151
+
Definition Reference.h:101
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition Vec3.h:53
+
+
+ + + + diff --git a/_gear_constraint_part_8h.html b/_gear_constraint_part_8h.html new file mode 100644 index 000000000..3fd73de54 --- /dev/null +++ b/_gear_constraint_part_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/GearConstraintPart.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GearConstraintPart.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  GearConstraintPart
 
+
+
+ + + + diff --git a/_gear_constraint_part_8h.js b/_gear_constraint_part_8h.js new file mode 100644 index 000000000..e7797ffe3 --- /dev/null +++ b/_gear_constraint_part_8h.js @@ -0,0 +1,4 @@ +var _gear_constraint_part_8h = +[ + [ "GearConstraintPart", "class_gear_constraint_part.html", "class_gear_constraint_part" ] +]; \ No newline at end of file diff --git a/_gear_constraint_part_8h_source.html b/_gear_constraint_part_8h_source.html new file mode 100644 index 000000000..bed6a0361 --- /dev/null +++ b/_gear_constraint_part_8h_source.html @@ -0,0 +1,310 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/GearConstraintPart.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GearConstraintPart.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
+ + +
9
+ +
11
+
+ +
40{
+
42 JPH_INLINE bool ApplyVelocityStep(Body &ioBody1, Body &ioBody2, float inLambda) const
+
43 {
+
44 // Apply impulse if delta is not zero
+
45 if (inLambda != 0.0f)
+
46 {
+
47 // Calculate velocity change due to constraint
+
48 //
+
49 // Impulse:
+
50 // P = J^T lambda
+
51 //
+
52 // Euler velocity integration:
+
53 // v' = v + M^-1 P
+
54 ioBody1.GetMotionProperties()->AddAngularVelocityStep(inLambda * mInvI1_A);
+
55 ioBody2.GetMotionProperties()->AddAngularVelocityStep(inLambda * mInvI2_B);
+
56 return true;
+
57 }
+
58
+
59 return false;
+
60 }
+
61
+
62public:
+
+
69 inline void CalculateConstraintProperties(const Body &inBody1, Vec3Arg inWorldSpaceHingeAxis1, const Body &inBody2, Vec3Arg inWorldSpaceHingeAxis2, float inRatio)
+
70 {
+
71 JPH_ASSERT(inWorldSpaceHingeAxis1.IsNormalized(1.0e-4f));
+
72 JPH_ASSERT(inWorldSpaceHingeAxis2.IsNormalized(1.0e-4f));
+
73
+
74 // Calculate: I1^-1 a
+
75 mInvI1_A = inBody1.GetMotionProperties()->MultiplyWorldSpaceInverseInertiaByVector(inBody1.GetRotation(), inWorldSpaceHingeAxis1);
+
76
+
77 // Calculate: I2^-1 b
+
78 mInvI2_B = inBody2.GetMotionProperties()->MultiplyWorldSpaceInverseInertiaByVector(inBody2.GetRotation(), inWorldSpaceHingeAxis2);
+
79
+
80 // K^-1 = 1 / (J M^-1 J^T) = 1 / (a^T I1^-1 a + r^2 * b^T I2^-1 b)
+
81 float inv_effective_mass = (inWorldSpaceHingeAxis1.Dot(mInvI1_A) + inWorldSpaceHingeAxis2.Dot(mInvI2_B) * Square(inRatio));
+
82 if (inv_effective_mass == 0.0f)
+
83 Deactivate();
+
84 else
+
85 mEffectiveMass = 1.0f / inv_effective_mass;
+
86 }
+
+
87
+
+
89 inline void Deactivate()
+
90 {
+
91 mEffectiveMass = 0.0f;
+
92 mTotalLambda = 0.0f;
+
93 }
+
+
94
+
+
96 inline bool IsActive() const
+
97 {
+
98 return mEffectiveMass != 0.0f;
+
99 }
+
+
100
+
+
105 inline void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
+
106 {
+
107 mTotalLambda *= inWarmStartImpulseRatio;
+
108 ApplyVelocityStep(ioBody1, ioBody2, mTotalLambda);
+
109 }
+
+
110
+
+
117 inline bool SolveVelocityConstraint(Body &ioBody1, Vec3Arg inWorldSpaceHingeAxis1, Body &ioBody2, Vec3Arg inWorldSpaceHingeAxis2, float inRatio)
+
118 {
+
119 // Lagrange multiplier is:
+
120 //
+
121 // lambda = -K^-1 (J v + b)
+
122 float lambda = -mEffectiveMass * (inWorldSpaceHingeAxis1.Dot(ioBody1.GetAngularVelocity()) + inRatio * inWorldSpaceHingeAxis2.Dot(ioBody2.GetAngularVelocity()));
+
123 mTotalLambda += lambda; // Store accumulated impulse
+
124
+
125 return ApplyVelocityStep(ioBody1, ioBody2, lambda);
+
126 }
+
+
127
+
+
129 float GetTotalLambda() const
+
130 {
+
131 return mTotalLambda;
+
132 }
+
+
133
+
+
139 inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) const
+
140 {
+
141 // Only apply position constraint when the constraint is hard, otherwise the velocity bias will fix the constraint
+
142 if (inC != 0.0f)
+
143 {
+
144 // Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
+
145 //
+
146 // lambda = -K^-1 * beta / dt * C
+
147 //
+
148 // We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
+
149 float lambda = -mEffectiveMass * inBaumgarte * inC;
+
150
+
151 // Directly integrate velocity change for one time step
+
152 //
+
153 // Euler velocity integration:
+
154 // dv = M^-1 P
+
155 //
+
156 // Impulse:
+
157 // P = J^T lambda
+
158 //
+
159 // Euler position integration:
+
160 // x' = x + dv * dt
+
161 //
+
162 // Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
+
163 // Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
+
164 // stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
+
165 // integrate + a position integrate and then discard the velocity change.
+
166 if (ioBody1.IsDynamic())
+
167 ioBody1.AddRotationStep(lambda * mInvI1_A);
+
168 if (ioBody2.IsDynamic())
+
169 ioBody2.AddRotationStep(lambda * mInvI2_B);
+
170 return true;
+
171 }
+
172
+
173 return false;
+
174 }
+
+
175
+
+
177 void SaveState(StateRecorder &inStream) const
+
178 {
+
179 inStream.Write(mTotalLambda);
+
180 }
+
+
181
+
+ +
184 {
+
185 inStream.Read(mTotalLambda);
+
186 }
+
+
187
+
188private:
+
189 Vec3 mInvI1_A;
+
190 Vec3 mInvI2_B;
+
191 float mEffectiveMass = 0.0f;
+
192 float mTotalLambda = 0.0f;
+
193};
+
+
194
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+ +
Definition Body.h:35
+
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:249
+
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:61
+
void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Update rotation using an Euler step (using during position integrate & constraint solving)
Definition Body.inl:81
+
Quat GetRotation() const
World space rotation of the body.
Definition Body.h:231
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass (unit: rad/s)
Definition Body.h:153
+
Definition GearConstraintPart.h:40
+
float GetTotalLambda() const
Return lagrange multiplier.
Definition GearConstraintPart.h:129
+
void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
Definition GearConstraintPart.h:105
+
bool SolveVelocityConstraint(Body &ioBody1, Vec3Arg inWorldSpaceHingeAxis1, Body &ioBody2, Vec3Arg inWorldSpaceHingeAxis2, float inRatio)
Definition GearConstraintPart.h:117
+
bool IsActive() const
Check if constraint is active.
Definition GearConstraintPart.h:96
+
void CalculateConstraintProperties(const Body &inBody1, Vec3Arg inWorldSpaceHingeAxis1, const Body &inBody2, Vec3Arg inWorldSpaceHingeAxis2, float inRatio)
Definition GearConstraintPart.h:69
+
void Deactivate()
Deactivate this constraint.
Definition GearConstraintPart.h:89
+
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition GearConstraintPart.h:183
+
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) const
Definition GearConstraintPart.h:139
+
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition GearConstraintPart.h:177
+
JPH_INLINE Vec3 MultiplyWorldSpaceInverseInertiaByVector(QuatArg inBodyRotation, Vec3Arg inV) const
Multiply a vector with the inverse world space inertia tensor ( ). Zero if object is static or kinema...
Definition MotionProperties.inl:76
+
void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:193
+
Definition StateRecorder.h:48
+
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:29
+
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:26
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const
Test if vector is normalized.
Definition Vec3.inl:745
+
+
+ + + + diff --git a/_get_primitive_type_of_type_8h.html b/_get_primitive_type_of_type_8h.html new file mode 100644 index 000000000..ac0ee0d1a --- /dev/null +++ b/_get_primitive_type_of_type_8h.html @@ -0,0 +1,288 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/GetPrimitiveTypeOfType.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GetPrimitiveTypeOfType.h File Reference
+
+
+
#include <Jolt/Core/RTTI.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class T >
JPH_NAMESPACE_BEGIN const RTTIGetPrimitiveTypeOfType (T *)
 Helper functions to get the underlying RTTI type of a type (so e.g. Array<sometype> will return sometype)
 
template<class T >
const RTTIGetPrimitiveTypeOfType (T **)
 
template<class T >
const RTTIGetPrimitiveTypeOfType (Ref< T > *)
 
template<class T >
const RTTIGetPrimitiveTypeOfType (RefConst< T > *)
 
template<class T , class A >
const RTTIGetPrimitiveTypeOfType (Array< T, A > *)
 
template<class T , uint N>
const RTTIGetPrimitiveTypeOfType (StaticArray< T, N > *)
 
template<class T , uint N>
const RTTIGetPrimitiveTypeOfType (T(*)[N])
 
+

Function Documentation

+ +

◆ GetPrimitiveTypeOfType() [1/7]

+ +
+
+
+template<class T , class A >
+ + + + + + + + +
const RTTI * GetPrimitiveTypeOfType (Array< T, A > * )
+
+ +
+
+ +

◆ GetPrimitiveTypeOfType() [2/7]

+ +
+
+
+template<class T >
+ + + + + + + + +
const RTTI * GetPrimitiveTypeOfType (Ref< T > * )
+
+ +
+
+ +

◆ GetPrimitiveTypeOfType() [3/7]

+ +
+
+
+template<class T >
+ + + + + + + + +
const RTTI * GetPrimitiveTypeOfType (RefConst< T > * )
+
+ +
+
+ +

◆ GetPrimitiveTypeOfType() [4/7]

+ +
+
+
+template<class T , uint N>
+ + + + + + + + +
const RTTI * GetPrimitiveTypeOfType (StaticArray< T, N > * )
+
+ +
+
+ +

◆ GetPrimitiveTypeOfType() [5/7]

+ +
+
+
+template<class T >
+ + + + + + + + +
JPH_NAMESPACE_BEGIN const RTTI * GetPrimitiveTypeOfType (T * )
+
+ +

Helper functions to get the underlying RTTI type of a type (so e.g. Array<sometype> will return sometype)

+ +
+
+ +

◆ GetPrimitiveTypeOfType() [6/7]

+ +
+
+
+template<class T >
+ + + + + + + + +
const RTTI * GetPrimitiveTypeOfType (T ** )
+
+ +
+
+ +

◆ GetPrimitiveTypeOfType() [7/7]

+ +
+
+
+template<class T , uint N>
+ + + + + + + + +
const RTTI * GetPrimitiveTypeOfType (T(*) [N])
+
+ +
+
+
+
+ + + + diff --git a/_get_primitive_type_of_type_8h.js b/_get_primitive_type_of_type_8h.js new file mode 100644 index 000000000..f1bdc2bfd --- /dev/null +++ b/_get_primitive_type_of_type_8h.js @@ -0,0 +1,10 @@ +var _get_primitive_type_of_type_8h = +[ + [ "GetPrimitiveTypeOfType", "_get_primitive_type_of_type_8h.html#aeac5a3169dddfc36ae8112d8a152133e", null ], + [ "GetPrimitiveTypeOfType", "_get_primitive_type_of_type_8h.html#a98487e1613e4448be96935228a098209", null ], + [ "GetPrimitiveTypeOfType", "_get_primitive_type_of_type_8h.html#a333329c022169319150ccbed1266cee5", null ], + [ "GetPrimitiveTypeOfType", "_get_primitive_type_of_type_8h.html#a28bd8139f78b17ea7c2c3c8dac5ad754", null ], + [ "GetPrimitiveTypeOfType", "_get_primitive_type_of_type_8h.html#ae02d0a3c24fabff8ce59cd5394e337e0", null ], + [ "GetPrimitiveTypeOfType", "_get_primitive_type_of_type_8h.html#a8261b0b71c3f84b13c6ab396ba807993", null ], + [ "GetPrimitiveTypeOfType", "_get_primitive_type_of_type_8h.html#afcbff43d21c5b1818c1663b88b724ebe", null ] +]; \ No newline at end of file diff --git a/_get_primitive_type_of_type_8h_source.html b/_get_primitive_type_of_type_8h_source.html new file mode 100644 index 000000000..553372619 --- /dev/null +++ b/_get_primitive_type_of_type_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/GetPrimitiveTypeOfType.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GetPrimitiveTypeOfType.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
+
7#include <Jolt/Core/RTTI.h>
+
8
+ +
10
+
12template <class T>
+
+ +
14{
+
15 return GetRTTIOfType((T *)nullptr);
+
16}
+
+
17
+
18template <class T>
+
+ +
20{
+
21 return GetRTTIOfType((T *)nullptr);
+
22}
+
+
23
+
24template <class T>
+
+ +
26{
+
27 return GetRTTIOfType((T *)nullptr);
+
28}
+
+
29
+
30template <class T>
+
+ +
32{
+
33 return GetRTTIOfType((T *)nullptr);
+
34}
+
+
35
+
36template <class T, class A>
+
+ +
38{
+
39 return GetPrimitiveTypeOfType((T *)nullptr);
+
40}
+
+
41
+
42template <class T, uint N>
+
+ +
44{
+
45 return GetPrimitiveTypeOfType((T *)nullptr);
+
46}
+
+
47
+
48template <class T, uint N>
+
+ +
50{
+
51 return GetPrimitiveTypeOfType((T *)nullptr);
+
52}
+
+
53
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_NAMESPACE_BEGIN const RTTI * GetPrimitiveTypeOfType(T *)
Helper functions to get the underlying RTTI type of a type (so e.g. Array<sometype> will return somet...
Definition GetPrimitiveTypeOfType.h:13
+ +
Definition Array.h:36
+
Definition RTTI.h:122
+
Definition Reference.h:151
+
Definition Reference.h:101
+
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
+
+ + + + diff --git a/_get_triangles_context_8h.html b/_get_triangles_context_8h.html new file mode 100644 index 000000000..b29ef444d --- /dev/null +++ b/_get_triangles_context_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/GetTrianglesContext.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GetTrianglesContext.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  GetTrianglesContextVertexList
 Implementation of GetTrianglesStart/Next that uses a fixed list of vertices for the triangles. These are transformed into world space when getting the triangles. More...
 
class  GetTrianglesContextMultiVertexList
 Implementation of GetTrianglesStart/Next that uses a multiple fixed lists of vertices for the triangles. These are transformed into world space when getting the triangles. More...
 
+
+
+ + + + diff --git a/_get_triangles_context_8h.js b/_get_triangles_context_8h.js new file mode 100644 index 000000000..7baf13c17 --- /dev/null +++ b/_get_triangles_context_8h.js @@ -0,0 +1,5 @@ +var _get_triangles_context_8h = +[ + [ "GetTrianglesContextVertexList", "class_get_triangles_context_vertex_list.html", "class_get_triangles_context_vertex_list" ], + [ "GetTrianglesContextMultiVertexList", "class_get_triangles_context_multi_vertex_list.html", "class_get_triangles_context_multi_vertex_list" ] +]; \ No newline at end of file diff --git a/_get_triangles_context_8h_source.html b/_get_triangles_context_8h_source.html new file mode 100644 index 000000000..b7f234b92 --- /dev/null +++ b/_get_triangles_context_8h_source.html @@ -0,0 +1,408 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/GetTrianglesContext.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GetTrianglesContext.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
+
11class PhysicsMaterial;
+
12
+
+ +
15{
+
16public:
+
+
18 GetTrianglesContextVertexList(Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, Mat44Arg inLocalTransform, const Vec3 *inTriangleVertices, size_t inNumTriangleVertices, const PhysicsMaterial *inMaterial) :
+
19 mLocalToWorld(Mat44::sRotationTranslation(inRotation, inPositionCOM) * Mat44::sScale(inScale) * inLocalTransform),
+
20 mTriangleVertices(inTriangleVertices),
+
21 mNumTriangleVertices(inNumTriangleVertices),
+
22 mMaterial(inMaterial),
+
23 mIsInsideOut(ScaleHelpers::IsInsideOut(inScale))
+
24 {
+
25 static_assert(sizeof(GetTrianglesContextVertexList) <= sizeof(Shape::GetTrianglesContext), "GetTrianglesContext too small");
+ +
27 JPH_ASSERT(inNumTriangleVertices % 3 == 0);
+
28 }
+
+
29
+
+
31 int GetTrianglesNext(int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials)
+
32 {
+
33 JPH_ASSERT(inMaxTrianglesRequested >= Shape::cGetTrianglesMinTrianglesRequested);
+
34
+
35 int total_num_vertices = min(inMaxTrianglesRequested * 3, int(mNumTriangleVertices - mCurrentVertex));
+
36
+
37 if (mIsInsideOut)
+
38 {
+
39 // Store triangles flipped
+
40 for (const Vec3 *v = mTriangleVertices + mCurrentVertex, *v_end = v + total_num_vertices; v < v_end; v += 3)
+
41 {
+
42 (mLocalToWorld * v[0]).StoreFloat3(outTriangleVertices++);
+
43 (mLocalToWorld * v[2]).StoreFloat3(outTriangleVertices++);
+
44 (mLocalToWorld * v[1]).StoreFloat3(outTriangleVertices++);
+
45 }
+
46 }
+
47 else
+
48 {
+
49 // Store triangles
+
50 for (const Vec3 *v = mTriangleVertices + mCurrentVertex, *v_end = v + total_num_vertices; v < v_end; v += 3)
+
51 {
+
52 (mLocalToWorld * v[0]).StoreFloat3(outTriangleVertices++);
+
53 (mLocalToWorld * v[1]).StoreFloat3(outTriangleVertices++);
+
54 (mLocalToWorld * v[2]).StoreFloat3(outTriangleVertices++);
+
55 }
+
56 }
+
57
+
58 // Update the current vertex to point to the next vertex to get
+
59 mCurrentVertex += total_num_vertices;
+
60 int total_num_triangles = total_num_vertices / 3;
+
61
+
62 // Store materials
+
63 if (outMaterials != nullptr)
+
64 for (const PhysicsMaterial **m = outMaterials, **m_end = outMaterials + total_num_triangles; m < m_end; ++m)
+
65 *m = mMaterial;
+
66
+
67 return total_num_triangles;
+
68 }
+
+
69
+
71 template <class A>
+
+
72 static void sCreateHalfUnitSphereTop(A &ioVertices, int inDetailLevel)
+
73 {
+
74 sCreateUnitSphereHelper(ioVertices, Vec3::sAxisX(), Vec3::sAxisY(), Vec3::sAxisZ(), inDetailLevel);
+
75 sCreateUnitSphereHelper(ioVertices, Vec3::sAxisY(), -Vec3::sAxisX(), Vec3::sAxisZ(), inDetailLevel);
+
76 sCreateUnitSphereHelper(ioVertices, Vec3::sAxisY(), Vec3::sAxisX(), -Vec3::sAxisZ(), inDetailLevel);
+
77 sCreateUnitSphereHelper(ioVertices, -Vec3::sAxisX(), Vec3::sAxisY(), -Vec3::sAxisZ(), inDetailLevel);
+
78 }
+
+
79
+
81 template <class A>
+
+
82 static void sCreateHalfUnitSphereBottom(A &ioVertices, int inDetailLevel)
+
83 {
+
84 sCreateUnitSphereHelper(ioVertices, -Vec3::sAxisX(), -Vec3::sAxisY(), Vec3::sAxisZ(), inDetailLevel);
+
85 sCreateUnitSphereHelper(ioVertices, -Vec3::sAxisY(), Vec3::sAxisX(), Vec3::sAxisZ(), inDetailLevel);
+
86 sCreateUnitSphereHelper(ioVertices, Vec3::sAxisX(), -Vec3::sAxisY(), -Vec3::sAxisZ(), inDetailLevel);
+
87 sCreateUnitSphereHelper(ioVertices, -Vec3::sAxisY(), -Vec3::sAxisX(), -Vec3::sAxisZ(), inDetailLevel);
+
88 }
+
+
89
+
91 template <class A>
+
+
92 static void sCreateUnitOpenCylinder(A &ioVertices, int inDetailLevel)
+
93 {
+
94 const Vec3 bottom_offset(0.0f, -2.0f, 0.0f);
+
95 int num_verts = 4 * (1 << inDetailLevel);
+
96 for (int i = 0; i < num_verts; ++i)
+
97 {
+
98 float angle1 = 2.0f * JPH_PI * (float(i) / num_verts);
+
99 float angle2 = 2.0f * JPH_PI * (float(i + 1) / num_verts);
+
100
+
101 Vec3 t1(Sin(angle1), 1.0f, Cos(angle1));
+
102 Vec3 t2(Sin(angle2), 1.0f, Cos(angle2));
+
103 Vec3 b1 = t1 + bottom_offset;
+
104 Vec3 b2 = t2 + bottom_offset;
+
105
+
106 ioVertices.push_back(t1);
+
107 ioVertices.push_back(b1);
+
108 ioVertices.push_back(t2);
+
109
+
110 ioVertices.push_back(t2);
+
111 ioVertices.push_back(b1);
+
112 ioVertices.push_back(b2);
+
113 }
+
114 }
+
+
115
+
116private:
+
118 template <class A>
+
119 static void sCreateUnitSphereHelper(A &ioVertices, Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, int inLevel)
+
120 {
+
121 Vec3 center1 = (inV1 + inV2).Normalized();
+
122 Vec3 center2 = (inV2 + inV3).Normalized();
+
123 Vec3 center3 = (inV3 + inV1).Normalized();
+
124
+
125 if (inLevel > 0)
+
126 {
+
127 int new_level = inLevel - 1;
+
128 sCreateUnitSphereHelper(ioVertices, inV1, center1, center3, new_level);
+
129 sCreateUnitSphereHelper(ioVertices, center1, center2, center3, new_level);
+
130 sCreateUnitSphereHelper(ioVertices, center1, inV2, center2, new_level);
+
131 sCreateUnitSphereHelper(ioVertices, center3, center2, inV3, new_level);
+
132 }
+
133 else
+
134 {
+
135 ioVertices.push_back(inV1);
+
136 ioVertices.push_back(inV2);
+
137 ioVertices.push_back(inV3);
+
138 }
+
139 }
+
140
+
141 Mat44 mLocalToWorld;
+
142 const Vec3 * mTriangleVertices;
+
143 size_t mNumTriangleVertices;
+
144 size_t mCurrentVertex = 0;
+
145 const PhysicsMaterial * mMaterial;
+
146 bool mIsInsideOut;
+
147};
+
+
148
+
+ +
151{
+
152public:
+
+
154 GetTrianglesContextMultiVertexList(bool inIsInsideOut, const PhysicsMaterial *inMaterial) :
+
155 mMaterial(inMaterial),
+
156 mIsInsideOut(inIsInsideOut)
+
157 {
+
158 static_assert(sizeof(GetTrianglesContextMultiVertexList) <= sizeof(Shape::GetTrianglesContext), "GetTrianglesContext too small");
+ +
160 }
+
+
161
+
+
163 void AddPart(Mat44Arg inLocalToWorld, const Vec3 *inTriangleVertices, size_t inNumTriangleVertices)
+
164 {
+
165 JPH_ASSERT(inNumTriangleVertices % 3 == 0);
+
166
+
167 mParts.push_back({ inLocalToWorld, inTriangleVertices, inNumTriangleVertices });
+
168 }
+
+
169
+
+
171 int GetTrianglesNext(int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials)
+
172 {
+
173 JPH_ASSERT(inMaxTrianglesRequested >= Shape::cGetTrianglesMinTrianglesRequested);
+
174
+
175 int total_num_vertices = 0;
+
176 int max_vertices_requested = inMaxTrianglesRequested * 3;
+
177
+
178 // Loop over parts
+
179 for (; mCurrentPart < mParts.size(); ++mCurrentPart)
+
180 {
+
181 const Part &part = mParts[mCurrentPart];
+
182
+
183 // Calculate how many vertices to take from this part
+
184 int part_num_vertices = min(max_vertices_requested, int(part.mNumTriangleVertices - mCurrentVertex));
+
185 if (part_num_vertices == 0)
+
186 break;
+
187
+
188 max_vertices_requested -= part_num_vertices;
+
189 total_num_vertices += part_num_vertices;
+
190
+
191 if (mIsInsideOut)
+
192 {
+
193 // Store triangles flipped
+
194 for (const Vec3 *v = part.mTriangleVertices + mCurrentVertex, *v_end = v + part_num_vertices; v < v_end; v += 3)
+
195 {
+
196 (part.mLocalToWorld * v[0]).StoreFloat3(outTriangleVertices++);
+
197 (part.mLocalToWorld * v[2]).StoreFloat3(outTriangleVertices++);
+
198 (part.mLocalToWorld * v[1]).StoreFloat3(outTriangleVertices++);
+
199 }
+
200 }
+
201 else
+
202 {
+
203 // Store triangles
+
204 for (const Vec3 *v = part.mTriangleVertices + mCurrentVertex, *v_end = v + part_num_vertices; v < v_end; v += 3)
+
205 {
+
206 (part.mLocalToWorld * v[0]).StoreFloat3(outTriangleVertices++);
+
207 (part.mLocalToWorld * v[1]).StoreFloat3(outTriangleVertices++);
+
208 (part.mLocalToWorld * v[2]).StoreFloat3(outTriangleVertices++);
+
209 }
+
210 }
+
211
+
212 // Update the current vertex to point to the next vertex to get
+
213 mCurrentVertex += part_num_vertices;
+
214
+
215 // Check if we completed this part
+
216 if (mCurrentVertex < part.mNumTriangleVertices)
+
217 break;
+
218
+
219 // Reset current vertex for the next part
+
220 mCurrentVertex = 0;
+
221 }
+
222
+
223 int total_num_triangles = total_num_vertices / 3;
+
224
+
225 // Store materials
+
226 if (outMaterials != nullptr)
+
227 for (const PhysicsMaterial **m = outMaterials, **m_end = outMaterials + total_num_triangles; m < m_end; ++m)
+
228 *m = mMaterial;
+
229
+
230 return total_num_triangles;
+
231 }
+
+
232
+
233private:
+
234 struct Part
+
235 {
+
236 Mat44 mLocalToWorld;
+
237 const Vec3 * mTriangleVertices;
+
238 size_t mNumTriangleVertices;
+
239 };
+
240
+ +
242 uint mCurrentPart = 0;
+
243 size_t mCurrentVertex = 0;
+
244 const PhysicsMaterial * mMaterial;
+
245 bool mIsInsideOut;
+
246};
+
+
247
+ +
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_ASSERT(...)
Definition IssueReporting.h:33
+
bool IsAligned(T inV, uint64 inAlignment)
Check if inV is inAlignment aligned.
Definition Math.h:88
+ +
JPH_INLINE float Cos(float inX)
Cosine of x (input in radians)
Definition Trigonometry.h:20
+
JPH_NAMESPACE_BEGIN JPH_INLINE float Sin(float inX)
Sine of x (input in radians)
Definition Trigonometry.h:12
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
Implementation of GetTrianglesStart/Next that uses a multiple fixed lists of vertices for the triangl...
Definition GetTrianglesContext.h:151
+
void AddPart(Mat44Arg inLocalToWorld, const Vec3 *inTriangleVertices, size_t inNumTriangleVertices)
Add a mesh part and its transform.
Definition GetTrianglesContext.h:163
+
GetTrianglesContextMultiVertexList(bool inIsInsideOut, const PhysicsMaterial *inMaterial)
Constructor, to be called in GetTrianglesStart.
Definition GetTrianglesContext.h:154
+
int GetTrianglesNext(int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials)
Definition GetTrianglesContext.h:171
+
Implementation of GetTrianglesStart/Next that uses a fixed list of vertices for the triangles....
Definition GetTrianglesContext.h:15
+
static void sCreateHalfUnitSphereBottom(A &ioVertices, int inDetailLevel)
Helper function that creates a vertex list of a half unit sphere (bottom part)
Definition GetTrianglesContext.h:82
+
static void sCreateUnitOpenCylinder(A &ioVertices, int inDetailLevel)
Helper function that creates an open cylinder of half height 1 and radius 1.
Definition GetTrianglesContext.h:92
+
int GetTrianglesNext(int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials)
Definition GetTrianglesContext.h:31
+
GetTrianglesContextVertexList(Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, Mat44Arg inLocalTransform, const Vec3 *inTriangleVertices, size_t inNumTriangleVertices, const PhysicsMaterial *inMaterial)
Constructor, to be called in GetTrianglesStart.
Definition GetTrianglesContext.h:18
+
static void sCreateHalfUnitSphereTop(A &ioVertices, int inDetailLevel)
Helper function that creates a vertex list of a half unit sphere (top part)
Definition GetTrianglesContext.h:72
+
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 Quat.h:33
+
static constexpr int cGetTrianglesMinTrianglesRequested
This is the minimum amount of triangles that should be requested through GetTrianglesNext.
Definition Shape.h:351
+
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
void push_back(const T &inElement)
Add element to the back of the array.
Definition StaticArray.h:61
+
size_type size() const
Returns amount of elements in the array.
Definition StaticArray.h:89
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition Vec3.h:53
+
static JPH_INLINE Vec3 sAxisY()
Definition Vec3.h:54
+
static JPH_INLINE Vec3 sAxisZ()
Definition Vec3.h:55
+
Helper functions to get properties of a scaling vector.
Definition ScaleHelpers.h:13
+
An opaque buffer that holds shape specific information during GetTrianglesStart/Next.
Definition Shape.h:348
+
+
+ + + + diff --git a/_group_filter_8cpp.html b/_group_filter_8cpp.html new file mode 100644 index 000000000..22b9206e4 --- /dev/null +++ b/_group_filter_8cpp.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/GroupFilter.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GroupFilter.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE (GroupFilter)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE (GroupFilter )
+
+ +
+
+
+
+ + + + diff --git a/_group_filter_8cpp.js b/_group_filter_8cpp.js new file mode 100644 index 000000000..dfbcbd016 --- /dev/null +++ b/_group_filter_8cpp.js @@ -0,0 +1,4 @@ +var _group_filter_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE", "_group_filter_8cpp.html#a8dee56aaf9f404b0a43cb140076ac750", null ] +]; \ No newline at end of file diff --git a/_group_filter_8h.html b/_group_filter_8h.html new file mode 100644 index 000000000..cdcd3dfe5 --- /dev/null +++ b/_group_filter_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/GroupFilter.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GroupFilter.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  GroupFilter
 Abstract class that checks if two CollisionGroups collide. More...
 
+
+
+ + + + diff --git a/_group_filter_8h.js b/_group_filter_8h.js new file mode 100644 index 000000000..88d817799 --- /dev/null +++ b/_group_filter_8h.js @@ -0,0 +1,4 @@ +var _group_filter_8h = +[ + [ "GroupFilter", "class_group_filter.html", "class_group_filter" ] +]; \ No newline at end of file diff --git a/_group_filter_8h_source.html b/_group_filter_8h_source.html new file mode 100644 index 000000000..dc7cfdb71 --- /dev/null +++ b/_group_filter_8h_source.html @@ -0,0 +1,171 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/GroupFilter.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GroupFilter.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
+
7#include <Jolt/Core/Result.h>
+ +
9
+ +
11
+
12class CollisionGroup;
+
13class StreamIn;
+
14class StreamOut;
+
15
+
+
17class JPH_EXPORT GroupFilter : public SerializableObject, public RefTarget<GroupFilter>
+
18{
+
19public:
+ +
21
+
22
+
23 virtual ~GroupFilter() override = default;
+
24
+
26 virtual bool CanCollide(const CollisionGroup &inGroup1, const CollisionGroup &inGroup2) const = 0;
+
27
+
29 virtual void SaveBinaryState(StreamOut &inStream) const;
+
30
+ +
32
+
34 static GroupFilterResult sRestoreFromBinaryState(StreamIn &inStream);
+
35
+
36protected:
+
38 virtual void RestoreBinaryState(StreamIn &inStream);
+
39};
+
+
40
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
#define JPH_DECLARE_SERIALIZABLE_ABSTRACT(linkage, class_name)
Definition SerializableObject.h:120
+
Definition CollisionGroup.h:20
+
Abstract class that checks if two CollisionGroups collide.
Definition GroupFilter.h:18
+
Definition Reference.h:101
+
Definition Reference.h:35
+
Helper class that either contains a valid result or an error.
Definition Result.h:12
+
Definition SerializableObject.h:156
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
+
+ + + + diff --git a/_group_filter_table_8cpp.html b/_group_filter_table_8cpp.html new file mode 100644 index 000000000..efffd8a7c --- /dev/null +++ b/_group_filter_table_8cpp.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/GroupFilterTable.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GroupFilterTable.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (GroupFilterTable)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (GroupFilterTable )
+
+ +
+
+
+
+ + + + diff --git a/_group_filter_table_8cpp.js b/_group_filter_table_8cpp.js new file mode 100644 index 000000000..4403eac16 --- /dev/null +++ b/_group_filter_table_8cpp.js @@ -0,0 +1,4 @@ +var _group_filter_table_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_group_filter_table_8cpp.html#a6275781c1018ee14c6e4080444c2a415", null ] +]; \ No newline at end of file diff --git a/_group_filter_table_8h.html b/_group_filter_table_8h.html new file mode 100644 index 000000000..ffcb0c141 --- /dev/null +++ b/_group_filter_table_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/GroupFilterTable.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GroupFilterTable.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  GroupFilterTable
 
+
+
+ + + + diff --git a/_group_filter_table_8h.js b/_group_filter_table_8h.js new file mode 100644 index 000000000..8c085d31c --- /dev/null +++ b/_group_filter_table_8h.js @@ -0,0 +1,4 @@ +var _group_filter_table_8h = +[ + [ "GroupFilterTable", "class_group_filter_table.html", "class_group_filter_table" ] +]; \ No newline at end of file diff --git a/_group_filter_table_8h_source.html b/_group_filter_table_8h_source.html new file mode 100644 index 000000000..c94d5bf7d --- /dev/null +++ b/_group_filter_table_8h_source.html @@ -0,0 +1,259 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/GroupFilterTable.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GroupFilterTable.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
+ + +
9
+ +
11
+
+ +
36{
+ +
38
+
39private:
+
40 using GroupID = CollisionGroup::GroupID;
+
41 using SubGroupID = CollisionGroup::SubGroupID;
+
42
+
44 int GetBit(SubGroupID inSubGroup1, SubGroupID inSubGroup2) const
+
45 {
+
46 JPH_ASSERT(inSubGroup1 != inSubGroup2);
+
47
+
48 // We store the lower left half only, so swap the inputs when trying to access the top right half
+
49 if (inSubGroup1 > inSubGroup2)
+
50 swap(inSubGroup1, inSubGroup2);
+
51
+
52 JPH_ASSERT(inSubGroup2 < mNumSubGroups);
+
53
+
54 // Calculate at which bit the entry for this pair resides
+
55 // We use the fact that a row always starts at inSubGroup2 * (inSubGroup2 - 1) / 2
+
56 // (this is the amount of bits needed to store a table of inSubGroup2 entries)
+
57 return (inSubGroup2 * (inSubGroup2 - 1)) / 2 + inSubGroup1;
+
58 }
+
59
+
60public:
+
+
62 explicit GroupFilterTable(uint inNumSubGroups = 0) :
+
63 mNumSubGroups(inNumSubGroups)
+
64 {
+
65 // By default everything collides
+
66 int table_size = ((inNumSubGroups * (inNumSubGroups - 1)) / 2 + 7) / 8;
+
67 mTable.resize(table_size, 0xff);
+
68 }
+
+
69
+
71 GroupFilterTable(const GroupFilterTable &inRHS) : mNumSubGroups(inRHS.mNumSubGroups), mTable(inRHS.mTable) { }
+
72
+
+
74 void DisableCollision(SubGroupID inSubGroup1, SubGroupID inSubGroup2)
+
75 {
+
76 int bit = GetBit(inSubGroup1, inSubGroup2);
+
77 mTable[bit >> 3] &= (0xff ^ (1 << (bit & 0b111)));
+
78 }
+
+
79
+
+
81 void EnableCollision(SubGroupID inSubGroup1, SubGroupID inSubGroup2)
+
82 {
+
83 int bit = GetBit(inSubGroup1, inSubGroup2);
+
84 mTable[bit >> 3] |= 1 << (bit & 0b111);
+
85 }
+
+
86
+
+
88 inline bool IsCollisionEnabled(SubGroupID inSubGroup1, SubGroupID inSubGroup2) const
+
89 {
+
90 // Test if the bit is set for this group pair
+
91 int bit = GetBit(inSubGroup1, inSubGroup2);
+
92 return (mTable[bit >> 3] & (1 << (bit & 0b111))) != 0;
+
93 }
+
+
94
+
+
96 virtual bool CanCollide(const CollisionGroup &inGroup1, const CollisionGroup &inGroup2) const override
+
97 {
+
98 // If one of the groups is cInvalidGroup the objects will collide (note that the if following this if will ensure that group2 is not cInvalidGroup)
+ +
100 return true;
+
101
+
102 // If the objects are in different groups, they collide
+
103 if (inGroup1.GetGroupID() != inGroup2.GetGroupID())
+
104 return true;
+
105
+
106 // If the collision filters do not match, but they're in the same group we ignore the collision
+
107 if (inGroup1.GetGroupFilter() != inGroup2.GetGroupFilter())
+
108 return false;
+
109
+
110 // If they are in the same sub group, they don't collide
+
111 if (inGroup1.GetSubGroupID() == inGroup2.GetSubGroupID())
+
112 return false;
+
113
+
114 // Check the bit table
+
115 return IsCollisionEnabled(inGroup1.GetSubGroupID(), inGroup2.GetSubGroupID());
+
116 }
+
+
117
+
118 // See: GroupFilter::SaveBinaryState
+
119 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
120
+
121protected:
+
122 // See: GroupFilter::RestoreBinaryState
+
123 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
124
+
125private:
+
126 uint mNumSubGroups;
+
127 Array<uint8> mTable;
+
128};
+
+
129
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
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_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+
Definition Array.h:36
+
Definition CollisionGroup.h:20
+
GroupID GetGroupID() const
Definition CollisionGroup.h:54
+
SubGroupID GetSubGroupID() const
Definition CollisionGroup.h:65
+
static const GroupID cInvalidGroup
Definition CollisionGroup.h:27
+
uint32 GroupID
Definition CollisionGroup.h:24
+
const GroupFilter * GetGroupFilter() const
Get the collision group filter.
Definition CollisionGroup.h:43
+
uint32 SubGroupID
Definition CollisionGroup.h:25
+
Abstract class that checks if two CollisionGroups collide.
Definition GroupFilter.h:18
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the group filter in binary form to inStream.
Definition GroupFilter.cpp:17
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition GroupFilter.cpp:22
+
Definition GroupFilterTable.h:36
+
void DisableCollision(SubGroupID inSubGroup1, SubGroupID inSubGroup2)
Disable collision between two sub groups.
Definition GroupFilterTable.h:74
+
void EnableCollision(SubGroupID inSubGroup1, SubGroupID inSubGroup2)
Enable collision between two sub groups.
Definition GroupFilterTable.h:81
+
GroupFilterTable(const GroupFilterTable &inRHS)
Copy constructor.
Definition GroupFilterTable.h:71
+
virtual bool CanCollide(const CollisionGroup &inGroup1, const CollisionGroup &inGroup2) const override
Checks if two CollisionGroups collide.
Definition GroupFilterTable.h:96
+
GroupFilterTable(uint inNumSubGroups=0)
Constructs the table with inNumSubGroups subgroups, initially all collision pairs are enabled except ...
Definition GroupFilterTable.h:62
+
bool IsCollisionEnabled(SubGroupID inSubGroup1, SubGroupID inSubGroup2) const
Check if the collision between two subgroups is enabled.
Definition GroupFilterTable.h:88
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
+
+ + + + diff --git a/_half_float_8h.html b/_half_float_8h.html new file mode 100644 index 000000000..163cb42df --- /dev/null +++ b/_half_float_8h.html @@ -0,0 +1,174 @@ + + + + + + + +Jolt Physics: Jolt/Math/HalfFloat.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HalfFloat.h File Reference
+
+
+
#include <Jolt/Math/Vec4.h>
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  HalfFloatConversion
 
+ + + +

+Typedefs

using HalfFloat = uint16
 
+ + + + +

+Enumerations

enum  HalfFloatConversion::ERoundingMode { HalfFloatConversion::ROUND_TO_NEG_INF +, HalfFloatConversion::ROUND_TO_POS_INF +, HalfFloatConversion::ROUND_TO_NEAREST + }
 Define half-float rounding modes. More...
 
+ + + + + + + + + + + + + + + +

+Functions

template<int RoundingMode>
HalfFloat HalfFloatConversion::FromFloatFallback (float inV)
 Convert a float (32-bits) to a half float (16-bits), fallback version when no intrinsics available.
 
template<int RoundingMode>
JPH_INLINE HalfFloat HalfFloatConversion::FromFloat (float inV)
 Convert a float (32-bits) to a half float (16-bits)
 
Vec4 HalfFloatConversion::ToFloatFallback (UVec4Arg inValue)
 Convert 4 half floats (lower 64 bits) to floats, fallback version when no intrinsics available.
 
JPH_INLINE Vec4 HalfFloatConversion::ToFloat (UVec4Arg inValue)
 Convert 4 half floats (lower 64 bits) to floats.
 
+

Typedef Documentation

+ +

◆ HalfFloat

+ +
+
+ + + + +
using HalfFloat = uint16
+
+ +
+
+
+
+ + + + diff --git a/_half_float_8h.js b/_half_float_8h.js new file mode 100644 index 000000000..657899888 --- /dev/null +++ b/_half_float_8h.js @@ -0,0 +1,13 @@ +var _half_float_8h = +[ + [ "HalfFloat", "_half_float_8h.html#ad1bfc12994d4af290926964a4eaee88d", null ], + [ "ERoundingMode", "_half_float_8h.html#aa3241cac5bd296cd04f7600e353eb1a4", [ + [ "ROUND_TO_NEG_INF", "_half_float_8h.html#aa3241cac5bd296cd04f7600e353eb1a4a469f1ba56ff2b3d2cb1b8f5bbba127d9", null ], + [ "ROUND_TO_POS_INF", "_half_float_8h.html#aa3241cac5bd296cd04f7600e353eb1a4a73c8f88f26cb5185803bc16adb69fbd6", null ], + [ "ROUND_TO_NEAREST", "_half_float_8h.html#aa3241cac5bd296cd04f7600e353eb1a4aaa7855ec8f43c914312cd51064ad0f64", null ] + ] ], + [ "FromFloat", "_half_float_8h.html#a65b0aba81626b49a45fb9ac238c04d2d", null ], + [ "FromFloatFallback", "_half_float_8h.html#af81e63a2dc6f5cdfeb150d4dab3fdcbc", null ], + [ "ToFloat", "_half_float_8h.html#a25cf44e188c51d03e061f23e1eabe36a", null ], + [ "ToFloatFallback", "_half_float_8h.html#a222fa9e87d5e494aa324defa2925d03e", null ] +]; \ No newline at end of file diff --git a/_half_float_8h_source.html b/_half_float_8h_source.html new file mode 100644 index 000000000..9ed823e93 --- /dev/null +++ b/_half_float_8h_source.html @@ -0,0 +1,357 @@ + + + + + + + +Jolt Physics: Jolt/Math/HalfFloat.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HalfFloat.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
+
7#include <Jolt/Math/Vec4.h>
+
8
+ +
10
+ +
12
+
13// Define half float constant values
+
14static constexpr HalfFloat HALF_FLT_MAX = 0x7bff;
+
15static constexpr HalfFloat HALF_FLT_MAX_NEGATIVE = 0xfbff;
+
16static constexpr HalfFloat HALF_FLT_INF = 0x7c00;
+
17static constexpr HalfFloat HALF_FLT_INF_NEGATIVE = 0xfc00;
+
18static constexpr HalfFloat HALF_FLT_NANQ = 0x7e00;
+
19static constexpr HalfFloat HALF_FLT_NANQ_NEGATIVE = 0xfe00;
+
20
+
+ +
22
+
23// Layout of a float
+
24static constexpr int FLOAT_SIGN_POS = 31;
+
25static constexpr int FLOAT_EXPONENT_POS = 23;
+
26static constexpr int FLOAT_EXPONENT_BITS = 8;
+
27static constexpr int FLOAT_EXPONENT_MASK = (1 << FLOAT_EXPONENT_BITS) - 1;
+
28static constexpr int FLOAT_EXPONENT_BIAS = 127;
+
29static constexpr int FLOAT_MANTISSA_BITS = 23;
+
30static constexpr int FLOAT_MANTISSA_MASK = (1 << FLOAT_MANTISSA_BITS) - 1;
+
31static constexpr int FLOAT_EXPONENT_AND_MANTISSA_MASK = FLOAT_MANTISSA_MASK + (FLOAT_EXPONENT_MASK << FLOAT_EXPONENT_POS);
+
32
+
33// Layout of half float
+
34static constexpr int HALF_FLT_SIGN_POS = 15;
+
35static constexpr int HALF_FLT_EXPONENT_POS = 10;
+
36static constexpr int HALF_FLT_EXPONENT_BITS = 5;
+
37static constexpr int HALF_FLT_EXPONENT_MASK = (1 << HALF_FLT_EXPONENT_BITS) - 1;
+
38static constexpr int HALF_FLT_EXPONENT_BIAS = 15;
+
39static constexpr int HALF_FLT_MANTISSA_BITS = 10;
+
40static constexpr int HALF_FLT_MANTISSA_MASK = (1 << HALF_FLT_MANTISSA_BITS) - 1;
+
41static constexpr int HALF_FLT_EXPONENT_AND_MANTISSA_MASK = HALF_FLT_MANTISSA_MASK + (HALF_FLT_EXPONENT_MASK << HALF_FLT_EXPONENT_POS);
+
42
+ +
50
+
52template <int RoundingMode>
+
+ +
54{
+
55 // Reinterpret the float as an uint32
+ +
57
+
58 // Extract exponent
+
59 uint32 exponent = (value >> FLOAT_EXPONENT_POS) & FLOAT_EXPONENT_MASK;
+
60
+
61 // Extract mantissa
+
62 uint32 mantissa = value & FLOAT_MANTISSA_MASK;
+
63
+
64 // Extract the sign and move it into the right spot for the half float (so we can just or it in at the end)
+
65 HalfFloat hf_sign = HalfFloat(value >> (FLOAT_SIGN_POS - HALF_FLT_SIGN_POS)) & (1 << HALF_FLT_SIGN_POS);
+
66
+
67 // Check NaN or INF
+
68 if (exponent == FLOAT_EXPONENT_MASK) // NaN or INF
+
69 return hf_sign | (mantissa == 0? HALF_FLT_INF : HALF_FLT_NANQ);
+
70
+
71 // Rebias the exponent for half floats
+
72 int rebiased_exponent = int(exponent) - FLOAT_EXPONENT_BIAS + HALF_FLT_EXPONENT_BIAS;
+
73
+
74 // Check overflow to infinity
+
75 if (rebiased_exponent >= HALF_FLT_EXPONENT_MASK)
+
76 {
+ +
78 return hf_sign | (round_up? HALF_FLT_INF : HALF_FLT_MAX);
+
79 }
+
80
+
81 // Check underflow to zero
+
82 if (rebiased_exponent < -HALF_FLT_MANTISSA_BITS)
+
83 {
+
84 bool round_up = RoundingMode != ROUND_TO_NEAREST && (hf_sign == 0) == (RoundingMode == ROUND_TO_POS_INF) && (value & FLOAT_EXPONENT_AND_MANTISSA_MASK) != 0;
+
85 return hf_sign | (round_up? 1 : 0);
+
86 }
+
87
+ +
89 int shift;
+
90 if (rebiased_exponent <= 0)
+
91 {
+
92 // Underflow to denormalized number
+
93 hf_exponent = 0;
+
94 mantissa |= 1 << FLOAT_MANTISSA_BITS; // Add the implicit 1 bit to the mantissa
+
95 shift = FLOAT_MANTISSA_BITS - HALF_FLT_MANTISSA_BITS + 1 - rebiased_exponent;
+
96 }
+
97 else
+
98 {
+
99 // Normal half float
+
100 hf_exponent = HalfFloat(rebiased_exponent << HALF_FLT_EXPONENT_POS);
+
101 shift = FLOAT_MANTISSA_BITS - HALF_FLT_MANTISSA_BITS;
+
102 }
+
103
+
104 // Compose the half float
+ + +
107
+
108 // Calculate the remaining bits that we're discarding
+
109 uint remainder = mantissa & ((1 << shift) - 1);
+
110
+
111 if constexpr (RoundingMode == ROUND_TO_NEAREST)
+
112 {
+
113 // Round to nearest
+
114 uint round_threshold = 1 << (shift - 1);
+
115 if (remainder > round_threshold // Above threshold, we must always round
+
116 || (remainder == round_threshold && (hf_mantissa & 1))) // When equal, round to nearest even
+
117 hf++; // May overflow to infinity
+
118 }
+
119 else
+
120 {
+
121 // Round up or down (truncate) depending on the rounding mode
+
122 bool round_up = (hf_sign == 0) == (RoundingMode == ROUND_TO_POS_INF) && remainder != 0;
+
123 if (round_up)
+
124 hf++; // May overflow to infinity
+
125 }
+
126
+
127 return hf;
+
128}
+
+
129
+
131template <int RoundingMode>
+
+ +
133{
+
134#ifdef JPH_USE_F16C
+
135 union
+
136 {
+ +
138 HalfFloat u16[8];
+
139 } hf;
+ +
141 switch (RoundingMode)
+
142 {
+
143 case ROUND_TO_NEG_INF:
+ +
145 break;
+
146 case ROUND_TO_POS_INF:
+ +
148 break;
+
149 case ROUND_TO_NEAREST:
+ +
151 break;
+
152 }
+
153 return hf.u16[0];
+
154#else
+ +
156#endif
+
157}
+
+
158
+
+ +
161{
+
162 // Unpack half floats to 4 uint32's
+ +
164
+
165 // Normal half float path, extract the exponent and mantissa, shift them into place and update the exponent bias
+
166 UVec4 exponent_mantissa = UVec4::sAnd(value, UVec4::sReplicate(HALF_FLT_EXPONENT_AND_MANTISSA_MASK)).LogicalShiftLeft<FLOAT_EXPONENT_POS - HALF_FLT_EXPONENT_POS>() + UVec4::sReplicate((FLOAT_EXPONENT_BIAS - HALF_FLT_EXPONENT_BIAS) << FLOAT_EXPONENT_POS);
+
167
+
168 // Denormalized half float path, renormalize the float
+
169 UVec4 exponent_mantissa_denormalized = ((exponent_mantissa + UVec4::sReplicate(1 << FLOAT_EXPONENT_POS)).ReinterpretAsFloat() - UVec4::sReplicate((FLOAT_EXPONENT_BIAS - HALF_FLT_EXPONENT_BIAS + 1) << FLOAT_EXPONENT_POS).ReinterpretAsFloat()).ReinterpretAsInt();
+
170
+
171 // NaN / INF path, set all exponent bits
+
172 UVec4 exponent_mantissa_nan_inf = UVec4::sOr(exponent_mantissa, UVec4::sReplicate(FLOAT_EXPONENT_MASK << FLOAT_EXPONENT_POS));
+
173
+
174 // Get the exponent to determine which of the paths we should take
+
175 UVec4 exponent_mask = UVec4::sReplicate(HALF_FLT_EXPONENT_MASK << HALF_FLT_EXPONENT_POS);
+ + + +
179
+
180 // Select the correct result
+ +
182
+
183 // Extract the sign bit and shift it to the left
+
184 UVec4 sign = UVec4::sAnd(value, UVec4::sReplicate(1 << HALF_FLT_SIGN_POS)).LogicalShiftLeft<FLOAT_SIGN_POS - HALF_FLT_SIGN_POS>();
+
185
+
186 // Construct the float
+ +
188}
+
+
189
+
+ +
192{
+
193#if defined(JPH_USE_F16C)
+
194 return _mm_cvtph_ps(inValue.mValue);
+
195#elif defined(JPH_USE_NEON)
+ +
197#else
+
198 return ToFloatFallback(inValue);
+
199#endif
+
200}
+
+
201
+
202} // HalfFloatConversion
+
+
203
+ +
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
+
std::uint16_t uint16
Definition Core.h:454
+
uint16 HalfFloat
Definition HalfFloat.h:11
+ +
Definition UVec4.h:12
+
JPH_INLINE UVec4 LogicalShiftLeft() const
Shift all components by Count bits to the left (filling with zeros from the left)
+
JPH_INLINE UVec4 Expand4Uint16Lo() const
Takes the lower 4 16 bits and expands them to X, Y, Z and W.
Definition UVec4.inl:460
+
static JPH_INLINE UVec4 sReplicate(uint32 inV)
Replicate int inV across all components.
Definition UVec4.inl:56
+
static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)
Logical and (component wise)
Definition UVec4.inl:199
+
static JPH_INLINE UVec4 sEquals(UVec4Arg inV1, UVec4Arg inV2)
Equals (component wise)
Definition UVec4.inl:143
+
static JPH_INLINE UVec4 sOr(UVec4Arg inV1, UVec4Arg inV2)
Logical or (component wise)
Definition UVec4.inl:171
+
static JPH_INLINE UVec4 sZero()
Vector with all zeros.
Definition UVec4.inl:45
+
static JPH_INLINE UVec4 sSelect(UVec4Arg inV1, UVec4Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition UVec4.inl:157
+
JPH_INLINE Vec4 ReinterpretAsFloat() const
Reinterpret UVec4 as a Vec4 (doesn't change the bits)
Definition UVec4.inl:337
+
Definition Vec4.h:14
+
Definition HalfFloat.h:21
+
Vec4 ToFloatFallback(UVec4Arg inValue)
Convert 4 half floats (lower 64 bits) to floats, fallback version when no intrinsics available.
Definition HalfFloat.h:160
+
JPH_INLINE Vec4 ToFloat(UVec4Arg inValue)
Convert 4 half floats (lower 64 bits) to floats.
Definition HalfFloat.h:191
+
JPH_INLINE HalfFloat FromFloat(float inV)
Convert a float (32-bits) to a half float (16-bits)
Definition HalfFloat.h:132
+
ERoundingMode
Define half-float rounding modes.
Definition HalfFloat.h:45
+
@ ROUND_TO_NEG_INF
Round to negative infinity.
Definition HalfFloat.h:46
+
@ ROUND_TO_POS_INF
Round to positive infinity.
Definition HalfFloat.h:47
+
@ ROUND_TO_NEAREST
Round to nearest value.
Definition HalfFloat.h:48
+
HalfFloat FromFloatFallback(float inV)
Convert a float (32-bits) to a half float (16-bits), fallback version when no intrinsics available.
Definition HalfFloat.h:53
+
+
+ + + + diff --git a/_hash_combine_8h.html b/_hash_combine_8h.html new file mode 100644 index 000000000..450451297 --- /dev/null +++ b/_hash_combine_8h.html @@ -0,0 +1,395 @@ + + + + + + + +Jolt Physics: Jolt/Core/HashCombine.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HashCombine.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Macros

#define JPH_MAKE_HASH_STRUCT(type, name, ...)
 
#define JPH_MAKE_HASHABLE(type, ...)
 
+ + + + + + + + + + + + +

+Functions

JPH_NAMESPACE_BEGIN uint64 HashBytes (const void *inData, uint inSize, uint64 inSeed=0xcbf29ce484222325UL)
 
uint64 Hash64 (uint64 inValue)
 
template<typename T >
void HashCombineHelper (size_t &ioSeed, const T &inValue)
 Helper function that hashes a single value into ioSeed Taken from: https://stackoverflow.com/questions/2590677/how-do-i-combine-hash-values-in-c0x.
 
template<typename... Values>
void HashCombine (std::size_t &ioSeed, Values... inValues)
 
+

Macro Definition Documentation

+ +

◆ JPH_MAKE_HASH_STRUCT

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define JPH_MAKE_HASH_STRUCT( type,
 name,
 ... 
)
+
+Value:
struct [[nodiscard]] name \
+
{ \
+
std::size_t operator()(const type &t) const \
+
{ \
+
std::size_t ret = 0; \
+
::JPH::HashCombine(ret, __VA_ARGS__); \
+
return ret; \
+
} \
+
};
+
+
+
+ +

◆ JPH_MAKE_HASHABLE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_MAKE_HASHABLE( type,
 ... 
)
+
+Value:
JPH_SUPPRESS_WARNING_PUSH \
+
JPH_SUPPRESS_WARNINGS \
+
namespace std \
+
{ \
+
template<> \
+
JPH_MAKE_HASH_STRUCT(type, hash<type>, __VA_ARGS__) \
+
} \
+
JPH_SUPPRESS_WARNING_POP
+
Definition Array.h:575
+
+
+
+

Function Documentation

+ +

◆ Hash64()

+ +
+
+ + + + + +
+ + + + + + + + +
uint64 Hash64 (uint64 inValue)
+
+inline
+
+

A 64 bit hash function by Thomas Wang, Jan 1997 See: http://web.archive.org/web/20071223173210/http://www.concentric.net/~Ttwang/tech/inthash.htm

Parameters
+ + +
inValueValue to hash
+
+
+
Returns
Hash
+ +
+
+ +

◆ HashBytes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN uint64 HashBytes (const void * inData,
uint inSize,
uint64 inSeed = 0xcbf29ce484222325UL 
)
+
+inline
+
+

Implements the FNV-1a hash algorithm

See also
https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function
+
Parameters
+ + + + +
inDataData block of bytes
inSizeNumber of bytes
inSeedSeed of the hash (can be used to pass in the hash of a previous operation, otherwise leave default)
+
+
+
Returns
Hash
+ +
+
+ +

◆ HashCombine()

+ +
+
+
+template<typename... Values>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void HashCombine (std::size_t & ioSeed,
Values... inValues 
)
+
+inline
+
+

Hash combiner to use a custom struct in an unordered map or set

+

Usage:

struct SomeHashKey
+{
+    std::string key1;
+    std::string key2;
+    bool key3;
+};
+
+JPH_MAKE_HASHABLE(SomeHashKey, t.key1, t.key2, t.key3) 
+
+
+
+ +

◆ HashCombineHelper()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void HashCombineHelper (size_t & ioSeed,
const T & inValue 
)
+
+inline
+
+ +

Helper function that hashes a single value into ioSeed Taken from: https://stackoverflow.com/questions/2590677/how-do-i-combine-hash-values-in-c0x.

+ +
+
+
+
+ + + + diff --git a/_hash_combine_8h.js b/_hash_combine_8h.js new file mode 100644 index 000000000..60c200397 --- /dev/null +++ b/_hash_combine_8h.js @@ -0,0 +1,9 @@ +var _hash_combine_8h = +[ + [ "JPH_MAKE_HASH_STRUCT", "_hash_combine_8h.html#aedd0cd83dae14bf34f99338587ab043d", null ], + [ "JPH_MAKE_HASHABLE", "_hash_combine_8h.html#acb214eb23a4f6646330f74bc5f72c938", null ], + [ "Hash64", "_hash_combine_8h.html#a8ce241fe287672b4a559499d341d2ee7", null ], + [ "HashBytes", "_hash_combine_8h.html#a396c677c4eb61f19e11cc202aac23c38", null ], + [ "HashCombine", "_hash_combine_8h.html#a4c51b5041a1dac503b2bcadfb351c3a4", null ], + [ "HashCombineHelper", "_hash_combine_8h.html#a6f53710c5b84fefd0968e1ebc5810bd3", null ] +]; \ No newline at end of file diff --git a/_hash_combine_8h_source.html b/_hash_combine_8h_source.html new file mode 100644 index 000000000..36a387798 --- /dev/null +++ b/_hash_combine_8h_source.html @@ -0,0 +1,214 @@ + + + + + + + +Jolt Physics: Jolt/Core/HashCombine.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HashCombine.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
+
+
15inline uint64 HashBytes(const void *inData, uint inSize, uint64 inSeed = 0xcbf29ce484222325UL)
+
16{
+
17 uint64 hash = inSeed;
+
18 for (const uint8 *data = reinterpret_cast<const uint8 *>(inData); data < reinterpret_cast<const uint8 *>(inData) + inSize; ++data)
+
19 {
+
20 hash = hash ^ uint64(*data);
+
21 hash = hash * 0x100000001b3UL;
+
22 }
+
23 return hash;
+
24}
+
+
25
+
+
30inline uint64 Hash64(uint64 inValue)
+
31{
+
32 uint64 hash = inValue;
+
33 hash = (~hash) + (hash << 21); // hash = (hash << 21) - hash - 1;
+
34 hash = hash ^ (hash >> 24);
+
35 hash = (hash + (hash << 3)) + (hash << 8); // hash * 265
+
36 hash = hash ^ (hash >> 14);
+
37 hash = (hash + (hash << 2)) + (hash << 4); // hash * 21
+
38 hash = hash ^ (hash >> 28);
+
39 hash = hash + (hash << 31);
+
40 return hash;
+
41}
+
+
42
+
45template <typename T>
+
+
46inline void HashCombineHelper(size_t &ioSeed, const T &inValue)
+
47{
+
48 std::hash<T> hasher;
+
49 ioSeed ^= hasher(inValue) + 0x9e3779b9 + (ioSeed << 6) + (ioSeed >> 2);
+
50}
+
+
51
+
64template <typename... Values>
+
+
65inline void HashCombine(std::size_t &ioSeed, Values... inValues)
+
66{
+
67 // Hash all values together using a fold expression
+
68 (HashCombineHelper(ioSeed, inValues), ...);
+
69}
+
+
70
+ +
72
+
73JPH_SUPPRESS_WARNING_PUSH
+
74JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat-pedantic")
+
75
+
+
76#define JPH_MAKE_HASH_STRUCT(type, name, ...) \
+
77 struct [[nodiscard]] name \
+
78 { \
+
79 std::size_t operator()(const type &t) const \
+
80 { \
+
81 std::size_t ret = 0; \
+
82 ::JPH::HashCombine(ret, __VA_ARGS__); \
+
83 return ret; \
+
84 } \
+
85 };
+
+
86
+
+
87#define JPH_MAKE_HASHABLE(type, ...) \
+
88 JPH_SUPPRESS_WARNING_PUSH \
+
89 JPH_SUPPRESS_WARNINGS \
+
90 namespace std \
+
91 { \
+
92 template<> \
+
93 JPH_MAKE_HASH_STRUCT(type, hash<type>, __VA_ARGS__) \
+
94 } \
+
95 JPH_SUPPRESS_WARNING_POP
+
+
96
+
97JPH_SUPPRESS_WARNING_POP
+
std::uint8_t uint8
Definition Core.h:453
+
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_CLANG_SUPPRESS_WARNING(w)
Definition Core.h:263
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_NAMESPACE_BEGIN uint64 HashBytes(const void *inData, uint inSize, uint64 inSeed=0xcbf29ce484222325UL)
Definition HashCombine.h:15
+
void HashCombine(std::size_t &ioSeed, Values... inValues)
Definition HashCombine.h:65
+
void HashCombineHelper(size_t &ioSeed, const T &inValue)
Helper function that hashes a single value into ioSeed Taken from: https://stackoverflow....
Definition HashCombine.h:46
+
uint64 Hash64(uint64 inValue)
Definition HashCombine.h:30
+
+
+ + + + diff --git a/_height_field_shape_8cpp.html b/_height_field_shape_8cpp.html new file mode 100644 index 000000000..9f5052640 --- /dev/null +++ b/_height_field_shape_8cpp.html @@ -0,0 +1,179 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/HeightFieldShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HeightFieldShape.cpp File Reference
+
+
+ + + + + + +

+Classes

class  HeightFieldShape::DecodingContext
 
struct  HeightFieldShape::HSGetTrianglesContext
 
+ + + +

+Functions

 JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (HeightFieldShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (HeightFieldShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_height_field_shape_8cpp.js b/_height_field_shape_8cpp.js new file mode 100644 index 000000000..140f983c8 --- /dev/null +++ b/_height_field_shape_8cpp.js @@ -0,0 +1,6 @@ +var _height_field_shape_8cpp = +[ + [ "HeightFieldShape::DecodingContext", "class_height_field_shape_1_1_decoding_context.html", "class_height_field_shape_1_1_decoding_context" ], + [ "HeightFieldShape::HSGetTrianglesContext", "struct_height_field_shape_1_1_h_s_get_triangles_context.html", "struct_height_field_shape_1_1_h_s_get_triangles_context" ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_height_field_shape_8cpp.html#a248be81259944632d64acf6f25ecc449", null ] +]; \ No newline at end of file diff --git a/_height_field_shape_8h.html b/_height_field_shape_8h.html new file mode 100644 index 000000000..3ed4aa93a --- /dev/null +++ b/_height_field_shape_8h.html @@ -0,0 +1,160 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/HeightFieldShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HeightFieldShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  HeightFieldShapeSettings
 Class that constructs a HeightFieldShape. More...
 
class  HeightFieldShape
 
+ + + + +

+Namespaces

namespace  HeightFieldShapeConstants
 Constants for HeightFieldShape, this was moved out of the HeightFieldShape because of a linker bug.
 
+ + + + + + + + + + + + + + + + + + + + +

+Variables

constexpr float HeightFieldShapeConstants::cNoCollisionValue = FLT_MAX
 Value used to create gaps in the height field.
 
constexpr int HeightFieldShapeConstants::cStackSize = 128
 Stack size to use during WalkHeightField.
 
constexpr uint HeightFieldShapeConstants::cNumBitsXY = 14
 A position in the hierarchical grid is defined by a level (which grid), x and y position. We encode this in a single uint32 as: level << 28 | y << 14 | x.
 
constexpr uint HeightFieldShapeConstants::cMaskBitsXY = (1 << cNumBitsXY) - 1
 
constexpr uint HeightFieldShapeConstants::cLevelShift = 2 * cNumBitsXY
 
constexpr uint16 HeightFieldShapeConstants::cNoCollisionValue16 = 0xffff
 When height samples are converted to 16 bit:
 
constexpr uint16 HeightFieldShapeConstants::cMaxHeightValue16 = 0xfffe
 This is the maximum allowed height value.
 
+
+
+ + + + diff --git a/_height_field_shape_8h.js b/_height_field_shape_8h.js new file mode 100644 index 000000000..6604fc4e7 --- /dev/null +++ b/_height_field_shape_8h.js @@ -0,0 +1,12 @@ +var _height_field_shape_8h = +[ + [ "HeightFieldShapeSettings", "class_height_field_shape_settings.html", "class_height_field_shape_settings" ], + [ "HeightFieldShape", "class_height_field_shape.html", "class_height_field_shape" ], + [ "cLevelShift", "_height_field_shape_8h.html#ae34b30dc951d3c321c88b41bc4ac40e0", null ], + [ "cMaskBitsXY", "_height_field_shape_8h.html#a1e58ce4b74ca86c27a71f785d9a2ec35", null ], + [ "cMaxHeightValue16", "_height_field_shape_8h.html#aa0b10266b35328efd7344f83bd4d9e8c", null ], + [ "cNoCollisionValue", "_height_field_shape_8h.html#ab430dbc1ec621a77f590c281791c0922", null ], + [ "cNoCollisionValue16", "_height_field_shape_8h.html#ac7f85b459fc57cd090cdd118a0072d4b", null ], + [ "cNumBitsXY", "_height_field_shape_8h.html#a19db7caf3f2b0d72c438471292289306", null ], + [ "cStackSize", "_height_field_shape_8h.html#a37ca4958b8fd6b37a4982941ca479a85", null ] +]; \ No newline at end of file diff --git a/_height_field_shape_8h_source.html b/_height_field_shape_8h_source.html new file mode 100644 index 000000000..c6a36ba45 --- /dev/null +++ b/_height_field_shape_8h_source.html @@ -0,0 +1,460 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/HeightFieldShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HeightFieldShape.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
+ + +
9#ifdef JPH_DEBUG_RENDERER
+ +
11#endif // JPH_DEBUG_RENDERER
+
12
+ +
14
+
15class ConvexShape;
+ +
17class TempAllocator;
+
18
+
+ +
21{
+
23 constexpr float cNoCollisionValue = FLT_MAX;
+
24
+
26 constexpr int cStackSize = 128;
+
27
+
29 constexpr uint cNumBitsXY = 14;
+
30 constexpr uint cMaskBitsXY = (1 << cNumBitsXY) - 1;
+
31 constexpr uint cLevelShift = 2 * cNumBitsXY;
+
32
+
34 constexpr uint16 cNoCollisionValue16 = 0xffff;
+
35 constexpr uint16 cMaxHeightValue16 = 0xfffe;
+
36};
+
+
37
+
+ +
40{
+
41public:
+ +
43
+
44
+ +
46
+
53 HeightFieldShapeSettings(const float *inSamples, Vec3Arg inOffset, Vec3Arg inScale, uint32 inSampleCount, const uint8 *inMaterialIndices = nullptr, const PhysicsMaterialList &inMaterialList = PhysicsMaterialList());
+
54
+
55 // See: ShapeSettings
+
56 virtual ShapeResult Create() const override;
+
57
+
62 void DetermineMinAndMaxSample(float &outMinValue, float &outMaxValue, float &outQuantizationScale) const;
+
63
+
67 uint32 CalculateBitsPerSampleForError(float inMaxError) const;
+
68
+
71 Vec3 mOffset = Vec3::sZero();
+
72 Vec3 mScale = Vec3::sReplicate(1.0f);
+
73 uint32 mSampleCount = 0;
+
74
+
76 float mMinHeightValue = FLT_MAX;
+
77
+
79 float mMaxHeightValue = -FLT_MAX;
+
80
+
83 uint32 mMaterialsCapacity = 0;
+
84
+
88 uint32 mBlockSize = 2;
+
89
+
93 uint32 mBitsPerSample = 8;
+
94
+
96 Array<float> mHeightSamples;
+
97
+
99 Array<uint8> mMaterialIndices;
+
100
+ +
103
+
107 float mActiveEdgeCosThresholdAngle = 0.996195f; // cos(5 degrees)
+
108};
+
+
109
+
+ +
116{
+
117public:
+ +
119
+ +
122 HeightFieldShape(const HeightFieldShapeSettings &inSettings, ShapeResult &outResult);
+
123 virtual ~HeightFieldShape() override;
+
124
+
126 Ref<HeightFieldShape> Clone() const;
+
127
+
128 // See Shape::MustBeStatic
+
129 virtual bool MustBeStatic() const override { return true; }
+
130
+
132 inline uint GetSampleCount() const { return mSampleCount; }
+
133
+
135 inline uint GetBlockSize() const { return mBlockSize; }
+
136
+
137 // See Shape::GetLocalBounds
+
138 virtual AABox GetLocalBounds() const override;
+
139
+
140 // See Shape::GetSubShapeIDBitsRecursive
+
141 virtual uint GetSubShapeIDBitsRecursive() const override { return GetSubShapeIDBits(); }
+
142
+
143 // See Shape::GetInnerRadius
+
144 virtual float GetInnerRadius() const override { return 0.0f; }
+
145
+
146 // See Shape::GetMassProperties
+
147 virtual MassProperties GetMassProperties() const override;
+
148
+
149 // See Shape::GetMaterial
+
150 virtual const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const override;
+
151
+
153 const PhysicsMaterial * GetMaterial(uint inX, uint inY) const;
+
154
+
155 // See Shape::GetSurfaceNormal
+
156 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
157
+
158 // See Shape::GetSupportingFace
+
159 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
160
+
161 // See Shape::GetSubmergedVolume
+
162 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override { JPH_ASSERT(false, "Not supported"); }
+
163
+
164#ifdef JPH_DEBUG_RENDERER
+
165 // See Shape::Draw
+
166 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
167#endif // JPH_DEBUG_RENDERER
+
168
+
169 // See Shape::CastRay
+
170 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
171 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
172
+
173 // See: Shape::CollidePoint
+
174 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
175
+
176 // See: Shape::CollideSoftBodyVertices
+
177 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
178
+
179 // See Shape::GetTrianglesStart
+
180 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override;
+
181
+
182 // See Shape::GetTrianglesNext
+
183 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override;
+
184
+
187 Vec3 GetPosition(uint inX, uint inY) const;
+
188
+
190 bool IsNoCollision(uint inX, uint inY) const;
+
191
+
194 bool ProjectOntoSurface(Vec3Arg inLocalPosition, Vec3 &outSurfacePosition, SubShapeID &outSubShapeID) const;
+
195
+
201 void GetSubShapeCoordinates(const SubShapeID &inSubShapeID, uint &outX, uint &outY, uint &outTriangleIndex) const;
+
202
+
204 float GetMinHeightValue() const { return mOffset.GetY(); }
+
205 float GetMaxHeightValue() const { return mOffset.GetY() + mScale.GetY() * HeightFieldShapeConstants::cMaxHeightValue16; }
+
206
+
215 void GetHeights(uint inX, uint inY, uint inSizeX, uint inSizeY, float *outHeights, intptr_t inHeightsStride) const;
+
216
+
228 void SetHeights(uint inX, uint inY, uint inSizeX, uint inSizeY, const float *inHeights, intptr_t inHeightsStride, TempAllocator &inAllocator, float inActiveEdgeCosThresholdAngle = 0.996195f);
+
229
+
231 const PhysicsMaterialList & GetMaterialList() const { return mMaterials; }
+
232
+
240 void GetMaterials(uint inX, uint inY, uint inSizeX, uint inSizeY, uint8 *outMaterials, intptr_t inMaterialsStride) const;
+
241
+
253 bool SetMaterials(uint inX, uint inY, uint inSizeX, uint inSizeY, const uint8 *inMaterials, intptr_t inMaterialsStride, const PhysicsMaterialList *inMaterialList, TempAllocator &inAllocator);
+
254
+
255 // See Shape
+
256 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
257 virtual void SaveMaterialState(PhysicsMaterialList &outMaterials) const override;
+
258 virtual void RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override;
+
259
+
260 // See Shape::GetStats
+
261 virtual Stats GetStats() const override;
+
262
+
263 // See Shape::GetVolume
+
264 virtual float GetVolume() const override { return 0; }
+
265
+
266#ifdef JPH_DEBUG_RENDERER
+
267 // Settings
+ +
269#endif // JPH_DEBUG_RENDERER
+
270
+
271 // Register shape functions with the registry
+
272 static void sRegister();
+
273
+
274protected:
+
275 // See: Shape::RestoreBinaryState
+
276 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
277
+
278private:
+
279 class DecodingContext;
+
280 struct HSGetTrianglesContext;
+
281
+
283 void CacheValues();
+
284
+
286 void AllocateBuffers();
+
287
+
289 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);
+
290
+
292 void CalculateActiveEdges(const HeightFieldShapeSettings &inSettings);
+
293
+
295 void StoreMaterialIndices(const HeightFieldShapeSettings &inSettings);
+
296
+
298 inline uint GetNumBlocks() const { return mSampleCount / mBlockSize; }
+
299
+
301 static inline uint sGetMaxLevel(uint inNumBlocks) { return 32 - CountLeadingZeros(inNumBlocks - 1); }
+
302
+
304 static inline void sGetRangeBlockOffsetAndStride(uint inNumBlocks, uint inMaxLevel, uint &outRangeBlockOffset, uint &outRangeBlockStride);
+
305
+
307 inline void GetBlockOffsetAndScale(uint inBlockX, uint inBlockY, uint inRangeBlockOffset, uint inRangeBlockStride, float &outBlockOffset, float &outBlockScale) const;
+
308
+
310 inline uint8 GetHeightSample(uint inX, uint inY) const;
+
311
+
313 inline Vec3 GetPosition(uint inX, uint inY, float inBlockOffset, float inBlockScale, bool &outNoCollision) const;
+
314
+
316 uint GetSubShapeIDBits() const;
+
317
+
319 inline SubShapeID EncodeSubShapeID(const SubShapeIDCreator &inCreator, uint inX, uint inY, uint inTriangle) const;
+
320 inline void DecodeSubShapeID(const SubShapeID &inSubShapeID, uint &outX, uint &outY, uint &outTriangle) const;
+
321
+
323 inline uint8 GetEdgeFlags(uint inX, uint inY, uint inTriangle) const;
+
324
+
325 // Helper functions called by CollisionDispatch
+
326 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);
+
327 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);
+
328 static void sCastConvexVsHeightField(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
329 static void sCastSphereVsHeightField(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
330
+
333 template <class Visitor>
+
334 void WalkHeightField(Visitor &ioVisitor) const;
+
335
+
337 struct alignas(16) RangeBlock
+
338 {
+
339 uint16 mMin[4];
+
340 uint16 mMax[4];
+
341 };
+
342
+
344 inline void GetRangeBlock(uint inBlockX, uint inBlockY, uint inRangeBlockOffset, uint inRangeBlockStride, RangeBlock *&outBlock, uint &outIndexInBlock);
+
345
+
347 static const uint sGridOffsets[];
+
348
+
351 Vec3 mOffset = Vec3::sZero();
+
352 Vec3 mScale = Vec3::sReplicate(1.0f);
+
353
+
355 uint32 mSampleCount = 0;
+
356 uint32 mBlockSize = 2;
+
357 uint32 mHeightSamplesSize = 0;
+
358 uint32 mRangeBlocksSize = 0;
+
359 uint32 mActiveEdgesSize = 0;
+
360 uint8 mBitsPerSample = 8;
+
361 uint8 mSampleMask = 0xff;
+ + +
364 RangeBlock * mRangeBlocks = nullptr;
+
365 uint8 * mHeightSamples = nullptr;
+
366 uint8 * mActiveEdges = nullptr;
+
367
+
369 PhysicsMaterialList mMaterials;
+
370 Array<uint8> mMaterialIndices;
+
371 uint32 mNumBitsPerMaterialIndex = 0;
+
372
+
373#ifdef JPH_DEBUG_RENDERER
+
375 mutable Array<DebugRenderer::GeometryRef> mGeometry;
+
376 mutable bool mCachedUseMaterialColors = false;
+
377#endif // JPH_DEBUG_RENDERER
+
378};
+
+
379
+ +
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:76
+
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:1708
+
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:231
+
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:205
+
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:204
+
JPH_OVERRIDE_NEW_DELETE HeightFieldShape()
Constructor.
Definition HeightFieldShape.h:121
+
static bool sDrawTriangleOutlines
Definition HeightFieldShape.h:268
+
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:264
+
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
+
Definition Quat.h:33
+
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:184
+
Definition Shape.h:145
+
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
+
Definition Vec3.h:17
+
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:2386
+
Definition RayCast.h:47
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_hinge_constraint_8cpp.html b/_hinge_constraint_8cpp.html new file mode 100644 index 000000000..60087afa5 --- /dev/null +++ b/_hinge_constraint_8cpp.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/HingeConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HingeConstraint.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (HingeConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (HingeConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_hinge_constraint_8cpp.js b/_hinge_constraint_8cpp.js new file mode 100644 index 000000000..1a2c54f67 --- /dev/null +++ b/_hinge_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _hinge_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_hinge_constraint_8cpp.html#a5be6374a3fa4b1e23c2995a196a45b44", null ] +]; \ No newline at end of file diff --git a/_hinge_constraint_8h.html b/_hinge_constraint_8h.html new file mode 100644 index 000000000..7b2955205 --- /dev/null +++ b/_hinge_constraint_8h.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/HingeConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HingeConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  HingeConstraintSettings
 Hinge constraint settings, used to create a hinge constraint. More...
 
class  HingeConstraint
 A hinge constraint constrains 2 bodies on a single point and allows only a single axis of rotation. More...
 
+
+
+ + + + diff --git a/_hinge_constraint_8h.js b/_hinge_constraint_8h.js new file mode 100644 index 000000000..f18450bc2 --- /dev/null +++ b/_hinge_constraint_8h.js @@ -0,0 +1,5 @@ +var _hinge_constraint_8h = +[ + [ "HingeConstraintSettings", "class_hinge_constraint_settings.html", "class_hinge_constraint_settings" ], + [ "HingeConstraint", "class_hinge_constraint.html", "class_hinge_constraint" ] +]; \ No newline at end of file diff --git a/_hinge_constraint_8h_source.html b/_hinge_constraint_8h_source.html new file mode 100644 index 000000000..961c16352 --- /dev/null +++ b/_hinge_constraint_8h_source.html @@ -0,0 +1,373 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/HingeConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HingeConstraint.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
+ + + + + +
12
+ +
14
+
+ +
17{
+
18public:
+ +
20
+
21 // See: ConstraintSettings::SaveBinaryState
+
22 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
23
+
25 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
+
26
+ +
29
+
36 RVec3 mPoint1 = RVec3::sZero();
+
37 Vec3 mHingeAxis1 = Vec3::sAxisY();
+
38 Vec3 mNormalAxis1 = Vec3::sAxisX();
+
39
+
41 RVec3 mPoint2 = RVec3::sZero();
+
42 Vec3 mHingeAxis2 = Vec3::sAxisY();
+
43 Vec3 mNormalAxis2 = Vec3::sAxisX();
+
44
+
47 float mLimitsMin = -JPH_PI;
+
48 float mLimitsMax = JPH_PI;
+
49
+ +
52
+
54 float mMaxFrictionTorque = 0.0f;
+
55
+ +
58
+
59protected:
+
60 // See: ConstraintSettings::RestoreBinaryState
+
61 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
62};
+
+
63
+
+ +
66{
+
67public:
+ +
69
+
71 HingeConstraint(Body &inBody1, Body &inBody2, const HingeConstraintSettings &inSettings);
+
72
+
73 // Generic interface of a constraint
+
74 virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::Hinge; }
+
75 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override;
+
76 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
77 virtual void ResetWarmStart() override;
+
78 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
79 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
80 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
81#ifdef JPH_DEBUG_RENDERER
+
82 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
83 virtual void DrawConstraintLimits(DebugRenderer *inRenderer) const override;
+
84#endif // JPH_DEBUG_RENDERER
+
85 virtual void SaveState(StateRecorder &inStream) const override;
+
86 virtual void RestoreState(StateRecorder &inStream) override;
+
87 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
88
+
89 // See: TwoBodyConstraint
+
90 virtual Mat44 GetConstraintToBody1Matrix() const override;
+
91 virtual Mat44 GetConstraintToBody2Matrix() const override;
+
92
+
94 inline Vec3 GetLocalSpacePoint1() const { return mLocalSpacePosition1; }
+
95
+
97 inline Vec3 GetLocalSpacePoint2() const { return mLocalSpacePosition2; }
+
98
+
99 // Local space hinge directions (transform direction by Body::GetCenterOfMassTransform to take to world space)
+
100 Vec3 GetLocalSpaceHingeAxis1() const { return mLocalSpaceHingeAxis1; }
+
101 Vec3 GetLocalSpaceHingeAxis2() const { return mLocalSpaceHingeAxis2; }
+
102
+
103 // Local space normal directions (transform direction by Body::GetCenterOfMassTransform to take to world space)
+
104 Vec3 GetLocalSpaceNormalAxis1() const { return mLocalSpaceNormalAxis1; }
+
105 Vec3 GetLocalSpaceNormalAxis2() const { return mLocalSpaceNormalAxis2; }
+
106
+
108 float GetCurrentAngle() const;
+
109
+
110 // Friction control
+
111 void SetMaxFrictionTorque(float inFrictionTorque) { mMaxFrictionTorque = inFrictionTorque; }
+
112 float GetMaxFrictionTorque() const { return mMaxFrictionTorque; }
+
113
+
114 // Motor settings
+
115 MotorSettings & GetMotorSettings() { return mMotorSettings; }
+
116 const MotorSettings & GetMotorSettings() const { return mMotorSettings; }
+
117
+
118 // Motor controls
+
119 void SetMotorState(EMotorState inState) { JPH_ASSERT(inState == EMotorState::Off || mMotorSettings.IsValid()); mMotorState = inState; }
+
120 EMotorState GetMotorState() const { return mMotorState; }
+
121 void SetTargetAngularVelocity(float inAngularVelocity) { mTargetAngularVelocity = inAngularVelocity; }
+
122 float GetTargetAngularVelocity() const { return mTargetAngularVelocity; }
+
123 void SetTargetAngle(float inAngle) { mTargetAngle = mHasLimits? Clamp(inAngle, mLimitsMin, mLimitsMax) : inAngle; }
+
124 float GetTargetAngle() const { return mTargetAngle; }
+
125
+
127 void SetLimits(float inLimitsMin, float inLimitsMax);
+
128 float GetLimitsMin() const { return mLimitsMin; }
+
129 float GetLimitsMax() const { return mLimitsMax; }
+
130 bool HasLimits() const { return mHasLimits; }
+
131
+
133 const SpringSettings & GetLimitsSpringSettings() const { return mLimitsSpringSettings; }
+
134 SpringSettings & GetLimitsSpringSettings() { return mLimitsSpringSettings; }
+
135 void SetLimitsSpringSettings(const SpringSettings &inLimitsSpringSettings) { mLimitsSpringSettings = inLimitsSpringSettings; }
+
136
+
138 inline Vec3 GetTotalLambdaPosition() const { return mPointConstraintPart.GetTotalLambda(); }
+
139 inline Vector<2> GetTotalLambdaRotation() const { return mRotationConstraintPart.GetTotalLambda(); }
+
140 inline float GetTotalLambdaRotationLimits() const { return mRotationLimitsConstraintPart.GetTotalLambda(); }
+
141 inline float GetTotalLambdaMotor() const { return mMotorConstraintPart.GetTotalLambda(); }
+
142
+
143private:
+
144 // Internal helper function to calculate the values below
+
145 void CalculateA1AndTheta();
+
146 void CalculateRotationLimitsConstraintProperties(float inDeltaTime);
+
147 void CalculateMotorConstraintProperties(float inDeltaTime);
+
148 inline float GetSmallestAngleToLimit() const;
+
149 inline bool IsMinLimitClosest() const;
+
150
+
151 // CONFIGURATION PROPERTIES FOLLOW
+
152
+
153 // Local space constraint positions
+
154 Vec3 mLocalSpacePosition1;
+
155 Vec3 mLocalSpacePosition2;
+
156
+
157 // Local space hinge directions
+
158 Vec3 mLocalSpaceHingeAxis1;
+
159 Vec3 mLocalSpaceHingeAxis2;
+
160
+
161 // Local space normal direction (direction relative to which to draw constraint limits)
+
162 Vec3 mLocalSpaceNormalAxis1;
+
163 Vec3 mLocalSpaceNormalAxis2;
+
164
+
165 // Inverse of initial relative orientation between bodies (which defines hinge angle = 0)
+
166 Quat mInvInitialOrientation;
+
167
+
168 // Hinge limits
+
169 bool mHasLimits;
+
170 float mLimitsMin;
+
171 float mLimitsMax;
+
172
+
173 // Soft constraint limits
+
174 SpringSettings mLimitsSpringSettings;
+
175
+
176 // Friction
+
177 float mMaxFrictionTorque;
+
178
+
179 // Motor controls
+
180 MotorSettings mMotorSettings;
+
181 EMotorState mMotorState = EMotorState::Off;
+
182 float mTargetAngularVelocity = 0.0f;
+
183 float mTargetAngle = 0.0f;
+
184
+
185 // RUN TIME PROPERTIES FOLLOW
+
186
+
187 // Current rotation around the hinge axis
+
188 float mTheta = 0.0f;
+
189
+
190 // World space hinge axis for body 1
+
191 Vec3 mA1;
+
192
+
193 // The constraint parts
+
194 PointConstraintPart mPointConstraintPart;
+
195 HingeRotationConstraintPart mRotationConstraintPart;
+
196 AngleConstraintPart mRotationLimitsConstraintPart;
+
197 AngleConstraintPart mMotorConstraintPart;
+
198};
+
+
199
+ + +
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
+
@ WorldSpace
All constraint properties are specified in world space.
+
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)
Clamp a value between two values.
Definition Math.h:45
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
EMotorState
Definition MotorSettings.h:17
+
@ Off
Motor is off.
+ +
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+ +
Definition AngleConstraintPart.h:37
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
A hinge constraint constrains 2 bodies on a single point and allows only a single axis of rotation.
Definition HingeConstraint.h:66
+
EMotorState GetMotorState() const
Definition HingeConstraint.h:120
+
const SpringSettings & GetLimitsSpringSettings() const
Update the limits spring settings.
Definition HingeConstraint.h:133
+
void SetLimitsSpringSettings(const SpringSettings &inLimitsSpringSettings)
Definition HingeConstraint.h:135
+
const MotorSettings & GetMotorSettings() const
Definition HingeConstraint.h:116
+
SpringSettings & GetLimitsSpringSettings()
Definition HingeConstraint.h:134
+
Vec3 GetLocalSpaceNormalAxis2() const
Definition HingeConstraint.h:105
+
float GetLimitsMax() const
Definition HingeConstraint.h:129
+
float GetTotalLambdaRotationLimits() const
Definition HingeConstraint.h:140
+
Vector< 2 > GetTotalLambdaRotation() const
Definition HingeConstraint.h:139
+
MotorSettings & GetMotorSettings()
Definition HingeConstraint.h:115
+
Vec3 GetLocalSpacePoint2() const
Get the attachment point for body 2 relative to body 2 COM (transform by Body::GetCenterOfMassTransfo...
Definition HingeConstraint.h:97
+
float GetLimitsMin() const
Definition HingeConstraint.h:128
+
void SetTargetAngularVelocity(float inAngularVelocity)
rad/s
Definition HingeConstraint.h:121
+
float GetTargetAngle() const
Definition HingeConstraint.h:124
+
float GetMaxFrictionTorque() const
Definition HingeConstraint.h:112
+
Vec3 GetLocalSpaceNormalAxis1() const
Definition HingeConstraint.h:104
+
Vec3 GetLocalSpaceHingeAxis2() const
Definition HingeConstraint.h:101
+
void SetMotorState(EMotorState inState)
Definition HingeConstraint.h:119
+
void SetTargetAngle(float inAngle)
rad
Definition HingeConstraint.h:123
+
Vec3 GetLocalSpaceHingeAxis1() const
Definition HingeConstraint.h:100
+
virtual EConstraintSubType GetSubType() const override
Get the sub type of a constraint.
Definition HingeConstraint.h:74
+
float GetTotalLambdaMotor() const
Definition HingeConstraint.h:141
+
float GetTargetAngularVelocity() const
Definition HingeConstraint.h:122
+
void SetMaxFrictionTorque(float inFrictionTorque)
Definition HingeConstraint.h:111
+
Vec3 GetTotalLambdaPosition() const
Definition HingeConstraint.h:138
+
Vec3 GetLocalSpacePoint1() const
Get the attachment point for body 1 relative to body 1 COM (transform by Body::GetCenterOfMassTransfo...
Definition HingeConstraint.h:94
+
bool HasLimits() const
Definition HingeConstraint.h:130
+
Hinge constraint settings, used to create a hinge constraint.
Definition HingeConstraint.h:17
+
MotorSettings mMotorSettings
In case the constraint is powered, this determines the motor settings around the hinge axis.
Definition HingeConstraint.h:57
+
SpringSettings mLimitsSpringSettings
When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will...
Definition HingeConstraint.h:51
+
Definition HingeRotationConstraintPart.h:44
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Definition MotorSettings.h:26
+
Definition PointConstraintPart.h:41
+
Definition Quat.h:33
+
Definition Reference.h:101
+
Settings for a linear or angular spring.
Definition SpringSettings.h:23
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition Vec3.h:53
+
static JPH_INLINE Vec3 sAxisY()
Definition Vec3.h:54
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Templatized vector class.
Definition Vector.h:12
+
+
+ + + + diff --git a/_hinge_rotation_constraint_part_8h.html b/_hinge_rotation_constraint_part_8h.html new file mode 100644 index 000000000..51695e32e --- /dev/null +++ b/_hinge_rotation_constraint_part_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/HingeRotationConstraintPart.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HingeRotationConstraintPart.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  HingeRotationConstraintPart
 
+
+
+ + + + diff --git a/_hinge_rotation_constraint_part_8h.js b/_hinge_rotation_constraint_part_8h.js new file mode 100644 index 000000000..6899b6638 --- /dev/null +++ b/_hinge_rotation_constraint_part_8h.js @@ -0,0 +1,4 @@ +var _hinge_rotation_constraint_part_8h = +[ + [ "HingeRotationConstraintPart", "class_hinge_rotation_constraint_part.html", "class_hinge_rotation_constraint_part" ] +]; \ No newline at end of file diff --git a/_hinge_rotation_constraint_part_8h_source.html b/_hinge_rotation_constraint_part_8h_source.html new file mode 100644 index 000000000..330630ac4 --- /dev/null +++ b/_hinge_rotation_constraint_part_8h_source.html @@ -0,0 +1,368 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/HingeRotationConstraintPart.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HingeRotationConstraintPart.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
+ + +
9#include <Jolt/Math/Vector.h>
+
10#include <Jolt/Math/Matrix.h>
+
11
+ +
13
+
+ +
44{
+
45public:
+
46 using Vec2 = Vector<2>;
+ +
48
+
49private:
+
51 JPH_INLINE bool ApplyVelocityStep(Body &ioBody1, Body &ioBody2, const Vec2 &inLambda) const
+
52 {
+
53 // Apply impulse if delta is not zero
+
54 if (!inLambda.IsZero())
+
55 {
+
56 // Calculate velocity change due to constraint
+
57 //
+
58 // Impulse:
+
59 // P = J^T lambda
+
60 //
+
61 // Euler velocity integration:
+
62 // v' = v + M^-1 P
+
63 Vec3 impulse = mB2xA1 * inLambda[0] + mC2xA1 * inLambda[1];
+
64 if (ioBody1.IsDynamic())
+
65 ioBody1.GetMotionProperties()->SubAngularVelocityStep(mInvI1.Multiply3x3(impulse));
+
66 if (ioBody2.IsDynamic())
+
67 ioBody2.GetMotionProperties()->AddAngularVelocityStep(mInvI2.Multiply3x3(impulse));
+
68 return true;
+
69 }
+
70
+
71 return false;
+
72 }
+
73
+
74public:
+
+
76 inline void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inWorldSpaceHingeAxis1, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inWorldSpaceHingeAxis2)
+
77 {
+
78 JPH_ASSERT(inWorldSpaceHingeAxis1.IsNormalized(1.0e-5f));
+
79 JPH_ASSERT(inWorldSpaceHingeAxis2.IsNormalized(1.0e-5f));
+
80
+
81 // Calculate hinge axis in world space
+
82 mA1 = inWorldSpaceHingeAxis1;
+
83 Vec3 a2 = inWorldSpaceHingeAxis2;
+
84 float dot = mA1.Dot(a2);
+
85 if (dot <= 1.0e-3f)
+
86 {
+
87 // World space axes are more than 90 degrees apart, get a perpendicular vector in the plane formed by mA1 and a2 as hinge axis until the rotation is less than 90 degrees
+
88 Vec3 perp = a2 - dot * mA1;
+
89 if (perp.LengthSq() < 1.0e-6f)
+
90 {
+
91 // mA1 ~ -a2, take random perpendicular
+
92 perp = mA1.GetNormalizedPerpendicular();
+
93 }
+
94
+
95 // Blend in a little bit from mA1 so we're less than 90 degrees apart
+
96 a2 = (0.99f * perp.Normalized() + 0.01f * mA1).Normalized();
+
97 }
+ +
99 mC2 = a2.Cross(mB2);
+
100
+
101 // Calculate properties used during constraint solving
+
102 mInvI1 = inBody1.IsDynamic()? inBody1.GetMotionProperties()->GetInverseInertiaForRotation(inRotation1) : Mat44::sZero();
+
103 mInvI2 = inBody2.IsDynamic()? inBody2.GetMotionProperties()->GetInverseInertiaForRotation(inRotation2) : Mat44::sZero();
+
104 mB2xA1 = mB2.Cross(mA1);
+
105 mC2xA1 = mC2.Cross(mA1);
+
106
+
107 // Calculate effective mass: K^-1 = (J M^-1 J^T)^-1
+
108 Mat44 summed_inv_inertia = mInvI1 + mInvI2;
+
109 Mat22 inv_effective_mass;
+
110 inv_effective_mass(0, 0) = mB2xA1.Dot(summed_inv_inertia.Multiply3x3(mB2xA1));
+
111 inv_effective_mass(0, 1) = mB2xA1.Dot(summed_inv_inertia.Multiply3x3(mC2xA1));
+
112 inv_effective_mass(1, 0) = mC2xA1.Dot(summed_inv_inertia.Multiply3x3(mB2xA1));
+
113 inv_effective_mass(1, 1) = mC2xA1.Dot(summed_inv_inertia.Multiply3x3(mC2xA1));
+
114 if (!mEffectiveMass.SetInversed(inv_effective_mass))
+
115 Deactivate();
+
116 }
+
+
117
+
+
119 inline void Deactivate()
+
120 {
+
121 mEffectiveMass.SetZero();
+
122 mTotalLambda.SetZero();
+
123 }
+
+
124
+
+
126 inline void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
+
127 {
+
128 mTotalLambda *= inWarmStartImpulseRatio;
+
129 ApplyVelocityStep(ioBody1, ioBody2, mTotalLambda);
+
130 }
+
+
131
+
+
133 inline bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)
+
134 {
+
135 // Calculate lagrange multiplier:
+
136 //
+
137 // lambda = -K^-1 (J v + b)
+
138 Vec3 delta_ang = ioBody1.GetAngularVelocity() - ioBody2.GetAngularVelocity();
+
139 Vec2 jv;
+
140 jv[0] = mB2xA1.Dot(delta_ang);
+
141 jv[1] = mC2xA1.Dot(delta_ang);
+
142 Vec2 lambda = mEffectiveMass * jv;
+
143
+
144 // Store accumulated lambda
+
145 mTotalLambda += lambda;
+
146
+
147 return ApplyVelocityStep(ioBody1, ioBody2, lambda);
+
148 }
+
+
149
+
+
151 inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inBaumgarte) const
+
152 {
+
153 // Constraint needs Axis of body 1 perpendicular to both B and C from body 2 (which are both perpendicular to the Axis of body 2)
+
154 Vec2 c;
+
155 c[0] = mA1.Dot(mB2);
+
156 c[1] = mA1.Dot(mC2);
+
157 if (!c.IsZero())
+
158 {
+
159 // Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
+
160 //
+
161 // lambda = -K^-1 * beta / dt * C
+
162 //
+
163 // We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
+
164 Vec2 lambda = -inBaumgarte * (mEffectiveMass * c);
+
165
+
166 // Directly integrate velocity change for one time step
+
167 //
+
168 // Euler velocity integration:
+
169 // dv = M^-1 P
+
170 //
+
171 // Impulse:
+
172 // P = J^T lambda
+
173 //
+
174 // Euler position integration:
+
175 // x' = x + dv * dt
+
176 //
+
177 // Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
+
178 // Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
+
179 // stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
+
180 // integrate + a position integrate and then discard the velocity change.
+
181 Vec3 impulse = mB2xA1 * lambda[0] + mC2xA1 * lambda[1];
+
182 if (ioBody1.IsDynamic())
+
183 ioBody1.SubRotationStep(mInvI1.Multiply3x3(impulse));
+
184 if (ioBody2.IsDynamic())
+
185 ioBody2.AddRotationStep(mInvI2.Multiply3x3(impulse));
+
186 return true;
+
187 }
+
188
+
189 return false;
+
190 }
+
+
191
+
+
193 const Vec2 & GetTotalLambda() const
+
194 {
+
195 return mTotalLambda;
+
196 }
+
+
197
+
+
199 void SaveState(StateRecorder &inStream) const
+
200 {
+
201 inStream.Write(mTotalLambda);
+
202 }
+
+
203
+
+ +
206 {
+
207 inStream.Read(mTotalLambda);
+
208 }
+
+
209
+
210private:
+
211 Vec3 mA1;
+
212 Vec3 mB2;
+
213 Vec3 mC2;
+
214 Mat44 mInvI1;
+
215 Mat44 mInvI2;
+
216 Vec3 mB2xA1;
+
217 Vec3 mC2xA1;
+
218 Mat22 mEffectiveMass;
+
219 Vec2 mTotalLambda { Vec2::sZero() };
+
220};
+
+
221
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ + + +
Definition Body.h:35
+
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:249
+
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:61
+
void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Update rotation using an Euler step (using during position integrate & constraint solving)
Definition Body.inl:81
+
void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Definition Body.inl:100
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass (unit: rad/s)
Definition Body.h:153
+
Definition HingeRotationConstraintPart.h:44
+
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inBaumgarte) const
Iteratively update the position constraint. Makes sure C(...) = 0.
Definition HingeRotationConstraintPart.h:151
+
void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inWorldSpaceHingeAxis1, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inWorldSpaceHingeAxis2)
Calculate properties used during the functions below.
Definition HingeRotationConstraintPart.h:76
+
void Deactivate()
Deactivate this constraint.
Definition HingeRotationConstraintPart.h:119
+
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition HingeRotationConstraintPart.h:199
+
void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses.
Definition HingeRotationConstraintPart.h:126
+
const Vec2 & GetTotalLambda() const
Return lagrange multiplier.
Definition HingeRotationConstraintPart.h:193
+
bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)
Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equ...
Definition HingeRotationConstraintPart.h:133
+
Matrix< 2, 2 > Mat22
Definition HingeRotationConstraintPart.h:47
+
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition HingeRotationConstraintPart.h:205
+
Vector< 2 > Vec2
Definition HingeRotationConstraintPart.h:46
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sZero()
Zero matrix.
Definition Mat44.inl:30
+
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition Mat44.inl:316
+ +
bool SetInversed(const Matrix &inM)
Inverse matrix.
Definition Matrix.h:200
+
void SetZero()
Zero matrix.
Definition Matrix.h:26
+
void SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:194
+
Mat44 GetInverseInertiaForRotation(Mat44Arg inRotation) const
Get inverse inertia matrix ( ) for a given object rotation (translation will be ignored)....
Definition MotionProperties.inl:59
+
void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:193
+
Definition StateRecorder.h:48
+
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:29
+
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:26
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE Vec3 Normalized() const
Normalize vector.
Definition Vec3.inl:702
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE Vec3 GetNormalizedPerpendicular() const
Get normalized vector that is perpendicular to this vector.
Definition Vec3.inl:820
+
JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const
Test if vector is normalized.
Definition Vec3.inl:745
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+ +
void SetZero()
Vector with all zeros.
Definition Vector.h:22
+
bool IsZero() const
Test if vector consists of all zeros.
Definition Vector.h:69
+
static Vector sZero()
Definition Vector.h:28
+
+
+ + + + diff --git a/_independent_axis_constraint_part_8h.html b/_independent_axis_constraint_part_8h.html new file mode 100644 index 000000000..b2d5c3aad --- /dev/null +++ b/_independent_axis_constraint_part_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/IndependentAxisConstraintPart.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IndependentAxisConstraintPart.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  IndependentAxisConstraintPart
 
+
+
+ + + + diff --git a/_independent_axis_constraint_part_8h.js b/_independent_axis_constraint_part_8h.js new file mode 100644 index 000000000..6da79c673 --- /dev/null +++ b/_independent_axis_constraint_part_8h.js @@ -0,0 +1,4 @@ +var _independent_axis_constraint_part_8h = +[ + [ "IndependentAxisConstraintPart", "class_independent_axis_constraint_part.html", "class_independent_axis_constraint_part" ] +]; \ No newline at end of file diff --git a/_independent_axis_constraint_part_8h_source.html b/_independent_axis_constraint_part_8h_source.html new file mode 100644 index 000000000..3e5dd5f5d --- /dev/null +++ b/_independent_axis_constraint_part_8h_source.html @@ -0,0 +1,352 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/IndependentAxisConstraintPart.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IndependentAxisConstraintPart.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2022 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + +
9
+ +
11
+
+ +
48{
+
50 JPH_INLINE bool ApplyVelocityStep(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inLambda) const
+
51 {
+
52 // Apply impulse if delta is not zero
+
53 if (inLambda != 0.0f)
+
54 {
+
55 // Calculate velocity change due to constraint
+
56 //
+
57 // Impulse:
+
58 // P = J^T lambda
+
59 //
+
60 // Euler velocity integration:
+
61 // v' = v + M^-1 P
+
62 if (ioBody1.IsDynamic())
+
63 {
+ +
65 mp1->AddLinearVelocityStep((mp1->GetInverseMass() * inLambda) * inN1);
+
66 mp1->AddAngularVelocityStep(mInvI1_R1xN1 * inLambda);
+
67 }
+
68 if (ioBody2.IsDynamic())
+
69 {
+ +
71 mp2->AddLinearVelocityStep((inRatio * mp2->GetInverseMass() * inLambda) * inN2);
+
72 mp2->AddAngularVelocityStep(mInvI2_RatioR2xN2 * inLambda);
+
73 }
+
74 return true;
+
75 }
+
76
+
77 return false;
+
78 }
+
79
+
80public:
+
+
89 inline void CalculateConstraintProperties(const Body &inBody1, const Body &inBody2, Vec3Arg inR1, Vec3Arg inN1, Vec3Arg inR2, Vec3Arg inN2, float inRatio)
+
90 {
+
91 JPH_ASSERT(inN1.IsNormalized(1.0e-4f) && inN2.IsNormalized(1.0e-4f));
+
92
+
93 float inv_effective_mass = 0.0f;
+
94
+
95 if (!inBody1.IsStatic())
+
96 {
+
97 const MotionProperties *mp1 = inBody1.GetMotionProperties();
+
98
+
99 mR1xN1 = inR1.Cross(inN1);
+
100 mInvI1_R1xN1 = mp1->MultiplyWorldSpaceInverseInertiaByVector(inBody1.GetRotation(), mR1xN1);
+
101
+
102 inv_effective_mass += mp1->GetInverseMass() + mInvI1_R1xN1.Dot(mR1xN1);
+
103 }
+
104
+
105 if (!inBody2.IsStatic())
+
106 {
+
107 const MotionProperties *mp2 = inBody2.GetMotionProperties();
+
108
+
109 mRatioR2xN2 = inRatio * inR2.Cross(inN2);
+
110 mInvI2_RatioR2xN2 = mp2->MultiplyWorldSpaceInverseInertiaByVector(inBody2.GetRotation(), mRatioR2xN2);
+
111
+
112 inv_effective_mass += Square(inRatio) * mp2->GetInverseMass() + mInvI2_RatioR2xN2.Dot(mRatioR2xN2);
+
113 }
+
114
+
115 // Calculate inverse effective mass: K = J M^-1 J^T
+
116 if (inv_effective_mass == 0.0f)
+
117 Deactivate();
+
118 else
+
119 mEffectiveMass = 1.0f / inv_effective_mass;
+
120 }
+
+
121
+
+
123 inline void Deactivate()
+
124 {
+
125 mEffectiveMass = 0.0f;
+
126 mTotalLambda = 0.0f;
+
127 }
+
+
128
+
+
130 inline bool IsActive() const
+
131 {
+
132 return mEffectiveMass != 0.0f;
+
133 }
+
+
134
+
+
142 inline void WarmStart(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inWarmStartImpulseRatio)
+
143 {
+
144 mTotalLambda *= inWarmStartImpulseRatio;
+
145 ApplyVelocityStep(ioBody1, ioBody2, inN1, inN2, inRatio, mTotalLambda);
+
146 }
+
+
147
+
+
156 inline bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inMinLambda, float inMaxLambda)
+
157 {
+
158 // Lagrange multiplier is:
+
159 //
+
160 // lambda = -K^-1 (J v + b)
+
161 float lambda = -mEffectiveMass * (inN1.Dot(ioBody1.GetLinearVelocity()) + mR1xN1.Dot(ioBody1.GetAngularVelocity()) + inRatio * inN2.Dot(ioBody2.GetLinearVelocity()) + mRatioR2xN2.Dot(ioBody2.GetAngularVelocity()));
+
162 float new_lambda = Clamp(mTotalLambda + lambda, inMinLambda, inMaxLambda); // Clamp impulse
+
163 lambda = new_lambda - mTotalLambda; // Lambda potentially got clamped, calculate the new impulse to apply
+
164 mTotalLambda = new_lambda; // Store accumulated impulse
+
165
+
166 return ApplyVelocityStep(ioBody1, ioBody2, inN1, inN2, inRatio, lambda);
+
167 }
+
+
168
+
+
170 float GetTotalLambda() const
+
171 {
+
172 return mTotalLambda;
+
173 }
+
+
174
+
+
183 inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inC, float inBaumgarte) const
+
184 {
+
185 if (inC != 0.0f)
+
186 {
+
187 // Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
+
188 //
+
189 // lambda = -K^-1 * beta / dt * C
+
190 //
+
191 // We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
+
192 float lambda = -mEffectiveMass * inBaumgarte * inC;
+
193
+
194 // Directly integrate velocity change for one time step
+
195 //
+
196 // Euler velocity integration:
+
197 // dv = M^-1 P
+
198 //
+
199 // Impulse:
+
200 // P = J^T lambda
+
201 //
+
202 // Euler position integration:
+
203 // x' = x + dv * dt
+
204 //
+
205 // Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
+
206 // Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
+
207 // stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
+
208 // integrate + a position integrate and then discard the velocity change.
+
209 if (ioBody1.IsDynamic())
+
210 {
+
211 ioBody1.AddPositionStep((lambda * ioBody1.GetMotionPropertiesUnchecked()->GetInverseMass()) * inN1);
+
212 ioBody1.AddRotationStep(lambda * mInvI1_R1xN1);
+
213 }
+
214 if (ioBody2.IsDynamic())
+
215 {
+
216 ioBody2.AddPositionStep((lambda * inRatio * ioBody2.GetMotionPropertiesUnchecked()->GetInverseMass()) * inN2);
+
217 ioBody2.AddRotationStep(lambda * mInvI2_RatioR2xN2);
+
218 }
+
219 return true;
+
220 }
+
221
+
222 return false;
+
223 }
+
+
224
+
+
226 void SaveState(StateRecorder &inStream) const
+
227 {
+
228 inStream.Write(mTotalLambda);
+
229 }
+
+
230
+
+ +
233 {
+
234 inStream.Read(mTotalLambda);
+
235 }
+
+
236
+
237private:
+
238 Vec3 mR1xN1;
+
239 Vec3 mInvI1_R1xN1;
+
240 Vec3 mRatioR2xN2;
+
241 Vec3 mInvI2_RatioR2xN2;
+
242 float mEffectiveMass = 0.0f;
+
243 float mTotalLambda = 0.0f;
+
244};
+
+
245
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)
Clamp a value between two values.
Definition Math.h:45
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+ +
Definition Body.h:35
+
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:249
+
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:61
+
void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Update rotation using an Euler step (using during position integrate & constraint solving)
Definition Body.inl:81
+
Vec3 GetLinearVelocity() const
Get world space linear velocity of the center of mass (unit: m/s)
Definition Body.h:144
+
bool IsStatic() const
Check if this body is static (not movable)
Definition Body.h:55
+
Quat GetRotation() const
World space rotation of the body.
Definition Body.h:231
+
const MotionProperties * GetMotionPropertiesUnchecked() const
Access to the motion properties (version that does not check if the object is kinematic or dynamic)
Definition Body.h:253
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass (unit: rad/s)
Definition Body.h:153
+
void AddPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)
Update position using an Euler step (used during position integrate & constraint solving)
Definition Body.h:283
+
Definition IndependentAxisConstraintPart.h:48
+
void CalculateConstraintProperties(const Body &inBody1, const Body &inBody2, Vec3Arg inR1, Vec3Arg inN1, Vec3Arg inR2, Vec3Arg inN2, float inRatio)
Definition IndependentAxisConstraintPart.h:89
+
float GetTotalLambda() const
Return lagrange multiplier.
Definition IndependentAxisConstraintPart.h:170
+
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition IndependentAxisConstraintPart.h:232
+
bool IsActive() const
Check if constraint is active.
Definition IndependentAxisConstraintPart.h:130
+
void WarmStart(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inWarmStartImpulseRatio)
Definition IndependentAxisConstraintPart.h:142
+
bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inMinLambda, float inMaxLambda)
Definition IndependentAxisConstraintPart.h:156
+
void Deactivate()
Deactivate this constraint.
Definition IndependentAxisConstraintPart.h:123
+
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inC, float inBaumgarte) const
Definition IndependentAxisConstraintPart.h:183
+
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition IndependentAxisConstraintPart.h:226
+
The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...
Definition MotionProperties.h:29
+
void AddLinearVelocityStep(Vec3Arg inLinearVelocityChange)
Definition MotionProperties.h:191
+
float GetInverseMass() const
Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies ha...
Definition MotionProperties.h:95
+
JPH_INLINE Vec3 MultiplyWorldSpaceInverseInertiaByVector(QuatArg inBodyRotation, Vec3Arg inV) const
Multiply a vector with the inverse world space inertia tensor ( ). Zero if object is static or kinema...
Definition MotionProperties.inl:76
+
void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:193
+
Definition StateRecorder.h:48
+
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:29
+
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:26
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const
Test if vector is normalized.
Definition Vec3.inl:745
+
+
+ + + + diff --git a/_indexed_triangle_8h.html b/_indexed_triangle_8h.html new file mode 100644 index 000000000..0087f490a --- /dev/null +++ b/_indexed_triangle_8h.html @@ -0,0 +1,166 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/IndexedTriangle.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IndexedTriangle.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  IndexedTriangleNoMaterial
 Triangle with 32-bit indices. More...
 
class  IndexedTriangle
 Triangle with 32-bit indices and material index. More...
 
+ + + + + +

+Typedefs

using IndexedTriangleNoMaterialList = Array< IndexedTriangleNoMaterial >
 
using IndexedTriangleList = Array< IndexedTriangle >
 
+

Typedef Documentation

+ +

◆ IndexedTriangleList

+ +
+
+ +
+
+ +

◆ IndexedTriangleNoMaterialList

+ + +
+
+ + + + diff --git a/_indexed_triangle_8h.js b/_indexed_triangle_8h.js new file mode 100644 index 000000000..44d5a9701 --- /dev/null +++ b/_indexed_triangle_8h.js @@ -0,0 +1,7 @@ +var _indexed_triangle_8h = +[ + [ "IndexedTriangleNoMaterial", "class_indexed_triangle_no_material.html", "class_indexed_triangle_no_material" ], + [ "IndexedTriangle", "class_indexed_triangle.html", "class_indexed_triangle" ], + [ "IndexedTriangleList", "_indexed_triangle_8h.html#a36dddc469fdd08411ce6fb341a59f7bd", null ], + [ "IndexedTriangleNoMaterialList", "_indexed_triangle_8h.html#a2d74380960608d52a301172e577ab9e3", null ] +]; \ No newline at end of file diff --git a/_indexed_triangle_8h_source.html b/_indexed_triangle_8h_source.html new file mode 100644 index 000000000..7fa0e1593 --- /dev/null +++ b/_indexed_triangle_8h_source.html @@ -0,0 +1,268 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/IndexedTriangle.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IndexedTriangle.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{
+
14public:
+ +
16
+ +
19 constexpr IndexedTriangleNoMaterial(uint32 inI1, uint32 inI2, uint32 inI3) : mIdx { inI1, inI2, inI3 } { }
+
20
+
+
22 bool operator == (const IndexedTriangleNoMaterial &inRHS) const
+
23 {
+
24 return mIdx[0] == inRHS.mIdx[0] && mIdx[1] == inRHS.mIdx[1] && mIdx[2] == inRHS.mIdx[2];
+
25 }
+
+
26
+
+
28 bool IsEquivalent(const IndexedTriangleNoMaterial &inRHS) const
+
29 {
+
30 return (mIdx[0] == inRHS.mIdx[0] && mIdx[1] == inRHS.mIdx[1] && mIdx[2] == inRHS.mIdx[2])
+
31 || (mIdx[0] == inRHS.mIdx[1] && mIdx[1] == inRHS.mIdx[2] && mIdx[2] == inRHS.mIdx[0])
+
32 || (mIdx[0] == inRHS.mIdx[2] && mIdx[1] == inRHS.mIdx[0] && mIdx[2] == inRHS.mIdx[1]);
+
33 }
+
+
34
+
+
36 bool IsOpposite(const IndexedTriangleNoMaterial &inRHS) const
+
37 {
+
38 return (mIdx[0] == inRHS.mIdx[0] && mIdx[1] == inRHS.mIdx[2] && mIdx[2] == inRHS.mIdx[1])
+
39 || (mIdx[0] == inRHS.mIdx[1] && mIdx[1] == inRHS.mIdx[0] && mIdx[2] == inRHS.mIdx[2])
+
40 || (mIdx[0] == inRHS.mIdx[2] && mIdx[1] == inRHS.mIdx[1] && mIdx[2] == inRHS.mIdx[0]);
+
41 }
+
+
42
+
+
44 bool IsDegenerate(const VertexList &inVertices) const
+
45 {
+
46 Vec3 v0(inVertices[mIdx[0]]);
+
47 Vec3 v1(inVertices[mIdx[1]]);
+
48 Vec3 v2(inVertices[mIdx[2]]);
+
49
+
50 return (v1 - v0).Cross(v2 - v0).IsNearZero();
+
51 }
+
+
52
+
+
54 void Rotate()
+
55 {
+
56 uint32 tmp = mIdx[0];
+
57 mIdx[0] = mIdx[1];
+
58 mIdx[1] = mIdx[2];
+
59 mIdx[2] = tmp;
+
60 }
+
+
61
+
+
63 Vec3 GetCentroid(const VertexList &inVertices) const
+
64 {
+
65 return (Vec3(inVertices[mIdx[0]]) + Vec3(inVertices[mIdx[1]]) + Vec3(inVertices[mIdx[2]])) / 3.0f;
+
66 }
+
+
67
+ +
69};
+
+
70
+
+ +
73{
+
74public:
+ +
76
+
78 constexpr IndexedTriangle(uint32 inI1, uint32 inI2, uint32 inI3, uint32 inMaterialIndex, uint inUserData = 0) : IndexedTriangleNoMaterial(inI1, inI2, inI3), mMaterialIndex(inMaterialIndex), mUserData(inUserData) { }
+
79
+
+
81 bool operator == (const IndexedTriangle &inRHS) const
+
82 {
+ +
84 }
+
+
85
+
+ +
88 {
+
89 if (mIdx[0] < mIdx[1])
+
90 {
+
91 if (mIdx[0] < mIdx[2])
+
92 return IndexedTriangle(mIdx[0], mIdx[1], mIdx[2], mMaterialIndex, mUserData); // 0 is smallest
+
93 else
+
94 return IndexedTriangle(mIdx[2], mIdx[0], mIdx[1], mMaterialIndex, mUserData); // 2 is smallest
+
95 }
+
96 else
+
97 {
+
98 if (mIdx[1] < mIdx[2])
+
99 return IndexedTriangle(mIdx[1], mIdx[2], mIdx[0], mMaterialIndex, mUserData); // 1 is smallest
+
100 else
+
101 return IndexedTriangle(mIdx[2], mIdx[0], mIdx[1], mMaterialIndex, mUserData); // 2 is smallest
+
102 }
+
103 }
+
+
104
+ + +
107};
+
+
108
+ + +
111
+ +
113
+
114// Create a std::hash for IndexedTriangleNoMaterial and IndexedTriangle
+
115JPH_MAKE_HASHABLE(JPH::IndexedTriangleNoMaterial, t.mIdx[0], t.mIdx[1], t.mIdx[2])
+
116JPH_MAKE_HASHABLE(JPH::IndexedTriangle, t.mIdx[0], t.mIdx[1], t.mIdx[2], t.mMaterialIndex, t.mUserData)
+
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
+ +
#define JPH_MAKE_HASHABLE(type,...)
Definition HashCombine.h:87
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
Triangle with 32-bit indices and material index.
Definition IndexedTriangle.h:73
+
uint32 mUserData
User data that can be used for anything by the application, e.g. for tracking the original index of t...
Definition IndexedTriangle.h:106
+
uint32 mMaterialIndex
Definition IndexedTriangle.h:105
+
bool operator==(const IndexedTriangle &inRHS) const
Check if two triangles are identical.
Definition IndexedTriangle.h:81
+
IndexedTriangle GetLowestIndexFirst() const
Rotate the vertices so that the lowest vertex becomes the first. This does not change the represented...
Definition IndexedTriangle.h:87
+
constexpr IndexedTriangle(uint32 inI1, uint32 inI2, uint32 inI3, uint32 inMaterialIndex, uint inUserData=0)
Constructor.
Definition IndexedTriangle.h:78
+
Triangle with 32-bit indices.
Definition IndexedTriangle.h:13
+
JPH_OVERRIDE_NEW_DELETE IndexedTriangleNoMaterial()=default
Constructor.
+
Vec3 GetCentroid(const VertexList &inVertices) const
Get center of triangle.
Definition IndexedTriangle.h:63
+
uint32 mIdx[3]
Definition IndexedTriangle.h:68
+
bool IsDegenerate(const VertexList &inVertices) const
Check if triangle is degenerate.
Definition IndexedTriangle.h:44
+
void Rotate()
Rotate the vertices so that the second vertex becomes first etc. This does not change the represented...
Definition IndexedTriangle.h:54
+
constexpr IndexedTriangleNoMaterial(uint32 inI1, uint32 inI2, uint32 inI3)
Definition IndexedTriangle.h:19
+
bool IsEquivalent(const IndexedTriangleNoMaterial &inRHS) const
Check if two triangles are equivalent (using the same vertices)
Definition IndexedTriangle.h:28
+
bool IsOpposite(const IndexedTriangleNoMaterial &inRHS) const
Check if two triangles are opposite (using the same vertices but in opposing order)
Definition IndexedTriangle.h:36
+
bool operator==(const IndexedTriangleNoMaterial &inRHS) const
Check if two triangles are identical.
Definition IndexedTriangle.h:22
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_indexify_8cpp.html b/_indexify_8cpp.html new file mode 100644 index 000000000..221480dcd --- /dev/null +++ b/_indexify_8cpp.html @@ -0,0 +1,206 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/Indexify.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Indexify.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <Jolt/Geometry/Indexify.h>
+#include <Jolt/Geometry/AABox.h>
+
+ + + + + + +

+Functions

void Indexify (const TriangleList &inTriangles, VertexList &outVertices, IndexedTriangleList &outTriangles, float inVertexWeldDistance)
 
void Deindexify (const VertexList &inVertices, const IndexedTriangleList &inTriangles, TriangleList &outTriangles)
 Take a list of indexed triangles and unpack them.
 
+

Function Documentation

+ +

◆ Deindexify()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Deindexify (const VertexListinVertices,
const IndexedTriangleListinTriangles,
TriangleListoutTriangles 
)
+
+ +

Take a list of indexed triangles and unpack them.

+ +
+
+ +

◆ Indexify()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void Indexify (const TriangleListinTriangles,
VertexListoutVertices,
IndexedTriangleListoutTriangles,
float inVertexWeldDistance = 1.0e-4f 
)
+
+

Take a list of triangles and get the unique set of vertices and use them to create indexed triangles. Vertices that are less than inVertexWeldDistance apart will be combined to a single vertex.

+ +
+
+
+
+ + + + diff --git a/_indexify_8cpp.js b/_indexify_8cpp.js new file mode 100644 index 000000000..6556eb279 --- /dev/null +++ b/_indexify_8cpp.js @@ -0,0 +1,5 @@ +var _indexify_8cpp = +[ + [ "Deindexify", "_indexify_8cpp.html#ac61c7f9c3b965f9cbff3cc10733988ec", null ], + [ "Indexify", "_indexify_8cpp.html#ab6b21642fd35795ec65d252b58614f0f", null ] +]; \ No newline at end of file diff --git a/_indexify_8h.html b/_indexify_8h.html new file mode 100644 index 000000000..d8477318a --- /dev/null +++ b/_indexify_8h.html @@ -0,0 +1,207 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/Indexify.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Indexify.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_EXPORT void Indexify (const TriangleList &inTriangles, VertexList &outVertices, IndexedTriangleList &outTriangles, float inVertexWeldDistance=1.0e-4f)
 
JPH_EXPORT void Deindexify (const VertexList &inVertices, const IndexedTriangleList &inTriangles, TriangleList &outTriangles)
 Take a list of indexed triangles and unpack them.
 
+

Function Documentation

+ +

◆ Deindexify()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_EXPORT void Deindexify (const VertexListinVertices,
const IndexedTriangleListinTriangles,
TriangleListoutTriangles 
)
+
+ +

Take a list of indexed triangles and unpack them.

+ +
+
+ +

◆ Indexify()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_EXPORT void Indexify (const TriangleListinTriangles,
VertexListoutVertices,
IndexedTriangleListoutTriangles,
float inVertexWeldDistance = 1.0e-4f 
)
+
+

Take a list of triangles and get the unique set of vertices and use them to create indexed triangles. Vertices that are less than inVertexWeldDistance apart will be combined to a single vertex.

+ +
+
+
+
+ + + + diff --git a/_indexify_8h.js b/_indexify_8h.js new file mode 100644 index 000000000..bb8ab6ec4 --- /dev/null +++ b/_indexify_8h.js @@ -0,0 +1,5 @@ +var _indexify_8h = +[ + [ "Deindexify", "_indexify_8h.html#a2914ee656dfa981f96f1c6bcd70e1c4b", null ], + [ "Indexify", "_indexify_8h.html#ab7b184ebf9ddcef48642e7cfea156909", null ] +]; \ No newline at end of file diff --git a/_indexify_8h_source.html b/_indexify_8h_source.html new file mode 100644 index 000000000..d20c7b738 --- /dev/null +++ b/_indexify_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/Indexify.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Indexify.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
+ + +
9
+ +
11
+
14JPH_EXPORT void Indexify(const TriangleList &inTriangles, VertexList &outVertices, IndexedTriangleList &outTriangles, float inVertexWeldDistance = 1.0e-4f);
+
15
+
17JPH_EXPORT void Deindexify(const VertexList &inVertices, const IndexedTriangleList &inTriangles, TriangleList &outTriangles);
+
18
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
JPH_EXPORT void Deindexify(const VertexList &inVertices, const IndexedTriangleList &inTriangles, TriangleList &outTriangles)
Take a list of indexed triangles and unpack them.
Definition Indexify.cpp:208
+
JPH_NAMESPACE_BEGIN JPH_EXPORT void Indexify(const TriangleList &inTriangles, VertexList &outVertices, IndexedTriangleList &outTriangles, float inVertexWeldDistance=1.0e-4f)
Definition Indexify.cpp:139
+ + +
+
+ + + + diff --git a/_insertion_sort_8h.html b/_insertion_sort_8h.html new file mode 100644 index 000000000..22bee0d3b --- /dev/null +++ b/_insertion_sort_8h.html @@ -0,0 +1,217 @@ + + + + + + + +Jolt Physics: Jolt/Core/InsertionSort.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
InsertionSort.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename Iterator , typename Compare >
JPH_NAMESPACE_BEGIN void InsertionSort (Iterator inBegin, Iterator inEnd, Compare inCompare)
 Implementation of the insertion sort algorithm.
 
template<typename Iterator >
void InsertionSort (Iterator inBegin, Iterator inEnd)
 Implementation of insertion sort algorithm without comparator.
 
+

Function Documentation

+ +

◆ InsertionSort() [1/2]

+ +
+
+
+template<typename Iterator >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void InsertionSort (Iterator inBegin,
Iterator inEnd 
)
+
+inline
+
+ +

Implementation of insertion sort algorithm without comparator.

+ +
+
+ +

◆ InsertionSort() [2/2]

+ +
+
+
+template<typename Iterator , typename Compare >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void InsertionSort (Iterator inBegin,
Iterator inEnd,
Compare inCompare 
)
+
+inline
+
+ +

Implementation of the insertion sort algorithm.

+ +
+
+
+
+ + + + diff --git a/_insertion_sort_8h.js b/_insertion_sort_8h.js new file mode 100644 index 000000000..1f4307548 --- /dev/null +++ b/_insertion_sort_8h.js @@ -0,0 +1,5 @@ +var _insertion_sort_8h = +[ + [ "InsertionSort", "_insertion_sort_8h.html#a80e0fb97467b162da908954c2625ddbc", null ], + [ "InsertionSort", "_insertion_sort_8h.html#a1c833812e3ce3c4848ccd57826ab2463", null ] +]; \ No newline at end of file diff --git a/_insertion_sort_8h_source.html b/_insertion_sort_8h_source.html new file mode 100644 index 000000000..4e9312bf4 --- /dev/null +++ b/_insertion_sort_8h_source.html @@ -0,0 +1,182 @@ + + + + + + + +Jolt Physics: Jolt/Core/InsertionSort.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
InsertionSort.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2022 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+
10template <typename Iterator, typename Compare>
+
+
11inline void InsertionSort(Iterator inBegin, Iterator inEnd, Compare inCompare)
+
12{
+
13 // Empty arrays don't need to be sorted
+
14 if (inBegin != inEnd)
+
15 {
+
16 // Start at the second element
+
17 for (Iterator i = inBegin + 1; i != inEnd; ++i)
+
18 {
+
19 // Move this element to a temporary value
+
20 auto x = std::move(*i);
+
21
+
22 // Check if the element goes before inBegin (we can't decrement the iterator before inBegin so this needs to be a separate branch)
+
23 if (inCompare(x, *inBegin))
+
24 {
+
25 // Move all elements to the right to make space for x
+
26 Iterator prev;
+
27 for (Iterator j = i; j != inBegin; j = prev)
+
28 {
+
29 prev = j - 1;
+
30 *j = *prev;
+
31 }
+
32
+
33 // Move x to the first place
+
34 *inBegin = std::move(x);
+
35 }
+
36 else
+
37 {
+
38 // Move elements to the right as long as they are bigger than x
+
39 Iterator j = i;
+
40 for (Iterator prev = j - 1; inCompare(x, *prev); j = prev, --prev)
+
41 *j = std::move(*prev);
+
42
+
43 // Move x into place
+
44 *j = std::move(x);
+
45 }
+
46 }
+
47 }
+
48}
+
+
49
+
51template <typename Iterator>
+
+
52inline void InsertionSort(Iterator inBegin, Iterator inEnd)
+
53{
+
54 std::less<> compare;
+
55 InsertionSort(inBegin, inEnd, compare);
+
56}
+
+
57
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_NAMESPACE_BEGIN void InsertionSort(Iterator inBegin, Iterator inEnd, Compare inCompare)
Implementation of the insertion sort algorithm.
Definition InsertionSort.h:11
+
+
+ + + + diff --git a/_internal_edge_removing_collector_8h.html b/_internal_edge_removing_collector_8h.html new file mode 100644 index 000000000..21ee5ea6c --- /dev/null +++ b/_internal_edge_removing_collector_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/InternalEdgeRemovingCollector.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
InternalEdgeRemovingCollector.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  InternalEdgeRemovingCollector
 
+
+
+ + + + diff --git a/_internal_edge_removing_collector_8h.js b/_internal_edge_removing_collector_8h.js new file mode 100644 index 000000000..70a11d077 --- /dev/null +++ b/_internal_edge_removing_collector_8h.js @@ -0,0 +1,4 @@ +var _internal_edge_removing_collector_8h = +[ + [ "InternalEdgeRemovingCollector", "class_internal_edge_removing_collector.html", "class_internal_edge_removing_collector" ] +]; \ No newline at end of file diff --git a/_internal_edge_removing_collector_8h_source.html b/_internal_edge_removing_collector_8h_source.html new file mode 100644 index 000000000..c6834c523 --- /dev/null +++ b/_internal_edge_removing_collector_8h_source.html @@ -0,0 +1,438 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/InternalEdgeRemovingCollector.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
InternalEdgeRemovingCollector.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + +
9
+
10//#define JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
+
11
+
12#ifdef JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
+ +
14#endif // JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
+
15
+ +
17
+
+ +
21{
+
22 static constexpr uint cMaxDelayedResults = 16;
+
23 static constexpr uint cMaxVoidedFeatures = 128;
+
24
+
26 inline bool IsVoided(const SubShapeID &inSubShapeID, Vec3 inV) const
+
27 {
+
28 for (const Voided &vf : mVoidedFeatures)
+
29 if (vf.mSubShapeID == inSubShapeID
+
30 && inV.IsClose(Vec3::sLoadFloat3Unsafe(vf.mFeature), 1.0e-8f))
+
31 return true;
+
32 return false;
+
33 }
+
34
+
36 inline void VoidFeatures(const CollideShapeResult &inResult)
+
37 {
+
38 if (mVoidedFeatures.size() < cMaxVoidedFeatures)
+
39 for (const Vec3 &v : inResult.mShape2Face)
+
40 if (!IsVoided(inResult.mSubShapeID1, v))
+
41 {
+
42 Voided vf;
+
43 v.StoreFloat3(&vf.mFeature);
+
44 vf.mSubShapeID = inResult.mSubShapeID1;
+
45 mVoidedFeatures.push_back(vf);
+
46 if (mVoidedFeatures.size() == cMaxVoidedFeatures)
+
47 break;
+
48 }
+
49 }
+
50
+
52 inline void Chain(const CollideShapeResult &inResult)
+
53 {
+
54 // Make sure the chained collector has the same context as we do
+
55 mChainedCollector.SetContext(GetContext());
+
56
+
57 // Forward the hit
+
58 mChainedCollector.AddHit(inResult);
+
59
+
60 // If our chained collector updated its early out fraction, we need to follow
+ +
62 }
+
63
+
65 inline void ChainAndVoid(const CollideShapeResult &inResult)
+
66 {
+
67 Chain(inResult);
+
68 VoidFeatures(inResult);
+
69
+
70 #ifdef JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
+ + +
73 #endif // JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
+
74 }
+
75
+
76public:
+
+ +
79 mChainedCollector(inChainedCollector)
+
80 {
+
81 }
+
+
82
+
83 // See: CollideShapeCollector::Reset
+
+
84 virtual void Reset() override
+
85 {
+ +
87
+
88 mChainedCollector.Reset();
+
89
+
90 mVoidedFeatures.clear();
+
91 mDelayedResults.clear();
+
92 }
+
+
93
+
94 // See: CollideShapeCollector::OnBody
+
+
95 virtual void OnBody(const Body &inBody) override
+
96 {
+
97 // Just forward the call to our chained collector
+
98 mChainedCollector.OnBody(inBody);
+
99 }
+
+
100
+
101 // See: CollideShapeCollector::AddHit
+
+
102 virtual void AddHit(const CollideShapeResult &inResult) override
+
103 {
+
104 // We only support welding when the shape is a triangle or has more vertices so that we can calculate a normal
+
105 if (inResult.mShape2Face.size() < 3)
+
106 return ChainAndVoid(inResult);
+
107
+
108 // Get the triangle normal of shape 2 face
+
109 Vec3 triangle_normal = (inResult.mShape2Face[1] - inResult.mShape2Face[0]).Cross(inResult.mShape2Face[2] - inResult.mShape2Face[0]);
+
110 float triangle_normal_len = triangle_normal.Length();
+
111 if (triangle_normal_len < 1e-6f)
+
112 return ChainAndVoid(inResult);
+
113
+
114 // If the triangle normal matches the contact normal within 1 degree, we can process the contact immediately
+
115 // We make the assumption here that if the contact normal and the triangle normal align that the we're dealing with a 'face contact'
+
116 Vec3 contact_normal = -inResult.mPenetrationAxis;
+
117 float contact_normal_len = inResult.mPenetrationAxis.Length();
+
118 if (triangle_normal.Dot(contact_normal) > 0.999848f * contact_normal_len * triangle_normal_len) // cos(1 degree)
+
119 return ChainAndVoid(inResult);
+
120
+
121 // Delayed processing
+
122 if (mDelayedResults.size() == cMaxDelayedResults)
+
123 return ChainAndVoid(inResult);
+
124 mDelayedResults.push_back(inResult);
+
125 }
+
+
126
+
+
128 void Flush()
+
129 {
+
130 // Sort on biggest penetration depth first
+
131 uint sorted_indices[cMaxDelayedResults];
+
132 for (uint i = 0; i < uint(mDelayedResults.size()); ++i)
+
133 sorted_indices[i] = i;
+
134 QuickSort(sorted_indices, sorted_indices + mDelayedResults.size(), [this](uint inLHS, uint inRHS) { return mDelayedResults[inLHS].mPenetrationDepth > mDelayedResults[inRHS].mPenetrationDepth; });
+
135
+
136 // Loop over all results
+
137 for (uint i = 0; i < uint(mDelayedResults.size()); ++i)
+
138 {
+
139 const CollideShapeResult &r = mDelayedResults[sorted_indices[i]];
+
140
+
141 // Determine which vertex or which edge is the closest to the contact point
+
142 float best_dist_sq = FLT_MAX;
+
143 uint best_v1_idx = 0;
+
144 uint best_v2_idx = 0;
+
145 uint num_v = uint(r.mShape2Face.size());
+
146 uint v1_idx = num_v - 1;
+
147 Vec3 v1 = r.mShape2Face[v1_idx] - r.mContactPointOn2;
+
148 for (uint v2_idx = 0; v2_idx < num_v; ++v2_idx)
+
149 {
+
150 Vec3 v2 = r.mShape2Face[v2_idx] - r.mContactPointOn2;
+
151 Vec3 v1_v2 = v2 - v1;
+
152 float denominator = v1_v2.LengthSq();
+
153 if (denominator < Square(FLT_EPSILON))
+
154 {
+
155 // Degenerate, assume v1 is closest, v2 will be tested in a later iteration
+
156 float v1_len_sq = v1.LengthSq();
+
157 if (v1_len_sq < best_dist_sq)
+
158 {
+
159 best_dist_sq = v1_len_sq;
+
160 best_v1_idx = v1_idx;
+
161 best_v2_idx = v1_idx;
+
162 }
+
163 }
+
164 else
+
165 {
+
166 // Taken from ClosestPoint::GetBaryCentricCoordinates
+
167 float fraction = -v1.Dot(v1_v2) / denominator;
+
168 if (fraction < 1.0e-6f)
+
169 {
+
170 // Closest lies on v1
+
171 float v1_len_sq = v1.LengthSq();
+
172 if (v1_len_sq < best_dist_sq)
+
173 {
+
174 best_dist_sq = v1_len_sq;
+
175 best_v1_idx = v1_idx;
+
176 best_v2_idx = v1_idx;
+
177 }
+
178 }
+
179 else if (fraction < 1.0f - 1.0e-6f)
+
180 {
+
181 // Closest lies on the line segment v1, v2
+
182 Vec3 closest = v1 + fraction * v1_v2;
+
183 float closest_len_sq = closest.LengthSq();
+
184 if (closest_len_sq < best_dist_sq)
+
185 {
+
186 best_dist_sq = closest_len_sq;
+
187 best_v1_idx = v1_idx;
+
188 best_v2_idx = v2_idx;
+
189 }
+
190 }
+
191 // else closest is v2, but v2 will be tested in a later iteration
+
192 }
+
193
+
194 v1_idx = v2_idx;
+
195 v1 = v2;
+
196 }
+
197
+
198 // Check if this vertex/edge is voided
+
199 bool voided = IsVoided(r.mSubShapeID1, r.mShape2Face[best_v1_idx])
+
200 && (best_v1_idx == best_v2_idx || IsVoided(r.mSubShapeID1, r.mShape2Face[best_v2_idx]));
+
201
+
202 #ifdef JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
+
203 Color color = voided? Color::sRed : Color::sYellow;
+ + + +
207 DebugRenderer::sInstance->DrawMarker(RVec3(r.mShape2Face[best_v1_idx]), IsVoided(r.mSubShapeID1, r.mShape2Face[best_v1_idx])? Color::sRed : Color::sYellow, 0.1f);
+
208 DebugRenderer::sInstance->DrawMarker(RVec3(r.mShape2Face[best_v2_idx]), IsVoided(r.mSubShapeID1, r.mShape2Face[best_v2_idx])? Color::sRed : Color::sYellow, 0.1f);
+
209 #endif // JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
+
210
+
211 // No voided features, accept the contact
+
212 if (!voided)
+
213 Chain(r);
+
214
+
215 // Void the features of this face
+
216 VoidFeatures(r);
+
217 }
+
218
+
219 // All delayed results have been processed
+
220 mVoidedFeatures.clear();
+
221 mDelayedResults.clear();
+
222 }
+
+
223
+
+
225 static void sCollideShapeVsShape(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 = { })
+
226 {
+
227 JPH_ASSERT(inCollideShapeSettings.mCollectFacesMode == ECollectFacesMode::CollectFaces); // Won't work without collecting faces
+
228
+
229 InternalEdgeRemovingCollector wrapper(ioCollector);
+
230 CollisionDispatch::sCollideShapeVsShape(inShape1, inShape2, inScale1, inScale2, inCenterOfMassTransform1, inCenterOfMassTransform2, inSubShapeIDCreator1, inSubShapeIDCreator2, inCollideShapeSettings, wrapper, inShapeFilter);
+
231 wrapper.Flush();
+
232 }
+
+
233
+
234private:
+
235 // This algorithm tests a convex shape (shape 1) against a set of polygons (shape 2).
+
236 // This assumption doesn't hold if the shape we're testing is a compound shape, so we must also
+
237 // store the sub shape ID and ignore voided features that belong to another sub shape ID.
+
238 struct Voided
+
239 {
+
240 Float3 mFeature; // Feature that is voided (of shape 2). Read with Vec3::sLoadFloat3Unsafe so must not be the last member.
+
241 SubShapeID mSubShapeID; // Sub shape ID of the shape that is colliding against the feature (of shape 1).
+
242 };
+
243
+
244 CollideShapeCollector & mChainedCollector;
+ + +
247};
+
+
248
+ +
@ CollectFaces
mShape1/2Face is desired
+ +
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_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+ +
void QuickSort(Iterator inBegin, Iterator inEnd, Compare inCompare)
Implementation of the quick sort algorithm. The STL version implementation is not consistent across p...
Definition QuickSort.h:53
+
Vec3 RVec3
Definition Real.h:29
+
JPH_SUPPRESS_WARNINGS_STD_BEGIN JPH_SUPPRESS_WARNINGS_STD_END JPH_NAMESPACE_BEGIN String StringFormat(const char *inFMT,...)
Definition StringTools.cpp:15
+
Definition Body.h:35
+
ECollectFacesMode mCollectFacesMode
If colliding faces should be collected or only the collision point.
Definition CollideShape.h:80
+
Class that contains all information of two colliding shapes.
Definition CollideShape.h:19
+
SubShapeID mSubShapeID1
Sub shape ID that identifies the face on shape 1.
Definition CollideShape.h:63
+
Vec3 mContactPointOn2
Contact point on the surface of shape 2 (in world space or relative to base offset)....
Definition CollideShape.h:60
+
Vec3 mPenetrationAxis
Direction to move shape 2 out of collision along the shortest path (magnitude is meaningless,...
Definition CollideShape.h:61
+
float mPenetrationDepth
Penetration depth (move shape 2 by this distance to resolve the collision)
Definition CollideShape.h:62
+
Face mShape2Face
Colliding face on shape 2 (optional result, in world space or relative to base offset)
Definition CollideShape.h:67
+
Settings to be passed with a collision query.
Definition CollideShape.h:94
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
virtual void AddHit(const ResultType &inResult)=0
This function will be called for every hit found, it's up to the application to decide how to store t...
+
virtual void Reset()
If you want to reuse this collector, call Reset()
Definition CollisionCollector.h:62
+
float GetEarlyOutFraction() const
Get the current early out value.
Definition CollisionCollector.h:92
+
const TransformedShape * GetContext() const
Definition CollisionCollector.h:71
+
virtual void OnBody(const Body &inBody)
Definition CollisionCollector.h:67
+
void UpdateEarlyOutFraction(float inFraction)
Update the early out fraction (should be lower than before)
Definition CollisionCollector.h:80
+
void SetContext(const TransformedShape *inContext)
Set by the collision detection functions to the current TransformedShape that we're colliding against...
Definition CollisionCollector.h:70
+
static void sCollideShapeVsShape(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={ })
Definition CollisionDispatch.h:33
+
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
static const Color sGreen
Definition Color.h:57
+
static const Color sRed
Definition Color.h:55
+
static const Color sYellow
Definition Color.h:60
+
virtual void DrawText3D(RVec3Arg inPosition, const string_view &inString, ColorArg inColor=Color::sWhite, float inHeight=0.5f)=0
Draw text.
+
void DrawMarker(RVec3Arg inPosition, ColorArg inColor, float inSize)
Draw a marker on a position.
Definition DebugRenderer.cpp:172
+
static DebugRenderer * sInstance
Singleton instance.
Definition DebugRenderer.h:179
+
void DrawWirePolygon(RMat44Arg inTransform, const VERTEX_ARRAY &inVertices, ColorArg inColor, float inArrowSize=0.0f)
Draw a wireframe polygon.
Definition DebugRenderer.h:83
+
void DrawArrow(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor, float inSize)
Draw an arrow.
Definition DebugRenderer.cpp:184
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
Definition InternalEdgeRemovingCollector.h:21
+
virtual void OnBody(const Body &inBody) override
Definition InternalEdgeRemovingCollector.h:95
+
void Flush()
After all hits have been added, call this function to process the delayed results.
Definition InternalEdgeRemovingCollector.h:128
+
InternalEdgeRemovingCollector(CollideShapeCollector &inChainedCollector)
Constructor, configures a collector to be called with all the results that do not hit internal edges.
Definition InternalEdgeRemovingCollector.h:78
+
static void sCollideShapeVsShape(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={ })
Version of CollisionDispatch::sCollideShapeVsShape that removes internal edges.
Definition InternalEdgeRemovingCollector.h:225
+
virtual void Reset() override
If you want to reuse this collector, call Reset()
Definition InternalEdgeRemovingCollector.h:84
+
virtual void AddHit(const CollideShapeResult &inResult) override
Definition InternalEdgeRemovingCollector.h:102
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sIdentity()
Identity matrix.
Definition Mat44.inl:35
+
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:184
+
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
void push_back(const T &inElement)
Add element to the back of the array.
Definition StaticArray.h:61
+
void clear()
Destruct all elements and set length to zero.
Definition StaticArray.h:52
+
size_type size() const
Returns amount of elements in the array.
Definition StaticArray.h:89
+
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 Vec3.h:17
+
JPH_INLINE bool IsClose(Vec3Arg inV2, float inMaxDistSq=1.0e-12f) const
Test if two vectors are close.
Definition Vec3.inl:342
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec3.inl:677
+
JPH_INLINE Vec3 NormalizedOr(Vec3Arg inZeroValue) const
Normalize vector or return inZeroValue if the length of the vector is zero.
Definition Vec3.inl:716
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
+
+ + + + diff --git a/_island_builder_8cpp.html b/_island_builder_8cpp.html new file mode 100644 index 000000000..16a17ec33 --- /dev/null +++ b/_island_builder_8cpp.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Jolt/Physics/IslandBuilder.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IslandBuilder.cpp File Reference
+
+
+
+
+ + + + diff --git a/_island_builder_8h.html b/_island_builder_8h.html new file mode 100644 index 000000000..04d824f7b --- /dev/null +++ b/_island_builder_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Physics/IslandBuilder.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IslandBuilder.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  IslandBuilder
 Keeps track of connected bodies and builds islands for multithreaded velocity/position update. More...
 
+
+
+ + + + diff --git a/_island_builder_8h.js b/_island_builder_8h.js new file mode 100644 index 000000000..888d390c1 --- /dev/null +++ b/_island_builder_8h.js @@ -0,0 +1,4 @@ +var _island_builder_8h = +[ + [ "IslandBuilder", "class_island_builder.html", "class_island_builder" ] +]; \ No newline at end of file diff --git a/_island_builder_8h_source.html b/_island_builder_8h_source.html new file mode 100644 index 000000000..fa8a0a651 --- /dev/null +++ b/_island_builder_8h_source.html @@ -0,0 +1,257 @@ + + + + + + + +Jolt Physics: Jolt/Physics/IslandBuilder.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IslandBuilder.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
+ + +
9#include <Jolt/Core/Atomics.h>
+
10
+ +
12
+
13class TempAllocator;
+
14
+
15//#define JPH_VALIDATE_ISLAND_BUILDER
+
16
+
+ +
19{
+
20public:
+ +
23
+
25 void Init(uint32 inMaxActiveBodies);
+
26
+
28 void PrepareContactConstraints(uint32 inMaxContactConstraints, TempAllocator *inTempAllocator);
+
29
+
31 void PrepareNonContactConstraints(uint32 inNumConstraints, TempAllocator *inTempAllocator);
+
32
+
34 void LinkBodies(uint32 inFirst, uint32 inSecond);
+
35
+
37 void LinkConstraint(uint32 inConstraintIndex, uint32 inFirst, uint32 inSecond);
+
38
+
40 void LinkContact(uint32 inContactIndex, uint32 inFirst, uint32 inSecond);
+
41
+
43 void Finalize(const BodyID *inActiveBodies, uint32 inNumActiveBodies, uint32 inNumContacts, TempAllocator *inTempAllocator);
+
44
+
46 uint32 GetNumIslands() const { return mNumIslands; }
+
47
+
49 void GetBodiesInIsland(uint32 inIslandIndex, BodyID *&outBodiesBegin, BodyID *&outBodiesEnd) const;
+
50 bool GetConstraintsInIsland(uint32 inIslandIndex, uint32 *&outConstraintsBegin, uint32 *&outConstraintsEnd) const;
+
51 bool GetContactsInIsland(uint32 inIslandIndex, uint32 *&outContactsBegin, uint32 *&outContactsEnd) const;
+
52
+
54 void SetNumPositionSteps(uint32 inIslandIndex, uint inNumPositionSteps) { JPH_ASSERT(inIslandIndex < mNumIslands); JPH_ASSERT(inNumPositionSteps < 256); mNumPositionSteps[inIslandIndex] = uint8(inNumPositionSteps); }
+
55 uint GetNumPositionSteps(uint32 inIslandIndex) const { JPH_ASSERT(inIslandIndex < mNumIslands); return mNumPositionSteps[inIslandIndex]; }
+
56
+
58 void ResetIslands(TempAllocator *inTempAllocator);
+
59
+
60private:
+
62 uint32 GetLowestBodyIndex(uint32 inActiveBodyIndex) const;
+
63
+
64#ifdef JPH_VALIDATE_ISLAND_BUILDER
+
66 void ValidateIslands(uint32 inNumActiveBodies) const;
+
67#endif
+
68
+
69 // Helper functions to build various islands
+
70 void BuildBodyIslands(const BodyID *inActiveBodies, uint32 inNumActiveBodies, TempAllocator *inTempAllocator);
+
71 void BuildConstraintIslands(const uint32 *inConstraintToBody, uint32 inNumConstraints, uint32 *&outConstraints, uint32 *&outConstraintsEnd, TempAllocator *inTempAllocator) const;
+
72
+
74 void SortIslands(TempAllocator *inTempAllocator);
+
75
+
77 struct BodyLink
+
78 {
+ +
80
+
81 atomic<uint32> mLinkedTo;
+
82 uint32 mIslandIndex;
+
83 };
+
84
+
85 // Intermediate data
+
86 BodyLink * mBodyLinks = nullptr;
+
87 uint32 * mConstraintLinks = nullptr;
+
88 uint32 * mContactLinks = nullptr;
+
89
+
90 // Final data
+
91 BodyID * mBodyIslands = nullptr;
+
92 uint32 * mBodyIslandEnds = nullptr;
+
93
+
94 uint32 * mConstraintIslands = nullptr;
+
95 uint32 * mConstraintIslandEnds = nullptr;
+
96
+
97 uint32 * mContactIslands = nullptr;
+
98 uint32 * mContactIslandEnds = nullptr;
+
99
+
100 uint32 * mIslandsSorted = nullptr;
+
101
+
102 uint8 * mNumPositionSteps = nullptr;
+
103
+
104 // Counters
+
105 uint32 mMaxActiveBodies;
+
106 uint32 mNumActiveBodies = 0;
+
107 uint32 mNumConstraints = 0;
+
108 uint32 mMaxContacts = 0;
+
109 uint32 mNumContacts = 0;
+
110 uint32 mNumIslands = 0;
+
111
+
112#ifdef JPH_VALIDATE_ISLAND_BUILDER
+
114 struct LinkValidation
+
115 {
+
116 uint32 mFirst;
+
117 uint32 mSecond;
+
118 };
+
119
+
120 LinkValidation * mLinkValidation = nullptr;
+
121 atomic<uint32> mNumLinkValidation;
+
122#endif
+
123};
+
+
124
+ + + +
std::uint8_t uint8
Definition Core.h:453
+
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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
Definition IslandBuilder.h:19
+
void Init(uint32 inMaxActiveBodies)
Initialize the island builder with the maximum amount of bodies that could be active.
Definition IslandBuilder.cpp:32
+
uint GetNumPositionSteps(uint32 inIslandIndex) const
Definition IslandBuilder.h:55
+
void LinkConstraint(uint32 inConstraintIndex, uint32 inFirst, uint32 inSecond)
Link a constraint to a body by their index in the BodyManager::mActiveBodies.
Definition IslandBuilder.cpp:159
+
void LinkContact(uint32 inContactIndex, uint32 inFirst, uint32 inSecond)
Link a contact to a body by their index in the BodyManager::mActiveBodies.
Definition IslandBuilder.cpp:169
+
bool GetContactsInIsland(uint32 inIslandIndex, uint32 *&outContactsBegin, uint32 *&outContactsEnd) const
Definition IslandBuilder.cpp:415
+
void ResetIslands(TempAllocator *inTempAllocator)
After you're done calling the three functions above, call this function to free associated data.
Definition IslandBuilder.cpp:433
+
void SetNumPositionSteps(uint32 inIslandIndex, uint inNumPositionSteps)
The number of position iterations for each island.
Definition IslandBuilder.h:54
+
uint32 GetNumIslands() const
Get the amount of islands formed.
Definition IslandBuilder.h:46
+
~IslandBuilder()
Destructor.
Definition IslandBuilder.cpp:17
+
void PrepareContactConstraints(uint32 inMaxContactConstraints, TempAllocator *inTempAllocator)
Prepare for simulation step by allocating space for the contact constraints.
Definition IslandBuilder.cpp:43
+
bool GetConstraintsInIsland(uint32 inIslandIndex, uint32 *&outConstraintsBegin, uint32 *&outConstraintsEnd) const
Definition IslandBuilder.cpp:397
+
void PrepareNonContactConstraints(uint32 inNumConstraints, TempAllocator *inTempAllocator)
Prepare for simulation step by allocating space for the non-contact constraints.
Definition IslandBuilder.cpp:67
+
void GetBodiesInIsland(uint32 inIslandIndex, BodyID *&outBodiesBegin, BodyID *&outBodiesEnd) const
Get iterator for a particular island, return false if there are no constraints.
Definition IslandBuilder.cpp:389
+
void LinkBodies(uint32 inFirst, uint32 inSecond)
Link two bodies by their index in the BodyManager::mActiveBodies list to form islands.
Definition IslandBuilder.cpp:98
+
void Finalize(const BodyID *inActiveBodies, uint32 inNumActiveBodies, uint32 inNumContacts, TempAllocator *inTempAllocator)
Finalize the islands after all bodies have been Link()-ed.
Definition IslandBuilder.cpp:375
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition TempAllocator.h:16
+
+
+ + + + diff --git a/_issue_reporting_8cpp.html b/_issue_reporting_8cpp.html new file mode 100644 index 000000000..a3c221363 --- /dev/null +++ b/_issue_reporting_8cpp.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Jolt/Core/IssueReporting.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IssueReporting.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <fstream>
+
+ + + +

+Variables

TraceFunction Trace = DummyTrace
 
+

Variable Documentation

+ +

◆ Trace

+ +
+
+ + + + +
TraceFunction Trace = DummyTrace
+
+ +
+
+
+
+ + + + diff --git a/_issue_reporting_8cpp.js b/_issue_reporting_8cpp.js new file mode 100644 index 000000000..aff60ca65 --- /dev/null +++ b/_issue_reporting_8cpp.js @@ -0,0 +1,4 @@ +var _issue_reporting_8cpp = +[ + [ "Trace", "_issue_reporting_8cpp.html#a5b9da8153a0850dccf744d526486ebd2", null ] +]; \ No newline at end of file diff --git a/_issue_reporting_8h.html b/_issue_reporting_8h.html new file mode 100644 index 000000000..f3a3a720b --- /dev/null +++ b/_issue_reporting_8h.html @@ -0,0 +1,216 @@ + + + + + + + +Jolt Physics: Jolt/Core/IssueReporting.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IssueReporting.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Macros

#define JPH_ASSERT(...)   ((void)0)
 
#define JPH_IF_ENABLE_ASSERTS(...)
 
+ + + + +

+Typedefs

using TraceFunction = void(*)(const char *inFMT,...)
 Trace function, needs to be overridden by application. This should output a line of text to the log / TTY.
 
+ + + +

+Variables

JPH_EXPORT TraceFunction Trace
 
+

Macro Definition Documentation

+ +

◆ JPH_ASSERT

+ +
+
+ + + + + + + + +
#define JPH_ASSERT( ...)   ((void)0)
+
+ +
+
+ +

◆ JPH_IF_ENABLE_ASSERTS

+ +
+
+ + + + + + + + +
#define JPH_IF_ENABLE_ASSERTS( ...)
+
+ +
+
+

Typedef Documentation

+ +

◆ TraceFunction

+ +
+
+ + + + +
using TraceFunction = void (*)(const char *inFMT, ...)
+
+ +

Trace function, needs to be overridden by application. This should output a line of text to the log / TTY.

+ +
+
+

Variable Documentation

+ +

◆ Trace

+ +
+
+ + + + + +
+ + + + +
JPH_EXPORT TraceFunction Trace
+
+extern
+
+ +
+
+
+
+ + + + diff --git a/_issue_reporting_8h.js b/_issue_reporting_8h.js new file mode 100644 index 000000000..f13e15545 --- /dev/null +++ b/_issue_reporting_8h.js @@ -0,0 +1,7 @@ +var _issue_reporting_8h = +[ + [ "JPH_ASSERT", "_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd", null ], + [ "JPH_IF_ENABLE_ASSERTS", "_issue_reporting_8h.html#a9189784257d6995aa3ecbafbf8bc5bd5", null ], + [ "TraceFunction", "_issue_reporting_8h.html#a03ddf203a4df1ac894a3b193accc2729", null ], + [ "Trace", "_issue_reporting_8h.html#abbd5e9e508c6f8a64ef45df75343a404", null ] +]; \ No newline at end of file diff --git a/_issue_reporting_8h_source.html b/_issue_reporting_8h_source.html new file mode 100644 index 000000000..5c218280c --- /dev/null +++ b/_issue_reporting_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +Jolt Physics: Jolt/Core/IssueReporting.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IssueReporting.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
+
10using TraceFunction = void (*)(const char *inFMT, ...);
+ +
12
+
13// Always turn on asserts in Debug mode
+
14#if defined(JPH_DEBUG) && !defined(JPH_ENABLE_ASSERTS)
+
15 #define JPH_ENABLE_ASSERTS
+
16#endif
+
17
+
18#ifdef JPH_ENABLE_ASSERTS
+
20 using AssertFailedFunction = bool(*)(const char *inExpression, const char *inMessage, const char *inFile, uint inLine);
+
21 JPH_EXPORT extern AssertFailedFunction AssertFailed;
+
22
+
23 // Helper functions to pass message on to failed function
+
24 struct AssertLastParam { };
+
25 inline bool AssertFailedParamHelper(const char *inExpression, const char *inFile, uint inLine, AssertLastParam) { return AssertFailed(inExpression, nullptr, inFile, inLine); }
+
26 inline bool AssertFailedParamHelper(const char *inExpression, const char *inFile, uint inLine, const char *inMessage, AssertLastParam) { return AssertFailed(inExpression, inMessage, inFile, inLine); }
+
27
+
29 #define JPH_ASSERT(inExpression, ...) do { if (!(inExpression) && AssertFailedParamHelper(#inExpression, __FILE__, JPH::uint(__LINE__), ##__VA_ARGS__, JPH::AssertLastParam())) JPH_BREAKPOINT; } while (false)
+
30
+
31 #define JPH_IF_ENABLE_ASSERTS(...) __VA_ARGS__
+
32#else
+
33 #define JPH_ASSERT(...) ((void)0)
+
34
+
35 #define JPH_IF_ENABLE_ASSERTS(...)
+
36#endif // JPH_ENABLE_ASSERTS
+
37
+ +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
void(*)(const char *inFMT,...) TraceFunction
Trace function, needs to be overridden by application. This should output a line of text to the log /...
Definition IssueReporting.h:10
+
JPH_EXPORT TraceFunction Trace
Definition IssueReporting.cpp:18
+
+
+ + + + diff --git a/_job_system_8h.html b/_job_system_8h.html new file mode 100644 index 000000000..62c5db250 --- /dev/null +++ b/_job_system_8h.html @@ -0,0 +1,160 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystem.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
JobSystem.h File Reference
+
+
+
#include <Jolt/Core/Reference.h>
+#include <Jolt/Core/Color.h>
+#include <Jolt/Core/Profiler.h>
+#include <Jolt/Core/NonCopyable.h>
+#include <Jolt/Core/StaticArray.h>
+#include <Jolt/Core/Atomics.h>
+#include "JobSystem.inl"
+
+

Go to the source code of this file.

+ + + + + + + + + + + + +

+Classes

class  JobSystem
 
class  JobSystem::JobHandle
 
class  JobSystem::Barrier
 A job barrier keeps track of a number of jobs and allows waiting until they are all completed. More...
 
class  JobSystem::Job
 A class that contains information for a single unit of work. More...
 
+ + + +

+Typedefs

using JobHandle = JobSystem::JobHandle
 
+

Typedef Documentation

+ +

◆ JobHandle

+ +
+
+ + + + +
using JobHandle = JobSystem::JobHandle
+
+ +
+
+
+
+ + + + diff --git a/_job_system_8h.js b/_job_system_8h.js new file mode 100644 index 000000000..7080bf02c --- /dev/null +++ b/_job_system_8h.js @@ -0,0 +1,8 @@ +var _job_system_8h = +[ + [ "JobSystem", "class_job_system.html", "class_job_system" ], + [ "JobSystem::JobHandle", "class_job_system_1_1_job_handle.html", "class_job_system_1_1_job_handle" ], + [ "JobSystem::Barrier", "class_job_system_1_1_barrier.html", "class_job_system_1_1_barrier" ], + [ "JobSystem::Job", "class_job_system_1_1_job.html", "class_job_system_1_1_job" ], + [ "JobHandle", "_job_system_8h.html#a1417608577c1b4286e945e4d8b01aa53", null ] +]; \ No newline at end of file diff --git a/_job_system_8h_source.html b/_job_system_8h_source.html new file mode 100644 index 000000000..21a9c5333 --- /dev/null +++ b/_job_system_8h_source.html @@ -0,0 +1,402 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystem.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystem.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#include <Jolt/Core/Color.h>
+ + + +
12#include <Jolt/Core/Atomics.h>
+
13
+ +
15
+
+ +
70{
+
71protected:
+
72 class Job;
+
73
+
74public:
+ +
76
+
+
79 class JobHandle : private Ref<Job>
+
80 {
+
81 public:
+
83 inline JobHandle() = default;
+
84 inline JobHandle(const JobHandle &inHandle) = default;
+
85 inline JobHandle(JobHandle &&inHandle) noexcept : Ref<Job>(std::move(inHandle)) { }
+
86
+
88 inline explicit JobHandle(Job *inJob) : Ref<Job>(inJob) { }
+
89
+
91 inline JobHandle & operator = (const JobHandle &inHandle) = default;
+
92 inline JobHandle & operator = (JobHandle &&inHandle) noexcept = default;
+
93
+
95 inline bool IsValid() const { return GetPtr() != nullptr; }
+
96
+
98 inline bool IsDone() const { return GetPtr() != nullptr && GetPtr()->IsDone(); }
+
99
+
101 inline void AddDependency(int inCount = 1) const { GetPtr()->AddDependency(inCount); }
+
102
+
105 inline void RemoveDependency(int inCount = 1) const { GetPtr()->RemoveDependencyAndQueue(inCount); }
+
106
+
108 static inline void sRemoveDependencies(const JobHandle *inHandles, uint inNumHandles, int inCount = 1);
+
109
+
111 template <uint N>
+
+
112 static inline void sRemoveDependencies(StaticArray<JobHandle, N> &inHandles, int inCount = 1)
+
113 {
+
114 sRemoveDependencies(inHandles.data(), inHandles.size(), inCount);
+
115 }
+
+
116
+
118 using Ref<Job>::GetPtr;
+
119 };
+
+
120
+
+
122 class Barrier : public NonCopyable
+
123 {
+
124 public:
+ +
126
+
129 virtual void AddJob(const JobHandle &inJob) = 0;
+
130
+
133 virtual void AddJobs(const JobHandle *inHandles, uint inNumHandles) = 0;
+
134
+
135 protected:
+
137 friend class Job;
+
138
+
140 virtual ~Barrier() = default;
+
141
+
143 virtual void OnJobFinished(Job *inJob) = 0;
+
144 };
+
+
145
+
147 using JobFunction = function<void()>;
+
148
+
150 virtual ~JobSystem() = default;
+
151
+
153 virtual int GetMaxConcurrency() const = 0;
+
154
+
157 virtual JobHandle CreateJob(const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies = 0) = 0;
+
158
+
160 virtual Barrier * CreateBarrier() = 0;
+
161
+
163 virtual void DestroyBarrier(Barrier *inBarrier) = 0;
+
164
+
166 virtual void WaitForJobs(Barrier *inBarrier) = 0;
+
167
+
168protected:
+
+
170 class Job
+
171 {
+
172 public:
+ +
174
+
+
176 Job([[maybe_unused]] const char *inJobName, [[maybe_unused]] ColorArg inColor, JobSystem *inJobSystem, const JobFunction &inJobFunction, uint32 inNumDependencies) :
+
177 #if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
178 mJobName(inJobName),
+
179 mColor(inColor),
+
180 #endif // defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
181 mJobSystem(inJobSystem),
+
182 mJobFunction(inJobFunction),
+
183 mNumDependencies(inNumDependencies)
+
184 {
+
185 }
+
+
186
+
188 inline JobSystem * GetJobSystem() { return mJobSystem; }
+
189
+
+
191 inline void AddRef()
+
192 {
+
193 // Adding a reference can use relaxed memory ordering
+
194 mReferenceCount.fetch_add(1, memory_order_relaxed);
+
195 }
+
+
+
196 inline void Release()
+
197 {
+
198 // Releasing a reference must use release semantics...
+
199 if (mReferenceCount.fetch_sub(1, memory_order_release) == 1)
+
200 {
+
201 // ... so that we can use acquire to ensure that we see any updates from other threads that released a ref before freeing the job
+
202 atomic_thread_fence(memory_order_acquire);
+
203 mJobSystem->FreeJob(this);
+
204 }
+
205 }
+
+
206
+
208 inline void AddDependency(int inCount);
+
209
+
212 inline bool RemoveDependency(int inCount);
+
213
+
216 inline void RemoveDependencyAndQueue(int inCount);
+
217
+
+
219 inline bool SetBarrier(Barrier *inBarrier)
+
220 {
+
221 intptr_t barrier = 0;
+
222 if (mBarrier.compare_exchange_strong(barrier, reinterpret_cast<intptr_t>(inBarrier), memory_order_relaxed))
+
223 return true;
+
224 JPH_ASSERT(barrier == cBarrierDoneState, "A job can only belong to 1 barrier");
+
225 return false;
+
226 }
+
+
227
+
+ +
230 {
+
231 // Transition job to executing state
+
232 uint32 state = 0; // We can only start running with a dependency counter of 0
+
233 if (!mNumDependencies.compare_exchange_strong(state, cExecutingState, memory_order_acquire))
+
234 return state; // state is updated by compare_exchange_strong to the current value
+
235
+
236 // Run the job function
+
237 {
+
238 JPH_PROFILE(mJobName, mColor.GetUInt32());
+
239 mJobFunction();
+
240 }
+
241
+
242 // Fetch the barrier pointer and exchange it for the done state, so we're sure that no barrier gets set after we want to call the callback
+
243 intptr_t barrier = mBarrier.load(memory_order_relaxed);
+
244 for (;;)
+
245 {
+
246 if (mBarrier.compare_exchange_weak(barrier, cBarrierDoneState, memory_order_relaxed))
+
247 break;
+
248 }
+
249 JPH_ASSERT(barrier != cBarrierDoneState);
+
250
+
251 // Mark job as done
+
252 state = cExecutingState;
+
253 mNumDependencies.compare_exchange_strong(state, cDoneState, memory_order_relaxed);
+
254 JPH_ASSERT(state == cExecutingState);
+
255
+
256 // Notify the barrier after we've changed the job to the done state so that any thread reading the state after receiving the callback will see that the job has finished
+
257 if (barrier != 0)
+
258 reinterpret_cast<Barrier *>(barrier)->OnJobFinished(this);
+
259
+
260 return cDoneState;
+
261 }
+
+
262
+
264 inline bool CanBeExecuted() const { return mNumDependencies.load(memory_order_relaxed) == 0; }
+
265
+
267 inline bool IsDone() const { return mNumDependencies.load(memory_order_relaxed) == cDoneState; }
+
268
+
269 #if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
271 const char * GetName() const { return mJobName; }
+
272 #endif // defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
273
+
274 static constexpr uint32 cExecutingState = 0xe0e0e0e0;
+
275 static constexpr uint32 cDoneState = 0xd0d0d0d0;
+
276
+
277 static constexpr intptr_t cBarrierDoneState = ~intptr_t(0);
+
278
+
279private:
+
280 #if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
281 const char * mJobName;
+
282 Color mColor;
+
283 #endif // defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
284 JobSystem * mJobSystem;
+
285 atomic<intptr_t> mBarrier = 0;
+
286 JobFunction mJobFunction;
+
287 atomic<uint32> mReferenceCount = 0;
+
288 atomic<uint32> mNumDependencies;
+
289 };
+
+
290
+
292 virtual void QueueJob(Job *inJob) = 0;
+
293
+
295 virtual void QueueJobs(Job **inJobs, uint inNumJobs) = 0;
+
296
+
298 virtual void FreeJob(Job *inJob) = 0;
+
299};
+
+
300
+ +
302
+ +
304
+
305#include "JobSystem.inl"
+ + +
#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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ + +
#define JPH_PROFILE(...)
Definition Profiler.h:268
+ + +
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
A job barrier keeps track of a number of jobs and allows waiting until they are all completed.
Definition JobSystem.h:123
+
virtual ~Barrier()=default
Destructor, you should call JobSystem::DestroyBarrier instead of destructing this object directly.
+
virtual void OnJobFinished(Job *inJob)=0
Called by a Job to mark that it is finished.
+
virtual void AddJobs(const JobHandle *inHandles, uint inNumHandles)=0
+
virtual JPH_OVERRIDE_NEW_DELETE void AddJob(const JobHandle &inJob)=0
+
Definition JobSystem.h:80
+
JobHandle()=default
Constructor.
+
JobHandle(Job *inJob)
Constructor, only to be used by JobSystem.
Definition JobSystem.h:88
+
void RemoveDependency(int inCount=1) const
Definition JobSystem.h:105
+
JobHandle(JobHandle &&inHandle) noexcept
Definition JobSystem.h:85
+
bool IsDone() const
Check if this job has finished executing.
Definition JobSystem.h:98
+
static void sRemoveDependencies(StaticArray< JobHandle, N > &inHandles, int inCount=1)
Helper function to remove dependencies on a static array of job handles.
Definition JobSystem.h:112
+
bool IsValid() const
Check if this handle contains a job.
Definition JobSystem.h:95
+
JobHandle(const JobHandle &inHandle)=default
+
void AddDependency(int inCount=1) const
Add to the dependency counter.
Definition JobSystem.h:101
+
A class that contains information for a single unit of work.
Definition JobSystem.h:171
+
const char * GetName() const
Get the name of the job.
Definition JobSystem.h:271
+
void Release()
Definition JobSystem.h:196
+
JPH_OVERRIDE_NEW_DELETE Job(const char *inJobName, ColorArg inColor, JobSystem *inJobSystem, const JobFunction &inJobFunction, uint32 inNumDependencies)
Constructor.
Definition JobSystem.h:176
+
uint32 Execute()
Run the job function, returns the number of dependencies that this job still has or cExecutingState o...
Definition JobSystem.h:229
+
bool SetBarrier(Barrier *inBarrier)
Set the job barrier that this job belongs to and returns false if this was not possible because the j...
Definition JobSystem.h:219
+
JobSystem * GetJobSystem()
Get the jobs system to which this job belongs.
Definition JobSystem.h:188
+
bool CanBeExecuted() const
Test if the job can be executed.
Definition JobSystem.h:264
+
bool IsDone() const
Test if the job finished executing.
Definition JobSystem.h:267
+
void AddRef()
Add or release a reference to this object.
Definition JobSystem.h:191
+
Definition JobSystem.h:70
+
virtual JobHandle CreateJob(const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies=0)=0
+
virtual Barrier * CreateBarrier()=0
Create a new barrier, used to wait on jobs.
+
virtual void WaitForJobs(Barrier *inBarrier)=0
Wait for a set of jobs to be finished, note that only 1 thread can be waiting on a barrier at a time.
+
virtual void DestroyBarrier(Barrier *inBarrier)=0
Destroy a barrier when it is no longer used. The barrier should be empty at this point.
+
virtual void QueueJobs(Job **inJobs, uint inNumJobs)=0
Adds a number of jobs at once to the job queue.
+
virtual int GetMaxConcurrency() const =0
Get maximum number of concurrently executing jobs.
+
virtual void FreeJob(Job *inJob)=0
Frees a job.
+
virtual ~JobSystem()=default
Destructor.
+
function< void()> JobFunction
Main function of the job.
Definition JobSystem.h:147
+
virtual void QueueJob(Job *inJob)=0
Adds a job to the job queue.
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition Reference.h:101
+
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
const T * data() const
Definition StaticArray.h:138
+
size_type size() const
Returns amount of elements in the array.
Definition StaticArray.h:89
+
+
+ + + + diff --git a/_job_system_8inl.html b/_job_system_8inl.html new file mode 100644 index 000000000..b734622cd --- /dev/null +++ b/_job_system_8inl.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystem.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystem.inl File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_job_system_8inl_source.html b/_job_system_8inl_source.html new file mode 100644 index 000000000..ff5859d0d --- /dev/null +++ b/_job_system_8inl_source.html @@ -0,0 +1,202 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystem.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystem.inl
+
+
+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
+ +
6
+
+ +
8{
+
9 JPH_IF_ENABLE_ASSERTS(uint32 old_value =) mNumDependencies.fetch_add(inCount, memory_order_relaxed);
+
10 JPH_ASSERT(old_value > 0 && old_value != cExecutingState && old_value != cDoneState, "Job is queued, running or done, it is not allowed to add a dependency to a running job");
+
11}
+
+
12
+
+ +
14{
+
15 uint32 old_value = mNumDependencies.fetch_sub(inCount, memory_order_release);
+
16 JPH_ASSERT(old_value != cExecutingState && old_value != cDoneState, "Job is running or done, it is not allowed to add a dependency to a running job");
+
17 uint32 new_value = old_value - inCount;
+
18 JPH_ASSERT(old_value > new_value, "Test wrap around, this is a logic error");
+
19 return new_value == 0;
+
20}
+
+
21
+
+ +
23{
+
24 if (RemoveDependency(inCount))
+
25 mJobSystem->QueueJob(this);
+
26}
+
+
27
+
+
28void JobSystem::JobHandle::sRemoveDependencies(const JobHandle *inHandles, uint inNumHandles, int inCount)
+
29{
+ +
31
+
32 JPH_ASSERT(inNumHandles > 0);
+
33
+
34 // Get the job system, all jobs should be part of the same job system
+
35 JobSystem *job_system = inHandles->GetPtr()->GetJobSystem();
+
36
+
37 // Allocate a buffer to store the jobs that need to be queued
+
38 Job **jobs_to_queue = (Job **)JPH_STACK_ALLOC(inNumHandles * sizeof(Job *));
+
39 Job **next_job = jobs_to_queue;
+
40
+
41 // Remove the dependencies on all jobs
+
42 for (const JobHandle *handle = inHandles, *handle_end = inHandles + inNumHandles; handle < handle_end; ++handle)
+
43 {
+
44 Job *job = handle->GetPtr();
+
45 JPH_ASSERT(job->GetJobSystem() == job_system); // All jobs should belong to the same job system
+
46 if (job->RemoveDependency(inCount))
+
47 *(next_job++) = job;
+
48 }
+
49
+
50 // If any jobs need to be scheduled, schedule them as a batch
+
51 uint num_jobs_to_queue = uint(next_job - jobs_to_queue);
+
52 if (num_jobs_to_queue != 0)
+
53 job_system->QueueJobs(jobs_to_queue, num_jobs_to_queue);
+
54}
+
+
55
+ +
#define JPH_STACK_ALLOC(n)
Definition Core.h:505
+
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
+
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_PROFILE_FUNCTION()
Scope profiling for function.
Definition Profiler.h:271
+
Definition JobSystem.h:80
+
static void sRemoveDependencies(const JobHandle *inHandles, uint inNumHandles, int inCount=1)
Remove a dependency from a batch of jobs at once, this can be more efficient than removing them one b...
Definition JobSystem.inl:28
+
A class that contains information for a single unit of work.
Definition JobSystem.h:171
+
bool RemoveDependency(int inCount)
Definition JobSystem.inl:13
+
void AddDependency(int inCount)
Add to the dependency counter.
Definition JobSystem.inl:7
+
static constexpr uint32 cDoneState
Value of mNumDependencies when job is done executing.
Definition JobSystem.h:275
+
JobSystem * GetJobSystem()
Get the jobs system to which this job belongs.
Definition JobSystem.h:188
+
static constexpr uint32 cExecutingState
Value of mNumDependencies when job is executing.
Definition JobSystem.h:274
+
void RemoveDependencyAndQueue(int inCount)
Definition JobSystem.inl:22
+
Definition JobSystem.h:70
+
virtual void QueueJobs(Job **inJobs, uint inNumJobs)=0
Adds a number of jobs at once to the job queue.
+
+
+ + + + diff --git a/_job_system_single_threaded_8cpp.html b/_job_system_single_threaded_8cpp.html new file mode 100644 index 000000000..166f6fc6d --- /dev/null +++ b/_job_system_single_threaded_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystemSingleThreaded.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystemSingleThreaded.cpp File Reference
+
+
+
+
+ + + + diff --git a/_job_system_single_threaded_8h.html b/_job_system_single_threaded_8h.html new file mode 100644 index 000000000..6968ae60b --- /dev/null +++ b/_job_system_single_threaded_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystemSingleThreaded.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
JobSystemSingleThreaded.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  JobSystemSingleThreaded
 Implementation of a JobSystem without threads, runs jobs as soon as they are added. More...
 
class  JobSystemSingleThreaded::BarrierImpl
 
+
+
+ + + + diff --git a/_job_system_single_threaded_8h.js b/_job_system_single_threaded_8h.js new file mode 100644 index 000000000..f08b1e044 --- /dev/null +++ b/_job_system_single_threaded_8h.js @@ -0,0 +1,5 @@ +var _job_system_single_threaded_8h = +[ + [ "JobSystemSingleThreaded", "class_job_system_single_threaded.html", "class_job_system_single_threaded" ], + [ "JobSystemSingleThreaded::BarrierImpl", "class_job_system_single_threaded_1_1_barrier_impl.html", "class_job_system_single_threaded_1_1_barrier_impl" ] +]; \ No newline at end of file diff --git a/_job_system_single_threaded_8h_source.html b/_job_system_single_threaded_8h_source.html new file mode 100644 index 000000000..63d49c40a --- /dev/null +++ b/_job_system_single_threaded_8h_source.html @@ -0,0 +1,209 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystemSingleThreaded.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystemSingleThreaded.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+ +
17
+ +
20 explicit JobSystemSingleThreaded(uint inMaxJobs) { Init(inMaxJobs); }
+
21
+
24 void Init(uint inMaxJobs);
+
25
+
26 // See JobSystem
+
27 virtual int GetMaxConcurrency() const override { return 1; }
+
28 virtual JobHandle CreateJob(const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies = 0) override;
+
29 virtual Barrier * CreateBarrier() override;
+
30 virtual void DestroyBarrier(Barrier *inBarrier) override;
+
31 virtual void WaitForJobs(Barrier *inBarrier) override;
+
32
+
33protected:
+
34 // Dummy implementation of Barrier, all jobs are executed immediately
+
+
35 class BarrierImpl : public Barrier
+
36 {
+
37 public:
+ +
39
+
40 // See Barrier
+
41 virtual void AddJob(const JobHandle &inJob) override { /* We don't need to track jobs */ }
+
42 virtual void AddJobs(const JobHandle *inHandles, uint inNumHandles) override { /* We don't need to track jobs */ }
+
43
+
44 protected:
+
46 virtual void OnJobFinished(Job *inJob) override { /* We don't need to track jobs */ }
+
47 };
+
+
48
+
49 // See JobSystem
+
50 virtual void QueueJob(Job *inJob) override;
+
51 virtual void QueueJobs(Job **inJobs, uint inNumJobs) override;
+
52 virtual void FreeJob(Job *inJob) override;
+
53
+ +
56
+ + +
60};
+
+
61
+ +
#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
+ + +
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+ +
A job barrier keeps track of a number of jobs and allows waiting until they are all completed.
Definition JobSystem.h:123
+
Definition JobSystem.h:80
+
A class that contains information for a single unit of work.
Definition JobSystem.h:171
+
Definition JobSystem.h:70
+
virtual JobHandle CreateJob(const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies=0)=0
+
virtual Barrier * CreateBarrier()=0
Create a new barrier, used to wait on jobs.
+
virtual void WaitForJobs(Barrier *inBarrier)=0
Wait for a set of jobs to be finished, note that only 1 thread can be waiting on a barrier at a time.
+
virtual void DestroyBarrier(Barrier *inBarrier)=0
Destroy a barrier when it is no longer used. The barrier should be empty at this point.
+
virtual void QueueJobs(Job **inJobs, uint inNumJobs)=0
Adds a number of jobs at once to the job queue.
+
virtual void FreeJob(Job *inJob)=0
Frees a job.
+
virtual void QueueJob(Job *inJob)=0
Adds a job to the job queue.
+
Definition JobSystemSingleThreaded.h:36
+
virtual void AddJobs(const JobHandle *inHandles, uint inNumHandles) override
Definition JobSystemSingleThreaded.h:42
+
virtual JPH_OVERRIDE_NEW_DELETE void AddJob(const JobHandle &inJob) override
Definition JobSystemSingleThreaded.h:41
+
virtual void OnJobFinished(Job *inJob) override
Called by a Job to mark that it is finished.
Definition JobSystemSingleThreaded.h:46
+
Implementation of a JobSystem without threads, runs jobs as soon as they are added.
Definition JobSystemSingleThreaded.h:14
+
BarrierImpl mDummyBarrier
Shared barrier since the barrier implementation does nothing.
Definition JobSystemSingleThreaded.h:55
+
AvailableJobs mJobs
Definition JobSystemSingleThreaded.h:59
+
virtual int GetMaxConcurrency() const override
Get maximum number of concurrently executing jobs.
Definition JobSystemSingleThreaded.h:27
+
JobSystemSingleThreaded(uint inMaxJobs)
Definition JobSystemSingleThreaded.h:20
+
JPH_OVERRIDE_NEW_DELETE JobSystemSingleThreaded()=default
Constructor.
+
+
+ + + + diff --git a/_job_system_thread_pool_8cpp.html b/_job_system_thread_pool_8cpp.html new file mode 100644 index 000000000..0560d3029 --- /dev/null +++ b/_job_system_thread_pool_8cpp.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystemThreadPool.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystemThreadPool.cpp File Reference
+
+
+
+
+ + + + diff --git a/_job_system_thread_pool_8h.html b/_job_system_thread_pool_8h.html new file mode 100644 index 000000000..07fbc8847 --- /dev/null +++ b/_job_system_thread_pool_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystemThreadPool.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
JobSystemThreadPool.h File Reference
+
+
+
#include <Jolt/Core/JobSystemWithBarrier.h>
+#include <Jolt/Core/FixedSizeFreeList.h>
+#include <Jolt/Core/Semaphore.h>
+#include <thread>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  JobSystemThreadPool
 
+
+
+ + + + diff --git a/_job_system_thread_pool_8h.js b/_job_system_thread_pool_8h.js new file mode 100644 index 000000000..509724ff6 --- /dev/null +++ b/_job_system_thread_pool_8h.js @@ -0,0 +1,4 @@ +var _job_system_thread_pool_8h = +[ + [ "JobSystemThreadPool", "class_job_system_thread_pool.html", "class_job_system_thread_pool" ] +]; \ No newline at end of file diff --git a/_job_system_thread_pool_8h_source.html b/_job_system_thread_pool_8h_source.html new file mode 100644 index 000000000..e7d71e5e4 --- /dev/null +++ b/_job_system_thread_pool_8h_source.html @@ -0,0 +1,232 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystemThreadPool.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystemThreadPool.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
+ + + +
10
+ +
12#include <thread>
+ +
14
+ +
16
+
17// Things we're using from STL
+
18using std::thread;
+
19
+
+ +
26{
+
27public:
+ +
29
+
32 JobSystemThreadPool(uint inMaxJobs, uint inMaxBarriers, int inNumThreads = -1);
+ +
34 virtual ~JobSystemThreadPool() override;
+
35
+
37 using InitExitFunction = function<void(int)>;
+
38 void SetThreadInitFunction(const InitExitFunction &inInitFunction) { mThreadInitFunction = inInitFunction; }
+
39 void SetThreadExitFunction(const InitExitFunction &inExitFunction) { mThreadExitFunction = inExitFunction; }
+
40
+
45 void Init(uint inMaxJobs, uint inMaxBarriers, int inNumThreads = -1);
+
46
+
47 // See JobSystem
+
48 virtual int GetMaxConcurrency() const override { return int(mThreads.size()) + 1; }
+
49 virtual JobHandle CreateJob(const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies = 0) override;
+
50
+
52 void SetNumThreads(int inNumThreads) { StopThreads(); StartThreads(inNumThreads); }
+
53
+
54protected:
+
55 // See JobSystem
+
56 virtual void QueueJob(Job *inJob) override;
+
57 virtual void QueueJobs(Job **inJobs, uint inNumJobs) override;
+
58 virtual void FreeJob(Job *inJob) override;
+
59
+
60private:
+
62 void StartThreads(int inNumThreads);
+
63 void StopThreads();
+
64
+
66 void ThreadMain(int inThreadIndex);
+
67
+
69 inline uint GetHead() const;
+
70
+
72 inline void QueueJobInternal(Job *inJob);
+
73
+
75 InitExitFunction mThreadInitFunction = [](int) { };
+
76 InitExitFunction mThreadExitFunction = [](int) { };
+
77
+
79 using AvailableJobs = FixedSizeFreeList<Job>;
+
80 AvailableJobs mJobs;
+
81
+
83 Array<thread> mThreads;
+
84
+
85 // The job queue
+
86 static constexpr uint32 cQueueLength = 1024;
+
87 static_assert(IsPowerOf2(cQueueLength)); // We do bit operations and require queue length to be a power of 2
+
88 atomic<Job *> mQueue[cQueueLength];
+
89
+
90 // Head and tail of the queue, do this value modulo cQueueLength - 1 to get the element in the mQueue array
+
91 atomic<uint> * mHeads = nullptr;
+
92 alignas(JPH_CACHE_LINE_SIZE) atomic<uint> mTail = 0;
+
93
+
94 // Semaphore used to signal worker threads that there is new work
+
95 Semaphore mSemaphore;
+
96
+
98 atomic<bool> mQuit = false;
+
99};
+
+
100
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_CACHE_LINE_SIZE
Definition Core.h:492
+
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
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
+ + +
constexpr bool IsPowerOf2(T inV)
Check if inV is a power of 2.
Definition Math.h:73
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
Definition Array.h:36
+
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
Definition FixedSizeFreeList.h:18
+
Definition JobSystem.h:80
+
virtual JobHandle CreateJob(const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies=0)=0
+
virtual void QueueJobs(Job **inJobs, uint inNumJobs)=0
Adds a number of jobs at once to the job queue.
+
virtual void FreeJob(Job *inJob)=0
Frees a job.
+
virtual void QueueJob(Job *inJob)=0
Adds a job to the job queue.
+
Definition JobSystemThreadPool.h:26
+
void SetThreadExitFunction(const InitExitFunction &inExitFunction)
Definition JobSystemThreadPool.h:39
+
function< void(int)> InitExitFunction
Functions to call when a thread is initialized or exits, must be set before calling Init()
Definition JobSystemThreadPool.h:37
+
void SetNumThreads(int inNumThreads)
Change the max concurrency after initialization.
Definition JobSystemThreadPool.h:52
+
void SetThreadInitFunction(const InitExitFunction &inInitFunction)
Definition JobSystemThreadPool.h:38
+
JobSystemThreadPool()=default
+
virtual int GetMaxConcurrency() const override
Get maximum number of concurrently executing jobs.
Definition JobSystemThreadPool.h:48
+
Definition JobSystemWithBarrier.h:24
+
void Init(uint inMaxBarriers)
Definition JobSystemWithBarrier.cpp:167
+
Definition Semaphore.h:23
+
+
+ + + + diff --git a/_job_system_with_barrier_8cpp.html b/_job_system_with_barrier_8cpp.html new file mode 100644 index 000000000..14e53dc6a --- /dev/null +++ b/_job_system_with_barrier_8cpp.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystemWithBarrier.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystemWithBarrier.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <Jolt/Core/JobSystemWithBarrier.h>
+#include <Jolt/Core/Profiler.h>
+#include <thread>
+
+
+ + + + diff --git a/_job_system_with_barrier_8h.html b/_job_system_with_barrier_8h.html new file mode 100644 index 000000000..3b90c5f19 --- /dev/null +++ b/_job_system_with_barrier_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystemWithBarrier.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
JobSystemWithBarrier.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  JobSystemWithBarrier
 
+
+
+ + + + diff --git a/_job_system_with_barrier_8h.js b/_job_system_with_barrier_8h.js new file mode 100644 index 000000000..9406b8c3d --- /dev/null +++ b/_job_system_with_barrier_8h.js @@ -0,0 +1,4 @@ +var _job_system_with_barrier_8h = +[ + [ "JobSystemWithBarrier", "class_job_system_with_barrier.html", "class_job_system_with_barrier" ] +]; \ No newline at end of file diff --git a/_job_system_with_barrier_8h_source.html b/_job_system_with_barrier_8h_source.html new file mode 100644 index 000000000..129a44179 --- /dev/null +++ b/_job_system_with_barrier_8h_source.html @@ -0,0 +1,202 @@ + + + + + + + +Jolt Physics: Jolt/Core/JobSystemWithBarrier.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystemWithBarrier.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + +
9
+ +
11
+
+ +
24{
+
25public:
+ +
27
+
30 explicit JobSystemWithBarrier(uint inMaxBarriers);
+ +
32 virtual ~JobSystemWithBarrier() override;
+
33
+
36 void Init(uint inMaxBarriers);
+
37
+
38 // See JobSystem
+
39 virtual Barrier * CreateBarrier() override;
+
40 virtual void DestroyBarrier(Barrier *inBarrier) override;
+
41 virtual void WaitForJobs(Barrier *inBarrier) override;
+
42
+
43private:
+
44 class BarrierImpl : public Barrier
+
45 {
+
46 public:
+ +
48
+
50 BarrierImpl();
+
51 virtual ~BarrierImpl() override;
+
52
+
53 // See Barrier
+
54 virtual void AddJob(const JobHandle &inJob) override;
+
55 virtual void AddJobs(const JobHandle *inHandles, uint inNumHandles) override;
+
56
+
58 inline bool IsEmpty() const { return mJobReadIndex == mJobWriteIndex; }
+
59
+
61 void Wait();
+
62
+
64 atomic<bool> mInUse { false };
+
65
+
66 protected:
+
68 virtual void OnJobFinished(Job *inJob) override;
+
69
+
71 static constexpr uint cMaxJobs = 2048;
+
72 static_assert(IsPowerOf2(cMaxJobs)); // We do bit operations and require max jobs to be a power of 2
+
73 atomic<Job *> mJobs[cMaxJobs];
+
74 alignas(JPH_CACHE_LINE_SIZE) atomic<uint> mJobReadIndex { 0 };
+
75 alignas(JPH_CACHE_LINE_SIZE) atomic<uint> mJobWriteIndex { 0 };
+
76 atomic<int> mNumToAcquire { 0 };
+
77 Semaphore mSemaphore;
+
78 };
+
79
+
81 uint mMaxBarriers = 0;
+
82 BarrierImpl * mBarriers = nullptr;
+
83};
+
+
84
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_CACHE_LINE_SIZE
Definition Core.h:492
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
constexpr bool IsPowerOf2(T inV)
Check if inV is a power of 2.
Definition Math.h:73
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
A job barrier keeps track of a number of jobs and allows waiting until they are all completed.
Definition JobSystem.h:123
+
Definition JobSystem.h:80
+
Definition JobSystem.h:70
+
virtual Barrier * CreateBarrier()=0
Create a new barrier, used to wait on jobs.
+
virtual void WaitForJobs(Barrier *inBarrier)=0
Wait for a set of jobs to be finished, note that only 1 thread can be waiting on a barrier at a time.
+
virtual void DestroyBarrier(Barrier *inBarrier)=0
Destroy a barrier when it is no longer used. The barrier should be empty at this point.
+
Definition JobSystemWithBarrier.h:24
+
JobSystemWithBarrier()=default
+
Definition Semaphore.h:23
+
+
+ + + + diff --git a/_jolt_8h.html b/_jolt_8h.html new file mode 100644 index 000000000..de61d9714 --- /dev/null +++ b/_jolt_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Jolt.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Jolt.h File Reference
+
+
+
#include <Jolt/Core/Core.h>
+#include <Jolt/Core/ARMNeon.h>
+#include <Jolt/Core/Memory.h>
+#include <Jolt/Core/IssueReporting.h>
+#include <Jolt/Core/Array.h>
+#include <Jolt/Math/Math.h>
+#include <Jolt/Math/Vec4.h>
+#include <Jolt/Math/Mat44.h>
+#include <Jolt/Math/Real.h>
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/_jolt_8h_source.html b/_jolt_8h_source.html new file mode 100644 index 000000000..845a523fb --- /dev/null +++ b/_jolt_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Jolt/Jolt.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Jolt.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
+
7// Project includes
+
8#include <Jolt/Core/Core.h>
+
9#include <Jolt/Core/ARMNeon.h>
+
10#include <Jolt/Core/Memory.h>
+ +
12#include <Jolt/Core/Array.h>
+
13#include <Jolt/Math/Math.h>
+
14#include <Jolt/Math/Vec4.h>
+
15#include <Jolt/Math/Mat44.h>
+
16#include <Jolt/Math/Real.h>
+ + + + + + + + + +
+
+ + + + diff --git a/_large_island_splitter_8cpp.html b/_large_island_splitter_8cpp.html new file mode 100644 index 000000000..4680ea018 --- /dev/null +++ b/_large_island_splitter_8cpp.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Jolt/Physics/LargeIslandSplitter.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LargeIslandSplitter.cpp File Reference
+
+
+
+
+ + + + diff --git a/_large_island_splitter_8h.html b/_large_island_splitter_8h.html new file mode 100644 index 000000000..3de0d4d42 --- /dev/null +++ b/_large_island_splitter_8h.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Jolt/Physics/LargeIslandSplitter.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LargeIslandSplitter.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

class  LargeIslandSplitter
 
struct  LargeIslandSplitter::Split
 Describes a split of constraints and contacts. More...
 
class  LargeIslandSplitter::Splits
 Structure that describes the resulting splits from the large island splitter. More...
 
+
+
+ + + + diff --git a/_large_island_splitter_8h.js b/_large_island_splitter_8h.js new file mode 100644 index 000000000..ffb5f7208 --- /dev/null +++ b/_large_island_splitter_8h.js @@ -0,0 +1,6 @@ +var _large_island_splitter_8h = +[ + [ "LargeIslandSplitter", "class_large_island_splitter.html", "class_large_island_splitter" ], + [ "LargeIslandSplitter::Split", "struct_large_island_splitter_1_1_split.html", "struct_large_island_splitter_1_1_split" ], + [ "LargeIslandSplitter::Splits", "class_large_island_splitter_1_1_splits.html", "class_large_island_splitter_1_1_splits" ] +]; \ No newline at end of file diff --git a/_large_island_splitter_8h_source.html b/_large_island_splitter_8h_source.html new file mode 100644 index 000000000..8224bc817 --- /dev/null +++ b/_large_island_splitter_8h_source.html @@ -0,0 +1,379 @@ + + + + + + + +Jolt Physics: Jolt/Physics/LargeIslandSplitter.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LargeIslandSplitter.h
+
+
+Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
2// SPDX-License-Identifier: MIT
+
3
+
4#pragma once
+
5
+ +
7#include <Jolt/Core/Atomics.h>
+
8
+ +
10
+
11class Body;
+
12class BodyID;
+
13class IslandBuilder;
+
14class TempAllocator;
+
15class Constraint;
+
16class BodyManager;
+ + +
19
+
+ +
25{
+
26private:
+
27 using SplitMask = uint32;
+
28
+
29public:
+
30 static constexpr uint cNumSplits = sizeof(SplitMask) * 8;
+
31 static constexpr uint cNonParallelSplitIdx = cNumSplits - 1;
+
32 static constexpr uint cLargeIslandTreshold = 128;
+
33
+
+
35 enum class EStatus
+
36 {
+ + + +
40 };
+
+
41
+ +
55
+
+
57 class Splits
+
58 {
+
59 public:
+
+
60 inline uint GetNumSplits() const
+
61 {
+
62 return mNumSplits;
+
63 }
+
+
64
+
+
65 inline void GetConstraintsInSplit(uint inSplitIndex, uint32 &outConstraintsBegin, uint32 &outConstraintsEnd) const
+
66 {
+
67 const Split &split = mSplits[inSplitIndex];
+
68 outConstraintsBegin = split.mConstraintBufferBegin;
+
69 outConstraintsEnd = split.mConstraintBufferEnd;
+
70 }
+
+
71
+
+
72 inline void GetContactsInSplit(uint inSplitIndex, uint32 &outContactsBegin, uint32 &outContactsEnd) const
+
73 {
+
74 const Split &split = mSplits[inSplitIndex];
+
75 outContactsBegin = split.mContactBufferBegin;
+
76 outContactsEnd = split.mContactBufferEnd;
+
77 }
+
+
78
+
+
80 inline void ResetStatus()
+
81 {
+
82 mStatus.store(StatusItemMask, memory_order_relaxed);
+
83 }
+
+
84
+
+
86 inline void StartFirstBatch()
+
87 {
+
88 uint split_index = mNumSplits > 0? 0 : cNonParallelSplitIdx;
+
89 mStatus.store(uint64(split_index) << StatusSplitShift, memory_order_release);
+
90 }
+
+
91
+
93 EStatus FetchNextBatch(uint32 &outConstraintsBegin, uint32 &outConstraintsEnd, uint32 &outContactsBegin, uint32 &outContactsEnd, bool &outFirstIteration);
+
94
+
96 void MarkBatchProcessed(uint inNumProcessed, bool &outLastIteration, bool &outFinalBatch);
+
97
+
+ +
99 {
+
100 StatusIterationMask = 0xffff000000000000,
+ +
102 StatusSplitMask = 0x0000ffff00000000,
+ +
104 StatusItemMask = 0x00000000ffffffff,
+
105 };
+
+
106
+
+
107 static inline int sGetIteration(uint64 inStatus)
+
108 {
+
109 return int((inStatus & StatusIterationMask) >> StatusIterationShift);
+
110 }
+
+
111
+
+
112 static inline uint sGetSplit(uint64 inStatus)
+
113 {
+
114 return uint((inStatus & StatusSplitMask) >> StatusSplitShift);
+
115 }
+
+
116
+
+
117 static inline uint sGetItem(uint64 inStatus)
+
118 {
+
119 return uint(inStatus & StatusItemMask);
+
120 }
+
+
121
+ + + + + + +
128 atomic<uint64> mStatus;
+
129 atomic<uint> mItemsProcessed;
+
130 };
+
+
131
+
132public:
+ +
135
+
137 void Prepare(const IslandBuilder &inIslandBuilder, uint32 inNumActiveBodies, TempAllocator *inTempAllocator);
+
138
+
140 uint AssignSplit(const Body *inBody1, const Body *inBody2);
+
141
+
143 uint AssignToNonParallelSplit(const Body *inBody);
+
144
+
146 bool SplitIsland(uint32 inIslandIndex, const IslandBuilder &inIslandBuilder, const BodyManager &inBodyManager, const ContactConstraintManager &inContactManager, Constraint **inActiveConstraints, CalculateSolverSteps &ioStepsCalculator);
+
147
+
149 EStatus FetchNextBatch(uint &outSplitIslandIndex, uint32 *&outConstraintsBegin, uint32 *&outConstraintsEnd, uint32 *&outContactsBegin, uint32 *&outContactsEnd, bool &outFirstIteration);
+
150
+
152 void MarkBatchProcessed(uint inSplitIslandIndex, const uint32 *inConstraintsBegin, const uint32 *inConstraintsEnd, const uint32 *inContactsBegin, const uint32 *inContactsEnd, bool &outLastIteration, bool &outFinalBatch);
+
153
+
+
155 inline uint32 GetIslandIndex(uint inSplitIslandIndex) const
+
156 {
+
157 JPH_ASSERT(inSplitIslandIndex < mNumSplitIslands);
+
158 return mSplitIslands[inSplitIslandIndex].mIslandIndex;
+
159 }
+
+
160
+ +
163
+
165 void Reset(TempAllocator *inTempAllocator);
+
166
+
167private:
+
168 static constexpr uint cSplitCombineTreshold = 32;
+
169 static constexpr uint cBatchSize = 16;
+
170
+
171 uint32 mNumActiveBodies = 0;
+
172
+
173 SplitMask * mSplitMasks = nullptr;
+
174
+
175 uint32 * mContactAndConstraintsSplitIdx = nullptr;
+
176 uint32 * mContactAndConstraintIndices = nullptr;
+
177 uint mContactAndConstraintsSize = 0;
+
178 atomic<uint> mContactAndConstraintsNextFree { 0 };
+
179
+
180 uint mNumSplitIslands = 0;
+
181 Splits * mSplitIslands = nullptr;
+
182 atomic<uint> mNextSplitIsland = 0;
+
183};
+
+
184
+ + +
std::uint64_t uint64
Definition Core.h:456
+
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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Class that contains all bodies.
Definition BodyManager.h:44
+
Class used to calculate the total number of velocity and position steps.
Definition CalculateSolverSteps.h:13
+
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:103
+
Definition ContactConstraintManager.h:28
+
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
Definition IslandBuilder.h:19
+
Structure that describes the resulting splits from the large island splitter.
Definition LargeIslandSplitter.h:58
+
void ResetStatus()
Reset current status so that no work can be picked up from this split.
Definition LargeIslandSplitter.h:80
+
EIterationStatus
Definition LargeIslandSplitter.h:99
+
@ StatusSplitMask
Definition LargeIslandSplitter.h:102
+
@ StatusItemMask
Definition LargeIslandSplitter.h:104
+
@ StatusSplitShift
Definition LargeIslandSplitter.h:103
+
@ StatusIterationMask
Definition LargeIslandSplitter.h:100
+
@ StatusIterationShift
Definition LargeIslandSplitter.h:101
+
static uint sGetItem(uint64 inStatus)
Definition LargeIslandSplitter.h:117
+
atomic< uint > mItemsProcessed
Number of items that have been marked as processed.
Definition LargeIslandSplitter.h:129
+
int mNumPositionSteps
Number of position steps to do.
Definition LargeIslandSplitter.h:127
+
void StartFirstBatch()
Make the first batch available to other threads.
Definition LargeIslandSplitter.h:86
+
void MarkBatchProcessed(uint inNumProcessed, bool &outLastIteration, bool &outFinalBatch)
Mark a batch as processed.
Definition LargeIslandSplitter.cpp:120
+
int mNumIterations
Number of iterations to do.
Definition LargeIslandSplitter.h:125
+
void GetConstraintsInSplit(uint inSplitIndex, uint32 &outConstraintsBegin, uint32 &outConstraintsEnd) const
Definition LargeIslandSplitter.h:65
+
EStatus FetchNextBatch(uint32 &outConstraintsBegin, uint32 &outConstraintsEnd, uint32 &outContactsBegin, uint32 &outContactsEnd, bool &outFirstIteration)
Fetch the next batch to process.
Definition LargeIslandSplitter.cpp:19
+
uint32 mIslandIndex
Index of the island that was split.
Definition LargeIslandSplitter.h:123
+
static int sGetIteration(uint64 inStatus)
Definition LargeIslandSplitter.h:107
+
uint GetNumSplits() const
Definition LargeIslandSplitter.h:60
+
void GetContactsInSplit(uint inSplitIndex, uint32 &outContactsBegin, uint32 &outContactsEnd) const
Definition LargeIslandSplitter.h:72
+
Split mSplits[cNumSplits]
Data per split.
Definition LargeIslandSplitter.h:122
+
uint mNumSplits
Number of splits that were created (excluding the non-parallel split)
Definition LargeIslandSplitter.h:124
+
atomic< uint64 > mStatus
Status of the split, see EIterationStatus.
Definition LargeIslandSplitter.h:128
+
int mNumVelocitySteps
Number of velocity steps to do (cached for 2nd sub step)
Definition LargeIslandSplitter.h:126
+
static uint sGetSplit(uint64 inStatus)
Definition LargeIslandSplitter.h:112
+
Definition LargeIslandSplitter.h:25
+
bool SplitIsland(uint32 inIslandIndex, const IslandBuilder &inIslandBuilder, const BodyManager &inBodyManager, const ContactConstraintManager &inContactManager, Constraint **inActiveConstraints, CalculateSolverSteps &ioStepsCalculator)
Splits up an island, the created splits will be added to the list of batches and can be fetched with ...
Definition LargeIslandSplitter.cpp:283
+
uint AssignToNonParallelSplit(const Body *inBody)
Force a body to be in a non parallel split. Returns the split index.
Definition LargeIslandSplitter.cpp:271
+
void MarkBatchProcessed(uint inSplitIslandIndex, const uint32 *inConstraintsBegin, const uint32 *inConstraintsEnd, const uint32 *inContactsBegin, const uint32 *inContactsEnd, bool &outLastIteration, bool &outFinalBatch)
Mark a batch as processed.
Definition LargeIslandSplitter.cpp:517
+
EStatus FetchNextBatch(uint &outSplitIslandIndex, uint32 *&outConstraintsBegin, uint32 *&outConstraintsEnd, uint32 *&outContactsBegin, uint32 *&outContactsEnd, bool &outFirstIteration)
Fetch the next batch to process, returns a handle in outSplitIslandIndex that must be provided to Mar...
Definition LargeIslandSplitter.cpp:487
+
static constexpr uint cNumSplits
Definition LargeIslandSplitter.h:30
+
void Prepare(const IslandBuilder &inIslandBuilder, uint32 inNumActiveBodies, TempAllocator *inTempAllocator)
Prepare the island splitter by allocating memory.
Definition LargeIslandSplitter.cpp:183
+
~LargeIslandSplitter()
Destructor.
Definition LargeIslandSplitter.cpp:175
+
static constexpr uint cLargeIslandTreshold
If the number of constraints + contacts in an island is larger than this, we will try to split the is...
Definition LargeIslandSplitter.h:32
+
uint32 GetIslandIndex(uint inSplitIslandIndex) const
Get the island index of the island that was split for a particular split island index.
Definition LargeIslandSplitter.h:155
+
EStatus
Status code for retrieving a batch.
Definition LargeIslandSplitter.h:36
+
@ WaitingForBatch
Work is expected to be available later.
+
@ BatchRetrieved
Work is being returned.
+
@ AllBatchesDone
No further work is expected from this.
+
uint AssignSplit(const Body *inBody1, const Body *inBody2)
Assign two bodies to a split. Returns the split index.
Definition LargeIslandSplitter.cpp:232
+
void Reset(TempAllocator *inTempAllocator)
Reset the island splitter.
Definition LargeIslandSplitter.cpp:538
+
void PrepareForSolvePositions()
Prepare the island splitter for iterating over the split islands again for position solving....
Definition LargeIslandSplitter.cpp:526
+
static constexpr uint cNonParallelSplitIdx
Definition LargeIslandSplitter.h:31
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition TempAllocator.h:16
+
Describes a split of constraints and contacts.
Definition LargeIslandSplitter.h:44
+
uint32 mConstraintBufferBegin
Begin of the constraint buffer (offset relative to mContactAndConstraintIndices)
Definition LargeIslandSplitter.h:52
+
uint GetNumItems() const
Definition LargeIslandSplitter.h:47
+
uint32 mContactBufferEnd
End of the contact buffer.
Definition LargeIslandSplitter.h:50
+
uint GetNumConstraints() const
Definition LargeIslandSplitter.h:46
+
uint GetNumContacts() const
Definition LargeIslandSplitter.h:45
+
uint32 mContactBufferBegin
Begin of the contact buffer (offset relative to mContactAndConstraintIndices)
Definition LargeIslandSplitter.h:49
+
uint32 mConstraintBufferEnd
End of the constraint buffer.
Definition LargeIslandSplitter.h:53
+
+
+ + + + diff --git a/_linear_curve_8cpp.html b/_linear_curve_8cpp.html new file mode 100644 index 000000000..508da65ed --- /dev/null +++ b/_linear_curve_8cpp.html @@ -0,0 +1,166 @@ + + + + + + + +Jolt Physics: Jolt/Core/LinearCurve.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LinearCurve.cpp File Reference
+
+
+ + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (LinearCurve::Point)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (LinearCurve)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [1/2]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (LinearCurve )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [2/2]

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (LinearCurve::Point )
+
+ +
+
+
+
+ + + + diff --git a/_linear_curve_8cpp.js b/_linear_curve_8cpp.js new file mode 100644 index 000000000..5359dbdab --- /dev/null +++ b/_linear_curve_8cpp.js @@ -0,0 +1,5 @@ +var _linear_curve_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_linear_curve_8cpp.html#a754b0eff0f4aa2d91c8fb20b90eea023", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_linear_curve_8cpp.html#a92de0d7f032f46f2861e2c288235e149", null ] +]; \ No newline at end of file diff --git a/_linear_curve_8h.html b/_linear_curve_8h.html new file mode 100644 index 000000000..60b19c19e --- /dev/null +++ b/_linear_curve_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Core/LinearCurve.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LinearCurve.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  LinearCurve
 
class  LinearCurve::Point
 A point on the curve. More...
 
+
+
+ + + + diff --git a/_linear_curve_8h.js b/_linear_curve_8h.js new file mode 100644 index 000000000..90ab4913b --- /dev/null +++ b/_linear_curve_8h.js @@ -0,0 +1,5 @@ +var _linear_curve_8h = +[ + [ "LinearCurve", "class_linear_curve.html", "class_linear_curve" ], + [ "LinearCurve::Point", "class_linear_curve_1_1_point.html", "class_linear_curve_1_1_point" ] +]; \ No newline at end of file diff --git a/_linear_curve_8h_source.html b/_linear_curve_8h_source.html new file mode 100644 index 000000000..4cfab7e4f --- /dev/null +++ b/_linear_curve_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + +Jolt Physics: Jolt/Core/LinearCurve.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LinearCurve.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
+ + +
9
+ +
11
+
12class StreamOut;
+
13class StreamIn;
+
14
+
15// A set of points (x, y) that form a linear curve
+
+ +
17{
+
18public:
+ +
20
+
21
+
+
22 class Point
+
23 {
+
24 public:
+ +
26
+
27 float mX = 0.0f;
+
28 float mY = 0.0f;
+
29 };
+
+
30
+
32 void Clear() { mPoints.clear(); }
+
33
+
35 void Reserve(uint inNumPoints) { mPoints.reserve(inNumPoints); }
+
36
+
40 void AddPoint(float inX, float inY) { mPoints.push_back({ inX, inY }); }
+
41
+
43 void Sort() { QuickSort(mPoints.begin(), mPoints.end(), [](const Point &inLHS, const Point &inRHS) { return inLHS.mX < inRHS.mX; }); }
+
44
+
46 float GetMinX() const { return mPoints.empty()? 0.0f : mPoints.front().mX; }
+
47
+
49 float GetMaxX() const { return mPoints.empty()? 0.0f : mPoints.back().mX; }
+
50
+
54 float GetValue(float inX) const;
+
55
+
57 void SaveBinaryState(StreamOut &inStream) const;
+
58
+
60 void RestoreBinaryState(StreamIn &inStream);
+
61
+ + +
65};
+
+
66
+ +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
void QuickSort(Iterator inBegin, Iterator inEnd, Compare inCompare)
Implementation of the quick sort algorithm. The STL version implementation is not consistent across p...
Definition QuickSort.h:53
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ +
A point on the curve.
Definition LinearCurve.h:23
+
Definition LinearCurve.h:17
+
Points mPoints
Definition LinearCurve.h:64
+
void Reserve(uint inNumPoints)
Reserve memory for inNumPoints points.
Definition LinearCurve.h:35
+
void AddPoint(float inX, float inY)
Definition LinearCurve.h:40
+
float GetMaxX() const
Get the highest X value.
Definition LinearCurve.h:49
+
float GetMinX() const
Get the lowest X value.
Definition LinearCurve.h:46
+
void Sort()
Sort the points on X ascending.
Definition LinearCurve.h:43
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
+
+ + + + diff --git a/_lock_free_hash_map_8h.html b/_lock_free_hash_map_8h.html new file mode 100644 index 000000000..44af62bf6 --- /dev/null +++ b/_lock_free_hash_map_8h.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Jolt/Core/LockFreeHashMap.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LockFreeHashMap.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + +

+Classes

class  LFHMAllocator
 Allocator for a lock free hash map. More...
 
class  LFHMAllocatorContext
 
class  LockFreeHashMap< Key, Value >
 
class  LockFreeHashMap< Key, Value >::KeyValue
 A key / value pair that is inserted in the map. More...
 
struct  LockFreeHashMap< Key, Value >::Iterator
 Non-const iterator. More...
 
+
+
+ + + + diff --git a/_lock_free_hash_map_8h.js b/_lock_free_hash_map_8h.js new file mode 100644 index 000000000..cee6e8a4a --- /dev/null +++ b/_lock_free_hash_map_8h.js @@ -0,0 +1,8 @@ +var _lock_free_hash_map_8h = +[ + [ "LFHMAllocator", "class_l_f_h_m_allocator.html", "class_l_f_h_m_allocator" ], + [ "LFHMAllocatorContext", "class_l_f_h_m_allocator_context.html", "class_l_f_h_m_allocator_context" ], + [ "LockFreeHashMap< Key, Value >", "class_lock_free_hash_map.html", "class_lock_free_hash_map" ], + [ "LockFreeHashMap< Key, Value >::KeyValue", "class_lock_free_hash_map_1_1_key_value.html", "class_lock_free_hash_map_1_1_key_value" ], + [ "LockFreeHashMap< Key, Value >::Iterator", "struct_lock_free_hash_map_1_1_iterator.html", "struct_lock_free_hash_map_1_1_iterator" ] +]; \ No newline at end of file diff --git a/_lock_free_hash_map_8h_source.html b/_lock_free_hash_map_8h_source.html new file mode 100644 index 000000000..f69f4656d --- /dev/null +++ b/_lock_free_hash_map_8h_source.html @@ -0,0 +1,311 @@ + + + + + + + +Jolt Physics: Jolt/Core/LockFreeHashMap.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LockFreeHashMap.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#include <Jolt/Core/Atomics.h>
+
9
+ +
11
+
+ +
14{
+
15public:
+
17 inline ~LFHMAllocator();
+
18
+
21 inline void Init(uint inObjectStoreSizeBytes);
+
22
+
24 inline void Clear();
+
25
+
30 inline void Allocate(uint32 inBlockSize, uint32 &ioBegin, uint32 &ioEnd);
+
31
+
33 template <class T>
+
34 inline uint32 ToOffset(const T *inData) const;
+
35
+
37 template <class T>
+
38 inline T * FromOffset(uint32 inOffset) const;
+
39
+
40private:
+
41 uint8 * mObjectStore = nullptr;
+
42 uint32 mObjectStoreSizeBytes = 0;
+
43 atomic<uint32> mWriteOffset { 0 };
+
44};
+
+
45
+
+ +
49{
+
50public:
+
52 inline LFHMAllocatorContext(LFHMAllocator &inAllocator, uint32 inBlockSize);
+
53
+
59 inline bool Allocate(uint32 inSize, uint32 inAlignment, uint32 &outWriteOffset);
+
60
+
61private:
+
62 LFHMAllocator & mAllocator;
+
63 uint32 mBlockSize;
+
64 uint32 mBegin = 0;
+
65 uint32 mEnd = 0;
+
66};
+
+
67
+
70template <class Key, class Value>
+
+ +
72{
+
73public:
+ +
75
+
77 explicit LockFreeHashMap(LFHMAllocator &inAllocator) : mAllocator(inAllocator) { }
+ +
79
+
82 void Init(uint32 inMaxBuckets);
+
83
+
86 void Clear();
+
87
+
89 uint32 GetNumBuckets() const { return mNumBuckets; }
+
90
+
92 uint32 GetMaxBuckets() const { return mMaxBuckets; }
+
93
+
96 void SetNumBuckets(uint32 inNumBuckets);
+
97
+
+ +
100 {
+
101 public:
+
102 const Key & GetKey() const { return mKey; }
+
103 Value & GetValue() { return mValue; }
+
104 const Value & GetValue() const { return mValue; }
+
105
+
106 private:
+
107 template <class K, class V> friend class LockFreeHashMap;
+
108
+
109 Key mKey;
+
110 uint32 mNextOffset;
+
111 Value mValue;
+
112 };
+
+
113
+
116 template <class... Params>
+
117 inline KeyValue * Create(LFHMAllocatorContext &ioContext, const Key &inKey, uint64 inKeyHash, int inExtraBytes, Params &&... inConstructorParams);
+
118
+
120 inline const KeyValue * Find(const Key &inKey, uint64 inKeyHash) const;
+
121
+
123 const static uint32 cInvalidHandle = uint32(-1);
+
124
+
126 inline uint32 ToHandle(const KeyValue *inKeyValue) const;
+
127
+
129 inline const KeyValue * FromHandle(uint32 inHandle) const;
+
130
+
131#ifdef JPH_ENABLE_ASSERTS
+
134 inline uint32 GetNumKeyValues() const { return mNumKeyValues; }
+
135#endif // JPH_ENABLE_ASSERTS
+
136
+
138 inline void GetAllKeyValues(Array<const KeyValue *> &outAll) const;
+
139
+
+
141 struct Iterator
+
142 {
+
144 bool operator == (const Iterator &inRHS) const { return mMap == inRHS.mMap && mBucket == inRHS.mBucket && mOffset == inRHS.mOffset; }
+
145 bool operator != (const Iterator &inRHS) const { return !(*this == inRHS); }
+
146
+ +
149
+ +
152
+ + + +
156 };
+
+
157
+
160 Iterator begin();
+
161 Iterator end();
+
162
+
163#ifdef JPH_DEBUG
+
165 void TraceStats() const;
+
166#endif
+
167
+
168private:
+
169 LFHMAllocator & mAllocator;
+
170
+
171#ifdef JPH_ENABLE_ASSERTS
+
172 atomic<uint32> mNumKeyValues = 0;
+
173#endif // JPH_ENABLE_ASSERTS
+
174
+
175 atomic<uint32> * mBuckets = nullptr;
+
176 uint32 mNumBuckets = 0;
+
177 uint32 mMaxBuckets = 0;
+
178};
+
+
179
+ +
181
+
182#include "LockFreeHashMap.inl"
+ +
std::uint8_t uint8
Definition Core.h:453
+
std::uint64_t uint64
Definition Core.h:456
+
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
+ +
AllocateFunction Allocate
Definition Memory.cpp:68
+ +
Definition Array.h:36
+
Definition LockFreeHashMap.h:49
+
Allocator for a lock free hash map.
Definition LockFreeHashMap.h:14
+
uint32 ToOffset(const T *inData) const
Convert a pointer to an offset.
Definition LockFreeHashMap.inl:62
+
~LFHMAllocator()
Destructor.
Definition LockFreeHashMap.inl:13
+
void Init(uint inObjectStoreSizeBytes)
Definition LockFreeHashMap.inl:18
+
T * FromOffset(uint32 inOffset) const
Convert an offset to a pointer.
Definition LockFreeHashMap.inl:70
+
void Clear()
Clear all allocations.
Definition LockFreeHashMap.inl:26
+
A key / value pair that is inserted in the map.
Definition LockFreeHashMap.h:100
+
const Key & GetKey() const
Definition LockFreeHashMap.h:102
+
Value & GetValue()
Definition LockFreeHashMap.h:103
+
const Value & GetValue() const
Definition LockFreeHashMap.h:104
+
Definition LockFreeHashMap.h:72
+
const KeyValue * FromHandle(uint32 inHandle) const
Convert uint32 handle back to key and value.
Definition LockFreeHashMap.inl:238
+
Iterator begin()
Definition LockFreeHashMap.inl:259
+
void GetAllKeyValues(Array< const KeyValue * > &outAll) const
Get all key/value pairs.
Definition LockFreeHashMap.inl:244
+
void Init(uint32 inMaxBuckets)
Definition LockFreeHashMap.inl:119
+
void SetNumBuckets(uint32 inNumBuckets)
Definition LockFreeHashMap.inl:160
+
uint32 GetMaxBuckets() const
Get the maximum amount of buckets that this map supports.
Definition LockFreeHashMap.h:92
+
LockFreeHashMap(LFHMAllocator &inAllocator)
Destructor.
Definition LockFreeHashMap.h:77
+
KeyValue * Create(LFHMAllocatorContext &ioContext, const Key &inKey, uint64 inKeyHash, int inExtraBytes, Params &&... inConstructorParams)
Definition LockFreeHashMap.inl:171
+
~LockFreeHashMap()
Definition LockFreeHashMap.inl:133
+
uint32 GetNumBuckets() const
Get the current amount of buckets that the map is using.
Definition LockFreeHashMap.h:89
+
const KeyValue * Find(const Key &inKey, uint64 inKeyHash) const
Find an element, returns null if not found.
Definition LockFreeHashMap.inl:214
+
uint32 ToHandle(const KeyValue *inKeyValue) const
Get convert key value pair to uint32 handle.
Definition LockFreeHashMap.inl:232
+
Iterator end()
Definition LockFreeHashMap.inl:272
+
static const uint32 cInvalidHandle
Value of an invalid handle.
Definition LockFreeHashMap.h:123
+
void Clear()
Definition LockFreeHashMap.inl:139
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Non-const iterator.
Definition LockFreeHashMap.h:142
+
bool operator==(const Iterator &inRHS) const
Comparison.
Definition LockFreeHashMap.h:144
+
uint32 mOffset
Definition LockFreeHashMap.h:155
+
Iterator & operator++()
Next item.
Definition LockFreeHashMap.inl:286
+
uint32 mBucket
Definition LockFreeHashMap.h:154
+
bool operator!=(const Iterator &inRHS) const
Definition LockFreeHashMap.h:145
+
MapType * mMap
Definition LockFreeHashMap.h:153
+
KeyValue & operator*()
Convert to key value pair.
Definition LockFreeHashMap.inl:278
+
+
+ + + + diff --git a/_lock_free_hash_map_8inl.html b/_lock_free_hash_map_8inl.html new file mode 100644 index 000000000..ce8089546 --- /dev/null +++ b/_lock_free_hash_map_8inl.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Core/LockFreeHashMap.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LockFreeHashMap.inl File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_lock_free_hash_map_8inl_source.html b/_lock_free_hash_map_8inl_source.html new file mode 100644 index 000000000..99fd28f23 --- /dev/null +++ b/_lock_free_hash_map_8inl_source.html @@ -0,0 +1,574 @@ + + + + + + + +Jolt Physics: Jolt/Core/LockFreeHashMap.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LockFreeHashMap.inl
+
+
+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// LFHMAllocator
+
12
+
+ +
14{
+
15 AlignedFree(mObjectStore);
+
16}
+
+
17
+
+
18inline void LFHMAllocator::Init(uint inObjectStoreSizeBytes)
+
19{
+
20 JPH_ASSERT(mObjectStore == nullptr);
+
21
+
22 mObjectStoreSizeBytes = inObjectStoreSizeBytes;
+
23 mObjectStore = reinterpret_cast<uint8 *>(JPH::AlignedAllocate(inObjectStoreSizeBytes, 16));
+
24}
+
+
25
+
+ +
27{
+
28 mWriteOffset = 0;
+
29}
+
+
30
+
+
31inline void LFHMAllocator::Allocate(uint32 inBlockSize, uint32 &ioBegin, uint32 &ioEnd)
+
32{
+
33 // If we're already beyond the end of our buffer then don't do an atomic add.
+
34 // It's possible that many keys are inserted after the allocator is full, making it possible
+
35 // for mWriteOffset (uint32) to wrap around to zero. When this happens, there will be a memory corruption.
+
36 // This way, we will be able to progress the write offset beyond the size of the buffer
+
37 // worst case by max <CPU count> * inBlockSize.
+
38 if (mWriteOffset.load(memory_order_relaxed) >= mObjectStoreSizeBytes)
+
39 return;
+
40
+
41 // Atomically fetch a block from the pool
+
42 uint32 begin = mWriteOffset.fetch_add(inBlockSize, memory_order_relaxed);
+
43 uint32 end = min(begin + inBlockSize, mObjectStoreSizeBytes);
+
44
+
45 if (ioEnd == begin)
+
46 {
+
47 // Block is allocated straight after our previous block
+
48 begin = ioBegin;
+
49 }
+
50 else
+
51 {
+
+
52 // Block is a new block
+
53 begin = min(begin, mObjectStoreSizeBytes);
+
54 }
+
55
+
56 // Store the begin and end of the resulting block
+
57 ioBegin = begin;
+
58 ioEnd = end;
+
59}
+
60
+
61template <class T>
+
+
62inline uint32 LFHMAllocator::ToOffset(const T *inData) const
+
63{
+
64 const uint8 *data = reinterpret_cast<const uint8 *>(inData);
+
65 JPH_ASSERT(data >= mObjectStore && data < mObjectStore + mObjectStoreSizeBytes);
+
66 return uint32(data - mObjectStore);
+
67}
+
+
68
+
69template <class T>
+
+
70inline T *LFHMAllocator::FromOffset(uint32 inOffset) const
+
71{
+
72 JPH_ASSERT(inOffset < mObjectStoreSizeBytes);
+
73 return reinterpret_cast<T *>(mObjectStore + inOffset);
+
74}
+
+
75
+
77// LFHMAllocatorContext
+
79
+
+ +
81 mAllocator(inAllocator),
+
+
82 mBlockSize(inBlockSize)
+
83{
+
84}
+
85
+
+
86inline bool LFHMAllocatorContext::Allocate(uint32 inSize, uint32 inAlignment, uint32 &outWriteOffset)
+
87{
+
88 // Calculate needed bytes for alignment
+
89 JPH_ASSERT(IsPowerOf2(inAlignment));
+
90 uint32 alignment_mask = inAlignment - 1;
+
91 uint32 alignment = (inAlignment - (mBegin & alignment_mask)) & alignment_mask;
+
92
+
93 // Check if we have space
+
94 if (mEnd - mBegin < inSize + alignment)
+
95 {
+
+
96 // Allocate a new block
+
97 mAllocator.Allocate(mBlockSize, mBegin, mEnd);
+
98
+
99 // Update alignment
+
100 alignment = (inAlignment - (mBegin & alignment_mask)) & alignment_mask;
+
101
+
102 // Check if we have space again
+
103 if (mEnd - mBegin < inSize + alignment)
+
104 return false;
+
105 }
+
106
+
107 // Make the allocation
+
108 mBegin += alignment;
+
109 outWriteOffset = mBegin;
+
110 mBegin += inSize;
+
111 return true;
+
112}
+
113
+
115// LockFreeHashMap
+
+ +
118template <class Key, class Value>
+
+ +
+ +
121 JPH_ASSERT(inMaxBuckets >= 4 && IsPowerOf2(inMaxBuckets));
+
122 JPH_ASSERT(mBuckets == nullptr);
+
123
+
124 mNumBuckets = inMaxBuckets;
+
125 mMaxBuckets = inMaxBuckets;
+
+ +
127 mBuckets = reinterpret_cast<atomic<uint32> *>(AlignedAllocate(inMaxBuckets * sizeof(atomic<uint32>), 16));
+
128
+
+
129 Clear();
+
130}
+
131
+
132template <class Key, class Value>
+ +
137
+
+
138template <class Key, class Value>
+
+ +
140{
+
141#ifdef JPH_ENABLE_ASSERTS
+
142 // Reset number of key value pairs
+
143 mNumKeyValues = 0;
+
144#endif // JPH_ENABLE_ASSERTS
+
145
+
146 // Reset buckets 4 at a time
+
147 static_assert(sizeof(atomic<uint32>) == sizeof(uint32));
+
+
148 UVec4 invalid_handle = UVec4::sReplicate(cInvalidHandle);
+
149 uint32 *start = reinterpret_cast<uint32 *>(mBuckets);
+
150 const uint32 *end = start + mNumBuckets;
+
+ +
152 while (start < end)
+
153 {
+
154 invalid_handle.StoreInt4Aligned(start);
+
155 start += 4;
+
156 }
+
157}
+
158
+
159template <class Key, class Value>
+
+ +
+ +
162 JPH_ASSERT(mNumKeyValues == 0);
+
163 JPH_ASSERT(inNumBuckets <= mMaxBuckets);
+
164 JPH_ASSERT(inNumBuckets >= 4 && IsPowerOf2(inNumBuckets));
+
165
+
166 mNumBuckets = inNumBuckets;
+
167}
+
168
+
169template <class Key, class Value>
+
170template <class... Params>
+
+
171inline typename LockFreeHashMap<Key, Value>::KeyValue *LockFreeHashMap<Key, Value>::Create(LFHMAllocatorContext &ioContext, const Key &inKey, uint64 inKeyHash, int inExtraBytes, Params &&... inConstructorParams)
+
172{
+
173 // This is not a multi map, test the key hasn't been inserted yet
+
174 JPH_ASSERT(Find(inKey, inKeyHash) == nullptr);
+
175
+
176 // Calculate total size
+
177 uint size = sizeof(KeyValue) + inExtraBytes;
+
178
+
179 // Get the write offset for this key value pair
+
180 uint32 write_offset;
+
181 if (!ioContext.Allocate(size, alignof(KeyValue), write_offset))
+
182 return nullptr;
+
183
+
184#ifdef JPH_ENABLE_ASSERTS
+
185 // Increment amount of entries in map
+
186 mNumKeyValues.fetch_add(1, memory_order_relaxed);
+
187#endif // JPH_ENABLE_ASSERTS
+
188
+
189 // Construct the key/value pair
+
190 KeyValue *kv = mAllocator.template FromOffset<KeyValue>(write_offset);
+
191 JPH_ASSERT(intptr_t(kv) % alignof(KeyValue) == 0);
+
192#ifdef JPH_DEBUG
+
193 memset(kv, 0xcd, size);
+
194#endif
+
195 kv->mKey = inKey;
+
196 new (&kv->mValue) Value(std::forward<Params>(inConstructorParams)...);
+
197
+
198 // Get the offset to the first object from the bucket with corresponding hash
+
199 atomic<uint32> &offset = mBuckets[inKeyHash & (mNumBuckets - 1)];
+
200
+
201 // Add this entry as the first element in the linked list
+
202 uint32 old_offset = offset.load(memory_order_relaxed);
+
203 for (;;)
+
204 {
+
205 kv->mNextOffset = old_offset;
+
206 if (offset.compare_exchange_weak(old_offset, write_offset, memory_order_release))
+
207 break;
+
208 }
+
209
+
210 return kv;
+
211}
+
+
212
+
213template <class Key, class Value>
+
+
214inline const typename LockFreeHashMap<Key, Value>::KeyValue *LockFreeHashMap<Key, Value>::Find(const Key &inKey, uint64 inKeyHash) const
+
215{
+
216 // Get the offset to the keyvalue object from the bucket with corresponding hash
+
217 uint32 offset = mBuckets[inKeyHash & (mNumBuckets - 1)].load(memory_order_acquire);
+
218 while (offset != cInvalidHandle)
+
219 {
+
220 // Loop through linked list of values until the right one is found
+
221 const KeyValue *kv = mAllocator.template FromOffset<const KeyValue>(offset);
+
222 if (kv->mKey == inKey)
+
223 return kv;
+
224 offset = kv->mNextOffset;
+
225 }
+
226
+
227 // Not found
+
228 return nullptr;
+
229}
+
+
230
+
231template <class Key, class Value>
+
+ +
233{
+
234 return mAllocator.ToOffset(inKeyValue);
+
235}
+
+
236
+
237template <class Key, class Value>
+
+ +
239{
+
240 return mAllocator.template FromOffset<const KeyValue>(inHandle);
+
241}
+
+
242
+
243template <class Key, class Value>
+
+ +
245{
+
246 for (const atomic<uint32> *bucket = mBuckets; bucket < mBuckets + mNumBuckets; ++bucket)
+
247 {
+
248 uint32 offset = *bucket;
+
249 while (offset != cInvalidHandle)
+
250 {
+
251 const KeyValue *kv = mAllocator.template FromOffset<const KeyValue>(offset);
+
252 outAll.push_back(kv);
+
253 offset = kv->mNextOffset;
+
254 }
+
255 }
+
256}
+
+
257
+
258template <class Key, class Value>
+
+ +
260{
+
261 // Start with the first bucket
+
262 Iterator it { this, 0, mBuckets[0] };
+
263
+
264 // If it doesn't contain a valid entry, use the ++ operator to find the first valid entry
+
265 if (it.mOffset == cInvalidHandle)
+
266 ++it;
+
267
+
268 return it;
+
269}
+
+
270
+
271template <class Key, class Value>
+
+ +
273{
+
274 return { this, mNumBuckets, cInvalidHandle };
+
275}
+
+
+
276
+
277template <class Key, class Value>
+
+ +
279{
+ +
281
+
282 return *mMap->mAllocator.template FromOffset<KeyValue>(mOffset);
+
283}
+
+
284
+
285template <class Key, class Value>
+
+ +
287{
+
288 JPH_ASSERT(mBucket < mMap->mNumBuckets);
+
289
+
290 // Find the next key value in this bucket
+
291 if (mOffset != cInvalidHandle)
+
292 {
+
293 const KeyValue *kv = mMap->mAllocator.template FromOffset<const KeyValue>(mOffset);
+
294 mOffset = kv->mNextOffset;
+
295 if (mOffset != cInvalidHandle)
+
296 return *this;
+
297 }
+
298
+
299 // Loop over next buckets
+
300 for (;;)
+
301 {
+
302 // Next bucket
+
303 ++mBucket;
+
304 if (mBucket >= mMap->mNumBuckets)
+
305 return *this;
+
306
+
307 // Fetch the first entry in the bucket
+
308 mOffset = mMap->mBuckets[mBucket];
+
309 if (mOffset != cInvalidHandle)
+
310 return *this;
+
311 }
+
312}
+
+
313
+
314#ifdef JPH_DEBUG
+
315
+
316template <class Key, class Value>
+ +
318{
+
319 const int cMaxPerBucket = 256;
+
320
+
321 int max_objects_per_bucket = 0;
+
322 int num_objects = 0;
+
323 int histogram[cMaxPerBucket];
+
324 for (int i = 0; i < cMaxPerBucket; ++i)
+
325 histogram[i] = 0;
+
326
+
327 for (atomic<uint32> *bucket = mBuckets, *bucket_end = mBuckets + mNumBuckets; bucket < bucket_end; ++bucket)
+
328 {
+
329 int objects_in_bucket = 0;
+
330 uint32 offset = *bucket;
+
331 while (offset != cInvalidHandle)
+
332 {
+
333 const KeyValue *kv = mAllocator.template FromOffset<const KeyValue>(offset);
+
334 offset = kv->mNextOffset;
+
335 ++objects_in_bucket;
+
336 ++num_objects;
+
337 }
+
338 max_objects_per_bucket = max(objects_in_bucket, max_objects_per_bucket);
+
339 histogram[min(objects_in_bucket, cMaxPerBucket - 1)]++;
+
340 }
+
341
+
342 Trace("max_objects_per_bucket = %d, num_buckets = %u, num_objects = %d", max_objects_per_bucket, mNumBuckets, num_objects);
+
343
+
344 for (int i = 0; i < cMaxPerBucket; ++i)
+
345 if (histogram[i] != 0)
+
346 Trace("%d: %d", i, histogram[i]);
+
347}
+
348
+
349#endif
+
350
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
std::uint8_t uint8
Definition Core.h:453
+
std::uint64_t uint64
Definition Core.h:456
+
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
+
TraceFunction Trace
Definition IssueReporting.cpp:18
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
constexpr bool IsPowerOf2(T inV)
Check if inV is a power of 2.
Definition Math.h:73
+
bool IsAligned(T inV, uint64 inAlignment)
Check if inV is inAlignment aligned.
Definition Math.h:88
+
AlignedFreeFunction AlignedFree
Definition Memory.cpp:72
+
AlignedAllocateFunction AlignedAllocate
Definition Memory.cpp:71
+
Definition Array.h:36
+
void push_back(const T &inValue)
Add element to the back of the array.
Definition Array.h:275
+
Definition LockFreeHashMap.h:49
+
LFHMAllocatorContext(LFHMAllocator &inAllocator, uint32 inBlockSize)
Construct a new allocator context.
Definition LockFreeHashMap.inl:80
+
bool Allocate(uint32 inSize, uint32 inAlignment, uint32 &outWriteOffset)
Allocate data block.
Definition LockFreeHashMap.inl:86
+
Allocator for a lock free hash map.
Definition LockFreeHashMap.h:14
+
uint32 ToOffset(const T *inData) const
Convert a pointer to an offset.
Definition LockFreeHashMap.inl:62
+
~LFHMAllocator()
Destructor.
Definition LockFreeHashMap.inl:13
+
void Init(uint inObjectStoreSizeBytes)
Definition LockFreeHashMap.inl:18
+
T * FromOffset(uint32 inOffset) const
Convert an offset to a pointer.
Definition LockFreeHashMap.inl:70
+
void Allocate(uint32 inBlockSize, uint32 &ioBegin, uint32 &ioEnd)
Definition LockFreeHashMap.inl:31
+
void Clear()
Clear all allocations.
Definition LockFreeHashMap.inl:26
+
A key / value pair that is inserted in the map.
Definition LockFreeHashMap.h:100
+
Definition LockFreeHashMap.h:72
+
const KeyValue * FromHandle(uint32 inHandle) const
Convert uint32 handle back to key and value.
Definition LockFreeHashMap.inl:238
+
Iterator begin()
Definition LockFreeHashMap.inl:259
+
void GetAllKeyValues(Array< const KeyValue * > &outAll) const
Get all key/value pairs.
Definition LockFreeHashMap.inl:244
+
void Init(uint32 inMaxBuckets)
Definition LockFreeHashMap.inl:119
+
void SetNumBuckets(uint32 inNumBuckets)
Definition LockFreeHashMap.inl:160
+
KeyValue * Create(LFHMAllocatorContext &ioContext, const Key &inKey, uint64 inKeyHash, int inExtraBytes, Params &&... inConstructorParams)
Definition LockFreeHashMap.inl:171
+
~LockFreeHashMap()
Definition LockFreeHashMap.inl:133
+
const KeyValue * Find(const Key &inKey, uint64 inKeyHash) const
Find an element, returns null if not found.
Definition LockFreeHashMap.inl:214
+
uint32 ToHandle(const KeyValue *inKeyValue) const
Get convert key value pair to uint32 handle.
Definition LockFreeHashMap.inl:232
+
Iterator end()
Definition LockFreeHashMap.inl:272
+
static const uint32 cInvalidHandle
Value of an invalid handle.
Definition LockFreeHashMap.h:123
+
void Clear()
Definition LockFreeHashMap.inl:139
+
Definition UVec4.h:12
+
static JPH_INLINE UVec4 sReplicate(uint32 inV)
Replicate int inV across all components.
Definition UVec4.inl:56
+
JPH_INLINE void StoreInt4Aligned(uint32 *outV) const
Store 4 ints to memory, aligned to 16 bytes.
Definition UVec4.inl:360
+
Non-const iterator.
Definition LockFreeHashMap.h:142
+
uint32 mOffset
Definition LockFreeHashMap.h:155
+
Iterator & operator++()
Next item.
Definition LockFreeHashMap.inl:286
+
MapType * mMap
Definition LockFreeHashMap.h:153
+
KeyValue & operator*()
Convert to key value pair.
Definition LockFreeHashMap.inl:278
+
+
+ + + + diff --git a/_manifold_between_two_faces_8cpp.html b/_manifold_between_two_faces_8cpp.html new file mode 100644 index 000000000..98d137b9d --- /dev/null +++ b/_manifold_between_two_faces_8cpp.html @@ -0,0 +1,228 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ManifoldBetweenTwoFaces.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ManifoldBetweenTwoFaces.cpp File Reference
+
+
+ + + + + + +

+Functions

JPH_NAMESPACE_BEGIN void PruneContactPoints (Vec3Arg inPenetrationAxis, ContactPoints &ioContactPointsOn1, ContactPoints &ioContactPointsOn2 JPH_IF_DEBUG_RENDERER(, RVec3Arg inCenterOfMass))
 
void ManifoldBetweenTwoFaces (Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inPenetrationAxis, float inMaxContactDistanceSq, const ConvexShape::SupportingFace &inShape1Face, const ConvexShape::SupportingFace &inShape2Face, ContactPoints &outContactPoints1, ContactPoints &outContactPoints2 JPH_IF_DEBUG_RENDERER(, RVec3Arg inCenterOfMass))
 
+

Function Documentation

+ +

◆ ManifoldBetweenTwoFaces()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ManifoldBetweenTwoFaces (Vec3Arg inContactPoint1,
Vec3Arg inContactPoint2,
Vec3Arg inPenetrationAxis,
float inMaxContactDistanceSq,
const ConvexShape::SupportingFaceinShape1Face,
const ConvexShape::SupportingFaceinShape2Face,
ContactPointsoutContactPoints1,
ContactPoints &outContactPoints2  JPH_IF_DEBUG_RENDERER, RVec3Arg inCenterOfMass 
)
+
+ +
+
+ +

◆ PruneContactPoints()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void PruneContactPoints (Vec3Arg inPenetrationAxis,
ContactPointsioContactPointsOn1,
ContactPoints &ioContactPointsOn2  JPH_IF_DEBUG_RENDERER, RVec3Arg inCenterOfMass 
)
+
+ +
+
+
+
+ + + + diff --git a/_manifold_between_two_faces_8cpp.js b/_manifold_between_two_faces_8cpp.js new file mode 100644 index 000000000..e9989f4ca --- /dev/null +++ b/_manifold_between_two_faces_8cpp.js @@ -0,0 +1,5 @@ +var _manifold_between_two_faces_8cpp = +[ + [ "ManifoldBetweenTwoFaces", "_manifold_between_two_faces_8cpp.html#a61f6c9a0571c93ab42d6c33342b1d4f9", null ], + [ "PruneContactPoints", "_manifold_between_two_faces_8cpp.html#a0f6a5a08a650bb28e4f8692e93b9a884", null ] +]; \ No newline at end of file diff --git a/_manifold_between_two_faces_8h.html b/_manifold_between_two_faces_8h.html new file mode 100644 index 000000000..605fec88e --- /dev/null +++ b/_manifold_between_two_faces_8h.html @@ -0,0 +1,262 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ManifoldBetweenTwoFaces.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ManifoldBetweenTwoFaces.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_EXPORT void PruneContactPoints (Vec3Arg inPenetrationAxis, ContactPoints &ioContactPointsOn1, ContactPoints &ioContactPointsOn2, RVec3Arg inCenterOfMass)
 
JPH_EXPORT void ManifoldBetweenTwoFaces (Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inPenetrationAxis, float inMaxContactDistanceSq, const ConvexShape::SupportingFace &inShape1Face, const ConvexShape::SupportingFace &inShape2Face, ContactPoints &outContactPoints1, ContactPoints &outContactPoints2, RVec3Arg inCenterOfMass)
 
+

Function Documentation

+ +

◆ ManifoldBetweenTwoFaces()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_EXPORT void ManifoldBetweenTwoFaces (Vec3Arg inContactPoint1,
Vec3Arg inContactPoint2,
Vec3Arg inPenetrationAxis,
float inMaxContactDistanceSq,
const ConvexShape::SupportingFaceinShape1Face,
const ConvexShape::SupportingFaceinShape2Face,
ContactPointsoutContactPoints1,
ContactPointsoutContactPoints2,
RVec3Arg inCenterOfMass 
)
+
+

Determine contact points between 2 faces of 2 shapes and return them in outContactPoints 1 & 2

Parameters
+ + + + + + + + + + +
inContactPoint1The contact point on shape 1 relative to inCenterOfMass
inContactPoint2The contact point on shape 2 relative to inCenterOfMass
inPenetrationAxisThe local space penetration axis in world space
inMaxContactDistanceSqAfter face 2 is clipped against face 1, each remaining point on face 2 is tested against the plane of face 1. If the distance^2 on the positive side of the plane is larger than this distance, the point will be discarded as a contact point.
inShape1FaceThe supporting faces on shape 1 relative to inCenterOfMass
inShape2FaceThe supporting faces on shape 2 relative to inCenterOfMass
outContactPoints1Returns the contact points between the two shapes for shape 1 relative to inCenterOfMass (any existing points in the output array are left as is)
outContactPoints2Returns the contact points between the two shapes for shape 2 relative to inCenterOfMass (any existing points in the output array are left as is)
inCenterOfMassCenter of mass position of body 1
+
+
+ +
+
+ +

◆ PruneContactPoints()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_EXPORT void PruneContactPoints (Vec3Arg inPenetrationAxis,
ContactPointsioContactPointsOn1,
ContactPointsioContactPointsOn2,
RVec3Arg inCenterOfMass 
)
+
+

Remove contact points if there are > 4 (no more than 4 are needed for a stable solution)

Parameters
+ + + + + +
inPenetrationAxisis the world space penetration axis (must be normalized)
ioContactPointsOn1The contact points on shape 1 relative to inCenterOfMass
ioContactPointsOn2The contact points on shape 2 relative to inCenterOfMass On output ioContactPointsOn1/2 are reduced to 4 or less points
inCenterOfMassCenter of mass position of body 1
+
+
+ +
+
+
+
+ + + + diff --git a/_manifold_between_two_faces_8h.js b/_manifold_between_two_faces_8h.js new file mode 100644 index 000000000..fb5d7116f --- /dev/null +++ b/_manifold_between_two_faces_8h.js @@ -0,0 +1,5 @@ +var _manifold_between_two_faces_8h = +[ + [ "ManifoldBetweenTwoFaces", "_manifold_between_two_faces_8h.html#a3507ddf0602b2e30aba85a652b7d1105", null ], + [ "PruneContactPoints", "_manifold_between_two_faces_8h.html#a75e0a7ac1c7d9a4e410265839934c8e9", null ] +]; \ No newline at end of file diff --git a/_manifold_between_two_faces_8h_source.html b/_manifold_between_two_faces_8h_source.html new file mode 100644 index 000000000..46f7b6cc0 --- /dev/null +++ b/_manifold_between_two_faces_8h_source.html @@ -0,0 +1,156 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ManifoldBetweenTwoFaces.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ManifoldBetweenTwoFaces.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
+ + +
9
+ +
11
+
17#ifdef JPH_DEBUG_RENDERER
+
19#endif
+
20JPH_EXPORT void PruneContactPoints(Vec3Arg inPenetrationAxis, ContactPoints &ioContactPointsOn1, ContactPoints &ioContactPointsOn2
+
21#ifdef JPH_DEBUG_RENDERER
+
22 , RVec3Arg inCenterOfMass
+
23#endif
+
24 );
+
25
+
35#ifdef JPH_DEBUG_RENDERER
+
37#endif
+
38JPH_EXPORT void ManifoldBetweenTwoFaces(Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inPenetrationAxis, float inMaxContactDistanceSq, const ConvexShape::SupportingFace &inShape1Face, const ConvexShape::SupportingFace &inShape2Face, ContactPoints &outContactPoints1, ContactPoints &outContactPoints2
+
39#ifdef JPH_DEBUG_RENDERER
+
40 , RVec3Arg inCenterOfMass
+
41#endif
+
42 );
+
43
+ + + +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_EXPORT void ManifoldBetweenTwoFaces(Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inPenetrationAxis, float inMaxContactDistanceSq, const ConvexShape::SupportingFace &inShape1Face, const ConvexShape::SupportingFace &inShape2Face, ContactPoints &outContactPoints1, ContactPoints &outContactPoints2, RVec3Arg inCenterOfMass)
+
JPH_NAMESPACE_BEGIN JPH_EXPORT void PruneContactPoints(Vec3Arg inPenetrationAxis, ContactPoints &ioContactPointsOn1, ContactPoints &ioContactPointsOn2, RVec3Arg inCenterOfMass)
+ +
Definition Vec3.h:17
+
+
+ + + + diff --git a/_mass_properties_8cpp.html b/_mass_properties_8cpp.html new file mode 100644 index 000000000..2c75dc633 --- /dev/null +++ b/_mass_properties_8cpp.html @@ -0,0 +1,150 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/MassProperties.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MassProperties.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (MassProperties)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (MassProperties )
+
+ +
+
+
+
+ + + + diff --git a/_mass_properties_8cpp.js b/_mass_properties_8cpp.js new file mode 100644 index 000000000..e0e92b189 --- /dev/null +++ b/_mass_properties_8cpp.js @@ -0,0 +1,4 @@ +var _mass_properties_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_mass_properties_8cpp.html#ad44a914c8e4dc302d0d1772c2576f202", null ] +]; \ No newline at end of file diff --git a/_mass_properties_8h.html b/_mass_properties_8h.html new file mode 100644 index 000000000..bc7707445 --- /dev/null +++ b/_mass_properties_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/MassProperties.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MassProperties.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  MassProperties
 Describes the mass and inertia properties of a body. Used during body construction only. More...
 
+
+
+ + + + diff --git a/_mass_properties_8h.js b/_mass_properties_8h.js new file mode 100644 index 000000000..9d0e99f9f --- /dev/null +++ b/_mass_properties_8h.js @@ -0,0 +1,4 @@ +var _mass_properties_8h = +[ + [ "MassProperties", "class_mass_properties.html", "class_mass_properties" ] +]; \ No newline at end of file diff --git a/_mass_properties_8h_source.html b/_mass_properties_8h_source.html new file mode 100644 index 000000000..3a524cd13 --- /dev/null +++ b/_mass_properties_8h_source.html @@ -0,0 +1,175 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/MassProperties.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MassProperties.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
+
11class StreamIn;
+
12class StreamOut;
+
13
+
+ +
16{
+
17public:
+ +
19
+
20
+
25 bool DecomposePrincipalMomentsOfInertia(Mat44 &outRotation, Vec3 &outDiagonal) const;
+
26
+
28 void SetMassAndInertiaOfSolidBox(Vec3Arg inBoxSize, float inDensity);
+
29
+
31 void ScaleToMass(float inMass);
+
32
+
34 static Vec3 sGetEquivalentSolidBoxSize(float inMass, Vec3Arg inInertiaDiagonal);
+
35
+
37 void Rotate(Mat44Arg inRotation);
+
38
+
40 void Translate(Vec3Arg inTranslation);
+
41
+
43 void Scale(Vec3Arg inScale);
+
44
+
46 void SaveBinaryState(StreamOut &inStream) const;
+
47
+
49 void RestoreBinaryState(StreamIn &inStream);
+
50
+
52 float mMass = 0.0f;
+
53
+
55 Mat44 mInertia = Mat44::sZero();
+
56};
+
+
57
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+
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
+
static JPH_INLINE Mat44 sZero()
Zero matrix.
Definition Mat44.inl:30
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_mat44_8h.html b/_mat44_8h.html new file mode 100644 index 000000000..e0e244cb9 --- /dev/null +++ b/_mat44_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Math/Mat44.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Mat44.h File Reference
+
+
+
#include <Jolt/Math/MathTypes.h>
+#include "Mat44.inl"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  Mat44
 Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix. More...
 
+
+
+ + + + diff --git a/_mat44_8h.js b/_mat44_8h.js new file mode 100644 index 000000000..e67fcadcd --- /dev/null +++ b/_mat44_8h.js @@ -0,0 +1,4 @@ +var _mat44_8h = +[ + [ "Mat44", "class_mat44.html", "class_mat44" ] +]; \ No newline at end of file diff --git a/_mat44_8h_source.html b/_mat44_8h_source.html new file mode 100644 index 000000000..e1bdfc0f0 --- /dev/null +++ b/_mat44_8h_source.html @@ -0,0 +1,346 @@ + + + + + + + +Jolt Physics: Jolt/Math/Mat44.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Mat44.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
+
+
12class [[nodiscard]] alignas(JPH_VECTOR_ALIGNMENT) Mat44
+
13{
+
14public:
+ +
16
+
17 // Underlying column type
+ +
19
+
20 // Argument type
+ +
22
+
24 Mat44() = default;
+
25 JPH_INLINE Mat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec4Arg inC4);
+
26 JPH_INLINE Mat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec3Arg inC4);
+
27 Mat44(const Mat44 &inM2) = default;
+
28 Mat44 & operator = (const Mat44 &inM2) = default;
+
29 JPH_INLINE Mat44(Type inC1, Type inC2, Type inC3, Type inC4);
+
30
+
32 static JPH_INLINE Mat44 sZero();
+
33
+
35 static JPH_INLINE Mat44 sIdentity();
+
36
+
38 static JPH_INLINE Mat44 sNaN();
+
39
+
41 static JPH_INLINE Mat44 sLoadFloat4x4(const Float4 *inV);
+
42
+
44 static JPH_INLINE Mat44 sLoadFloat4x4Aligned(const Float4 *inV);
+
45
+
47 static JPH_INLINE Mat44 sRotationX(float inX);
+
48 static JPH_INLINE Mat44 sRotationY(float inY);
+
49 static JPH_INLINE Mat44 sRotationZ(float inZ);
+
50
+
52 static JPH_INLINE Mat44 sRotation(Vec3Arg inAxis, float inAngle);
+
53
+
55 static JPH_INLINE Mat44 sRotation(QuatArg inQuat);
+
56
+
58 static JPH_INLINE Mat44 sTranslation(Vec3Arg inV);
+
59
+
61 static JPH_INLINE Mat44 sRotationTranslation(QuatArg inR, Vec3Arg inT);
+
62
+
64 static JPH_INLINE Mat44 sInverseRotationTranslation(QuatArg inR, Vec3Arg inT);
+
65
+
67 static JPH_INLINE Mat44 sScale(float inScale);
+
68
+
70 static JPH_INLINE Mat44 sScale(Vec3Arg inV);
+
71
+
73 static JPH_INLINE Mat44 sOuterProduct(Vec3Arg inV1, Vec3Arg inV2);
+
74
+
76 static JPH_INLINE Mat44 sCrossProduct(Vec3Arg inV);
+
77
+
79 static JPH_INLINE Mat44 sQuatLeftMultiply(QuatArg inQ);
+
80
+
82 static JPH_INLINE Mat44 sQuatRightMultiply(QuatArg inQ);
+
83
+
88 static JPH_INLINE Mat44 sLookAt(Vec3Arg inPos, Vec3Arg inTarget, Vec3Arg inUp);
+
89
+
91 static JPH_INLINE Mat44 sPerspective(float inFovY, float inAspect, float inNear, float inFar);
+
92
+
94 JPH_INLINE float operator () (uint inRow, uint inColumn) const { JPH_ASSERT(inRow < 4); JPH_ASSERT(inColumn < 4); return mCol[inColumn].mF32[inRow]; }
+
95 JPH_INLINE float & operator () (uint inRow, uint inColumn) { JPH_ASSERT(inRow < 4); JPH_ASSERT(inColumn < 4); return mCol[inColumn].mF32[inRow]; }
+
96
+
98 JPH_INLINE bool operator == (Mat44Arg inM2) const;
+
99 JPH_INLINE bool operator != (Mat44Arg inM2) const { return !(*this == inM2); }
+
100
+
102 JPH_INLINE bool IsClose(Mat44Arg inM2, float inMaxDistSq = 1.0e-12f) const;
+
103
+
105 JPH_INLINE Mat44 operator * (Mat44Arg inM) const;
+
106
+
108 JPH_INLINE Vec3 operator * (Vec3Arg inV) const;
+
109 JPH_INLINE Vec4 operator * (Vec4Arg inV) const;
+
110
+
112 JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const;
+
113
+
115 JPH_INLINE Vec3 Multiply3x3Transposed(Vec3Arg inV) const;
+
116
+
118 JPH_INLINE Mat44 Multiply3x3(Mat44Arg inM) const;
+
119
+
121 JPH_INLINE Mat44 Multiply3x3LeftTransposed(Mat44Arg inM) const;
+
122
+
124 JPH_INLINE Mat44 Multiply3x3RightTransposed(Mat44Arg inM) const;
+
125
+
127 JPH_INLINE Mat44 operator * (float inV) const;
+
128 friend JPH_INLINE Mat44 operator * (float inV, Mat44Arg inM) { return inM * inV; }
+
129
+
131 JPH_INLINE Mat44 & operator *= (float inV);
+
132
+
134 JPH_INLINE Mat44 operator + (Mat44Arg inM) const;
+
135
+
137 JPH_INLINE Mat44 operator - () const;
+
138
+
140 JPH_INLINE Mat44 operator - (Mat44Arg inM) const;
+
141
+
143 JPH_INLINE Mat44 & operator += (Mat44Arg inM);
+
144
+
146 JPH_INLINE Vec3 GetAxisX() const { return Vec3(mCol[0]); }
+
147 JPH_INLINE void SetAxisX(Vec3Arg inV) { mCol[0] = Vec4(inV, 0.0f); }
+
148 JPH_INLINE Vec3 GetAxisY() const { return Vec3(mCol[1]); }
+
149 JPH_INLINE void SetAxisY(Vec3Arg inV) { mCol[1] = Vec4(inV, 0.0f); }
+
150 JPH_INLINE Vec3 GetAxisZ() const { return Vec3(mCol[2]); }
+
151 JPH_INLINE void SetAxisZ(Vec3Arg inV) { mCol[2] = Vec4(inV, 0.0f); }
+
152 JPH_INLINE Vec3 GetTranslation() const { return Vec3(mCol[3]); }
+
153 JPH_INLINE void SetTranslation(Vec3Arg inV) { mCol[3] = Vec4(inV, 1.0f); }
+
154 JPH_INLINE Vec3 GetDiagonal3() const { return Vec3(mCol[0][0], mCol[1][1], mCol[2][2]); }
+
155 JPH_INLINE void SetDiagonal3(Vec3Arg inV) { mCol[0][0] = inV.GetX(); mCol[1][1] = inV.GetY(); mCol[2][2] = inV.GetZ(); }
+
156 JPH_INLINE Vec4 GetDiagonal4() const { return Vec4(mCol[0][0], mCol[1][1], mCol[2][2], mCol[3][3]); }
+
157 JPH_INLINE void SetDiagonal4(Vec4Arg inV) { mCol[0][0] = inV.GetX(); mCol[1][1] = inV.GetY(); mCol[2][2] = inV.GetZ(); mCol[3][3] = inV.GetW(); }
+
158 JPH_INLINE Vec3 GetColumn3(uint inCol) const { JPH_ASSERT(inCol < 4); return Vec3(mCol[inCol]); }
+
159 JPH_INLINE void SetColumn3(uint inCol, Vec3Arg inV) { JPH_ASSERT(inCol < 4); mCol[inCol] = Vec4(inV, inCol == 3? 1.0f : 0.0f); }
+
160 JPH_INLINE Vec4 GetColumn4(uint inCol) const { JPH_ASSERT(inCol < 4); return mCol[inCol]; }
+
161 JPH_INLINE void SetColumn4(uint inCol, Vec4Arg inV) { JPH_ASSERT(inCol < 4); mCol[inCol] = inV; }
+
162
+
164 JPH_INLINE void StoreFloat4x4(Float4 *outV) const;
+
165
+
167 JPH_INLINE Mat44 Transposed() const;
+
168
+
170 JPH_INLINE Mat44 Transposed3x3() const;
+
171
+
173 JPH_INLINE Mat44 Inversed() const;
+
174
+
176 JPH_INLINE Mat44 InversedRotationTranslation() const;
+
177
+
179 JPH_INLINE float GetDeterminant3x3() const;
+
180
+
182 JPH_INLINE Mat44 Adjointed3x3() const;
+
183
+
185 JPH_INLINE Mat44 Inversed3x3() const;
+
186
+
188 JPH_INLINE bool SetInversed3x3(Mat44Arg inM);
+
189
+
191 JPH_INLINE Mat44 GetRotation() const;
+
192
+
194 JPH_INLINE Mat44 GetRotationSafe() const;
+
195
+
197 JPH_INLINE void SetRotation(Mat44Arg inRotation);
+
198
+
200 JPH_INLINE Quat GetQuaternion() const;
+
201
+
203 JPH_INLINE Mat44 GetDirectionPreservingMatrix() const { return GetRotation().Inversed3x3().Transposed3x3(); }
+
204
+
206 JPH_INLINE Mat44 PreTranslated(Vec3Arg inTranslation) const;
+
207
+
209 JPH_INLINE Mat44 PostTranslated(Vec3Arg inTranslation) const;
+
210
+
212 JPH_INLINE Mat44 PreScaled(Vec3Arg inScale) const;
+
213
+
215 JPH_INLINE Mat44 PostScaled(Vec3Arg inScale) const;
+
216
+
221 JPH_INLINE Mat44 Decompose(Vec3 &outScale) const;
+
222
+
223#ifndef JPH_DOUBLE_PRECISION
+
225 JPH_INLINE Mat44 ToMat44() const { return *this; }
+
226#endif // !JPH_DOUBLE_PRECISION
+
227
+
+
229 friend ostream & operator << (ostream &inStream, Mat44Arg inM)
+
230 {
+
231 inStream << inM.mCol[0] << ", " << inM.mCol[1] << ", " << inM.mCol[2] << ", " << inM.mCol[3];
+
232 return inStream;
+
233 }
+
+
234
+
235private:
+
236 Vec4 mCol[4];
+
237};
+
+
238
+
239static_assert(is_trivial<Mat44>(), "Is supposed to be a trivial type!");
+
240
+ +
242
+
243#include "Mat44.inl"
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:451
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ + +
const Mat44 & Mat44Arg
Definition MathTypes.h:31
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
Class that holds 4 float values. Convert to Vec4 to perform calculations.
Definition Float4.h:11
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Vec3 GetAxisY() const
Definition Mat44.h:148
+
JPH_INLINE void SetAxisX(Vec3Arg inV)
Definition Mat44.h:147
+
JPH_INLINE void SetColumn3(uint inCol, Vec3Arg inV)
Definition Mat44.h:159
+
JPH_INLINE Vec3 GetAxisZ() const
Definition Mat44.h:150
+
JPH_INLINE Mat44 Transposed3x3() const
Transpose 3x3 subpart of matrix.
Definition Mat44.inl:502
+
JPH_INLINE Mat44 GetDirectionPreservingMatrix() const
Get matrix that transforms a direction with the same transform as this matrix (length is not preserve...
Definition Mat44.h:203
+
JPH_INLINE void SetDiagonal4(Vec4Arg inV)
Definition Mat44.h:157
+
JPH_INLINE Mat44 ToMat44() const
In single precision mode just return the matrix itself.
Definition Mat44.h:225
+
Vec4::Type Type
Definition Mat44.h:18
+
JPH_INLINE void SetAxisZ(Vec3Arg inV)
Definition Mat44.h:151
+
JPH_INLINE Vec3 GetColumn3(uint inCol) const
Definition Mat44.h:158
+
JPH_INLINE Vec3 GetDiagonal3() const
Definition Mat44.h:154
+
JPH_INLINE Vec4 GetColumn4(uint inCol) const
Definition Mat44.h:160
+
JPH_INLINE Vec3 GetAxisX() const
Access to the columns.
Definition Mat44.h:146
+
JPH_INLINE void SetDiagonal3(Vec3Arg inV)
Definition Mat44.h:155
+
Mat44(const Mat44 &inM2)=default
+
JPH_INLINE Vec3 GetTranslation() const
Definition Mat44.h:152
+
JPH_INLINE void SetColumn4(uint inCol, Vec4Arg inV)
Definition Mat44.h:161
+
Mat44()=default
Constructor.
+
JPH_INLINE Mat44 Inversed3x3() const
Inverse 3x3 matrix.
Definition Mat44.inl:753
+
JPH_INLINE void SetAxisY(Vec3Arg inV)
Definition Mat44.h:149
+
JPH_INLINE void SetTranslation(Vec3Arg inV)
Definition Mat44.h:153
+
JPH_INLINE Vec4 GetDiagonal4() const
Definition Mat44.h:156
+
Definition Quat.h:33
+
Definition Vec3.h:17
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
Definition Vec4.h:14
+
JPH_INLINE float GetW() const
Definition Vec4.h:116
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec4.h:113
+
{ float mData[4] Type
Definition Vec4.h:24
+
JPH_INLINE float GetZ() const
Definition Vec4.h:115
+
JPH_INLINE float GetY() const
Definition Vec4.h:114
+
+
+ + + + diff --git a/_mat44_8inl.html b/_mat44_8inl.html new file mode 100644 index 000000000..61dff83aa --- /dev/null +++ b/_mat44_8inl.html @@ -0,0 +1,156 @@ + + + + + + + +Jolt Physics: Jolt/Math/Mat44.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Mat44.inl File Reference
+
+
+
#include <Jolt/Math/Vec3.h>
+#include <Jolt/Math/Vec4.h>
+#include <Jolt/Math/Quat.h>
+
+

Go to the source code of this file.

+ + + + +

+Macros

#define JPH_EL(r, c)   mCol[c].mF32[r]
 
+

Macro Definition Documentation

+ +

◆ JPH_EL

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_EL( r,
 
)   mCol[c].mF32[r]
+
+ +
+
+
+
+ + + + diff --git a/_mat44_8inl.js b/_mat44_8inl.js new file mode 100644 index 000000000..fbc474f7d --- /dev/null +++ b/_mat44_8inl.js @@ -0,0 +1,4 @@ +var _mat44_8inl = +[ + [ "JPH_EL", "_mat44_8inl.html#a7d2c3dded3b7d624fb4cde097f294fa7", null ] +]; \ No newline at end of file diff --git a/_mat44_8inl_source.html b/_mat44_8inl_source.html new file mode 100644 index 000000000..16c4bbc2d --- /dev/null +++ b/_mat44_8inl_source.html @@ -0,0 +1,1301 @@ + + + + + + + +Jolt Physics: Jolt/Math/Mat44.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Mat44.inl
+
+
+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
+
7#include <Jolt/Math/Vec3.h>
+
8#include <Jolt/Math/Vec4.h>
+
9#include <Jolt/Math/Quat.h>
+
10
+ +
12
+
13#define JPH_EL(r, c) mCol[c].mF32[r]
+
14
+
+
15Mat44::Mat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec4Arg inC4) :
+
16 mCol { inC1, inC2, inC3, inC4 }
+
17{
+
18}
+
+
19
+
+
20Mat44::Mat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec3Arg inC4) :
+
21 mCol { inC1, inC2, inC3, Vec4(inC4, 1.0f) }
+
22{
+
23}
+
+
24
+
+
25Mat44::Mat44(Type inC1, Type inC2, Type inC3, Type inC4) :
+
26 mCol { inC1, inC2, inC3, inC4 }
+
27{
+
28}
+
+
29
+
+ +
31{
+ +
33}
+
+
34
+
+ +
36{
+
37 return Mat44(Vec4(1, 0, 0, 0), Vec4(0, 1, 0, 0), Vec4(0, 0, 1, 0), Vec4(0, 0, 0, 1));
+
38}
+
+
39
+
+ +
41{
+ +
43}
+
+
44
+
+ +
46{
+
47 Mat44 result;
+
48 for (int c = 0; c < 4; ++c)
+
49 result.mCol[c] = Vec4::sLoadFloat4(inV + c);
+
50 return result;
+
51}
+
+
52
+
+ +
54{
+
55 Mat44 result;
+
56 for (int c = 0; c < 4; ++c)
+
57 result.mCol[c] = Vec4::sLoadFloat4Aligned(inV + c);
+
58 return result;
+
59}
+
+
60
+
+ +
62{
+
63 Vec4 sv, cv;
+
64 Vec4::sReplicate(inX).SinCos(sv, cv);
+
65 float s = sv.GetX(), c = cv.GetX();
+
66 return Mat44(Vec4(1, 0, 0, 0), Vec4(0, c, s, 0), Vec4(0, -s, c, 0), Vec4(0, 0, 0, 1));
+
67}
+
+
68
+
+ +
70{
+
71 Vec4 sv, cv;
+
72 Vec4::sReplicate(inY).SinCos(sv, cv);
+
73 float s = sv.GetX(), c = cv.GetX();
+
74 return Mat44(Vec4(c, 0, -s, 0), Vec4(0, 1, 0, 0), Vec4(s, 0, c, 0), Vec4(0, 0, 0, 1));
+
75}
+
+
76
+
+ +
78{
+
79 Vec4 sv, cv;
+
80 Vec4::sReplicate(inZ).SinCos(sv, cv);
+
81 float s = sv.GetX(), c = cv.GetX();
+
82 return Mat44(Vec4(c, s, 0, 0), Vec4(-s, c, 0, 0), Vec4(0, 0, 1, 0), Vec4(0, 0, 0, 1));
+
83}
+
+
84
+
+ +
86{
+
87 JPH_ASSERT(inQuat.IsNormalized());
+
88
+
89 // See: https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation section 'Quaternion-derived rotation matrix'
+
90#ifdef JPH_USE_SSE4_1
+
91 __m128 xyzw = inQuat.mValue.mValue;
+
92 __m128 two_xyzw = _mm_add_ps(xyzw, xyzw);
+
93 __m128 yzxw = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(3, 0, 2, 1));
+
94 __m128 two_yzxw = _mm_add_ps(yzxw, yzxw);
+
95 __m128 zxyw = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(3, 1, 0, 2));
+
96 __m128 two_zxyw = _mm_add_ps(zxyw, zxyw);
+
97 __m128 wwww = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(3, 3, 3, 3));
+
98 __m128 diagonal = _mm_sub_ps(_mm_sub_ps(_mm_set1_ps(1.0f), _mm_mul_ps(two_yzxw, yzxw)), _mm_mul_ps(two_zxyw, zxyw)); // (1 - 2 y^2 - 2 z^2, 1 - 2 x^2 - 2 z^2, 1 - 2 x^2 - 2 y^2, 1 - 4 w^2)
+
99 __m128 plus = _mm_add_ps(_mm_mul_ps(two_xyzw, zxyw), _mm_mul_ps(two_yzxw, wwww)); // 2 * (xz + yw, xy + zw, yz + xw, ww)
+
100 __m128 minus = _mm_sub_ps(_mm_mul_ps(two_yzxw, xyzw), _mm_mul_ps(two_zxyw, wwww)); // 2 * (xy - zw, yz - xw, xz - yw, 0)
+
101
+
102 // Workaround for compiler changing _mm_sub_ps(_mm_mul_ps(...), ...) into a fused multiply sub instruction, resulting in w not being 0
+
103 // There doesn't appear to be a reliable way to turn this off in Clang
+
104 minus = _mm_insert_ps(minus, minus, 0b1000);
+
105
+
106 __m128 col0 = _mm_blend_ps(_mm_blend_ps(plus, diagonal, 0b0001), minus, 0b1100); // (1 - 2 y^2 - 2 z^2, 2 xy + 2 zw, 2 xz - 2 yw, 0)
+
107 __m128 col1 = _mm_blend_ps(_mm_blend_ps(diagonal, minus, 0b1001), plus, 0b0100); // (2 xy - 2 zw, 1 - 2 x^2 - 2 z^2, 2 yz + 2 xw, 0)
+
108 __m128 col2 = _mm_blend_ps(_mm_blend_ps(minus, plus, 0b0001), diagonal, 0b0100); // (2 xz + 2 yw, 2 yz - 2 xw, 1 - 2 x^2 - 2 y^2, 0)
+
109 __m128 col3 = _mm_set_ps(1, 0, 0, 0);
+
110
+
111 return Mat44(col0, col1, col2, col3);
+
112#else
+
113 float x = inQuat.GetX();
+
114 float y = inQuat.GetY();
+
115 float z = inQuat.GetZ();
+
116 float w = inQuat.GetW();
+
117
+
118 float tx = x + x; // Note: Using x + x instead of 2.0f * x to force this function to return the same value as the SSE4.1 version across platforms.
+
119 float ty = y + y;
+
120 float tz = z + z;
+
121
+
122 float xx = tx * x;
+
123 float yy = ty * y;
+
124 float zz = tz * z;
+
125 float xy = tx * y;
+
126 float xz = tx * z;
+
127 float xw = tx * w;
+
128 float yz = ty * z;
+
129 float yw = ty * w;
+
130 float zw = tz * w;
+
131
+
132 return Mat44(Vec4((1.0f - yy) - zz, xy + zw, xz - yw, 0.0f), // Note: Added extra brackets to force this function to return the same value as the SSE4.1 version across platforms.
+
133 Vec4(xy - zw, (1.0f - zz) - xx, yz + xw, 0.0f),
+
134 Vec4(xz + yw, yz - xw, (1.0f - xx) - yy, 0.0f),
+
135 Vec4(0.0f, 0.0f, 0.0f, 1.0f));
+
136#endif
+
137}
+
+
138
+
+
139Mat44 Mat44::sRotation(Vec3Arg inAxis, float inAngle)
+
140{
+
141 return sRotation(Quat::sRotation(inAxis, inAngle));
+
142}
+
+
143
+
+ +
145{
+
146 return Mat44(Vec4(1, 0, 0, 0), Vec4(0, 1, 0, 0), Vec4(0, 0, 1, 0), Vec4(inV, 1));
+
147}
+
+
148
+
+ +
150{
+
151 Mat44 m = sRotation(inR);
+
152 m.SetTranslation(inT);
+
153 return m;
+
154}
+
+
155
+
+ +
157{
+
158 Mat44 m = sRotation(inR.Conjugated());
+
159 m.SetTranslation(-m.Multiply3x3(inT));
+
160 return m;
+
161}
+
+
162
+
+
163Mat44 Mat44::sScale(float inScale)
+
164{
+
165 return Mat44(Vec4(inScale, 0, 0, 0), Vec4(0, inScale, 0, 0), Vec4(0, 0, inScale, 0), Vec4(0, 0, 0, 1));
+
166}
+
+
167
+
+ +
169{
+
170 return Mat44(Vec4(inV.GetX(), 0, 0, 0), Vec4(0, inV.GetY(), 0, 0), Vec4(0, 0, inV.GetZ(), 0), Vec4(0, 0, 0, 1));
+
171}
+
+
172
+
+ +
174{
+
175 Vec4 v1(inV1, 0);
+
176 return Mat44(v1 * inV2.SplatX(), v1 * inV2.SplatY(), v1 * inV2.SplatZ(), Vec4(0, 0, 0, 1));
+
177}
+
+
178
+
+ +
180{
+
181#ifdef JPH_USE_SSE4_1
+
182 // Zero out the W component
+
183 __m128 zero = _mm_setzero_ps();
+
184 __m128 v = _mm_blend_ps(inV.mValue, zero, 0b1000);
+
185
+
186 // Negate
+
187 __m128 min_v = _mm_sub_ps(zero, v);
+
188
+
189 return Mat44(
+
190 _mm_shuffle_ps(v, min_v, _MM_SHUFFLE(3, 1, 2, 3)), // [0, z, -y, 0]
+
191 _mm_shuffle_ps(min_v, v, _MM_SHUFFLE(3, 0, 3, 2)), // [-z, 0, x, 0]
+
192 _mm_blend_ps(_mm_shuffle_ps(v, v, _MM_SHUFFLE(3, 3, 3, 1)), _mm_shuffle_ps(min_v, min_v, _MM_SHUFFLE(3, 3, 0, 3)), 0b0010), // [y, -x, 0, 0]
+
193 Vec4(0, 0, 0, 1));
+
194#else
+
195 float x = inV.GetX();
+
196 float y = inV.GetY();
+
197 float z = inV.GetZ();
+
198
+
199 return Mat44(
+
200 Vec4(0, z, -y, 0),
+
201 Vec4(-z, 0, x, 0),
+
202 Vec4(y, -x, 0, 0),
+
203 Vec4(0, 0, 0, 1));
+
204#endif
+
205}
+
+
206
+
+ +
208{
+
209 Vec3 direction = (inTarget - inPos).NormalizedOr(-Vec3::sAxisZ());
+
210 Vec3 right = direction.Cross(inUp).NormalizedOr(Vec3::sAxisX());
+
211 Vec3 up = right.Cross(direction);
+
212
+
213 return Mat44(Vec4(right, 0), Vec4(up, 0), Vec4(-direction, 0), Vec4(inPos, 1)).InversedRotationTranslation();
+
214}
+
+
215
+
+
216Mat44 Mat44::sPerspective(float inFovY, float inAspect, float inNear, float inFar)
+
217{
+
218 float height = 1.0f / Tan(0.5f * inFovY);
+
219 float width = height / inAspect;
+
220 float range = inFar / (inNear - inFar);
+
221
+
222 return Mat44(Vec4(width, 0.0f, 0.0f, 0.0f), Vec4(0.0f, height, 0.0f, 0.0f), Vec4(0.0f, 0.0f, range, -1.0f), Vec4(0.0f, 0.0f, range * inNear, 0.0f));
+
223}
+
+
224
+
+ +
226{
+
227 return UVec4::sAnd(
+
228 UVec4::sAnd(Vec4::sEquals(mCol[0], inM2.mCol[0]), Vec4::sEquals(mCol[1], inM2.mCol[1])),
+
229 UVec4::sAnd(Vec4::sEquals(mCol[2], inM2.mCol[2]), Vec4::sEquals(mCol[3], inM2.mCol[3]))
+
230 ).TestAllTrue();
+
231}
+
+
232
+
+
233bool Mat44::IsClose(Mat44Arg inM2, float inMaxDistSq) const
+
234{
+
235 for (int i = 0; i < 4; ++i)
+
236 if (!mCol[i].IsClose(inM2.mCol[i], inMaxDistSq))
+
237 return false;
+
238 return true;
+
239}
+
+
240
+
+ +
242{
+
243 Mat44 result;
+
244#if defined(JPH_USE_SSE)
+
245 for (int i = 0; i < 4; ++i)
+
246 {
+
247 __m128 c = inM.mCol[i].mValue;
+
248 __m128 t = _mm_mul_ps(mCol[0].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(0, 0, 0, 0)));
+
249 t = _mm_add_ps(t, _mm_mul_ps(mCol[1].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(1, 1, 1, 1))));
+
250 t = _mm_add_ps(t, _mm_mul_ps(mCol[2].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(2, 2, 2, 2))));
+
251 t = _mm_add_ps(t, _mm_mul_ps(mCol[3].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(3, 3, 3, 3))));
+
252 result.mCol[i].mValue = t;
+
253 }
+
254#elif defined(JPH_USE_NEON)
+
255 for (int i = 0; i < 4; ++i)
+
256 {
+
257 Type c = inM.mCol[i].mValue;
+
258 Type t = vmulq_f32(mCol[0].mValue, vdupq_laneq_f32(c, 0));
+
259 t = vmlaq_f32(t, mCol[1].mValue, vdupq_laneq_f32(c, 1));
+
260 t = vmlaq_f32(t, mCol[2].mValue, vdupq_laneq_f32(c, 2));
+
261 t = vmlaq_f32(t, mCol[3].mValue, vdupq_laneq_f32(c, 3));
+
262 result.mCol[i].mValue = t;
+
263 }
+
264#else
+
265 for (int i = 0; i < 4; ++i)
+
266 result.mCol[i] = mCol[0] * inM.mCol[i].mF32[0] + mCol[1] * inM.mCol[i].mF32[1] + mCol[2] * inM.mCol[i].mF32[2] + mCol[3] * inM.mCol[i].mF32[3];
+
267#endif
+
268 return result;
+
269}
+
+
270
+
+ +
272{
+
273#if defined(JPH_USE_SSE)
+
274 __m128 t = _mm_mul_ps(mCol[0].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(0, 0, 0, 0)));
+
275 t = _mm_add_ps(t, _mm_mul_ps(mCol[1].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(1, 1, 1, 1))));
+
276 t = _mm_add_ps(t, _mm_mul_ps(mCol[2].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(2, 2, 2, 2))));
+
277 t = _mm_add_ps(t, mCol[3].mValue);
+
278 return Vec3::sFixW(t);
+
279#elif defined(JPH_USE_NEON)
+
280 Type t = vmulq_f32(mCol[0].mValue, vdupq_laneq_f32(inV.mValue, 0));
+
281 t = vmlaq_f32(t, mCol[1].mValue, vdupq_laneq_f32(inV.mValue, 1));
+
282 t = vmlaq_f32(t, mCol[2].mValue, vdupq_laneq_f32(inV.mValue, 2));
+
283 t = vaddq_f32(t, mCol[3].mValue); // Don't combine this with the first mul into a fused multiply add, causes precision issues
+
284 return Vec3::sFixW(t);
+
285#else
+
286 return Vec3(
+
287 mCol[0].mF32[0] * inV.mF32[0] + mCol[1].mF32[0] * inV.mF32[1] + mCol[2].mF32[0] * inV.mF32[2] + mCol[3].mF32[0],
+
288 mCol[0].mF32[1] * inV.mF32[0] + mCol[1].mF32[1] * inV.mF32[1] + mCol[2].mF32[1] * inV.mF32[2] + mCol[3].mF32[1],
+
289 mCol[0].mF32[2] * inV.mF32[0] + mCol[1].mF32[2] * inV.mF32[1] + mCol[2].mF32[2] * inV.mF32[2] + mCol[3].mF32[2]);
+
290#endif
+
291}
+
+
292
+
+ +
294{
+
295#if defined(JPH_USE_SSE)
+
296 __m128 t = _mm_mul_ps(mCol[0].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(0, 0, 0, 0)));
+
297 t = _mm_add_ps(t, _mm_mul_ps(mCol[1].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(1, 1, 1, 1))));
+
298 t = _mm_add_ps(t, _mm_mul_ps(mCol[2].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(2, 2, 2, 2))));
+
299 t = _mm_add_ps(t, _mm_mul_ps(mCol[3].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(3, 3, 3, 3))));
+
300 return t;
+
301#elif defined(JPH_USE_NEON)
+
302 Type t = vmulq_f32(mCol[0].mValue, vdupq_laneq_f32(inV.mValue, 0));
+
303 t = vmlaq_f32(t, mCol[1].mValue, vdupq_laneq_f32(inV.mValue, 1));
+
304 t = vmlaq_f32(t, mCol[2].mValue, vdupq_laneq_f32(inV.mValue, 2));
+
305 t = vmlaq_f32(t, mCol[3].mValue, vdupq_laneq_f32(inV.mValue, 3));
+
306 return t;
+
307#else
+
308 return Vec4(
+
309 mCol[0].mF32[0] * inV.mF32[0] + mCol[1].mF32[0] * inV.mF32[1] + mCol[2].mF32[0] * inV.mF32[2] + mCol[3].mF32[0] * inV.mF32[3],
+
310 mCol[0].mF32[1] * inV.mF32[0] + mCol[1].mF32[1] * inV.mF32[1] + mCol[2].mF32[1] * inV.mF32[2] + mCol[3].mF32[1] * inV.mF32[3],
+
311 mCol[0].mF32[2] * inV.mF32[0] + mCol[1].mF32[2] * inV.mF32[1] + mCol[2].mF32[2] * inV.mF32[2] + mCol[3].mF32[2] * inV.mF32[3],
+
312 mCol[0].mF32[3] * inV.mF32[0] + mCol[1].mF32[3] * inV.mF32[1] + mCol[2].mF32[3] * inV.mF32[2] + mCol[3].mF32[3] * inV.mF32[3]);
+
313#endif
+
314}
+
+
315
+
+ +
317{
+
318#if defined(JPH_USE_SSE)
+
319 __m128 t = _mm_mul_ps(mCol[0].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(0, 0, 0, 0)));
+
320 t = _mm_add_ps(t, _mm_mul_ps(mCol[1].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(1, 1, 1, 1))));
+
321 t = _mm_add_ps(t, _mm_mul_ps(mCol[2].mValue, _mm_shuffle_ps(inV.mValue, inV.mValue, _MM_SHUFFLE(2, 2, 2, 2))));
+
322 return Vec3::sFixW(t);
+
323#elif defined(JPH_USE_NEON)
+
324 Type t = vmulq_f32(mCol[0].mValue, vdupq_laneq_f32(inV.mValue, 0));
+
325 t = vmlaq_f32(t, mCol[1].mValue, vdupq_laneq_f32(inV.mValue, 1));
+
326 t = vmlaq_f32(t, mCol[2].mValue, vdupq_laneq_f32(inV.mValue, 2));
+
327 return Vec3::sFixW(t);
+
328#else
+
329 return Vec3(
+
330 mCol[0].mF32[0] * inV.mF32[0] + mCol[1].mF32[0] * inV.mF32[1] + mCol[2].mF32[0] * inV.mF32[2],
+
331 mCol[0].mF32[1] * inV.mF32[0] + mCol[1].mF32[1] * inV.mF32[1] + mCol[2].mF32[1] * inV.mF32[2],
+
332 mCol[0].mF32[2] * inV.mF32[0] + mCol[1].mF32[2] * inV.mF32[1] + mCol[2].mF32[2] * inV.mF32[2]);
+
333#endif
+
334}
+
+
335
+
+ +
337{
+
338#if defined(JPH_USE_SSE4_1)
+
339 __m128 x = _mm_dp_ps(mCol[0].mValue, inV.mValue, 0x7f);
+
340 __m128 y = _mm_dp_ps(mCol[1].mValue, inV.mValue, 0x7f);
+
341 __m128 xy = _mm_blend_ps(x, y, 0b0010);
+
342 __m128 z = _mm_dp_ps(mCol[2].mValue, inV.mValue, 0x7f);
+
343 __m128 xyzz = _mm_blend_ps(xy, z, 0b1100);
+
344 return xyzz;
+
345#else
+
346 return Transposed3x3().Multiply3x3(inV);
+
347#endif
+
348}
+
+
349
+
+ +
351{
+
352 JPH_ASSERT(mCol[0][3] == 0.0f);
+
353 JPH_ASSERT(mCol[1][3] == 0.0f);
+
354 JPH_ASSERT(mCol[2][3] == 0.0f);
+
355
+
356 Mat44 result;
+
357#if defined(JPH_USE_SSE)
+
358 for (int i = 0; i < 3; ++i)
+
359 {
+
360 __m128 c = inM.mCol[i].mValue;
+
361 __m128 t = _mm_mul_ps(mCol[0].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(0, 0, 0, 0)));
+
362 t = _mm_add_ps(t, _mm_mul_ps(mCol[1].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(1, 1, 1, 1))));
+
363 t = _mm_add_ps(t, _mm_mul_ps(mCol[2].mValue, _mm_shuffle_ps(c, c, _MM_SHUFFLE(2, 2, 2, 2))));
+
364 result.mCol[i].mValue = t;
+
365 }
+
366#elif defined(JPH_USE_NEON)
+
367 for (int i = 0; i < 3; ++i)
+
368 {
+
369 Type c = inM.mCol[i].mValue;
+
370 Type t = vmulq_f32(mCol[0].mValue, vdupq_laneq_f32(c, 0));
+
371 t = vmlaq_f32(t, mCol[1].mValue, vdupq_laneq_f32(c, 1));
+
372 t = vmlaq_f32(t, mCol[2].mValue, vdupq_laneq_f32(c, 2));
+
373 result.mCol[i].mValue = t;
+
374 }
+
375#else
+
376 for (int i = 0; i < 3; ++i)
+
377 result.mCol[i] = mCol[0] * inM.mCol[i].mF32[0] + mCol[1] * inM.mCol[i].mF32[1] + mCol[2] * inM.mCol[i].mF32[2];
+
378#endif
+
379 result.mCol[3] = Vec4(0, 0, 0, 1);
+
380 return result;
+
381}
+
+
382
+
+ +
384{
+
385 // Transpose left hand side
+
386 Mat44 trans = Transposed3x3();
+
387
+
388 // Do 3x3 matrix multiply
+
389 Mat44 result;
+
390 result.mCol[0] = trans.mCol[0] * inM.mCol[0].SplatX() + trans.mCol[1] * inM.mCol[0].SplatY() + trans.mCol[2] * inM.mCol[0].SplatZ();
+
391 result.mCol[1] = trans.mCol[0] * inM.mCol[1].SplatX() + trans.mCol[1] * inM.mCol[1].SplatY() + trans.mCol[2] * inM.mCol[1].SplatZ();
+
392 result.mCol[2] = trans.mCol[0] * inM.mCol[2].SplatX() + trans.mCol[1] * inM.mCol[2].SplatY() + trans.mCol[2] * inM.mCol[2].SplatZ();
+
393 result.mCol[3] = Vec4(0, 0, 0, 1);
+
394 return result;
+
395}
+
+
396
+
+ +
398{
+
399 JPH_ASSERT(mCol[0][3] == 0.0f);
+
400 JPH_ASSERT(mCol[1][3] == 0.0f);
+
401 JPH_ASSERT(mCol[2][3] == 0.0f);
+
402
+
403 Mat44 result;
+
404 result.mCol[0] = mCol[0] * inM.mCol[0].SplatX() + mCol[1] * inM.mCol[1].SplatX() + mCol[2] * inM.mCol[2].SplatX();
+
405 result.mCol[1] = mCol[0] * inM.mCol[0].SplatY() + mCol[1] * inM.mCol[1].SplatY() + mCol[2] * inM.mCol[2].SplatY();
+
406 result.mCol[2] = mCol[0] * inM.mCol[0].SplatZ() + mCol[1] * inM.mCol[1].SplatZ() + mCol[2] * inM.mCol[2].SplatZ();
+
407 result.mCol[3] = Vec4(0, 0, 0, 1);
+
408 return result;
+
409}
+
+
410
+
+
411Mat44 Mat44::operator * (float inV) const
+
412{
+
413 Vec4 multiplier = Vec4::sReplicate(inV);
+
414
+
415 Mat44 result;
+
416 for (int c = 0; c < 4; ++c)
+
417 result.mCol[c] = mCol[c] * multiplier;
+
418 return result;
+
419}
+
+
420
+
+ +
422{
+
423 for (int c = 0; c < 4; ++c)
+
424 mCol[c] *= inV;
+
425
+
426 return *this;
+
427}
+
+
428
+
+ +
430{
+
431 Mat44 result;
+
432 for (int i = 0; i < 4; ++i)
+
433 result.mCol[i] = mCol[i] + inM.mCol[i];
+
434 return result;
+
435}
+
+
436
+
+ +
438{
+
439 Mat44 result;
+
440 for (int i = 0; i < 4; ++i)
+
441 result.mCol[i] = -mCol[i];
+
442 return result;
+
443}
+
+
444
+
+ +
446{
+
447 Mat44 result;
+
448 for (int i = 0; i < 4; ++i)
+
449 result.mCol[i] = mCol[i] - inM.mCol[i];
+
450 return result;
+
451}
+
+
452
+
+ +
454{
+
455 for (int c = 0; c < 4; ++c)
+
456 mCol[c] += inM.mCol[c];
+
457
+
458 return *this;
+
459}
+
+
460
+
+ +
462{
+
463 for (int c = 0; c < 4; ++c)
+
464 mCol[c].StoreFloat4(outV + c);
+
465}
+
+
466
+
+ +
468{
+
469#if defined(JPH_USE_SSE)
+
470 __m128 tmp1 = _mm_shuffle_ps(mCol[0].mValue, mCol[1].mValue, _MM_SHUFFLE(1, 0, 1, 0));
+
471 __m128 tmp3 = _mm_shuffle_ps(mCol[0].mValue, mCol[1].mValue, _MM_SHUFFLE(3, 2, 3, 2));
+
472 __m128 tmp2 = _mm_shuffle_ps(mCol[2].mValue, mCol[3].mValue, _MM_SHUFFLE(1, 0, 1, 0));
+
473 __m128 tmp4 = _mm_shuffle_ps(mCol[2].mValue, mCol[3].mValue, _MM_SHUFFLE(3, 2, 3, 2));
+
474
+
475 Mat44 result;
+
476 result.mCol[0].mValue = _mm_shuffle_ps(tmp1, tmp2, _MM_SHUFFLE(2, 0, 2, 0));
+
477 result.mCol[1].mValue = _mm_shuffle_ps(tmp1, tmp2, _MM_SHUFFLE(3, 1, 3, 1));
+
478 result.mCol[2].mValue = _mm_shuffle_ps(tmp3, tmp4, _MM_SHUFFLE(2, 0, 2, 0));
+
479 result.mCol[3].mValue = _mm_shuffle_ps(tmp3, tmp4, _MM_SHUFFLE(3, 1, 3, 1));
+
480 return result;
+
481#elif defined(JPH_USE_NEON)
+
482 float32x4x2_t tmp1 = vzipq_f32(mCol[0].mValue, mCol[2].mValue);
+
483 float32x4x2_t tmp2 = vzipq_f32(mCol[1].mValue, mCol[3].mValue);
+
484 float32x4x2_t tmp3 = vzipq_f32(tmp1.val[0], tmp2.val[0]);
+
485 float32x4x2_t tmp4 = vzipq_f32(tmp1.val[1], tmp2.val[1]);
+
486
+
487 Mat44 result;
+
488 result.mCol[0].mValue = tmp3.val[0];
+
489 result.mCol[1].mValue = tmp3.val[1];
+
490 result.mCol[2].mValue = tmp4.val[0];
+
491 result.mCol[3].mValue = tmp4.val[1];
+
492 return result;
+
493#else
+
494 Mat44 result;
+
495 for (int c = 0; c < 4; ++c)
+
496 for (int r = 0; r < 4; ++r)
+
497 result.mCol[r].mF32[c] = mCol[c].mF32[r];
+
498 return result;
+
499#endif
+
500}
+
+
501
+
+ +
503{
+
504#if defined(JPH_USE_SSE)
+
505 __m128 zero = _mm_setzero_ps();
+
506 __m128 tmp1 = _mm_shuffle_ps(mCol[0].mValue, mCol[1].mValue, _MM_SHUFFLE(1, 0, 1, 0));
+
507 __m128 tmp3 = _mm_shuffle_ps(mCol[0].mValue, mCol[1].mValue, _MM_SHUFFLE(3, 2, 3, 2));
+
508 __m128 tmp2 = _mm_shuffle_ps(mCol[2].mValue, zero, _MM_SHUFFLE(1, 0, 1, 0));
+
509 __m128 tmp4 = _mm_shuffle_ps(mCol[2].mValue, zero, _MM_SHUFFLE(3, 2, 3, 2));
+
510
+
511 Mat44 result;
+
512 result.mCol[0].mValue = _mm_shuffle_ps(tmp1, tmp2, _MM_SHUFFLE(2, 0, 2, 0));
+
513 result.mCol[1].mValue = _mm_shuffle_ps(tmp1, tmp2, _MM_SHUFFLE(3, 1, 3, 1));
+
514 result.mCol[2].mValue = _mm_shuffle_ps(tmp3, tmp4, _MM_SHUFFLE(2, 0, 2, 0));
+
515#elif defined(JPH_USE_NEON)
+
516 float32x4x2_t tmp1 = vzipq_f32(mCol[0].mValue, mCol[2].mValue);
+
517 float32x4x2_t tmp2 = vzipq_f32(mCol[1].mValue, vdupq_n_f32(0));
+
518 float32x4x2_t tmp3 = vzipq_f32(tmp1.val[0], tmp2.val[0]);
+
519 float32x4x2_t tmp4 = vzipq_f32(tmp1.val[1], tmp2.val[1]);
+
520
+
521 Mat44 result;
+
522 result.mCol[0].mValue = tmp3.val[0];
+
523 result.mCol[1].mValue = tmp3.val[1];
+
524 result.mCol[2].mValue = tmp4.val[0];
+
525#else
+
526 Mat44 result;
+
527 for (int c = 0; c < 3; ++c)
+
528 {
+
529 for (int r = 0; r < 3; ++r)
+
530 result.mCol[c].mF32[r] = mCol[r].mF32[c];
+
531 result.mCol[c].mF32[3] = 0;
+
532 }
+
533#endif
+
534 result.mCol[3] = Vec4(0, 0, 0, 1);
+
535 return result;
+
536}
+
+
537
+
+ +
539{
+
540#if defined(JPH_USE_SSE)
+
541 // Algorithm from: http://download.intel.com/design/PentiumIII/sml/24504301.pdf
+
542 // Streaming SIMD Extensions - Inverse of 4x4 Matrix
+
543 // Adapted to load data using _mm_shuffle_ps instead of loading from memory
+
544 // Replaced _mm_rcp_ps with _mm_div_ps for better accuracy
+
545
+
546 __m128 tmp1 = _mm_shuffle_ps(mCol[0].mValue, mCol[1].mValue, _MM_SHUFFLE(1, 0, 1, 0));
+
547 __m128 row1 = _mm_shuffle_ps(mCol[2].mValue, mCol[3].mValue, _MM_SHUFFLE(1, 0, 1, 0));
+
548 __m128 row0 = _mm_shuffle_ps(tmp1, row1, _MM_SHUFFLE(2, 0, 2, 0));
+
549 row1 = _mm_shuffle_ps(row1, tmp1, _MM_SHUFFLE(3, 1, 3, 1));
+
550 tmp1 = _mm_shuffle_ps(mCol[0].mValue, mCol[1].mValue, _MM_SHUFFLE(3, 2, 3, 2));
+
551 __m128 row3 = _mm_shuffle_ps(mCol[2].mValue, mCol[3].mValue, _MM_SHUFFLE(3, 2, 3, 2));
+
552 __m128 row2 = _mm_shuffle_ps(tmp1, row3, _MM_SHUFFLE(2, 0, 2, 0));
+
553 row3 = _mm_shuffle_ps(row3, tmp1, _MM_SHUFFLE(3, 1, 3, 1));
+
554
+
555 tmp1 = _mm_mul_ps(row2, row3);
+
556 tmp1 = _mm_shuffle_ps(tmp1, tmp1, _MM_SHUFFLE(2, 3, 0, 1));
+
557 __m128 minor0 = _mm_mul_ps(row1, tmp1);
+
558 __m128 minor1 = _mm_mul_ps(row0, tmp1);
+
559 tmp1 = _mm_shuffle_ps(tmp1, tmp1, _MM_SHUFFLE(1, 0, 3, 2));
+
560 minor0 = _mm_sub_ps(_mm_mul_ps(row1, tmp1), minor0);
+
561 minor1 = _mm_sub_ps(_mm_mul_ps(row0, tmp1), minor1);
+
562 minor1 = _mm_shuffle_ps(minor1, minor1, _MM_SHUFFLE(1, 0, 3, 2));
+
563
+
564 tmp1 = _mm_mul_ps(row1, row2);
+
565 tmp1 = _mm_shuffle_ps(tmp1, tmp1, _MM_SHUFFLE(2, 3, 0, 1));
+
566 minor0 = _mm_add_ps(_mm_mul_ps(row3, tmp1), minor0);
+
567 __m128 minor3 = _mm_mul_ps(row0, tmp1);
+
568 tmp1 = _mm_shuffle_ps(tmp1, tmp1, _MM_SHUFFLE(1, 0, 3, 2));
+
569 minor0 = _mm_sub_ps(minor0, _mm_mul_ps(row3, tmp1));
+
570 minor3 = _mm_sub_ps(_mm_mul_ps(row0, tmp1), minor3);
+
571 minor3 = _mm_shuffle_ps(minor3, minor3, _MM_SHUFFLE(1, 0, 3, 2));
+
572
+
573 tmp1 = _mm_mul_ps(_mm_shuffle_ps(row1, row1, _MM_SHUFFLE(1, 0, 3, 2)), row3);
+
574 tmp1 = _mm_shuffle_ps(tmp1, tmp1, _MM_SHUFFLE(2, 3, 0, 1));
+
575 row2 = _mm_shuffle_ps(row2, row2, _MM_SHUFFLE(1, 0, 3, 2));
+
576 minor0 = _mm_add_ps(_mm_mul_ps(row2, tmp1), minor0);
+
577 __m128 minor2 = _mm_mul_ps(row0, tmp1);
+
578 tmp1 = _mm_shuffle_ps(tmp1, tmp1, _MM_SHUFFLE(1, 0, 3, 2));
+
579 minor0 = _mm_sub_ps(minor0, _mm_mul_ps(row2, tmp1));
+
580 minor2 = _mm_sub_ps(_mm_mul_ps(row0, tmp1), minor2);
+
581 minor2 = _mm_shuffle_ps(minor2, minor2, _MM_SHUFFLE(1, 0, 3, 2));
+
582
+
583 tmp1 = _mm_mul_ps(row0, row1);
+
584 tmp1 = _mm_shuffle_ps(tmp1, tmp1, _MM_SHUFFLE(2, 3, 0, 1));
+
585 minor2 = _mm_add_ps(_mm_mul_ps(row3, tmp1), minor2);
+
586 minor3 = _mm_sub_ps(_mm_mul_ps(row2, tmp1), minor3);
+
587 tmp1 = _mm_shuffle_ps(tmp1, tmp1, _MM_SHUFFLE(1, 0, 3, 2));
+
588 minor2 = _mm_sub_ps(_mm_mul_ps(row3, tmp1), minor2);
+
589 minor3 = _mm_sub_ps(minor3, _mm_mul_ps(row2, tmp1));
+
590
+
591 tmp1 = _mm_mul_ps(row0, row3);
+
592 tmp1 = _mm_shuffle_ps(tmp1, tmp1, _MM_SHUFFLE(2, 3, 0, 1));
+
593 minor1 = _mm_sub_ps(minor1, _mm_mul_ps(row2, tmp1));
+
594 minor2 = _mm_add_ps(_mm_mul_ps(row1, tmp1), minor2);
+
595 tmp1 = _mm_shuffle_ps(tmp1, tmp1, _MM_SHUFFLE(1, 0, 3, 2));
+
596 minor1 = _mm_add_ps(_mm_mul_ps(row2, tmp1), minor1);
+
597 minor2 = _mm_sub_ps(minor2, _mm_mul_ps(row1, tmp1));
+
598
+
599 tmp1 = _mm_mul_ps(row0, row2);
+
600 tmp1 = _mm_shuffle_ps(tmp1, tmp1, _MM_SHUFFLE(2, 3, 0, 1));
+
601 minor1 = _mm_add_ps(_mm_mul_ps(row3, tmp1), minor1);
+
602 minor3 = _mm_sub_ps(minor3, _mm_mul_ps(row1, tmp1));
+
603 tmp1 = _mm_shuffle_ps(tmp1, tmp1, _MM_SHUFFLE(1, 0, 3, 2));
+
604 minor1 = _mm_sub_ps(minor1, _mm_mul_ps(row3, tmp1));
+
605 minor3 = _mm_add_ps(_mm_mul_ps(row1, tmp1), minor3);
+
606
+
607 __m128 det = _mm_mul_ps(row0, minor0);
+
608 det = _mm_add_ps(_mm_shuffle_ps(det, det, _MM_SHUFFLE(2, 3, 0, 1)), det); // Original code did (x + z) + (y + w), changed to (x + y) + (z + w) to match the ARM code below and make the result cross platform deterministic
+
609 det = _mm_add_ss(_mm_shuffle_ps(det, det, _MM_SHUFFLE(1, 0, 3, 2)), det);
+
610 det = _mm_div_ss(_mm_set_ss(1.0f), det);
+
611 det = _mm_shuffle_ps(det, det, _MM_SHUFFLE(0, 0, 0, 0));
+
612
+
613 Mat44 result;
+
614 result.mCol[0].mValue = _mm_mul_ps(det, minor0);
+
615 result.mCol[1].mValue = _mm_mul_ps(det, minor1);
+
616 result.mCol[2].mValue = _mm_mul_ps(det, minor2);
+
617 result.mCol[3].mValue = _mm_mul_ps(det, minor3);
+
618 return result;
+
619#elif defined(JPH_USE_NEON)
+
620 // Adapted from the SSE version, there's surprising few articles about efficient ways of calculating an inverse for ARM on the internet
+
621 Type tmp1 = JPH_NEON_SHUFFLE_F32x4(mCol[0].mValue, mCol[1].mValue, 0, 1, 4, 5);
+
622 Type row1 = JPH_NEON_SHUFFLE_F32x4(mCol[2].mValue, mCol[3].mValue, 0, 1, 4, 5);
+
623 Type row0 = JPH_NEON_SHUFFLE_F32x4(tmp1, row1, 0, 2, 4, 6);
+
624 row1 = JPH_NEON_SHUFFLE_F32x4(row1, tmp1, 1, 3, 5, 7);
+
625 tmp1 = JPH_NEON_SHUFFLE_F32x4(mCol[0].mValue, mCol[1].mValue, 2, 3, 6, 7);
+
626 Type row3 = JPH_NEON_SHUFFLE_F32x4(mCol[2].mValue, mCol[3].mValue, 2, 3, 6, 7);
+
627 Type row2 = JPH_NEON_SHUFFLE_F32x4(tmp1, row3, 0, 2, 4, 6);
+
628 row3 = JPH_NEON_SHUFFLE_F32x4(row3, tmp1, 1, 3, 5, 7);
+
629
+
630 tmp1 = vmulq_f32(row2, row3);
+
631 tmp1 = JPH_NEON_SHUFFLE_F32x4(tmp1, tmp1, 1, 0, 3, 2);
+
632 Type minor0 = vmulq_f32(row1, tmp1);
+
633 Type minor1 = vmulq_f32(row0, tmp1);
+
634 tmp1 = JPH_NEON_SHUFFLE_F32x4(tmp1, tmp1, 2, 3, 0, 1);
+
635 minor0 = vsubq_f32(vmulq_f32(row1, tmp1), minor0);
+
636 minor1 = vsubq_f32(vmulq_f32(row0, tmp1), minor1);
+
637 minor1 = JPH_NEON_SHUFFLE_F32x4(minor1, minor1, 2, 3, 0, 1);
+
638
+
639 tmp1 = vmulq_f32(row1, row2);
+
640 tmp1 = JPH_NEON_SHUFFLE_F32x4(tmp1, tmp1, 1, 0, 3, 2);
+
641 minor0 = vaddq_f32(vmulq_f32(row3, tmp1), minor0);
+
642 Type minor3 = vmulq_f32(row0, tmp1);
+
643 tmp1 = JPH_NEON_SHUFFLE_F32x4(tmp1, tmp1, 2, 3, 0, 1);
+
644 minor0 = vsubq_f32(minor0, vmulq_f32(row3, tmp1));
+
645 minor3 = vsubq_f32(vmulq_f32(row0, tmp1), minor3);
+
646 minor3 = JPH_NEON_SHUFFLE_F32x4(minor3, minor3, 2, 3, 0, 1);
+
647
+
648 tmp1 = JPH_NEON_SHUFFLE_F32x4(row1, row1, 2, 3, 0, 1);
+
649 tmp1 = vmulq_f32(tmp1, row3);
+
650 tmp1 = JPH_NEON_SHUFFLE_F32x4(tmp1, tmp1, 1, 0, 3, 2);
+
651 row2 = JPH_NEON_SHUFFLE_F32x4(row2, row2, 2, 3, 0, 1);
+
652 minor0 = vaddq_f32(vmulq_f32(row2, tmp1), minor0);
+
653 Type minor2 = vmulq_f32(row0, tmp1);
+
654 tmp1 = JPH_NEON_SHUFFLE_F32x4(tmp1, tmp1, 2, 3, 0, 1);
+
655 minor0 = vsubq_f32(minor0, vmulq_f32(row2, tmp1));
+
656 minor2 = vsubq_f32(vmulq_f32(row0, tmp1), minor2);
+
657 minor2 = JPH_NEON_SHUFFLE_F32x4(minor2, minor2, 2, 3, 0, 1);
+
658
+
659 tmp1 = vmulq_f32(row0, row1);
+
660 tmp1 = JPH_NEON_SHUFFLE_F32x4(tmp1, tmp1, 1, 0, 3, 2);
+
661 minor2 = vaddq_f32(vmulq_f32(row3, tmp1), minor2);
+
662 minor3 = vsubq_f32(vmulq_f32(row2, tmp1), minor3);
+
663 tmp1 = JPH_NEON_SHUFFLE_F32x4(tmp1, tmp1, 2, 3, 0, 1);
+
664 minor2 = vsubq_f32(vmulq_f32(row3, tmp1), minor2);
+
665 minor3 = vsubq_f32(minor3, vmulq_f32(row2, tmp1));
+
666
+
667 tmp1 = vmulq_f32(row0, row3);
+
668 tmp1 = JPH_NEON_SHUFFLE_F32x4(tmp1, tmp1, 1, 0, 3, 2);
+
669 minor1 = vsubq_f32(minor1, vmulq_f32(row2, tmp1));
+
670 minor2 = vaddq_f32(vmulq_f32(row1, tmp1), minor2);
+
671 tmp1 = JPH_NEON_SHUFFLE_F32x4(tmp1, tmp1, 2, 3, 0, 1);
+
672 minor1 = vaddq_f32(vmulq_f32(row2, tmp1), minor1);
+
673 minor2 = vsubq_f32(minor2, vmulq_f32(row1, tmp1));
+
674
+
675 tmp1 = vmulq_f32(row0, row2);
+
676 tmp1 = JPH_NEON_SHUFFLE_F32x4(tmp1, tmp1, 1, 0, 3, 2);
+
677 minor1 = vaddq_f32(vmulq_f32(row3, tmp1), minor1);
+
678 minor3 = vsubq_f32(minor3, vmulq_f32(row1, tmp1));
+
679 tmp1 = JPH_NEON_SHUFFLE_F32x4(tmp1, tmp1, 2, 3, 0, 1);
+
680 minor1 = vsubq_f32(minor1, vmulq_f32(row3, tmp1));
+
681 minor3 = vaddq_f32(vmulq_f32(row1, tmp1), minor3);
+
682
+
683 Type det = vmulq_f32(row0, minor0);
+
684 det = vdupq_n_f32(vaddvq_f32(det));
+
685 det = vdivq_f32(vdupq_n_f32(1.0f), det);
+
686
+
687 Mat44 result;
+
688 result.mCol[0].mValue = vmulq_f32(det, minor0);
+
689 result.mCol[1].mValue = vmulq_f32(det, minor1);
+
690 result.mCol[2].mValue = vmulq_f32(det, minor2);
+
691 result.mCol[3].mValue = vmulq_f32(det, minor3);
+
692 return result;
+
693#else
+
694 float m00 = JPH_EL(0, 0), m10 = JPH_EL(1, 0), m20 = JPH_EL(2, 0), m30 = JPH_EL(3, 0);
+
695 float m01 = JPH_EL(0, 1), m11 = JPH_EL(1, 1), m21 = JPH_EL(2, 1), m31 = JPH_EL(3, 1);
+
696 float m02 = JPH_EL(0, 2), m12 = JPH_EL(1, 2), m22 = JPH_EL(2, 2), m32 = JPH_EL(3, 2);
+
697 float m03 = JPH_EL(0, 3), m13 = JPH_EL(1, 3), m23 = JPH_EL(2, 3), m33 = JPH_EL(3, 3);
+
698
+
699 float m10211120 = m10 * m21 - m11 * m20;
+
700 float m10221220 = m10 * m22 - m12 * m20;
+
701 float m10231320 = m10 * m23 - m13 * m20;
+
702 float m10311130 = m10 * m31 - m11 * m30;
+
703 float m10321230 = m10 * m32 - m12 * m30;
+
704 float m10331330 = m10 * m33 - m13 * m30;
+
705 float m11221221 = m11 * m22 - m12 * m21;
+
706 float m11231321 = m11 * m23 - m13 * m21;
+
707 float m11321231 = m11 * m32 - m12 * m31;
+
708 float m11331331 = m11 * m33 - m13 * m31;
+
709 float m12231322 = m12 * m23 - m13 * m22;
+
710 float m12331332 = m12 * m33 - m13 * m32;
+
711 float m20312130 = m20 * m31 - m21 * m30;
+
712 float m20322230 = m20 * m32 - m22 * m30;
+
713 float m20332330 = m20 * m33 - m23 * m30;
+
714 float m21322231 = m21 * m32 - m22 * m31;
+
715 float m21332331 = m21 * m33 - m23 * m31;
+
716 float m22332332 = m22 * m33 - m23 * m32;
+
717
+
718 Vec4 col0(m11 * m22332332 - m12 * m21332331 + m13 * m21322231, -m10 * m22332332 + m12 * m20332330 - m13 * m20322230, m10 * m21332331 - m11 * m20332330 + m13 * m20312130, -m10 * m21322231 + m11 * m20322230 - m12 * m20312130);
+
719 Vec4 col1(-m01 * m22332332 + m02 * m21332331 - m03 * m21322231, m00 * m22332332 - m02 * m20332330 + m03 * m20322230, -m00 * m21332331 + m01 * m20332330 - m03 * m20312130, m00 * m21322231 - m01 * m20322230 + m02 * m20312130);
+
720 Vec4 col2(m01 * m12331332 - m02 * m11331331 + m03 * m11321231, -m00 * m12331332 + m02 * m10331330 - m03 * m10321230, m00 * m11331331 - m01 * m10331330 + m03 * m10311130, -m00 * m11321231 + m01 * m10321230 - m02 * m10311130);
+
721 Vec4 col3(-m01 * m12231322 + m02 * m11231321 - m03 * m11221221, m00 * m12231322 - m02 * m10231320 + m03 * m10221220, -m00 * m11231321 + m01 * m10231320 - m03 * m10211120, m00 * m11221221 - m01 * m10221220 + m02 * m10211120);
+
722
+
723 float det = m00 * col0.mF32[0] + m01 * col0.mF32[1] + m02 * col0.mF32[2] + m03 * col0.mF32[3];
+
724
+
725 return Mat44(col0 / det, col1 / det, col2 / det, col3 / det);
+
726#endif
+
727}
+
+
728
+
+ +
730{
+
731 Mat44 m = Transposed3x3();
+ +
733 return m;
+
734}
+
+
735
+
+ +
737{
+
738 return GetAxisX().Dot(GetAxisY().Cross(GetAxisZ()));
+
739}
+
+
740
+
+ +
742{
+
743 return Mat44(
+
744 Vec4(JPH_EL(1, 1), JPH_EL(1, 2), JPH_EL(1, 0), 0) * Vec4(JPH_EL(2, 2), JPH_EL(2, 0), JPH_EL(2, 1), 0)
+
745 - Vec4(JPH_EL(1, 2), JPH_EL(1, 0), JPH_EL(1, 1), 0) * Vec4(JPH_EL(2, 1), JPH_EL(2, 2), JPH_EL(2, 0), 0),
+
746 Vec4(JPH_EL(0, 2), JPH_EL(0, 0), JPH_EL(0, 1), 0) * Vec4(JPH_EL(2, 1), JPH_EL(2, 2), JPH_EL(2, 0), 0)
+
747 - Vec4(JPH_EL(0, 1), JPH_EL(0, 2), JPH_EL(0, 0), 0) * Vec4(JPH_EL(2, 2), JPH_EL(2, 0), JPH_EL(2, 1), 0),
+
748 Vec4(JPH_EL(0, 1), JPH_EL(0, 2), JPH_EL(0, 0), 0) * Vec4(JPH_EL(1, 2), JPH_EL(1, 0), JPH_EL(1, 1), 0)
+
749 - Vec4(JPH_EL(0, 2), JPH_EL(0, 0), JPH_EL(0, 1), 0) * Vec4(JPH_EL(1, 1), JPH_EL(1, 2), JPH_EL(1, 0), 0),
+
750 Vec4(0, 0, 0, 1));
+
751}
+
+
752
+
+ +
754{
+
755 float det = GetDeterminant3x3();
+
756
+
757 return Mat44(
+
758 (Vec4(JPH_EL(1, 1), JPH_EL(1, 2), JPH_EL(1, 0), 0) * Vec4(JPH_EL(2, 2), JPH_EL(2, 0), JPH_EL(2, 1), 0)
+
759 - Vec4(JPH_EL(1, 2), JPH_EL(1, 0), JPH_EL(1, 1), 0) * Vec4(JPH_EL(2, 1), JPH_EL(2, 2), JPH_EL(2, 0), 0)) / det,
+
760 (Vec4(JPH_EL(0, 2), JPH_EL(0, 0), JPH_EL(0, 1), 0) * Vec4(JPH_EL(2, 1), JPH_EL(2, 2), JPH_EL(2, 0), 0)
+
761 - Vec4(JPH_EL(0, 1), JPH_EL(0, 2), JPH_EL(0, 0), 0) * Vec4(JPH_EL(2, 2), JPH_EL(2, 0), JPH_EL(2, 1), 0)) / det,
+
762 (Vec4(JPH_EL(0, 1), JPH_EL(0, 2), JPH_EL(0, 0), 0) * Vec4(JPH_EL(1, 2), JPH_EL(1, 0), JPH_EL(1, 1), 0)
+
763 - Vec4(JPH_EL(0, 2), JPH_EL(0, 0), JPH_EL(0, 1), 0) * Vec4(JPH_EL(1, 1), JPH_EL(1, 2), JPH_EL(1, 0), 0)) / det,
+
764 Vec4(0, 0, 0, 1));
+
765}
+
+
766
+
+ +
768{
+
769 float det = inM.GetDeterminant3x3();
+
770
+
771 // If the determinant is zero the matrix is singular and we return false
+
772 if (det == 0.0f)
+
773 return false;
+
774
+
775 // Finish calculating the inverse
+
776 *this = inM.Adjointed3x3();
+
777 mCol[0] /= det;
+
778 mCol[1] /= det;
+
779 mCol[2] /= det;
+
780 return true;
+
781}
+
+
782
+
+ +
784{
+
785 float tr = mCol[0].mF32[0] + mCol[1].mF32[1] + mCol[2].mF32[2];
+
786
+
787 if (tr >= 0.0f)
+
788 {
+
789 float s = sqrt(tr + 1.0f);
+
790 float is = 0.5f / s;
+
791 return Quat(
+
792 (mCol[1].mF32[2] - mCol[2].mF32[1]) * is,
+
793 (mCol[2].mF32[0] - mCol[0].mF32[2]) * is,
+
794 (mCol[0].mF32[1] - mCol[1].mF32[0]) * is,
+
795 0.5f * s);
+
796 }
+
797 else
+
798 {
+
799 int i = 0;
+
800 if (mCol[1].mF32[1] > mCol[0].mF32[0]) i = 1;
+
801 if (mCol[2].mF32[2] > mCol[i].mF32[i]) i = 2;
+
802
+
803 if (i == 0)
+
804 {
+
805 float s = sqrt(mCol[0].mF32[0] - (mCol[1].mF32[1] + mCol[2].mF32[2]) + 1);
+
806 float is = 0.5f / s;
+
807 return Quat(
+
808 0.5f * s,
+
809 (mCol[1].mF32[0] + mCol[0].mF32[1]) * is,
+
810 (mCol[0].mF32[2] + mCol[2].mF32[0]) * is,
+
811 (mCol[1].mF32[2] - mCol[2].mF32[1]) * is);
+
812 }
+
813 else if (i == 1)
+
814 {
+
815 float s = sqrt(mCol[1].mF32[1] - (mCol[2].mF32[2] + mCol[0].mF32[0]) + 1);
+
816 float is = 0.5f / s;
+
817 return Quat(
+
818 (mCol[1].mF32[0] + mCol[0].mF32[1]) * is,
+
819 0.5f * s,
+
820 (mCol[2].mF32[1] + mCol[1].mF32[2]) * is,
+
821 (mCol[2].mF32[0] - mCol[0].mF32[2]) * is);
+
822 }
+
823 else
+
824 {
+
825 JPH_ASSERT(i == 2);
+
826
+
827 float s = sqrt(mCol[2].mF32[2] - (mCol[0].mF32[0] + mCol[1].mF32[1]) + 1);
+
828 float is = 0.5f / s;
+
829 return Quat(
+
830 (mCol[0].mF32[2] + mCol[2].mF32[0]) * is,
+
831 (mCol[2].mF32[1] + mCol[1].mF32[2]) * is,
+
832 0.5f * s,
+
833 (mCol[0].mF32[1] - mCol[1].mF32[0]) * is);
+
834 }
+
835 }
+
836}
+
+
837
+
+ +
839{
+
840 return Mat44(
+
841 Vec4(1, 1, -1, -1) * inQ.mValue.Swizzle<SWIZZLE_W, SWIZZLE_Z, SWIZZLE_Y, SWIZZLE_X>(),
+
842 Vec4(-1, 1, 1, -1) * inQ.mValue.Swizzle<SWIZZLE_Z, SWIZZLE_W, SWIZZLE_X, SWIZZLE_Y>(),
+
843 Vec4(1, -1, 1, -1) * inQ.mValue.Swizzle<SWIZZLE_Y, SWIZZLE_X, SWIZZLE_W, SWIZZLE_Z>(),
+
844 inQ.mValue);
+
845}
+
+
846
+
+ +
848{
+
849 return Mat44(
+
850 Vec4(1, -1, 1, -1) * inQ.mValue.Swizzle<SWIZZLE_W, SWIZZLE_Z, SWIZZLE_Y, SWIZZLE_X>(),
+
851 Vec4(1, 1, -1, -1) * inQ.mValue.Swizzle<SWIZZLE_Z, SWIZZLE_W, SWIZZLE_X, SWIZZLE_Y>(),
+
852 Vec4(-1, 1, 1, -1) * inQ.mValue.Swizzle<SWIZZLE_Y, SWIZZLE_X, SWIZZLE_W, SWIZZLE_Z>(),
+
853 inQ.mValue);
+
854}
+
+
855
+
+ +
857{
+
858 JPH_ASSERT(mCol[0][3] == 0.0f);
+
859 JPH_ASSERT(mCol[1][3] == 0.0f);
+
860 JPH_ASSERT(mCol[2][3] == 0.0f);
+
861
+
862 return Mat44(mCol[0], mCol[1], mCol[2], Vec4(0, 0, 0, 1));
+
863}
+
+
864
+
+ +
866{
+
867#if defined(JPH_USE_AVX512)
+
868 return Mat44(_mm_maskz_mov_ps(0b0111, mCol[0].mValue),
+
869 _mm_maskz_mov_ps(0b0111, mCol[1].mValue),
+
870 _mm_maskz_mov_ps(0b0111, mCol[2].mValue),
+
871 Vec4(0, 0, 0, 1));
+
872#elif defined(JPH_USE_SSE4_1)
+
873 __m128 zero = _mm_setzero_ps();
+
874 return Mat44(_mm_blend_ps(mCol[0].mValue, zero, 8),
+
875 _mm_blend_ps(mCol[1].mValue, zero, 8),
+
876 _mm_blend_ps(mCol[2].mValue, zero, 8),
+
877 Vec4(0, 0, 0, 1));
+
878#elif defined(JPH_USE_NEON)
+
879 return Mat44(vsetq_lane_f32(0, mCol[0].mValue, 3),
+
880 vsetq_lane_f32(0, mCol[1].mValue, 3),
+
881 vsetq_lane_f32(0, mCol[2].mValue, 3),
+
882 Vec4(0, 0, 0, 1));
+
883#else
+
884 return Mat44(Vec4(mCol[0].mF32[0], mCol[0].mF32[1], mCol[0].mF32[2], 0),
+
885 Vec4(mCol[1].mF32[0], mCol[1].mF32[1], mCol[1].mF32[2], 0),
+
886 Vec4(mCol[2].mF32[0], mCol[2].mF32[1], mCol[2].mF32[2], 0),
+
887 Vec4(0, 0, 0, 1));
+
888#endif
+
889}
+
+
890
+
+ +
892{
+
893 mCol[0] = inRotation.mCol[0];
+
894 mCol[1] = inRotation.mCol[1];
+
895 mCol[2] = inRotation.mCol[2];
+
896}
+
+
897
+
+ +
899{
+
900 return Mat44(mCol[0], mCol[1], mCol[2], Vec4(GetTranslation() + Multiply3x3(inTranslation), 1));
+
901}
+
+
902
+
+ +
904{
+
905 return Mat44(mCol[0], mCol[1], mCol[2], Vec4(GetTranslation() + inTranslation, 1));
+
906}
+
+
907
+
+ +
909{
+
910 return Mat44(inScale.GetX() * mCol[0], inScale.GetY() * mCol[1], inScale.GetZ() * mCol[2], mCol[3]);
+
911}
+
+
912
+
+ +
914{
+
915 Vec4 scale(inScale, 1);
+
916 return Mat44(scale * mCol[0], scale * mCol[1], scale * mCol[2], scale * mCol[3]);
+
917}
+
+
918
+
+ +
920{
+
921 // Start the modified Gram-Schmidt algorithm
+
922 // X axis will just be normalized
+
923 Vec3 x = GetAxisX();
+
924
+
925 // Make Y axis perpendicular to X
+
926 Vec3 y = GetAxisY();
+
927 float x_dot_x = x.LengthSq();
+
928 y -= (x.Dot(y) / x_dot_x) * x;
+
929
+
930 // Make Z axis perpendicular to X
+
931 Vec3 z = GetAxisZ();
+
932 z -= (x.Dot(z) / x_dot_x) * x;
+
933
+
934 // Make Z axis perpendicular to Y
+
935 float y_dot_y = y.LengthSq();
+
936 z -= (y.Dot(z) / y_dot_y) * y;
+
937
+
938 // Determine the scale
+
939 float z_dot_z = z.LengthSq();
+
940 outScale = Vec3(x_dot_x, y_dot_y, z_dot_z).Sqrt();
+
941
+
942 // If the resulting x, y and z vectors don't form a right handed matrix, flip the z axis.
+
943 if (x.Cross(y).Dot(z) < 0.0f)
+
944 outScale.SetZ(-outScale.GetZ());
+
945
+
946 // Determine the rotation and translation
+
947 return Mat44(Vec4(x / outScale.GetX(), 0), Vec4(y / outScale.GetY(), 0), Vec4(z / outScale.GetZ(), 0), GetColumn4(3));
+
948}
+
+
949
+
950#undef JPH_EL
+
951
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_EL(r, c)
Definition Mat44.inl:13
+ +
@ SWIZZLE_Z
Use the Z component.
Definition Swizzle.h:14
+
@ SWIZZLE_W
Use the W component.
Definition Swizzle.h:15
+
@ SWIZZLE_X
Use the X component.
Definition Swizzle.h:12
+
@ SWIZZLE_Y
Use the Y component.
Definition Swizzle.h:13
+
JPH_INLINE float Tan(float inX)
Tangent of x (input in radians)
Definition Trigonometry.h:28
+ + +
Class that holds 4 float values. Convert to Vec4 to perform calculations.
Definition Float4.h:11
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Vec3 GetAxisY() const
Definition Mat44.h:148
+
JPH_INLINE Mat44 PostTranslated(Vec3Arg inTranslation) const
Post multiply by translation matrix: result = Mat44::sTranslation(inTranslation) * this (i....
Definition Mat44.inl:903
+
JPH_INLINE Mat44 PreTranslated(Vec3Arg inTranslation) const
Pre multiply by translation matrix: result = this * Mat44::sTranslation(inTranslation)
Definition Mat44.inl:898
+
JPH_INLINE Vec3 GetAxisZ() const
Definition Mat44.h:150
+
static JPH_INLINE Mat44 sIdentity()
Identity matrix.
Definition Mat44.inl:35
+
JPH_INLINE Mat44 Multiply3x3LeftTransposed(Mat44Arg inM) const
Multiply transpose of 3x3 matrix by 3x3 matrix ( )
Definition Mat44.inl:383
+
static JPH_INLINE Mat44 sZero()
Zero matrix.
Definition Mat44.inl:30
+
JPH_INLINE Quat GetQuaternion() const
Convert to quaternion.
Definition Mat44.inl:783
+
JPH_INLINE void StoreFloat4x4(Float4 *outV) const
Store matrix to memory.
Definition Mat44.inl:461
+
JPH_INLINE Mat44 operator-() const
Negate.
Definition Mat44.inl:437
+
static JPH_INLINE Mat44 sCrossProduct(Vec3Arg inV)
Get matrix that represents a cross product .
Definition Mat44.inl:179
+
JPH_INLINE Mat44 Transposed3x3() const
Transpose 3x3 subpart of matrix.
Definition Mat44.inl:502
+
JPH_INLINE Mat44 & operator*=(float inV)
Multiply matrix with float.
Definition Mat44.inl:421
+
JPH_INLINE float GetDeterminant3x3() const
Get the determinant of a 3x3 matrix.
Definition Mat44.inl:736
+
static JPH_INLINE Mat44 sQuatRightMultiply(QuatArg inQ)
Returns matrix MR so that (where p and q are quaternions)
Definition Mat44.inl:847
+
JPH_INLINE Mat44 Transposed() const
Transpose matrix.
Definition Mat44.inl:467
+
Vec4::Type Type
Definition Mat44.h:18
+
JPH_INLINE Mat44 Adjointed3x3() const
Get the adjoint of a 3x3 matrix.
Definition Mat44.inl:741
+
JPH_INLINE bool operator==(Mat44Arg inM2) const
Comparison.
Definition Mat44.inl:225
+
static JPH_INLINE Mat44 sRotationZ(float inZ)
Definition Mat44.inl:77
+
static JPH_INLINE Mat44 sLoadFloat4x4(const Float4 *inV)
Load 16 floats from memory.
Definition Mat44.inl:45
+
JPH_INLINE Vec3 Multiply3x3Transposed(Vec3Arg inV) const
Multiply vector by only 3x3 part of the transpose of the matrix ( )
Definition Mat44.inl:336
+
static JPH_INLINE Mat44 sOuterProduct(Vec3Arg inV1, Vec3Arg inV2)
Get outer product of inV and inV2 (equivalent to )
Definition Mat44.inl:173
+
static JPH_INLINE Mat44 sLookAt(Vec3Arg inPos, Vec3Arg inTarget, Vec3Arg inUp)
Definition Mat44.inl:207
+
JPH_INLINE Mat44 GetRotation() const
Get rotation part only (note: retains the first 3 values from the bottom row)
Definition Mat44.inl:856
+
JPH_INLINE Mat44 GetRotationSafe() const
Get rotation part only (note: also clears the bottom row)
Definition Mat44.inl:865
+
JPH_INLINE Mat44 Multiply3x3RightTransposed(Mat44Arg inM) const
Multiply 3x3 matrix by the transpose of a 3x3 matrix ( )
Definition Mat44.inl:397
+
static JPH_INLINE Mat44 sNaN()
Matrix filled with NaN's.
Definition Mat44.inl:40
+
JPH_INLINE Mat44 & operator+=(Mat44Arg inM)
Per element addition of matrix.
Definition Mat44.inl:453
+
JPH_INLINE Mat44 PostScaled(Vec3Arg inScale) const
Scale a matrix: result = Mat44::sScale(inScale) * this.
Definition Mat44.inl:913
+
JPH_INLINE bool IsClose(Mat44Arg inM2, float inMaxDistSq=1.0e-12f) const
Test if two matrices are close.
Definition Mat44.inl:233
+
JPH_INLINE bool SetInversed3x3(Mat44Arg inM)
*this = inM.Inversed3x3(), returns false if the matrix is singular in which case *this is unchanged
Definition Mat44.inl:767
+
static JPH_INLINE Mat44 sScale(float inScale)
Get matrix that scales uniformly.
Definition Mat44.inl:163
+
static JPH_INLINE Mat44 sLoadFloat4x4Aligned(const Float4 *inV)
Load 16 floats from memory, 16 bytes aligned.
Definition Mat44.inl:53
+
static JPH_INLINE Mat44 sTranslation(Vec3Arg inV)
Get matrix that translates.
Definition Mat44.inl:144
+
JPH_INLINE Vec4 GetColumn4(uint inCol) const
Definition Mat44.h:160
+
JPH_INLINE Mat44 Decompose(Vec3 &outScale) const
Definition Mat44.inl:919
+
JPH_INLINE Vec3 GetAxisX() const
Access to the columns.
Definition Mat44.h:146
+
JPH_INLINE Mat44 Inversed() const
Inverse 4x4 matrix.
Definition Mat44.inl:538
+
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition Mat44.inl:316
+
static JPH_INLINE Mat44 sRotationTranslation(QuatArg inR, Vec3Arg inT)
Get matrix that rotates and translates.
Definition Mat44.inl:149
+
JPH_INLINE void SetRotation(Mat44Arg inRotation)
Updates the rotation part of this matrix (the first 3 columns)
Definition Mat44.inl:891
+
JPH_INLINE Vec3 GetTranslation() const
Definition Mat44.h:152
+
JPH_INLINE Mat44 operator+(Mat44Arg inM) const
Per element addition of matrix.
Definition Mat44.inl:429
+
static JPH_INLINE Mat44 sRotation(Vec3Arg inAxis, float inAngle)
Rotate around arbitrary axis.
Definition Mat44.inl:139
+
static JPH_INLINE Mat44 sInverseRotationTranslation(QuatArg inR, Vec3Arg inT)
Get inverse matrix of sRotationTranslation.
Definition Mat44.inl:156
+
Mat44()=default
Constructor.
+
JPH_INLINE Mat44 Inversed3x3() const
Inverse 3x3 matrix.
Definition Mat44.inl:753
+
static JPH_INLINE Mat44 sQuatLeftMultiply(QuatArg inQ)
Returns matrix ML so that (where p and q are quaternions)
Definition Mat44.inl:838
+
JPH_INLINE void SetTranslation(Vec3Arg inV)
Definition Mat44.h:153
+
static JPH_INLINE Mat44 sPerspective(float inFovY, float inAspect, float inNear, float inFar)
Returns a right-handed perspective projection matrix.
Definition Mat44.inl:216
+
static JPH_INLINE Mat44 sRotationX(float inX)
Rotate around X, Y or Z axis (angle in radians)
Definition Mat44.inl:61
+
JPH_INLINE Mat44 InversedRotationTranslation() const
Inverse 4x4 matrix when it only contains rotation and translation.
Definition Mat44.inl:729
+
JPH_INLINE Mat44 PreScaled(Vec3Arg inScale) const
Scale a matrix: result = this * Mat44::sScale(inScale)
Definition Mat44.inl:908
+
static JPH_INLINE Mat44 sRotationY(float inY)
Definition Mat44.inl:69
+
friend JPH_INLINE Mat44 operator*(float inV, Mat44Arg inM)
Definition Mat44.h:128
+
Definition Quat.h:33
+
JPH_INLINE float GetW() const
Get W component (real part)
Definition Quat.h:78
+
JPH_INLINE float GetY() const
Get Y component (imaginary part j)
Definition Quat.h:72
+
JPH_INLINE float GetZ() const
Get Z component (imaginary part k)
Definition Quat.h:75
+
static JPH_INLINE Quat sRotation(Vec3Arg inAxis, float inAngle)
Rotation from axis and angle.
Definition Quat.inl:74
+
JPH_INLINE float GetX() const
Get X component (imaginary part i)
Definition Quat.h:69
+
JPH_INLINE Quat Conjugated() const
The conjugate [w, -x, -y, -z] is the same as the inverse for unit quaternions.
Definition Quat.h:178
+
bool IsNormalized(float inTolerance=1.0e-5f) const
If the length of this quaternion is 1 +/- inTolerance.
Definition Quat.h:59
+
Vec4 mValue
4 vector that stores [x, y, z, w] parts of the quaternion
Definition Quat.h:248
+
JPH_INLINE bool TestAllTrue() const
Test if all components are true (true is when highest bit of component is set)
Definition UVec4.inl:405
+
static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)
Logical and (component wise)
Definition UVec4.inl:199
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
static JPH_INLINE Type sFixW(Type inValue)
Internal helper function that ensures that the Z component is replicated to the W component to preven...
+
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition Vec3.h:53
+
JPH_INLINE Vec4 SplatX() const
Replicate the X component to all components.
Definition Vec3.inl:529
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
JPH_INLINE Vec3 NormalizedOr(Vec3Arg inZeroValue) const
Normalize vector or return inZeroValue if the length of the vector is zero.
Definition Vec3.inl:716
+
JPH_INLINE Vec4 SplatZ() const
Replicate the Z component to all components.
Definition Vec3.inl:551
+
JPH_INLINE void SetZ(float inZ)
Definition Vec3.h:132
+
static JPH_INLINE Vec3 sAxisZ()
Definition Vec3.h:55
+
Type mValue
Definition Vec3.h:286
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
JPH_INLINE Vec4 SplatY() const
Replicate the Y component to all components.
Definition Vec3.inl:540
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
float mF32[4]
Definition Vec3.h:287
+
JPH_INLINE Vec3 Sqrt() const
Component wise square root.
Definition Vec3.inl:691
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
Definition Vec4.h:14
+
JPH_INLINE Vec4 SplatX() const
Replicate the X component to all components.
Definition Vec4.inl:555
+
float mF32[4]
Definition Vec4.h:275
+
static JPH_INLINE Vec4 sLoadFloat4Aligned(const Float4 *inV)
Load 4 floats from memory, 16 bytes aligned.
Definition Vec4.inl:101
+
static JPH_INLINE UVec4 sEquals(Vec4Arg inV1, Vec4Arg inV2)
Equals (component wise)
Definition Vec4.inl:166
+
JPH_INLINE Vec4 SplatY() const
Replicate the Y component to all components.
Definition Vec4.inl:566
+
JPH_INLINE Vec4 SplatZ() const
Replicate the Z component to all components.
Definition Vec4.inl:577
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec4.h:113
+
static JPH_INLINE Vec4 sLoadFloat4(const Float4 *inV)
Load 4 floats from memory.
Definition Vec4.inl:90
+
static JPH_INLINE Vec4 sZero()
Vector with all zeros.
Definition Vec4.inl:63
+
JPH_INLINE Vec4 Swizzle() const
Swizzle the elements in inV.
+
Type mValue
Definition Vec4.h:274
+
static JPH_INLINE Vec4 sNaN()
Vector with all NaN's.
Definition Vec4.inl:85
+
static JPH_INLINE Vec4 sReplicate(float inV)
Replicate inV across all components.
Definition Vec4.inl:74
+
void SinCos(Vec4 &outSin, Vec4 &outCos) const
Calculate the sine and cosine for each element of this vector (input in radians)
Definition Vec4.inl:775
+
+
+ + + + diff --git a/_math_8h.html b/_math_8h.html new file mode 100644 index 000000000..c26cc0248 --- /dev/null +++ b/_math_8h.html @@ -0,0 +1,637 @@ + + + + + + + +Jolt Physics: Jolt/Math/Math.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Math.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

JPH_INLINE constexpr float DegreesToRadians (float inV)
 Convert a value from degrees to radians.
 
JPH_INLINE constexpr float RadiansToDegrees (float inV)
 Convert a value from radians to degrees.
 
float CenterAngleAroundZero (float inV)
 Convert angle in radians to the range \([-\pi, \pi]\).
 
template<typename T >
JPH_INLINE constexpr T Clamp (T inV, T inMin, T inMax)
 Clamp a value between two values.
 
template<typename T >
JPH_INLINE constexpr T Square (T inV)
 Square a value.
 
template<typename T >
JPH_INLINE constexpr T Cubed (T inV)
 Returns \(inV^3\).
 
template<typename T >
JPH_INLINE constexpr T Sign (T inV)
 Get the sign of a value.
 
template<typename T >
constexpr bool IsPowerOf2 (T inV)
 Check if inV is a power of 2.
 
template<typename T >
AlignUp (T inV, uint64 inAlignment)
 Align inV up to the next inAlignment bytes.
 
template<typename T >
bool IsAligned (T inV, uint64 inAlignment)
 Check if inV is inAlignment aligned.
 
uint CountTrailingZeros (uint32 inValue)
 Compute number of trailing zero bits (how many low bits are zero)
 
uint CountLeadingZeros (uint32 inValue)
 Compute the number of leading zero bits (how many high bits are zero)
 
uint CountBits (uint32 inValue)
 Count the number of 1 bits in a value.
 
uint32 GetNextPowerOf2 (uint32 inValue)
 Get the next higher power of 2 of a value, or the value itself if the value is already a power of 2.
 
template<class To , class From >
JPH_INLINE To BitCast (const From &inValue)
 
+

Function Documentation

+ +

◆ AlignUp()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
T AlignUp (inV,
uint64 inAlignment 
)
+
+inline
+
+ +

Align inV up to the next inAlignment bytes.

+ +
+
+ +

◆ BitCast()

+ +
+
+
+template<class To , class From >
+ + + + + + + + +
JPH_INLINE To BitCast (const From & inValue)
+
+ +
+
+ +

◆ CenterAngleAroundZero()

+ +
+
+ + + + + +
+ + + + + + + + +
float CenterAngleAroundZero (float inV)
+
+inline
+
+ +

Convert angle in radians to the range \([-\pi, \pi]\).

+ +
+
+ +

◆ Clamp()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE constexpr T Clamp (inV,
inMin,
inMax 
)
+
+constexpr
+
+ +

Clamp a value between two values.

+ +
+
+ +

◆ CountBits()

+ +
+
+ + + + + +
+ + + + + + + + +
uint CountBits (uint32 inValue)
+
+inline
+
+ +

Count the number of 1 bits in a value.

+ +
+
+ +

◆ CountLeadingZeros()

+ +
+
+ + + + + +
+ + + + + + + + +
uint CountLeadingZeros (uint32 inValue)
+
+inline
+
+ +

Compute the number of leading zero bits (how many high bits are zero)

+ +
+
+ +

◆ CountTrailingZeros()

+ +
+
+ + + + + +
+ + + + + + + + +
uint CountTrailingZeros (uint32 inValue)
+
+inline
+
+ +

Compute number of trailing zero bits (how many low bits are zero)

+ +
+
+ +

◆ Cubed()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
JPH_INLINE constexpr T Cubed (inV)
+
+constexpr
+
+ +

Returns \(inV^3\).

+ +
+
+ +

◆ DegreesToRadians()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE constexpr float DegreesToRadians (float inV)
+
+constexpr
+
+ +

Convert a value from degrees to radians.

+ +
+
+ +

◆ GetNextPowerOf2()

+ +
+
+ + + + + +
+ + + + + + + + +
uint32 GetNextPowerOf2 (uint32 inValue)
+
+inline
+
+ +

Get the next higher power of 2 of a value, or the value itself if the value is already a power of 2.

+ +
+
+ +

◆ IsAligned()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IsAligned (inV,
uint64 inAlignment 
)
+
+inline
+
+ +

Check if inV is inAlignment aligned.

+ +
+
+ +

◆ IsPowerOf2()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
constexpr bool IsPowerOf2 (inV)
+
+constexpr
+
+ +

Check if inV is a power of 2.

+ +
+
+ +

◆ RadiansToDegrees()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE constexpr float RadiansToDegrees (float inV)
+
+constexpr
+
+ +

Convert a value from radians to degrees.

+ +
+
+ +

◆ Sign()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
JPH_INLINE constexpr T Sign (inV)
+
+constexpr
+
+ +

Get the sign of a value.

+ +
+
+ +

◆ Square()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
JPH_INLINE constexpr T Square (inV)
+
+constexpr
+
+ +

Square a value.

+ +
+
+
+
+ + + + diff --git a/_math_8h.js b/_math_8h.js new file mode 100644 index 000000000..d23af9470 --- /dev/null +++ b/_math_8h.js @@ -0,0 +1,18 @@ +var _math_8h = +[ + [ "AlignUp", "_math_8h.html#af4d371fa6a518ca5b81757dc225fae4d", null ], + [ "BitCast", "_math_8h.html#ab2cbe30946edbf23887cfc1291025866", null ], + [ "CenterAngleAroundZero", "_math_8h.html#a50121c6b962bb60d907d4f4c596935c4", null ], + [ "Clamp", "_math_8h.html#a05be8f8200a1a67cbfacd3d16b17ac21", null ], + [ "CountBits", "_math_8h.html#a59413d7cb307df1856ec71deb3cc1a5b", null ], + [ "CountLeadingZeros", "_math_8h.html#abd13b5df498e6de8a050b25766543658", null ], + [ "CountTrailingZeros", "_math_8h.html#aacba3fe18847d926ab86e86dbf94d219", null ], + [ "Cubed", "_math_8h.html#a6a1a326c0e5f6b61307d2458bcce0eb8", null ], + [ "DegreesToRadians", "_math_8h.html#a636689581f2a6ce1d3030dc4dd83b2f5", null ], + [ "GetNextPowerOf2", "_math_8h.html#ae0004008e30f155d5c7b71eafe3c4790", null ], + [ "IsAligned", "_math_8h.html#a92bab343999851b4ded776dd2a70c742", null ], + [ "IsPowerOf2", "_math_8h.html#a531058b1613a4e5123a68a704673e1a2", null ], + [ "RadiansToDegrees", "_math_8h.html#a6ecf6194532e807dd457ef28defa1991", null ], + [ "Sign", "_math_8h.html#a34ee8d229d5ba32162857cf660526a86", null ], + [ "Square", "_math_8h.html#a61379b8b743a16fe823daeebc1482570", null ] +]; \ No newline at end of file diff --git a/_math_8h_source.html b/_math_8h_source.html new file mode 100644 index 000000000..f6e81f0b1 --- /dev/null +++ b/_math_8h_source.html @@ -0,0 +1,360 @@ + + + + + + + +Jolt Physics: Jolt/Math/Math.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Math.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
+
10static constexpr float JPH_PI = 3.14159265358979323846f;
+
11
+
+
13JPH_INLINE constexpr float DegreesToRadians(float inV)
+
14{
+
15 return inV * (JPH_PI / 180.0f);
+
16}
+
+
17
+
+
19JPH_INLINE constexpr float RadiansToDegrees(float inV)
+
20{
+
21 return inV * (180.0f / JPH_PI);
+
22}
+
+
23
+
+
25inline float CenterAngleAroundZero(float inV)
+
26{
+
27 if (inV < -JPH_PI)
+
28 {
+
29 do
+
30 inV += 2.0f * JPH_PI;
+
31 while (inV < -JPH_PI);
+
32 }
+
33 else if (inV > JPH_PI)
+
34 {
+
35 do
+
36 inV -= 2.0f * JPH_PI;
+
37 while (inV > JPH_PI);
+
38 }
+
39 JPH_ASSERT(inV >= -JPH_PI && inV <= JPH_PI);
+
40 return inV;
+
41}
+
+
42
+
44template <typename T>
+
+
45JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)
+
46{
+
47 return min(max(inV, inMin), inMax);
+
48}
+
+
49
+
51template <typename T>
+
+
52JPH_INLINE constexpr T Square(T inV)
+
53{
+
54 return inV * inV;
+
55}
+
+
56
+
58template <typename T>
+
+
59JPH_INLINE constexpr T Cubed(T inV)
+
60{
+
61 return inV * inV * inV;
+
62}
+
+
63
+
65template <typename T>
+
+
66JPH_INLINE constexpr T Sign(T inV)
+
67{
+
68 return inV < 0? T(-1) : T(1);
+
69}
+
+
70
+
72template <typename T>
+
+
73constexpr bool IsPowerOf2(T inV)
+
74{
+
75 return (inV & (inV - 1)) == 0;
+
76}
+
+
77
+
79template <typename T>
+
+
80inline T AlignUp(T inV, uint64 inAlignment)
+
81{
+
82 JPH_ASSERT(IsPowerOf2(inAlignment));
+
83 return T((uint64(inV) + inAlignment - 1) & ~(inAlignment - 1));
+
84}
+
+
85
+
87template <typename T>
+
+
88inline bool IsAligned(T inV, uint64 inAlignment)
+
89{
+
90 JPH_ASSERT(IsPowerOf2(inAlignment));
+
91 return (uint64(inV) & (inAlignment - 1)) == 0;
+
92}
+
+
93
+
+ +
96{
+
97#if defined(JPH_CPU_X86) || defined(JPH_CPU_WASM)
+
98 #if defined(JPH_USE_TZCNT)
+
99 return _tzcnt_u32(inValue);
+
100 #elif defined(JPH_COMPILER_MSVC)
+
101 if (inValue == 0)
+
102 return 32;
+
103 unsigned long result;
+
104 _BitScanForward(&result, inValue);
+
105 return result;
+
106 #else
+
107 if (inValue == 0)
+
108 return 32;
+
109 return __builtin_ctz(inValue);
+
110 #endif
+
111#elif defined(JPH_CPU_ARM)
+
112 #if defined(JPH_COMPILER_MSVC)
+
113 if (inValue == 0)
+
114 return 32;
+
115 unsigned long result;
+
116 _BitScanForward(&result, inValue);
+
117 return result;
+
118 #else
+
119 if (inValue == 0)
+
120 return 32;
+
121 return __builtin_ctz(inValue);
+
122 #endif
+
123#elif defined(JPH_CPU_E2K)
+
124 return inValue ? __builtin_ctz(inValue) : 32;
+
125#else
+
126 #error Undefined
+
127#endif
+
128}
+
+
129
+
+ +
132{
+
133#if defined(JPH_CPU_X86) || defined(JPH_CPU_WASM)
+
134 #if defined(JPH_USE_LZCNT)
+
135 return _lzcnt_u32(inValue);
+
136 #elif defined(JPH_COMPILER_MSVC)
+
137 if (inValue == 0)
+
138 return 32;
+
139 unsigned long result;
+
140 _BitScanReverse(&result, inValue);
+
141 return 31 - result;
+
142 #else
+
143 if (inValue == 0)
+
144 return 32;
+
145 return __builtin_clz(inValue);
+
146 #endif
+
147#elif defined(JPH_CPU_ARM)
+
148 #if defined(JPH_COMPILER_MSVC)
+
149 return _CountLeadingZeros(inValue);
+
150 #else
+
151 return __builtin_clz(inValue);
+
152 #endif
+
153#elif defined(JPH_CPU_E2K)
+
154 return inValue ? __builtin_clz(inValue) : 32;
+
155#else
+
156 #error Undefined
+
157#endif
+
158}
+
+
159
+
+
161inline uint CountBits(uint32 inValue)
+
162{
+
163#if defined(JPH_COMPILER_CLANG) || defined(JPH_COMPILER_GCC)
+
164 return __builtin_popcount(inValue);
+
165#elif defined(JPH_COMPILER_MSVC)
+
166 #if defined(JPH_USE_SSE4_2)
+
167 return _mm_popcnt_u32(inValue);
+
168 #elif defined(JPH_USE_NEON) && (_MSC_VER >= 1930) // _CountOneBits not available on MSVC2019
+
169 return _CountOneBits(inValue);
+
170 #else
+
171 inValue = inValue - ((inValue >> 1) & 0x55555555);
+
172 inValue = (inValue & 0x33333333) + ((inValue >> 2) & 0x33333333);
+
173 inValue = (inValue + (inValue >> 4)) & 0x0F0F0F0F;
+
174 return (inValue * 0x01010101) >> 24;
+
175 #endif
+
176#else
+
177 #error Undefined
+
178#endif
+
179}
+
+
180
+
+ +
183{
+
184 return inValue <= 1? uint32(1) : uint32(1) << (32 - CountLeadingZeros(inValue - 1));
+
185}
+
+
186
+
187// Simple implementation of C++20 std::bit_cast (unfortunately not constexpr)
+
188template <class To, class From>
+
+
189JPH_INLINE To BitCast(const From &inValue)
+
190{
+
191 static_assert(std::is_trivially_constructible_v<To>);
+
192 static_assert(sizeof(From) == sizeof(To));
+
193
+
194 union FromTo
+
195 {
+
196 To mTo;
+
197 From mFrom;
+
198 };
+
199
+
200 FromTo convert;
+
201 convert.mFrom = inValue;
+
202 return convert.mTo;
+
203}
+
+
204
+ +
std::uint64_t uint64
Definition Core.h:456
+
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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)
Clamp a value between two values.
Definition Math.h:45
+
JPH_INLINE constexpr T Sign(T inV)
Get the sign of a value.
Definition Math.h:66
+
float CenterAngleAroundZero(float inV)
Convert angle in radians to the range .
Definition Math.h:25
+
constexpr bool IsPowerOf2(T inV)
Check if inV is a power of 2.
Definition Math.h:73
+
uint CountBits(uint32 inValue)
Count the number of 1 bits in a value.
Definition Math.h:161
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
JPH_INLINE constexpr float DegreesToRadians(float inV)
Convert a value from degrees to radians.
Definition Math.h:13
+
JPH_INLINE constexpr T Cubed(T inV)
Returns .
Definition Math.h:59
+
JPH_INLINE constexpr float RadiansToDegrees(float inV)
Convert a value from radians to degrees.
Definition Math.h:19
+
bool IsAligned(T inV, uint64 inAlignment)
Check if inV is inAlignment aligned.
Definition Math.h:88
+
uint CountTrailingZeros(uint32 inValue)
Compute number of trailing zero bits (how many low bits are zero)
Definition Math.h:95
+
JPH_INLINE To BitCast(const From &inValue)
Definition Math.h:189
+
uint CountLeadingZeros(uint32 inValue)
Compute the number of leading zero bits (how many high bits are zero)
Definition Math.h:131
+
uint32 GetNextPowerOf2(uint32 inValue)
Get the next higher power of 2 of a value, or the value itself if the value is already a power of 2.
Definition Math.h:182
+
T AlignUp(T inV, uint64 inAlignment)
Align inV up to the next inAlignment bytes.
Definition Math.h:80
+
+
+ + + + diff --git a/_math_types_8h.html b/_math_types_8h.html new file mode 100644 index 000000000..b7a53a281 --- /dev/null +++ b/_math_types_8h.html @@ -0,0 +1,267 @@ + + + + + + + +Jolt Physics: Jolt/Math/MathTypes.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MathTypes.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Typedefs

using Vec3Arg = const Vec3
 
using DVec3Arg = const DVec3 &
 
using Vec4Arg = const Vec4
 
using UVec4Arg = const UVec4
 
using Vec8Arg = const Vec8
 
using UVec8Arg = const UVec8
 
using QuatArg = const Quat
 
using Mat44Arg = const Mat44 &
 
using DMat44Arg = const DMat44 &
 
+

Typedef Documentation

+ +

◆ DMat44Arg

+ +
+
+ + + + +
using DMat44Arg = const DMat44 &
+
+ +
+
+ +

◆ DVec3Arg

+ +
+
+ + + + +
using DVec3Arg = const DVec3 &
+
+ +
+
+ +

◆ Mat44Arg

+ +
+
+ + + + +
using Mat44Arg = const Mat44 &
+
+ +
+
+ +

◆ QuatArg

+ +
+
+ + + + +
using QuatArg = const Quat
+
+ +
+
+ +

◆ UVec4Arg

+ +
+
+ + + + +
using UVec4Arg = const UVec4
+
+ +
+
+ +

◆ UVec8Arg

+ +
+
+ + + + +
using UVec8Arg = const UVec8
+
+ +
+
+ +

◆ Vec3Arg

+ +
+
+ + + + +
using Vec3Arg = const Vec3
+
+ +
+
+ +

◆ Vec4Arg

+ +
+
+ + + + +
using Vec4Arg = const Vec4
+
+ +
+
+ +

◆ Vec8Arg

+ +
+
+ + + + +
using Vec8Arg = const Vec8
+
+ +
+
+
+
+ + + + diff --git a/_math_types_8h.js b/_math_types_8h.js new file mode 100644 index 000000000..18c7cd33e --- /dev/null +++ b/_math_types_8h.js @@ -0,0 +1,12 @@ +var _math_types_8h = +[ + [ "DMat44Arg", "_math_types_8h.html#aaf37cd542ccb684a70ab8e9123af8df5", null ], + [ "DVec3Arg", "_math_types_8h.html#a943465464cdfbc4fedad29af409c31ff", null ], + [ "Mat44Arg", "_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6", null ], + [ "QuatArg", "_math_types_8h.html#a3c723d55f34e02bc506abe3dfb7bd2aa", null ], + [ "UVec4Arg", "_math_types_8h.html#afe962105a594eb55fe13daa266182a7e", null ], + [ "UVec8Arg", "_math_types_8h.html#a903b017c65cfb9beb323b3527cb2bc25", null ], + [ "Vec3Arg", "_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68", null ], + [ "Vec4Arg", "_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1", null ], + [ "Vec8Arg", "_math_types_8h.html#a03b74680637c25ce6c910ede734ef253", null ] +]; \ No newline at end of file diff --git a/_math_types_8h_source.html b/_math_types_8h_source.html new file mode 100644 index 000000000..f6161d07e --- /dev/null +++ b/_math_types_8h_source.html @@ -0,0 +1,164 @@ + + + + + + + +Jolt Physics: Jolt/Math/MathTypes.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MathTypes.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
+
9class Vec3;
+
10class DVec3;
+
11class Vec4;
+
12class UVec4;
+
13class Vec8;
+
14class UVec8;
+
15class Quat;
+
16class Mat44;
+
17class DMat44;
+
18
+
19// Types to use for passing arguments to functions
+
20using Vec3Arg = const Vec3;
+
21#ifdef JPH_USE_AVX
+
22 using DVec3Arg = const DVec3;
+
23#else
+
24 using DVec3Arg = const DVec3 &;
+
25#endif
+
26using Vec4Arg = const Vec4;
+
27using UVec4Arg = const UVec4;
+
28using Vec8Arg = const Vec8;
+
29using UVec8Arg = const UVec8;
+
30using QuatArg = const Quat;
+
31using Mat44Arg = const Mat44 &;
+
32using DMat44Arg = const DMat44 &;
+
33
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
Definition DVec3.h:14
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Definition Quat.h:33
+
Definition UVec4.h:12
+
Definition UVec8.h:12
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
Definition Vec8.h:12
+
+
+ + + + diff --git a/_matrix_8h.html b/_matrix_8h.html new file mode 100644 index 000000000..e54d749d2 --- /dev/null +++ b/_matrix_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Math/Matrix.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Matrix.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  Matrix< Rows, Cols >
 Templatized matrix class. More...
 
+
+
+ + + + diff --git a/_matrix_8h.js b/_matrix_8h.js new file mode 100644 index 000000000..ec2d4d507 --- /dev/null +++ b/_matrix_8h.js @@ -0,0 +1,4 @@ +var _matrix_8h = +[ + [ "Matrix< Rows, Cols >", "class_matrix.html", "class_matrix" ] +]; \ No newline at end of file diff --git a/_matrix_8h_source.html b/_matrix_8h_source.html new file mode 100644 index 000000000..d115dd3f2 --- /dev/null +++ b/_matrix_8h_source.html @@ -0,0 +1,430 @@ + + + + + + + +Jolt Physics: Jolt/Math/Matrix.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Matrix.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
+
7#include <Jolt/Math/Vector.h>
+ +
9
+ +
11
+
13template <uint Rows, uint Cols>
+
+
14class [[nodiscard]] Matrix
+
15{
+
16public:
+
18 inline Matrix() = default;
+
19 inline Matrix(const Matrix &inM2) { *this = inM2; }
+
20
+
22 inline uint GetRows() const { return Rows; }
+
23 inline uint GetCols() const { return Cols; }
+
24
+
+
26 inline void SetZero()
+
27 {
+
28 for (uint c = 0; c < Cols; ++c)
+
29 mCol[c].SetZero();
+
30 }
+
+
31
+
32 inline static Matrix sZero() { Matrix m; m.SetZero(); return m; }
+
33
+
+
35 inline bool IsZero() const
+
36 {
+
37 for (uint c = 0; c < Cols; ++c)
+
38 if (!mCol[c].IsZero())
+
39 return false;
+
40
+
41 return true;
+
42 }
+
+
43
+
+
45 inline void SetIdentity()
+
46 {
+
47 // Clear matrix
+
48 SetZero();
+
49
+
50 // Set diagonal to 1
+
51 for (uint rc = 0, min_rc = min(Rows, Cols); rc < min_rc; ++rc)
+
52 mCol[rc].mF32[rc] = 1.0f;
+
53 }
+
+
54
+
55 inline static Matrix sIdentity() { Matrix m; m.SetIdentity(); return m; }
+
56
+
58 bool IsIdentity() const { return *this == sIdentity(); }
+
59
+
+
61 inline void SetDiagonal(const Vector<Rows < Cols? Rows : Cols> &inV)
+
62 {
+
63 // Clear matrix
+
64 SetZero();
+
65
+
66 // Set diagonal
+
67 for (uint rc = 0, min_rc = min(Rows, Cols); rc < min_rc; ++rc)
+
68 mCol[rc].mF32[rc] = inV[rc];
+
69 }
+
+
70
+
+
71 inline static Matrix sDiagonal(const Vector<Rows < Cols? Rows : Cols> &inV)
+
72 {
+
73 Matrix m;
+
74 m.SetDiagonal(inV);
+
75 return m;
+
76 }
+
+
77
+
79 template <class OtherMatrix>
+
+
80 void CopyPart(const OtherMatrix &inM, uint inSourceRow, uint inSourceCol, uint inNumRows, uint inNumCols, uint inDestRow, uint inDestCol)
+
81 {
+
82 for (uint c = 0; c < inNumCols; ++c)
+
83 for (uint r = 0; r < inNumRows; ++r)
+
84 mCol[inDestCol + c].mF32[inDestRow + r] = inM(inSourceRow + r, inSourceCol + c);
+
85 }
+
+
86
+
+
88 inline float operator () (uint inRow, uint inColumn) const
+
89 {
+
90 JPH_ASSERT(inRow < Rows);
+
91 JPH_ASSERT(inColumn < Cols);
+
92 return mCol[inColumn].mF32[inRow];
+
93 }
+
+
94
+
+
95 inline float & operator () (uint inRow, uint inColumn)
+
96 {
+
97 JPH_ASSERT(inRow < Rows);
+
98 JPH_ASSERT(inColumn < Cols);
+
99 return mCol[inColumn].mF32[inRow];
+
100 }
+
+
101
+
+
103 inline bool operator == (const Matrix &inM2) const
+
104 {
+
105 for (uint c = 0; c < Cols; ++c)
+
106 if (mCol[c] != inM2.mCol[c])
+
107 return false;
+
108 return true;
+
109 }
+
+
110
+
+
111 inline bool operator != (const Matrix &inM2) const
+
112 {
+
113 for (uint c = 0; c < Cols; ++c)
+
114 if (mCol[c] != inM2.mCol[c])
+
115 return true;
+
116 return false;
+
117 }
+
+
118
+
+
120 inline Matrix & operator = (const Matrix &inM2)
+
121 {
+
122 for (uint c = 0; c < Cols; ++c)
+
123 mCol[c] = inM2.mCol[c];
+
124 return *this;
+
125 }
+
+
126
+
128 template <uint OtherCols>
+
+ +
130 {
+ +
132 for (uint c = 0; c < OtherCols; ++c)
+
133 for (uint r = 0; r < Rows; ++r)
+
134 {
+
135 float dot = 0.0f;
+
136 for (uint i = 0; i < Cols; ++i)
+
137 dot += mCol[i].mF32[r] * inM.mCol[c].mF32[i];
+
138 m.mCol[c].mF32[r] = dot;
+
139 }
+
140 return m;
+
141 }
+
+
142
+
+
144 inline Vector<Rows> operator * (const Vector<Cols> &inV) const
+
145 {
+
146 Vector<Rows> v;
+
147 for (uint r = 0; r < Rows; ++r)
+
148 {
+
149 float dot = 0.0f;
+
150 for (uint c = 0; c < Cols; ++c)
+
151 dot += mCol[c].mF32[r] * inV.mF32[c];
+
152 v.mF32[r] = dot;
+
153 }
+
154 return v;
+
155 }
+
+
156
+
+
158 inline Matrix operator * (float inV) const
+
159 {
+
160 Matrix m;
+
161 for (uint c = 0; c < Cols; ++c)
+
162 m.mCol[c] = mCol[c] * inV;
+
163 return m;
+
164 }
+
+
165
+
+
166 inline friend Matrix operator * (float inV, const Matrix &inM)
+
167 {
+
168 return inM * inV;
+
169 }
+
+
170
+
+
172 inline Matrix operator + (const Matrix &inM) const
+
173 {
+
174 Matrix m;
+
175 for (uint c = 0; c < Cols; ++c)
+
176 m.mCol[c] = mCol[c] + inM.mCol[c];
+
177 return m;
+
178 }
+
+
179
+
+
181 inline Matrix operator - (const Matrix &inM) const
+
182 {
+
183 Matrix m;
+
184 for (uint c = 0; c < Cols; ++c)
+
185 m.mCol[c] = mCol[c] - inM.mCol[c];
+
186 return m;
+
187 }
+
+
188
+
+ +
191 {
+ +
193 for (uint r = 0; r < Rows; ++r)
+
194 for (uint c = 0; c < Cols; ++c)
+
195 m.mCol[r].mF32[c] = mCol[c].mF32[r];
+
196 return m;
+
197 }
+
+
198
+
+
200 bool SetInversed(const Matrix &inM)
+
201 {
+
202 if constexpr (Rows != Cols) JPH_ASSERT(false);
+
203 Matrix copy(inM);
+
204 SetIdentity();
+
205 return GaussianElimination(copy, *this);
+
206 }
+
+
207
+
+
208 inline Matrix Inversed() const
+
209 {
+
210 Matrix m;
+
211 m.SetInversed(*this);
+
212 return m;
+
213 }
+
+
214
+
+
216 friend ostream & operator << (ostream &inStream, const Matrix &inM)
+
217 {
+
218 for (uint i = 0; i < Cols - 1; ++i)
+
219 inStream << inM.mCol[i] << ", ";
+
220 inStream << inM.mCol[Cols - 1];
+
221 return inStream;
+
222 }
+
+
223
+
225 const Vector<Rows> & GetColumn(int inIdx) const { return mCol[inIdx]; }
+
226 Vector<Rows> & GetColumn(int inIdx) { return mCol[inIdx]; }
+
227
+
228 Vector<Rows> mCol[Cols];
+
229};
+
+
230
+
231// The template specialization doesn't sit well with Doxygen
+
232#ifndef JPH_PLATFORM_DOXYGEN
+
233
+
235template <>
+
236inline bool Matrix<2, 2>::SetInversed(const Matrix<2, 2> &inM)
+
237{
+
238 // Fetch elements
+
239 float a = inM.mCol[0].mF32[0];
+
240 float b = inM.mCol[1].mF32[0];
+
241 float c = inM.mCol[0].mF32[1];
+
242 float d = inM.mCol[1].mF32[1];
+
243
+
244 // Calculate determinant
+
245 float det = a * d - b * c;
+
246 if (det == 0.0f)
+
247 return false;
+
248
+
249 // Construct inverse
+
250 mCol[0].mF32[0] = d / det;
+
251 mCol[1].mF32[0] = -b / det;
+
252 mCol[0].mF32[1] = -c / det;
+
253 mCol[1].mF32[1] = a / det;
+
254 return true;
+
255}
+
256
+
257#endif // !JPH_PLATFORM_DOXYGEN
+
258
+ +
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:451
+ +
JPH_NAMESPACE_BEGIN bool GaussianElimination(MatrixA &ioA, MatrixB &ioB, float inTolerance=1.0e-16f)
Definition GaussianElimination.h:19
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
Templatized matrix class.
Definition Matrix.h:15
+
static Matrix sZero()
Definition Matrix.h:32
+
bool SetInversed(const Matrix &inM)
Inverse matrix.
Definition Matrix.h:200
+
uint GetRows() const
Dimensions.
Definition Matrix.h:22
+
bool IsIdentity() const
Check if this matrix is identity.
Definition Matrix.h:58
+
uint GetCols() const
Definition Matrix.h:23
+
Vector< Rows > mCol[Cols]
Column.
Definition Matrix.h:228
+
void CopyPart(const OtherMatrix &inM, uint inSourceRow, uint inSourceCol, uint inNumRows, uint inNumCols, uint inDestRow, uint inDestCol)
Copy a (part) of another matrix into this matrix.
Definition Matrix.h:80
+
Matrix()=default
Constructor.
+
void SetZero()
Zero matrix.
Definition Matrix.h:26
+
static Matrix sIdentity()
Definition Matrix.h:55
+
Vector< Rows > & GetColumn(int inIdx)
Definition Matrix.h:226
+
bool IsZero() const
Check if this matrix consists of all zeros.
Definition Matrix.h:35
+
Matrix(const Matrix &inM2)
Definition Matrix.h:19
+
const Vector< Rows > & GetColumn(int inIdx) const
Column access.
Definition Matrix.h:225
+
void SetIdentity()
Identity matrix.
Definition Matrix.h:45
+
void SetDiagonal(const Vector< Rows< Cols? Rows :Cols > &inV)
Diagonal matrix.
Definition Matrix.h:61
+
static Matrix sDiagonal(const Vector< Rows< Cols? Rows :Cols > &inV)
Definition Matrix.h:71
+
Matrix Inversed() const
Definition Matrix.h:208
+
Matrix< Cols, Rows > Transposed() const
Transpose matrix.
Definition Matrix.h:190
+
Templatized vector class.
Definition Vector.h:12
+
float mF32[Rows]
Definition Vector.h:208
+
+
+ + + + diff --git a/_memory_8cpp.html b/_memory_8cpp.html new file mode 100644 index 000000000..8d08bc7db --- /dev/null +++ b/_memory_8cpp.html @@ -0,0 +1,398 @@ + + + + + + + +Jolt Physics: Jolt/Core/Memory.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Memory.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <cstdlib>
+#include <stdlib.h>
+
+ + + + + +

+Macros

#define JPH_ALLOC_FN(x)   x##Impl
 
#define JPH_ALLOC_SCOPE   static
 
+ + + + + + + + + + + + + + +

+Functions

JPH_ALLOC_SCOPE void *JPH_ALLOC_FN() Allocate (size_t inSize)
 
JPH_ALLOC_SCOPE void *JPH_ALLOC_FN() Reallocate (void *inBlock, size_t inOldSize, size_t inNewSize)
 
JPH_ALLOC_SCOPE void JPH_ALLOC_FN() Free (void *inBlock)
 
JPH_ALLOC_SCOPE void *JPH_ALLOC_FN() AlignedAllocate (size_t inSize, size_t inAlignment)
 
JPH_ALLOC_SCOPE void JPH_ALLOC_FN() AlignedFree (void *inBlock)
 
void RegisterDefaultAllocator ()
 Register platform default allocation / free functions.
 
+ + + + + + + + + + + +

+Variables

AllocateFunction Allocate = nullptr
 
ReallocateFunction Reallocate = nullptr
 
FreeFunction Free = nullptr
 
AlignedAllocateFunction AlignedAllocate = nullptr
 
AlignedFreeFunction AlignedFree = nullptr
 
+

Macro Definition Documentation

+ +

◆ JPH_ALLOC_FN

+ +
+
+ + + + + + + + +
#define JPH_ALLOC_FN( x)   x##Impl
+
+ +
+
+ +

◆ JPH_ALLOC_SCOPE

+ +
+
+ + + + +
#define JPH_ALLOC_SCOPE   static
+
+ +
+
+

Function Documentation

+ +

◆ AlignedAllocate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_ALLOC_SCOPE void *JPH_ALLOC_FN() AlignedAllocate (size_t inSize,
size_t inAlignment 
)
+
+ +
+
+ +

◆ AlignedFree()

+ +
+
+ + + + + + + + +
JPH_ALLOC_SCOPE void JPH_ALLOC_FN() AlignedFree (void * inBlock)
+
+ +
+
+ +

◆ Allocate()

+ +
+
+ + + + + + + + +
JPH_ALLOC_SCOPE void *JPH_ALLOC_FN() Allocate (size_t inSize)
+
+ +
+
+ +

◆ Free()

+ +
+
+ + + + + + + + +
JPH_ALLOC_SCOPE void JPH_ALLOC_FN() Free (void * inBlock)
+
+ +
+
+ +

◆ Reallocate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_ALLOC_SCOPE void *JPH_ALLOC_FN() Reallocate (void * inBlock,
size_t inOldSize,
size_t inNewSize 
)
+
+ +
+
+ +

◆ RegisterDefaultAllocator()

+ +
+
+ + + + + + + +
void RegisterDefaultAllocator ()
+
+ +

Register platform default allocation / free functions.

+ +
+
+

Variable Documentation

+ +

◆ AlignedAllocate

+ +
+
+ + + + +
AlignedAllocateFunction AlignedAllocate = nullptr
+
+ +
+
+ +

◆ AlignedFree

+ +
+
+ + + + +
AlignedFreeFunction AlignedFree = nullptr
+
+ +
+
+ +

◆ Allocate

+ +
+
+ + + + +
AllocateFunction Allocate = nullptr
+
+ +
+
+ +

◆ Free

+ +
+
+ + + + +
FreeFunction Free = nullptr
+
+ +
+
+ +

◆ Reallocate

+ +
+
+ + + + +
ReallocateFunction Reallocate = nullptr
+
+ +
+
+
+
+ + + + diff --git a/_memory_8cpp.js b/_memory_8cpp.js new file mode 100644 index 000000000..e02520e51 --- /dev/null +++ b/_memory_8cpp.js @@ -0,0 +1,16 @@ +var _memory_8cpp = +[ + [ "JPH_ALLOC_FN", "_memory_8cpp.html#a668fcc255ab2023c923b60b30de9282e", null ], + [ "JPH_ALLOC_SCOPE", "_memory_8cpp.html#aaca87e834c41d0cd09b639ad58d377d4", null ], + [ "AlignedAllocate", "_memory_8cpp.html#a7705eeb62110cc73e82a1de675272c62", null ], + [ "AlignedFree", "_memory_8cpp.html#a0d4c36d6296044ad0a715118d04585d5", null ], + [ "Allocate", "_memory_8cpp.html#a96c45c12d905a3480cc161bc38cd7287", null ], + [ "Free", "_memory_8cpp.html#a186d7d4171081fcb2fe0434d2267bf39", null ], + [ "Reallocate", "_memory_8cpp.html#a280e4a0028cc9e9d3d69e81243bcef4b", null ], + [ "RegisterDefaultAllocator", "_memory_8cpp.html#a833946335de93bfe993d882d5e882458", null ], + [ "AlignedAllocate", "_memory_8cpp.html#ae8854fb6cfcc5836d8e9f6103a3a6c68", null ], + [ "AlignedFree", "_memory_8cpp.html#add39c49c5cd22c9ddbc25aae2c01b5f3", null ], + [ "Allocate", "_memory_8cpp.html#a409c61ab5ebd84e8aee6d9f930175a00", null ], + [ "Free", "_memory_8cpp.html#acb8618ad315c24ed37db3ad6b2ff60fc", null ], + [ "Reallocate", "_memory_8cpp.html#ac6c32afa44df59108c68ef07ce8919bd", null ] +]; \ No newline at end of file diff --git a/_memory_8h.html b/_memory_8h.html new file mode 100644 index 000000000..94388ed45 --- /dev/null +++ b/_memory_8h.html @@ -0,0 +1,387 @@ + + + + + + + +Jolt Physics: Jolt/Core/Memory.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Memory.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Macros

#define JPH_OVERRIDE_NEW_DELETE
 Macro to override the new and delete functions.
 
+ + + + + + + + + + + +

+Typedefs

using AllocateFunction = void *(*)(size_t inSize)
 
using ReallocateFunction = void *(*)(void *inBlock, size_t inOldSize, size_t inNewSize)
 
using FreeFunction = void(*)(void *inBlock)
 
using AlignedAllocateFunction = void *(*)(size_t inSize, size_t inAlignment)
 
using AlignedFreeFunction = void(*)(void *inBlock)
 
+ + + + +

+Functions

JPH_EXPORT void RegisterDefaultAllocator ()
 Register platform default allocation / free functions.
 
+ + + + + + + + + + + +

+Variables

JPH_EXPORT AllocateFunction Allocate
 
JPH_EXPORT ReallocateFunction Reallocate
 
JPH_EXPORT FreeFunction Free
 
JPH_EXPORT AlignedAllocateFunction AlignedAllocate
 
JPH_EXPORT AlignedFreeFunction AlignedFree
 
+

Macro Definition Documentation

+ +

◆ JPH_OVERRIDE_NEW_DELETE

+ +
+
+ + + + +
#define JPH_OVERRIDE_NEW_DELETE
+
+Value:
JPH_INLINE void *operator new (size_t inCount) { return JPH::Allocate(inCount); } \
+
JPH_INLINE void operator delete (void *inPointer) noexcept { JPH::Free(inPointer); } \
+
JPH_INLINE void *operator new[] (size_t inCount) { return JPH::Allocate(inCount); } \
+
JPH_INLINE void operator delete[] (void *inPointer) noexcept { JPH::Free(inPointer); } \
+
JPH_INLINE void *operator new (size_t inCount, std::align_val_t inAlignment) { return JPH::AlignedAllocate(inCount, static_cast<size_t>(inAlignment)); } \
+
JPH_INLINE void operator delete (void *inPointer, [[maybe_unused]] std::align_val_t inAlignment) noexcept { JPH::AlignedFree(inPointer); } \
+
JPH_INLINE void *operator new[] (size_t inCount, std::align_val_t inAlignment) { return JPH::AlignedAllocate(inCount, static_cast<size_t>(inAlignment)); } \
+
JPH_INLINE void operator delete[] (void *inPointer, [[maybe_unused]] std::align_val_t inAlignment) noexcept { JPH::AlignedFree(inPointer); }
+
+

Macro to override the new and delete functions.

+ +
+
+

Typedef Documentation

+ +

◆ AlignedAllocateFunction

+ +
+
+ + + + +
using AlignedAllocateFunction = void *(*)(size_t inSize, size_t inAlignment)
+
+ +
+
+ +

◆ AlignedFreeFunction

+ +
+
+ + + + +
using AlignedFreeFunction = void (*)(void *inBlock)
+
+ +
+
+ +

◆ AllocateFunction

+ +
+
+ + + + +
using AllocateFunction = void *(*)(size_t inSize)
+
+ +
+
+ +

◆ FreeFunction

+ +
+
+ + + + +
using FreeFunction = void (*)(void *inBlock)
+
+ +
+
+ +

◆ ReallocateFunction

+ +
+
+ + + + +
using ReallocateFunction = void *(*)(void *inBlock, size_t inOldSize, size_t inNewSize)
+
+ +
+
+

Function Documentation

+ +

◆ RegisterDefaultAllocator()

+ +
+
+ + + + + + + +
JPH_EXPORT void RegisterDefaultAllocator ()
+
+ +

Register platform default allocation / free functions.

+ +
+
+

Variable Documentation

+ +

◆ AlignedAllocate

+ +
+
+ + + + + +
+ + + + +
JPH_EXPORT AlignedAllocateFunction AlignedAllocate
+
+extern
+
+ +
+
+ +

◆ AlignedFree

+ +
+
+ + + + + +
+ + + + +
JPH_EXPORT AlignedFreeFunction AlignedFree
+
+extern
+
+ +
+
+ +

◆ Allocate

+ +
+
+ + + + + +
+ + + + +
JPH_EXPORT AllocateFunction Allocate
+
+extern
+
+ +
+
+ +

◆ Free

+ +
+
+ + + + + +
+ + + + +
JPH_EXPORT FreeFunction Free
+
+extern
+
+ +
+
+ +

◆ Reallocate

+ +
+
+ + + + + +
+ + + + +
JPH_EXPORT ReallocateFunction Reallocate
+
+extern
+
+ +
+
+
+
+ + + + diff --git a/_memory_8h.js b/_memory_8h.js new file mode 100644 index 000000000..9375bcd51 --- /dev/null +++ b/_memory_8h.js @@ -0,0 +1,15 @@ +var _memory_8h = +[ + [ "JPH_OVERRIDE_NEW_DELETE", "_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0", null ], + [ "AlignedAllocateFunction", "_memory_8h.html#a34745708a4f5ea89b7059f8f5952d3d6", null ], + [ "AlignedFreeFunction", "_memory_8h.html#ae5117b9da25ff2a21dfd5c159b36f1e1", null ], + [ "AllocateFunction", "_memory_8h.html#af18828908838938f4deb92fbde4b3015", null ], + [ "FreeFunction", "_memory_8h.html#a57f7cd4691f45cd3537b6e8fd3705eb0", null ], + [ "ReallocateFunction", "_memory_8h.html#a173beb7a0579a0dc288c66cc87d693ff", null ], + [ "RegisterDefaultAllocator", "_memory_8h.html#a6ae804b1b68490f6e032ef6e7d9fc93e", null ], + [ "AlignedAllocate", "_memory_8h.html#a3aa09280dba8f254af17a487b8e407ff", null ], + [ "AlignedFree", "_memory_8h.html#ade432661f00567a883e31a67e8d6dbb9", null ], + [ "Allocate", "_memory_8h.html#a8e44cb80cb8870970bc028513801205d", null ], + [ "Free", "_memory_8h.html#afff7dd3001cffbed9e362e4012b7f3af", null ], + [ "Reallocate", "_memory_8h.html#a8f705f8e1418d25f523b8aebf674322d", null ] +]; \ No newline at end of file diff --git a/_memory_8h_source.html b/_memory_8h_source.html new file mode 100644 index 000000000..04fd0245d --- /dev/null +++ b/_memory_8h_source.html @@ -0,0 +1,191 @@ + + + + + + + +Jolt Physics: Jolt/Core/Memory.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Memory.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
+
9#ifndef JPH_DISABLE_CUSTOM_ALLOCATOR
+
10
+
11// Normal memory allocation, must be at least 8 byte aligned on 32 bit platform and 16 byte aligned on 64 bit platform
+
12using AllocateFunction = void *(*)(size_t inSize);
+
13using ReallocateFunction = void *(*)(void *inBlock, size_t inOldSize, size_t inNewSize);
+
14using FreeFunction = void (*)(void *inBlock);
+
15
+
16// Aligned memory allocation
+
17using AlignedAllocateFunction = void *(*)(size_t inSize, size_t inAlignment);
+
18using AlignedFreeFunction = void (*)(void *inBlock);
+
19
+
20// User defined allocation / free functions
+ + + + + +
26
+ +
29
+
+
31#define JPH_OVERRIDE_NEW_DELETE \
+
32 JPH_INLINE void *operator new (size_t inCount) { return JPH::Allocate(inCount); } \
+
33 JPH_INLINE void operator delete (void *inPointer) noexcept { JPH::Free(inPointer); } \
+
34 JPH_INLINE void *operator new[] (size_t inCount) { return JPH::Allocate(inCount); } \
+
35 JPH_INLINE void operator delete[] (void *inPointer) noexcept { JPH::Free(inPointer); } \
+
36 JPH_INLINE void *operator new (size_t inCount, std::align_val_t inAlignment) { return JPH::AlignedAllocate(inCount, static_cast<size_t>(inAlignment)); } \
+
37 JPH_INLINE void operator delete (void *inPointer, [[maybe_unused]] std::align_val_t inAlignment) noexcept { JPH::AlignedFree(inPointer); } \
+
38 JPH_INLINE void *operator new[] (size_t inCount, std::align_val_t inAlignment) { return JPH::AlignedAllocate(inCount, static_cast<size_t>(inAlignment)); } \
+
39 JPH_INLINE void operator delete[] (void *inPointer, [[maybe_unused]] std::align_val_t inAlignment) noexcept { JPH::AlignedFree(inPointer); }
+
+
40
+
41#else
+
42
+
43// Directly define the allocation functions
+
44JPH_EXPORT void *Allocate(size_t inSize);
+
45JPH_EXPORT void *Reallocate(void *inBlock, size_t inOldSize, size_t inNewSize);
+
46JPH_EXPORT void Free(void *inBlock);
+
47JPH_EXPORT void *AlignedAllocate(size_t inSize, size_t inAlignment);
+
48JPH_EXPORT void AlignedFree(void *inBlock);
+
49
+
50// Don't implement allocator registering
+
51inline void RegisterDefaultAllocator() { }
+
52
+
53// Don't override new/delete
+
54#define JPH_OVERRIDE_NEW_DELETE
+
55
+
56#endif // !JPH_DISABLE_CUSTOM_ALLOCATOR
+
57
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
void *(*)(void *inBlock, size_t inOldSize, size_t inNewSize) ReallocateFunction
Definition Memory.h:13
+
void *(*)(size_t inSize, size_t inAlignment) AlignedAllocateFunction
Definition Memory.h:17
+
JPH_EXPORT AlignedAllocateFunction AlignedAllocate
Definition Memory.cpp:71
+
void(*)(void *inBlock) FreeFunction
Definition Memory.h:14
+
JPH_EXPORT void RegisterDefaultAllocator()
Register platform default allocation / free functions.
Definition Memory.cpp:74
+
JPH_EXPORT AllocateFunction Allocate
Definition Memory.cpp:68
+
JPH_EXPORT ReallocateFunction Reallocate
Definition Memory.cpp:69
+
JPH_EXPORT AlignedFreeFunction AlignedFree
Definition Memory.cpp:72
+
void(*)(void *inBlock) AlignedFreeFunction
Definition Memory.h:18
+
void *(*)(size_t inSize) AllocateFunction
Definition Memory.h:12
+
JPH_EXPORT FreeFunction Free
Definition Memory.cpp:70
+
+
+ + + + diff --git a/_mesh_shape_8cpp.html b/_mesh_shape_8cpp.html new file mode 100644 index 000000000..d4ec7bbe9 --- /dev/null +++ b/_mesh_shape_8cpp.html @@ -0,0 +1,218 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/MeshShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MeshShape.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <Jolt/Physics/Collision/Shape/MeshShape.h>
+#include <Jolt/Physics/Collision/Shape/ConvexShape.h>
+#include <Jolt/Physics/Collision/Shape/ScaleHelpers.h>
+#include <Jolt/Physics/Collision/Shape/SphereShape.h>
+#include <Jolt/Physics/Collision/RayCast.h>
+#include <Jolt/Physics/Collision/ShapeCast.h>
+#include <Jolt/Physics/Collision/ShapeFilter.h>
+#include <Jolt/Physics/Collision/CastResult.h>
+#include <Jolt/Physics/Collision/CollideConvexVsTriangles.h>
+#include <Jolt/Physics/Collision/CollideSphereVsTriangles.h>
+#include <Jolt/Physics/Collision/CastConvexVsTriangles.h>
+#include <Jolt/Physics/Collision/CastSphereVsTriangles.h>
+#include <Jolt/Physics/Collision/TransformedShape.h>
+#include <Jolt/Physics/Collision/ActiveEdges.h>
+#include <Jolt/Physics/Collision/CollisionDispatch.h>
+#include <Jolt/Physics/Collision/SortReverseAndStore.h>
+#include <Jolt/Physics/Collision/CollideSoftBodyVerticesVsTriangles.h>
+#include <Jolt/Core/StringTools.h>
+#include <Jolt/Core/StreamIn.h>
+#include <Jolt/Core/StreamOut.h>
+#include <Jolt/Core/Profiler.h>
+#include <Jolt/Core/UnorderedMap.h>
+#include <Jolt/Geometry/AABox4.h>
+#include <Jolt/Geometry/RayAABox.h>
+#include <Jolt/Geometry/Indexify.h>
+#include <Jolt/Geometry/Plane.h>
+#include <Jolt/Geometry/OrientedBox.h>
+#include <Jolt/TriangleSplitter/TriangleSplitterBinning.h>
+#include <Jolt/AABBTree/AABBTreeBuilder.h>
+#include <Jolt/AABBTree/AABBTreeToBuffer.h>
+#include <Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h>
+#include <Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h>
+#include <Jolt/ObjectStream/TypeDeclarations.h>
+
+ + + +

+Classes

struct  MeshShape::MSGetTrianglesContext
 
+ + + + + +

+Typedefs

using TriangleCodec = TriangleCodecIndexed8BitPackSOA4Flags
 
using NodeCodec = NodeCodecQuadTreeHalfFloat< 1 >
 
+ + + +

+Functions

 JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (MeshShapeSettings)
 
+

Typedef Documentation

+ +

◆ NodeCodec

+ +
+
+ + + + +
using NodeCodec = NodeCodecQuadTreeHalfFloat<1>
+
+ +
+
+ +

◆ TriangleCodec

+ + +

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (MeshShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_mesh_shape_8cpp.js b/_mesh_shape_8cpp.js new file mode 100644 index 000000000..f620c01e8 --- /dev/null +++ b/_mesh_shape_8cpp.js @@ -0,0 +1,7 @@ +var _mesh_shape_8cpp = +[ + [ "MeshShape::MSGetTrianglesContext", "struct_mesh_shape_1_1_m_s_get_triangles_context.html", "struct_mesh_shape_1_1_m_s_get_triangles_context" ], + [ "NodeCodec", "_mesh_shape_8cpp.html#a08fef52c712c3843a91be8f6d98f2c2a", null ], + [ "TriangleCodec", "_mesh_shape_8cpp.html#ac66250df9dfa2a3f10fb26f55e72c608", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_mesh_shape_8cpp.html#a08ddf233bf0bd05ab5e4c1a3a3ffea7a", null ] +]; \ No newline at end of file diff --git a/_mesh_shape_8h.html b/_mesh_shape_8h.html new file mode 100644 index 000000000..4ebba6d68 --- /dev/null +++ b/_mesh_shape_8h.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/MeshShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MeshShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  MeshShapeSettings
 Class that constructs a MeshShape. More...
 
class  MeshShape
 
+
+
+ + + + diff --git a/_mesh_shape_8h.js b/_mesh_shape_8h.js new file mode 100644 index 000000000..62d672285 --- /dev/null +++ b/_mesh_shape_8h.js @@ -0,0 +1,5 @@ +var _mesh_shape_8h = +[ + [ "MeshShapeSettings", "class_mesh_shape_settings.html", "class_mesh_shape_settings" ], + [ "MeshShape", "class_mesh_shape.html", "class_mesh_shape" ] +]; \ No newline at end of file diff --git a/_mesh_shape_8h_source.html b/_mesh_shape_8h_source.html new file mode 100644 index 000000000..e10cd7258 --- /dev/null +++ b/_mesh_shape_8h_source.html @@ -0,0 +1,362 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/MeshShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshShape.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
+ + + + + +
12#ifdef JPH_DEBUG_RENDERER
+ +
14#endif // JPH_DEBUG_RENDERER
+
15
+ +
17
+
18class ConvexShape;
+ +
20
+
+ +
23{
+
24public:
+ +
26
+
27
+
28 MeshShapeSettings() = default;
+
29
+
31 MeshShapeSettings(const TriangleList &inTriangles, PhysicsMaterialList inMaterials = PhysicsMaterialList());
+ +
33
+
35 void Sanitize();
+
36
+
37 // See: ShapeSettings
+
38 virtual ShapeResult Create() const override;
+
39
+
41 VertexList mTriangleVertices;
+
42
+
49 IndexedTriangleList mIndexedTriangles;
+
50
+ +
53
+
56 uint mMaxTrianglesPerLeaf = 8;
+
57
+
61 float mActiveEdgeCosThresholdAngle = 0.996195f; // cos(5 degrees)
+
62
+
67 bool mPerTriangleUserData = false;
+
68};
+
+
69
+
+
73class JPH_EXPORT MeshShape final : public Shape
+
74{
+
75public:
+ +
77
+ +
80 MeshShape(const MeshShapeSettings &inSettings, ShapeResult &outResult);
+
81
+
82 // See Shape::MustBeStatic
+
83 virtual bool MustBeStatic() const override { return true; }
+
84
+
85 // See Shape::GetLocalBounds
+
86 virtual AABox GetLocalBounds() const override;
+
87
+
88 // See Shape::GetSubShapeIDBitsRecursive
+
89 virtual uint GetSubShapeIDBitsRecursive() const override;
+
90
+
91 // See Shape::GetInnerRadius
+
92 virtual float GetInnerRadius() const override { return 0.0f; }
+
93
+
94 // See Shape::GetMassProperties
+
95 virtual MassProperties GetMassProperties() const override;
+
96
+
97 // See Shape::GetMaterial
+
98 virtual const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const override;
+
99
+
101 const PhysicsMaterialList & GetMaterialList() const { return mMaterials; }
+
102
+
105 uint GetMaterialIndex(const SubShapeID &inSubShapeID) const;
+
106
+
107 // See Shape::GetSurfaceNormal
+
108 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
109
+
110 // See Shape::GetSupportingFace
+
111 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
112
+
113#ifdef JPH_DEBUG_RENDERER
+
114 // See Shape::Draw
+
115 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
116#endif // JPH_DEBUG_RENDERER
+
117
+
118 // See Shape::CastRay
+
119 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
120 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
121
+
125 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
126
+
127 // See: Shape::CollideSoftBodyVertices
+
128 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
129
+
130 // See Shape::GetTrianglesStart
+
131 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override;
+
132
+
133 // See Shape::GetTrianglesNext
+
134 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override;
+
135
+
136 // See Shape::GetSubmergedVolume
+
137 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override { JPH_ASSERT(false, "Not supported"); }
+
138
+
139 // See Shape
+
140 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
141 virtual void SaveMaterialState(PhysicsMaterialList &outMaterials) const override;
+
142 virtual void RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override;
+
143
+
144 // See Shape::GetStats
+
145 virtual Stats GetStats() const override;
+
146
+
147 // See Shape::GetVolume
+
148 virtual float GetVolume() const override { return 0; }
+
149
+
150 // When MeshShape::mPerTriangleUserData is true, this function can be used to retrieve the user data that was stored in the mesh shape.
+
151 uint32 GetTriangleUserData(const SubShapeID &inSubShapeID) const;
+
152
+
153#ifdef JPH_DEBUG_RENDERER
+
154 // Settings
+ + +
157#endif // JPH_DEBUG_RENDERER
+
158
+
159 // Register shape functions with the registry
+
160 static void sRegister();
+
161
+
162protected:
+
163 // See: Shape::RestoreBinaryState
+
164 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
165
+
166private:
+
167 struct MSGetTrianglesContext;
+
168
+
169 static constexpr int NumTriangleBits = 3;
+
170 static constexpr int MaxTrianglesPerLeaf = 1 << NumTriangleBits;
+
171
+
173 static void sFindActiveEdges(const MeshShapeSettings &inSettings, IndexedTriangleList &ioIndices);
+
174
+
176 template <class Visitor>
+
177 void WalkTree(Visitor &ioVisitor) const;
+
178
+
180 template <class Visitor>
+
181 void WalkTreePerTriangle(const SubShapeIDCreator &inSubShapeIDCreator2, Visitor &ioVisitor) const;
+
182
+
184 inline void DecodeSubShapeID(const SubShapeID &inSubShapeID, const void *&outTriangleBlock, uint32 &outTriangleIndex) const;
+
185
+
186 // Helper functions called by CollisionDispatch
+
187 static void sCollideConvexVsMesh(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);
+
188 static void sCollideSphereVsMesh(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);
+
189 static void sCastConvexVsMesh(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
190 static void sCastSphereVsMesh(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
191
+
193 PhysicsMaterialList mMaterials;
+
194
+
195 ByteBuffer mTree;
+
196
+
198 enum ETriangleFlags
+
199 {
+
201 FLAGS_MATERIAL_BITS = 5,
+
202 FLAGS_MATERIAL_MASK = (1 << FLAGS_MATERIAL_BITS) - 1,
+
203
+
205 FLAGS_ACTIVE_EGDE_SHIFT = FLAGS_MATERIAL_BITS,
+
206 FLAGS_ACTIVE_EDGE_BITS = 3,
+
207 FLAGS_ACTIVE_EDGE_MASK = (1 << FLAGS_ACTIVE_EDGE_BITS) - 1
+
208 };
+
209
+
210#ifdef JPH_DEBUG_RENDERER
+
211 mutable DebugRenderer::GeometryRef mGeometry;
+
212 mutable bool mCachedTrianglesColoredPerGroup = false;
+
213 mutable bool mCachedUseMaterialColors = false;
+
214#endif // JPH_DEBUG_RENDERER
+
215};
+
+
216
+ + +
#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
+ + +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#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:76
+
EShapeType
Shapes are categorized in groups, each shape can return which group it belongs to through its Shape::...
Definition Shape.h:57
+
@ Mesh
Used by MeshShape.
+ +
Axis aligned box.
Definition AABox.h:16
+ +
Simple byte buffer, aligned to a cache line.
Definition ByteBuffer.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
+
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 MeshShape.h:74
+
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 MeshShape.h:137
+
JPH_OVERRIDE_NEW_DELETE MeshShape()
Constructor.
Definition MeshShape.h:79
+
static bool sDrawTriangleGroups
Definition MeshShape.h:155
+
virtual float GetVolume() const override
Definition MeshShape.h:148
+
virtual float GetInnerRadius() const override
Definition MeshShape.h:92
+
static bool sDrawTriangleOutlines
Definition MeshShape.h:156
+
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 MeshShape.h:83
+
const PhysicsMaterialList & GetMaterialList() const
Get the list of all materials.
Definition MeshShape.h:101
+
Class that constructs a MeshShape.
Definition MeshShape.h:23
+
Definition PhysicsMaterial.h:23
+
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
Definition Quat.h:33
+
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:184
+
Definition Shape.h:145
+
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 Vec3.h:17
+
Definition MeshShape.cpp:941
+
Definition RayCast.h:47
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_morton_code_8h.html b/_morton_code_8h.html new file mode 100644 index 000000000..bb4c26ad2 --- /dev/null +++ b/_morton_code_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/MortonCode.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MortonCode.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  MortonCode
 
+
+
+ + + + diff --git a/_morton_code_8h.js b/_morton_code_8h.js new file mode 100644 index 000000000..57dd085cc --- /dev/null +++ b/_morton_code_8h.js @@ -0,0 +1,4 @@ +var _morton_code_8h = +[ + [ "MortonCode", "class_morton_code.html", null ] +]; \ No newline at end of file diff --git a/_morton_code_8h_source.html b/_morton_code_8h_source.html new file mode 100644 index 000000000..746dd79fc --- /dev/null +++ b/_morton_code_8h_source.html @@ -0,0 +1,178 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/MortonCode.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MortonCode.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
+
+ +
12{
+
13public:
+
+
16 static uint32 sExpandBits(float inV)
+
17 {
+
18 JPH_ASSERT(inV >= 0.0f && inV <= 1.0f);
+
19 uint32 v = uint32(inV * 1023.0f + 0.5f);
+
20 JPH_ASSERT(v < 1024);
+
21 v = (v * 0x00010001u) & 0xFF0000FFu;
+
22 v = (v * 0x00000101u) & 0x0F00F00Fu;
+
23 v = (v * 0x00000011u) & 0xC30C30C3u;
+
24 v = (v * 0x00000005u) & 0x49249249u;
+
25 return v;
+
26 }
+
+
27
+
+
29 static uint32 sGetMortonCode(Vec3Arg inVector, const AABox &inVectorBounds)
+
30 {
+
31 // Convert to 10 bit fixed point
+
32 Vec3 scaled = (inVector - inVectorBounds.mMin) / inVectorBounds.GetSize();
+
33 uint x = sExpandBits(scaled.GetX());
+
34 uint y = sExpandBits(scaled.GetY());
+
35 uint z = sExpandBits(scaled.GetZ());
+
36 return (x << 2) + (y << 1) + z;
+
37 }
+
+
38};
+
+
39
+ + +
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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
Axis aligned box.
Definition AABox.h:16
+
Vec3 GetSize() const
Get size of bounding box.
Definition AABox.h:117
+
Vec3 mMin
Bounding box min and max.
Definition AABox.h:300
+
Definition MortonCode.h:12
+
static uint32 sExpandBits(float inV)
Definition MortonCode.h:16
+
static uint32 sGetMortonCode(Vec3Arg inVector, const AABox &inVectorBounds)
Calculate the morton code for inVector, given that all vectors lie in inVectorBounds.
Definition MortonCode.h:29
+
Definition Vec3.h:17
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
+
+ + + + diff --git a/_motion_properties_8cpp.html b/_motion_properties_8cpp.html new file mode 100644 index 000000000..deb8b11c3 --- /dev/null +++ b/_motion_properties_8cpp.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/MotionProperties.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotionProperties.cpp File Reference
+
+
+
+
+ + + + diff --git a/_motion_properties_8h.html b/_motion_properties_8h.html new file mode 100644 index 000000000..f219f513c --- /dev/null +++ b/_motion_properties_8h.html @@ -0,0 +1,174 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/MotionProperties.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MotionProperties.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  MotionProperties
 The Body class only keeps track of state for static bodies, the MotionProperties class keeps the additional state needed for a moving Body. It has a 1-on-1 relationship with the body. More...
 
+ + + + +

+Enumerations

enum class  ECanSleep { CannotSleep = 0 +, CanSleep = 1 + }
 Enum that determines if an object can go to sleep. More...
 
+

Enumeration Type Documentation

+ +

◆ ECanSleep

+ +
+
+ + + + + +
+ + + + +
enum class ECanSleep
+
+strong
+
+ +

Enum that determines if an object can go to sleep.

+ + + +
Enumerator
CannotSleep 

Object cannot go to sleep.

+
CanSleep 

Object can go to sleep.

+
+ +
+
+
+
+ + + + diff --git a/_motion_properties_8h.js b/_motion_properties_8h.js new file mode 100644 index 000000000..c00f4d84f --- /dev/null +++ b/_motion_properties_8h.js @@ -0,0 +1,8 @@ +var _motion_properties_8h = +[ + [ "MotionProperties", "class_motion_properties.html", "class_motion_properties" ], + [ "ECanSleep", "_motion_properties_8h.html#a97f69c4b07965ef22ebe08465e1c3db0", [ + [ "CannotSleep", "_motion_properties_8h.html#a97f69c4b07965ef22ebe08465e1c3db0af6565583dd53a537e5c7376048299104", null ], + [ "CanSleep", "_motion_properties_8h.html#a97f69c4b07965ef22ebe08465e1c3db0a93264bf5e739b984ef79c2fbc76863c6", null ] + ] ] +]; \ No newline at end of file diff --git a/_motion_properties_8h_source.html b/_motion_properties_8h_source.html new file mode 100644 index 000000000..59e9f78d5 --- /dev/null +++ b/_motion_properties_8h_source.html @@ -0,0 +1,455 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/MotionProperties.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotionProperties.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
+ + + + + + + + +
15
+ +
17
+
18class StateRecorder;
+
19
+
+
21enum class ECanSleep
+
22{
+
23 CannotSleep = 0,
+
24 CanSleep = 1,
+
25};
+
+
26
+
+ +
29{
+
30public:
+ +
32
+
34 EMotionQuality GetMotionQuality() const { return mMotionQuality; }
+
35
+
37 inline EAllowedDOFs GetAllowedDOFs() const { return mAllowedDOFs; }
+
38
+
40 inline bool GetAllowSleeping() const { return mAllowSleeping; }
+
41
+
43 inline Vec3 GetLinearVelocity() const { JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::Read)); return mLinearVelocity; }
+
44
+
46 void SetLinearVelocity(Vec3Arg inLinearVelocity) { JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::ReadWrite)); JPH_ASSERT(inLinearVelocity.Length() <= mMaxLinearVelocity); mLinearVelocity = LockTranslation(inLinearVelocity); }
+
47
+
49 void SetLinearVelocityClamped(Vec3Arg inLinearVelocity) { mLinearVelocity = LockTranslation(inLinearVelocity); ClampLinearVelocity(); }
+
50
+
52 inline Vec3 GetAngularVelocity() const { JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::Read)); return mAngularVelocity; }
+
53
+
55 void SetAngularVelocity(Vec3Arg inAngularVelocity) { JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::ReadWrite)); JPH_ASSERT(inAngularVelocity.Length() <= mMaxAngularVelocity); mAngularVelocity = LockAngular(inAngularVelocity); }
+
56
+
58 void SetAngularVelocityClamped(Vec3Arg inAngularVelocity) { mAngularVelocity = LockAngular(inAngularVelocity); ClampAngularVelocity(); }
+
59
+
61 inline void MoveKinematic(Vec3Arg inDeltaPosition, QuatArg inDeltaRotation, float inDeltaTime);
+
62
+
65
+
67 inline float GetMaxLinearVelocity() const { return mMaxLinearVelocity; }
+
68 inline void SetMaxLinearVelocity(float inLinearVelocity) { JPH_ASSERT(inLinearVelocity >= 0.0f); mMaxLinearVelocity = inLinearVelocity; }
+
69
+
71 inline float GetMaxAngularVelocity() const { return mMaxAngularVelocity; }
+
72 inline void SetMaxAngularVelocity(float inAngularVelocity) { JPH_ASSERT(inAngularVelocity >= 0.0f); mMaxAngularVelocity = inAngularVelocity; }
+
74
+
76 inline void ClampLinearVelocity();
+
77 inline void ClampAngularVelocity();
+
78
+
80 inline float GetLinearDamping() const { return mLinearDamping; }
+
81 void SetLinearDamping(float inLinearDamping) { JPH_ASSERT(inLinearDamping >= 0.0f); mLinearDamping = inLinearDamping; }
+
82
+
84 inline float GetAngularDamping() const { return mAngularDamping; }
+
85 void SetAngularDamping(float inAngularDamping) { JPH_ASSERT(inAngularDamping >= 0.0f); mAngularDamping = inAngularDamping; }
+
86
+
88 inline float GetGravityFactor() const { return mGravityFactor; }
+
89 void SetGravityFactor(float inGravityFactor) { mGravityFactor = inGravityFactor; }
+
90
+
92 void SetMassProperties(EAllowedDOFs inAllowedDOFs, const MassProperties &inMassProperties);
+
93
+
95 inline float GetInverseMass() const { JPH_ASSERT(mCachedMotionType == EMotionType::Dynamic); return mInvMass; }
+
96 inline float GetInverseMassUnchecked() const { return mInvMass; }
+
97
+
102 void SetInverseMass(float inInverseMass) { mInvMass = inInverseMass; }
+
103
+
105 inline Vec3 GetInverseInertiaDiagonal() const { JPH_ASSERT(mCachedMotionType == EMotionType::Dynamic); return mInvInertiaDiagonal; }
+
106
+
108 inline Quat GetInertiaRotation() const { return mInertiaRotation; }
+
109
+
114 void SetInverseInertia(Vec3Arg inDiagonal, QuatArg inRot) { mInvInertiaDiagonal = inDiagonal; mInertiaRotation = inRot; }
+
115
+
117 inline Mat44 GetLocalSpaceInverseInertia() const;
+
118
+
120 inline Mat44 GetLocalSpaceInverseInertiaUnchecked() const;
+
121
+
123 inline Mat44 GetInverseInertiaForRotation(Mat44Arg inRotation) const;
+
124
+
126 JPH_INLINE Vec3 MultiplyWorldSpaceInverseInertiaByVector(QuatArg inBodyRotation, Vec3Arg inV) const;
+
127
+
129 JPH_INLINE Vec3 GetPointVelocityCOM(Vec3Arg inPointRelativeToCOM) const { return mLinearVelocity + mAngularVelocity.Cross(inPointRelativeToCOM); }
+
130
+
131 // Get the total amount of force applied to the center of mass this time step (through Body::AddForce calls). Note that it will reset to zero after PhysicsSystem::Update.
+
132 JPH_INLINE Vec3 GetAccumulatedForce() const { return Vec3::sLoadFloat3Unsafe(mForce); }
+
133
+
134 // Get the total amount of torque applied to the center of mass this time step (through Body::AddForce/Body::AddTorque calls). Note that it will reset to zero after PhysicsSystem::Update.
+
135 JPH_INLINE Vec3 GetAccumulatedTorque() const { return Vec3::sLoadFloat3Unsafe(mTorque); }
+
136
+
137 // Reset the total accumulated force, note that this will be done automatically after every time step.
+
138 JPH_INLINE void ResetForce() { mForce = Float3(0, 0, 0); }
+
139
+
140 // Reset the total accumulated torque, note that this will be done automatically after every time step.
+
141 JPH_INLINE void ResetTorque() { mTorque = Float3(0, 0, 0); }
+
142
+
143 // Reset the current velocity and accumulated force and torque.
+
+
144 JPH_INLINE void ResetMotion()
+
145 {
+
146 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::ReadWrite));
+
147 mLinearVelocity = mAngularVelocity = Vec3::sZero();
+
148 mForce = mTorque = Float3(0, 0, 0);
+
149 }
+
+
150
+ +
157
+
+
159 JPH_INLINE Vec3 LockTranslation(Vec3Arg inV) const
+
160 {
+
161 return Vec3::sAnd(inV, Vec3(GetLinearDOFsMask().ReinterpretAsFloat()));
+
162 }
+
+
163
+
+
165 JPH_INLINE UVec4 GetAngularDOFsMask() const
+
166 {
+ +
168 return UVec4::sEquals(UVec4::sAnd(UVec4::sReplicate(uint32(mAllowedDOFs)), mask), mask);
+
169 }
+
+
170
+
+
172 JPH_INLINE Vec3 LockAngular(Vec3Arg inV) const
+
173 {
+
174 return Vec3::sAnd(inV, Vec3(GetAngularDOFsMask().ReinterpretAsFloat()));
+
175 }
+
+
176
+
178 void SetNumVelocityStepsOverride(uint inN) { JPH_ASSERT(inN < 256); mNumVelocityStepsOverride = uint8(inN); }
+
179 uint GetNumVelocityStepsOverride() const { return mNumVelocityStepsOverride; }
+
180
+
182 void SetNumPositionStepsOverride(uint inN) { JPH_ASSERT(inN < 256); mNumPositionStepsOverride = uint8(inN); }
+
183 uint GetNumPositionStepsOverride() const { return mNumPositionStepsOverride; }
+
184
+
186 // FUNCTIONS BELOW THIS LINE ARE FOR INTERNAL USE ONLY
+
188
+
191 inline void AddLinearVelocityStep(Vec3Arg inLinearVelocityChange) { JPH_DET_LOG("AddLinearVelocityStep: " << inLinearVelocityChange); JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::ReadWrite)); mLinearVelocity = LockTranslation(mLinearVelocity + inLinearVelocityChange); JPH_ASSERT(!mLinearVelocity.IsNaN()); }
+
192 inline void SubLinearVelocityStep(Vec3Arg inLinearVelocityChange) { JPH_DET_LOG("SubLinearVelocityStep: " << inLinearVelocityChange); JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::ReadWrite)); mLinearVelocity = LockTranslation(mLinearVelocity - inLinearVelocityChange); JPH_ASSERT(!mLinearVelocity.IsNaN()); }
+
193 inline void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange) { JPH_DET_LOG("AddAngularVelocityStep: " << inAngularVelocityChange); JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::ReadWrite)); mAngularVelocity += inAngularVelocityChange; JPH_ASSERT(!mAngularVelocity.IsNaN()); }
+
194 inline void SubAngularVelocityStep(Vec3Arg inAngularVelocityChange) { JPH_DET_LOG("SubAngularVelocityStep: " << inAngularVelocityChange); JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::ReadWrite)); mAngularVelocity -= inAngularVelocityChange; JPH_ASSERT(!mAngularVelocity.IsNaN()); }
+
196
+
198 inline void ApplyGyroscopicForceInternal(QuatArg inBodyRotation, float inDeltaTime);
+
199
+
201 inline void ApplyForceTorqueAndDragInternal(QuatArg inBodyRotation, Vec3Arg inGravity, float inDeltaTime);
+
202
+
204 uint32 GetIslandIndexInternal() const { return mIslandIndex; }
+
205 void SetIslandIndexInternal(uint32 inIndex) { mIslandIndex = inIndex; }
+
206
+
208 uint32 GetIndexInActiveBodiesInternal() const { return mIndexInActiveBodies; }
+
209
+
210#ifdef JPH_DOUBLE_PRECISION
+
211 inline DVec3 GetSleepTestOffset() const { return DVec3::sLoadDouble3Unsafe(mSleepTestOffset); }
+
212#endif // JPH_DOUBLE_PRECISION
+
213
+
215 inline void ResetSleepTestSpheres(const RVec3 *inPoints);
+
216
+
218 inline void ResetSleepTestTimer() { mSleepTestTimer = 0.0f; }
+
219
+
221 inline ECanSleep AccumulateSleepTime(float inDeltaTime, float inTimeBeforeSleep);
+
222
+
224 void SaveState(StateRecorder &inStream) const;
+
225
+
227 void RestoreState(StateRecorder &inStream);
+
228
+
229 static constexpr uint32 cInactiveIndex = uint32(-1);
+
230
+
231private:
+
232 friend class BodyManager;
+
233 friend class Body;
+
234
+
235 // 1st cache line
+
236 // 16 byte aligned
+
237 Vec3 mLinearVelocity { Vec3::sZero() };
+
238 Vec3 mAngularVelocity { Vec3::sZero() };
+
239 Vec3 mInvInertiaDiagonal;
+
240 Quat mInertiaRotation;
+
241
+
242 // 2nd cache line
+
243 // 4 byte aligned
+
244 Float3 mForce { 0, 0, 0 };
+
245 Float3 mTorque { 0, 0, 0 };
+
246 float mInvMass;
+
247 float mLinearDamping;
+
248 float mAngularDamping;
+
249 float mMaxLinearVelocity;
+
250 float mMaxAngularVelocity;
+
251 float mGravityFactor;
+
252 uint32 mIndexInActiveBodies = cInactiveIndex;
+
253 uint32 mIslandIndex = cInactiveIndex;
+
254
+
255 // 1 byte aligned
+
256 EMotionQuality mMotionQuality;
+
257 bool mAllowSleeping;
+
258 EAllowedDOFs mAllowedDOFs = EAllowedDOFs::All;
+
259 uint8 mNumVelocityStepsOverride = 0;
+
260 uint8 mNumPositionStepsOverride = 0;
+
261
+
262 // 3rd cache line (least frequently used)
+
263 // 4 byte aligned (or 8 byte if running in double precision)
+
264#ifdef JPH_DOUBLE_PRECISION
+
265 Double3 mSleepTestOffset;
+
266#endif // JPH_DOUBLE_PRECISION
+
267 Sphere mSleepTestSpheres[3];
+
268 float mSleepTestTimer;
+
269
+
270#ifdef JPH_ENABLE_ASSERTS
+
271 EBodyType mCachedBodyType;
+
272 EMotionType mCachedMotionType;
+
273#endif
+
274};
+
+
275
+ +
277
+
278#include "MotionProperties.inl"
+ +
EAllowedDOFs
Enum used in BodyCreationSettings and MotionProperties to indicate which degrees of freedom a body ha...
Definition AllowedDOFs.h:11
+
@ RotationX
Body can rotate around world space X axis.
+
@ TranslationY
Body can move in world space Y axis.
+
@ RotationY
Body can rotate around world space Y axis.
+
@ TranslationZ
Body can move in world space Z axis.
+
@ All
All degrees of freedom are allowed.
+
@ TranslationX
Body can move in world space X axis.
+
@ RotationZ
Body can rotate around world space Z axis.
+ + +
EBodyType
Type of body.
Definition BodyType.h:11
+
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_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_DET_LOG(...)
By default we log nothing.
Definition DeterminismLog.h:155
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
ECanSleep
Enum that determines if an object can go to sleep.
Definition MotionProperties.h:22
+
@ CanSleep
Object can go to sleep.
+
@ CannotSleep
Object cannot go to sleep.
+ + +
EMotionQuality
Motion quality, or how well it detects collisions when it has a high velocity.
Definition MotionQuality.h:11
+ +
EMotionType
Motion type of a physics body.
Definition MotionType.h:11
+
@ Dynamic
Responds to forces as a normal physics object.
+ +
Definition Body.h:35
+
Class that contains all bodies.
Definition BodyManager.h:44
+
Definition DVec3.h:14
+
static JPH_INLINE DVec3 sLoadDouble3Unsafe(const Double3 &inV)
Load 3 doubles from memory (reads 64 bits extra which it doesn't use)
Definition DVec3.inl:155
+
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition Double3.h:13
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...
Definition MotionProperties.h:29
+
void SetLinearVelocity(Vec3Arg inLinearVelocity)
Set world space linear velocity of the center of mass.
Definition MotionProperties.h:46
+
uint32 GetIslandIndexInternal() const
Access to the island index.
Definition MotionProperties.h:204
+
void SetNumVelocityStepsOverride(uint inN)
Used only when this body is dynamic and colliding. Override for the number of solver velocity iterati...
Definition MotionProperties.h:178
+
void SetAngularVelocityClamped(Vec3Arg inAngularVelocity)
Set world space angular velocity of the center of mass, will make sure the value is clamped against t...
Definition MotionProperties.h:58
+
Quat GetInertiaRotation() const
Rotation (R) that takes inverse inertia diagonal to local space: .
Definition MotionProperties.h:108
+
float GetMaxLinearVelocity() const
Maximum linear velocity that a body can achieve. Used to prevent the system from exploding.
Definition MotionProperties.h:67
+
JPH_INLINE Vec3 GetPointVelocityCOM(Vec3Arg inPointRelativeToCOM) const
Velocity of point inPoint (in center of mass space, e.g. on the surface of the body) of the body (uni...
Definition MotionProperties.h:129
+
Vec3 GetInverseInertiaDiagonal() const
Diagonal of inverse inertia matrix: D. Should only be called on a dynamic object (static or kinematic...
Definition MotionProperties.h:105
+
uint GetNumPositionStepsOverride() const
Definition MotionProperties.h:183
+
void SetInverseInertia(Vec3Arg inDiagonal, QuatArg inRot)
Definition MotionProperties.h:114
+
float GetGravityFactor() const
Get gravity factor (1 = normal gravity, 0 = no gravity)
Definition MotionProperties.h:88
+
void AddLinearVelocityStep(Vec3Arg inLinearVelocityChange)
Definition MotionProperties.h:191
+
float GetMaxAngularVelocity() const
Maximum angular velocity that a body can achieve. Used to prevent the system from exploding.
Definition MotionProperties.h:71
+
void SetLinearVelocityClamped(Vec3Arg inLinearVelocity)
Set world space linear velocity of the center of mass, will make sure the value is clamped against th...
Definition MotionProperties.h:49
+
uint GetNumVelocityStepsOverride() const
Definition MotionProperties.h:179
+
float GetInverseMassUnchecked() const
Definition MotionProperties.h:96
+
Vec3 GetLinearVelocity() const
Get world space linear velocity of the center of mass.
Definition MotionProperties.h:43
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass.
Definition MotionProperties.h:52
+
void SetMaxAngularVelocity(float inAngularVelocity)
Definition MotionProperties.h:72
+
JPH_INLINE Vec3 LockAngular(Vec3Arg inV) const
Takes an angular velocity / torque vector inV and returns a vector where the components that are not ...
Definition MotionProperties.h:172
+
JPH_INLINE void ResetMotion()
Definition MotionProperties.h:144
+
JPH_INLINE Vec3 GetAccumulatedTorque() const
Definition MotionProperties.h:135
+
void SetIslandIndexInternal(uint32 inIndex)
Definition MotionProperties.h:205
+
float GetAngularDamping() const
Get angular damping: dw/dt = -c * w. c must be between 0 and 1 but is usually close to 0.
Definition MotionProperties.h:84
+
void SubLinearVelocityStep(Vec3Arg inLinearVelocityChange)
Definition MotionProperties.h:192
+
float GetInverseMass() const
Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies ha...
Definition MotionProperties.h:95
+
void SetGravityFactor(float inGravityFactor)
Definition MotionProperties.h:89
+
JPH_INLINE UVec4 GetLinearDOFsMask() const
Returns a vector where the linear components that are not allowed by mAllowedDOFs are set to 0 and th...
Definition MotionProperties.h:152
+
uint32 GetIndexInActiveBodiesInternal() const
Access to the index in the active bodies array.
Definition MotionProperties.h:208
+
float GetLinearDamping() const
Get linear damping: dv/dt = -c * v. c must be between 0 and 1 but is usually close to 0.
Definition MotionProperties.h:80
+
void SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:194
+
JPH_INLINE void ResetForce()
Definition MotionProperties.h:138
+
void SetInverseMass(float inInverseMass)
Definition MotionProperties.h:102
+
void ResetSleepTestTimer()
Reset the sleep test timer without resetting the sleep test spheres.
Definition MotionProperties.h:218
+
void SetAngularVelocity(Vec3Arg inAngularVelocity)
Set world space angular velocity of the center of mass.
Definition MotionProperties.h:55
+
JPH_INLINE Vec3 GetAccumulatedForce() const
Definition MotionProperties.h:132
+
JPH_INLINE Vec3 LockTranslation(Vec3Arg inV) const
Takes a translation vector inV and returns a vector where the components that are not allowed by mAll...
Definition MotionProperties.h:159
+
void SetMaxLinearVelocity(float inLinearVelocity)
Definition MotionProperties.h:68
+
JPH_OVERRIDE_NEW_DELETE EMotionQuality GetMotionQuality() const
Motion quality, or how well it detects collisions when it has a high velocity.
Definition MotionProperties.h:34
+
void SetLinearDamping(float inLinearDamping)
Definition MotionProperties.h:81
+
void SetAngularDamping(float inAngularDamping)
Definition MotionProperties.h:85
+
JPH_INLINE UVec4 GetAngularDOFsMask() const
Returns a vector where the angular components that are not allowed by mAllowedDOFs are set to 0 and t...
Definition MotionProperties.h:165
+
void SetNumPositionStepsOverride(uint inN)
Used only when this body is dynamic and colliding. Override for the number of solver position iterati...
Definition MotionProperties.h:182
+
EAllowedDOFs GetAllowedDOFs() const
Get the allowed degrees of freedom that this body has (this can be changed by calling SetMassProperti...
Definition MotionProperties.h:37
+
bool GetAllowSleeping() const
If this body can go to sleep.
Definition MotionProperties.h:40
+
void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:193
+
JPH_INLINE void ResetTorque()
Definition MotionProperties.h:141
+
Definition Quat.h:33
+
Definition Sphere.h:12
+
Definition StateRecorder.h:48
+
Definition UVec4.h:12
+
static JPH_INLINE UVec4 sReplicate(uint32 inV)
Replicate int inV across all components.
Definition UVec4.inl:56
+
static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)
Logical and (component wise)
Definition UVec4.inl:199
+
static JPH_INLINE UVec4 sEquals(UVec4Arg inV1, UVec4Arg inV2)
Equals (component wise)
Definition UVec4.inl:143
+
Definition Vec3.h:17
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec3.inl:677
+
static JPH_INLINE Vec3 sAnd(Vec3Arg inV1, Vec3Arg inV2)
Logical and (component wise)
Definition Vec3.inl:310
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
+
+ + + + diff --git a/_motion_properties_8inl.html b/_motion_properties_8inl.html new file mode 100644 index 000000000..1e0a02e83 --- /dev/null +++ b/_motion_properties_8inl.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/MotionProperties.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotionProperties.inl File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_motion_properties_8inl_source.html b/_motion_properties_8inl_source.html new file mode 100644 index 000000000..d0a763f1f --- /dev/null +++ b/_motion_properties_8inl_source.html @@ -0,0 +1,366 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/MotionProperties.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotionProperties.inl
+
+
+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
+
+
9void MotionProperties::MoveKinematic(Vec3Arg inDeltaPosition, QuatArg inDeltaRotation, float inDeltaTime)
+
10{
+
11 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::ReadWrite));
+
12 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sPositionAccess, BodyAccess::EAccess::Read));
+
13 JPH_ASSERT(mCachedBodyType == EBodyType::RigidBody);
+
14 JPH_ASSERT(mCachedMotionType != EMotionType::Static);
+
15
+
16 // Calculate required linear velocity
+
17 mLinearVelocity = LockTranslation(inDeltaPosition / inDeltaTime);
+
18
+
19 // Calculate required angular velocity
+
20 Vec3 axis;
+
21 float angle;
+
22 inDeltaRotation.GetAxisAngle(axis, angle);
+
23 mAngularVelocity = LockAngular(axis * (angle / inDeltaTime));
+
24}
+
+
25
+
+ +
27{
+
28 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::ReadWrite));
+
29
+
30 float len_sq = mLinearVelocity.LengthSq();
+
31 JPH_ASSERT(isfinite(len_sq));
+
32 if (len_sq > Square(mMaxLinearVelocity))
+
33 mLinearVelocity *= mMaxLinearVelocity / sqrt(len_sq);
+
34}
+
+
35
+
+ +
37{
+
38 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::ReadWrite));
+
39
+
40 float len_sq = mAngularVelocity.LengthSq();
+
41 JPH_ASSERT(isfinite(len_sq));
+
42 if (len_sq > Square(mMaxAngularVelocity))
+
43 mAngularVelocity *= mMaxAngularVelocity / sqrt(len_sq);
+
44}
+
+
45
+
+ +
47{
+
48 Mat44 rotation = Mat44::sRotation(mInertiaRotation);
+
49 Mat44 rotation_mul_scale_transposed(mInvInertiaDiagonal.SplatX() * rotation.GetColumn4(0), mInvInertiaDiagonal.SplatY() * rotation.GetColumn4(1), mInvInertiaDiagonal.SplatZ() * rotation.GetColumn4(2), Vec4(0, 0, 0, 1));
+
50 return rotation.Multiply3x3RightTransposed(rotation_mul_scale_transposed);
+
51}
+
+
52
+ +
58
+
+ +
60{
+
61 JPH_ASSERT(mCachedMotionType == EMotionType::Dynamic);
+
62
+
63 Mat44 rotation = inRotation.Multiply3x3(Mat44::sRotation(mInertiaRotation));
+
64 Mat44 rotation_mul_scale_transposed(mInvInertiaDiagonal.SplatX() * rotation.GetColumn4(0), mInvInertiaDiagonal.SplatY() * rotation.GetColumn4(1), mInvInertiaDiagonal.SplatZ() * rotation.GetColumn4(2), Vec4(0, 0, 0, 1));
+
65 Mat44 inverse_inertia = rotation.Multiply3x3RightTransposed(rotation_mul_scale_transposed);
+
66
+
67 // We need to mask out both the rows and columns of DOFs that are not allowed
+
68 Vec4 angular_dofs_mask = GetAngularDOFsMask().ReinterpretAsFloat();
+
69 inverse_inertia.SetColumn4(0, Vec4::sAnd(inverse_inertia.GetColumn4(0), Vec4::sAnd(angular_dofs_mask, angular_dofs_mask.SplatX())));
+
70 inverse_inertia.SetColumn4(1, Vec4::sAnd(inverse_inertia.GetColumn4(1), Vec4::sAnd(angular_dofs_mask, angular_dofs_mask.SplatY())));
+
71 inverse_inertia.SetColumn4(2, Vec4::sAnd(inverse_inertia.GetColumn4(2), Vec4::sAnd(angular_dofs_mask, angular_dofs_mask.SplatZ())));
+
72
+
73 return inverse_inertia;
+
74}
+
+
75
+
+ +
77{
+
78 JPH_ASSERT(mCachedMotionType == EMotionType::Dynamic);
+
79
+
80 // Mask out columns of DOFs that are not allowed
+
81 Vec3 angular_dofs_mask = Vec3(GetAngularDOFsMask().ReinterpretAsFloat());
+
82 Vec3 v = Vec3::sAnd(inV, angular_dofs_mask);
+
83
+
84 // Multiply vector by inverse inertia
+
85 Mat44 rotation = Mat44::sRotation(inBodyRotation * mInertiaRotation);
+
86 Vec3 result = rotation.Multiply3x3(mInvInertiaDiagonal * rotation.Multiply3x3Transposed(v));
+
87
+
88 // Mask out rows of DOFs that are not allowed
+
89 return Vec3::sAnd(result, angular_dofs_mask);
+
90}
+
+
91
+
+
92void MotionProperties::ApplyGyroscopicForceInternal(QuatArg inBodyRotation, float inDeltaTime)
+
93{
+
94 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::ReadWrite));
+
95 JPH_ASSERT(mCachedBodyType == EBodyType::RigidBody);
+
96 JPH_ASSERT(mCachedMotionType == EMotionType::Dynamic);
+
97
+
98 // Calculate local space inertia tensor (a diagonal in local space)
+
99 UVec4 is_zero = Vec3::sEquals(mInvInertiaDiagonal, Vec3::sZero());
+
100 Vec3 denominator = Vec3::sSelect(mInvInertiaDiagonal, Vec3::sReplicate(1.0f), is_zero);
+
101 Vec3 nominator = Vec3::sSelect(Vec3::sReplicate(1.0f), Vec3::sZero(), is_zero);
+
102 Vec3 local_inertia = nominator / denominator; // Avoid dividing by zero, inertia in this axis will be zero
+
103
+
104 // Calculate local space angular momentum
+
105 Quat inertia_space_to_world_space = inBodyRotation * mInertiaRotation;
+
106 Vec3 local_angular_velocity = inertia_space_to_world_space.Conjugated() * mAngularVelocity;
+
107 Vec3 local_momentum = local_inertia * local_angular_velocity;
+
108
+
109 // The gyroscopic force applies a torque: T = -w x I w where w is angular velocity and I the inertia tensor
+
110 // Calculate the new angular momentum by applying the gyroscopic force and make sure the new magnitude is the same as the old one
+
111 // to avoid introducing energy into the system due to the Euler step
+
112 Vec3 new_local_momentum = local_momentum - inDeltaTime * local_angular_velocity.Cross(local_momentum);
+
113 float new_local_momentum_len_sq = new_local_momentum.LengthSq();
+
114 new_local_momentum = new_local_momentum_len_sq > 0.0f? new_local_momentum * sqrt(local_momentum.LengthSq() / new_local_momentum_len_sq) : Vec3::sZero();
+
115
+
116 // Convert back to world space angular velocity
+
117 mAngularVelocity = inertia_space_to_world_space * (mInvInertiaDiagonal * new_local_momentum);
+
118}
+
+
119
+
+
120void MotionProperties::ApplyForceTorqueAndDragInternal(QuatArg inBodyRotation, Vec3Arg inGravity, float inDeltaTime)
+
121{
+
122 JPH_ASSERT(BodyAccess::sCheckRights(BodyAccess::sVelocityAccess, BodyAccess::EAccess::ReadWrite));
+
123 JPH_ASSERT(mCachedBodyType == EBodyType::RigidBody);
+
124 JPH_ASSERT(mCachedMotionType == EMotionType::Dynamic);
+
125
+
126 // Update linear velocity
+
127 mLinearVelocity = LockTranslation(mLinearVelocity + inDeltaTime * (mGravityFactor * inGravity + mInvMass * GetAccumulatedForce()));
+
128
+
129 // Update angular velocity
+
130 mAngularVelocity += inDeltaTime * MultiplyWorldSpaceInverseInertiaByVector(inBodyRotation, GetAccumulatedTorque());
+
131
+
132 // Linear damping: dv/dt = -c * v
+
133 // Solution: v(t) = v(0) * e^(-c * t) or v2 = v1 * e^(-c * dt)
+
134 // Taylor expansion of e^(-c * dt) = 1 - c * dt + ...
+
135 // Since dt is usually in the order of 1/60 and c is a low number too this approximation is good enough
+
136 mLinearVelocity *= max(0.0f, 1.0f - mLinearDamping * inDeltaTime);
+
137 mAngularVelocity *= max(0.0f, 1.0f - mAngularDamping * inDeltaTime);
+
138
+
139 // Clamp velocities
+ + +
142}
+
+
143
+
+ +
145{
+
146#ifdef JPH_DOUBLE_PRECISION
+
147 // Make spheres relative to the first point and initialize them to zero radius
+
148 DVec3 offset = inPoints[0];
+
149 offset.StoreDouble3(&mSleepTestOffset);
+
150 mSleepTestSpheres[0] = Sphere(Vec3::sZero(), 0.0f);
+
151 for (int i = 1; i < 3; ++i)
+
152 mSleepTestSpheres[i] = Sphere(Vec3(inPoints[i] - offset), 0.0f);
+
153#else
+
154 // Initialize the spheres to zero radius around the supplied points
+
155 for (int i = 0; i < 3; ++i)
+
156 mSleepTestSpheres[i] = Sphere(inPoints[i], 0.0f);
+
157#endif
+
158
+
159 mSleepTestTimer = 0.0f;
+
160}
+
+
161
+
+
162ECanSleep MotionProperties::AccumulateSleepTime(float inDeltaTime, float inTimeBeforeSleep)
+
163{
+
164 mSleepTestTimer += inDeltaTime;
+
165 return mSleepTestTimer >= inTimeBeforeSleep? ECanSleep::CanSleep : ECanSleep::CannotSleep;
+
166}
+
+
167
+ +
@ RigidBody
Rigid body consisting of a rigid shape.
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
ECanSleep
Enum that determines if an object can go to sleep.
Definition MotionProperties.h:22
+
@ CanSleep
Object can go to sleep.
+
@ CannotSleep
Object cannot go to sleep.
+
@ Static
Non movable.
+
@ Dynamic
Responds to forces as a normal physics object.
+
Definition DVec3.h:14
+
JPH_INLINE void StoreDouble3(Double3 *outV) const
Store 3 doubles to memory.
Definition DVec3.inl:171
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Vec3 Multiply3x3Transposed(Vec3Arg inV) const
Multiply vector by only 3x3 part of the transpose of the matrix ( )
Definition Mat44.inl:336
+
JPH_INLINE Mat44 Multiply3x3RightTransposed(Mat44Arg inM) const
Multiply 3x3 matrix by the transpose of a 3x3 matrix ( )
Definition Mat44.inl:397
+
JPH_INLINE Vec4 GetColumn4(uint inCol) const
Definition Mat44.h:160
+
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition Mat44.inl:316
+
static JPH_INLINE Mat44 sRotation(Vec3Arg inAxis, float inAngle)
Rotate around arbitrary axis.
Definition Mat44.inl:139
+
JPH_INLINE void SetColumn4(uint inCol, Vec4Arg inV)
Definition Mat44.h:161
+
void ClampAngularVelocity()
Definition MotionProperties.inl:36
+
ECanSleep AccumulateSleepTime(float inDeltaTime, float inTimeBeforeSleep)
Accumulate sleep time and return if a body can go to sleep.
Definition MotionProperties.inl:162
+
void ClampLinearVelocity()
Clamp velocity according to limit.
Definition MotionProperties.inl:26
+
JPH_INLINE Vec3 LockAngular(Vec3Arg inV) const
Takes an angular velocity / torque vector inV and returns a vector where the components that are not ...
Definition MotionProperties.h:172
+
JPH_INLINE Vec3 GetAccumulatedTorque() const
Definition MotionProperties.h:135
+
void ApplyGyroscopicForceInternal(QuatArg inBodyRotation, float inDeltaTime)
Apply the gyroscopic force (aka Dzhanibekov effect, see https://en.wikipedia.org/wiki/Tennis_racket_t...
Definition MotionProperties.inl:92
+
Mat44 GetLocalSpaceInverseInertiaUnchecked() const
Same as GetLocalSpaceInverseInertia() but doesn't check if the body is dynamic.
Definition MotionProperties.inl:46
+
JPH_INLINE Vec3 MultiplyWorldSpaceInverseInertiaByVector(QuatArg inBodyRotation, Vec3Arg inV) const
Multiply a vector with the inverse world space inertia tensor ( ). Zero if object is static or kinema...
Definition MotionProperties.inl:76
+
void ResetSleepTestSpheres(const RVec3 *inPoints)
Reset spheres to center around inPoints with radius 0.
Definition MotionProperties.inl:144
+
JPH_INLINE Vec3 GetAccumulatedForce() const
Definition MotionProperties.h:132
+
JPH_INLINE Vec3 LockTranslation(Vec3Arg inV) const
Takes a translation vector inV and returns a vector where the components that are not allowed by mAll...
Definition MotionProperties.h:159
+
Mat44 GetInverseInertiaForRotation(Mat44Arg inRotation) const
Get inverse inertia matrix ( ) for a given object rotation (translation will be ignored)....
Definition MotionProperties.inl:59
+
Mat44 GetLocalSpaceInverseInertia() const
Get inverse inertia matrix ( ). Will be a matrix of zeros for a static or kinematic object.
Definition MotionProperties.inl:53
+
JPH_INLINE UVec4 GetAngularDOFsMask() const
Returns a vector where the angular components that are not allowed by mAllowedDOFs are set to 0 and t...
Definition MotionProperties.h:165
+
void ApplyForceTorqueAndDragInternal(QuatArg inBodyRotation, Vec3Arg inGravity, float inDeltaTime)
Apply all accumulated forces, torques and drag (should only be called by the PhysicsSystem)
Definition MotionProperties.inl:120
+
void MoveKinematic(Vec3Arg inDeltaPosition, QuatArg inDeltaRotation, float inDeltaTime)
Set velocity of body such that it will be rotate/translate by inDeltaPosition/Rotation in inDeltaTime...
Definition MotionProperties.inl:9
+
Definition Quat.h:33
+
JPH_INLINE void GetAxisAngle(Vec3 &outAxis, float &outAngle) const
Get axis and angle that represents this quaternion, outAngle will always be in the range .
Definition Quat.inl:83
+
JPH_INLINE Quat Conjugated() const
The conjugate [w, -x, -y, -z] is the same as the inverse for unit quaternions.
Definition Quat.h:178
+
Definition Sphere.h:12
+
Definition UVec4.h:12
+
JPH_INLINE Vec4 ReinterpretAsFloat() const
Reinterpret UVec4 as a Vec4 (doesn't change the bits)
Definition UVec4.inl:337
+
Definition Vec3.h:17
+
JPH_INLINE Vec4 SplatX() const
Replicate the X component to all components.
Definition Vec3.inl:529
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE Vec4 SplatZ() const
Replicate the Z component to all components.
Definition Vec3.inl:551
+
static JPH_INLINE Vec3 sAnd(Vec3Arg inV1, Vec3Arg inV2)
Logical and (component wise)
Definition Vec3.inl:310
+
static JPH_INLINE Vec3 sSelect(Vec3Arg inV1, Vec3Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec3.inl:269
+
JPH_INLINE Vec4 SplatY() const
Replicate the Y component to all components.
Definition Vec3.inl:540
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
static JPH_INLINE UVec4 sEquals(Vec3Arg inV1, Vec3Arg inV2)
Equals (component wise)
Definition Vec3.inl:177
+
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
+
Definition Vec4.h:14
+
JPH_INLINE Vec4 SplatX() const
Replicate the X component to all components.
Definition Vec4.inl:555
+
static JPH_INLINE Vec4 sAnd(Vec4Arg inV1, Vec4Arg inV2)
Logical and (component wise)
Definition Vec4.inl:290
+
JPH_INLINE Vec4 SplatY() const
Replicate the Y component to all components.
Definition Vec4.inl:566
+
JPH_INLINE Vec4 SplatZ() const
Replicate the Z component to all components.
Definition Vec4.inl:577
+
+
+ + + + diff --git a/_motion_quality_8h.html b/_motion_quality_8h.html new file mode 100644 index 000000000..37e464e4f --- /dev/null +++ b/_motion_quality_8h.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/MotionQuality.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MotionQuality.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Enumerations

enum class  EMotionQuality : uint8 { Discrete +, LinearCast + }
 Motion quality, or how well it detects collisions when it has a high velocity. More...
 
+

Enumeration Type Documentation

+ +

◆ EMotionQuality

+ +
+
+ + + + + +
+ + + + +
enum class EMotionQuality : uint8
+
+strong
+
+ +

Motion quality, or how well it detects collisions when it has a high velocity.

+ + + +
Enumerator
Discrete 

Update the body in discrete steps. Body will tunnel throuh thin objects if its velocity is high enough. This is the cheapest way of simulating a body.

+
LinearCast 

Update the body using linear casting. When stepping the body, its collision shape is cast from start to destination using the starting rotation. The body will not be able to tunnel through thin objects at high velocity, but tunneling is still possible if the body is long and thin and has high angular velocity. Time is stolen from the object (which means it will move up to the first collision and will not bounce off the surface until the next integration step). This will make the body appear to go slower when it collides with high velocity. In order to not get stuck, the body is always allowed to move by a fraction of it's inner radius, which may eventually lead it to pass through geometry.

+

Note that if you're using a collision listener, you can receive contact added/persisted notifications of contacts that may in the end not happen. This happens between bodies that are using casting: If bodies A and B collide at t1 and B and C collide at t2 where t2 < t1 and A and C don't collide. In this case you may receive an incorrect contact point added callback between A and B (which will be removed the next frame).

+
+ +
+
+
+
+ + + + diff --git a/_motion_quality_8h.js b/_motion_quality_8h.js new file mode 100644 index 000000000..d01ba49ca --- /dev/null +++ b/_motion_quality_8h.js @@ -0,0 +1,7 @@ +var _motion_quality_8h = +[ + [ "EMotionQuality", "_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3a", [ + [ "Discrete", "_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3aa4984667940802dedc139aa7a430a6553", null ], + [ "LinearCast", "_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3aa38f63d197afcc4a4965d98f9401c36e0", null ] + ] ] +]; \ No newline at end of file diff --git a/_motion_quality_8h_source.html b/_motion_quality_8h_source.html new file mode 100644 index 000000000..2ca44f839 --- /dev/null +++ b/_motion_quality_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/MotionQuality.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotionQuality.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
+
+ +
11{
+ +
15
+ +
29};
+
+
30
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
EMotionQuality
Motion quality, or how well it detects collisions when it has a high velocity.
Definition MotionQuality.h:11
+ + +
+
+ + + + diff --git a/_motion_type_8h.html b/_motion_type_8h.html new file mode 100644 index 000000000..57aa3d576 --- /dev/null +++ b/_motion_type_8h.html @@ -0,0 +1,161 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/MotionType.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MotionType.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Enumerations

enum class  EMotionType : uint8 { Static +, Kinematic +, Dynamic + }
 Motion type of a physics body. More...
 
+

Enumeration Type Documentation

+ +

◆ EMotionType

+ +
+
+ + + + + +
+ + + + +
enum class EMotionType : uint8
+
+strong
+
+ +

Motion type of a physics body.

+ + + + +
Enumerator
Static 

Non movable.

+
Kinematic 

Movable using velocities only, does not respond to forces.

+
Dynamic 

Responds to forces as a normal physics object.

+
+ +
+
+
+
+ + + + diff --git a/_motion_type_8h.js b/_motion_type_8h.js new file mode 100644 index 000000000..e6ce18fa8 --- /dev/null +++ b/_motion_type_8h.js @@ -0,0 +1,8 @@ +var _motion_type_8h = +[ + [ "EMotionType", "_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8", [ + [ "Static", "_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16", null ], + [ "Kinematic", "_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e", null ], + [ "Dynamic", "_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c", null ] + ] ] +]; \ No newline at end of file diff --git a/_motion_type_8h_source.html b/_motion_type_8h_source.html new file mode 100644 index 000000000..27ff1fed2 --- /dev/null +++ b/_motion_type_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body/MotionType.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotionType.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
+
+
10enum class EMotionType : uint8
+
11{
+
12 Static,
+
13 Kinematic,
+
14 Dynamic,
+
15};
+
+
16
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
EMotionType
Motion type of a physics body.
Definition MotionType.h:11
+
@ Kinematic
Movable using velocities only, does not respond to forces.
+
@ Static
Non movable.
+
@ Dynamic
Responds to forces as a normal physics object.
+
+
+ + + + diff --git a/_motor_settings_8cpp.html b/_motor_settings_8cpp.html new file mode 100644 index 000000000..a66229c33 --- /dev/null +++ b/_motor_settings_8cpp.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/MotorSettings.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MotorSettings.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (MotorSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (MotorSettings )
+
+ +
+
+
+
+ + + + diff --git a/_motor_settings_8cpp.js b/_motor_settings_8cpp.js new file mode 100644 index 000000000..7a652822f --- /dev/null +++ b/_motor_settings_8cpp.js @@ -0,0 +1,4 @@ +var _motor_settings_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_motor_settings_8cpp.html#a18cea24767f7614ea127a8c84a93514e", null ] +]; \ No newline at end of file diff --git a/_motor_settings_8h.html b/_motor_settings_8h.html new file mode 100644 index 000000000..9175184fb --- /dev/null +++ b/_motor_settings_8h.html @@ -0,0 +1,167 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/MotorSettings.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MotorSettings.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  MotorSettings
 
+ + + +

+Enumerations

enum class  EMotorState { Off +, Velocity +, Position + }
 
+

Enumeration Type Documentation

+ +

◆ EMotorState

+ +
+
+ + + + + +
+ + + + +
enum class EMotorState
+
+strong
+
+ + + + +
Enumerator
Off 

Motor is off.

+
Velocity 

Motor will drive to target velocity.

+
Position 

Motor will drive to target position.

+
+ +
+
+
+
+ + + + diff --git a/_motor_settings_8h.js b/_motor_settings_8h.js new file mode 100644 index 000000000..8ddbb4748 --- /dev/null +++ b/_motor_settings_8h.js @@ -0,0 +1,9 @@ +var _motor_settings_8h = +[ + [ "MotorSettings", "class_motor_settings.html", "class_motor_settings" ], + [ "EMotorState", "_motor_settings_8h.html#a691a2387946263d993fa8e1c9488bc2b", [ + [ "Off", "_motor_settings_8h.html#a691a2387946263d993fa8e1c9488bc2bad15305d7a4e34e02489c74a5ef542f36", null ], + [ "Velocity", "_motor_settings_8h.html#a691a2387946263d993fa8e1c9488bc2ba88156d46910a2d733443c339a9231d12", null ], + [ "Position", "_motor_settings_8h.html#a691a2387946263d993fa8e1c9488bc2ba52f5e0bc3859bc5f5e25130b6c7e8881", null ] + ] ] +]; \ No newline at end of file diff --git a/_motor_settings_8h_source.html b/_motor_settings_8h_source.html new file mode 100644 index 000000000..4c226a2dd --- /dev/null +++ b/_motor_settings_8h_source.html @@ -0,0 +1,204 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/MotorSettings.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotorSettings.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
+ + + +
10
+ +
12
+
13class StreamIn;
+
14class StreamOut;
+
15
+
+
16enum class EMotorState
+
17{
+
18 Off,
+
19 Velocity,
+ +
21};
+
+
22
+
+ +
26{
+
27public:
+ +
29
+
30
+
31 MotorSettings() = default;
+
32 MotorSettings(const MotorSettings &) = default;
+
33 MotorSettings & operator = (const MotorSettings &) = default;
+
34 MotorSettings(float inFrequency, float inDamping) : mSpringSettings(ESpringMode::FrequencyAndDamping, inFrequency, inDamping) { JPH_ASSERT(IsValid()); }
+
35 MotorSettings(float inFrequency, float inDamping, float inForceLimit, float inTorqueLimit) : mSpringSettings(ESpringMode::FrequencyAndDamping, inFrequency, inDamping), mMinForceLimit(-inForceLimit), mMaxForceLimit(inForceLimit), mMinTorqueLimit(-inTorqueLimit), mMaxTorqueLimit(inTorqueLimit) { JPH_ASSERT(IsValid()); }
+
36
+
38 void SetForceLimits(float inMin, float inMax) { JPH_ASSERT(inMin <= inMax); mMinForceLimit = inMin; mMaxForceLimit = inMax; }
+
39
+
41 void SetTorqueLimits(float inMin, float inMax) { JPH_ASSERT(inMin <= inMax); mMinTorqueLimit = inMin; mMaxTorqueLimit = inMax; }
+
42
+
44 void SetForceLimit(float inLimit) { mMinForceLimit = -inLimit; mMaxForceLimit = inLimit; }
+
45
+
47 void SetTorqueLimit(float inLimit) { mMinTorqueLimit = -inLimit; mMaxTorqueLimit = inLimit; }
+
48
+
50 bool IsValid() const { return mSpringSettings.mFrequency >= 0.0f && mSpringSettings.mDamping >= 0.0f && mMinForceLimit <= mMaxForceLimit && mMinTorqueLimit <= mMaxTorqueLimit; }
+
51
+
53 void SaveBinaryState(StreamOut &inStream) const;
+
54
+
56 void RestoreBinaryState(StreamIn &inStream);
+
57
+
58 // Settings
+
59 SpringSettings mSpringSettings { ESpringMode::FrequencyAndDamping, 2.0f, 1.0f };
+
60 float mMinForceLimit = -FLT_MAX;
+
61 float mMaxForceLimit = FLT_MAX;
+
62 float mMinTorqueLimit = -FLT_MAX;
+
63 float mMaxTorqueLimit = FLT_MAX;
+
64};
+
+
65
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
EMotorState
Definition MotorSettings.h:17
+
@ Position
Motor will drive to target position.
+
@ Velocity
Motor will drive to target velocity.
+
@ Off
Motor is off.
+ + +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ +
ESpringMode
Enum used by constraints to specify how the spring is defined.
Definition SpringSettings.h:16
+
@ FrequencyAndDamping
Frequency and damping are specified.
+
Definition MotorSettings.h:26
+
MotorSettings(float inFrequency, float inDamping, float inForceLimit, float inTorqueLimit)
Definition MotorSettings.h:35
+
void SetForceLimits(float inMin, float inMax)
Set asymmetric force limits.
Definition MotorSettings.h:38
+
void SetTorqueLimits(float inMin, float inMax)
Set asymmetric torque limits.
Definition MotorSettings.h:41
+
void SetForceLimit(float inLimit)
Set symmetric force limits.
Definition MotorSettings.h:44
+
bool IsValid() const
Check if settings are valid.
Definition MotorSettings.h:50
+
void SetTorqueLimit(float inLimit)
Set symmetric torque limits.
Definition MotorSettings.h:47
+
Settings for a linear or angular spring.
Definition SpringSettings.h:23
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
+
+ + + + diff --git a/_motorcycle_controller_8cpp.html b/_motorcycle_controller_8cpp.html new file mode 100644 index 000000000..d6ddee073 --- /dev/null +++ b/_motorcycle_controller_8cpp.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/MotorcycleController.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MotorcycleController.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (MotorcycleControllerSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (MotorcycleControllerSettings )
+
+ +
+
+
+
+ + + + diff --git a/_motorcycle_controller_8cpp.js b/_motorcycle_controller_8cpp.js new file mode 100644 index 000000000..6e8a002f4 --- /dev/null +++ b/_motorcycle_controller_8cpp.js @@ -0,0 +1,4 @@ +var _motorcycle_controller_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_motorcycle_controller_8cpp.html#aa283374558777814feb8215807c1f470", null ] +]; \ No newline at end of file diff --git a/_motorcycle_controller_8h.html b/_motorcycle_controller_8h.html new file mode 100644 index 000000000..3021d830a --- /dev/null +++ b/_motorcycle_controller_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/MotorcycleController.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MotorcycleController.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  MotorcycleControllerSettings
 
class  MotorcycleController
 Runtime controller class. More...
 
+
+
+ + + + diff --git a/_motorcycle_controller_8h.js b/_motorcycle_controller_8h.js new file mode 100644 index 000000000..e7048bac8 --- /dev/null +++ b/_motorcycle_controller_8h.js @@ -0,0 +1,5 @@ +var _motorcycle_controller_8h = +[ + [ "MotorcycleControllerSettings", "class_motorcycle_controller_settings.html", "class_motorcycle_controller_settings" ], + [ "MotorcycleController", "class_motorcycle_controller.html", "class_motorcycle_controller" ] +]; \ No newline at end of file diff --git a/_motorcycle_controller_8h_source.html b/_motorcycle_controller_8h_source.html new file mode 100644 index 000000000..32b3ecc63 --- /dev/null +++ b/_motorcycle_controller_8h_source.html @@ -0,0 +1,261 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/MotorcycleController.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotorcycleController.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+
+ +
14{
+
15public:
+ +
17
+
18 // See: VehicleControllerSettings
+
19 virtual VehicleController * ConstructController(VehicleConstraint &inConstraint) const override;
+
20 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
21 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
22
+
24 float mMaxLeanAngle = DegreesToRadians(45.0f);
+
25
+
27 float mLeanSpringConstant = 5000.0f;
+
28
+
30 float mLeanSpringDamping = 1000.0f;
+
31
+
33 float mLeanSpringIntegrationCoefficient = 0.0f;
+
34
+
36 float mLeanSpringIntegrationCoefficientDecay = 4.0f;
+
37
+
40 float mLeanSmoothingFactor = 0.8f;
+
41};
+
+
42
+
+ +
45{
+
46public:
+ +
48
+ +
51
+
53 float GetWheelBase() const;
+
54
+
56 void EnableLeanController(bool inEnable) { mEnableLeanController = inEnable; }
+
57
+
59 bool IsLeanControllerEnabled() const { return mEnableLeanController; }
+
60
+
62 void EnableLeanSteeringLimit(bool inEnable) { mEnableLeanSteeringLimit = inEnable; }
+
63 bool IsLeanSteeringLimitEnabled() const { return mEnableLeanSteeringLimit; }
+
64
+
66 void SetLeanSpringConstant(float inConstant) { mLeanSpringConstant = inConstant; }
+
67 float GetLeanSpringConstant() const { return mLeanSpringConstant; }
+
68
+
70 void SetLeanSpringDamping(float inDamping) { mLeanSpringDamping = inDamping; }
+
71 float GetLeanSpringDamping() const { return mLeanSpringDamping; }
+
72
+
74 void SetLeanSpringIntegrationCoefficient(float inCoefficient) { mLeanSpringIntegrationCoefficient = inCoefficient; }
+
75 float GetLeanSpringIntegrationCoefficient() const { return mLeanSpringIntegrationCoefficient; }
+
76
+
78 void SetLeanSpringIntegrationCoefficientDecay(float inDecay) { mLeanSpringIntegrationCoefficientDecay = inDecay; }
+
79 float GetLeanSpringIntegrationCoefficientDecay() const { return mLeanSpringIntegrationCoefficientDecay; }
+
80
+
83 void SetLeanSmoothingFactor(float inFactor) { mLeanSmoothingFactor = inFactor; }
+
84 float GetLeanSmoothingFactor() const { return mLeanSmoothingFactor; }
+
85
+
86protected:
+
87 // See: VehicleController
+
88 virtual void PreCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) override;
+
89 virtual bool SolveLongitudinalAndLateralConstraints(float inDeltaTime) override;
+
90 virtual void SaveState(StateRecorder &inStream) const override;
+
91 virtual void RestoreState(StateRecorder &inStream) override;
+
92#ifdef JPH_DEBUG_RENDERER
+
93 virtual void Draw(DebugRenderer *inRenderer) const override;
+
94#endif // JPH_DEBUG_RENDERER
+
95
+
96 // Configuration properties
+
97 bool mEnableLeanController = true;
+
98 bool mEnableLeanSteeringLimit = true;
+ + + + + + +
105
+
106 // Run-time calculated target lean vector
+
107 Vec3 mTargetLean = Vec3::sZero();
+
108
+
109 // Integrated error for the lean spring
+
110 float mLeanSpringIntegratedDeltaAngle = 0.0f;
+
111
+
112 // Run-time total angular impulse applied to turn the cycle towards the target lean angle
+
113 float mAppliedImpulse = 0.0f;
+
114};
+
+
115
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_INLINE constexpr float DegreesToRadians(float inV)
Convert a value from degrees to radians.
Definition Math.h:13
+
#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
+ +
Definition DebugRenderer.h:47
+
Runtime controller class.
Definition MotorcycleController.h:45
+
float mLeanSpringIntegrationCoefficient
Definition MotorcycleController.h:102
+
void SetLeanSmoothingFactor(float inFactor)
Definition MotorcycleController.h:83
+
bool IsLeanControllerEnabled() const
Check if the lean spring is enabled.
Definition MotorcycleController.h:59
+
float GetLeanSpringIntegrationCoefficientDecay() const
Definition MotorcycleController.h:79
+
float mMaxLeanAngle
Definition MotorcycleController.h:99
+
float mLeanSpringConstant
Definition MotorcycleController.h:100
+
void EnableLeanSteeringLimit(bool inEnable)
Enable or disable the lean steering limit. When enabled (default) the steering angle is limited based...
Definition MotorcycleController.h:62
+
float mLeanSmoothingFactor
Definition MotorcycleController.h:104
+
float mLeanSpringIntegrationCoefficientDecay
Definition MotorcycleController.h:103
+
float GetLeanSpringConstant() const
Definition MotorcycleController.h:67
+
float mLeanSpringDamping
Definition MotorcycleController.h:101
+
float GetLeanSmoothingFactor() const
Definition MotorcycleController.h:84
+
void SetLeanSpringConstant(float inConstant)
Spring constant for the lean spring.
Definition MotorcycleController.h:66
+
void SetLeanSpringDamping(float inDamping)
Spring damping constant for the lean spring.
Definition MotorcycleController.h:70
+
bool IsLeanSteeringLimitEnabled() const
Definition MotorcycleController.h:63
+
void EnableLeanController(bool inEnable)
Enable or disable the lean spring. This allows you to temporarily disable the lean spring to allow th...
Definition MotorcycleController.h:56
+
float GetLeanSpringIntegrationCoefficient() const
Definition MotorcycleController.h:75
+
void SetLeanSpringIntegrationCoefficientDecay(float inDecay)
How much to decay the angle integral when the wheels are not touching the floor: new_value = e^(-deca...
Definition MotorcycleController.h:78
+
float GetLeanSpringDamping() const
Definition MotorcycleController.h:71
+
void SetLeanSpringIntegrationCoefficient(float inCoefficient)
The lean spring applies an additional force equal to this coefficient * Integral(delta angle,...
Definition MotorcycleController.h:74
+
Definition MotorcycleController.h:14
+
Definition PhysicsSystem.h:29
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Definition VehicleConstraint.h:66
+
Runtime data for interface that controls acceleration / deceleration of the vehicle.
Definition VehicleController.h:41
+
Runtime controller class.
Definition WheeledVehicleController.h:90
+
Definition WheeledVehicleController.h:73
+
virtual void RestoreBinaryState(StreamIn &inStream) override
Restore the contents of the controller settings in binary form from inStream.
Definition WheeledVehicleController.cpp:157
+
virtual VehicleController * ConstructController(VehicleConstraint &inConstraint) const override
Create an instance of the vehicle controller class.
Definition WheeledVehicleController.cpp:138
+
virtual void SaveBinaryState(StreamOut &inStream) const override
Saves the contents of the controller settings in binary form to inStream.
Definition WheeledVehicleController.cpp:143
+
+
+ + + + diff --git a/_mutable_compound_shape_8cpp.html b/_mutable_compound_shape_8cpp.html new file mode 100644 index 000000000..7f02ec9eb --- /dev/null +++ b/_mutable_compound_shape_8cpp.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/MutableCompoundShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MutableCompoundShape.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (MutableCompoundShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (MutableCompoundShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_mutable_compound_shape_8cpp.js b/_mutable_compound_shape_8cpp.js new file mode 100644 index 000000000..35ce6f44d --- /dev/null +++ b/_mutable_compound_shape_8cpp.js @@ -0,0 +1,4 @@ +var _mutable_compound_shape_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_mutable_compound_shape_8cpp.html#ac8f982526acd7284d64a445a2ac95488", null ] +]; \ No newline at end of file diff --git a/_mutable_compound_shape_8h.html b/_mutable_compound_shape_8h.html new file mode 100644 index 000000000..fbf66cf0e --- /dev/null +++ b/_mutable_compound_shape_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/MutableCompoundShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MutableCompoundShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  MutableCompoundShapeSettings
 Class that constructs a MutableCompoundShape. More...
 
class  MutableCompoundShape
 
+
+
+ + + + diff --git a/_mutable_compound_shape_8h.js b/_mutable_compound_shape_8h.js new file mode 100644 index 000000000..d7014d08f --- /dev/null +++ b/_mutable_compound_shape_8h.js @@ -0,0 +1,5 @@ +var _mutable_compound_shape_8h = +[ + [ "MutableCompoundShapeSettings", "class_mutable_compound_shape_settings.html", "class_mutable_compound_shape_settings" ], + [ "MutableCompoundShape", "class_mutable_compound_shape.html", "class_mutable_compound_shape" ] +]; \ No newline at end of file diff --git a/_mutable_compound_shape_8h_source.html b/_mutable_compound_shape_8h_source.html new file mode 100644 index 000000000..a21467ac3 --- /dev/null +++ b/_mutable_compound_shape_8h_source.html @@ -0,0 +1,295 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/MutableCompoundShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MutableCompoundShape.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
+ +
12
+
+ +
15{
+
16public:
+ +
18
+
19 // See: ShapeSettings
+
20 virtual ShapeResult Create() const override;
+
21};
+
+
22
+
+ +
31{
+
32public:
+ +
34
+ +
37 MutableCompoundShape(const MutableCompoundShapeSettings &inSettings, ShapeResult &outResult);
+
38
+
40 Ref<MutableCompoundShape> Clone() const;
+
41
+
42 // See Shape::CastRay
+
43 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
44 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
45
+
46 // See: Shape::CollidePoint
+
47 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
48
+
49 // See Shape::CollectTransformedShapes
+
50 virtual void CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const override;
+
51
+
52 // See: CompoundShape::GetIntersectingSubShapes
+
53 virtual int GetIntersectingSubShapes(const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override;
+
54
+
55 // See: CompoundShape::GetIntersectingSubShapes
+
56 virtual int GetIntersectingSubShapes(const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override;
+
57
+
58 // See Shape
+
59 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
60
+
61 // See Shape::GetStats
+
62 virtual Stats GetStats() const override { return Stats(sizeof(*this) + mSubShapes.size() * sizeof(SubShape) + mSubShapeBounds.size() * sizeof(Bounds), 0); }
+
63
+
66
+
70 uint AddShape(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape, uint32 inUserData = 0);
+
71
+
74 void RemoveShape(uint inIndex);
+
75
+
78 void ModifyShape(uint inIndex, Vec3Arg inPosition, QuatArg inRotation);
+
79
+
82 void ModifyShape(uint inIndex, Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape);
+
83
+
92 void ModifyShapes(uint inStartIndex, uint inNumber, const Vec3 *inPositions, const Quat *inRotations, uint inPositionStride = sizeof(Vec3), uint inRotationStride = sizeof(Quat));
+
93
+
98 void AdjustCenterOfMass();
+
99
+
101
+
102 // Register shape functions with the registry
+
103 static void sRegister();
+
104
+
105protected:
+
106 // See: Shape::RestoreBinaryState
+
107 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
108
+
109private:
+
110 // Visitor for GetIntersectingSubShapes
+
111 template <class BoxType>
+
112 struct GetIntersectingSubShapesVisitorMC : public GetIntersectingSubShapesVisitor<BoxType>
+
113 {
+
114 using GetIntersectingSubShapesVisitor<BoxType>::GetIntersectingSubShapesVisitor;
+
115
+
116 using Result = UVec4;
+
117
+
118 JPH_INLINE Result TestBlock(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
+
119 {
+
120 return GetIntersectingSubShapesVisitor<BoxType>::TestBounds(inBoundsMinX, inBoundsMinY, inBoundsMinZ, inBoundsMaxX, inBoundsMaxY, inBoundsMaxZ);
+
121 }
+
122
+
123 JPH_INLINE bool ShouldVisitBlock(UVec4Arg inResult) const
+
124 {
+
125 return inResult.TestAnyTrue();
+
126 }
+
127
+
128 JPH_INLINE bool ShouldVisitSubShape(UVec4Arg inResult, uint inIndexInBlock) const
+
129 {
+
130 return inResult[inIndexInBlock] != 0;
+
131 }
+
132 };
+
133
+
135 inline uint GetNumBlocks() const { return ((uint)mSubShapes.size() + 3) >> 2; }
+
136
+
138 void EnsureSubShapeBoundsCapacity();
+
139
+
143 void CalculateSubShapeBounds(uint inStartIdx, uint inNumber);
+
144
+
146 void CalculateLocalBounds();
+
147
+
148 template <class Visitor>
+
149 JPH_INLINE void WalkSubShapes(Visitor &ioVisitor) const;
+
150
+
151 // Helper functions called by CollisionDispatch
+
152 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);
+
153 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);
+
154 static void sCastShapeVsCompound(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
155
+
156 struct Bounds
+
157 {
+
158 Vec4 mMinX;
+
159 Vec4 mMinY;
+
160 Vec4 mMinZ;
+
161 Vec4 mMaxX;
+
162 Vec4 mMaxY;
+
163 Vec4 mMaxZ;
+
164 };
+
165
+
166 Array<Bounds> mSubShapeBounds;
+
167};
+
+
168
+ + +
#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
+
#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:76
+ +
Axis aligned box.
Definition AABox.h:16
+
Definition Array.h:36
+
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:62
+
Class that constructs a MutableCompoundShape.
Definition MutableCompoundShape.h:15
+
Oriented box.
Definition OrientedBox.h:18
+
Definition Quat.h:33
+
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:184
+
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
+
Definition UVec4.h:12
+
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:395
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
Definition CompoundShape.h:138
+
Definition RayCast.h:47
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_mutex_8h.html b/_mutex_8h.html new file mode 100644 index 000000000..6f6582898 --- /dev/null +++ b/_mutex_8h.html @@ -0,0 +1,168 @@ + + + + + + + +Jolt Physics: Jolt/Core/Mutex.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Mutex.h File Reference
+
+
+
#include <Jolt/Core/Profiler.h>
+#include <Jolt/Core/NonCopyable.h>
+#include <mutex>
+#include <shared_mutex>
+#include <thread>
+
+

Go to the source code of this file.

+ + + + + + +

+Classes

class  Mutex
 
class  SharedMutex
 
+ + + + + +

+Typedefs

using MutexBase = mutex
 
using SharedMutexBase = shared_mutex
 
+

Typedef Documentation

+ +

◆ MutexBase

+ +
+
+ + + + +
using MutexBase = mutex
+
+ +
+
+ +

◆ SharedMutexBase

+ +
+
+ + + + +
using SharedMutexBase = shared_mutex
+
+ +
+
+
+
+ + + + diff --git a/_mutex_8h.js b/_mutex_8h.js new file mode 100644 index 000000000..fa16a6027 --- /dev/null +++ b/_mutex_8h.js @@ -0,0 +1,7 @@ +var _mutex_8h = +[ + [ "Mutex", "class_mutex.html", "class_mutex" ], + [ "SharedMutex", "class_shared_mutex.html", "class_shared_mutex" ], + [ "MutexBase", "_mutex_8h.html#af650aa8998011ee0a2881e766e812234", null ], + [ "SharedMutexBase", "_mutex_8h.html#a452048983cf5a9a9466e19d9f26cd8fd", null ] +]; \ No newline at end of file diff --git a/_mutex_8h_source.html b/_mutex_8h_source.html new file mode 100644 index 000000000..2ae96d9dd --- /dev/null +++ b/_mutex_8h_source.html @@ -0,0 +1,377 @@ + + + + + + + +Jolt Physics: Jolt/Core/Mutex.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Mutex.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
+ + +
9
+ +
11#include <mutex>
+
12#include <shared_mutex>
+
13#include <thread>
+ +
15
+ +
17
+
18// Things we're using from STL
+
19using std::mutex;
+
20using std::shared_mutex;
+
21using std::thread;
+
22using std::lock_guard;
+
23using std::shared_lock;
+
24using std::unique_lock;
+
25
+
26#ifdef JPH_PLATFORM_BLUE
+
27
+
28// On Platform Blue the mutex class is not very fast so we implement it using the official APIs
+
29class MutexBase : public NonCopyable
+
30{
+
31public:
+
32 MutexBase()
+
33 {
+
34 JPH_PLATFORM_BLUE_MUTEX_INIT(mMutex);
+
35 }
+
36
+ +
38 {
+
39 JPH_PLATFORM_BLUE_MUTEX_DESTROY(mMutex);
+
40 }
+
41
+
42 inline bool try_lock()
+
43 {
+
44 return JPH_PLATFORM_BLUE_MUTEX_TRYLOCK(mMutex);
+
45 }
+
46
+
47 inline void lock()
+
48 {
+
49 JPH_PLATFORM_BLUE_MUTEX_LOCK(mMutex);
+
50 }
+
51
+
52 inline void unlock()
+
53 {
+
54 JPH_PLATFORM_BLUE_MUTEX_UNLOCK(mMutex);
+
55 }
+
56
+
57private:
+
58 JPH_PLATFORM_BLUE_MUTEX mMutex;
+
59};
+
60
+
61// On Platform Blue the shared_mutex class is not very fast so we implement it using the official APIs
+
62class SharedMutexBase : public NonCopyable
+
63{
+
64public:
+ +
66 {
+
67 JPH_PLATFORM_BLUE_RWLOCK_INIT(mRWLock);
+
68 }
+
69
+ +
71 {
+
72 JPH_PLATFORM_BLUE_RWLOCK_DESTROY(mRWLock);
+
73 }
+
74
+
75 inline bool try_lock()
+
76 {
+
77 return JPH_PLATFORM_BLUE_RWLOCK_TRYWLOCK(mRWLock);
+
78 }
+
79
+
80 inline bool try_lock_shared()
+
81 {
+
82 return JPH_PLATFORM_BLUE_RWLOCK_TRYRLOCK(mRWLock);
+
83 }
+
84
+
85 inline void lock()
+
86 {
+
87 JPH_PLATFORM_BLUE_RWLOCK_WLOCK(mRWLock);
+
88 }
+
89
+
90 inline void unlock()
+
91 {
+
92 JPH_PLATFORM_BLUE_RWLOCK_WUNLOCK(mRWLock);
+
93 }
+
94
+
95 inline void lock_shared()
+
96 {
+
97 JPH_PLATFORM_BLUE_RWLOCK_RLOCK(mRWLock);
+
98 }
+
99
+
100 inline void unlock_shared()
+
101 {
+
102 JPH_PLATFORM_BLUE_RWLOCK_RUNLOCK(mRWLock);
+
103 }
+
104
+
105private:
+
106 JPH_PLATFORM_BLUE_RWLOCK mRWLock;
+
107};
+
108
+
109#else
+
110
+
111// On other platforms just use the STL implementation
+
112using MutexBase = mutex;
+
113using SharedMutexBase = shared_mutex;
+
114
+
115#endif // JPH_PLATFORM_BLUE
+
116
+
117#if defined(JPH_ENABLE_ASSERTS) || defined(JPH_PROFILE_ENABLED) || defined(JPH_EXTERNAL_PROFILE)
+
118
+
+
121class Mutex : public MutexBase
+
122{
+
123public:
+
+
124 inline bool try_lock()
+
125 {
+
126 JPH_ASSERT(mLockedThreadID != std::this_thread::get_id());
+
127 if (MutexBase::try_lock())
+
128 {
+
129 JPH_IF_ENABLE_ASSERTS(mLockedThreadID = std::this_thread::get_id();)
+
130 return true;
+
131 }
+
132 return false;
+
133 }
+
+
134
+
+
135 inline void lock()
+
136 {
+
137 if (!try_lock())
+
138 {
+
139 JPH_PROFILE("Lock", 0xff00ffff);
+
140 MutexBase::lock();
+
141 JPH_IF_ENABLE_ASSERTS(mLockedThreadID = std::this_thread::get_id();)
+
142 }
+
143 }
+
+
144
+
+
145 inline void unlock()
+
146 {
+
147 JPH_ASSERT(mLockedThreadID == std::this_thread::get_id());
+
148 JPH_IF_ENABLE_ASSERTS(mLockedThreadID = thread::id();)
+
149 MutexBase::unlock();
+
150 }
+
+
151
+
152#ifdef JPH_ENABLE_ASSERTS
+
153 inline bool is_locked()
+
154 {
+
155 return mLockedThreadID != thread::id();
+
156 }
+
157#endif // JPH_ENABLE_ASSERTS
+
158
+
159private:
+
160 JPH_IF_ENABLE_ASSERTS(thread::id mLockedThreadID;)
+
161};
+
+
162
+
+ +
166{
+
167public:
+
+
168 inline bool try_lock()
+
169 {
+
170 JPH_ASSERT(mLockedThreadID != std::this_thread::get_id());
+
171 if (SharedMutexBase::try_lock())
+
172 {
+
173 JPH_IF_ENABLE_ASSERTS(mLockedThreadID = std::this_thread::get_id();)
+
174 return true;
+
175 }
+
176 return false;
+
177 }
+
+
178
+
+
179 inline void lock()
+
180 {
+
181 if (!try_lock())
+
182 {
+
183 JPH_PROFILE("WLock", 0xff00ffff);
+
184 SharedMutexBase::lock();
+
185 JPH_IF_ENABLE_ASSERTS(mLockedThreadID = std::this_thread::get_id();)
+
186 }
+
187 }
+
+
188
+
+
189 inline void unlock()
+
190 {
+
191 JPH_ASSERT(mLockedThreadID == std::this_thread::get_id());
+
192 JPH_IF_ENABLE_ASSERTS(mLockedThreadID = thread::id();)
+
193 SharedMutexBase::unlock();
+
194 }
+
+
195
+
196#ifdef JPH_ENABLE_ASSERTS
+
197 inline bool is_locked()
+
198 {
+
199 return mLockedThreadID != thread::id();
+
200 }
+
201#endif // JPH_ENABLE_ASSERTS
+
202
+
+
203 inline void lock_shared()
+
204 {
+
205 if (!try_lock_shared())
+
206 {
+
207 JPH_PROFILE("RLock", 0xff00ffff);
+
208 SharedMutexBase::lock_shared();
+
209 }
+
210 }
+
+
211
+
212private:
+
213 JPH_IF_ENABLE_ASSERTS(thread::id mLockedThreadID;)
+
214};
+
+
215
+
216#else
+
217
+
218using Mutex = MutexBase;
+ +
220
+
221#endif
+
222
+ +
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
shared_mutex SharedMutexBase
Definition Mutex.h:113
+
mutex MutexBase
Definition Mutex.h:112
+ + +
#define JPH_PROFILE(...)
Definition Profiler.h:268
+
Definition Mutex.h:122
+
void unlock()
Definition Mutex.h:145
+
bool try_lock()
Definition Mutex.h:124
+
void lock()
Definition Mutex.h:135
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition Mutex.h:166
+
void lock_shared()
Definition Mutex.h:203
+
void unlock()
Definition Mutex.h:189
+
void lock()
Definition Mutex.h:179
+
bool try_lock()
Definition Mutex.h:168
+
+
+ + + + diff --git a/_mutex_array_8h.html b/_mutex_array_8h.html new file mode 100644 index 000000000..83dfad079 --- /dev/null +++ b/_mutex_array_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Core/MutexArray.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MutexArray.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  MutexArray< MutexType >
 
+
+
+ + + + diff --git a/_mutex_array_8h.js b/_mutex_array_8h.js new file mode 100644 index 000000000..21a910411 --- /dev/null +++ b/_mutex_array_8h.js @@ -0,0 +1,4 @@ +var _mutex_array_8h = +[ + [ "MutexArray< MutexType >", "class_mutex_array.html", "class_mutex_array" ] +]; \ No newline at end of file diff --git a/_mutex_array_8h_source.html b/_mutex_array_8h_source.html new file mode 100644 index 000000000..09f91076e --- /dev/null +++ b/_mutex_array_8h_source.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: Jolt/Core/MutexArray.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MutexArray.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
+
15template <class MutexType>
+
+
16class MutexArray : public NonCopyable
+
17{
+
18public:
+
20 MutexArray() = default;
+
21
+
23 explicit MutexArray(uint inNumMutexes) { Init(inNumMutexes); }
+
24
+
26 ~MutexArray() { delete [] mMutexStorage; }
+
27
+
+
30 void Init(uint inNumMutexes)
+
31 {
+
32 JPH_ASSERT(mMutexStorage == nullptr);
+
33 JPH_ASSERT(inNumMutexes > 0 && IsPowerOf2(inNumMutexes));
+
34
+
35 mMutexStorage = new MutexStorage[inNumMutexes];
+
36 mNumMutexes = inNumMutexes;
+
37 }
+
+
38
+
+
40 inline uint GetNumMutexes() const
+
41 {
+
42 return mNumMutexes;
+
43 }
+
+
44
+
+
46 inline uint32 GetMutexIndex(uint32 inObjectIndex) const
+
47 {
+
48 std::hash<uint32> hasher;
+
49 return hasher(inObjectIndex) & (mNumMutexes - 1);
+
50 }
+
+
51
+
+
53 inline MutexType & GetMutexByObjectIndex(uint32 inObjectIndex)
+
54 {
+
55 return mMutexStorage[GetMutexIndex(inObjectIndex)].mMutex;
+
56 }
+
+
57
+
+
59 inline MutexType & GetMutexByIndex(uint32 inMutexIndex)
+
60 {
+
61 return mMutexStorage[inMutexIndex].mMutex;
+
62 }
+
+
63
+
+
65 void LockAll()
+
66 {
+ +
68
+
69 MutexStorage *end = mMutexStorage + mNumMutexes;
+
70 for (MutexStorage *m = mMutexStorage; m < end; ++m)
+
71 m->mMutex.lock();
+
72 }
+
+
73
+
+
75 void UnlockAll()
+
76 {
+ +
78
+
79 MutexStorage *end = mMutexStorage + mNumMutexes;
+
80 for (MutexStorage *m = mMutexStorage; m < end; ++m)
+
81 m->mMutex.unlock();
+
82 }
+
+
83
+
84private:
+
86 struct alignas(JPH_CACHE_LINE_SIZE) MutexStorage
+
87 {
+ +
89
+
90 MutexType mMutex;
+
91 };
+
92
+
93 MutexStorage * mMutexStorage = nullptr;
+
94 uint mNumMutexes = 0;
+
95};
+
+
96
+ +
98
+
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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
constexpr bool IsPowerOf2(T inV)
Check if inV is a power of 2.
Definition Math.h:73
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
#define JPH_PROFILE_FUNCTION()
Scope profiling for function.
Definition Profiler.h:271
+
Definition MutexArray.h:17
+
MutexArray(uint inNumMutexes)
Constructor, constructs an array with inNumMutexes entries.
Definition MutexArray.h:23
+
uint32 GetMutexIndex(uint32 inObjectIndex) const
Convert an object index to a mutex index.
Definition MutexArray.h:46
+
~MutexArray()
Destructor.
Definition MutexArray.h:26
+
MutexType & GetMutexByObjectIndex(uint32 inObjectIndex)
Get the mutex belonging to a certain object by index.
Definition MutexArray.h:53
+
void UnlockAll()
Unlock all mutexes.
Definition MutexArray.h:75
+
void LockAll()
Lock all mutexes.
Definition MutexArray.h:65
+
MutexArray()=default
Constructor, constructs an empty mutex array that you need to initialize with Init()
+
void Init(uint inNumMutexes)
Definition MutexArray.h:30
+
MutexType & GetMutexByIndex(uint32 inMutexIndex)
Get a mutex by index in the array.
Definition MutexArray.h:59
+
uint GetNumMutexes() const
Get the number of mutexes that were allocated.
Definition MutexArray.h:40
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
+
+ + + + diff --git a/_narrow_phase_query_8cpp.html b/_narrow_phase_query_8cpp.html new file mode 100644 index 000000000..54b85b79f --- /dev/null +++ b/_narrow_phase_query_8cpp.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/NarrowPhaseQuery.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NarrowPhaseQuery.cpp File Reference
+
+
+
+
+ + + + diff --git a/_narrow_phase_query_8h.html b/_narrow_phase_query_8h.html new file mode 100644 index 000000000..bc38e7466 --- /dev/null +++ b/_narrow_phase_query_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/NarrowPhaseQuery.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
NarrowPhaseQuery.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  NarrowPhaseQuery
 
+
+
+ + + + diff --git a/_narrow_phase_query_8h.js b/_narrow_phase_query_8h.js new file mode 100644 index 000000000..9d5a86d34 --- /dev/null +++ b/_narrow_phase_query_8h.js @@ -0,0 +1,4 @@ +var _narrow_phase_query_8h = +[ + [ "NarrowPhaseQuery", "class_narrow_phase_query.html", "class_narrow_phase_query" ] +]; \ No newline at end of file diff --git a/_narrow_phase_query_8h_source.html b/_narrow_phase_query_8h_source.html new file mode 100644 index 000000000..3acda5dcf --- /dev/null +++ b/_narrow_phase_query_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/NarrowPhaseQuery.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NarrowPhaseQuery.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
+ + + + + + +
13
+ +
15
+
16class Shape;
+ +
18class RayCastResult;
+
19
+
+ +
23{
+
24public:
+
26 void Init(BodyLockInterface &inBodyLockInterface, BroadPhaseQuery &inBroadPhaseQuery) { mBodyLockInterface = &inBodyLockInterface; mBroadPhaseQuery = &inBroadPhaseQuery; }
+
27
+
31 bool CastRay(const RRayCast &inRay, RayCastResult &ioHit, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter = { }, const ObjectLayerFilter &inObjectLayerFilter = { }, const BodyFilter &inBodyFilter = { }) const;
+
32
+
35 void CastRay(const RRayCast &inRay, const RayCastSettings &inRayCastSettings, CastRayCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter = { }, const ObjectLayerFilter &inObjectLayerFilter = { }, const BodyFilter &inBodyFilter = { }, const ShapeFilter &inShapeFilter = { }) const;
+
36
+
40 void CollidePoint(RVec3Arg inPoint, CollidePointCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter = { }, const ObjectLayerFilter &inObjectLayerFilter = { }, const BodyFilter &inBodyFilter = { }, const ShapeFilter &inShapeFilter = { }) const;
+
41
+
53 void CollideShape(const Shape *inShape, Vec3Arg inShapeScale, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter = { }, const ObjectLayerFilter &inObjectLayerFilter = { }, const BodyFilter &inBodyFilter = { }, const ShapeFilter &inShapeFilter = { }) const;
+
54
+
64 void CastShape(const RShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter = { }, const ObjectLayerFilter &inObjectLayerFilter = { }, const BodyFilter &inBodyFilter = { }, const ShapeFilter &inShapeFilter = { }) const;
+
65
+
67 void CollectTransformedShapes(const AABox &inBox, TransformedShapeCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter = { }, const ObjectLayerFilter &inObjectLayerFilter = { }, const BodyFilter &inBodyFilter = { }, const ShapeFilter &inShapeFilter = { }) const;
+
68
+
69private:
+
70 BodyLockInterface * mBodyLockInterface = nullptr;
+
71 BroadPhaseQuery * mBroadPhaseQuery = nullptr;
+
72};
+
+
73
+ + + + + + +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Axis aligned box.
Definition AABox.h:16
+
Class function to filter out bodies, returns true if test should collide with body.
Definition BodyFilter.h:16
+
Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLock...
Definition BodyLockInterface.h:17
+
Filter class for broadphase layers.
Definition BroadPhaseLayer.h:94
+
Definition BroadPhaseQuery.h:29
+
Settings to be passed with a collision query.
Definition CollideShape.h:94
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Definition NarrowPhaseQuery.h:23
+
void Init(BodyLockInterface &inBodyLockInterface, BroadPhaseQuery &inBroadPhaseQuery)
Initialize the interface (should only be called by PhysicsSystem)
Definition NarrowPhaseQuery.h:26
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Filter class for object layers.
Definition ObjectLayer.h:28
+
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:184
+
Definition Vec3.h:17
+
Definition RayCast.h:52
+
Definition ShapeCast.h:74
+
+
+ + + + diff --git a/_narrow_phase_stats_8cpp.html b/_narrow_phase_stats_8cpp.html new file mode 100644 index 000000000..573135ce4 --- /dev/null +++ b/_narrow_phase_stats_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/NarrowPhaseStats.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NarrowPhaseStats.cpp File Reference
+
+
+
+
+ + + + diff --git a/_narrow_phase_stats_8h.html b/_narrow_phase_stats_8h.html new file mode 100644 index 000000000..8efa7e4f9 --- /dev/null +++ b/_narrow_phase_stats_8h.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/NarrowPhaseStats.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
NarrowPhaseStats.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Macros

#define JPH_IF_TRACK_NARROWPHASE_STATS(...)
 
+

Macro Definition Documentation

+ +

◆ JPH_IF_TRACK_NARROWPHASE_STATS

+ +
+
+ + + + + + + + +
#define JPH_IF_TRACK_NARROWPHASE_STATS( ...)
+
+ +
+
+
+
+ + + + diff --git a/_narrow_phase_stats_8h.js b/_narrow_phase_stats_8h.js new file mode 100644 index 000000000..7ca4346e7 --- /dev/null +++ b/_narrow_phase_stats_8h.js @@ -0,0 +1,4 @@ +var _narrow_phase_stats_8h = +[ + [ "JPH_IF_TRACK_NARROWPHASE_STATS", "_narrow_phase_stats_8h.html#a338a08d1bae50a8368cce3eaa218f1b1", null ] +]; \ No newline at end of file diff --git a/_narrow_phase_stats_8h_source.html b/_narrow_phase_stats_8h_source.html new file mode 100644 index 000000000..4e9ee88d2 --- /dev/null +++ b/_narrow_phase_stats_8h_source.html @@ -0,0 +1,232 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/NarrowPhaseStats.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NarrowPhaseStats.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
+ + +
9
+
10JPH_SUPPRESS_WARNING_PUSH
+
11JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat-pedantic")
+
12
+
13// Shorthand function to ifdef out code if narrow phase stats tracking is off
+
14#ifdef JPH_TRACK_NARROWPHASE_STATS
+
15 #define JPH_IF_TRACK_NARROWPHASE_STATS(...) __VA_ARGS__
+
16#else
+
17 #define JPH_IF_TRACK_NARROWPHASE_STATS(...)
+
18#endif // JPH_TRACK_NARROWPHASE_STATS
+
19
+
20JPH_SUPPRESS_WARNING_POP
+
21
+
22#ifdef JPH_TRACK_NARROWPHASE_STATS
+
23
+ +
25
+
27class NarrowPhaseStat
+
28{
+
29public:
+
31 void ReportStats(const char *inName, EShapeSubType inType1, EShapeSubType inType2, uint64 inTicks100Pct) const;
+
32
+
35 static void sReportStats();
+
36
+
37 atomic<uint64> mNumQueries = 0;
+
38 atomic<uint64> mHitsReported = 0;
+
39 atomic<uint64> mTotalTicks = 0;
+
40 atomic<uint64> mChildTicks = 0;
+
41
+
42 static NarrowPhaseStat sCollideShape[NumSubShapeTypes][NumSubShapeTypes];
+
43 static NarrowPhaseStat sCastShape[NumSubShapeTypes][NumSubShapeTypes];
+
44};
+
45
+
47class TrackNarrowPhaseStat
+
48{
+
49public:
+
50 TrackNarrowPhaseStat(NarrowPhaseStat &inStat) :
+
51 mStat(inStat),
+
52 mParent(sRoot),
+
53 mStart(GetProcessorTickCount())
+
54 {
+
55 // Make this the new root of the chain
+
56 sRoot = this;
+
57 }
+
58
+
59 ~TrackNarrowPhaseStat()
+
60 {
+
61 uint64 delta_ticks = GetProcessorTickCount() - mStart;
+
62
+
63 // Notify parent of time spent in child
+
64 if (mParent != nullptr)
+
65 mParent->mStat.mChildTicks += delta_ticks;
+
66
+
67 // Increment stats at this level
+
68 mStat.mNumQueries++;
+
69 mStat.mTotalTicks += delta_ticks;
+
70
+
71 // Restore root pointer
+
72 JPH_ASSERT(sRoot == this);
+
73 sRoot = mParent;
+
74 }
+
75
+
76 NarrowPhaseStat & mStat;
+
77 TrackNarrowPhaseStat * mParent;
+
78 uint64 mStart;
+
79
+
80 static thread_local TrackNarrowPhaseStat *sRoot;
+
81};
+
82
+
84class TrackNarrowPhaseCollector
+
85{
+
86public:
+
87 TrackNarrowPhaseCollector() :
+
88 mStart(GetProcessorTickCount())
+
89 {
+
90 }
+
91
+
92 ~TrackNarrowPhaseCollector()
+
93 {
+
94 // Mark time spent in collector as 'child' time for the parent
+
95 uint64 delta_ticks = GetProcessorTickCount() - mStart;
+
96 if (TrackNarrowPhaseStat::sRoot != nullptr)
+
97 TrackNarrowPhaseStat::sRoot->mStat.mChildTicks += delta_ticks;
+
98
+
99 // Notify all parents of a hit
+
100 for (TrackNarrowPhaseStat *track = TrackNarrowPhaseStat::sRoot; track != nullptr; track = track->mParent)
+
101 track->mStat.mHitsReported++;
+
102 }
+
103
+
104private:
+
105 uint64 mStart;
+
106};
+
107
+ +
109
+
110#endif // JPH_TRACK_NARROWPHASE_STATS
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_CLANG_SUPPRESS_WARNING(w)
Definition Core.h:263
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
EShapeSubType
This enumerates all shape types, each shape can return its type through Shape::GetSubType.
Definition Shape.h:76
+ +
JPH_NAMESPACE_BEGIN JPH_INLINE uint64 GetProcessorTickCount()
Functionality to get the processors cycle counter.
Definition TickCounter.h:26
+
+
+ + + + diff --git a/_node_codec_quad_tree_half_float_8h.html b/_node_codec_quad_tree_half_float_8h.html new file mode 100644 index 000000000..0b0136e60 --- /dev/null +++ b/_node_codec_quad_tree_half_float_8h.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
NodeCodecQuadTreeHalfFloat.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + +

+Classes

class  NodeCodecQuadTreeHalfFloat< Alignment >
 
struct  NodeCodecQuadTreeHalfFloat< Alignment >::Header
 Header for the tree. More...
 
struct  NodeCodecQuadTreeHalfFloat< Alignment >::Node
 Node structure. More...
 
class  NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext
 This class encodes and compresses quad tree nodes. More...
 
class  NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext
 This class decodes and decompresses quad tree nodes. More...
 
+
+
+ + + + diff --git a/_node_codec_quad_tree_half_float_8h.js b/_node_codec_quad_tree_half_float_8h.js new file mode 100644 index 000000000..1a17b44e2 --- /dev/null +++ b/_node_codec_quad_tree_half_float_8h.js @@ -0,0 +1,8 @@ +var _node_codec_quad_tree_half_float_8h = +[ + [ "NodeCodecQuadTreeHalfFloat< Alignment >", "class_node_codec_quad_tree_half_float.html", "class_node_codec_quad_tree_half_float" ], + [ "NodeCodecQuadTreeHalfFloat< Alignment >::Header", "struct_node_codec_quad_tree_half_float_1_1_header.html", "struct_node_codec_quad_tree_half_float_1_1_header" ], + [ "NodeCodecQuadTreeHalfFloat< Alignment >::Node", "struct_node_codec_quad_tree_half_float_1_1_node.html", "struct_node_codec_quad_tree_half_float_1_1_node" ], + [ "NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext", "class_node_codec_quad_tree_half_float_1_1_encoding_context.html", "class_node_codec_quad_tree_half_float_1_1_encoding_context" ], + [ "NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext", "class_node_codec_quad_tree_half_float_1_1_decoding_context.html", "class_node_codec_quad_tree_half_float_1_1_decoding_context" ] +]; \ No newline at end of file diff --git a/_node_codec_quad_tree_half_float_8h_source.html b/_node_codec_quad_tree_half_float_8h_source.html new file mode 100644 index 000000000..e6ec3a327 --- /dev/null +++ b/_node_codec_quad_tree_half_float_8h_source.html @@ -0,0 +1,486 @@ + + + + + + + +Jolt Physics: Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NodeCodecQuadTreeHalfFloat.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
+ + + +
10
+ +
12
+
13template <int Alignment>
+
+ +
15{
+
16public:
+
18 static constexpr int NumChildrenPerNode = 4;
+
19
+ +
27
+
29 static constexpr int HeaderSize = sizeof(Header);
+
30
+
32 static constexpr int StackSize = 128;
+
33
+
35 enum : uint32
+
36 {
+ + + + + + + +
44 };
+
45
+ +
57
+
58 static_assert(sizeof(Node) == 64, "Node should be 64 bytes");
+
59
+
+ +
62 {
+
63 public:
+
+ +
66 {
+
67 return inNodeCount * (sizeof(Node) + Alignment - 1);
+
68 }
+
+
69
+
+
75 uint NodeAllocate(const AABBTreeBuilder::Node *inNode, Vec3Arg inNodeBoundsMin, Vec3Arg inNodeBoundsMax, Array<const AABBTreeBuilder::Node *> &ioChildren, Vec3 outChildBoundsMin[NumChildrenPerNode], Vec3 outChildBoundsMax[NumChildrenPerNode], ByteBuffer &ioBuffer, const char *&outError) const
+
76 {
+
77 // We don't emit nodes for leafs
+
78 if (!inNode->HasChildren())
+
79 return (uint)ioBuffer.size();
+
80
+
81 // Align the buffer
+
82 ioBuffer.Align(Alignment);
+
83 uint node_start = (uint)ioBuffer.size();
+
84
+
85 // Fill in bounds
+
86 Node *node = ioBuffer.Allocate<Node>();
+
87
+
88 for (size_t i = 0; i < 4; ++i)
+
89 {
+
90 if (i < ioChildren.size())
+
91 {
+
92 const AABBTreeBuilder::Node *this_node = ioChildren[i];
+
93
+
94 // Copy bounding box
+ + + + + + +
101
+
102 // Store triangle count
+
103 node->mNodeProperties[i] = this_node->GetTriangleCount() << TRIANGLE_COUNT_SHIFT;
+
104 if (this_node->GetTriangleCount() >= TRIANGLE_COUNT_MASK)
+
105 {
+
106 outError = "NodeCodecQuadTreeHalfFloat: Too many triangles";
+
107 return uint(-1);
+
108 }
+
109 }
+
110 else
+
111 {
+
112 // Make this an invalid triangle node
+ +
114
+
115 // Make bounding box invalid
+
116 node->mBoundsMinX[i] = HALF_FLT_MAX;
+
117 node->mBoundsMinY[i] = HALF_FLT_MAX;
+
118 node->mBoundsMinZ[i] = HALF_FLT_MAX;
+
119 node->mBoundsMaxX[i] = HALF_FLT_MAX;
+
120 node->mBoundsMaxY[i] = HALF_FLT_MAX;
+
121 node->mBoundsMaxZ[i] = HALF_FLT_MAX;
+
122 }
+
123 }
+
124
+
125 // Since we don't keep track of the bounding box while descending the tree, we keep the root bounds at all levels for triangle compression
+
126 for (int i = 0; i < NumChildrenPerNode; ++i)
+
127 {
+
128 outChildBoundsMin[i] = inNodeBoundsMin;
+
129 outChildBoundsMax[i] = inNodeBoundsMax;
+
130 }
+
131
+
132 return node_start;
+
133 }
+
+
134
+
+
136 bool NodeFinalize(const AABBTreeBuilder::Node *inNode, uint inNodeStart, uint inNumChildren, const uint *inChildrenNodeStart, const uint *inChildrenTrianglesStart, ByteBuffer &ioBuffer, const char *&outError) const
+
137 {
+
138 if (!inNode->HasChildren())
+
139 return true;
+
140
+
141 Node *node = ioBuffer.Get<Node>(inNodeStart);
+
142 for (uint i = 0; i < inNumChildren; ++i)
+
143 {
+
144 // If there are triangles, use the triangle offset otherwise use the node offset
+
145 uint offset = node->mNodeProperties[i] != 0? inChildrenTrianglesStart[i] : inChildrenNodeStart[i];
+
146 if (offset & OFFSET_NON_SIGNIFICANT_MASK)
+
147 {
+
148 outError = "NodeCodecQuadTreeHalfFloat: Internal Error: Offset has non-significant bits set";
+
149 return false;
+
150 }
+ +
152 if (offset & ~OFFSET_MASK)
+
153 {
+
154 outError = "NodeCodecQuadTreeHalfFloat: Offset too large. Too much data.";
+
155 return false;
+
156 }
+
157
+
158 // Store offset of next node / triangles
+
159 node->mNodeProperties[i] |= offset;
+
160 }
+
161
+
162 return true;
+
163 }
+
+
164
+
+
166 bool Finalize(Header *outHeader, const AABBTreeBuilder::Node *inRoot, uint inRootNodeStart, uint inRootTrianglesStart, const char *&outError) const
+
167 {
+
168 uint offset = inRoot->HasChildren()? inRootNodeStart : inRootTrianglesStart;
+
169 if (offset & OFFSET_NON_SIGNIFICANT_MASK)
+
170 {
+
171 outError = "NodeCodecQuadTreeHalfFloat: Internal Error: Offset has non-significant bits set";
+
172 return false;
+
173 }
+ +
175 if (offset & ~OFFSET_MASK)
+
176 {
+
177 outError = "NodeCodecQuadTreeHalfFloat: Offset too large. Too much data.";
+
178 return false;
+
179 }
+
180
+
181 inRoot->mBounds.mMin.StoreFloat3(&outHeader->mRootBoundsMin);
+
182 inRoot->mBounds.mMax.StoreFloat3(&outHeader->mRootBoundsMax);
+
183 outHeader->mRootProperties = offset + (inRoot->GetTriangleCount() << TRIANGLE_COUNT_SHIFT);
+
184 if (inRoot->GetTriangleCount() >= TRIANGLE_COUNT_MASK)
+
185 {
+
186 outError = "NodeCodecQuadTreeHalfFloat: Too many triangles";
+
187 return false;
+
188 }
+
189
+
190 return true;
+
191 }
+
+
192 };
+
+
193
+
+ +
196 {
+
197 public:
+
+
199 inline static uint sTriangleBlockIDBits(const ByteBuffer &inTree)
+
200 {
+ +
202 }
+
+
203
+
+
205 inline static const void * sGetTriangleBlockStart(const uint8 *inBufferStart, uint inTriangleBlockID)
+
206 {
+
207 return inBufferStart + (inTriangleBlockID << OFFSET_NON_SIGNIFICANT_BITS);
+
208 }
+
+
209
+
+
211 JPH_INLINE explicit DecodingContext(const Header *inHeader)
+
212 {
+
213 // Start with the root node on the stack
+
214 mNodeStack[0] = inHeader->mRootProperties;
+
215 }
+
+
216
+
218 template <class TriangleContext, class Visitor>
+
+
219 JPH_INLINE void WalkTree(const uint8 *inBufferStart, const TriangleContext &inTriangleContext, Visitor &ioVisitor)
+
220 {
+
221 do
+
222 {
+
223 // Test if node contains triangles
+
224 uint32 node_properties = mNodeStack[mTop];
+
225 uint32 tri_count = node_properties >> TRIANGLE_COUNT_SHIFT;
+
226 if (tri_count == 0)
+
227 {
+
228 const Node *node = reinterpret_cast<const Node *>(inBufferStart + (node_properties << OFFSET_NON_SIGNIFICANT_BITS));
+
229
+
230 // Unpack bounds
+
231 UVec4 bounds_minxy = UVec4::sLoadInt4(reinterpret_cast<const uint32 *>(&node->mBoundsMinX[0]));
+
232 Vec4 bounds_minx = HalfFloatConversion::ToFloat(bounds_minxy);
+ +
234
+
235 UVec4 bounds_minzmaxx = UVec4::sLoadInt4(reinterpret_cast<const uint32 *>(&node->mBoundsMinZ[0]));
+
236 Vec4 bounds_minz = HalfFloatConversion::ToFloat(bounds_minzmaxx);
+ +
238
+
239 UVec4 bounds_maxyz = UVec4::sLoadInt4(reinterpret_cast<const uint32 *>(&node->mBoundsMaxY[0]));
+
240 Vec4 bounds_maxy = HalfFloatConversion::ToFloat(bounds_maxyz);
+ +
242
+
243 // Load properties for 4 children
+
244 UVec4 properties = UVec4::sLoadInt4(&node->mNodeProperties[0]);
+
245
+
246 // Check which sub nodes to visit
+
247 int num_results = ioVisitor.VisitNodes(bounds_minx, bounds_miny, bounds_minz, bounds_maxx, bounds_maxy, bounds_maxz, properties, mTop);
+
248
+
249 // Push them onto the stack
+
250 JPH_ASSERT(mTop + 4 < StackSize);
+
251 properties.StoreInt4(&mNodeStack[mTop]);
+
252 mTop += num_results;
+
253 }
+
254 else if (tri_count != TRIANGLE_COUNT_MASK) // TRIANGLE_COUNT_MASK indicates a padding node, normally we shouldn't visit these nodes but when querying with a big enough box you could touch HALF_FLT_MAX (about 65K)
+
255 {
+
256 // Node contains triangles, do individual tests
+
257 uint32 triangle_block_id = node_properties & OFFSET_MASK;
+
258 const void *triangles = sGetTriangleBlockStart(inBufferStart, triangle_block_id);
+
259
+
260 ioVisitor.VisitTriangles(inTriangleContext, triangles, tri_count, triangle_block_id);
+
261 }
+
262
+
263 // Check if we're done
+
264 if (ioVisitor.ShouldAbort())
+
265 break;
+
266
+
267 // Fetch next node until we find one that the visitor wants to see
+
268 do
+
269 --mTop;
+
270 while (mTop >= 0 && !ioVisitor.ShouldVisitNode(mTop));
+
271 }
+
272 while (mTop >= 0);
+
273 }
+
+
274
+
+
276 bool IsDoneWalking() const
+
277 {
+
278 return mTop < 0;
+
279 }
+
+
280
+
281 private:
+
282 uint32 mNodeStack[StackSize];
+
283 int mTop = 0;
+
284 };
+
+
285};
+
+
286
+ + + +
std::uint8_t uint8
Definition Core.h:453
+
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_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
+
@ SWIZZLE_Z
Use the Z component.
Definition Swizzle.h:14
+
@ SWIZZLE_W
Use the W component.
Definition Swizzle.h:15
+
@ SWIZZLE_UNUSED
We always use the Z component when we don't specifically want to initialize a value,...
Definition Swizzle.h:16
+
A node in the tree, contains the AABox for the tree and any child nodes or triangles.
Definition AABBTreeBuilder.h:40
+
AABox mBounds
Bounding box.
Definition AABBTreeBuilder.h:79
+
uint GetTriangleCount() const
Get number of triangles in this node.
Definition AABBTreeBuilder.h:49
+
bool HasChildren() const
Check if this node has any children.
Definition AABBTreeBuilder.h:52
+
Vec3 mMin
Bounding box min and max.
Definition AABox.h:300
+
Vec3 mMax
Definition AABox.h:301
+
Definition Array.h:36
+
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
Simple byte buffer, aligned to a cache line.
Definition ByteBuffer.h:16
+
Type * Allocate(size_t inSize=1)
Allocate block of data of inSize elements and return the pointer.
Definition ByteBuffer.h:33
+
size_t Align(size_t inSize)
Align the size to a multiple of inSize, returns the length after alignment.
Definition ByteBuffer.h:19
+
const Type * Get(size_t inPosition) const
Get object at inPosition (an offset in bytes)
Definition ByteBuffer.h:61
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
This class decodes and decompresses quad tree nodes.
Definition NodeCodecQuadTreeHalfFloat.h:196
+
JPH_INLINE void WalkTree(const uint8 *inBufferStart, const TriangleContext &inTriangleContext, Visitor &ioVisitor)
Walk the node tree calling the Visitor::VisitNodes for each node encountered and Visitor::VisitTriang...
Definition NodeCodecQuadTreeHalfFloat.h:219
+
bool IsDoneWalking() const
This can be used to have the visitor early out (ioVisitor.ShouldAbort() returns true) and later conti...
Definition NodeCodecQuadTreeHalfFloat.h:276
+
static const void * sGetTriangleBlockStart(const uint8 *inBufferStart, uint inTriangleBlockID)
Convert a triangle block ID to the start of the triangle buffer.
Definition NodeCodecQuadTreeHalfFloat.h:205
+
static uint sTriangleBlockIDBits(const ByteBuffer &inTree)
Get the amount of bits needed to store an ID to a triangle block.
Definition NodeCodecQuadTreeHalfFloat.h:199
+
JPH_INLINE DecodingContext(const Header *inHeader)
Constructor.
Definition NodeCodecQuadTreeHalfFloat.h:211
+
This class encodes and compresses quad tree nodes.
Definition NodeCodecQuadTreeHalfFloat.h:62
+
bool NodeFinalize(const AABBTreeBuilder::Node *inNode, uint inNodeStart, uint inNumChildren, const uint *inChildrenNodeStart, const uint *inChildrenTrianglesStart, ByteBuffer &ioBuffer, const char *&outError) const
Once all nodes have been added, this call finalizes all nodes by patching in the offsets of the child...
Definition NodeCodecQuadTreeHalfFloat.h:136
+
uint GetPessimisticMemoryEstimate(uint inNodeCount) const
Get an upper bound on the amount of bytes needed for a node tree with inNodeCount nodes.
Definition NodeCodecQuadTreeHalfFloat.h:65
+
bool Finalize(Header *outHeader, const AABBTreeBuilder::Node *inRoot, uint inRootNodeStart, uint inRootTrianglesStart, const char *&outError) const
Once all nodes have been finalized, this will finalize the header of the nodes.
Definition NodeCodecQuadTreeHalfFloat.h:166
+
uint NodeAllocate(const AABBTreeBuilder::Node *inNode, Vec3Arg inNodeBoundsMin, Vec3Arg inNodeBoundsMax, Array< const AABBTreeBuilder::Node * > &ioChildren, Vec3 outChildBoundsMin[NumChildrenPerNode], Vec3 outChildBoundsMax[NumChildrenPerNode], ByteBuffer &ioBuffer, const char *&outError) const
Definition NodeCodecQuadTreeHalfFloat.h:75
+
Definition NodeCodecQuadTreeHalfFloat.h:15
+
static constexpr int StackSize
Stack size to use during DecodingContext::sWalkTree.
Definition NodeCodecQuadTreeHalfFloat.h:32
+
static constexpr int HeaderSize
Size of the header (an empty struct is always > 0 bytes so this needs a separate variable)
Definition NodeCodecQuadTreeHalfFloat.h:29
+
static constexpr int NumChildrenPerNode
Number of child nodes of this node.
Definition NodeCodecQuadTreeHalfFloat.h:18
+
@ TRIANGLE_COUNT_BITS
Definition NodeCodecQuadTreeHalfFloat.h:37
+
@ OFFSET_BITS
Definition NodeCodecQuadTreeHalfFloat.h:40
+
@ TRIANGLE_COUNT_SHIFT
Definition NodeCodecQuadTreeHalfFloat.h:38
+
@ TRIANGLE_COUNT_MASK
Definition NodeCodecQuadTreeHalfFloat.h:39
+
@ OFFSET_MASK
Definition NodeCodecQuadTreeHalfFloat.h:41
+
@ OFFSET_NON_SIGNIFICANT_BITS
Definition NodeCodecQuadTreeHalfFloat.h:42
+
@ OFFSET_NON_SIGNIFICANT_MASK
Definition NodeCodecQuadTreeHalfFloat.h:43
+
Definition UVec4.h:12
+
JPH_INLINE UVec4 Swizzle() const
Swizzle the elements in inV.
+
JPH_INLINE void StoreInt4(uint32 *outV) const
Store 4 ints to memory.
Definition UVec4.inl:348
+
static JPH_INLINE UVec4 sLoadInt4(const uint32 *inV)
Load 4 ints from memory.
Definition UVec4.inl:78
+
Definition Vec3.h:17
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
JPH_INLINE void StoreFloat3(Float3 *outV) const
Store 3 floats to memory.
Definition Vec3.inl:765
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
Definition Vec4.h:14
+
JPH_INLINE Vec4 ToFloat(UVec4Arg inValue)
Convert 4 half floats (lower 64 bits) to floats.
Definition HalfFloat.h:191
+
JPH_INLINE HalfFloat FromFloat(float inV)
Convert a float (32-bits) to a half float (16-bits)
Definition HalfFloat.h:132
+
Header for the tree.
Definition NodeCodecQuadTreeHalfFloat.h:22
+
Float3 mRootBoundsMin
Definition NodeCodecQuadTreeHalfFloat.h:23
+
Float3 mRootBoundsMax
Definition NodeCodecQuadTreeHalfFloat.h:24
+
uint32 mRootProperties
Definition NodeCodecQuadTreeHalfFloat.h:25
+
Node structure.
Definition NodeCodecQuadTreeHalfFloat.h:48
+
HalfFloat mBoundsMaxY[4]
Definition NodeCodecQuadTreeHalfFloat.h:53
+
HalfFloat mBoundsMinX[4]
4 child bounding boxes
Definition NodeCodecQuadTreeHalfFloat.h:49
+
HalfFloat mBoundsMinZ[4]
Definition NodeCodecQuadTreeHalfFloat.h:51
+
HalfFloat mBoundsMaxX[4]
Definition NodeCodecQuadTreeHalfFloat.h:52
+
uint32 mNodeProperties[4]
4 child node properties
Definition NodeCodecQuadTreeHalfFloat.h:55
+
HalfFloat mBoundsMinY[4]
Definition NodeCodecQuadTreeHalfFloat.h:50
+
HalfFloat mBoundsMaxZ[4]
Definition NodeCodecQuadTreeHalfFloat.h:54
+
+
+ + + + diff --git a/_non_copyable_8h.html b/_non_copyable_8h.html new file mode 100644 index 000000000..b863018ee --- /dev/null +++ b/_non_copyable_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Core/NonCopyable.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
NonCopyable.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  NonCopyable
 Class that makes another class non-copyable. Usage: Inherit from NonCopyable. More...
 
+
+
+ + + + diff --git a/_non_copyable_8h.js b/_non_copyable_8h.js new file mode 100644 index 000000000..5a9afddef --- /dev/null +++ b/_non_copyable_8h.js @@ -0,0 +1,4 @@ +var _non_copyable_8h = +[ + [ "NonCopyable", "class_non_copyable.html", "class_non_copyable" ] +]; \ No newline at end of file diff --git a/_non_copyable_8h_source.html b/_non_copyable_8h_source.html new file mode 100644 index 000000000..cf91c0226 --- /dev/null +++ b/_non_copyable_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Jolt/Core/NonCopyable.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NonCopyable.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
+
+ +
11{
+
12public:
+
13 NonCopyable() = default;
+
14 NonCopyable(const NonCopyable &) = delete;
+
15 void operator = (const NonCopyable &) = delete;
+
16};
+
+
17
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
NonCopyable(const NonCopyable &)=delete
+
NonCopyable()=default
+
+
+ + + + diff --git a/_object_layer_8h.html b/_object_layer_8h.html new file mode 100644 index 000000000..aad51117d --- /dev/null +++ b/_object_layer_8h.html @@ -0,0 +1,180 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ObjectLayer.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectLayer.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

class  ObjectLayerFilter
 Filter class for object layers. More...
 
class  ObjectLayerPairFilter
 Filter class to test if two objects can collide based on their object layer. Used while finding collision pairs. More...
 
class  DefaultObjectLayerFilter
 Default filter class that uses the pair filter in combination with a specified layer to filter layers. More...
 
class  SpecifiedObjectLayerFilter
 Allows objects from a specific layer only. More...
 
+ + + + +

+Macros

#define JPH_OBJECT_LAYER_BITS   16
 Layer that objects can be in, determines which other objects it can collide with.
 
+ + + +

+Typedefs

using ObjectLayer = uint16
 
+

Macro Definition Documentation

+ +

◆ JPH_OBJECT_LAYER_BITS

+ +
+
+ + + + +
#define JPH_OBJECT_LAYER_BITS   16
+
+ +

Layer that objects can be in, determines which other objects it can collide with.

+ +
+
+

Typedef Documentation

+ +

◆ ObjectLayer

+ +
+
+ + + + +
using ObjectLayer = uint16
+
+ +
+
+
+
+ + + + diff --git a/_object_layer_8h.js b/_object_layer_8h.js new file mode 100644 index 000000000..217c90e8d --- /dev/null +++ b/_object_layer_8h.js @@ -0,0 +1,9 @@ +var _object_layer_8h = +[ + [ "ObjectLayerFilter", "class_object_layer_filter.html", "class_object_layer_filter" ], + [ "ObjectLayerPairFilter", "class_object_layer_pair_filter.html", "class_object_layer_pair_filter" ], + [ "DefaultObjectLayerFilter", "class_default_object_layer_filter.html", "class_default_object_layer_filter" ], + [ "SpecifiedObjectLayerFilter", "class_specified_object_layer_filter.html", "class_specified_object_layer_filter" ], + [ "JPH_OBJECT_LAYER_BITS", "_object_layer_8h.html#a744c7588b7b9c9d897854299a8682c66", null ], + [ "ObjectLayer", "_object_layer_8h.html#a960eb396e2803ddad87bf25e0dcb4470", null ] +]; \ No newline at end of file diff --git a/_object_layer_8h_source.html b/_object_layer_8h_source.html new file mode 100644 index 000000000..cbcaf543b --- /dev/null +++ b/_object_layer_8h_source.html @@ -0,0 +1,260 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ObjectLayer.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectLayer.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
+
12#ifndef JPH_OBJECT_LAYER_BITS
+
13 #define JPH_OBJECT_LAYER_BITS 16
+
14#endif // JPH_OBJECT_LAYER_BITS
+
15#if JPH_OBJECT_LAYER_BITS == 16
+ +
17#elif JPH_OBJECT_LAYER_BITS == 32
+
18 using ObjectLayer = uint32;
+
19#else
+
20 #error "JPH_OBJECT_LAYER_BITS must be 16 or 32"
+
21#endif
+
22
+
24static constexpr ObjectLayer cObjectLayerInvalid = ObjectLayer(~ObjectLayer(0U));
+
25
+
+ +
28{
+
29public:
+
31 virtual ~ObjectLayerFilter() = default;
+
32
+
+
34 virtual bool ShouldCollide([[maybe_unused]] ObjectLayer inLayer) const
+
35 {
+
36 return true;
+
37 }
+
+
38
+
39#ifdef JPH_TRACK_BROADPHASE_STATS
+
41 virtual String GetDescription() const
+
42 {
+
43 return "No Description";
+
44 }
+
45#endif // JPH_TRACK_BROADPHASE_STATS
+
46};
+
+
47
+
+ +
50{
+
51public:
+
53 virtual ~ObjectLayerPairFilter() = default;
+
54
+
+
56 virtual bool ShouldCollide([[maybe_unused]] ObjectLayer inLayer1, [[maybe_unused]] ObjectLayer inLayer2) const
+
57 {
+
58 return true;
+
59 }
+
+
60};
+
+
61
+
+ +
64{
+
65public:
+
+
67 DefaultObjectLayerFilter(const ObjectLayerPairFilter &inObjectLayerPairFilter, ObjectLayer inLayer) :
+
68 mObjectLayerPairFilter(inObjectLayerPairFilter),
+
69 mLayer(inLayer)
+
70 {
+
71 }
+
+
72
+
+ +
75 mObjectLayerPairFilter(inRHS.mObjectLayerPairFilter),
+
76 mLayer(inRHS.mLayer)
+
77 {
+
78 }
+
+
79
+
80 // See ObjectLayerFilter::ShouldCollide
+
+
81 virtual bool ShouldCollide(ObjectLayer inLayer) const override
+
82 {
+
83 return mObjectLayerPairFilter.ShouldCollide(mLayer, inLayer);
+
84 }
+
+
85
+
86private:
+
87 const ObjectLayerPairFilter & mObjectLayerPairFilter;
+
88 ObjectLayer mLayer;
+
89};
+
+
90
+
+ +
93{
+
94public:
+
+ +
97 mLayer(inLayer)
+
98 {
+
99 }
+
+
100
+
101 // See ObjectLayerFilter::ShouldCollide
+
+
102 virtual bool ShouldCollide(ObjectLayer inLayer) const override
+
103 {
+
104 return mLayer == inLayer;
+
105 }
+
+
106
+
107private:
+
108 ObjectLayer mLayer;
+
109};
+
+
110
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
std::uint16_t uint16
Definition Core.h:454
+ +
uint16 ObjectLayer
Definition ObjectLayer.h:16
+
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+
Default filter class that uses the pair filter in combination with a specified layer to filter layers...
Definition ObjectLayer.h:64
+
virtual bool ShouldCollide(ObjectLayer inLayer) const override
Function to filter out object layers when doing collision query test (return true to allow testing ag...
Definition ObjectLayer.h:81
+
DefaultObjectLayerFilter(const ObjectLayerPairFilter &inObjectLayerPairFilter, ObjectLayer inLayer)
Constructor.
Definition ObjectLayer.h:67
+
DefaultObjectLayerFilter(const DefaultObjectLayerFilter &inRHS)
Copy constructor.
Definition ObjectLayer.h:74
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Filter class for object layers.
Definition ObjectLayer.h:28
+
virtual bool ShouldCollide(ObjectLayer inLayer) const
Function to filter out object layers when doing collision query test (return true to allow testing ag...
Definition ObjectLayer.h:34
+
virtual ~ObjectLayerFilter()=default
Destructor.
+
Filter class to test if two objects can collide based on their object layer. Used while finding colli...
Definition ObjectLayer.h:50
+
virtual bool ShouldCollide(ObjectLayer inLayer1, ObjectLayer inLayer2) const
Returns true if two layers can collide.
Definition ObjectLayer.h:56
+
virtual ~ObjectLayerPairFilter()=default
Destructor.
+
Allows objects from a specific layer only.
Definition ObjectLayer.h:93
+
virtual bool ShouldCollide(ObjectLayer inLayer) const override
Function to filter out object layers when doing collision query test (return true to allow testing ag...
Definition ObjectLayer.h:102
+
SpecifiedObjectLayerFilter(ObjectLayer inLayer)
Constructor.
Definition ObjectLayer.h:96
+
+
+ + + + diff --git a/_object_layer_pair_filter_mask_8h.html b/_object_layer_pair_filter_mask_8h.html new file mode 100644 index 000000000..80d965810 --- /dev/null +++ b/_object_layer_pair_filter_mask_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ObjectLayerPairFilterMask.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectLayerPairFilterMask.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  ObjectLayerPairFilterMask
 
+
+
+ + + + diff --git a/_object_layer_pair_filter_mask_8h.js b/_object_layer_pair_filter_mask_8h.js new file mode 100644 index 000000000..cb7169a46 --- /dev/null +++ b/_object_layer_pair_filter_mask_8h.js @@ -0,0 +1,4 @@ +var _object_layer_pair_filter_mask_8h = +[ + [ "ObjectLayerPairFilterMask", "class_object_layer_pair_filter_mask.html", "class_object_layer_pair_filter_mask" ] +]; \ No newline at end of file diff --git a/_object_layer_pair_filter_mask_8h_source.html b/_object_layer_pair_filter_mask_8h_source.html new file mode 100644 index 000000000..7829afe7f --- /dev/null +++ b/_object_layer_pair_filter_mask_8h_source.html @@ -0,0 +1,188 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ObjectLayerPairFilterMask.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectLayerPairFilterMask.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+
+ +
16{
+
17public:
+ +
19
+
21 static constexpr uint32 cNumBits = JPH_OBJECT_LAYER_BITS / 2;
+
22 static constexpr uint32 cMask = (1 << cNumBits) - 1;
+
23
+
+
25 static ObjectLayer sGetObjectLayer(uint32 inGroup, uint32 inMask = cMask)
+
26 {
+
27 JPH_ASSERT((inGroup & ~cMask) == 0);
+
28 JPH_ASSERT((inMask & ~cMask) == 0);
+
29 return ObjectLayer((inGroup & cMask) | (inMask << cNumBits));
+
30 }
+
+
31
+
+
33 static inline uint32 sGetGroup(ObjectLayer inObjectLayer)
+
34 {
+
35 return uint32(inObjectLayer) & cMask;
+
36 }
+
+
37
+
+
39 static inline uint32 sGetMask(ObjectLayer inObjectLayer)
+
40 {
+
41 return uint32(inObjectLayer) >> cNumBits;
+
42 }
+
+
43
+
+
45 virtual bool ShouldCollide(ObjectLayer inObject1, ObjectLayer inObject2) const override
+
46 {
+
47 return (sGetGroup(inObject1) & sGetMask(inObject2)) != 0
+
48 && (sGetGroup(inObject2) & sGetMask(inObject1)) != 0;
+
49 }
+
+
50};
+
+
51
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
#define JPH_OBJECT_LAYER_BITS
Layer that objects can be in, determines which other objects it can collide with.
Definition ObjectLayer.h:13
+
uint16 ObjectLayer
Definition ObjectLayer.h:16
+
Filter class to test if two objects can collide based on their object layer. Used while finding colli...
Definition ObjectLayer.h:50
+
Definition ObjectLayerPairFilterMask.h:16
+
virtual bool ShouldCollide(ObjectLayer inObject1, ObjectLayer inObject2) const override
Returns true if two layers can collide.
Definition ObjectLayerPairFilterMask.h:45
+
static uint32 sGetGroup(ObjectLayer inObjectLayer)
Get the group bits from an ObjectLayer.
Definition ObjectLayerPairFilterMask.h:33
+
static JPH_OVERRIDE_NEW_DELETE constexpr uint32 cNumBits
Number of bits for the group and mask bits.
Definition ObjectLayerPairFilterMask.h:21
+
static uint32 sGetMask(ObjectLayer inObjectLayer)
Get the mask bits from an ObjectLayer.
Definition ObjectLayerPairFilterMask.h:39
+
static ObjectLayer sGetObjectLayer(uint32 inGroup, uint32 inMask=cMask)
Construct an ObjectLayer from a group and mask bits.
Definition ObjectLayerPairFilterMask.h:25
+
static constexpr uint32 cMask
Definition ObjectLayerPairFilterMask.h:22
+
+
+ + + + diff --git a/_object_layer_pair_filter_table_8h.html b/_object_layer_pair_filter_table_8h.html new file mode 100644 index 000000000..64a9f458e --- /dev/null +++ b/_object_layer_pair_filter_table_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ObjectLayerPairFilterTable.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectLayerPairFilterTable.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  ObjectLayerPairFilterTable
 
+
+
+ + + + diff --git a/_object_layer_pair_filter_table_8h.js b/_object_layer_pair_filter_table_8h.js new file mode 100644 index 000000000..847fc7f16 --- /dev/null +++ b/_object_layer_pair_filter_table_8h.js @@ -0,0 +1,4 @@ +var _object_layer_pair_filter_table_8h = +[ + [ "ObjectLayerPairFilterTable", "class_object_layer_pair_filter_table.html", "class_object_layer_pair_filter_table" ] +]; \ No newline at end of file diff --git a/_object_layer_pair_filter_table_8h_source.html b/_object_layer_pair_filter_table_8h_source.html new file mode 100644 index 000000000..9bb5e4e9e --- /dev/null +++ b/_object_layer_pair_filter_table_8h_source.html @@ -0,0 +1,217 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ObjectLayerPairFilterTable.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectLayerPairFilterTable.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+
+ +
14{
+
15private:
+
17 uint GetBit(ObjectLayer inLayer1, ObjectLayer inLayer2) const
+
18 {
+
19 // We store the lower left half only, so swap the inputs when trying to access the top right half
+
20 if (inLayer1 > inLayer2)
+
21 swap(inLayer1, inLayer2);
+
22
+
23 JPH_ASSERT(inLayer2 < mNumObjectLayers);
+
24
+
25 // Calculate at which bit the entry for this pair resides
+
26 // We use the fact that a row always starts at inLayer2 * (inLayer2 + 1) / 2
+
27 // (this is the amount of bits needed to store a table of inLayer2 entries)
+
28 return (inLayer2 * (inLayer2 + 1)) / 2 + inLayer1;
+
29 }
+
30
+
31public:
+ +
33
+
+
35 explicit ObjectLayerPairFilterTable(uint inNumObjectLayers) :
+
36 mNumObjectLayers(inNumObjectLayers)
+
37 {
+
38 // By default nothing collides
+
39 // For the first layer we only need to store 1 bit, for the second 2 bits, for the third 3 bits, etc.
+
40 // We use the formula Sum_i=1^N i = N * (N + 1) / 2 to calculate the size of the table
+
41 int table_size = (inNumObjectLayers * (inNumObjectLayers + 1) / 2 + 7) / 8;
+
42 mTable.resize(table_size, 0);
+
43 }
+
+
44
+
+ +
47 {
+
48 return mNumObjectLayers;
+
49 }
+
+
50
+
+
52 void DisableCollision(ObjectLayer inLayer1, ObjectLayer inLayer2)
+
53 {
+
54 uint bit = GetBit(inLayer1, inLayer2);
+
55 mTable[bit >> 3] &= (0xff ^ (1 << (bit & 0b111)));
+
56 }
+
+
57
+
+
59 void EnableCollision(ObjectLayer inLayer1, ObjectLayer inLayer2)
+
60 {
+
61 uint bit = GetBit(inLayer1, inLayer2);
+
62 mTable[bit >> 3] |= 1 << (bit & 0b111);
+
63 }
+
+
64
+
+
66 virtual bool ShouldCollide(ObjectLayer inObject1, ObjectLayer inObject2) const override
+
67 {
+
68 // Test if the bit is set for this group pair
+
69 uint bit = GetBit(inObject1, inObject2);
+
70 return (mTable[bit >> 3] & (1 << (bit & 0b111))) != 0;
+
71 }
+
+
72
+
73private:
+
74 uint mNumObjectLayers;
+
75 Array<uint8> mTable;
+
76};
+
+
77
+ +
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_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
uint16 ObjectLayer
Definition ObjectLayer.h:16
+
Definition Array.h:36
+
void resize(size_type inNewSize)
Resize array to new length.
Definition Array.h:118
+
Filter class to test if two objects can collide based on their object layer. Used while finding colli...
Definition ObjectLayer.h:50
+
Definition ObjectLayerPairFilterTable.h:14
+
uint GetNumObjectLayers() const
Get the number of object layers.
Definition ObjectLayerPairFilterTable.h:46
+
void DisableCollision(ObjectLayer inLayer1, ObjectLayer inLayer2)
Disable collision between two object layers.
Definition ObjectLayerPairFilterTable.h:52
+
JPH_OVERRIDE_NEW_DELETE ObjectLayerPairFilterTable(uint inNumObjectLayers)
Constructs the table with inNumObjectLayers Layers, initially all layer pairs are disabled.
Definition ObjectLayerPairFilterTable.h:35
+
virtual bool ShouldCollide(ObjectLayer inObject1, ObjectLayer inObject2) const override
Returns true if two layers can collide.
Definition ObjectLayerPairFilterTable.h:66
+
void EnableCollision(ObjectLayer inLayer1, ObjectLayer inLayer2)
Enable collision between two object layers.
Definition ObjectLayerPairFilterTable.h:59
+
+
+ + + + diff --git a/_object_stream_8cpp.html b/_object_stream_8cpp.html new file mode 100644 index 000000000..09826c158 --- /dev/null +++ b/_object_stream_8cpp.html @@ -0,0 +1,168 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStream.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStream.cpp File Reference
+
+
+ + + + +

+Macros

#define JPH_DECLARE_PRIMITIVE(name)
 
+

Macro Definition Documentation

+ +

◆ JPH_DECLARE_PRIMITIVE

+ +
+
+ + + + + + + + +
#define JPH_DECLARE_PRIMITIVE( name)
+
+Value:
bool OSIsType(name *, int inArrayDepth, EOSDataType inDataType, const char *inClassName) \
+
{ \
+
return inArrayDepth == 0 && inDataType == EOSDataType::T_##name; \
+
} \
+
bool OSReadData(IObjectStreamIn &ioStream, name &outPrimitive) \
+
{ \
+
return ioStream.ReadPrimitiveData(outPrimitive); \
+
} \
+
void OSWriteDataType(IObjectStreamOut &ioStream, name *) \
+
{ \
+
ioStream.WriteDataType(EOSDataType::T_##name); \
+
} \
+
void OSWriteData(IObjectStreamOut &ioStream, const name &inPrimitive) \
+
{ \
+
ioStream.HintNextItem(); \
+
ioStream.WritePrimitiveData(inPrimitive); \
+
}
+
bool OSIsType(Array< T, A > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
Definition ObjectStream.h:125
+
bool OSReadData(IObjectStreamIn &ioStream, Array< T, A > &inArray)
Define serialization templates for dynamic arrays.
Definition ObjectStream.h:156
+
void OSWriteData(IObjectStreamOut &ioStream, const Array< T, A > &inArray)
Definition ObjectStream.h:243
+
void OSWriteDataType(IObjectStreamOut &ioStream, Array< T, A > *)
Definition ObjectStream.h:236
+
EOSDataType
Data type.
Definition SerializableAttribute.h:17
+
Interface class for reading from an object stream.
Definition ObjectStream.h:42
+
Interface class for writing to an object stream.
Definition ObjectStream.h:76
+
+
+
+
+
+ + + + diff --git a/_object_stream_8cpp.js b/_object_stream_8cpp.js new file mode 100644 index 000000000..d7bf415e5 --- /dev/null +++ b/_object_stream_8cpp.js @@ -0,0 +1,4 @@ +var _object_stream_8cpp = +[ + [ "JPH_DECLARE_PRIMITIVE", "_object_stream_8cpp.html#a7d32f5239cd276fd0012072a2a4ccd23", null ] +]; \ No newline at end of file diff --git a/_object_stream_8h.html b/_object_stream_8h.html new file mode 100644 index 000000000..a0f186b98 --- /dev/null +++ b/_object_stream_8h.html @@ -0,0 +1,920 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStream.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStream.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Classes

class  ObjectStream
 Base class for object stream input and output streams. More...
 
class  IObjectStreamIn
 Interface class for reading from an object stream. More...
 
class  IObjectStreamOut
 Interface class for writing to an object stream. More...
 
+ + + +

+Macros

#define JPH_DECLARE_PRIMITIVE(name)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class T , class A >
bool OSIsType (Array< T, A > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
 
template<class T , uint N>
bool OSIsType (StaticArray< T, N > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
 
template<class T , uint N>
bool OSIsType (T(*)[N], int inArrayDepth, EOSDataType inDataType, const char *inClassName)
 
template<class T >
bool OSIsType (Ref< T > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
 
template<class T >
bool OSIsType (RefConst< T > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
 
template<class T , class A >
bool OSReadData (IObjectStreamIn &ioStream, Array< T, A > &inArray)
 Define serialization templates for dynamic arrays.
 
template<class T , uint N>
bool OSReadData (IObjectStreamIn &ioStream, StaticArray< T, N > &inArray)
 Define serialization templates for static arrays.
 
template<class T , uint N>
bool OSReadData (IObjectStreamIn &ioStream, T(&inArray)[N])
 Define serialization templates for C style arrays.
 
template<class T >
bool OSReadData (IObjectStreamIn &ioStream, Ref< T > &inRef)
 Define serialization templates for references.
 
template<class T >
bool OSReadData (IObjectStreamIn &ioStream, RefConst< T > &inRef)
 
template<class T , class A >
void OSWriteDataType (IObjectStreamOut &ioStream, Array< T, A > *)
 
template<class T , class A >
void OSWriteData (IObjectStreamOut &ioStream, const Array< T, A > &inArray)
 
template<class T , uint N>
void OSWriteDataType (IObjectStreamOut &ioStream, StaticArray< T, N > *)
 Define serialization templates for static arrays.
 
template<class T , uint N>
void OSWriteData (IObjectStreamOut &ioStream, const StaticArray< T, N > &inArray)
 
template<class T , uint N>
void OSWriteDataType (IObjectStreamOut &ioStream, T(*)[N])
 Define serialization templates for C style arrays.
 
template<class T , uint N>
void OSWriteData (IObjectStreamOut &ioStream, const T(&inArray)[N])
 
template<class T >
void OSWriteDataType (IObjectStreamOut &ioStream, Ref< T > *)
 Define serialization templates for references.
 
template<class T >
void OSWriteData (IObjectStreamOut &ioStream, const Ref< T > &inRef)
 
template<class T >
void OSWriteDataType (IObjectStreamOut &ioStream, RefConst< T > *)
 
template<class T >
void OSWriteData (IObjectStreamOut &ioStream, const RefConst< T > &inRef)
 
+

Macro Definition Documentation

+ +

◆ JPH_DECLARE_PRIMITIVE

+ +
+
+ + + + + + + + +
#define JPH_DECLARE_PRIMITIVE( name)
+
+Value:
JPH_EXPORT bool OSIsType(name *, int inArrayDepth, EOSDataType inDataType, const char *inClassName); \
+
JPH_EXPORT bool OSReadData(IObjectStreamIn &ioStream, name &outPrimitive); \
+
JPH_EXPORT void OSWriteDataType(IObjectStreamOut &ioStream, name *); \
+
JPH_EXPORT void OSWriteData(IObjectStreamOut &ioStream, const name &inPrimitive);
+
#define JPH_EXPORT
Definition Core.h:236
+
bool OSIsType(Array< T, A > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
Definition ObjectStream.h:125
+
bool OSReadData(IObjectStreamIn &ioStream, Array< T, A > &inArray)
Define serialization templates for dynamic arrays.
Definition ObjectStream.h:156
+
void OSWriteData(IObjectStreamOut &ioStream, const Array< T, A > &inArray)
Definition ObjectStream.h:243
+
void OSWriteDataType(IObjectStreamOut &ioStream, Array< T, A > *)
Definition ObjectStream.h:236
+
EOSDataType
Data type.
Definition SerializableAttribute.h:17
+
Interface class for reading from an object stream.
Definition ObjectStream.h:42
+
Interface class for writing to an object stream.
Definition ObjectStream.h:76
+
+
+
+

Function Documentation

+ +

◆ OSIsType() [1/5]

+ +
+
+
+template<class T , class A >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool OSIsType (Array< T, A > * ,
int inArrayDepth,
EOSDataType inDataType,
const char * inClassName 
)
+
+ +
+
+ +

◆ OSIsType() [2/5]

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool OSIsType (Ref< T > * ,
int inArrayDepth,
EOSDataType inDataType,
const char * inClassName 
)
+
+ +
+
+ +

◆ OSIsType() [3/5]

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool OSIsType (RefConst< T > * ,
int inArrayDepth,
EOSDataType inDataType,
const char * inClassName 
)
+
+ +
+
+ +

◆ OSIsType() [4/5]

+ +
+
+
+template<class T , uint N>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool OSIsType (StaticArray< T, N > * ,
int inArrayDepth,
EOSDataType inDataType,
const char * inClassName 
)
+
+ +
+
+ +

◆ OSIsType() [5/5]

+ +
+
+
+template<class T , uint N>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool OSIsType (T(*) [N],
int inArrayDepth,
EOSDataType inDataType,
const char * inClassName 
)
+
+ +
+
+ +

◆ OSReadData() [1/5]

+ +
+
+
+template<class T , class A >
+ + + + + + + + + + + + + + + + + + +
bool OSReadData (IObjectStreamInioStream,
Array< T, A > & inArray 
)
+
+ +

Define serialization templates for dynamic arrays.

+ +
+
+ +

◆ OSReadData() [2/5]

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + +
bool OSReadData (IObjectStreamInioStream,
Ref< T > & inRef 
)
+
+ +

Define serialization templates for references.

+ +
+
+ +

◆ OSReadData() [3/5]

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + +
bool OSReadData (IObjectStreamInioStream,
RefConst< T > & inRef 
)
+
+ +
+
+ +

◆ OSReadData() [4/5]

+ +
+
+
+template<class T , uint N>
+ + + + + + + + + + + + + + + + + + +
bool OSReadData (IObjectStreamInioStream,
StaticArray< T, N > & inArray 
)
+
+ +

Define serialization templates for static arrays.

+ +
+
+ +

◆ OSReadData() [5/5]

+ +
+
+
+template<class T , uint N>
+ + + + + + + + + + + + + + + + + + +
bool OSReadData (IObjectStreamInioStream,
T(&) inArray[N] 
)
+
+ +

Define serialization templates for C style arrays.

+ +
+
+ +

◆ OSWriteData() [1/5]

+ +
+
+
+template<class T , class A >
+ + + + + + + + + + + + + + + + + + +
void OSWriteData (IObjectStreamOutioStream,
const Array< T, A > & inArray 
)
+
+ +
+
+ +

◆ OSWriteData() [2/5]

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + +
void OSWriteData (IObjectStreamOutioStream,
const Ref< T > & inRef 
)
+
+ +
+
+ +

◆ OSWriteData() [3/5]

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + +
void OSWriteData (IObjectStreamOutioStream,
const RefConst< T > & inRef 
)
+
+ +
+
+ +

◆ OSWriteData() [4/5]

+ +
+
+
+template<class T , uint N>
+ + + + + + + + + + + + + + + + + + +
void OSWriteData (IObjectStreamOutioStream,
const StaticArray< T, N > & inArray 
)
+
+ +
+
+ +

◆ OSWriteData() [5/5]

+ +
+
+
+template<class T , uint N>
+ + + + + + + + + + + + + + + + + + +
void OSWriteData (IObjectStreamOutioStream,
const T(&) inArray[N] 
)
+
+ +
+
+ +

◆ OSWriteDataType() [1/5]

+ +
+
+
+template<class T , class A >
+ + + + + + + + + + + + + + + + + + +
void OSWriteDataType (IObjectStreamOutioStream,
Array< T, A > *  
)
+
+ +
+
+ +

◆ OSWriteDataType() [2/5]

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + +
void OSWriteDataType (IObjectStreamOutioStream,
Ref< T > *  
)
+
+ +

Define serialization templates for references.

+ +
+
+ +

◆ OSWriteDataType() [3/5]

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + +
void OSWriteDataType (IObjectStreamOutioStream,
RefConst< T > *  
)
+
+ +
+
+ +

◆ OSWriteDataType() [4/5]

+ +
+
+
+template<class T , uint N>
+ + + + + + + + + + + + + + + + + + +
void OSWriteDataType (IObjectStreamOutioStream,
StaticArray< T, N > *  
)
+
+ +

Define serialization templates for static arrays.

+ +
+
+ +

◆ OSWriteDataType() [5/5]

+ +
+
+
+template<class T , uint N>
+ + + + + + + + + + + + + + + + + + +
void OSWriteDataType (IObjectStreamOutioStream,
T(*) [N] 
)
+
+ +

Define serialization templates for C style arrays.

+ +
+
+
+
+ + + + diff --git a/_object_stream_8h.js b/_object_stream_8h.js new file mode 100644 index 000000000..eb3d3479d --- /dev/null +++ b/_object_stream_8h.js @@ -0,0 +1,27 @@ +var _object_stream_8h = +[ + [ "ObjectStream", "class_object_stream.html", "class_object_stream" ], + [ "IObjectStreamIn", "class_i_object_stream_in.html", "class_i_object_stream_in" ], + [ "IObjectStreamOut", "class_i_object_stream_out.html", "class_i_object_stream_out" ], + [ "JPH_DECLARE_PRIMITIVE", "_object_stream_8h.html#a7d32f5239cd276fd0012072a2a4ccd23", null ], + [ "OSIsType", "_object_stream_8h.html#a0015bbd813668757e43b8752bf08d703", null ], + [ "OSIsType", "_object_stream_8h.html#a0084d42d85c675f42282b38b31be8173", null ], + [ "OSIsType", "_object_stream_8h.html#a046ca0bf5695cd0bf7e3f4421f27f080", null ], + [ "OSIsType", "_object_stream_8h.html#a2d4f6a65eacb30124ed4d3221fe6f360", null ], + [ "OSIsType", "_object_stream_8h.html#a652b1b1dc359b5107edbcc394b3b22fd", null ], + [ "OSReadData", "_object_stream_8h.html#a6ee64ba79371cef9ffbbe1f8b82e8867", null ], + [ "OSReadData", "_object_stream_8h.html#a60dfa58686d942e47bc72a77984bb8e2", null ], + [ "OSReadData", "_object_stream_8h.html#a8731cf8e985c6fe5cb4e1dabf4206db2", null ], + [ "OSReadData", "_object_stream_8h.html#a561abe3e70484909b480d7f8e1cef9d7", null ], + [ "OSReadData", "_object_stream_8h.html#a6f6f2c3ed5a0f399d93f1fde1a99ded5", null ], + [ "OSWriteData", "_object_stream_8h.html#a9849145a2f3c49430e72a3cb8cb6dc2b", null ], + [ "OSWriteData", "_object_stream_8h.html#afeabe7de6bcd1f6b092dfc230e236a1f", null ], + [ "OSWriteData", "_object_stream_8h.html#a44012e4b882f982ef372d342479f481c", null ], + [ "OSWriteData", "_object_stream_8h.html#a622732ce94e09f59da810bb6e1ca3fb9", null ], + [ "OSWriteData", "_object_stream_8h.html#a16b39e4dc5964aadc07f57ed7cd38393", null ], + [ "OSWriteDataType", "_object_stream_8h.html#afb9e2d82b290a1baca2546e66a38ac4f", null ], + [ "OSWriteDataType", "_object_stream_8h.html#a8f946429439a23c334be4a1a80471ce1", null ], + [ "OSWriteDataType", "_object_stream_8h.html#a38a1d19a6b325964f4c8e808c38630ab", null ], + [ "OSWriteDataType", "_object_stream_8h.html#aad34e2f2bc03433e8db638ac1d14a0f0", null ], + [ "OSWriteDataType", "_object_stream_8h.html#a4447bfccc098e716657dfb4c183692e6", null ] +]; \ No newline at end of file diff --git a/_object_stream_8h_source.html b/_object_stream_8h_source.html new file mode 100644 index 000000000..520583cda --- /dev/null +++ b/_object_stream_8h_source.html @@ -0,0 +1,583 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStream.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStream.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
+ + +
9#include <Jolt/Core/RTTI.h>
+ + +
12
+
13#ifdef JPH_OBJECT_STREAM
+
14
+ +
16
+
+ +
19{
+
20public:
+
+
22 enum class EStreamType
+
23 {
+
24 Text,
+
25 Binary,
+
26 };
+
+
27
+
28protected:
+
30 virtual ~ObjectStream() = default;
+
31
+ +
34
+
35 static constexpr int sVersion = 1;
+
36 static constexpr int sRevision = 0;
+
37 static constexpr Identifier sNullIdentifier = 0;
+
38};
+
+
39
+
+ +
42{
+
43public:
+
45 virtual bool ReadDataType(EOSDataType &outType) = 0;
+
46 virtual bool ReadName(String &outName) = 0;
+
47 virtual bool ReadIdentifier(Identifier &outIdentifier) = 0;
+
48 virtual bool ReadCount(uint32 &outCount) = 0;
+
49
+
51 virtual bool ReadPrimitiveData(uint8 &outPrimitive) = 0;
+
52 virtual bool ReadPrimitiveData(uint16 &outPrimitive) = 0;
+
53 virtual bool ReadPrimitiveData(int &outPrimitive) = 0;
+
54 virtual bool ReadPrimitiveData(uint32 &outPrimitive) = 0;
+
55 virtual bool ReadPrimitiveData(uint64 &outPrimitive) = 0;
+
56 virtual bool ReadPrimitiveData(float &outPrimitive) = 0;
+
57 virtual bool ReadPrimitiveData(double &outPrimitive) = 0;
+
58 virtual bool ReadPrimitiveData(bool &outPrimitive) = 0;
+
59 virtual bool ReadPrimitiveData(String &outPrimitive) = 0;
+
60 virtual bool ReadPrimitiveData(Float3 &outPrimitive) = 0;
+
61 virtual bool ReadPrimitiveData(Double3 &outPrimitive) = 0;
+
62 virtual bool ReadPrimitiveData(Vec3 &outPrimitive) = 0;
+
63 virtual bool ReadPrimitiveData(DVec3 &outPrimitive) = 0;
+
64 virtual bool ReadPrimitiveData(Vec4 &outPrimitive) = 0;
+
65 virtual bool ReadPrimitiveData(Quat &outPrimitive) = 0;
+
66 virtual bool ReadPrimitiveData(Mat44 &outPrimitive) = 0;
+
67 virtual bool ReadPrimitiveData(DMat44 &outPrimitive) = 0;
+
68
+
70 virtual bool ReadClassData(const char *inClassName, void *inInstance) = 0;
+
71 virtual bool ReadPointerData(const RTTI *inRTTI, void **inPointer, int inRefCountOffset = -1) = 0;
+
72};
+
+
73
+
+ +
76{
+
77public:
+
79 virtual void WriteDataType(EOSDataType inType) = 0;
+
80 virtual void WriteName(const char *inName) = 0;
+
81 virtual void WriteIdentifier(Identifier inIdentifier) = 0;
+
82 virtual void WriteCount(uint32 inCount) = 0;
+
83
+
85 virtual void WritePrimitiveData(const uint8 &inPrimitive) = 0;
+
86 virtual void WritePrimitiveData(const uint16 &inPrimitive) = 0;
+
87 virtual void WritePrimitiveData(const int &inPrimitive) = 0;
+
88 virtual void WritePrimitiveData(const uint32 &inPrimitive) = 0;
+
89 virtual void WritePrimitiveData(const uint64 &inPrimitive) = 0;
+
90 virtual void WritePrimitiveData(const float &inPrimitive) = 0;
+
91 virtual void WritePrimitiveData(const double &inPrimitive) = 0;
+
92 virtual void WritePrimitiveData(const bool &inPrimitive) = 0;
+
93 virtual void WritePrimitiveData(const String &inPrimitive) = 0;
+
94 virtual void WritePrimitiveData(const Float3 &inPrimitive) = 0;
+
95 virtual void WritePrimitiveData(const Double3 &inPrimitive) = 0;
+
96 virtual void WritePrimitiveData(const Vec3 &inPrimitive) = 0;
+
97 virtual void WritePrimitiveData(const DVec3 &inPrimitive) = 0;
+
98 virtual void WritePrimitiveData(const Vec4 &inPrimitive) = 0;
+
99 virtual void WritePrimitiveData(const Quat &inPrimitive) = 0;
+
100 virtual void WritePrimitiveData(const Mat44 &inPrimitive) = 0;
+
101 virtual void WritePrimitiveData(const DMat44 &inPrimitive) = 0;
+
102
+
104 virtual void WritePointerData(const RTTI *inRTTI, const void *inPointer) = 0;
+
105 virtual void WriteClassData(const RTTI *inRTTI, const void *inInstance) = 0;
+
106
+
108 virtual void HintNextItem() { /* Default is do nothing */ }
+
109 virtual void HintIndentUp() { /* Default is do nothing */ }
+
110 virtual void HintIndentDown() { /* Default is do nothing */ }
+
111};
+
+
112
+
113// Define macro to declare functions for a specific primitive type
+
+
114#define JPH_DECLARE_PRIMITIVE(name) \
+
115 JPH_EXPORT bool OSIsType(name *, int inArrayDepth, EOSDataType inDataType, const char *inClassName); \
+
116 JPH_EXPORT bool OSReadData(IObjectStreamIn &ioStream, name &outPrimitive); \
+
117 JPH_EXPORT void OSWriteDataType(IObjectStreamOut &ioStream, name *); \
+
118 JPH_EXPORT void OSWriteData(IObjectStreamOut &ioStream, const name &inPrimitive);
+
+
119
+
120// This file uses the JPH_DECLARE_PRIMITIVE macro to define all types
+ +
122
+
123// Define serialization templates
+
124template <class T, class A>
+
+
125bool OSIsType(Array<T, A> *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
+
126{
+
127 return (inArrayDepth > 0 && OSIsType(static_cast<T *>(nullptr), inArrayDepth - 1, inDataType, inClassName));
+
128}
+
+
129
+
130template <class T, uint N>
+
+
131bool OSIsType(StaticArray<T, N> *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
+
132{
+
133 return (inArrayDepth > 0 && OSIsType(static_cast<T *>(nullptr), inArrayDepth - 1, inDataType, inClassName));
+
134}
+
+
135
+
136template <class T, uint N>
+
+
137bool OSIsType(T (*)[N], int inArrayDepth, EOSDataType inDataType, const char *inClassName)
+
138{
+
139 return (inArrayDepth > 0 && OSIsType(static_cast<T *>(nullptr), inArrayDepth - 1, inDataType, inClassName));
+
140}
+
+
141
+
142template <class T>
+
+
143bool OSIsType(Ref<T> *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
+
144{
+
145 return OSIsType(static_cast<T *>(nullptr), inArrayDepth, inDataType, inClassName);
+
146}
+
+
147
+
148template <class T>
+
+
149bool OSIsType(RefConst<T> *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
+
150{
+
151 return OSIsType(static_cast<T *>(nullptr), inArrayDepth, inDataType, inClassName);
+
152}
+
+
153
+
155template <class T, class A>
+
+
156bool OSReadData(IObjectStreamIn &ioStream, Array<T, A> &inArray)
+
157{
+
158 bool continue_reading = true;
+
159
+
160 // Read array length
+
161 uint32 array_length;
+
162 continue_reading = ioStream.ReadCount(array_length);
+
163
+
164 // Read array items
+
165 if (continue_reading)
+
166 {
+
167 inArray.clear();
+
168 inArray.resize(array_length);
+
169 for (uint32 el = 0; el < array_length && continue_reading; ++el)
+
170 continue_reading = OSReadData(ioStream, inArray[el]);
+
171 }
+
172
+
173 return continue_reading;
+
174}
+
+
175
+
177template <class T, uint N>
+
+ +
179{
+
180 bool continue_reading = true;
+
181
+
182 // Read array length
+
183 uint32 array_length;
+
184 continue_reading = ioStream.ReadCount(array_length);
+
185
+
186 // Check if we can fit this many elements
+
187 if (array_length > N)
+
188 return false;
+
189
+
190 // Read array items
+
191 if (continue_reading)
+
192 {
+
193 inArray.clear();
+
194 inArray.resize(array_length);
+
195 for (uint32 el = 0; el < array_length && continue_reading; ++el)
+
196 continue_reading = OSReadData(ioStream, inArray[el]);
+
197 }
+
198
+
199 return continue_reading;
+
200}
+
+
201
+
203template <class T, uint N>
+
+
204bool OSReadData(IObjectStreamIn &ioStream, T (&inArray)[N])
+
205{
+
206 bool continue_reading = true;
+
207
+
208 // Read array length
+
209 uint32 array_length;
+
210 continue_reading = ioStream.ReadCount(array_length);
+
211 if (array_length != N)
+
212 return false;
+
213
+
214 // Read array items
+
215 for (uint32 el = 0; el < N && continue_reading; ++el)
+
216 continue_reading = OSReadData(ioStream, inArray[el]);
+
217
+
218 return continue_reading;
+
219}
+
+
220
+
222template <class T>
+
+
223bool OSReadData(IObjectStreamIn &ioStream, Ref<T> &inRef)
+
224{
+
225 return ioStream.ReadPointerData(JPH_RTTI(T), inRef.InternalGetPointer(), T::sInternalGetRefCountOffset());
+
226}
+
+
227
+
228template <class T>
+
+ +
230{
+
231 return ioStream.ReadPointerData(JPH_RTTI(T), inRef.InternalGetPointer(), T::sInternalGetRefCountOffset());
+
232}
+
+
233
+
234// Define serialization templates for dynamic arrays
+
235template <class T, class A>
+
+ +
237{
+ +
239 OSWriteDataType(ioStream, static_cast<T *>(nullptr));
+
240}
+
+
241
+
242template <class T, class A>
+
+
243void OSWriteData(IObjectStreamOut &ioStream, const Array<T, A> &inArray)
+
244{
+
245 // Write size of array
+
246 ioStream.HintNextItem();
+
247 ioStream.WriteCount(static_cast<uint32>(inArray.size()));
+
248
+
249 // Write data in array
+
250 ioStream.HintIndentUp();
+
251 for (const T &v : inArray)
+
252 OSWriteData(ioStream, v);
+
253 ioStream.HintIndentDown();
+
254}
+
+
255
+
257template <class T, uint N>
+
+ +
259{
+ +
261 OSWriteDataType(ioStream, static_cast<T *>(nullptr));
+
262}
+
+
263
+
264template <class T, uint N>
+
+
265void OSWriteData(IObjectStreamOut &ioStream, const StaticArray<T, N> &inArray)
+
266{
+
267 // Write size of array
+
268 ioStream.HintNextItem();
+
269 ioStream.WriteCount(inArray.size());
+
270
+
271 // Write data in array
+
272 ioStream.HintIndentUp();
+
273 for (const typename StaticArray<T, N>::value_type &v : inArray)
+
274 OSWriteData(ioStream, v);
+
275 ioStream.HintIndentDown();
+
276}
+
+
277
+
279template <class T, uint N>
+
+
280void OSWriteDataType(IObjectStreamOut &ioStream, T (*)[N])
+
281{
+ +
283 OSWriteDataType(ioStream, static_cast<T *>(nullptr));
+
284}
+
+
285
+
286template <class T, uint N>
+
+
287void OSWriteData(IObjectStreamOut &ioStream, const T (&inArray)[N])
+
288{
+
289 // Write size of array
+
290 ioStream.HintNextItem();
+
291 ioStream.WriteCount(uint32(N));
+
292
+
293 // Write data in array
+
294 ioStream.HintIndentUp();
+
295 for (const T &v : inArray)
+
296 OSWriteData(ioStream, v);
+
297 ioStream.HintIndentDown();
+
298}
+
+
299
+
301template <class T>
+
+ +
303{
+
304 OSWriteDataType(ioStream, static_cast<T *>(nullptr));
+
305}
+
+
306
+
307template <class T>
+
+
308void OSWriteData(IObjectStreamOut &ioStream, const Ref<T> &inRef)
+
309{
+
310 if (inRef != nullptr)
+
311 ioStream.WritePointerData(GetRTTI(inRef.GetPtr()), inRef.GetPtr());
+
312 else
+
313 ioStream.WritePointerData(nullptr, nullptr);
+
314}
+
+
315
+
316template <class T>
+
+ +
318{
+
319 OSWriteDataType(ioStream, static_cast<T *>(nullptr));
+
320}
+
+
321
+
322template <class T>
+
+
323void OSWriteData(IObjectStreamOut &ioStream, const RefConst<T> &inRef)
+
324{
+
325 if (inRef != nullptr)
+
326 ioStream.WritePointerData(GetRTTI(inRef.GetPtr()), inRef.GetPtr());
+
327 else
+
328 ioStream.WritePointerData(nullptr, nullptr);
+
329}
+
+
330
+ +
332
+
333#endif // JPH_OBJECT_STREAM
+
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
std::uint16_t uint16
Definition Core.h:454
+ +
bool OSIsType(Array< T, A > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
Definition ObjectStream.h:125
+
bool OSReadData(IObjectStreamIn &ioStream, Array< T, A > &inArray)
Define serialization templates for dynamic arrays.
Definition ObjectStream.h:156
+
void OSWriteData(IObjectStreamOut &ioStream, const Array< T, A > &inArray)
Definition ObjectStream.h:243
+
void OSWriteDataType(IObjectStreamOut &ioStream, Array< T, A > *)
Definition ObjectStream.h:236
+ + +
#define JPH_RTTI(class_name)
Definition RTTI.h:319
+ +
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+ +
EOSDataType
Data type.
Definition SerializableAttribute.h:17
+
@ Array
Used in attribute declaration, indicates that this is an array of objects.
+ +
Definition Array.h:36
+
void resize(size_type inNewSize)
Resize array to new length.
Definition Array.h:118
+
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
void clear()
Destruct all elements and set length to zero.
Definition Array.h:143
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
Definition DVec3.h:14
+
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition Double3.h:13
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
Interface class for reading from an object stream.
Definition ObjectStream.h:42
+
virtual bool ReadPrimitiveData(Quat &outPrimitive)=0
+
virtual bool ReadDataType(EOSDataType &outType)=0
+
virtual bool ReadPrimitiveData(double &outPrimitive)=0
+
virtual bool ReadPointerData(const RTTI *inRTTI, void **inPointer, int inRefCountOffset=-1)=0
+
virtual bool ReadPrimitiveData(Vec3 &outPrimitive)=0
+
virtual bool ReadPrimitiveData(String &outPrimitive)=0
+
virtual bool ReadPrimitiveData(uint64 &outPrimitive)=0
+
virtual bool ReadIdentifier(Identifier &outIdentifier)=0
+
virtual bool ReadPrimitiveData(Float3 &outPrimitive)=0
+
virtual bool ReadPrimitiveData(uint32 &outPrimitive)=0
+
virtual bool ReadPrimitiveData(float &outPrimitive)=0
+
virtual bool ReadPrimitiveData(DMat44 &outPrimitive)=0
+
virtual bool ReadPrimitiveData(int &outPrimitive)=0
+
virtual bool ReadName(String &outName)=0
+
virtual bool ReadPrimitiveData(Mat44 &outPrimitive)=0
+
virtual bool ReadPrimitiveData(DVec3 &outPrimitive)=0
+
virtual bool ReadCount(uint32 &outCount)=0
+
virtual bool ReadPrimitiveData(uint16 &outPrimitive)=0
+
virtual bool ReadClassData(const char *inClassName, void *inInstance)=0
+
virtual bool ReadPrimitiveData(Double3 &outPrimitive)=0
+
virtual bool ReadPrimitiveData(uint8 &outPrimitive)=0
+
virtual bool ReadPrimitiveData(Vec4 &outPrimitive)=0
+
virtual bool ReadPrimitiveData(bool &outPrimitive)=0
+
Interface class for writing to an object stream.
Definition ObjectStream.h:76
+
virtual void WritePrimitiveData(const int &inPrimitive)=0
+
virtual void WritePrimitiveData(const float &inPrimitive)=0
+
virtual void WritePrimitiveData(const Vec3 &inPrimitive)=0
+
virtual void WritePointerData(const RTTI *inRTTI, const void *inPointer)=0
+
virtual void WritePrimitiveData(const DVec3 &inPrimitive)=0
+
virtual void WritePrimitiveData(const String &inPrimitive)=0
+
virtual void WritePrimitiveData(const Quat &inPrimitive)=0
+
virtual void WritePrimitiveData(const uint8 &inPrimitive)=0
+
virtual void WritePrimitiveData(const Float3 &inPrimitive)=0
+
virtual void WritePrimitiveData(const Mat44 &inPrimitive)=0
+
virtual void WritePrimitiveData(const DMat44 &inPrimitive)=0
+
virtual void WritePrimitiveData(const uint32 &inPrimitive)=0
+
virtual void WriteClassData(const RTTI *inRTTI, const void *inInstance)=0
+
virtual void WriteIdentifier(Identifier inIdentifier)=0
+
virtual void WritePrimitiveData(const Vec4 &inPrimitive)=0
+
virtual void WriteDataType(EOSDataType inType)=0
+
virtual void WriteCount(uint32 inCount)=0
+
virtual void WriteName(const char *inName)=0
+
virtual void HintNextItem()
Definition ObjectStream.h:108
+
virtual void WritePrimitiveData(const uint16 &inPrimitive)=0
+
virtual void HintIndentUp()
Definition ObjectStream.h:109
+
virtual void WritePrimitiveData(const bool &inPrimitive)=0
+
virtual void WritePrimitiveData(const double &inPrimitive)=0
+
virtual void HintIndentDown()
Definition ObjectStream.h:110
+
virtual void WritePrimitiveData(const uint64 &inPrimitive)=0
+
virtual void WritePrimitiveData(const Double3 &inPrimitive)=0
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Base class for object stream input and output streams.
Definition ObjectStream.h:19
+
uint32 Identifier
Identifier for objects.
Definition ObjectStream.h:33
+
virtual ~ObjectStream()=default
Destructor.
+
EStreamType
Stream type.
Definition ObjectStream.h:23
+
Definition Quat.h:33
+
Definition RTTI.h:122
+
Definition Reference.h:151
+
const T * GetPtr() const
Get pointer.
Definition Reference.h:185
+
void ** InternalGetPointer()
INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
Definition Reference.h:188
+
Definition Reference.h:101
+
T * GetPtr() const
Get pointer.
Definition Reference.h:129
+
void ** InternalGetPointer()
INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
Definition Reference.h:132
+
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
void clear()
Destruct all elements and set length to zero.
Definition StaticArray.h:52
+
T value_type
Definition StaticArray.h:16
+
size_type size() const
Returns amount of elements in the array.
Definition StaticArray.h:89
+
void resize(size_type inNewSize)
Resize array to new length.
Definition StaticArray.h:101
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_object_stream_binary_in_8cpp.html b/_object_stream_binary_in_8cpp.html new file mode 100644 index 000000000..145c90ca8 --- /dev/null +++ b/_object_stream_binary_in_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamBinaryIn.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamBinaryIn.cpp File Reference
+
+
+
+
+ + + + diff --git a/_object_stream_binary_in_8h.html b/_object_stream_binary_in_8h.html new file mode 100644 index 000000000..70a18e04d --- /dev/null +++ b/_object_stream_binary_in_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamBinaryIn.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamBinaryIn.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  ObjectStreamBinaryIn
 Implementation of ObjectStream binary input stream. More...
 
+
+
+ + + + diff --git a/_object_stream_binary_in_8h.js b/_object_stream_binary_in_8h.js new file mode 100644 index 000000000..72d3a7e63 --- /dev/null +++ b/_object_stream_binary_in_8h.js @@ -0,0 +1,4 @@ +var _object_stream_binary_in_8h = +[ + [ "ObjectStreamBinaryIn", "class_object_stream_binary_in.html", "class_object_stream_binary_in" ] +]; \ No newline at end of file diff --git a/_object_stream_binary_in_8h_source.html b/_object_stream_binary_in_8h_source.html new file mode 100644 index 000000000..0c8a384fb --- /dev/null +++ b/_object_stream_binary_in_8h_source.html @@ -0,0 +1,201 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamBinaryIn.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamBinaryIn.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
+
9#ifdef JPH_OBJECT_STREAM
+
10
+ +
12
+
+ +
15{
+
16public:
+ +
18
+
20 explicit ObjectStreamBinaryIn(istream &inStream);
+
21
+
23 virtual bool ReadDataType(EOSDataType &outType) override;
+
24 virtual bool ReadName(String &outName) override;
+
25 virtual bool ReadIdentifier(Identifier &outIdentifier) override;
+
26 virtual bool ReadCount(uint32 &outCount) override;
+
27
+
28 virtual bool ReadPrimitiveData(uint8 &outPrimitive) override;
+
29 virtual bool ReadPrimitiveData(uint16 &outPrimitive) override;
+
30 virtual bool ReadPrimitiveData(int &outPrimitive) override;
+
31 virtual bool ReadPrimitiveData(uint32 &outPrimitive) override;
+
32 virtual bool ReadPrimitiveData(uint64 &outPrimitive) override;
+
33 virtual bool ReadPrimitiveData(float &outPrimitive) override;
+
34 virtual bool ReadPrimitiveData(double &outPrimitive) override;
+
35 virtual bool ReadPrimitiveData(bool &outPrimitive) override;
+
36 virtual bool ReadPrimitiveData(String &outPrimitive) override;
+
37 virtual bool ReadPrimitiveData(Float3 &outPrimitive) override;
+
38 virtual bool ReadPrimitiveData(Double3 &outPrimitive) override;
+
39 virtual bool ReadPrimitiveData(Vec3 &outPrimitive) override;
+
40 virtual bool ReadPrimitiveData(DVec3 &outPrimitive) override;
+
41 virtual bool ReadPrimitiveData(Vec4 &outPrimitive) override;
+
42 virtual bool ReadPrimitiveData(Quat &outPrimitive) override;
+
43 virtual bool ReadPrimitiveData(Mat44 &outPrimitive) override;
+
44 virtual bool ReadPrimitiveData(DMat44 &outPrimitive) override;
+
45
+
46private:
+
47 using StringTable = UnorderedMap<uint32, String>;
+
48
+
49 StringTable mStringTable;
+
50 uint32 mNextStringID = 0x80000000;
+
51};
+
+
52
+ +
54
+
55#endif // JPH_OBJECT_STREAM
+
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
std::uint16_t uint16
Definition Core.h:454
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+
EOSDataType
Data type.
Definition SerializableAttribute.h:17
+
std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > > UnorderedMap
Definition UnorderedMap.h:13
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
Definition DVec3.h:14
+
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition Double3.h:13
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
virtual bool ReadDataType(EOSDataType &outType)=0
+
virtual bool ReadIdentifier(Identifier &outIdentifier)=0
+
virtual bool ReadName(String &outName)=0
+
virtual bool ReadCount(uint32 &outCount)=0
+
virtual bool ReadPrimitiveData(uint8 &outPrimitive)=0
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Implementation of ObjectStream binary input stream.
Definition ObjectStreamBinaryIn.h:15
+
uint32 Identifier
Identifier for objects.
Definition ObjectStream.h:33
+
Definition ObjectStreamIn.h:23
+
Definition Quat.h:33
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_object_stream_binary_out_8cpp.html b/_object_stream_binary_out_8cpp.html new file mode 100644 index 000000000..309207f39 --- /dev/null +++ b/_object_stream_binary_out_8cpp.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamBinaryOut.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamBinaryOut.cpp File Reference
+
+
+
+
+ + + + diff --git a/_object_stream_binary_out_8h.html b/_object_stream_binary_out_8h.html new file mode 100644 index 000000000..6109b5292 --- /dev/null +++ b/_object_stream_binary_out_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamBinaryOut.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamBinaryOut.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  ObjectStreamBinaryOut
 Implementation of ObjectStream binary output stream. More...
 
+
+
+ + + + diff --git a/_object_stream_binary_out_8h.js b/_object_stream_binary_out_8h.js new file mode 100644 index 000000000..ec9d0a065 --- /dev/null +++ b/_object_stream_binary_out_8h.js @@ -0,0 +1,4 @@ +var _object_stream_binary_out_8h = +[ + [ "ObjectStreamBinaryOut", "class_object_stream_binary_out.html", "class_object_stream_binary_out" ] +]; \ No newline at end of file diff --git a/_object_stream_binary_out_8h_source.html b/_object_stream_binary_out_8h_source.html new file mode 100644 index 000000000..4f7940f11 --- /dev/null +++ b/_object_stream_binary_out_8h_source.html @@ -0,0 +1,201 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamBinaryOut.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamBinaryOut.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
+
9#ifdef JPH_OBJECT_STREAM
+
10
+ +
12
+
+ +
15{
+
16public:
+ +
18
+
20 explicit ObjectStreamBinaryOut(ostream &inStream);
+
21
+
23 virtual void WriteDataType(EOSDataType inType) override;
+
24 virtual void WriteName(const char *inName) override;
+
25 virtual void WriteIdentifier(Identifier inIdentifier) override;
+
26 virtual void WriteCount(uint32 inCount) override;
+
27
+
28 virtual void WritePrimitiveData(const uint8 &inPrimitive) override;
+
29 virtual void WritePrimitiveData(const uint16 &inPrimitive) override;
+
30 virtual void WritePrimitiveData(const int &inPrimitive) override;
+
31 virtual void WritePrimitiveData(const uint32 &inPrimitive) override;
+
32 virtual void WritePrimitiveData(const uint64 &inPrimitive) override;
+
33 virtual void WritePrimitiveData(const float &inPrimitive) override;
+
34 virtual void WritePrimitiveData(const double &inPrimitive) override;
+
35 virtual void WritePrimitiveData(const bool &inPrimitive) override;
+
36 virtual void WritePrimitiveData(const String &inPrimitive) override;
+
37 virtual void WritePrimitiveData(const Float3 &inPrimitive) override;
+
38 virtual void WritePrimitiveData(const Double3 &inPrimitive) override;
+
39 virtual void WritePrimitiveData(const Vec3 &inPrimitive) override;
+
40 virtual void WritePrimitiveData(const DVec3 &inPrimitive) override;
+
41 virtual void WritePrimitiveData(const Vec4 &inPrimitive) override;
+
42 virtual void WritePrimitiveData(const Quat &inPrimitive) override;
+
43 virtual void WritePrimitiveData(const Mat44 &inPrimitive) override;
+
44 virtual void WritePrimitiveData(const DMat44 &inPrimitive) override;
+
45
+
46private:
+
47 using StringTable = UnorderedMap<String, uint32>;
+
48
+
49 StringTable mStringTable;
+
50 uint32 mNextStringID = 0x80000000;
+
51};
+
+
52
+ +
54
+
55#endif // JPH_OBJECT_STREAM
+
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
std::uint16_t uint16
Definition Core.h:454
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+
EOSDataType
Data type.
Definition SerializableAttribute.h:17
+
std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > > UnorderedMap
Definition UnorderedMap.h:13
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
Definition DVec3.h:14
+
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition Double3.h:13
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
virtual void WritePrimitiveData(const uint8 &inPrimitive)=0
+
virtual void WriteIdentifier(Identifier inIdentifier)=0
+
virtual void WriteDataType(EOSDataType inType)=0
+
virtual void WriteCount(uint32 inCount)=0
+
virtual void WriteName(const char *inName)=0
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Implementation of ObjectStream binary output stream.
Definition ObjectStreamBinaryOut.h:15
+
uint32 Identifier
Identifier for objects.
Definition ObjectStream.h:33
+
Definition ObjectStreamOut.h:26
+
Definition Quat.h:33
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_object_stream_in_8cpp.html b/_object_stream_in_8cpp.html new file mode 100644 index 000000000..3df931c4c --- /dev/null +++ b/_object_stream_in_8cpp.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamIn.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamIn.cpp File Reference
+
+
+
+
+ + + + diff --git a/_object_stream_in_8h.html b/_object_stream_in_8h.html new file mode 100644 index 000000000..b458369fa --- /dev/null +++ b/_object_stream_in_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamIn.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamIn.h File Reference
+
+
+
#include <Jolt/ObjectStream/ObjectStream.h>
+#include <Jolt/Core/Reference.h>
+#include <Jolt/Core/RTTI.h>
+#include <Jolt/Core/UnorderedMap.h>
+#include <fstream>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  ObjectStreamIn
 
+
+
+ + + + diff --git a/_object_stream_in_8h.js b/_object_stream_in_8h.js new file mode 100644 index 000000000..26539712c --- /dev/null +++ b/_object_stream_in_8h.js @@ -0,0 +1,4 @@ +var _object_stream_in_8h = +[ + [ "ObjectStreamIn", "class_object_stream_in.html", "class_object_stream_in" ] +]; \ No newline at end of file diff --git a/_object_stream_in_8h_source.html b/_object_stream_in_8h_source.html new file mode 100644 index 000000000..859a8e525 --- /dev/null +++ b/_object_stream_in_8h_source.html @@ -0,0 +1,292 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamIn.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamIn.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
+ + +
9#include <Jolt/Core/RTTI.h>
+ +
11
+ +
13#include <fstream>
+ +
15
+
16#ifdef JPH_OBJECT_STREAM
+
17
+ +
19
+
+ +
23{
+
24private:
+
25 struct ClassDescription;
+
26
+
27public:
+
29 template <class T>
+
+
30 static bool sReadObject(istream &inStream, T *&outObject)
+
31 {
+
32 // Create the input stream
+
33 bool result = false;
+
34 ObjectStreamIn *stream = ObjectStreamIn::Open(inStream);
+
35 if (stream)
+
36 {
+
37 // Read the object
+
38 outObject = (T *)stream->Read(JPH_RTTI(T));
+
39 result = (outObject != nullptr);
+
40 delete stream;
+
41 }
+
42 return result;
+
43 }
+
+
44
+
46 template <class T>
+
+
47 static bool sReadObject(istream &inStream, Ref<T> &outObject)
+
48 {
+
49 T *object = nullptr;
+
50 bool result = sReadObject(inStream, object);
+
51 outObject = object;
+
52 return result;
+
53 }
+
+
54
+
56 template <class T>
+
+
57 static bool sReadObject(const char *inFileName, T *&outObject)
+
58 {
+
59 std::ifstream stream;
+
60 stream.open(inFileName, std::ifstream::in | std::ifstream::binary);
+
61 if (!stream.is_open())
+
62 return false;
+
63 return sReadObject(stream, outObject);
+
64 }
+
+
65
+
67 template <class T>
+
+
68 static bool sReadObject(const char *inFileName, Ref<T> &outObject)
+
69 {
+
70 T *object = nullptr;
+
71 bool result = sReadObject(inFileName, object);
+
72 outObject = object;
+
73 return result;
+
74 }
+
+
75
+
77 // EVERYTHING BELOW THIS SHOULD NOT DIRECTLY BE CALLED
+
79
+
81 void * Read(const RTTI *inRTTI);
+
82 void * ReadObject(const RTTI *& outRTTI);
+
83 bool ReadRTTI();
+
84 virtual bool ReadClassData(const char *inClassName, void *inInstance) override;
+
85 bool ReadClassData(const ClassDescription &inClassDesc, void *inInstance);
+
86 virtual bool ReadPointerData(const RTTI *inRTTI, void **inPointer, int inRefCountOffset = -1) override;
+
87 bool SkipAttributeData(int inArrayDepth, EOSDataType inDataType, const char *inClassName);
+
88
+
89protected:
+
91 explicit ObjectStreamIn(istream &inStream);
+
92
+
94 static bool GetInfo(istream &inStream, EStreamType &outType, int &outVersion, int &outRevision);
+
95
+
97 static ObjectStreamIn * Open(istream &inStream);
+
98
+
99 istream & mStream;
+
100
+
101private:
+
103 struct AttributeDescription
+
104 {
+
105 int mArrayDepth = 0;
+
106 EOSDataType mSourceType = EOSDataType::Invalid;
+
107 EOSDataType mDestinationType = EOSDataType::Invalid;
+
108 String mClassName;
+
109 int mIndex = -1;
+
110 };
+
111
+
112 struct ClassDescription
+
113 {
+
114 ClassDescription() = default;
+
115 explicit ClassDescription(const RTTI *inRTTI) : mRTTI(inRTTI) { }
+
116
+
117 const RTTI * mRTTI = nullptr;
+
118 Array<AttributeDescription> mAttributes;
+
119 };
+
120
+
121 struct ObjectInfo
+
122 {
+
123 ObjectInfo() = default;
+
124 ObjectInfo(void *inInstance, const RTTI *inRTTI) : mInstance(inInstance), mRTTI(inRTTI) { }
+
125
+
126 void * mInstance = nullptr;
+
127 const RTTI * mRTTI = nullptr;
+
128 };
+
129
+
130 struct Link
+
131 {
+
132 void ** mPointer;
+
133 int mRefCountOffset;
+
134 Identifier mIdentifier;
+
135 const RTTI * mRTTI;
+
136 };
+
137
+
138 using IdentifierMap = UnorderedMap<Identifier, ObjectInfo>;
+
139 using ClassDescriptionMap = UnorderedMap<String, ClassDescription>;
+
140
+
141 ClassDescriptionMap mClassDescriptionMap;
+
142 IdentifierMap mIdentifierMap;
+
143 Array<Link> mUnresolvedLinks;
+
144};
+
+
145
+ +
147
+
148#endif // JPH_OBJECT_STREAM
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
#define JPH_RTTI(class_name)
Definition RTTI.h:319
+ +
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+
EOSDataType
Data type.
Definition SerializableAttribute.h:17
+
@ Invalid
Next token on the stream was not a valid data type.
+ +
std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > > UnorderedMap
Definition UnorderedMap.h:13
+
Definition Array.h:36
+
Interface class for reading from an object stream.
Definition ObjectStream.h:42
+
virtual bool ReadPointerData(const RTTI *inRTTI, void **inPointer, int inRefCountOffset=-1)=0
+
virtual bool ReadClassData(const char *inClassName, void *inInstance)=0
+
Definition ObjectStreamIn.h:23
+
static ObjectStreamIn * Open(istream &inStream)
Static constructor.
Definition ObjectStreamIn.cpp:53
+
void * Read(const RTTI *inRTTI)
Definition ObjectStreamIn.cpp:80
+
static bool sReadObject(const char *inFileName, T *&outObject)
Main function to read an object from a file.
Definition ObjectStreamIn.h:57
+
static bool sReadObject(istream &inStream, Ref< T > &outObject)
Main function to read an object from a stream (reference counting pointer version)
Definition ObjectStreamIn.h:47
+
static bool sReadObject(istream &inStream, T *&outObject)
Main function to read an object from a stream.
Definition ObjectStreamIn.h:30
+
static bool sReadObject(const char *inFileName, Ref< T > &outObject)
Main function to read an object from a file (reference counting pointer version)
Definition ObjectStreamIn.h:68
+
istream & mStream
Definition ObjectStreamIn.h:99
+
Definition RTTI.h:122
+
Definition Reference.h:101
+
+
+ + + + diff --git a/_object_stream_out_8cpp.html b/_object_stream_out_8cpp.html new file mode 100644 index 000000000..0111fc45c --- /dev/null +++ b/_object_stream_out_8cpp.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamOut.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamOut.cpp File Reference
+
+
+ + + + +

+Macros

#define JPH_DECLARE_PRIMITIVE(name)   mClassSet.insert(JPH_RTTI(name));
 
+

Macro Definition Documentation

+ +

◆ JPH_DECLARE_PRIMITIVE

+ +
+
+ + + + + + + + +
#define JPH_DECLARE_PRIMITIVE( name)   mClassSet.insert(JPH_RTTI(name));
+
+ +
+
+
+
+ + + + diff --git a/_object_stream_out_8cpp.js b/_object_stream_out_8cpp.js new file mode 100644 index 000000000..1e6ef5f3a --- /dev/null +++ b/_object_stream_out_8cpp.js @@ -0,0 +1,4 @@ +var _object_stream_out_8cpp = +[ + [ "JPH_DECLARE_PRIMITIVE", "_object_stream_out_8cpp.html#a7d32f5239cd276fd0012072a2a4ccd23", null ] +]; \ No newline at end of file diff --git a/_object_stream_out_8h.html b/_object_stream_out_8h.html new file mode 100644 index 000000000..33a7de919 --- /dev/null +++ b/_object_stream_out_8h.html @@ -0,0 +1,154 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamOut.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamOut.h File Reference
+
+
+
#include <Jolt/ObjectStream/ObjectStream.h>
+#include <Jolt/Core/RTTI.h>
+#include <Jolt/Core/UnorderedMap.h>
+#include <Jolt/Core/UnorderedSet.h>
+#include <queue>
+#include <fstream>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  ObjectStreamOut
 
+ + + + +

+Typedefs

template<class T >
using Queue = std::queue< T, std::deque< T, STLAllocator< T > > >
 
+

Typedef Documentation

+ +

◆ Queue

+ +
+
+
+template<class T >
+ + + + +
using Queue = std::queue<T, std::deque<T, STLAllocator<T> >>
+
+ +
+
+
+
+ + + + diff --git a/_object_stream_out_8h.js b/_object_stream_out_8h.js new file mode 100644 index 000000000..a0c095692 --- /dev/null +++ b/_object_stream_out_8h.js @@ -0,0 +1,5 @@ +var _object_stream_out_8h = +[ + [ "ObjectStreamOut", "class_object_stream_out.html", "class_object_stream_out" ], + [ "Queue", "_object_stream_out_8h.html#a8f038f537072acfa4f7da0fc8aa2c22b", null ] +]; \ No newline at end of file diff --git a/_object_stream_out_8h_source.html b/_object_stream_out_8h_source.html new file mode 100644 index 000000000..c802694f5 --- /dev/null +++ b/_object_stream_out_8h_source.html @@ -0,0 +1,244 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamOut.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamOut.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#include <Jolt/Core/RTTI.h>
+ + +
11
+ +
13#include <queue>
+
14#include <fstream>
+ +
16
+
17#ifdef JPH_OBJECT_STREAM
+
18
+ +
20
+
21template <class T> using Queue = std::queue<T, std::deque<T, STLAllocator<T>>>;
+
22
+
+ +
26{
+
27private:
+
28 struct ObjectInfo;
+
29
+
30public:
+
32 template <class T>
+
+
33 static bool sWriteObject(ostream &inStream, ObjectStream::EStreamType inType, const T &inObject)
+
34 {
+
35 // Create the output stream
+
36 bool result = false;
+
37 ObjectStreamOut *stream = ObjectStreamOut::Open(inType, inStream);
+
38 if (stream)
+
39 {
+
40 // Write the object to the stream
+
41 result = stream->Write((void *)&inObject, GetRTTI(&inObject));
+
42 delete stream;
+
43 }
+
44
+
45 return result;
+
46 }
+
+
47
+
49 template <class T>
+
+
50 static bool sWriteObject(const char *inFileName, ObjectStream::EStreamType inType, const T &inObject)
+
51 {
+
52 std::ofstream stream;
+
53 stream.open(inFileName, std::ofstream::out | std::ofstream::trunc | std::ofstream::binary);
+
54 if (!stream.is_open())
+
55 return false;
+
56 return sWriteObject(stream, inType, inObject);
+
57 }
+
+
58
+
60 // EVERYTHING BELOW THIS SHOULD NOT DIRECTLY BE CALLED
+
62
+
64 bool Write(const void *inObject, const RTTI *inRTTI);
+
65 void WriteObject(const void *inObject);
+
66 void QueueRTTI(const RTTI *inRTTI);
+
67 void WriteRTTI(const RTTI *inRTTI);
+
68 virtual void WriteClassData(const RTTI *inRTTI, const void *inInstance) override;
+
69 virtual void WritePointerData(const RTTI *inRTTI, const void *inPointer) override;
+
70
+
71protected:
+
73 static ObjectStreamOut * Open(EStreamType inType, ostream &inStream);
+
74
+
76 explicit ObjectStreamOut(ostream &inStream);
+
77
+
78 ostream & mStream;
+
79
+
80private:
+
81 struct ObjectInfo
+
82 {
+
83 ObjectInfo() : mIdentifier(0), mRTTI(nullptr) { }
+
84 ObjectInfo(Identifier inIdentifier, const RTTI *inRTTI) : mIdentifier(inIdentifier), mRTTI(inRTTI) { }
+
85
+
86 Identifier mIdentifier;
+
87 const RTTI * mRTTI;
+
88 };
+
89
+
90 using IdentifierMap = UnorderedMap<const void *, ObjectInfo>;
+
91 using ClassSet = UnorderedSet<const RTTI *>;
+
92 using ObjectQueue = Queue<const void *>;
+
93 using ClassQueue = Queue<const RTTI *>;
+
94
+
95 Identifier mNextIdentifier = sNullIdentifier + 1;
+
96 IdentifierMap mIdentifierMap;
+
97 ObjectQueue mObjectQueue;
+
98 ClassSet mClassSet;
+
99 ClassQueue mClassQueue;
+
100};
+
+
101
+ +
103
+
104#endif // JPH_OBJECT_STREAM
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
std::queue< T, std::deque< T, STLAllocator< T > > > Queue
Definition ObjectStreamOut.h:21
+ + +
std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > > UnorderedMap
Definition UnorderedMap.h:13
+ +
std::unordered_set< Key, Hash, KeyEqual, STLAllocator< Key > > UnorderedSet
Definition UnorderedSet.h:13
+
Interface class for writing to an object stream.
Definition ObjectStream.h:76
+
virtual void WritePointerData(const RTTI *inRTTI, const void *inPointer)=0
+
virtual void WriteClassData(const RTTI *inRTTI, const void *inInstance)=0
+
uint32 Identifier
Identifier for objects.
Definition ObjectStream.h:33
+
EStreamType
Stream type.
Definition ObjectStream.h:23
+
Definition ObjectStreamOut.h:26
+
bool Write(const void *inObject, const RTTI *inRTTI)
Definition ObjectStreamOut.cpp:35
+
static bool sWriteObject(const char *inFileName, ObjectStream::EStreamType inType, const T &inObject)
Main function to write an object to a file.
Definition ObjectStreamOut.h:50
+
static bool sWriteObject(ostream &inStream, ObjectStream::EStreamType inType, const T &inObject)
Main function to write an object to a stream.
Definition ObjectStreamOut.h:33
+
static ObjectStreamOut * Open(EStreamType inType, ostream &inStream)
Static constructor.
Definition ObjectStreamOut.cpp:24
+
ostream & mStream
Definition ObjectStreamOut.h:78
+
Definition RTTI.h:122
+
+
+ + + + diff --git a/_object_stream_text_in_8cpp.html b/_object_stream_text_in_8cpp.html new file mode 100644 index 000000000..5e82d0134 --- /dev/null +++ b/_object_stream_text_in_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamTextIn.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamTextIn.cpp File Reference
+
+
+
+
+ + + + diff --git a/_object_stream_text_in_8h.html b/_object_stream_text_in_8h.html new file mode 100644 index 000000000..eb5969689 --- /dev/null +++ b/_object_stream_text_in_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamTextIn.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamTextIn.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  ObjectStreamTextIn
 Implementation of ObjectStream text input stream. More...
 
+
+
+ + + + diff --git a/_object_stream_text_in_8h.js b/_object_stream_text_in_8h.js new file mode 100644 index 000000000..6cb5e028d --- /dev/null +++ b/_object_stream_text_in_8h.js @@ -0,0 +1,4 @@ +var _object_stream_text_in_8h = +[ + [ "ObjectStreamTextIn", "class_object_stream_text_in.html", "class_object_stream_text_in" ] +]; \ No newline at end of file diff --git a/_object_stream_text_in_8h_source.html b/_object_stream_text_in_8h_source.html new file mode 100644 index 000000000..9ed978557 --- /dev/null +++ b/_object_stream_text_in_8h_source.html @@ -0,0 +1,198 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamTextIn.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamTextIn.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
+
9#ifdef JPH_OBJECT_STREAM
+
10
+ +
12
+
+ +
15{
+
16public:
+ +
18
+
20 explicit ObjectStreamTextIn(istream &inStream);
+
21
+
23 virtual bool ReadDataType(EOSDataType &outType) override;
+
24 virtual bool ReadName(String &outName) override;
+
25 virtual bool ReadIdentifier(Identifier &outIdentifier) override;
+
26 virtual bool ReadCount(uint32 &outCount) override;
+
27
+
28 virtual bool ReadPrimitiveData(uint8 &outPrimitive) override;
+
29 virtual bool ReadPrimitiveData(uint16 &outPrimitive) override;
+
30 virtual bool ReadPrimitiveData(int &outPrimitive) override;
+
31 virtual bool ReadPrimitiveData(uint32 &outPrimitive) override;
+
32 virtual bool ReadPrimitiveData(uint64 &outPrimitive) override;
+
33 virtual bool ReadPrimitiveData(float &outPrimitive) override;
+
34 virtual bool ReadPrimitiveData(double &outPrimitive) override;
+
35 virtual bool ReadPrimitiveData(bool &outPrimitive) override;
+
36 virtual bool ReadPrimitiveData(String &outPrimitive) override;
+
37 virtual bool ReadPrimitiveData(Float3 &outPrimitive) override;
+
38 virtual bool ReadPrimitiveData(Double3 &outPrimitive) override;
+
39 virtual bool ReadPrimitiveData(Vec3 &outPrimitive) override;
+
40 virtual bool ReadPrimitiveData(DVec3 &outPrimitive) override;
+
41 virtual bool ReadPrimitiveData(Vec4 &outPrimitive) override;
+
42 virtual bool ReadPrimitiveData(Quat &outPrimitive) override;
+
43 virtual bool ReadPrimitiveData(Mat44 &outPrimitive) override;
+
44 virtual bool ReadPrimitiveData(DMat44 &outPrimitive) override;
+
45
+
46private:
+
47 bool ReadChar(char &outChar);
+
48 bool ReadWord(String &outWord);
+
49};
+
+
50
+ +
52
+
53#endif // JPH_OBJECT_STREAM
+
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
std::uint16_t uint16
Definition Core.h:454
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+
EOSDataType
Data type.
Definition SerializableAttribute.h:17
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
Definition DVec3.h:14
+
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition Double3.h:13
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
virtual bool ReadDataType(EOSDataType &outType)=0
+
virtual bool ReadIdentifier(Identifier &outIdentifier)=0
+
virtual bool ReadName(String &outName)=0
+
virtual bool ReadCount(uint32 &outCount)=0
+
virtual bool ReadPrimitiveData(uint8 &outPrimitive)=0
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
uint32 Identifier
Identifier for objects.
Definition ObjectStream.h:33
+
Definition ObjectStreamIn.h:23
+
Implementation of ObjectStream text input stream.
Definition ObjectStreamTextIn.h:15
+
Definition Quat.h:33
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_object_stream_text_out_8cpp.html b/_object_stream_text_out_8cpp.html new file mode 100644 index 000000000..68bb89324 --- /dev/null +++ b/_object_stream_text_out_8cpp.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamTextOut.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamTextOut.cpp File Reference
+
+
+
+
+ + + + diff --git a/_object_stream_text_out_8h.html b/_object_stream_text_out_8h.html new file mode 100644 index 000000000..e74037e17 --- /dev/null +++ b/_object_stream_text_out_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamTextOut.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamTextOut.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  ObjectStreamTextOut
 Implementation of ObjectStream text output stream. More...
 
+
+
+ + + + diff --git a/_object_stream_text_out_8h.js b/_object_stream_text_out_8h.js new file mode 100644 index 000000000..3063e7761 --- /dev/null +++ b/_object_stream_text_out_8h.js @@ -0,0 +1,4 @@ +var _object_stream_text_out_8h = +[ + [ "ObjectStreamTextOut", "class_object_stream_text_out.html", "class_object_stream_text_out" ] +]; \ No newline at end of file diff --git a/_object_stream_text_out_8h_source.html b/_object_stream_text_out_8h_source.html new file mode 100644 index 000000000..0fa6dd1b4 --- /dev/null +++ b/_object_stream_text_out_8h_source.html @@ -0,0 +1,207 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamTextOut.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamTextOut.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
+
9#ifdef JPH_OBJECT_STREAM
+
10
+ +
12
+
+ +
15{
+
16public:
+ +
18
+
20 explicit ObjectStreamTextOut(ostream &inStream);
+
21
+
23 virtual void WriteDataType(EOSDataType inType) override;
+
24 virtual void WriteName(const char *inName) override;
+
25 virtual void WriteIdentifier(Identifier inIdentifier) override;
+
26 virtual void WriteCount(uint32 inCount) override;
+
27
+
28 virtual void WritePrimitiveData(const uint8 &inPrimitive) override;
+
29 virtual void WritePrimitiveData(const uint16 &inPrimitive) override;
+
30 virtual void WritePrimitiveData(const int &inPrimitive) override;
+
31 virtual void WritePrimitiveData(const uint32 &inPrimitive) override;
+
32 virtual void WritePrimitiveData(const uint64 &inPrimitive) override;
+
33 virtual void WritePrimitiveData(const float &inPrimitive) override;
+
34 virtual void WritePrimitiveData(const double &inPrimitive) override;
+
35 virtual void WritePrimitiveData(const bool &inPrimitive) override;
+
36 virtual void WritePrimitiveData(const String &inPrimitive) override;
+
37 virtual void WritePrimitiveData(const Float3 &inPrimitive) override;
+
38 virtual void WritePrimitiveData(const Double3 &inPrimitive) override;
+
39 virtual void WritePrimitiveData(const Vec3 &inPrimitive) override;
+
40 virtual void WritePrimitiveData(const DVec3 &inPrimitive) override;
+
41 virtual void WritePrimitiveData(const Vec4 &inPrimitive) override;
+
42 virtual void WritePrimitiveData(const Quat &inPrimitive) override;
+
43 virtual void WritePrimitiveData(const Mat44 &inPrimitive) override;
+
44 virtual void WritePrimitiveData(const DMat44 &inPrimitive) override;
+
45
+
47 virtual void HintNextItem() override;
+
48 virtual void HintIndentUp() override;
+
49 virtual void HintIndentDown() override;
+
50
+
51private:
+
52 void WriteChar(char inChar);
+
53 void WriteWord(const string_view &inWord);
+
54
+
55 int mIndentation = 0;
+
56};
+
+
57
+ +
59
+
60#endif // JPH_OBJECT_STREAM
+
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
std::uint16_t uint16
Definition Core.h:454
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+
EOSDataType
Data type.
Definition SerializableAttribute.h:17
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
Definition DVec3.h:14
+
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition Double3.h:13
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
virtual void WritePrimitiveData(const uint8 &inPrimitive)=0
+
virtual void WriteIdentifier(Identifier inIdentifier)=0
+
virtual void WriteDataType(EOSDataType inType)=0
+
virtual void WriteCount(uint32 inCount)=0
+
virtual void WriteName(const char *inName)=0
+
virtual void HintNextItem()
Definition ObjectStream.h:108
+
virtual void HintIndentUp()
Definition ObjectStream.h:109
+
virtual void HintIndentDown()
Definition ObjectStream.h:110
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
uint32 Identifier
Identifier for objects.
Definition ObjectStream.h:33
+
Definition ObjectStreamOut.h:26
+
Implementation of ObjectStream text output stream.
Definition ObjectStreamTextOut.h:15
+
Definition Quat.h:33
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_object_stream_types_8h.html b/_object_stream_types_8h.html new file mode 100644 index 000000000..fffb3fbb9 --- /dev/null +++ b/_object_stream_types_8h.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamTypes.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamTypes.h File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_object_stream_types_8h_source.html b/_object_stream_types_8h_source.html new file mode 100644 index 000000000..ad248efeb --- /dev/null +++ b/_object_stream_types_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/ObjectStreamTypes.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamTypes.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// Note: Order is important, an enum is created and its value is stored in a binary stream!
+ + + + + + + + + + + + + + + + + +
23
+
24#undef JPH_DECLARE_PRIMITIVE
+
std::uint8_t uint8
Definition Core.h:453
+
std::uint64_t uint64
Definition Core.h:456
+
std::uint32_t uint32
Definition Core.h:455
+
std::uint16_t uint16
Definition Core.h:454
+
#define JPH_DECLARE_PRIMITIVE(name)
Definition ObjectStream.cpp:14
+
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
Definition DVec3.h:14
+
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition Double3.h:13
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.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 Quat.h:33
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_object_vs_broad_phase_layer_filter_mask_8h.html b/_object_vs_broad_phase_layer_filter_mask_8h.html new file mode 100644 index 000000000..2f64ede48 --- /dev/null +++ b/_object_vs_broad_phase_layer_filter_mask_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterMask.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectVsBroadPhaseLayerFilterMask.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  ObjectVsBroadPhaseLayerFilterMask
 
+
+
+ + + + diff --git a/_object_vs_broad_phase_layer_filter_mask_8h.js b/_object_vs_broad_phase_layer_filter_mask_8h.js new file mode 100644 index 000000000..7034ed8ce --- /dev/null +++ b/_object_vs_broad_phase_layer_filter_mask_8h.js @@ -0,0 +1,4 @@ +var _object_vs_broad_phase_layer_filter_mask_8h = +[ + [ "ObjectVsBroadPhaseLayerFilterMask", "class_object_vs_broad_phase_layer_filter_mask.html", "class_object_vs_broad_phase_layer_filter_mask" ] +]; \ No newline at end of file diff --git a/_object_vs_broad_phase_layer_filter_mask_8h_source.html b/_object_vs_broad_phase_layer_filter_mask_8h_source.html new file mode 100644 index 000000000..060c46f2e --- /dev/null +++ b/_object_vs_broad_phase_layer_filter_mask_8h_source.html @@ -0,0 +1,168 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterMask.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectVsBroadPhaseLayerFilterMask.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+
+ +
14{
+
15public:
+ +
17
+
+ +
20 mBroadPhaseLayerInterface(inBroadPhaseLayerInterface)
+
21 {
+
22 }
+
+
23
+
+
25 virtual bool ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const override
+
26 {
+
27 // Just defer to BroadPhaseLayerInterface
+
28 return mBroadPhaseLayerInterface.ShouldCollide(inLayer1, inLayer2);
+
29 }
+
+
30
+
31private:
+
32 const BroadPhaseLayerInterfaceMask &mBroadPhaseLayerInterface;
+
33};
+
+
34
+ + +
#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
+
uint16 ObjectLayer
Definition ObjectLayer.h:16
+
Definition BroadPhaseLayer.h:18
+
Definition BroadPhaseLayerInterfaceMask.h:18
+
bool ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const
Returns true if an object layer should collide with a broadphase layer, this function is being called...
Definition BroadPhaseLayerInterfaceMask.h:59
+
Class to test if an object can collide with a broadphase layer. Used while finding collision pairs.
Definition BroadPhaseLayer.h:80
+
Definition ObjectVsBroadPhaseLayerFilterMask.h:14
+
JPH_OVERRIDE_NEW_DELETE ObjectVsBroadPhaseLayerFilterMask(const BroadPhaseLayerInterfaceMask &inBroadPhaseLayerInterface)
Constructor.
Definition ObjectVsBroadPhaseLayerFilterMask.h:19
+
virtual bool ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const override
Returns true if an object layer should collide with a broadphase layer.
Definition ObjectVsBroadPhaseLayerFilterMask.h:25
+
+
+ + + + diff --git a/_object_vs_broad_phase_layer_filter_table_8h.html b/_object_vs_broad_phase_layer_filter_table_8h.html new file mode 100644 index 000000000..1ac1c618c --- /dev/null +++ b/_object_vs_broad_phase_layer_filter_table_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterTable.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectVsBroadPhaseLayerFilterTable.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  ObjectVsBroadPhaseLayerFilterTable
 
+
+
+ + + + diff --git a/_object_vs_broad_phase_layer_filter_table_8h.js b/_object_vs_broad_phase_layer_filter_table_8h.js new file mode 100644 index 000000000..0b66563b0 --- /dev/null +++ b/_object_vs_broad_phase_layer_filter_table_8h.js @@ -0,0 +1,4 @@ +var _object_vs_broad_phase_layer_filter_table_8h = +[ + [ "ObjectVsBroadPhaseLayerFilterTable", "class_object_vs_broad_phase_layer_filter_table.html", "class_object_vs_broad_phase_layer_filter_table" ] +]; \ No newline at end of file diff --git a/_object_vs_broad_phase_layer_filter_table_8h_source.html b/_object_vs_broad_phase_layer_filter_table_8h_source.html new file mode 100644 index 000000000..798b4475b --- /dev/null +++ b/_object_vs_broad_phase_layer_filter_table_8h_source.html @@ -0,0 +1,201 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterTable.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectVsBroadPhaseLayerFilterTable.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+
+ +
14{
+
15private:
+
17 uint GetBit(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const
+
18 {
+
19 // Calculate at which bit the entry for this pair resides
+
20 return inLayer1 * mNumBroadPhaseLayers + (BroadPhaseLayer::Type)inLayer2;
+
21 }
+
22
+
23public:
+ +
25
+
+
31 ObjectVsBroadPhaseLayerFilterTable(const BroadPhaseLayerInterface &inBroadPhaseLayerInterface, uint inNumBroadPhaseLayers, const ObjectLayerPairFilter &inObjectLayerPairFilter, uint inNumObjectLayers) :
+
32 mNumBroadPhaseLayers(inNumBroadPhaseLayers)
+
33 {
+
34 // Resize table and set all entries to false
+
35 mTable.resize((inNumBroadPhaseLayers * inNumObjectLayers + 7) / 8, 0);
+
36
+
37 // Loop over all object layer pairs
+
38 for (ObjectLayer o1 = 0; o1 < inNumObjectLayers; ++o1)
+
39 for (ObjectLayer o2 = 0; o2 < inNumObjectLayers; ++o2)
+
40 {
+
41 // Get the broad phase layer for the second object layer
+
42 BroadPhaseLayer b2 = inBroadPhaseLayerInterface.GetBroadPhaseLayer(o2);
+
43 JPH_ASSERT((BroadPhaseLayer::Type)b2 < inNumBroadPhaseLayers);
+
44
+
45 // If the object layers collide then so should the object and broadphase layer
+
46 if (inObjectLayerPairFilter.ShouldCollide(o1, o2))
+
47 {
+
48 uint bit = GetBit(o1, b2);
+
49 mTable[bit >> 3] |= 1 << (bit & 0b111);
+
50 }
+
51 }
+
52 }
+
+
53
+
+
55 virtual bool ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const override
+
56 {
+
57 uint bit = GetBit(inLayer1, inLayer2);
+
58 return (mTable[bit >> 3] & (1 << (bit & 0b111))) != 0;
+
59 }
+
+
60
+
61private:
+
62 uint mNumBroadPhaseLayers;
+
63 Array<uint8> mTable;
+
64};
+
+
65
+ + +
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_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
uint16 ObjectLayer
Definition ObjectLayer.h:16
+
Definition Array.h:36
+
void resize(size_type inNewSize)
Resize array to new length.
Definition Array.h:118
+
Definition BroadPhaseLayer.h:18
+
uint8 Type
Definition BroadPhaseLayer.h:20
+
Interface that the application should implement to allow mapping object layers to broadphase layers.
Definition BroadPhaseLayer.h:61
+
virtual BroadPhaseLayer GetBroadPhaseLayer(ObjectLayer inLayer) const =0
Convert an object layer to the corresponding broadphase layer.
+
Filter class to test if two objects can collide based on their object layer. Used while finding colli...
Definition ObjectLayer.h:50
+
virtual bool ShouldCollide(ObjectLayer inLayer1, ObjectLayer inLayer2) const
Returns true if two layers can collide.
Definition ObjectLayer.h:56
+
Class to test if an object can collide with a broadphase layer. Used while finding collision pairs.
Definition BroadPhaseLayer.h:80
+
Definition ObjectVsBroadPhaseLayerFilterTable.h:14
+
JPH_OVERRIDE_NEW_DELETE ObjectVsBroadPhaseLayerFilterTable(const BroadPhaseLayerInterface &inBroadPhaseLayerInterface, uint inNumBroadPhaseLayers, const ObjectLayerPairFilter &inObjectLayerPairFilter, uint inNumObjectLayers)
Definition ObjectVsBroadPhaseLayerFilterTable.h:31
+
virtual bool ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const override
Returns true if an object layer should collide with a broadphase layer.
Definition ObjectVsBroadPhaseLayerFilterTable.h:55
+
+
+ + + + diff --git a/_offset_center_of_mass_shape_8cpp.html b/_offset_center_of_mass_shape_8cpp.html new file mode 100644 index 000000000..999d8500a --- /dev/null +++ b/_offset_center_of_mass_shape_8cpp.html @@ -0,0 +1,150 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
OffsetCenterOfMassShape.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (OffsetCenterOfMassShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (OffsetCenterOfMassShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_offset_center_of_mass_shape_8cpp.js b/_offset_center_of_mass_shape_8cpp.js new file mode 100644 index 000000000..4d9f487a4 --- /dev/null +++ b/_offset_center_of_mass_shape_8cpp.js @@ -0,0 +1,4 @@ +var _offset_center_of_mass_shape_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_offset_center_of_mass_shape_8cpp.html#ad754d091ac34e946817ffb47e030bbf5", null ] +]; \ No newline at end of file diff --git a/_offset_center_of_mass_shape_8h.html b/_offset_center_of_mass_shape_8h.html new file mode 100644 index 000000000..9fd610619 --- /dev/null +++ b/_offset_center_of_mass_shape_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
OffsetCenterOfMassShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  OffsetCenterOfMassShapeSettings
 Class that constructs an OffsetCenterOfMassShape. More...
 
class  OffsetCenterOfMassShape
 This shape will shift the center of mass of a child shape, it can e.g. be used to lower the center of mass of an unstable object like a boat to make it stable. More...
 
+
+
+ + + + diff --git a/_offset_center_of_mass_shape_8h.js b/_offset_center_of_mass_shape_8h.js new file mode 100644 index 000000000..2370cbb72 --- /dev/null +++ b/_offset_center_of_mass_shape_8h.js @@ -0,0 +1,5 @@ +var _offset_center_of_mass_shape_8h = +[ + [ "OffsetCenterOfMassShapeSettings", "class_offset_center_of_mass_shape_settings.html", "class_offset_center_of_mass_shape_settings" ], + [ "OffsetCenterOfMassShape", "class_offset_center_of_mass_shape.html", "class_offset_center_of_mass_shape" ] +]; \ No newline at end of file diff --git a/_offset_center_of_mass_shape_8h_source.html b/_offset_center_of_mass_shape_8h_source.html new file mode 100644 index 000000000..b7c63dbcd --- /dev/null +++ b/_offset_center_of_mass_shape_8h_source.html @@ -0,0 +1,317 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OffsetCenterOfMassShape.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
+ +
12
+
+ +
15{
+
16public:
+ +
18
+
19
+ +
21
+
23 OffsetCenterOfMassShapeSettings(Vec3Arg inOffset, const ShapeSettings *inShape) : DecoratedShapeSettings(inShape), mOffset(inOffset) { }
+
24
+
26 OffsetCenterOfMassShapeSettings(Vec3Arg inOffset, const Shape *inShape): DecoratedShapeSettings(inShape), mOffset(inOffset) { }
+
27
+
28 // See: ShapeSettings
+
29 virtual ShapeResult Create() const override;
+
30
+ +
32};
+
+
33
+
+ +
36{
+
37public:
+ +
39
+ +
42 OffsetCenterOfMassShape(const OffsetCenterOfMassShapeSettings &inSettings, ShapeResult &outResult);
+
43 OffsetCenterOfMassShape(const Shape *inShape, Vec3Arg inOffset) : DecoratedShape(EShapeSubType::OffsetCenterOfMass, inShape), mOffset(inOffset) { }
+
44
+
46 Vec3 GetOffset() const { return mOffset; }
+
47
+
48 // See Shape::GetCenterOfMass
+
49 virtual Vec3 GetCenterOfMass() const override { return mInnerShape->GetCenterOfMass() + mOffset; }
+
50
+
51 // See Shape::GetLocalBounds
+
52 virtual AABox GetLocalBounds() const override;
+
53
+
54 // See Shape::GetWorldSpaceBounds
+
55 virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+ +
57
+
58 // See Shape::GetInnerRadius
+
59 virtual float GetInnerRadius() const override { return mInnerShape->GetInnerRadius(); }
+
60
+
61 // See Shape::GetMassProperties
+
+
62 virtual MassProperties GetMassProperties() const override
+
63 {
+
64 MassProperties mp = mInnerShape->GetMassProperties();
+
65 mp.Translate(mOffset);
+
66 return mp;
+
67 }
+
+
68
+
69 // See Shape::GetSubShapeTransformedShape
+
70 virtual TransformedShape GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const override;
+
71
+
72 // See Shape::GetSurfaceNormal
+
73 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
74
+
75 // See Shape::GetSupportingFace
+
76 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
77
+
78 // See Shape::GetSubmergedVolume
+
79 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override;
+
80
+
81#ifdef JPH_DEBUG_RENDERER
+
82 // See Shape::Draw
+
83 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
84
+
85 // See Shape::DrawGetSupportFunction
+
86 virtual void DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override;
+
87
+
88 // See Shape::DrawGetSupportingFace
+
89 virtual void DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+
90#endif // JPH_DEBUG_RENDERER
+
91
+
92 // See Shape::CastRay
+
93 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
94 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
95
+
96 // See: Shape::CollidePoint
+
97 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
98
+
99 // See: Shape::CollideSoftBodyVertices
+
100 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
101
+
102 // See Shape::CollectTransformedShapes
+
103 virtual void CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const override;
+
104
+
105 // See Shape::TransformShape
+
106 virtual void TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const override;
+
107
+
108 // See Shape::GetTrianglesStart
+
109 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override { JPH_ASSERT(false, "Cannot call on non-leaf shapes, use CollectTransformedShapes to collect the leaves first!"); }
+
110
+
111 // See Shape::GetTrianglesNext
+
112 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override { JPH_ASSERT(false, "Cannot call on non-leaf shapes, use CollectTransformedShapes to collect the leaves first!"); return 0; }
+
113
+
114 // See Shape
+
115 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
116
+
117 // See Shape::GetStats
+
118 virtual Stats GetStats() const override { return Stats(sizeof(*this), 0); }
+
119
+
120 // See Shape::GetVolume
+
121 virtual float GetVolume() const override { return mInnerShape->GetVolume(); }
+
122
+
123 // Register shape functions with the registry
+
124 static void sRegister();
+
125
+
126protected:
+
127 // See: Shape::RestoreBinaryState
+
128 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
129
+
130private:
+
131 // Helper functions called by CollisionDispatch
+
132 static void sCollideOffsetCenterOfMassVsShape(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);
+
133 static void sCollideShapeVsOffsetCenterOfMass(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);
+
134 static void sCastOffsetCenterOfMassVsShape(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
135 static void sCastShapeVsOffsetCenterOfMass(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
136
+
137 Vec3 mOffset;
+
138};
+
+
139
+ +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_IF_DEBUG_RENDERER(...)
Definition Core.h:536
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#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:76
+ +
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
+
Definition DebugRenderer.h:47
+
Base class for shapes that decorate another shape with extra functionality (e.g. scale,...
Definition DecoratedShape.h:29
+
Class that constructs a DecoratedShape.
Definition DecoratedShape.h:13
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
Describes the mass and inertia properties of a body. Used during body construction only.
Definition MassProperties.h:16
+
void Translate(Vec3Arg inTranslation)
Translate the inertia by a vector inTranslation.
Definition MassProperties.cpp:162
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
This shape will shift the center of mass of a child shape, it can e.g. be used to lower the center of...
Definition OffsetCenterOfMassShape.h:36
+
virtual float GetInnerRadius() const override
Definition OffsetCenterOfMassShape.h:59
+
Vec3 GetOffset() const
Access the offset that is applied to the center of mass.
Definition OffsetCenterOfMassShape.h:46
+
JPH_OVERRIDE_NEW_DELETE OffsetCenterOfMassShape()
Constructor.
Definition OffsetCenterOfMassShape.h:41
+
virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
Definition OffsetCenterOfMassShape.h:112
+
OffsetCenterOfMassShape(const Shape *inShape, Vec3Arg inOffset)
Definition OffsetCenterOfMassShape.h:43
+
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition OffsetCenterOfMassShape.h:118
+
virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
Definition OffsetCenterOfMassShape.h:109
+
virtual float GetVolume() const override
Definition OffsetCenterOfMassShape.h:121
+
virtual Vec3 GetCenterOfMass() const override
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition OffsetCenterOfMassShape.h:49
+
virtual MassProperties GetMassProperties() const override
Calculate the mass and inertia of this shape.
Definition OffsetCenterOfMassShape.h:62
+
Class that constructs an OffsetCenterOfMassShape.
Definition OffsetCenterOfMassShape.h:15
+
Vec3 mOffset
Offset to be applied to the center of mass of the child shape.
Definition OffsetCenterOfMassShape.h:31
+
OffsetCenterOfMassShapeSettings(Vec3Arg inOffset, const Shape *inShape)
Variant that uses a concrete shape, which means this object cannot be serialized.
Definition OffsetCenterOfMassShape.h:26
+
Definition PhysicsMaterial.h:23
+
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
Definition Quat.h:33
+
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:184
+
virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
Definition Shape.h:220
+
Definition Shape.h:145
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
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 TransformedShape.h:26
+
Definition Vec3.h:17
+
Definition RayCast.h:47
+
An opaque buffer that holds shape specific information during GetTrianglesStart/Next.
Definition Shape.h:348
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_oriented_box_8cpp.html b/_oriented_box_8cpp.html new file mode 100644 index 000000000..9e7aa3c67 --- /dev/null +++ b/_oriented_box_8cpp.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/OrientedBox.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OrientedBox.cpp File Reference
+
+
+
+
+ + + + diff --git a/_oriented_box_8h.html b/_oriented_box_8h.html new file mode 100644 index 000000000..f138be4ee --- /dev/null +++ b/_oriented_box_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/OrientedBox.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
OrientedBox.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  OrientedBox
 Oriented box. More...
 
+
+
+ + + + diff --git a/_oriented_box_8h.js b/_oriented_box_8h.js new file mode 100644 index 000000000..0063c9598 --- /dev/null +++ b/_oriented_box_8h.js @@ -0,0 +1,4 @@ +var _oriented_box_8h = +[ + [ "OrientedBox", "class_oriented_box.html", "class_oriented_box" ] +]; \ No newline at end of file diff --git a/_oriented_box_8h_source.html b/_oriented_box_8h_source.html new file mode 100644 index 000000000..b1a53bb9b --- /dev/null +++ b/_oriented_box_8h_source.html @@ -0,0 +1,172 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/OrientedBox.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OrientedBox.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
+ + + +
10#include <Jolt/Math/Mat44.h>
+
11
+ +
13
+
14class AABox;
+
15
+
+ +
18{
+
19public:
+ +
21
+
23 OrientedBox() = default;
+
24 OrientedBox(Mat44Arg inOrientation, Vec3Arg inHalfExtents) : mOrientation(inOrientation), mHalfExtents(inHalfExtents) { }
+
25
+
27 OrientedBox(Mat44Arg inOrientation, const AABox &inBox) : OrientedBox(inOrientation.PreTranslated(inBox.GetCenter()), inBox.GetExtent()) { }
+
28
+
30 bool Overlaps(const AABox &inBox, float inEpsilon = 1.0e-6f) const;
+
31
+
33 bool Overlaps(const OrientedBox &inBox, float inEpsilon = 1.0e-6f) const;
+
34
+ + +
37};
+
+
38
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_EXPORT_GCC_BUG_WORKAROUND
Definition Core.h:240
+
#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
+ +
Axis aligned box.
Definition AABox.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
+
Oriented box.
Definition OrientedBox.h:18
+
Mat44 mOrientation
Transform that positions and rotates the local space axis aligned box into world space.
Definition OrientedBox.h:35
+
OrientedBox(Mat44Arg inOrientation, Vec3Arg inHalfExtents)
Definition OrientedBox.h:24
+
OrientedBox(Mat44Arg inOrientation, const AABox &inBox)
Construct from axis aligned box and transform. Only works for rotation/translation matrix (no scaling...
Definition OrientedBox.h:27
+
JPH_OVERRIDE_NEW_DELETE OrientedBox()=default
Constructor.
+
Vec3 mHalfExtents
Half extents (half the size of the edge) of the local space axis aligned box.
Definition OrientedBox.h:36
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_path_constraint_8cpp.html b/_path_constraint_8cpp.html new file mode 100644 index 000000000..641e30948 --- /dev/null +++ b/_path_constraint_8cpp.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PathConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PathConstraint.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PathConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PathConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_path_constraint_8cpp.js b/_path_constraint_8cpp.js new file mode 100644 index 000000000..95a8f6192 --- /dev/null +++ b/_path_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _path_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_path_constraint_8cpp.html#a2f3d2d80cb4696ddbaf87e12784c8b20", null ] +]; \ No newline at end of file diff --git a/_path_constraint_8h.html b/_path_constraint_8h.html new file mode 100644 index 000000000..d7612ef79 --- /dev/null +++ b/_path_constraint_8h.html @@ -0,0 +1,189 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PathConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PathConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  PathConstraintSettings
 
class  PathConstraint
 Path constraint, used to constrain the degrees of freedom between two bodies to a path. More...
 
+ + + + +

+Enumerations

enum class  EPathRotationConstraintType {
+  Free +, ConstrainAroundTangent +, ConstrainAroundNormal +, ConstrainAroundBinormal +,
+  ConstrainToPath +, FullyConstrained +
+ }
 How to constrain the rotation of the body to a PathConstraint. More...
 
+

Enumeration Type Documentation

+ +

◆ EPathRotationConstraintType

+ +
+
+ + + + + +
+ + + + +
enum class EPathRotationConstraintType
+
+strong
+
+ +

How to constrain the rotation of the body to a PathConstraint.

+ + + + + + + +
Enumerator
Free 

Do not constrain the rotation of the body at all.

+
ConstrainAroundTangent 

Only allow rotation around the tangent vector (following the path)

+
ConstrainAroundNormal 

Only allow rotation around the normal vector (perpendicular to the path)

+
ConstrainAroundBinormal 

Only allow rotation around the binormal vector (perpendicular to the path)

+
ConstrainToPath 

Fully constrain the rotation of body 2 to the path (following the tangent and normal of the path)

+
FullyConstrained 

Fully constrain the rotation of the body 2 to the rotation of body 1.

+
+ +
+
+
+
+ + + + diff --git a/_path_constraint_8h.js b/_path_constraint_8h.js new file mode 100644 index 000000000..58c660934 --- /dev/null +++ b/_path_constraint_8h.js @@ -0,0 +1,13 @@ +var _path_constraint_8h = +[ + [ "PathConstraintSettings", "class_path_constraint_settings.html", "class_path_constraint_settings" ], + [ "PathConstraint", "class_path_constraint.html", "class_path_constraint" ], + [ "EPathRotationConstraintType", "_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51b", [ + [ "Free", "_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51bab24ce0cd392a5b0b8dedc66c25213594", null ], + [ "ConstrainAroundTangent", "_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51bae683cb817d9b6df8318feeff63c0dc7a", null ], + [ "ConstrainAroundNormal", "_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51bab302156e1f72f50fcaf8f21a79175edb", null ], + [ "ConstrainAroundBinormal", "_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51bac47ca6b2c57b8f6f71ffc3447b2bc732", null ], + [ "ConstrainToPath", "_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51ba073f41f446822810e8d12d203367a61f", null ], + [ "FullyConstrained", "_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51ba22d4f54f5a2001373cac7b8d8f246f11", null ] + ] ] +]; \ No newline at end of file diff --git a/_path_constraint_8h_source.html b/_path_constraint_8h_source.html new file mode 100644 index 000000000..804279cb5 --- /dev/null +++ b/_path_constraint_8h_source.html @@ -0,0 +1,361 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PathConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PathConstraint.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
+ + + + + + + +
14
+ +
16
+ +
27
+
+ +
37{
+
38public:
+ +
40
+
41 // See: ConstraintSettings::SaveBinaryState
+
42 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
43
+
45 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
+
46
+ +
49
+
51 Vec3 mPathPosition = Vec3::sZero();
+
52
+
54 Quat mPathRotation = Quat::sIdentity();
+
55
+
57 float mPathFraction = 0.0f;
+
58
+
60 float mMaxFrictionForce = 0.0f;
+
61
+ +
64
+ +
67
+
68protected:
+
69 // See: ConstraintSettings::RestoreBinaryState
+
70 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
71};
+
+
72
+
+ +
75{
+
76public:
+ +
78
+
80 PathConstraint(Body &inBody1, Body &inBody2, const PathConstraintSettings &inSettings);
+
81
+
82 // Generic interface of a constraint
+
83 virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::Path; }
+
84 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override;
+
85 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
86 virtual void ResetWarmStart() override;
+
87 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
88 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
89 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
90#ifdef JPH_DEBUG_RENDERER
+
91 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
92#endif // JPH_DEBUG_RENDERER
+
93 virtual void SaveState(StateRecorder &inStream) const override;
+
94 virtual void RestoreState(StateRecorder &inStream) override;
+
95 virtual bool IsActive() const override { return TwoBodyConstraint::IsActive() && mPath != nullptr; }
+
96 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
97
+
98 // See: TwoBodyConstraint
+
99 virtual Mat44 GetConstraintToBody1Matrix() const override { return mPathToBody1; }
+
100 virtual Mat44 GetConstraintToBody2Matrix() const override { return mPathToBody2; }
+
101
+
103 void SetPath(const PathConstraintPath *inPath, float inPathFraction);
+
104
+
106 const PathConstraintPath * GetPath() const { return mPath; }
+
107
+
109 float GetPathFraction() const { return mPathFraction; }
+
110
+
112 void SetMaxFrictionForce(float inFrictionForce) { mMaxFrictionForce = inFrictionForce; }
+
113 float GetMaxFrictionForce() const { return mMaxFrictionForce; }
+
114
+
116 MotorSettings & GetPositionMotorSettings() { return mPositionMotorSettings; }
+
117 const MotorSettings & GetPositionMotorSettings() const { return mPositionMotorSettings; }
+
118
+
119 // Position motor controls (drives body 2 along the path)
+
120 void SetPositionMotorState(EMotorState inState) { JPH_ASSERT(inState == EMotorState::Off || mPositionMotorSettings.IsValid()); mPositionMotorState = inState; }
+
121 EMotorState GetPositionMotorState() const { return mPositionMotorState; }
+
122 void SetTargetVelocity(float inVelocity) { mTargetVelocity = inVelocity; }
+
123 float GetTargetVelocity() const { return mTargetVelocity; }
+
124 void SetTargetPathFraction(float inFraction) { JPH_ASSERT(mPath->IsLooping() || (inFraction >= 0.0f && inFraction <= mPath->GetPathMaxFraction())); mTargetPathFraction = inFraction; }
+
125 float GetTargetPathFraction() const { return mTargetPathFraction; }
+
126
+
128 inline Vector<2> GetTotalLambdaPosition() const { return mPositionConstraintPart.GetTotalLambda(); }
+
129 inline float GetTotalLambdaPositionLimits() const { return mPositionLimitsConstraintPart.GetTotalLambda(); }
+
130 inline float GetTotalLambdaMotor() const { return mPositionMotorConstraintPart.GetTotalLambda(); }
+
131 inline Vector<2> GetTotalLambdaRotationHinge() const { return mHingeConstraintPart.GetTotalLambda(); }
+
132 inline Vec3 GetTotalLambdaRotation() const { return mRotationConstraintPart.GetTotalLambda(); }
+
133
+
134private:
+
135 // Internal helper function to calculate the values below
+
136 void CalculateConstraintProperties(float inDeltaTime);
+
137
+
138 // CONFIGURATION PROPERTIES FOLLOW
+
139
+ +
141 Mat44 mPathToBody1;
+
142 Mat44 mPathToBody2;
+
143 EPathRotationConstraintType mRotationConstraintType;
+
144
+
145 // Friction
+
146 float mMaxFrictionForce;
+
147
+
148 // Motor controls
+
149 MotorSettings mPositionMotorSettings;
+
150 EMotorState mPositionMotorState = EMotorState::Off;
+
151 float mTargetVelocity = 0.0f;
+
152 float mTargetPathFraction = 0.0f;
+
153
+
154 // RUN TIME PROPERTIES FOLLOW
+
155
+
156 // Positions where the point constraint acts on in world space
+
157 Vec3 mR1;
+
158 Vec3 mR2;
+
159
+
160 // X2 + R2 - X1 - R1
+
161 Vec3 mU;
+
162
+
163 // World space path tangent
+
164 Vec3 mPathTangent;
+
165
+
166 // Normals to the path tangent
+
167 Vec3 mPathNormal;
+
168 Vec3 mPathBinormal;
+
169
+
170 // Inverse of initial rotation from body 1 to body 2 in body 1 space (only used when rotation constraint type is FullyConstrained)
+
171 Quat mInvInitialOrientation;
+
172
+
173 // Current fraction along the path where body 2 is attached
+
174 float mPathFraction = 0.0f;
+
175
+
176 // Translation constraint parts
+
177 DualAxisConstraintPart mPositionConstraintPart;
+
178 AxisConstraintPart mPositionLimitsConstraintPart;
+
179 AxisConstraintPart mPositionMotorConstraintPart;
+
180
+
181 // Rotation constraint parts
+
182 HingeRotationConstraintPart mHingeConstraintPart;
+
183 RotationEulerConstraintPart mRotationConstraintPart;
+
184};
+
+
185
+ + +
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
EMotorState
Definition MotorSettings.h:17
+
@ Off
Motor is off.
+
EPathRotationConstraintType
How to constrain the rotation of the body to a PathConstraint.
Definition PathConstraint.h:19
+
@ ConstrainToPath
Fully constrain the rotation of body 2 to the path (following the tangent and normal of the path)
+
@ FullyConstrained
Fully constrain the rotation of the body 2 to the rotation of body 1.
+
@ Free
Do not constrain the rotation of the body at all.
+
@ ConstrainAroundNormal
Only allow rotation around the normal vector (perpendicular to the path)
+
@ ConstrainAroundBinormal
Only allow rotation around the binormal vector (perpendicular to the path)
+
@ ConstrainAroundTangent
Only allow rotation around the tangent vector (following the path)
+ + +
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+ +
Definition AxisConstraintPart.h:43
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
Definition DualAxisConstraintPart.h:48
+
Definition HingeRotationConstraintPart.h:44
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Definition MotorSettings.h:26
+
Path constraint, used to constrain the degrees of freedom between two bodies to a path.
Definition PathConstraint.h:75
+
float GetMaxFrictionForce() const
Definition PathConstraint.h:113
+
void SetTargetVelocity(float inVelocity)
Definition PathConstraint.h:122
+
void SetTargetPathFraction(float inFraction)
Definition PathConstraint.h:124
+
EMotorState GetPositionMotorState() const
Definition PathConstraint.h:121
+
float GetTargetPathFraction() const
Definition PathConstraint.h:125
+
virtual bool IsActive() const override
Solver interface.
Definition PathConstraint.h:95
+
void SetPositionMotorState(EMotorState inState)
Definition PathConstraint.h:120
+
virtual EConstraintSubType GetSubType() const override
Get the sub type of a constraint.
Definition PathConstraint.h:83
+
Vec3 GetTotalLambdaRotation() const
Definition PathConstraint.h:132
+
virtual Mat44 GetConstraintToBody1Matrix() const override
Calculates the transform that transforms from constraint space to body 1 space. The first column of t...
Definition PathConstraint.h:99
+
float GetTargetVelocity() const
Definition PathConstraint.h:123
+
Vector< 2 > GetTotalLambdaPosition() const
Definition PathConstraint.h:128
+
MotorSettings & GetPositionMotorSettings()
Position motor settings.
Definition PathConstraint.h:116
+
const PathConstraintPath * GetPath() const
Access to the current path.
Definition PathConstraint.h:106
+
Vector< 2 > GetTotalLambdaRotationHinge() const
Definition PathConstraint.h:131
+
void SetMaxFrictionForce(float inFrictionForce)
Friction control.
Definition PathConstraint.h:112
+
float GetTotalLambdaMotor() const
Definition PathConstraint.h:130
+
virtual Mat44 GetConstraintToBody2Matrix() const override
Calculates the transform that transforms from constraint space to body 2 space. The first column of t...
Definition PathConstraint.h:100
+
float GetPathFraction() const
Access to the current fraction along the path e [0, GetPath()->GetMaxPathFraction()].
Definition PathConstraint.h:109
+
const MotorSettings & GetPositionMotorSettings() const
Definition PathConstraint.h:117
+
float GetTotalLambdaPositionLimits() const
Definition PathConstraint.h:129
+
The path for a path constraint. It allows attaching two bodies to each other while giving the second ...
Definition PathConstraintPath.h:21
+
Definition PathConstraint.h:37
+
RefConst< PathConstraintPath > mPath
The path that constrains the two bodies.
Definition PathConstraint.h:48
+
MotorSettings mPositionMotorSettings
In case the constraint is powered, this determines the motor settings along the path.
Definition PathConstraint.h:63
+
Definition Quat.h:33
+
static JPH_INLINE Quat sIdentity()
Definition Quat.h:103
+
Definition Reference.h:151
+
Definition Reference.h:101
+
Definition RotationEulerConstraintPart.h:36
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
virtual bool IsActive() const override
Solver interface.
Definition TwoBodyConstraint.h:38
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Templatized vector class.
Definition Vector.h:12
+
+
+ + + + diff --git a/_path_constraint_path_8cpp.html b/_path_constraint_path_8cpp.html new file mode 100644 index 000000000..39c807777 --- /dev/null +++ b/_path_constraint_path_8cpp.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PathConstraintPath.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PathConstraintPath.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (PathConstraintPath)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (PathConstraintPath )
+
+ +
+
+
+
+ + + + diff --git a/_path_constraint_path_8cpp.js b/_path_constraint_path_8cpp.js new file mode 100644 index 000000000..2965f2b74 --- /dev/null +++ b/_path_constraint_path_8cpp.js @@ -0,0 +1,4 @@ +var _path_constraint_path_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT", "_path_constraint_path_8cpp.html#afeb55065feac7e761af72ad1ece4f881", null ] +]; \ No newline at end of file diff --git a/_path_constraint_path_8h.html b/_path_constraint_path_8h.html new file mode 100644 index 000000000..dd199745f --- /dev/null +++ b/_path_constraint_path_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PathConstraintPath.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PathConstraintPath.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  PathConstraintPath
 The path for a path constraint. It allows attaching two bodies to each other while giving the second body the freedom to move along a path relative to the first. More...
 
+
+
+ + + + diff --git a/_path_constraint_path_8h.js b/_path_constraint_path_8h.js new file mode 100644 index 000000000..49d916679 --- /dev/null +++ b/_path_constraint_path_8h.js @@ -0,0 +1,4 @@ +var _path_constraint_path_8h = +[ + [ "PathConstraintPath", "class_path_constraint_path.html", "class_path_constraint_path" ] +]; \ No newline at end of file diff --git a/_path_constraint_path_8h_source.html b/_path_constraint_path_8h_source.html new file mode 100644 index 000000000..99073d00b --- /dev/null +++ b/_path_constraint_path_8h_source.html @@ -0,0 +1,191 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PathConstraintPath.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PathConstraintPath.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#include <Jolt/Core/Result.h>
+ +
10
+ +
12
+
13class StreamIn;
+
14class StreamOut;
+
15#ifdef JPH_DEBUG_RENDERER
+
16class DebugRenderer;
+
17#endif // JPH_DEBUG_RENDERER
+
18
+
+
20class JPH_EXPORT PathConstraintPath : public SerializableObject, public RefTarget<PathConstraintPath>
+
21{
+
22public:
+ +
24
+ +
26
+
28 virtual ~PathConstraintPath() override = default;
+
29
+
31 virtual float GetPathMaxFraction() const = 0;
+
32
+
37 virtual float GetClosestPoint(Vec3Arg inPosition, float inFractionHint) const = 0;
+
38
+
45 virtual void GetPointOnPath(float inFraction, Vec3 &outPathPosition, Vec3 &outPathTangent, Vec3 &outPathNormal, Vec3 &outPathBinormal) const = 0;
+
46
+
48 void SetIsLooping(bool inIsLooping) { mIsLooping = inIsLooping; }
+
49 bool IsLooping() const { return mIsLooping; }
+
50
+
51#ifdef JPH_DEBUG_RENDERER
+
53 void DrawPath(DebugRenderer *inRenderer, RMat44Arg inBaseTransform) const;
+
54#endif // JPH_DEBUG_RENDERER
+
55
+
57 virtual void SaveBinaryState(StreamOut &inStream) const;
+
58
+
60 static PathResult sRestoreFromBinaryState(StreamIn &inStream);
+
61
+
62protected:
+
64 virtual void RestoreBinaryState(StreamIn &inStream);
+
65
+
66private:
+
68 bool mIsLooping = false;
+
69};
+
+
70
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + + +
#define JPH_DECLARE_SERIALIZABLE_ABSTRACT(linkage, class_name)
Definition SerializableObject.h:120
+
Definition DebugRenderer.h:47
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
The path for a path constraint. It allows attaching two bodies to each other while giving the second ...
Definition PathConstraintPath.h:21
+
bool IsLooping() const
Definition PathConstraintPath.h:49
+
Definition Reference.h:101
+
Definition Reference.h:35
+
Helper class that either contains a valid result or an error.
Definition Result.h:12
+
Definition SerializableObject.h:156
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_path_constraint_path_hermite_8cpp.html b/_path_constraint_path_hermite_8cpp.html new file mode 100644 index 000000000..51e6e6d78 --- /dev/null +++ b/_path_constraint_path_hermite_8cpp.html @@ -0,0 +1,167 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PathConstraintPathHermite.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PathConstraintPathHermite.cpp File Reference
+
+
+ + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (PathConstraintPathHermite::Point)
 
 JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PathConstraintPathHermite)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (PathConstraintPathHermite::Point )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PathConstraintPathHermite )
+
+ +
+
+
+
+ + + + diff --git a/_path_constraint_path_hermite_8cpp.js b/_path_constraint_path_hermite_8cpp.js new file mode 100644 index 000000000..8f0295d68 --- /dev/null +++ b/_path_constraint_path_hermite_8cpp.js @@ -0,0 +1,5 @@ +var _path_constraint_path_hermite_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_path_constraint_path_hermite_8cpp.html#a396455a934fe536ea1ce7bdc58e70af4", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_path_constraint_path_hermite_8cpp.html#aba02114ddc7cb36ea05d3f34d26cd84e", null ] +]; \ No newline at end of file diff --git a/_path_constraint_path_hermite_8h.html b/_path_constraint_path_hermite_8h.html new file mode 100644 index 000000000..ac8977b1d --- /dev/null +++ b/_path_constraint_path_hermite_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PathConstraintPathHermite.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PathConstraintPathHermite.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  PathConstraintPathHermite
 A path that follows a Hermite spline. More...
 
struct  PathConstraintPathHermite::Point
 
+
+
+ + + + diff --git a/_path_constraint_path_hermite_8h.js b/_path_constraint_path_hermite_8h.js new file mode 100644 index 000000000..e513e9c4f --- /dev/null +++ b/_path_constraint_path_hermite_8h.js @@ -0,0 +1,5 @@ +var _path_constraint_path_hermite_8h = +[ + [ "PathConstraintPathHermite", "class_path_constraint_path_hermite.html", "class_path_constraint_path_hermite" ], + [ "PathConstraintPathHermite::Point", "struct_path_constraint_path_hermite_1_1_point.html", "struct_path_constraint_path_hermite_1_1_point" ] +]; \ No newline at end of file diff --git a/_path_constraint_path_hermite_8h_source.html b/_path_constraint_path_hermite_8h_source.html new file mode 100644 index 000000000..d72c308f7 --- /dev/null +++ b/_path_constraint_path_hermite_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PathConstraintPathHermite.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PathConstraintPathHermite.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{
+
14public:
+ +
16
+
17 // See PathConstraintPath::GetPathMaxFraction
+
18 virtual float GetPathMaxFraction() const override { return float(IsLooping()? mPoints.size() : mPoints.size() - 1); }
+
19
+
20 // See PathConstraintPath::GetClosestPoint
+
21 virtual float GetClosestPoint(Vec3Arg inPosition, float inFractionHint) const override;
+
22
+
23 // See PathConstraintPath::GetPointOnPath
+
24 virtual void GetPointOnPath(float inFraction, Vec3 &outPathPosition, Vec3 &outPathTangent, Vec3 &outPathNormal, Vec3 &outPathBinormal) const override;
+
25
+
27 void AddPoint(Vec3Arg inPosition, Vec3Arg inTangent, Vec3Arg inNormal) { mPoints.push_back({ inPosition, inTangent, inNormal}); }
+
28
+
29 // See: PathConstraintPath::SaveBinaryState
+
30 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
31
+
+
32 struct Point
+
33 {
+ +
35
+
36 Vec3 mPosition;
+
37 Vec3 mTangent;
+
38 Vec3 mNormal;
+
39 };
+
+
40
+
41protected:
+
42 // See: PathConstraintPath::RestoreBinaryState
+
43 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
44
+
45private:
+
47 inline void GetIndexAndT(float inFraction, int &outIndex, float &outT) const;
+
48
+
49 using Points = Array<Point>;
+
50
+
51 Points mPoints;
+
52};
+
+
53
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+ +
A path that follows a Hermite spline.
Definition PathConstraintPathHermite.h:13
+
void AddPoint(Vec3Arg inPosition, Vec3Arg inTangent, Vec3Arg inNormal)
Adds a point to the path.
Definition PathConstraintPathHermite.h:27
+
The path for a path constraint. It allows attaching two bodies to each other while giving the second ...
Definition PathConstraintPath.h:21
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the path in binary form to inStream.
Definition PathConstraintPath.cpp:68
+
bool IsLooping() const
Definition PathConstraintPath.h:49
+
virtual void GetPointOnPath(float inFraction, Vec3 &outPathPosition, Vec3 &outPathTangent, Vec3 &outPathNormal, Vec3 &outPathBinormal) const =0
+
virtual float GetClosestPoint(Vec3Arg inPosition, float inFractionHint) const =0
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition Vec3.h:17
+
Definition PathConstraintPathHermite.h:33
+
+
+ + + + diff --git a/_performance_test_8md.html b/_performance_test_8md.html new file mode 100644 index 000000000..aa700b427 --- /dev/null +++ b/_performance_test_8md.html @@ -0,0 +1,114 @@ + + + + + + + +Jolt Physics: Docs/PerformanceTest.md File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Docs/PerformanceTest.md File Reference
+
+
+
+
+ + + + diff --git a/_physics_lock_8cpp.html b/_physics_lock_8cpp.html new file mode 100644 index 000000000..eff8fb843 --- /dev/null +++ b/_physics_lock_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsLock.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsLock.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <Jolt/Physics/PhysicsLock.h>
+
+
+ + + + diff --git a/_physics_lock_8h.html b/_physics_lock_8h.html new file mode 100644 index 000000000..678e8c424 --- /dev/null +++ b/_physics_lock_8h.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsLock.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsLock.h File Reference
+
+
+
#include <Jolt/Core/Mutex.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

class  PhysicsLock
 
class  UniqueLock< LockType >
 Helper class that is similar to std::unique_lock. More...
 
class  SharedLock< LockType >
 Helper class that is similar to std::shared_lock. More...
 
+
+
+ + + + diff --git a/_physics_lock_8h.js b/_physics_lock_8h.js new file mode 100644 index 000000000..81472aee8 --- /dev/null +++ b/_physics_lock_8h.js @@ -0,0 +1,6 @@ +var _physics_lock_8h = +[ + [ "PhysicsLock", "class_physics_lock.html", null ], + [ "UniqueLock< LockType >", "class_unique_lock.html", "class_unique_lock" ], + [ "SharedLock< LockType >", "class_shared_lock.html", "class_shared_lock" ] +]; \ No newline at end of file diff --git a/_physics_lock_8h_source.html b/_physics_lock_8h_source.html new file mode 100644 index 000000000..f05e3e905 --- /dev/null +++ b/_physics_lock_8h_source.html @@ -0,0 +1,322 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsLock.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsLock.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
+
7#include <Jolt/Core/Mutex.h>
+
8
+ +
10
+
11#ifdef JPH_ENABLE_ASSERTS
+
12
+
14enum class EPhysicsLockTypes
+
15{
+
16 BroadPhaseQuery = 1 << 0,
+
17 PerBody = 1 << 1,
+
18 BodiesList = 1 << 2,
+
19 BroadPhaseUpdate = 1 << 3,
+
20 ConstraintsList = 1 << 4,
+
21 ActiveBodiesList = 1 << 5,
+
22};
+
23
+
25class BodyManager;
+
26using PhysicsLockContext = const BodyManager *;
+
27
+
28#endif // !JPH_ENABLE_ASSERTS
+
29
+
+ +
33{
+
34public:
+
35#ifdef JPH_ENABLE_ASSERTS
+
37 static inline void sCheckLock(PhysicsLockContext inContext, EPhysicsLockTypes inType)
+
38 {
+
39 uint32 &mutexes = sGetLockedMutexes(inContext);
+
40 JPH_ASSERT(uint32(inType) > mutexes, "A lock of same or higher priority was already taken, this can create a deadlock!");
+
41 mutexes = mutexes | uint32(inType);
+
42 }
+
43
+
45 static inline void sCheckUnlock(PhysicsLockContext inContext, EPhysicsLockTypes inType)
+
46 {
+
47 uint32 &mutexes = sGetLockedMutexes(inContext);
+
48 JPH_ASSERT((mutexes & uint32(inType)) != 0, "Mutex was not locked!");
+
49 mutexes = mutexes & ~uint32(inType);
+
50 }
+
51#endif // !JPH_ENABLE_ASSERTS
+
52
+
53 template <class LockType>
+
+
54 static inline void sLock(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
+
55 {
+
56 JPH_IF_ENABLE_ASSERTS(sCheckLock(inContext, inType);)
+
57 inMutex.lock();
+
58 }
+
+
59
+
60 template <class LockType>
+
+
61 static inline void sUnlock(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
+
62 {
+
63 JPH_IF_ENABLE_ASSERTS(sCheckUnlock(inContext, inType);)
+
64 inMutex.unlock();
+
65 }
+
+
66
+
67 template <class LockType>
+
+
68 static inline void sLockShared(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
+
69 {
+
70 JPH_IF_ENABLE_ASSERTS(sCheckLock(inContext, inType);)
+
71 inMutex.lock_shared();
+
72 }
+
+
73
+
74 template <class LockType>
+
+
75 static inline void sUnlockShared(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
+
76 {
+
77 JPH_IF_ENABLE_ASSERTS(sCheckUnlock(inContext, inType);)
+
78 inMutex.unlock_shared();
+
79 }
+
+
80
+
81#ifdef JPH_ENABLE_ASSERTS
+
82private:
+
83 struct LockData
+
84 {
+
85 uint32 mLockedMutexes = 0;
+
86 PhysicsLockContext mContext = nullptr;
+
87 };
+
88
+
89 static thread_local LockData sLocks[4];
+
90
+
91 // Helper function to find the locked mutexes for a particular context
+
92 static uint32 & sGetLockedMutexes(PhysicsLockContext inContext)
+
93 {
+
94 // If we find a matching context we can use it
+
95 for (LockData &l : sLocks)
+
96 if (l.mContext == inContext)
+
97 return l.mLockedMutexes;
+
98
+
99 // Otherwise we look for an entry that is not in use
+
100 for (LockData &l : sLocks)
+
101 if (l.mLockedMutexes == 0)
+
102 {
+
103 l.mContext = inContext;
+
104 return l.mLockedMutexes;
+
105 }
+
106
+
107 JPH_ASSERT(false, "Too many physics systems locked at the same time!");
+
108 return sLocks[0].mLockedMutexes;
+
109 }
+
110#endif // !JPH_ENABLE_ASSERTS
+
111};
+
+
112
+
114template <class LockType>
+
+ +
116{
+
117public:
+
+
118 explicit UniqueLock(LockType &inLock JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType)) :
+
119 mLock(inLock)
+
120#ifdef JPH_ENABLE_ASSERTS
+
121 , mContext(inContext),
+
122 mType(inType)
+
123#endif // JPH_ENABLE_ASSERTS
+
124 {
+
125 PhysicsLock::sLock(mLock JPH_IF_ENABLE_ASSERTS(, mContext, mType));
+
126 }
+
+
127
+
+ +
129 {
+
130 PhysicsLock::sUnlock(mLock JPH_IF_ENABLE_ASSERTS(, mContext, mType));
+
131 }
+
+
132
+
133private:
+
134 LockType & mLock;
+
135#ifdef JPH_ENABLE_ASSERTS
+
136 PhysicsLockContext mContext;
+
137 EPhysicsLockTypes mType;
+
138#endif // JPH_ENABLE_ASSERTS
+
139};
+
+
140
+
142template <class LockType>
+
+ +
144{
+
145public:
+
+
146 explicit SharedLock(LockType &inLock JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType)) :
+
147 mLock(inLock)
+
148#ifdef JPH_ENABLE_ASSERTS
+
149 , mContext(inContext)
+
150 , mType(inType)
+
151#endif // JPH_ENABLE_ASSERTS
+
152 {
+
153 PhysicsLock::sLockShared(mLock JPH_IF_ENABLE_ASSERTS(, mContext, mType));
+
154 }
+
+
155
+
+ +
157 {
+
158 PhysicsLock::sUnlockShared(mLock JPH_IF_ENABLE_ASSERTS(, mContext, mType));
+
159 }
+
+
160
+
161private:
+
162 LockType & mLock;
+
163#ifdef JPH_ENABLE_ASSERTS
+
164 PhysicsLockContext mContext;
+
165 EPhysicsLockTypes mType;
+
166#endif // JPH_ENABLE_ASSERTS
+
167};
+
+
168
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
Class that contains all bodies.
Definition BodyManager.h:44
+
Definition BroadPhaseQuery.h:29
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition PhysicsLock.h:33
+
static void sLockShared(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:68
+
static void sUnlock(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:61
+
static void sUnlockShared(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:75
+
static void sLock(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:54
+
Helper class that is similar to std::shared_lock.
Definition PhysicsLock.h:144
+
SharedLock(LockType &inLock JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:146
+
~SharedLock()
Definition PhysicsLock.h:156
+
Helper class that is similar to std::unique_lock.
Definition PhysicsLock.h:116
+
UniqueLock(LockType &inLock JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:118
+
~UniqueLock()
Definition PhysicsLock.h:128
+
+
+ + + + diff --git a/_physics_material_8cpp.html b/_physics_material_8cpp.html new file mode 100644 index 000000000..2762484a8 --- /dev/null +++ b/_physics_material_8cpp.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/PhysicsMaterial.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsMaterial.cpp File Reference
+
+
+ + + + +

+Functions

 JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PhysicsMaterial)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PhysicsMaterial )
+
+ +
+
+
+
+ + + + diff --git a/_physics_material_8cpp.js b/_physics_material_8cpp.js new file mode 100644 index 000000000..05795560e --- /dev/null +++ b/_physics_material_8cpp.js @@ -0,0 +1,4 @@ +var _physics_material_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_physics_material_8cpp.html#a54dbb763e103e61c3a27f508a63aa6aa", null ] +]; \ No newline at end of file diff --git a/_physics_material_8h.html b/_physics_material_8h.html new file mode 100644 index 000000000..8ce48e99a --- /dev/null +++ b/_physics_material_8h.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/PhysicsMaterial.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsMaterial.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  PhysicsMaterial
 
+ + + +

+Typedefs

using PhysicsMaterialList = Array< RefConst< PhysicsMaterial > >
 
+

Typedef Documentation

+ +

◆ PhysicsMaterialList

+ +
+
+ +
+
+
+
+ + + + diff --git a/_physics_material_8h.js b/_physics_material_8h.js new file mode 100644 index 000000000..4350308c3 --- /dev/null +++ b/_physics_material_8h.js @@ -0,0 +1,5 @@ +var _physics_material_8h = +[ + [ "PhysicsMaterial", "class_physics_material.html", "class_physics_material" ], + [ "PhysicsMaterialList", "_physics_material_8h.html#a9523ada17142ddf05aa79e8a98c8abb7", null ] +]; \ No newline at end of file diff --git a/_physics_material_8h_source.html b/_physics_material_8h_source.html new file mode 100644 index 000000000..05b3792b0 --- /dev/null +++ b/_physics_material_8h_source.html @@ -0,0 +1,183 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/PhysicsMaterial.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsMaterial.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#include <Jolt/Core/Color.h>
+
9#include <Jolt/Core/Result.h>
+ +
11
+ +
13
+
14class StreamIn;
+
15class StreamOut;
+
16
+
+
22class JPH_EXPORT PhysicsMaterial : public SerializableObject, public RefTarget<PhysicsMaterial>
+
23{
+
24public:
+ +
26
+
27
+
28 virtual ~PhysicsMaterial() override = default;
+
29
+
31 static RefConst<PhysicsMaterial> sDefault;
+
32
+
33 // Properties
+
34 virtual const char * GetDebugName() const { return "Unknown"; }
+
35 virtual Color GetDebugColor() const { return Color::sGrey; }
+
36
+
38 virtual void SaveBinaryState(StreamOut &inStream) const;
+
39
+ +
41
+
43 static PhysicsMaterialResult sRestoreFromBinaryState(StreamIn &inStream);
+
44
+
45protected:
+
47 virtual void RestoreBinaryState(StreamIn &inStream);
+
48};
+
+
49
+ +
51
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + + +
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+ +
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
static const Color sGrey
Definition Color.h:65
+
Definition PhysicsMaterial.h:23
+
virtual Color GetDebugColor() const
Definition PhysicsMaterial.h:35
+
Definition Reference.h:151
+
Definition Reference.h:35
+
Helper class that either contains a valid result or an error.
Definition Result.h:12
+
Definition SerializableObject.h:156
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
+
+ + + + diff --git a/_physics_material_simple_8cpp.html b/_physics_material_simple_8cpp.html new file mode 100644 index 000000000..e0a085f74 --- /dev/null +++ b/_physics_material_simple_8cpp.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/PhysicsMaterialSimple.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsMaterialSimple.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PhysicsMaterialSimple)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PhysicsMaterialSimple )
+
+ +
+
+
+
+ + + + diff --git a/_physics_material_simple_8cpp.js b/_physics_material_simple_8cpp.js new file mode 100644 index 000000000..5e956c594 --- /dev/null +++ b/_physics_material_simple_8cpp.js @@ -0,0 +1,4 @@ +var _physics_material_simple_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_physics_material_simple_8cpp.html#acd50f300ea4f0614243ab5ebd721c0cd", null ] +]; \ No newline at end of file diff --git a/_physics_material_simple_8h.html b/_physics_material_simple_8h.html new file mode 100644 index 000000000..aebdcb3a8 --- /dev/null +++ b/_physics_material_simple_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/PhysicsMaterialSimple.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsMaterialSimple.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  PhysicsMaterialSimple
 Sample implementation of PhysicsMaterial that just holds the needed properties directly. More...
 
+
+
+ + + + diff --git a/_physics_material_simple_8h.js b/_physics_material_simple_8h.js new file mode 100644 index 000000000..e66dd3dbc --- /dev/null +++ b/_physics_material_simple_8h.js @@ -0,0 +1,4 @@ +var _physics_material_simple_8h = +[ + [ "PhysicsMaterialSimple", "class_physics_material_simple.html", "class_physics_material_simple" ] +]; \ No newline at end of file diff --git a/_physics_material_simple_8h_source.html b/_physics_material_simple_8h_source.html new file mode 100644 index 000000000..19533a1c4 --- /dev/null +++ b/_physics_material_simple_8h_source.html @@ -0,0 +1,173 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/PhysicsMaterialSimple.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsMaterialSimple.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{
+
14public:
+ +
16
+
17
+ +
19 PhysicsMaterialSimple(const string_view &inName, ColorArg inColor) : mDebugName(inName), mDebugColor(inColor) { }
+
20
+
21 // Properties
+
22 virtual const char * GetDebugName() const override { return mDebugName.c_str(); }
+
23 virtual Color GetDebugColor() const override { return mDebugColor; }
+
24
+
25 // See: PhysicsMaterial::SaveBinaryState
+
26 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
27
+
28protected:
+
29 // See: PhysicsMaterial::RestoreBinaryState
+
30 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
31
+
32private:
+
33 String mDebugName;
+
34 Color mDebugColor = Color::sGrey;
+
35};
+
+
36
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
static const Color sGrey
Definition Color.h:65
+
Definition PhysicsMaterial.h:23
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition PhysicsMaterial.cpp:25
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the material in binary form to inStream.
Definition PhysicsMaterial.cpp:20
+
Sample implementation of PhysicsMaterial that just holds the needed properties directly.
Definition PhysicsMaterialSimple.h:13
+
virtual Color GetDebugColor() const override
Definition PhysicsMaterialSimple.h:23
+
virtual const char * GetDebugName() const override
Definition PhysicsMaterialSimple.h:22
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
+
+ + + + diff --git a/_physics_scene_8cpp.html b/_physics_scene_8cpp.html new file mode 100644 index 000000000..13f689d58 --- /dev/null +++ b/_physics_scene_8cpp.html @@ -0,0 +1,166 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsScene.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsScene.cpp File Reference
+
+
+ + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (PhysicsScene)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (PhysicsScene::ConnectedConstraint)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [1/2]

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (PhysicsScene )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [2/2]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (PhysicsScene::ConnectedConstraint )
+
+ +
+
+
+
+ + + + diff --git a/_physics_scene_8cpp.js b/_physics_scene_8cpp.js new file mode 100644 index 000000000..dd7151ce9 --- /dev/null +++ b/_physics_scene_8cpp.js @@ -0,0 +1,5 @@ +var _physics_scene_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_physics_scene_8cpp.html#a10ab4cf4963e09c967fb295fa6b9c8d0", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_physics_scene_8cpp.html#a9c81bd82f76a31a2144094340bbe869f", null ] +]; \ No newline at end of file diff --git a/_physics_scene_8h.html b/_physics_scene_8h.html new file mode 100644 index 000000000..68336e08c --- /dev/null +++ b/_physics_scene_8h.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsScene.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsScene.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  PhysicsScene
 Contains the creation settings of a set of bodies. More...
 
class  PhysicsScene::ConnectedConstraint
 A constraint and how it is connected to the bodies in the scene. More...
 
+
+
+ + + + diff --git a/_physics_scene_8h.js b/_physics_scene_8h.js new file mode 100644 index 000000000..ee9e9bed7 --- /dev/null +++ b/_physics_scene_8h.js @@ -0,0 +1,5 @@ +var _physics_scene_8h = +[ + [ "PhysicsScene", "class_physics_scene.html", "class_physics_scene" ], + [ "PhysicsScene::ConnectedConstraint", "class_physics_scene_1_1_connected_constraint.html", "class_physics_scene_1_1_connected_constraint" ] +]; \ No newline at end of file diff --git a/_physics_scene_8h_source.html b/_physics_scene_8h_source.html new file mode 100644 index 000000000..dade1dace --- /dev/null +++ b/_physics_scene_8h_source.html @@ -0,0 +1,235 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsScene.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsScene.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
+ + + + +
11
+ +
13
+
14class PhysicsSystem;
+
15
+
+
17class JPH_EXPORT PhysicsScene : public RefTarget<PhysicsScene>
+
18{
+
19public:
+ +
21
+
22
+
23 void AddBody(const BodyCreationSettings &inBody);
+
24
+
26 static constexpr uint32 cFixedToWorld = 0xffffffff;
+
27
+
32 void AddConstraint(const TwoBodyConstraintSettings *inConstraint, uint32 inBody1, uint32 inBody2);
+
33
+
35 void AddSoftBody(const SoftBodyCreationSettings &inSoftBody);
+
36
+
38 size_t GetNumBodies() const { return mBodies.size(); }
+
39
+
41 const Array<BodyCreationSettings> & GetBodies() const { return mBodies; }
+
42 Array<BodyCreationSettings> & GetBodies() { return mBodies; }
+
43
+
+ +
46 {
+
47 public:
+ +
49
+ +
51 ConnectedConstraint(const TwoBodyConstraintSettings *inSettings, uint inBody1, uint inBody2) : mSettings(inSettings), mBody1(inBody1), mBody2(inBody2) { }
+
52
+ + + +
56 };
+
+
57
+
59 size_t GetNumConstraints() const { return mConstraints.size(); }
+
60
+
62 const Array<ConnectedConstraint> & GetConstraints() const { return mConstraints; }
+
63 Array<ConnectedConstraint> & GetConstraints() { return mConstraints; }
+
64
+
66 size_t GetNumSoftBodies() const { return mSoftBodies.size(); }
+
67
+
69 const Array<SoftBodyCreationSettings> & GetSoftBodies() const { return mSoftBodies; }
+ +
71
+
73 bool CreateBodies(PhysicsSystem *inSystem) const;
+
74
+
77 bool FixInvalidScales();
+
78
+
83 void SaveBinaryState(StreamOut &inStream, bool inSaveShapes, bool inSaveGroupFilter) const;
+
84
+ +
86
+
88 static PhysicsSceneResult sRestoreFromBinaryState(StreamIn &inStream);
+
89
+
91 void FromPhysicsSystem(const PhysicsSystem *inSystem);
+
92
+
93private:
+ +
96
+
98 Array<ConnectedConstraint> mConstraints;
+
99
+ +
102};
+
+
103
+ + +
#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
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ + +
Definition Array.h:36
+
Settings for constructing a rigid body.
Definition BodyCreationSettings.h:31
+
A constraint and how it is connected to the bodies in the scene.
Definition PhysicsScene.h:46
+
uint32 mBody1
Index of first body (in mBodies)
Definition PhysicsScene.h:54
+
RefConst< TwoBodyConstraintSettings > mSettings
Constraint settings.
Definition PhysicsScene.h:53
+
uint32 mBody2
Index of second body (in mBodies)
Definition PhysicsScene.h:55
+
Contains the creation settings of a set of bodies.
Definition PhysicsScene.h:18
+
Array< BodyCreationSettings > & GetBodies()
Definition PhysicsScene.h:42
+
size_t GetNumSoftBodies() const
Get number of bodies in this scene.
Definition PhysicsScene.h:66
+
size_t GetNumConstraints() const
Get number of constraints in this scene.
Definition PhysicsScene.h:59
+
const Array< ConnectedConstraint > & GetConstraints() const
Access to the constraints for this scene.
Definition PhysicsScene.h:62
+
Array< SoftBodyCreationSettings > & GetSoftBodies()
Definition PhysicsScene.h:70
+
size_t GetNumBodies() const
Get number of bodies in this scene.
Definition PhysicsScene.h:38
+
Array< ConnectedConstraint > & GetConstraints()
Definition PhysicsScene.h:63
+
const Array< BodyCreationSettings > & GetBodies() const
Access to the body settings for this scene.
Definition PhysicsScene.h:41
+
const Array< SoftBodyCreationSettings > & GetSoftBodies() const
Access to the soft body settings for this scene.
Definition PhysicsScene.h:69
+
Definition PhysicsSystem.h:29
+
Definition Reference.h:151
+
Definition Reference.h:35
+
Helper class that either contains a valid result or an error.
Definition Result.h:12
+
Definition SoftBodyCreationSettings.h:18
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
+
+ + + + diff --git a/_physics_settings_8h.html b/_physics_settings_8h.html new file mode 100644 index 000000000..17bccda2e --- /dev/null +++ b/_physics_settings_8h.html @@ -0,0 +1,265 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsSettings.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsSettings.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

struct  PhysicsSettings
 
+ + + + + + + + + + + + + + + + +

+Variables

JPH_NAMESPACE_BEGIN constexpr float cDefaultCollisionTolerance = 1.0e-4f
 If objects are closer than this distance, they are considered to be colliding (used for GJK) (unit: meter)
 
constexpr float cDefaultPenetrationTolerance = 1.0e-4f
 A factor that determines the accuracy of the penetration depth calculation. If the change of the squared distance is less than tolerance * current_penetration_depth^2 the algorithm will terminate. (unit: dimensionless)
 
constexpr float cDefaultConvexRadius = 0.05f
 How much padding to add around objects.
 
constexpr int cMaxPhysicsJobs = 2048
 Maximum amount of jobs to allow.
 
constexpr int cMaxPhysicsBarriers = 8
 Maximum amount of barriers to allow.
 
+

Variable Documentation

+ +

◆ cDefaultCollisionTolerance

+ +
+
+ + + + + +
+ + + + +
JPH_NAMESPACE_BEGIN constexpr float cDefaultCollisionTolerance = 1.0e-4f
+
+constexpr
+
+ +

If objects are closer than this distance, they are considered to be colliding (used for GJK) (unit: meter)

+ +
+
+ +

◆ cDefaultConvexRadius

+ +
+
+ + + + + +
+ + + + +
constexpr float cDefaultConvexRadius = 0.05f
+
+constexpr
+
+ +

How much padding to add around objects.

+ +
+
+ +

◆ cDefaultPenetrationTolerance

+ +
+
+ + + + + +
+ + + + +
constexpr float cDefaultPenetrationTolerance = 1.0e-4f
+
+constexpr
+
+ +

A factor that determines the accuracy of the penetration depth calculation. If the change of the squared distance is less than tolerance * current_penetration_depth^2 the algorithm will terminate. (unit: dimensionless)

+

Stop when there's less than 1% change

+ +
+
+ +

◆ cMaxPhysicsBarriers

+ +
+
+ + + + + +
+ + + + +
constexpr int cMaxPhysicsBarriers = 8
+
+constexpr
+
+ +

Maximum amount of barriers to allow.

+ +
+
+ +

◆ cMaxPhysicsJobs

+ +
+
+ + + + + +
+ + + + +
constexpr int cMaxPhysicsJobs = 2048
+
+constexpr
+
+ +

Maximum amount of jobs to allow.

+ +
+
+
+
+ + + + diff --git a/_physics_settings_8h.js b/_physics_settings_8h.js new file mode 100644 index 000000000..16ee843fc --- /dev/null +++ b/_physics_settings_8h.js @@ -0,0 +1,9 @@ +var _physics_settings_8h = +[ + [ "PhysicsSettings", "struct_physics_settings.html", "struct_physics_settings" ], + [ "cDefaultCollisionTolerance", "_physics_settings_8h.html#a4199156431c225865fda0e5e6bc593fd", null ], + [ "cDefaultConvexRadius", "_physics_settings_8h.html#aeef9aad6ecef0a70378bbe649f08720e", null ], + [ "cDefaultPenetrationTolerance", "_physics_settings_8h.html#adeaa0f0b4cc2e2de1021f3669d5d83d9", null ], + [ "cMaxPhysicsBarriers", "_physics_settings_8h.html#a559bcb71de078738aede3ed80cd394f8", null ], + [ "cMaxPhysicsJobs", "_physics_settings_8h.html#a0db4388fe9fc48dbc7b8dd7d43f86825", null ] +]; \ No newline at end of file diff --git a/_physics_settings_8h_source.html b/_physics_settings_8h_source.html new file mode 100644 index 000000000..9da5d6687 --- /dev/null +++ b/_physics_settings_8h_source.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsSettings.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsSettings.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
+
10constexpr float cDefaultCollisionTolerance = 1.0e-4f;
+
11
+
13constexpr float cDefaultPenetrationTolerance = 1.0e-4f;
+
14
+
16constexpr float cDefaultConvexRadius = 0.05f;
+
17
+
19static constexpr float cCapsuleProjectionSlop = 0.02f;
+
20
+
22constexpr int cMaxPhysicsJobs = 2048;
+
23
+
25constexpr int cMaxPhysicsBarriers = 8;
+
26
+
+ +
28{
+ +
30
+ +
34
+ +
37
+ +
40
+
42 float mBaumgarte = 0.2f;
+
43
+ +
48
+
50 float mPenetrationSlop = 0.02f;
+
51
+
53 float mLinearCastThreshold = 0.75f;
+
54
+ +
57
+
59 float mManifoldToleranceSq = 1.0e-6f;
+
60
+ +
63
+ +
66
+
68 float mBodyPairCacheCosMaxDeltaRotationDiv2 = 0.99984769515639123915701155881391f;
+
69
+
71 float mContactNormalCosMaxDeltaRotation = 0.99619469809174553229501040247389f;
+
72
+ +
75
+ +
79
+ +
82
+ +
85
+
87 float mTimeBeforeSleep = 0.5f;
+
88
+ +
91
+ +
94
+
97
+ +
100
+ +
103
+ +
106
+ +
109
+
111 bool mAllowSleeping = true;
+
112
+
114 bool mCheckActiveEdges = true;
+
115
+
117};
+
+
118
+ +
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
constexpr int cMaxPhysicsJobs
Maximum amount of jobs to allow.
Definition PhysicsSettings.h:22
+
JPH_NAMESPACE_BEGIN constexpr float cDefaultCollisionTolerance
If objects are closer than this distance, they are considered to be colliding (used for GJK) (unit: m...
Definition PhysicsSettings.h:10
+
constexpr int cMaxPhysicsBarriers
Maximum amount of barriers to allow.
Definition PhysicsSettings.h:25
+
constexpr float cDefaultPenetrationTolerance
A factor that determines the accuracy of the penetration depth calculation. If the change of the squa...
Definition PhysicsSettings.h:13
+
constexpr float cDefaultConvexRadius
How much padding to add around objects.
Definition PhysicsSettings.h:16
+
Definition PhysicsSettings.h:28
+
float mTimeBeforeSleep
Time before object is allowed to go to sleep (unit: seconds)
Definition PhysicsSettings.h:87
+
uint mNumPositionSteps
Number of solver position iterations to run.
Definition PhysicsSettings.h:81
+
float mMinVelocityForRestitution
Minimal velocity needed before a collision can be elastic (unit: m)
Definition PhysicsSettings.h:84
+
JPH_OVERRIDE_NEW_DELETE int mMaxInFlightBodyPairs
Definition PhysicsSettings.h:33
+
bool mAllowSleeping
If objects can go to sleep or not.
Definition PhysicsSettings.h:111
+
bool mUseBodyPairContactCache
Whether or not to use the body pair cache, which removes the need for narrow phase collision detectio...
Definition PhysicsSettings.h:102
+
int mStepListenersBatchSize
How many PhysicsStepListeners to notify in 1 batch.
Definition PhysicsSettings.h:36
+
uint mNumVelocitySteps
Definition PhysicsSettings.h:78
+
float mContactPointPreserveLambdaMaxDistSq
Maximum allowed distance between old and new contact point to preserve contact forces for warm start ...
Definition PhysicsSettings.h:74
+
float mBodyPairCacheMaxDeltaPositionSq
Maximum relative delta position for body pairs to be able to reuse collision results from last frame ...
Definition PhysicsSettings.h:65
+
float mMaxPenetrationDistance
Maximum distance to correct in a single iteration when solving position constraints (unit: meters)
Definition PhysicsSettings.h:62
+
float mPenetrationSlop
How much bodies are allowed to sink into each other (unit: meters)
Definition PhysicsSettings.h:50
+
float mSpeculativeContactDistance
Definition PhysicsSettings.h:47
+
float mLinearCastMaxPenetration
Fraction of its inner radius a body may penetrate another body for the LinearCast motion quality.
Definition PhysicsSettings.h:56
+
float mPointVelocitySleepThreshold
Velocity of points on bounding box of object below which an object can be considered sleeping (unit: ...
Definition PhysicsSettings.h:90
+
float mLinearCastThreshold
Fraction of its inner radius a body must move per step to enable casting for the LinearCast motion qu...
Definition PhysicsSettings.h:53
+
float mBodyPairCacheCosMaxDeltaRotationDiv2
Maximum relative delta orientation for body pairs to be able to reuse collision results from last fra...
Definition PhysicsSettings.h:68
+
bool mUseLargeIslandSplitter
If we split up large islands into smaller parallel batches of work (to improve performance)
Definition PhysicsSettings.h:108
+
bool mConstraintWarmStart
Whether or not to use warm starting for constraints (initially applying previous frames impulses)
Definition PhysicsSettings.h:99
+
bool mCheckActiveEdges
When false, we prevent collision against non-active (shared) edges. Mainly for debugging the algorith...
Definition PhysicsSettings.h:114
+
float mManifoldToleranceSq
Max squared distance to use to determine if two points are on the same plane for determining the cont...
Definition PhysicsSettings.h:59
+
float mBaumgarte
Baumgarte stabilization factor (how much of the position error to 'fix' in 1 update) (unit: dimension...
Definition PhysicsSettings.h:42
+
bool mDeterministicSimulation
By default the simulation is deterministic, it is possible to turn this off by setting this setting t...
Definition PhysicsSettings.h:93
+
float mContactNormalCosMaxDeltaRotation
Maximum angle between normals that allows manifolds between different sub shapes of the same body pai...
Definition PhysicsSettings.h:71
+
bool mUseManifoldReduction
Whether or not to reduce manifolds with similar contact normals into one contact manifold (see descri...
Definition PhysicsSettings.h:105
+
int mStepListenerBatchesPerJob
How many step listener batches are needed before spawning another job (set to INT_MAX if no paralleli...
Definition PhysicsSettings.h:39
+
+
+ + + + diff --git a/_physics_step_listener_8h.html b/_physics_step_listener_8h.html new file mode 100644 index 000000000..a6d95321a --- /dev/null +++ b/_physics_step_listener_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsStepListener.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsStepListener.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  PhysicsStepListener
 A listener class that receives a callback before every physics simulation step. More...
 
+
+
+ + + + diff --git a/_physics_step_listener_8h.js b/_physics_step_listener_8h.js new file mode 100644 index 000000000..a888d02ba --- /dev/null +++ b/_physics_step_listener_8h.js @@ -0,0 +1,4 @@ +var _physics_step_listener_8h = +[ + [ "PhysicsStepListener", "class_physics_step_listener.html", "class_physics_step_listener" ] +]; \ No newline at end of file diff --git a/_physics_step_listener_8h_source.html b/_physics_step_listener_8h_source.html new file mode 100644 index 000000000..2c1d5bd99 --- /dev/null +++ b/_physics_step_listener_8h_source.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsStepListener.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsStepListener.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
+
9class PhysicsSystem;
+
10
+
+ +
13{
+
14public:
+
16 virtual ~PhysicsStepListener() = default;
+
17
+
24 virtual void OnStep(float inDeltaTime, PhysicsSystem &inPhysicsSystem) = 0;
+
25};
+
+
26
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
A listener class that receives a callback before every physics simulation step.
Definition PhysicsStepListener.h:13
+
virtual ~PhysicsStepListener()=default
Ensure virtual destructor.
+
virtual void OnStep(float inDeltaTime, PhysicsSystem &inPhysicsSystem)=0
+
Definition PhysicsSystem.h:29
+
+
+ + + + diff --git a/_physics_system_8cpp.html b/_physics_system_8cpp.html new file mode 100644 index 000000000..718d8b266 --- /dev/null +++ b/_physics_system_8cpp.html @@ -0,0 +1,172 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsSystem.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsSystem.cpp File Reference
+
+
+ + + + +

+Classes

class  PhysicsSystem::BodiesToSleep
 
+ + + +

+Macros

#define BROAD_PHASE   BroadPhaseQuadTree
 
+

Macro Definition Documentation

+ +

◆ BROAD_PHASE

+ +
+
+ + + + +
#define BROAD_PHASE   BroadPhaseQuadTree
+
+ +
+
+
+
+ + + + diff --git a/_physics_system_8cpp.js b/_physics_system_8cpp.js new file mode 100644 index 000000000..8b2facf82 --- /dev/null +++ b/_physics_system_8cpp.js @@ -0,0 +1,5 @@ +var _physics_system_8cpp = +[ + [ "PhysicsSystem::BodiesToSleep", "class_physics_system_1_1_bodies_to_sleep.html", "class_physics_system_1_1_bodies_to_sleep" ], + [ "BROAD_PHASE", "_physics_system_8cpp.html#aad55d1aa02fb095e428393a1b19c814f", null ] +]; \ No newline at end of file diff --git a/_physics_system_8h.html b/_physics_system_8h.html new file mode 100644 index 000000000..439b9a1f2 --- /dev/null +++ b/_physics_system_8h.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsSystem.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsSystem.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  PhysicsSystem
 
+
+
+ + + + diff --git a/_physics_system_8h.js b/_physics_system_8h.js new file mode 100644 index 000000000..4637f93bb --- /dev/null +++ b/_physics_system_8h.js @@ -0,0 +1,4 @@ +var _physics_system_8h = +[ + [ "PhysicsSystem", "class_physics_system.html", "class_physics_system" ] +]; \ No newline at end of file diff --git a/_physics_system_8h_source.html b/_physics_system_8h_source.html new file mode 100644 index 000000000..fefed4994 --- /dev/null +++ b/_physics_system_8h_source.html @@ -0,0 +1,458 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsSystem.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsSystem.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
+ + + + + + + + + +
16
+ +
18
+
19class JobSystem;
+
20class StateRecorder;
+
21class TempAllocator;
+ + +
24
+
+ +
29{
+
30public:
+ +
32
+
34 PhysicsSystem() : mContactManager(mPhysicsSettings) JPH_IF_ENABLE_ASSERTS(, mConstraintManager(&mBodyManager)) { }
+ +
36
+
45 void Init(uint inMaxBodies, uint inNumBodyMutexes, uint inMaxBodyPairs, uint inMaxContactConstraints, const BroadPhaseLayerInterface &inBroadPhaseLayerInterface, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter);
+
46
+
48 void SetBodyActivationListener(BodyActivationListener *inListener) { mBodyManager.SetBodyActivationListener(inListener); }
+
49 BodyActivationListener * GetBodyActivationListener() const { return mBodyManager.GetBodyActivationListener(); }
+
50
+
53 void SetContactListener(ContactListener *inListener) { mContactManager.SetContactListener(inListener); }
+
54 ContactListener * GetContactListener() const { return mContactManager.GetContactListener(); }
+
55
+
57 void SetSoftBodyContactListener(SoftBodyContactListener *inListener) { mSoftBodyContactListener = inListener; }
+
58 SoftBodyContactListener * GetSoftBodyContactListener() const { return mSoftBodyContactListener; }
+
59
+
62 void SetCombineFriction(ContactConstraintManager::CombineFunction inCombineFriction) { mContactManager.SetCombineFriction(inCombineFriction); }
+
63 ContactConstraintManager::CombineFunction GetCombineFriction() const { return mContactManager.GetCombineFriction(); }
+
64
+
67 void SetCombineRestitution(ContactConstraintManager::CombineFunction inCombineRestition) { mContactManager.SetCombineRestitution(inCombineRestition); }
+
68 ContactConstraintManager::CombineFunction GetCombineRestitution() const { return mContactManager.GetCombineRestitution(); }
+
69
+
71 void SetPhysicsSettings(const PhysicsSettings &inSettings) { mPhysicsSettings = inSettings; }
+
72 const PhysicsSettings & GetPhysicsSettings() const { return mPhysicsSettings; }
+
73
+
75 const BodyInterface & GetBodyInterface() const { return mBodyInterfaceLocking; }
+
76 BodyInterface & GetBodyInterface() { return mBodyInterfaceLocking; }
+
77 const BodyInterface & GetBodyInterfaceNoLock() const { return mBodyInterfaceNoLock; }
+
+
78 BodyInterface & GetBodyInterfaceNoLock() { return mBodyInterfaceNoLock; }
+
79
+
81 const BroadPhaseQuery & GetBroadPhaseQuery() const { return *mBroadPhase; }
+
82
+
84 const NarrowPhaseQuery & GetNarrowPhaseQuery() const { return mNarrowPhaseQueryLocking; }
+
85 const NarrowPhaseQuery & GetNarrowPhaseQueryNoLock() const { return mNarrowPhaseQueryNoLock; }
+
86
+
88 void AddConstraint(Constraint *inConstraint) { mConstraintManager.Add(&inConstraint, 1); }
+
89
+
91 void RemoveConstraint(Constraint *inConstraint) { mConstraintManager.Remove(&inConstraint, 1); }
+
92
+
94 void AddConstraints(Constraint **inConstraints, int inNumber) { mConstraintManager.Add(inConstraints, inNumber); }
+
95
+
97 void RemoveConstraints(Constraint **inConstraints, int inNumber) { mConstraintManager.Remove(inConstraints, inNumber); }
+
98
+
100 Constraints GetConstraints() const { return mConstraintManager.GetConstraints(); }
+
101
+
108 void OptimizeBroadPhase();
+
109
+
111 void AddStepListener(PhysicsStepListener *inListener);
+
112
+
114 void RemoveStepListener(PhysicsStepListener *inListener);
+
115
+
120 EPhysicsUpdateError Update(float inDeltaTime, int inCollisionSteps, TempAllocator *inTempAllocator, JobSystem *inJobSystem);
+
121
+
123 void SaveState(StateRecorder &inStream, EStateRecorderState inState = EStateRecorderState::All, const StateRecorderFilter *inFilter = nullptr) const;
+
124
+
126 bool RestoreState(StateRecorder &inStream);
+
127
+
129 void SaveBodyState(const Body &inBody, StateRecorder &inStream) const;
+
130
+
132 void RestoreBodyState(Body &ioBody, StateRecorder &inStream);
+
133
+
134#ifdef JPH_DEBUG_RENDERER
+
135 // Drawing properties
+ +
137
+
139 void DrawBodies(const BodyManager::DrawSettings &inSettings, DebugRenderer *inRenderer, const BodyDrawFilter *inBodyFilter = nullptr) { mBodyManager.Draw(inSettings, mPhysicsSettings, inRenderer, inBodyFilter); }
+
140
+
142 void DrawConstraints(DebugRenderer *inRenderer) { mConstraintManager.DrawConstraints(inRenderer); }
+
143
+
145 void DrawConstraintLimits(DebugRenderer *inRenderer) { mConstraintManager.DrawConstraintLimits(inRenderer); }
+
146
+
148 void DrawConstraintReferenceFrame(DebugRenderer *inRenderer) { mConstraintManager.DrawConstraintReferenceFrame(inRenderer); }
+
149#endif // JPH_DEBUG_RENDERER
+
150
+
152 void SetGravity(Vec3Arg inGravity) { mGravity = inGravity; }
+
153 Vec3 GetGravity() const { return mGravity; }
+
154
+
156 inline const BodyLockInterfaceNoLock & GetBodyLockInterfaceNoLock() const { return mBodyLockInterfaceNoLock; }
+
157
+
159 inline const BodyLockInterfaceLocking & GetBodyLockInterface() const { return mBodyLockInterfaceLocking; }
+
160
+
162 DefaultBroadPhaseLayerFilter GetDefaultBroadPhaseLayerFilter(ObjectLayer inLayer) const { return DefaultBroadPhaseLayerFilter(*mObjectVsBroadPhaseLayerFilter, inLayer); }
+
163
+
165 DefaultObjectLayerFilter GetDefaultLayerFilter(ObjectLayer inLayer) const { return DefaultObjectLayerFilter(*mObjectLayerPairFilter, inLayer); }
+
166
+
168 uint GetNumBodies() const { return mBodyManager.GetNumBodies(); }
+
169
+
171 uint32 GetNumActiveBodies(EBodyType inType) const { return mBodyManager.GetNumActiveBodies(inType); }
+
172
+
174 uint GetMaxBodies() const { return mBodyManager.GetMaxBodies(); }
+
175
+ +
178
+
180 BodyStats GetBodyStats() const { return mBodyManager.GetBodyStats(); }
+
181
+
184 void GetBodies(BodyIDVector &outBodyIDs) const { return mBodyManager.GetBodyIDs(outBodyIDs); }
+
185
+
189 void GetActiveBodies(EBodyType inType, BodyIDVector &outBodyIDs) const { return mBodyManager.GetActiveBodies(inType, outBodyIDs); }
+
190
+
193 const BodyID * GetActiveBodiesUnsafe(EBodyType inType) const { return mBodyManager.GetActiveBodiesUnsafe(inType); }
+
194
+
200 bool WereBodiesInContact(const BodyID &inBody1ID, const BodyID &inBody2ID) const { return mContactManager.WereBodiesInContact(inBody1ID, inBody2ID); }
+
201
+
203 AABox GetBounds() const { return mBroadPhase->GetBounds(); }
+
204
+
205#ifdef JPH_TRACK_BROADPHASE_STATS
+
207 void ReportBroadphaseStats() { mBroadPhase->ReportStats(); }
+
208#endif // JPH_TRACK_BROADPHASE_STATS
+
209
+
210private:
+ +
212
+
213 // Various job entry points
+
214 void JobStepListeners(PhysicsUpdateContext::Step *ioStep);
+
215 void JobDetermineActiveConstraints(PhysicsUpdateContext::Step *ioStep) const;
+
216 void JobApplyGravity(const PhysicsUpdateContext *ioContext, PhysicsUpdateContext::Step *ioStep);
+
217 void JobSetupVelocityConstraints(float inDeltaTime, PhysicsUpdateContext::Step *ioStep) const;
+
218 void JobBuildIslandsFromConstraints(PhysicsUpdateContext *ioContext, PhysicsUpdateContext::Step *ioStep);
+
219 void JobFindCollisions(PhysicsUpdateContext::Step *ioStep, int inJobIndex);
+
220 void JobFinalizeIslands(PhysicsUpdateContext *ioContext);
+
221 void JobBodySetIslandIndex();
+
222 void JobSolveVelocityConstraints(PhysicsUpdateContext *ioContext, PhysicsUpdateContext::Step *ioStep);
+
223 void JobPreIntegrateVelocity(PhysicsUpdateContext *ioContext, PhysicsUpdateContext::Step *ioStep);
+
224 void JobIntegrateVelocity(const PhysicsUpdateContext *ioContext, PhysicsUpdateContext::Step *ioStep);
+
225 void JobPostIntegrateVelocity(PhysicsUpdateContext *ioContext, PhysicsUpdateContext::Step *ioStep) const;
+
226 void JobFindCCDContacts(const PhysicsUpdateContext *ioContext, PhysicsUpdateContext::Step *ioStep);
+
227 void JobResolveCCDContacts(PhysicsUpdateContext *ioContext, PhysicsUpdateContext::Step *ioStep);
+
228 void JobContactRemovedCallbacks(const PhysicsUpdateContext::Step *ioStep);
+
229 void JobSolvePositionConstraints(PhysicsUpdateContext *ioContext, PhysicsUpdateContext::Step *ioStep);
+
230 void JobSoftBodyPrepare(PhysicsUpdateContext *ioContext, PhysicsUpdateContext::Step *ioStep);
+
231 void JobSoftBodyCollide(PhysicsUpdateContext *ioContext) const;
+
232 void JobSoftBodySimulate(PhysicsUpdateContext *ioContext, uint inThreadIndex) const;
+
233 void JobSoftBodyFinalize(PhysicsUpdateContext *ioContext);
+
234
+
236 void TrySpawnJobFindCollisions(PhysicsUpdateContext::Step *ioStep) const;
+
237
+
238 using ContactAllocator = ContactConstraintManager::ContactAllocator;
+
239
+
241 void ProcessBodyPair(ContactAllocator &ioContactAllocator, const BodyPair &inBodyPair);
+
242
+
244 class BodiesToSleep;
+
245
+
247 void CheckSleepAndUpdateBounds(uint32 inIslandIndex, const PhysicsUpdateContext *ioContext, const PhysicsUpdateContext::Step *ioStep, BodiesToSleep &ioBodiesToSleep);
+
248
+
250 static constexpr int cDetermineActiveConstraintsBatchSize = 64;
+
251
+
253 static constexpr int cSetupVelocityConstraintsBatchSize = 256;
+
254
+
256 static constexpr int cApplyGravityBatchSize = 64;
+
257
+
259 static constexpr int cActiveBodiesBatchSize = 16;
+
260
+
262 static constexpr int cIntegrateVelocityBatchSize = 64;
+
263
+
265 static constexpr int cNarrowPhaseBatchSize = 16;
+
266
+
268 static constexpr int cNumCCDBodiesPerJob = 4;
+
269
+
271 const ObjectVsBroadPhaseLayerFilter *mObjectVsBroadPhaseLayerFilter = nullptr;
+
272
+
274 const ObjectLayerPairFilter *mObjectLayerPairFilter = nullptr;
+
275
+
277 BodyManager mBodyManager;
+
278
+
280 BodyLockInterfaceNoLock mBodyLockInterfaceNoLock { mBodyManager };
+
281 BodyLockInterfaceLocking mBodyLockInterfaceLocking { mBodyManager };
+
282
+
284 BodyInterface mBodyInterfaceNoLock;
+
285 BodyInterface mBodyInterfaceLocking;
+
286
+
288 NarrowPhaseQuery mNarrowPhaseQueryNoLock;
+
289 NarrowPhaseQuery mNarrowPhaseQueryLocking;
+
290
+
292 BroadPhase * mBroadPhase = nullptr;
+
293
+
295 SoftBodyContactListener * mSoftBodyContactListener = nullptr;
+
296
+
298 PhysicsSettings mPhysicsSettings;
+
299
+
301 ContactConstraintManager mContactManager;
+
302
+
304 ConstraintManager mConstraintManager;
+
305
+
307 IslandBuilder mIslandBuilder;
+
308
+
310 LargeIslandSplitter mLargeIslandSplitter;
+
311
+
313 Mutex mStepListenersMutex;
+
314
+
316 using StepListeners = Array<PhysicsStepListener *>;
+
317 StepListeners mStepListeners;
+
318
+
320 Vec3 mGravity = Vec3(0, -9.81f, 0);
+
321
+
323 float mPreviousStepDeltaTime = 0.0f;
+
324};
+
325
+ +
+
+ +
EBodyType
Type of body.
Definition BodyType.h:11
+ + + +
#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
+
EPhysicsUpdateError
Enum used by PhysicsSystem to report error conditions during the PhysicsSystem::Update call....
Definition EPhysicsUpdateError.h:11
+ +
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
+ +
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
uint16 ObjectLayer
Definition ObjectLayer.h:16
+ + +
EStateRecorderState
A bit field that determines which aspects of the simulation to save.
Definition StateRecorder.h:18
+
@ All
Save all state.
+
Axis aligned box.
Definition AABox.h:16
+ +
Definition BodyActivationListener.h:14
+
Class function to filter out bodies for debug rendering, returns true if body should be rendered.
Definition BodyFilter.h:117
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Definition BodyInterface.h:35
+
Implementation that uses the body manager to lock the correct mutex for a body.
Definition BodyLockInterface.h:78
+
Implementation that performs no locking (assumes the lock has already been taken)
Definition BodyLockInterface.h:58
+
Class that contains all bodies.
Definition BodyManager.h:44
+
Used to do coarse collision detection operations to quickly prune out bodies that will not collide.
Definition BroadPhase.h:26
+
Interface that the application should implement to allow mapping object layers to broadphase layers.
Definition BroadPhaseLayer.h:61
+
Definition BroadPhaseQuery.h:29
+
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:103
+
A constraint manager manages all constraints of the same type.
Definition ConstraintManager.h:25
+
Contacts are allocated in a lock free hash map.
Definition ContactConstraintManager.h:80
+
Definition ContactConstraintManager.h:28
+
float(*)(const Body &inBody1, const SubShapeID &inSubShapeID1, const Body &inBody2, const SubShapeID &inSubShapeID2) CombineFunction
Definition ContactConstraintManager.h:48
+
Definition ContactListener.h:69
+
Definition DebugRenderer.h:47
+
Default filter class that uses the pair filter in combination with a specified layer to filter layers...
Definition BroadPhaseLayer.h:108
+
Default filter class that uses the pair filter in combination with a specified layer to filter layers...
Definition ObjectLayer.h:64
+
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
Definition IslandBuilder.h:19
+
Definition JobSystem.h:70
+
Definition LargeIslandSplitter.h:25
+
Definition Mutex.h:122
+
Definition NarrowPhaseQuery.h:23
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Filter class to test if two objects can collide based on their object layer. Used while finding colli...
Definition ObjectLayer.h:50
+
Class to test if an object can collide with a broadphase layer. Used while finding collision pairs.
Definition BroadPhaseLayer.h:80
+
A listener class that receives a callback before every physics simulation step.
Definition PhysicsStepListener.h:13
+
Definition PhysicsSystem.h:29
+
void GetBodies(BodyIDVector &outBodyIDs) const
Definition PhysicsSystem.h:184
+
void DrawConstraintReferenceFrame(DebugRenderer *inRenderer)
Draw the constraint reference frames only (debugging purposes)
Definition PhysicsSystem.h:148
+
const NarrowPhaseQuery & GetNarrowPhaseQuery() const
Interface that allows fine collision queries against first the broad phase and then the narrow phase.
Definition PhysicsSystem.h:84
+
void RemoveConstraints(Constraint **inConstraints, int inNumber)
Batch remove constraints. Note that the inConstraints array is allowed to have nullptrs,...
Definition PhysicsSystem.h:97
+
uint GetNumBodies() const
Gets the current amount of bodies that are in the body manager.
Definition PhysicsSystem.h:168
+
uint32 GetNumActiveBodies(EBodyType inType) const
Gets the current amount of active bodies that are in the body manager.
Definition PhysicsSystem.h:171
+
void SetPhysicsSettings(const PhysicsSettings &inSettings)
Control the main constants of the physics simulation.
Definition PhysicsSystem.h:71
+
void SetSoftBodyContactListener(SoftBodyContactListener *inListener)
Listener that is notified whenever a contact point between a soft body and another body.
Definition PhysicsSystem.h:57
+
const BodyInterface & GetBodyInterface() const
Access to the body interface. This interface allows to to create / remove bodies and to change their ...
Definition PhysicsSystem.h:75
+
const BroadPhaseQuery & GetBroadPhaseQuery() const
Access to the broadphase interface that allows coarse collision queries.
Definition PhysicsSystem.h:81
+
const BodyLockInterfaceLocking & GetBodyLockInterface() const
Returns a locking interface that locks the body so other threads cannot modify it.
Definition PhysicsSystem.h:159
+
const NarrowPhaseQuery & GetNarrowPhaseQueryNoLock() const
Version that does not lock the bodies, use with great care!
Definition PhysicsSystem.h:85
+
void DrawConstraints(DebugRenderer *inRenderer)
Draw the constraints only (debugging purposes)
Definition PhysicsSystem.h:142
+
const PhysicsSettings & GetPhysicsSettings() const
Definition PhysicsSystem.h:72
+
const BodyInterface & GetBodyInterfaceNoLock() const
Version that does not lock the bodies, use with great care!
Definition PhysicsSystem.h:77
+
BodyInterface & GetBodyInterface()
Definition PhysicsSystem.h:76
+
void DrawConstraintLimits(DebugRenderer *inRenderer)
Draw the constraint limits only (debugging purposes)
Definition PhysicsSystem.h:145
+
Constraints GetConstraints() const
Get a list of all constraints.
Definition PhysicsSystem.h:100
+
void AddConstraint(Constraint *inConstraint)
Add constraint to the world.
Definition PhysicsSystem.h:88
+
Vec3 GetGravity() const
Definition PhysicsSystem.h:153
+
uint GetMaxBodies() const
Get the maximum amount of bodies that this physics system supports.
Definition PhysicsSystem.h:174
+
void RemoveConstraint(Constraint *inConstraint)
Remove constraint from the world.
Definition PhysicsSystem.h:91
+
AABox GetBounds() const
Get the bounding box of all bodies in the physics system.
Definition PhysicsSystem.h:203
+
void DrawBodies(const BodyManager::DrawSettings &inSettings, DebugRenderer *inRenderer, const BodyDrawFilter *inBodyFilter=nullptr)
Draw the state of the bodies (debugging purposes)
Definition PhysicsSystem.h:139
+
BodyActivationListener * GetBodyActivationListener() const
Definition PhysicsSystem.h:49
+
DefaultBroadPhaseLayerFilter GetDefaultBroadPhaseLayerFilter(ObjectLayer inLayer) const
Get an broadphase layer filter that uses the default pair filter and a specified object layer to dete...
Definition PhysicsSystem.h:162
+
BodyInterface & GetBodyInterfaceNoLock()
Version that does not lock the bodies, use with great care!
Definition PhysicsSystem.h:78
+
void GetActiveBodies(EBodyType inType, BodyIDVector &outBodyIDs) const
Definition PhysicsSystem.h:189
+
ContactConstraintManager::CombineFunction GetCombineRestitution() const
Definition PhysicsSystem.h:68
+
void SetCombineRestitution(ContactConstraintManager::CombineFunction inCombineRestition)
Definition PhysicsSystem.h:67
+
JPH_OVERRIDE_NEW_DELETE PhysicsSystem()
Constructor / Destructor.
Definition PhysicsSystem.h:34
+
static bool sDrawMotionQualityLinearCast
Draw debug info for objects that perform continuous collision detection through the linear cast motio...
Definition PhysicsSystem.h:136
+
void SetGravity(Vec3Arg inGravity)
Set gravity value.
Definition PhysicsSystem.h:152
+
const BodyLockInterfaceNoLock & GetBodyLockInterfaceNoLock() const
Returns a locking interface that won't actually lock the body. Use with great care!
Definition PhysicsSystem.h:156
+
BodyStats GetBodyStats() const
Get stats about the bodies in the body manager (slow, iterates through all bodies)
Definition PhysicsSystem.h:180
+
void AddConstraints(Constraint **inConstraints, int inNumber)
Batch add constraints. Note that the inConstraints array is allowed to have nullptrs,...
Definition PhysicsSystem.h:94
+
bool WereBodiesInContact(const BodyID &inBody1ID, const BodyID &inBody2ID) const
Definition PhysicsSystem.h:200
+
DefaultObjectLayerFilter GetDefaultLayerFilter(ObjectLayer inLayer) const
Get an object layer filter that uses the default pair filter and a specified layer to determine if la...
Definition PhysicsSystem.h:165
+
void SetContactListener(ContactListener *inListener)
Definition PhysicsSystem.h:53
+
SoftBodyContactListener * GetSoftBodyContactListener() const
Definition PhysicsSystem.h:58
+
ContactConstraintManager::CombineFunction GetCombineFriction() const
Definition PhysicsSystem.h:63
+
void SetCombineFriction(ContactConstraintManager::CombineFunction inCombineFriction)
Definition PhysicsSystem.h:62
+
const BodyID * GetActiveBodiesUnsafe(EBodyType inType) const
Definition PhysicsSystem.h:193
+
void SetBodyActivationListener(BodyActivationListener *inListener)
Listener that is notified whenever a body is activated/deactivated.
Definition PhysicsSystem.h:48
+
ContactListener * GetContactListener() const
Definition PhysicsSystem.h:54
+
Information used during the Update call.
Definition PhysicsUpdateContext.h:24
+
Definition SoftBodyContactListener.h:33
+
User callbacks that allow determining which parts of the simulation should be saved by a StateRecorde...
Definition StateRecorder.h:29
+
Definition StateRecorder.h:48
+
Definition TempAllocator.h:16
+
Definition Vec3.h:17
+
Helper struct that counts the number of bodies of each type.
Definition BodyManager.h:62
+
Draw settings.
Definition BodyManager.h:231
+
Structure that holds a body pair.
Definition BodyPair.h:14
+
Definition PhysicsSettings.h:28
+
Contains the information needed to cast a body through the scene to do continuous collision detection...
Definition PhysicsUpdateContext.h:97
+
Structure that contains data needed for each collision step.
Definition PhysicsUpdateContext.h:52
+
+
+ + + + diff --git a/_physics_system_update_8svg.html b/_physics_system_update_8svg.html new file mode 100644 index 000000000..72d7e7195 --- /dev/null +++ b/_physics_system_update_8svg.html @@ -0,0 +1,114 @@ + + + + + + + +Jolt Physics: Docs/PhysicsSystemUpdate.svg File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsSystemUpdate.svg File Reference
+
+
+
+
+ + + + diff --git a/_physics_update_context_8cpp.html b/_physics_update_context_8cpp.html new file mode 100644 index 000000000..bb9ae44de --- /dev/null +++ b/_physics_update_context_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsUpdateContext.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsUpdateContext.cpp File Reference
+
+
+
+
+ + + + diff --git a/_physics_update_context_8h.html b/_physics_update_context_8h.html new file mode 100644 index 000000000..2ecfc562d --- /dev/null +++ b/_physics_update_context_8h.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsUpdateContext.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsUpdateContext.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + +

+Classes

class  PhysicsUpdateContext
 Information used during the Update call. More...
 
struct  PhysicsUpdateContext::BodyPairQueue
 
struct  PhysicsUpdateContext::Step
 Structure that contains data needed for each collision step. More...
 
struct  PhysicsUpdateContext::Step::CCDBody
 Contains the information needed to cast a body through the scene to do continuous collision detection. More...
 
+
+
+ + + + diff --git a/_physics_update_context_8h.js b/_physics_update_context_8h.js new file mode 100644 index 000000000..b991a99fe --- /dev/null +++ b/_physics_update_context_8h.js @@ -0,0 +1,7 @@ +var _physics_update_context_8h = +[ + [ "PhysicsUpdateContext", "class_physics_update_context.html", "class_physics_update_context" ], + [ "PhysicsUpdateContext::BodyPairQueue", "struct_physics_update_context_1_1_body_pair_queue.html", "struct_physics_update_context_1_1_body_pair_queue" ], + [ "PhysicsUpdateContext::Step", "struct_physics_update_context_1_1_step.html", "struct_physics_update_context_1_1_step" ], + [ "PhysicsUpdateContext::Step::CCDBody", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html", "struct_physics_update_context_1_1_step_1_1_c_c_d_body" ] +]; \ No newline at end of file diff --git a/_physics_update_context_8h_source.html b/_physics_update_context_8h_source.html new file mode 100644 index 000000000..131d56846 --- /dev/null +++ b/_physics_update_context_8h_source.html @@ -0,0 +1,420 @@ + + + + + + + +Jolt Physics: Jolt/Physics/PhysicsUpdateContext.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsUpdateContext.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
+ + + + +
11#include <Jolt/Core/JobSystem.h>
+ +
13
+ +
15
+
16class PhysicsSystem;
+
17class IslandBuilder;
+
18class Constraint;
+
19class TempAllocator;
+ +
21
+
+ +
24{
+
25public:
+
27 explicit PhysicsUpdateContext(TempAllocator &inTempAllocator);
+ +
29
+
30 static constexpr int cMaxConcurrency = 32;
+
31
+ +
33
+
34 struct Step;
+
35
+
+ +
37 {
+
38 atomic<uint32> mWriteIdx { 0 };
+
39 uint8 mPadding1[JPH_CACHE_LINE_SIZE - sizeof(atomic<uint32>)];
+
40
+
41 atomic<uint32> mReadIdx { 0 };
+
42 uint8 mPadding2[JPH_CACHE_LINE_SIZE - sizeof(atomic<uint32>)];
+
43 };
+
+
44
+ +
46
+
47 using JobMask = uint32;
+
48 static_assert(sizeof(JobMask) * 8 >= cMaxConcurrency);
+
49
+
+
51 struct Step
+
52 {
+
53 Step() = default;
+
54 Step(const Step &) { JPH_ASSERT(false); } // vector needs a copy constructor, but we're never going to call it
+
55
+ +
57
+
58 bool mIsFirst;
+
59 bool mIsLast;
+
60
+ +
62
+ +
64
+
65 atomic<uint32> mDetermineActiveConstraintReadIdx { 0 };
+
66 uint8 mPadding1[JPH_CACHE_LINE_SIZE - sizeof(atomic<uint32>)];
+
67
+
68 atomic<uint32> mNumActiveConstraints { 0 };
+
69 uint8 mPadding2[JPH_CACHE_LINE_SIZE - sizeof(atomic<uint32>)];
+
70
+
71 atomic<uint32> mSetupVelocityConstraintsReadIdx { 0 };
+
72 uint8 mPadding3[JPH_CACHE_LINE_SIZE - sizeof(atomic<uint32>)];
+
73
+
74 atomic<uint32> mStepListenerReadIdx { 0 };
+
75 uint8 mPadding4[JPH_CACHE_LINE_SIZE - sizeof(atomic<uint32>)];
+
76
+
77 atomic<uint32> mApplyGravityReadIdx { 0 };
+
78 uint8 mPadding5[JPH_CACHE_LINE_SIZE - sizeof(atomic<uint32>)];
+
79
+
80 atomic<uint32> mActiveBodyReadIdx { 0 };
+
81 uint8 mPadding6[JPH_CACHE_LINE_SIZE - sizeof(atomic<uint32>)];
+
82
+ +
84
+ +
86
+
87 atomic<JobMask> mActiveFindCollisionJobs;
+
88
+
89 atomic<uint> mNumBodyPairs { 0 };
+
90 atomic<uint> mNumManifolds { 0 };
+
91
+ + +
94
+
+
96 struct CCDBody
+
97 {
+
98 CCDBody(BodyID inBodyID1, Vec3Arg inDeltaPosition, float inLinearCastThresholdSq, float inMaxPenetration) : mDeltaPosition(inDeltaPosition), mBodyID1(inBodyID1), mLinearCastThresholdSq(inLinearCastThresholdSq), mMaxPenetration(inMaxPenetration) { }
+
99
+ + + + + + +
106 float mFraction = 1.0f;
+
107 float mFractionPlusSlop = 1.0f;
+ + + +
111 };
+
+
112 atomic<uint32> mIntegrateVelocityReadIdx { 0 };
+
113 CCDBody * mCCDBodies = nullptr;
+ +
115 atomic<uint32> mNumCCDBodies = 0;
+
116 atomic<uint32> mNextCCDBody { 0 };
+
117 int * mActiveBodyToCCDBody = nullptr;
+ +
119
+
120 // Jobs in order of execution (some run in parallel)
+ + + + + + + + + + + + + + + + + + + + + + +
143 };
+
+
144
+ +
146
+
148 int GetMaxConcurrency() const { const int max_concurrency = PhysicsUpdateContext::cMaxConcurrency; return min(max_concurrency, mJobSystem->GetMaxConcurrency()); }
+
149
+ +
+ + + +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_CACHE_LINE_SIZE
Definition Core.h:492
+
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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ + + + +
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:103
+
Definition ContactListener.h:41
+
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
Definition IslandBuilder.h:19
+
A job barrier keeps track of a number of jobs and allows waiting until they are all completed.
Definition JobSystem.h:123
+
Definition JobSystem.h:80
+
Definition JobSystem.h:70
+
virtual int GetMaxConcurrency() const =0
Get maximum number of concurrently executing jobs.
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition PhysicsSystem.h:29
+
Information used during the Update call.
Definition PhysicsUpdateContext.h:24
+
~PhysicsUpdateContext()
Definition PhysicsUpdateContext.cpp:17
+
SoftBodyUpdateContext * mSoftBodyUpdateContexts
Contexts for updating soft bodies.
Definition PhysicsUpdateContext.h:168
+
Constraint ** mActiveConstraints
Constraints that were active at the start of the physics update step (activating bodies can activate ...
Definition PhysicsUpdateContext.h:159
+
PhysicsSystem * mPhysicsSystem
The physics system we belong to.
Definition PhysicsUpdateContext.h:150
+
JobSystem::Barrier * mBarrier
Barrier used to wait for all physics jobs to complete.
Definition PhysicsUpdateContext.h:153
+
int GetMaxConcurrency() const
Maximum amount of concurrent jobs on this machine.
Definition PhysicsUpdateContext.h:148
+
Steps mSteps
Definition PhysicsUpdateContext.h:165
+
float mStepDeltaTime
Delta time for a simulation step (collision step)
Definition PhysicsUpdateContext.h:155
+
float mWarmStartImpulseRatio
Ratio of this step delta time vs last step.
Definition PhysicsUpdateContext.h:156
+
uint32 JobMask
A mask that has as many bits as we can have concurrent jobs.
Definition PhysicsUpdateContext.h:47
+
atomic< uint32 > mErrors
Errors that occurred during the update, actual type is EPhysicsUpdateError.
Definition PhysicsUpdateContext.h:157
+
JobSystem * mJobSystem
Job system that processes jobs.
Definition PhysicsUpdateContext.h:152
+
TempAllocator * mTempAllocator
Temporary allocator used during the update.
Definition PhysicsUpdateContext.h:151
+
BodyPair * mBodyPairs
A list of body pairs found by the broadphase.
Definition PhysicsUpdateContext.h:161
+
static constexpr int cMaxConcurrency
Maximum supported amount of concurrent jobs.
Definition PhysicsUpdateContext.h:30
+
atomic< uint > mSoftBodyToCollide
Next soft body to take when running SoftBodyCollide jobs.
Definition PhysicsUpdateContext.h:169
+
uint mNumSoftBodies
Number of active soft bodies in the simulation.
Definition PhysicsUpdateContext.h:167
+
IslandBuilder * mIslandBuilder
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
Definition PhysicsUpdateContext.h:163
+
Temporary data used by the update of a soft body.
Definition SoftBodyUpdateContext.h:18
+ +
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
+
Definition Vec3.h:17
+
Structure that holds a body pair.
Definition BodyPair.h:14
+
Context used during broadphase update.
Definition BroadPhase.h:44
+
Definition PhysicsUpdateContext.h:37
+
atomic< uint32 > mReadIdx
Next index to read in mBodyPair array (need to add thread index * mMaxBodyPairsPerQueue and modulo mM...
Definition PhysicsUpdateContext.h:41
+
uint8 mPadding1[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
Moved to own cache line to avoid conflicts with consumer jobs.
Definition PhysicsUpdateContext.h:39
+
uint8 mPadding2[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
Moved to own cache line to avoid conflicts with producer/consumer jobs.
Definition PhysicsUpdateContext.h:42
+
atomic< uint32 > mWriteIdx
Next index to write in mBodyPair array (need to add thread index * mMaxBodyPairsPerQueue and modulo m...
Definition PhysicsUpdateContext.h:38
+
Contains the information needed to cast a body through the scene to do continuous collision detection...
Definition PhysicsUpdateContext.h:97
+
float mMaxPenetration
Maximum allowed penetration (determined by inner radius of shape)
Definition PhysicsUpdateContext.h:109
+
RVec3 mContactPointOn2
World space contact point on body 2 of closest hit (only valid if mFractionPlusSlop < 1)
Definition PhysicsUpdateContext.h:102
+
float mLinearCastThresholdSq
Maximum allowed squared movement before doing a linear cast (determined by inner radius of shape)
Definition PhysicsUpdateContext.h:108
+
Vec3 mDeltaPosition
Desired rotation step.
Definition PhysicsUpdateContext.h:100
+
SubShapeID mSubShapeID2
Sub shape of body 2 that was hit (only valid if mFractionPlusSlop < 1)
Definition PhysicsUpdateContext.h:105
+
BodyID mBodyID2
Body 2 (the body of the closest hit, only valid if mFractionPlusSlop < 1)
Definition PhysicsUpdateContext.h:104
+
Vec3 mContactNormal
World space normal of closest hit (only valid if mFractionPlusSlop < 1)
Definition PhysicsUpdateContext.h:101
+
ContactSettings mContactSettings
The contact settings for this contact.
Definition PhysicsUpdateContext.h:110
+
CCDBody(BodyID inBodyID1, Vec3Arg inDeltaPosition, float inLinearCastThresholdSq, float inMaxPenetration)
Definition PhysicsUpdateContext.h:98
+
float mFraction
Fraction at which the hit occurred.
Definition PhysicsUpdateContext.h:106
+
float mFractionPlusSlop
Fraction at which the hit occurred + extra delta to allow body to penetrate by mMaxPenetration.
Definition PhysicsUpdateContext.h:107
+
BodyID mBodyID1
Body 1 (the body that is performing collision detection)
Definition PhysicsUpdateContext.h:103
+
Structure that contains data needed for each collision step.
Definition PhysicsUpdateContext.h:52
+
JobHandleArray mFindCollisions
Find all collisions between active bodies an the world.
Definition PhysicsUpdateContext.h:125
+
uint8 mPadding4[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
Padding to avoid sharing cache line with the next atomic.
Definition PhysicsUpdateContext.h:75
+
atomic< uint32 > mSolveVelocityConstraintsNextIsland
Next island that needs to be processed for the solve velocity constraints step (doesn't need own cach...
Definition PhysicsUpdateContext.h:92
+
uint32 mNumActiveBodyToCCDBody
Number of indices in mActiveBodyToCCDBody.
Definition PhysicsUpdateContext.h:118
+
bool mIsLast
If this is the last step.
Definition PhysicsUpdateContext.h:59
+
JobHandleArray mSoftBodyCollide
Finds all colliding shapes for soft bodies.
Definition PhysicsUpdateContext.h:139
+
uint8 mPadding6[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
Padding to avoid sharing cache line with the next atomic.
Definition PhysicsUpdateContext.h:81
+
uint8 mPadding3[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
Padding to avoid sharing cache line with the next atomic.
Definition PhysicsUpdateContext.h:72
+
JobHandleArray mSolveVelocityConstraints
Solve the constraints in the velocity domain.
Definition PhysicsUpdateContext.h:131
+
JobHandle mPostIntegrateVelocity
Finalize integration of all body positions.
Definition PhysicsUpdateContext.h:134
+
JobHandle mPreIntegrateVelocity
Setup integration of all body positions.
Definition PhysicsUpdateContext.h:132
+
atomic< uint32 > mNumCCDBodies
Number of CCD bodies in mCCDBodies.
Definition PhysicsUpdateContext.h:115
+
atomic< uint32 > mStepListenerReadIdx
Next step listener to call.
Definition PhysicsUpdateContext.h:74
+
uint32 mCCDBodiesCapacity
Capacity of the mCCDBodies list.
Definition PhysicsUpdateContext.h:114
+
atomic< uint > mNumBodyPairs
The number of body pairs found in this step (used to size the contact cache in the next step)
Definition PhysicsUpdateContext.h:89
+
JobHandle mContactRemovedCallbacks
Calls the contact removed callbacks.
Definition PhysicsUpdateContext.h:137
+
JobHandle mBuildIslandsFromConstraints
Go over all constraints and assign the bodies they're attached to to an island.
Definition PhysicsUpdateContext.h:128
+
JobHandleArray mSolvePositionConstraints
Solve all constraints in the position domain.
Definition PhysicsUpdateContext.h:136
+
uint8 mPadding2[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
Padding to avoid sharing cache line with the next atomic.
Definition PhysicsUpdateContext.h:69
+
JobHandle mSoftBodyFinalize
Finalizes the soft body update.
Definition PhysicsUpdateContext.h:141
+
atomic< uint32 > mActiveBodyReadIdx
Index of fist active body that has not yet been processed by the broadphase.
Definition PhysicsUpdateContext.h:80
+
atomic< uint32 > mSolvePositionConstraintsNextIsland
Next island that needs to be processed for the solve position constraints step (doesn't need own cach...
Definition PhysicsUpdateContext.h:93
+
atomic< uint > mNumManifolds
The number of manifolds found in this step (used to size the contact cache in the next step)
Definition PhysicsUpdateContext.h:90
+
uint32 mNumActiveBodiesAtStepStart
Number of bodies that were active at the start of the physics update step. Only these bodies will rec...
Definition PhysicsUpdateContext.h:63
+
JobHandleArray mIntegrateVelocity
Integrate all body positions.
Definition PhysicsUpdateContext.h:133
+
JobHandle mResolveCCDContacts
Updates the positions and velocities for all bodies that need continuous collision detection.
Definition PhysicsUpdateContext.h:135
+
atomic< uint32 > mSetupVelocityConstraintsReadIdx
Next constraint for setting up velocity constraints.
Definition PhysicsUpdateContext.h:71
+
JobHandleArray mApplyGravity
Update velocities of bodies with gravity.
Definition PhysicsUpdateContext.h:124
+
uint8 mPadding1[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
Padding to avoid sharing cache line with the next atomic.
Definition PhysicsUpdateContext.h:66
+
uint8 mPadding5[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
Padding to avoid sharing cache line with the next atomic.
Definition PhysicsUpdateContext.h:78
+
Step(const Step &)
Definition PhysicsUpdateContext.h:54
+
JobHandle mStartNextStep
Job that kicks the next step (empty for the last step)
Definition PhysicsUpdateContext.h:142
+
bool mIsFirst
If this is the first step.
Definition PhysicsUpdateContext.h:58
+
CCDBody * mCCDBodies
List of bodies that need to do continuous collision detection.
Definition PhysicsUpdateContext.h:113
+ +
JobHandleArray mSetupVelocityConstraints
Calculate properties for all constraints in the constraint manager.
Definition PhysicsUpdateContext.h:127
+
atomic< JobMask > mActiveFindCollisionJobs
A bitmask that indicates which jobs are still active.
Definition PhysicsUpdateContext.h:87
+
JobHandle mBodySetIslandIndex
Set the current island index on each body (not used by the simulation, only for drawing purposes)
Definition PhysicsUpdateContext.h:130
+
JobHandle mFinalizeIslands
Finalize calculation simulation islands.
Definition PhysicsUpdateContext.h:129
+
JobHandleArray mStepListeners
Listeners to notify of the beginning of a physics step.
Definition PhysicsUpdateContext.h:122
+
JobHandle mUpdateBroadphaseFinalize
Swap the newly built tree with the current tree.
Definition PhysicsUpdateContext.h:126
+
JobHandleArray mSoftBodySimulate
Simulates all particles.
Definition PhysicsUpdateContext.h:140
+
PhysicsUpdateContext * mContext
The physics update context.
Definition PhysicsUpdateContext.h:56
+
atomic< uint32 > mNextCCDBody
Next unprocessed body index in mCCDBodies.
Definition PhysicsUpdateContext.h:116
+
atomic< uint32 > mApplyGravityReadIdx
Next body to apply gravity to.
Definition PhysicsUpdateContext.h:77
+
uint32 mMaxBodyPairsPerQueue
Amount of body pairs that we can queue per queue.
Definition PhysicsUpdateContext.h:85
+
atomic< uint32 > mIntegrateVelocityReadIdx
Next active body index to take when integrating velocities.
Definition PhysicsUpdateContext.h:112
+
JobHandleArray mDetermineActiveConstraints
Determine which constraints will be active during this step.
Definition PhysicsUpdateContext.h:123
+
int * mActiveBodyToCCDBody
A mapping between an index in BodyManager::mActiveBodies and the index in mCCDBodies.
Definition PhysicsUpdateContext.h:117
+
atomic< uint32 > mNumActiveConstraints
Number of constraints in the mActiveConstraints array.
Definition PhysicsUpdateContext.h:68
+
atomic< uint32 > mDetermineActiveConstraintReadIdx
Next constraint for determine active constraints.
Definition PhysicsUpdateContext.h:65
+
BroadPhase::UpdateState mBroadPhaseUpdateState
Handle returned by Broadphase::UpdatePrepare.
Definition PhysicsUpdateContext.h:61
+
BodyPairQueues mBodyPairQueues
Queues in which to put body pairs that need to be tested by the narrowphase.
Definition PhysicsUpdateContext.h:83
+
JobHandle mSoftBodyPrepare
Prepares updating the soft bodies.
Definition PhysicsUpdateContext.h:138
+
JobHandle mBroadPhasePrepare
Prepares the new tree in the background.
Definition PhysicsUpdateContext.h:121
+
+
+ + + + diff --git a/_plane_8h.html b/_plane_8h.html new file mode 100644 index 000000000..bfacedc99 --- /dev/null +++ b/_plane_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/Plane.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Plane.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  Plane
 An infinite plane described by the formula X . Normal + Constant = 0. More...
 
+
+
+ + + + diff --git a/_plane_8h.js b/_plane_8h.js new file mode 100644 index 000000000..30f57b2c2 --- /dev/null +++ b/_plane_8h.js @@ -0,0 +1,4 @@ +var _plane_8h = +[ + [ "Plane", "class_plane.html", "class_plane" ] +]; \ No newline at end of file diff --git a/_plane_8h_source.html b/_plane_8h_source.html new file mode 100644 index 000000000..ec0532ab6 --- /dev/null +++ b/_plane_8h_source.html @@ -0,0 +1,255 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/Plane.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Plane.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
+
+
10class [[nodiscard]] Plane
+
11{
+
12public:
+ +
14
+
16 Plane() = default;
+
17 explicit Plane(Vec4Arg inNormalAndConstant) : mNormalAndConstant(inNormalAndConstant) { }
+
18 Plane(Vec3Arg inNormal, float inConstant) : mNormalAndConstant(inNormal, inConstant) { }
+
19
+
21 static Plane sFromPointAndNormal(Vec3Arg inPoint, Vec3Arg inNormal) { return Plane(Vec4(inNormal, -inNormal.Dot(inPoint))); }
+
22
+
24 static Plane sFromPointAndNormal(DVec3Arg inPoint, Vec3Arg inNormal) { return Plane(Vec4(inNormal, -float(DVec3(inNormal).Dot(inPoint)))); }
+
25
+
27 static Plane sFromPointsCCW(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3) { return sFromPointAndNormal(inV1, (inV2 - inV1).Cross(inV3 - inV1).Normalized()); }
+
28
+
29 // Properties
+
30 Vec3 GetNormal() const { return Vec3(mNormalAndConstant); }
+
31 void SetNormal(Vec3Arg inNormal) { mNormalAndConstant = Vec4(inNormal, mNormalAndConstant.GetW()); }
+
32 float GetConstant() const { return mNormalAndConstant.GetW(); }
+
33 void SetConstant(float inConstant) { mNormalAndConstant.SetW(inConstant); }
+
34
+
36 Plane Offset(float inDistance) const { return Plane(mNormalAndConstant - Vec4(Vec3::sZero(), inDistance)); }
+
37
+
+
39 inline Plane GetTransformed(Mat44Arg inTransform) const
+
40 {
+
41 Vec3 transformed_normal = inTransform.Multiply3x3(GetNormal());
+
42 return Plane(transformed_normal, GetConstant() - inTransform.GetTranslation().Dot(transformed_normal));
+
43 }
+
+
44
+
+
46 inline Plane Scaled(Vec3Arg inScale) const
+
47 {
+
48 Vec3 scaled_normal = GetNormal() / inScale;
+
49 float scaled_normal_length = scaled_normal.Length();
+
50 return Plane(scaled_normal / scaled_normal_length, GetConstant() / scaled_normal_length);
+
51 }
+
+
52
+
54 float SignedDistance(Vec3Arg inPoint) const { return inPoint.Dot(GetNormal()) + GetConstant(); }
+
55
+
57 Vec3 ProjectPointOnPlane(Vec3Arg inPoint) const { return inPoint - GetNormal() * SignedDistance(inPoint); }
+
58
+
+
60 static bool sIntersectPlanes(const Plane &inP1, const Plane &inP2, const Plane &inP3, Vec3 &outPoint)
+
61 {
+
62 // We solve the equation:
+
63 // |ax, ay, az, aw| | x | | 0 |
+
64 // |bx, by, bz, bw| * | y | = | 0 |
+
65 // |cx, cy, cz, cw| | z | | 0 |
+
66 // | 0, 0, 0, 1| | 1 | | 1 |
+
67 // Where normal of plane 1 = (ax, ay, az), plane constant of 1 = aw, normal of plane 2 = (bx, by, bz) etc.
+
68 // This involves inverting the matrix and multiplying it with [0, 0, 0, 1]
+
69
+
70 // Fetch the normals and plane constants for the three planes
+
71 Vec4 a = inP1.mNormalAndConstant;
+
72 Vec4 b = inP2.mNormalAndConstant;
+
73 Vec4 c = inP3.mNormalAndConstant;
+
74
+
75 // Result is a vector that we have to divide by:
+
76 float denominator = Vec3(a).Dot(Vec3(b).Cross(Vec3(c)));
+
77 if (denominator == 0.0f)
+
78 return false;
+
79
+
80 // The numerator is:
+
81 // [aw*(bz*cy-by*cz)+ay*(bw*cz-bz*cw)+az*(by*cw-bw*cy)]
+
82 // [aw*(bx*cz-bz*cx)+ax*(bz*cw-bw*cz)+az*(bw*cx-bx*cw)]
+
83 // [aw*(by*cx-bx*cy)+ax*(bw*cy-by*cw)+ay*(bx*cw-bw*cx)]
+
84 Vec4 numerator =
+ + + +
88
+
89 outPoint = Vec3(numerator) / denominator;
+
90 return true;
+
91 }
+
+
92
+
93private:
+
94#ifdef JPH_OBJECT_STREAM
+
95 friend void CreateRTTIPlane(class RTTI &); // For JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS
+
96#endif
+
97
+
98 Vec4 mNormalAndConstant;
+
99};
+
+
100
+ +
#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
+
@ SWIZZLE_Z
Use the Z component.
Definition Swizzle.h:14
+
@ SWIZZLE_W
Use the W component.
Definition Swizzle.h:15
+
@ SWIZZLE_X
Use the X component.
Definition Swizzle.h:12
+
@ SWIZZLE_UNUSED
We always use the Z component when we don't specifically want to initialize a value,...
Definition Swizzle.h:16
+
@ SWIZZLE_Y
Use the Y component.
Definition Swizzle.h:13
+
Definition DVec3.h:14
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition Mat44.inl:316
+
JPH_INLINE Vec3 GetTranslation() const
Definition Mat44.h:152
+
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
Plane(Vec3Arg inNormal, float inConstant)
Definition Plane.h:18
+
friend void CreateRTTIPlane(class RTTI &)
+
Plane GetTransformed(Mat44Arg inTransform) const
Transform the plane by a matrix.
Definition Plane.h:39
+
void SetConstant(float inConstant)
Definition Plane.h:33
+
float GetConstant() const
Definition Plane.h:32
+
static Plane sFromPointAndNormal(DVec3Arg inPoint, Vec3Arg inNormal)
Create from point and normal, double precision version that more accurately calculates the plane cons...
Definition Plane.h:24
+
Vec3 GetNormal() const
Definition Plane.h:30
+
Plane(Vec4Arg inNormalAndConstant)
Definition Plane.h:17
+
float SignedDistance(Vec3Arg inPoint) const
Distance point to plane.
Definition Plane.h:54
+
void SetNormal(Vec3Arg inNormal)
Definition Plane.h:31
+
static Plane sFromPointAndNormal(Vec3Arg inPoint, Vec3Arg inNormal)
Create from point and normal.
Definition Plane.h:21
+
static bool sIntersectPlanes(const Plane &inP1, const Plane &inP2, const Plane &inP3, Vec3 &outPoint)
Returns intersection point between 3 planes.
Definition Plane.h:60
+
Plane Scaled(Vec3Arg inScale) const
Scale the plane, can handle non-uniform and negative scaling.
Definition Plane.h:46
+
JPH_OVERRIDE_NEW_DELETE Plane()=default
Constructor.
+
static Plane sFromPointsCCW(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3)
Create from 3 counter clockwise points.
Definition Plane.h:27
+
Plane Offset(float inDistance) const
Offset the plane (positive value means move it in the direction of the plane normal)
Definition Plane.h:36
+
Vec3 ProjectPointOnPlane(Vec3Arg inPoint) const
Project inPoint onto the plane.
Definition Plane.h:57
+
Definition RTTI.h:122
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec3.inl:677
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Definition Vec4.h:14
+
JPH_INLINE Vec4 SplatW() const
Replicate the W component to all components.
Definition Vec4.inl:588
+
JPH_INLINE Vec4 Swizzle() const
Swizzle the elements in inV.
+
+
+ + + + diff --git a/_plane_shape_8cpp.html b/_plane_shape_8cpp.html new file mode 100644 index 000000000..e50f7ec3a --- /dev/null +++ b/_plane_shape_8cpp.html @@ -0,0 +1,165 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/PlaneShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PlaneShape.cpp File Reference
+
+
+ + + + +

+Classes

struct  PlaneShape::PSGetTrianglesContext
 
+ + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PlaneShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PlaneShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_plane_shape_8cpp.js b/_plane_shape_8cpp.js new file mode 100644 index 000000000..f2429e1e8 --- /dev/null +++ b/_plane_shape_8cpp.js @@ -0,0 +1,5 @@ +var _plane_shape_8cpp = +[ + [ "PlaneShape::PSGetTrianglesContext", "struct_plane_shape_1_1_p_s_get_triangles_context.html", "struct_plane_shape_1_1_p_s_get_triangles_context" ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_plane_shape_8cpp.html#aba8509e05ae5bdfd29eb71dd427f0038", null ] +]; \ No newline at end of file diff --git a/_plane_shape_8h.html b/_plane_shape_8h.html new file mode 100644 index 000000000..dc4b735db --- /dev/null +++ b/_plane_shape_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/PlaneShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PlaneShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  PlaneShapeSettings
 Class that constructs a PlaneShape. More...
 
class  PlaneShape
 
+
+
+ + + + diff --git a/_plane_shape_8h.js b/_plane_shape_8h.js new file mode 100644 index 000000000..4847fcb92 --- /dev/null +++ b/_plane_shape_8h.js @@ -0,0 +1,5 @@ +var _plane_shape_8h = +[ + [ "PlaneShapeSettings", "class_plane_shape_settings.html", "class_plane_shape_settings" ], + [ "PlaneShape", "class_plane_shape.html", "class_plane_shape" ] +]; \ No newline at end of file diff --git a/_plane_shape_8h_source.html b/_plane_shape_8h_source.html new file mode 100644 index 000000000..4b759db70 --- /dev/null +++ b/_plane_shape_8h_source.html @@ -0,0 +1,321 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/PlaneShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PlaneShape.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + + +
10
+ +
12
+ +
14
+
+ +
17{
+
18public:
+ +
20
+
21
+
22 PlaneShapeSettings() = default;
+
23
+
25 PlaneShapeSettings(const Plane &inPlane, const PhysicsMaterial *inMaterial = nullptr, float inHalfExtent = cDefaultHalfExtent) : mPlane(inPlane), mMaterial(inMaterial), mHalfExtent(inHalfExtent) { }
+
26
+
27 // See: ShapeSettings
+
28 virtual ShapeResult Create() const override;
+
29
+ +
31
+ +
33
+
34 static constexpr float cDefaultHalfExtent = 1000.0f;
+
35
+
36 float mHalfExtent = cDefaultHalfExtent;
+
37};
+
+
38
+
+
42class JPH_EXPORT PlaneShape final : public Shape
+
43{
+
44public:
+ +
46
+ +
49 PlaneShape(const Plane &inPlane, const PhysicsMaterial *inMaterial = nullptr, float inHalfExtent = PlaneShapeSettings::cDefaultHalfExtent) : Shape(EShapeType::Plane, EShapeSubType::Plane), mPlane(inPlane), mMaterial(inMaterial), mHalfExtent(inHalfExtent) { CalculateLocalBounds(); }
+
50 PlaneShape(const PlaneShapeSettings &inSettings, ShapeResult &outResult);
+
51
+
53 const Plane & GetPlane() const { return mPlane; }
+
54
+
56 float GetHalfExtent() const { return mHalfExtent; }
+
57
+
58 // See Shape::MustBeStatic
+
59 virtual bool MustBeStatic() const override { return true; }
+
60
+
61 // See Shape::GetLocalBounds
+
62 virtual AABox GetLocalBounds() const override { return mLocalBounds; }
+
63
+
64 // See Shape::GetSubShapeIDBitsRecursive
+
65 virtual uint GetSubShapeIDBitsRecursive() const override { return 0; }
+
66
+
67 // See Shape::GetInnerRadius
+
68 virtual float GetInnerRadius() const override { return 0.0f; }
+
69
+
70 // See Shape::GetMassProperties
+
71 virtual MassProperties GetMassProperties() const override;
+
72
+
73 // See Shape::GetMaterial
+
74 virtual const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const override { JPH_ASSERT(inSubShapeID.IsEmpty(), "Invalid subshape ID"); return mMaterial != nullptr? mMaterial : PhysicsMaterial::sDefault; }
+
75
+
76 // See Shape::GetSurfaceNormal
+
77 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override { JPH_ASSERT(inSubShapeID.IsEmpty(), "Invalid subshape ID"); return mPlane.GetNormal(); }
+
78
+
79 // See Shape::GetSupportingFace
+
80 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
81
+
82#ifdef JPH_DEBUG_RENDERER
+
83 // See Shape::Draw
+
84 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
85#endif // JPH_DEBUG_RENDERER
+
86
+
87 // See Shape::CastRay
+
88 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
89 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
90
+
91 // See: Shape::CollidePoint
+
92 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
93
+
94 // See: Shape::CollideSoftBodyVertices
+
95 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
96
+
97 // See Shape::GetTrianglesStart
+
98 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override;
+
99
+
100 // See Shape::GetTrianglesNext
+
101 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override;
+
102
+
103 // See Shape::GetSubmergedVolume
+
104 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override { JPH_ASSERT(false, "Not supported"); }
+
105
+
106 // See Shape
+
107 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
108 virtual void SaveMaterialState(PhysicsMaterialList &outMaterials) const override;
+
109 virtual void RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override;
+
110
+
111 // See Shape::GetStats
+
112 virtual Stats GetStats() const override { return Stats(sizeof(*this), 0); }
+
113
+
114 // See Shape::GetVolume
+
115 virtual float GetVolume() const override { return 0; }
+
116
+
117 // Register shape functions with the registry
+
118 static void sRegister();
+
119
+
120protected:
+
121 // See: Shape::RestoreBinaryState
+
122 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
123
+
124private:
+
125 struct PSGetTrianglesContext;
+
126
+
127 // Get 4 vertices that form the plane
+
128 void GetVertices(Vec3 *outVertices) const;
+
129
+
130 // Cache the local bounds
+
131 void CalculateLocalBounds();
+
132
+
133 // Helper functions called by CollisionDispatch
+
134 static void sCollideConvexVsPlane(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);
+
135 static void sCastConvexVsPlane(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
136
+
137 Plane mPlane;
+ +
139 float mHalfExtent;
+
140 AABox mLocalBounds;
+
141};
+
+
142
+ +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_IF_DEBUG_RENDERER(...)
Definition Core.h:536
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#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:76
+
EShapeType
Shapes are categorized in groups, each shape can return which group it belongs to through its Shape::...
Definition Shape.h:57
+ +
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
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
static RefConst< PhysicsMaterial > sDefault
Default material that is used when a shape has no materials defined.
Definition PhysicsMaterial.h:31
+
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
Vec3 GetNormal() const
Definition Plane.h:30
+
Definition PlaneShape.h:43
+
const Plane & GetPlane() const
Get the plane.
Definition PlaneShape.h:53
+
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 PlaneShape.h:104
+
virtual float GetVolume() const override
Definition PlaneShape.h:115
+
PlaneShape(const Plane &inPlane, const PhysicsMaterial *inMaterial=nullptr, float inHalfExtent=PlaneShapeSettings::cDefaultHalfExtent)
Definition PlaneShape.h:49
+
virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
Definition PlaneShape.h:77
+
virtual AABox GetLocalBounds() const override
Get local bounding box including convex radius, this box is centered around the center of mass rather...
Definition PlaneShape.h:62
+
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition PlaneShape.h:112
+
float GetHalfExtent() const
Get the half-extent of the bounding box of the plane.
Definition PlaneShape.h:56
+
JPH_OVERRIDE_NEW_DELETE PlaneShape()
Constructor.
Definition PlaneShape.h:48
+
virtual const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const override
Get the material assigned to a particular sub shape ID.
Definition PlaneShape.h:74
+
virtual float GetInnerRadius() const override
Definition PlaneShape.h:68
+
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 PlaneShape.h:59
+
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 PlaneShape.h:65
+
Class that constructs a PlaneShape.
Definition PlaneShape.h:17
+
Plane mPlane
Plane that describes the shape. The negative half space is considered solid.
Definition PlaneShape.h:30
+
RefConst< PhysicsMaterial > mMaterial
Surface material of the plane.
Definition PlaneShape.h:32
+
static constexpr float cDefaultHalfExtent
Default half-extent of the plane (total size along 1 axis will be 2 * half-extent)
Definition PlaneShape.h:34
+
Definition Quat.h:33
+
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:151
+
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:184
+
Definition Shape.h:145
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
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
+
bool IsEmpty() const
Definition SubShapeID.h:65
+
Definition Vec3.h:17
+
Definition RayCast.h:47
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_point_constraint_8cpp.html b/_point_constraint_8cpp.html new file mode 100644 index 000000000..c01dc2d27 --- /dev/null +++ b/_point_constraint_8cpp.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PointConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PointConstraint.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PointConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PointConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_point_constraint_8cpp.js b/_point_constraint_8cpp.js new file mode 100644 index 000000000..1bf52b9a8 --- /dev/null +++ b/_point_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _point_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_point_constraint_8cpp.html#ab260ca2f1fec0fa18e1a43e15616b14a", null ] +]; \ No newline at end of file diff --git a/_point_constraint_8h.html b/_point_constraint_8h.html new file mode 100644 index 000000000..e424e9d6e --- /dev/null +++ b/_point_constraint_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PointConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PointConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  PointConstraintSettings
 Point constraint settings, used to create a point constraint. More...
 
class  PointConstraint
 A point constraint constrains 2 bodies on a single point (removing 3 degrees of freedom) More...
 
+
+
+ + + + diff --git a/_point_constraint_8h.js b/_point_constraint_8h.js new file mode 100644 index 000000000..53e5ec046 --- /dev/null +++ b/_point_constraint_8h.js @@ -0,0 +1,5 @@ +var _point_constraint_8h = +[ + [ "PointConstraintSettings", "class_point_constraint_settings.html", "class_point_constraint_settings" ], + [ "PointConstraint", "class_point_constraint.html", "class_point_constraint" ] +]; \ No newline at end of file diff --git a/_point_constraint_8h_source.html b/_point_constraint_8h_source.html new file mode 100644 index 000000000..29b7724b6 --- /dev/null +++ b/_point_constraint_8h_source.html @@ -0,0 +1,240 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PointConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PointConstraint.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
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+ +
17
+
18 // See: ConstraintSettings::SaveBinaryState
+
19 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
20
+
22 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
+
23
+ +
26
+
28 RVec3 mPoint1 = RVec3::sZero();
+
29
+
32 RVec3 mPoint2 = RVec3::sZero();
+
33
+
34protected:
+
35 // See: ConstraintSettings::RestoreBinaryState
+
36 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
37};
+
+
38
+
+ +
41{
+
42public:
+ +
44
+
46 PointConstraint(Body &inBody1, Body &inBody2, const PointConstraintSettings &inSettings);
+
47
+
48 // Generic interface of a constraint
+
49 virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::Point; }
+
50 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override;
+
51 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
52 virtual void ResetWarmStart() override;
+
53 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
54 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
55 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
56#ifdef JPH_DEBUG_RENDERER
+
57 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
58#endif // JPH_DEBUG_RENDERER
+
59 virtual void SaveState(StateRecorder &inStream) const override;
+
60 virtual void RestoreState(StateRecorder &inStream) override;
+
61 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
62
+
64 void SetPoint1(EConstraintSpace inSpace, RVec3Arg inPoint1);
+
65
+
67 void SetPoint2(EConstraintSpace inSpace, RVec3Arg inPoint2);
+
68
+
70 inline Vec3 GetLocalSpacePoint1() const { return mLocalSpacePosition1; }
+
71
+
73 inline Vec3 GetLocalSpacePoint2() const { return mLocalSpacePosition2; }
+
74
+
75 // See: TwoBodyConstraint
+
76 virtual Mat44 GetConstraintToBody1Matrix() const override { return Mat44::sTranslation(mLocalSpacePosition1); }
+
77 virtual Mat44 GetConstraintToBody2Matrix() const override { return Mat44::sTranslation(mLocalSpacePosition2); } // Note: Incorrect rotation as we don't track the original rotation difference, should not matter though as the constraint is not limiting rotation.
+
78
+
80 inline Vec3 GetTotalLambdaPosition() const { return mPointConstraintPart.GetTotalLambda(); }
+
81
+
82private:
+
83 // Internal helper function to calculate the values below
+
84 void CalculateConstraintProperties();
+
85
+
86 // Local space constraint positions
+
87 Vec3 mLocalSpacePosition1;
+
88 Vec3 mLocalSpacePosition2;
+
89
+
90 // The constraint part
+
91 PointConstraintPart mPointConstraintPart;
+
92};
+
+
93
+ +
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
+
@ WorldSpace
All constraint properties are specified in world space.
+
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#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
+ +
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sTranslation(Vec3Arg inV)
Get matrix that translates.
Definition Mat44.inl:144
+
A point constraint constrains 2 bodies on a single point (removing 3 degrees of freedom)
Definition PointConstraint.h:41
+
virtual Mat44 GetConstraintToBody2Matrix() const override
Calculates the transform that transforms from constraint space to body 2 space. The first column of t...
Definition PointConstraint.h:77
+
virtual EConstraintSubType GetSubType() const override
Get the sub type of a constraint.
Definition PointConstraint.h:49
+
virtual Mat44 GetConstraintToBody1Matrix() const override
Calculates the transform that transforms from constraint space to body 1 space. The first column of t...
Definition PointConstraint.h:76
+
Vec3 GetTotalLambdaPosition() const
Definition PointConstraint.h:80
+
Vec3 GetLocalSpacePoint1() const
Get the attachment point for body 1 relative to body 1 COM (transform by Body::GetCenterOfMassTransfo...
Definition PointConstraint.h:70
+
Vec3 GetLocalSpacePoint2() const
Get the attachment point for body 2 relative to body 2 COM (transform by Body::GetCenterOfMassTransfo...
Definition PointConstraint.h:73
+
Definition PointConstraintPart.h:41
+
Point constraint settings, used to create a point constraint.
Definition PointConstraint.h:14
+
Definition Reference.h:101
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_point_constraint_part_8h.html b/_point_constraint_part_8h.html new file mode 100644 index 000000000..3b227f6cf --- /dev/null +++ b/_point_constraint_part_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/PointConstraintPart.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PointConstraintPart.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  PointConstraintPart
 
+
+
+ + + + diff --git a/_point_constraint_part_8h.js b/_point_constraint_part_8h.js new file mode 100644 index 000000000..17eb9477b --- /dev/null +++ b/_point_constraint_part_8h.js @@ -0,0 +1,4 @@ +var _point_constraint_part_8h = +[ + [ "PointConstraintPart", "class_point_constraint_part.html", "class_point_constraint_part" ] +]; \ No newline at end of file diff --git a/_point_constraint_part_8h_source.html b/_point_constraint_part_8h_source.html new file mode 100644 index 000000000..ad6204b1c --- /dev/null +++ b/_point_constraint_part_8h_source.html @@ -0,0 +1,372 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/PointConstraintPart.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PointConstraintPart.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
+ + +
9
+ +
11
+
+ +
41{
+
42 JPH_INLINE bool ApplyVelocityStep(Body &ioBody1, Body &ioBody2, Vec3Arg inLambda) const
+
43 {
+
44 // Apply impulse if delta is not zero
+
45 if (inLambda != Vec3::sZero())
+
46 {
+
47 // Calculate velocity change due to constraint
+
48 //
+
49 // Impulse:
+
50 // P = J^T lambda
+
51 //
+
52 // Euler velocity integration:
+
53 // v' = v + M^-1 P
+
54 if (ioBody1.IsDynamic())
+
55 {
+ +
57 mp1->SubLinearVelocityStep(mp1->GetInverseMass() * inLambda);
+
58 mp1->SubAngularVelocityStep(mInvI1_R1X * inLambda);
+
59 }
+
60 if (ioBody2.IsDynamic())
+
61 {
+ +
63 mp2->AddLinearVelocityStep(mp2->GetInverseMass() * inLambda);
+
64 mp2->AddAngularVelocityStep(mInvI2_R2X * inLambda);
+
65 }
+
66 return true;
+
67 }
+
68
+
69 return false;
+
70 }
+
71
+
72public:
+
+
80 inline void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inR1, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inR2)
+
81 {
+
82 // Positions where the point constraint acts on (middle point between center of masses) in world space
+
83 mR1 = inRotation1.Multiply3x3(inR1);
+
84 mR2 = inRotation2.Multiply3x3(inR2);
+
85
+
86 // Calculate effective mass: K^-1 = (J M^-1 J^T)^-1
+
87 // Using: I^-1 = R * Ibody^-1 * R^T
+
88 float summed_inv_mass;
+
89 Mat44 inv_effective_mass;
+
90 if (inBody1.IsDynamic())
+
91 {
+
92 const MotionProperties *mp1 = inBody1.GetMotionProperties();
+
93 Mat44 inv_i1 = mp1->GetInverseInertiaForRotation(inRotation1);
+
94 summed_inv_mass = mp1->GetInverseMass();
+
95
+
96 Mat44 r1x = Mat44::sCrossProduct(mR1);
+
97 mInvI1_R1X = inv_i1.Multiply3x3(r1x);
+
98 inv_effective_mass = r1x.Multiply3x3(inv_i1).Multiply3x3RightTransposed(r1x);
+
99 }
+
100 else
+
101 {
+
102 JPH_IF_DEBUG(mInvI1_R1X = Mat44::sNaN();)
+
103
+
104 summed_inv_mass = 0.0f;
+
105 inv_effective_mass = Mat44::sZero();
+
106 }
+
107
+
108 if (inBody2.IsDynamic())
+
109 {
+
110 const MotionProperties *mp2 = inBody2.GetMotionProperties();
+
111 Mat44 inv_i2 = mp2->GetInverseInertiaForRotation(inRotation2);
+
112 summed_inv_mass += mp2->GetInverseMass();
+
113
+
114 Mat44 r2x = Mat44::sCrossProduct(mR2);
+
115 mInvI2_R2X = inv_i2.Multiply3x3(r2x);
+
116 inv_effective_mass += r2x.Multiply3x3(inv_i2).Multiply3x3RightTransposed(r2x);
+
117 }
+
118 else
+
119 {
+
120 JPH_IF_DEBUG(mInvI2_R2X = Mat44::sNaN();)
+
121 }
+
122
+
123 inv_effective_mass += Mat44::sScale(summed_inv_mass);
+
124 if (!mEffectiveMass.SetInversed3x3(inv_effective_mass))
+
125 Deactivate();
+
126 }
+
+
127
+
+
129 inline void Deactivate()
+
130 {
+
131 mEffectiveMass = Mat44::sZero();
+
132 mTotalLambda = Vec3::sZero();
+
133 }
+
+
134
+
+
136 inline bool IsActive() const
+
137 {
+
138 return mEffectiveMass(3, 3) != 0.0f;
+
139 }
+
+
140
+
+
145 inline void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
+
146 {
+
147 mTotalLambda *= inWarmStartImpulseRatio;
+
148 ApplyVelocityStep(ioBody1, ioBody2, mTotalLambda);
+
149 }
+
+
150
+
+
154 inline bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)
+
155 {
+
156 // Calculate lagrange multiplier:
+
157 //
+
158 // lambda = -K^-1 (J v + b)
+
159 Vec3 lambda = mEffectiveMass * (ioBody1.GetLinearVelocity() - mR1.Cross(ioBody1.GetAngularVelocity()) - ioBody2.GetLinearVelocity() + mR2.Cross(ioBody2.GetAngularVelocity()));
+
160 mTotalLambda += lambda; // Store accumulated lambda
+
161 return ApplyVelocityStep(ioBody1, ioBody2, lambda);
+
162 }
+
+
163
+
+
168 inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inBaumgarte) const
+
169 {
+
170 Vec3 separation = (Vec3(ioBody2.GetCenterOfMassPosition() - ioBody1.GetCenterOfMassPosition()) + mR2 - mR1);
+
171 if (separation != Vec3::sZero())
+
172 {
+
173 // Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
+
174 //
+
175 // lambda = -K^-1 * beta / dt * C
+
176 //
+
177 // We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
+
178 Vec3 lambda = mEffectiveMass * -inBaumgarte * separation;
+
179
+
180 // Directly integrate velocity change for one time step
+
181 //
+
182 // Euler velocity integration:
+
183 // dv = M^-1 P
+
184 //
+
185 // Impulse:
+
186 // P = J^T lambda
+
187 //
+
188 // Euler position integration:
+
189 // x' = x + dv * dt
+
190 //
+
191 // Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
+
192 // Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
+
193 // stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
+
194 // integrate + a position integrate and then discard the velocity change.
+
195 if (ioBody1.IsDynamic())
+
196 {
+
197 ioBody1.SubPositionStep(ioBody1.GetMotionProperties()->GetInverseMass() * lambda);
+
198 ioBody1.SubRotationStep(mInvI1_R1X * lambda);
+
199 }
+
200 if (ioBody2.IsDynamic())
+
201 {
+
202 ioBody2.AddPositionStep(ioBody2.GetMotionProperties()->GetInverseMass() * lambda);
+
203 ioBody2.AddRotationStep(mInvI2_R2X * lambda);
+
204 }
+
205
+
206 return true;
+
207 }
+
208
+
209 return false;
+
210 }
+
+
211
+
+ +
214 {
+
215 return mTotalLambda;
+
216 }
+
+
217
+
+
219 void SaveState(StateRecorder &inStream) const
+
220 {
+
221 inStream.Write(mTotalLambda);
+
222 }
+
+
223
+
+ +
226 {
+
227 inStream.Read(mTotalLambda);
+
228 }
+
+
229
+
230private:
+
231 Vec3 mR1;
+
232 Vec3 mR2;
+
233 Mat44 mInvI1_R1X;
+
234 Mat44 mInvI2_R2X;
+
235 Mat44 mEffectiveMass;
+
236 Vec3 mTotalLambda { Vec3::sZero() };
+
237};
+
+
238
+ + +
#define JPH_IF_DEBUG(...)
Definition Core.h:509
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Definition Body.h:35
+
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:249
+
RVec3 GetCenterOfMassPosition() const
Gets the world space position of this body's center of mass.
Definition Body.h:237
+
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:61
+
void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Update rotation using an Euler step (using during position integrate & constraint solving)
Definition Body.inl:81
+
void SubPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)
Definition Body.h:284
+
Vec3 GetLinearVelocity() const
Get world space linear velocity of the center of mass (unit: m/s)
Definition Body.h:144
+
void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Definition Body.inl:100
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass (unit: rad/s)
Definition Body.h:153
+
void AddPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)
Update position using an Euler step (used during position integrate & constraint solving)
Definition Body.h:283
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sZero()
Zero matrix.
Definition Mat44.inl:30
+
static JPH_INLINE Mat44 sCrossProduct(Vec3Arg inV)
Get matrix that represents a cross product .
Definition Mat44.inl:179
+
static JPH_INLINE Mat44 sNaN()
Matrix filled with NaN's.
Definition Mat44.inl:40
+
JPH_INLINE bool SetInversed3x3(Mat44Arg inM)
*this = inM.Inversed3x3(), returns false if the matrix is singular in which case *this is unchanged
Definition Mat44.inl:767
+
static JPH_INLINE Mat44 sScale(float inScale)
Get matrix that scales uniformly.
Definition Mat44.inl:163
+
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition Mat44.inl:316
+
The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...
Definition MotionProperties.h:29
+
void AddLinearVelocityStep(Vec3Arg inLinearVelocityChange)
Definition MotionProperties.h:191
+
void SubLinearVelocityStep(Vec3Arg inLinearVelocityChange)
Definition MotionProperties.h:192
+
float GetInverseMass() const
Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies ha...
Definition MotionProperties.h:95
+
void SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:194
+
Mat44 GetInverseInertiaForRotation(Mat44Arg inRotation) const
Get inverse inertia matrix ( ) for a given object rotation (translation will be ignored)....
Definition MotionProperties.inl:59
+
void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:193
+
Definition PointConstraintPart.h:41
+
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition PointConstraintPart.h:225
+
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inBaumgarte) const
Definition PointConstraintPart.h:168
+
bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)
Definition PointConstraintPart.h:154
+
Vec3 GetTotalLambda() const
Return lagrange multiplier.
Definition PointConstraintPart.h:213
+
void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
Definition PointConstraintPart.h:145
+
void Deactivate()
Deactivate this constraint.
Definition PointConstraintPart.h:129
+
bool IsActive() const
Check if constraint is active.
Definition PointConstraintPart.h:136
+
void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inR1, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inR2)
Definition PointConstraintPart.h:80
+
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition PointConstraintPart.h:219
+
Definition StateRecorder.h:48
+
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:29
+
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:26
+
Definition Vec3.h:17
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_polyhedron_submerged_volume_calculator_8h.html b/_polyhedron_submerged_volume_calculator_8h.html new file mode 100644 index 000000000..27a35f1d4 --- /dev/null +++ b/_polyhedron_submerged_volume_calculator_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/PolyhedronSubmergedVolumeCalculator.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PolyhedronSubmergedVolumeCalculator.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  PolyhedronSubmergedVolumeCalculator
 
class  PolyhedronSubmergedVolumeCalculator::Point
 A helper class that contains cached information about a polyhedron vertex. More...
 
+
+
+ + + + diff --git a/_polyhedron_submerged_volume_calculator_8h.js b/_polyhedron_submerged_volume_calculator_8h.js new file mode 100644 index 000000000..7526ed3f5 --- /dev/null +++ b/_polyhedron_submerged_volume_calculator_8h.js @@ -0,0 +1,5 @@ +var _polyhedron_submerged_volume_calculator_8h = +[ + [ "PolyhedronSubmergedVolumeCalculator", "class_polyhedron_submerged_volume_calculator.html", "class_polyhedron_submerged_volume_calculator" ], + [ "PolyhedronSubmergedVolumeCalculator::Point", "class_polyhedron_submerged_volume_calculator_1_1_point.html", "class_polyhedron_submerged_volume_calculator_1_1_point" ] +]; \ No newline at end of file diff --git a/_polyhedron_submerged_volume_calculator_8h_source.html b/_polyhedron_submerged_volume_calculator_8h_source.html new file mode 100644 index 000000000..8eaca89ec --- /dev/null +++ b/_polyhedron_submerged_volume_calculator_8h_source.html @@ -0,0 +1,469 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/PolyhedronSubmergedVolumeCalculator.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PolyhedronSubmergedVolumeCalculator.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#ifdef JPH_DEBUG_RENDERER
+ +
10#endif // JPH_DEBUG_RENDERER
+
11
+ +
13
+
+ +
18{
+
19private:
+
20 // Calculate submerged volume * 6 and center of mass * 4 for a tetrahedron with 4 vertices submerged
+
21 // inV1 .. inV4 are submerged
+
22 inline static void sTetrahedronVolume4(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, Vec3Arg inV4, float &outVolumeTimes6, Vec3 &outCenterTimes4)
+
23 {
+
24 // Calculate center of mass and mass of this tetrahedron,
+
25 // see: https://en.wikipedia.org/wiki/Tetrahedron#Volume
+
26 outVolumeTimes6 = max((inV1 - inV4).Dot((inV2 - inV4).Cross(inV3 - inV4)), 0.0f); // All contributions should be positive because we use a reference point that is on the surface of the hull
+
27 outCenterTimes4 = inV1 + inV2 + inV3 + inV4;
+
28 }
+
29
+
30 // Get the intersection point with a plane.
+
31 // inV1 is inD1 distance away from the plane, inV2 is inD2 distance away from the plane
+
32 inline static Vec3 sGetPlaneIntersection(Vec3Arg inV1, float inD1, Vec3Arg inV2, float inD2)
+
33 {
+
34 JPH_ASSERT(Sign(inD1) != Sign(inD2), "Assuming both points are on opposite ends of the plane");
+
35 float delta = inD1 - inD2;
+
36 if (abs(delta) < 1.0e-6f)
+
37 return inV1; // Parallel to plane, just pick a point
+
38 else
+
39 return inV1 + inD1 * (inV2 - inV1) / delta;
+
40 }
+
41
+
42 // Calculate submerged volume * 6 and center of mass * 4 for a tetrahedron with 1 vertex submerged
+
43 // inV1 is submerged, inV2 .. inV4 are not
+
44 // inD1 .. inD4 are the distances from the points to the plane
+
45 inline JPH_IF_NOT_DEBUG_RENDERER(static) void sTetrahedronVolume1(Vec3Arg inV1, float inD1, Vec3Arg inV2, float inD2, Vec3Arg inV3, float inD3, Vec3Arg inV4, float inD4, float &outVolumeTimes6, Vec3 &outCenterTimes4)
+
46 {
+
47 // A tetrahedron with 1 point submerged is cut along 3 edges forming a new tetrahedron
+
48 Vec3 v2 = sGetPlaneIntersection(inV1, inD1, inV2, inD2);
+
49 Vec3 v3 = sGetPlaneIntersection(inV1, inD1, inV3, inD3);
+
50 Vec3 v4 = sGetPlaneIntersection(inV1, inD1, inV4, inD4);
+
51
+
52 #ifdef JPH_DEBUG_RENDERER
+
53 // Draw intersection between tetrahedron and surface
+ +
55 {
+
56 RVec3 v2w = mBaseOffset + v2;
+
57 RVec3 v3w = mBaseOffset + v3;
+
58 RVec3 v4w = mBaseOffset + v4;
+
59
+ + +
62 }
+
63 #endif // JPH_DEBUG_RENDERER
+
64
+
65 sTetrahedronVolume4(inV1, v2, v3, v4, outVolumeTimes6, outCenterTimes4);
+
66 }
+
67
+
68 // Calculate submerged volume * 6 and center of mass * 4 for a tetrahedron with 2 vertices submerged
+
69 // inV1, inV2 are submerged, inV3, inV4 are not
+
70 // inD1 .. inD4 are the distances from the points to the plane
+
71 inline JPH_IF_NOT_DEBUG_RENDERER(static) void sTetrahedronVolume2(Vec3Arg inV1, float inD1, Vec3Arg inV2, float inD2, Vec3Arg inV3, float inD3, Vec3Arg inV4, float inD4, float &outVolumeTimes6, Vec3 &outCenterTimes4)
+
72 {
+
73 // A tetrahedron with 2 points submerged is cut along 4 edges forming a quad
+
74 Vec3 c = sGetPlaneIntersection(inV1, inD1, inV3, inD3);
+
75 Vec3 d = sGetPlaneIntersection(inV1, inD1, inV4, inD4);
+
76 Vec3 e = sGetPlaneIntersection(inV2, inD2, inV4, inD4);
+
77 Vec3 f = sGetPlaneIntersection(inV2, inD2, inV3, inD3);
+
78
+
79 #ifdef JPH_DEBUG_RENDERER
+
80 // Draw intersection between tetrahedron and surface
+ +
82 {
+
83 RVec3 cw = mBaseOffset + c;
+
84 RVec3 dw = mBaseOffset + d;
+
85 RVec3 ew = mBaseOffset + e;
+
86 RVec3 fw = mBaseOffset + f;
+
87
+ + + + +
92 }
+
93 #endif // JPH_DEBUG_RENDERER
+
94
+
95 // We pick point c as reference (which is on the cut off surface)
+
96 // This leaves us with three tetrahedrons to sum up (any faces that are in the same plane as c will have zero volume)
+
97 Vec3 center1, center2, center3;
+
98 float volume1, volume2, volume3;
+
99 sTetrahedronVolume4(e, f, inV2, c, volume1, center1);
+
100 sTetrahedronVolume4(e, inV1, d, c, volume2, center2);
+
101 sTetrahedronVolume4(e, inV2, inV1, c, volume3, center3);
+
102
+
103 // Tally up the totals
+
104 outVolumeTimes6 = volume1 + volume2 + volume3;
+
105 outCenterTimes4 = outVolumeTimes6 > 0.0f? (volume1 * center1 + volume2 * center2 + volume3 * center3) / outVolumeTimes6 : Vec3::sZero();
+
106 }
+
107
+
108 // Calculate submerged volume * 6 and center of mass * 4 for a tetrahedron with 3 vertices submerged
+
109 // inV1, inV2, inV3 are submerged, inV4 is not
+
110 // inD1 .. inD4 are the distances from the points to the plane
+
111 inline JPH_IF_NOT_DEBUG_RENDERER(static) void sTetrahedronVolume3(Vec3Arg inV1, float inD1, Vec3Arg inV2, float inD2, Vec3Arg inV3, float inD3, Vec3Arg inV4, float inD4, float &outVolumeTimes6, Vec3 &outCenterTimes4)
+
112 {
+
113 // A tetrahedron with 1 point above the surface is cut along 3 edges forming a new tetrahedron
+
114 Vec3 v1 = sGetPlaneIntersection(inV1, inD1, inV4, inD4);
+
115 Vec3 v2 = sGetPlaneIntersection(inV2, inD2, inV4, inD4);
+
116 Vec3 v3 = sGetPlaneIntersection(inV3, inD3, inV4, inD4);
+
117
+
118 #ifdef JPH_DEBUG_RENDERER
+
119 // Draw intersection between tetrahedron and surface
+ +
121 {
+
122 RVec3 v1w = mBaseOffset + v1;
+
123 RVec3 v2w = mBaseOffset + v2;
+
124 RVec3 v3w = mBaseOffset + v3;
+
125
+ + +
128 }
+
129 #endif // JPH_DEBUG_RENDERER
+
130
+
131 Vec3 dry_center, total_center;
+
132 float dry_volume, total_volume;
+
133
+
134 // We first calculate the part that is above the surface
+
135 sTetrahedronVolume4(v1, v2, v3, inV4, dry_volume, dry_center);
+
136
+
137 // Calculate the total volume
+
138 sTetrahedronVolume4(inV1, inV2, inV3, inV4, total_volume, total_center);
+
139
+
140 // From this we can calculate the center and volume of the submerged part
+
141 outVolumeTimes6 = max(total_volume - dry_volume, 0.0f);
+
142 outCenterTimes4 = outVolumeTimes6 > 0.0f? (total_center * total_volume - dry_center * dry_volume) / outVolumeTimes6 : Vec3::sZero();
+
143 }
+
144
+
145public:
+
+
147 class Point
+
148 {
+
149 public:
+ + + +
153 };
+
+
154
+
162#ifdef JPH_DEBUG_RENDERER
+
164#endif // JPH_DEBUG_RENDERER
+
+
165 PolyhedronSubmergedVolumeCalculator(const Mat44 &inTransform, const Vec3 *inPoints, int inPointStride, int inNumPoints, const Plane &inSurface, Point *ioBuffer
+
166#ifdef JPH_DEBUG_RENDERER // Not using JPH_IF_DEBUG_RENDERER for Doxygen
+
167 , RVec3 inBaseOffset
+
168#endif // JPH_DEBUG_RENDERER
+
169 ) :
+
170 mPoints(ioBuffer)
+
171#ifdef JPH_DEBUG_RENDERER
+
172 , mBaseOffset(inBaseOffset)
+
173#endif // JPH_DEBUG_RENDERER
+
174 {
+
175 // Convert the points to world space and determine the distance to the surface
+
176 float reference_dist = FLT_MAX;
+
177 for (int p = 0; p < inNumPoints; ++p)
+
178 {
+
179 // Calculate values
+
180 Vec3 transformed_point = inTransform * *reinterpret_cast<const Vec3 *>(reinterpret_cast<const uint8 *>(inPoints) + p * inPointStride);
+
181 float dist = inSurface.SignedDistance(transformed_point);
+
182 bool above = dist >= 0.0f;
+
183
+
184 // Keep track if all are above or below
+
185 mAllAbove &= above;
+
186 mAllBelow &= !above;
+
187
+
188 // Calculate lowest point, we use this to create tetrahedrons out of all faces
+
189 if (reference_dist > dist)
+
190 {
+
191 mReferencePointIdx = p;
+
192 reference_dist = dist;
+
193 }
+
194
+
195 // Store values
+
196 ioBuffer->mPosition = transformed_point;
+
197 ioBuffer->mDistanceToSurface = dist;
+
198 ioBuffer->mAboveSurface = above;
+
199 ++ioBuffer;
+
200 }
+
201 }
+
+
202
+
+
204 inline bool AreAllAbove() const
+
205 {
+
206 return mAllAbove;
+
207 }
+
+
208
+
+
210 inline bool AreAllBelow() const
+
211 {
+
212 return mAllBelow;
+
213 }
+
+
214
+
+
216 inline int GetReferencePointIdx() const
+
217 {
+
218 return mReferencePointIdx;
+
219 }
+
+
220
+
+
222 void AddFace(int inIdx1, int inIdx2, int inIdx3)
+
223 {
+
224 JPH_ASSERT(inIdx1 != mReferencePointIdx && inIdx2 != mReferencePointIdx && inIdx3 != mReferencePointIdx, "A face using the reference point will not contribute to the volume");
+
225
+
226 // Find the points
+
227 const Point &ref = mPoints[mReferencePointIdx];
+
228 const Point &p1 = mPoints[inIdx1];
+
229 const Point &p2 = mPoints[inIdx2];
+
230 const Point &p3 = mPoints[inIdx3];
+
231
+
232 // Determine which vertices are submerged
+
233 uint code = (p1.mAboveSurface? 0 : 0b001) | (p2.mAboveSurface? 0 : 0b010) | (p3.mAboveSurface? 0 : 0b100);
+
234
+
235 float volume;
+
236 Vec3 center;
+
237 switch (code)
+
238 {
+
239 case 0b000:
+
240 // One point submerged
+
241 sTetrahedronVolume1(ref.mPosition, ref.mDistanceToSurface, p3.mPosition, p3.mDistanceToSurface, p2.mPosition, p2.mDistanceToSurface, p1.mPosition, p1.mDistanceToSurface, volume, center);
+
242 break;
+
243
+
244 case 0b001:
+
245 // Two points submerged
+
246 sTetrahedronVolume2(ref.mPosition, ref.mDistanceToSurface, p1.mPosition, p1.mDistanceToSurface, p3.mPosition, p3.mDistanceToSurface, p2.mPosition, p2.mDistanceToSurface, volume, center);
+
247 break;
+
248
+
249 case 0b010:
+
250 // Two points submerged
+
251 sTetrahedronVolume2(ref.mPosition, ref.mDistanceToSurface, p2.mPosition, p2.mDistanceToSurface, p1.mPosition, p1.mDistanceToSurface, p3.mPosition, p3.mDistanceToSurface, volume, center);
+
252 break;
+
253
+
254 case 0b100:
+
255 // Two points submerged
+
256 sTetrahedronVolume2(ref.mPosition, ref.mDistanceToSurface, p3.mPosition, p3.mDistanceToSurface, p2.mPosition, p2.mDistanceToSurface, p1.mPosition, p1.mDistanceToSurface, volume, center);
+
257 break;
+
258
+
259 case 0b011:
+
260 // Three points submerged
+
261 sTetrahedronVolume3(ref.mPosition, ref.mDistanceToSurface, p2.mPosition, p2.mDistanceToSurface, p1.mPosition, p1.mDistanceToSurface, p3.mPosition, p3.mDistanceToSurface, volume, center);
+
262 break;
+
263
+
264 case 0b101:
+
265 // Three points submerged
+
266 sTetrahedronVolume3(ref.mPosition, ref.mDistanceToSurface, p1.mPosition, p1.mDistanceToSurface, p3.mPosition, p3.mDistanceToSurface, p2.mPosition, p2.mDistanceToSurface, volume, center);
+
267 break;
+
268
+
269 case 0b110:
+
270 // Three points submerged
+
271 sTetrahedronVolume3(ref.mPosition, ref.mDistanceToSurface, p3.mPosition, p3.mDistanceToSurface, p2.mPosition, p2.mDistanceToSurface, p1.mPosition, p1.mDistanceToSurface, volume, center);
+
272 break;
+
273
+
274 case 0b111:
+
275 // Four points submerged
+
276 sTetrahedronVolume4(ref.mPosition, p3.mPosition, p2.mPosition, p1.mPosition, volume, center);
+
277 break;
+
278
+
279 default:
+
280 // Should not be possible
+
281 JPH_ASSERT(false);
+
282 volume = 0.0f;
+
283 center = Vec3::sZero();
+
284 break;
+
285 }
+
286
+
287 mSubmergedVolume += volume;
+
288 mCenterOfBuoyancy += volume * center;
+
289 }
+
+
290
+
+
292 void GetResult(float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy) const
+
293 {
+
294 outCenterOfBuoyancy = mSubmergedVolume > 0.0f? mCenterOfBuoyancy / (4.0f * mSubmergedVolume) : Vec3::sZero(); // Do this before dividing submerged volume by 6 to get correct weight factor
+
295 outSubmergedVolume = mSubmergedVolume / 6.0f;
+
296 }
+
+
297
+
298private:
+
299 // The precalculated points for this polyhedron
+
300 const Point * mPoints;
+
301
+
302 // If all points are above/below the surface
+
303 bool mAllBelow = true;
+
304 bool mAllAbove = true;
+
305
+
306 // The lowest point
+
307 int mReferencePointIdx = 0;
+
308
+
309 // Aggregator for submerged volume and center of buoyancy
+
310 float mSubmergedVolume = 0.0f;
+
311 Vec3 mCenterOfBuoyancy = Vec3::sZero();
+
312
+
313#ifdef JPH_DEBUG_RENDERER
+
314 // Base offset used for drawing
+
315 RVec3 mBaseOffset;
+
316#endif
+
317};
+
+
318
+ + +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_IF_NOT_DEBUG_RENDERER(...)
Definition Core.h:537
+
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_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Sign(T inV)
Get the sign of a value.
Definition Math.h:66
+ +
static const Color sGreen
Definition Color.h:57
+
static const Color sWhite
Definition Color.h:67
+
void DrawWireTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor)
Draw wireframe triangle.
Definition DebugRenderer.cpp:242
+
static DebugRenderer * sInstance
Singleton instance.
Definition DebugRenderer.h:179
+
virtual void DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::Off)=0
Draw a single back face culled triangle.
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
float SignedDistance(Vec3Arg inPoint) const
Distance point to plane.
Definition Plane.h:54
+
A helper class that contains cached information about a polyhedron vertex.
Definition PolyhedronSubmergedVolumeCalculator.h:148
+
Vec3 mPosition
World space position of vertex.
Definition PolyhedronSubmergedVolumeCalculator.h:150
+
float mDistanceToSurface
Signed distance to the surface (> 0 is above, < 0 is below)
Definition PolyhedronSubmergedVolumeCalculator.h:151
+
bool mAboveSurface
If the point is above the surface (mDistanceToSurface > 0)
Definition PolyhedronSubmergedVolumeCalculator.h:152
+
Definition PolyhedronSubmergedVolumeCalculator.h:18
+
void AddFace(int inIdx1, int inIdx2, int inIdx3)
Add a polyhedron face. Supply the indices of the points that form the face (in counter clockwise orde...
Definition PolyhedronSubmergedVolumeCalculator.h:222
+
PolyhedronSubmergedVolumeCalculator(const Mat44 &inTransform, const Vec3 *inPoints, int inPointStride, int inNumPoints, const Plane &inSurface, Point *ioBuffer, RVec3 inBaseOffset)
Definition PolyhedronSubmergedVolumeCalculator.h:165
+
void GetResult(float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy) const
Call after all faces have been added. Returns the submerged volume and the center of buoyancy for the...
Definition PolyhedronSubmergedVolumeCalculator.h:292
+
bool AreAllBelow() const
Check if all points are below the surface. Should be used as early out.
Definition PolyhedronSubmergedVolumeCalculator.h:210
+
int GetReferencePointIdx() const
Get the lowest point of the polyhedron. Used to form the 4th vertex to make a tetrahedron out of a po...
Definition PolyhedronSubmergedVolumeCalculator.h:216
+
bool AreAllAbove() const
Check if all points are above the surface. Should be used as early out.
Definition PolyhedronSubmergedVolumeCalculator.h:204
+
static bool sDrawSubmergedVolumes
Debug helper which draws the intersection between water and the shapes, the center of buoyancy and th...
Definition Shape.h:450
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_profiler_8cpp.html b/_profiler_8cpp.html new file mode 100644 index 000000000..afaf4ac49 --- /dev/null +++ b/_profiler_8cpp.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Jolt/Core/Profiler.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Profiler.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <Jolt/Core/Profiler.h>
+#include <Jolt/Core/Color.h>
+#include <Jolt/Core/StringTools.h>
+#include <Jolt/Core/QuickSort.h>
+#include <fstream>
+
+
+ + + + diff --git a/_profiler_8h.html b/_profiler_8h.html new file mode 100644 index 000000000..27296fbd0 --- /dev/null +++ b/_profiler_8h.html @@ -0,0 +1,364 @@ + + + + + + + +Jolt Physics: Jolt/Core/Profiler.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Profiler.h File Reference
+
+
+
#include <mutex>
+#include <chrono>
+#include <Jolt/Core/NonCopyable.h>
+#include <Jolt/Core/TickCounter.h>
+#include <Jolt/Core/UnorderedMap.h>
+#include "Profiler.inl"
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + +

+Classes

class  Profiler
 Singleton class for managing profiling information. More...
 
class  ProfileSample
 
class  ProfileThread
 Collects all samples of a single thread. More...
 
class  ProfileMeasurement
 Create this class on the stack to start sampling timing information of a particular scope. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define JPH_PROFILE_START(name)   do { Profiler::sInstance = new Profiler; JPH_PROFILE_THREAD_START(name); } while (false)
 Start instrumenting program.
 
#define JPH_PROFILE_END()   do { JPH_PROFILE_THREAD_END(); delete Profiler::sInstance; Profiler::sInstance = nullptr; } while (false)
 End instrumenting program.
 
#define JPH_PROFILE_THREAD_START(name)   do { if (Profiler::sInstance) ProfileThread::sSetInstance(new ProfileThread(name)); } while (false)
 Start instrumenting a thread.
 
#define JPH_PROFILE_THREAD_END()   do { delete ProfileThread::sGetInstance(); ProfileThread::sSetInstance(nullptr); } while (false)
 End instrumenting a thread.
 
#define JPH_PROFILE_TAG2(line)   profile##line
 Scope profiling measurement.
 
#define JPH_PROFILE_TAG(line)   JPH_PROFILE_TAG2(line)
 
#define JPH_PROFILE(...)   ProfileMeasurement JPH_PROFILE_TAG(__LINE__)(__VA_ARGS__)
 
#define JPH_PROFILE_FUNCTION()   JPH_PROFILE(JPH_FUNCTION_NAME)
 Scope profiling for function.
 
#define JPH_PROFILE_NEXTFRAME()   Profiler::sInstance->NextFrame()
 Update frame counter.
 
#define JPH_PROFILE_DUMP(...)   Profiler::sInstance->Dump(__VA_ARGS__)
 Dump profiling info.
 
+

Macro Definition Documentation

+ +

◆ JPH_PROFILE

+ +
+
+ + + + + + + + +
#define JPH_PROFILE( ...)   ProfileMeasurement JPH_PROFILE_TAG(__LINE__)(__VA_ARGS__)
+
+ +
+
+ +

◆ JPH_PROFILE_DUMP

+ +
+
+ + + + + + + + +
#define JPH_PROFILE_DUMP( ...)   Profiler::sInstance->Dump(__VA_ARGS__)
+
+ +

Dump profiling info.

+ +
+
+ +

◆ JPH_PROFILE_END

+ +
+
+ + + + + + + +
#define JPH_PROFILE_END()   do { JPH_PROFILE_THREAD_END(); delete Profiler::sInstance; Profiler::sInstance = nullptr; } while (false)
+
+ +

End instrumenting program.

+ +
+
+ +

◆ JPH_PROFILE_FUNCTION

+ +
+
+ + + + + + + +
#define JPH_PROFILE_FUNCTION()   JPH_PROFILE(JPH_FUNCTION_NAME)
+
+ +

Scope profiling for function.

+ +
+
+ +

◆ JPH_PROFILE_NEXTFRAME

+ +
+
+ + + + + + + +
#define JPH_PROFILE_NEXTFRAME()   Profiler::sInstance->NextFrame()
+
+ +

Update frame counter.

+ +
+
+ +

◆ JPH_PROFILE_START

+ +
+
+ + + + + + + + +
#define JPH_PROFILE_START( name)   do { Profiler::sInstance = new Profiler; JPH_PROFILE_THREAD_START(name); } while (false)
+
+ +

Start instrumenting program.

+ +
+
+ +

◆ JPH_PROFILE_TAG

+ +
+
+ + + + + + + + +
#define JPH_PROFILE_TAG( line)   JPH_PROFILE_TAG2(line)
+
+ +
+
+ +

◆ JPH_PROFILE_TAG2

+ +
+
+ + + + + + + + +
#define JPH_PROFILE_TAG2( line)   profile##line
+
+ +

Scope profiling measurement.

+ +
+
+ +

◆ JPH_PROFILE_THREAD_END

+ +
+
+ + + + + + + +
#define JPH_PROFILE_THREAD_END()   do { delete ProfileThread::sGetInstance(); ProfileThread::sSetInstance(nullptr); } while (false)
+
+ +

End instrumenting a thread.

+ +
+
+ +

◆ JPH_PROFILE_THREAD_START

+ +
+
+ + + + + + + + +
#define JPH_PROFILE_THREAD_START( name)   do { if (Profiler::sInstance) ProfileThread::sSetInstance(new ProfileThread(name)); } while (false)
+
+ +

Start instrumenting a thread.

+ +
+
+
+
+ + + + diff --git a/_profiler_8h.js b/_profiler_8h.js new file mode 100644 index 000000000..63e0480aa --- /dev/null +++ b/_profiler_8h.js @@ -0,0 +1,17 @@ +var _profiler_8h = +[ + [ "Profiler", "class_profiler.html", "class_profiler" ], + [ "ProfileSample", "class_profile_sample.html", "class_profile_sample" ], + [ "ProfileThread", "class_profile_thread.html", "class_profile_thread" ], + [ "ProfileMeasurement", "class_profile_measurement.html", "class_profile_measurement" ], + [ "JPH_PROFILE", "_profiler_8h.html#aeea975f69380f934d24a9169e43bac9b", null ], + [ "JPH_PROFILE_DUMP", "_profiler_8h.html#a7fd763325a27ec4b58e54119dbf08acb", null ], + [ "JPH_PROFILE_END", "_profiler_8h.html#ad4065f7f547ab9ee221c76b6dc313425", null ], + [ "JPH_PROFILE_FUNCTION", "_profiler_8h.html#a9d22d20c7f03e2ec7bf058811b12cb4e", null ], + [ "JPH_PROFILE_NEXTFRAME", "_profiler_8h.html#ac158343dbc5927ea288d3ef011feb288", null ], + [ "JPH_PROFILE_START", "_profiler_8h.html#a565915a1416629f5e8fd84ab2cbe7a14", null ], + [ "JPH_PROFILE_TAG", "_profiler_8h.html#ad70c118d5a68a0e7996f9e9e4bb04af8", null ], + [ "JPH_PROFILE_TAG2", "_profiler_8h.html#a25c67544eb8ec8c174946341070a4ec0", null ], + [ "JPH_PROFILE_THREAD_END", "_profiler_8h.html#acdb6d6bc05aad36435219ee5f631efc8", null ], + [ "JPH_PROFILE_THREAD_START", "_profiler_8h.html#a5455272d603b90d629b74c0d64338173", null ] +]; \ No newline at end of file diff --git a/_profiler_8h_source.html b/_profiler_8h_source.html new file mode 100644 index 000000000..187073ef9 --- /dev/null +++ b/_profiler_8h_source.html @@ -0,0 +1,414 @@ + + + + + + + +Jolt Physics: Jolt/Core/Profiler.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Profiler.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#include <mutex>
+
9#include <chrono>
+ +
11
+ + + +
15
+
16#if defined(JPH_EXTERNAL_PROFILE)
+
17
+ +
19
+
20#ifdef JPH_SHARED_LIBRARY
+
22using ProfileStartMeasurementFunction = void (*)(const char *inName, uint32 inColor, uint8 *ioUserData);
+
23using ProfileEndMeasurementFunction = void (*)(uint8 *ioUserData);
+
24
+
25JPH_EXPORT extern ProfileStartMeasurementFunction ProfileStartMeasurement;
+
26JPH_EXPORT extern ProfileEndMeasurementFunction ProfileEndMeasurement;
+
27#endif // JPH_SHARED_LIBRARY
+
28
+
34class alignas(16) ExternalProfileMeasurement : public NonCopyable
+
35{
+
36public:
+
38#ifdef JPH_SHARED_LIBRARY
+
39 JPH_INLINE ExternalProfileMeasurement(const char *inName, uint32 inColor = 0) { ProfileStartMeasurement(inName, inColor, mUserData); }
+
40 JPH_INLINE ~ExternalProfileMeasurement() { ProfileEndMeasurement(mUserData); }
+
41#else
+
42 ExternalProfileMeasurement(const char *inName, uint32 inColor = 0);
+
43 ~ExternalProfileMeasurement();
+
44#endif
+
45
+
46private:
+
47 uint8 mUserData[64];
+
48};
+
49
+ +
51
+
53// Macros to do the actual profiling
+
55
+
56JPH_SUPPRESS_WARNING_PUSH
+
57JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat-pedantic")
+
58
+
59// Dummy implementations
+
60#define JPH_PROFILE_START(name)
+
61#define JPH_PROFILE_END()
+
62#define JPH_PROFILE_THREAD_START(name)
+
63#define JPH_PROFILE_THREAD_END()
+
64#define JPH_PROFILE_NEXTFRAME()
+
65#define JPH_PROFILE_DUMP(...)
+
66
+
67// Scope profiling measurement
+
68#define JPH_PROFILE_TAG2(line) profile##line
+
69#define JPH_PROFILE_TAG(line) JPH_PROFILE_TAG2(line)
+
70
+
80#define JPH_PROFILE(...) ExternalProfileMeasurement JPH_PROFILE_TAG(__LINE__)(__VA_ARGS__)
+
81
+
82// Scope profiling for function
+
83#define JPH_PROFILE_FUNCTION() JPH_PROFILE(JPH_FUNCTION_NAME)
+
84
+
85JPH_SUPPRESS_WARNING_POP
+
86
+
87#elif defined(JPH_PROFILE_ENABLED)
+
88
+ +
90
+
91class ProfileSample;
+
92class ProfileThread;
+
93
+
+ +
96{
+
97public:
+ +
99
+
101 Profiler() { UpdateReferenceTime(); }
+
102
+
104 void NextFrame();
+
105
+
108 void Dump(const string_view &inTag = string_view());
+
109
+
111 void AddThread(ProfileThread *inThread);
+
112
+
114 void RemoveThread(ProfileThread *inThread);
+
115
+ +
118
+
119private:
+
121 struct ThreadSamples
+
122 {
+
123 String mThreadName;
+
124 ProfileSample * mSamplesBegin;
+
125 ProfileSample * mSamplesEnd;
+
126 };
+
127
+
129 class Aggregator
+
130 {
+
131 public:
+
133 Aggregator(const char *inName) : mName(inName) { }
+
134
+
136 void AccumulateMeasurement(uint64 inCyclesInCallWithChildren)
+
137 {
+
138 mCallCounter++;
+
139 mTotalCyclesInCallWithChildren += inCyclesInCallWithChildren;
+
140 mMinCyclesInCallWithChildren = min(inCyclesInCallWithChildren, mMinCyclesInCallWithChildren);
+
141 mMaxCyclesInCallWithChildren = max(inCyclesInCallWithChildren, mMaxCyclesInCallWithChildren);
+
142 }
+
143
+
145 bool operator < (const Aggregator &inRHS) const
+
146 {
+
147 return mTotalCyclesInCallWithChildren > inRHS.mTotalCyclesInCallWithChildren;
+
148 }
+
149
+
151 const char * mName;
+
152
+
154 uint32 mCallCounter = 0;
+
155 uint64 mTotalCyclesInCallWithChildren = 0;
+
156 uint64 mMinCyclesInCallWithChildren = 0xffffffffffffffffUL;
+
157 uint64 mMaxCyclesInCallWithChildren = 0;
+
158 };
+
159
+
160 using Threads = Array<ThreadSamples>;
+
161 using Aggregators = Array<Aggregator>;
+
162 using KeyToAggregator = UnorderedMap<const char *, size_t>;
+
163
+
165 static void sAggregate(int inDepth, uint32 inColor, ProfileSample *&ioSample, const ProfileSample *inEnd, Aggregators &ioAggregators, KeyToAggregator &ioKeyToAggregator);
+
166
+
168 void UpdateReferenceTime();
+
169
+
171 uint64 GetProcessorTicksPerSecond() const;
+
172
+
174 void DumpInternal();
+
175 void DumpChart(const char *inTag, const Threads &inThreads, const KeyToAggregator &inKeyToAggregators, const Aggregators &inAggregators);
+
176
+
177 std::mutex mLock;
+
178 uint64 mReferenceTick;
+
179 std::chrono::high_resolution_clock::time_point mReferenceTime;
+
180 Array<ProfileThread *> mThreads;
+
181 bool mDump = false;
+
182 String mDumpTag;
+
183};
+
+
184
+
185// Class that contains the information of a single scoped measurement
+
+ +
187{
+
188public:
+ +
190
+
191 const char * mName;
+ + +
194 uint8 mUnused[3];
+ + +
197};
+
+
198
+
+ +
201{
+
202public:
+ +
204
+
206 inline ProfileThread(const string_view &inThreadName);
+
207 inline ~ProfileThread();
+
208
+
209 static const uint cMaxSamples = 65536;
+
210
+ + + +
214
+
215#ifdef JPH_SHARED_LIBRARY
+
216 JPH_EXPORT static void sSetInstance(ProfileThread *inInstance);
+ +
218#else
+
219 static inline void sSetInstance(ProfileThread *inInstance) { sInstance = inInstance; }
+
220 static inline ProfileThread *sGetInstance() { return sInstance; }
+
221
+
222private:
+
223 static thread_local ProfileThread *sInstance;
+
224#endif
+
225};
+
+
226
+
+ +
229{
+
230public:
+
232 inline ProfileMeasurement(const char *inName, uint32 inColor = 0);
+
233 inline ~ProfileMeasurement();
+
234
+
235private:
+
236 ProfileSample * mSample;
+
237 ProfileSample mTemp;
+
238
+
239 static bool sOutOfSamplesReported;
+
240};
+
+
241
+ +
243
+
244#include "Profiler.inl"
+
245
+
247// Macros to do the actual profiling
+
249
+
250JPH_SUPPRESS_WARNING_PUSH
+
251JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat-pedantic")
+
252
+
253
+
254#define JPH_PROFILE_START(name) do { Profiler::sInstance = new Profiler; JPH_PROFILE_THREAD_START(name); } while (false)
+
255
+
257#define JPH_PROFILE_END() do { JPH_PROFILE_THREAD_END(); delete Profiler::sInstance; Profiler::sInstance = nullptr; } while (false)
+
258
+
260#define JPH_PROFILE_THREAD_START(name) do { if (Profiler::sInstance) ProfileThread::sSetInstance(new ProfileThread(name)); } while (false)
+
261
+
263#define JPH_PROFILE_THREAD_END() do { delete ProfileThread::sGetInstance(); ProfileThread::sSetInstance(nullptr); } while (false)
+
264
+
266#define JPH_PROFILE_TAG2(line) profile##line
+
267#define JPH_PROFILE_TAG(line) JPH_PROFILE_TAG2(line)
+
268#define JPH_PROFILE(...) ProfileMeasurement JPH_PROFILE_TAG(__LINE__)(__VA_ARGS__)
+
269
+
271#define JPH_PROFILE_FUNCTION() JPH_PROFILE(JPH_FUNCTION_NAME)
+
272
+
274#define JPH_PROFILE_NEXTFRAME() Profiler::sInstance->NextFrame()
+
275
+
277#define JPH_PROFILE_DUMP(...) Profiler::sInstance->Dump(__VA_ARGS__)
+
278
+
279JPH_SUPPRESS_WARNING_POP
+
280
+
281#else
+
282
+
284// Dummy profiling instructions
+
286
+
287JPH_SUPPRESS_WARNING_PUSH
+
288JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat-pedantic")
+
289
+
290#define JPH_PROFILE_START(name)
+
291#define JPH_PROFILE_END()
+
292#define JPH_PROFILE_THREAD_START(name)
+
293#define JPH_PROFILE_THREAD_END()
+
294#define JPH_PROFILE(...)
+
295#define JPH_PROFILE_FUNCTION()
+
296#define JPH_PROFILE_NEXTFRAME()
+
297#define JPH_PROFILE_DUMP(...)
+
298
+
299JPH_SUPPRESS_WARNING_POP
+
300
+
301#endif
+
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
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_CLANG_SUPPRESS_WARNING(w)
Definition Core.h:263
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_EXPORT_GCC_BUG_WORKAROUND
Definition Core.h:240
+
#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
+ + +
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+ + +
std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > > UnorderedMap
Definition UnorderedMap.h:13
+
Definition Array.h:36
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Create this class on the stack to start sampling timing information of a particular scope.
Definition Profiler.h:229
+
Definition Profiler.h:187
+
uint32 mColor
Color to use for this sample.
Definition Profiler.h:192
+
uint64 mEndCycle
Cycle counter at end of measurement.
Definition Profiler.h:196
+
JPH_OVERRIDE_NEW_DELETE const char * mName
User defined name of this item.
Definition Profiler.h:191
+
uint8 mDepth
Calculated depth.
Definition Profiler.h:193
+
uint64 mStartCycle
Cycle counter at start of measurement.
Definition Profiler.h:195
+
Collects all samples of a single thread.
Definition Profiler.h:201
+
ProfileSample mSamples[cMaxSamples]
Buffer of samples.
Definition Profiler.h:212
+
uint mCurrentSample
Next position to write a sample to.
Definition Profiler.h:213
+
~ProfileThread()
Definition Profiler.inl:17
+
static ProfileThread * sGetInstance()
Definition Profiler.h:220
+
String mThreadName
Name of the thread that we're collecting information for.
Definition Profiler.h:211
+
static void sSetInstance(ProfileThread *inInstance)
Definition Profiler.h:219
+
static const uint cMaxSamples
Definition Profiler.h:209
+
Singleton class for managing profiling information.
Definition Profiler.h:96
+
JPH_OVERRIDE_NEW_DELETE Profiler()
Constructor.
Definition Profiler.h:101
+
static Profiler * sInstance
Singleton instance.
Definition Profiler.h:117
+
+
+ + + + diff --git a/_profiler_8inl.html b/_profiler_8inl.html new file mode 100644 index 000000000..20046daab --- /dev/null +++ b/_profiler_8inl.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Core/Profiler.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Profiler.inl File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_profiler_8inl_source.html b/_profiler_8inl_source.html new file mode 100644 index 000000000..c58818585 --- /dev/null +++ b/_profiler_8inl_source.html @@ -0,0 +1,234 @@ + + + + + + + +Jolt Physics: Jolt/Core/Profiler.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Profiler.inl
+
+
+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
+ +
6
+
8// ProfileThread
+
10
+
+
11ProfileThread::ProfileThread(const string_view &inThreadName) :
+
12 mThreadName(inThreadName)
+
13{
+ +
15}
+
+
16
+ +
21
+
23// ProfileMeasurement
+
25
+
+ +
27{
+ +
29 if (current_thread == nullptr)
+
30 {
+
31 // Thread not instrumented
+
32 mSample = nullptr;
+
33 }
+
34 else if (current_thread->mCurrentSample < ProfileThread::cMaxSamples)
+
35 {
+
36 // Get pointer to write data to
+
37 mSample = &current_thread->mSamples[current_thread->mCurrentSample++];
+
38
+
39 // Start constructing sample (will end up on stack)
+
40 mTemp.mName = inName;
+
41 mTemp.mColor = inColor;
+
42
+
43 // Collect start sample last
+ +
45 }
+
46 else
+
47 {
+
48 // Out of samples
+
49 if (!sOutOfSamplesReported)
+
50 {
+
51 Trace("ProfileMeasurement: Too many samples, some data will be lost!");
+
52 sOutOfSamplesReported = true;
+
53 }
+
54 mSample = nullptr;
+
55 }
+
56}
+
+
57
+
+ +
59{
+
60 if (mSample != nullptr)
+
61 {
+
62 // Finalize sample
+ +
64
+
65 // Write it to the memory buffer bypassing the cache
+
66 static_assert(sizeof(ProfileSample) == 32, "Assume 32 bytes");
+
67 static_assert(alignof(ProfileSample) == 16, "Assume 16 byte alignment");
+
68 #if defined(JPH_USE_SSE)
+
69 const __m128i *src = reinterpret_cast<const __m128i *>(&mTemp);
+
70 __m128i *dst = reinterpret_cast<__m128i *>(mSample);
+
71 __m128i val = _mm_loadu_si128(src);
+
72 _mm_stream_si128(dst, val);
+
73 val = _mm_loadu_si128(src + 1);
+
74 _mm_stream_si128(dst + 1, val);
+
75 #elif defined(JPH_USE_NEON)
+
76 const int *src = reinterpret_cast<const int *>(&mTemp);
+
77 int *dst = reinterpret_cast<int *>(mSample);
+
78 int32x4_t val = vld1q_s32(src);
+
79 vst1q_s32(dst, val);
+
80 val = vld1q_s32(src + 4);
+
81 vst1q_s32(dst + 4, val);
+
82 #else
+
83 memcpy(mSample, &mTemp, sizeof(ProfileSample));
+
84 #endif
+
85 mSample = nullptr;
+
86 }
+
87}
+
+
88
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
TraceFunction Trace
Definition IssueReporting.cpp:18
+
JPH_NAMESPACE_BEGIN JPH_INLINE uint64 GetProcessorTickCount()
Functionality to get the processors cycle counter.
Definition TickCounter.h:26
+
ProfileMeasurement(const char *inName, uint32 inColor=0)
Constructor.
Definition Profiler.inl:26
+
~ProfileMeasurement()
Definition Profiler.inl:58
+
Definition Profiler.h:187
+
uint32 mColor
Color to use for this sample.
Definition Profiler.h:192
+
uint64 mEndCycle
Cycle counter at end of measurement.
Definition Profiler.h:196
+
JPH_OVERRIDE_NEW_DELETE const char * mName
User defined name of this item.
Definition Profiler.h:191
+
uint64 mStartCycle
Cycle counter at start of measurement.
Definition Profiler.h:195
+
Collects all samples of a single thread.
Definition Profiler.h:201
+
ProfileSample mSamples[cMaxSamples]
Buffer of samples.
Definition Profiler.h:212
+
uint mCurrentSample
Next position to write a sample to.
Definition Profiler.h:213
+
~ProfileThread()
Definition Profiler.inl:17
+
JPH_OVERRIDE_NEW_DELETE ProfileThread(const string_view &inThreadName)
Constructor.
Definition Profiler.inl:11
+
static ProfileThread * sGetInstance()
Definition Profiler.h:220
+
static const uint cMaxSamples
Definition Profiler.h:209
+
void RemoveThread(ProfileThread *inThread)
Remove a thread from being instrumented.
Definition Profiler.cpp:92
+
void AddThread(ProfileThread *inThread)
Add a thread to be instrumented.
Definition Profiler.cpp:85
+
static Profiler * sInstance
Singleton instance.
Definition Profiler.h:117
+
+
+ + + + diff --git a/_projects_using_jolt_8md.html b/_projects_using_jolt_8md.html new file mode 100644 index 000000000..9d7e0d66b --- /dev/null +++ b/_projects_using_jolt_8md.html @@ -0,0 +1,114 @@ + + + + + + + +Jolt Physics: Docs/ProjectsUsingJolt.md File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Docs/ProjectsUsingJolt.md File Reference
+
+
+
+
+ + + + diff --git a/_pulley_constraint_8cpp.html b/_pulley_constraint_8cpp.html new file mode 100644 index 000000000..9df80b2cf --- /dev/null +++ b/_pulley_constraint_8cpp.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PulleyConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PulleyConstraint.cpp File Reference
+
+
+ + + + +

+Functions

 JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PulleyConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (PulleyConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_pulley_constraint_8cpp.js b/_pulley_constraint_8cpp.js new file mode 100644 index 000000000..8a74f837b --- /dev/null +++ b/_pulley_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _pulley_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_pulley_constraint_8cpp.html#a246a1b1100c00c0cd1c52854fe804f68", null ] +]; \ No newline at end of file diff --git a/_pulley_constraint_8h.html b/_pulley_constraint_8h.html new file mode 100644 index 000000000..3b0d96c46 --- /dev/null +++ b/_pulley_constraint_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PulleyConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PulleyConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  PulleyConstraintSettings
 
class  PulleyConstraint
 A pulley constraint. More...
 
+
+
+ + + + diff --git a/_pulley_constraint_8h.js b/_pulley_constraint_8h.js new file mode 100644 index 000000000..c21140a3f --- /dev/null +++ b/_pulley_constraint_8h.js @@ -0,0 +1,5 @@ +var _pulley_constraint_8h = +[ + [ "PulleyConstraintSettings", "class_pulley_constraint_settings.html", "class_pulley_constraint_settings" ], + [ "PulleyConstraint", "class_pulley_constraint.html", "class_pulley_constraint" ] +]; \ No newline at end of file diff --git a/_pulley_constraint_8h_source.html b/_pulley_constraint_8h_source.html new file mode 100644 index 000000000..05b244430 --- /dev/null +++ b/_pulley_constraint_8h_source.html @@ -0,0 +1,279 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/PulleyConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PulleyConstraint.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2022 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + +
9
+ +
11
+
+ +
19{
+
20public:
+ +
22
+
23 // See: ConstraintSettings::SaveBinaryState
+
24 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
25
+
27 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
+
28
+ +
31
+
33 RVec3 mBodyPoint1 = RVec3::sZero();
+
34
+
36 RVec3 mFixedPoint1 = RVec3::sZero();
+
37
+
39 RVec3 mBodyPoint2 = RVec3::sZero();
+
40
+
42 RVec3 mFixedPoint2 = RVec3::sZero();
+
43
+
45 float mRatio = 1.0f;
+
46
+
48 float mMinLength = 0.0f;
+
49
+
51 float mMaxLength = -1.0f;
+
52
+
53protected:
+
54 // See: ConstraintSettings::RestoreBinaryState
+
55 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
56};
+
+
57
+
+ +
60{
+
61public:
+ +
63
+
65 PulleyConstraint(Body &inBody1, Body &inBody2, const PulleyConstraintSettings &inSettings);
+
66
+
67 // Generic interface of a constraint
+
68 virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::Pulley; }
+
69 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override;
+
70 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
71 virtual void ResetWarmStart() override;
+
72 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
73 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
74 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
75#ifdef JPH_DEBUG_RENDERER
+
76 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
77#endif // JPH_DEBUG_RENDERER
+
78 virtual void SaveState(StateRecorder &inStream) const override;
+
79 virtual void RestoreState(StateRecorder &inStream) override;
+
80 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
81
+
82 // See: TwoBodyConstraint
+
83 virtual Mat44 GetConstraintToBody1Matrix() const override { return Mat44::sTranslation(mLocalSpacePosition1); }
+
84 virtual Mat44 GetConstraintToBody2Matrix() const override { return Mat44::sTranslation(mLocalSpacePosition2); } // Note: Incorrect rotation as we don't track the original rotation difference, should not matter though as the constraint is not limiting rotation.
+
85
+
87 void SetLength(float inMinLength, float inMaxLength) { JPH_ASSERT(inMinLength >= 0.0f && inMinLength <= inMaxLength); mMinLength = inMinLength; mMaxLength = inMaxLength; }
+
88 float GetMinLength() const { return mMinLength; }
+
89 float GetMaxLength() const { return mMaxLength; }
+
90
+
92 float GetCurrentLength() const { return Vec3(mWorldSpacePosition1 - mFixedPosition1).Length() + mRatio * Vec3(mWorldSpacePosition2 - mFixedPosition2).Length(); }
+
93
+
95 inline float GetTotalLambdaPosition() const { return mIndependentAxisConstraintPart.GetTotalLambda(); }
+
96
+
97private:
+
98 // Calculates world positions and normals and returns current length
+
99 float CalculatePositionsNormalsAndLength();
+
100
+
101 // Internal helper function to calculate the values below
+
102 void CalculateConstraintProperties();
+
103
+
104 // CONFIGURATION PROPERTIES FOLLOW
+
105
+
106 // Local space constraint positions on the bodies
+
107 Vec3 mLocalSpacePosition1;
+
108 Vec3 mLocalSpacePosition2;
+
109
+
110 // World space fixed positions
+
111 RVec3 mFixedPosition1;
+
112 RVec3 mFixedPosition2;
+
113
+
115 float mRatio;
+
116
+
117 // The minimum/maximum length of the line segments
+
118 float mMinLength;
+
119 float mMaxLength;
+
120
+
121 // RUN TIME PROPERTIES FOLLOW
+
122
+
123 // World space positions and normal
+
124 RVec3 mWorldSpacePosition1;
+
125 RVec3 mWorldSpacePosition2;
+
126 Vec3 mWorldSpaceNormal1;
+
127 Vec3 mWorldSpaceNormal2;
+
128
+
129 // Depending on if the length < min or length > max we can apply forces to prevent further violations
+
130 float mMinLambda;
+
131 float mMaxLambda;
+
132
+
133 // The constraint part
+
134 IndependentAxisConstraintPart mIndependentAxisConstraintPart;
+
135};
+
+
136
+ +
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
+
@ WorldSpace
All constraint properties are specified in world space.
+
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#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
+ +
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
Definition IndependentAxisConstraintPart.h:48
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sTranslation(Vec3Arg inV)
Get matrix that translates.
Definition Mat44.inl:144
+
A pulley constraint.
Definition PulleyConstraint.h:60
+
virtual EConstraintSubType GetSubType() const override
Get the sub type of a constraint.
Definition PulleyConstraint.h:68
+
float GetCurrentLength() const
Get the current length of both segments (multiplied by the ratio for segment 2)
Definition PulleyConstraint.h:92
+
void SetLength(float inMinLength, float inMaxLength)
Update the minimum and maximum length for the constraint.
Definition PulleyConstraint.h:87
+
float GetMinLength() const
Definition PulleyConstraint.h:88
+
virtual Mat44 GetConstraintToBody1Matrix() const override
Calculates the transform that transforms from constraint space to body 1 space. The first column of t...
Definition PulleyConstraint.h:83
+
virtual Mat44 GetConstraintToBody2Matrix() const override
Calculates the transform that transforms from constraint space to body 2 space. The first column of t...
Definition PulleyConstraint.h:84
+
float GetMaxLength() const
Definition PulleyConstraint.h:89
+
float GetTotalLambdaPosition() const
Definition PulleyConstraint.h:95
+
Definition PulleyConstraint.h:19
+
Definition Reference.h:101
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
+
Definition Vec3.h:17
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec3.inl:677
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_quad_tree_8cpp.html b/_quad_tree_8cpp.html new file mode 100644 index 000000000..1d3ac918c --- /dev/null +++ b/_quad_tree_8cpp.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/QuadTree.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
QuadTree.cpp File Reference
+
+
+
+
+ + + + diff --git a/_quad_tree_8h.html b/_quad_tree_8h.html new file mode 100644 index 000000000..d15d863fc --- /dev/null +++ b/_quad_tree_8h.html @@ -0,0 +1,137 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/QuadTree.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
QuadTree.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + +

+Classes

class  QuadTree
 
struct  QuadTree::Tracking
 Data to track location of a Body in the tree. More...
 
struct  QuadTree::UpdateState
 
struct  QuadTree::AddState
 Temporary data structure to pass information between AddBodiesPrepare and AddBodiesFinalize/Abort. More...
 
+
+
+ + + + diff --git a/_quad_tree_8h.js b/_quad_tree_8h.js new file mode 100644 index 000000000..4a59e9695 --- /dev/null +++ b/_quad_tree_8h.js @@ -0,0 +1,7 @@ +var _quad_tree_8h = +[ + [ "QuadTree", "class_quad_tree.html", "class_quad_tree" ], + [ "QuadTree::Tracking", "struct_quad_tree_1_1_tracking.html", "struct_quad_tree_1_1_tracking" ], + [ "QuadTree::UpdateState", "struct_quad_tree_1_1_update_state.html", "struct_quad_tree_1_1_update_state" ], + [ "QuadTree::AddState", "struct_quad_tree_1_1_add_state.html", "struct_quad_tree_1_1_add_state" ] +]; \ No newline at end of file diff --git a/_quad_tree_8h_source.html b/_quad_tree_8h_source.html new file mode 100644 index 000000000..bd7bd3321 --- /dev/null +++ b/_quad_tree_8h_source.html @@ -0,0 +1,466 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase/QuadTree.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
QuadTree.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#include <Jolt/Core/Atomics.h>
+ + + +
12
+
13//#define JPH_DUMP_BROADPHASE_TREE
+
14
+ +
16
+
+ +
21{
+
22public:
+ +
24
+
25private:
+
26 // Forward declare
+
27 class AtomicNodeID;
+
28
+
30 class NodeID
+
31 {
+
32 public:
+ +
34
+
36 inline NodeID() = default;
+
37
+
39 static inline NodeID sInvalid() { return NodeID(cInvalidNodeIndex); }
+
40 static inline NodeID sFromBodyID(BodyID inID) { NodeID node_id(inID.GetIndexAndSequenceNumber()); JPH_ASSERT(node_id.IsBody()); return node_id; }
+
41 static inline NodeID sFromNodeIndex(uint32 inIdx) { NodeID node_id(inIdx | cIsNode); JPH_ASSERT(node_id.IsNode()); return node_id; }
+
42
+
44 inline bool IsValid() const { return mID != cInvalidNodeIndex; }
+
45 inline bool IsBody() const { return (mID & cIsNode) == 0; }
+
46 inline bool IsNode() const { return (mID & cIsNode) != 0; }
+
47
+
49 inline BodyID GetBodyID() const { JPH_ASSERT(IsBody()); return BodyID(mID); }
+
50 inline uint32 GetNodeIndex() const { JPH_ASSERT(IsNode()); return mID & ~cIsNode; }
+
51
+
53 inline bool operator == (const BodyID &inRHS) const { return mID == inRHS.GetIndexAndSequenceNumber(); }
+
54 inline bool operator == (const NodeID &inRHS) const { return mID == inRHS.mID; }
+
55
+
56 private:
+
57 friend class AtomicNodeID;
+
58
+
59 inline explicit NodeID(uint32 inID) : mID(inID) { }
+
60
+
61 static const uint32 cIsNode = BodyID::cBroadPhaseBit;
+
62
+
63 uint32 mID;
+
64 };
+
65
+
66 static_assert(sizeof(NodeID) == sizeof(BodyID), "Body id's should have the same size as NodeIDs");
+
67
+
69 class AtomicNodeID
+
70 {
+
71 public:
+
73 AtomicNodeID() = default;
+
74 explicit AtomicNodeID(const NodeID &inRHS) : mID(inRHS.mID) { }
+
75
+
77 inline void operator = (const NodeID &inRHS) { mID = inRHS.mID; }
+
78
+
80 inline operator NodeID () const { return NodeID(mID); }
+
81
+
83 inline bool IsValid() const { return mID != cInvalidNodeIndex; }
+
84
+
86 inline bool operator == (const BodyID &inRHS) const { return mID == inRHS.GetIndexAndSequenceNumber(); }
+
87 inline bool operator == (const NodeID &inRHS) const { return mID == inRHS.mID; }
+
88
+
90 inline bool CompareExchange(NodeID inOld, NodeID inNew) { return mID.compare_exchange_strong(inOld.mID, inNew.mID); }
+
91
+
92 private:
+
93 atomic<uint32> mID;
+
94 };
+
95
+
97 class Node
+
98 {
+
99 public:
+
101 explicit Node(bool inIsChanged);
+
102
+
104 void GetNodeBounds(AABox &outBounds) const;
+
105
+
107 void GetChildBounds(int inChildIndex, AABox &outBounds) const;
+
108
+
110 void SetChildBounds(int inChildIndex, const AABox &inBounds);
+
111
+
113 void InvalidateChildBounds(int inChildIndex);
+
114
+
116 bool EncapsulateChildBounds(int inChildIndex, const AABox &inBounds);
+
117
+
119 atomic<float> mBoundsMinX[4];
+
120 atomic<float> mBoundsMinY[4];
+
121 atomic<float> mBoundsMinZ[4];
+
122 atomic<float> mBoundsMaxX[4];
+
123 atomic<float> mBoundsMaxY[4];
+
124 atomic<float> mBoundsMaxZ[4];
+
125
+
127 AtomicNodeID mChildNodeID[4];
+
128
+
131 atomic<uint32> mParentNodeIndex = cInvalidNodeIndex;
+
132
+
135 atomic<uint32> mIsChanged;
+
136
+
137 // Padding to align to 124 bytes
+
138 uint32 mPadding = 0;
+
139 };
+
140
+
141 // Maximum size of the stack during tree walk
+
142 static constexpr int cStackSize = 128;
+
143
+
144 static_assert(sizeof(atomic<float>) == 4, "Assuming that an atomic doesn't add any additional storage");
+
145 static_assert(sizeof(atomic<uint32>) == 4, "Assuming that an atomic doesn't add any additional storage");
+
146 static_assert(is_trivially_destructible<Node>(), "Assuming that we don't have a destructor");
+
147
+
148public:
+ +
151
+
152 static_assert(Allocator::ObjectStorageSize == 128, "Node should be 128 bytes");
+
153
+
+
155 struct Tracking
+
156 {
+
158 Tracking() = default;
+
159 Tracking(const Tracking &inRHS) : mBroadPhaseLayer(inRHS.mBroadPhaseLayer.load()), mObjectLayer(inRHS.mObjectLayer.load()), mBodyLocation(inRHS.mBodyLocation.load()) { }
+
160
+
162 static const uint32 cInvalidBodyLocation = 0xffffffff;
+
163
+
164 atomic<BroadPhaseLayer::Type> mBroadPhaseLayer = (BroadPhaseLayer::Type)cBroadPhaseLayerInvalid;
+
165 atomic<ObjectLayer> mObjectLayer = cObjectLayerInvalid;
+
166 atomic<uint32> mBodyLocation { cInvalidBodyLocation };
+
167 };
+
+
168
+ +
170
+
172 ~QuadTree();
+
173
+
174#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
176 void SetName(const char *inName) { mName = inName; }
+
177 inline const char * GetName() const { return mName; }
+
178#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED
+
179
+
181 inline bool HasBodies() const { return mNumBodies != 0; }
+
182
+
184 inline bool IsDirty() const { return mIsDirty; }
+
185
+
187 inline bool CanBeUpdated() const { return mFreeNodeBatch.mNumObjects == 0; }
+
188
+
190 void Init(Allocator &inAllocator);
+
191
+
+ +
193 {
+
194 NodeID mRootNodeID;
+
195 };
+
+
196
+
198 void DiscardOldTree();
+
199
+
201 AABox GetBounds() const;
+
202
+
205 void UpdatePrepare(const BodyVector &inBodies, TrackingVector &ioTracking, UpdateState &outUpdateState, bool inFullRebuild);
+
206 void UpdateFinalize(const BodyVector &inBodies, const TrackingVector &inTracking, const UpdateState &inUpdateState);
+
207
+
+
209 struct AddState
+
210 {
+
211 NodeID mLeafID = NodeID::sInvalid();
+ +
213 };
+
+
214
+
218 void AddBodiesPrepare(const BodyVector &inBodies, TrackingVector &ioTracking, BodyID *ioBodyIDs, int inNumber, AddState &outState);
+
219
+
221 void AddBodiesFinalize(TrackingVector &ioTracking, int inNumberBodies, const AddState &inState);
+
222
+
225 void AddBodiesAbort(TrackingVector &ioTracking, const AddState &inState);
+
226
+
228 void RemoveBodies(const BodyVector &inBodies, TrackingVector &ioTracking, const BodyID *ioBodyIDs, int inNumber);
+
229
+
231 void NotifyBodiesAABBChanged(const BodyVector &inBodies, const TrackingVector &inTracking, const BodyID *ioBodyIDs, int inNumber);
+
232
+
234 void CastRay(const RayCast &inRay, RayCastBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) const;
+
235
+
237 void CollideAABox(const AABox &inBox, CollideShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) const;
+
238
+
240 void CollideSphere(Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) const;
+
241
+
243 void CollidePoint(Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) const;
+
244
+
246 void CollideOrientedBox(const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) const;
+
247
+
249 void CastAABox(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) const;
+
250
+
252 void FindCollidingPairs(const BodyVector &inBodies, const BodyID *inActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, BodyPairCollector &ioPairCollector, const ObjectLayerPairFilter &inObjectLayerPairFilter) const;
+
253
+
254#ifdef JPH_TRACK_BROADPHASE_STATS
+
256 uint64 GetTicks100Pct() const;
+
257
+
259 void ReportStats(uint64 inTicks100Pct) const;
+
260#endif // JPH_TRACK_BROADPHASE_STATS
+
261
+
262private:
+
264 static const uint32 cInvalidNodeIndex = 0xffffffff;
+
265 static const float cLargeFloat;
+
266 static const AABox cInvalidBounds;
+
267
+
269 struct RootNode
+
270 {
+
272 inline NodeID GetNodeID() const { return NodeID::sFromNodeIndex(mIndex); }
+
273
+
275 atomic<uint32> mIndex { cInvalidNodeIndex };
+
276 };
+
277
+
279 void GetBodyLocation(const TrackingVector &inTracking, BodyID inBodyID, uint32 &outNodeIdx, uint32 &outChildIdx) const;
+
280 void SetBodyLocation(TrackingVector &ioTracking, BodyID inBodyID, uint32 inNodeIdx, uint32 inChildIdx) const;
+
281 static void sInvalidateBodyLocation(TrackingVector &ioTracking, BodyID inBodyID);
+
282
+
284 JPH_INLINE const RootNode & GetCurrentRoot() const { return mRootNode[mRootNodeIndex]; }
+
285 JPH_INLINE RootNode & GetCurrentRoot() { return mRootNode[mRootNodeIndex]; }
+
286
+
288 inline AABox GetNodeOrBodyBounds(const BodyVector &inBodies, NodeID inNodeID) const;
+
289
+
291 inline void MarkNodeAndParentsChanged(uint32 inNodeIndex);
+
292
+
294 inline void WidenAndMarkNodeAndParentsChanged(uint32 inNodeIndex, const AABox &inNewBounds);
+
295
+
297 inline uint32 AllocateNode(bool inIsChanged);
+
298
+
300 inline bool TryInsertLeaf(TrackingVector &ioTracking, int inNodeIndex, NodeID inLeafID, const AABox &inLeafBounds, int inLeafNumBodies);
+
301
+
303 inline bool TryCreateNewRoot(TrackingVector &ioTracking, atomic<uint32> &ioRootNodeIndex, NodeID inLeafID, const AABox &inLeafBounds, int inLeafNumBodies);
+
304
+
306 NodeID BuildTree(const BodyVector &inBodies, TrackingVector &ioTracking, NodeID *ioNodeIDs, int inNumber, uint inMaxDepthMarkChanged, AABox &outBounds);
+
307
+
310 static void sPartition(NodeID *ioNodeIDs, Vec3 *ioNodeCenters, int inNumber, int &outMidPoint);
+
311
+
315 static void sPartition4(NodeID *ioNodeIDs, Vec3 *ioNodeCenters, int inBegin, int inEnd, int *outSplit);
+
316
+
317#ifdef JPH_DEBUG
+
320 void ValidateTree(const BodyVector &inBodies, const TrackingVector &inTracking, uint32 inNodeIndex, uint32 inNumExpectedBodies) const;
+
321#endif
+
322
+
323#ifdef JPH_DUMP_BROADPHASE_TREE
+
325 void DumpTree(const NodeID &inRoot, const char *inFileNamePrefix) const;
+
326#endif
+
327
+
329 Allocator * mAllocator = nullptr;
+
330
+
332 Allocator::Batch mFreeNodeBatch;
+
333
+
337 alignas(JPH_CACHE_LINE_SIZE) atomic<uint32> mNumBodies { 0 };
+
338
+
341 RootNode mRootNode[2];
+
342 atomic<uint32> mRootNodeIndex { 0 };
+
343
+
345 atomic<bool> mIsDirty = false;
+
346
+
347#ifdef JPH_TRACK_BROADPHASE_STATS
+
349 mutable Mutex mStatsMutex;
+
350
+
351 struct Stat
+
352 {
+
353 uint64 mNumQueries = 0;
+
354 uint64 mNodesVisited = 0;
+
355 uint64 mBodiesVisited = 0;
+
356 uint64 mHitsReported = 0;
+
357 uint64 mTotalTicks = 0;
+
358 uint64 mCollectorTicks = 0;
+
359 };
+
360
+
361 using LayerToStats = UnorderedMap<String, Stat>;
+
362
+
364 uint64 GetTicks100Pct(const LayerToStats &inLayer) const;
+
365
+
367 void ReportStats(const char *inName, const LayerToStats &inLayer, uint64 inTicks100Pct) const;
+
368
+
369 mutable LayerToStats mCastRayStats;
+
370 mutable LayerToStats mCollideAABoxStats;
+
371 mutable LayerToStats mCollideSphereStats;
+
372 mutable LayerToStats mCollidePointStats;
+
373 mutable LayerToStats mCollideOrientedBoxStats;
+
374 mutable LayerToStats mCastAABoxStats;
+
375#endif // JPH_TRACK_BROADPHASE_STATS
+
376
+
378 uint GetMaxTreeDepth(const NodeID &inNodeID) const;
+
379
+
381 template <class Visitor>
+
382 JPH_INLINE void WalkTree(const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking, Visitor &ioVisitor JPH_IF_TRACK_BROADPHASE_STATS(, LayerToStats &ioStats)) const;
+
383
+
384#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)
+
386 const char * mName = "Layer";
+
387#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED
+
388};
+
+
389
+ + + + +
#define JPH_IF_TRACK_BROADPHASE_STATS(...)
Definition BroadPhase.h:16
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_CACHE_LINE_SIZE
Definition Core.h:492
+
std::uint64_t uint64
Definition Core.h:456
+
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
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > > UnorderedMap
Definition UnorderedMap.h:13
+
Axis aligned box.
Definition AABox.h:16
+
Definition Array.h:36
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
static constexpr uint32 cBroadPhaseBit
This bit is used by the broadphase.
Definition BodyID.h:18
+
uint32 GetIndexAndSequenceNumber() const
Returns the index and sequence number combined in an uint32.
Definition BodyID.h:58
+
uint8 Type
Definition BroadPhaseLayer.h:20
+
Virtual interface that allows collecting multiple collision results.
Definition CollisionCollector.h:45
+ +
Definition Mutex.h:122
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Filter class for object layers.
Definition ObjectLayer.h:28
+
Filter class to test if two objects can collide based on their object layer. Used while finding colli...
Definition ObjectLayer.h:50
+
Oriented box.
Definition OrientedBox.h:18
+
Definition QuadTree.h:21
+
const char * GetName() const
Definition QuadTree.h:177
+
bool HasBodies() const
Check if there is anything in the tree.
Definition QuadTree.h:181
+
bool IsDirty() const
Check if the tree needs an UpdatePrepare/Finalize()
Definition QuadTree.h:184
+
bool CanBeUpdated() const
Check if this tree can get an UpdatePrepare/Finalize() or if it needs a DiscardOldTree() first.
Definition QuadTree.h:187
+
void SetName(const char *inName)
Name of the tree for debugging purposes.
Definition QuadTree.h:176
+
Definition Vec3.h:17
+
Structure that holds AABox moving linearly through 3d space.
Definition AABoxCast.h:13
+
Temporary data structure to pass information between AddBodiesPrepare and AddBodiesFinalize/Abort.
Definition QuadTree.h:210
+
AABox mLeafBounds
Definition QuadTree.h:212
+
Data to track location of a Body in the tree.
Definition QuadTree.h:156
+
Tracking(const Tracking &inRHS)
Definition QuadTree.h:159
+
Tracking()=default
Constructor to satisfy the vector class.
+
Definition QuadTree.h:193
+
NodeID mRootNodeID
This will be the new root node id.
Definition QuadTree.h:194
+
Definition RayCast.h:47
+
+
+ + + + diff --git a/_quat_8h.html b/_quat_8h.html new file mode 100644 index 000000000..ca411041e --- /dev/null +++ b/_quat_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Math/Quat.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Quat.h File Reference
+
+
+
#include <Jolt/Math/Vec3.h>
+#include <Jolt/Math/Vec4.h>
+#include "Quat.inl"
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  Quat
 
+
+
+ + + + diff --git a/_quat_8h.js b/_quat_8h.js new file mode 100644 index 000000000..e9413ae52 --- /dev/null +++ b/_quat_8h.js @@ -0,0 +1,4 @@ +var _quat_8h = +[ + [ "Quat", "class_quat.html", "class_quat" ] +]; \ No newline at end of file diff --git a/_quat_8h_source.html b/_quat_8h_source.html new file mode 100644 index 000000000..287defd99 --- /dev/null +++ b/_quat_8h_source.html @@ -0,0 +1,311 @@ + + + + + + + +Jolt Physics: Jolt/Math/Quat.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Quat.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
+
7#include <Jolt/Math/Vec3.h>
+
8#include <Jolt/Math/Vec4.h>
+
9
+ +
11
+
+
32class [[nodiscard]] alignas(JPH_VECTOR_ALIGNMENT) Quat
+
33{
+
34public:
+ +
36
+
39 inline Quat() = default;
+
40 Quat(const Quat &inRHS) = default;
+
41 Quat & operator = (const Quat &inRHS) = default;
+
42 inline Quat(float inX, float inY, float inZ, float inW) : mValue(inX, inY, inZ, inW) { }
+
43 inline explicit Quat(Vec4Arg inV) : mValue(inV) { }
+
45
+
48
+
50 inline bool operator == (QuatArg inRHS) const { return mValue == inRHS.mValue; }
+
51
+
53 inline bool operator != (QuatArg inRHS) const { return mValue != inRHS.mValue; }
+
54
+
56 inline bool IsClose(QuatArg inRHS, float inMaxDistSq = 1.0e-12f) const { return mValue.IsClose(inRHS.mValue, inMaxDistSq); }
+
57
+
59 inline bool IsNormalized(float inTolerance = 1.0e-5f) const { return mValue.IsNormalized(inTolerance); }
+
60
+
62 inline bool IsNaN() const { return mValue.IsNaN(); }
+
63
+
67
+
69 JPH_INLINE float GetX() const { return mValue.GetX(); }
+
70
+
72 JPH_INLINE float GetY() const { return mValue.GetY(); }
+
73
+
75 JPH_INLINE float GetZ() const { return mValue.GetZ(); }
+
76
+
78 JPH_INLINE float GetW() const { return mValue.GetW(); }
+
79
+
81 JPH_INLINE Vec3 GetXYZ() const { return Vec3(mValue); }
+
82
+
84 JPH_INLINE Vec4 GetXYZW() const { return mValue; }
+
85
+
87 JPH_INLINE void SetX(float inX) { mValue.SetX(inX); }
+
88 JPH_INLINE void SetY(float inY) { mValue.SetY(inY); }
+
89 JPH_INLINE void SetZ(float inZ) { mValue.SetZ(inZ); }
+
90 JPH_INLINE void SetW(float inW) { mValue.SetW(inW); }
+
91
+
93 JPH_INLINE void Set(float inX, float inY, float inZ, float inW) { mValue.Set(inX, inY, inZ, inW); }
+
94
+
98
+
100 JPH_INLINE static Quat sZero() { return Quat(Vec4::sZero()); }
+
101
+
103 JPH_INLINE static Quat sIdentity() { return Quat(0, 0, 0, 1); }
+
104
+
106
+
108 JPH_INLINE static Quat sRotation(Vec3Arg inAxis, float inAngle);
+
109
+
111 JPH_INLINE void GetAxisAngle(Vec3 &outAxis, float &outAngle) const;
+
112
+
115 JPH_INLINE static Quat sFromTo(Vec3Arg inFrom, Vec3Arg inTo);
+
116
+
118 template <class Random>
+
119 inline static Quat sRandom(Random &inRandom);
+
120
+
122 inline static Quat sEulerAngles(Vec3Arg inAngles);
+
123
+
125 inline Vec3 GetEulerAngles() const;
+
126
+
129
+
132 JPH_INLINE float LengthSq() const { return mValue.LengthSq(); }
+
133
+
136 JPH_INLINE float Length() const { return mValue.Length(); }
+
137
+
139 JPH_INLINE Quat Normalized() const { return Quat(mValue.Normalized()); }
+
140
+
144
+
145 JPH_INLINE void operator += (QuatArg inRHS) { mValue += inRHS.mValue; }
+
146 JPH_INLINE void operator -= (QuatArg inRHS) { mValue -= inRHS.mValue; }
+
147 JPH_INLINE void operator *= (float inValue) { mValue *= inValue; }
+
148 JPH_INLINE void operator /= (float inValue) { mValue /= inValue; }
+
149 JPH_INLINE Quat operator - () const { return Quat(-mValue); }
+
150 JPH_INLINE Quat operator + (QuatArg inRHS) const { return Quat(mValue + inRHS.mValue); }
+
151 JPH_INLINE Quat operator - (QuatArg inRHS) const { return Quat(mValue - inRHS.mValue); }
+
152 JPH_INLINE Quat operator * (QuatArg inRHS) const;
+
153 JPH_INLINE Quat operator * (float inValue) const { return Quat(mValue * inValue); }
+
154 inline friend Quat operator * (float inValue, QuatArg inRHS) { return Quat(inRHS.mValue * inValue); }
+
155 JPH_INLINE Quat operator / (float inValue) const { return Quat(mValue / inValue); }
+
156
+
158
+
160 JPH_INLINE Vec3 operator * (Vec3Arg inValue) const;
+
161
+
163 JPH_INLINE Vec3 InverseRotate(Vec3Arg inValue) const;
+
164
+
166 JPH_INLINE Vec3 RotateAxisX() const;
+
167
+
169 JPH_INLINE Vec3 RotateAxisY() const;
+
170
+
172 JPH_INLINE Vec3 RotateAxisZ() const;
+
173
+
175 JPH_INLINE float Dot(QuatArg inRHS) const { return mValue.Dot(inRHS.mValue); }
+
176
+
178 JPH_INLINE Quat Conjugated() const { return Quat(Vec4::sXor(mValue, UVec4(0x80000000, 0x80000000, 0x80000000, 0).ReinterpretAsFloat())); }
+
179
+
181 JPH_INLINE Quat Inversed() const { return Conjugated() / Length(); }
+
182
+
184 JPH_INLINE Quat EnsureWPositive() const { return Quat(Vec4::sXor(mValue, Vec4::sAnd(mValue.SplatW(), UVec4::sReplicate(0x80000000).ReinterpretAsFloat()))); }
+
185
+
187 JPH_INLINE Quat GetPerpendicular() const { return Quat(Vec4(1, -1, 1, -1) * mValue.Swizzle<SWIZZLE_Y, SWIZZLE_X, SWIZZLE_W, SWIZZLE_Z>()); }
+
188
+
190 JPH_INLINE float GetRotationAngle(Vec3Arg inAxis) const { return GetW() == 0.0f? JPH_PI : 2.0f * ATan(GetXYZ().Dot(inAxis) / GetW()); }
+
191
+
209 JPH_INLINE Quat GetTwist(Vec3Arg inAxis) const;
+
210
+
223 JPH_INLINE void GetSwingTwist(Quat &outSwing, Quat &outTwist) const;
+
224
+
229 JPH_INLINE Quat LERP(QuatArg inDestination, float inFraction) const;
+
230
+
236 JPH_INLINE Quat SLERP(QuatArg inDestination, float inFraction) const;
+
237
+
239 static JPH_INLINE Quat sLoadFloat3Unsafe(const Float3 &inV);
+
240
+
242 JPH_INLINE void StoreFloat3(Float3 *outV) const;
+
243
+
245 friend ostream & operator << (ostream &inStream, QuatArg inQ) { inStream << inQ.mValue; return inStream; }
+
246
+ +
249};
+
+
250
+
251static_assert(is_trivial<Quat>(), "Is supposed to be a trivial type!");
+
252
+ +
254
+
255#include "Quat.inl"
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:451
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
@ SWIZZLE_Z
Use the Z component.
Definition Swizzle.h:14
+
@ SWIZZLE_W
Use the W component.
Definition Swizzle.h:15
+
@ SWIZZLE_X
Use the X component.
Definition Swizzle.h:12
+
@ SWIZZLE_Y
Use the Y component.
Definition Swizzle.h:13
+
JPH_INLINE float ATan(float inX)
Arc tangent of x (returns value in the range [-PI / 2, PI / 2])
Definition Trigonometry.h:68
+ + +
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
Definition Quat.h:33
+
Quat(const Quat &inRHS)=default
+
JPH_INLINE float GetW() const
Get W component (real part)
Definition Quat.h:78
+
JPH_INLINE float GetY() const
Get Y component (imaginary part j)
Definition Quat.h:72
+
JPH_INLINE float GetZ() const
Get Z component (imaginary part k)
Definition Quat.h:75
+
JPH_INLINE void SetZ(float inZ)
Definition Quat.h:89
+
JPH_INLINE float GetX() const
Get X component (imaginary part i)
Definition Quat.h:69
+
JPH_INLINE void SetY(float inY)
Definition Quat.h:88
+
JPH_INLINE float LengthSq() const
Definition Quat.h:132
+
bool IsNaN() const
If any component of this quaternion is a NaN (not a number)
Definition Quat.h:62
+
static JPH_INLINE Quat sIdentity()
Definition Quat.h:103
+
JPH_INLINE Vec4 GetXYZW() const
Get the quaternion as a Vec4.
Definition Quat.h:84
+
bool IsClose(QuatArg inRHS, float inMaxDistSq=1.0e-12f) const
If this quaternion is close to inRHS. Note that q and -q represent the same rotation,...
Definition Quat.h:56
+
JPH_INLINE Quat Normalized() const
Normalize the quaternion (make it length 1)
Definition Quat.h:139
+
JPH_INLINE Quat EnsureWPositive() const
Ensures that the W component is positive by negating the entire quaternion if it is not....
Definition Quat.h:184
+
JPH_INLINE void Set(float inX, float inY, float inZ, float inW)
Set all components.
Definition Quat.h:93
+
Quat(Vec4Arg inV)
Definition Quat.h:43
+
JPH_INLINE float Dot(QuatArg inRHS) const
Dot product.
Definition Quat.h:175
+
Quat()=default
Intentionally not initialized for performance reasons.
+
JPH_INLINE float Length() const
Definition Quat.h:136
+
JPH_INLINE Quat GetPerpendicular() const
Get a quaternion that is perpendicular to this quaternion.
Definition Quat.h:187
+
JPH_INLINE Quat Inversed() const
Get inverse quaternion.
Definition Quat.h:181
+
JPH_INLINE Quat Conjugated() const
The conjugate [w, -x, -y, -z] is the same as the inverse for unit quaternions.
Definition Quat.h:178
+
JPH_INLINE float GetRotationAngle(Vec3Arg inAxis) const
Get rotation angle around inAxis (uses Swing Twist Decomposition to get the twist quaternion and uses...
Definition Quat.h:190
+
Quat(float inX, float inY, float inZ, float inW)
Definition Quat.h:42
+
JPH_INLINE void SetW(float inW)
Definition Quat.h:90
+
JPH_INLINE void SetX(float inX)
Set individual components.
Definition Quat.h:87
+
bool IsNormalized(float inTolerance=1.0e-5f) const
If the length of this quaternion is 1 +/- inTolerance.
Definition Quat.h:59
+
static JPH_INLINE Quat sZero()
Definition Quat.h:100
+
JPH_INLINE Vec3 GetXYZ() const
Get the imaginary part of the quaternion.
Definition Quat.h:81
+
Vec4 mValue
4 vector that stores [x, y, z, w] parts of the quaternion
Definition Quat.h:248
+
Definition UVec4.h:12
+
static JPH_INLINE UVec4 sReplicate(uint32 inV)
Replicate int inV across all components.
Definition UVec4.inl:56
+
JPH_INLINE Vec4 ReinterpretAsFloat() const
Reinterpret UVec4 as a Vec4 (doesn't change the bits)
Definition UVec4.inl:337
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
static JPH_INLINE Vec4 sAnd(Vec4Arg inV1, Vec4Arg inV2)
Logical and (component wise)
Definition Vec4.inl:290
+
static JPH_INLINE Vec4 sXor(Vec4Arg inV1, Vec4Arg inV2)
Logical xor (component wise)
Definition Vec4.inl:279
+
static JPH_INLINE Vec4 sZero()
Vector with all zeros.
Definition Vec4.inl:63
+
JPH_INLINE Vec4 Swizzle() const
Swizzle the elements in inV.
+
+
+ + + + diff --git a/_quat_8inl.html b/_quat_8inl.html new file mode 100644 index 000000000..3ed8077ce --- /dev/null +++ b/_quat_8inl.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Math/Quat.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Quat.inl File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_quat_8inl_source.html b/_quat_8inl_source.html new file mode 100644 index 000000000..3e516f094 --- /dev/null +++ b/_quat_8inl_source.html @@ -0,0 +1,544 @@ + + + + + + + +Jolt Physics: Jolt/Math/Quat.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Quat.inl
+
+
+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
+ +
6
+
+ +
8{
+
9#if defined(JPH_USE_SSE4_1)
+
10 // Taken from: http://momchil-velikov.blogspot.nl/2013/10/fast-sse-quternion-multiplication.html
+
11 __m128 abcd = mValue.mValue;
+
12 __m128 xyzw = inRHS.mValue.mValue;
+
13
+
14 __m128 t0 = _mm_shuffle_ps(abcd, abcd, _MM_SHUFFLE(3, 3, 3, 3));
+
15 __m128 t1 = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(2, 3, 0, 1));
+
16
+
17 __m128 t3 = _mm_shuffle_ps(abcd, abcd, _MM_SHUFFLE(0, 0, 0, 0));
+
18 __m128 t4 = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(1, 0, 3, 2));
+
19
+
20 __m128 t5 = _mm_shuffle_ps(abcd, abcd, _MM_SHUFFLE(1, 1, 1, 1));
+
21 __m128 t6 = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(2, 0, 3, 1));
+
22
+
23 // [d,d,d,d] * [z,w,x,y] = [dz,dw,dx,dy]
+
24 __m128 m0 = _mm_mul_ps(t0, t1);
+
25
+
26 // [a,a,a,a] * [y,x,w,z] = [ay,ax,aw,az]
+
27 __m128 m1 = _mm_mul_ps(t3, t4);
+
28
+
29 // [b,b,b,b] * [z,x,w,y] = [bz,bx,bw,by]
+
30 __m128 m2 = _mm_mul_ps(t5, t6);
+
31
+
32 // [c,c,c,c] * [w,z,x,y] = [cw,cz,cx,cy]
+
33 __m128 t7 = _mm_shuffle_ps(abcd, abcd, _MM_SHUFFLE(2, 2, 2, 2));
+
34 __m128 t8 = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(3, 2, 0, 1));
+
35 __m128 m3 = _mm_mul_ps(t7, t8);
+
36
+
37 // [dz,dw,dx,dy] + -[ay,ax,aw,az] = [dz+ay,dw-ax,dx+aw,dy-az]
+
38 __m128 e = _mm_addsub_ps(m0, m1);
+
39
+
40 // [dx+aw,dz+ay,dy-az,dw-ax]
+
41 e = _mm_shuffle_ps(e, e, _MM_SHUFFLE(1, 3, 0, 2));
+
42
+
43 // [dx+aw,dz+ay,dy-az,dw-ax] + -[bz,bx,bw,by] = [dx+aw+bz,dz+ay-bx,dy-az+bw,dw-ax-by]
+
44 e = _mm_addsub_ps(e, m2);
+
45
+
46 // [dz+ay-bx,dw-ax-by,dy-az+bw,dx+aw+bz]
+
47 e = _mm_shuffle_ps(e, e, _MM_SHUFFLE(2, 0, 1, 3));
+
48
+
49 // [dz+ay-bx,dw-ax-by,dy-az+bw,dx+aw+bz] + -[cw,cz,cx,cy] = [dz+ay-bx+cw,dw-ax-by-cz,dy-az+bw+cx,dx+aw+bz-cy]
+
50 e = _mm_addsub_ps(e, m3);
+
51
+
52 // [dw-ax-by-cz,dz+ay-bx+cw,dy-az+bw+cx,dx+aw+bz-cy]
+
53 return Quat(Vec4(_mm_shuffle_ps(e, e, _MM_SHUFFLE(2, 3, 1, 0))));
+
54#else
+
55 float lx = mValue.GetX();
+
56 float ly = mValue.GetY();
+
57 float lz = mValue.GetZ();
+
58 float lw = mValue.GetW();
+
59
+
60 float rx = inRHS.mValue.GetX();
+
61 float ry = inRHS.mValue.GetY();
+
62 float rz = inRHS.mValue.GetZ();
+
63 float rw = inRHS.mValue.GetW();
+
64
+
65 float x = lw * rx + lx * rw + ly * rz - lz * ry;
+
66 float y = lw * ry - lx * rz + ly * rw + lz * rx;
+
67 float z = lw * rz + lx * ry - ly * rx + lz * rw;
+
68 float w = lw * rw - lx * rx - ly * ry - lz * rz;
+
69
+
70 return Quat(x, y, z, w);
+
71#endif
+
72}
+
+
73
+
+
74Quat Quat::sRotation(Vec3Arg inAxis, float inAngle)
+
75{
+
76 // returns [inAxis * sin(0.5f * inAngle), cos(0.5f * inAngle)]
+
77 JPH_ASSERT(inAxis.IsNormalized());
+
78 Vec4 s, c;
+
79 Vec4::sReplicate(0.5f * inAngle).SinCos(s, c);
+
80 return Quat(Vec4::sSelect(Vec4(inAxis) * s, c, UVec4(0, 0, 0, 0xffffffffU)));
+
81}
+
+
82
+
+
83void Quat::GetAxisAngle(Vec3 &outAxis, float &outAngle) const
+
84{
+ +
86 Quat w_pos = EnsureWPositive();
+
87 float abs_w = w_pos.GetW();
+
88 if (abs_w >= 1.0f)
+
89 {
+
90 outAxis = Vec3::sZero();
+
91 outAngle = 0.0f;
+
92 }
+
93 else
+
94 {
+
95 outAngle = 2.0f * ACos(abs_w);
+
96 outAxis = w_pos.GetXYZ().NormalizedOr(Vec3::sZero());
+
97 }
+
98}
+
+
99
+
+ +
101{
+
102 /*
+
103 Uses (inFrom = v1, inTo = v2):
+
104
+
105 angle = arcos(v1 . v2 / |v1||v2|)
+
106 axis = normalize(v1 x v2)
+
107
+
108 Quaternion is then:
+
109
+
110 s = sin(angle / 2)
+
111 x = axis.x * s
+
112 y = axis.y * s
+
113 z = axis.z * s
+
114 w = cos(angle / 2)
+
115
+
116 Using identities:
+
117
+
118 sin(2 * a) = 2 * sin(a) * cos(a)
+
119 cos(2 * a) = cos(a)^2 - sin(a)^2
+
120 sin(a)^2 + cos(a)^2 = 1
+
121
+
122 This reduces to:
+
123
+
124 x = (v1 x v2).x
+
125 y = (v1 x v2).y
+
126 z = (v1 x v2).z
+
127 w = |v1||v2| + v1 . v2
+
128
+
129 which then needs to be normalized because the whole equation was multiplied by 2 cos(angle / 2)
+
130 */
+
131
+
132 float len_v1_v2 = sqrt(inFrom.LengthSq() * inTo.LengthSq());
+
133 float w = len_v1_v2 + inFrom.Dot(inTo);
+
134
+
135 if (w == 0.0f)
+
136 {
+
137 if (len_v1_v2 == 0.0f)
+
138 {
+
139 // If either of the vectors has zero length, there is no rotation and we return identity
+
140 return Quat::sIdentity();
+
141 }
+
142 else
+
143 {
+
144 // If vectors are perpendicular, take one of the many 180 degree rotations that exist
+
145 return Quat(Vec4(inFrom.GetNormalizedPerpendicular(), 0));
+
146 }
+
147 }
+
148
+
149 Vec3 v = inFrom.Cross(inTo);
+
150 return Quat(Vec4(v, w)).Normalized();
+
151}
+
+
152
+
153template <class Random>
+
+
154Quat Quat::sRandom(Random &inRandom)
+
155{
+
156 std::uniform_real_distribution<float> zero_to_one(0.0f, 1.0f);
+
157 float x0 = zero_to_one(inRandom);
+
158 float r1 = sqrt(1.0f - x0), r2 = sqrt(x0);
+
159 std::uniform_real_distribution<float> zero_to_two_pi(0.0f, 2.0f * JPH_PI);
+
160 Vec4 s, c;
+
161 Vec4(zero_to_two_pi(inRandom), zero_to_two_pi(inRandom), 0, 0).SinCos(s, c);
+
162 return Quat(s.GetX() * r1, c.GetX() * r1, s.GetY() * r2, c.GetY() * r2);
+
163}
+
+
164
+
+ +
166{
+
167 Vec4 half(0.5f * inAngles);
+
168 Vec4 s, c;
+
169 half.SinCos(s, c);
+
170
+
171 float cx = c.GetX();
+
172 float sx = s.GetX();
+
173 float cy = c.GetY();
+
174 float sy = s.GetY();
+
175 float cz = c.GetZ();
+
176 float sz = s.GetZ();
+
177
+
178 return Quat(
+
179 cz * sx * cy - sz * cx * sy,
+
180 cz * cx * sy + sz * sx * cy,
+
181 sz * cx * cy - cz * sx * sy,
+
182 cz * cx * cy + sz * sx * sy);
+
183}
+
+
184
+
+ +
186{
+
187 float y_sq = GetY() * GetY();
+
188
+
189 // X
+
190 float t0 = 2.0f * (GetW() * GetX() + GetY() * GetZ());
+
191 float t1 = 1.0f - 2.0f * (GetX() * GetX() + y_sq);
+
192
+
193 // Y
+
194 float t2 = 2.0f * (GetW() * GetY() - GetZ() * GetX());
+
195 t2 = t2 > 1.0f? 1.0f : t2;
+
196 t2 = t2 < -1.0f? -1.0f : t2;
+
197
+
198 // Z
+
199 float t3 = 2.0f * (GetW() * GetZ() + GetX() * GetY());
+
200 float t4 = 1.0f - 2.0f * (y_sq + GetZ() * GetZ());
+
201
+
202 return Vec3(ATan2(t0, t1), ASin(t2), ATan2(t3, t4));
+
203}
+
+
204
+
+ +
206{
+
207 Quat twist(Vec4(GetXYZ().Dot(inAxis) * inAxis, GetW()));
+
208 float twist_len = twist.LengthSq();
+
209 if (twist_len != 0.0f)
+
210 return twist / sqrt(twist_len);
+
211 else
+
212 return Quat::sIdentity();
+
213}
+
+
214
+
+
215void Quat::GetSwingTwist(Quat &outSwing, Quat &outTwist) const
+
216{
+
217 float x = GetX(), y = GetY(), z = GetZ(), w = GetW();
+
218 float s = sqrt(Square(w) + Square(x));
+
219 if (s != 0.0f)
+
220 {
+
221 outTwist = Quat(x / s, 0, 0, w / s);
+
222 outSwing = Quat(0, (w * y - x * z) / s, (w * z + x * y) / s, s);
+
223 }
+
224 else
+
225 {
+
226 // If both x and w are zero, this must be a 180 degree rotation around either y or z
+
227 outTwist = Quat::sIdentity();
+
228 outSwing = *this;
+
229 }
+
230}
+
+
231
+
+
232Quat Quat::LERP(QuatArg inDestination, float inFraction) const
+
233{
+
234 float scale0 = 1.0f - inFraction;
+
235 return Quat(Vec4::sReplicate(scale0) * mValue + Vec4::sReplicate(inFraction) * inDestination.mValue);
+
236}
+
+
237
+
+
238Quat Quat::SLERP(QuatArg inDestination, float inFraction) const
+
239{
+
240 // Difference at which to LERP instead of SLERP
+
241 const float delta = 0.0001f;
+
242
+
243 // Calc cosine
+
244 float sign_scale1 = 1.0f;
+
245 float cos_omega = Dot(inDestination);
+
246
+
247 // Adjust signs (if necessary)
+
248 if (cos_omega < 0.0f)
+
249 {
+
250 cos_omega = -cos_omega;
+
251 sign_scale1 = -1.0f;
+
252 }
+
253
+
254 // Calculate coefficients
+
255 float scale0, scale1;
+
256 if (1.0f - cos_omega > delta)
+
257 {
+
258 // Standard case (slerp)
+
259 float omega = ACos(cos_omega);
+
260 float sin_omega = Sin(omega);
+
261 scale0 = Sin((1.0f - inFraction) * omega) / sin_omega;
+
262 scale1 = sign_scale1 * Sin(inFraction * omega) / sin_omega;
+
263 }
+
264 else
+
265 {
+
266 // Quaternions are very close so we can do a linear interpolation
+
267 scale0 = 1.0f - inFraction;
+
268 scale1 = sign_scale1 * inFraction;
+
269 }
+
270
+
271 // Interpolate between the two quaternions
+
272 return Quat(Vec4::sReplicate(scale0) * mValue + Vec4::sReplicate(scale1) * inDestination.mValue).Normalized();
+
273}
+
+
274
+
+ +
276{
+
277 // Rotating a vector by a quaternion is done by: p' = q * p * q^-1 (q^-1 = conjugated(q) for a unit quaternion)
+ +
279 return Vec3((*this * Quat(Vec4(inValue, 0)) * Conjugated()).mValue);
+
280}
+
+
281
+
+ +
283{
+ +
285 return Vec3((Conjugated() * Quat(Vec4(inValue, 0)) * *this).mValue);
+
286}
+
+
287
+
+ +
289{
+
290 // This is *this * Vec3::sAxisX() written out:
+ +
292 float x = GetX(), y = GetY(), z = GetZ(), w = GetW();
+
293 float tx = 2.0f * x, tw = 2.0f * w;
+
294 return Vec3(tx * x + tw * w - 1.0f, tx * y + z * tw, tx * z - y * tw);
+
295}
+
+
296
+
+ +
298{
+
299 // This is *this * Vec3::sAxisY() written out:
+ +
301 float x = GetX(), y = GetY(), z = GetZ(), w = GetW();
+
302 float ty = 2.0f * y, tw = 2.0f * w;
+
303 return Vec3(x * ty - z * tw, tw * w + ty * y - 1.0f, x * tw + ty * z);
+
304}
+
+
305
+
+ +
307{
+
308 // This is *this * Vec3::sAxisZ() written out:
+ +
310 float x = GetX(), y = GetY(), z = GetZ(), w = GetW();
+
311 float tz = 2.0f * z, tw = 2.0f * w;
+
312 return Vec3(x * tz + y * tw, y * tz - x * tw, tw * w + tz * z - 1.0f);
+
313}
+
+
314
+
+
315void Quat::StoreFloat3(Float3 *outV) const
+
316{
+ + +
319}
+
+
320
+
+ +
322{
+ +
324 float w = sqrt(max(1.0f - v.LengthSq(), 0.0f)); // It is possible that the length of v is a fraction above 1, and we don't want to introduce NaN's in that case so we clamp to 0
+
325 return Quat(Vec4(v, w));
+
326}
+
+
327
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
JPH_INLINE float ACos(float inX)
Definition Trigonometry.h:42
+
JPH_INLINE float ATan2(float inY, float inX)
Arc tangent of y / x using the signs of the arguments to determine the correct quadrant (returns valu...
Definition Trigonometry.h:74
+
JPH_NAMESPACE_BEGIN JPH_INLINE float Sin(float inX)
Sine of x (input in radians)
Definition Trigonometry.h:12
+
JPH_INLINE float ASin(float inX)
Definition Trigonometry.h:35
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
Definition Quat.h:33
+
static Quat sRandom(Random &inRandom)
Random unit quaternion.
Definition Quat.inl:154
+
JPH_INLINE Vec3 InverseRotate(Vec3Arg inValue) const
Rotate a vector by the inverse of this quaternion.
Definition Quat.inl:282
+
JPH_INLINE float GetW() const
Get W component (real part)
Definition Quat.h:78
+
static Quat sEulerAngles(Vec3Arg inAngles)
Conversion from Euler angles. Rotation order is X then Y then Z (RotZ * RotY * RotX)....
Definition Quat.inl:165
+
JPH_INLINE float GetY() const
Get Y component (imaginary part j)
Definition Quat.h:72
+
JPH_INLINE float GetZ() const
Get Z component (imaginary part k)
Definition Quat.h:75
+
static JPH_INLINE Quat sRotation(Vec3Arg inAxis, float inAngle)
Rotation from axis and angle.
Definition Quat.inl:74
+
JPH_INLINE float GetX() const
Get X component (imaginary part i)
Definition Quat.h:69
+
JPH_INLINE Quat LERP(QuatArg inDestination, float inFraction) const
Definition Quat.inl:232
+
static JPH_INLINE Quat sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (X, Y and Z component and then calculates W) reads 32 bits extra which it d...
Definition Quat.inl:321
+
JPH_INLINE float LengthSq() const
Definition Quat.h:132
+
JPH_INLINE void GetAxisAngle(Vec3 &outAxis, float &outAngle) const
Get axis and angle that represents this quaternion, outAngle will always be in the range .
Definition Quat.inl:83
+
static JPH_INLINE Quat sIdentity()
Definition Quat.h:103
+
JPH_INLINE void GetSwingTwist(Quat &outSwing, Quat &outTwist) const
Definition Quat.inl:215
+
static JPH_INLINE Quat sFromTo(Vec3Arg inFrom, Vec3Arg inTo)
Definition Quat.inl:100
+
friend Quat operator*(float inValue, QuatArg inRHS)
Definition Quat.h:154
+
JPH_INLINE Quat EnsureWPositive() const
Ensures that the W component is positive by negating the entire quaternion if it is not....
Definition Quat.h:184
+
JPH_INLINE Quat GetTwist(Vec3Arg inAxis) const
Definition Quat.inl:205
+
JPH_INLINE float Dot(QuatArg inRHS) const
Dot product.
Definition Quat.h:175
+
Quat()=default
Intentionally not initialized for performance reasons.
+
JPH_INLINE Vec3 RotateAxisZ() const
Rotate a the vector (0, 0, 1) with this quaternion.
Definition Quat.inl:306
+
JPH_INLINE Quat Conjugated() const
The conjugate [w, -x, -y, -z] is the same as the inverse for unit quaternions.
Definition Quat.h:178
+
JPH_INLINE Vec3 RotateAxisX() const
Rotate a the vector (1, 0, 0) with this quaternion.
Definition Quat.inl:288
+
JPH_INLINE Vec3 RotateAxisY() const
Rotate a the vector (0, 1, 0) with this quaternion.
Definition Quat.inl:297
+
Vec3 GetEulerAngles() const
Conversion to Euler angles. Rotation order is X then Y then Z (RotZ * RotY * RotX)....
Definition Quat.inl:185
+
bool IsNormalized(float inTolerance=1.0e-5f) const
If the length of this quaternion is 1 +/- inTolerance.
Definition Quat.h:59
+
JPH_INLINE void StoreFloat3(Float3 *outV) const
Store 3 as floats to memory (X, Y and Z component)
Definition Quat.inl:315
+
JPH_INLINE Vec3 GetXYZ() const
Get the imaginary part of the quaternion.
Definition Quat.h:81
+
Vec4 mValue
4 vector that stores [x, y, z, w] parts of the quaternion
Definition Quat.h:248
+
JPH_INLINE Quat SLERP(QuatArg inDestination, float inFraction) const
Definition Quat.inl:238
+
Definition UVec4.h:12
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE Vec3 Normalized() const
Normalize vector.
Definition Vec3.inl:702
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE Vec3 GetNormalizedPerpendicular() const
Get normalized vector that is perpendicular to this vector.
Definition Vec3.inl:820
+
JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const
Test if vector is normalized.
Definition Vec3.inl:745
+
JPH_INLINE Vec3 NormalizedOr(Vec3Arg inZeroValue) const
Normalize vector or return inZeroValue if the length of the vector is zero.
Definition Vec3.inl:716
+
JPH_INLINE void StoreFloat3(Float3 *outV) const
Store 3 floats to memory.
Definition Vec3.inl:765
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
Definition Vec4.h:14
+
JPH_INLINE float GetW() const
Definition Vec4.h:116
+
static JPH_INLINE Vec4 sSelect(Vec4Arg inV1, Vec4Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec4.inl:254
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec4.h:113
+
Type mValue
Definition Vec4.h:274
+
JPH_INLINE float GetZ() const
Definition Vec4.h:115
+
JPH_INLINE float GetY() const
Definition Vec4.h:114
+
static JPH_INLINE Vec4 sReplicate(float inV)
Replicate inV across all components.
Definition Vec4.inl:74
+
void SinCos(Vec4 &outSin, Vec4 &outCos) const
Calculate the sine and cosine for each element of this vector (input in radians)
Definition Vec4.inl:775
+
+
+ + + + diff --git a/_quick_sort_8h.html b/_quick_sort_8h.html new file mode 100644 index 000000000..bdb0c6fcd --- /dev/null +++ b/_quick_sort_8h.html @@ -0,0 +1,330 @@ + + + + + + + +Jolt Physics: Jolt/Core/QuickSort.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
QuickSort.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename Iterator , typename Compare >
JPH_NAMESPACE_BEGIN void QuickSortMedianOfThree (Iterator inFirst, Iterator inMiddle, Iterator inLast, Compare inCompare)
 Helper function for QuickSort, will move the pivot element to inMiddle.
 
template<typename Iterator , typename Compare >
void QuickSortNinther (Iterator inFirst, Iterator inMiddle, Iterator inLast, Compare inCompare)
 Helper function for QuickSort using the Ninther method, will move the pivot element to inMiddle.
 
template<typename Iterator , typename Compare >
void QuickSort (Iterator inBegin, Iterator inEnd, Compare inCompare)
 Implementation of the quick sort algorithm. The STL version implementation is not consistent across platforms.
 
template<typename Iterator >
void QuickSort (Iterator inBegin, Iterator inEnd)
 Implementation of quick sort algorithm without comparator.
 
+

Function Documentation

+ +

◆ QuickSort() [1/2]

+ +
+
+
+template<typename Iterator >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void QuickSort (Iterator inBegin,
Iterator inEnd 
)
+
+inline
+
+ +

Implementation of quick sort algorithm without comparator.

+ +
+
+ +

◆ QuickSort() [2/2]

+ +
+
+
+template<typename Iterator , typename Compare >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void QuickSort (Iterator inBegin,
Iterator inEnd,
Compare inCompare 
)
+
+inline
+
+ +

Implementation of the quick sort algorithm. The STL version implementation is not consistent across platforms.

+ +
+
+ +

◆ QuickSortMedianOfThree()

+ +
+
+
+template<typename Iterator , typename Compare >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void QuickSortMedianOfThree (Iterator inFirst,
Iterator inMiddle,
Iterator inLast,
Compare inCompare 
)
+
+inline
+
+ +

Helper function for QuickSort, will move the pivot element to inMiddle.

+ +
+
+ +

◆ QuickSortNinther()

+ +
+
+
+template<typename Iterator , typename Compare >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void QuickSortNinther (Iterator inFirst,
Iterator inMiddle,
Iterator inLast,
Compare inCompare 
)
+
+inline
+
+ +

Helper function for QuickSort using the Ninther method, will move the pivot element to inMiddle.

+ +
+
+
+
+ + + + diff --git a/_quick_sort_8h.js b/_quick_sort_8h.js new file mode 100644 index 000000000..3b01ea46f --- /dev/null +++ b/_quick_sort_8h.js @@ -0,0 +1,7 @@ +var _quick_sort_8h = +[ + [ "QuickSort", "_quick_sort_8h.html#ada159782c0a49512044e5eb1cdb97684", null ], + [ "QuickSort", "_quick_sort_8h.html#a09973cb7cb8a1e98a51005ecedaf6eff", null ], + [ "QuickSortMedianOfThree", "_quick_sort_8h.html#aa6450fb30b4a42e991c89908bd3575b9", null ], + [ "QuickSortNinther", "_quick_sort_8h.html#a7f9496a620493fec0bb6e08af489dc27", null ] +]; \ No newline at end of file diff --git a/_quick_sort_8h_source.html b/_quick_sort_8h_source.html new file mode 100644 index 000000000..66b25bee0 --- /dev/null +++ b/_quick_sort_8h_source.html @@ -0,0 +1,268 @@ + + + + + + + +Jolt Physics: Jolt/Core/QuickSort.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
QuickSort.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2022 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+
12template <typename Iterator, typename Compare>
+
+
13inline void QuickSortMedianOfThree(Iterator inFirst, Iterator inMiddle, Iterator inLast, Compare inCompare)
+
14{
+
15 // This should be guaranteed because we switch over to insertion sort when there's 32 or less elements
+
16 JPH_ASSERT(inFirst != inMiddle && inMiddle != inLast);
+
17
+
18 if (inCompare(*inMiddle, *inFirst))
+
19 swap(*inFirst, *inMiddle);
+
20
+
21 if (inCompare(*inLast, *inFirst))
+
22 swap(*inFirst, *inLast);
+
23
+
24 if (inCompare(*inLast, *inMiddle))
+
25 swap(*inMiddle, *inLast);
+
26}
+
+
27
+
29template <typename Iterator, typename Compare>
+
+
30inline void QuickSortNinther(Iterator inFirst, Iterator inMiddle, Iterator inLast, Compare inCompare)
+
31{
+
32 // Divide the range in 8 equal parts (this means there are 9 points)
+
33 auto diff = (inLast - inFirst) >> 3;
+
34 auto two_diff = diff << 1;
+
35
+
36 // Median of first 3 points
+
37 Iterator mid1 = inFirst + diff;
+
38 QuickSortMedianOfThree(inFirst, mid1, inFirst + two_diff, inCompare);
+
39
+
40 // Median of second 3 points
+
41 QuickSortMedianOfThree(inMiddle - diff, inMiddle, inMiddle + diff, inCompare);
+
42
+
43 // Median of third 3 points
+
44 Iterator mid3 = inLast - diff;
+
45 QuickSortMedianOfThree(inLast - two_diff, mid3, inLast, inCompare);
+
46
+
47 // Determine the median of the 3 medians
+
48 QuickSortMedianOfThree(mid1, inMiddle, mid3, inCompare);
+
49}
+
+
50
+
52template <typename Iterator, typename Compare>
+
+
53inline void QuickSort(Iterator inBegin, Iterator inEnd, Compare inCompare)
+
54{
+
55 // Implementation based on https://en.wikipedia.org/wiki/Quicksort using Hoare's partition scheme
+
56
+
57 // Loop so that we only need to do 1 recursive call instead of 2.
+
58 for (;;)
+
59 {
+
60 // If there's less than 2 elements we're done
+
61 auto num_elements = inEnd - inBegin;
+
62 if (num_elements < 2)
+
63 return;
+
64
+
65 // Fall back to insertion sort if there are too few elements
+
66 if (num_elements <= 32)
+
67 {
+
68 InsertionSort(inBegin, inEnd, inCompare);
+
69 return;
+
70 }
+
71
+
72 // Determine pivot
+
73 Iterator pivot_iterator = inBegin + ((num_elements - 1) >> 1);
+
74 QuickSortNinther(inBegin, pivot_iterator, inEnd - 1, inCompare);
+
75 auto pivot = *pivot_iterator;
+
76
+
77 // Left and right iterators
+
78 Iterator i = inBegin;
+
79 Iterator j = inEnd;
+
80
+
81 for (;;)
+
82 {
+
83 // Find the first element that is bigger than the pivot
+
84 while (inCompare(*i, pivot))
+
85 i++;
+
86
+
87 // Find the last element that is smaller than the pivot
+
88 do
+
89 --j;
+
90 while (inCompare(pivot, *j));
+
91
+
92 // If the two iterators crossed, we're done
+
93 if (i >= j)
+
94 break;
+
95
+
96 // Swap the elements
+
97 swap(*i, *j);
+
98
+
99 // Note that the first while loop in this function should
+
100 // have been do i++ while (...) but since we cannot decrement
+
101 // the iterator from inBegin we left that out, so we need to do
+
102 // it here.
+
103 ++i;
+
104 }
+
105
+
106 // Include the middle element on the left side
+
107 j++;
+
108
+
109 // Check which partition is smaller
+
110 if (j - inBegin < inEnd - j)
+
111 {
+
112 // Left side is smaller, recurse to left first
+
113 QuickSort(inBegin, j, inCompare);
+
114
+
115 // Loop again with the right side to avoid a call
+
116 inBegin = j;
+
117 }
+
118 else
+
119 {
+
120 // Right side is smaller, recurse to right first
+
121 QuickSort(j, inEnd, inCompare);
+
122
+
123 // Loop again with the left side to avoid a call
+
124 inEnd = j;
+
125 }
+
126 }
+
127}
+
+
128
+
130template <typename Iterator>
+
+
131inline void QuickSort(Iterator inBegin, Iterator inEnd)
+
132{
+
133 std::less<> compare;
+
134 QuickSort(inBegin, inEnd, compare);
+
135}
+
+
136
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
JPH_NAMESPACE_BEGIN void InsertionSort(Iterator inBegin, Iterator inEnd, Compare inCompare)
Implementation of the insertion sort algorithm.
Definition InsertionSort.h:11
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
void QuickSort(Iterator inBegin, Iterator inEnd, Compare inCompare)
Implementation of the quick sort algorithm. The STL version implementation is not consistent across p...
Definition QuickSort.h:53
+
void QuickSortNinther(Iterator inFirst, Iterator inMiddle, Iterator inLast, Compare inCompare)
Helper function for QuickSort using the Ninther method, will move the pivot element to inMiddle.
Definition QuickSort.h:30
+
JPH_NAMESPACE_BEGIN void QuickSortMedianOfThree(Iterator inFirst, Iterator inMiddle, Iterator inLast, Compare inCompare)
Helper function for QuickSort, will move the pivot element to inMiddle.
Definition QuickSort.h:13
+
+
+ + + + diff --git a/_r_e_a_d_m_e_8md.html b/_r_e_a_d_m_e_8md.html new file mode 100644 index 000000000..c0706ee1b --- /dev/null +++ b/_r_e_a_d_m_e_8md.html @@ -0,0 +1,114 @@ + + + + + + + +Jolt Physics: Build/README.md File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Build/README.md File Reference
+
+
+
+
+ + + + diff --git a/_r_t_t_i_8cpp.html b/_r_t_t_i_8cpp.html new file mode 100644 index 000000000..aeb35bd9f --- /dev/null +++ b/_r_t_t_i_8cpp.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/Core/RTTI.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RTTI.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <Jolt/Core/RTTI.h>
+#include <Jolt/Core/StringTools.h>
+
+
+ + + + diff --git a/_r_t_t_i_8h.html b/_r_t_t_i_8h.html new file mode 100644 index 000000000..4c3ffe264 --- /dev/null +++ b/_r_t_t_i_8h.html @@ -0,0 +1,1222 @@ + + + + + + + +Jolt Physics: Jolt/Core/RTTI.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RTTI.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  RTTI
 
struct  RTTI::BaseClass
 Base class information. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define JPH_DECLARE_RTTI_NON_VIRTUAL(linkage, class_name)
 
#define JPH_IMPLEMENT_RTTI_NON_VIRTUAL(class_name)
 
#define JPH_DECLARE_RTTI_OUTSIDE_CLASS(linkage, class_name)
 
#define JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(class_name)
 
#define JPH_DECLARE_RTTI_HELPER(linkage, class_name, modifier)
 
#define JPH_DECLARE_RTTI_VIRTUAL(linkage, class_name)    JPH_DECLARE_RTTI_HELPER(linkage, class_name, override)
 
#define JPH_IMPLEMENT_RTTI_VIRTUAL(class_name)
 
#define JPH_DECLARE_RTTI_VIRTUAL_BASE(linkage, class_name)    JPH_DECLARE_RTTI_HELPER(linkage, class_name, )
 
#define JPH_IMPLEMENT_RTTI_VIRTUAL_BASE(class_name)    JPH_IMPLEMENT_RTTI_VIRTUAL(class_name)
 
#define JPH_DECLARE_RTTI_ABSTRACT(linkage, class_name)    JPH_DECLARE_RTTI_HELPER(linkage, class_name, override)
 
#define JPH_IMPLEMENT_RTTI_ABSTRACT(class_name)
 
#define JPH_DECLARE_RTTI_ABSTRACT_BASE(linkage, class_name)    JPH_DECLARE_RTTI_HELPER(linkage, class_name, )
 
#define JPH_IMPLEMENT_RTTI_ABSTRACT_BASE(class_name)    JPH_IMPLEMENT_RTTI_ABSTRACT(class_name)
 
#define JPH_DECLARE_RTTI_FOR_FACTORY(linkage, class_name)    linkage RTTI * GetRTTIOfType(class class_name *);
 
#define JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(linkage, name_space, class_name)
 
#define JPH_RTTI(class_name)   GetRTTIOfType(static_cast<class_name *>(nullptr))
 
#define JPH_RENAME_CLASS(class_name, new_name)    inRTTI.SetName(#new_name);
 
#define JPH_BASE_CLASS_OFFSET(inClass, inBaseClass)   ((int(uint64((inBaseClass *)((inClass *)0x10000))))-0x10000)
 Define very dirty macro to get the offset of a baseclass into a class.
 
#define JPH_ADD_BASE_CLASS(class_name, base_class_name)    inRTTI.AddBaseClass(JPH_RTTI(base_class_name), JPH_BASE_CLASS_OFFSET(class_name, base_class_name));
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<class Type >
bool IsType (const Type *inObject, const RTTI *inRTTI)
 Check if inObject is of DstType.
 
template<class Type >
bool IsType (const RefConst< Type > &inObject, const RTTI *inRTTI)
 
template<class Type >
bool IsType (const Ref< Type > &inObject, const RTTI *inRTTI)
 
template<class Type >
bool IsKindOf (const Type *inObject, const RTTI *inRTTI)
 Check if inObject is or is derived from DstType.
 
template<class Type >
bool IsKindOf (const RefConst< Type > &inObject, const RTTI *inRTTI)
 
template<class Type >
bool IsKindOf (const Ref< Type > &inObject, const RTTI *inRTTI)
 
template<class DstType , class SrcType , std::enable_if_t< std::is_base_of_v< DstType, SrcType >||std::is_base_of_v< SrcType, DstType >, bool > = true>
const DstType * StaticCast (const SrcType *inObject)
 Cast inObject to DstType, asserts on failure.
 
template<class DstType , class SrcType , std::enable_if_t< std::is_base_of_v< DstType, SrcType >||std::is_base_of_v< SrcType, DstType >, bool > = true>
DstType * StaticCast (SrcType *inObject)
 
template<class DstType , class SrcType , std::enable_if_t< std::is_base_of_v< DstType, SrcType >||std::is_base_of_v< SrcType, DstType >, bool > = true>
const DstType * StaticCast (const RefConst< SrcType > &inObject)
 
template<class DstType , class SrcType , std::enable_if_t< std::is_base_of_v< DstType, SrcType >||std::is_base_of_v< SrcType, DstType >, bool > = true>
DstType * StaticCast (const Ref< SrcType > &inObject)
 
template<class DstType , class SrcType >
const DstType * DynamicCast (const SrcType *inObject)
 Cast inObject to DstType, returns nullptr on failure.
 
template<class DstType , class SrcType >
DstType * DynamicCast (SrcType *inObject)
 
template<class DstType , class SrcType >
const DstType * DynamicCast (const RefConst< SrcType > &inObject)
 
template<class DstType , class SrcType >
DstType * DynamicCast (const Ref< SrcType > &inObject)
 
+

Macro Definition Documentation

+ +

◆ JPH_ADD_BASE_CLASS

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_ADD_BASE_CLASS( class_name,
 base_class_name 
)    inRTTI.AddBaseClass(JPH_RTTI(base_class_name), JPH_BASE_CLASS_OFFSET(class_name, base_class_name));
+
+ +
+
+ +

◆ JPH_BASE_CLASS_OFFSET

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_BASE_CLASS_OFFSET( inClass,
 inBaseClass 
)   ((int(uint64((inBaseClass *)((inClass *)0x10000))))-0x10000)
+
+ +

Define very dirty macro to get the offset of a baseclass into a class.

+ +
+
+ +

◆ JPH_DECLARE_RTTI_ABSTRACT

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_RTTI_ABSTRACT( linkage,
 class_name 
)    JPH_DECLARE_RTTI_HELPER(linkage, class_name, override)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_ABSTRACT_BASE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_RTTI_ABSTRACT_BASE( linkage,
 class_name 
)    JPH_DECLARE_RTTI_HELPER(linkage, class_name, )
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_FOR_FACTORY

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_RTTI_FOR_FACTORY( linkage,
 class_name 
)    linkage RTTI * GetRTTIOfType(class class_name *);
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_HELPER

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_RTTI_HELPER( linkage,
 class_name,
 modifier 
)
+
+Value:
public: \
+
JPH_OVERRIDE_NEW_DELETE \
+
friend linkage RTTI * GetRTTIOfType(class_name *); \
+
friend inline const RTTI * GetRTTI(const class_name *inObject) { return inObject->GetRTTI(); } \
+
virtual const RTTI * GetRTTI() const modifier; \
+
virtual const void * CastTo(const RTTI *inRTTI) const modifier; \
+
static void sCreateRTTI(RTTI &inRTTI); \
+
Definition RTTI.h:122
+
+
+
+ +

◆ JPH_DECLARE_RTTI_NON_VIRTUAL

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_RTTI_NON_VIRTUAL( linkage,
 class_name 
)
+
+Value:
public: \
+
JPH_OVERRIDE_NEW_DELETE \
+
friend linkage RTTI * GetRTTIOfType(class_name *); \
+
friend inline const RTTI * GetRTTI([[maybe_unused]] const class_name *inObject) { return GetRTTIOfType(static_cast<class_name *>(nullptr)); }\
+
static void sCreateRTTI(RTTI &inRTTI); \
+
+
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_RTTI_OUTSIDE_CLASS( linkage,
 class_name 
)
+
+Value:
linkage RTTI * GetRTTIOfType(class_name *); \
+
inline const RTTI * GetRTTI(const class_name *inObject) { return GetRTTIOfType((class_name *)nullptr); }\
+
void CreateRTTI##class_name(RTTI &inRTTI); \
+
+
+
+ +

◆ JPH_DECLARE_RTTI_VIRTUAL

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_RTTI_VIRTUAL( linkage,
 class_name 
)    JPH_DECLARE_RTTI_HELPER(linkage, class_name, override)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_VIRTUAL_BASE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_RTTI_VIRTUAL_BASE( linkage,
 class_name 
)    JPH_DECLARE_RTTI_HELPER(linkage, class_name, )
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY( linkage,
 name_space,
 class_name 
)
+
+Value:
namespace name_space { \
+
class class_name; \
+
linkage RTTI * GetRTTIOfType(class class_name *); \
+
}
+
+
+
+ +

◆ JPH_IMPLEMENT_RTTI_ABSTRACT

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_RTTI_ABSTRACT( class_name)
+
+Value:
RTTI * GetRTTIOfType(class_name *) \
+
{ \
+
static RTTI rtti(#class_name, sizeof(class_name), nullptr, [](void *inObject) { delete (class_name *)inObject; }, &class_name::sCreateRTTI); \
+
return &rtti; \
+
} \
+
const RTTI * class_name::GetRTTI() const \
+
{ \
+
return JPH_RTTI(class_name); \
+
} \
+
const void * class_name::CastTo(const RTTI *inRTTI) const \
+
{ \
+
return JPH_RTTI(class_name)->CastTo((const void *)this, inRTTI); \
+
} \
+
void class_name::sCreateRTTI(RTTI &inRTTI) \
+
#define JPH_RTTI(class_name)
Definition RTTI.h:319
+
+
+
+ +

◆ JPH_IMPLEMENT_RTTI_ABSTRACT_BASE

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_RTTI_ABSTRACT_BASE( class_name)    JPH_IMPLEMENT_RTTI_ABSTRACT(class_name)
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_NON_VIRTUAL

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_RTTI_NON_VIRTUAL( class_name)
+
+Value:
RTTI * GetRTTIOfType(class_name *) \
+
{ \
+
static RTTI rtti(#class_name, sizeof(class_name), []() -> void * { return new class_name; }, [](void *inObject) { delete (class_name *)inObject; }, &class_name::sCreateRTTI); \
+
return &rtti; \
+
} \
+
void class_name::sCreateRTTI(RTTI &inRTTI) \
+
+
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS( class_name)
+
+Value:
RTTI * GetRTTIOfType(class_name *) \
+
{ \
+
static RTTI rtti((const char *)#class_name, sizeof(class_name), []() -> void * { return new class_name; }, [](void *inObject) { delete (class_name *)inObject; }, &CreateRTTI##class_name); \
+
return &rtti; \
+
} \
+
void CreateRTTI##class_name(RTTI &inRTTI)
+
+
+
+ +

◆ JPH_IMPLEMENT_RTTI_VIRTUAL

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_RTTI_VIRTUAL( class_name)
+
+Value:
RTTI * GetRTTIOfType(class_name *) \
+
{ \
+
static RTTI rtti(#class_name, sizeof(class_name), []() -> void * { return new class_name; }, [](void *inObject) { delete (class_name *)inObject; }, &class_name::sCreateRTTI); \
+
return &rtti; \
+
} \
+
const RTTI * class_name::GetRTTI() const \
+
{ \
+
return JPH_RTTI(class_name); \
+
} \
+
const void * class_name::CastTo(const RTTI *inRTTI) const \
+
{ \
+
return JPH_RTTI(class_name)->CastTo((const void *)this, inRTTI); \
+
} \
+
void class_name::sCreateRTTI(RTTI &inRTTI) \
+
+
+
+ +

◆ JPH_IMPLEMENT_RTTI_VIRTUAL_BASE

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_RTTI_VIRTUAL_BASE( class_name)    JPH_IMPLEMENT_RTTI_VIRTUAL(class_name)
+
+ +
+
+ +

◆ JPH_RENAME_CLASS

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_RENAME_CLASS( class_name,
 new_name 
)    inRTTI.SetName(#new_name);
+
+ +
+
+ +

◆ JPH_RTTI

+ +
+
+ + + + + + + + +
#define JPH_RTTI( class_name)   GetRTTIOfType(static_cast<class_name *>(nullptr))
+
+ +
+
+

Function Documentation

+ +

◆ DynamicCast() [1/4]

+ +
+
+
+template<class DstType , class SrcType >
+ + + + + +
+ + + + + + + + +
DstType * DynamicCast (const Ref< SrcType > & inObject)
+
+inline
+
+ +
+
+ +

◆ DynamicCast() [2/4]

+ +
+
+
+template<class DstType , class SrcType >
+ + + + + +
+ + + + + + + + +
const DstType * DynamicCast (const RefConst< SrcType > & inObject)
+
+inline
+
+ +
+
+ +

◆ DynamicCast() [3/4]

+ +
+
+
+template<class DstType , class SrcType >
+ + + + + +
+ + + + + + + + +
const DstType * DynamicCast (const SrcType * inObject)
+
+inline
+
+ +

Cast inObject to DstType, returns nullptr on failure.

+ +
+
+ +

◆ DynamicCast() [4/4]

+ +
+
+
+template<class DstType , class SrcType >
+ + + + + +
+ + + + + + + + +
DstType * DynamicCast (SrcType * inObject)
+
+inline
+
+ +
+
+ +

◆ IsKindOf() [1/3]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IsKindOf (const Ref< Type > & inObject,
const RTTIinRTTI 
)
+
+inline
+
+ +
+
+ +

◆ IsKindOf() [2/3]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IsKindOf (const RefConst< Type > & inObject,
const RTTIinRTTI 
)
+
+inline
+
+ +
+
+ +

◆ IsKindOf() [3/3]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IsKindOf (const Type * inObject,
const RTTIinRTTI 
)
+
+inline
+
+ +

Check if inObject is or is derived from DstType.

+ +
+
+ +

◆ IsType() [1/3]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IsType (const Ref< Type > & inObject,
const RTTIinRTTI 
)
+
+inline
+
+ +
+
+ +

◆ IsType() [2/3]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IsType (const RefConst< Type > & inObject,
const RTTIinRTTI 
)
+
+inline
+
+ +
+
+ +

◆ IsType() [3/3]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool IsType (const Type * inObject,
const RTTIinRTTI 
)
+
+inline
+
+ +

Check if inObject is of DstType.

+ +
+
+ +

◆ StaticCast() [1/4]

+ +
+
+
+template<class DstType , class SrcType , std::enable_if_t< std::is_base_of_v< DstType, SrcType >||std::is_base_of_v< SrcType, DstType >, bool > = true>
+ + + + + +
+ + + + + + + + +
DstType * StaticCast (const Ref< SrcType > & inObject)
+
+inline
+
+ +
+
+ +

◆ StaticCast() [2/4]

+ +
+
+
+template<class DstType , class SrcType , std::enable_if_t< std::is_base_of_v< DstType, SrcType >||std::is_base_of_v< SrcType, DstType >, bool > = true>
+ + + + + +
+ + + + + + + + +
const DstType * StaticCast (const RefConst< SrcType > & inObject)
+
+inline
+
+ +
+
+ +

◆ StaticCast() [3/4]

+ +
+
+
+template<class DstType , class SrcType , std::enable_if_t< std::is_base_of_v< DstType, SrcType >||std::is_base_of_v< SrcType, DstType >, bool > = true>
+ + + + + +
+ + + + + + + + +
const DstType * StaticCast (const SrcType * inObject)
+
+inline
+
+ +

Cast inObject to DstType, asserts on failure.

+ +
+
+ +

◆ StaticCast() [4/4]

+ +
+
+
+template<class DstType , class SrcType , std::enable_if_t< std::is_base_of_v< DstType, SrcType >||std::is_base_of_v< SrcType, DstType >, bool > = true>
+ + + + + +
+ + + + + + + + +
DstType * StaticCast (SrcType * inObject)
+
+inline
+
+ +
+
+
+
+ + + + diff --git a/_r_t_t_i_8h.js b/_r_t_t_i_8h.js new file mode 100644 index 000000000..6ca1cc5fa --- /dev/null +++ b/_r_t_t_i_8h.js @@ -0,0 +1,38 @@ +var _r_t_t_i_8h = +[ + [ "RTTI", "class_r_t_t_i.html", "class_r_t_t_i" ], + [ "RTTI::BaseClass", "struct_r_t_t_i_1_1_base_class.html", "struct_r_t_t_i_1_1_base_class" ], + [ "JPH_ADD_BASE_CLASS", "_r_t_t_i_8h.html#a6b6dec4b6f44b7b759575042b90f1e0e", null ], + [ "JPH_BASE_CLASS_OFFSET", "_r_t_t_i_8h.html#a668438b38455c6832cd177af4462cdec", null ], + [ "JPH_DECLARE_RTTI_ABSTRACT", "_r_t_t_i_8h.html#aa342df4c27afe127c91c78a18524e149", null ], + [ "JPH_DECLARE_RTTI_ABSTRACT_BASE", "_r_t_t_i_8h.html#a3ff0a59480ae32ece4f84604c58571d9", null ], + [ "JPH_DECLARE_RTTI_FOR_FACTORY", "_r_t_t_i_8h.html#a6730e0db6d896ebec02feaf2fb1962e2", null ], + [ "JPH_DECLARE_RTTI_HELPER", "_r_t_t_i_8h.html#a90f2450c61a3aacfebc11258ac919432", null ], + [ "JPH_DECLARE_RTTI_NON_VIRTUAL", "_r_t_t_i_8h.html#a030cbf2601458db3a9f2ea1bf181b005", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_r_t_t_i_8h.html#a4a4f092ae66bfd23b475ed2bbe015e76", null ], + [ "JPH_DECLARE_RTTI_VIRTUAL", "_r_t_t_i_8h.html#a13d46ae1d3df8685d4f6d2f02d44f076", null ], + [ "JPH_DECLARE_RTTI_VIRTUAL_BASE", "_r_t_t_i_8h.html#af64324d36799d7c7827a7fc1c7773e7b", null ], + [ "JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY", "_r_t_t_i_8h.html#a50aad6dd20dc88522774eb2e267f6ddd", null ], + [ "JPH_IMPLEMENT_RTTI_ABSTRACT", "_r_t_t_i_8h.html#ad1ef48680348ecc0d318544e49e59efb", null ], + [ "JPH_IMPLEMENT_RTTI_ABSTRACT_BASE", "_r_t_t_i_8h.html#ac209c74f11bc4a8893baa3abe9839139", null ], + [ "JPH_IMPLEMENT_RTTI_NON_VIRTUAL", "_r_t_t_i_8h.html#acc74973e1a6c6be43135c2e52693428f", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_r_t_t_i_8h.html#a4a641a155ee1c2a238734f69e69f2e5f", null ], + [ "JPH_IMPLEMENT_RTTI_VIRTUAL", "_r_t_t_i_8h.html#a10066d3dbecb1f07b1c5250773537b86", null ], + [ "JPH_IMPLEMENT_RTTI_VIRTUAL_BASE", "_r_t_t_i_8h.html#adb200046bbf9e46a9870dc1862e8cc15", null ], + [ "JPH_RENAME_CLASS", "_r_t_t_i_8h.html#aec1da7ef8dc2aa9668cd7cb65e543941", null ], + [ "JPH_RTTI", "_r_t_t_i_8h.html#a96bfac00708a5a1649b5581b3d082d12", null ], + [ "DynamicCast", "_r_t_t_i_8h.html#a0fb0ad7ca393258307fd76c11cd3383c", null ], + [ "DynamicCast", "_r_t_t_i_8h.html#ae21beea7a22545176b0ba9af79acb36c", null ], + [ "DynamicCast", "_r_t_t_i_8h.html#ae90cb64879c34484002e2b1dffa6cfe3", null ], + [ "DynamicCast", "_r_t_t_i_8h.html#a71969ae61cdfe78b730ae80bfde295b3", null ], + [ "IsKindOf", "_r_t_t_i_8h.html#a5776b9c127f537d17eb0fe3c859dec5d", null ], + [ "IsKindOf", "_r_t_t_i_8h.html#a6fa76c579cc82e306b9bdcf2bfea470c", null ], + [ "IsKindOf", "_r_t_t_i_8h.html#a7c84a67a84c5fd402ed48a5e8301e1d1", null ], + [ "IsType", "_r_t_t_i_8h.html#a4f2ba2fa904f27bafd5046ffa01a370d", null ], + [ "IsType", "_r_t_t_i_8h.html#ae4426a9694f255b1b6151e97186512a8", null ], + [ "IsType", "_r_t_t_i_8h.html#a7a5bbd60ebd3ba5f69f0afccf05a4d08", null ], + [ "StaticCast", "_r_t_t_i_8h.html#ac456886504eedda859d757767b43b913", null ], + [ "StaticCast", "_r_t_t_i_8h.html#ad3e3c54382d1f619141d317cedfe5e5d", null ], + [ "StaticCast", "_r_t_t_i_8h.html#a30570b0c6bee40ac6353ddc6d6e22468", null ], + [ "StaticCast", "_r_t_t_i_8h.html#ac0e76c143b5261a65c20f554bc37cab1", null ] +]; \ No newline at end of file diff --git a/_r_t_t_i_8h_source.html b/_r_t_t_i_8h_source.html new file mode 100644 index 000000000..dd39cfc73 --- /dev/null +++ b/_r_t_t_i_8h_source.html @@ -0,0 +1,518 @@ + + + + + + + +Jolt Physics: Jolt/Core/RTTI.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RTTI.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
+ + + +
10
+ +
12
+
14// RTTI
+
16
+
+ +
122{
+
123public:
+
125 using pCreateObjectFunction = void *(*)();
+
126
+
128 using pDestructObjectFunction = void (*)(void *inObject);
+
129
+
131 using pCreateRTTIFunction = void (*)(RTTI &inRTTI);
+
132
+
134 RTTI(const char *inName, int inSize, pCreateObjectFunction inCreateObject, pDestructObjectFunction inDestructObject);
+
135 RTTI(const char *inName, int inSize, pCreateObjectFunction inCreateObject, pDestructObjectFunction inDestructObject, pCreateRTTIFunction inCreateRTTI);
+
136
+
137 // Properties
+
138 inline const char * GetName() const { return mName; }
+
139 void SetName(const char *inName) { mName = inName; }
+
140 inline int GetSize() const { return mSize; }
+
141 bool IsAbstract() const { return mCreate == nullptr || mDestruct == nullptr; }
+
142 int GetBaseClassCount() const;
+
143 const RTTI * GetBaseClass(int inIdx) const;
+
144 uint32 GetHash() const;
+
145
+
147 void * CreateObject() const;
+
148
+
150 void DestructObject(void *inObject) const;
+
151
+
153 void AddBaseClass(const RTTI *inRTTI, int inOffset);
+
154
+
156 bool operator == (const RTTI &inRHS) const;
+
157 bool operator != (const RTTI &inRHS) const { return !(*this == inRHS); }
+
158
+
160 bool IsKindOf(const RTTI *inRTTI) const;
+
161
+
163 const void * CastTo(const void *inObject, const RTTI *inRTTI) const;
+
164
+
165#ifdef JPH_OBJECT_STREAM
+
167 void AddAttribute(const SerializableAttribute &inAttribute);
+
168 int GetAttributeCount() const;
+
169 const SerializableAttribute & GetAttribute(int inIdx) const;
+
170#endif // JPH_OBJECT_STREAM
+
171
+
172protected:
+
+ +
175 {
+
176 const RTTI * mRTTI;
+ +
178 };
+
+
179
+
180 const char * mName;
+
181 int mSize;
+ + + +
185#ifdef JPH_OBJECT_STREAM
+ +
187#endif // JPH_OBJECT_STREAM
+
188};
+
+
189
+
191// Add run time type info to types that don't have virtual functions
+
193
+
194// JPH_DECLARE_RTTI_NON_VIRTUAL
+
+
195#define JPH_DECLARE_RTTI_NON_VIRTUAL(linkage, class_name) \
+
196public: \
+
197 JPH_OVERRIDE_NEW_DELETE \
+
198 friend linkage RTTI * GetRTTIOfType(class_name *); \
+
199 friend inline const RTTI * GetRTTI([[maybe_unused]] const class_name *inObject) { return GetRTTIOfType(static_cast<class_name *>(nullptr)); }\
+
200 static void sCreateRTTI(RTTI &inRTTI); \
+
201
+
+
202// JPH_IMPLEMENT_RTTI_NON_VIRTUAL
+
+
203#define JPH_IMPLEMENT_RTTI_NON_VIRTUAL(class_name) \
+
204 RTTI * GetRTTIOfType(class_name *) \
+
205 { \
+
206 static RTTI rtti(#class_name, sizeof(class_name), []() -> void * { return new class_name; }, [](void *inObject) { delete (class_name *)inObject; }, &class_name::sCreateRTTI); \
+
207 return &rtti; \
+
208 } \
+
209 void class_name::sCreateRTTI(RTTI &inRTTI) \
+
210
+
+
212// Same as above, but when you cannot insert the declaration in the class
+
213// itself, for example for templates and third party classes
+
215
+
216// JPH_DECLARE_RTTI_OUTSIDE_CLASS
+
+
217#define JPH_DECLARE_RTTI_OUTSIDE_CLASS(linkage, class_name) \
+
218 linkage RTTI * GetRTTIOfType(class_name *); \
+
219 inline const RTTI * GetRTTI(const class_name *inObject) { return GetRTTIOfType((class_name *)nullptr); }\
+
220 void CreateRTTI##class_name(RTTI &inRTTI); \
+
221
+
+
222// JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS
+
+
223#define JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(class_name) \
+
224 RTTI * GetRTTIOfType(class_name *) \
+
225 { \
+
226 static RTTI rtti((const char *)#class_name, sizeof(class_name), []() -> void * { return new class_name; }, [](void *inObject) { delete (class_name *)inObject; }, &CreateRTTI##class_name); \
+
227 return &rtti; \
+
228 } \
+
229 void CreateRTTI##class_name(RTTI &inRTTI)
+
+
230
+
232// Same as above, but for classes that have virtual functions
+
234
+
+
235#define JPH_DECLARE_RTTI_HELPER(linkage, class_name, modifier) \
+
236public: \
+
237 JPH_OVERRIDE_NEW_DELETE \
+
238 friend linkage RTTI * GetRTTIOfType(class_name *); \
+
239 friend inline const RTTI * GetRTTI(const class_name *inObject) { return inObject->GetRTTI(); } \
+
240 virtual const RTTI * GetRTTI() const modifier; \
+
241 virtual const void * CastTo(const RTTI *inRTTI) const modifier; \
+
242 static void sCreateRTTI(RTTI &inRTTI); \
+
243
+
+
244// JPH_DECLARE_RTTI_VIRTUAL - for derived classes with RTTI
+
+
245#define JPH_DECLARE_RTTI_VIRTUAL(linkage, class_name) \
+
246 JPH_DECLARE_RTTI_HELPER(linkage, class_name, override)
+
+
247
+
248// JPH_IMPLEMENT_RTTI_VIRTUAL
+
+
249#define JPH_IMPLEMENT_RTTI_VIRTUAL(class_name) \
+
250 RTTI * GetRTTIOfType(class_name *) \
+
251 { \
+
252 static RTTI rtti(#class_name, sizeof(class_name), []() -> void * { return new class_name; }, [](void *inObject) { delete (class_name *)inObject; }, &class_name::sCreateRTTI); \
+
253 return &rtti; \
+
254 } \
+
255 const RTTI * class_name::GetRTTI() const \
+
256 { \
+
257 return JPH_RTTI(class_name); \
+
258 } \
+
259 const void * class_name::CastTo(const RTTI *inRTTI) const \
+
260 { \
+
261 return JPH_RTTI(class_name)->CastTo((const void *)this, inRTTI); \
+
262 } \
+
263 void class_name::sCreateRTTI(RTTI &inRTTI) \
+
264
+
+
265// JPH_DECLARE_RTTI_VIRTUAL_BASE - for concrete base class that has RTTI
+
+
266#define JPH_DECLARE_RTTI_VIRTUAL_BASE(linkage, class_name) \
+
267 JPH_DECLARE_RTTI_HELPER(linkage, class_name, )
+
+
268
+
269// JPH_IMPLEMENT_RTTI_VIRTUAL_BASE
+
+
270#define JPH_IMPLEMENT_RTTI_VIRTUAL_BASE(class_name) \
+
271 JPH_IMPLEMENT_RTTI_VIRTUAL(class_name)
+
+
272
+
273// JPH_DECLARE_RTTI_ABSTRACT - for derived abstract class that have RTTI
+
+
274#define JPH_DECLARE_RTTI_ABSTRACT(linkage, class_name) \
+
275 JPH_DECLARE_RTTI_HELPER(linkage, class_name, override)
+
+
276
+
277// JPH_IMPLEMENT_RTTI_ABSTRACT
+
+
278#define JPH_IMPLEMENT_RTTI_ABSTRACT(class_name) \
+
279 RTTI * GetRTTIOfType(class_name *) \
+
280 { \
+
281 static RTTI rtti(#class_name, sizeof(class_name), nullptr, [](void *inObject) { delete (class_name *)inObject; }, &class_name::sCreateRTTI); \
+
282 return &rtti; \
+
283 } \
+
284 const RTTI * class_name::GetRTTI() const \
+
285 { \
+
286 return JPH_RTTI(class_name); \
+
287 } \
+
288 const void * class_name::CastTo(const RTTI *inRTTI) const \
+
289 { \
+
290 return JPH_RTTI(class_name)->CastTo((const void *)this, inRTTI); \
+
291 } \
+
292 void class_name::sCreateRTTI(RTTI &inRTTI) \
+
293
+
+
294// JPH_DECLARE_RTTI_ABSTRACT_BASE - for abstract base class that has RTTI
+
+
295#define JPH_DECLARE_RTTI_ABSTRACT_BASE(linkage, class_name) \
+
296 JPH_DECLARE_RTTI_HELPER(linkage, class_name, )
+
+
297
+
298// JPH_IMPLEMENT_RTTI_ABSTRACT_BASE
+
+
299#define JPH_IMPLEMENT_RTTI_ABSTRACT_BASE(class_name) \
+
300 JPH_IMPLEMENT_RTTI_ABSTRACT(class_name)
+
+
301
+
303// Declare an RTTI class for registering with the factory
+
305
+
+
306#define JPH_DECLARE_RTTI_FOR_FACTORY(linkage, class_name) \
+
307 linkage RTTI * GetRTTIOfType(class class_name *);
+
+
308
+
+
309#define JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY(linkage, name_space, class_name) \
+
310 namespace name_space { \
+
311 class class_name; \
+
312 linkage RTTI * GetRTTIOfType(class class_name *); \
+
313 }
+
+
314
+
316// Find the RTTI of a class
+
318
+
319#define JPH_RTTI(class_name) GetRTTIOfType(static_cast<class_name *>(nullptr))
+
320
+
322// Macro to rename a class, useful for embedded classes:
+
323//
+
324// class A { class B { }; }
+
325//
+
326// Now use JPH_RENAME_CLASS(B, A::B) to avoid conflicts with other classes named B
+
328
+
329// JPH_RENAME_CLASS
+
+
330#define JPH_RENAME_CLASS(class_name, new_name) \
+
331 inRTTI.SetName(#new_name);
+
+
332
+
334// Macro to add base classes
+
336
+
338#define JPH_BASE_CLASS_OFFSET(inClass, inBaseClass) ((int(uint64((inBaseClass *)((inClass *)0x10000))))-0x10000)
+
339
+
340// JPH_ADD_BASE_CLASS
+
+
341#define JPH_ADD_BASE_CLASS(class_name, base_class_name) \
+
342 inRTTI.AddBaseClass(JPH_RTTI(base_class_name), JPH_BASE_CLASS_OFFSET(class_name, base_class_name));
+
+
343
+
345// Macros and templates to identify a class
+
347
+
349template <class Type>
+
+
350inline bool IsType(const Type *inObject, const RTTI *inRTTI)
+
351{
+
352 return inObject == nullptr || *inObject->GetRTTI() == *inRTTI;
+
353}
+
+
354
+
355template <class Type>
+
+
356inline bool IsType(const RefConst<Type> &inObject, const RTTI *inRTTI)
+
357{
+
358 return inObject == nullptr || *inObject->GetRTTI() == *inRTTI;
+
359}
+
+
360
+
361template <class Type>
+
+
362inline bool IsType(const Ref<Type> &inObject, const RTTI *inRTTI)
+
363{
+
364 return inObject == nullptr || *inObject->GetRTTI() == *inRTTI;
+
365}
+
+
366
+
368template <class Type>
+
+
369inline bool IsKindOf(const Type *inObject, const RTTI *inRTTI)
+
370{
+
371 return inObject == nullptr || inObject->GetRTTI()->IsKindOf(inRTTI);
+
372}
+
+
373
+
374template <class Type>
+
+
375inline bool IsKindOf(const RefConst<Type> &inObject, const RTTI *inRTTI)
+
376{
+
377 return inObject == nullptr || inObject->GetRTTI()->IsKindOf(inRTTI);
+
378}
+
+
379
+
380template <class Type>
+
+
381inline bool IsKindOf(const Ref<Type> &inObject, const RTTI *inRTTI)
+
382{
+
383 return inObject == nullptr || inObject->GetRTTI()->IsKindOf(inRTTI);
+
384}
+
+
385
+
387template <class DstType, class SrcType, std::enable_if_t<std::is_base_of_v<DstType, SrcType> || std::is_base_of_v<SrcType, DstType>, bool> = true>
+
+
388inline const DstType *StaticCast(const SrcType *inObject)
+
389{
+
390 return static_cast<const DstType *>(inObject);
+
391}
+
+
392
+
393template <class DstType, class SrcType, std::enable_if_t<std::is_base_of_v<DstType, SrcType> || std::is_base_of_v<SrcType, DstType>, bool> = true>
+
+
394inline DstType *StaticCast(SrcType *inObject)
+
395{
+
396 return static_cast<DstType *>(inObject);
+
397}
+
+
398
+
399template <class DstType, class SrcType, std::enable_if_t<std::is_base_of_v<DstType, SrcType> || std::is_base_of_v<SrcType, DstType>, bool> = true>
+
+
400inline const DstType *StaticCast(const RefConst<SrcType> &inObject)
+
401{
+
402 return static_cast<const DstType *>(inObject.GetPtr());
+
403}
+
+
404
+
405template <class DstType, class SrcType, std::enable_if_t<std::is_base_of_v<DstType, SrcType> || std::is_base_of_v<SrcType, DstType>, bool> = true>
+
+
406inline DstType *StaticCast(const Ref<SrcType> &inObject)
+
407{
+
408 return static_cast<DstType *>(inObject.GetPtr());
+
409}
+
+
410
+
412template <class DstType, class SrcType>
+
+
413inline const DstType *DynamicCast(const SrcType *inObject)
+
414{
+
415 return inObject != nullptr? reinterpret_cast<const DstType *>(inObject->CastTo(JPH_RTTI(DstType))) : nullptr;
+
416}
+
+
417
+
418template <class DstType, class SrcType>
+
+
419inline DstType *DynamicCast(SrcType *inObject)
+
420{
+
421 return inObject != nullptr? const_cast<DstType *>(reinterpret_cast<const DstType *>(inObject->CastTo(JPH_RTTI(DstType)))) : nullptr;
+
422}
+
+
423
+
424template <class DstType, class SrcType>
+
+
425inline const DstType *DynamicCast(const RefConst<SrcType> &inObject)
+
426{
+
427 return inObject != nullptr? reinterpret_cast<const DstType *>(inObject->CastTo(JPH_RTTI(DstType))) : nullptr;
+
428}
+
+
429
+
430template <class DstType, class SrcType>
+
+
431inline DstType *DynamicCast(const Ref<SrcType> &inObject)
+
432{
+
433 return inObject != nullptr? const_cast<DstType *>(reinterpret_cast<const DstType *>(inObject->CastTo(JPH_RTTI(DstType)))) : nullptr;
+
434}
+
+
435
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
const DstType * StaticCast(const SrcType *inObject)
Cast inObject to DstType, asserts on failure.
Definition RTTI.h:388
+
bool IsType(const Type *inObject, const RTTI *inRTTI)
Check if inObject is of DstType.
Definition RTTI.h:350
+
bool IsKindOf(const Type *inObject, const RTTI *inRTTI)
Check if inObject is or is derived from DstType.
Definition RTTI.h:369
+
#define JPH_RTTI(class_name)
Definition RTTI.h:319
+
const DstType * DynamicCast(const SrcType *inObject)
Cast inObject to DstType, returns nullptr on failure.
Definition RTTI.h:413
+ + + +
Definition RTTI.h:122
+
pDestructObjectFunction mDestruct
Pointer to a function that will destruct an object of this class.
Definition RTTI.h:184
+
pCreateObjectFunction mCreate
Pointer to a function that will create a new instance of this class.
Definition RTTI.h:183
+
const char * GetName() const
Definition RTTI.h:138
+
StaticArray< SerializableAttribute, 32 > mAttributes
All attributes of this class.
Definition RTTI.h:186
+
void *(*)() pCreateObjectFunction
Function to create an object.
Definition RTTI.h:125
+
StaticArray< BaseClass, 4 > mBaseClasses
Names of base classes.
Definition RTTI.h:182
+
int GetSize() const
Definition RTTI.h:140
+
bool IsAbstract() const
Definition RTTI.h:141
+
bool IsKindOf(const RTTI *inRTTI) const
Test if this class is derived from class of type inRTTI.
Definition RTTI.cpp:92
+
void(*)(RTTI &inRTTI) pCreateRTTIFunction
Function to initialize the runtime type info structure.
Definition RTTI.h:131
+
void(*)(void *inObject) pDestructObjectFunction
Function to destroy an object.
Definition RTTI.h:128
+
void SetName(const char *inName)
Definition RTTI.h:139
+
const char * mName
Class name.
Definition RTTI.h:180
+
int mSize
Class size.
Definition RTTI.h:181
+
Definition Reference.h:151
+
const T * GetPtr() const
Get pointer.
Definition Reference.h:185
+
Definition Reference.h:101
+
T * GetPtr() const
Get pointer.
Definition Reference.h:129
+
Attributes are members of classes that need to be serialized.
Definition SerializableAttribute.h:37
+
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
Base class information.
Definition RTTI.h:175
+
const RTTI * mRTTI
Definition RTTI.h:176
+
int mOffset
Definition RTTI.h:177
+
+
+ + + + diff --git a/_rack_and_pinion_constraint_8cpp.html b/_rack_and_pinion_constraint_8cpp.html new file mode 100644 index 000000000..5f3ed5ad7 --- /dev/null +++ b/_rack_and_pinion_constraint_8cpp.html @@ -0,0 +1,150 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/RackAndPinionConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RackAndPinionConstraint.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (RackAndPinionConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (RackAndPinionConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_rack_and_pinion_constraint_8cpp.js b/_rack_and_pinion_constraint_8cpp.js new file mode 100644 index 000000000..b40fae8ec --- /dev/null +++ b/_rack_and_pinion_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _rack_and_pinion_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_rack_and_pinion_constraint_8cpp.html#a47a53e6c2d586af41ae6ae3acbea1b1a", null ] +]; \ No newline at end of file diff --git a/_rack_and_pinion_constraint_8h.html b/_rack_and_pinion_constraint_8h.html new file mode 100644 index 000000000..9992daf4b --- /dev/null +++ b/_rack_and_pinion_constraint_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/RackAndPinionConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RackAndPinionConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  RackAndPinionConstraintSettings
 Rack and pinion constraint (slider & gear) settings. More...
 
class  RackAndPinionConstraint
 
+
+
+ + + + diff --git a/_rack_and_pinion_constraint_8h.js b/_rack_and_pinion_constraint_8h.js new file mode 100644 index 000000000..367a08962 --- /dev/null +++ b/_rack_and_pinion_constraint_8h.js @@ -0,0 +1,5 @@ +var _rack_and_pinion_constraint_8h = +[ + [ "RackAndPinionConstraintSettings", "class_rack_and_pinion_constraint_settings.html", "class_rack_and_pinion_constraint_settings" ], + [ "RackAndPinionConstraint", "class_rack_and_pinion_constraint.html", "class_rack_and_pinion_constraint" ] +]; \ No newline at end of file diff --git a/_rack_and_pinion_constraint_8h_source.html b/_rack_and_pinion_constraint_8h_source.html new file mode 100644 index 000000000..c39458742 --- /dev/null +++ b/_rack_and_pinion_constraint_8h_source.html @@ -0,0 +1,262 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/RackAndPinionConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RackAndPinionConstraint.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
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+ +
17
+
18 // See: ConstraintSettings::SaveBinaryState
+
19 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
20
+
23 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
+
24
+
+
30 void SetRatio(int inNumTeethRack, float inRackLength, int inNumTeethPinion)
+
31 {
+
32 mRatio = 2.0f * JPH_PI * inNumTeethRack / (inRackLength * inNumTeethPinion);
+
33 }
+
+
34
+ +
37
+
39 Vec3 mHingeAxis = Vec3::sAxisX();
+
40
+
42 Vec3 mSliderAxis = Vec3::sAxisX();
+
43
+
45 float mRatio = 1.0f;
+
46
+
47protected:
+
48 // See: ConstraintSettings::RestoreBinaryState
+
49 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
50};
+
+
51
+
+ +
55{
+
56public:
+ +
58
+
60 RackAndPinionConstraint(Body &inBody1, Body &inBody2, const RackAndPinionConstraintSettings &inSettings);
+
61
+
62 // Generic interface of a constraint
+ +
64 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override { /* Nothing */ }
+
65 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
66 virtual void ResetWarmStart() override;
+
67 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
68 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
69 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
70#ifdef JPH_DEBUG_RENDERER
+
71 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
72#endif // JPH_DEBUG_RENDERER
+
73 virtual void SaveState(StateRecorder &inStream) const override;
+
74 virtual void RestoreState(StateRecorder &inStream) override;
+
75 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
76
+
77 // See: TwoBodyConstraint
+
78 virtual Mat44 GetConstraintToBody1Matrix() const override;
+
79 virtual Mat44 GetConstraintToBody2Matrix() const override;
+
80
+
82 void SetConstraints(const Constraint *inPinion, const Constraint *inRack) { mPinionConstraint = inPinion; mRackConstraint = inRack; }
+
83
+
85 inline float GetTotalLambda() const { return mRackAndPinionConstraintPart.GetTotalLambda(); }
+
86
+
87private:
+
88 // Internal helper function to calculate the values below
+
89 void CalculateConstraintProperties(Mat44Arg inRotation1, Mat44Arg inRotation2);
+
90
+
91 // CONFIGURATION PROPERTIES FOLLOW
+
92
+
93 // Local space hinge axis
+
94 Vec3 mLocalSpaceHingeAxis;
+
95
+
96 // Local space sliding direction
+
97 Vec3 mLocalSpaceSliderAxis;
+
98
+
99 // Ratio between rack and pinion
+
100 float mRatio;
+
101
+
102 // The constraints that constrain the rack and pinion (a slider and a hinge), optional and used to calculate the position error and fix numerical drift.
+
103 RefConst<Constraint> mPinionConstraint;
+
104 RefConst<Constraint> mRackConstraint;
+
105
+
106 // RUN TIME PROPERTIES FOLLOW
+
107
+
108 // World space hinge axis
+
109 Vec3 mWorldSpaceHingeAxis;
+
110
+
111 // World space sliding direction
+
112 Vec3 mWorldSpaceSliderAxis;
+
113
+
114 // The constraint parts
+
115 RackAndPinionConstraintPart mRackAndPinionConstraintPart;
+
116};
+
+
117
+ +
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
+
@ WorldSpace
All constraint properties are specified in world space.
+
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#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
+ +
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:103
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Definition RackAndPinionConstraint.h:55
+
float GetTotalLambda() const
Definition RackAndPinionConstraint.h:85
+
void SetConstraints(const Constraint *inPinion, const Constraint *inRack)
The constraints that constrain the rack and pinion (a slider and a hinge), optional and used to calcu...
Definition RackAndPinionConstraint.h:82
+
virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
Definition RackAndPinionConstraint.h:64
+
virtual EConstraintSubType GetSubType() const override
Get the sub type of a constraint.
Definition RackAndPinionConstraint.h:63
+
Definition RackAndPinionConstraintPart.h:40
+
Rack and pinion constraint (slider & gear) settings.
Definition RackAndPinionConstraint.h:14
+
void SetRatio(int inNumTeethRack, float inRackLength, int inNumTeethPinion)
Definition RackAndPinionConstraint.h:30
+
Definition Reference.h:151
+
Definition Reference.h:101
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition Vec3.h:53
+
+
+ + + + diff --git a/_rack_and_pinion_constraint_part_8h.html b/_rack_and_pinion_constraint_part_8h.html new file mode 100644 index 000000000..95dfc7c3d --- /dev/null +++ b/_rack_and_pinion_constraint_part_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/RackAndPinionConstraintPart.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RackAndPinionConstraintPart.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  RackAndPinionConstraintPart
 
+
+
+ + + + diff --git a/_rack_and_pinion_constraint_part_8h.js b/_rack_and_pinion_constraint_part_8h.js new file mode 100644 index 000000000..80a94fabb --- /dev/null +++ b/_rack_and_pinion_constraint_part_8h.js @@ -0,0 +1,4 @@ +var _rack_and_pinion_constraint_part_8h = +[ + [ "RackAndPinionConstraintPart", "class_rack_and_pinion_constraint_part.html", "class_rack_and_pinion_constraint_part" ] +]; \ No newline at end of file diff --git a/_rack_and_pinion_constraint_part_8h_source.html b/_rack_and_pinion_constraint_part_8h_source.html new file mode 100644 index 000000000..a00bbdcd7 --- /dev/null +++ b/_rack_and_pinion_constraint_part_8h_source.html @@ -0,0 +1,315 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/RackAndPinionConstraintPart.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RackAndPinionConstraintPart.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
+ + +
9
+ +
11
+
+ +
40{
+
42 JPH_INLINE bool ApplyVelocityStep(Body &ioBody1, Body &ioBody2, float inLambda) const
+
43 {
+
44 // Apply impulse if delta is not zero
+
45 if (inLambda != 0.0f)
+
46 {
+
47 // Calculate velocity change due to constraint
+
48 //
+
49 // Impulse:
+
50 // P = J^T lambda
+
51 //
+
52 // Euler velocity integration:
+
53 // v' = v + M^-1 P
+
54 ioBody1.GetMotionProperties()->AddAngularVelocityStep(inLambda * mInvI1_A);
+
55 ioBody2.GetMotionProperties()->SubLinearVelocityStep(inLambda * mRatio_InvM2_B);
+
56 return true;
+
57 }
+
58
+
59 return false;
+
60 }
+
61
+
62public:
+
+
69 inline void CalculateConstraintProperties(const Body &inBody1, Vec3Arg inWorldSpaceHingeAxis, const Body &inBody2, Vec3Arg inWorldSpaceSliderAxis, float inRatio)
+
70 {
+
71 JPH_ASSERT(inWorldSpaceHingeAxis.IsNormalized(1.0e-4f));
+
72 JPH_ASSERT(inWorldSpaceSliderAxis.IsNormalized(1.0e-4f));
+
73
+
74 // Calculate: I1^-1 a
+
75 mInvI1_A = inBody1.GetMotionProperties()->MultiplyWorldSpaceInverseInertiaByVector(inBody1.GetRotation(), inWorldSpaceHingeAxis);
+
76
+
77 // Calculate: r/m2 b
+
78 float inv_m2 = inBody2.GetMotionProperties()->GetInverseMass();
+
79 mRatio_InvM2_B = inRatio * inv_m2 * inWorldSpaceSliderAxis;
+
80
+
81 // K^-1 = 1 / (J M^-1 J^T) = 1 / (a^T I1^-1 a + 1/m2 * r^2 * b . b)
+
82 float inv_effective_mass = (inWorldSpaceHingeAxis.Dot(mInvI1_A) + inv_m2 * Square(inRatio));
+
83 if (inv_effective_mass == 0.0f)
+
84 Deactivate();
+
85 else
+
86 mEffectiveMass = 1.0f / inv_effective_mass;
+
87 }
+
+
88
+
+
90 inline void Deactivate()
+
91 {
+
92 mEffectiveMass = 0.0f;
+
93 mTotalLambda = 0.0f;
+
94 }
+
+
95
+
+
97 inline bool IsActive() const
+
98 {
+
99 return mEffectiveMass != 0.0f;
+
100 }
+
+
101
+
+
106 inline void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
+
107 {
+
108 mTotalLambda *= inWarmStartImpulseRatio;
+
109 ApplyVelocityStep(ioBody1, ioBody2, mTotalLambda);
+
110 }
+
+
111
+
+
118 inline bool SolveVelocityConstraint(Body &ioBody1, Vec3Arg inWorldSpaceHingeAxis, Body &ioBody2, Vec3Arg inWorldSpaceSliderAxis, float inRatio)
+
119 {
+
120 // Lagrange multiplier is:
+
121 //
+
122 // lambda = -K^-1 (J v + b)
+
123 float lambda = mEffectiveMass * (inRatio * inWorldSpaceSliderAxis.Dot(ioBody2.GetLinearVelocity()) - inWorldSpaceHingeAxis.Dot(ioBody1.GetAngularVelocity()));
+
124 mTotalLambda += lambda; // Store accumulated impulse
+
125
+
126 return ApplyVelocityStep(ioBody1, ioBody2, lambda);
+
127 }
+
+
128
+
+
130 float GetTotalLambda() const
+
131 {
+
132 return mTotalLambda;
+
133 }
+
+
134
+
+
140 inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) const
+
141 {
+
142 // Only apply position constraint when the constraint is hard, otherwise the velocity bias will fix the constraint
+
143 if (inC != 0.0f)
+
144 {
+
145 // Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
+
146 //
+
147 // lambda = -K^-1 * beta / dt * C
+
148 //
+
149 // We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
+
150 float lambda = -mEffectiveMass * inBaumgarte * inC;
+
151
+
152 // Directly integrate velocity change for one time step
+
153 //
+
154 // Euler velocity integration:
+
155 // dv = M^-1 P
+
156 //
+
157 // Impulse:
+
158 // P = J^T lambda
+
159 //
+
160 // Euler position integration:
+
161 // x' = x + dv * dt
+
162 //
+
163 // Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
+
164 // Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
+
165 // stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
+
166 // integrate + a position integrate and then discard the velocity change.
+
167 if (ioBody1.IsDynamic())
+
168 ioBody1.AddRotationStep(lambda * mInvI1_A);
+
169 if (ioBody2.IsDynamic())
+
170 ioBody2.SubPositionStep(lambda * mRatio_InvM2_B);
+
171 return true;
+
172 }
+
173
+
174 return false;
+
175 }
+
+
176
+
+
178 void SaveState(StateRecorder &inStream) const
+
179 {
+
180 inStream.Write(mTotalLambda);
+
181 }
+
+
182
+
+ +
185 {
+
186 inStream.Read(mTotalLambda);
+
187 }
+
+
188
+
189private:
+
190 Vec3 mInvI1_A;
+
191 Vec3 mRatio_InvM2_B;
+
192 float mEffectiveMass = 0.0f;
+
193 float mTotalLambda = 0.0f;
+
194};
+
+
195
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+ +
Definition Body.h:35
+
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:249
+
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:61
+
void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Update rotation using an Euler step (using during position integrate & constraint solving)
Definition Body.inl:81
+
void SubPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)
Definition Body.h:284
+
Vec3 GetLinearVelocity() const
Get world space linear velocity of the center of mass (unit: m/s)
Definition Body.h:144
+
Quat GetRotation() const
World space rotation of the body.
Definition Body.h:231
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass (unit: rad/s)
Definition Body.h:153
+
void SubLinearVelocityStep(Vec3Arg inLinearVelocityChange)
Definition MotionProperties.h:192
+
float GetInverseMass() const
Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies ha...
Definition MotionProperties.h:95
+
JPH_INLINE Vec3 MultiplyWorldSpaceInverseInertiaByVector(QuatArg inBodyRotation, Vec3Arg inV) const
Multiply a vector with the inverse world space inertia tensor ( ). Zero if object is static or kinema...
Definition MotionProperties.inl:76
+
void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:193
+
Definition RackAndPinionConstraintPart.h:40
+
void CalculateConstraintProperties(const Body &inBody1, Vec3Arg inWorldSpaceHingeAxis, const Body &inBody2, Vec3Arg inWorldSpaceSliderAxis, float inRatio)
Definition RackAndPinionConstraintPart.h:69
+
bool SolveVelocityConstraint(Body &ioBody1, Vec3Arg inWorldSpaceHingeAxis, Body &ioBody2, Vec3Arg inWorldSpaceSliderAxis, float inRatio)
Definition RackAndPinionConstraintPart.h:118
+
float GetTotalLambda() const
Return lagrange multiplier.
Definition RackAndPinionConstraintPart.h:130
+
void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
Definition RackAndPinionConstraintPart.h:106
+
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition RackAndPinionConstraintPart.h:178
+
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) const
Definition RackAndPinionConstraintPart.h:140
+
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition RackAndPinionConstraintPart.h:184
+
void Deactivate()
Deactivate this constraint.
Definition RackAndPinionConstraintPart.h:90
+
bool IsActive() const
Check if constraint is active.
Definition RackAndPinionConstraintPart.h:97
+
Definition StateRecorder.h:48
+
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:29
+
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:26
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const
Test if vector is normalized.
Definition Vec3.inl:745
+
+
+ + + + diff --git a/_ragdoll_8cpp.html b/_ragdoll_8cpp.html new file mode 100644 index 000000000..ad5b3a7ca --- /dev/null +++ b/_ragdoll_8cpp.html @@ -0,0 +1,193 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Ragdoll/Ragdoll.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Ragdoll.cpp File Reference
+
+
+ + + + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (RagdollSettings::Part)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (RagdollSettings::AdditionalConstraint)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (RagdollSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [1/3]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (RagdollSettings )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [2/3]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (RagdollSettings::AdditionalConstraint )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [3/3]

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (RagdollSettings::Part )
+
+ +
+
+
+
+ + + + diff --git a/_ragdoll_8cpp.js b/_ragdoll_8cpp.js new file mode 100644 index 000000000..48b2f6470 --- /dev/null +++ b/_ragdoll_8cpp.js @@ -0,0 +1,6 @@ +var _ragdoll_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_ragdoll_8cpp.html#a3f5bf275d929461fa92729fc389ecde8", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_ragdoll_8cpp.html#a156cb7c4ba37a5088a457802db82e9cc", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_ragdoll_8cpp.html#aa82ef8ce262899911ba7fdc45f209afa", null ] +]; \ No newline at end of file diff --git a/_ragdoll_8h.html b/_ragdoll_8h.html new file mode 100644 index 000000000..7db72a981 --- /dev/null +++ b/_ragdoll_8h.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Ragdoll/Ragdoll.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Ragdoll.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

class  RagdollSettings
 Contains the structure of a ragdoll. More...
 
class  RagdollSettings::Part
 A single rigid body sub part of the ragdoll. More...
 
class  RagdollSettings::AdditionalConstraint
 A constraint that connects two bodies in a ragdoll (for non parent child related constraints) More...
 
class  Ragdoll
 Runtime ragdoll information. More...
 
+
+
+ + + + diff --git a/_ragdoll_8h.js b/_ragdoll_8h.js new file mode 100644 index 000000000..b52ab8270 --- /dev/null +++ b/_ragdoll_8h.js @@ -0,0 +1,7 @@ +var _ragdoll_8h = +[ + [ "RagdollSettings", "class_ragdoll_settings.html", "class_ragdoll_settings" ], + [ "RagdollSettings::Part", "class_ragdoll_settings_1_1_part.html", "class_ragdoll_settings_1_1_part" ], + [ "RagdollSettings::AdditionalConstraint", "class_ragdoll_settings_1_1_additional_constraint.html", "class_ragdoll_settings_1_1_additional_constraint" ], + [ "Ragdoll", "class_ragdoll.html", "class_ragdoll" ] +]; \ No newline at end of file diff --git a/_ragdoll_8h_source.html b/_ragdoll_8h_source.html new file mode 100644 index 000000000..dea6b7c8c --- /dev/null +++ b/_ragdoll_8h_source.html @@ -0,0 +1,350 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Ragdoll/Ragdoll.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Ragdoll.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#include <Jolt/Core/Result.h>
+ + + + + +
14
+ +
16
+
17class Ragdoll;
+
18class PhysicsSystem;
+
19
+
+
21class JPH_EXPORT RagdollSettings : public RefTarget<RagdollSettings>
+
22{
+
23public:
+ +
25
+
26
+
28 bool Stabilize();
+
29
+
42 void DisableParentChildCollisions(const Mat44 *inJointMatrices = nullptr, float inMinSeparationDistance = 0.0f);
+
43
+
48 void SaveBinaryState(StreamOut &inStream, bool inSaveShapes, bool inSaveGroupFilter) const;
+
49
+ +
51
+
53 static RagdollResult sRestoreFromBinaryState(StreamIn &inStream);
+
54
+
57 Ragdoll * CreateRagdoll(CollisionGroup::GroupID inCollisionGroup, uint64 inUserData, PhysicsSystem *inSystem) const;
+
58
+
60 const Skeleton * GetSkeleton() const { return mSkeleton; }
+
61 Skeleton * GetSkeleton() { return mSkeleton; }
+
62
+
64 void CalculateBodyIndexToConstraintIndex();
+
65
+
68 const Array<int> & GetBodyIndexToConstraintIndex() const { return mBodyIndexToConstraintIndex; }
+
69
+
71 int GetConstraintIndexForBodyIndex(int inBodyIndex) const { return mBodyIndexToConstraintIndex[inBodyIndex]; }
+
72
+
74 void CalculateConstraintIndexToBodyIdxPair();
+
75
+
76 using BodyIdxPair = pair<int, int>;
+
77
+
79 const Array<BodyIdxPair> & GetConstraintIndexToBodyIdxPair() const { return mConstraintIndexToBodyIdxPair; }
+
80
+
82 BodyIdxPair GetBodyIndicesForConstraintIndex(int inConstraintIndex) const { return mConstraintIndexToBodyIdxPair[inConstraintIndex]; }
+
83
+
+ +
86 {
+
87 public:
+ +
89
+ +
91 };
+
+
92
+ +
95
+
+ +
98 {
+
99 public:
+ +
101
+
102
+ +
104 AdditionalConstraint(int inBodyIdx1, int inBodyIdx2, TwoBodyConstraintSettings *inConstraint) : mBodyIdx { inBodyIdx1, inBodyIdx2 }, mConstraint(inConstraint) { }
+
105
+
106 int mBodyIdx[2];
+ +
108 };
+
+
109
+ +
112
+ +
115
+ +
118
+ +
121
+
122private:
+
124 Array<int> mBodyIndexToConstraintIndex;
+
125
+
127 Array<BodyIdxPair> mConstraintIndexToBodyIdxPair;
+
128};
+
+
129
+
+
131class JPH_EXPORT Ragdoll : public RefTarget<Ragdoll>, public NonCopyable
+
132{
+
133public:
+ +
135
+
137 explicit Ragdoll(PhysicsSystem *inSystem) : mSystem(inSystem) { }
+
138
+
140 ~Ragdoll();
+
141
+
143 void AddToPhysicsSystem(EActivation inActivationMode, bool inLockBodies = true);
+
144
+
146 void RemoveFromPhysicsSystem(bool inLockBodies = true);
+
147
+
149 void Activate(bool inLockBodies = true);
+
150
+
155 bool IsActive(bool inLockBodies = true) const;
+
156
+
158 void SetGroupID(CollisionGroup::GroupID inGroupID, bool inLockBodies = true);
+
159
+
161 void SetPose(const SkeletonPose &inPose, bool inLockBodies = true);
+
162
+
164 void SetPose(RVec3Arg inRootOffset, const Mat44 *inJointMatrices, bool inLockBodies = true);
+
165
+
167 void GetPose(SkeletonPose &outPose, bool inLockBodies = true);
+
168
+
170 void GetPose(RVec3 &outRootOffset, Mat44 *outJointMatrices, bool inLockBodies = true);
+
171
+
173 void ResetWarmStart();
+
174
+
176 void DriveToPoseUsingKinematics(const SkeletonPose &inPose, float inDeltaTime, bool inLockBodies = true);
+
177
+
179 void DriveToPoseUsingKinematics(RVec3Arg inRootOffset, const Mat44 *inJointMatrices, float inDeltaTime, bool inLockBodies = true);
+
180
+
182 void DriveToPoseUsingMotors(const SkeletonPose &inPose);
+
183
+
185 void SetLinearAndAngularVelocity(Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity, bool inLockBodies = true);
+
186
+
188 void SetLinearVelocity(Vec3Arg inLinearVelocity, bool inLockBodies = true);
+
189
+
191 void AddLinearVelocity(Vec3Arg inLinearVelocity, bool inLockBodies = true);
+
192
+
194 void AddImpulse(Vec3Arg inImpulse, bool inLockBodies = true);
+
195
+
197 void GetRootTransform(RVec3 &outPosition, Quat &outRotation, bool inLockBodies = true) const;
+
198
+
200 size_t GetBodyCount() const { return mBodyIDs.size(); }
+
201
+
203 BodyID GetBodyID(int inBodyIndex) const { return mBodyIDs[inBodyIndex]; }
+
204
+
206 const Array<BodyID> & GetBodyIDs() const { return mBodyIDs; }
+
207
+
209 size_t GetConstraintCount() const { return mConstraints.size(); }
+
210
+
212 TwoBodyConstraint * GetConstraint(int inConstraintIndex) { return mConstraints[inConstraintIndex]; }
+
213
+
215 const TwoBodyConstraint * GetConstraint(int inConstraintIndex) const { return mConstraints[inConstraintIndex]; }
+
216
+
218 AABox GetWorldSpaceBounds(bool inLockBodies = true) const;
+
219
+
221 const RagdollSettings * GetRagdollSettings() const { return mRagdollSettings; }
+
222
+
223private:
+
225 friend class RagdollSettings;
+
226
+
228 RefConst<RagdollSettings> mRagdollSettings;
+
229
+
231 Array<BodyID> mBodyIDs;
+
232
+
234 Array<Ref<TwoBodyConstraint>> mConstraints;
+
235
+
237 PhysicsSystem * mSystem;
+
238};
+
+
239
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
EActivation
Enum used by AddBody to determine if the body needs to be initially active.
Definition EActivation.h:11
+
@ Activate
Activate the body, making it part of the simulation.
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ + +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ + + +
Axis aligned box.
Definition AABox.h:16
+
Definition Array.h:36
+
Settings for constructing a rigid body.
Definition BodyCreationSettings.h:31
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
uint32 GroupID
Definition CollisionGroup.h:24
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition PhysicsSystem.h:29
+
Definition Quat.h:33
+
Runtime ragdoll information.
Definition Ragdoll.h:132
+
const TwoBodyConstraint * GetConstraint(int inConstraintIndex) const
Access a constraint by index.
Definition Ragdoll.h:215
+
size_t GetConstraintCount() const
Get number of constraints in the ragdoll.
Definition Ragdoll.h:209
+
size_t GetBodyCount() const
Get number of bodies in the ragdoll.
Definition Ragdoll.h:200
+
TwoBodyConstraint * GetConstraint(int inConstraintIndex)
Access a constraint by index.
Definition Ragdoll.h:212
+
const Array< BodyID > & GetBodyIDs() const
Access to the array of body IDs.
Definition Ragdoll.h:206
+
JPH_OVERRIDE_NEW_DELETE Ragdoll(PhysicsSystem *inSystem)
Constructor.
Definition Ragdoll.h:137
+
BodyID GetBodyID(int inBodyIndex) const
Access a body ID.
Definition Ragdoll.h:203
+
const RagdollSettings * GetRagdollSettings() const
Get the settings object that created this ragdoll.
Definition Ragdoll.h:221
+
A constraint that connects two bodies in a ragdoll (for non parent child related constraints)
Definition Ragdoll.h:98
+
Ref< TwoBodyConstraintSettings > mConstraint
The constraint that connects these bodies.
Definition Ragdoll.h:107
+
A single rigid body sub part of the ragdoll.
Definition Ragdoll.h:86
+
Contains the structure of a ragdoll.
Definition Ragdoll.h:22
+
const Array< int > & GetBodyIndexToConstraintIndex() const
Definition Ragdoll.h:68
+
Skeleton * GetSkeleton()
Definition Ragdoll.h:61
+
int GetConstraintIndexForBodyIndex(int inBodyIndex) const
Map a single body index to a constraint index.
Definition Ragdoll.h:71
+
pair< int, int > BodyIdxPair
Definition Ragdoll.h:76
+
const Skeleton * GetSkeleton() const
Access to the skeleton of this ragdoll.
Definition Ragdoll.h:60
+
const Array< BodyIdxPair > & GetConstraintIndexToBodyIdxPair() const
Table that maps a constraint index (index in mConstraints) to the indices of the bodies that the cons...
Definition Ragdoll.h:79
+
AdditionalConstraintVector mAdditionalConstraints
A list of constraints that connects two bodies in a ragdoll (for non parent child related constraints...
Definition Ragdoll.h:120
+
BodyIdxPair GetBodyIndicesForConstraintIndex(int inConstraintIndex) const
Map a single constraint index (index in mConstraints) to the indices of the bodies that the constrain...
Definition Ragdoll.h:82
+
PartVector mParts
For each of the joints, the body and constraint attaching it to its parent body (1-on-1 with mSkeleto...
Definition Ragdoll.h:117
+
Ref< Skeleton > mSkeleton
The skeleton for this ragdoll.
Definition Ragdoll.h:114
+
Definition Reference.h:151
+
Definition Reference.h:101
+
Definition Reference.h:35
+
Helper class that either contains a valid result or an error.
Definition Result.h:12
+
Resource that contains the joint hierarchy for a skeleton.
Definition Skeleton.h:18
+
Instance of a skeleton, contains the pose the current skeleton is in.
Definition SkeletonPose.h:18
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_ray_a_a_box8_8h.html b/_ray_a_a_box8_8h.html new file mode 100644 index 000000000..c008fd090 --- /dev/null +++ b/_ray_a_a_box8_8h.html @@ -0,0 +1,192 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RayAABox8.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RayAABox8.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_INLINE Vec8 RayAABox8 (Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec8Arg inBoundsMinX, Vec8Arg inBoundsMinY, Vec8Arg inBoundsMinZ, Vec8Arg inBoundsMaxX, Vec8Arg inBoundsMaxY, Vec8Arg inBoundsMaxZ)
 
+

Function Documentation

+ +

◆ RayAABox8()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_INLINE Vec8 RayAABox8 (Vec3Arg inOrigin,
const RayInvDirectioninInvDirection,
Vec8Arg inBoundsMinX,
Vec8Arg inBoundsMinY,
Vec8Arg inBoundsMinZ,
Vec8Arg inBoundsMaxX,
Vec8Arg inBoundsMaxY,
Vec8Arg inBoundsMaxZ 
)
+
+

Intersect 8 AABBs with ray, returns minimal distance along ray or FLT_MAX if no hit Note: Can return negative value if ray starts in box

+ +
+
+
+
+ + + + diff --git a/_ray_a_a_box8_8h.js b/_ray_a_a_box8_8h.js new file mode 100644 index 000000000..303b1acb1 --- /dev/null +++ b/_ray_a_a_box8_8h.js @@ -0,0 +1,4 @@ +var _ray_a_a_box8_8h = +[ + [ "RayAABox8", "_ray_a_a_box8_8h.html#a206c515c138809481c54c52af48355f1", null ] +]; \ No newline at end of file diff --git a/_ray_a_a_box8_8h_source.html b/_ray_a_a_box8_8h_source.html new file mode 100644 index 000000000..146577007 --- /dev/null +++ b/_ray_a_a_box8_8h_source.html @@ -0,0 +1,222 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RayAABox8.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RayAABox8.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
+
7#include <Jolt/Math/Vec8.h>
+ +
9
+ +
11
+
+
14JPH_INLINE Vec8 RayAABox8(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec8Arg inBoundsMinX, Vec8Arg inBoundsMinY, Vec8Arg inBoundsMinZ, Vec8Arg inBoundsMaxX, Vec8Arg inBoundsMaxY, Vec8Arg inBoundsMaxZ)
+
15{
+
16 // Constants
+
17 Vec8 flt_min = Vec8::sReplicate(-FLT_MAX);
+
18 Vec8 flt_max = Vec8::sReplicate(FLT_MAX);
+
19
+
20 // Origin
+
21 Vec8 originx = Vec8::sSplatX(Vec4(inOrigin));
+
22 Vec8 originy = Vec8::sSplatY(Vec4(inOrigin));
+
23 Vec8 originz = Vec8::sSplatZ(Vec4(inOrigin));
+
24
+
25 // Parallel
+
26 UVec8 parallelx = UVec8::sSplatX(inInvDirection.mIsParallel);
+
27 UVec8 parallely = UVec8::sSplatY(inInvDirection.mIsParallel);
+
28 UVec8 parallelz = UVec8::sSplatZ(inInvDirection.mIsParallel);
+
29
+
30 // Inverse direction
+
31 Vec8 invdirx = Vec8::sSplatX(Vec4(inInvDirection.mInvDirection));
+
32 Vec8 invdiry = Vec8::sSplatY(Vec4(inInvDirection.mInvDirection));
+
33 Vec8 invdirz = Vec8::sSplatZ(Vec4(inInvDirection.mInvDirection));
+
34
+
35 // Test against all three axii simultaneously.
+
36 Vec8 t1x = (inBoundsMinX - originx) * invdirx;
+
37 Vec8 t1y = (inBoundsMinY - originy) * invdiry;
+
38 Vec8 t1z = (inBoundsMinZ - originz) * invdirz;
+
39 Vec8 t2x = (inBoundsMaxX - originx) * invdirx;
+
40 Vec8 t2y = (inBoundsMaxY - originy) * invdiry;
+
41 Vec8 t2z = (inBoundsMaxZ - originz) * invdirz;
+
42
+
43 // Compute the max of min(t1,t2) and the min of max(t1,t2) ensuring we don't
+
44 // use the results from any directions parallel to the slab.
+
45 Vec8 t_minx = Vec8::sSelect(Vec8::sMin(t1x, t2x), flt_min, parallelx);
+
46 Vec8 t_miny = Vec8::sSelect(Vec8::sMin(t1y, t2y), flt_min, parallely);
+
47 Vec8 t_minz = Vec8::sSelect(Vec8::sMin(t1z, t2z), flt_min, parallelz);
+
48 Vec8 t_maxx = Vec8::sSelect(Vec8::sMax(t1x, t2x), flt_max, parallelx);
+
49 Vec8 t_maxy = Vec8::sSelect(Vec8::sMax(t1y, t2y), flt_max, parallely);
+
50 Vec8 t_maxz = Vec8::sSelect(Vec8::sMax(t1z, t2z), flt_max, parallelz);
+
51
+
52 // t_min.xyz = maximum(t_min.x, t_min.y, t_min.z);
+
53 Vec8 t_min = Vec8::sMax(Vec8::sMax(t_minx, t_miny), t_minz);
+
54
+
55 // t_max.xyz = minimum(t_max.x, t_max.y, t_max.z);
+
56 Vec8 t_max = Vec8::sMin(Vec8::sMin(t_maxx, t_maxy), t_maxz);
+
57
+
58 // if (t_min > t_max) return FLT_MAX;
+
59 UVec8 no_intersection = Vec8::sGreater(t_min, t_max);
+
60
+
61 // if (t_max < 0.0f) return FLT_MAX;
+
62 no_intersection = UVec8::sOr(no_intersection, Vec8::sLess(t_max, Vec8::sZero()));
+
63
+
64 // if bounds are invalid return FLOAT_MAX;
+
65 UVec8 bounds_invalid = UVec8::sOr(UVec8::sOr(Vec8::sGreater(inBoundsMinX, inBoundsMaxX), Vec8::sGreater(inBoundsMinY, inBoundsMaxY)), Vec8::sGreater(inBoundsMinZ, inBoundsMaxZ));
+
66 no_intersection = UVec8::sOr(no_intersection, bounds_invalid);
+
67
+
68 // if (inInvDirection.mIsParallel && !(Min <= inOrigin && inOrigin <= Max)) return FLT_MAX; else return t_min;
+
69 UVec8 no_parallel_overlapx = UVec8::sAnd(parallelx, UVec8::sOr(Vec8::sLess(originx, inBoundsMinX), Vec8::sGreater(originx, inBoundsMaxX)));
+
70 UVec8 no_parallel_overlapy = UVec8::sAnd(parallely, UVec8::sOr(Vec8::sLess(originy, inBoundsMinY), Vec8::sGreater(originy, inBoundsMaxY)));
+
71 UVec8 no_parallel_overlapz = UVec8::sAnd(parallelz, UVec8::sOr(Vec8::sLess(originz, inBoundsMinZ), Vec8::sGreater(originz, inBoundsMaxZ)));
+
72 no_intersection = UVec8::sOr(no_intersection, UVec8::sOr(UVec8::sOr(no_parallel_overlapx, no_parallel_overlapy), no_parallel_overlapz));
+
73 return Vec8::sSelect(t_min, flt_max, no_intersection);
+
74}
+
+
75
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_NAMESPACE_BEGIN JPH_INLINE Vec8 RayAABox8(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec8Arg inBoundsMinX, Vec8Arg inBoundsMinY, Vec8Arg inBoundsMinZ, Vec8Arg inBoundsMaxX, Vec8Arg inBoundsMaxY, Vec8Arg inBoundsMaxZ)
Definition RayAABox8.h:14
+ + +
Helper structure holding the reciprocal of a ray for Ray vs AABox testing.
Definition RayAABox.h:11
+
UVec4 mIsParallel
for each component if it is parallel to the coordinate axis
Definition RayAABox.h:28
+
Vec3 mInvDirection
1 / ray direction
Definition RayAABox.h:27
+
Definition UVec8.h:12
+
static JPH_INLINE UVec8 sSplatZ(UVec4Arg inV)
Replicate the Z component of inV to all components.
Definition UVec8.inl:32
+
static JPH_INLINE UVec8 sAnd(UVec8Arg inV1, UVec8Arg inV2)
Logical and.
Definition UVec8.inl:61
+
static JPH_INLINE UVec8 sSplatY(UVec4Arg inV)
Replicate the Y component of inV to all components.
Definition UVec8.inl:27
+
static JPH_INLINE UVec8 sSplatX(UVec4Arg inV)
Replicate the X component of inV to all components.
Definition UVec8.inl:22
+
static JPH_INLINE UVec8 sOr(UVec8Arg inV1, UVec8Arg inV2)
Logical or.
Definition UVec8.inl:51
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
Definition Vec8.h:12
+
static JPH_INLINE UVec8 sLess(Vec8Arg inV1, Vec8Arg inV2)
Less than.
Definition Vec8.inl:63
+
static JPH_INLINE Vec8 sSplatX(Vec4Arg inV)
Replicate the X component of inV to all components.
Definition Vec8.inl:24
+
static JPH_INLINE Vec8 sSplatY(Vec4Arg inV)
Replicate the Y component of inV to all components.
Definition Vec8.inl:29
+
static JPH_INLINE Vec8 sMax(Vec8Arg inV1, Vec8Arg inV2)
Component wise max.
Definition Vec8.inl:58
+
static JPH_INLINE UVec8 sGreater(Vec8Arg inV1, Vec8Arg inV2)
Greater than.
Definition Vec8.inl:68
+
static JPH_INLINE Vec8 sZero()
Vector with all zeros.
Definition Vec8.inl:14
+
static JPH_INLINE Vec8 sSelect(Vec8Arg inV1, Vec8Arg inV2, UVec8Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec8.inl:48
+
static JPH_INLINE Vec8 sMin(Vec8Arg inV1, Vec8Arg inV2)
Component wise min.
Definition Vec8.inl:53
+
static JPH_INLINE Vec8 sSplatZ(Vec4Arg inV)
Replicate the Z component of inV to all components.
Definition Vec8.inl:34
+
static JPH_INLINE Vec8 sReplicate(float inV)
Replicate across all components.
Definition Vec8.inl:19
+
+
+ + + + diff --git a/_ray_a_a_box_8h.html b/_ray_a_a_box_8h.html new file mode 100644 index 000000000..984ebb5d4 --- /dev/null +++ b/_ray_a_a_box_8h.html @@ -0,0 +1,389 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RayAABox.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RayAABox.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  RayInvDirection
 Helper structure holding the reciprocal of a ray for Ray vs AABox testing. More...
 
+ + + + + + + + + + + + +

+Functions

JPH_INLINE float RayAABox (Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax)
 
JPH_INLINE Vec4 RayAABox4 (Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ)
 
JPH_INLINE void RayAABox (Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax, float &outMin, float &outMax)
 
JPH_INLINE bool RayAABoxHits (Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax, float inClosest)
 Intersect AABB with ray, returns true if there is a hit closer than inClosest.
 
JPH_INLINE bool RayAABoxHits (Vec3Arg inOrigin, Vec3Arg inDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax)
 
+

Function Documentation

+ +

◆ RayAABox() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE float RayAABox (Vec3Arg inOrigin,
const RayInvDirectioninInvDirection,
Vec3Arg inBoundsMin,
Vec3Arg inBoundsMax 
)
+
+

Intersect AABB with ray, returns minimal distance along ray or FLT_MAX if no hit Note: Can return negative value if ray starts in box

+ +
+
+ +

◆ RayAABox() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE void RayAABox (Vec3Arg inOrigin,
const RayInvDirectioninInvDirection,
Vec3Arg inBoundsMin,
Vec3Arg inBoundsMax,
float & outMin,
float & outMax 
)
+
+

Intersect AABB with ray, returns minimal and maximal distance along ray or FLT_MAX, -FLT_MAX if no hit Note: Can return negative value for outMin if ray starts in box

+ +
+
+ +

◆ RayAABox4()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE Vec4 RayAABox4 (Vec3Arg inOrigin,
const RayInvDirectioninInvDirection,
Vec4Arg inBoundsMinX,
Vec4Arg inBoundsMinY,
Vec4Arg inBoundsMinZ,
Vec4Arg inBoundsMaxX,
Vec4Arg inBoundsMaxY,
Vec4Arg inBoundsMaxZ 
)
+
+

Intersect 4 AABBs with ray, returns minimal distance along ray or FLT_MAX if no hit Note: Can return negative value if ray starts in box

+ +
+
+ +

◆ RayAABoxHits() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE bool RayAABoxHits (Vec3Arg inOrigin,
const RayInvDirectioninInvDirection,
Vec3Arg inBoundsMin,
Vec3Arg inBoundsMax,
float inClosest 
)
+
+ +

Intersect AABB with ray, returns true if there is a hit closer than inClosest.

+ +
+
+ +

◆ RayAABoxHits() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE bool RayAABoxHits (Vec3Arg inOrigin,
Vec3Arg inDirection,
Vec3Arg inBoundsMin,
Vec3Arg inBoundsMax 
)
+
+

Intersect AABB with ray without hit fraction, based on separating axis test

See also
http://www.codercorner.com/RayAABB.cpp
+ +
+
+
+
+ + + + diff --git a/_ray_a_a_box_8h.js b/_ray_a_a_box_8h.js new file mode 100644 index 000000000..1f736a039 --- /dev/null +++ b/_ray_a_a_box_8h.js @@ -0,0 +1,9 @@ +var _ray_a_a_box_8h = +[ + [ "RayInvDirection", "class_ray_inv_direction.html", "class_ray_inv_direction" ], + [ "RayAABox", "_ray_a_a_box_8h.html#afc8148e5f92f5793a720b3de6fb38094", null ], + [ "RayAABox", "_ray_a_a_box_8h.html#ab0c5d92b5381f2045127c1c41fe1e3d9", null ], + [ "RayAABox4", "_ray_a_a_box_8h.html#a47b273497f8309ea15797696f48f41ad", null ], + [ "RayAABoxHits", "_ray_a_a_box_8h.html#ad5c6851778bfb25190803b57f3b156fe", null ], + [ "RayAABoxHits", "_ray_a_a_box_8h.html#a796855b2528b68631ec2a0e4e4a7e936", null ] +]; \ No newline at end of file diff --git a/_ray_a_a_box_8h_source.html b/_ray_a_a_box_8h_source.html new file mode 100644 index 000000000..75e962f2e --- /dev/null +++ b/_ray_a_a_box_8h_source.html @@ -0,0 +1,408 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RayAABox.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RayAABox.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
+
+ +
11{
+
12public:
+
14 inline RayInvDirection() = default;
+
15 inline explicit RayInvDirection(Vec3Arg inDirection) { Set(inDirection); }
+
16
+
+
18 inline void Set(Vec3Arg inDirection)
+
19 {
+
20 // if (abs(inDirection) <= Epsilon) the ray is nearly parallel to the slab.
+
21 mIsParallel = Vec3::sLessOrEqual(inDirection.Abs(), Vec3::sReplicate(1.0e-20f));
+
22
+
23 // Calculate 1 / direction while avoiding division by zero
+ +
25 }
+
+
26
+ + +
29};
+
+
30
+
+
33JPH_INLINE float RayAABox(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax)
+
34{
+
35 // Constants
+
36 Vec3 flt_min = Vec3::sReplicate(-FLT_MAX);
+
37 Vec3 flt_max = Vec3::sReplicate(FLT_MAX);
+
38
+
39 // Test against all three axii simultaneously.
+
40 Vec3 t1 = (inBoundsMin - inOrigin) * inInvDirection.mInvDirection;
+
41 Vec3 t2 = (inBoundsMax - inOrigin) * inInvDirection.mInvDirection;
+
42
+
43 // Compute the max of min(t1,t2) and the min of max(t1,t2) ensuring we don't
+
44 // use the results from any directions parallel to the slab.
+
45 Vec3 t_min = Vec3::sSelect(Vec3::sMin(t1, t2), flt_min, inInvDirection.mIsParallel);
+
46 Vec3 t_max = Vec3::sSelect(Vec3::sMax(t1, t2), flt_max, inInvDirection.mIsParallel);
+
47
+
48 // t_min.xyz = maximum(t_min.x, t_min.y, t_min.z);
+
49 t_min = Vec3::sMax(t_min, t_min.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>());
+
50 t_min = Vec3::sMax(t_min, t_min.Swizzle<SWIZZLE_Z, SWIZZLE_X, SWIZZLE_Y>());
+
51
+
52 // t_max.xyz = minimum(t_max.x, t_max.y, t_max.z);
+
53 t_max = Vec3::sMin(t_max, t_max.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>());
+
54 t_max = Vec3::sMin(t_max, t_max.Swizzle<SWIZZLE_Z, SWIZZLE_X, SWIZZLE_Y>());
+
55
+
56 // if (t_min > t_max) return FLT_MAX;
+
57 UVec4 no_intersection = Vec3::sGreater(t_min, t_max);
+
58
+
59 // if (t_max < 0.0f) return FLT_MAX;
+
60 no_intersection = UVec4::sOr(no_intersection, Vec3::sLess(t_max, Vec3::sZero()));
+
61
+
62 // if (inInvDirection.mIsParallel && !(Min <= inOrigin && inOrigin <= Max)) return FLT_MAX; else return t_min;
+
63 UVec4 no_parallel_overlap = UVec4::sOr(Vec3::sLess(inOrigin, inBoundsMin), Vec3::sGreater(inOrigin, inBoundsMax));
+
64 no_intersection = UVec4::sOr(no_intersection, UVec4::sAnd(inInvDirection.mIsParallel, no_parallel_overlap));
+
65 no_intersection = UVec4::sOr(no_intersection, no_intersection.SplatY());
+
66 no_intersection = UVec4::sOr(no_intersection, no_intersection.SplatZ());
+
67 return Vec3::sSelect(t_min, flt_max, no_intersection).GetX();
+
68}
+
+
69
+
+
72JPH_INLINE Vec4 RayAABox4(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ)
+
73{
+
74 // Constants
+
75 Vec4 flt_min = Vec4::sReplicate(-FLT_MAX);
+
76 Vec4 flt_max = Vec4::sReplicate(FLT_MAX);
+
77
+
78 // Origin
+
79 Vec4 originx = inOrigin.SplatX();
+
80 Vec4 originy = inOrigin.SplatY();
+
81 Vec4 originz = inOrigin.SplatZ();
+
82
+
83 // Parallel
+
84 UVec4 parallelx = inInvDirection.mIsParallel.SplatX();
+
85 UVec4 parallely = inInvDirection.mIsParallel.SplatY();
+
86 UVec4 parallelz = inInvDirection.mIsParallel.SplatZ();
+
87
+
88 // Inverse direction
+
89 Vec4 invdirx = inInvDirection.mInvDirection.SplatX();
+
90 Vec4 invdiry = inInvDirection.mInvDirection.SplatY();
+
91 Vec4 invdirz = inInvDirection.mInvDirection.SplatZ();
+
92
+
93 // Test against all three axii simultaneously.
+
94 Vec4 t1x = (inBoundsMinX - originx) * invdirx;
+
95 Vec4 t1y = (inBoundsMinY - originy) * invdiry;
+
96 Vec4 t1z = (inBoundsMinZ - originz) * invdirz;
+
97 Vec4 t2x = (inBoundsMaxX - originx) * invdirx;
+
98 Vec4 t2y = (inBoundsMaxY - originy) * invdiry;
+
99 Vec4 t2z = (inBoundsMaxZ - originz) * invdirz;
+
100
+
101 // Compute the max of min(t1,t2) and the min of max(t1,t2) ensuring we don't
+
102 // use the results from any directions parallel to the slab.
+
103 Vec4 t_minx = Vec4::sSelect(Vec4::sMin(t1x, t2x), flt_min, parallelx);
+
104 Vec4 t_miny = Vec4::sSelect(Vec4::sMin(t1y, t2y), flt_min, parallely);
+
105 Vec4 t_minz = Vec4::sSelect(Vec4::sMin(t1z, t2z), flt_min, parallelz);
+
106 Vec4 t_maxx = Vec4::sSelect(Vec4::sMax(t1x, t2x), flt_max, parallelx);
+
107 Vec4 t_maxy = Vec4::sSelect(Vec4::sMax(t1y, t2y), flt_max, parallely);
+
108 Vec4 t_maxz = Vec4::sSelect(Vec4::sMax(t1z, t2z), flt_max, parallelz);
+
109
+
110 // t_min.xyz = maximum(t_min.x, t_min.y, t_min.z);
+
111 Vec4 t_min = Vec4::sMax(Vec4::sMax(t_minx, t_miny), t_minz);
+
112
+
113 // t_max.xyz = minimum(t_max.x, t_max.y, t_max.z);
+
114 Vec4 t_max = Vec4::sMin(Vec4::sMin(t_maxx, t_maxy), t_maxz);
+
115
+
116 // if (t_min > t_max) return FLT_MAX;
+
117 UVec4 no_intersection = Vec4::sGreater(t_min, t_max);
+
118
+
119 // if (t_max < 0.0f) return FLT_MAX;
+
120 no_intersection = UVec4::sOr(no_intersection, Vec4::sLess(t_max, Vec4::sZero()));
+
121
+
122 // if bounds are invalid return FLOAT_MAX;
+
123 UVec4 bounds_invalid = UVec4::sOr(UVec4::sOr(Vec4::sGreater(inBoundsMinX, inBoundsMaxX), Vec4::sGreater(inBoundsMinY, inBoundsMaxY)), Vec4::sGreater(inBoundsMinZ, inBoundsMaxZ));
+
124 no_intersection = UVec4::sOr(no_intersection, bounds_invalid);
+
125
+
126 // if (inInvDirection.mIsParallel && !(Min <= inOrigin && inOrigin <= Max)) return FLT_MAX; else return t_min;
+
127 UVec4 no_parallel_overlapx = UVec4::sAnd(parallelx, UVec4::sOr(Vec4::sLess(originx, inBoundsMinX), Vec4::sGreater(originx, inBoundsMaxX)));
+
128 UVec4 no_parallel_overlapy = UVec4::sAnd(parallely, UVec4::sOr(Vec4::sLess(originy, inBoundsMinY), Vec4::sGreater(originy, inBoundsMaxY)));
+
129 UVec4 no_parallel_overlapz = UVec4::sAnd(parallelz, UVec4::sOr(Vec4::sLess(originz, inBoundsMinZ), Vec4::sGreater(originz, inBoundsMaxZ)));
+
130 no_intersection = UVec4::sOr(no_intersection, UVec4::sOr(UVec4::sOr(no_parallel_overlapx, no_parallel_overlapy), no_parallel_overlapz));
+
131 return Vec4::sSelect(t_min, flt_max, no_intersection);
+
132}
+
+
133
+
+
136JPH_INLINE void RayAABox(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax, float &outMin, float &outMax)
+
137{
+
138 // Constants
+
139 Vec3 flt_min = Vec3::sReplicate(-FLT_MAX);
+
140 Vec3 flt_max = Vec3::sReplicate(FLT_MAX);
+
141
+
142 // Test against all three axii simultaneously.
+
143 Vec3 t1 = (inBoundsMin - inOrigin) * inInvDirection.mInvDirection;
+
144 Vec3 t2 = (inBoundsMax - inOrigin) * inInvDirection.mInvDirection;
+
145
+
146 // Compute the max of min(t1,t2) and the min of max(t1,t2) ensuring we don't
+
147 // use the results from any directions parallel to the slab.
+
148 Vec3 t_min = Vec3::sSelect(Vec3::sMin(t1, t2), flt_min, inInvDirection.mIsParallel);
+
149 Vec3 t_max = Vec3::sSelect(Vec3::sMax(t1, t2), flt_max, inInvDirection.mIsParallel);
+
150
+
151 // t_min.xyz = maximum(t_min.x, t_min.y, t_min.z);
+
152 t_min = Vec3::sMax(t_min, t_min.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>());
+
153 t_min = Vec3::sMax(t_min, t_min.Swizzle<SWIZZLE_Z, SWIZZLE_X, SWIZZLE_Y>());
+
154
+
155 // t_max.xyz = minimum(t_max.x, t_max.y, t_max.z);
+
156 t_max = Vec3::sMin(t_max, t_max.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>());
+
157 t_max = Vec3::sMin(t_max, t_max.Swizzle<SWIZZLE_Z, SWIZZLE_X, SWIZZLE_Y>());
+
158
+
159 // if (t_min > t_max) return FLT_MAX;
+
160 UVec4 no_intersection = Vec3::sGreater(t_min, t_max);
+
161
+
162 // if (t_max < 0.0f) return FLT_MAX;
+
163 no_intersection = UVec4::sOr(no_intersection, Vec3::sLess(t_max, Vec3::sZero()));
+
164
+
165 // if (inInvDirection.mIsParallel && !(Min <= inOrigin && inOrigin <= Max)) return FLT_MAX; else return t_min;
+
166 UVec4 no_parallel_overlap = UVec4::sOr(Vec3::sLess(inOrigin, inBoundsMin), Vec3::sGreater(inOrigin, inBoundsMax));
+
167 no_intersection = UVec4::sOr(no_intersection, UVec4::sAnd(inInvDirection.mIsParallel, no_parallel_overlap));
+
168 no_intersection = UVec4::sOr(no_intersection, no_intersection.SplatY());
+
169 no_intersection = UVec4::sOr(no_intersection, no_intersection.SplatZ());
+
170 outMin = Vec3::sSelect(t_min, flt_max, no_intersection).GetX();
+
171 outMax = Vec3::sSelect(t_max, flt_min, no_intersection).GetX();
+
172}
+
+
173
+
+
175JPH_INLINE bool RayAABoxHits(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax, float inClosest)
+
176{
+
177 // Constants
+
178 Vec3 flt_min = Vec3::sReplicate(-FLT_MAX);
+
179 Vec3 flt_max = Vec3::sReplicate(FLT_MAX);
+
180
+
181 // Test against all three axii simultaneously.
+
182 Vec3 t1 = (inBoundsMin - inOrigin) * inInvDirection.mInvDirection;
+
183 Vec3 t2 = (inBoundsMax - inOrigin) * inInvDirection.mInvDirection;
+
184
+
185 // Compute the max of min(t1,t2) and the min of max(t1,t2) ensuring we don't
+
186 // use the results from any directions parallel to the slab.
+
187 Vec3 t_min = Vec3::sSelect(Vec3::sMin(t1, t2), flt_min, inInvDirection.mIsParallel);
+
188 Vec3 t_max = Vec3::sSelect(Vec3::sMax(t1, t2), flt_max, inInvDirection.mIsParallel);
+
189
+
190 // t_min.xyz = maximum(t_min.x, t_min.y, t_min.z);
+
191 t_min = Vec3::sMax(t_min, t_min.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>());
+
192 t_min = Vec3::sMax(t_min, t_min.Swizzle<SWIZZLE_Z, SWIZZLE_X, SWIZZLE_Y>());
+
193
+
194 // t_max.xyz = minimum(t_max.x, t_max.y, t_max.z);
+
195 t_max = Vec3::sMin(t_max, t_max.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>());
+
196 t_max = Vec3::sMin(t_max, t_max.Swizzle<SWIZZLE_Z, SWIZZLE_X, SWIZZLE_Y>());
+
197
+
198 // if (t_min > t_max) return false;
+
199 UVec4 no_intersection = Vec3::sGreater(t_min, t_max);
+
200
+
201 // if (t_max < 0.0f) return false;
+
202 no_intersection = UVec4::sOr(no_intersection, Vec3::sLess(t_max, Vec3::sZero()));
+
203
+
204 // if (t_min > inClosest) return false;
+
205 no_intersection = UVec4::sOr(no_intersection, Vec3::sGreater(t_min, Vec3::sReplicate(inClosest)));
+
206
+
207 // if (inInvDirection.mIsParallel && !(Min <= inOrigin && inOrigin <= Max)) return false; else return true;
+
208 UVec4 no_parallel_overlap = UVec4::sOr(Vec3::sLess(inOrigin, inBoundsMin), Vec3::sGreater(inOrigin, inBoundsMax));
+
209 no_intersection = UVec4::sOr(no_intersection, UVec4::sAnd(inInvDirection.mIsParallel, no_parallel_overlap));
+
210
+
211 return !no_intersection.TestAnyXYZTrue();
+
212}
+
+
213
+
+
216JPH_INLINE bool RayAABoxHits(Vec3Arg inOrigin, Vec3Arg inDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax)
+
217{
+
218 Vec3 extents = inBoundsMax - inBoundsMin;
+
219
+
220 Vec3 diff = 2.0f * inOrigin - inBoundsMin - inBoundsMax;
+
221 Vec3 abs_diff = diff.Abs();
+
222
+
223 UVec4 no_intersection = UVec4::sAnd(Vec3::sGreater(abs_diff, extents), Vec3::sGreaterOrEqual(diff * inDirection, Vec3::sZero()));
+
224
+
225 Vec3 abs_dir = inDirection.Abs();
+
226 Vec3 abs_dir_yzz = abs_dir.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_Z>();
+
227 Vec3 abs_dir_xyx = abs_dir.Swizzle<SWIZZLE_X, SWIZZLE_Y, SWIZZLE_X>();
+
228
+
229 Vec3 extents_yzz = extents.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_Z>();
+
230 Vec3 extents_xyx = extents.Swizzle<SWIZZLE_X, SWIZZLE_Y, SWIZZLE_X>();
+
231
+
232 Vec3 diff_yzx = diff.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>();
+
233
+
234 Vec3 dir_yzx = inDirection.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>();
+
235
+
236 no_intersection = UVec4::sOr(no_intersection, Vec3::sGreater((inDirection * diff_yzx - dir_yzx * diff).Abs(), extents_xyx * abs_dir_yzz + extents_yzz * abs_dir_xyx));
+
237
+
238 return !no_intersection.TestAnyXYZTrue();
+
239}
+
+
240
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_INLINE Vec4 RayAABox4(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ)
Definition RayAABox.h:72
+
JPH_INLINE bool RayAABoxHits(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax, float inClosest)
Intersect AABB with ray, returns true if there is a hit closer than inClosest.
Definition RayAABox.h:175
+
JPH_INLINE float RayAABox(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax)
Definition RayAABox.h:33
+
@ SWIZZLE_Z
Use the Z component.
Definition Swizzle.h:14
+
@ SWIZZLE_X
Use the X component.
Definition Swizzle.h:12
+
@ SWIZZLE_Y
Use the Y component.
Definition Swizzle.h:13
+
Helper structure holding the reciprocal of a ray for Ray vs AABox testing.
Definition RayAABox.h:11
+
UVec4 mIsParallel
for each component if it is parallel to the coordinate axis
Definition RayAABox.h:28
+
Vec3 mInvDirection
1 / ray direction
Definition RayAABox.h:27
+
RayInvDirection(Vec3Arg inDirection)
Definition RayAABox.h:15
+
RayInvDirection()=default
Constructors.
+
void Set(Vec3Arg inDirection)
Set reciprocal from ray direction.
Definition RayAABox.h:18
+
Definition UVec4.h:12
+
JPH_INLINE UVec4 SplatY() const
Replicate the Y component to all components.
Definition UVec4.inl:293
+
JPH_INLINE UVec4 SplatX() const
Replicate the X component to all components.
Definition UVec4.inl:282
+
JPH_INLINE bool TestAnyXYZTrue() const
Test if any of X, Y or Z components are true (true is when highest bit of component is set)
Definition UVec4.inl:400
+
static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)
Logical and (component wise)
Definition UVec4.inl:199
+
static JPH_INLINE UVec4 sOr(UVec4Arg inV1, UVec4Arg inV2)
Logical or (component wise)
Definition UVec4.inl:171
+
JPH_INLINE UVec4 SplatZ() const
Replicate the Z component to all components.
Definition UVec4.inl:304
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sMax(Vec3Arg inV1, Vec3Arg inV2)
Return the maximum of each of the components.
Definition Vec3.inl:159
+
JPH_INLINE Vec4 SplatX() const
Replicate the X component to all components.
Definition Vec3.inl:529
+
static JPH_INLINE Vec3 sMin(Vec3Arg inV1, Vec3Arg inV2)
Return the minimum value of each of the components.
Definition Vec3.inl:146
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
static JPH_INLINE UVec4 sGreaterOrEqual(Vec3Arg inV1, Vec3Arg inV2)
Greater than or equal (component wise)
Definition Vec3.inl:237
+
static JPH_INLINE UVec4 sLessOrEqual(Vec3Arg inV1, Vec3Arg inV2)
Less than or equal (component wise)
Definition Vec3.inl:207
+
JPH_INLINE Vec3 Abs() const
Return the absolute value of each of the components.
Definition Vec3.inl:572
+
JPH_INLINE Vec3 Reciprocal() const
Reciprocal vector (1 / value) for each of the components.
Definition Vec3.inl:585
+
JPH_INLINE Vec4 SplatZ() const
Replicate the Z component to all components.
Definition Vec3.inl:551
+
static JPH_INLINE UVec4 sGreater(Vec3Arg inV1, Vec3Arg inV2)
Greater than (component wise)
Definition Vec3.inl:222
+
static JPH_INLINE Vec3 sSelect(Vec3Arg inV1, Vec3Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec3.inl:269
+
JPH_INLINE Vec4 SplatY() const
Replicate the Y component to all components.
Definition Vec3.inl:540
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE UVec4 sLess(Vec3Arg inV1, Vec3Arg inV2)
Less than (component wise)
Definition Vec3.inl:192
+
static JPH_INLINE Vec3 sReplicate(float inV)
Replicate inV across all components.
Definition Vec3.inl:118
+
JPH_INLINE Vec3 Swizzle() const
Swizzle the elements in inV.
+
Definition Vec4.h:14
+
static JPH_INLINE UVec4 sGreater(Vec4Arg inV1, Vec4Arg inV2)
Greater than (component wise)
Definition Vec4.inl:208
+
static JPH_INLINE UVec4 sLess(Vec4Arg inV1, Vec4Arg inV2)
Less than (component wise)
Definition Vec4.inl:180
+
static JPH_INLINE Vec4 sSelect(Vec4Arg inV1, Vec4Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec4.inl:254
+
static JPH_INLINE Vec4 sMin(Vec4Arg inV1, Vec4Arg inV2)
Return the minimum value of each of the components.
Definition Vec4.inl:138
+
static JPH_INLINE Vec4 sZero()
Vector with all zeros.
Definition Vec4.inl:63
+
static JPH_INLINE Vec4 sMax(Vec4Arg inV1, Vec4Arg inV2)
Return the maximum of each of the components.
Definition Vec4.inl:152
+
static JPH_INLINE Vec4 sReplicate(float inV)
Replicate inV across all components.
Definition Vec4.inl:74
+
+
+ + + + diff --git a/_ray_capsule_8h.html b/_ray_capsule_8h.html new file mode 100644 index 000000000..4c8594af5 --- /dev/null +++ b/_ray_capsule_8h.html @@ -0,0 +1,177 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RayCapsule.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RayCapsule.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_INLINE float RayCapsule (Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCapsuleHalfHeight, float inCapsuleRadius)
 
+

Function Documentation

+ +

◆ RayCapsule()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_INLINE float RayCapsule (Vec3Arg inRayOrigin,
Vec3Arg inRayDirection,
float inCapsuleHalfHeight,
float inCapsuleRadius 
)
+
+

Tests a ray starting at inRayOrigin and extending infinitely in inRayDirection against a capsule centered around the origin with its axis along the Y axis and half height specified.

Returns
FLT_MAX if there is no intersection, otherwise the fraction along the ray.
+
Parameters
+ + + + + +
inRayDirectionRay direction. Does not need to be normalized.
inRayOriginOrigin of the ray. If the ray starts inside the capsule, the returned fraction will be 0.
inCapsuleHalfHeightDistance from the origin to the center of the top sphere (or that of the bottom)
inCapsuleRadiusRadius of the top/bottom sphere
+
+
+ +
+
+
+
+ + + + diff --git a/_ray_capsule_8h.js b/_ray_capsule_8h.js new file mode 100644 index 000000000..88d3223da --- /dev/null +++ b/_ray_capsule_8h.js @@ -0,0 +1,4 @@ +var _ray_capsule_8h = +[ + [ "RayCapsule", "_ray_capsule_8h.html#a98c52ef6615d1b0452962366c52afc9d", null ] +]; \ No newline at end of file diff --git a/_ray_capsule_8h_source.html b/_ray_capsule_8h_source.html new file mode 100644 index 000000000..b951aba72 --- /dev/null +++ b/_ray_capsule_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RayCapsule.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RayCapsule.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
+ + +
9
+ +
11
+
+
19JPH_INLINE float RayCapsule(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCapsuleHalfHeight, float inCapsuleRadius)
+
20{
+
21 // Test infinite cylinder
+
22 float cylinder = RayCylinder(inRayOrigin, inRayDirection, inCapsuleRadius);
+
23 if (cylinder == FLT_MAX)
+
24 return FLT_MAX;
+
25
+
26 // If this hit is in the finite cylinder we have our fraction
+
27 if (abs(inRayOrigin.GetY() + cylinder * inRayDirection.GetY()) <= inCapsuleHalfHeight)
+
28 return cylinder;
+
29
+
30 // Test upper and lower sphere
+
31 Vec3 sphere_center(0, inCapsuleHalfHeight, 0);
+
32 float upper = RaySphere(inRayOrigin, inRayDirection, sphere_center, inCapsuleRadius);
+
33 float lower = RaySphere(inRayOrigin, inRayDirection, -sphere_center, inCapsuleRadius);
+
34 return min(upper, lower);
+
35}
+
+
36
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_NAMESPACE_BEGIN JPH_INLINE float RayCapsule(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCapsuleHalfHeight, float inCapsuleRadius)
Definition RayCapsule.h:19
+ +
JPH_NAMESPACE_BEGIN JPH_INLINE float RayCylinder(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCylinderRadius)
Definition RayCylinder.h:17
+ +
JPH_NAMESPACE_BEGIN JPH_INLINE float RaySphere(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, Vec3Arg inSphereCenter, float inSphereRadius)
Definition RaySphere.h:17
+
Definition Vec3.h:17
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
+
+ + + + diff --git a/_ray_cast_8h.html b/_ray_cast_8h.html new file mode 100644 index 000000000..75e77a983 --- /dev/null +++ b/_ray_cast_8h.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/RayCast.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RayCast.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + +

+Classes

struct  RayCastT< Vec, Mat, RayCastType >
 Structure that holds a single ray cast. More...
 
struct  RayCast
 
struct  RRayCast
 
class  RayCastSettings
 Settings to be passed with a ray cast. More...
 
+
+
+ + + + diff --git a/_ray_cast_8h.js b/_ray_cast_8h.js new file mode 100644 index 000000000..575db6cfd --- /dev/null +++ b/_ray_cast_8h.js @@ -0,0 +1,7 @@ +var _ray_cast_8h = +[ + [ "RayCastT< Vec, Mat, RayCastType >", "struct_ray_cast_t.html", "struct_ray_cast_t" ], + [ "RayCast", "struct_ray_cast.html", null ], + [ "RRayCast", "struct_r_ray_cast.html", "struct_r_ray_cast" ], + [ "RayCastSettings", "class_ray_cast_settings.html", "class_ray_cast_settings" ] +]; \ No newline at end of file diff --git a/_ray_cast_8h_source.html b/_ray_cast_8h_source.html new file mode 100644 index 000000000..e6e78d785 --- /dev/null +++ b/_ray_cast_8h_source.html @@ -0,0 +1,239 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/RayCast.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RayCast.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
+
12template <class Vec, class Mat, class RayCastType>
+
+ +
14{
+ +
16
+
18 RayCastT() = default; // Allow raycast to be created uninitialized
+
19 RayCastT(typename Vec::ArgType inOrigin, Vec3Arg inDirection) : mOrigin(inOrigin), mDirection(inDirection) { }
+ +
21
+
+
23 RayCastType Transformed(typename Mat::ArgType inTransform) const
+
24 {
+
25 Vec ray_origin = inTransform * mOrigin;
+
26 Vec3 ray_direction(inTransform * (mOrigin + mDirection) - ray_origin);
+
27 return { ray_origin, ray_direction };
+
28 }
+
+
29
+
+
31 RayCastType Translated(typename Vec::ArgType inTranslation) const
+
32 {
+
33 return { inTranslation + mOrigin, mDirection };
+
34 }
+
+
35
+
+
37 inline Vec GetPointOnRay(float inFraction) const
+
38 {
+
39 return mOrigin + inFraction * mDirection;
+
40 }
+
+
41
+
42 Vec mOrigin;
+ +
44};
+
+
45
+
+
46struct RayCast : public RayCastT<Vec3, Mat44, RayCast>
+
47{
+ +
49};
+
+
50
+
+
51struct RRayCast : public RayCastT<RVec3, RMat44, RRayCast>
+
52{
+ +
54
+
+
56 explicit RRayCast(const RayCast &inRay) :
+
57 RRayCast(RVec3(inRay.mOrigin), inRay.mDirection)
+
58 {
+
59 }
+
+
60
+
+
62 explicit operator RayCast() const
+
63 {
+ +
65 }
+
+
66};
+
+
67
+ +
86
+ + +
EBackFaceMode
How collision detection functions will treat back facing triangles.
Definition BackFaceMode.h:11
+
@ IgnoreBackFaces
Ignore collision with back facing surfaces/triangles.
+
#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
+
Mat44 RMat44
Definition Real.h:31
+
Vec3 RVec3
Definition Real.h:29
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Settings to be passed with a ray cast.
Definition RayCast.h:70
+
JPH_OVERRIDE_NEW_DELETE void SetBackFaceMode(EBackFaceMode inMode)
Set the backfacing mode for all shapes.
Definition RayCast.h:75
+
EBackFaceMode mBackFaceModeTriangles
How backfacing triangles should be treated (should we report back facing hits for triangle based shap...
Definition RayCast.h:78
+
bool mTreatConvexAsSolid
If convex shapes should be treated as solid. When true, a ray starting inside a convex shape will gen...
Definition RayCast.h:84
+
EBackFaceMode mBackFaceModeConvex
How backfacing convex objects should be treated (should we report back facing hits for convex shapes?...
Definition RayCast.h:81
+
Definition Vec3.h:17
+
Definition RayCast.h:52
+
RRayCast(const RayCast &inRay)
Convert from RayCast, converts single to double precision.
Definition RayCast.h:56
+
Definition RayCast.h:47
+
Structure that holds a single ray cast.
Definition RayCast.h:14
+
RayCastT(const RayCastT< Vec, Mat, RayCastType > &)=default
+
JPH_OVERRIDE_NEW_DELETE RayCastT()=default
Constructors.
+
RayCastType Translated(typename Vec::ArgType inTranslation) const
Translate ray using inTranslation.
Definition RayCast.h:31
+
RayCastT(typename Vec::ArgType inOrigin, Vec3Arg inDirection)
Definition RayCast.h:19
+
Vec3 mDirection
Direction and length of the ray (anything beyond this length will not be reported as a hit)
Definition RayCast.h:43
+
RayCastType Transformed(typename Mat::ArgType inTransform) const
Transform this ray using inTransform.
Definition RayCast.h:23
+
Vec GetPointOnRay(float inFraction) const
Get point with fraction inFraction on ray (0 = start of ray, 1 = end of ray)
Definition RayCast.h:37
+
Vec mOrigin
Origin of the ray.
Definition RayCast.h:42
+
+
+ + + + diff --git a/_ray_cylinder_8h.html b/_ray_cylinder_8h.html new file mode 100644 index 000000000..e59d456e8 --- /dev/null +++ b/_ray_cylinder_8h.html @@ -0,0 +1,221 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RayCylinder.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RayCylinder.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_INLINE float RayCylinder (Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCylinderRadius)
 
JPH_INLINE float RayCylinder (Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCylinderHalfHeight, float inCylinderRadius)
 
+

Function Documentation

+ +

◆ RayCylinder() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE float RayCylinder (Vec3Arg inRayOrigin,
Vec3Arg inRayDirection,
float inCylinderHalfHeight,
float inCylinderRadius 
)
+
+

Test a ray against a cylinder centered around the origin with its axis along the Y axis and half height specified.

Returns
FLT_MAX if there is no intersection, otherwise the fraction along the ray.
+
Parameters
+ + + + + +
inRayDirectionRay direction. Does not need to be normalized.
inRayOriginOrigin of the ray. If the ray starts inside the cylinder, the returned fraction will be 0.
inCylinderRadiusRadius of the cylinder
inCylinderHalfHeightDistance from the origin to the top (or bottom) of the cylinder
+
+
+ +
+
+ +

◆ RayCylinder() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_INLINE float RayCylinder (Vec3Arg inRayOrigin,
Vec3Arg inRayDirection,
float inCylinderRadius 
)
+
+

Tests a ray starting at inRayOrigin and extending infinitely in inRayDirection against an infinite cylinder centered along the Y axis

Returns
FLT_MAX if there is no intersection, otherwise the fraction along the ray.
+
Parameters
+ + + + +
inRayDirectionDirection of the ray. Does not need to be normalized.
inRayOriginOrigin of the ray. If the ray starts inside the cylinder, the returned fraction will be 0.
inCylinderRadiusRadius of the infinite cylinder
+
+
+ +
+
+
+
+ + + + diff --git a/_ray_cylinder_8h.js b/_ray_cylinder_8h.js new file mode 100644 index 000000000..68dec154f --- /dev/null +++ b/_ray_cylinder_8h.js @@ -0,0 +1,5 @@ +var _ray_cylinder_8h = +[ + [ "RayCylinder", "_ray_cylinder_8h.html#a273dc91d43f5a44d0a1c6af044a70c0e", null ], + [ "RayCylinder", "_ray_cylinder_8h.html#a73e90eb1e3af7294c5b0248ddf7d1317", null ] +]; \ No newline at end of file diff --git a/_ray_cylinder_8h_source.html b/_ray_cylinder_8h_source.html new file mode 100644 index 000000000..9e8919ffe --- /dev/null +++ b/_ray_cylinder_8h_source.html @@ -0,0 +1,227 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RayCylinder.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RayCylinder.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
+
+
17JPH_INLINE float RayCylinder(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCylinderRadius)
+
18{
+
19 // Remove Y component of ray to see of ray intersects with infinite cylinder
+
20 UVec4 mask_y = UVec4(0, 0xffffffff, 0, 0);
+
21 Vec3 origin_xz = Vec3::sSelect(inRayOrigin, Vec3::sZero(), mask_y);
+
22 float origin_xz_len_sq = origin_xz.LengthSq();
+
23 float r_sq = Square(inCylinderRadius);
+
24 if (origin_xz_len_sq > r_sq)
+
25 {
+
26 // Ray starts outside of the infinite cylinder
+
27 // Solve: |RayOrigin_xz + fraction * RayDirection_xz|^2 = r^2 to find fraction
+
28 Vec3 direction_xz = Vec3::sSelect(inRayDirection, Vec3::sZero(), mask_y);
+
29 float a = direction_xz.LengthSq();
+
30 float b = 2.0f * origin_xz.Dot(direction_xz);
+
31 float c = origin_xz_len_sq - r_sq;
+
32 float fraction1, fraction2;
+
33 if (FindRoot(a, b, c, fraction1, fraction2) == 0)
+
34 return FLT_MAX; // No intersection with infinite cylinder
+
35
+
36 // Get fraction corresponding to the ray entering the circle
+
37 float fraction = min(fraction1, fraction2);
+
38 if (fraction >= 0.0f)
+
39 return fraction;
+
40 }
+
41 else
+
42 {
+
43 // Ray starts inside the infinite cylinder
+
44 return 0.0f;
+
45 }
+
46
+
47 // No collision
+
48 return FLT_MAX;
+
49}
+
+
50
+
+
57JPH_INLINE float RayCylinder(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCylinderHalfHeight, float inCylinderRadius)
+
58{
+
59 // Test infinite cylinder
+
60 float fraction = RayCylinder(inRayOrigin, inRayDirection, inCylinderRadius);
+
61 if (fraction == FLT_MAX)
+
62 return FLT_MAX;
+
63
+
64 // If this hit is in the finite cylinder we have our fraction
+
65 if (abs(inRayOrigin.GetY() + fraction * inRayDirection.GetY()) <= inCylinderHalfHeight)
+
66 return fraction;
+
67
+
68 // Check if ray could hit the top or bottom plane of the cylinder
+
69 float direction_y = inRayDirection.GetY();
+
70 if (direction_y != 0.0f)
+
71 {
+
72 // Solving line equation: x = ray_origin + fraction * ray_direction
+
73 // and plane equation: plane_normal . x + plane_constant = 0
+
74 // fraction = (-plane_constant - plane_normal . ray_origin) / (plane_normal . ray_direction)
+
75 // when the ray_direction.y < 0:
+
76 // plane_constant = -cylinder_half_height, plane_normal = (0, 1, 0)
+
77 // else
+
78 // plane_constant = -cylinder_half_height, plane_normal = (0, -1, 0)
+
79 float origin_y = inRayOrigin.GetY();
+
80 float plane_fraction;
+
81 if (direction_y < 0.0f)
+
82 plane_fraction = (inCylinderHalfHeight - origin_y) / direction_y;
+
83 else
+
84 plane_fraction = -(inCylinderHalfHeight + origin_y) / direction_y;
+
85
+
86 // Check if the hit is in front of the ray
+
87 if (plane_fraction >= 0.0f)
+
88 {
+
89 // Test if this hit is inside the cylinder
+
90 Vec3 point = inRayOrigin + plane_fraction * inRayDirection;
+
91 float dist_sq = Square(point.GetX()) + Square(point.GetZ());
+
92 if (dist_sq <= Square(inCylinderRadius))
+
93 return plane_fraction;
+
94 }
+
95 }
+
96
+
97 // No collision
+
98 return FLT_MAX;
+
99}
+
+
100
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
JPH_NAMESPACE_BEGIN int FindRoot(const T inA, const T inB, const T inC, T &outX1, T &outX2)
Definition FindRoot.h:13
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
JPH_NAMESPACE_BEGIN JPH_INLINE float RayCylinder(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCylinderRadius)
Definition RayCylinder.h:17
+
Definition UVec4.h:12
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
static JPH_INLINE Vec3 sSelect(Vec3Arg inV1, Vec3Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec3.inl:269
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
+
+ + + + diff --git a/_ray_sphere_8h.html b/_ray_sphere_8h.html new file mode 100644 index 000000000..e3c0ca764 --- /dev/null +++ b/_ray_sphere_8h.html @@ -0,0 +1,242 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RaySphere.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RaySphere.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_INLINE float RaySphere (Vec3Arg inRayOrigin, Vec3Arg inRayDirection, Vec3Arg inSphereCenter, float inSphereRadius)
 
JPH_INLINE int RaySphere (Vec3Arg inRayOrigin, Vec3Arg inRayDirection, Vec3Arg inSphereCenter, float inSphereRadius, float &outMinFraction, float &outMaxFraction)
 
+

Function Documentation

+ +

◆ RaySphere() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_INLINE float RaySphere (Vec3Arg inRayOrigin,
Vec3Arg inRayDirection,
Vec3Arg inSphereCenter,
float inSphereRadius 
)
+
+

Tests a ray starting at inRayOrigin and extending infinitely in inRayDirection against a sphere,

Returns
FLT_MAX if there is no intersection, otherwise the fraction along the ray.
+
Parameters
+ + + + + +
inRayOriginRay origin. If the ray starts inside the sphere, the returned fraction will be 0.
inRayDirectionRay direction. Does not need to be normalized.
inSphereCenterPosition of the center of the sphere
inSphereRadiusRadius of the sphere
+
+
+ +
+
+ +

◆ RaySphere() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE int RaySphere (Vec3Arg inRayOrigin,
Vec3Arg inRayDirection,
Vec3Arg inSphereCenter,
float inSphereRadius,
float & outMinFraction,
float & outMaxFraction 
)
+
+

Tests a ray starting at inRayOrigin and extending infinitely in inRayDirection against a sphere. Outputs entry and exit points (outMinFraction and outMaxFraction) along the ray (which could be negative if the hit point is before the start of the ray).

Parameters
+ + + + + + + +
inRayOriginRay origin. If the ray starts inside the sphere, the returned fraction will be 0.
inRayDirectionRay direction. Does not need to be normalized.
inSphereCenterPosition of the center of the sphere.
inSphereRadiusRadius of the sphere.
outMinFractionReturned lowest intersection fraction
outMaxFractionReturned highest intersection fraction
+
+
+
Returns
The amount of intersections with the sphere. If 1 intersection is returned outMinFraction will be equal to outMaxFraction
+ +
+
+
+
+ + + + diff --git a/_ray_sphere_8h.js b/_ray_sphere_8h.js new file mode 100644 index 000000000..f055acc4d --- /dev/null +++ b/_ray_sphere_8h.js @@ -0,0 +1,5 @@ +var _ray_sphere_8h = +[ + [ "RaySphere", "_ray_sphere_8h.html#ae0d53ac665a580da61a2fe0a08f5197c", null ], + [ "RaySphere", "_ray_sphere_8h.html#a7d756cc06fb7721b3e657d9f31916b74", null ] +]; \ No newline at end of file diff --git a/_ray_sphere_8h_source.html b/_ray_sphere_8h_source.html new file mode 100644 index 000000000..ea5efa725 --- /dev/null +++ b/_ray_sphere_8h_source.html @@ -0,0 +1,211 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RaySphere.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RaySphere.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
+
+
17JPH_INLINE float RaySphere(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, Vec3Arg inSphereCenter, float inSphereRadius)
+
18{
+
19 // Solve: |RayOrigin + fraction * RayDirection - SphereCenter|^2 = SphereRadius^2 for fraction
+
20 Vec3 center_origin = inRayOrigin - inSphereCenter;
+
21 float a = inRayDirection.LengthSq();
+
22 float b = 2.0f * inRayDirection.Dot(center_origin);
+
23 float c = center_origin.LengthSq() - inSphereRadius * inSphereRadius;
+
24 float fraction1, fraction2;
+
25 if (FindRoot(a, b, c, fraction1, fraction2) == 0)
+
26 return c <= 0.0f? 0.0f : FLT_MAX; // Return if origin is inside the sphere
+
27
+
28 // Sort so that the smallest is first
+
29 if (fraction1 > fraction2)
+
30 swap(fraction1, fraction2);
+
31
+
32 // Test solution with lowest fraction, this will be the ray entering the sphere
+
33 if (fraction1 >= 0.0f)
+
34 return fraction1; // Sphere is before the ray start
+
35
+
36 // Test solution with highest fraction, this will be the ray leaving the sphere
+
37 if (fraction2 >= 0.0f)
+
38 return 0.0f; // We start inside the sphere
+
39
+
40 // No solution
+
41 return FLT_MAX;
+
42}
+
+
43
+
+
54JPH_INLINE int RaySphere(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, Vec3Arg inSphereCenter, float inSphereRadius, float &outMinFraction, float &outMaxFraction)
+
55{
+
56 // Solve: |RayOrigin + fraction * RayDirection - SphereCenter|^2 = SphereRadius^2 for fraction
+
57 Vec3 center_origin = inRayOrigin - inSphereCenter;
+
58 float a = inRayDirection.LengthSq();
+
59 float b = 2.0f * inRayDirection.Dot(center_origin);
+
60 float c = center_origin.LengthSq() - inSphereRadius * inSphereRadius;
+
61 float fraction1, fraction2;
+
62 switch (FindRoot(a, b, c, fraction1, fraction2))
+
63 {
+
64 case 0:
+
65 if (c <= 0.0f)
+
66 {
+
67 // Origin inside sphere
+
68 outMinFraction = outMaxFraction = 0.0f;
+
69 return 1;
+
70 }
+
71 else
+
72 {
+
73 // Origin outside of the sphere
+
74 return 0;
+
75 }
+
76 break;
+
77
+
78 case 1:
+
79 // Ray is touching the sphere
+
80 outMinFraction = outMaxFraction = fraction1;
+
81 return 1;
+
82
+
83 default:
+
84 // Ray enters and exits the sphere
+
85
+
86 // Sort so that the smallest is first
+
87 if (fraction1 > fraction2)
+
88 swap(fraction1, fraction2);
+
89
+
90 outMinFraction = fraction1;
+
91 outMaxFraction = fraction2;
+
92 return 2;
+
93 }
+
94}
+
+
95
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
JPH_NAMESPACE_BEGIN int FindRoot(const T inA, const T inB, const T inC, T &outX1, T &outX2)
Definition FindRoot.h:13
+
JPH_NAMESPACE_BEGIN JPH_INLINE float RaySphere(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, Vec3Arg inSphereCenter, float inSphereRadius)
Definition RaySphere.h:17
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
+
+ + + + diff --git a/_ray_triangle8_8h.html b/_ray_triangle8_8h.html new file mode 100644 index 000000000..3eaf43717 --- /dev/null +++ b/_ray_triangle8_8h.html @@ -0,0 +1,211 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RayTriangle8.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RayTriangle8.h File Reference
+
+
+
#include <Jolt/Math/Vec8.h>
+
+

Go to the source code of this file.

+ + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_INLINE Vec8 RayTriangle8 (Vec3Arg inOrigin, Vec3Arg inDirection, Vec8Arg inV0X, Vec8Arg inV0Y, Vec8Arg inV0Z, Vec8Arg inV1X, Vec8Arg inV1Y, Vec8Arg inV1Z, Vec8Arg inV2X, Vec8Arg inV2Y, Vec8Arg inV2Z)
 Intersect ray with 8 triangles in SOA format, returns 8 vector of closest points or FLT_MAX if no hit.
 
+

Function Documentation

+ +

◆ RayTriangle8()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_INLINE Vec8 RayTriangle8 (Vec3Arg inOrigin,
Vec3Arg inDirection,
Vec8Arg inV0X,
Vec8Arg inV0Y,
Vec8Arg inV0Z,
Vec8Arg inV1X,
Vec8Arg inV1Y,
Vec8Arg inV1Z,
Vec8Arg inV2X,
Vec8Arg inV2Y,
Vec8Arg inV2Z 
)
+
+ +

Intersect ray with 8 triangles in SOA format, returns 8 vector of closest points or FLT_MAX if no hit.

+ +
+
+
+
+ + + + diff --git a/_ray_triangle8_8h.js b/_ray_triangle8_8h.js new file mode 100644 index 000000000..5fffe5dc3 --- /dev/null +++ b/_ray_triangle8_8h.js @@ -0,0 +1,4 @@ +var _ray_triangle8_8h = +[ + [ "RayTriangle8", "_ray_triangle8_8h.html#af137e1ad4776843baf3c4b22a0acc7e4", null ] +]; \ No newline at end of file diff --git a/_ray_triangle8_8h_source.html b/_ray_triangle8_8h_source.html new file mode 100644 index 000000000..8f96a79c0 --- /dev/null +++ b/_ray_triangle8_8h_source.html @@ -0,0 +1,229 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RayTriangle8.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RayTriangle8.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
+
7#include <Jolt/Math/Vec8.h>
+
8
+ +
10
+
+
12JPH_INLINE Vec8 RayTriangle8(Vec3Arg inOrigin, Vec3Arg inDirection, Vec8Arg inV0X, Vec8Arg inV0Y, Vec8Arg inV0Z, Vec8Arg inV1X, Vec8Arg inV1Y, Vec8Arg inV1Z, Vec8Arg inV2X, Vec8Arg inV2Y, Vec8Arg inV2Z)
+
13{
+
14 // Epsilon
+
15 Vec8 epsilon = Vec8::sReplicate(1.0e-12f);
+
16
+
17 // Zero & one
+
18 Vec8 zero = Vec8::sZero();
+
19 Vec8 one = Vec8::sReplicate(1.0f);
+
20
+
21 // Find vectors for two edges sharing inV0
+
22 Vec8 e1x = inV1X - inV0X;
+
23 Vec8 e1y = inV1Y - inV0Y;
+
24 Vec8 e1z = inV1Z - inV0Z;
+
25 Vec8 e2x = inV2X - inV0X;
+
26 Vec8 e2y = inV2Y - inV0Y;
+
27 Vec8 e2z = inV2Z - inV0Z;
+
28
+
29 // Get direction vector components
+
30 Vec8 dx = Vec8::sSplatX(Vec4(inDirection));
+
31 Vec8 dy = Vec8::sSplatY(Vec4(inDirection));
+
32 Vec8 dz = Vec8::sSplatZ(Vec4(inDirection));
+
33
+
34 // Begin calculating determinant - also used to calculate u parameter
+
35 Vec8 px = dy * e2z - dz * e2y;
+
36 Vec8 py = dz * e2x - dx * e2z;
+
37 Vec8 pz = dx * e2y - dy * e2x;
+
38
+
39 // if determinant is near zero, ray lies in plane of triangle
+
40 Vec8 det = e1x * px + e1y * py + e1z * pz;
+
41
+
42 // Check which determinants are near zero
+
43 UVec8 det_near_zero = Vec8::sLess(det.Abs(), epsilon);
+
44
+
45 // Set components of the determinant to 1 that are near zero to avoid dividing by zero
+
46 det = Vec8::sSelect(det, Vec8::sReplicate(1.0f), det_near_zero);
+
47
+
48 // Calculate distance from inV0 to ray origin
+
49 Vec8 sx = Vec8::sSplatX(Vec4(inOrigin)) - inV0X;
+
50 Vec8 sy = Vec8::sSplatY(Vec4(inOrigin)) - inV0Y;
+
51 Vec8 sz = Vec8::sSplatZ(Vec4(inOrigin)) - inV0Z;
+
52
+
53 // Calculate u parameter and flip sign if determinant was negative
+
54 Vec8 u = (sx * px + sy * py + sz * pz) / det;
+
55
+
56 // Prepare to test v parameter
+
57 Vec8 qx = sy * e1z - sz * e1y;
+
58 Vec8 qy = sz * e1x - sx * e1z;
+
59 Vec8 qz = sx * e1y - sy * e1x;
+
60
+
61 // Calculate v parameter and flip sign if determinant was negative
+
62 Vec8 v = (dx * qx + dy * qy + dz * qz) / det;
+
63
+
64 // Get intersection point and flip sign if determinant was negative
+
65 Vec8 t = (e2x * qx + e2y * qy + e2z * qz) / det;
+
66
+
67 // Check if there is an intersection
+
68 UVec8 no_intersection =
+ +
70 (
+ +
72 (
+ +
74 (
+
75 det_near_zero,
+
76 Vec8::sLess(u, zero)
+
77 ),
+ +
79 (
+
80 Vec8::sLess(v, zero),
+
81 Vec8::sGreater(u + v, one)
+
82 )
+
83 ),
+
84 Vec8::sLess(t, zero)
+
85 );
+
86
+
87 // Select intersection point or FLT_MAX based on if there is an intersection or not
+
88 return Vec8::sSelect(t, Vec8::sReplicate(FLT_MAX), no_intersection);
+
89}
+
+
90
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_NAMESPACE_BEGIN JPH_INLINE Vec8 RayTriangle8(Vec3Arg inOrigin, Vec3Arg inDirection, Vec8Arg inV0X, Vec8Arg inV0Y, Vec8Arg inV0Z, Vec8Arg inV1X, Vec8Arg inV1Y, Vec8Arg inV1Z, Vec8Arg inV2X, Vec8Arg inV2Y, Vec8Arg inV2Z)
Intersect ray with 8 triangles in SOA format, returns 8 vector of closest points or FLT_MAX if no hit...
Definition RayTriangle8.h:12
+ +
Definition UVec8.h:12
+
static JPH_INLINE UVec8 sOr(UVec8Arg inV1, UVec8Arg inV2)
Logical or.
Definition UVec8.inl:51
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
Definition Vec8.h:12
+
static JPH_INLINE UVec8 sLess(Vec8Arg inV1, Vec8Arg inV2)
Less than.
Definition Vec8.inl:63
+
static JPH_INLINE Vec8 sSplatX(Vec4Arg inV)
Replicate the X component of inV to all components.
Definition Vec8.inl:24
+
JPH_INLINE Vec8 Abs() const
Get absolute value of all components.
Definition Vec8.inl:124
+
static JPH_INLINE Vec8 sSplatY(Vec4Arg inV)
Replicate the Y component of inV to all components.
Definition Vec8.inl:29
+
static JPH_INLINE UVec8 sGreater(Vec8Arg inV1, Vec8Arg inV2)
Greater than.
Definition Vec8.inl:68
+
static JPH_INLINE Vec8 sZero()
Vector with all zeros.
Definition Vec8.inl:14
+
static JPH_INLINE Vec8 sSelect(Vec8Arg inV1, Vec8Arg inV2, UVec8Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec8.inl:48
+
static JPH_INLINE Vec8 sSplatZ(Vec4Arg inV)
Replicate the Z component of inV to all components.
Definition Vec8.inl:34
+
static JPH_INLINE Vec8 sReplicate(float inV)
Replicate across all components.
Definition Vec8.inl:19
+
+
+ + + + diff --git a/_ray_triangle_8h.html b/_ray_triangle_8h.html new file mode 100644 index 000000000..e9ba5bdfc --- /dev/null +++ b/_ray_triangle_8h.html @@ -0,0 +1,259 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RayTriangle.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RayTriangle.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_INLINE float RayTriangle (Vec3Arg inOrigin, Vec3Arg inDirection, Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2)
 
JPH_INLINE Vec4 RayTriangle4 (Vec3Arg inOrigin, Vec3Arg inDirection, Vec4Arg inV0X, Vec4Arg inV0Y, Vec4Arg inV0Z, Vec4Arg inV1X, Vec4Arg inV1Y, Vec4Arg inV1Z, Vec4Arg inV2X, Vec4Arg inV2Y, Vec4Arg inV2Z)
 Intersect ray with 4 triangles in SOA format, returns 4 vector of closest points or FLT_MAX if no hit (uses bit tricks to do less divisions)
 
+

Function Documentation

+ +

◆ RayTriangle()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_INLINE float RayTriangle (Vec3Arg inOrigin,
Vec3Arg inDirection,
Vec3Arg inV0,
Vec3Arg inV1,
Vec3Arg inV2 
)
+
+

Intersect ray with triangle, returns closest point or FLT_MAX if no hit (branch less version) Adapted from: http://en.wikipedia.org/wiki/M%C3%B6ller%E2%80%93Trumbore_intersection_algorithm

+ +
+
+ +

◆ RayTriangle4()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE Vec4 RayTriangle4 (Vec3Arg inOrigin,
Vec3Arg inDirection,
Vec4Arg inV0X,
Vec4Arg inV0Y,
Vec4Arg inV0Z,
Vec4Arg inV1X,
Vec4Arg inV1Y,
Vec4Arg inV1Z,
Vec4Arg inV2X,
Vec4Arg inV2Y,
Vec4Arg inV2Z 
)
+
+ +

Intersect ray with 4 triangles in SOA format, returns 4 vector of closest points or FLT_MAX if no hit (uses bit tricks to do less divisions)

+ +
+
+
+
+ + + + diff --git a/_ray_triangle_8h.js b/_ray_triangle_8h.js new file mode 100644 index 000000000..382f4327f --- /dev/null +++ b/_ray_triangle_8h.js @@ -0,0 +1,5 @@ +var _ray_triangle_8h = +[ + [ "RayTriangle", "_ray_triangle_8h.html#a11da2f2945abb380af4d7ffe97b66ba6", null ], + [ "RayTriangle4", "_ray_triangle_8h.html#a78f049474454fce771b6c23635462a8c", null ] +]; \ No newline at end of file diff --git a/_ray_triangle_8h_source.html b/_ray_triangle_8h_source.html new file mode 100644 index 000000000..64dac71c1 --- /dev/null +++ b/_ray_triangle_8h_source.html @@ -0,0 +1,306 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/RayTriangle.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RayTriangle.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
+
+
11JPH_INLINE float RayTriangle(Vec3Arg inOrigin, Vec3Arg inDirection, Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2)
+
12{
+
13 // Epsilon
+
14 Vec3 epsilon = Vec3::sReplicate(1.0e-12f);
+
15
+
16 // Zero & one
+
17 Vec3 zero = Vec3::sZero();
+
18 Vec3 one = Vec3::sReplicate(1.0f);
+
19
+
20 // Find vectors for two edges sharing inV0
+
21 Vec3 e1 = inV1 - inV0;
+
22 Vec3 e2 = inV2 - inV0;
+
23
+
24 // Begin calculating determinant - also used to calculate u parameter
+
25 Vec3 p = inDirection.Cross(e2);
+
26
+
27 // if determinant is near zero, ray lies in plane of triangle
+
28 Vec3 det = Vec3::sReplicate(e1.Dot(p));
+
29
+
30 // Check if determinant is near zero
+
31 UVec4 det_near_zero = Vec3::sLess(det.Abs(), epsilon);
+
32
+
33 // When the determinant is near zero, set it to one to avoid dividing by zero
+
34 det = Vec3::sSelect(det, Vec3::sReplicate(1.0f), det_near_zero);
+
35
+
36 // Calculate distance from inV0 to ray origin
+
37 Vec3 s = inOrigin - inV0;
+
38
+
39 // Calculate u parameter
+
40 Vec3 u = Vec3::sReplicate(s.Dot(p)) / det;
+
41
+
42 // Prepare to test v parameter
+
43 Vec3 q = s.Cross(e1);
+
44
+
45 // Calculate v parameter
+
46 Vec3 v = Vec3::sReplicate(inDirection.Dot(q)) / det;
+
47
+
48 // Get intersection point
+
49 Vec3 t = Vec3::sReplicate(e2.Dot(q)) / det;
+
50
+
51 // Check if there is an intersection
+
52 UVec4 no_intersection =
+ +
54 (
+ +
56 (
+ +
58 (
+
59 det_near_zero,
+
60 Vec3::sLess(u, zero)
+
61 ),
+ +
63 (
+
64 Vec3::sLess(v, zero),
+
65 Vec3::sGreater(u + v, one)
+
66 )
+
67 ),
+
68 Vec3::sLess(t, zero)
+
69 );
+
70
+
71 // Select intersection point or FLT_MAX based on if there is an intersection or not
+
72 return Vec3::sSelect(t, Vec3::sReplicate(FLT_MAX), no_intersection).GetX();
+
73}
+
+
74
+
+
76JPH_INLINE Vec4 RayTriangle4(Vec3Arg inOrigin, Vec3Arg inDirection, Vec4Arg inV0X, Vec4Arg inV0Y, Vec4Arg inV0Z, Vec4Arg inV1X, Vec4Arg inV1Y, Vec4Arg inV1Z, Vec4Arg inV2X, Vec4Arg inV2Y, Vec4Arg inV2Z)
+
77{
+
78 // Epsilon
+
79 Vec4 epsilon = Vec4::sReplicate(1.0e-12f);
+
80
+
81 // Zero
+
82 Vec4 zero = Vec4::sZero();
+
83
+
84 // Find vectors for two edges sharing inV0
+
85 Vec4 e1x = inV1X - inV0X;
+
86 Vec4 e1y = inV1Y - inV0Y;
+
87 Vec4 e1z = inV1Z - inV0Z;
+
88 Vec4 e2x = inV2X - inV0X;
+
89 Vec4 e2y = inV2Y - inV0Y;
+
90 Vec4 e2z = inV2Z - inV0Z;
+
91
+
92 // Get direction vector components
+
93 Vec4 dx = inDirection.SplatX();
+
94 Vec4 dy = inDirection.SplatY();
+
95 Vec4 dz = inDirection.SplatZ();
+
96
+
97 // Begin calculating determinant - also used to calculate u parameter
+
98 Vec4 px = dy * e2z - dz * e2y;
+
99 Vec4 py = dz * e2x - dx * e2z;
+
100 Vec4 pz = dx * e2y - dy * e2x;
+
101
+
102 // if determinant is near zero, ray lies in plane of triangle
+
103 Vec4 det = e1x * px + e1y * py + e1z * pz;
+
104
+
105 // Get sign bit for determinant and make positive
+
106 Vec4 det_sign = Vec4::sAnd(det, UVec4::sReplicate(0x80000000).ReinterpretAsFloat());
+
107 det = Vec4::sXor(det, det_sign);
+
108
+
109 // Check which determinants are near zero
+
110 UVec4 det_near_zero = Vec4::sLess(det, epsilon);
+
111
+
112 // Set components of the determinant to 1 that are near zero to avoid dividing by zero
+
113 det = Vec4::sSelect(det, Vec4::sReplicate(1.0f), det_near_zero);
+
114
+
115 // Calculate distance from inV0 to ray origin
+
116 Vec4 sx = inOrigin.SplatX() - inV0X;
+
117 Vec4 sy = inOrigin.SplatY() - inV0Y;
+
118 Vec4 sz = inOrigin.SplatZ() - inV0Z;
+
119
+
120 // Calculate u parameter and flip sign if determinant was negative
+
121 Vec4 u = Vec4::sXor(sx * px + sy * py + sz * pz, det_sign);
+
122
+
123 // Prepare to test v parameter
+
124 Vec4 qx = sy * e1z - sz * e1y;
+
125 Vec4 qy = sz * e1x - sx * e1z;
+
126 Vec4 qz = sx * e1y - sy * e1x;
+
127
+
128 // Calculate v parameter and flip sign if determinant was negative
+
129 Vec4 v = Vec4::sXor(dx * qx + dy * qy + dz * qz, det_sign);
+
130
+
131 // Get intersection point and flip sign if determinant was negative
+
132 Vec4 t = Vec4::sXor(e2x * qx + e2y * qy + e2z * qz, det_sign);
+
133
+
134 // Check if there is an intersection
+
135 UVec4 no_intersection =
+ +
137 (
+ +
139 (
+ +
141 (
+
142 det_near_zero,
+
143 Vec4::sLess(u, zero)
+
144 ),
+ +
146 (
+
147 Vec4::sLess(v, zero),
+
148 Vec4::sGreater(u + v, det)
+
149 )
+
150 ),
+
151 Vec4::sLess(t, zero)
+
152 );
+
153
+
154 // Select intersection point or FLT_MAX based on if there is an intersection or not
+
155 return Vec4::sSelect(t / det, Vec4::sReplicate(FLT_MAX), no_intersection);
+
156}
+
+
157
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_NAMESPACE_BEGIN JPH_INLINE float RayTriangle(Vec3Arg inOrigin, Vec3Arg inDirection, Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2)
Definition RayTriangle.h:11
+
JPH_INLINE Vec4 RayTriangle4(Vec3Arg inOrigin, Vec3Arg inDirection, Vec4Arg inV0X, Vec4Arg inV0Y, Vec4Arg inV0Z, Vec4Arg inV1X, Vec4Arg inV1Y, Vec4Arg inV1Z, Vec4Arg inV2X, Vec4Arg inV2Y, Vec4Arg inV2Z)
Intersect ray with 4 triangles in SOA format, returns 4 vector of closest points or FLT_MAX if no hit...
Definition RayTriangle.h:76
+
Definition UVec4.h:12
+
static JPH_INLINE UVec4 sReplicate(uint32 inV)
Replicate int inV across all components.
Definition UVec4.inl:56
+
static JPH_INLINE UVec4 sOr(UVec4Arg inV1, UVec4Arg inV2)
Logical or (component wise)
Definition UVec4.inl:171
+
Definition Vec3.h:17
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE Vec4 SplatX() const
Replicate the X component to all components.
Definition Vec3.inl:529
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
JPH_INLINE Vec3 Abs() const
Return the absolute value of each of the components.
Definition Vec3.inl:572
+
JPH_INLINE Vec4 SplatZ() const
Replicate the Z component to all components.
Definition Vec3.inl:551
+
static JPH_INLINE UVec4 sGreater(Vec3Arg inV1, Vec3Arg inV2)
Greater than (component wise)
Definition Vec3.inl:222
+
static JPH_INLINE Vec3 sSelect(Vec3Arg inV1, Vec3Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec3.inl:269
+
JPH_INLINE Vec4 SplatY() const
Replicate the Y component to all components.
Definition Vec3.inl:540
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE UVec4 sLess(Vec3Arg inV1, Vec3Arg inV2)
Less than (component wise)
Definition Vec3.inl:192
+
static JPH_INLINE Vec3 sReplicate(float inV)
Replicate inV across all components.
Definition Vec3.inl:118
+
Definition Vec4.h:14
+
static JPH_INLINE UVec4 sGreater(Vec4Arg inV1, Vec4Arg inV2)
Greater than (component wise)
Definition Vec4.inl:208
+
static JPH_INLINE Vec4 sAnd(Vec4Arg inV1, Vec4Arg inV2)
Logical and (component wise)
Definition Vec4.inl:290
+
static JPH_INLINE Vec4 sXor(Vec4Arg inV1, Vec4Arg inV2)
Logical xor (component wise)
Definition Vec4.inl:279
+
static JPH_INLINE UVec4 sLess(Vec4Arg inV1, Vec4Arg inV2)
Less than (component wise)
Definition Vec4.inl:180
+
static JPH_INLINE Vec4 sSelect(Vec4Arg inV1, Vec4Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec4.inl:254
+
static JPH_INLINE Vec4 sZero()
Vector with all zeros.
Definition Vec4.inl:63
+
static JPH_INLINE Vec4 sReplicate(float inV)
Replicate inV across all components.
Definition Vec4.inl:74
+
+
+ + + + diff --git a/_real_8h.html b/_real_8h.html new file mode 100644 index 000000000..0c7a43b73 --- /dev/null +++ b/_real_8h.html @@ -0,0 +1,254 @@ + + + + + + + +Jolt Physics: Jolt/Math/Real.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Real.h File Reference
+
+
+
#include <Jolt/Math/DVec3.h>
+#include <Jolt/Math/DMat44.h>
+
+

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  literals
 
+ + + +

+Macros

#define JPH_RVECTOR_ALIGNMENT   JPH_VECTOR_ALIGNMENT
 
+ + + + + + + + + + + + + +

+Typedefs

using Real = float
 
using Real3 = Float3
 
using RVec3 = Vec3
 
using RVec3Arg = Vec3Arg
 
using RMat44 = Mat44
 
using RMat44Arg = Mat44Arg
 
+ + + +

+Functions

constexpr Real literals::operator""_r (long double inValue)
 
+

Macro Definition Documentation

+ +

◆ JPH_RVECTOR_ALIGNMENT

+ +
+
+ + + + +
#define JPH_RVECTOR_ALIGNMENT   JPH_VECTOR_ALIGNMENT
+
+ +
+
+

Typedef Documentation

+ +

◆ Real

+ +
+
+ + + + +
using Real = float
+
+ +
+
+ +

◆ Real3

+ +
+
+ + + + +
using Real3 = Float3
+
+ +
+
+ +

◆ RMat44

+ +
+
+ + + + +
using RMat44 = Mat44
+
+ +
+
+ +

◆ RMat44Arg

+ +
+
+ + + + +
using RMat44Arg = Mat44Arg
+
+ +
+
+ +

◆ RVec3

+ +
+
+ + + + +
using RVec3 = Vec3
+
+ +
+
+ +

◆ RVec3Arg

+ +
+
+ + + + +
using RVec3Arg = Vec3Arg
+
+ +
+
+
+
+ + + + diff --git a/_real_8h.js b/_real_8h.js new file mode 100644 index 000000000..06bbe597b --- /dev/null +++ b/_real_8h.js @@ -0,0 +1,11 @@ +var _real_8h = +[ + [ "JPH_RVECTOR_ALIGNMENT", "_real_8h.html#ac6a49178acb5c5ecdbab2424aca0e474", null ], + [ "Real", "_real_8h.html#a6baabe9790f3842ab73110ab342c5c5e", null ], + [ "Real3", "_real_8h.html#a9829b84fb712d3deea004ccabed714a6", null ], + [ "RMat44", "_real_8h.html#ab2b99ab2c9bab2170e4744e9fb519625", null ], + [ "RMat44Arg", "_real_8h.html#a61b9fb9774ecfc9a33318eead7118ee9", null ], + [ "RVec3", "_real_8h.html#ae088dda635fb0ba1c96ea179d384ca40", null ], + [ "RVec3Arg", "_real_8h.html#a43bea2d9c57780b4b66bab1312fd77f3", null ], + [ "operator\"\"_r", "_real_8h.html#af3efaa9e7258f2fe6e02e8d05931473b", null ] +]; \ No newline at end of file diff --git a/_real_8h_source.html b/_real_8h_source.html new file mode 100644 index 000000000..6fc98ff26 --- /dev/null +++ b/_real_8h_source.html @@ -0,0 +1,181 @@ + + + + + + + +Jolt Physics: Jolt/Math/Real.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Real.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2022 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+
7#include <Jolt/Math/DVec3.h>
+
8#include <Jolt/Math/DMat44.h>
+
9
+ +
11
+
12#ifdef JPH_DOUBLE_PRECISION
+
13
+
14// Define real to double
+
15using Real = double;
+
16using Real3 = Double3;
+
17using RVec3 = DVec3;
+
18using RVec3Arg = DVec3Arg;
+
19using RMat44 = DMat44;
+
20using RMat44Arg = DMat44Arg;
+
21
+
22#define JPH_RVECTOR_ALIGNMENT JPH_DVECTOR_ALIGNMENT
+
23
+
24#else
+
25
+
26// Define real to float
+
27using Real = float;
+
28using Real3 = Float3;
+
29using RVec3 = Vec3;
+ +
31using RMat44 = Mat44;
+ +
33
+
34#define JPH_RVECTOR_ALIGNMENT JPH_VECTOR_ALIGNMENT
+
35
+
36#endif // JPH_DOUBLE_PRECISION
+
37
+
38// Put the 'real' operator in a namespace so that users can opt in to use it:
+
39// using namespace JPH::literals;
+
+
40namespace literals {
+
41 constexpr Real operator ""_r (long double inValue) { return Real(inValue); }
+
42};
+
+
43
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
const Vec3 Vec3Arg
Definition MathTypes.h:20
+
const DVec3 & DVec3Arg
Definition MathTypes.h:24
+
const DMat44 & DMat44Arg
Definition MathTypes.h:32
+
const Mat44 & Mat44Arg
Definition MathTypes.h:31
+
float Real
Definition Real.h:27
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
Definition DVec3.h:14
+
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition Double3.h:13
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.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 Vec3.h:17
+
Definition Real.h:40
+
+
+ + + + diff --git a/_reference_8h.html b/_reference_8h.html new file mode 100644 index 000000000..f3d62c7c3 --- /dev/null +++ b/_reference_8h.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Jolt/Core/Reference.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Reference.h File Reference
+
+
+
#include <Jolt/Core/Atomics.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + + +

+Classes

class  RefTarget< T >
 
class  RefTargetVirtual
 Pure virtual version of RefTarget. More...
 
class  Ref< T >
 
class  RefConst< T >
 
+ + + +

+Namespaces

namespace  std
 
+
+
+ + + + diff --git a/_reference_8h.js b/_reference_8h.js new file mode 100644 index 000000000..d86c2bc62 --- /dev/null +++ b/_reference_8h.js @@ -0,0 +1,7 @@ +var _reference_8h = +[ + [ "RefTarget< T >", "class_ref_target.html", "class_ref_target" ], + [ "RefTargetVirtual", "class_ref_target_virtual.html", "class_ref_target_virtual" ], + [ "Ref< T >", "class_ref.html", "class_ref" ], + [ "RefConst< T >", "class_ref_const.html", "class_ref_const" ] +]; \ No newline at end of file diff --git a/_reference_8h_source.html b/_reference_8h_source.html new file mode 100644 index 000000000..67dd4adc3 --- /dev/null +++ b/_reference_8h_source.html @@ -0,0 +1,352 @@ + + + + + + + +Jolt Physics: Jolt/Core/Reference.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Reference.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
+
7#include <Jolt/Core/Atomics.h>
+
8
+ +
10
+
11// Forward declares
+
12template <class T> class Ref;
+
13template <class T> class RefConst;
+
14
+
33template <class T>
+
+ +
35{
+
36public:
+
38 inline RefTarget() = default;
+
39 inline RefTarget(const RefTarget &) { /* Do not copy refcount */ }
+
40 inline ~RefTarget() { JPH_IF_ENABLE_ASSERTS(uint32 value = mRefCount.load(memory_order_relaxed);) JPH_ASSERT(value == 0 || value == cEmbedded); }
+
41
+
45 inline void SetEmbedded() const { JPH_IF_ENABLE_ASSERTS(uint32 old = ) mRefCount.fetch_add(cEmbedded, memory_order_relaxed); JPH_ASSERT(old < cEmbedded); }
+
46
+
48 inline RefTarget & operator = (const RefTarget &) { /* Don't copy refcount */ return *this; }
+
49
+
51 uint32 GetRefCount() const { return mRefCount.load(memory_order_relaxed); }
+
52
+
+
54 inline void AddRef() const
+
55 {
+
56 // Adding a reference can use relaxed memory ordering
+
57 mRefCount.fetch_add(1, memory_order_relaxed);
+
58 }
+
+
59
+
+
60 inline void Release() const
+
61 {
+
62 // Releasing a reference must use release semantics...
+
63 if (mRefCount.fetch_sub(1, memory_order_release) == 1)
+
64 {
+
65 // ... so that we can use acquire to ensure that we see any updates from other threads that released a ref before deleting the object
+
66 atomic_thread_fence(memory_order_acquire);
+
67 delete static_cast<const T *>(this);
+
68 }
+
69 }
+
+
70
+
72 static int sInternalGetRefCountOffset() { return offsetof(T, mRefCount); }
+
73
+
74protected:
+
75 static constexpr uint32 cEmbedded = 0x0ebedded;
+
76
+
77 mutable atomic<uint32> mRefCount = 0;
+
78};
+
+
79
+
+ +
82{
+
83public:
+
85 virtual ~RefTargetVirtual() = default;
+
86
+
88 virtual void AddRef() = 0;
+
89
+
91 virtual void Release() = 0;
+
92};
+
+
93
+
99template <class T>
+
+
100class Ref
+
101{
+
102public:
+
104 inline Ref() : mPtr(nullptr) { }
+
105 inline Ref(T *inRHS) : mPtr(inRHS) { AddRef(); }
+
106 inline Ref(const Ref<T> &inRHS) : mPtr(inRHS.mPtr) { AddRef(); }
+
107 inline Ref(Ref<T> &&inRHS) noexcept : mPtr(inRHS.mPtr) { inRHS.mPtr = nullptr; }
+
108 inline ~Ref() { Release(); }
+
109
+
111 inline Ref<T> & operator = (T *inRHS) { if (mPtr != inRHS) { Release(); mPtr = inRHS; AddRef(); } return *this; }
+
112 inline Ref<T> & operator = (const Ref<T> &inRHS) { if (mPtr != inRHS.mPtr) { Release(); mPtr = inRHS.mPtr; AddRef(); } return *this; }
+
113 inline Ref<T> & operator = (Ref<T> &&inRHS) noexcept { if (mPtr != inRHS.mPtr) { Release(); mPtr = inRHS.mPtr; inRHS.mPtr = nullptr; } return *this; }
+
114
+
116 inline operator T *() const { return mPtr; }
+
117
+
119 inline T * operator -> () const { return mPtr; }
+
120 inline T & operator * () const { return *mPtr; }
+
121
+
123 inline bool operator == (const T * inRHS) const { return mPtr == inRHS; }
+
124 inline bool operator == (const Ref<T> &inRHS) const { return mPtr == inRHS.mPtr; }
+
125 inline bool operator != (const T * inRHS) const { return mPtr != inRHS; }
+
126 inline bool operator != (const Ref<T> &inRHS) const { return mPtr != inRHS.mPtr; }
+
127
+
129 inline T * GetPtr() const { return mPtr; }
+
130
+
132 void ** InternalGetPointer() { return reinterpret_cast<void **>(&mPtr); }
+
133
+
134private:
+
135 template <class T2> friend class RefConst;
+
136
+
138 inline void AddRef() { if (mPtr != nullptr) mPtr->AddRef(); }
+
139 inline void Release() { if (mPtr != nullptr) mPtr->Release(); }
+
140
+
141 T * mPtr;
+
142};
+
+
143
+
149template <class T>
+
+ +
151{
+
152public:
+
154 inline RefConst() : mPtr(nullptr) { }
+
155 inline RefConst(const T * inRHS) : mPtr(inRHS) { AddRef(); }
+
156 inline RefConst(const RefConst<T> &inRHS) : mPtr(inRHS.mPtr) { AddRef(); }
+
157 inline RefConst(RefConst<T> &&inRHS) noexcept : mPtr(inRHS.mPtr) { inRHS.mPtr = nullptr; }
+
158 inline RefConst(const Ref<T> &inRHS) : mPtr(inRHS.mPtr) { AddRef(); }
+
159 inline RefConst(Ref<T> &&inRHS) noexcept : mPtr(inRHS.mPtr) { inRHS.mPtr = nullptr; }
+
160 inline ~RefConst() { Release(); }
+
161
+
163 inline RefConst<T> & operator = (const T * inRHS) { if (mPtr != inRHS) { Release(); mPtr = inRHS; AddRef(); } return *this; }
+
164 inline RefConst<T> & operator = (const RefConst<T> &inRHS) { if (mPtr != inRHS.mPtr) { Release(); mPtr = inRHS.mPtr; AddRef(); } return *this; }
+
165 inline RefConst<T> & operator = (RefConst<T> &&inRHS) noexcept { if (mPtr != inRHS.mPtr) { Release(); mPtr = inRHS.mPtr; inRHS.mPtr = nullptr; } return *this; }
+
166 inline RefConst<T> & operator = (const Ref<T> &inRHS) { if (mPtr != inRHS.mPtr) { Release(); mPtr = inRHS.mPtr; AddRef(); } return *this; }
+
167 inline RefConst<T> & operator = (Ref<T> &&inRHS) noexcept { if (mPtr != inRHS.mPtr) { Release(); mPtr = inRHS.mPtr; inRHS.mPtr = nullptr; } return *this; }
+
168
+
170 inline operator const T * () const { return mPtr; }
+
171
+
173 inline const T * operator -> () const { return mPtr; }
+
174 inline const T & operator * () const { return *mPtr; }
+
175
+
177 inline bool operator == (const T * inRHS) const { return mPtr == inRHS; }
+
178 inline bool operator == (const RefConst<T> &inRHS) const { return mPtr == inRHS.mPtr; }
+
179 inline bool operator == (const Ref<T> &inRHS) const { return mPtr == inRHS.mPtr; }
+
180 inline bool operator != (const T * inRHS) const { return mPtr != inRHS; }
+
181 inline bool operator != (const RefConst<T> &inRHS) const { return mPtr != inRHS.mPtr; }
+
182 inline bool operator != (const Ref<T> &inRHS) const { return mPtr != inRHS.mPtr; }
+
183
+
185 inline const T * GetPtr() const { return mPtr; }
+
186
+
188 void ** InternalGetPointer() { return const_cast<void **>(reinterpret_cast<const void **>(&mPtr)); }
+
189
+
190private:
+
192 inline void AddRef() { if (mPtr != nullptr) mPtr->AddRef(); }
+
193 inline void Release() { if (mPtr != nullptr) mPtr->Release(); }
+
194
+
195 const T * mPtr;
+
196};
+
+
197
+ +
199
+
200JPH_SUPPRESS_WARNING_PUSH
+
201JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat")
+
202
+
203namespace std
+
204{
+
206 template <class T>
+
207 struct hash<JPH::Ref<T>>
+
208 {
+
209 size_t operator () (const JPH::Ref<T> &inRHS) const
+
210 {
+
211 return hash<T *> { }(inRHS.GetPtr());
+
212 }
+
213 };
+
214
+
216 template <class T>
+
217 struct hash<JPH::RefConst<T>>
+
218 {
+
219 size_t operator () (const JPH::RefConst<T> &inRHS) const
+
220 {
+
221 return hash<const T *> { }(inRHS.GetPtr());
+
222 }
+
223 };
+
224}
+
225
+
226JPH_SUPPRESS_WARNING_POP
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_CLANG_SUPPRESS_WARNING(w)
Definition Core.h:263
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
Definition Reference.h:151
+
const T * GetPtr() const
Get pointer.
Definition Reference.h:185
+
bool operator!=(const T *inRHS) const
Definition Reference.h:180
+
RefConst()
Constructor.
Definition Reference.h:154
+
~RefConst()
Definition Reference.h:160
+
RefConst(const T *inRHS)
Definition Reference.h:155
+
const T & operator*() const
Definition Reference.h:174
+
RefConst< T > & operator=(const T *inRHS)
Assignment operators.
Definition Reference.h:163
+
RefConst(const Ref< T > &inRHS)
Definition Reference.h:158
+
void ** InternalGetPointer()
INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
Definition Reference.h:188
+
const T * operator->() const
Access like a normal pointer.
Definition Reference.h:173
+
RefConst(RefConst< T > &&inRHS) noexcept
Definition Reference.h:157
+
RefConst(const RefConst< T > &inRHS)
Definition Reference.h:156
+
bool operator==(const T *inRHS) const
Comparison.
Definition Reference.h:177
+
RefConst(Ref< T > &&inRHS) noexcept
Definition Reference.h:159
+
Definition Reference.h:101
+
Ref(const Ref< T > &inRHS)
Definition Reference.h:106
+
T * GetPtr() const
Get pointer.
Definition Reference.h:129
+
bool operator!=(const T *inRHS) const
Definition Reference.h:125
+
Ref()
Constructor.
Definition Reference.h:104
+
~Ref()
Definition Reference.h:108
+
T * operator->() const
Access like a normal pointer.
Definition Reference.h:119
+
void ** InternalGetPointer()
INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
Definition Reference.h:132
+
Ref< T > & operator=(T *inRHS)
Assignment operators.
Definition Reference.h:111
+
Ref(Ref< T > &&inRHS) noexcept
Definition Reference.h:107
+
Ref(T *inRHS)
Definition Reference.h:105
+
bool operator==(const T *inRHS) const
Comparison.
Definition Reference.h:123
+
T & operator*() const
Definition Reference.h:120
+
Definition Reference.h:35
+
void Release() const
Definition Reference.h:60
+
atomic< uint32 > mRefCount
Current reference count.
Definition Reference.h:77
+
RefTarget & operator=(const RefTarget &)
Assignment operator.
Definition Reference.h:48
+
void SetEmbedded() const
Definition Reference.h:45
+
RefTarget()=default
Constructor.
+
RefTarget(const RefTarget &)
Definition Reference.h:39
+
static int sInternalGetRefCountOffset()
INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
Definition Reference.h:72
+
~RefTarget()
assert no one is referencing us
Definition Reference.h:40
+
uint32 GetRefCount() const
Get current refcount of this object.
Definition Reference.h:51
+
void AddRef() const
Add or release a reference to this object.
Definition Reference.h:54
+
static constexpr uint32 cEmbedded
A large value that gets added to the refcount to mark the object as embedded.
Definition Reference.h:75
+
Pure virtual version of RefTarget.
Definition Reference.h:82
+
virtual ~RefTargetVirtual()=default
Virtual destructor.
+
virtual void Release()=0
Virtual release reference.
+
virtual void AddRef()=0
Virtual add reference.
+
Definition Array.h:575
+
+
+ + + + diff --git a/_register_types_8cpp.html b/_register_types_8cpp.html new file mode 100644 index 000000000..22f7378d3 --- /dev/null +++ b/_register_types_8cpp.html @@ -0,0 +1,213 @@ + + + + + + + +Jolt Physics: Jolt/RegisterTypes.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RegisterTypes.cpp File Reference
+
+
+ + + + + + + + + + + +

+Functions

JPH_NAMESPACE_BEGIN bool VerifyJoltVersionIDInternal (uint64 inVersionID)
 Internal helper function.
 
void RegisterTypesInternal (uint64 inVersionID)
 Internal helper function.
 
void UnregisterTypes ()
 Unregisters all types with the factory and cleans up the default material.
 
+

Function Documentation

+ +

◆ RegisterTypesInternal()

+ +
+
+ + + + + + + + +
void RegisterTypesInternal (uint64 inVersionID)
+
+ +

Internal helper function.

+ +
+
+ +

◆ UnregisterTypes()

+ +
+
+ + + + + + + +
void UnregisterTypes ()
+
+ +

Unregisters all types with the factory and cleans up the default material.

+ +
+
+ +

◆ VerifyJoltVersionIDInternal()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN bool VerifyJoltVersionIDInternal (uint64 inVersionID)
+
+ +

Internal helper function.

+ +
+
+
+
+ + + + diff --git a/_register_types_8cpp.js b/_register_types_8cpp.js new file mode 100644 index 000000000..df67aed0f --- /dev/null +++ b/_register_types_8cpp.js @@ -0,0 +1,6 @@ +var _register_types_8cpp = +[ + [ "RegisterTypesInternal", "_register_types_8cpp.html#ad79693ff726715130ca9372e7e347e22", null ], + [ "UnregisterTypes", "_register_types_8cpp.html#a10487599cc35b86cfef75fae22227a8b", null ], + [ "VerifyJoltVersionIDInternal", "_register_types_8cpp.html#a3e619944349d251d8d720677175a809e", null ] +]; \ No newline at end of file diff --git a/_register_types_8h.html b/_register_types_8h.html new file mode 100644 index 000000000..001afe580 --- /dev/null +++ b/_register_types_8h.html @@ -0,0 +1,255 @@ + + + + + + + +Jolt Physics: Jolt/RegisterTypes.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RegisterTypes.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_EXPORT bool VerifyJoltVersionIDInternal (uint64 inVersionID)
 Internal helper function.
 
JPH_INLINE bool VerifyJoltVersionID ()
 
JPH_EXPORT void RegisterTypesInternal (uint64 inVersionID)
 Internal helper function.
 
JPH_INLINE void RegisterTypes ()
 
JPH_EXPORT void UnregisterTypes ()
 Unregisters all types with the factory and cleans up the default material.
 
+

Function Documentation

+ +

◆ RegisterTypes()

+ +
+
+ + + + + + + +
JPH_INLINE void RegisterTypes ()
+
+

Register all physics types with the factory and install their collision handlers with the CollisionDispatch class. If you have your own custom shape types you probably need to register their handlers with the CollisionDispatch before calling this function. If you implement your own default material (PhysicsMaterial::sDefault) make sure to initialize it before this function or else this function will create one for you.

+ +
+
+ +

◆ RegisterTypesInternal()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_EXPORT void RegisterTypesInternal (uint64 inVersionID)
+
+extern
+
+ +

Internal helper function.

+ +
+
+ +

◆ UnregisterTypes()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_EXPORT void UnregisterTypes ()
+
+extern
+
+ +

Unregisters all types with the factory and cleans up the default material.

+ +
+
+ +

◆ VerifyJoltVersionID()

+ +
+
+ + + + + + + +
JPH_INLINE bool VerifyJoltVersionID ()
+
+

This function can be used to verify the library ABI is compatible with your application. Use it in this way: assert(VerifyJoltVersionID());. Returns false if the library used is not compatible with your app.

+ +
+
+ +

◆ VerifyJoltVersionIDInternal()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_EXPORT bool VerifyJoltVersionIDInternal (uint64 inVersionID)
+
+extern
+
+ +

Internal helper function.

+ +
+
+
+
+ + + + diff --git a/_register_types_8h.js b/_register_types_8h.js new file mode 100644 index 000000000..c88a36eb0 --- /dev/null +++ b/_register_types_8h.js @@ -0,0 +1,8 @@ +var _register_types_8h = +[ + [ "RegisterTypes", "_register_types_8h.html#a033e662bc8b7d5a8acd9adcc692b7cb4", null ], + [ "RegisterTypesInternal", "_register_types_8h.html#a8df860236f81c6ffec261b6bd62847ba", null ], + [ "UnregisterTypes", "_register_types_8h.html#a1e0db6031789e773039c7fc15ef47057", null ], + [ "VerifyJoltVersionID", "_register_types_8h.html#a5f4143a97d828fbf326eaf25a5323e17", null ], + [ "VerifyJoltVersionIDInternal", "_register_types_8h.html#a620b2773885e137277e118ddfee651bf", null ] +]; \ No newline at end of file diff --git a/_register_types_8h_source.html b/_register_types_8h_source.html new file mode 100644 index 000000000..83292dcb7 --- /dev/null +++ b/_register_types_8h_source.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Jolt/RegisterTypes.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RegisterTypes.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
+
10JPH_EXPORT extern bool VerifyJoltVersionIDInternal(uint64 inVersionID);
+
11
+ +
17
+
19JPH_EXPORT extern void RegisterTypesInternal(uint64 inVersionID);
+
20
+ +
25
+
27JPH_EXPORT extern void UnregisterTypes();
+
28
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_VERSION_ID
Definition Core.h:71
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_INLINE void RegisterTypes()
Definition RegisterTypes.h:24
+
JPH_EXPORT void UnregisterTypes()
Unregisters all types with the factory and cleans up the default material.
Definition RegisterTypes.cpp:196
+
JPH_INLINE bool VerifyJoltVersionID()
Definition RegisterTypes.h:16
+
JPH_NAMESPACE_BEGIN JPH_EXPORT bool VerifyJoltVersionIDInternal(uint64 inVersionID)
Internal helper function.
Definition RegisterTypes.cpp:77
+
JPH_EXPORT void RegisterTypesInternal(uint64 inVersionID)
Internal helper function.
Definition RegisterTypes.cpp:82
+
+
+ + + + diff --git a/_release_notes_8md.html b/_release_notes_8md.html new file mode 100644 index 000000000..410bff49a --- /dev/null +++ b/_release_notes_8md.html @@ -0,0 +1,114 @@ + + + + + + + +Jolt Physics: Docs/ReleaseNotes.md File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Docs/ReleaseNotes.md File Reference
+
+
+
+
+ + + + diff --git a/_result_8h.html b/_result_8h.html new file mode 100644 index 000000000..b4af15705 --- /dev/null +++ b/_result_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Core/Result.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Result.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  Result< Type >
 Helper class that either contains a valid result or an error. More...
 
+
+
+ + + + diff --git a/_result_8h.js b/_result_8h.js new file mode 100644 index 000000000..248769baa --- /dev/null +++ b/_result_8h.js @@ -0,0 +1,4 @@ +var _result_8h = +[ + [ "Result< Type >", "class_result.html", "class_result" ] +]; \ No newline at end of file diff --git a/_result_8h_source.html b/_result_8h_source.html new file mode 100644 index 000000000..f4f5393ae --- /dev/null +++ b/_result_8h_source.html @@ -0,0 +1,313 @@ + + + + + + + +Jolt Physics: Jolt/Core/Result.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Result.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
+
10template <class Type>
+
+
11class Result
+
12{
+
13public:
+
15 Result() { }
+
16
+
+
18 Result(const Result<Type> &inRHS) :
+
19 mState(inRHS.mState)
+
20 {
+
21 switch (inRHS.mState)
+
22 {
+
23 case EState::Valid:
+
24 ::new (&mResult) Type (inRHS.mResult);
+
25 break;
+
26
+
27 case EState::Error:
+
28 ::new (&mError) String(inRHS.mError);
+
29 break;
+
30
+
31 case EState::Invalid:
+
32 break;
+
33 }
+
34 }
+
+
35
+
+
37 Result(Result<Type> &&inRHS) noexcept :
+
38 mState(inRHS.mState)
+
39 {
+
40 switch (inRHS.mState)
+
41 {
+
42 case EState::Valid:
+
43 ::new (&mResult) Type (std::move(inRHS.mResult));
+
44 break;
+
45
+
46 case EState::Error:
+
47 ::new (&mError) String(std::move(inRHS.mError));
+
48 break;
+
49
+
50 case EState::Invalid:
+
51 break;
+
52 }
+
53
+
54 // Don't reset the state of inRHS, the destructors still need to be called after a move operation
+
55 }
+
+
56
+
58 ~Result() { Clear(); }
+
59
+
+ +
62 {
+
63 Clear();
+
64
+
65 mState = inRHS.mState;
+
66
+
67 switch (inRHS.mState)
+
68 {
+
69 case EState::Valid:
+
70 ::new (&mResult) Type (inRHS.mResult);
+
71 break;
+
72
+
73 case EState::Error:
+
74 ::new (&mError) String(inRHS.mError);
+
75 break;
+
76
+
77 case EState::Invalid:
+
78 break;
+
79 }
+
80
+
81 return *this;
+
82 }
+
+
83
+
+ +
86 {
+
87 Clear();
+
88
+
89 mState = inRHS.mState;
+
90
+
91 switch (inRHS.mState)
+
92 {
+
93 case EState::Valid:
+
94 ::new (&mResult) Type (std::move(inRHS.mResult));
+
95 break;
+
96
+
97 case EState::Error:
+
98 ::new (&mError) String(std::move(inRHS.mError));
+
99 break;
+
100
+
101 case EState::Invalid:
+
102 break;
+
103 }
+
104
+
105 // Don't reset the state of inRHS, the destructors still need to be called after a move operation
+
106
+
107 return *this;
+
108 }
+
+
109
+
+
111 void Clear()
+
112 {
+
113 switch (mState)
+
114 {
+
115 case EState::Valid:
+
116 mResult.~Type();
+
117 break;
+
118
+
119 case EState::Error:
+
120 mError.~String();
+
121 break;
+
122
+
123 case EState::Invalid:
+
124 break;
+
125 }
+
126
+
127 mState = EState::Invalid;
+
128 }
+
+
129
+
131 bool IsEmpty() const { return mState == EState::Invalid; }
+
132
+
134 bool IsValid() const { return mState == EState::Valid; }
+
135
+
137 const Type & Get() const { JPH_ASSERT(IsValid()); return mResult; }
+
138
+
140 void Set(const Type &inResult) { Clear(); ::new (&mResult) Type(inResult); mState = EState::Valid; }
+
141
+
143 void Set(Type &&inResult) { Clear(); ::new (&mResult) Type(std::move(inResult)); mState = EState::Valid; }
+
144
+
146 bool HasError() const { return mState == EState::Error; }
+
147
+
149 const String & GetError() const { JPH_ASSERT(HasError()); return mError; }
+
150
+
152 void SetError(const char *inError) { Clear(); ::new (&mError) String(inError); mState = EState::Error; }
+
153 void SetError(const string_view &inError) { Clear(); ::new (&mError) String(inError); mState = EState::Error; }
+
154 void SetError(String &&inError) { Clear(); ::new (&mError) String(std::move(inError)); mState = EState::Error; }
+
155
+
156private:
+
157 union
+
158 {
+
159 Type mResult;
+ +
161 };
+
162
+
164 enum class EState : uint8
+
165 {
+
166 Invalid,
+
167 Valid,
+
168 Error
+
169 };
+
170
+
171 EState mState = EState::Invalid;
+
172};
+
+
173
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+
@ Invalid
Next token on the stream was not a valid data type.
+
Helper class that either contains a valid result or an error.
Definition Result.h:12
+
bool IsValid() const
Checks if the result is valid.
Definition Result.h:134
+
void SetError(String &&inError)
Definition Result.h:154
+
Result(const Result< Type > &inRHS)
Copy constructor.
Definition Result.h:18
+
void Clear()
Clear result or error.
Definition Result.h:111
+
void SetError(const char *inError)
Set an error value.
Definition Result.h:152
+
Type mResult
The actual result object.
Definition Result.h:159
+
void Set(const Type &inResult)
Set the result value.
Definition Result.h:140
+
bool HasError() const
Check if we had an error.
Definition Result.h:146
+
void Set(Type &&inResult)
Set the result value (move value)
Definition Result.h:143
+
const String & GetError() const
Get the error value.
Definition Result.h:149
+
Result()
Default constructor.
Definition Result.h:15
+
bool IsEmpty() const
Checks if the result is still uninitialized.
Definition Result.h:131
+
const Type & Get() const
Get the result value.
Definition Result.h:137
+
Result< Type > & operator=(const Result< Type > &inRHS)
Copy assignment.
Definition Result.h:61
+
~Result()
Destructor.
Definition Result.h:58
+
void SetError(const string_view &inError)
Definition Result.h:153
+
Result(Result< Type > &&inRHS) noexcept
Move constructor.
Definition Result.h:37
+
String mError
The error description if the result failed.
Definition Result.h:160
+
+
+ + + + diff --git a/_rotated_translated_shape_8cpp.html b/_rotated_translated_shape_8cpp.html new file mode 100644 index 000000000..bc793852b --- /dev/null +++ b/_rotated_translated_shape_8cpp.html @@ -0,0 +1,150 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/RotatedTranslatedShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RotatedTranslatedShape.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (RotatedTranslatedShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (RotatedTranslatedShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_rotated_translated_shape_8cpp.js b/_rotated_translated_shape_8cpp.js new file mode 100644 index 000000000..575e26f62 --- /dev/null +++ b/_rotated_translated_shape_8cpp.js @@ -0,0 +1,4 @@ +var _rotated_translated_shape_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_rotated_translated_shape_8cpp.html#ae5f217944c30117a567d080357de864c", null ] +]; \ No newline at end of file diff --git a/_rotated_translated_shape_8h.html b/_rotated_translated_shape_8h.html new file mode 100644 index 000000000..cced91aef --- /dev/null +++ b/_rotated_translated_shape_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/RotatedTranslatedShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RotatedTranslatedShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  RotatedTranslatedShapeSettings
 Class that constructs a RotatedTranslatedShape. More...
 
class  RotatedTranslatedShape
 
+
+
+ + + + diff --git a/_rotated_translated_shape_8h.js b/_rotated_translated_shape_8h.js new file mode 100644 index 000000000..a3043501b --- /dev/null +++ b/_rotated_translated_shape_8h.js @@ -0,0 +1,5 @@ +var _rotated_translated_shape_8h = +[ + [ "RotatedTranslatedShapeSettings", "class_rotated_translated_shape_settings.html", "class_rotated_translated_shape_settings" ], + [ "RotatedTranslatedShape", "class_rotated_translated_shape.html", "class_rotated_translated_shape" ] +]; \ No newline at end of file diff --git a/_rotated_translated_shape_8h_source.html b/_rotated_translated_shape_8h_source.html new file mode 100644 index 000000000..1e8d8125b --- /dev/null +++ b/_rotated_translated_shape_8h_source.html @@ -0,0 +1,335 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/RotatedTranslatedShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RotatedTranslatedShape.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
+ + +
9
+ +
11
+ +
13
+
+ +
16{
+
17public:
+ +
19
+
20
+ +
22
+
24 RotatedTranslatedShapeSettings(Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape) : DecoratedShapeSettings(inShape), mPosition(inPosition), mRotation(inRotation) { }
+
25
+
27 RotatedTranslatedShapeSettings(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape): DecoratedShapeSettings(inShape), mPosition(inPosition), mRotation(inRotation) { }
+
28
+
29 // See: ShapeSettings
+
30 virtual ShapeResult Create() const override;
+
31
+ + +
34};
+
+
35
+
+ +
39{
+
40public:
+ +
42
+ +
45 RotatedTranslatedShape(const RotatedTranslatedShapeSettings &inSettings, ShapeResult &outResult);
+
46 RotatedTranslatedShape(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape);
+
47
+
49 Quat GetRotation() const { return mRotation; }
+
50
+
52 Vec3 GetPosition() const { return mCenterOfMass - mRotation * mInnerShape->GetCenterOfMass(); }
+
53
+
54 // See Shape::GetCenterOfMass
+
55 virtual Vec3 GetCenterOfMass() const override { return mCenterOfMass; }
+
56
+
57 // See Shape::GetLocalBounds
+
58 virtual AABox GetLocalBounds() const override;
+
59
+
60 // See Shape::GetWorldSpaceBounds
+
61 virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+ +
63
+
64 // See Shape::GetInnerRadius
+
65 virtual float GetInnerRadius() const override { return mInnerShape->GetInnerRadius(); }
+
66
+
67 // See Shape::GetMassProperties
+
68 virtual MassProperties GetMassProperties() const override;
+
69
+
70 // See Shape::GetSubShapeTransformedShape
+
71 virtual TransformedShape GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const override;
+
72
+
73 // See Shape::GetSurfaceNormal
+
74 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
75
+
76 // See Shape::GetSupportingFace
+
77 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
78
+
79 // See Shape::GetSubmergedVolume
+
80 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override;
+
81
+
82#ifdef JPH_DEBUG_RENDERER
+
83 // See Shape::Draw
+
84 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
85
+
86 // See Shape::DrawGetSupportFunction
+
87 virtual void DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override;
+
88
+
89 // See Shape::DrawGetSupportingFace
+
90 virtual void DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+
91#endif // JPH_DEBUG_RENDERER
+
92
+
93 // See Shape::CastRay
+
94 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
95 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
96
+
97 // See: Shape::CollidePoint
+
98 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
99
+
100 // See: Shape::CollideSoftBodyVertices
+
101 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
102
+
103 // See Shape::CollectTransformedShapes
+
104 virtual void CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const override;
+
105
+
106 // See Shape::TransformShape
+
107 virtual void TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const override;
+
108
+
109 // See Shape::GetTrianglesStart
+
110 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override { JPH_ASSERT(false, "Cannot call on non-leaf shapes, use CollectTransformedShapes to collect the leaves first!"); }
+
111
+
112 // See Shape::GetTrianglesNext
+
113 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override { JPH_ASSERT(false, "Cannot call on non-leaf shapes, use CollectTransformedShapes to collect the leaves first!"); return 0; }
+
114
+
115 // See Shape
+
116 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
117
+
118 // See Shape::GetStats
+
119 virtual Stats GetStats() const override { return Stats(sizeof(*this), 0); }
+
120
+
121 // See Shape::GetVolume
+
122 virtual float GetVolume() const override { return mInnerShape->GetVolume(); }
+
123
+
124 // See Shape::IsValidScale
+
125 virtual bool IsValidScale(Vec3Arg inScale) const override;
+
126
+
127 // See Shape::MakeScaleValid
+
128 virtual Vec3 MakeScaleValid(Vec3Arg inScale) const override;
+
129
+
130 // Register shape functions with the registry
+
131 static void sRegister();
+
132
+
133protected:
+
134 // See: Shape::RestoreBinaryState
+
135 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
136
+
137private:
+
138 // Helper functions called by CollisionDispatch
+
139 static void sCollideRotatedTranslatedVsShape(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);
+
140 static void sCollideShapeVsRotatedTranslated(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);
+
141 static void sCollideRotatedTranslatedVsRotatedTranslated(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);
+
142 static void sCastRotatedTranslatedVsShape(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
143 static void sCastShapeVsRotatedTranslated(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
144 static void sCastRotatedTranslatedVsRotatedTranslated(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
145
+
147 inline Vec3 TransformScale(Vec3Arg inScale) const
+
148 {
+
149 // We don't need to transform uniform scale or if the rotation is identity
+
150 if (mIsRotationIdentity || ScaleHelpers::IsUniformScale(inScale))
+
151 return inScale;
+
152
+
153 return ScaleHelpers::RotateScale(mRotation, inScale);
+
154 }
+
155
+
156 bool mIsRotationIdentity;
+
157 Vec3 mCenterOfMass;
+
158 Quat mRotation;
+
159};
+
+
160
+ +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_IF_DEBUG_RENDERER(...)
Definition Core.h:536
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#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:76
+ +
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
+
Definition DebugRenderer.h:47
+
Base class for shapes that decorate another shape with extra functionality (e.g. scale,...
Definition DecoratedShape.h:29
+
Class that constructs a DecoratedShape.
Definition DecoratedShape.h:13
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
Definition Quat.h:33
+
Specialization of cast result against a shape.
Definition CastResult.h:30
+
Settings to be passed with a ray cast.
Definition RayCast.h:70
+
Definition RotatedTranslatedShape.h:39
+
virtual float GetInnerRadius() const override
Definition RotatedTranslatedShape.h:65
+
JPH_OVERRIDE_NEW_DELETE RotatedTranslatedShape()
Constructor.
Definition RotatedTranslatedShape.h:44
+
virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
Definition RotatedTranslatedShape.h:113
+
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition RotatedTranslatedShape.h:119
+
virtual float GetVolume() const override
Definition RotatedTranslatedShape.h:122
+
Quat GetRotation() const
Access the rotation that is applied to the inner shape.
Definition RotatedTranslatedShape.h:49
+
virtual Vec3 GetCenterOfMass() const override
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition RotatedTranslatedShape.h:55
+
virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
Definition RotatedTranslatedShape.h:110
+
Vec3 GetPosition() const
Access the translation that has been applied to the inner shape.
Definition RotatedTranslatedShape.h:52
+
Class that constructs a RotatedTranslatedShape.
Definition RotatedTranslatedShape.h:16
+
Quat mRotation
Rotation of the sub shape.
Definition RotatedTranslatedShape.h:33
+
RotatedTranslatedShapeSettings(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)
Variant that uses a concrete shape, which means this object cannot be serialized.
Definition RotatedTranslatedShape.h:27
+
Vec3 mPosition
Position of the sub shape.
Definition RotatedTranslatedShape.h:32
+
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:184
+
virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
Definition Shape.h:220
+
Definition Shape.h:145
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
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 TransformedShape.h:26
+
Definition Vec3.h:17
+
Vec3 RotateScale(QuatArg inRotation, Vec3Arg inScale)
Definition ScaleHelpers.h:75
+
bool IsUniformScale(Vec3Arg inScale)
Test if a scale is uniform.
Definition ScaleHelpers.h:24
+
Definition RayCast.h:47
+
An opaque buffer that holds shape specific information during GetTrianglesStart/Next.
Definition Shape.h:348
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_rotation_euler_constraint_part_8h.html b/_rotation_euler_constraint_part_8h.html new file mode 100644 index 000000000..6219f2973 --- /dev/null +++ b/_rotation_euler_constraint_part_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/RotationEulerConstraintPart.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RotationEulerConstraintPart.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  RotationEulerConstraintPart
 
+
+
+ + + + diff --git a/_rotation_euler_constraint_part_8h.js b/_rotation_euler_constraint_part_8h.js new file mode 100644 index 000000000..d50a27ab2 --- /dev/null +++ b/_rotation_euler_constraint_part_8h.js @@ -0,0 +1,4 @@ +var _rotation_euler_constraint_part_8h = +[ + [ "RotationEulerConstraintPart", "class_rotation_euler_constraint_part.html", "class_rotation_euler_constraint_part" ] +]; \ No newline at end of file diff --git a/_rotation_euler_constraint_part_8h_source.html b/_rotation_euler_constraint_part_8h_source.html new file mode 100644 index 000000000..2fcfeea42 --- /dev/null +++ b/_rotation_euler_constraint_part_8h_source.html @@ -0,0 +1,415 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/RotationEulerConstraintPart.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RotationEulerConstraintPart.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
+ + +
9
+ +
11
+
+ +
36{
+
37private:
+
39 JPH_INLINE bool ApplyVelocityStep(Body &ioBody1, Body &ioBody2, Vec3Arg inLambda) const
+
40 {
+
41 // Apply impulse if delta is not zero
+
42 if (inLambda != Vec3::sZero())
+
43 {
+
44 // Calculate velocity change due to constraint
+
45 //
+
46 // Impulse:
+
47 // P = J^T lambda
+
48 //
+
49 // Euler velocity integration:
+
50 // v' = v + M^-1 P
+
51 if (ioBody1.IsDynamic())
+
52 ioBody1.GetMotionProperties()->SubAngularVelocityStep(mInvI1.Multiply3x3(inLambda));
+
53 if (ioBody2.IsDynamic())
+
54 ioBody2.GetMotionProperties()->AddAngularVelocityStep(mInvI2.Multiply3x3(inLambda));
+
55 return true;
+
56 }
+
57
+
58 return false;
+
59 }
+
60
+
61public:
+
+
63 static Quat sGetInvInitialOrientation(const Body &inBody1, const Body &inBody2)
+
64 {
+
65 // q20 = q10 r0
+
66 // <=> r0 = q10^-1 q20
+
67 // <=> r0^-1 = q20^-1 q10
+
68 //
+
69 // where:
+
70 //
+
71 // q20 = initial orientation of body 2
+
72 // q10 = initial orientation of body 1
+
73 // r0 = initial rotation from body 1 to body 2
+
74 return inBody2.GetRotation().Conjugated() * inBody1.GetRotation();
+
75 }
+
+
76
+
+
82 static Quat sGetInvInitialOrientationXY(Vec3Arg inAxisX1, Vec3Arg inAxisY1, Vec3Arg inAxisX2, Vec3Arg inAxisY2)
+
83 {
+
84 // Store inverse of initial rotation from body 1 to body 2 in body 1 space:
+
85 //
+
86 // q20 = q10 r0
+
87 // <=> r0 = q10^-1 q20
+
88 // <=> r0^-1 = q20^-1 q10
+
89 //
+
90 // where:
+
91 //
+
92 // q10, q20 = world space initial orientation of body 1 and 2
+
93 // r0 = initial rotation from body 1 to body 2 in local space of body 1
+
94 //
+
95 // We can also write this in terms of the constraint matrices:
+
96 //
+
97 // q20 c2 = q10 c1
+
98 // <=> q20 = q10 c1 c2^-1
+
99 // => r0 = c1 c2^-1
+
100 // <=> r0^-1 = c2 c1^-1
+
101 //
+
102 // where:
+
103 //
+
104 // c1, c2 = matrix that takes us from body 1 and 2 COM to constraint space 1 and 2
+
105 if (inAxisX1 == inAxisX2 && inAxisY1 == inAxisY2)
+
106 {
+
107 // Axis are the same -> identity transform
+
108 return Quat::sIdentity();
+
109 }
+
110 else
+
111 {
+
112 Mat44 constraint1(Vec4(inAxisX1, 0), Vec4(inAxisY1, 0), Vec4(inAxisX1.Cross(inAxisY1), 0), Vec4(0, 0, 0, 1));
+
113 Mat44 constraint2(Vec4(inAxisX2, 0), Vec4(inAxisY2, 0), Vec4(inAxisX2.Cross(inAxisY2), 0), Vec4(0, 0, 0, 1));
+
114 return constraint2.GetQuaternion() * constraint1.GetQuaternion().Conjugated();
+
115 }
+
116 }
+
+
117
+
+
123 static Quat sGetInvInitialOrientationXZ(Vec3Arg inAxisX1, Vec3Arg inAxisZ1, Vec3Arg inAxisX2, Vec3Arg inAxisZ2)
+
124 {
+
125 // See comment at sGetInvInitialOrientationXY
+
126 if (inAxisX1 == inAxisX2 && inAxisZ1 == inAxisZ2)
+
127 {
+
128 return Quat::sIdentity();
+
129 }
+
130 else
+
131 {
+
132 Mat44 constraint1(Vec4(inAxisX1, 0), Vec4(inAxisZ1.Cross(inAxisX1), 0), Vec4(inAxisZ1, 0), Vec4(0, 0, 0, 1));
+
133 Mat44 constraint2(Vec4(inAxisX2, 0), Vec4(inAxisZ2.Cross(inAxisX2), 0), Vec4(inAxisZ2, 0), Vec4(0, 0, 0, 1));
+
134 return constraint2.GetQuaternion() * constraint1.GetQuaternion().Conjugated();
+
135 }
+
136 }
+
+
137
+
+
139 inline void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, const Body &inBody2, Mat44Arg inRotation2)
+
140 {
+
141 // Calculate properties used during constraint solving
+
142 mInvI1 = inBody1.IsDynamic()? inBody1.GetMotionProperties()->GetInverseInertiaForRotation(inRotation1) : Mat44::sZero();
+
143 mInvI2 = inBody2.IsDynamic()? inBody2.GetMotionProperties()->GetInverseInertiaForRotation(inRotation2) : Mat44::sZero();
+
144
+
145 // Calculate effective mass: K^-1 = (J M^-1 J^T)^-1
+
146 if (!mEffectiveMass.SetInversed3x3(mInvI1 + mInvI2))
+
147 Deactivate();
+
148 }
+
+
149
+
+
151 inline void Deactivate()
+
152 {
+
153 mEffectiveMass = Mat44::sZero();
+
154 mTotalLambda = Vec3::sZero();
+
155 }
+
+
156
+
+
158 inline bool IsActive() const
+
159 {
+
160 return mEffectiveMass(3, 3) != 0.0f;
+
161 }
+
+
162
+
+
164 inline void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
+
165 {
+
166 mTotalLambda *= inWarmStartImpulseRatio;
+
167 ApplyVelocityStep(ioBody1, ioBody2, mTotalLambda);
+
168 }
+
+
169
+
+
171 inline bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)
+
172 {
+
173 // Calculate lagrange multiplier:
+
174 //
+
175 // lambda = -K^-1 (J v + b)
+
176 Vec3 lambda = mEffectiveMass.Multiply3x3(ioBody1.GetAngularVelocity() - ioBody2.GetAngularVelocity());
+
177 mTotalLambda += lambda;
+
178 return ApplyVelocityStep(ioBody1, ioBody2, lambda);
+
179 }
+
+
180
+
+
182 inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, QuatArg inInvInitialOrientation, float inBaumgarte) const
+
183 {
+
184 // Calculate difference in rotation
+
185 //
+
186 // The rotation should be:
+
187 //
+
188 // q2 = q1 r0
+
189 //
+
190 // But because of drift the actual rotation is
+
191 //
+
192 // q2 = diff q1 r0
+
193 // <=> diff = q2 r0^-1 q1^-1
+
194 //
+
195 // Where:
+
196 // q1 = current rotation of body 1
+
197 // q2 = current rotation of body 2
+
198 // diff = error that needs to be reduced to zero
+
199 Quat diff = ioBody2.GetRotation() * inInvInitialOrientation * ioBody1.GetRotation().Conjugated();
+
200
+
201 // A quaternion can be seen as:
+
202 //
+
203 // q = [sin(theta / 2) * v, cos(theta/2)]
+
204 //
+
205 // Where:
+
206 // v = rotation vector
+
207 // theta = rotation angle
+
208 //
+
209 // If we assume theta is small (error is small) then sin(x) = x so an approximation of the error angles is:
+
210 Vec3 error = 2.0f * diff.EnsureWPositive().GetXYZ();
+
211 if (error != Vec3::sZero())
+
212 {
+
213 // Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
+
214 //
+
215 // lambda = -K^-1 * beta / dt * C
+
216 //
+
217 // We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
+
218 Vec3 lambda = -inBaumgarte * mEffectiveMass * error;
+
219
+
220 // Directly integrate velocity change for one time step
+
221 //
+
222 // Euler velocity integration:
+
223 // dv = M^-1 P
+
224 //
+
225 // Impulse:
+
226 // P = J^T lambda
+
227 //
+
228 // Euler position integration:
+
229 // x' = x + dv * dt
+
230 //
+
231 // Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
+
232 // Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
+
233 // stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
+
234 // integrate + a position integrate and then discard the velocity change.
+
235 if (ioBody1.IsDynamic())
+
236 ioBody1.SubRotationStep(mInvI1.Multiply3x3(lambda));
+
237 if (ioBody2.IsDynamic())
+
238 ioBody2.AddRotationStep(mInvI2.Multiply3x3(lambda));
+
239 return true;
+
240 }
+
241
+
242 return false;
+
243 }
+
+
244
+
+ +
247 {
+
248 return mTotalLambda;
+
249 }
+
+
250
+
+
252 void SaveState(StateRecorder &inStream) const
+
253 {
+
254 inStream.Write(mTotalLambda);
+
255 }
+
+
256
+
+ +
259 {
+
260 inStream.Read(mTotalLambda);
+
261 }
+
+
262
+
263private:
+
264 Mat44 mInvI1;
+
265 Mat44 mInvI2;
+
266 Mat44 mEffectiveMass;
+
267 Vec3 mTotalLambda { Vec3::sZero() };
+
268};
+
+
269
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Definition Body.h:35
+
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:249
+
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:61
+
void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Update rotation using an Euler step (using during position integrate & constraint solving)
Definition Body.inl:81
+
Quat GetRotation() const
World space rotation of the body.
Definition Body.h:231
+
void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Definition Body.inl:100
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass (unit: rad/s)
Definition Body.h:153
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sZero()
Zero matrix.
Definition Mat44.inl:30
+
JPH_INLINE Quat GetQuaternion() const
Convert to quaternion.
Definition Mat44.inl:783
+
JPH_INLINE bool SetInversed3x3(Mat44Arg inM)
*this = inM.Inversed3x3(), returns false if the matrix is singular in which case *this is unchanged
Definition Mat44.inl:767
+
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition Mat44.inl:316
+
void SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:194
+
Mat44 GetInverseInertiaForRotation(Mat44Arg inRotation) const
Get inverse inertia matrix ( ) for a given object rotation (translation will be ignored)....
Definition MotionProperties.inl:59
+
void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:193
+
Definition Quat.h:33
+
static JPH_INLINE Quat sIdentity()
Definition Quat.h:103
+
JPH_INLINE Quat EnsureWPositive() const
Ensures that the W component is positive by negating the entire quaternion if it is not....
Definition Quat.h:184
+
JPH_INLINE Quat Conjugated() const
The conjugate [w, -x, -y, -z] is the same as the inverse for unit quaternions.
Definition Quat.h:178
+
JPH_INLINE Vec3 GetXYZ() const
Get the imaginary part of the quaternion.
Definition Quat.h:81
+
Definition RotationEulerConstraintPart.h:36
+
static Quat sGetInvInitialOrientation(const Body &inBody1, const Body &inBody2)
Return inverse of initial rotation from body 1 to body 2 in body 1 space.
Definition RotationEulerConstraintPart.h:63
+
void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses.
Definition RotationEulerConstraintPart.h:164
+
bool IsActive() const
Check if constraint is active.
Definition RotationEulerConstraintPart.h:158
+
static Quat sGetInvInitialOrientationXY(Vec3Arg inAxisX1, Vec3Arg inAxisY1, Vec3Arg inAxisX2, Vec3Arg inAxisY2)
Return inverse of initial rotation from body 1 to body 2 in body 1 space.
Definition RotationEulerConstraintPart.h:82
+
Vec3 GetTotalLambda() const
Return lagrange multiplier.
Definition RotationEulerConstraintPart.h:246
+
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, QuatArg inInvInitialOrientation, float inBaumgarte) const
Iteratively update the position constraint. Makes sure C(...) = 0.
Definition RotationEulerConstraintPart.h:182
+
void Deactivate()
Deactivate this constraint.
Definition RotationEulerConstraintPart.h:151
+
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition RotationEulerConstraintPart.h:258
+
static Quat sGetInvInitialOrientationXZ(Vec3Arg inAxisX1, Vec3Arg inAxisZ1, Vec3Arg inAxisX2, Vec3Arg inAxisZ2)
Return inverse of initial rotation from body 1 to body 2 in body 1 space.
Definition RotationEulerConstraintPart.h:123
+
void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, const Body &inBody2, Mat44Arg inRotation2)
Calculate properties used during the functions below.
Definition RotationEulerConstraintPart.h:139
+
bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)
Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equ...
Definition RotationEulerConstraintPart.h:171
+
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition RotationEulerConstraintPart.h:252
+
Definition StateRecorder.h:48
+
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:29
+
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:26
+
Definition Vec3.h:17
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_rotation_quat_constraint_part_8h.html b/_rotation_quat_constraint_part_8h.html new file mode 100644 index 000000000..e3d50e1a7 --- /dev/null +++ b/_rotation_quat_constraint_part_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/RotationQuatConstraintPart.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RotationQuatConstraintPart.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  RotationQuatConstraintPart
 
+
+
+ + + + diff --git a/_rotation_quat_constraint_part_8h.js b/_rotation_quat_constraint_part_8h.js new file mode 100644 index 000000000..f742bc853 --- /dev/null +++ b/_rotation_quat_constraint_part_8h.js @@ -0,0 +1,4 @@ +var _rotation_quat_constraint_part_8h = +[ + [ "RotationQuatConstraintPart", "class_rotation_quat_constraint_part.html", "class_rotation_quat_constraint_part" ] +]; \ No newline at end of file diff --git a/_rotation_quat_constraint_part_8h_source.html b/_rotation_quat_constraint_part_8h_source.html new file mode 100644 index 000000000..9991425d9 --- /dev/null +++ b/_rotation_quat_constraint_part_8h_source.html @@ -0,0 +1,341 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/RotationQuatConstraintPart.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RotationQuatConstraintPart.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
+ + +
9
+ +
11
+
+ +
87{
+
88private:
+
90 JPH_INLINE bool ApplyVelocityStep(Body &ioBody1, Body &ioBody2, Vec3Arg inLambda) const
+
91 {
+
92 // Apply impulse if delta is not zero
+
93 if (inLambda != Vec3::sZero())
+
94 {
+
95 // Calculate velocity change due to constraint
+
96 //
+
97 // Impulse:
+
98 // P = J^T lambda
+
99 //
+
100 // Euler velocity integration:
+
101 // v' = v + M^-1 P
+
102 if (ioBody1.IsDynamic())
+
103 ioBody1.GetMotionProperties()->SubAngularVelocityStep(mInvI1_JPT.Multiply3x3(inLambda));
+
104 if (ioBody2.IsDynamic())
+
105 ioBody2.GetMotionProperties()->AddAngularVelocityStep(mInvI2_JPT.Multiply3x3(inLambda));
+
106 return true;
+
107 }
+
108
+
109 return false;
+
110 }
+
111
+
112public:
+
+
114 static Quat sGetInvInitialOrientation(const Body &inBody1, const Body &inBody2)
+
115 {
+
116 // q20 = q10 r0
+
117 // <=> r0 = q10^-1 q20
+
118 // <=> r0^-1 = q20^-1 q10
+
119 //
+
120 // where:
+
121 //
+
122 // q20 = initial orientation of body 2
+
123 // q10 = initial orientation of body 1
+
124 // r0 = initial rotation from body 1 to body 2
+
125 return inBody2.GetRotation().Conjugated() * inBody1.GetRotation();
+
126 }
+
+
127
+
+
129 inline void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, const Body &inBody2, Mat44Arg inRotation2, QuatArg inInvInitialOrientation)
+
130 {
+
131 // Calculate: JP = 1/2 A ML(q1^*) MR(q2 r0^*) A^T
+
132 Mat44 jp = (Mat44::sQuatLeftMultiply(0.5f * inBody1.GetRotation().Conjugated()) * Mat44::sQuatRightMultiply(inBody2.GetRotation() * inInvInitialOrientation)).GetRotationSafe();
+
133
+
134 // Calculate properties used during constraint solving
+
135 Mat44 inv_i1 = inBody1.IsDynamic()? inBody1.GetMotionProperties()->GetInverseInertiaForRotation(inRotation1) : Mat44::sZero();
+
136 Mat44 inv_i2 = inBody2.IsDynamic()? inBody2.GetMotionProperties()->GetInverseInertiaForRotation(inRotation2) : Mat44::sZero();
+
137 mInvI1_JPT = inv_i1.Multiply3x3RightTransposed(jp);
+
138 mInvI2_JPT = inv_i2.Multiply3x3RightTransposed(jp);
+
139
+
140 // Calculate effective mass: K^-1 = (J M^-1 J^T)^-1
+
141 // = (JP * I1^-1 * JP^T + JP * I2^-1 * JP^T)^-1
+
142 // = (JP * (I1^-1 + I2^-1) * JP^T)^-1
+
143 if (!mEffectiveMass.SetInversed3x3(jp.Multiply3x3(inv_i1 + inv_i2).Multiply3x3RightTransposed(jp)))
+
144 Deactivate();
+
145 else
+
146 mEffectiveMass_JP = mEffectiveMass.Multiply3x3(jp);
+
147 }
+
+
148
+
+
150 inline void Deactivate()
+
151 {
+
152 mEffectiveMass = Mat44::sZero();
+
153 mEffectiveMass_JP = Mat44::sZero();
+
154 mTotalLambda = Vec3::sZero();
+
155 }
+
+
156
+
+
158 inline bool IsActive() const
+
159 {
+
160 return mEffectiveMass(3, 3) != 0.0f;
+
161 }
+
+
162
+
+
164 inline void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
+
165 {
+
166 mTotalLambda *= inWarmStartImpulseRatio;
+
167 ApplyVelocityStep(ioBody1, ioBody2, mTotalLambda);
+
168 }
+
+
169
+
+
171 inline bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)
+
172 {
+
173 // Calculate lagrange multiplier:
+
174 //
+
175 // lambda = -K^-1 (J v + b)
+
176 Vec3 lambda = mEffectiveMass_JP.Multiply3x3(ioBody1.GetAngularVelocity() - ioBody2.GetAngularVelocity());
+
177 mTotalLambda += lambda;
+
178 return ApplyVelocityStep(ioBody1, ioBody2, lambda);
+
179 }
+
+
180
+
+
182 inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, QuatArg inInvInitialOrientation, float inBaumgarte) const
+
183 {
+
184 // Calculate constraint equation
+
185 Vec3 c = (ioBody1.GetRotation().Conjugated() * ioBody2.GetRotation() * inInvInitialOrientation).GetXYZ();
+
186 if (c != Vec3::sZero())
+
187 {
+
188 // Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
+
189 //
+
190 // lambda = -K^-1 * beta / dt * C
+
191 //
+
192 // We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
+
193 Vec3 lambda = -inBaumgarte * mEffectiveMass * c;
+
194
+
195 // Directly integrate velocity change for one time step
+
196 //
+
197 // Euler velocity integration:
+
198 // dv = M^-1 P
+
199 //
+
200 // Impulse:
+
201 // P = J^T lambda
+
202 //
+
203 // Euler position integration:
+
204 // x' = x + dv * dt
+
205 //
+
206 // Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
+
207 // Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
+
208 // stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
+
209 // integrate + a position integrate and then discard the velocity change.
+
210 if (ioBody1.IsDynamic())
+
211 ioBody1.SubRotationStep(mInvI1_JPT.Multiply3x3(lambda));
+
212 if (ioBody2.IsDynamic())
+
213 ioBody2.AddRotationStep(mInvI2_JPT.Multiply3x3(lambda));
+
214 return true;
+
215 }
+
216
+
217 return false;
+
218 }
+
+
219
+
+ +
222 {
+
223 return mTotalLambda;
+
224 }
+
+
225
+
+
227 void SaveState(StateRecorder &inStream) const
+
228 {
+
229 inStream.Write(mTotalLambda);
+
230 }
+
+
231
+
+ +
234 {
+
235 inStream.Read(mTotalLambda);
+
236 }
+
+
237
+
238private:
+
239 Mat44 mInvI1_JPT;
+
240 Mat44 mInvI2_JPT;
+
241 Mat44 mEffectiveMass;
+
242 Mat44 mEffectiveMass_JP;
+
243 Vec3 mTotalLambda { Vec3::sZero() };
+
244};
+
+
245
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Definition Body.h:35
+
const MotionProperties * GetMotionProperties() const
Access to the motion properties.
Definition Body.h:249
+
bool IsDynamic() const
Check if this body is dynamic, which means that it moves and forces can act on it.
Definition Body.h:61
+
void AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Update rotation using an Euler step (using during position integrate & constraint solving)
Definition Body.inl:81
+
Quat GetRotation() const
World space rotation of the body.
Definition Body.h:231
+
void SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)
Definition Body.inl:100
+
Vec3 GetAngularVelocity() const
Get world space angular velocity of the center of mass (unit: rad/s)
Definition Body.h:153
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sZero()
Zero matrix.
Definition Mat44.inl:30
+
static JPH_INLINE Mat44 sQuatRightMultiply(QuatArg inQ)
Returns matrix MR so that (where p and q are quaternions)
Definition Mat44.inl:847
+
JPH_INLINE Mat44 Multiply3x3RightTransposed(Mat44Arg inM) const
Multiply 3x3 matrix by the transpose of a 3x3 matrix ( )
Definition Mat44.inl:397
+
JPH_INLINE bool SetInversed3x3(Mat44Arg inM)
*this = inM.Inversed3x3(), returns false if the matrix is singular in which case *this is unchanged
Definition Mat44.inl:767
+
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition Mat44.inl:316
+
static JPH_INLINE Mat44 sQuatLeftMultiply(QuatArg inQ)
Returns matrix ML so that (where p and q are quaternions)
Definition Mat44.inl:838
+
void SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:194
+
Mat44 GetInverseInertiaForRotation(Mat44Arg inRotation) const
Get inverse inertia matrix ( ) for a given object rotation (translation will be ignored)....
Definition MotionProperties.inl:59
+
void AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)
Definition MotionProperties.h:193
+
Definition Quat.h:33
+
JPH_INLINE Quat Conjugated() const
The conjugate [w, -x, -y, -z] is the same as the inverse for unit quaternions.
Definition Quat.h:178
+
Definition RotationQuatConstraintPart.h:87
+
void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses.
Definition RotationQuatConstraintPart.h:164
+
void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, const Body &inBody2, Mat44Arg inRotation2, QuatArg inInvInitialOrientation)
Calculate properties used during the functions below.
Definition RotationQuatConstraintPart.h:129
+
Vec3 GetTotalLambda() const
Return lagrange multiplier.
Definition RotationQuatConstraintPart.h:221
+
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, QuatArg inInvInitialOrientation, float inBaumgarte) const
Iteratively update the position constraint. Makes sure C(...) = 0.
Definition RotationQuatConstraintPart.h:182
+
void Deactivate()
Deactivate this constraint.
Definition RotationQuatConstraintPart.h:150
+
static Quat sGetInvInitialOrientation(const Body &inBody1, const Body &inBody2)
Return inverse of initial rotation from body 1 to body 2 in body 1 space.
Definition RotationQuatConstraintPart.h:114
+
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition RotationQuatConstraintPart.h:233
+
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition RotationQuatConstraintPart.h:227
+
bool IsActive() const
Check if constraint is active.
Definition RotationQuatConstraintPart.h:158
+
bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)
Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equ...
Definition RotationQuatConstraintPart.h:171
+
Definition StateRecorder.h:48
+
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:29
+
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:26
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_s_t_l_aligned_allocator_8h.html b/_s_t_l_aligned_allocator_8h.html new file mode 100644 index 000000000..a08003194 --- /dev/null +++ b/_s_t_l_aligned_allocator_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Core/STLAlignedAllocator.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
STLAlignedAllocator.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  STLAlignedAllocator< T, N >
 STL allocator that takes care that memory is aligned to N bytes. More...
 
struct  STLAlignedAllocator< T, N >::rebind< T2 >
 Converting to allocator for other type. More...
 
+
+
+ + + + diff --git a/_s_t_l_aligned_allocator_8h.js b/_s_t_l_aligned_allocator_8h.js new file mode 100644 index 000000000..4f1ec9b7c --- /dev/null +++ b/_s_t_l_aligned_allocator_8h.js @@ -0,0 +1,5 @@ +var _s_t_l_aligned_allocator_8h = +[ + [ "STLAlignedAllocator< T, N >", "class_s_t_l_aligned_allocator.html", "class_s_t_l_aligned_allocator" ], + [ "STLAlignedAllocator< T, N >::rebind< T2 >", "struct_s_t_l_aligned_allocator_1_1rebind.html", "struct_s_t_l_aligned_allocator_1_1rebind" ] +]; \ No newline at end of file diff --git a/_s_t_l_aligned_allocator_8h_source.html b/_s_t_l_aligned_allocator_8h_source.html new file mode 100644 index 000000000..b18ba43c4 --- /dev/null +++ b/_s_t_l_aligned_allocator_8h_source.html @@ -0,0 +1,212 @@ + + + + + + + +Jolt Physics: Jolt/Core/STLAlignedAllocator.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
STLAlignedAllocator.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
+
10template <typename T, size_t N>
+
+ +
12{
+
13public:
+
14 using value_type = T;
+
15
+
17 using pointer = T *;
+
18 using const_pointer = const T *;
+
19
+
22 using reference = T &;
+
23 using const_reference = const T &;
+
24
+
25 using size_type = size_t;
+
26 using difference_type = ptrdiff_t;
+
27
+
29 using is_always_equal = std::true_type;
+
30
+ +
33
+
35 inline STLAlignedAllocator() = default;
+
36
+
38 template <typename T2>
+ +
40
+
+ +
43 {
+
44 return (pointer)AlignedAllocate(inN * sizeof(value_type), N);
+
45 }
+
+
46
+
+
48 inline void deallocate(pointer inPointer, size_type)
+
49 {
+
50 AlignedFree(inPointer);
+
51 }
+
+
52
+
+
54 inline bool operator == (const STLAlignedAllocator<T, N> &) const
+
55 {
+
56 return true;
+
57 }
+
+
58
+
+
59 inline bool operator != (const STLAlignedAllocator<T, N> &) const
+
60 {
+
61 return false;
+
62 }
+
+
63
+
65 template <typename T2>
+
+
66 struct rebind
+
67 {
+ +
69 };
+
+
70};
+
+
71
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
AlignedFreeFunction AlignedFree
Definition Memory.cpp:72
+
AlignedAllocateFunction AlignedAllocate
Definition Memory.cpp:71
+
STL allocator that takes care that memory is aligned to N bytes.
Definition STLAlignedAllocator.h:12
+
size_t size_type
Definition STLAlignedAllocator.h:25
+
T * pointer
Pointer to type.
Definition STLAlignedAllocator.h:17
+
bool operator!=(const STLAlignedAllocator< T, N > &) const
Definition STLAlignedAllocator.h:59
+
bool operator==(const STLAlignedAllocator< T, N > &) const
Allocators are stateless so assumed to be equal.
Definition STLAlignedAllocator.h:54
+
std::true_type propagate_on_container_move_assignment
Allocator supports moving.
Definition STLAlignedAllocator.h:32
+
ptrdiff_t difference_type
Definition STLAlignedAllocator.h:26
+
pointer allocate(size_type inN)
Allocate memory.
Definition STLAlignedAllocator.h:42
+
T value_type
Definition STLAlignedAllocator.h:14
+
STLAlignedAllocator()=default
Constructor.
+
T & reference
Definition STLAlignedAllocator.h:22
+
void deallocate(pointer inPointer, size_type)
Free memory.
Definition STLAlignedAllocator.h:48
+
STLAlignedAllocator(const STLAlignedAllocator< T2, N > &)
Constructor from other allocator.
Definition STLAlignedAllocator.h:39
+
const T * const_pointer
Definition STLAlignedAllocator.h:18
+
const T & const_reference
Definition STLAlignedAllocator.h:23
+
std::true_type is_always_equal
The allocator is stateless.
Definition STLAlignedAllocator.h:29
+
Converting to allocator for other type.
Definition STLAlignedAllocator.h:67
+
+
+ + + + diff --git a/_s_t_l_allocator_8h.html b/_s_t_l_allocator_8h.html new file mode 100644 index 000000000..06e7cff01 --- /dev/null +++ b/_s_t_l_allocator_8h.html @@ -0,0 +1,180 @@ + + + + + + + +Jolt Physics: Jolt/Core/STLAllocator.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
STLAllocator.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + +

+Classes

struct  AllocatorHasReallocate< T >
 Default implementation of AllocatorHasReallocate which tells if an allocator has a reallocate function. More...
 
class  STLAllocator< T >
 STL allocator that forwards to our allocation functions. More...
 
struct  STLAllocator< T >::rebind< T2 >
 Converting to allocator for other type. More...
 
struct  AllocatorHasReallocate< STLAllocator< T > >
 The STLAllocator implements the reallocate function if the alignment of the class is smaller or equal to the default alignment for the platform. More...
 
struct  std::hash< JPH::String >
 Declare std::hash for String, for some reason on Linux based platforms template deduction takes the wrong variant. More...
 
+ + + +

+Namespaces

namespace  std
 
+ + + + + +

+Typedefs

using String = std::basic_string< char, std::char_traits< char >, STLAllocator< char > >
 
using IStringStream = std::basic_istringstream< char, std::char_traits< char >, STLAllocator< char > >
 
+

Typedef Documentation

+ +

◆ IStringStream

+ +
+
+ + + + +
using IStringStream = std::basic_istringstream<char, std::char_traits<char>, STLAllocator<char> >
+
+ +
+
+ +

◆ String

+ +
+
+ + + + +
using String = std::basic_string<char, std::char_traits<char>, STLAllocator<char> >
+
+ +
+
+
+
+ + + + diff --git a/_s_t_l_allocator_8h.js b/_s_t_l_allocator_8h.js new file mode 100644 index 000000000..5d3518585 --- /dev/null +++ b/_s_t_l_allocator_8h.js @@ -0,0 +1,10 @@ +var _s_t_l_allocator_8h = +[ + [ "AllocatorHasReallocate< T >", "struct_allocator_has_reallocate.html", null ], + [ "STLAllocator< T >", "class_s_t_l_allocator.html", "class_s_t_l_allocator" ], + [ "STLAllocator< T >::rebind< T2 >", "struct_s_t_l_allocator_1_1rebind.html", "struct_s_t_l_allocator_1_1rebind" ], + [ "AllocatorHasReallocate< STLAllocator< T > >", "struct_allocator_has_reallocate_3_01_s_t_l_allocator_3_01_t_01_4_01_4.html", null ], + [ "std::hash< JPH::String >", "structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.html", "structstd_1_1hash_3_01_j_p_h_1_1_string_01_4" ], + [ "IStringStream", "_s_t_l_allocator_8h.html#a9c1541a8d5ffcc9c2dbf26154ff11a18", null ], + [ "String", "_s_t_l_allocator_8h.html#a0dacf8f805f8da23c2a50d9f7eb41ece", null ] +]; \ No newline at end of file diff --git a/_s_t_l_allocator_8h_source.html b/_s_t_l_allocator_8h_source.html new file mode 100644 index 000000000..dfc49d304 --- /dev/null +++ b/_s_t_l_allocator_8h_source.html @@ -0,0 +1,279 @@ + + + + + + + +Jolt Physics: Jolt/Core/STLAllocator.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
STLAllocator.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
+
10template <class T> struct AllocatorHasReallocate { static constexpr bool sValue = false; };
+
11
+
12#ifndef JPH_DISABLE_CUSTOM_ALLOCATOR
+
13
+
15template <typename T>
+
+ +
17{
+
18public:
+
19 using value_type = T;
+
20
+
22 using pointer = T *;
+
23 using const_pointer = const T *;
+
24
+
27 using reference = T &;
+
28 using const_reference = const T &;
+
29
+
30 using size_type = size_t;
+
31 using difference_type = ptrdiff_t;
+
32
+
34 using is_always_equal = std::true_type;
+
35
+ +
38
+
40 inline STLAllocator() = default;
+
41
+
43 template <typename T2>
+
44 inline STLAllocator(const STLAllocator<T2> &) { }
+
45
+
47 static constexpr bool needs_aligned_allocate = alignof(T) > (JPH_CPU_ADDRESS_BITS == 32? 8 : 16);
+
48
+
+ +
51 {
+
52 if constexpr (needs_aligned_allocate)
+
53 return pointer(AlignedAllocate(inN * sizeof(value_type), alignof(T)));
+
54 else
+
55 return pointer(Allocate(inN * sizeof(value_type)));
+
56 }
+
+
57
+
59 static constexpr bool has_reallocate = std::is_trivially_copyable<T>() && !needs_aligned_allocate;
+
60
+
62 template <bool has_reallocate_v = has_reallocate, typename = std::enable_if_t<has_reallocate_v>>
+
+
63 inline pointer reallocate(pointer inOldPointer, size_type inOldSize, size_type inNewSize)
+
64 {
+
65 JPH_ASSERT(inNewSize > 0); // Reallocating to zero size is implementation dependent, so we don't allow it
+
66 return pointer(Reallocate(inOldPointer, inOldSize * sizeof(value_type), inNewSize * sizeof(value_type)));
+
67 }
+
+
68
+
+
70 inline void deallocate(pointer inPointer, size_type)
+
71 {
+
72 if constexpr (needs_aligned_allocate)
+
73 AlignedFree(inPointer);
+
74 else
+
75 Free(inPointer);
+
76 }
+
+
77
+
+
79 inline bool operator == (const STLAllocator<T> &) const
+
80 {
+
81 return true;
+
82 }
+
+
83
+
+
84 inline bool operator != (const STLAllocator<T> &) const
+
85 {
+
86 return false;
+
87 }
+
+
88
+
90 template <typename T2>
+
+
91 struct rebind
+
92 {
+ +
94 };
+
+
95};
+
+
96
+
98template <class T> struct AllocatorHasReallocate<STLAllocator<T>> { static constexpr bool sValue = STLAllocator<T>::has_reallocate; };
+
99
+
100#else
+
101
+
102template <typename T> using STLAllocator = std::allocator<T>;
+
103
+
104#endif // !JPH_DISABLE_CUSTOM_ALLOCATOR
+
105
+
106// Declare STL containers that use our allocator
+
107using String = std::basic_string<char, std::char_traits<char>, STLAllocator<char>>;
+
108using IStringStream = std::basic_istringstream<char, std::char_traits<char>, STLAllocator<char>>;
+
109
+ +
111
+
112#if (!defined(JPH_PLATFORM_WINDOWS) || defined(JPH_COMPILER_MINGW)) && !defined(JPH_DISABLE_CUSTOM_ALLOCATOR)
+
113
+
114namespace std
+
115{
+
117 template <>
+
+
118 struct hash<JPH::String>
+
119 {
+
+
120 inline size_t operator () (const JPH::String &inRHS) const
+
121 {
+
122 return hash<string_view> { } (inRHS);
+
123 }
+
+
124 };
+
+
125}
+
126
+
127#endif // (!JPH_PLATFORM_WINDOWS || JPH_COMPILER_MINGW) && !JPH_DISABLE_CUSTOM_ALLOCATOR
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
AllocateFunction Allocate
Definition Memory.cpp:68
+
ReallocateFunction Reallocate
Definition Memory.cpp:69
+
FreeFunction Free
Definition Memory.cpp:70
+
AlignedFreeFunction AlignedFree
Definition Memory.cpp:72
+
AlignedAllocateFunction AlignedAllocate
Definition Memory.cpp:71
+
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+
std::basic_istringstream< char, std::char_traits< char >, STLAllocator< char > > IStringStream
Definition STLAllocator.h:108
+
STL allocator that forwards to our allocation functions.
Definition STLAllocator.h:17
+
STLAllocator()=default
Constructor.
+
std::true_type propagate_on_container_move_assignment
Allocator supports moving.
Definition STLAllocator.h:37
+
pointer allocate(size_type inN)
Allocate memory.
Definition STLAllocator.h:50
+
static constexpr bool needs_aligned_allocate
If this allocator needs to fall back to aligned allocations because the type requires it.
Definition STLAllocator.h:47
+
static constexpr bool has_reallocate
Should we expose a reallocate function?
Definition STLAllocator.h:59
+
T * pointer
Pointer to type.
Definition STLAllocator.h:22
+
const T & const_reference
Definition STLAllocator.h:28
+
bool operator==(const STLAllocator< T > &) const
Allocators are stateless so assumed to be equal.
Definition STLAllocator.h:79
+
bool operator!=(const STLAllocator< T > &) const
Definition STLAllocator.h:84
+
pointer reallocate(pointer inOldPointer, size_type inOldSize, size_type inNewSize)
Reallocate memory.
Definition STLAllocator.h:63
+
std::true_type is_always_equal
The allocator is stateless.
Definition STLAllocator.h:34
+
T value_type
Definition STLAllocator.h:19
+
void deallocate(pointer inPointer, size_type)
Free memory.
Definition STLAllocator.h:70
+
size_t size_type
Definition STLAllocator.h:30
+
STLAllocator(const STLAllocator< T2 > &)
Constructor from other allocator.
Definition STLAllocator.h:44
+
ptrdiff_t difference_type
Definition STLAllocator.h:31
+
const T * const_pointer
Definition STLAllocator.h:23
+
T & reference
Definition STLAllocator.h:27
+
Definition Array.h:575
+
Default implementation of AllocatorHasReallocate which tells if an allocator has a reallocate functio...
Definition STLAllocator.h:10
+
static constexpr bool sValue
Definition STLAllocator.h:10
+
Converting to allocator for other type.
Definition STLAllocator.h:92
+
+
+ + + + diff --git a/_s_t_l_temp_allocator_8h.html b/_s_t_l_temp_allocator_8h.html new file mode 100644 index 000000000..baa0cea20 --- /dev/null +++ b/_s_t_l_temp_allocator_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Core/STLTempAllocator.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
STLTempAllocator.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  STLTempAllocator< T >
 STL allocator that wraps around TempAllocator. More...
 
struct  STLTempAllocator< T >::rebind< T2 >
 Converting to allocator for other type. More...
 
+
+
+ + + + diff --git a/_s_t_l_temp_allocator_8h.js b/_s_t_l_temp_allocator_8h.js new file mode 100644 index 000000000..524d89fa7 --- /dev/null +++ b/_s_t_l_temp_allocator_8h.js @@ -0,0 +1,5 @@ +var _s_t_l_temp_allocator_8h = +[ + [ "STLTempAllocator< T >", "class_s_t_l_temp_allocator.html", "class_s_t_l_temp_allocator" ], + [ "STLTempAllocator< T >::rebind< T2 >", "struct_s_t_l_temp_allocator_1_1rebind.html", "struct_s_t_l_temp_allocator_1_1rebind" ] +]; \ No newline at end of file diff --git a/_s_t_l_temp_allocator_8h_source.html b/_s_t_l_temp_allocator_8h_source.html new file mode 100644 index 000000000..16a5c9622 --- /dev/null +++ b/_s_t_l_temp_allocator_8h_source.html @@ -0,0 +1,225 @@ + + + + + + + +Jolt Physics: Jolt/Core/STLTempAllocator.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
STLTempAllocator.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
+
12template <typename T>
+
+ +
14{
+
15public:
+
16 using value_type = T;
+
17
+
19 using pointer = T *;
+
20 using const_pointer = const T *;
+
21
+
24 using reference = T &;
+
25 using const_reference = const T &;
+
26
+
27 using size_type = size_t;
+
28 using difference_type = ptrdiff_t;
+
29
+
31 using is_always_equal = std::false_type;
+
32
+
34 inline STLTempAllocator(TempAllocator &inAllocator) : mAllocator(inAllocator) { }
+
35
+
37 template <typename T2>
+
38 inline explicit STLTempAllocator(const STLTempAllocator<T2> &inRHS) : mAllocator(inRHS.GetAllocator()) { }
+
39
+
+ +
42 {
+
43 return pointer(mAllocator.Allocate(uint(inN * sizeof(value_type))));
+
44 }
+
+
45
+
+
47 inline void deallocate(pointer inPointer, size_type inN)
+
48 {
+
49 mAllocator.Free(inPointer, uint(inN * sizeof(value_type)));
+
50 }
+
+
51
+
+
53 inline bool operator == (const STLTempAllocator<T> &inRHS) const
+
54 {
+
55 return &mAllocator == &inRHS.mAllocator;
+
56 }
+
+
57
+
+
58 inline bool operator != (const STLTempAllocator<T> &inRHS) const
+
59 {
+
60 return &mAllocator != &inRHS.mAllocator;
+
61 }
+
+
62
+
64 template <typename T2>
+
+
65 struct rebind
+
66 {
+ +
68 };
+
+
69
+
+ +
72 {
+
73 return mAllocator;
+
74 }
+
+
75
+
76private:
+
77 TempAllocator & mAllocator;
+
78};
+
+
79
+ +
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
STL allocator that wraps around TempAllocator.
Definition STLTempAllocator.h:14
+
std::false_type is_always_equal
The allocator is not stateless (depends on the temp allocator)
Definition STLTempAllocator.h:31
+
T * pointer
Pointer to type.
Definition STLTempAllocator.h:19
+
T & reference
Definition STLTempAllocator.h:24
+
bool operator!=(const STLTempAllocator< T > &inRHS) const
Definition STLTempAllocator.h:58
+
ptrdiff_t difference_type
Definition STLTempAllocator.h:28
+
STLTempAllocator(const STLTempAllocator< T2 > &inRHS)
Constructor from other allocator.
Definition STLTempAllocator.h:38
+
pointer allocate(size_type inN)
Allocate memory.
Definition STLTempAllocator.h:41
+
STLTempAllocator(TempAllocator &inAllocator)
Constructor.
Definition STLTempAllocator.h:34
+
const T & const_reference
Definition STLTempAllocator.h:25
+
const T * const_pointer
Definition STLTempAllocator.h:20
+
void deallocate(pointer inPointer, size_type inN)
Free memory.
Definition STLTempAllocator.h:47
+
size_t size_type
Definition STLTempAllocator.h:27
+
TempAllocator & GetAllocator() const
Get our temp allocator.
Definition STLTempAllocator.h:71
+
T value_type
Definition STLTempAllocator.h:16
+
bool operator==(const STLTempAllocator< T > &inRHS) const
Allocators are not-stateless, assume if allocator address matches that the allocators are the same.
Definition STLTempAllocator.h:53
+
Definition TempAllocator.h:16
+
virtual void Free(void *inAddress, uint inSize)=0
Frees inSize bytes of memory located at inAddress.
+
virtual void * Allocate(uint inSize)=0
Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
+
Converting to allocator for other type.
Definition STLTempAllocator.h:66
+
+
+ + + + diff --git a/_samples_8md.html b/_samples_8md.html new file mode 100644 index 000000000..660f60e91 --- /dev/null +++ b/_samples_8md.html @@ -0,0 +1,114 @@ + + + + + + + +Jolt Physics: Docs/Samples.md File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Docs/Samples.md File Reference
+
+
+
+
+ + + + diff --git a/_scale_helpers_8h.html b/_scale_helpers_8h.html new file mode 100644 index 000000000..4484592c7 --- /dev/null +++ b/_scale_helpers_8h.html @@ -0,0 +1,161 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/ScaleHelpers.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ScaleHelpers.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Namespaces

namespace  ScaleHelpers
 Helper functions to get properties of a scaling vector.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

bool ScaleHelpers::IsNotScaled (Vec3Arg inScale)
 Test if a scale is identity.
 
bool ScaleHelpers::IsUniformScale (Vec3Arg inScale)
 Test if a scale is uniform.
 
bool ScaleHelpers::IsUniformScaleXZ (Vec3Arg inScale)
 Test if a scale is uniform in XZ.
 
float ScaleHelpers::ScaleConvexRadius (float inConvexRadius, Vec3Arg inScale)
 Scale the convex radius of an object.
 
bool ScaleHelpers::IsInsideOut (Vec3Arg inScale)
 Test if a scale flips an object inside out (which requires flipping all normals and polygon windings)
 
bool ScaleHelpers::IsZeroScale (Vec3Arg inScale)
 Test if any of the components of the scale have a value below cMinScale.
 
Vec3 ScaleHelpers::MakeNonZeroScale (Vec3Arg inScale)
 Ensure that the scale for each component is at least cMinScale.
 
Vec3 ScaleHelpers::MakeUniformScale (Vec3Arg inScale)
 Get the average scale if inScale, used to make the scale uniform when a shape doesn't support non-uniform scale.
 
Vec3 ScaleHelpers::MakeUniformScaleXZ (Vec3Arg inScale)
 Average the scale in XZ, used to make the scale uniform when a shape doesn't support non-uniform scale in the XZ plane.
 
bool ScaleHelpers::CanScaleBeRotated (QuatArg inRotation, Vec3Arg inScale)
 
Vec3 ScaleHelpers::RotateScale (QuatArg inRotation, Vec3Arg inScale)
 
+
+
+ + + + diff --git a/_scale_helpers_8h.js b/_scale_helpers_8h.js new file mode 100644 index 000000000..e2fab76e1 --- /dev/null +++ b/_scale_helpers_8h.js @@ -0,0 +1,14 @@ +var _scale_helpers_8h = +[ + [ "CanScaleBeRotated", "_scale_helpers_8h.html#a024fa9a3c672218ce6b7aaa97d953ae1", null ], + [ "IsInsideOut", "_scale_helpers_8h.html#a968d814e04071d431f79a2ba4e9d4da1", null ], + [ "IsNotScaled", "_scale_helpers_8h.html#abf3b185a98bea874b96fa82a0db2d7e2", null ], + [ "IsUniformScale", "_scale_helpers_8h.html#a8ff2f9310527acbb4b02a00150fe02fe", null ], + [ "IsUniformScaleXZ", "_scale_helpers_8h.html#ab4d95f2ecd59a1a77263a3be465fd34e", null ], + [ "IsZeroScale", "_scale_helpers_8h.html#a3f452edeafb5aeb1ea965c1a2b1d9912", null ], + [ "MakeNonZeroScale", "_scale_helpers_8h.html#a7445e71cd125deb818c71e867ea9275e", null ], + [ "MakeUniformScale", "_scale_helpers_8h.html#a1eeb857fb92f13a5ddd9dac662146b96", null ], + [ "MakeUniformScaleXZ", "_scale_helpers_8h.html#a18833eca6231a55b302eaa70c81b5162", null ], + [ "RotateScale", "_scale_helpers_8h.html#a317905196055a0a720d6468cbb4840b9", null ], + [ "ScaleConvexRadius", "_scale_helpers_8h.html#a3c182e760f2d4a5b0985b20d50b0c870", null ] +]; \ No newline at end of file diff --git a/_scale_helpers_8h_source.html b/_scale_helpers_8h_source.html new file mode 100644 index 000000000..095f595eb --- /dev/null +++ b/_scale_helpers_8h_source.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/ScaleHelpers.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ScaleHelpers.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
+
+
12namespace ScaleHelpers
+
13{
+
15 static constexpr float cMinScale = 1.0e-6f;
+
16
+
18 static constexpr float cScaleToleranceSq = 1.0e-8f;
+
19
+
21 inline bool IsNotScaled(Vec3Arg inScale) { return inScale.IsClose(Vec3::sReplicate(1.0f), cScaleToleranceSq); }
+
22
+
24 inline bool IsUniformScale(Vec3Arg inScale) { return inScale.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>().IsClose(inScale, cScaleToleranceSq); }
+
25
+
27 inline bool IsUniformScaleXZ(Vec3Arg inScale) { return inScale.Swizzle<SWIZZLE_Z, SWIZZLE_Y, SWIZZLE_X>().IsClose(inScale, ScaleHelpers::cScaleToleranceSq); }
+
28
+
30 inline float ScaleConvexRadius(float inConvexRadius, Vec3Arg inScale) { return min(inConvexRadius * inScale.Abs().ReduceMin(), cDefaultConvexRadius); }
+
31
+
33 inline bool IsInsideOut(Vec3Arg inScale) { return (CountBits(Vec3::sLess(inScale, Vec3::sZero()).GetTrues() & 0x7) & 1) != 0; }
+
34
+
36 inline bool IsZeroScale(Vec3Arg inScale) { return Vec3::sLess(inScale.Abs(), Vec3::sReplicate(cMinScale)).TestAnyXYZTrue(); }
+
37
+
39 inline Vec3 MakeNonZeroScale(Vec3Arg inScale) { return inScale.GetSign() * Vec3::sMax(inScale.Abs(), Vec3::sReplicate(cMinScale)); }
+
40
+
42 inline Vec3 MakeUniformScale(Vec3Arg inScale) { return Vec3::sReplicate((inScale.GetX() + inScale.GetY() + inScale.GetZ()) / 3.0f); }
+
43
+
45 inline Vec3 MakeUniformScaleXZ(Vec3Arg inScale) { return 0.5f * (inScale + inScale.Swizzle<SWIZZLE_Z, SWIZZLE_Y, SWIZZLE_X>()); }
+
46
+
+
51 inline bool CanScaleBeRotated(QuatArg inRotation, Vec3Arg inScale)
+
52 {
+
53 // inScale is a scale in local space of the shape, so the transform for the shape (ignoring translation) is: T = Mat44::sScale(inScale) * mRotation.
+
54 // when we pass the scale to the child it needs to be local to the child, so we want T = mRotation * Mat44::sScale(ChildScale).
+
55 // Solving for ChildScale: ChildScale = mRotation^-1 * Mat44::sScale(inScale) * mRotation = mRotation^T * Mat44::sScale(inScale) * mRotation
+
56 // If any of the off diagonal elements are non-zero, it means the scale / rotation is not compatible.
+
57 Mat44 r = Mat44::sRotation(inRotation);
+
58 Mat44 child_scale = r.Multiply3x3LeftTransposed(r.PostScaled(inScale));
+
59
+
60 // Get the columns, but zero the diagonal
+
61 Vec4 zero = Vec4::sZero();
+
62 Vec4 c0 = Vec4::sSelect(child_scale.GetColumn4(0), zero, UVec4(0xffffffff, 0, 0, 0)).Abs();
+
63 Vec4 c1 = Vec4::sSelect(child_scale.GetColumn4(1), zero, UVec4(0, 0xffffffff, 0, 0)).Abs();
+
64 Vec4 c2 = Vec4::sSelect(child_scale.GetColumn4(2), zero, UVec4(0, 0, 0xffffffff, 0)).Abs();
+
65
+
66 // Check if all elements are less than epsilon
+
67 Vec4 epsilon = Vec4::sReplicate(1.0e-6f);
+
68 return UVec4::sAnd(UVec4::sAnd(Vec4::sLess(c0, epsilon), Vec4::sLess(c1, epsilon)), Vec4::sLess(c2, epsilon)).TestAllTrue();
+
69 }
+
+
70
+
+
75 inline Vec3 RotateScale(QuatArg inRotation, Vec3Arg inScale)
+
76 {
+
77 // Get the diagonal of mRotation^T * Mat44::sScale(inScale) * mRotation (see comment at CanScaleBeRotated)
+
78 Mat44 r = Mat44::sRotation(inRotation);
+ +
80 }
+
+
81}
+
+
82
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
uint CountBits(uint32 inValue)
Count the number of 1 bits in a value.
Definition Math.h:161
+ +
constexpr float cDefaultConvexRadius
How much padding to add around objects.
Definition PhysicsSettings.h:16
+
@ SWIZZLE_Z
Use the Z component.
Definition Swizzle.h:14
+
@ SWIZZLE_X
Use the X component.
Definition Swizzle.h:12
+
@ SWIZZLE_Y
Use the Y component.
Definition Swizzle.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
+
JPH_INLINE Mat44 Multiply3x3LeftTransposed(Mat44Arg inM) const
Multiply transpose of 3x3 matrix by 3x3 matrix ( )
Definition Mat44.inl:383
+
JPH_INLINE Mat44 PostScaled(Vec3Arg inScale) const
Scale a matrix: result = Mat44::sScale(inScale) * this.
Definition Mat44.inl:913
+
JPH_INLINE Vec3 GetDiagonal3() const
Definition Mat44.h:154
+
JPH_INLINE Vec4 GetColumn4(uint inCol) const
Definition Mat44.h:160
+
static JPH_INLINE Mat44 sRotation(Vec3Arg inAxis, float inAngle)
Rotate around arbitrary axis.
Definition Mat44.inl:139
+
Definition Quat.h:33
+
Definition UVec4.h:12
+
JPH_INLINE bool TestAllTrue() const
Test if all components are true (true is when highest bit of component is set)
Definition UVec4.inl:405
+
JPH_INLINE bool TestAnyXYZTrue() const
Test if any of X, Y or Z components are true (true is when highest bit of component is set)
Definition UVec4.inl:400
+
static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)
Logical and (component wise)
Definition UVec4.inl:199
+
Definition Vec3.h:17
+
JPH_INLINE bool IsClose(Vec3Arg inV2, float inMaxDistSq=1.0e-12f) const
Test if two vectors are close.
Definition Vec3.inl:342
+
static JPH_INLINE Vec3 sMax(Vec3Arg inV1, Vec3Arg inV2)
Return the maximum of each of the components.
Definition Vec3.inl:159
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
JPH_INLINE float ReduceMin() const
Get the minimum of X, Y and Z.
Definition Vec3.inl:806
+
JPH_INLINE Vec3 Abs() const
Return the absolute value of each of the components.
Definition Vec3.inl:572
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE UVec4 sLess(Vec3Arg inV1, Vec3Arg inV2)
Less than (component wise)
Definition Vec3.inl:192
+
static JPH_INLINE Vec3 sReplicate(float inV)
Replicate inV across all components.
Definition Vec3.inl:118
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
JPH_INLINE Vec3 GetSign() const
Get vector that contains the sign of each element (returns 1.0f if positive, -1.0f if negative)
Definition Vec3.inl:834
+
JPH_INLINE Vec3 Swizzle() const
Swizzle the elements in inV.
+
Definition Vec4.h:14
+
JPH_INLINE Vec4 Abs() const
Return the absolute value of each of the components.
Definition Vec4.inl:599
+
static JPH_INLINE UVec4 sLess(Vec4Arg inV1, Vec4Arg inV2)
Less than (component wise)
Definition Vec4.inl:180
+
static JPH_INLINE Vec4 sSelect(Vec4Arg inV1, Vec4Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec4.inl:254
+
static JPH_INLINE Vec4 sZero()
Vector with all zeros.
Definition Vec4.inl:63
+
static JPH_INLINE Vec4 sReplicate(float inV)
Replicate inV across all components.
Definition Vec4.inl:74
+
Helper functions to get properties of a scaling vector.
Definition ScaleHelpers.h:13
+
bool CanScaleBeRotated(QuatArg inRotation, Vec3Arg inScale)
Definition ScaleHelpers.h:51
+
Vec3 MakeUniformScaleXZ(Vec3Arg inScale)
Average the scale in XZ, used to make the scale uniform when a shape doesn't support non-uniform scal...
Definition ScaleHelpers.h:45
+
Vec3 MakeUniformScale(Vec3Arg inScale)
Get the average scale if inScale, used to make the scale uniform when a shape doesn't support non-uni...
Definition ScaleHelpers.h:42
+
Vec3 RotateScale(QuatArg inRotation, Vec3Arg inScale)
Definition ScaleHelpers.h:75
+
float ScaleConvexRadius(float inConvexRadius, Vec3Arg inScale)
Scale the convex radius of an object.
Definition ScaleHelpers.h:30
+
bool IsZeroScale(Vec3Arg inScale)
Test if any of the components of the scale have a value below cMinScale.
Definition ScaleHelpers.h:36
+
Vec3 MakeNonZeroScale(Vec3Arg inScale)
Ensure that the scale for each component is at least cMinScale.
Definition ScaleHelpers.h:39
+
bool IsUniformScale(Vec3Arg inScale)
Test if a scale is uniform.
Definition ScaleHelpers.h:24
+
bool IsInsideOut(Vec3Arg inScale)
Test if a scale flips an object inside out (which requires flipping all normals and polygon windings)
Definition ScaleHelpers.h:33
+
bool IsUniformScaleXZ(Vec3Arg inScale)
Test if a scale is uniform in XZ.
Definition ScaleHelpers.h:27
+
bool IsNotScaled(Vec3Arg inScale)
Test if a scale is identity.
Definition ScaleHelpers.h:21
+
+
+ + + + diff --git a/_scaled_shape_8cpp.html b/_scaled_shape_8cpp.html new file mode 100644 index 000000000..bbe0561c2 --- /dev/null +++ b/_scaled_shape_8cpp.html @@ -0,0 +1,151 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/ScaledShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ScaledShape.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (ScaledShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (ScaledShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_scaled_shape_8cpp.js b/_scaled_shape_8cpp.js new file mode 100644 index 000000000..251b8193e --- /dev/null +++ b/_scaled_shape_8cpp.js @@ -0,0 +1,4 @@ +var _scaled_shape_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_scaled_shape_8cpp.html#a90a7b7c9fc2cf88380027f5fc3cfaf60", null ] +]; \ No newline at end of file diff --git a/_scaled_shape_8h.html b/_scaled_shape_8h.html new file mode 100644 index 000000000..df3b048b5 --- /dev/null +++ b/_scaled_shape_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/ScaledShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ScaledShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  ScaledShapeSettings
 Class that constructs a ScaledShape. More...
 
class  ScaledShape
 A shape that scales a child shape in local space of that shape. The scale can be non-uniform and can even turn it inside out when one or three components of the scale are negative. More...
 
+
+
+ + + + diff --git a/_scaled_shape_8h.js b/_scaled_shape_8h.js new file mode 100644 index 000000000..83de47b7d --- /dev/null +++ b/_scaled_shape_8h.js @@ -0,0 +1,5 @@ +var _scaled_shape_8h = +[ + [ "ScaledShapeSettings", "class_scaled_shape_settings.html", null ], + [ "ScaledShape", "class_scaled_shape.html", "class_scaled_shape" ] +]; \ No newline at end of file diff --git a/_scaled_shape_8h_source.html b/_scaled_shape_8h_source.html new file mode 100644 index 000000000..ff54a03d7 --- /dev/null +++ b/_scaled_shape_8h_source.html @@ -0,0 +1,316 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/ScaledShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ScaledShape.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
+ + +
9
+ +
11
+ + +
14
+
+ +
17{
+ +
19
+
20
+
21 ScaledShapeSettings() = default;
+
22
+
24 ScaledShapeSettings(const ShapeSettings *inShape, Vec3Arg inScale) : DecoratedShapeSettings(inShape), mScale(inScale) { }
+
25
+
27 ScaledShapeSettings(const Shape *inShape, Vec3Arg inScale) : DecoratedShapeSettings(inShape), mScale(inScale) { }
+
28
+
29 // See: ShapeSettings
+
30 virtual ShapeResult Create() const override;
+
31
+
32 Vec3 mScale = Vec3(1, 1, 1);
+
33};
+
+
34
+
+ +
37{
+
38public:
+ +
40
+ +
43 ScaledShape(const ScaledShapeSettings &inSettings, ShapeResult &outResult);
+
44
+
46 ScaledShape(const Shape *inShape, Vec3Arg inScale) : DecoratedShape(EShapeSubType::Scaled, inShape), mScale(inScale) { JPH_ASSERT(!ScaleHelpers::IsZeroScale(mScale)); }
+
47
+
49 Vec3 GetScale() const { return mScale; }
+
50
+
51 // See Shape::GetCenterOfMass
+
52 virtual Vec3 GetCenterOfMass() const override { return mScale * mInnerShape->GetCenterOfMass(); }
+
53
+
54 // See Shape::GetLocalBounds
+
55 virtual AABox GetLocalBounds() const override;
+
56
+
57 // See Shape::GetWorldSpaceBounds
+
58 virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+ +
60
+
61 // See Shape::GetInnerRadius
+
62 virtual float GetInnerRadius() const override { return mScale.ReduceMin() * mInnerShape->GetInnerRadius(); }
+
63
+
64 // See Shape::GetMassProperties
+
65 virtual MassProperties GetMassProperties() const override;
+
66
+
67 // See Shape::GetSubShapeTransformedShape
+
68 virtual TransformedShape GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const override;
+
69
+
70 // See Shape::GetSurfaceNormal
+
71 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
72
+
73 // See Shape::GetSupportingFace
+
74 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
75
+
76 // See Shape::GetSubmergedVolume
+
77 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override;
+
78
+
79#ifdef JPH_DEBUG_RENDERER
+
80 // See Shape::Draw
+
81 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
82
+
83 // See Shape::DrawGetSupportFunction
+
84 virtual void DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override;
+
85
+
86 // See Shape::DrawGetSupportingFace
+
87 virtual void DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+
88#endif // JPH_DEBUG_RENDERER
+
89
+
90 // See Shape::CastRay
+
91 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
92 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
93
+
94 // See: Shape::CollidePoint
+
95 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
96
+
97 // See: Shape::CollideSoftBodyVertices
+
98 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
99
+
100 // See Shape::CollectTransformedShapes
+
101 virtual void CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const override;
+
102
+
103 // See Shape::TransformShape
+
104 virtual void TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const override;
+
105
+
106 // See Shape::GetTrianglesStart
+
107 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override { JPH_ASSERT(false, "Cannot call on non-leaf shapes, use CollectTransformedShapes to collect the leaves first!"); }
+
108
+
109 // See Shape::GetTrianglesNext
+
110 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override { JPH_ASSERT(false, "Cannot call on non-leaf shapes, use CollectTransformedShapes to collect the leaves first!"); return 0; }
+
111
+
112 // See Shape
+
113 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
114
+
115 // See Shape::GetStats
+
116 virtual Stats GetStats() const override { return Stats(sizeof(*this), 0); }
+
117
+
118 // See Shape::GetVolume
+
119 virtual float GetVolume() const override;
+
120
+
121 // See Shape::IsValidScale
+
122 virtual bool IsValidScale(Vec3Arg inScale) const override;
+
123
+
124 // See Shape::MakeScaleValid
+
125 virtual Vec3 MakeScaleValid(Vec3Arg inScale) const override;
+
126
+
127 // Register shape functions with the registry
+
128 static void sRegister();
+
129
+
130protected:
+
131 // See: Shape::RestoreBinaryState
+
132 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
133
+
134private:
+
135 // Helper functions called by CollisionDispatch
+
136 static void sCollideScaledVsShape(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);
+
137 static void sCollideShapeVsScaled(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);
+
138 static void sCastScaledVsShape(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
139 static void sCastShapeVsScaled(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
140
+
141 Vec3 mScale = Vec3(1, 1, 1);
+
142};
+
+
143
+ +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_IF_DEBUG_RENDERER(...)
Definition Core.h:536
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#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:76
+ +
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
+
Definition DebugRenderer.h:47
+
Base class for shapes that decorate another shape with extra functionality (e.g. scale,...
Definition DecoratedShape.h:29
+
Class that constructs a DecoratedShape.
Definition DecoratedShape.h:13
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
Definition Quat.h:33
+
Specialization of cast result against a shape.
Definition CastResult.h:30
+
Settings to be passed with a ray cast.
Definition RayCast.h:70
+ +
A shape that scales a child shape in local space of that shape. The scale can be non-uniform and can ...
Definition ScaledShape.h:37
+
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition ScaledShape.h:116
+
Vec3 GetScale() const
Get the scale.
Definition ScaledShape.h:49
+
JPH_OVERRIDE_NEW_DELETE ScaledShape()
Constructor.
Definition ScaledShape.h:42
+
virtual float GetInnerRadius() const override
Definition ScaledShape.h:62
+
ScaledShape(const Shape *inShape, Vec3Arg inScale)
Constructor that decorates another shape with a scale.
Definition ScaledShape.h:46
+
virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
Definition ScaledShape.h:110
+
virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
Definition ScaledShape.h:107
+
virtual Vec3 GetCenterOfMass() const override
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition ScaledShape.h:52
+
Class that constructs a ScaledShape.
Definition ScaledShape.h:17
+
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:184
+
virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
Definition Shape.h:220
+
Definition Shape.h:145
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
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 TransformedShape.h:26
+
Definition Vec3.h:17
+
bool IsZeroScale(Vec3Arg inScale)
Test if any of the components of the scale have a value below cMinScale.
Definition ScaleHelpers.h:36
+
Definition RayCast.h:47
+
An opaque buffer that holds shape specific information during GetTrianglesStart/Next.
Definition Shape.h:348
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_scope_exit_8h.html b/_scope_exit_8h.html new file mode 100644 index 000000000..9fb542f40 --- /dev/null +++ b/_scope_exit_8h.html @@ -0,0 +1,194 @@ + + + + + + + +Jolt Physics: Jolt/Core/ScopeExit.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ScopeExit.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  ScopeExit< F >
 Class that calls a function when it goes out of scope. More...
 
+ + + + + + + + +

+Macros

#define JPH_SCOPE_EXIT_TAG2(line)   scope_exit##line
 
#define JPH_SCOPE_EXIT_TAG(line)   JPH_SCOPE_EXIT_TAG2(line)
 
#define JPH_SCOPE_EXIT(...)   ScopeExit JPH_SCOPE_EXIT_TAG(__LINE__)(__VA_ARGS__)
 Usage: JPH_SCOPE_EXIT([]{ code to call on scope exit });.
 
+

Macro Definition Documentation

+ +

◆ JPH_SCOPE_EXIT

+ +
+
+ + + + + + + + +
#define JPH_SCOPE_EXIT( ...)   ScopeExit JPH_SCOPE_EXIT_TAG(__LINE__)(__VA_ARGS__)
+
+ +

Usage: JPH_SCOPE_EXIT([]{ code to call on scope exit });.

+ +
+
+ +

◆ JPH_SCOPE_EXIT_TAG

+ +
+
+ + + + + + + + +
#define JPH_SCOPE_EXIT_TAG( line)   JPH_SCOPE_EXIT_TAG2(line)
+
+ +
+
+ +

◆ JPH_SCOPE_EXIT_TAG2

+ +
+
+ + + + + + + + +
#define JPH_SCOPE_EXIT_TAG2( line)   scope_exit##line
+
+ +
+
+
+
+ + + + diff --git a/_scope_exit_8h.js b/_scope_exit_8h.js new file mode 100644 index 000000000..73f83502d --- /dev/null +++ b/_scope_exit_8h.js @@ -0,0 +1,7 @@ +var _scope_exit_8h = +[ + [ "ScopeExit< F >", "class_scope_exit.html", "class_scope_exit" ], + [ "JPH_SCOPE_EXIT", "_scope_exit_8h.html#a839a77790fe3ad876d339661b0dedc82", null ], + [ "JPH_SCOPE_EXIT_TAG", "_scope_exit_8h.html#a34f8b40943318ef531e67cda41e687b9", null ], + [ "JPH_SCOPE_EXIT_TAG2", "_scope_exit_8h.html#af3b6234fdd42f0f27a584738fb79b60a", null ] +]; \ No newline at end of file diff --git a/_scope_exit_8h_source.html b/_scope_exit_8h_source.html new file mode 100644 index 000000000..f1752f03e --- /dev/null +++ b/_scope_exit_8h_source.html @@ -0,0 +1,178 @@ + + + + + + + +Jolt Physics: Jolt/Core/ScopeExit.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ScopeExit.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+
12template <class F>
+
+
13class ScopeExit : public NonCopyable
+
14{
+
15public:
+
17 JPH_INLINE explicit ScopeExit(F &&inFunction) : mFunction(std::move(inFunction)) { }
+
18
+
20 JPH_INLINE ~ScopeExit() { if (!mInvoked) mFunction(); }
+
21
+
+
23 JPH_INLINE void Invoke()
+
24 {
+
25 if (!mInvoked)
+
26 {
+
27 mFunction();
+
28 mInvoked = true;
+
29 }
+
30 }
+
+
31
+
+
33 JPH_INLINE void Release()
+
34 {
+
35 mInvoked = true;
+
36 }
+
+
37
+
38private:
+
39 F mFunction;
+
40 bool mInvoked = false;
+
41};
+
+
42
+
43#define JPH_SCOPE_EXIT_TAG2(line) scope_exit##line
+
44#define JPH_SCOPE_EXIT_TAG(line) JPH_SCOPE_EXIT_TAG2(line)
+
45
+
47#define JPH_SCOPE_EXIT(...) ScopeExit JPH_SCOPE_EXIT_TAG(__LINE__)(__VA_ARGS__)
+
48
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Class that calls a function when it goes out of scope.
Definition ScopeExit.h:14
+
JPH_INLINE ~ScopeExit()
Destructor calls the exit function.
Definition ScopeExit.h:20
+
JPH_INLINE void Release()
No longer call the exit function when going out of scope.
Definition ScopeExit.h:33
+
JPH_INLINE void Invoke()
Call the exit function now instead of when going out of scope.
Definition ScopeExit.h:23
+
JPH_INLINE ScopeExit(F &&inFunction)
Constructor specifies the exit function.
Definition ScopeExit.h:17
+
Definition Array.h:575
+
+
+ + + + diff --git a/_semaphore_8cpp.html b/_semaphore_8cpp.html new file mode 100644 index 000000000..66f2477d9 --- /dev/null +++ b/_semaphore_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Core/Semaphore.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Semaphore.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <Jolt/Core/Semaphore.h>
+
+
+ + + + diff --git a/_semaphore_8h.html b/_semaphore_8h.html new file mode 100644 index 000000000..7c4d3d87e --- /dev/null +++ b/_semaphore_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Core/Semaphore.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Semaphore.h File Reference
+
+
+
#include <atomic>
+#include <mutex>
+#include <condition_variable>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  Semaphore
 
+
+
+ + + + diff --git a/_semaphore_8h.js b/_semaphore_8h.js new file mode 100644 index 000000000..9586d70ec --- /dev/null +++ b/_semaphore_8h.js @@ -0,0 +1,4 @@ +var _semaphore_8h = +[ + [ "Semaphore", "class_semaphore.html", "class_semaphore" ] +]; \ No newline at end of file diff --git a/_semaphore_8h_source.html b/_semaphore_8h_source.html new file mode 100644 index 000000000..1fc114d40 --- /dev/null +++ b/_semaphore_8h_source.html @@ -0,0 +1,175 @@ + + + + + + + +Jolt Physics: Jolt/Core/Semaphore.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Semaphore.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8#include <atomic>
+
9#include <mutex>
+
10#include <condition_variable>
+ +
12
+ +
14
+
15// Things we're using from STL
+
16using std::atomic;
+
17using std::mutex;
+
18using std::condition_variable;
+
19
+
+ +
23{
+
24public:
+
26 Semaphore();
+
27 ~Semaphore();
+
28
+
30 void Release(uint inNumber = 1);
+
31
+
33 void Acquire(uint inNumber = 1);
+
34
+
36 inline int GetValue() const { return mCount; }
+
37
+
38private:
+
39#ifdef JPH_PLATFORM_WINDOWS
+
40 // On windows we use a semaphore object since it is more efficient than a lock and a condition variable
+
41 alignas(JPH_CACHE_LINE_SIZE) atomic<int> mCount { 0 };
+
42 void * mSemaphore;
+
43#else
+
44 // Other platforms: Emulate a semaphore using a mutex, condition variable and count
+
45 mutex mLock;
+
46 condition_variable mWaitVariable;
+
47 int mCount = 0;
+
48#endif
+
49};
+
+
50
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_CACHE_LINE_SIZE
Definition Core.h:492
+
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
Definition Semaphore.h:23
+
int GetValue() const
Get the current value of the semaphore.
Definition Semaphore.h:36
+
+
+ + + + diff --git a/_serializable_attribute_8h.html b/_serializable_attribute_8h.html new file mode 100644 index 000000000..f2e3f9c18 --- /dev/null +++ b/_serializable_attribute_8h.html @@ -0,0 +1,209 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/SerializableAttribute.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SerializableAttribute.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  SerializableAttribute
 Attributes are members of classes that need to be serialized. More...
 
+ + + +

+Macros

#define JPH_DECLARE_PRIMITIVE(name)   T_##name,
 
+ + + + +

+Enumerations

enum class  EOSDataType {
+  Declare +, Object +, Instance +, Pointer +,
+  Array +, JPH_DECLARE_PRIMITIVE +, Invalid +
+ }
 Data type. More...
 
+

Macro Definition Documentation

+ +

◆ JPH_DECLARE_PRIMITIVE

+ +
+
+ + + + + + + + +
#define JPH_DECLARE_PRIMITIVE( name)   T_##name,
+
+ +
+
+

Enumeration Type Documentation

+ +

◆ EOSDataType

+ +
+
+ + + + + +
+ + + + +
enum class EOSDataType
+
+strong
+
+ +

Data type.

+ + + + + + + + +
Enumerator
Declare 

Control codes.

+

Used to declare the attributes of a new object type

+
Object 

Start of a new object.

+
Instance 

Used in attribute declaration, indicates that an object is an instanced attribute (no pointer)

+
Pointer 

Used in attribute declaration, indicates that an object is a pointer attribute.

+
Array 

Used in attribute declaration, indicates that this is an array of objects.

+
JPH_DECLARE_PRIMITIVE 
Invalid 

Next token on the stream was not a valid data type.

+
+ +
+
+
+
+ + + + diff --git a/_serializable_attribute_8h.js b/_serializable_attribute_8h.js new file mode 100644 index 000000000..471cae37c --- /dev/null +++ b/_serializable_attribute_8h.js @@ -0,0 +1,14 @@ +var _serializable_attribute_8h = +[ + [ "SerializableAttribute", "class_serializable_attribute.html", "class_serializable_attribute" ], + [ "JPH_DECLARE_PRIMITIVE", "_serializable_attribute_8h.html#a7d32f5239cd276fd0012072a2a4ccd23", null ], + [ "EOSDataType", "_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974a", [ + [ "Declare", "_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa2709046ed364cc54b91f908e85e512ed", null ], + [ "Object", "_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa497031794414a552435f90151ac3b54b", null ], + [ "Instance", "_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aad9a17c1c9e8ef6866e4dbeef41c741b2", null ], + [ "Pointer", "_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa61cf8510205077b6f5491d38cd44c0f7", null ], + [ "Array", "_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa4410ec34d9e6c1a68100ca0ce033fb17", null ], + [ "JPH_DECLARE_PRIMITIVE", "_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa988ddd4859f990b5618fb95f0dbfdaf6", null ], + [ "Invalid", "_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa4bbb8f967da6d1a610596d7257179c2b", null ] + ] ] +]; \ No newline at end of file diff --git a/_serializable_attribute_8h_source.html b/_serializable_attribute_8h_source.html new file mode 100644 index 000000000..1b029cdda --- /dev/null +++ b/_serializable_attribute_8h_source.html @@ -0,0 +1,263 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/SerializableAttribute.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SerializableAttribute.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
+
7#ifdef JPH_OBJECT_STREAM
+
8
+ +
10
+
11class RTTI;
+
12class IObjectStreamIn;
+ +
14
+
+
16enum class EOSDataType
+
17{
+
19 Declare,
+
20 Object,
+
21 Instance,
+
22 Pointer,
+
23 Array,
+
24
+
25 // Basic types (primitives)
+
26 #define JPH_DECLARE_PRIMITIVE(name) T_##name,
+
27
+
28 // This file uses the JPH_DECLARE_PRIMITIVE macro to define all types
+ +
30
+
31 // Error values for read functions
+
32 Invalid,
+
33};
+
+
34
+
+ +
37{
+
38public:
+
40 using pGetMemberPrimitiveType = const RTTI * (*)();
+
41 using pIsType = bool (*)(int inArrayDepth, EOSDataType inDataType, const char *inClassName);
+
42 using pReadData = bool (*)(IObjectStreamIn &ioStream, void *inObject);
+
43 using pWriteData = void (*)(IObjectStreamOut &ioStream, const void *inObject);
+
44 using pWriteDataType = void (*)(IObjectStreamOut &ioStream);
+
45
+
47 SerializableAttribute(const char *inName, uint inMemberOffset, pGetMemberPrimitiveType inGetMemberPrimitiveType, pIsType inIsType, pReadData inReadData, pWriteData inWriteData, pWriteDataType inWriteDataType) : mName(inName), mMemberOffset(inMemberOffset), mGetMemberPrimitiveType(inGetMemberPrimitiveType), mIsType(inIsType), mReadData(inReadData), mWriteData(inWriteData), mWriteDataType(inWriteDataType) { }
+
48
+
50 SerializableAttribute(const SerializableAttribute &inOther, int inBaseOffset) : mName(inOther.mName), mMemberOffset(inOther.mMemberOffset + inBaseOffset), mGetMemberPrimitiveType(inOther.mGetMemberPrimitiveType), mIsType(inOther.mIsType), mReadData(inOther.mReadData), mWriteData(inOther.mWriteData), mWriteDataType(inOther.mWriteDataType) { }
+
51
+
53 void SetName(const char *inName) { mName = inName; }
+
54 const char * GetName() const { return mName; }
+
55
+
57 template <class T>
+
58 inline T * GetMemberPointer(void *inObject) const { return reinterpret_cast<T *>(reinterpret_cast<uint8 *>(inObject) + mMemberOffset); }
+
59 template <class T>
+
60 inline const T * GetMemberPointer(const void *inObject) const { return reinterpret_cast<const T *>(reinterpret_cast<const uint8 *>(inObject) + mMemberOffset); }
+
61
+
+ +
64 {
+
65 return mGetMemberPrimitiveType();
+
66 }
+
+
67
+
+
69 bool IsType(int inArrayDepth, EOSDataType inDataType, const char *inClassName) const
+
70 {
+
71 return mIsType(inArrayDepth, inDataType, inClassName);
+
72 }
+
+
73
+
+
75 bool ReadData(IObjectStreamIn &ioStream, void *inObject) const
+
76 {
+
77 return mReadData(ioStream, GetMemberPointer<void>(inObject));
+
78 }
+
+
79
+
+
81 void WriteData(IObjectStreamOut &ioStream, const void *inObject) const
+
82 {
+
83 mWriteData(ioStream, GetMemberPointer<void>(inObject));
+
84 }
+
+
85
+
+
87 void WriteDataType(IObjectStreamOut &ioStream) const
+
88 {
+
89 mWriteDataType(ioStream);
+
90 }
+
+
91
+
92private:
+
93 // Name of the attribute
+
94 const char * mName;
+
95
+
96 // Offset of the member relative to the class
+
97 uint mMemberOffset;
+
98
+
99 // In case this attribute contains an RTTI type, return it (note that a Array<sometype> will return the rtti of sometype)
+
100 pGetMemberPrimitiveType mGetMemberPrimitiveType;
+
101
+
102 // Serialization operations
+
103 pIsType mIsType;
+
104 pReadData mReadData;
+
105 pWriteData mWriteData;
+
106 pWriteDataType mWriteDataType;
+
107};
+
+
108
+ +
110
+
111#endif // JPH_OBJECT_STREAM
+
std::uint8_t uint8
Definition Core.h:453
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
EOSDataType
Data type.
Definition SerializableAttribute.h:17
+
@ Declare
Control codes.
+
@ Array
Used in attribute declaration, indicates that this is an array of objects.
+
@ Object
Start of a new object.
+
@ Invalid
Next token on the stream was not a valid data type.
+
@ Pointer
Used in attribute declaration, indicates that an object is a pointer attribute.
+
@ Instance
Used in attribute declaration, indicates that an object is an instanced attribute (no pointer)
+
Interface class for reading from an object stream.
Definition ObjectStream.h:42
+
Interface class for writing to an object stream.
Definition ObjectStream.h:76
+
Definition RTTI.h:122
+
Attributes are members of classes that need to be serialized.
Definition SerializableAttribute.h:37
+
void(*)(IObjectStreamOut &ioStream) pWriteDataType
Definition SerializableAttribute.h:44
+
void WriteData(IObjectStreamOut &ioStream, const void *inObject) const
Write the data for this attribute from attribute containing class inObject.
Definition SerializableAttribute.h:81
+
void WriteDataType(IObjectStreamOut &ioStream) const
Write the data type of this attribute to a stream.
Definition SerializableAttribute.h:87
+
bool(*)(int inArrayDepth, EOSDataType inDataType, const char *inClassName) pIsType
Definition SerializableAttribute.h:41
+
const RTTI * GetMemberPrimitiveType() const
In case this attribute contains an RTTI type, return it (note that a Array<sometype> will return the ...
Definition SerializableAttribute.h:63
+
const T * GetMemberPointer(const void *inObject) const
Definition SerializableAttribute.h:60
+
T * GetMemberPointer(void *inObject) const
Access to the memory location that contains the member.
Definition SerializableAttribute.h:58
+
void SetName(const char *inName)
Name of the attribute.
Definition SerializableAttribute.h:53
+
SerializableAttribute(const char *inName, uint inMemberOffset, pGetMemberPrimitiveType inGetMemberPrimitiveType, pIsType inIsType, pReadData inReadData, pWriteData inWriteData, pWriteDataType inWriteDataType)
Constructor.
Definition SerializableAttribute.h:47
+
bool IsType(int inArrayDepth, EOSDataType inDataType, const char *inClassName) const
Check if this attribute is of a specific type.
Definition SerializableAttribute.h:69
+
bool(*)(IObjectStreamIn &ioStream, void *inObject) pReadData
Definition SerializableAttribute.h:42
+
bool ReadData(IObjectStreamIn &ioStream, void *inObject) const
Read the data for this attribute into attribute containing class inObject.
Definition SerializableAttribute.h:75
+
SerializableAttribute(const SerializableAttribute &inOther, int inBaseOffset)
Construct from other attribute with base class offset.
Definition SerializableAttribute.h:50
+
const char * GetName() const
Definition SerializableAttribute.h:54
+
const RTTI *(*)() pGetMemberPrimitiveType
@ Serialization functions
Definition SerializableAttribute.h:40
+
void(*)(IObjectStreamOut &ioStream, const void *inObject) pWriteData
Definition SerializableAttribute.h:43
+
+
+ + + + diff --git a/_serializable_attribute_enum_8h.html b/_serializable_attribute_enum_8h.html new file mode 100644 index 000000000..1248855cd --- /dev/null +++ b/_serializable_attribute_enum_8h.html @@ -0,0 +1,243 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/SerializableAttributeEnum.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SerializableAttributeEnum.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Macros

#define JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS(class_name, member_name, alias_name)    AddSerializableAttributeEnum<decltype(class_name::member_name)>(inRTTI, offsetof(class_name, member_name), alias_name);
 
#define JPH_ADD_ENUM_ATTRIBUTE(class_name, member_name)    JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS(class_name, member_name, #member_name);
 
+ + + + +

+Functions

template<class MemberType >
JPH_NAMESPACE_BEGIN void AddSerializableAttributeEnum (RTTI &inRTTI, uint inOffset, const char *inName)
 
+

Macro Definition Documentation

+ +

◆ JPH_ADD_ENUM_ATTRIBUTE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_ADD_ENUM_ATTRIBUTE( class_name,
 member_name 
)    JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS(class_name, member_name, #member_name);
+
+ +
+
+ +

◆ JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS( class_name,
 member_name,
 alias_name 
)    AddSerializableAttributeEnum<decltype(class_name::member_name)>(inRTTI, offsetof(class_name, member_name), alias_name);
+
+ +
+
+

Function Documentation

+ +

◆ AddSerializableAttributeEnum()

+ +
+
+
+template<class MemberType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void AddSerializableAttributeEnum (RTTIinRTTI,
uint inOffset,
const char * inName 
)
+
+inline
+
+ +
+
+
+
+ + + + diff --git a/_serializable_attribute_enum_8h.js b/_serializable_attribute_enum_8h.js new file mode 100644 index 000000000..263f88b3a --- /dev/null +++ b/_serializable_attribute_enum_8h.js @@ -0,0 +1,6 @@ +var _serializable_attribute_enum_8h = +[ + [ "JPH_ADD_ENUM_ATTRIBUTE", "_serializable_attribute_enum_8h.html#a3b22fbca3340e9995ee02ec11447515d", null ], + [ "JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS", "_serializable_attribute_enum_8h.html#a60dd3c12ea0bb4c809e96221d8ff0025", null ], + [ "AddSerializableAttributeEnum", "_serializable_attribute_enum_8h.html#aefe6ccc5c9b8967b4a9de188db2be3f1", null ] +]; \ No newline at end of file diff --git a/_serializable_attribute_enum_8h_source.html b/_serializable_attribute_enum_8h_source.html new file mode 100644 index 000000000..25c804750 --- /dev/null +++ b/_serializable_attribute_enum_8h_source.html @@ -0,0 +1,205 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/SerializableAttributeEnum.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SerializableAttributeEnum.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
+ + +
9
+
10#ifdef JPH_OBJECT_STREAM
+
11
+ +
13
+
15// Macros to add properties to be serialized
+
17
+
18template <class MemberType>
+
+
19inline void AddSerializableAttributeEnum(RTTI &inRTTI, uint inOffset, const char *inName)
+
20{
+
21 inRTTI.AddAttribute(SerializableAttribute(inName, inOffset,
+
22 []() -> const RTTI *
+
23 {
+
24 return nullptr;
+
25 },
+
26 [](int inArrayDepth, EOSDataType inDataType, [[maybe_unused]] const char *inClassName)
+
27 {
+
28 return inArrayDepth == 0 && inDataType == EOSDataType::T_uint32;
+
29 },
+
30 [](IObjectStreamIn &ioStream, void *inObject)
+
31 {
+
32 uint32 temporary;
+
33 if (OSReadData(ioStream, temporary))
+
34 {
+
35 *reinterpret_cast<MemberType *>(inObject) = static_cast<MemberType>(temporary);
+
36 return true;
+
37 }
+
38 return false;
+
39 },
+
40 [](IObjectStreamOut &ioStream, const void *inObject)
+
41 {
+
42 static_assert(sizeof(MemberType) <= sizeof(uint32));
+
43 uint32 temporary = uint32(*reinterpret_cast<const MemberType *>(inObject));
+
44 OSWriteData(ioStream, temporary);
+
45 },
+
46 [](IObjectStreamOut &ioStream)
+
47 {
+
48 ioStream.WriteDataType(EOSDataType::T_uint32);
+
49 }));
+
50}
+
+
51
+
52// JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS
+
+
53#define JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS(class_name, member_name, alias_name) \
+
54 AddSerializableAttributeEnum<decltype(class_name::member_name)>(inRTTI, offsetof(class_name, member_name), alias_name);
+
+
55
+
56// JPH_ADD_ENUM_ATTRIBUTE
+
+
57#define JPH_ADD_ENUM_ATTRIBUTE(class_name, member_name) \
+
58 JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS(class_name, member_name, #member_name);
+
+
59
+ +
61
+
62#else
+
63
+
64#define JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS(...)
+
65#define JPH_ADD_ENUM_ATTRIBUTE(...)
+
66
+
67#endif // JPH_OBJECT_STREAM
+
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
+ +
bool OSReadData(IObjectStreamIn &ioStream, Array< T, A > &inArray)
Define serialization templates for dynamic arrays.
Definition ObjectStream.h:156
+
void OSWriteData(IObjectStreamOut &ioStream, const Array< T, A > &inArray)
Definition ObjectStream.h:243
+ +
EOSDataType
Data type.
Definition SerializableAttribute.h:17
+
JPH_NAMESPACE_BEGIN void AddSerializableAttributeEnum(RTTI &inRTTI, uint inOffset, const char *inName)
Definition SerializableAttributeEnum.h:19
+
Interface class for reading from an object stream.
Definition ObjectStream.h:42
+
Interface class for writing to an object stream.
Definition ObjectStream.h:76
+
Definition RTTI.h:122
+
void AddAttribute(const SerializableAttribute &inAttribute)
Attribute access.
Definition RTTI.cpp:132
+
Attributes are members of classes that need to be serialized.
Definition SerializableAttribute.h:37
+
+
+ + + + diff --git a/_serializable_attribute_typed_8h.html b/_serializable_attribute_typed_8h.html new file mode 100644 index 000000000..dd2558c1d --- /dev/null +++ b/_serializable_attribute_typed_8h.html @@ -0,0 +1,244 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/SerializableAttributeTyped.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SerializableAttributeTyped.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Macros

#define JPH_ADD_ATTRIBUTE_WITH_ALIAS(class_name, member_name, alias_name)    AddSerializableAttributeTyped<decltype(class_name::member_name)>(inRTTI, offsetof(class_name, member_name), alias_name);
 
#define JPH_ADD_ATTRIBUTE(class_name, member_name)    JPH_ADD_ATTRIBUTE_WITH_ALIAS(class_name, member_name, #member_name)
 
+ + + + +

+Functions

template<class MemberType >
JPH_NAMESPACE_BEGIN void AddSerializableAttributeTyped (RTTI &inRTTI, uint inOffset, const char *inName)
 
+

Macro Definition Documentation

+ +

◆ JPH_ADD_ATTRIBUTE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_ADD_ATTRIBUTE( class_name,
 member_name 
)    JPH_ADD_ATTRIBUTE_WITH_ALIAS(class_name, member_name, #member_name)
+
+ +
+
+ +

◆ JPH_ADD_ATTRIBUTE_WITH_ALIAS

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define JPH_ADD_ATTRIBUTE_WITH_ALIAS( class_name,
 member_name,
 alias_name 
)    AddSerializableAttributeTyped<decltype(class_name::member_name)>(inRTTI, offsetof(class_name, member_name), alias_name);
+
+ +
+
+

Function Documentation

+ +

◆ AddSerializableAttributeTyped()

+ +
+
+
+template<class MemberType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void AddSerializableAttributeTyped (RTTIinRTTI,
uint inOffset,
const char * inName 
)
+
+inline
+
+ +
+
+
+
+ + + + diff --git a/_serializable_attribute_typed_8h.js b/_serializable_attribute_typed_8h.js new file mode 100644 index 000000000..a8468e726 --- /dev/null +++ b/_serializable_attribute_typed_8h.js @@ -0,0 +1,6 @@ +var _serializable_attribute_typed_8h = +[ + [ "JPH_ADD_ATTRIBUTE", "_serializable_attribute_typed_8h.html#a564e5bd12360a28431c73574690dd1b8", null ], + [ "JPH_ADD_ATTRIBUTE_WITH_ALIAS", "_serializable_attribute_typed_8h.html#a861c3d62109332e36799a2e86d160c99", null ], + [ "AddSerializableAttributeTyped", "_serializable_attribute_typed_8h.html#a3d653de5dabcb867e559260596e8ac43", null ] +]; \ No newline at end of file diff --git a/_serializable_attribute_typed_8h_source.html b/_serializable_attribute_typed_8h_source.html new file mode 100644 index 000000000..6e0655eee --- /dev/null +++ b/_serializable_attribute_typed_8h_source.html @@ -0,0 +1,201 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/SerializableAttributeTyped.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SerializableAttributeTyped.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
+ + + +
10
+
11#ifdef JPH_OBJECT_STREAM
+
12
+ +
14
+
16// Macros to add properties to be serialized
+
18
+
19template <class MemberType>
+
+
20inline void AddSerializableAttributeTyped(RTTI &inRTTI, uint inOffset, const char *inName)
+
21{
+
22 inRTTI.AddAttribute(SerializableAttribute(inName, inOffset,
+
23 []()
+
24 {
+
25 return GetPrimitiveTypeOfType((MemberType *)nullptr);
+
26 },
+
27 [](int inArrayDepth, EOSDataType inDataType, const char *inClassName)
+
28 {
+
29 return OSIsType((MemberType *)nullptr, inArrayDepth, inDataType, inClassName);
+
30 },
+
31 [](IObjectStreamIn &ioStream, void *inObject)
+
32 {
+
33 return OSReadData(ioStream, *reinterpret_cast<MemberType *>(inObject));
+
34 },
+
35 [](IObjectStreamOut &ioStream, const void *inObject)
+
36 {
+
37 OSWriteData(ioStream, *reinterpret_cast<const MemberType *>(inObject));
+
38 },
+
39 [](IObjectStreamOut &ioStream)
+
40 {
+
41 OSWriteDataType(ioStream, (MemberType *)nullptr);
+
42 }));
+
43}
+
+
44
+
45// JPH_ADD_ATTRIBUTE
+
+
46#define JPH_ADD_ATTRIBUTE_WITH_ALIAS(class_name, member_name, alias_name) \
+
47 AddSerializableAttributeTyped<decltype(class_name::member_name)>(inRTTI, offsetof(class_name, member_name), alias_name);
+
+
48
+
49// JPH_ADD_ATTRIBUTE
+
+
50#define JPH_ADD_ATTRIBUTE(class_name, member_name) \
+
51 JPH_ADD_ATTRIBUTE_WITH_ALIAS(class_name, member_name, #member_name)
+
+
52
+ +
54
+
55#else
+
56
+
57#define JPH_ADD_ATTRIBUTE_WITH_ALIAS(...)
+
58#define JPH_ADD_ATTRIBUTE(...)
+
59
+
60#endif // JPH_OBJECT_STREAM
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
JPH_NAMESPACE_BEGIN const RTTI * GetPrimitiveTypeOfType(T *)
Helper functions to get the underlying RTTI type of a type (so e.g. Array<sometype> will return somet...
Definition GetPrimitiveTypeOfType.h:13
+ +
bool OSIsType(Array< T, A > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
Definition ObjectStream.h:125
+
bool OSReadData(IObjectStreamIn &ioStream, Array< T, A > &inArray)
Define serialization templates for dynamic arrays.
Definition ObjectStream.h:156
+
void OSWriteData(IObjectStreamOut &ioStream, const Array< T, A > &inArray)
Definition ObjectStream.h:243
+
void OSWriteDataType(IObjectStreamOut &ioStream, Array< T, A > *)
Definition ObjectStream.h:236
+ +
EOSDataType
Data type.
Definition SerializableAttribute.h:17
+
JPH_NAMESPACE_BEGIN void AddSerializableAttributeTyped(RTTI &inRTTI, uint inOffset, const char *inName)
Definition SerializableAttributeTyped.h:20
+
Interface class for reading from an object stream.
Definition ObjectStream.h:42
+
Interface class for writing to an object stream.
Definition ObjectStream.h:76
+
Definition RTTI.h:122
+
void AddAttribute(const SerializableAttribute &inAttribute)
Attribute access.
Definition RTTI.cpp:132
+
Attributes are members of classes that need to be serialized.
Definition SerializableAttribute.h:37
+
+
+ + + + diff --git a/_serializable_object_8cpp.html b/_serializable_object_8cpp.html new file mode 100644 index 000000000..f6e1af4fd --- /dev/null +++ b/_serializable_object_8cpp.html @@ -0,0 +1,143 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/SerializableObject.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SerializableObject.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (SerializableObject)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (SerializableObject )
+
+ +
+
+
+
+ + + + diff --git a/_serializable_object_8cpp.js b/_serializable_object_8cpp.js new file mode 100644 index 000000000..62bd6fe5d --- /dev/null +++ b/_serializable_object_8cpp.js @@ -0,0 +1,4 @@ +var _serializable_object_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT", "_serializable_object_8cpp.html#a2c9c50d8b76d16955954601525c1f0fd", null ] +]; \ No newline at end of file diff --git a/_serializable_object_8h.html b/_serializable_object_8h.html new file mode 100644 index 000000000..bc283dd63 --- /dev/null +++ b/_serializable_object_8h.html @@ -0,0 +1,532 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/SerializableObject.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SerializableObject.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  SerializableObject
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, prefix, class_name)
 
#define JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS(class_name)
 
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
 
#define JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(class_name)
 
#define JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(linkage, class_name)
 
#define JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS(class_name)
 
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
 
#define JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(class_name)
 
#define JPH_DECLARE_SERIALIZABLE_ABSTRACT(linkage, class_name)
 
#define JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(class_name)
 
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL_BASE(linkage, class_name)
 
#define JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL_BASE(class_name)
 
#define JPH_DECLARE_SERIALIZABLE_ABSTRACT_BASE(linkage, class_name)
 
#define JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE(class_name)
 
+

Macro Definition Documentation

+ +

◆ JPH_DECLARE_SERIALIZABLE_ABSTRACT

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_SERIALIZABLE_ABSTRACT( linkage,
 class_name 
)
+
+Value:
public: \
+
JPH_DECLARE_RTTI_ABSTRACT(linkage, class_name) \
+
JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, friend, class_name) \
+
+
+
+ +

◆ JPH_DECLARE_SERIALIZABLE_ABSTRACT_BASE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_SERIALIZABLE_ABSTRACT_BASE( linkage,
 class_name 
)
+
+Value:
public: \
+
JPH_DECLARE_RTTI_ABSTRACT_BASE(linkage, class_name) \
+
JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, friend, class_name) \
+
+
+
+ +

◆ JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL( linkage,
 class_name 
)
+
+Value:
public: \
+
JPH_DECLARE_RTTI_NON_VIRTUAL(linkage, class_name) \
+
JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, friend, class_name) \
+
+
+
+ +

◆ JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS( linkage,
 class_name 
)
+
+Value:
JPH_DECLARE_RTTI_OUTSIDE_CLASS(linkage, class_name) \
+
JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, extern, class_name) \
+
#define JPH_DECLARE_RTTI_OUTSIDE_CLASS(linkage, class_name)
Definition RTTI.h:217
+
+
+
+ +

◆ JPH_DECLARE_SERIALIZABLE_VIRTUAL

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL( linkage,
 class_name 
)
+
+Value:
public: \
+
JPH_DECLARE_RTTI_VIRTUAL(linkage, class_name) \
+
JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, friend, class_name) \
+
+
+
+ +

◆ JPH_DECLARE_SERIALIZABLE_VIRTUAL_BASE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL_BASE( linkage,
 class_name 
)
+
+Value:
public: \
+
JPH_DECLARE_RTTI_VIRTUAL_BASE(linkage, class_name) \
+
JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, friend, class_name) \
+
+
+
+ +

◆ JPH_DECLARE_SERIALIZATION_FUNCTIONS

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define JPH_DECLARE_SERIALIZATION_FUNCTIONS( linkage,
 prefix,
 class_name 
)
+
+Value:
linkage prefix bool OSReadData(IObjectStreamIn &ioStream, class_name &inInstance); \
+
linkage prefix bool OSReadData(IObjectStreamIn &ioStream, class_name *&inPointer); \
+
linkage prefix bool OSIsType(class_name *, int inArrayDepth, EOSDataType inDataType, const char *inClassName); \
+
linkage prefix bool OSIsType(class_name **, int inArrayDepth, EOSDataType inDataType, const char *inClassName); \
+
linkage prefix void OSWriteData(IObjectStreamOut &ioStream, const class_name &inInstance); \
+
linkage prefix void OSWriteData(IObjectStreamOut &ioStream, class_name *const &inPointer); \
+
linkage prefix void OSWriteDataType(IObjectStreamOut &ioStream, class_name *); \
+
linkage prefix void OSWriteDataType(IObjectStreamOut &ioStream, class_name **);
+
bool OSIsType(Array< T, A > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName)
Definition ObjectStream.h:125
+
bool OSReadData(IObjectStreamIn &ioStream, Array< T, A > &inArray)
Define serialization templates for dynamic arrays.
Definition ObjectStream.h:156
+
void OSWriteData(IObjectStreamOut &ioStream, const Array< T, A > &inArray)
Definition ObjectStream.h:243
+
void OSWriteDataType(IObjectStreamOut &ioStream, Array< T, A > *)
Definition ObjectStream.h:236
+
EOSDataType
Data type.
Definition SerializableAttribute.h:17
+
Interface class for reading from an object stream.
Definition ObjectStream.h:42
+
Interface class for writing to an object stream.
Definition ObjectStream.h:76
+
+
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT( class_name)
+
+Value:
+
JPH_IMPLEMENT_RTTI_ABSTRACT(class_name) \
+
#define JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS(class_name)
Definition SerializableObject.h:29
+
+
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE( class_name)
+
+Value:
+
JPH_IMPLEMENT_RTTI_ABSTRACT_BASE(class_name)
+
+
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL( class_name)
+
+Value:
+
JPH_IMPLEMENT_RTTI_NON_VIRTUAL(class_name) \
+
+
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS( class_name)
+
+Value:
+
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(class_name) \
+
+
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL( class_name)
+
+Value:
+
JPH_IMPLEMENT_RTTI_VIRTUAL(class_name) \
+
+
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL_BASE

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL_BASE( class_name)
+
+Value:
+
JPH_IMPLEMENT_RTTI_VIRTUAL_BASE(class_name) \
+
+
+
+ +

◆ JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS

+ +
+
+ + + + + + + + +
#define JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS( class_name)
+
+ +
+
+
+
+ + + + diff --git a/_serializable_object_8h.js b/_serializable_object_8h.js new file mode 100644 index 000000000..b42bc399f --- /dev/null +++ b/_serializable_object_8h.js @@ -0,0 +1,18 @@ +var _serializable_object_8h = +[ + [ "SerializableObject", "class_serializable_object.html", "class_serializable_object" ], + [ "JPH_DECLARE_SERIALIZABLE_ABSTRACT", "_serializable_object_8h.html#ac317eaf55d6ffd3bc0c67521bc33d617", null ], + [ "JPH_DECLARE_SERIALIZABLE_ABSTRACT_BASE", "_serializable_object_8h.html#ae930e54dc186e23ef194e0c89681bf9f", null ], + [ "JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL", "_serializable_object_8h.html#accc27ff8b37777018bc2d93207412b71", null ], + [ "JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS", "_serializable_object_8h.html#aa0ae52235ce05a3559fac744c0c5cb21", null ], + [ "JPH_DECLARE_SERIALIZABLE_VIRTUAL", "_serializable_object_8h.html#ad80cbee2b256f570ee204534dec05da4", null ], + [ "JPH_DECLARE_SERIALIZABLE_VIRTUAL_BASE", "_serializable_object_8h.html#aa933697d79529904b1027a806ed94b0f", null ], + [ "JPH_DECLARE_SERIALIZATION_FUNCTIONS", "_serializable_object_8h.html#a7e157da66f2e52b03f01ab235487fde4", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT", "_serializable_object_8h.html#aa0df3cb355e5b6fa66051046f5590a5e", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE", "_serializable_object_8h.html#ada2ccb45b6d52e1c8a1785bc62b412e4", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_serializable_object_8h.html#af1893434ccaa3c9d7eebc3f1c8c83290", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS", "_serializable_object_8h.html#a8d52ce16aca23d1e5a6933b4607f7f8a", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_serializable_object_8h.html#ad9a7708c6cfef4f2b257db2f06f17b6b", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL_BASE", "_serializable_object_8h.html#aa59eb84cc23028203085e2c3fce663d2", null ], + [ "JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS", "_serializable_object_8h.html#a9ff80255cadbb579a6be539451245df7", null ] +]; \ No newline at end of file diff --git a/_serializable_object_8h_source.html b/_serializable_object_8h_source.html new file mode 100644 index 000000000..1dd342795 --- /dev/null +++ b/_serializable_object_8h_source.html @@ -0,0 +1,309 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/SerializableObject.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SerializableObject.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
+
12// Helper macros
+
14
+
15#ifdef JPH_OBJECT_STREAM
+
16
+
17// JPH_DECLARE_SERIALIZATION_FUNCTIONS
+
+
18#define JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, prefix, class_name) \
+
19 linkage prefix bool OSReadData(IObjectStreamIn &ioStream, class_name &inInstance); \
+
20 linkage prefix bool OSReadData(IObjectStreamIn &ioStream, class_name *&inPointer); \
+
21 linkage prefix bool OSIsType(class_name *, int inArrayDepth, EOSDataType inDataType, const char *inClassName); \
+
22 linkage prefix bool OSIsType(class_name **, int inArrayDepth, EOSDataType inDataType, const char *inClassName); \
+
23 linkage prefix void OSWriteData(IObjectStreamOut &ioStream, const class_name &inInstance); \
+
24 linkage prefix void OSWriteData(IObjectStreamOut &ioStream, class_name *const &inPointer); \
+
25 linkage prefix void OSWriteDataType(IObjectStreamOut &ioStream, class_name *); \
+
26 linkage prefix void OSWriteDataType(IObjectStreamOut &ioStream, class_name **);
+
+
27
+
28// JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS
+
+
29#define JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS(class_name) \
+
30 bool OSReadData(IObjectStreamIn &ioStream, class_name &inInstance) \
+
31 { \
+
32 return ioStream.ReadClassData(#class_name, (void *)&inInstance); \
+
33 } \
+
34 bool OSReadData(IObjectStreamIn &ioStream, class_name *&inPointer) \
+
35 { \
+
36 return ioStream.ReadPointerData(JPH_RTTI(class_name), (void **)&inPointer); \
+
37 } \
+
38 bool OSIsType(class_name *, int inArrayDepth, EOSDataType inDataType, const char *inClassName) \
+
39 { \
+
40 return inArrayDepth == 0 && inDataType == EOSDataType::Instance && strcmp(inClassName, #class_name) == 0; \
+
41 } \
+
42 bool OSIsType(class_name **, int inArrayDepth, EOSDataType inDataType, const char *inClassName) \
+
43 { \
+
44 return inArrayDepth == 0 && inDataType == EOSDataType::Pointer && strcmp(inClassName, #class_name) == 0; \
+
45 } \
+
46 void OSWriteData(IObjectStreamOut &ioStream, const class_name &inInstance) \
+
47 { \
+
48 ioStream.WriteClassData(JPH_RTTI(class_name), (void *)&inInstance); \
+
49 } \
+
50 void OSWriteData(IObjectStreamOut &ioStream, class_name *const &inPointer) \
+
51 { \
+
52 if (inPointer) \
+
53 ioStream.WritePointerData(GetRTTI(inPointer), (void *)inPointer); \
+
54 else \
+
55 ioStream.WritePointerData(nullptr, nullptr); \
+
56 } \
+
57 void OSWriteDataType(IObjectStreamOut &ioStream, class_name *) \
+
58 { \
+
59 ioStream.WriteDataType(EOSDataType::Instance); \
+
60 ioStream.WriteName(#class_name); \
+
61 } \
+
62 void OSWriteDataType(IObjectStreamOut &ioStream, class_name **) \
+
63 { \
+
64 ioStream.WriteDataType(EOSDataType::Pointer); \
+
65 ioStream.WriteName(#class_name); \
+
66 }
+
+
67
+
68#else
+
69
+
70#define JPH_DECLARE_SERIALIZATION_FUNCTIONS(...)
+
71#define JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS(...)
+
72
+
73#endif // JPH_OBJECT_STREAM
+
74
+
76// Use these macros on non-virtual objects to make them serializable
+
78
+
79// JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL
+
+
80#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name) \
+
81public: \
+
82 JPH_DECLARE_RTTI_NON_VIRTUAL(linkage, class_name) \
+
83 JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, friend, class_name) \
+
84
+
+
85// JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL
+
+
86#define JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(class_name) \
+
87 JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS(class_name) \
+
88 JPH_IMPLEMENT_RTTI_NON_VIRTUAL(class_name) \
+
89
+
+
91// Same as above, but when you cannot insert the declaration in the class itself
+
93
+
94// JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS
+
+
95#define JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(linkage, class_name) \
+
96 JPH_DECLARE_RTTI_OUTSIDE_CLASS(linkage, class_name) \
+
97 JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, extern, class_name) \
+
98
+
+
99// JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS
+
+
100#define JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS(class_name) \
+
101 JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS(class_name) \
+
102 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(class_name) \
+
103
+
+
105// Same as above, but for classes that have virtual functions
+
107
+
108// JPH_DECLARE_SERIALIZABLE_VIRTUAL - Use for concrete, non-base classes
+
+
109#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name) \
+
110public: \
+
111 JPH_DECLARE_RTTI_VIRTUAL(linkage, class_name) \
+
112 JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, friend, class_name) \
+
113
+
+
114// JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL
+
+
115#define JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(class_name) \
+
116 JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS(class_name) \
+
117 JPH_IMPLEMENT_RTTI_VIRTUAL(class_name) \
+
118
+
+
119// JPH_DECLARE_SERIALIZABLE_ABSTRACT - Use for abstract, non-base classes
+
+
120#define JPH_DECLARE_SERIALIZABLE_ABSTRACT(linkage, class_name) \
+
121public: \
+
122 JPH_DECLARE_RTTI_ABSTRACT(linkage, class_name) \
+
123 JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, friend, class_name) \
+
124
+
+
125// JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT
+
+
126#define JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(class_name) \
+
127 JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS(class_name) \
+
128 JPH_IMPLEMENT_RTTI_ABSTRACT(class_name) \
+
129
+
+
130// JPH_DECLARE_SERIALIZABLE_VIRTUAL_BASE - Use for concrete base classes
+
+
131#define JPH_DECLARE_SERIALIZABLE_VIRTUAL_BASE(linkage, class_name) \
+
132public: \
+
133 JPH_DECLARE_RTTI_VIRTUAL_BASE(linkage, class_name) \
+
134 JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, friend, class_name) \
+
135
+
+
136// JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL_BASE
+
+
137#define JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL_BASE(class_name) \
+
138 JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS(class_name) \
+
139 JPH_IMPLEMENT_RTTI_VIRTUAL_BASE(class_name) \
+
140
+
+
141// JPH_DECLARE_SERIALIZABLE_ABSTRACT_BASE - Use for abstract base class
+
+
142#define JPH_DECLARE_SERIALIZABLE_ABSTRACT_BASE(linkage, class_name) \
+
143public: \
+
144 JPH_DECLARE_RTTI_ABSTRACT_BASE(linkage, class_name) \
+
145 JPH_DECLARE_SERIALIZATION_FUNCTIONS(linkage, friend, class_name) \
+
146
+
+
147// JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE
+
+
148#define JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE(class_name) \
+
149 JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS(class_name) \
+
150 JPH_IMPLEMENT_RTTI_ABSTRACT_BASE(class_name)
+
+
151
+
+ +
156{
+ +
158
+
159public:
+
161 virtual ~SerializableObject() = default;
+
162};
+
+
163
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_DECLARE_SERIALIZABLE_ABSTRACT_BASE(linkage, class_name)
Definition SerializableObject.h:142
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition SerializableObject.h:156
+
virtual ~SerializableObject()=default
Constructor.
+
+
+ + + + diff --git a/_shape_8cpp.html b/_shape_8cpp.html new file mode 100644 index 000000000..d6ba6ef7e --- /dev/null +++ b/_shape_8cpp.html @@ -0,0 +1,154 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/Shape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Shape.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE (ShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE (ShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_shape_8cpp.js b/_shape_8cpp.js new file mode 100644 index 000000000..fcb5d94e5 --- /dev/null +++ b/_shape_8cpp.js @@ -0,0 +1,4 @@ +var _shape_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE", "_shape_8cpp.html#a952cf80ba8a1269fe371badfa12fbfc4", null ] +]; \ No newline at end of file diff --git a/_shape_8h.html b/_shape_8h.html new file mode 100644 index 000000000..06d406fdc --- /dev/null +++ b/_shape_8h.html @@ -0,0 +1,470 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/Shape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Shape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + +

+Classes

class  ShapeSettings
 
class  ShapeFunctions
 Function table for functions on shapes. More...
 
class  Shape
 Base class for all shapes (collision volume of a body). Defines a virtual interface for collision detection. More...
 
struct  Shape::GetTrianglesContext
 An opaque buffer that holds shape specific information during GetTrianglesStart/Next. More...
 
struct  Shape::Stats
 Class that holds information about the shape that can be used for logging / data collection purposes. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Typedefs

using CastRayCollector = CollisionCollector< RayCastResult, CollisionCollectorTraitsCastRay >
 
using CastShapeCollector = CollisionCollector< ShapeCastResult, CollisionCollectorTraitsCastShape >
 
using CollidePointCollector = CollisionCollector< CollidePointResult, CollisionCollectorTraitsCollidePoint >
 
using CollideShapeCollector = CollisionCollector< CollideShapeResult, CollisionCollectorTraitsCollideShape >
 
using TransformedShapeCollector = CollisionCollector< TransformedShape, CollisionCollectorTraitsCollideShape >
 
using ShapeRefC = RefConst< Shape >
 
using ShapeList = Array< ShapeRefC >
 
using PhysicsMaterialRefC = RefConst< PhysicsMaterial >
 
using PhysicsMaterialList = Array< PhysicsMaterialRefC >
 
+ + + + + + + +

+Enumerations

enum class  EShapeType : uint8 {
+  Convex +, Compound +, Decorated +, Mesh +,
+  HeightField +, SoftBody +, User1 +, User2 +,
+  User3 +, User4 +, Plane +
+ }
 Shapes are categorized in groups, each shape can return which group it belongs to through its Shape::GetType function. More...
 
enum class  EShapeSubType : uint8 {
+  Sphere +, Box +, Triangle +, Capsule +,
+  TaperedCapsule +, Cylinder +, ConvexHull +, StaticCompound +,
+  MutableCompound +, RotatedTranslated +, Scaled +, OffsetCenterOfMass +,
+  Mesh +, HeightField +, SoftBody +, User1 +,
+  User2 +, User3 +, User4 +, User5 +,
+  User6 +, User7 +, User8 +, UserConvex1 +,
+  UserConvex2 +, UserConvex3 +, UserConvex4 +, UserConvex5 +,
+  UserConvex6 +, UserConvex7 +, UserConvex8 +, Plane +,
+  TaperedCylinder +
+ }
 This enumerates all shape types, each shape can return its type through Shape::GetSubType. More...
 
+

Typedef Documentation

+ +

◆ CastRayCollector

+ + + +

◆ CastShapeCollector

+ + + +

◆ CollidePointCollector

+ + + +

◆ CollideShapeCollector

+ + + +

◆ PhysicsMaterialList

+ +
+
+ +
+
+ +

◆ PhysicsMaterialRefC

+ +
+
+ +
+
+ +

◆ ShapeList

+ +
+
+ + + + +
using ShapeList = Array<ShapeRefC>
+
+ +
+
+ +

◆ ShapeRefC

+ +
+
+ + + + +
using ShapeRefC = RefConst<Shape>
+
+ +
+
+ +

◆ TransformedShapeCollector

+ + +

Enumeration Type Documentation

+ +

◆ EShapeSubType

+ +
+
+ + + + + +
+ + + + +
enum class EShapeSubType : uint8
+
+strong
+
+ +

This enumerates all shape types, each shape can return its type through Shape::GetSubType.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
Sphere 
Box 
Triangle 
Capsule 
TaperedCapsule 
Cylinder 
ConvexHull 
StaticCompound 
MutableCompound 
RotatedTranslated 
Scaled 
OffsetCenterOfMass 
Mesh 
HeightField 
SoftBody 
User1 
User2 
User3 
User4 
User5 
User6 
User7 
User8 
UserConvex1 
UserConvex2 
UserConvex3 
UserConvex4 
UserConvex5 
UserConvex6 
UserConvex7 
UserConvex8 
Plane 
TaperedCylinder 
+ +
+
+ +

◆ EShapeType

+ +
+
+ + + + + +
+ + + + +
enum class EShapeType : uint8
+
+strong
+
+ +

Shapes are categorized in groups, each shape can return which group it belongs to through its Shape::GetType function.

+ + + + + + + + + + + + +
Enumerator
Convex 

Used by ConvexShape, all shapes that use the generic convex vs convex collision detection system (box, sphere, capsule, tapered capsule, cylinder, triangle)

+
Compound 

Used by CompoundShape.

+
Decorated 

Used by DecoratedShape.

+
Mesh 

Used by MeshShape.

+
HeightField 

Used by HeightFieldShape.

+
SoftBody 

Used by SoftBodyShape.

+
User1 
User2 
User3 
User4 
Plane 

Used by PlaneShape.

+
+ +
+
+
+
+ + + + diff --git a/_shape_8h.js b/_shape_8h.js new file mode 100644 index 000000000..9b1292039 --- /dev/null +++ b/_shape_8h.js @@ -0,0 +1,65 @@ +var _shape_8h = +[ + [ "ShapeSettings", "class_shape_settings.html", "class_shape_settings" ], + [ "ShapeFunctions", "class_shape_functions.html", "class_shape_functions" ], + [ "Shape", "class_shape.html", "class_shape" ], + [ "Shape::GetTrianglesContext", "struct_shape_1_1_get_triangles_context.html", "struct_shape_1_1_get_triangles_context" ], + [ "Shape::Stats", "struct_shape_1_1_stats.html", "struct_shape_1_1_stats" ], + [ "CastRayCollector", "_shape_8h.html#a09896ea7755d75dc0c2c3e7058a6b85b", null ], + [ "CastShapeCollector", "_shape_8h.html#a501dee38fc3089311c7c9408ceda7401", null ], + [ "CollidePointCollector", "_shape_8h.html#aebaf36faa66f5b466411acbe12342d70", null ], + [ "CollideShapeCollector", "_shape_8h.html#af33744a7638d2c8e3ba97737b069f8d2", null ], + [ "PhysicsMaterialList", "_shape_8h.html#ae22d65df49227119a635532dbc63a9a3", null ], + [ "PhysicsMaterialRefC", "_shape_8h.html#ae4083d6c957623ad6d3735d1d515b05e", null ], + [ "ShapeList", "_shape_8h.html#aa3428b3d5af96a1e2200ae7d14057d3c", null ], + [ "ShapeRefC", "_shape_8h.html#a840e6a4efc782d25701f730eb48ef249", null ], + [ "TransformedShapeCollector", "_shape_8h.html#ac1f1a1681fa4d69dfbc6cd9cc08c2ee4", null ], + [ "EShapeSubType", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551b", [ + [ "Sphere", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551bab7095f057db3fefa7325ad93a04e14fd", null ], + [ "Box", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba3cfce651e667ab85486dd42a8185f98a", null ], + [ "Triangle", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba5e5500cb2b82eb72d550de644bd1b64b", null ], + [ "Capsule", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba4880c0f12c06dd6d142e7a40b041bf1a", null ], + [ "TaperedCapsule", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba24effac8f5b99ca770d8f0ad5c23279d", null ], + [ "Cylinder", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba2ec2c2961c7ce5a114d969c1f562a563", null ], + [ "ConvexHull", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba3e1ee9920ed982b5da9becaf4b5463e5", null ], + [ "StaticCompound", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba1bc847c331f1918fd1fa8b0231517f18", null ], + [ "MutableCompound", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba7cfb218c3d7c5b405065bbe36510734c", null ], + [ "RotatedTranslated", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba2215a85eb4276343896831176daa98fd", null ], + [ "Scaled", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba7380ae6c5e1189eef50cfd0557d74e99", null ], + [ "OffsetCenterOfMass", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551bab56bddbe57bc36e5e91ea827e57d3adc", null ], + [ "Mesh", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba710fdb6adb881b408116ef95335e1961", null ], + [ "HeightField", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba9a7e8772035f8412fc62cd830d0ba944", null ], + [ "SoftBody", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551baaae0baf0b48c5dcbb8097a4b857f077d", null ], + [ "User1", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba6b908b785fdba05a6446347dae08d8c5", null ], + [ "User2", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551baa09bccf2b2963982b34dc0e08d8b582a", null ], + [ "User3", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551bae5d2ad241ec44cf155bc78ae8d11f715", null ], + [ "User4", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba5ad55d96abf0e50647d6de116530d6df", null ], + [ "User5", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba50c22602b70659dde2893f3a2ba0ab82", null ], + [ "User6", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba10ddead5bb8bcfaa4d62090acd7cdfb2", null ], + [ "User7", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba98cd5d17f0660baca7d652995f0d17b6", null ], + [ "User8", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551bad306313ac03787c5f5f41641773bfb9a", null ], + [ "UserConvex1", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba56ee3e0d63e9daae01eaf439a3dafab4", null ], + [ "UserConvex2", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba4a787d586139ae508ca8f27d7d32e083", null ], + [ "UserConvex3", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551bab4f03368b09d3feb8d20d904cf32e092", null ], + [ "UserConvex4", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba4a905595a667bd91c94bae0a412175ae", null ], + [ "UserConvex5", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba54159e0e550120a39f15d154ffc68bb4", null ], + [ "UserConvex6", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551baff9a08797f6cb96a2c4411bd74b9a965", null ], + [ "UserConvex7", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba17843305369ea498e0b73fc07a427090", null ], + [ "UserConvex8", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba065f8314f9f081cee519694eacc54e04", null ], + [ "Plane", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba0d3adee051531c15b3509b4d4d75ce7b", null ], + [ "TaperedCylinder", "_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba020daae016a7d88e6b77470e235d9dc8", null ] + ] ], + [ "EShapeType", "_shape_8h.html#ad64a1c665070a3100e456e54073554a5", [ + [ "Convex", "_shape_8h.html#ad64a1c665070a3100e456e54073554a5a766cae017fab4bcc1d1e83fbb9af87c3", null ], + [ "Compound", "_shape_8h.html#ad64a1c665070a3100e456e54073554a5a26154ea007c65f860de5333a555a56cf", null ], + [ "Decorated", "_shape_8h.html#ad64a1c665070a3100e456e54073554a5a37c71f1e0f41cdad32aa3d4add9f2f86", null ], + [ "Mesh", "_shape_8h.html#ad64a1c665070a3100e456e54073554a5a710fdb6adb881b408116ef95335e1961", null ], + [ "HeightField", "_shape_8h.html#ad64a1c665070a3100e456e54073554a5a9a7e8772035f8412fc62cd830d0ba944", null ], + [ "SoftBody", "_shape_8h.html#ad64a1c665070a3100e456e54073554a5aaae0baf0b48c5dcbb8097a4b857f077d", null ], + [ "User1", "_shape_8h.html#ad64a1c665070a3100e456e54073554a5a6b908b785fdba05a6446347dae08d8c5", null ], + [ "User2", "_shape_8h.html#ad64a1c665070a3100e456e54073554a5aa09bccf2b2963982b34dc0e08d8b582a", null ], + [ "User3", "_shape_8h.html#ad64a1c665070a3100e456e54073554a5ae5d2ad241ec44cf155bc78ae8d11f715", null ], + [ "User4", "_shape_8h.html#ad64a1c665070a3100e456e54073554a5a5ad55d96abf0e50647d6de116530d6df", null ], + [ "Plane", "_shape_8h.html#ad64a1c665070a3100e456e54073554a5a0d3adee051531c15b3509b4d4d75ce7b", null ] + ] ] +]; \ No newline at end of file diff --git a/_shape_8h_source.html b/_shape_8h_source.html new file mode 100644 index 000000000..97983964c --- /dev/null +++ b/_shape_8h_source.html @@ -0,0 +1,613 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/Shape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Shape.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
+ + + + +
11#include <Jolt/Geometry/AABox.h>
+
12#include <Jolt/Core/Reference.h>
+
13#include <Jolt/Core/Color.h>
+
14#include <Jolt/Core/Result.h>
+ + + + + +
20
+ +
22
+
23struct RayCast;
+
24class RayCastSettings;
+
25struct ShapeCast;
+ +
27class RayCastResult;
+
28class ShapeCastResult;
+ + + +
32class SubShapeID;
+
33class PhysicsMaterial;
+ +
35class Plane;
+
36class SoftBodyVertex;
+
37class Shape;
+
38class StreamOut;
+
39class StreamIn;
+
40#ifdef JPH_DEBUG_RENDERER
+
41class DebugRenderer;
+
42#endif // JPH_DEBUG_RENDERER
+
43
+ + + + + +
49
+ + + + +
54
+
+
56enum class EShapeType : uint8
+
57{
+
58 Convex,
+
59 Compound,
+
60 Decorated,
+
61 Mesh,
+ +
63 SoftBody,
+
64
+
65 // User defined shapes
+
66 User1,
+
67 User2,
+
68 User3,
+
69 User4,
+
70
+
71 Plane,
+
72};
+
+
73
+
+
75enum class EShapeSubType : uint8
+
76{
+
77 // Convex shapes
+
78 Sphere,
+
79 Box,
+ +
81 Capsule,
+ + + +
85
+
86 // Compound shapes
+ + +
89
+
90 // Decorated shapes
+ +
92 Scaled,
+ +
94
+
95 // Other shapes
+
96 Mesh,
+ + +
99
+
100 // User defined shapes
+
101 User1,
+
102 User2,
+
103 User3,
+
104 User4,
+
105 User5,
+
106 User6,
+
107 User7,
+
108 User8,
+
109
+
110 // User defined convex shapes
+ + + + + + + + +
119
+
120 // Other shapes
+
121 Plane,
+ +
123};
+
+
124
+
125// Sets of shape sub types
+ + +
128static constexpr EShapeSubType sCompoundSubShapeTypes[] = { EShapeSubType::StaticCompound, EShapeSubType::MutableCompound };
+ +
130
+
132static constexpr uint NumSubShapeTypes = uint(size(sAllSubShapeTypes));
+
133
+
135static constexpr const char *sSubShapeTypeNames[] = { "Sphere", "Box", "Triangle", "Capsule", "TaperedCapsule", "Cylinder", "ConvexHull", "StaticCompound", "MutableCompound", "RotatedTranslated", "Scaled", "OffsetCenterOfMass", "Mesh", "HeightField", "SoftBody", "User1", "User2", "User3", "User4", "User5", "User6", "User7", "User8", "UserConvex1", "UserConvex2", "UserConvex3", "UserConvex4", "UserConvex5", "UserConvex6", "UserConvex7", "UserConvex8", "Plane", "TaperedCylinder" };
+
136static_assert(size(sSubShapeTypeNames) == NumSubShapeTypes);
+
137
+
+
144class JPH_EXPORT ShapeSettings : public SerializableObject, public RefTarget<ShapeSettings>
+
145{
+
146public:
+ +
148
+ +
150
+
152 virtual ShapeResult Create() const = 0;
+
153
+
156 void ClearCachedResult() { mCachedResult.Clear(); }
+
157
+
159 uint64 mUserData = 0;
+
160
+
161protected:
+ +
163};
+
+
164
+
+ +
167{
+
168public:
+
170 Shape * (*mConstruct)() = nullptr;
+
171
+ +
174
+
176 static inline ShapeFunctions & sGet(EShapeSubType inSubType) { return sRegistry[int(inSubType)]; }
+
177
+
178private:
+
179 static ShapeFunctions sRegistry[NumSubShapeTypes];
+
180};
+
+
181
+
+
183class JPH_EXPORT Shape : public RefTarget<Shape>, public NonCopyable
+
184{
+
185public:
+ +
187
+ +
189
+
191 Shape(EShapeType inType, EShapeSubType inSubType) : mShapeType(inType), mShapeSubType(inSubType) { }
+
192 Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, [[maybe_unused]] ShapeResult &outResult) : mUserData(inSettings.mUserData), mShapeType(inType), mShapeSubType(inSubType) { }
+
193
+
195 virtual ~Shape() = default;
+
196
+
198 inline EShapeType GetType() const { return mShapeType; }
+
199 inline EShapeSubType GetSubType() const { return mShapeSubType; }
+
200
+
202 uint64 GetUserData() const { return mUserData; }
+
203 void SetUserData(uint64 inUserData) { mUserData = inUserData; }
+
204
+
206 virtual bool MustBeStatic() const { return false; }
+
207
+
209 virtual Vec3 GetCenterOfMass() const { return Vec3::sZero(); }
+
210
+
212 virtual AABox GetLocalBounds() const = 0;
+
213
+
215 virtual uint GetSubShapeIDBitsRecursive() const = 0;
+
216
+
220 virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const { return GetLocalBounds().Scaled(inScale).Transformed(inCenterOfMassTransform); }
+
221
+
+
223 AABox GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
+
224 {
+
225 // Use single precision version using the rotation only
+
226 AABox bounds = GetWorldSpaceBounds(inCenterOfMassTransform.GetRotation(), inScale);
+
227
+
228 // Apply translation
+
229 bounds.Translate(inCenterOfMassTransform.GetTranslation());
+
230
+
231 return bounds;
+
232 }
+
+
233
+
236 virtual float GetInnerRadius() const = 0;
+
237
+ +
240
+
245 virtual const Shape * GetLeafShape([[maybe_unused]] const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const;
+
246
+
248 virtual const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const = 0;
+
249
+
252 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const = 0;
+
253
+ +
256
+
264 virtual void GetSupportingFace([[maybe_unused]] const SubShapeID &inSubShapeID, [[maybe_unused]] Vec3Arg inDirection, [[maybe_unused]] Vec3Arg inScale, [[maybe_unused]] Mat44Arg inCenterOfMassTransform, [[maybe_unused]] SupportingFace &outVertices) const { /* Nothing */ }
+
265
+
267 virtual uint64 GetSubShapeUserData([[maybe_unused]] const SubShapeID &inSubShapeID) const { return mUserData; }
+
268
+
276 virtual TransformedShape GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const;
+
277
+
285#ifdef JPH_DEBUG_RENDERER
+
287#endif
+
288 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy
+
289#ifdef JPH_DEBUG_RENDERER // Not using JPH_IF_DEBUG_RENDERER for Doxygen
+
290 , RVec3Arg inBaseOffset
+
291#endif
+
292 ) const = 0;
+
293
+
294#ifdef JPH_DEBUG_RENDERER
+
296 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const = 0;
+
297
+
299 virtual void DrawGetSupportFunction([[maybe_unused]] DebugRenderer *inRenderer, [[maybe_unused]] RMat44Arg inCenterOfMassTransform, [[maybe_unused]] Vec3Arg inScale, [[maybe_unused]] ColorArg inColor, [[maybe_unused]] bool inDrawSupportDirection) const { /* Only implemented for convex shapes */ }
+
300
+
302 virtual void DrawGetSupportingFace([[maybe_unused]] DebugRenderer *inRenderer, [[maybe_unused]] RMat44Arg inCenterOfMassTransform, [[maybe_unused]] Vec3Arg inScale) const { /* Only implemented for convex shapes */ }
+
303#endif // JPH_DEBUG_RENDERER
+
304
+
309 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const = 0;
+
310
+
313 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const = 0;
+
314
+
319 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const = 0;
+
320
+
329 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const = 0;
+
330
+
335 virtual void CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const;
+
336
+
341 virtual void TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const;
+
342
+
345 ShapeResult ScaleShape(Vec3Arg inScale) const;
+
346
+
348 struct alignas(16) GetTrianglesContext { uint8 mData[4288]; };
+
349
+
351 static constexpr int cGetTrianglesMinTrianglesRequested = 32;
+
352
+
358 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const = 0;
+
359
+
366 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const = 0;
+
367
+
374
+
376 virtual void SaveBinaryState(StreamOut &inStream) const;
+
377
+
379 static ShapeResult sRestoreFromBinaryState(StreamIn &inStream);
+
380
+
382 virtual void SaveMaterialState([[maybe_unused]] PhysicsMaterialList &outMaterials) const { /* By default do nothing */ }
+
383
+
385 virtual void RestoreMaterialState([[maybe_unused]] const PhysicsMaterialRefC *inMaterials, [[maybe_unused]] uint inNumMaterials) { JPH_ASSERT(inNumMaterials == 0); }
+
386
+
388 virtual void SaveSubShapeState([[maybe_unused]] ShapeList &outSubShapes) const { /* By default do nothing */ }
+
389
+
391 virtual void RestoreSubShapeState([[maybe_unused]] const ShapeRefC *inSubShapes, [[maybe_unused]] uint inNumShapes) { JPH_ASSERT(inNumShapes == 0); }
+
392
+ + + + +
397
+
399 void SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const;
+
400
+
402 static ShapeResult sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap);
+
403
+
405
+
+
407 struct Stats
+
408 {
+
409 Stats(size_t inSizeBytes, uint inNumTriangles) : mSizeBytes(inSizeBytes), mNumTriangles(inNumTriangles) { }
+
410
+
411 size_t mSizeBytes;
+ +
413 };
+
+
414
+
416 virtual Stats GetStats() const = 0;
+
417
+ +
419
+
422 virtual Stats GetStatsRecursive(VisitedShapes &ioVisitedShapes) const;
+
423
+
425 virtual float GetVolume() const = 0;
+
426
+
439 virtual bool IsValidScale(Vec3Arg inScale) const;
+
440
+
446 virtual Vec3 MakeScaleValid(Vec3Arg inScale) const;
+
447
+
448#ifdef JPH_DEBUG_RENDERER
+ +
451#endif // JPH_DEBUG_RENDERER
+
452
+
453protected:
+
455 virtual void RestoreBinaryState(StreamIn &inStream);
+
456
+
458 static void sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter);
+
459
+
460private:
+
461 uint64 mUserData = 0;
+
462 EShapeType mShapeType;
+
463 EShapeSubType mShapeSubType;
+
464};
+
+
465
+ + + + + +
std::uint8_t uint8
Definition Core.h:453
+
#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_ASSERT(...)
Definition IssueReporting.h:33
+ +
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ + + + +
#define JPH_DECLARE_SERIALIZABLE_ABSTRACT(linkage, class_name)
Definition SerializableObject.h:120
+
EShapeSubType
This enumerates all shape types, each shape can return its type through Shape::GetSubType.
Definition Shape.h:76
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EShapeType
Shapes are categorized in groups, each shape can return which group it belongs to through its Shape::...
Definition Shape.h:57
+
@ Plane
Used by PlaneShape.
+
@ Compound
Used by CompoundShape.
+
@ Decorated
Used by DecoratedShape.
+ + +
@ Mesh
Used by MeshShape.
+
@ Convex
Used by ConvexShape, all shapes that use the generic convex vs convex collision detection system (box...
+
@ HeightField
Used by HeightFieldShape.
+ +
@ SoftBody
Used by SoftBodyShape.
+ + + + + +
std::unordered_set< Key, Hash, KeyEqual, STLAllocator< Key > > UnorderedSet
Definition UnorderedSet.h:13
+
Axis aligned box.
Definition AABox.h:16
+
AABox Scaled(Vec3Arg inScale) const
Scale this bounding box, can handle non-uniform and negative scaling.
Definition AABox.h:215
+
AABox Transformed(Mat44Arg inMatrix) const
Transform bounding box.
Definition AABox.h:184
+
void Translate(Vec3Arg inTranslation)
Translate bounding box.
Definition AABox.h:170
+
Definition Array.h:36
+
Structure that holds the result of colliding a point against a shape.
Definition CollidePointResult.h:14
+
Class that contains all information of two colliding shapes.
Definition CollideShape.h:19
+
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
+
static const Color sBlack
Predefined colors.
Definition Color.h:53
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
JPH_INLINE DVec3 GetTranslation() const
Definition DMat44.h:111
+
JPH_INLINE Mat44 GetRotation() const
Get rotation part only (note: retains the first 3 values from the bottom row)
Definition DMat44.h:128
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition PhysicsMaterial.h:23
+
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
Definition Quat.h:33
+
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
+
Definition Reference.h:35
+ +
void Clear()
Clear result or error.
Definition Result.h:111
+
Definition SerializableObject.h:156
+
Result of a shape cast test.
Definition ShapeCast.h:114
+
Settings to be passed with a shape cast.
Definition ShapeCast.h:92
+
Filter class.
Definition ShapeFilter.h:17
+
Function table for functions on shapes.
Definition Shape.h:167
+
static ShapeFunctions & sGet(EShapeSubType inSubType)
Get an entry in the registry for a particular sub type.
Definition Shape.h:176
+
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition Shape.h:184
+
virtual MassProperties GetMassProperties() const =0
Calculate the mass and inertia of this shape.
+
virtual void SaveSubShapeState(ShapeList &outSubShapes) const
Outputs the shape references that this shape has to outSubShapes.
Definition Shape.h:388
+
Shape(EShapeType inType, EShapeSubType inSubType)
Constructor.
Definition Shape.h:191
+
virtual float GetInnerRadius() const =0
+
virtual uint64 GetSubShapeUserData(const SubShapeID &inSubShapeID) const
Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserDa...
Definition Shape.h:267
+
virtual float GetVolume() const =0
+
virtual AABox GetLocalBounds() const =0
Get local bounding box including convex radius, this box is centered around the center of mass rather...
+
EShapeType GetType() const
Get type.
Definition Shape.h:198
+
virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const =0
+
virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const
Definition Shape.h:264
+
virtual void DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
Draw the results of the GetSupportingFace function to show any errors introduced by this process (onl...
Definition Shape.h:302
+
virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0
+
StreamUtils::ObjectToIDMap< Shape > ShapeToIDMap
Definition Shape.h:393
+
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
Definition Shape.h:192
+
virtual bool MustBeStatic() const
Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.
Definition Shape.h:206
+
virtual void RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)
Restore the material references after calling sRestoreFromBinaryState. Note that the exact same mater...
Definition Shape.h:385
+
virtual void SaveMaterialState(PhysicsMaterialList &outMaterials) const
Outputs the material references that this shape has to outMaterials.
Definition Shape.h:382
+
virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const =0
+
uint64 GetUserData() const
User data (to be used freely by the application)
Definition Shape.h:202
+
StreamUtils::ObjectToIDMap< PhysicsMaterial > MaterialToIDMap
Definition Shape.h:395
+
virtual Vec3 GetCenterOfMass() const
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition Shape.h:209
+
virtual const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const =0
Get the material assigned to a particular sub shape ID.
+
EShapeSubType GetSubType() const
Definition Shape.h:199
+
virtual Stats GetStats() const =0
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
+
virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const =0
+
virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
+
virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
Definition Shape.h:220
+
virtual void RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)
Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes n...
Definition Shape.h:391
+
virtual void DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const
Draw the results of the GetSupportFunction with the convex radius added back on to show any errors in...
Definition Shape.h:299
+
void SetUserData(uint64 inUserData)
Definition Shape.h:203
+
virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const =0
+
virtual ~Shape()=default
Destructor.
+
AABox GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
Get world space bounds including convex radius.
Definition Shape.h:223
+
virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const =0
+
virtual uint GetSubShapeIDBitsRecursive() const =0
Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this ...
+
virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const =0
Draw the shape at a particular location with a particular color (debugging purposes)
+
static bool sDrawSubmergedVolumes
Debug helper which draws the intersection between water and the shapes, the center of buoyancy and th...
Definition Shape.h:450
+
virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0
+
UnorderedSet< const Shape * > VisitedShapes
Definition Shape.h:418
+
Definition Shape.h:145
+
Result< Ref< Shape > > ShapeResult
Definition Shape.h:149
+
ShapeResult mCachedResult
Definition Shape.h:162
+
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 TransformedShape.h:26
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
UnorderedMap< const Type *, uint32 > ObjectToIDMap
Definition StreamUtils.h:18
+
Definition RayCast.h:47
+
An opaque buffer that holds shape specific information during GetTrianglesStart/Next.
Definition Shape.h:348
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
uint mNumTriangles
Number of triangles in this shape (when applicable)
Definition Shape.h:412
+
Stats(size_t inSizeBytes, uint inNumTriangles)
Definition Shape.h:409
+
size_t mSizeBytes
Amount of memory used by this shape (size in bytes)
Definition Shape.h:411
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_shape_cast_8h.html b/_shape_cast_8h.html new file mode 100644 index 000000000..32e63ea1d --- /dev/null +++ b/_shape_cast_8h.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ShapeCast.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ShapeCast.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + +

+Classes

struct  ShapeCastT< Vec, Mat, ShapeCastType >
 Structure that holds a single shape cast (a shape moving along a linear path in 3d space with no rotation) More...
 
struct  ShapeCast
 
struct  RShapeCast
 
class  ShapeCastSettings
 Settings to be passed with a shape cast. More...
 
class  ShapeCastResult
 Result of a shape cast test. More...
 
+
+
+ + + + diff --git a/_shape_cast_8h.js b/_shape_cast_8h.js new file mode 100644 index 000000000..40580d5cc --- /dev/null +++ b/_shape_cast_8h.js @@ -0,0 +1,8 @@ +var _shape_cast_8h = +[ + [ "ShapeCastT< Vec, Mat, ShapeCastType >", "struct_shape_cast_t.html", "struct_shape_cast_t" ], + [ "ShapeCast", "struct_shape_cast.html", null ], + [ "RShapeCast", "struct_r_shape_cast.html", "struct_r_shape_cast" ], + [ "ShapeCastSettings", "class_shape_cast_settings.html", "class_shape_cast_settings" ], + [ "ShapeCastResult", "class_shape_cast_result.html", "class_shape_cast_result" ] +]; \ No newline at end of file diff --git a/_shape_cast_8h_source.html b/_shape_cast_8h_source.html new file mode 100644 index 000000000..275f33a99 --- /dev/null +++ b/_shape_cast_8h_source.html @@ -0,0 +1,353 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ShapeCast.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShapeCast.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
+ + + +
10
+ +
12
+
14template <class Vec, class Mat, class ShapeCastType>
+
+ +
16{
+ +
18
+
+
20 ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection, const AABox &inWorldSpaceBounds) :
+
21 mShape(inShape),
+
22 mScale(inScale),
+
23 mCenterOfMassStart(inCenterOfMassStart),
+
24 mDirection(inDirection),
+
25 mShapeWorldBounds(inWorldSpaceBounds)
+
26 {
+
27 }
+
+
28
+
+
30 ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection) :
+
31 ShapeCastT<Vec, Mat, ShapeCastType>(inShape, inScale, inCenterOfMassStart, inDirection, inShape->GetWorldSpaceBounds(inCenterOfMassStart, inScale))
+
32 {
+
33 }
+
+
34
+
+
36 static inline ShapeCastType sFromWorldTransform(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inWorldTransform, Vec3Arg inDirection)
+
37 {
+
38 return ShapeCastType(inShape, inScale, inWorldTransform.PreTranslated(inShape->GetCenterOfMass()), inDirection);
+
39 }
+
+
40
+
+
42 ShapeCastType PostTransformed(typename Mat::ArgType inTransform) const
+
43 {
+
44 Mat44 start = inTransform * mCenterOfMassStart;
+
45 Vec3 direction = inTransform.Multiply3x3(mDirection);
+
46 return { mShape, mScale, start, direction };
+
47 }
+
+
48
+
+
50 ShapeCastType PostTranslated(typename Vec::ArgType inTranslation) const
+
51 {
+
52 return { mShape, mScale, mCenterOfMassStart.PostTranslated(inTranslation), mDirection };
+
53 }
+
+
54
+
+
56 inline Vec GetPointOnRay(float inFraction) const
+
57 {
+
58 return mCenterOfMassStart.GetTranslation() + inFraction * mDirection;
+
59 }
+
+
60
+
61 const Shape * mShape;
+
62 const Vec3 mScale;
+ + + +
66};
+
+
67
+
+
68struct ShapeCast : public ShapeCastT<Vec3, Mat44, ShapeCast>
+
69{
+ +
71};
+
+
72
+
+
73struct RShapeCast : public ShapeCastT<RVec3, RMat44, RShapeCast>
+
74{
+ +
76
+
+
78 explicit RShapeCast(const ShapeCast &inCast) :
+
79 RShapeCast(inCast.mShape, inCast.mScale, RMat44(inCast.mCenterOfMassStart), inCast.mDirection, inCast.mShapeWorldBounds)
+
80 {
+
81 }
+
+
82
+
+
84 explicit operator ShapeCast() const
+
85 {
+ +
87 }
+
+
88};
+
+
89
+ +
111
+
+ +
114{
+
115public:
+ +
117
+
119 ShapeCastResult() = default;
+
120
+
+
130 ShapeCastResult(float inFraction, Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inContactNormalOrPenetrationDepth, bool inBackFaceHit, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2) :
+
131 CollideShapeResult(inContactPoint1, inContactPoint2, inContactNormalOrPenetrationDepth, (inContactPoint2 - inContactPoint1).Length(), inSubShapeID1, inSubShapeID2, inBodyID2),
+
132 mFraction(inFraction),
+
133 mIsBackFaceHit(inBackFaceHit)
+
134 {
+
135 }
+
+
136
+
138 inline float GetEarlyOutFraction() const { return mFraction > 0.0f? mFraction : -mPenetrationDepth; }
+
139
+
+
142 ShapeCastResult Reversed(Vec3Arg inWorldSpaceCastDirection) const
+
143 {
+
144 // Calculate by how much to shift the contact points
+
145 Vec3 delta = mFraction * inWorldSpaceCastDirection;
+
146
+
147 ShapeCastResult result;
+
148 result.mContactPointOn2 = mContactPointOn1 - delta;
+
149 result.mContactPointOn1 = mContactPointOn2 - delta;
+ + +
152 result.mSubShapeID2 = mSubShapeID1;
+
153 result.mSubShapeID1 = mSubShapeID2;
+
154 result.mBodyID2 = mBodyID2;
+
155 result.mFraction = mFraction;
+ +
157
+ +
159 for (Face::size_type i = 0; i < mShape1Face.size(); ++i)
+
160 result.mShape2Face[i] = mShape1Face[i] - delta;
+
161
+ +
163 for (Face::size_type i = 0; i < mShape2Face.size(); ++i)
+
164 result.mShape1Face[i] = mShape2Face[i] - delta;
+
165
+
166 return result;
+
167 }
+
+
168
+
169 float mFraction;
+ +
171};
+
+
172
+ + +
EBackFaceMode
How collision detection functions will treat back facing triangles.
Definition BackFaceMode.h:11
+
@ IgnoreBackFaces
Ignore collision with back facing surfaces/triangles.
+ +
#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
+
Mat44 RMat44
Definition Real.h:31
+
Vec3 RVec3
Definition Real.h:29
+ +
Axis aligned box.
Definition AABox.h:16
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Settings to be passed with a collision query.
Definition CollideShape.h:72
+
Class that contains all information of two colliding shapes.
Definition CollideShape.h:19
+
SubShapeID mSubShapeID1
Sub shape ID that identifies the face on shape 1.
Definition CollideShape.h:63
+
BodyID mBodyID2
BodyID to which shape 2 belongs to.
Definition CollideShape.h:65
+
Vec3 mContactPointOn2
Contact point on the surface of shape 2 (in world space or relative to base offset)....
Definition CollideShape.h:60
+
Vec3 mPenetrationAxis
Direction to move shape 2 out of collision along the shortest path (magnitude is meaningless,...
Definition CollideShape.h:61
+
Vec3 mContactPointOn1
Contact point on the surface of shape 1 (in world space or relative to base offset)
Definition CollideShape.h:59
+
float mPenetrationDepth
Penetration depth (move shape 2 by this distance to resolve the collision)
Definition CollideShape.h:62
+
Face mShape1Face
Colliding face on shape 1 (optional result, in world space or relative to base offset)
Definition CollideShape.h:66
+
SubShapeID mSubShapeID2
Sub shape ID that identifies the face on shape 2.
Definition CollideShape.h:64
+
Face mShape2Face
Colliding face on shape 2 (optional result, in world space or relative to base offset)
Definition CollideShape.h:67
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Mat44 ToMat44() const
In single precision mode just return the matrix itself.
Definition Mat44.h:225
+
Result of a shape cast test.
Definition ShapeCast.h:114
+
float GetEarlyOutFraction() const
Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'....
Definition ShapeCast.h:138
+
bool mIsBackFaceHit
True if the shape was hit from the back side.
Definition ShapeCast.h:170
+
JPH_OVERRIDE_NEW_DELETE ShapeCastResult()=default
Default constructor.
+
float mFraction
This is the fraction where the shape hit the other shape: CenterOfMassOnHit = Start + value * (End - ...
Definition ShapeCast.h:169
+
ShapeCastResult Reversed(Vec3Arg inWorldSpaceCastDirection) const
Definition ShapeCast.h:142
+
ShapeCastResult(float inFraction, Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inContactNormalOrPenetrationDepth, bool inBackFaceHit, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2)
Definition ShapeCast.h:130
+
Settings to be passed with a shape cast.
Definition ShapeCast.h:92
+
EBackFaceMode mBackFaceModeTriangles
How backfacing triangles should be treated (should we report moving from back to front for triangle b...
Definition ShapeCast.h:100
+
bool mReturnDeepestPoint
When true, and the shape is intersecting at the beginning of the cast (fraction = 0) then this will c...
Definition ShapeCast.h:109
+
EBackFaceMode mBackFaceModeConvex
How backfacing convex objects should be treated (should we report starting inside an object and movin...
Definition ShapeCast.h:103
+
JPH_OVERRIDE_NEW_DELETE void SetBackFaceMode(EBackFaceMode inMode)
Set the backfacing mode for all shapes.
Definition ShapeCast.h:97
+
bool mUseShrunkenShapeAndConvexRadius
Indicates if we want to shrink the shape by the convex radius and then expand it again....
Definition ShapeCast.h:106
+
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition Shape.h:184
+
virtual Vec3 GetCenterOfMass() const
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition Shape.h:209
+
uint size_type
Definition StaticArray.h:18
+
size_type size() const
Returns amount of elements in the array.
Definition StaticArray.h:89
+
void resize(size_type inNewSize)
Resize array to new length.
Definition StaticArray.h:101
+
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
+
Definition ShapeCast.h:74
+
RShapeCast(const ShapeCast &inCast)
Convert from ShapeCast, converts single to double precision.
Definition ShapeCast.h:78
+
Definition ShapeCast.h:69
+
Structure that holds a single shape cast (a shape moving along a linear path in 3d space with no rota...
Definition ShapeCast.h:16
+
static ShapeCastType sFromWorldTransform(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inWorldTransform, Vec3Arg inDirection)
Construct a shape cast using a world transform for a shape instead of a center of mass transform.
Definition ShapeCast.h:36
+
ShapeCastType PostTranslated(typename Vec::ArgType inTranslation) const
Translate this shape cast by inTranslation.
Definition ShapeCast.h:50
+
JPH_OVERRIDE_NEW_DELETE ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection, const AABox &inWorldSpaceBounds)
Constructor.
Definition ShapeCast.h:20
+
const Vec3 mDirection
Direction and length of the cast (anything beyond this length will not be reported as a hit)
Definition ShapeCast.h:64
+
const Shape * mShape
Shape that's being cast (cannot be mesh shape). Note that this structure does not assume ownership ov...
Definition ShapeCast.h:61
+
ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection)
Constructor.
Definition ShapeCast.h:30
+
Vec GetPointOnRay(float inFraction) const
Get point with fraction inFraction on ray from mCenterOfMassStart to mCenterOfMassStart + mDirection ...
Definition ShapeCast.h:56
+
ShapeCastType PostTransformed(typename Mat::ArgType inTransform) const
Transform this shape cast using inTransform. Multiply transform on the left left hand side.
Definition ShapeCast.h:42
+
const Mat mCenterOfMassStart
Start position and orientation of the center of mass of the shape (construct using sFromWorldTransfor...
Definition ShapeCast.h:63
+
const Vec3 mScale
Scale in local space of the shape being cast (scales relative to its center of mass)
Definition ShapeCast.h:62
+
const AABox mShapeWorldBounds
Cached shape's world bounds, calculated in constructor.
Definition ShapeCast.h:65
+
+
+ + + + diff --git a/_shape_filter_8h.html b/_shape_filter_8h.html new file mode 100644 index 000000000..32262c452 --- /dev/null +++ b/_shape_filter_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ShapeFilter.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ShapeFilter.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  ShapeFilter
 Filter class. More...
 
class  ReversedShapeFilter
 Helper class to reverse the order of the shapes in the ShouldCollide function. More...
 
+
+
+ + + + diff --git a/_shape_filter_8h.js b/_shape_filter_8h.js new file mode 100644 index 000000000..bbf6e08cc --- /dev/null +++ b/_shape_filter_8h.js @@ -0,0 +1,5 @@ +var _shape_filter_8h = +[ + [ "ShapeFilter", "class_shape_filter.html", "class_shape_filter" ], + [ "ReversedShapeFilter", "class_reversed_shape_filter.html", "class_reversed_shape_filter" ] +]; \ No newline at end of file diff --git a/_shape_filter_8h_source.html b/_shape_filter_8h_source.html new file mode 100644 index 000000000..b97eccf44 --- /dev/null +++ b/_shape_filter_8h_source.html @@ -0,0 +1,205 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/ShapeFilter.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShapeFilter.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
+ + +
9
+ +
11
+
12class Shape;
+
13class SubShapeID;
+
14
+
+ +
17{
+
18public:
+
20 virtual ~ShapeFilter() = default;
+
21
+
+
26 virtual bool ShouldCollide([[maybe_unused]] const Shape *inShape2, [[maybe_unused]] const SubShapeID &inSubShapeIDOfShape2) const
+
27 {
+
28 return true;
+
29 }
+
+
30
+
+
39 virtual bool ShouldCollide([[maybe_unused]] const Shape *inShape1, [[maybe_unused]] const SubShapeID &inSubShapeIDOfShape1, [[maybe_unused]] const Shape *inShape2, [[maybe_unused]] const SubShapeID &inSubShapeIDOfShape2) const
+
40 {
+
41 return true;
+
42 }
+
+
43
+ +
46};
+
+
47
+
+ +
50{
+
51public:
+
+
53 explicit ReversedShapeFilter(const ShapeFilter &inFilter) : mFilter(inFilter)
+
54 {
+
55 mBodyID2 = inFilter.mBodyID2;
+
56 }
+
+
57
+
+
58 virtual bool ShouldCollide(const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const override
+
59 {
+
60 return mFilter.ShouldCollide(inShape2, inSubShapeIDOfShape2);
+
61 }
+
+
62
+
+
63 virtual bool ShouldCollide(const Shape *inShape1, const SubShapeID &inSubShapeIDOfShape1, const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const override
+
64 {
+
65 return mFilter.ShouldCollide(inShape2, inSubShapeIDOfShape2, inShape1, inSubShapeIDOfShape1);
+
66 }
+
+
67
+
68private:
+
69 const ShapeFilter & mFilter;
+
70};
+
+
71
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Helper class to reverse the order of the shapes in the ShouldCollide function.
Definition ShapeFilter.h:50
+
virtual bool ShouldCollide(const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const override
Definition ShapeFilter.h:58
+
virtual bool ShouldCollide(const Shape *inShape1, const SubShapeID &inSubShapeIDOfShape1, const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const override
Definition ShapeFilter.h:63
+
ReversedShapeFilter(const ShapeFilter &inFilter)
Constructor.
Definition ShapeFilter.h:53
+
Filter class.
Definition ShapeFilter.h:17
+
virtual bool ShouldCollide(const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const
Definition ShapeFilter.h:26
+
virtual bool ShouldCollide(const Shape *inShape1, const SubShapeID &inSubShapeIDOfShape1, const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const
Definition ShapeFilter.h:39
+
virtual ~ShapeFilter()=default
Destructor.
+
BodyID mBodyID2
Set by the collision detection functions to the body ID of the body that we're colliding against befo...
Definition ShapeFilter.h:45
+
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition Shape.h:184
+
A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...
Definition SubShapeID.h:23
+
+
+ + + + diff --git a/_six_d_o_f_constraint_8cpp.html b/_six_d_o_f_constraint_8cpp.html new file mode 100644 index 000000000..7181e903c --- /dev/null +++ b/_six_d_o_f_constraint_8cpp.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/SixDOFConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SixDOFConstraint.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (SixDOFConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (SixDOFConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_six_d_o_f_constraint_8cpp.js b/_six_d_o_f_constraint_8cpp.js new file mode 100644 index 000000000..4bc737b47 --- /dev/null +++ b/_six_d_o_f_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _six_d_o_f_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_six_d_o_f_constraint_8cpp.html#a76c5c26fda576727a88c3fd50f75bea4", null ] +]; \ No newline at end of file diff --git a/_six_d_o_f_constraint_8h.html b/_six_d_o_f_constraint_8h.html new file mode 100644 index 000000000..e77815eb1 --- /dev/null +++ b/_six_d_o_f_constraint_8h.html @@ -0,0 +1,135 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/SixDOFConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SixDOFConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  SixDOFConstraintSettings
 6 Degree Of Freedom Constraint setup structure. Allows control over each of the 6 degrees of freedom. More...
 
class  SixDOFConstraint
 6 Degree Of Freedom Constraint. Allows control over each of the 6 degrees of freedom. More...
 
+
+
+ + + + diff --git a/_six_d_o_f_constraint_8h.js b/_six_d_o_f_constraint_8h.js new file mode 100644 index 000000000..ca929d421 --- /dev/null +++ b/_six_d_o_f_constraint_8h.js @@ -0,0 +1,5 @@ +var _six_d_o_f_constraint_8h = +[ + [ "SixDOFConstraintSettings", "class_six_d_o_f_constraint_settings.html", "class_six_d_o_f_constraint_settings" ], + [ "SixDOFConstraint", "class_six_d_o_f_constraint.html", "class_six_d_o_f_constraint" ] +]; \ No newline at end of file diff --git a/_six_d_o_f_constraint_8h_source.html b/_six_d_o_f_constraint_8h_source.html new file mode 100644 index 000000000..dc37dd7fa --- /dev/null +++ b/_six_d_o_f_constraint_8h_source.html @@ -0,0 +1,459 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/SixDOFConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SixDOFConstraint.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
+ + + + + + + +
14
+ +
16
+
+ +
19{
+
20public:
+ +
22
+
23
+
+
24 enum EAxis
+
25 {
+ + + +
29
+ + + +
33
+ +
35 NumTranslation = TranslationZ + 1,
+
36 };
+
+
37
+
38 // See: ConstraintSettings::SaveBinaryState
+
39 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
40
+
42 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
+
43
+ +
46
+
48 RVec3 mPosition1 = RVec3::sZero();
+
49 Vec3 mAxisX1 = Vec3::sAxisX();
+
50 Vec3 mAxisY1 = Vec3::sAxisY();
+
51
+
53 RVec3 mPosition2 = RVec3::sZero();
+
54 Vec3 mAxisX2 = Vec3::sAxisX();
+
55 Vec3 mAxisY2 = Vec3::sAxisY();
+
56
+
60 float mMaxFriction[EAxis::Num] = { 0, 0, 0, 0, 0, 0 };
+
61
+ +
64
+
78 float mLimitMin[EAxis::Num] = { -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX };
+
79 float mLimitMax[EAxis::Num] = { FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX };
+
80
+
83 SpringSettings mLimitsSpringSettings[EAxis::NumTranslation];
+
84
+
86 void MakeFreeAxis(EAxis inAxis) { mLimitMin[inAxis] = -FLT_MAX; mLimitMax[inAxis] = FLT_MAX; }
+
87 bool IsFreeAxis(EAxis inAxis) const { return mLimitMin[inAxis] == -FLT_MAX && mLimitMax[inAxis] == FLT_MAX; }
+
88
+
90 void MakeFixedAxis(EAxis inAxis) { mLimitMin[inAxis] = FLT_MAX; mLimitMax[inAxis] = -FLT_MAX; }
+
91 bool IsFixedAxis(EAxis inAxis) const { return mLimitMin[inAxis] >= mLimitMax[inAxis]; }
+
92
+
94 void SetLimitedAxis(EAxis inAxis, float inMin, float inMax) { mLimitMin[inAxis] = inMin; mLimitMax[inAxis] = inMax; }
+
95
+
97 MotorSettings mMotorSettings[EAxis::Num];
+
98
+
99protected:
+
100 // See: ConstraintSettings::RestoreBinaryState
+
101 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
102};
+
+
103
+
+ +
106{
+
107public:
+ +
109
+ +
112
+
114 SixDOFConstraint(Body &inBody1, Body &inBody2, const SixDOFConstraintSettings &inSettings);
+
115
+
117 virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::SixDOF; }
+
118 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override;
+
119 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
120 virtual void ResetWarmStart() override;
+
121 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
122 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
123 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
124#ifdef JPH_DEBUG_RENDERER
+
125 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
126 virtual void DrawConstraintLimits(DebugRenderer *inRenderer) const override;
+
127#endif // JPH_DEBUG_RENDERER
+
128 virtual void SaveState(StateRecorder &inStream) const override;
+
129 virtual void RestoreState(StateRecorder &inStream) override;
+
130 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
131
+
132 // See: TwoBodyConstraint
+
133 virtual Mat44 GetConstraintToBody1Matrix() const override { return Mat44::sRotationTranslation(mConstraintToBody1, mLocalSpacePosition1); }
+
134 virtual Mat44 GetConstraintToBody2Matrix() const override { return Mat44::sRotationTranslation(mConstraintToBody2, mLocalSpacePosition2); }
+
135
+
137 void SetTranslationLimits(Vec3Arg inLimitMin, Vec3Arg inLimitMax);
+
138
+
140 void SetRotationLimits(Vec3Arg inLimitMin, Vec3Arg inLimitMax);
+
141
+
143 float GetLimitsMin(EAxis inAxis) const { return mLimitMin[inAxis]; }
+
144 float GetLimitsMax(EAxis inAxis) const { return mLimitMax[inAxis]; }
+
145 Vec3 GetTranslationLimitsMin() const { return Vec3::sLoadFloat3Unsafe(*reinterpret_cast<const Float3 *>(&mLimitMin[EAxis::TranslationX])); }
+
146 Vec3 GetTranslationLimitsMax() const { return Vec3::sLoadFloat3Unsafe(*reinterpret_cast<const Float3 *>(&mLimitMax[EAxis::TranslationX])); }
+
147 Vec3 GetRotationLimitsMin() const { return Vec3::sLoadFloat3Unsafe(*reinterpret_cast<const Float3 *>(&mLimitMin[EAxis::RotationX])); }
+
148 Vec3 GetRotationLimitsMax() const { return Vec3::sLoadFloat3Unsafe(*reinterpret_cast<const Float3 *>(&mLimitMax[EAxis::RotationX])); }
+
149
+
151 inline bool IsFixedAxis(EAxis inAxis) const { return (mFixedAxis & (1 << inAxis)) != 0; }
+
152 inline bool IsFreeAxis(EAxis inAxis) const { return (mFreeAxis & (1 << inAxis)) != 0; }
+
153
+
155 const SpringSettings & GetLimitsSpringSettings(EAxis inAxis) const { JPH_ASSERT(inAxis < EAxis::NumTranslation); return mLimitsSpringSettings[inAxis]; }
+
156 void SetLimitsSpringSettings(EAxis inAxis, const SpringSettings& inLimitsSpringSettings) { JPH_ASSERT(inAxis < EAxis::NumTranslation); mLimitsSpringSettings[inAxis] = inLimitsSpringSettings; CacheHasSpringLimits(); }
+
157
+
159 void SetMaxFriction(EAxis inAxis, float inFriction);
+
160 float GetMaxFriction(EAxis inAxis) const { return mMaxFriction[inAxis]; }
+
161
+
163 Quat GetRotationInConstraintSpace() const;
+
164
+
166 MotorSettings & GetMotorSettings(EAxis inAxis) { return mMotorSettings[inAxis]; }
+
167 const MotorSettings & GetMotorSettings(EAxis inAxis) const { return mMotorSettings[inAxis]; }
+
168
+
172 void SetMotorState(EAxis inAxis, EMotorState inState);
+
173 EMotorState GetMotorState(EAxis inAxis) const { return mMotorState[inAxis]; }
+
174
+
176 Vec3 GetTargetVelocityCS() const { return mTargetVelocity; }
+
177 void SetTargetVelocityCS(Vec3Arg inVelocity) { mTargetVelocity = inVelocity; }
+
178
+
180 void SetTargetAngularVelocityCS(Vec3Arg inAngularVelocity) { mTargetAngularVelocity = inAngularVelocity; }
+
181 Vec3 GetTargetAngularVelocityCS() const { return mTargetAngularVelocity; }
+
182
+
184 Vec3 GetTargetPositionCS() const { return mTargetPosition; }
+
185 void SetTargetPositionCS(Vec3Arg inPosition) { mTargetPosition = inPosition; }
+
186
+
188 void SetTargetOrientationCS(QuatArg inOrientation);
+
189 Quat GetTargetOrientationCS() const { return mTargetOrientation; }
+
190
+
193 void SetTargetOrientationBS(QuatArg inOrientation) { SetTargetOrientationCS(mConstraintToBody1.Conjugated() * inOrientation * mConstraintToBody2); }
+
194
+
196 inline Vec3 GetTotalLambdaPosition() const { return IsTranslationFullyConstrained()? mPointConstraintPart.GetTotalLambda() : Vec3(mTranslationConstraintPart[0].GetTotalLambda(), mTranslationConstraintPart[1].GetTotalLambda(), mTranslationConstraintPart[2].GetTotalLambda()); }
+
197 inline Vec3 GetTotalLambdaRotation() const { return IsRotationFullyConstrained()? mRotationConstraintPart.GetTotalLambda() : Vec3(mSwingTwistConstraintPart.GetTotalTwistLambda(), mSwingTwistConstraintPart.GetTotalSwingYLambda(), mSwingTwistConstraintPart.GetTotalSwingZLambda()); }
+
198 inline Vec3 GetTotalLambdaMotorTranslation() const { return Vec3(mMotorTranslationConstraintPart[0].GetTotalLambda(), mMotorTranslationConstraintPart[1].GetTotalLambda(), mMotorTranslationConstraintPart[2].GetTotalLambda()); }
+
199 inline Vec3 GetTotalLambdaMotorRotation() const { return Vec3(mMotorRotationConstraintPart[0].GetTotalLambda(), mMotorRotationConstraintPart[1].GetTotalLambda(), mMotorRotationConstraintPart[2].GetTotalLambda()); }
+
200
+
201private:
+
202 // Calculate properties needed for the position constraint
+
203 inline void GetPositionConstraintProperties(Vec3 &outR1PlusU, Vec3 &outR2, Vec3 &outU) const;
+
204
+
205 // Sanitize the translation limits
+
206 inline void UpdateTranslationLimits();
+
207
+
208 // Propagate the rotation limits to the constraint part
+
209 inline void UpdateRotationLimits();
+
210
+
211 // Update the cached state of which axis are free and which ones are fixed
+
212 inline void UpdateFixedFreeAxis();
+
213
+
214 // Cache the state of mTranslationMotorActive
+
215 void CacheTranslationMotorActive();
+
216
+
217 // Cache the state of mRotationMotorActive
+
218 void CacheRotationMotorActive();
+
219
+
220 // Cache the state of mRotationPositionMotorActive
+
221 void CacheRotationPositionMotorActive();
+
222
+
224 void CacheHasSpringLimits();
+
225
+
226 // Constraint settings helper functions
+
227 inline bool IsTranslationConstrained() const { return (mFreeAxis & 0b111) != 0b111; }
+
228 inline bool IsTranslationFullyConstrained() const { return (mFixedAxis & 0b111) == 0b111 && !mHasSpringLimits; }
+
229 inline bool IsRotationConstrained() const { return (mFreeAxis & 0b111000) != 0b111000; }
+
230 inline bool IsRotationFullyConstrained() const { return (mFixedAxis & 0b111000) == 0b111000; }
+
231 inline bool HasFriction(EAxis inAxis) const { return !IsFixedAxis(inAxis) && mMaxFriction[inAxis] > 0.0f; }
+
232
+
233 // CONFIGURATION PROPERTIES FOLLOW
+
234
+
235 // Local space constraint positions
+
236 Vec3 mLocalSpacePosition1;
+
237 Vec3 mLocalSpacePosition2;
+
238
+
239 // Transforms from constraint space to body space
+
240 Quat mConstraintToBody1;
+
241 Quat mConstraintToBody2;
+
242
+
243 // Limits
+
244 uint8 mFreeAxis = 0; // Bitmask of free axis (bit 0 = TranslationX)
+
245 uint8 mFixedAxis = 0; // Bitmask of fixed axis (bit 0 = TranslationX)
+
246 bool mTranslationMotorActive = false; // If any of the translational frictions / motors are active
+
247 bool mRotationMotorActive = false; // If any of the rotational frictions / motors are active
+
248 uint8 mRotationPositionMotorActive = 0; // Bitmask of axis that have position motor active (bit 0 = RotationX)
+
249 bool mHasSpringLimits = false; // If any of the limit springs have a non-zero frequency/stiffness
+
250 float mLimitMin[EAxis::Num];
+
251 float mLimitMax[EAxis::Num];
+
252 SpringSettings mLimitsSpringSettings[EAxis::NumTranslation];
+
253
+
254 // Motor settings for each axis
+
255 MotorSettings mMotorSettings[EAxis::Num];
+
256
+
257 // Friction settings for each axis
+
258 float mMaxFriction[EAxis::Num];
+
259
+
260 // Motor controls
+ +
262 Vec3 mTargetVelocity = Vec3::sZero();
+
263 Vec3 mTargetAngularVelocity = Vec3::sZero();
+
264 Vec3 mTargetPosition = Vec3::sZero();
+
265 Quat mTargetOrientation = Quat::sIdentity();
+
266
+
267 // RUN TIME PROPERTIES FOLLOW
+
268
+
269 // Constraint space axis in world space
+
270 Vec3 mTranslationAxis[3];
+
271 Vec3 mRotationAxis[3];
+
272
+
273 // Translation displacement (valid when translation axis has a range limit)
+
274 float mDisplacement[3];
+
275
+
276 // Individual constraint parts for translation, or a combined point constraint part if all axis are fixed
+
277 AxisConstraintPart mTranslationConstraintPart[3];
+
278 PointConstraintPart mPointConstraintPart;
+
279
+
280 // Individual constraint parts for rotation or a combined constraint part if rotation is fixed
+
281 SwingTwistConstraintPart mSwingTwistConstraintPart;
+
282 RotationEulerConstraintPart mRotationConstraintPart;
+
283
+
284 // Motor or friction constraints
+
285 AxisConstraintPart mMotorTranslationConstraintPart[3];
+
286 AngleConstraintPart mMotorRotationConstraintPart[3];
+
287};
+
+
288
+ +
@ TranslationZ
Body can move in world space Z axis.
+ + +
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
+
@ WorldSpace
All constraint properties are specified in world space.
+
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
EMotorState
Definition MotorSettings.h:17
+
@ Off
Motor is off.
+ + +
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+ +
ESwingType
How the swing limit behaves.
Definition SwingTwistConstraintPart.h:15
+
@ Cone
Swing is limited by a cone shape, note that this cone starts to deform for larger swing angles....
+ +
Definition AngleConstraintPart.h:37
+
Definition AxisConstraintPart.h:43
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.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
+
static JPH_INLINE Mat44 sRotationTranslation(QuatArg inR, Vec3Arg inT)
Get matrix that rotates and translates.
Definition Mat44.inl:149
+
Definition MotorSettings.h:26
+
Definition PointConstraintPart.h:41
+
Definition Quat.h:33
+
static JPH_INLINE Quat sIdentity()
Definition Quat.h:103
+
Definition Reference.h:101
+
Definition RotationEulerConstraintPart.h:36
+
6 Degree Of Freedom Constraint. Allows control over each of the 6 degrees of freedom.
Definition SixDOFConstraint.h:106
+
Vec3 GetTotalLambdaPosition() const
Definition SixDOFConstraint.h:196
+
void SetLimitsSpringSettings(EAxis inAxis, const SpringSettings &inLimitsSpringSettings)
Definition SixDOFConstraint.h:156
+
const MotorSettings & GetMotorSettings(EAxis inAxis) const
Definition SixDOFConstraint.h:167
+
float GetLimitsMin(EAxis inAxis) const
Get constraint Limits.
Definition SixDOFConstraint.h:143
+
Vec3 GetTotalLambdaMotorTranslation() const
Definition SixDOFConstraint.h:198
+
void SetTargetOrientationBS(QuatArg inOrientation)
Definition SixDOFConstraint.h:193
+
MotorSettings & GetMotorSettings(EAxis inAxis)
Motor settings.
Definition SixDOFConstraint.h:166
+
void SetTargetAngularVelocityCS(Vec3Arg inAngularVelocity)
Set the target angular velocity in body 2 constraint space (!)
Definition SixDOFConstraint.h:180
+
Vec3 GetTargetPositionCS() const
Set the target position in body 1 constraint space.
Definition SixDOFConstraint.h:184
+
Vec3 GetTotalLambdaRotation() const
Definition SixDOFConstraint.h:197
+
const SpringSettings & GetLimitsSpringSettings(EAxis inAxis) const
Update the limits spring settings.
Definition SixDOFConstraint.h:155
+
float GetLimitsMax(EAxis inAxis) const
Definition SixDOFConstraint.h:144
+
void SetTargetPositionCS(Vec3Arg inPosition)
Definition SixDOFConstraint.h:185
+
Vec3 GetTotalLambdaMotorRotation() const
Definition SixDOFConstraint.h:199
+
float GetMaxFriction(EAxis inAxis) const
Definition SixDOFConstraint.h:160
+
virtual Mat44 GetConstraintToBody2Matrix() const override
Calculates the transform that transforms from constraint space to body 2 space. The first column of t...
Definition SixDOFConstraint.h:134
+
bool IsFixedAxis(EAxis inAxis) const
Check which axis are fixed/free.
Definition SixDOFConstraint.h:151
+
virtual Mat44 GetConstraintToBody1Matrix() const override
Calculates the transform that transforms from constraint space to body 1 space. The first column of t...
Definition SixDOFConstraint.h:133
+
Vec3 GetRotationLimitsMax() const
Definition SixDOFConstraint.h:148
+
Vec3 GetTranslationLimitsMax() const
Definition SixDOFConstraint.h:146
+
void SetTargetVelocityCS(Vec3Arg inVelocity)
Definition SixDOFConstraint.h:177
+
Vec3 GetTargetAngularVelocityCS() const
Definition SixDOFConstraint.h:181
+
bool IsFreeAxis(EAxis inAxis) const
Definition SixDOFConstraint.h:152
+
Quat GetTargetOrientationCS() const
Definition SixDOFConstraint.h:189
+
Vec3 GetTranslationLimitsMin() const
Definition SixDOFConstraint.h:145
+
EMotorState GetMotorState(EAxis inAxis) const
Definition SixDOFConstraint.h:173
+
Vec3 GetTargetVelocityCS() const
Set the target velocity in body 1 constraint space.
Definition SixDOFConstraint.h:176
+
Vec3 GetRotationLimitsMin() const
Definition SixDOFConstraint.h:147
+
virtual EConstraintSubType GetSubType() const override
Generic interface of a constraint.
Definition SixDOFConstraint.h:117
+
6 Degree Of Freedom Constraint setup structure. Allows control over each of the 6 degrees of freedom.
Definition SixDOFConstraint.h:19
+
bool IsFixedAxis(EAxis inAxis) const
Definition SixDOFConstraint.h:91
+
void MakeFreeAxis(EAxis inAxis)
Make axis free (unconstrained)
Definition SixDOFConstraint.h:86
+
EAxis
Constraint is split up into translation/rotation around X, Y and Z axis.
Definition SixDOFConstraint.h:25
+
@ TranslationY
Definition SixDOFConstraint.h:27
+
@ RotationX
Definition SixDOFConstraint.h:30
+
@ TranslationZ
Definition SixDOFConstraint.h:28
+
@ TranslationX
Definition SixDOFConstraint.h:26
+
@ RotationY
Definition SixDOFConstraint.h:31
+
@ Num
Definition SixDOFConstraint.h:34
+
@ RotationZ
Definition SixDOFConstraint.h:32
+
void SetLimitedAxis(EAxis inAxis, float inMin, float inMax)
Set a valid range for the constraint (if inMax < inMin, the axis will become fixed)
Definition SixDOFConstraint.h:94
+
void MakeFixedAxis(EAxis inAxis)
Make axis fixed (fixed at value 0)
Definition SixDOFConstraint.h:90
+
bool IsFreeAxis(EAxis inAxis) const
Definition SixDOFConstraint.h:87
+
Settings for a linear or angular spring.
Definition SpringSettings.h:23
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition SwingTwistConstraintPart.h:33
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition Vec3.h:53
+
static JPH_INLINE Vec3 sAxisY()
Definition Vec3.h:54
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
+
+ + + + diff --git a/_skeletal_animation_8cpp.html b/_skeletal_animation_8cpp.html new file mode 100644 index 000000000..5e9b535db --- /dev/null +++ b/_skeletal_animation_8cpp.html @@ -0,0 +1,205 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton/SkeletalAnimation.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletalAnimation.cpp File Reference
+
+
+ + + + + + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SkeletalAnimation::JointState)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SkeletalAnimation::Keyframe)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SkeletalAnimation::AnimatedJoint)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SkeletalAnimation)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [1/4]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SkeletalAnimation )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [2/4]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SkeletalAnimation::AnimatedJoint )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [3/4]

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SkeletalAnimation::JointState )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [4/4]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SkeletalAnimation::Keyframe )
+
+ +
+
+
+
+ + + + diff --git a/_skeletal_animation_8cpp.js b/_skeletal_animation_8cpp.js new file mode 100644 index 000000000..23093d7c9 --- /dev/null +++ b/_skeletal_animation_8cpp.js @@ -0,0 +1,7 @@ +var _skeletal_animation_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_skeletal_animation_8cpp.html#aa35a66aa122a627a187f615e67ea292b", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_skeletal_animation_8cpp.html#af8f3be7ebc9fd400cc0079158c7c7b2b", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_skeletal_animation_8cpp.html#a2fe8f4fd6f63d6b4c2db4f93507704fd", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_skeletal_animation_8cpp.html#a3fb4e2d9ae2adffc561671eebfdbd741", null ] +]; \ No newline at end of file diff --git a/_skeletal_animation_8h.html b/_skeletal_animation_8h.html new file mode 100644 index 000000000..0efa8b5af --- /dev/null +++ b/_skeletal_animation_8h.html @@ -0,0 +1,136 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton/SkeletalAnimation.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletalAnimation.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

class  SkeletalAnimation
 Resource for a skinned animation. More...
 
class  SkeletalAnimation::JointState
 Contains the current state of a joint, a local space transformation relative to its parent joint. More...
 
class  SkeletalAnimation::Keyframe
 Contains the state of a single joint at a particular time. More...
 
class  SkeletalAnimation::AnimatedJoint
 Contains the animation for a single joint. More...
 
+
+
+ + + + diff --git a/_skeletal_animation_8h.js b/_skeletal_animation_8h.js new file mode 100644 index 000000000..7c7e9de0c --- /dev/null +++ b/_skeletal_animation_8h.js @@ -0,0 +1,7 @@ +var _skeletal_animation_8h = +[ + [ "SkeletalAnimation", "class_skeletal_animation.html", "class_skeletal_animation" ], + [ "SkeletalAnimation::JointState", "class_skeletal_animation_1_1_joint_state.html", "class_skeletal_animation_1_1_joint_state" ], + [ "SkeletalAnimation::Keyframe", "class_skeletal_animation_1_1_keyframe.html", "class_skeletal_animation_1_1_keyframe" ], + [ "SkeletalAnimation::AnimatedJoint", "class_skeletal_animation_1_1_animated_joint.html", "class_skeletal_animation_1_1_animated_joint" ] +]; \ No newline at end of file diff --git a/_skeletal_animation_8h_source.html b/_skeletal_animation_8h_source.html new file mode 100644 index 000000000..603c11c9f --- /dev/null +++ b/_skeletal_animation_8h_source.html @@ -0,0 +1,218 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton/SkeletalAnimation.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletalAnimation.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
+ + +
9
+ +
11
+
12class SkeletonPose;
+
13
+
+
15class JPH_EXPORT SkeletalAnimation : public RefTarget<SkeletalAnimation>
+
16{
+
17public:
+ +
19
+
20
+
+ +
22 {
+
23 public:
+ +
25
+
26
+
27 void FromMatrix(Mat44Arg inMatrix);
+
28
+
30 inline Mat44 ToMatrix() const { return Mat44::sRotationTranslation(mRotation, mTranslation); }
+
31
+
32 Quat mRotation = Quat::sIdentity();
+
33 Vec3 mTranslation = Vec3::sZero();
+
34 };
+
+
35
+
+
37 class Keyframe : public JointState
+
38 {
+
39 public:
+ +
41
+
42 float mTime = 0.0f;
+
43 };
+
+
44
+ +
46
+
+ +
49 {
+
50 public:
+ +
52
+
53 String mJointName;
+
54 KeyframeVector mKeyframes;
+
55 };
+
+
56
+ +
58
+
60 float GetDuration() const;
+
61
+
63 void ScaleJoints(float inScale);
+
64
+
66 void Sample(float inTime, SkeletonPose &ioPose) const;
+
67
+
69 const AnimatedJointVector & GetAnimatedJoints() const { return mAnimatedJoints; }
+
70 AnimatedJointVector & GetAnimatedJoints() { return mAnimatedJoints; }
+
71
+
72private:
+
73 AnimatedJointVector mAnimatedJoints;
+
74 bool mIsLooping = true;
+
75};
+
+
76
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ +
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sRotationTranslation(QuatArg inR, Vec3Arg inT)
Get matrix that rotates and translates.
Definition Mat44.inl:149
+
Definition Quat.h:33
+
static JPH_INLINE Quat sIdentity()
Definition Quat.h:103
+
Definition Reference.h:35
+
Contains the animation for a single joint.
Definition SkeletalAnimation.h:49
+
Contains the current state of a joint, a local space transformation relative to its parent joint.
Definition SkeletalAnimation.h:22
+
Mat44 ToMatrix() const
Convert to matrix representation.
Definition SkeletalAnimation.h:30
+
Contains the state of a single joint at a particular time.
Definition SkeletalAnimation.h:38
+
Resource for a skinned animation.
Definition SkeletalAnimation.h:16
+
AnimatedJointVector & GetAnimatedJoints()
Definition SkeletalAnimation.h:70
+
Instance of a skeleton, contains the pose the current skeleton is in.
Definition SkeletonPose.h:18
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_skeleton_8cpp.html b/_skeleton_8cpp.html new file mode 100644 index 000000000..83e8dfe35 --- /dev/null +++ b/_skeleton_8cpp.html @@ -0,0 +1,166 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton/Skeleton.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Skeleton.cpp File Reference
+
+
+ + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (Skeleton::Joint)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (Skeleton)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [1/2]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (Skeleton )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [2/2]

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (Skeleton::Joint )
+
+ +
+
+
+
+ + + + diff --git a/_skeleton_8cpp.js b/_skeleton_8cpp.js new file mode 100644 index 000000000..0cce04123 --- /dev/null +++ b/_skeleton_8cpp.js @@ -0,0 +1,5 @@ +var _skeleton_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_skeleton_8cpp.html#a7aca54fb94c9423d77c04278237fab25", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_skeleton_8cpp.html#a66c2401b3f742ef958235469e069214f", null ] +]; \ No newline at end of file diff --git a/_skeleton_8h.html b/_skeleton_8h.html new file mode 100644 index 000000000..bbe85491a --- /dev/null +++ b/_skeleton_8h.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton/Skeleton.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Skeleton.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  Skeleton
 Resource that contains the joint hierarchy for a skeleton. More...
 
class  Skeleton::Joint
 Declare internal structure for a joint. More...
 
+
+
+ + + + diff --git a/_skeleton_8h.js b/_skeleton_8h.js new file mode 100644 index 000000000..6e2b0e546 --- /dev/null +++ b/_skeleton_8h.js @@ -0,0 +1,5 @@ +var _skeleton_8h = +[ + [ "Skeleton", "class_skeleton.html", "class_skeleton" ], + [ "Skeleton::Joint", "class_skeleton_1_1_joint.html", "class_skeleton_1_1_joint" ] +]; \ No newline at end of file diff --git a/_skeleton_8h_source.html b/_skeleton_8h_source.html new file mode 100644 index 000000000..3e198a658 --- /dev/null +++ b/_skeleton_8h_source.html @@ -0,0 +1,209 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton/Skeleton.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Skeleton.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#include <Jolt/Core/Result.h>
+ +
10
+ +
12
+
13class StreamIn;
+
14class StreamOut;
+
15
+
+
17class JPH_EXPORT Skeleton : public RefTarget<Skeleton>
+
18{
+
19public:
+ +
21
+ +
23
+
+
25 class Joint
+
26 {
+
27 public:
+ +
29
+
30 Joint() = default;
+
31 Joint(const string_view &inName, const string_view &inParentName, int inParentJointIndex) : mName(inName), mParentName(inParentName), mParentJointIndex(inParentJointIndex) { }
+
32
+ + +
35 int mParentJointIndex = -1;
+
36 };
+
+
37
+ +
39
+
42 const JointVector & GetJoints() const { return mJoints; }
+
43 JointVector & GetJoints() { return mJoints; }
+
44 int GetJointCount() const { return (int)mJoints.size(); }
+
45 const Joint & GetJoint(int inJoint) const { return mJoints[inJoint]; }
+
46 Joint & GetJoint(int inJoint) { return mJoints[inJoint]; }
+
47 uint AddJoint(const string_view &inName, const string_view &inParentName = string_view()) { mJoints.emplace_back(inName, inParentName, -1); return (uint)mJoints.size() - 1; }
+
48 uint AddJoint(const string_view &inName, int inParentIndex) { mJoints.emplace_back(inName, inParentIndex >= 0? mJoints[inParentIndex].mName : String(), inParentIndex); return (uint)mJoints.size() - 1; }
+
50
+
52 int GetJointIndex(const string_view &inName) const;
+
53
+
55 void CalculateParentJointIndices();
+
56
+
59 bool AreJointsCorrectlyOrdered() const;
+
60
+
62 void SaveBinaryState(StreamOut &inStream) const;
+
63
+
65 static SkeletonResult sRestoreFromBinaryState(StreamIn &inStream);
+
66
+
67private:
+
69 JointVector mJoints;
+
70};
+
+
71
+ +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ +
Definition Reference.h:101
+
Definition Reference.h:35
+
Helper class that either contains a valid result or an error.
Definition Result.h:12
+
Declare internal structure for a joint.
Definition Skeleton.h:26
+
String mName
Name of the joint.
Definition Skeleton.h:33
+
String mParentName
Name of parent joint.
Definition Skeleton.h:34
+
Resource that contains the joint hierarchy for a skeleton.
Definition Skeleton.h:18
+
int GetJointCount() const
Definition Skeleton.h:44
+
const JointVector & GetJoints() const
Definition Skeleton.h:42
+
Joint & GetJoint(int inJoint)
Definition Skeleton.h:46
+
JointVector & GetJoints()
Definition Skeleton.h:43
+
uint AddJoint(const string_view &inName, const string_view &inParentName=string_view())
Definition Skeleton.h:47
+
uint AddJoint(const string_view &inName, int inParentIndex)
Definition Skeleton.h:48
+
const Joint & GetJoint(int inJoint) const
Definition Skeleton.h:45
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
+
+ + + + diff --git a/_skeleton_mapper_8cpp.html b/_skeleton_mapper_8cpp.html new file mode 100644 index 000000000..fcebc9204 --- /dev/null +++ b/_skeleton_mapper_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton/SkeletonMapper.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletonMapper.cpp File Reference
+
+
+
+
+ + + + diff --git a/_skeleton_mapper_8h.html b/_skeleton_mapper_8h.html new file mode 100644 index 000000000..637e4568e --- /dev/null +++ b/_skeleton_mapper_8h.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton/SkeletonMapper.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletonMapper.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + +

+Classes

class  SkeletonMapper
 Class that is able to map a low detail (ragdoll) skeleton to a high detail (animation) skeleton and vice versa. More...
 
class  SkeletonMapper::Mapping
 A joint that maps 1-on-1 to a joint in the other skeleton. More...
 
class  SkeletonMapper::Chain
 A joint chain that starts with a 1-on-1 mapped joint and ends with a 1-on-1 mapped joint with intermediate joints that cannot be mapped. More...
 
class  SkeletonMapper::Unmapped
 Joints that could not be mapped from skeleton 1 to 2. More...
 
class  SkeletonMapper::Locked
 Joints that should have their translation locked (fixed) More...
 
+
+
+ + + + diff --git a/_skeleton_mapper_8h.js b/_skeleton_mapper_8h.js new file mode 100644 index 000000000..36da8b6ae --- /dev/null +++ b/_skeleton_mapper_8h.js @@ -0,0 +1,8 @@ +var _skeleton_mapper_8h = +[ + [ "SkeletonMapper", "class_skeleton_mapper.html", "class_skeleton_mapper" ], + [ "SkeletonMapper::Mapping", "class_skeleton_mapper_1_1_mapping.html", "class_skeleton_mapper_1_1_mapping" ], + [ "SkeletonMapper::Chain", "class_skeleton_mapper_1_1_chain.html", "class_skeleton_mapper_1_1_chain" ], + [ "SkeletonMapper::Unmapped", "class_skeleton_mapper_1_1_unmapped.html", "class_skeleton_mapper_1_1_unmapped" ], + [ "SkeletonMapper::Locked", "class_skeleton_mapper_1_1_locked.html", "class_skeleton_mapper_1_1_locked" ] +]; \ No newline at end of file diff --git a/_skeleton_mapper_8h_source.html b/_skeleton_mapper_8h_source.html new file mode 100644 index 000000000..73a7714ce --- /dev/null +++ b/_skeleton_mapper_8h_source.html @@ -0,0 +1,279 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton/SkeletonMapper.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletonMapper.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2022 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + +
9
+ +
11
+
+
13class JPH_EXPORT SkeletonMapper : public RefTarget<SkeletonMapper>
+
14{
+
15public:
+
+
17 class Mapping
+
18 {
+
19 public:
+
20 Mapping() = default;
+
+
21 Mapping(int inJointIdx1, int inJointIdx2, Mat44Arg inJoint1To2) : mJointIdx1(inJointIdx1), mJointIdx2(inJointIdx2), mJoint1To2(inJoint1To2), mJoint2To1(inJoint1To2.Inversed())
+
22 {
+
23 // Ensure bottom right element is 1 (numerical imprecision in the inverse can make this not so)
+
24 mJoint2To1(3, 3) = 1.0f;
+
25 }
+
+
26
+ + + + +
31 };
+
+
32
+
+
34 class Chain
+
35 {
+
36 public:
+
37 Chain() = default;
+
38 Chain(Array<int> &&inJointIndices1, Array<int> &&inJointIndices2) : mJointIndices1(std::move(inJointIndices1)), mJointIndices2(std::move(inJointIndices2)) { }
+
39
+ + +
42 };
+
+
43
+
+ +
46 {
+
47 public:
+
48 Unmapped() = default;
+
49 Unmapped(int inJointIdx, int inParentJointIdx) : mJointIdx(inJointIdx), mParentJointIdx(inParentJointIdx) { }
+
50
+ + +
53 };
+
+
54
+
+
56 class Locked
+
57 {
+
58 public:
+ + + +
62 };
+
+
63
+
65 using CanMapJoint = function<bool (const Skeleton *, int, const Skeleton *, int)>;
+
66
+
+
68 static bool sDefaultCanMapJoint(const Skeleton *inSkeleton1, int inIndex1, const Skeleton *inSkeleton2, int inIndex2)
+
69 {
+
70 return inSkeleton1->GetJoint(inIndex1).mName == inSkeleton2->GetJoint(inIndex2).mName;
+
71 }
+
+
72
+
81 void Initialize(const Skeleton *inSkeleton1, const Mat44 *inNeutralPose1, const Skeleton *inSkeleton2, const Mat44 *inNeutralPose2, const CanMapJoint &inCanMapJoint = sDefaultCanMapJoint);
+
82
+
90 void LockTranslations(const Skeleton *inSkeleton2, const bool *inLockedTranslations, const Mat44 *inNeutralPose2);
+
91
+
98 void LockAllTranslations(const Skeleton *inSkeleton2, const Mat44 *inNeutralPose2);
+
99
+
107 void Map(const Mat44 *inPose1ModelSpace, const Mat44 *inPose2LocalSpace, Mat44 *outPose2ModelSpace) const;
+
108
+
112 void MapReverse(const Mat44 *inPose2ModelSpace, Mat44 *outPose1ModelSpace) const;
+
113
+
115 int GetMappedJointIdx(int inJoint1Idx) const;
+
116
+
118 bool IsJointTranslationLocked(int inJoint2Idx) const;
+
119
+ + + + +
124
+
127 const MappingVector & GetMappings() const { return mMappings; }
+
128 MappingVector & GetMappings() { return mMappings; }
+
129 const ChainVector & GetChains() const { return mChains; }
+
130 ChainVector & GetChains() { return mChains; }
+
131 const UnmappedVector & GetUnmapped() const { return mUnmapped; }
+
132 UnmappedVector & GetUnmapped() { return mUnmapped; }
+
133 const LockedVector & GetLockedTranslations() const { return mLockedTranslations; }
+
134 LockedVector & GetLockedTranslations() { return mLockedTranslations; }
+
136
+
137private:
+
139 MappingVector mMappings;
+
140 ChainVector mChains;
+
141 UnmappedVector mUnmapped;
+
142 LockedVector mLockedTranslations;
+
143};
+
+
144
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
Definition Array.h:36
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Definition Reference.h:35
+
String mName
Name of the joint.
Definition Skeleton.h:33
+
Resource that contains the joint hierarchy for a skeleton.
Definition Skeleton.h:18
+
const Joint & GetJoint(int inJoint) const
Definition Skeleton.h:45
+
A joint chain that starts with a 1-on-1 mapped joint and ends with a 1-on-1 mapped joint with interme...
Definition SkeletonMapper.h:35
+
Chain(Array< int > &&inJointIndices1, Array< int > &&inJointIndices2)
Definition SkeletonMapper.h:38
+
Array< int > mJointIndices1
Joint chain from skeleton 1.
Definition SkeletonMapper.h:40
+
Array< int > mJointIndices2
Corresponding joint chain from skeleton 2.
Definition SkeletonMapper.h:41
+ +
Joints that should have their translation locked (fixed)
Definition SkeletonMapper.h:57
+
int mJointIdx
Joint index of joint with locked translation (in skeleton 2)
Definition SkeletonMapper.h:59
+
Vec3 mTranslation
Translation of neutral pose.
Definition SkeletonMapper.h:61
+
int mParentJointIdx
Parent joint index of joint with locked translation (in skeleton 2)
Definition SkeletonMapper.h:60
+
A joint that maps 1-on-1 to a joint in the other skeleton.
Definition SkeletonMapper.h:18
+
Mat44 mJoint1To2
Transforms this joint from skeleton 1 to 2.
Definition SkeletonMapper.h:29
+ +
Mat44 mJoint2To1
Inverse of the transform above.
Definition SkeletonMapper.h:30
+
Mapping(int inJointIdx1, int inJointIdx2, Mat44Arg inJoint1To2)
Definition SkeletonMapper.h:21
+
int mJointIdx1
Index of joint from skeleton 1.
Definition SkeletonMapper.h:27
+
int mJointIdx2
Corresponding index of joint from skeleton 2.
Definition SkeletonMapper.h:28
+
Joints that could not be mapped from skeleton 1 to 2.
Definition SkeletonMapper.h:46
+
Unmapped(int inJointIdx, int inParentJointIdx)
Definition SkeletonMapper.h:49
+
int mJointIdx
Joint index of unmappable joint.
Definition SkeletonMapper.h:51
+ +
int mParentJointIdx
Parent joint index of unmappable joint.
Definition SkeletonMapper.h:52
+
Class that is able to map a low detail (ragdoll) skeleton to a high detail (animation) skeleton and v...
Definition SkeletonMapper.h:14
+
MappingVector & GetMappings()
Definition SkeletonMapper.h:128
+
const MappingVector & GetMappings() const
Definition SkeletonMapper.h:127
+
const UnmappedVector & GetUnmapped() const
Definition SkeletonMapper.h:131
+
ChainVector & GetChains()
Definition SkeletonMapper.h:130
+
static bool sDefaultCanMapJoint(const Skeleton *inSkeleton1, int inIndex1, const Skeleton *inSkeleton2, int inIndex2)
Default function that checks if the names of the joints are equal.
Definition SkeletonMapper.h:68
+
function< bool(const Skeleton *, int, const Skeleton *, int)> CanMapJoint
A function that is called to determine if a joint can be mapped from source to target skeleton.
Definition SkeletonMapper.h:65
+
LockedVector & GetLockedTranslations()
Definition SkeletonMapper.h:134
+
const ChainVector & GetChains() const
Definition SkeletonMapper.h:129
+
UnmappedVector & GetUnmapped()
Definition SkeletonMapper.h:132
+
const LockedVector & GetLockedTranslations() const
Definition SkeletonMapper.h:133
+
Definition Vec3.h:17
+
Definition Array.h:575
+
+
+ + + + diff --git a/_skeleton_pose_8cpp.html b/_skeleton_pose_8cpp.html new file mode 100644 index 000000000..9d2b155d0 --- /dev/null +++ b/_skeleton_pose_8cpp.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton/SkeletonPose.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletonPose.cpp File Reference
+
+
+
+
+ + + + diff --git a/_skeleton_pose_8h.html b/_skeleton_pose_8h.html new file mode 100644 index 000000000..4d1b6a3ae --- /dev/null +++ b/_skeleton_pose_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton/SkeletonPose.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletonPose.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  SkeletonPose
 Instance of a skeleton, contains the pose the current skeleton is in. More...
 
struct  SkeletonPose::DrawSettings
 Draw settings. More...
 
+
+
+ + + + diff --git a/_skeleton_pose_8h.js b/_skeleton_pose_8h.js new file mode 100644 index 000000000..123a91447 --- /dev/null +++ b/_skeleton_pose_8h.js @@ -0,0 +1,5 @@ +var _skeleton_pose_8h = +[ + [ "SkeletonPose", "class_skeleton_pose.html", "class_skeleton_pose" ], + [ "SkeletonPose::DrawSettings", "struct_skeleton_pose_1_1_draw_settings.html", "struct_skeleton_pose_1_1_draw_settings" ] +]; \ No newline at end of file diff --git a/_skeleton_pose_8h_source.html b/_skeleton_pose_8h_source.html new file mode 100644 index 000000000..26c2417e2 --- /dev/null +++ b/_skeleton_pose_8h_source.html @@ -0,0 +1,219 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton/SkeletonPose.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletonPose.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
+ + +
9
+ +
11
+
12#ifdef JPH_DEBUG_RENDERER
+
13class DebugRenderer;
+
14#endif // JPH_DEBUG_RENDERER
+
15
+
+ +
18{
+
19public:
+ +
21
+ + + +
25
+
28 void SetSkeleton(const Skeleton *inSkeleton);
+
29 const Skeleton * GetSkeleton() const { return mSkeleton; }
+
31
+
33 void SetRootOffset(RVec3Arg inOffset) { mRootOffset = inOffset; }
+
34 RVec3 GetRootOffset() const { return mRootOffset; }
+
35
+
38 uint GetJointCount() const { return (uint)mJoints.size(); }
+
39 const JointStateVector & GetJoints() const { return mJoints; }
+
40 JointStateVector & GetJoints() { return mJoints; }
+
41 const JointState & GetJoint(int inJoint) const { return mJoints[inJoint]; }
+
42 JointState & GetJoint(int inJoint) { return mJoints[inJoint]; }
+
44
+
47 const Mat44Vector & GetJointMatrices() const { return mJointMatrices; }
+
48 Mat44Vector & GetJointMatrices() { return mJointMatrices; }
+
49 const Mat44 & GetJointMatrix(int inJoint) const { return mJointMatrices[inJoint]; }
+
50 Mat44 & GetJointMatrix(int inJoint) { return mJointMatrices[inJoint]; }
+
52
+
54 void CalculateJointMatrices();
+
55
+
57 void CalculateJointStates();
+
58
+
60 void CalculateLocalSpaceJointMatrices(Mat44 *outMatrices) const;
+
61
+
62#ifdef JPH_DEBUG_RENDERER
+
+ +
65 {
+
66 bool mDrawJoints = true;
+
67 bool mDrawJointOrientations = true;
+
68 bool mDrawJointNames = false;
+
69 };
+
+
70
+
72 void Draw(const DrawSettings &inDrawSettings, DebugRenderer *inRenderer, RMat44Arg inOffset = RMat44::sIdentity()) const;
+
73#endif // JPH_DEBUG_RENDERER
+
74
+
75private:
+
76 RefConst<Skeleton> mSkeleton;
+
77 RVec3 mRootOffset { RVec3::sZero() };
+
78 JointStateVector mJoints;
+
79 Mat44Vector mJointMatrices;
+
80};
+
+
81
+ +
#define JPH_EXPORT
Definition Core.h:236
+
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
+ + + +
Definition DebugRenderer.h:47
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sIdentity()
Identity matrix.
Definition Mat44.inl:35
+
Definition Reference.h:151
+
Contains the current state of a joint, a local space transformation relative to its parent joint.
Definition SkeletalAnimation.h:22
+
Resource that contains the joint hierarchy for a skeleton.
Definition Skeleton.h:18
+
Instance of a skeleton, contains the pose the current skeleton is in.
Definition SkeletonPose.h:18
+
Mat44 & GetJointMatrix(int inJoint)
Definition SkeletonPose.h:50
+
const Mat44Vector & GetJointMatrices() const
Definition SkeletonPose.h:47
+
const Skeleton * GetSkeleton() const
Definition SkeletonPose.h:29
+
JointStateVector & GetJoints()
Definition SkeletonPose.h:40
+
const JointStateVector & GetJoints() const
Definition SkeletonPose.h:39
+
void SetRootOffset(RVec3Arg inOffset)
Extra offset applied to the root (and therefore also to all of its children)
Definition SkeletonPose.h:33
+
JointState & GetJoint(int inJoint)
Definition SkeletonPose.h:42
+
const Mat44 & GetJointMatrix(int inJoint) const
Definition SkeletonPose.h:49
+
Mat44Vector & GetJointMatrices()
Definition SkeletonPose.h:48
+
RVec3 GetRootOffset() const
Definition SkeletonPose.h:34
+
uint GetJointCount() const
Definition SkeletonPose.h:38
+
const JointState & GetJoint(int inJoint) const
Definition SkeletonPose.h:41
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Draw settings.
Definition SkeletonPose.h:65
+
+
+ + + + diff --git a/_slider_constraint_8cpp.html b/_slider_constraint_8cpp.html new file mode 100644 index 000000000..81671f746 --- /dev/null +++ b/_slider_constraint_8cpp.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/SliderConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SliderConstraint.cpp File Reference
+
+
+ + + + +

+Functions

 JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (SliderConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (SliderConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_slider_constraint_8cpp.js b/_slider_constraint_8cpp.js new file mode 100644 index 000000000..1bb6261a4 --- /dev/null +++ b/_slider_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _slider_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_slider_constraint_8cpp.html#a6f65997071022bfad771bb529bb21d5f", null ] +]; \ No newline at end of file diff --git a/_slider_constraint_8h.html b/_slider_constraint_8h.html new file mode 100644 index 000000000..bf84aa25e --- /dev/null +++ b/_slider_constraint_8h.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/SliderConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SliderConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  SliderConstraintSettings
 Slider constraint settings, used to create a slider constraint. More...
 
class  SliderConstraint
 A slider constraint allows movement in only 1 axis (and no rotation). Also known as a prismatic constraint. More...
 
+
+
+ + + + diff --git a/_slider_constraint_8h.js b/_slider_constraint_8h.js new file mode 100644 index 000000000..ba76185a3 --- /dev/null +++ b/_slider_constraint_8h.js @@ -0,0 +1,5 @@ +var _slider_constraint_8h = +[ + [ "SliderConstraintSettings", "class_slider_constraint_settings.html", "class_slider_constraint_settings" ], + [ "SliderConstraint", "class_slider_constraint.html", "class_slider_constraint" ] +]; \ No newline at end of file diff --git a/_slider_constraint_8h_source.html b/_slider_constraint_8h_source.html new file mode 100644 index 000000000..78e6c8313 --- /dev/null +++ b/_slider_constraint_8h_source.html @@ -0,0 +1,367 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/SliderConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SliderConstraint.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
+ + + + + +
12
+ +
14
+
+ +
17{
+
18public:
+ +
20
+
21 // See: ConstraintSettings::SaveBinaryState
+
22 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
23
+
26 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
+
27
+
29 void SetSliderAxis(Vec3Arg inSliderAxis);
+
30
+ +
33
+
35 bool mAutoDetectPoint = false;
+
36
+
39 RVec3 mPoint1 = RVec3::sZero();
+
40 Vec3 mSliderAxis1 = Vec3::sAxisX();
+
41 Vec3 mNormalAxis1 = Vec3::sAxisY();
+
42
+
44 RVec3 mPoint2 = RVec3::sZero();
+
45 Vec3 mSliderAxis2 = Vec3::sAxisX();
+
46 Vec3 mNormalAxis2 = Vec3::sAxisY();
+
47
+
49 float mLimitsMin = -FLT_MAX;
+
50 float mLimitsMax = FLT_MAX;
+
51
+ +
54
+
56 float mMaxFrictionForce = 0.0f;
+
57
+ +
60
+
61protected:
+
62 // See: ConstraintSettings::RestoreBinaryState
+
63 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
64};
+
+
65
+
+ +
68{
+
69public:
+ +
71
+
73 SliderConstraint(Body &inBody1, Body &inBody2, const SliderConstraintSettings &inSettings);
+
74
+
75 // Generic interface of a constraint
+
76 virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::Slider; }
+
77 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override;
+
78 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
79 virtual void ResetWarmStart() override;
+
80 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
81 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
82 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
83#ifdef JPH_DEBUG_RENDERER
+
84 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
85 virtual void DrawConstraintLimits(DebugRenderer *inRenderer) const override;
+
86#endif // JPH_DEBUG_RENDERER
+
87 virtual void SaveState(StateRecorder &inStream) const override;
+
88 virtual void RestoreState(StateRecorder &inStream) override;
+
89 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
90
+
91 // See: TwoBodyConstraint
+
92 virtual Mat44 GetConstraintToBody1Matrix() const override;
+
93 virtual Mat44 GetConstraintToBody2Matrix() const override;
+
94
+
96 float GetCurrentPosition() const;
+
97
+
99 void SetMaxFrictionForce(float inFrictionForce) { mMaxFrictionForce = inFrictionForce; }
+
100 float GetMaxFrictionForce() const { return mMaxFrictionForce; }
+
101
+
103 MotorSettings & GetMotorSettings() { return mMotorSettings; }
+
104 const MotorSettings & GetMotorSettings() const { return mMotorSettings; }
+
105
+
106 // Motor controls
+
107 void SetMotorState(EMotorState inState) { JPH_ASSERT(inState == EMotorState::Off || mMotorSettings.IsValid()); mMotorState = inState; }
+
108 EMotorState GetMotorState() const { return mMotorState; }
+
109 void SetTargetVelocity(float inVelocity) { mTargetVelocity = inVelocity; }
+
110 float GetTargetVelocity() const { return mTargetVelocity; }
+
111 void SetTargetPosition(float inPosition) { mTargetPosition = mHasLimits? Clamp(inPosition, mLimitsMin, mLimitsMax) : inPosition; }
+
112 float GetTargetPosition() const { return mTargetPosition; }
+
113
+
115 void SetLimits(float inLimitsMin, float inLimitsMax);
+
116 float GetLimitsMin() const { return mLimitsMin; }
+
117 float GetLimitsMax() const { return mLimitsMax; }
+
118 bool HasLimits() const { return mHasLimits; }
+
119
+
121 const SpringSettings & GetLimitsSpringSettings() const { return mLimitsSpringSettings; }
+
122 SpringSettings & GetLimitsSpringSettings() { return mLimitsSpringSettings; }
+
123 void SetLimitsSpringSettings(const SpringSettings &inLimitsSpringSettings) { mLimitsSpringSettings = inLimitsSpringSettings; }
+
124
+
126 inline Vector<2> GetTotalLambdaPosition() const { return mPositionConstraintPart.GetTotalLambda(); }
+
127 inline float GetTotalLambdaPositionLimits() const { return mPositionLimitsConstraintPart.GetTotalLambda(); }
+
128 inline Vec3 GetTotalLambdaRotation() const { return mRotationConstraintPart.GetTotalLambda(); }
+
129 inline float GetTotalLambdaMotor() const { return mMotorConstraintPart.GetTotalLambda(); }
+
130
+
131private:
+
132 // Internal helper function to calculate the values below
+
133 void CalculateR1R2U(Mat44Arg inRotation1, Mat44Arg inRotation2);
+
134 void CalculateSlidingAxisAndPosition(Mat44Arg inRotation1);
+
135 void CalculatePositionConstraintProperties(Mat44Arg inRotation1, Mat44Arg inRotation2);
+
136 void CalculatePositionLimitsConstraintProperties(float inDeltaTime);
+
137 void CalculateMotorConstraintProperties(float inDeltaTime);
+
138
+
139 // CONFIGURATION PROPERTIES FOLLOW
+
140
+
141 // Local space constraint positions
+
142 Vec3 mLocalSpacePosition1;
+
143 Vec3 mLocalSpacePosition2;
+
144
+
145 // Local space sliding direction
+
146 Vec3 mLocalSpaceSliderAxis1;
+
147
+
148 // Local space normals to the sliding direction (in body 1 space)
+
149 Vec3 mLocalSpaceNormal1;
+
150 Vec3 mLocalSpaceNormal2;
+
151
+
152 // Inverse of initial rotation from body 1 to body 2 in body 1 space
+
153 Quat mInvInitialOrientation;
+
154
+
155 // Slider limits
+
156 bool mHasLimits;
+
157 float mLimitsMin;
+
158 float mLimitsMax;
+
159
+
160 // Soft constraint limits
+
161 SpringSettings mLimitsSpringSettings;
+
162
+
163 // Friction
+
164 float mMaxFrictionForce;
+
165
+
166 // Motor controls
+
167 MotorSettings mMotorSettings;
+
168 EMotorState mMotorState = EMotorState::Off;
+
169 float mTargetVelocity = 0.0f;
+
170 float mTargetPosition = 0.0f;
+
171
+
172 // RUN TIME PROPERTIES FOLLOW
+
173
+
174 // Positions where the point constraint acts on (middle point between center of masses)
+
175 Vec3 mR1;
+
176 Vec3 mR2;
+
177
+
178 // X2 + R2 - X1 - R1
+
179 Vec3 mU;
+
180
+
181 // World space sliding direction
+
182 Vec3 mWorldSpaceSliderAxis;
+
183
+
184 // Normals to the slider axis
+
185 Vec3 mN1;
+
186 Vec3 mN2;
+
187
+
188 // Distance along the slide axis
+
189 float mD = 0.0f;
+
190
+
191 // The constraint parts
+
192 DualAxisConstraintPart mPositionConstraintPart;
+
193 RotationEulerConstraintPart mRotationConstraintPart;
+
194 AxisConstraintPart mPositionLimitsConstraintPart;
+
195 AxisConstraintPart mMotorConstraintPart;
+
196};
+
+
197
+ + +
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
+
@ WorldSpace
All constraint properties are specified in world space.
+
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)
Clamp a value between two values.
Definition Math.h:45
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
EMotorState
Definition MotorSettings.h:17
+
@ Off
Motor is off.
+ +
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+ +
Definition AxisConstraintPart.h:43
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
Definition DualAxisConstraintPart.h:48
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Definition MotorSettings.h:26
+
Definition Quat.h:33
+
Definition Reference.h:101
+
Definition RotationEulerConstraintPart.h:36
+
A slider constraint allows movement in only 1 axis (and no rotation). Also known as a prismatic const...
Definition SliderConstraint.h:68
+
void SetMaxFrictionForce(float inFrictionForce)
Friction control.
Definition SliderConstraint.h:99
+
Vec3 GetTotalLambdaRotation() const
Definition SliderConstraint.h:128
+
float GetLimitsMin() const
Definition SliderConstraint.h:116
+
const MotorSettings & GetMotorSettings() const
Definition SliderConstraint.h:104
+
virtual EConstraintSubType GetSubType() const override
Get the sub type of a constraint.
Definition SliderConstraint.h:76
+
float GetTotalLambdaPositionLimits() const
Definition SliderConstraint.h:127
+
bool HasLimits() const
Definition SliderConstraint.h:118
+
Vector< 2 > GetTotalLambdaPosition() const
Definition SliderConstraint.h:126
+
SpringSettings & GetLimitsSpringSettings()
Definition SliderConstraint.h:122
+
float GetTotalLambdaMotor() const
Definition SliderConstraint.h:129
+
float GetLimitsMax() const
Definition SliderConstraint.h:117
+
void SetMotorState(EMotorState inState)
Definition SliderConstraint.h:107
+
float GetTargetPosition() const
Definition SliderConstraint.h:112
+
void SetLimitsSpringSettings(const SpringSettings &inLimitsSpringSettings)
Definition SliderConstraint.h:123
+
const SpringSettings & GetLimitsSpringSettings() const
Update the limits spring settings.
Definition SliderConstraint.h:121
+
void SetTargetVelocity(float inVelocity)
Definition SliderConstraint.h:109
+
float GetTargetVelocity() const
Definition SliderConstraint.h:110
+
MotorSettings & GetMotorSettings()
Motor settings.
Definition SliderConstraint.h:103
+
float GetMaxFrictionForce() const
Definition SliderConstraint.h:100
+
void SetTargetPosition(float inPosition)
Definition SliderConstraint.h:111
+
EMotorState GetMotorState() const
Definition SliderConstraint.h:108
+
Slider constraint settings, used to create a slider constraint.
Definition SliderConstraint.h:17
+
MotorSettings mMotorSettings
In case the constraint is powered, this determines the motor settings around the sliding axis.
Definition SliderConstraint.h:59
+
SpringSettings mLimitsSpringSettings
When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will...
Definition SliderConstraint.h:53
+
Settings for a linear or angular spring.
Definition SpringSettings.h:23
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition Vec3.h:53
+
static JPH_INLINE Vec3 sAxisY()
Definition Vec3.h:54
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Templatized vector class.
Definition Vector.h:12
+
+
+ + + + diff --git a/_soft_body_contact_listener_8h.html b/_soft_body_contact_listener_8h.html new file mode 100644 index 000000000..8de716e22 --- /dev/null +++ b/_soft_body_contact_listener_8h.html @@ -0,0 +1,166 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyContactListener.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyContactListener.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Classes

class  SoftBodyContactSettings
 
class  SoftBodyContactListener
 
+ + + + +

+Enumerations

enum class  SoftBodyValidateResult { AcceptContact +, RejectContact + }
 Return value for the OnSoftBodyContactValidate callback. Determines if the contact will be processed or not. More...
 
+

Enumeration Type Documentation

+ +

◆ SoftBodyValidateResult

+ +
+
+ + + + + +
+ + + + +
enum class SoftBodyValidateResult
+
+strong
+
+ +

Return value for the OnSoftBodyContactValidate callback. Determines if the contact will be processed or not.

+ + + +
Enumerator
AcceptContact 

Accept this contact.

+
RejectContact 

Reject this contact.

+
+ +
+
+
+
+ + + + diff --git a/_soft_body_contact_listener_8h.js b/_soft_body_contact_listener_8h.js new file mode 100644 index 000000000..19dcf1816 --- /dev/null +++ b/_soft_body_contact_listener_8h.js @@ -0,0 +1,9 @@ +var _soft_body_contact_listener_8h = +[ + [ "SoftBodyContactSettings", "class_soft_body_contact_settings.html", "class_soft_body_contact_settings" ], + [ "SoftBodyContactListener", "class_soft_body_contact_listener.html", "class_soft_body_contact_listener" ], + [ "SoftBodyValidateResult", "_soft_body_contact_listener_8h.html#a146313e7653a5364d1e51eccb325abaa", [ + [ "AcceptContact", "_soft_body_contact_listener_8h.html#a146313e7653a5364d1e51eccb325abaaac965aae814c53bfa33f418d5187d4cdc", null ], + [ "RejectContact", "_soft_body_contact_listener_8h.html#a146313e7653a5364d1e51eccb325abaaa4c312fb94f5fa9ebabb3968b56ed0221", null ] + ] ] +]; \ No newline at end of file diff --git a/_soft_body_contact_listener_8h_source.html b/_soft_body_contact_listener_8h_source.html new file mode 100644 index 000000000..1cf135b03 --- /dev/null +++ b/_soft_body_contact_listener_8h_source.html @@ -0,0 +1,178 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyContactListener.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyContactListener.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+
9class Body;
+ +
11
+
+ +
14{
+ + +
17};
+
+
18
+
+ +
22{
+
23public:
+
24 float mInvMassScale1 = 1.0f;
+
25 float mInvMassScale2 = 1.0f;
+
26 float mInvInertiaScale2 = 1.0f;
+
27 bool mIsSensor;
+
28};
+
+
29
+
+ +
33{
+
34public:
+
36 virtual ~SoftBodyContactListener() = default;
+
37
+
45 virtual SoftBodyValidateResult OnSoftBodyContactValidate([[maybe_unused]] const Body &inSoftBody, [[maybe_unused]] const Body &inOtherBody, [[maybe_unused]] SoftBodyContactSettings &ioSettings) { return SoftBodyValidateResult::AcceptContact; }
+
46
+
52 virtual void OnSoftBodyContactAdded([[maybe_unused]] const Body &inSoftBody, const SoftBodyManifold &inManifold) { /* Do nothing */ }
+
53};
+
+
54
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
SoftBodyValidateResult
Return value for the OnSoftBodyContactValidate callback. Determines if the contact will be processed ...
Definition SoftBodyContactListener.h:14
+
@ RejectContact
Reject this contact.
+
@ AcceptContact
Accept this contact.
+
Definition Body.h:35
+
Definition SoftBodyContactListener.h:33
+
virtual void OnSoftBodyContactAdded(const Body &inSoftBody, const SoftBodyManifold &inManifold)
Definition SoftBodyContactListener.h:52
+
virtual SoftBodyValidateResult OnSoftBodyContactValidate(const Body &inSoftBody, const Body &inOtherBody, SoftBodyContactSettings &ioSettings)
Definition SoftBodyContactListener.h:45
+
virtual ~SoftBodyContactListener()=default
Ensure virtual destructor.
+
Definition SoftBodyContactListener.h:22
+
float mInvInertiaScale2
Scale factor for the inverse inertia of the other body (usually same as mInvMassScale2)
Definition SoftBodyContactListener.h:26
+
bool mIsSensor
If the contact should be treated as a sensor vs body contact (no collision response)
Definition SoftBodyContactListener.h:27
+
float mInvMassScale2
Scale factor for the inverse mass of the other body (0 = infinite mass, 1 = use original mass,...
Definition SoftBodyContactListener.h:25
+
float mInvMassScale1
Scale factor for the inverse mass of the soft body (0 = infinite mass, 1 = use original mass,...
Definition SoftBodyContactListener.h:24
+
An interface to query which vertices of a soft body are colliding with other bodies.
Definition SoftBodyManifold.h:13
+
+
+ + + + diff --git a/_soft_body_creation_settings_8cpp.html b/_soft_body_creation_settings_8cpp.html new file mode 100644 index 000000000..7fd41624b --- /dev/null +++ b/_soft_body_creation_settings_8cpp.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyCreationSettings.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyCreationSettings.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodyCreationSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodyCreationSettings )
+
+ +
+
+
+
+ + + + diff --git a/_soft_body_creation_settings_8cpp.js b/_soft_body_creation_settings_8cpp.js new file mode 100644 index 000000000..3c7f16995 --- /dev/null +++ b/_soft_body_creation_settings_8cpp.js @@ -0,0 +1,4 @@ +var _soft_body_creation_settings_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_soft_body_creation_settings_8cpp.html#a4942de1919bd58e6ca881e54995c32b7", null ] +]; \ No newline at end of file diff --git a/_soft_body_creation_settings_8h.html b/_soft_body_creation_settings_8h.html new file mode 100644 index 000000000..26db69064 --- /dev/null +++ b/_soft_body_creation_settings_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyCreationSettings.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyCreationSettings.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  SoftBodyCreationSettings
 
+
+
+ + + + diff --git a/_soft_body_creation_settings_8h.js b/_soft_body_creation_settings_8h.js new file mode 100644 index 000000000..9cd499aca --- /dev/null +++ b/_soft_body_creation_settings_8h.js @@ -0,0 +1,4 @@ +var _soft_body_creation_settings_8h = +[ + [ "SoftBodyCreationSettings", "class_soft_body_creation_settings.html", "class_soft_body_creation_settings" ] +]; \ No newline at end of file diff --git a/_soft_body_creation_settings_8h_source.html b/_soft_body_creation_settings_8h_source.html new file mode 100644 index 000000000..176f3e88b --- /dev/null +++ b/_soft_body_creation_settings_8h_source.html @@ -0,0 +1,216 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyCreationSettings.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyCreationSettings.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + + + + +
12
+ +
14
+
+ +
18{
+
19public:
+ +
21
+
22
+ +
24 SoftBodyCreationSettings(const SoftBodySharedSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, ObjectLayer inObjectLayer) : mSettings(inSettings), mPosition(inPosition), mRotation(inRotation), mObjectLayer(inObjectLayer) { }
+
25
+
27 void SaveBinaryState(StreamOut &inStream) const;
+
28
+
30 void RestoreBinaryState(StreamIn &inStream);
+
31
+ + + + + + +
38
+
42 void SaveWithChildren(StreamOut &inStream, SharedSettingsToIDMap *ioSharedSettingsMap, MaterialToIDMap *ioMaterialMap, GroupFilterToIDMap *ioGroupFilterMap) const;
+
43
+ +
45
+
47 static SBCSResult sRestoreWithChildren(StreamIn &inStream, IDToSharedSettingsMap &ioSharedSettingsMap, IDToMaterialMap &ioMaterialMap, IDToGroupFilterMap &ioGroupFilterMap);
+
48
+ +
50
+
51 RVec3 mPosition { RVec3::sZero() };
+
52 Quat mRotation { Quat::sIdentity() };
+
53
+
55 uint64 mUserData = 0;
+
56
+
58 ObjectLayer mObjectLayer = 0;
+ +
60
+
61 uint32 mNumIterations = 5;
+
62 float mLinearDamping = 0.1f;
+
63 float mMaxLinearVelocity = 500.0f;
+
64 float mRestitution = 0.0f;
+
65 float mFriction = 0.2f;
+
66 float mPressure = 0.0f;
+
67 float mGravityFactor = 1.0f;
+
68 bool mUpdatePosition = true;
+
69 bool mMakeRotationIdentity = true;
+
70 bool mAllowSleeping = true;
+
71};
+
+
72
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
std::uint64_t uint64
Definition Core.h:456
+
#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 ObjectLayer
Definition ObjectLayer.h:16
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ + +
Definition Array.h:36
+
Definition CollisionGroup.h:20
+
Definition Quat.h:33
+
static JPH_INLINE Quat sIdentity()
Definition Quat.h:103
+
Definition Reference.h:151
+
Helper class that either contains a valid result or an error.
Definition Result.h:12
+
Definition SoftBodyCreationSettings.h:18
+
SoftBodySharedSettings::SharedSettingsToIDMap SharedSettingsToIDMap
Definition SoftBodyCreationSettings.h:34
+
StreamUtils::ObjectToIDMap< GroupFilter > GroupFilterToIDMap
Definition SoftBodyCreationSettings.h:32
+
StreamUtils::ObjectToIDMap< PhysicsMaterial > MaterialToIDMap
Definition SoftBodyCreationSettings.h:36
+
RefConst< SoftBodySharedSettings > mSettings
Defines the configuration of this soft body.
Definition SoftBodyCreationSettings.h:49
+
CollisionGroup mCollisionGroup
The collision group this body belongs to (determines if two objects can collide)
Definition SoftBodyCreationSettings.h:59
+
Definition SoftBodySharedSettings.h:16
+
StreamUtils::IDToObjectMap< SoftBodySharedSettings > IDToSharedSettingsMap
Definition SoftBodySharedSettings.h:102
+
StreamUtils::ObjectToIDMap< SoftBodySharedSettings > SharedSettingsToIDMap
Definition SoftBodySharedSettings.h:101
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
UnorderedMap< const Type *, uint32 > ObjectToIDMap
Definition StreamUtils.h:18
+
+
+ + + + diff --git a/_soft_body_manifold_8h.html b/_soft_body_manifold_8h.html new file mode 100644 index 000000000..ee6abc5ad --- /dev/null +++ b/_soft_body_manifold_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyManifold.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyManifold.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  SoftBodyManifold
 An interface to query which vertices of a soft body are colliding with other bodies. More...
 
+
+
+ + + + diff --git a/_soft_body_manifold_8h.js b/_soft_body_manifold_8h.js new file mode 100644 index 000000000..2a01a0b9c --- /dev/null +++ b/_soft_body_manifold_8h.js @@ -0,0 +1,4 @@ +var _soft_body_manifold_8h = +[ + [ "SoftBodyManifold", "class_soft_body_manifold.html", "class_soft_body_manifold" ] +]; \ No newline at end of file diff --git a/_soft_body_manifold_8h_source.html b/_soft_body_manifold_8h_source.html new file mode 100644 index 000000000..812ac8d67 --- /dev/null +++ b/_soft_body_manifold_8h_source.html @@ -0,0 +1,200 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyManifold.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyManifold.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+
+ +
13{
+
14public:
+
16 const Array<SoftBodyVertex> & GetVertices() const { return mVertices; }
+
17
+
+
19 JPH_INLINE bool HasContact(const SoftBodyVertex &inVertex) const
+
20 {
+
21 return inVertex.mHasContact;
+
22 }
+
+
23
+
+
25 JPH_INLINE Vec3 GetLocalContactPoint(const SoftBodyVertex &inVertex) const
+
26 {
+
27 return inVertex.mPosition - inVertex.mCollisionPlane.SignedDistance(inVertex.mPosition) * inVertex.mCollisionPlane.GetNormal();
+
28 }
+
+
29
+
+
31 JPH_INLINE Vec3 GetContactNormal(const SoftBodyVertex &inVertex) const
+
32 {
+
33 return -inVertex.mCollisionPlane.GetNormal();
+
34 }
+
+
35
+
+
37 JPH_INLINE BodyID GetContactBodyID(const SoftBodyVertex &inVertex) const
+
38 {
+
39 return inVertex.mHasContact? mCollidingShapes[inVertex.mCollidingShapeIndex].mBodyID : BodyID();
+
40 }
+
+
41
+
42private:
+ +
45
+
47 explicit SoftBodyManifold(const SoftBodyMotionProperties *inMotionProperties) :
+
48 mVertices(inMotionProperties->mVertices),
+
49 mCollidingShapes(inMotionProperties->mCollidingShapes)
+
50 {
+
51 }
+
52
+
53 using CollidingShape = SoftBodyMotionProperties::CollidingShape;
+
54
+
55 const Array<SoftBodyVertex> & mVertices;
+
56 const Array<CollidingShape> & mCollidingShapes;
+
57};
+
+
58
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Definition Array.h:36
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Vec3 GetNormal() const
Definition Plane.h:30
+
float SignedDistance(Vec3Arg inPoint) const
Distance point to plane.
Definition Plane.h:54
+
An interface to query which vertices of a soft body are colliding with other bodies.
Definition SoftBodyManifold.h:13
+
JPH_INLINE bool HasContact(const SoftBodyVertex &inVertex) const
Check if a vertex has collided with something in this update.
Definition SoftBodyManifold.h:19
+
JPH_INLINE Vec3 GetLocalContactPoint(const SoftBodyVertex &inVertex) const
Get the local space contact point (multiply by GetCenterOfMassTransform() of the soft body to get wor...
Definition SoftBodyManifold.h:25
+
JPH_INLINE BodyID GetContactBodyID(const SoftBodyVertex &inVertex) const
Get the body with which the vertex has collided in this update.
Definition SoftBodyManifold.h:37
+
const Array< SoftBodyVertex > & GetVertices() const
Get the vertices of the soft body for iterating.
Definition SoftBodyManifold.h:16
+
JPH_INLINE Vec3 GetContactNormal(const SoftBodyVertex &inVertex) const
Get the contact normal for the vertex (assumes there is a contact).
Definition SoftBodyManifold.h:31
+
This class contains the runtime information of a soft body.
Definition SoftBodyMotionProperties.h:34
+
Definition SoftBodyVertex.h:16
+
bool mHasContact
True if the vertex has collided with anything in the last update.
Definition SoftBodyVertex.h:23
+
int mCollidingShapeIndex
Index in the colliding shapes list of the body we may collide with.
Definition SoftBodyVertex.h:22
+
Plane mCollisionPlane
Nearest collision plane, relative to the center of mass of the soft body.
Definition SoftBodyVertex.h:21
+
Vec3 mPosition
Position, relative to the center of mass of the soft body.
Definition SoftBodyVertex.h:19
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_soft_body_motion_properties_8cpp.html b/_soft_body_motion_properties_8cpp.html new file mode 100644 index 000000000..df97648d0 --- /dev/null +++ b/_soft_body_motion_properties_8cpp.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyMotionProperties.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyMotionProperties.cpp File Reference
+
+
+
+
+ + + + diff --git a/_soft_body_motion_properties_8h.html b/_soft_body_motion_properties_8h.html new file mode 100644 index 000000000..ee49e7b21 --- /dev/null +++ b/_soft_body_motion_properties_8h.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyMotionProperties.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyMotionProperties.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  SoftBodyMotionProperties
 This class contains the runtime information of a soft body. More...
 
+
+
+ + + + diff --git a/_soft_body_motion_properties_8h.js b/_soft_body_motion_properties_8h.js new file mode 100644 index 000000000..440b7d8ee --- /dev/null +++ b/_soft_body_motion_properties_8h.js @@ -0,0 +1,4 @@ +var _soft_body_motion_properties_8h = +[ + [ "SoftBodyMotionProperties", "class_soft_body_motion_properties.html", "class_soft_body_motion_properties" ] +]; \ No newline at end of file diff --git a/_soft_body_motion_properties_8h_source.html b/_soft_body_motion_properties_8h_source.html new file mode 100644 index 000000000..b9c73dfb4 --- /dev/null +++ b/_soft_body_motion_properties_8h_source.html @@ -0,0 +1,402 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyMotionProperties.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyMotionProperties.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + + + + + +
13
+ +
15
+
16class PhysicsSystem;
+
17class BodyInterface;
+ +
19struct PhysicsSettings;
+
20class Body;
+
21class Shape;
+ +
23class TempAllocator;
+
24#ifdef JPH_DEBUG_RENDERER
+
25class DebugRenderer;
+ +
27#endif // JPH_DEBUG_RENDERER
+
28
+
30//
+
31// Based on: XPBD, Extended Position Based Dynamics, Matthias Muller, Ten Minute Physics
+
32// See: https://matthias-research.github.io/pages/tenMinutePhysics/09-xpbd.pdf
+
+ +
34{
+
35public:
+ + + + + + + + + +
45
+
47 void Initialize(const SoftBodyCreationSettings &inSettings);
+
48
+
50 const SoftBodySharedSettings * GetSettings() const { return mSettings; }
+
51
+
53 const Array<Vertex> & GetVertices() const { return mVertices; }
+
54 Array<Vertex> & GetVertices() { return mVertices; }
+
55
+
57 const Vertex & GetVertex(uint inIndex) const { return mVertices[inIndex]; }
+
58 Vertex & GetVertex(uint inIndex) { return mVertices[inIndex]; }
+
59
+
61 const PhysicsMaterialList & GetMaterials() const { return mSettings->mMaterials; }
+
62
+
64 const Array<Face> & GetFaces() const { return mSettings->mFaces; }
+
65
+
67 const Face & GetFace(uint inIndex) const { return mSettings->mFaces[inIndex]; }
+
68
+
70 uint32 GetNumIterations() const { return mNumIterations; }
+
71 void SetNumIterations(uint32 inNumIterations) { mNumIterations = inNumIterations; }
+
72
+
74 float GetPressure() const { return mPressure; }
+
75 void SetPressure(float inPressure) { mPressure = inPressure; }
+
76
+
78 bool GetUpdatePosition() const { return mUpdatePosition; }
+
79 void SetUpdatePosition(bool inUpdatePosition) { mUpdatePosition = inUpdatePosition; }
+
80
+
82 bool GetEnableSkinConstraints() const { return mEnableSkinConstraints; }
+
83 void SetEnableSkinConstraints(bool inEnableSkinConstraints) { mEnableSkinConstraints = inEnableSkinConstraints; }
+
84
+
86 float GetSkinnedMaxDistanceMultiplier() const { return mSkinnedMaxDistanceMultiplier; }
+
87 void SetSkinnedMaxDistanceMultiplier(float inSkinnedMaxDistanceMultiplier) { mSkinnedMaxDistanceMultiplier = inSkinnedMaxDistanceMultiplier; }
+
88
+
90 const AABox & GetLocalBounds() const { return mLocalBounds; }
+
91
+
93 float GetVolume() const { return GetVolumeTimesSix() / 6.0f; }
+
94
+ +
97
+
98#ifdef JPH_DEBUG_RENDERER
+
100 void DrawVertices(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform) const;
+
101 void DrawVertexVelocities(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform) const;
+
102 void DrawEdgeConstraints(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) const;
+
103 void DrawBendConstraints(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) const;
+
104 void DrawVolumeConstraints(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) const;
+
105 void DrawSkinConstraints(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) const;
+
106 void DrawLRAConstraints(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) const;
+
107 void DrawPredictedBounds(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform) const;
+
108#endif // JPH_DEBUG_RENDERER
+
109
+
111 void SaveState(StateRecorder &inStream) const;
+
112
+
114 void RestoreState(StateRecorder &inStream);
+
115
+
122 void SkinVertices(RMat44Arg inCenterOfMassTransform, const Mat44 *inJointMatrices, uint inNumJoints, bool inHardSkinAll, TempAllocator &ioTempAllocator);
+
123
+
135 void CustomUpdate(float inDeltaTime, Body &ioSoftBody, PhysicsSystem &inSystem);
+
136
+
138 // FUNCTIONS BELOW THIS LINE ARE FOR INTERNAL USE ONLY
+
140
+
142 void InitializeUpdateContext(float inDeltaTime, Body &inSoftBody, const PhysicsSystem &inSystem, SoftBodyUpdateContext &ioContext);
+
143
+
145 void DetermineCollidingShapes(const SoftBodyUpdateContext &inContext, const PhysicsSystem &inSystem, const BodyLockInterface &inBodyLockInterface);
+
146
+
+
148 enum class EStatus
+
149 {
+
150 NoWork = 1 << 0,
+
151 DidWork = 1 << 1,
+
152 Done = 1 << 2,
+
153 };
+
+
154
+
156 EStatus ParallelUpdate(SoftBodyUpdateContext &ioContext, const PhysicsSettings &inPhysicsSettings);
+
157
+
159 void UpdateRigidBodyVelocities(const SoftBodyUpdateContext &inContext, BodyInterface &inBodyInterface);
+
160
+
161private:
+
162 // SoftBodyManifold needs to have access to CollidingShape
+
163 friend class SoftBodyManifold;
+
164
+
165 // Collect information about the colliding bodies
+
166 struct CollidingShape
+
167 {
+
169 Vec3 GetPointVelocity(Vec3Arg inPointRelativeToCOM) const
+
170 {
+
171 return mLinearVelocity + mAngularVelocity.Cross(inPointRelativeToCOM);
+
172 }
+
173
+
174 Mat44 mCenterOfMassTransform;
+
175 RefConst<Shape> mShape;
+
176 BodyID mBodyID;
+
177 EMotionType mMotionType;
+
178 bool mIsSensor;
+
179 float mInvMass;
+
180 float mFriction;
+
181 float mRestitution;
+
182 float mSoftBodyInvMassScale;
+
183 bool mUpdateVelocities;
+
184 Mat44 mInvInertia;
+
185 Vec3 mLinearVelocity;
+
186 Vec3 mAngularVelocity;
+
187 Vec3 mOriginalLinearVelocity;
+
188 Vec3 mOriginalAngularVelocity;
+
189 };
+
190
+
191 // Information about the state of all skinned vertices
+
192 struct SkinState
+
193 {
+
194 Vec3 mPreviousPosition = Vec3::sZero();
+
195 Vec3 mPosition = Vec3::sNaN();
+
196 Vec3 mNormal = Vec3::sNaN();
+
197 };
+
198
+
200 void DetermineCollisionPlanes(const SoftBodyUpdateContext &inContext, uint inVertexStart, uint inNumVertices);
+
201
+
203 void ApplyPressure(const SoftBodyUpdateContext &inContext);
+
204
+
206 void IntegratePositions(const SoftBodyUpdateContext &inContext);
+
207
+
209 void ApplyDihedralBendConstraints(const SoftBodyUpdateContext &inContext, uint inStartIndex, uint inEndIndex);
+
210
+
212 void ApplyVolumeConstraints(const SoftBodyUpdateContext &inContext, uint inStartIndex, uint inEndIndex);
+
213
+
215 void ApplySkinConstraints(const SoftBodyUpdateContext &inContext, uint inStartIndex, uint inEndIndex);
+
216
+
218 void ApplyEdgeConstraints(const SoftBodyUpdateContext &inContext, uint inStartIndex, uint inEndIndex);
+
219
+
221 void ApplyLRAConstraints(uint inStartIndex, uint inEndIndex);
+
222
+
224 void ApplyCollisionConstraintsAndUpdateVelocities(const SoftBodyUpdateContext &inContext);
+
225
+
227 void UpdateSoftBodyState(SoftBodyUpdateContext &ioContext, const PhysicsSettings &inPhysicsSettings);
+
228
+
230 void StartNextIteration(const SoftBodyUpdateContext &ioContext);
+
231
+
233 EStatus ParallelDetermineCollisionPlanes(SoftBodyUpdateContext &ioContext);
+
234
+
236 EStatus ParallelApplyConstraints(SoftBodyUpdateContext &ioContext, const PhysicsSettings &inPhysicsSettings);
+
237
+
239 void ProcessGroup(const SoftBodyUpdateContext &ioContext, uint inGroupIndex);
+
240
+
242 float GetVolumeTimesSix() const;
+
243
+
244#ifdef JPH_DEBUG_RENDERER
+
246 template <typename GetEndIndex, typename DrawConstraint>
+
247 inline void DrawConstraints(ESoftBodyConstraintColor inConstraintColor, const GetEndIndex &inGetEndIndex, const DrawConstraint &inDrawConstraint, ColorArg inBaseColor) const;
+
248
+
249 RMat44 mSkinStateTransform = RMat44::sIdentity();
+
250#endif // JPH_DEBUG_RENDERER
+
251
+ +
253 Array<Vertex> mVertices;
+
254 Array<CollidingShape> mCollidingShapes;
+
255 Array<SkinState> mSkinState;
+
256 AABox mLocalBounds;
+
257 AABox mLocalPredictedBounds;
+
258 uint32 mNumIterations;
+
259 float mPressure;
+
260 float mSkinnedMaxDistanceMultiplier = 1.0f;
+
261 bool mUpdatePosition;
+
262 bool mHasContact = false;
+
263 bool mEnableSkinConstraints = true;
+
264 bool mSkinStatePreviousPositionValid = false;
+
265};
+
+
266
+ + +
@ CalculateMassAndInertia
Tells the system to calculate the mass and inertia based on density.
+ +
ESoftBodyConstraintColor
Defines how to color soft body constraints.
Definition BodyManager.h:28
+
#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
+ +
EMotionType
Motion type of a physics body.
Definition MotionType.h:11
+ + + +
Axis aligned box.
Definition AABox.h:16
+
Definition Array.h:36
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Definition BodyInterface.h:35
+
Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLock...
Definition BodyLockInterface.h:17
+
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
Definition DebugRenderer.h:47
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sIdentity()
Identity matrix.
Definition Mat44.inl:35
+
The Body class only keeps track of state for static bodies, the MotionProperties class keeps the addi...
Definition MotionProperties.h:29
+
void RestoreState(StateRecorder &inStream)
Restoring state for replay.
Definition MotionProperties.cpp:76
+
void SaveState(StateRecorder &inStream) const
Saving state for replay.
Definition MotionProperties.cpp:61
+
Definition PhysicsSystem.h:29
+
Definition Reference.h:151
+
Base class for all shapes (collision volume of a body). Defines a virtual interface for collision det...
Definition Shape.h:184
+
Definition SoftBodyCreationSettings.h:18
+
An interface to query which vertices of a soft body are colliding with other bodies.
Definition SoftBodyManifold.h:13
+
This class contains the runtime information of a soft body.
Definition SoftBodyMotionProperties.h:34
+
bool GetEnableSkinConstraints() const
Global setting to turn on/off skin constraints.
Definition SoftBodyMotionProperties.h:82
+
Vertex & GetVertex(uint inIndex)
Definition SoftBodyMotionProperties.h:58
+
EStatus
Return code for ParallelUpdate.
Definition SoftBodyMotionProperties.h:149
+
Array< Vertex > & GetVertices()
Definition SoftBodyMotionProperties.h:54
+
void SetSkinnedMaxDistanceMultiplier(float inSkinnedMaxDistanceMultiplier)
Definition SoftBodyMotionProperties.h:87
+
const PhysicsMaterialList & GetMaterials() const
Get the materials of the soft body.
Definition SoftBodyMotionProperties.h:61
+
const Array< Vertex > & GetVertices() const
Get the vertices of the soft body.
Definition SoftBodyMotionProperties.h:53
+
void SetUpdatePosition(bool inUpdatePosition)
Definition SoftBodyMotionProperties.h:79
+
float GetSkinnedMaxDistanceMultiplier() const
Multiplier applied to Skinned::mMaxDistance to allow tightening or loosening of the skin constraints....
Definition SoftBodyMotionProperties.h:86
+
void SetPressure(float inPressure)
Definition SoftBodyMotionProperties.h:75
+
const Array< Face > & GetFaces() const
Get the faces of the soft body.
Definition SoftBodyMotionProperties.h:64
+
const AABox & GetLocalBounds() const
Get local bounding box.
Definition SoftBodyMotionProperties.h:90
+
const Vertex & GetVertex(uint inIndex) const
Access an individual vertex.
Definition SoftBodyMotionProperties.h:57
+
void SetNumIterations(uint32 inNumIterations)
Definition SoftBodyMotionProperties.h:71
+
bool GetUpdatePosition() const
Update the position of the body while simulating (set to false for something that is attached to the ...
Definition SoftBodyMotionProperties.h:78
+
float GetVolume() const
Get the volume of the soft body. Note can become negative if the shape is inside out!
Definition SoftBodyMotionProperties.h:93
+
uint32 GetNumIterations() const
Get the number of solver iterations.
Definition SoftBodyMotionProperties.h:70
+
float GetPressure() const
Get the pressure of the soft body.
Definition SoftBodyMotionProperties.h:74
+
void SetEnableSkinConstraints(bool inEnableSkinConstraints)
Definition SoftBodyMotionProperties.h:83
+
const SoftBodySharedSettings * GetSettings() const
Get the shared settings of the soft body.
Definition SoftBodyMotionProperties.h:50
+
const Face & GetFace(uint inIndex) const
Access to an individual face.
Definition SoftBodyMotionProperties.h:67
+
An inverse bind matrix take a skinned vertex from its bind pose into joint local space.
Definition SoftBodySharedSettings.h:214
+
Definition SoftBodySharedSettings.h:278
+
A joint and its skin weight.
Definition SoftBodySharedSettings.h:228
+
A constraint that skins a vertex to joints and limits the distance that the simulated vertex can trav...
Definition SoftBodySharedSettings.h:242
+
Definition SoftBodySharedSettings.h:16
+
Temporary data used by the update of a soft body.
Definition SoftBodyUpdateContext.h:18
+
Definition SoftBodyVertex.h:16
+
Definition StateRecorder.h:48
+
Definition TempAllocator.h:16
+
Definition Vec3.h:17
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE Vec3 sNaN()
Vector with all NaN's.
Definition Vec3.inl:129
+
Definition PhysicsSettings.h:28
+
Definition SoftBodySharedSettings.h:180
+
An edge keeps two vertices at a constant distance using a spring: |x1 - x2| = rest length.
Definition SoftBodySharedSettings.h:146
+
A face defines the surface of the body.
Definition SoftBodySharedSettings.h:130
+
Volume constraint, keeps the volume of a tetrahedron constant.
Definition SoftBodySharedSettings.h:197
+
+
+ + + + diff --git a/_soft_body_shape_8cpp.html b/_soft_body_shape_8cpp.html new file mode 100644 index 000000000..7a8c0b490 --- /dev/null +++ b/_soft_body_shape_8cpp.html @@ -0,0 +1,136 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyShape.cpp File Reference
+
+
+ + + + +

+Classes

struct  SoftBodyShape::SBSGetTrianglesContext
 
+
+
+ + + + diff --git a/_soft_body_shape_8cpp.js b/_soft_body_shape_8cpp.js new file mode 100644 index 000000000..594db45a0 --- /dev/null +++ b/_soft_body_shape_8cpp.js @@ -0,0 +1,4 @@ +var _soft_body_shape_8cpp = +[ + [ "SoftBodyShape::SBSGetTrianglesContext", "struct_soft_body_shape_1_1_s_b_s_get_triangles_context.html", "struct_soft_body_shape_1_1_s_b_s_get_triangles_context" ] +]; \ No newline at end of file diff --git a/_soft_body_shape_8h.html b/_soft_body_shape_8h.html new file mode 100644 index 000000000..b0105d90a --- /dev/null +++ b/_soft_body_shape_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  SoftBodyShape
 Shape used exclusively for soft bodies. Adds the ability to perform collision checks against soft bodies. More...
 
+
+
+ + + + diff --git a/_soft_body_shape_8h.js b/_soft_body_shape_8h.js new file mode 100644 index 000000000..d581de309 --- /dev/null +++ b/_soft_body_shape_8h.js @@ -0,0 +1,4 @@ +var _soft_body_shape_8h = +[ + [ "SoftBodyShape", "class_soft_body_shape.html", "class_soft_body_shape" ] +]; \ No newline at end of file diff --git a/_soft_body_shape_8h_source.html b/_soft_body_shape_8h_source.html new file mode 100644 index 000000000..99833bb29 --- /dev/null +++ b/_soft_body_shape_8h_source.html @@ -0,0 +1,245 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyShape.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+ + +
13
+
+
15class JPH_EXPORT SoftBodyShape final : public Shape
+
16{
+
17public:
+ +
19
+ +
22
+
24 uint GetSubShapeIDBits() const;
+
25
+
27 uint32 GetFaceIndex(const SubShapeID &inSubShapeID) const;
+
28
+
29 // See Shape
+
30 virtual bool MustBeStatic() const override { return false; }
+
31 virtual Vec3 GetCenterOfMass() const override { return Vec3::sZero(); }
+
32 virtual AABox GetLocalBounds() const override;
+
33 virtual uint GetSubShapeIDBitsRecursive() const override { return GetSubShapeIDBits(); }
+
34 virtual float GetInnerRadius() const override { return 0.0f; }
+
35 virtual MassProperties GetMassProperties() const override { return MassProperties(); }
+
36 virtual const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const override;
+
37 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
38 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
39 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy
+
40#ifdef JPH_DEBUG_RENDERER // Not using JPH_IF_DEBUG_RENDERER for Doxygen
+
41 , RVec3Arg inBaseOffset
+
42#endif
+
43 ) const override;
+
44#ifdef JPH_DEBUG_RENDERER
+
45 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
46#endif // JPH_DEBUG_RENDERER
+
47 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
48 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
49 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
50 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
51 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override;
+
52 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override;
+
53 virtual Stats GetStats() const override;
+
54 virtual float GetVolume() const override;
+
55
+
56 // Register shape functions with the registry
+
57 static void sRegister();
+
58
+
59private:
+
60 // Helper functions called by CollisionDispatch
+
61 static void sCollideConvexVsSoftBody(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);
+
62 static void sCollideSphereVsSoftBody(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);
+
63 static void sCastConvexVsSoftBody(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
64 static void sCastSphereVsSoftBody(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
65
+
66 struct SBSGetTrianglesContext;
+
67
+
68 friend class BodyManager;
+
69
+
70 const SoftBodyMotionProperties *mSoftBodyMotionProperties;
+
71};
+
+
72
+ +
@ SoftBody
Soft body consisting of a deformable shape.
+
#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
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
EShapeSubType
This enumerates all shape types, each shape can return its type through Shape::GetSubType.
Definition Shape.h:76
+
EShapeType
Shapes are categorized in groups, each shape can return which group it belongs to through its Shape::...
Definition Shape.h:57
+
Axis aligned box.
Definition AABox.h:16
+
Class that contains all bodies.
Definition BodyManager.h:44
+
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
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
Definition Quat.h:33
+
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:184
+
virtual float GetVolume() const =0
+
virtual AABox GetLocalBounds() const =0
Get local bounding box including convex radius, this box is centered around the center of mass rather...
+
virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const =0
+
virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const
Definition Shape.h:264
+
virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const =0
+
virtual const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const =0
Get the material assigned to a particular sub shape ID.
+
virtual Stats GetStats() const =0
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
+
virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const =0
+
virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
+
virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const =0
+
virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const =0
+
virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const =0
Draw the shape at a particular location with a particular color (debugging purposes)
+
virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0
+
This class contains the runtime information of a soft body.
Definition SoftBodyMotionProperties.h:34
+
Shape used exclusively for soft bodies. Adds the ability to perform collision checks against soft bod...
Definition SoftBodyShape.h:16
+
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 SoftBodyShape.h:33
+
JPH_OVERRIDE_NEW_DELETE SoftBodyShape()
Constructor.
Definition SoftBodyShape.h:21
+
virtual float GetInnerRadius() const override
Definition SoftBodyShape.h:34
+
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 SoftBodyShape.h:30
+
virtual MassProperties GetMassProperties() const override
Calculate the mass and inertia of this shape.
Definition SoftBodyShape.h:35
+
virtual Vec3 GetCenterOfMass() const override
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition SoftBodyShape.h:31
+
Definition SoftBodyVertex.h:16
+
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 Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Definition RayCast.h:47
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_soft_body_shared_settings_8cpp.html b/_soft_body_shared_settings_8cpp.html new file mode 100644 index 000000000..8ff41630a --- /dev/null +++ b/_soft_body_shared_settings_8cpp.html @@ -0,0 +1,355 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodySharedSettings.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodySharedSettings.cpp File Reference
+
+
+ + + + + +

+Typedefs

template<class T , class Container = Array<T>, class Compare = std::less<typename Container::value_type>>
using PriorityQueue = std::priority_queue< T, Container, Compare >
 
+ + + + + + + + + + + + + + + + + + + + + +

+Functions

 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::Vertex)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::Face)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::Edge)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::DihedralBend)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::Volume)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::InvBind)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::SkinWeight)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::Skinned)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::LRA)
 
 JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings)
 
+

Typedef Documentation

+ +

◆ PriorityQueue

+ +
+
+
+template<class T , class Container = Array<T>, class Compare = std::less<typename Container::value_type>>
+ + + + +
using PriorityQueue = std::priority_queue<T, Container, Compare>
+
+ +
+
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [1/10]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [2/10]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::DihedralBend )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [3/10]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::Edge )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [4/10]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::Face )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [5/10]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::InvBind )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [6/10]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::LRA )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [7/10]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::Skinned )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [8/10]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::SkinWeight )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [9/10]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::Vertex )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL() [10/10]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SoftBodySharedSettings::Volume )
+
+ +
+
+
+
+ + + + diff --git a/_soft_body_shared_settings_8cpp.js b/_soft_body_shared_settings_8cpp.js new file mode 100644 index 000000000..593f0333c --- /dev/null +++ b/_soft_body_shared_settings_8cpp.js @@ -0,0 +1,14 @@ +var _soft_body_shared_settings_8cpp = +[ + [ "PriorityQueue", "_soft_body_shared_settings_8cpp.html#af220fbb8967590e9a266493b37153b07", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_soft_body_shared_settings_8cpp.html#afaccb21a4bbd49131642bc49dbf2603d", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_soft_body_shared_settings_8cpp.html#a046b7f7838890eeac5f938d4623c0a61", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_soft_body_shared_settings_8cpp.html#a02e0760eed402a4d64bf9ec84e8cd905", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_soft_body_shared_settings_8cpp.html#a9694e07edcc17e8a412d31cf4702fb67", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_soft_body_shared_settings_8cpp.html#af3f8d69825ce7e23c14a9b6171fe8522", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_soft_body_shared_settings_8cpp.html#a1d597c7362d005d1300da695068b51ba", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_soft_body_shared_settings_8cpp.html#a3b6fc8c7eaaad65967efe1c2d9c99df6", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_soft_body_shared_settings_8cpp.html#aa5d42a7512a1465b8b4fd39c222c4f50", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_soft_body_shared_settings_8cpp.html#adfaa805a48d870efa8197431b2734bef", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_soft_body_shared_settings_8cpp.html#a12fcdd1fd56a0281ddf5b3b216e7d875", null ] +]; \ No newline at end of file diff --git a/_soft_body_shared_settings_8h.html b/_soft_body_shared_settings_8h.html new file mode 100644 index 000000000..2f97fc95c --- /dev/null +++ b/_soft_body_shared_settings_8h.html @@ -0,0 +1,157 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodySharedSettings.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodySharedSettings.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  SoftBodySharedSettings
 
struct  SoftBodySharedSettings::VertexAttributes
 
class  SoftBodySharedSettings::OptimizationResults
 Information about the optimization of the soft body, the indices of certain elements may have changed. More...
 
struct  SoftBodySharedSettings::Vertex
 A vertex is a particle, the data in this structure is only used during creation of the soft body and not during simulation. More...
 
struct  SoftBodySharedSettings::Face
 A face defines the surface of the body. More...
 
struct  SoftBodySharedSettings::Edge
 An edge keeps two vertices at a constant distance using a spring: |x1 - x2| = rest length. More...
 
struct  SoftBodySharedSettings::DihedralBend
 
struct  SoftBodySharedSettings::Volume
 Volume constraint, keeps the volume of a tetrahedron constant. More...
 
class  SoftBodySharedSettings::InvBind
 An inverse bind matrix take a skinned vertex from its bind pose into joint local space. More...
 
class  SoftBodySharedSettings::SkinWeight
 A joint and its skin weight. More...
 
class  SoftBodySharedSettings::Skinned
 A constraint that skins a vertex to joints and limits the distance that the simulated vertex can travel from this vertex. More...
 
class  SoftBodySharedSettings::LRA
 
+
+
+ + + + diff --git a/_soft_body_shared_settings_8h.js b/_soft_body_shared_settings_8h.js new file mode 100644 index 000000000..c86f0a16f --- /dev/null +++ b/_soft_body_shared_settings_8h.js @@ -0,0 +1,15 @@ +var _soft_body_shared_settings_8h = +[ + [ "SoftBodySharedSettings", "class_soft_body_shared_settings.html", "class_soft_body_shared_settings" ], + [ "SoftBodySharedSettings::VertexAttributes", "struct_soft_body_shared_settings_1_1_vertex_attributes.html", "struct_soft_body_shared_settings_1_1_vertex_attributes" ], + [ "SoftBodySharedSettings::OptimizationResults", "class_soft_body_shared_settings_1_1_optimization_results.html", "class_soft_body_shared_settings_1_1_optimization_results" ], + [ "SoftBodySharedSettings::Vertex", "struct_soft_body_shared_settings_1_1_vertex.html", "struct_soft_body_shared_settings_1_1_vertex" ], + [ "SoftBodySharedSettings::Face", "struct_soft_body_shared_settings_1_1_face.html", "struct_soft_body_shared_settings_1_1_face" ], + [ "SoftBodySharedSettings::Edge", "struct_soft_body_shared_settings_1_1_edge.html", "struct_soft_body_shared_settings_1_1_edge" ], + [ "SoftBodySharedSettings::DihedralBend", "struct_soft_body_shared_settings_1_1_dihedral_bend.html", "struct_soft_body_shared_settings_1_1_dihedral_bend" ], + [ "SoftBodySharedSettings::Volume", "struct_soft_body_shared_settings_1_1_volume.html", "struct_soft_body_shared_settings_1_1_volume" ], + [ "SoftBodySharedSettings::InvBind", "class_soft_body_shared_settings_1_1_inv_bind.html", "class_soft_body_shared_settings_1_1_inv_bind" ], + [ "SoftBodySharedSettings::SkinWeight", "class_soft_body_shared_settings_1_1_skin_weight.html", "class_soft_body_shared_settings_1_1_skin_weight" ], + [ "SoftBodySharedSettings::Skinned", "class_soft_body_shared_settings_1_1_skinned.html", "class_soft_body_shared_settings_1_1_skinned" ], + [ "SoftBodySharedSettings::LRA", "class_soft_body_shared_settings_1_1_l_r_a.html", "class_soft_body_shared_settings_1_1_l_r_a" ] +]; \ No newline at end of file diff --git a/_soft_body_shared_settings_8h_source.html b/_soft_body_shared_settings_8h_source.html new file mode 100644 index 000000000..2f536caa6 --- /dev/null +++ b/_soft_body_shared_settings_8h_source.html @@ -0,0 +1,488 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodySharedSettings.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodySharedSettings.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + + +
10
+ +
12
+
+
15class JPH_EXPORT SoftBodySharedSettings : public RefTarget<SoftBodySharedSettings>
+
16{
+
17public:
+ +
19
+
20
+
+
21 enum class EBendType
+
22 {
+
23 None,
+
24 Distance,
+
25 Dihedral,
+
26 };
+
+
27
+
+
29 enum class ELRAType
+
30 {
+
31 None,
+
32 EuclideanDistance,
+
33 GeodesicDistance,
+
34 };
+
+
35
+
+ +
40 {
+
42 VertexAttributes() = default;
+
43 VertexAttributes(float inCompliance, float inShearCompliance, float inBendCompliance, ELRAType inLRAType = ELRAType::None, float inLRAMaxDistanceMultiplier = 1.0f) : mCompliance(inCompliance), mShearCompliance(inShearCompliance), mBendCompliance(inBendCompliance), mLRAType(inLRAType), mLRAMaxDistanceMultiplier(inLRAMaxDistanceMultiplier) { }
+
44
+
45 float mCompliance = 0.0f;
+
46 float mShearCompliance = 0.0f;
+
47 float mBendCompliance = FLT_MAX;
+
48 ELRAType mLRAType = ELRAType::None;
+
49 float mLRAMaxDistanceMultiplier = 1.0f;
+
50 };
+
+
51
+
57 void CreateConstraints(const VertexAttributes *inVertexAttributes, uint inVertexAttributesLength, EBendType inBendType = EBendType::Distance, float inAngleTolerance = DegreesToRadians(8.0f));
+
58
+
60 void CalculateEdgeLengths();
+
61
+
64 void CalculateLRALengths(float inMaxDistanceMultiplier = 1.0f);
+
65
+
67 void CalculateBendConstraintConstants();
+
68
+
70 void CalculateVolumeConstraintVolumes();
+
71
+
73 void CalculateSkinnedConstraintNormals();
+
74
+ +
85
+
87 void Optimize(OptimizationResults &outResults);
+
88
+
90 void Optimize() { OptimizationResults results; Optimize(results); }
+
91
+
93 Ref<SoftBodySharedSettings> Clone() const;
+
94
+
96 void SaveBinaryState(StreamOut &inStream) const;
+
97
+
99 void RestoreBinaryState(StreamIn &inStream);
+
100
+ + + + +
105
+
107 void SaveWithMaterials(StreamOut &inStream, SharedSettingsToIDMap &ioSettingsMap, MaterialToIDMap &ioMaterialMap) const;
+
108
+ +
110
+
112 static SettingsResult sRestoreWithMaterials(StreamIn &inStream, IDToSharedSettingsMap &ioSettingsMap, IDToMaterialMap &ioMaterialMap);
+
113
+
+ +
116 {
+ +
118
+
119
+
120 Vertex() = default;
+
121 Vertex(const Float3 &inPosition, const Float3 &inVelocity = Float3(0, 0, 0), float inInvMass = 1.0f) : mPosition(inPosition), mVelocity(inVelocity), mInvMass(inInvMass) { }
+
122
+
123 Float3 mPosition { 0, 0, 0 };
+
124 Float3 mVelocity { 0, 0, 0 };
+
125 float mInvMass = 1.0f;
+
126 };
+
+
127
+
+ +
130 {
+ +
132
+
133
+
134 Face() = default;
+
135 Face(uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inMaterialIndex = 0) : mVertex { inVertex1, inVertex2, inVertex3 }, mMaterialIndex(inMaterialIndex) { }
+
136
+
138 bool IsDegenerate() const { return mVertex[0] == mVertex[1] || mVertex[0] == mVertex[2] || mVertex[1] == mVertex[2]; }
+
139
+
140 uint32 mVertex[3];
+
141 uint32 mMaterialIndex = 0;
+
142 };
+
+
143
+
+ +
146 {
+ +
148
+
149
+
150 Edge() = default;
+
151 Edge(uint32 inVertex1, uint32 inVertex2, float inCompliance = 0.0f) : mVertex { inVertex1, inVertex2 }, mCompliance(inCompliance) { }
+
152
+
154 uint32 GetMinVertexIndex() const { return min(mVertex[0], mVertex[1]); }
+
155
+
156 uint32 mVertex[2];
+
157 float mRestLength = 1.0f;
+
158 float mCompliance = 0.0f;
+
159 };
+
+
160
+
+ +
180 {
+ +
182
+
183
+
184 DihedralBend() = default;
+
185 DihedralBend(uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inVertex4, float inCompliance = 0.0f) : mVertex { inVertex1, inVertex2, inVertex3, inVertex4 }, mCompliance(inCompliance) { }
+
186
+
188 uint32 GetMinVertexIndex() const { return min(min(mVertex[0], mVertex[1]), min(mVertex[2], mVertex[3])); }
+
189
+
190 uint32 mVertex[4];
+
191 float mCompliance = 0.0f;
+
192 float mInitialAngle = 0.0f;
+
193 };
+
+
194
+
+ +
197 {
+ +
199
+
200
+
201 Volume() = default;
+
202 Volume(uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inVertex4, float inCompliance = 0.0f) : mVertex { inVertex1, inVertex2, inVertex3, inVertex4 }, mCompliance(inCompliance) { }
+
203
+
205 uint32 GetMinVertexIndex() const { return min(min(mVertex[0], mVertex[1]), min(mVertex[2], mVertex[3])); }
+
206
+
207 uint32 mVertex[4];
+
208 float mSixRestVolume = 1.0f;
+
209 float mCompliance = 0.0f;
+
210 };
+
+
211
+
+ +
214 {
+ +
216
+
217 public:
+
219 InvBind() = default;
+
220 InvBind(uint32 inJointIndex, Mat44Arg inInvBind) : mJointIndex(inJointIndex), mInvBind(inInvBind) { }
+
221
+
222 uint32 mJointIndex = 0;
+
223 Mat44 mInvBind = Mat44::sIdentity();
+
224 };
+
+
225
+
+ +
228 {
+ +
230
+
231 public:
+
233 SkinWeight() = default;
+
234 SkinWeight(uint32 inInvBindIndex, float inWeight) : mInvBindIndex(inInvBindIndex), mWeight(inWeight) { }
+
235
+
236 uint32 mInvBindIndex = 0;
+
237 float mWeight = 0.0f;
+
238 };
+
+
239
+
+ +
242 {
+ +
244
+
245 public:
+
247 Skinned() = default;
+
248 Skinned(uint32 inVertex, float inMaxDistance, float inBackStopDistance, float inBackStopRadius) : mVertex(inVertex), mMaxDistance(inMaxDistance), mBackStopDistance(inBackStopDistance), mBackStopRadius(inBackStopRadius) { }
+
249
+
+ +
252 {
+
253 // Get the total weight
+
254 float total = 0.0f;
+
255 for (const SkinWeight &w : mWeights)
+
256 total += w.mWeight;
+
257
+
258 // Normalize
+
259 if (total > 0.0f)
+
260 for (SkinWeight &w : mWeights)
+
261 w.mWeight /= total;
+
262 }
+
+
263
+
265 static constexpr uint cMaxSkinWeights = 4;
+
266
+
267 uint32 mVertex = 0;
+
268 SkinWeight mWeights[cMaxSkinWeights];
+
269 float mMaxDistance = FLT_MAX;
+
270 float mBackStopDistance = FLT_MAX;
+
271 float mBackStopRadius = 40.0f;
+
272 uint32 mNormalInfo = 0;
+
273 };
+
+
274
+
+ +
278 {
+ +
280
+
281 public:
+
283 LRA() = default;
+
284 LRA(uint32 inVertex1, uint32 inVertex2, float inMaxDistance) : mVertex { inVertex1, inVertex2 }, mMaxDistance(inMaxDistance) { }
+
285
+
287 uint32 GetMinVertexIndex() const { return min(mVertex[0], mVertex[1]); }
+
288
+
289 uint32 mVertex[2];
+
290 float mMaxDistance = 0.0f;
+
291 };
+
+
292
+
294 void AddFace(const Face &inFace) { JPH_ASSERT(!inFace.IsDegenerate()); mFaces.push_back(inFace); }
+
295
+ + + + + + + + + +
305 float mVertexRadius = 0.0f;
+
306
+
307private:
+ +
309
+
311 void CalculateClosestKinematic();
+
312
+
314 struct ClosestKinematic
+
315 {
+
316 uint32 mVertex = 0xffffffff;
+
317 float mDistance = FLT_MAX;
+
318 };
+
319
+
321 struct UpdateGroup
+
322 {
+
323 uint mEdgeEndIndex;
+
324 uint mLRAEndIndex;
+
325 uint mDihedralBendEndIndex;
+
326 uint mVolumeEndIndex;
+
327 uint mSkinnedEndIndex;
+
328 };
+
329
+
330 Array<ClosestKinematic> mClosestKinematic;
+
331 Array<UpdateGroup> mUpdateGroups;
+
332 Array<uint32> mSkinnedConstraintNormals;
+
333};
+
+
334
+ +
@ None
No degrees of freedom are allowed. Note that this is not valid and will crash. Use a static body inst...
+ +
#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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr float DegreesToRadians(float inV)
Convert a value from degrees to radians.
Definition Math.h:13
+ + +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ +
Definition Array.h:36
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.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
+
static JPH_INLINE Mat44 sIdentity()
Identity matrix.
Definition Mat44.inl:35
+
static RefConst< PhysicsMaterial > sDefault
Default material that is used when a shape has no materials defined.
Definition PhysicsMaterial.h:31
+
Definition Reference.h:101
+
Definition Reference.h:35
+
Helper class that either contains a valid result or an error.
Definition Result.h:12
+
This class contains the runtime information of a soft body.
Definition SoftBodyMotionProperties.h:34
+
An inverse bind matrix take a skinned vertex from its bind pose into joint local space.
Definition SoftBodySharedSettings.h:214
+
InvBind()=default
Constructor.
+
InvBind(uint32 inJointIndex, Mat44Arg inInvBind)
Definition SoftBodySharedSettings.h:220
+
Definition SoftBodySharedSettings.h:278
+
uint32 GetMinVertexIndex() const
Return the lowest vertex index of this constraint.
Definition SoftBodySharedSettings.h:287
+
LRA()=default
Constructor.
+
LRA(uint32 inVertex1, uint32 inVertex2, float inMaxDistance)
Definition SoftBodySharedSettings.h:284
+
Information about the optimization of the soft body, the indices of certain elements may have changed...
Definition SoftBodySharedSettings.h:77
+
Array< uint > mLRARemap
Maps old LRA index to new LRA index.
Definition SoftBodySharedSettings.h:80
+
Array< uint > mVolumeRemap
Maps old volume constraint index to new volume constraint index.
Definition SoftBodySharedSettings.h:82
+
Array< uint > mDihedralBendRemap
Maps old dihedral bend index to new dihedral bend index.
Definition SoftBodySharedSettings.h:81
+
Array< uint > mSkinnedRemap
Maps old skinned constraint index to new skinned constraint index.
Definition SoftBodySharedSettings.h:83
+
Array< uint > mEdgeRemap
Maps old edge index to new edge index.
Definition SoftBodySharedSettings.h:79
+
A joint and its skin weight.
Definition SoftBodySharedSettings.h:228
+
SkinWeight()=default
Constructor.
+
SkinWeight(uint32 inInvBindIndex, float inWeight)
Definition SoftBodySharedSettings.h:234
+
A constraint that skins a vertex to joints and limits the distance that the simulated vertex can trav...
Definition SoftBodySharedSettings.h:242
+
void NormalizeWeights()
Normalize the weights so that they add up to 1.
Definition SoftBodySharedSettings.h:251
+
Skinned()=default
Constructor.
+
Skinned(uint32 inVertex, float inMaxDistance, float inBackStopDistance, float inBackStopRadius)
Definition SoftBodySharedSettings.h:248
+
Definition SoftBodySharedSettings.h:16
+
Array< Vertex > mVertices
The list of vertices or particles of the body.
Definition SoftBodySharedSettings.h:296
+
ELRAType
The type of long range attachment constraint to create.
Definition SoftBodySharedSettings.h:30
+
StreamUtils::ObjectToIDMap< PhysicsMaterial > MaterialToIDMap
Definition SoftBodySharedSettings.h:103
+
Array< LRA > mLRAConstraints
The list of long range attachment constraints.
Definition SoftBodySharedSettings.h:303
+
EBendType
Which type of bend constraint should be created.
Definition SoftBodySharedSettings.h:22
+
Array< Skinned > mSkinnedConstraints
The list of vertices that are constrained to a skinned vertex.
Definition SoftBodySharedSettings.h:301
+
void Optimize()
Optimize the soft body settings without results.
Definition SoftBodySharedSettings.h:90
+
Array< Face > mFaces
The list of faces of the body.
Definition SoftBodySharedSettings.h:297
+
Array< DihedralBend > mDihedralBendConstraints
The list of dihedral bend constraints of the body.
Definition SoftBodySharedSettings.h:299
+
Array< Volume > mVolumeConstraints
The list of volume constraints of the body that keep the volume of tetrahedra in the soft body consta...
Definition SoftBodySharedSettings.h:300
+
Array< Edge > mEdgeConstraints
The list of edges or springs of the body.
Definition SoftBodySharedSettings.h:298
+
Array< InvBind > mInvBindMatrices
The list of inverse bind matrices for skinning vertices.
Definition SoftBodySharedSettings.h:302
+
void AddFace(const Face &inFace)
Add a face to this soft body.
Definition SoftBodySharedSettings.h:294
+
StreamUtils::ObjectToIDMap< SoftBodySharedSettings > SharedSettingsToIDMap
Definition SoftBodySharedSettings.h:101
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
UnorderedMap< const Type *, uint32 > ObjectToIDMap
Definition StreamUtils.h:18
+
Definition SoftBodySharedSettings.h:180
+
uint32 GetMinVertexIndex() const
Return the lowest vertex index of this constraint.
Definition SoftBodySharedSettings.h:188
+
An edge keeps two vertices at a constant distance using a spring: |x1 - x2| = rest length.
Definition SoftBodySharedSettings.h:146
+
uint32 GetMinVertexIndex() const
Return the lowest vertex index of this constraint.
Definition SoftBodySharedSettings.h:154
+
A face defines the surface of the body.
Definition SoftBodySharedSettings.h:130
+
bool IsDegenerate() const
Check if this is a degenerate face (a face which points to the same vertex twice)
Definition SoftBodySharedSettings.h:138
+
Definition SoftBodySharedSettings.h:40
+ +
VertexAttributes(float inCompliance, float inShearCompliance, float inBendCompliance, ELRAType inLRAType=ELRAType::None, float inLRAMaxDistanceMultiplier=1.0f)
Definition SoftBodySharedSettings.h:43
+
A vertex is a particle, the data in this structure is only used during creation of the soft body and ...
Definition SoftBodySharedSettings.h:116
+
Volume constraint, keeps the volume of a tetrahedron constant.
Definition SoftBodySharedSettings.h:197
+
uint32 GetMinVertexIndex() const
Return the lowest vertex index of this constraint.
Definition SoftBodySharedSettings.h:205
+
+
+ + + + diff --git a/_soft_body_update_context_8h.html b/_soft_body_update_context_8h.html new file mode 100644 index 000000000..0c347c4fe --- /dev/null +++ b/_soft_body_update_context_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyUpdateContext.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyUpdateContext.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  SoftBodyUpdateContext
 Temporary data used by the update of a soft body. More...
 
+
+
+ + + + diff --git a/_soft_body_update_context_8h.js b/_soft_body_update_context_8h.js new file mode 100644 index 000000000..ffee7f8b2 --- /dev/null +++ b/_soft_body_update_context_8h.js @@ -0,0 +1,4 @@ +var _soft_body_update_context_8h = +[ + [ "SoftBodyUpdateContext", "class_soft_body_update_context.html", "class_soft_body_update_context" ] +]; \ No newline at end of file diff --git a/_soft_body_update_context_8h_source.html b/_soft_body_update_context_8h_source.html new file mode 100644 index 000000000..aa25ebc04 --- /dev/null +++ b/_soft_body_update_context_8h_source.html @@ -0,0 +1,210 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyUpdateContext.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyUpdateContext.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + +
9
+ +
11
+
12class Body;
+ + +
15
+
+ +
18{
+
19public:
+
20 static constexpr uint cVertexCollisionBatch = 64;
+
21 static constexpr uint cVertexConstraintBatch = 256;
+
22
+
23 // Input
+ + + + + + +
30 float mDeltaTime;
+ +
32
+
+
34 enum class EState
+
35 {
+ + +
38 Done
+
39 };
+
+
40
+
41 // State of the update
+ +
43 atomic<uint> mNextCollisionVertex { 0 };
+
44 atomic<uint> mNumCollisionVerticesProcessed { 0 };
+
45 atomic<uint> mNextIteration { 0 };
+
46 atomic<uint> mNextConstraintGroup { 0 };
+
47 atomic<uint> mNumConstraintGroupsProcessed { 0 };
+
48
+
49 // Output
+ + +
52};
+
+
53
+ +
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
ECanSleep
Enum that determines if an object can go to sleep.
Definition MotionProperties.h:22
+ +
Definition Body.h:35
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition SoftBodyContactListener.h:33
+
This class contains the runtime information of a soft body.
Definition SoftBodyMotionProperties.h:34
+
Temporary data used by the update of a soft body.
Definition SoftBodyUpdateContext.h:18
+
atomic< uint > mNextCollisionVertex
Next vertex to process for DetermineCollisionPlanes.
Definition SoftBodyUpdateContext.h:43
+
float mSubStepDeltaTime
Delta time for each sub step.
Definition SoftBodyUpdateContext.h:31
+
atomic< EState > mState
Current state of the update.
Definition SoftBodyUpdateContext.h:42
+
SoftBodyContactListener * mContactListener
Contact listener to fire callbacks to.
Definition SoftBodyUpdateContext.h:26
+
atomic< uint > mNumConstraintGroupsProcessed
Number of groups processed, used to determine if we can go to the next iteration.
Definition SoftBodyUpdateContext.h:47
+
atomic< uint > mNumCollisionVerticesProcessed
Number of vertices processed by DetermineCollisionPlanes, used to determine if we can start simulatin...
Definition SoftBodyUpdateContext.h:44
+
atomic< uint > mNextIteration
Next simulation iteration to process.
Definition SoftBodyUpdateContext.h:45
+
atomic< uint > mNextConstraintGroup
Next constraint group to process.
Definition SoftBodyUpdateContext.h:46
+
Vec3 mDeltaPosition
Delta position of the body in the current time step, should be applied after the update.
Definition SoftBodyUpdateContext.h:50
+
float mDeltaTime
Delta time for the current time step.
Definition SoftBodyUpdateContext.h:30
+
RMat44 mCenterOfMassTransform
Transform of the body relative to the soft body.
Definition SoftBodyUpdateContext.h:27
+
Body * mBody
Body that is being updated.
Definition SoftBodyUpdateContext.h:24
+
SoftBodyMotionProperties * mMotionProperties
Motion properties of that body.
Definition SoftBodyUpdateContext.h:25
+
Vec3 mGravity
Gravity vector in local space of the soft body.
Definition SoftBodyUpdateContext.h:28
+
Vec3 mDisplacementDueToGravity
Displacement of the center of mass due to gravity in the current time step.
Definition SoftBodyUpdateContext.h:29
+
static constexpr uint cVertexConstraintBatch
Number of vertices to group for processing batches of constraints in ApplyEdgeConstraints.
Definition SoftBodyUpdateContext.h:21
+
EState
Describes progress in the current update.
Definition SoftBodyUpdateContext.h:35
+
@ DetermineCollisionPlanes
Determine collision planes for vertices in parallel.
+
@ ApplyConstraints
Apply constraints in parallel.
+
@ Done
Update is finished.
+
static constexpr uint cVertexCollisionBatch
Number of vertices to process in a batch in DetermineCollisionPlanes.
Definition SoftBodyUpdateContext.h:20
+
ECanSleep mCanSleep
Can the body sleep? Should be applied after the update.
Definition SoftBodyUpdateContext.h:51
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_soft_body_vertex_8h.html b/_soft_body_vertex_8h.html new file mode 100644 index 000000000..21018c8ce --- /dev/null +++ b/_soft_body_vertex_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyVertex.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyVertex.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  SoftBodyVertex
 
+
+
+ + + + diff --git a/_soft_body_vertex_8h.js b/_soft_body_vertex_8h.js new file mode 100644 index 000000000..cb2cd5082 --- /dev/null +++ b/_soft_body_vertex_8h.js @@ -0,0 +1,4 @@ +var _soft_body_vertex_8h = +[ + [ "SoftBodyVertex", "class_soft_body_vertex.html", "class_soft_body_vertex" ] +]; \ No newline at end of file diff --git a/_soft_body_vertex_8h_source.html b/_soft_body_vertex_8h_source.html new file mode 100644 index 000000000..bf32984c0 --- /dev/null +++ b/_soft_body_vertex_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody/SoftBodyVertex.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyVertex.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+ +
27
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
Definition SoftBodyVertex.h:16
+
Vec3 mPreviousPosition
Position at the previous time step.
Definition SoftBodyVertex.h:18
+
float mInvMass
Inverse mass (1 / mass)
Definition SoftBodyVertex.h:25
+
Vec3 mVelocity
Velocity, relative to the center of mass of the soft body.
Definition SoftBodyVertex.h:20
+
bool mHasContact
True if the vertex has collided with anything in the last update.
Definition SoftBodyVertex.h:23
+
float mLargestPenetration
Used while finding the collision plane, stores the largest penetration found so far.
Definition SoftBodyVertex.h:24
+
int mCollidingShapeIndex
Index in the colliding shapes list of the body we may collide with.
Definition SoftBodyVertex.h:22
+
Plane mCollisionPlane
Nearest collision plane, relative to the center of mass of the soft body.
Definition SoftBodyVertex.h:21
+
Vec3 mPosition
Position, relative to the center of mass of the soft body.
Definition SoftBodyVertex.h:19
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_sort_reverse_and_store_8h.html b/_sort_reverse_and_store_8h.html new file mode 100644 index 000000000..018e576d1 --- /dev/null +++ b/_sort_reverse_and_store_8h.html @@ -0,0 +1,213 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/SortReverseAndStore.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SortReverseAndStore.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_INLINE int SortReverseAndStore (Vec4Arg inValues, float inMaxValue, UVec4 &ioIdentifiers, float *outValues)
 
JPH_INLINE int CountAndSortTrues (UVec4Arg inValue, UVec4 &ioIdentifiers)
 
+

Function Documentation

+ +

◆ CountAndSortTrues()

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE int CountAndSortTrues (UVec4Arg inValue,
UVec4ioIdentifiers 
)
+
+

Shift the elements so that the identifiers that correspond with the trues in inValue come first

Parameters
+ + + +
inValueValues to test for true or false
ioIdentifiersthe identifiers that are shifted, on return they are shifted
+
+
+
Returns
The number of trues
+ +
+
+ +

◆ SortReverseAndStore()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_INLINE int SortReverseAndStore (Vec4Arg inValues,
float inMaxValue,
UVec4ioIdentifiers,
float * outValues 
)
+
+

This function will sort values from high to low and only keep the ones that are less than inMaxValue

Parameters
+ + + + + +
inValuesValues to be sorted
inMaxValueValues need to be less than this to keep them
ioIdentifiers4 identifiers that will be sorted in the same way as the values
outValuesThe values are stored here from high to low
+
+
+
Returns
The number of values that were kept
+ +
+
+
+
+ + + + diff --git a/_sort_reverse_and_store_8h.js b/_sort_reverse_and_store_8h.js new file mode 100644 index 000000000..343f9d085 --- /dev/null +++ b/_sort_reverse_and_store_8h.js @@ -0,0 +1,5 @@ +var _sort_reverse_and_store_8h = +[ + [ "CountAndSortTrues", "_sort_reverse_and_store_8h.html#ac0cd431ab99bf4ad6169c0583c65675d", null ], + [ "SortReverseAndStore", "_sort_reverse_and_store_8h.html#ad8b5bed860245d59f9b986771e3a1a13", null ] +]; \ No newline at end of file diff --git a/_sort_reverse_and_store_8h_source.html b/_sort_reverse_and_store_8h_source.html new file mode 100644 index 000000000..eb7582ae3 --- /dev/null +++ b/_sort_reverse_and_store_8h_source.html @@ -0,0 +1,177 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/SortReverseAndStore.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SortReverseAndStore.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
+
+
15JPH_INLINE int SortReverseAndStore(Vec4Arg inValues, float inMaxValue, UVec4 &ioIdentifiers, float *outValues)
+
16{
+
17 // Sort so that highest values are first (we want to first process closer hits and we process stack top to bottom)
+
18 Vec4 values = inValues;
+
19 Vec4::sSort4Reverse(values, ioIdentifiers);
+
20
+
21 // Count how many results are less than the max value
+
22 UVec4 closer = Vec4::sLess(values, Vec4::sReplicate(inMaxValue));
+
23 int num_results = closer.CountTrues();
+
24
+
25 // Shift the values so that only the ones that are less than max are kept
+
26 values = values.ReinterpretAsInt().ShiftComponents4Minus(num_results).ReinterpretAsFloat();
+
27 ioIdentifiers = ioIdentifiers.ShiftComponents4Minus(num_results);
+
28
+
29 // Store the values
+
30 values.StoreFloat4(reinterpret_cast<Float4 *>(outValues));
+
31
+
32 return num_results;
+
33}
+
+
34
+
+
39JPH_INLINE int CountAndSortTrues(UVec4Arg inValue, UVec4 &ioIdentifiers)
+
40{
+
41 // Sort the hits
+
42 ioIdentifiers = UVec4::sSort4True(inValue, ioIdentifiers);
+
43
+
44 // Return the amount of hits
+
45 return inValue.CountTrues();
+
46}
+
+
47
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_INLINE int CountAndSortTrues(UVec4Arg inValue, UVec4 &ioIdentifiers)
Definition SortReverseAndStore.h:39
+
JPH_NAMESPACE_BEGIN JPH_INLINE int SortReverseAndStore(Vec4Arg inValues, float inMaxValue, UVec4 &ioIdentifiers, float *outValues)
Definition SortReverseAndStore.h:15
+
Class that holds 4 float values. Convert to Vec4 to perform calculations.
Definition Float4.h:11
+
Definition UVec4.h:12
+
JPH_INLINE int CountTrues() const
Count the number of components that are true (true is when highest bit of component is set)
Definition UVec4.inl:372
+
static JPH_INLINE UVec4 sSort4True(UVec4Arg inValue, UVec4Arg inIndex)
Definition UVec4.inl:227
+
JPH_INLINE UVec4 ShiftComponents4Minus(int inCount) const
Shift vector components by 4 - Count floats to the left, so if Count = 1 the resulting vector is (W,...
Definition UVec4.inl:552
+
JPH_INLINE Vec4 ReinterpretAsFloat() const
Reinterpret UVec4 as a Vec4 (doesn't change the bits)
Definition UVec4.inl:337
+
Definition Vec4.h:14
+
static JPH_INLINE UVec4 sLess(Vec4Arg inV1, Vec4Arg inV2)
Less than (component wise)
Definition Vec4.inl:180
+
static JPH_INLINE void sSort4Reverse(Vec4 &ioValue, UVec4 &ioIndex)
Definition Vec4.inl:325
+
JPH_INLINE UVec4 ReinterpretAsInt() const
Reinterpret Vec4 as a UVec4 (doesn't change the bits)
Definition Vec4.inl:738
+
static JPH_INLINE Vec4 sReplicate(float inV)
Replicate inV across all components.
Definition Vec4.inl:74
+
JPH_INLINE void StoreFloat4(Float4 *outV) const
Store 4 floats to memory.
Definition Vec4.inl:715
+
+
+ + + + diff --git a/_sphere_8h.html b/_sphere_8h.html new file mode 100644 index 000000000..328a2cc31 --- /dev/null +++ b/_sphere_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/Sphere.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Sphere.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  Sphere
 
+
+
+ + + + diff --git a/_sphere_8h.js b/_sphere_8h.js new file mode 100644 index 000000000..030518f30 --- /dev/null +++ b/_sphere_8h.js @@ -0,0 +1,4 @@ +var _sphere_8h = +[ + [ "Sphere", "class_sphere.html", "class_sphere" ] +]; \ No newline at end of file diff --git a/_sphere_8h_source.html b/_sphere_8h_source.html new file mode 100644 index 000000000..a554f9877 --- /dev/null +++ b/_sphere_8h_source.html @@ -0,0 +1,219 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/Sphere.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Sphere.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
+
+
11class [[nodiscard]] Sphere
+
12{
+
13public:
+ +
15
+
17 inline Sphere() = default;
+
18 inline Sphere(const Float3 &inCenter, float inRadius) : mCenter(inCenter), mRadius(inRadius) { }
+
19 inline Sphere(Vec3Arg inCenter, float inRadius) : mRadius(inRadius) { inCenter.StoreFloat3(&mCenter); }
+
20
+
+
22 inline Vec3 GetSupport(Vec3Arg inDirection) const
+
23 {
+
24 float length = inDirection.Length();
+
25 return length > 0.0f ? Vec3::sLoadFloat3Unsafe(mCenter) + (mRadius/ length) * inDirection : Vec3::sLoadFloat3Unsafe(mCenter);
+
26 }
+
+
27
+
28 // Properties
+
29 inline Vec3 GetCenter() const { return Vec3::sLoadFloat3Unsafe(mCenter); }
+
30 inline float GetRadius() const { return mRadius; }
+
31
+
+
33 inline bool Overlaps(const Sphere &inB) const
+
34 {
+
35 return (Vec3::sLoadFloat3Unsafe(mCenter) - Vec3::sLoadFloat3Unsafe(inB.mCenter)).LengthSq() <= Square(mRadius + inB.mRadius);
+
36 }
+
+
37
+
+
39 inline bool Overlaps(const AABox &inOther) const
+
40 {
+
41 return inOther.GetSqDistanceTo(GetCenter()) <= Square(mRadius);
+
42 }
+
+
43
+
+
45 inline void EncapsulatePoint(Vec3Arg inPoint)
+
46 {
+
47 // Calculate distance between point and center
+
48 Vec3 center = GetCenter();
+
49 Vec3 d_vec = inPoint - center;
+
50 float d_sq = d_vec.LengthSq();
+
51 if (d_sq > Square(mRadius))
+
52 {
+
53 // It is further away than radius, we need to widen the sphere
+
54 // The diameter of the new sphere is radius + d, so the new radius is half of that
+
55 float d = sqrt(d_sq);
+
56 float radius = 0.5f * (mRadius + d);
+
57
+
58 // The center needs to shift by new radius - old radius in the direction of d
+
59 center += (radius - mRadius) / d * d_vec;
+
60
+
61 // Store new sphere
+
62 center.StoreFloat3(&mCenter);
+
63 mRadius = radius;
+
64 }
+
65 }
+
+
66
+
67private:
+
68 Float3 mCenter;
+
69 float mRadius;
+
70};
+
+
71
+ + +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
Axis aligned box.
Definition AABox.h:16
+
float GetSqDistanceTo(Vec3Arg inPoint) const
Get the squared distance between inPoint and this box (will be 0 if in Point is inside the box)
Definition AABox.h:294
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
Definition Sphere.h:12
+
bool Overlaps(const AABox &inOther) const
Check if this sphere overlaps with a box.
Definition Sphere.h:39
+
float GetRadius() const
Definition Sphere.h:30
+
JPH_OVERRIDE_NEW_DELETE Sphere()=default
Constructor.
+
Vec3 GetSupport(Vec3Arg inDirection) const
Calculate the support vector for this convex shape.
Definition Sphere.h:22
+
Vec3 GetCenter() const
Definition Sphere.h:29
+
bool Overlaps(const Sphere &inB) const
Test if two spheres overlap.
Definition Sphere.h:33
+
Sphere(Vec3Arg inCenter, float inRadius)
Definition Sphere.h:19
+
Sphere(const Float3 &inCenter, float inRadius)
Definition Sphere.h:18
+
void EncapsulatePoint(Vec3Arg inPoint)
Create the minimal sphere that encapsulates this sphere and inPoint.
Definition Sphere.h:45
+
Definition Vec3.h:17
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec3.inl:677
+
JPH_INLINE void StoreFloat3(Float3 *outV) const
Store 3 floats to memory.
Definition Vec3.inl:765
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
+
+ + + + diff --git a/_sphere_shape_8cpp.html b/_sphere_shape_8cpp.html new file mode 100644 index 000000000..e6388f8e7 --- /dev/null +++ b/_sphere_shape_8cpp.html @@ -0,0 +1,164 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/SphereShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SphereShape.cpp File Reference
+
+
+ + + + + + +

+Classes

class  SphereShape::SphereNoConvex
 
class  SphereShape::SphereWithConvex
 
+ + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (SphereShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (SphereShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_sphere_shape_8cpp.js b/_sphere_shape_8cpp.js new file mode 100644 index 000000000..5dde89bf4 --- /dev/null +++ b/_sphere_shape_8cpp.js @@ -0,0 +1,6 @@ +var _sphere_shape_8cpp = +[ + [ "SphereShape::SphereNoConvex", "class_sphere_shape_1_1_sphere_no_convex.html", "class_sphere_shape_1_1_sphere_no_convex" ], + [ "SphereShape::SphereWithConvex", "class_sphere_shape_1_1_sphere_with_convex.html", "class_sphere_shape_1_1_sphere_with_convex" ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_sphere_shape_8cpp.html#adc7645fc4173fbca96e3d74b6beca4e5", null ] +]; \ No newline at end of file diff --git a/_sphere_shape_8h.html b/_sphere_shape_8h.html new file mode 100644 index 000000000..d49c4af57 --- /dev/null +++ b/_sphere_shape_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/SphereShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SphereShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  SphereShapeSettings
 Class that constructs a SphereShape. More...
 
class  SphereShape
 
+
+
+ + + + diff --git a/_sphere_shape_8h.js b/_sphere_shape_8h.js new file mode 100644 index 000000000..0da1c1eb1 --- /dev/null +++ b/_sphere_shape_8h.js @@ -0,0 +1,5 @@ +var _sphere_shape_8h = +[ + [ "SphereShapeSettings", "class_sphere_shape_settings.html", "class_sphere_shape_settings" ], + [ "SphereShape", "class_sphere_shape.html", "class_sphere_shape" ] +]; \ No newline at end of file diff --git a/_sphere_shape_8h_source.html b/_sphere_shape_8h_source.html new file mode 100644 index 000000000..ad38101a6 --- /dev/null +++ b/_sphere_shape_8h_source.html @@ -0,0 +1,288 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/SphereShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SphereShape.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{
+
14public:
+ +
16
+
17
+ +
19
+
21 SphereShapeSettings(float inRadius, const PhysicsMaterial *inMaterial = nullptr) : ConvexShapeSettings(inMaterial), mRadius(inRadius) { }
+
22
+
23 // See: ShapeSettings
+
24 virtual ShapeResult Create() const override;
+
25
+
26 float mRadius = 0.0f;
+
27};
+
+
28
+
+ +
32{
+
33public:
+ +
35
+ +
38 SphereShape(const SphereShapeSettings &inSettings, ShapeResult &outResult);
+
39
+
41 SphereShape(float inRadius, const PhysicsMaterial *inMaterial = nullptr) : ConvexShape(EShapeSubType::Sphere, inMaterial), mRadius(inRadius) { JPH_ASSERT(inRadius > 0.0f); }
+
42
+
44 float GetRadius() const { return mRadius; }
+
45
+
46 // See Shape::GetLocalBounds
+
47 virtual AABox GetLocalBounds() const override;
+
48
+
49 // See Shape::GetWorldSpaceBounds
+
50 virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+ +
52
+
53 // See Shape::GetInnerRadius
+
54 virtual float GetInnerRadius() const override { return mRadius; }
+
55
+
56 // See Shape::GetMassProperties
+
57 virtual MassProperties GetMassProperties() const override;
+
58
+
59 // See Shape::GetSurfaceNormal
+
60 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
61
+
62 // See Shape::GetSupportingFace
+
63 virtual void GetSupportingFace([[maybe_unused]] const SubShapeID &inSubShapeID, [[maybe_unused]] Vec3Arg inDirection, [[maybe_unused]] Vec3Arg inScale, [[maybe_unused]] Mat44Arg inCenterOfMassTransform, [[maybe_unused]] SupportingFace &outVertices) const override { /* Hit is always a single point, no point in returning anything */ }
+
64
+
65 // See ConvexShape::GetSupportFunction
+
66 virtual const Support * GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override;
+
67
+
68 // See Shape::GetSubmergedVolume
+
69 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override;
+
70
+
71#ifdef JPH_DEBUG_RENDERER
+
72 // See Shape::Draw
+
73 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
74#endif // JPH_DEBUG_RENDERER
+
75
+
76 // See Shape::CastRay
+
77 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
78 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
79
+
80 // See: Shape::CollidePoint
+
81 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
82
+
83 // See: Shape::CollideSoftBodyVertices
+
84 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
85
+
86 // See Shape::GetTrianglesStart
+
87 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override;
+
88
+
89 // See Shape::GetTrianglesNext
+
90 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override;
+
91
+
92 // See Shape
+
93 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
94
+
95 // See Shape::GetStats
+
96 virtual Stats GetStats() const override { return Stats(sizeof(*this), 0); }
+
97
+
98 // See Shape::GetVolume
+
99 virtual float GetVolume() const override { return 4.0f / 3.0f * JPH_PI * Cubed(mRadius); }
+
100
+
101 // See Shape::IsValidScale
+
102 virtual bool IsValidScale(Vec3Arg inScale) const override;
+
103
+
104 // See Shape::MakeScaleValid
+
105 virtual Vec3 MakeScaleValid(Vec3Arg inScale) const override;
+
106
+
107 // Register shape functions with the registry
+
108 static void sRegister();
+
109
+
110protected:
+
111 // See: Shape::RestoreBinaryState
+
112 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
113
+
114private:
+
115 // Get the radius of this sphere scaled by inScale
+
116 inline float GetScaledRadius(Vec3Arg inScale) const;
+
117
+
118 // Classes for GetSupportFunction
+
119 class SphereNoConvex;
+
120 class SphereWithConvex;
+
121
+
122 float mRadius = 0.0f;
+
123};
+
+
124
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_IF_DEBUG_RENDERER(...)
Definition Core.h:536
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Cubed(T inV)
Returns .
Definition Math.h:59
+
#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:76
+
Axis aligned box.
Definition AABox.h:16
+
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
+
Class that constructs a ConvexShape (abstract)
Definition ConvexShape.h:18
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
Definition Quat.h:33
+
Specialization of cast result against a shape.
Definition CastResult.h:30
+
Settings to be passed with a ray cast.
Definition RayCast.h:70
+
Filter class.
Definition ShapeFilter.h:17
+
virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
Definition Shape.h:220
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
Definition SoftBodyVertex.h:16
+
Definition Sphere.h:12
+
Definition SphereShape.h:32
+
float GetRadius() const
Radius of the sphere.
Definition SphereShape.h:44
+
SphereShape(float inRadius, const PhysicsMaterial *inMaterial=nullptr)
Create a sphere with radius inRadius.
Definition SphereShape.h:41
+
virtual float GetVolume() const override
Definition SphereShape.h:99
+
JPH_OVERRIDE_NEW_DELETE SphereShape()
Constructor.
Definition SphereShape.h:37
+
virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
Definition SphereShape.h:63
+
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition SphereShape.h:96
+
virtual float GetInnerRadius() const override
Definition SphereShape.h:54
+
Class that constructs a SphereShape.
Definition SphereShape.h:13
+ +
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 Vec3.h:17
+
Definition RayCast.h:47
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
+
+ + + + diff --git a/_spring_part_8h.html b/_spring_part_8h.html new file mode 100644 index 000000000..52c3eba03 --- /dev/null +++ b/_spring_part_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/SpringPart.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SpringPart.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  SpringPart
 Class used in other constraint parts to calculate the required bias factor in the lagrange multiplier for creating springs. More...
 
+
+
+ + + + diff --git a/_spring_part_8h.js b/_spring_part_8h.js new file mode 100644 index 000000000..6ad310195 --- /dev/null +++ b/_spring_part_8h.js @@ -0,0 +1,4 @@ +var _spring_part_8h = +[ + [ "SpringPart", "class_spring_part.html", "class_spring_part" ] +]; \ No newline at end of file diff --git a/_spring_part_8h_source.html b/_spring_part_8h_source.html new file mode 100644 index 000000000..704193e63 --- /dev/null +++ b/_spring_part_8h_source.html @@ -0,0 +1,286 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/SpringPart.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SpringPart.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#ifndef JPH_PLATFORM_DOXYGEN // Somehow Doxygen gets confused and thinks the parameters to CalculateSpringProperties belong to this macro
+
9JPH_MSVC_SUPPRESS_WARNING(4723) // potential divide by 0 - caused by line: outEffectiveMass = 1.0f / inInvEffectiveMass, note that JPH_NAMESPACE_BEGIN already pushes the warning state
+
10#endif // !JPH_PLATFORM_DOXYGEN
+
11
+
+ +
14{
+
15private:
+
16 JPH_INLINE void CalculateSpringPropertiesHelper(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inStiffness, float inDamping, float &outEffectiveMass)
+
17 {
+
18 // Soft constraints as per: Soft Constraints: Reinventing The Spring - Erin Catto - GDC 2011
+
19
+
20 // Note that the calculation of beta and gamma below are based on the solution of an implicit Euler integration scheme
+
21 // This scheme is unconditionally stable but has built in damping, so even when you set the damping ratio to 0 there will still
+
22 // be damping. See page 16 and 32.
+
23
+
24 // Calculate softness (gamma in the slides)
+
25 // See page 34 and note that the gamma needs to be divided by delta time since we're working with impulses rather than forces:
+
26 // softness = 1 / (dt * (c + dt * k))
+
27 // Note that the spring stiffness is k and the spring damping is c
+
28 mSoftness = 1.0f / (inDeltaTime * (inDamping + inDeltaTime * inStiffness));
+
29
+
30 // Calculate bias factor (baumgarte stabilization):
+
31 // beta = dt * k / (c + dt * k) = dt * k^2 * softness
+
32 // b = beta / dt * C = dt * k * softness * C
+
33 mBias = inBias + inDeltaTime * inStiffness * mSoftness * inC;
+
34
+
35 // Update the effective mass, see post by Erin Catto: http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=4&t=1354
+
36 //
+
37 // Newton's Law:
+
38 // M * (v2 - v1) = J^T * lambda
+
39 //
+
40 // Velocity constraint with softness and Baumgarte:
+
41 // J * v2 + softness * lambda + b = 0
+
42 //
+
43 // where b = beta * C / dt
+
44 //
+
45 // We know everything except v2 and lambda.
+
46 //
+
47 // First solve Newton's law for v2 in terms of lambda:
+
48 //
+
49 // v2 = v1 + M^-1 * J^T * lambda
+
50 //
+
51 // Substitute this expression into the velocity constraint:
+
52 //
+
53 // J * (v1 + M^-1 * J^T * lambda) + softness * lambda + b = 0
+
54 //
+
55 // Now collect coefficients of lambda:
+
56 //
+
57 // (J * M^-1 * J^T + softness) * lambda = - J * v1 - b
+
58 //
+
59 // Now we define:
+
60 //
+
61 // K = J * M^-1 * J^T + softness
+
62 //
+
63 // So our new effective mass is K^-1
+
64 outEffectiveMass = 1.0f / (inInvEffectiveMass + mSoftness);
+
65 }
+
66
+
67public:
+
+
71 inline void CalculateSpringPropertiesWithBias(float inBias)
+
72 {
+
73 mSoftness = 0.0f;
+
74 mBias = inBias;
+
75 }
+
+
76
+
+
86 inline void CalculateSpringPropertiesWithFrequencyAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inFrequency, float inDamping, float &outEffectiveMass)
+
87 {
+
88 outEffectiveMass = 1.0f / inInvEffectiveMass;
+
89
+
90 if (inFrequency > 0.0f)
+
91 {
+
92 // Calculate angular frequency
+
93 float omega = 2.0f * JPH_PI * inFrequency;
+
94
+
95 // Calculate spring stiffness k and damping constant c (page 45)
+
96 float k = outEffectiveMass * Square(omega);
+
97 float c = 2.0f * outEffectiveMass * inDamping * omega;
+
98
+
99 CalculateSpringPropertiesHelper(inDeltaTime, inInvEffectiveMass, inBias, inC, k, c, outEffectiveMass);
+
100 }
+
101 else
+
102 {
+ +
104 }
+
105 }
+
+
106
+
+
116 inline void CalculateSpringPropertiesWithStiffnessAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inStiffness, float inDamping, float &outEffectiveMass)
+
117 {
+
118 if (inStiffness > 0.0f)
+
119 {
+
120 CalculateSpringPropertiesHelper(inDeltaTime, inInvEffectiveMass, inBias, inC, inStiffness, inDamping, outEffectiveMass);
+
121 }
+
122 else
+
123 {
+
124 outEffectiveMass = 1.0f / inInvEffectiveMass;
+
125
+ +
127 }
+
128 }
+
+
129
+
+
131 inline bool IsActive() const
+
132 {
+
133 return mSoftness != 0.0f;
+
134 }
+
+
135
+
+
137 inline float GetBias(float inTotalLambda) const
+
138 {
+
139 // Remainder of post by Erin Catto: http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=4&t=1354
+
140 //
+
141 // Each iteration we are not computing the whole impulse, we are computing an increment to the impulse and we are updating the velocity.
+
142 // Also, as we solve each constraint we get a perfect v2, but then some other constraint will come along and mess it up.
+
143 // So we want to patch up the constraint while acknowledging the accumulated impulse and the damaged velocity.
+
144 // To help with that we use P for the accumulated impulse and lambda as the update. Mathematically we have:
+
145 //
+
146 // M * (v2new - v2damaged) = J^T * lambda
+
147 // J * v2new + softness * (total_lambda + lambda) + b = 0
+
148 //
+
149 // If we solve this we get:
+
150 //
+
151 // v2new = v2damaged + M^-1 * J^T * lambda
+
152 // J * (v2damaged + M^-1 * J^T * lambda) + softness * total_lambda + softness * lambda + b = 0
+
153 //
+
154 // (J * M^-1 * J^T + softness) * lambda = -(J * v2damaged + softness * total_lambda + b)
+
155 //
+
156 // So our lagrange multiplier becomes:
+
157 //
+
158 // lambda = -K^-1 (J v + softness * total_lambda + b)
+
159 //
+
160 // So we return the bias: softness * total_lambda + b
+
161 return mSoftness * inTotalLambda + mBias;
+
162 }
+
+
163
+
164private:
+
165 float mBias = 0.0f;
+
166 float mSoftness = 0.0f;
+
167};
+
+
168
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_MSVC_SUPPRESS_WARNING(w)
Definition Core.h:286
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
Class used in other constraint parts to calculate the required bias factor in the lagrange multiplier...
Definition SpringPart.h:14
+
void CalculateSpringPropertiesWithFrequencyAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inFrequency, float inDamping, float &outEffectiveMass)
Definition SpringPart.h:86
+
void CalculateSpringPropertiesWithStiffnessAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inStiffness, float inDamping, float &outEffectiveMass)
Definition SpringPart.h:116
+
float GetBias(float inTotalLambda) const
Get total bias b, including supplied bias and bias for spring: lambda = J v + b.
Definition SpringPart.h:137
+
void CalculateSpringPropertiesWithBias(float inBias)
Definition SpringPart.h:71
+
bool IsActive() const
Returns if this spring is active.
Definition SpringPart.h:131
+
+
+ + + + diff --git a/_spring_settings_8cpp.html b/_spring_settings_8cpp.html new file mode 100644 index 000000000..53c6d66a4 --- /dev/null +++ b/_spring_settings_8cpp.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/SpringSettings.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SpringSettings.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SpringSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (SpringSettings )
+
+ +
+
+
+
+ + + + diff --git a/_spring_settings_8cpp.js b/_spring_settings_8cpp.js new file mode 100644 index 000000000..ae5509d7d --- /dev/null +++ b/_spring_settings_8cpp.js @@ -0,0 +1,4 @@ +var _spring_settings_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_spring_settings_8cpp.html#a833aa2302db474872ff674d47d4504df", null ] +]; \ No newline at end of file diff --git a/_spring_settings_8h.html b/_spring_settings_8h.html new file mode 100644 index 000000000..0b932fce2 --- /dev/null +++ b/_spring_settings_8h.html @@ -0,0 +1,166 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/SpringSettings.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SpringSettings.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  SpringSettings
 Settings for a linear or angular spring. More...
 
+ + + + +

+Enumerations

enum class  ESpringMode : uint8 { FrequencyAndDamping +, StiffnessAndDamping + }
 Enum used by constraints to specify how the spring is defined. More...
 
+

Enumeration Type Documentation

+ +

◆ ESpringMode

+ +
+
+ + + + + +
+ + + + +
enum class ESpringMode : uint8
+
+strong
+
+ +

Enum used by constraints to specify how the spring is defined.

+ + + +
Enumerator
FrequencyAndDamping 

Frequency and damping are specified.

+
StiffnessAndDamping 

Stiffness and damping are specified.

+
+ +
+
+
+
+ + + + diff --git a/_spring_settings_8h.js b/_spring_settings_8h.js new file mode 100644 index 000000000..92b88f908 --- /dev/null +++ b/_spring_settings_8h.js @@ -0,0 +1,8 @@ +var _spring_settings_8h = +[ + [ "SpringSettings", "class_spring_settings.html", "class_spring_settings" ], + [ "ESpringMode", "_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512d", [ + [ "FrequencyAndDamping", "_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512da52630869b4ed10261d514c91e9c9c018", null ], + [ "StiffnessAndDamping", "_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512da80c2dd5c28197f2baebff76bf0299d47", null ] + ] ] +]; \ No newline at end of file diff --git a/_spring_settings_8h_source.html b/_spring_settings_8h_source.html new file mode 100644 index 000000000..8339178ec --- /dev/null +++ b/_spring_settings_8h_source.html @@ -0,0 +1,186 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/SpringSettings.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SpringSettings.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ +
8
+ +
10
+
11class StreamIn;
+
12class StreamOut;
+
13
+
+
15enum class ESpringMode : uint8
+
16{
+ + +
19};
+
+
20
+
+ +
23{
+
24public:
+ +
26
+
27
+
28 SpringSettings() = default;
+
29 SpringSettings(const SpringSettings &) = default;
+
30 SpringSettings & operator = (const SpringSettings &) = default;
+
31 SpringSettings(ESpringMode inMode, float inFrequencyOrStiffness, float inDamping) : mMode(inMode), mFrequency(inFrequencyOrStiffness), mDamping(inDamping) { }
+
32
+
34 void SaveBinaryState(StreamOut &inStream) const;
+
35
+
37 void RestoreBinaryState(StreamIn &inStream);
+
38
+
40 inline bool HasStiffness() const { return mFrequency > 0.0f; }
+
41
+ +
45
+
46 union
+
47 {
+
51 float mFrequency = 0.0f;
+
52
+ +
61 };
+
62
+
67 float mDamping = 0.0f;
+
68};
+
+
69
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+
ESpringMode
Enum used by constraints to specify how the spring is defined.
Definition SpringSettings.h:16
+
@ FrequencyAndDamping
Frequency and damping are specified.
+
@ StiffnessAndDamping
Stiffness and damping are specified.
+
Settings for a linear or angular spring.
Definition SpringSettings.h:23
+
float mStiffness
Definition SpringSettings.h:60
+
bool HasStiffness() const
Check if the spring has a valid frequency / stiffness, if not the spring will be hard.
Definition SpringSettings.h:40
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
+
+ + + + diff --git a/_state_recorder_8h.html b/_state_recorder_8h.html new file mode 100644 index 000000000..79997ebde --- /dev/null +++ b/_state_recorder_8h.html @@ -0,0 +1,184 @@ + + + + + + + +Jolt Physics: Jolt/Physics/StateRecorder.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StateRecorder.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  StateRecorderFilter
 User callbacks that allow determining which parts of the simulation should be saved by a StateRecorder. More...
 
class  StateRecorder
 
+ + + + +

+Enumerations

enum class  EStateRecorderState : uint8 {
+  None = 0 +, Global = 1 +, Bodies = 2 +, Contacts = 4 +,
+  Constraints = 8 +, All = Global | Bodies | Contacts | Constraints +
+ }
 A bit field that determines which aspects of the simulation to save. More...
 
+

Enumeration Type Documentation

+ +

◆ EStateRecorderState

+ +
+
+ + + + + +
+ + + + +
enum class EStateRecorderState : uint8
+
+strong
+
+ +

A bit field that determines which aspects of the simulation to save.

+ + + + + + + +
Enumerator
None 

Save nothing.

+
Global 

Save global physics system state (delta time, gravity, etc.)

+
Bodies 

Save the state of bodies.

+
Contacts 

Save the state of contacts.

+
Constraints 

Save the state of constraints.

+
All 

Save all state.

+
+ +
+
+
+
+ + + + diff --git a/_state_recorder_8h.js b/_state_recorder_8h.js new file mode 100644 index 000000000..705905a7b --- /dev/null +++ b/_state_recorder_8h.js @@ -0,0 +1,13 @@ +var _state_recorder_8h = +[ + [ "StateRecorderFilter", "class_state_recorder_filter.html", "class_state_recorder_filter" ], + [ "StateRecorder", "class_state_recorder.html", "class_state_recorder" ], + [ "EStateRecorderState", "_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4", [ + [ "None", "_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4a6adf97f83acf6453d4a6a4b1070f3754", null ], + [ "Global", "_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4a4cc6684df7b4a92b1dec6fce3264fac8", null ], + [ "Bodies", "_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4a2510bc0dd63bb7e0108708a98837f19d", null ], + [ "Contacts", "_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4a9aa698f602b1e5694855cee73a683488", null ], + [ "Constraints", "_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4aa5d083fbfc0611e061663c6b1a8ba698", null ], + [ "All", "_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4ab1c94ca2fbc3e78fc30069c8d0f01680", null ] + ] ] +]; \ No newline at end of file diff --git a/_state_recorder_8h_source.html b/_state_recorder_8h_source.html new file mode 100644 index 000000000..0107600d3 --- /dev/null +++ b/_state_recorder_8h_source.html @@ -0,0 +1,204 @@ + + + + + + + +Jolt Physics: Jolt/Physics/StateRecorder.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StateRecorder.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
+ + +
9
+ +
11
+
12class Body;
+
13class Constraint;
+
14class BodyID;
+
15
+
+ +
18{
+
19 None = 0,
+
20 Global = 1,
+
21 Bodies = 2,
+
22 Contacts = 4,
+
23 Constraints = 8,
+ +
25};
+
+
26
+
+ +
29{
+
30public:
+
32 virtual ~StateRecorderFilter() = default;
+
33
+
35 virtual bool ShouldSaveBody([[maybe_unused]] const Body &inBody) const { return true; }
+
36
+
38 virtual bool ShouldSaveConstraint([[maybe_unused]] const Constraint &inConstraint) const { return true; }
+
39
+
41 virtual bool ShouldSaveContact([[maybe_unused]] const BodyID &inBody1, [[maybe_unused]] const BodyID &inBody2) const { return true; }
+
42};
+
+
43
+
+ +
48{
+
49public:
+
51 StateRecorder() = default;
+
52 StateRecorder(const StateRecorder &inRHS) : mIsValidating(inRHS.mIsValidating) { }
+
53
+
59 void SetValidating(bool inValidating) { mIsValidating = inValidating; }
+
60 bool IsValidating() const { return mIsValidating; }
+
61
+
62private:
+
63 bool mIsValidating = false;
+
64};
+
+
65
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
EStateRecorderState
A bit field that determines which aspects of the simulation to save.
Definition StateRecorder.h:18
+
@ Bodies
Save the state of bodies.
+
@ Global
Save global physics system state (delta time, gravity, etc.)
+
@ None
Save nothing.
+
@ Contacts
Save the state of contacts.
+
@ All
Save all state.
+ + + +
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:103
+
User callbacks that allow determining which parts of the simulation should be saved by a StateRecorde...
Definition StateRecorder.h:29
+
virtual bool ShouldSaveConstraint(const Constraint &inConstraint) const
If the state of a specific constraint should be saved.
Definition StateRecorder.h:38
+
virtual bool ShouldSaveContact(const BodyID &inBody1, const BodyID &inBody2) const
If the state of a specific contact should be saved.
Definition StateRecorder.h:41
+
virtual ~StateRecorderFilter()=default
Destructor.
+
virtual bool ShouldSaveBody(const Body &inBody) const
If the state of a specific body should be saved.
Definition StateRecorder.h:35
+
Definition StateRecorder.h:48
+
bool IsValidating() const
Definition StateRecorder.h:60
+
StateRecorder(const StateRecorder &inRHS)
Definition StateRecorder.h:52
+
void SetValidating(bool inValidating)
Definition StateRecorder.h:59
+
StateRecorder()=default
Constructor.
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
+
+ + + + diff --git a/_state_recorder_impl_8cpp.html b/_state_recorder_impl_8cpp.html new file mode 100644 index 000000000..367777c8f --- /dev/null +++ b/_state_recorder_impl_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Physics/StateRecorderImpl.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StateRecorderImpl.cpp File Reference
+
+
+
+
+ + + + diff --git a/_state_recorder_impl_8h.html b/_state_recorder_impl_8h.html new file mode 100644 index 000000000..6e015c7e0 --- /dev/null +++ b/_state_recorder_impl_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Physics/StateRecorderImpl.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StateRecorderImpl.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  StateRecorderImpl
 Implementation of the StateRecorder class that uses a stringstream as underlying store and that implements checking if the state doesn't change upon reading. More...
 
+
+
+ + + + diff --git a/_state_recorder_impl_8h.js b/_state_recorder_impl_8h.js new file mode 100644 index 000000000..f93c4883d --- /dev/null +++ b/_state_recorder_impl_8h.js @@ -0,0 +1,4 @@ +var _state_recorder_impl_8h = +[ + [ "StateRecorderImpl", "class_state_recorder_impl.html", "class_state_recorder_impl" ] +]; \ No newline at end of file diff --git a/_state_recorder_impl_8h_source.html b/_state_recorder_impl_8h_source.html new file mode 100644 index 000000000..f83654649 --- /dev/null +++ b/_state_recorder_impl_8h_source.html @@ -0,0 +1,174 @@ + + + + + + + +Jolt Physics: Jolt/Physics/StateRecorderImpl.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StateRecorderImpl.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{
+
14public:
+
16 StateRecorderImpl() = default;
+
17 StateRecorderImpl(StateRecorderImpl &&inRHS) : StateRecorder(inRHS), mStream(std::move(inRHS.mStream)) { }
+
18
+
20 virtual void WriteBytes(const void *inData, size_t inNumBytes) override;
+
21
+
23 void Rewind();
+
24
+
26 void Clear();
+
27
+
29 virtual void ReadBytes(void *outData, size_t inNumBytes) override;
+
30
+
31 // See StreamIn
+
32 virtual bool IsEOF() const override { return mStream.eof(); }
+
33
+
34 // See StreamIn / StreamOut
+
35 virtual bool IsFailed() const override { return mStream.fail(); }
+
36
+
38 bool IsEqual(StateRecorderImpl &inReference);
+
39
+
41 string GetData() const { return mStream.str(); }
+
42
+
43private:
+
44 std::stringstream mStream;
+
45};
+
+
46
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Definition StateRecorder.h:48
+
Implementation of the StateRecorder class that uses a stringstream as underlying store and that imple...
Definition StateRecorderImpl.h:13
+
StateRecorderImpl()=default
Constructor.
+
virtual bool IsFailed() const override
Returns true if there was an IO failure.
Definition StateRecorderImpl.h:35
+
string GetData() const
Convert the binary data to a string.
Definition StateRecorderImpl.h:41
+
virtual bool IsEOF() const override
Returns true when an attempt has been made to read past the end of the file.
Definition StateRecorderImpl.h:32
+
StateRecorderImpl(StateRecorderImpl &&inRHS)
Definition StateRecorderImpl.h:17
+
virtual void ReadBytes(void *outData, size_t inNumBytes)=0
Read a string of bytes from the binary stream.
+
virtual void WriteBytes(const void *inData, size_t inNumBytes)=0
Write a string of bytes to the binary stream.
+
Definition Array.h:575
+
+
+ + + + diff --git a/_static_array_8h.html b/_static_array_8h.html new file mode 100644 index 000000000..104352d5a --- /dev/null +++ b/_static_array_8h.html @@ -0,0 +1,137 @@ + + + + + + + +Jolt Physics: Jolt/Core/StaticArray.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StaticArray.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

class  StaticArray< T, N >
 Simple variable length array backed by a fixed size buffer. More...
 
struct  StaticArray< T, N >::Storage
 
struct  std::hash< JPH::StaticArray< T, N > >
 Declare std::hash for StaticArray. More...
 
+ + + +

+Namespaces

namespace  std
 
+
+
+ + + + diff --git a/_static_array_8h.js b/_static_array_8h.js new file mode 100644 index 000000000..506480f05 --- /dev/null +++ b/_static_array_8h.js @@ -0,0 +1,6 @@ +var _static_array_8h = +[ + [ "StaticArray< T, N >", "class_static_array.html", "class_static_array" ], + [ "StaticArray< T, N >::Storage", "struct_static_array_1_1_storage.html", "struct_static_array_1_1_storage" ], + [ "std::hash< JPH::StaticArray< T, N > >", "structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.html", "structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4" ] +]; \ No newline at end of file diff --git a/_static_array_8h_source.html b/_static_array_8h_source.html new file mode 100644 index 000000000..9a214e443 --- /dev/null +++ b/_static_array_8h_source.html @@ -0,0 +1,532 @@ + + + + + + + +Jolt Physics: Jolt/Core/StaticArray.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StaticArray.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
+
12template <class T, uint N>
+
+
13class [[nodiscard]] StaticArray
+
14{
+
15public:
+
16 using value_type = T;
+
17
+
18 using size_type = uint;
+
19
+
20 static constexpr uint Capacity = N;
+
21
+
23 StaticArray() = default;
+
24
+
+
26 explicit StaticArray(std::initializer_list<T> inList)
+
27 {
+
28 JPH_ASSERT(inList.size() <= N);
+
29 for (const T &v : inList)
+
30 ::new (reinterpret_cast<T *>(&mElements[mSize++])) T(v);
+
31 }
+
+
32
+
+ +
35 {
+
36 while (mSize < inRHS.mSize)
+
37 {
+
38 ::new (&mElements[mSize]) T(inRHS[mSize]);
+
39 ++mSize;
+
40 }
+
41 }
+
+
42
+
+ +
45 {
+
46 if constexpr (!is_trivially_destructible<T>())
+
47 for (T *e = reinterpret_cast<T *>(mElements), *end = e + mSize; e < end; ++e)
+
48 e->~T();
+
49 }
+
+
50
+
+
52 void clear()
+
53 {
+
54 if constexpr (!is_trivially_destructible<T>())
+
55 for (T *e = reinterpret_cast<T *>(mElements), *end = e + mSize; e < end; ++e)
+
56 e->~T();
+
57 mSize = 0;
+
58 }
+
+
59
+
+
61 void push_back(const T &inElement)
+
62 {
+
63 JPH_ASSERT(mSize < N);
+
64 ::new (&mElements[mSize++]) T(inElement);
+
65 }
+
+
66
+
68 template <class... A>
+
+
69 void emplace_back(A &&... inElement)
+
70 {
+
71 JPH_ASSERT(mSize < N);
+
72 ::new (&mElements[mSize++]) T(std::forward<A>(inElement)...);
+
73 }
+
+
74
+
+
76 void pop_back()
+
77 {
+
78 JPH_ASSERT(mSize > 0);
+
79 reinterpret_cast<T &>(mElements[--mSize]).~T();
+
80 }
+
+
81
+
+
83 bool empty() const
+
84 {
+
85 return mSize == 0;
+
86 }
+
+
87
+
+ +
90 {
+
91 return mSize;
+
92 }
+
+
93
+
+ +
96 {
+
97 return N;
+
98 }
+
+
99
+
+
101 void resize(size_type inNewSize)
+
102 {
+
103 JPH_ASSERT(inNewSize <= N);
+
104 if constexpr (!is_trivially_constructible<T>())
+
105 for (T *element = reinterpret_cast<T *>(mElements) + mSize, *element_end = reinterpret_cast<T *>(mElements) + inNewSize; element < element_end; ++element)
+
106 ::new (element) T;
+
107 if constexpr (!is_trivially_destructible<T>())
+
108 for (T *element = reinterpret_cast<T *>(mElements) + inNewSize, *element_end = reinterpret_cast<T *>(mElements) + mSize; element < element_end; ++element)
+
109 element->~T();
+
110 mSize = inNewSize;
+
111 }
+
+
112
+
113 using const_iterator = const T *;
+
114
+
+ +
117 {
+
118 return reinterpret_cast<const T *>(mElements);
+
119 }
+
+
120
+
+ +
122 {
+
123 return reinterpret_cast<const T *>(mElements + mSize);
+
124 }
+
+
125
+
126 using iterator = T *;
+
127
+
+ +
129 {
+
130 return reinterpret_cast<T *>(mElements);
+
131 }
+
+
132
+
+ +
134 {
+
135 return reinterpret_cast<T *>(mElements + mSize);
+
136 }
+
+
137
+
+
138 const T * data() const
+
139 {
+
140 return reinterpret_cast<const T *>(mElements);
+
141 }
+
+
142
+
+
143 T * data()
+
144 {
+
145 return reinterpret_cast<T *>(mElements);
+
146 }
+
+
147
+
+
149 T & operator [] (size_type inIdx)
+
150 {
+
151 JPH_ASSERT(inIdx < mSize);
+
152 return reinterpret_cast<T &>(mElements[inIdx]);
+
153 }
+
+
154
+
+
155 const T & operator [] (size_type inIdx) const
+
156 {
+
157 JPH_ASSERT(inIdx < mSize);
+
158 return reinterpret_cast<const T &>(mElements[inIdx]);
+
159 }
+
+
160
+
+
162 T & at(size_type inIdx)
+
163 {
+
164 JPH_ASSERT(inIdx < mSize);
+
165 return reinterpret_cast<T &>(mElements[inIdx]);
+
166 }
+
+
167
+
+
168 const T & at(size_type inIdx) const
+
169 {
+
170 JPH_ASSERT(inIdx < mSize);
+
171 return reinterpret_cast<const T &>(mElements[inIdx]);
+
172 }
+
+
173
+
+
175 const T & front() const
+
176 {
+
177 JPH_ASSERT(mSize > 0);
+
178 return reinterpret_cast<const T &>(mElements[0]);
+
179 }
+
+
180
+
+
181 T & front()
+
182 {
+
183 JPH_ASSERT(mSize > 0);
+
184 return reinterpret_cast<T &>(mElements[0]);
+
185 }
+
+
186
+
+
188 const T & back() const
+
189 {
+
190 JPH_ASSERT(mSize > 0);
+
191 return reinterpret_cast<const T &>(mElements[mSize - 1]);
+
192 }
+
+
193
+
+
194 T & back()
+
195 {
+
196 JPH_ASSERT(mSize > 0);
+
197 return reinterpret_cast<T &>(mElements[mSize - 1]);
+
198 }
+
+
199
+
+ +
202 {
+
203 size_type p = size_type(inIter - begin());
+
204 JPH_ASSERT(p < mSize);
+
205 reinterpret_cast<T &>(mElements[p]).~T();
+
206 if (p + 1 < mSize)
+
207 memmove(mElements + p, mElements + p + 1, (mSize - p - 1) * sizeof(T));
+
208 --mSize;
+
209 }
+
+
210
+
+ +
213 {
+
214 size_type p = size_type(inBegin - begin());
+
215 size_type n = size_type(inEnd - inBegin);
+
216 JPH_ASSERT(inEnd <= end());
+
217 for (size_type i = 0; i < n; ++i)
+
218 reinterpret_cast<T &>(mElements[p + i]).~T();
+
219 if (p + n < mSize)
+
220 memmove(mElements + p, mElements + p + n, (mSize - p - n) * sizeof(T));
+
221 mSize -= n;
+
222 }
+
+
223
+
+
225 StaticArray<T, N> & operator = (const StaticArray<T, N> &inRHS)
+
226 {
+
227 size_type rhs_size = inRHS.size();
+
228
+
229 if (static_cast<const void *>(this) != static_cast<const void *>(&inRHS))
+
230 {
+
231 clear();
+
232
+
233 while (mSize < rhs_size)
+
234 {
+
235 ::new (&mElements[mSize]) T(inRHS[mSize]);
+
236 ++mSize;
+
237 }
+
238 }
+
239
+
240 return *this;
+
241 }
+
+
242
+
244 template <uint M>
+
+
245 StaticArray<T, N> & operator = (const StaticArray<T, M> &inRHS)
+
246 {
+
247 size_type rhs_size = inRHS.size();
+
248 JPH_ASSERT(rhs_size <= N);
+
249
+
250 if (static_cast<const void *>(this) != static_cast<const void *>(&inRHS))
+
251 {
+
252 clear();
+
253
+
254 while (mSize < rhs_size)
+
255 {
+
256 ::new (&mElements[mSize]) T(inRHS[mSize]);
+
257 ++mSize;
+
258 }
+
259 }
+
260
+
261 return *this;
+
262 }
+
+
263
+
+
265 bool operator == (const StaticArray<T, N> &inRHS) const
+
266 {
+
267 if (mSize != inRHS.mSize)
+
268 return false;
+
269 for (size_type i = 0; i < mSize; ++i)
+
270 if (!(reinterpret_cast<const T &>(mElements[i]) == reinterpret_cast<const T &>(inRHS.mElements[i])))
+
271 return false;
+
272 return true;
+
273 }
+
+
274
+
+
275 bool operator != (const StaticArray<T, N> &inRHS) const
+
276 {
+
277 if (mSize != inRHS.mSize)
+
278 return true;
+
279 for (size_type i = 0; i < mSize; ++i)
+
280 if (reinterpret_cast<const T &>(mElements[i]) != reinterpret_cast<const T &>(inRHS.mElements[i]))
+
281 return true;
+
282 return false;
+
283 }
+
+
284
+
285protected:
+
+
286 struct alignas(T) Storage
+
287 {
+
288 uint8 mData[sizeof(T)];
+
289 };
+
+
290
+
291 static_assert(sizeof(T) == sizeof(Storage), "Mismatch in size");
+
292 static_assert(alignof(T) == alignof(Storage), "Mismatch in alignment");
+
293
+
294 size_type mSize = 0;
+
295 Storage mElements[N];
+
296};
+
+
297
+ +
299
+
300JPH_SUPPRESS_WARNING_PUSH
+
301JPH_CLANG_SUPPRESS_WARNING("-Wc++98-compat")
+
302
+
303namespace std
+
304{
+
306 template <class T, JPH::uint N>
+
+
307 struct hash<JPH::StaticArray<T, N>>
+
308 {
+
+
309 size_t operator () (const JPH::StaticArray<T, N> &inRHS) const
+
310 {
+
311 std::size_t ret = 0;
+
312
+
313 // Hash length first
+
314 JPH::HashCombine(ret, inRHS.size());
+
315
+
316 // Then hash elements
+
317 for (const T &t : inRHS)
+
318 JPH::HashCombine(ret, t);
+
319
+
320 return ret;
+
321 }
+
+
322 };
+
+
323}
+
324
+
325JPH_SUPPRESS_WARNING_POP
+
std::uint8_t uint8
Definition Core.h:453
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_CLANG_SUPPRESS_WARNING(w)
Definition Core.h:263
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
StaticArray()=default
Default constructor.
+
void push_back(const T &inElement)
Add element to the back of the array.
Definition StaticArray.h:61
+
size_type capacity() const
Returns maximum amount of elements the array can hold.
Definition StaticArray.h:95
+
iterator end()
Definition StaticArray.h:133
+
T * data()
Definition StaticArray.h:143
+
void clear()
Destruct all elements and set length to zero.
Definition StaticArray.h:52
+
T value_type
Definition StaticArray.h:16
+
iterator begin()
Definition StaticArray.h:128
+
StaticArray(std::initializer_list< T > inList)
Constructor from initializer list.
Definition StaticArray.h:26
+
const T * const_iterator
Definition StaticArray.h:113
+
T * iterator
Definition StaticArray.h:126
+
T & front()
Definition StaticArray.h:181
+
void erase(const_iterator inIter)
Remove one element from the array.
Definition StaticArray.h:201
+
const_iterator begin() const
Iterators.
Definition StaticArray.h:116
+
uint size_type
Definition StaticArray.h:18
+
const T & back() const
Last element in the array.
Definition StaticArray.h:188
+
const T * data() const
Definition StaticArray.h:138
+
void emplace_back(A &&... inElement)
Construct element at the back of the array.
Definition StaticArray.h:69
+
void erase(const_iterator inBegin, const_iterator inEnd)
Remove multiple element from the array.
Definition StaticArray.h:212
+
T & at(size_type inIdx)
Access element.
Definition StaticArray.h:162
+
Storage mElements[N]
Definition StaticArray.h:295
+
bool empty() const
Returns true if there are no elements in the array.
Definition StaticArray.h:83
+
StaticArray(const StaticArray< T, N > &inRHS)
Copy constructor.
Definition StaticArray.h:34
+
const T & front() const
First element in the array.
Definition StaticArray.h:175
+
T & back()
Definition StaticArray.h:194
+
const_iterator end() const
Definition StaticArray.h:121
+
size_type mSize
Definition StaticArray.h:294
+
size_type size() const
Returns amount of elements in the array.
Definition StaticArray.h:89
+
void pop_back()
Remove element from the back of the array.
Definition StaticArray.h:76
+
void resize(size_type inNewSize)
Resize array to new length.
Definition StaticArray.h:101
+
const T & at(size_type inIdx) const
Definition StaticArray.h:168
+
~StaticArray()
Destruct all elements.
Definition StaticArray.h:44
+
Definition Array.h:575
+
Definition StaticArray.h:287
+
+
+ + + + diff --git a/_static_compound_shape_8cpp.html b/_static_compound_shape_8cpp.html new file mode 100644 index 000000000..835fcb122 --- /dev/null +++ b/_static_compound_shape_8cpp.html @@ -0,0 +1,151 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/StaticCompoundShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StaticCompoundShape.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (StaticCompoundShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (StaticCompoundShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_static_compound_shape_8cpp.js b/_static_compound_shape_8cpp.js new file mode 100644 index 000000000..52362a49a --- /dev/null +++ b/_static_compound_shape_8cpp.js @@ -0,0 +1,4 @@ +var _static_compound_shape_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_static_compound_shape_8cpp.html#ac5f468c0b9fc344b1bfc578a0e4d04a7", null ] +]; \ No newline at end of file diff --git a/_static_compound_shape_8h.html b/_static_compound_shape_8h.html new file mode 100644 index 000000000..0522afa6c --- /dev/null +++ b/_static_compound_shape_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/StaticCompoundShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StaticCompoundShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  StaticCompoundShapeSettings
 Class that constructs a StaticCompoundShape. Note that if you only want a compound of 1 shape, use a RotatedTranslatedShape instead. More...
 
class  StaticCompoundShape
 
+
+
+ + + + diff --git a/_static_compound_shape_8h.js b/_static_compound_shape_8h.js new file mode 100644 index 000000000..a1898da06 --- /dev/null +++ b/_static_compound_shape_8h.js @@ -0,0 +1,5 @@ +var _static_compound_shape_8h = +[ + [ "StaticCompoundShapeSettings", "class_static_compound_shape_settings.html", "class_static_compound_shape_settings" ], + [ "StaticCompoundShape", "class_static_compound_shape.html", "class_static_compound_shape" ] +]; \ No newline at end of file diff --git a/_static_compound_shape_8h_source.html b/_static_compound_shape_8h_source.html new file mode 100644 index 000000000..4e107de24 --- /dev/null +++ b/_static_compound_shape_8h_source.html @@ -0,0 +1,295 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/StaticCompoundShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StaticCompoundShape.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
+ + + +
10
+ +
12
+ +
14class TempAllocator;
+
15
+
+ +
18{
+
19public:
+ +
21
+
22 // See: ShapeSettings
+
23 virtual ShapeResult Create() const override;
+
24
+
26 ShapeResult Create(TempAllocator &inTempAllocator) const;
+
27};
+
+
28
+
+ +
33{
+
34public:
+ +
36
+ +
39 StaticCompoundShape(const StaticCompoundShapeSettings &inSettings, TempAllocator &inTempAllocator, ShapeResult &outResult);
+
40
+
41 // See Shape::CastRay
+
42 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
43 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
44
+
45 // See: Shape::CollidePoint
+
46 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
47
+
48 // See Shape::CollectTransformedShapes
+
49 virtual void CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const override;
+
50
+
51 // See: CompoundShape::GetIntersectingSubShapes
+
52 virtual int GetIntersectingSubShapes(const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override;
+
53
+
54 // See: CompoundShape::GetIntersectingSubShapes
+
55 virtual int GetIntersectingSubShapes(const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override;
+
56
+
57 // See Shape
+
58 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
59
+
60 // See Shape::GetStats
+
61 virtual Stats GetStats() const override { return Stats(sizeof(*this) + mSubShapes.size() * sizeof(SubShape) + mNodes.size() * sizeof(Node), 0); }
+
62
+
63 // Register shape functions with the registry
+
64 static void sRegister();
+
65
+
66protected:
+
67 // See: Shape::RestoreBinaryState
+
68 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
69
+
70private:
+
71 // Visitor for GetIntersectingSubShapes
+
72 template <class BoxType>
+
73 struct GetIntersectingSubShapesVisitorSC : public GetIntersectingSubShapesVisitor<BoxType>
+
74 {
+
75 using GetIntersectingSubShapesVisitor<BoxType>::GetIntersectingSubShapesVisitor;
+
76
+
77 JPH_INLINE bool ShouldVisitNode(int inStackTop) const
+
78 {
+
79 return true;
+
80 }
+
81
+
82 JPH_INLINE int VisitNodes(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ, UVec4 &ioProperties, int inStackTop)
+
83 {
+
84 // Test if point overlaps with box
+
85 UVec4 collides = GetIntersectingSubShapesVisitor<BoxType>::TestBounds(inBoundsMinX, inBoundsMinY, inBoundsMinZ, inBoundsMaxX, inBoundsMaxY, inBoundsMaxZ);
+
86 return CountAndSortTrues(collides, ioProperties);
+
87 }
+
88 };
+
89
+
92 static void sPartition(uint *ioBodyIdx, AABox *ioBounds, int inNumber, int &outMidPoint);
+
93
+
97 static void sPartition4(uint *ioBodyIdx, AABox *ioBounds, int inBegin, int inEnd, int *outSplit);
+
98
+
99 // Helper functions called by CollisionDispatch
+
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);
+
102 static void sCastShapeVsCompound(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
103
+
104 // Maximum size of the stack during tree walk
+
105 static constexpr int cStackSize = 128;
+
106
+
107 template <class Visitor>
+
108 JPH_INLINE void WalkTree(Visitor &ioVisitor) const;
+
109
+
111 enum : uint32
+
112 {
+
113 IS_SUBSHAPE = 0x80000000,
+
114 INVALID_NODE = 0x7fffffff,
+
115 };
+
116
+
118 struct Node
+
119 {
+
120 void SetChildBounds(uint inIndex, const AABox &inBounds);
+
121 void SetChildInvalid(uint inIndex);
+
122
+
123 HalfFloat mBoundsMinX[4];
+
124 HalfFloat mBoundsMinY[4];
+
125 HalfFloat mBoundsMinZ[4];
+
126 HalfFloat mBoundsMaxX[4];
+
127 HalfFloat mBoundsMaxY[4];
+
128 HalfFloat mBoundsMaxZ[4];
+
129 uint32 mNodeProperties[4];
+
130 };
+
131
+
132 static_assert(sizeof(Node) == 64, "Node should be 64 bytes");
+
133
+
134 using Nodes = Array<Node>;
+
135
+
136 Nodes mNodes;
+
137};
+
+
138
+ + +
#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:76
+ + +
JPH_INLINE int CountAndSortTrues(UVec4Arg inValue, UVec4 &ioIdentifiers)
Definition SortReverseAndStore.h:39
+
Axis aligned box.
Definition AABox.h:16
+
Definition Array.h:36
+
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
+
Definition Quat.h:33
+
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:184
+
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
+
Definition UVec4.h:12
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
constexpr int cStackSize
Stack size to use during WalkHeightField.
Definition HeightFieldShape.h:26
+
Definition CompoundShape.h:138
+
Definition RayCast.h:47
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_stream_in_8h.html b/_stream_in_8h.html new file mode 100644 index 000000000..eff1d259d --- /dev/null +++ b/_stream_in_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Core/StreamIn.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StreamIn.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  StreamIn
 Simple binary input stream. More...
 
+
+
+ + + + diff --git a/_stream_in_8h.js b/_stream_in_8h.js new file mode 100644 index 000000000..f6249a2fa --- /dev/null +++ b/_stream_in_8h.js @@ -0,0 +1,4 @@ +var _stream_in_8h = +[ + [ "StreamIn", "class_stream_in.html", "class_stream_in" ] +]; \ No newline at end of file diff --git a/_stream_in_8h_source.html b/_stream_in_8h_source.html new file mode 100644 index 000000000..aca3cec76 --- /dev/null +++ b/_stream_in_8h_source.html @@ -0,0 +1,274 @@ + + + + + + + +Jolt Physics: Jolt/Core/StreamIn.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StreamIn.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{
+
14public:
+
16 virtual ~StreamIn() = default;
+
17
+
19 virtual void ReadBytes(void *outData, size_t inNumBytes) = 0;
+
20
+
22 virtual bool IsEOF() const = 0;
+
23
+
25 virtual bool IsFailed() const = 0;
+
26
+
28 template <class T, std::enable_if_t<std::is_trivially_copyable_v<T>, bool> = true>
+
+
29 void Read(T &outT)
+
30 {
+
31 ReadBytes(&outT, sizeof(outT));
+
32 }
+
+
33
+
35 template <class T, class A, std::enable_if_t<std::is_trivially_copyable_v<T>, bool> = true>
+
+
36 void Read(Array<T, A> &outT)
+
37 {
+
38 uint32 len = uint32(outT.size()); // Initialize to previous array size, this is used for validation in the StateRecorder class
+
39 Read(len);
+
40 if (!IsEOF() && !IsFailed())
+
41 {
+
42 outT.resize(len);
+
43 if constexpr (std::is_same_v<T, Vec3> || std::is_same_v<T, DVec3> || std::is_same_v<T, DMat44>)
+
44 {
+
45 // These types have unused components that we don't want to read
+
46 for (typename Array<T, A>::size_type i = 0; i < len; ++i)
+
47 Read(outT[i]);
+
48 }
+
49 else
+
50 {
+
51 // Read all elements at once
+
52 ReadBytes(outT.data(), len * sizeof(T));
+
53 }
+
54 }
+
55 else
+
56 outT.clear();
+
57 }
+
+
58
+
60 template <class Type, class Traits, class Allocator>
+
+
61 void Read(std::basic_string<Type, Traits, Allocator> &outString)
+
62 {
+
63 uint32 len = 0;
+
64 Read(len);
+
65 if (!IsEOF() && !IsFailed())
+
66 {
+
67 outString.resize(len);
+
68 ReadBytes(outString.data(), len * sizeof(Type));
+
69 }
+
70 else
+
71 outString.clear();
+
72 }
+
+
73
+
75 template <class T, class A, typename F>
+
+
76 void Read(Array<T, A> &outT, const F &inReadElement)
+
77 {
+
78 uint32 len = uint32(outT.size()); // Initialize to previous array size, this is used for validation in the StateRecorder class
+
79 Read(len);
+
80 if (!IsEOF() && !IsFailed())
+
81 {
+
82 outT.resize(len);
+
83 for (typename Array<T, A>::size_type i = 0; i < len; ++i)
+
84 inReadElement(*this, outT[i]);
+
85 }
+
86 else
+
87 outT.clear();
+
88 }
+
+
89
+
+
91 void Read(Vec3 &outVec)
+
92 {
+
93 ReadBytes(&outVec, 3 * sizeof(float));
+
94 outVec = Vec3::sFixW(outVec.mValue);
+
95 }
+
+
96
+
+
98 void Read(DVec3 &outVec)
+
99 {
+
100 ReadBytes(&outVec, 3 * sizeof(double));
+
101 outVec = DVec3::sFixW(outVec.mValue);
+
102 }
+
+
103
+
+
105 void Read(DMat44 &outVec)
+
106 {
+
107 Vec4 x, y, z;
+
108 Read(x);
+
109 Read(y);
+
110 Read(z);
+
111
+
112 DVec3 t;
+
113 Read(t);
+
114
+
115 outVec = DMat44(x, y, z, t);
+
116 }
+
+
117};
+
+
118
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Definition Array.h:36
+
void resize(size_type inNewSize)
Resize array to new length.
Definition Array.h:118
+
size_t size_type
Definition Array.h:39
+
const T * data() const
Definition Array.h:442
+
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
void clear()
Destruct all elements and set length to zero.
Definition Array.h:143
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
Definition DVec3.h:14
+
static JPH_INLINE Type sFixW(TypeArg inValue)
Internal helper function that ensures that the Z component is replicated to the W component to preven...
Definition DVec3.inl:92
+
Type mValue
Definition DVec3.h:279
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Simple binary input stream.
Definition StreamIn.h:13
+
virtual ~StreamIn()=default
Virtual destructor.
+
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:29
+
void Read(Array< T, A > &outT, const F &inReadElement)
Read a vector of primitives from the binary stream using a custom function to read the elements.
Definition StreamIn.h:76
+
void Read(std::basic_string< Type, Traits, Allocator > &outString)
Read a string from the binary stream (reads the number of characters and then the characters)
Definition StreamIn.h:61
+
void Read(Vec3 &outVec)
Read a Vec3 (don't read W)
Definition StreamIn.h:91
+
virtual void ReadBytes(void *outData, size_t inNumBytes)=0
Read a string of bytes from the binary stream.
+
virtual bool IsEOF() const =0
Returns true when an attempt has been made to read past the end of the file.
+
virtual bool IsFailed() const =0
Returns true if there was an IO failure.
+
void Read(DMat44 &outVec)
Read a DMat44 (don't read W component of translation)
Definition StreamIn.h:105
+
void Read(Array< T, A > &outT)
Read a vector of primitives from the binary stream.
Definition StreamIn.h:36
+
void Read(DVec3 &outVec)
Read a DVec3 (don't read W)
Definition StreamIn.h:98
+
Definition Vec3.h:17
+
static JPH_INLINE Type sFixW(Type inValue)
Internal helper function that ensures that the Z component is replicated to the W component to preven...
+
Type mValue
Definition Vec3.h:286
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_stream_out_8h.html b/_stream_out_8h.html new file mode 100644 index 000000000..39448a162 --- /dev/null +++ b/_stream_out_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Core/StreamOut.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StreamOut.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  StreamOut
 Simple binary output stream. More...
 
+
+
+ + + + diff --git a/_stream_out_8h.js b/_stream_out_8h.js new file mode 100644 index 000000000..63f74d01b --- /dev/null +++ b/_stream_out_8h.js @@ -0,0 +1,4 @@ +var _stream_out_8h = +[ + [ "StreamOut", "class_stream_out.html", "class_stream_out" ] +]; \ No newline at end of file diff --git a/_stream_out_8h_source.html b/_stream_out_8h_source.html new file mode 100644 index 000000000..3f48b468e --- /dev/null +++ b/_stream_out_8h_source.html @@ -0,0 +1,247 @@ + + + + + + + +Jolt Physics: Jolt/Core/StreamOut.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StreamOut.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{
+
14public:
+
16 virtual ~StreamOut() = default;
+
17
+
19 virtual void WriteBytes(const void *inData, size_t inNumBytes) = 0;
+
20
+
22 virtual bool IsFailed() const = 0;
+
23
+
25 template <class T, std::enable_if_t<std::is_trivially_copyable_v<T>, bool> = true>
+
+
26 void Write(const T &inT)
+
27 {
+
28 WriteBytes(&inT, sizeof(inT));
+
29 }
+
+
30
+
32 template <class T, class A, std::enable_if_t<std::is_trivially_copyable_v<T>, bool> = true>
+
+
33 void Write(const Array<T, A> &inT)
+
34 {
+
35 uint32 len = uint32(inT.size());
+
36 Write(len);
+
37 if (!IsFailed())
+
38 {
+
39 if constexpr (std::is_same_v<T, Vec3> || std::is_same_v<T, DVec3> || std::is_same_v<T, DMat44>)
+
40 {
+
41 // These types have unused components that we don't want to write
+
42 for (typename Array<T, A>::size_type i = 0; i < len; ++i)
+
43 Write(inT[i]);
+
44 }
+
45 else
+
46 {
+
47 // Write all elements at once
+
48 WriteBytes(inT.data(), len * sizeof(T));
+
49 }
+
50 }
+
51 }
+
+
52
+
54 template <class Type, class Traits, class Allocator>
+
+
55 void Write(const std::basic_string<Type, Traits, Allocator> &inString)
+
56 {
+
57 uint32 len = uint32(inString.size());
+
58 Write(len);
+
59 if (!IsFailed())
+
60 WriteBytes(inString.data(), len * sizeof(Type));
+
61 }
+
+
62
+
64 template <class T, class A, typename F>
+
+
65 void Write(const Array<T, A> &inT, const F &inWriteElement)
+
66 {
+
67 uint32 len = uint32(inT.size());
+
68 Write(len);
+
69 if (!IsFailed())
+
70 for (typename Array<T, A>::size_type i = 0; i < len; ++i)
+
71 inWriteElement(inT[i], *this);
+
72 }
+
+
73
+
+
75 void Write(const Vec3 &inVec)
+
76 {
+
77 WriteBytes(&inVec, 3 * sizeof(float));
+
78 }
+
+
79
+
+
81 void Write(const DVec3 &inVec)
+
82 {
+
83 WriteBytes(&inVec, 3 * sizeof(double));
+
84 }
+
+
85
+
+
87 void Write(const DMat44 &inVec)
+
88 {
+
89 Write(inVec.GetColumn4(0));
+
90 Write(inVec.GetColumn4(1));
+
91 Write(inVec.GetColumn4(2));
+
92
+
93 Write(inVec.GetTranslation());
+
94 }
+
+
95};
+
+
96
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Definition Array.h:36
+
size_t size_type
Definition Array.h:39
+
const T * data() const
Definition Array.h:442
+
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
JPH_INLINE Vec4 GetColumn4(uint inCol) const
Definition DMat44.h:115
+
JPH_INLINE DVec3 GetTranslation() const
Definition DMat44.h:111
+
Definition DVec3.h:14
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Simple binary output stream.
Definition StreamOut.h:13
+
void Write(const Vec3 &inVec)
Write a Vec3 (don't write W)
Definition StreamOut.h:75
+
void Write(const DMat44 &inVec)
Write a DMat44 (don't write W component of translation)
Definition StreamOut.h:87
+
void Write(const Array< T, A > &inT, const F &inWriteElement)
Write a vector of primitives to the binary stream using a custom write function.
Definition StreamOut.h:65
+
virtual bool IsFailed() const =0
Returns true if there was an IO failure.
+
void Write(const DVec3 &inVec)
Write a DVec3 (don't write W)
Definition StreamOut.h:81
+
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:26
+
void Write(const Array< T, A > &inT)
Write a vector of primitives to the binary stream.
Definition StreamOut.h:33
+
virtual void WriteBytes(const void *inData, size_t inNumBytes)=0
Write a string of bytes to the binary stream.
+
void Write(const std::basic_string< Type, Traits, Allocator > &inString)
Write a string to the binary stream (writes the number of characters and then the characters)
Definition StreamOut.h:55
+
virtual ~StreamOut()=default
Virtual destructor.
+
Definition Vec3.h:17
+
+
+ + + + diff --git a/_stream_utils_8h.html b/_stream_utils_8h.html new file mode 100644 index 000000000..f8d94329d --- /dev/null +++ b/_stream_utils_8h.html @@ -0,0 +1,160 @@ + + + + + + + +Jolt Physics: Jolt/Core/StreamUtils.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StreamUtils.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

namespace  StreamUtils
 
+ + + + + + + +

+Typedefs

template<class Type >
using StreamUtils::ObjectToIDMap = UnorderedMap< const Type *, uint32 >
 
template<class Type >
using StreamUtils::IDToObjectMap = Array< Ref< Type > >
 
+ + + + + + + + + + + + + + + + + + +

+Functions

template<class Type >
Result< Ref< Type > > StreamUtils::RestoreObject (StreamIn &inStream, void(Type::*inRestoreBinaryStateFunction)(StreamIn &))
 
template<class Type >
void StreamUtils::SaveObjectReference (StreamOut &inStream, const Type *inObject, ObjectToIDMap< Type > *ioObjectToIDMap)
 Save an object reference to a stream. Uses a map to map objects to IDs which is also used to prevent writing duplicates.
 
template<class Type >
Result< Ref< Type > > StreamUtils::RestoreObjectReference (StreamIn &inStream, IDToObjectMap< Type > &ioIDToObjectMap)
 Restore an object reference from stream.
 
template<class ArrayType , class ValueType >
void StreamUtils::SaveObjectArray (StreamOut &inStream, const ArrayType &inArray, ObjectToIDMap< ValueType > *ioObjectToIDMap)
 
template<class ArrayType , class ValueType >
Result< ArrayType > StreamUtils::RestoreObjectArray (StreamIn &inStream, IDToObjectMap< ValueType > &ioIDToObjectMap)
 
+
+
+ + + + diff --git a/_stream_utils_8h.js b/_stream_utils_8h.js new file mode 100644 index 000000000..72b6d91ee --- /dev/null +++ b/_stream_utils_8h.js @@ -0,0 +1,10 @@ +var _stream_utils_8h = +[ + [ "IDToObjectMap", "_stream_utils_8h.html#a31d9aa36bf98b7db87aa8490e9b5d1c3", null ], + [ "ObjectToIDMap", "_stream_utils_8h.html#ad6a5ef164a8da385e1d6a6b6d234be0f", null ], + [ "RestoreObject", "_stream_utils_8h.html#a8e2ba0b1630f3d270dfdd4284a468ab9", null ], + [ "RestoreObjectArray", "_stream_utils_8h.html#a388cbbe0f223267d038a57b9fd6e1571", null ], + [ "RestoreObjectReference", "_stream_utils_8h.html#aab7d93bea0dbbfa623af7112db1bd8be", null ], + [ "SaveObjectArray", "_stream_utils_8h.html#ac77c5ff89ac5ab2af2b924af47ba9199", null ], + [ "SaveObjectReference", "_stream_utils_8h.html#af32cd6cffeb28a74dc98d6ba952f3523", null ] +]; \ No newline at end of file diff --git a/_stream_utils_8h_source.html b/_stream_utils_8h_source.html new file mode 100644 index 000000000..c379bdd89 --- /dev/null +++ b/_stream_utils_8h_source.html @@ -0,0 +1,334 @@ + + + + + + + +Jolt Physics: Jolt/Core/StreamUtils.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StreamUtils.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
+
7#include <Jolt/Core/Result.h>
+ + + +
11#include <Jolt/Core/Factory.h>
+
12
+ +
14
+
+
15namespace StreamUtils {
+
16
+
17template <class Type>
+ +
19
+
20template <class Type>
+ +
22
+
23// Restore a single object by reading the hash of the type, constructing it and then calling the restore function
+
24template <class Type>
+
+
25Result<Ref<Type>> RestoreObject(StreamIn &inStream, void (Type::*inRestoreBinaryStateFunction)(StreamIn &))
+
26{
+
27 Result<Ref<Type>> result;
+
28
+
29 // Read the hash of the type
+
30 uint32 hash;
+
31 inStream.Read(hash);
+
32 if (inStream.IsEOF() || inStream.IsFailed())
+
33 {
+
34 result.SetError("Failed to read type hash");
+
35 return result;
+
36 }
+
37
+
38 // Get the RTTI for the type
+
39 const RTTI *rtti = Factory::sInstance->Find(hash);
+
40 if (rtti == nullptr)
+
41 {
+
42 result.SetError("Failed to create instance of type");
+
43 return result;
+
44 }
+
45
+
46 // Construct and read the data of the type
+
47 Ref<Type> object = reinterpret_cast<Type *>(rtti->CreateObject());
+
48 (object->*inRestoreBinaryStateFunction)(inStream);
+
49 if (inStream.IsEOF() || inStream.IsFailed())
+
50 {
+
51 result.SetError("Failed to restore object");
+
52 return result;
+
53 }
+
54
+
55 result.Set(object);
+
56 return result;
+
57}
+
+
58
+
60template <class Type>
+
+
61void SaveObjectReference(StreamOut &inStream, const Type *inObject, ObjectToIDMap<Type> *ioObjectToIDMap)
+
62{
+
63 if (ioObjectToIDMap == nullptr || inObject == nullptr)
+
64 {
+
65 // Write null ID
+
66 inStream.Write(~uint32(0));
+
67 }
+
68 else
+
69 {
+
70 typename ObjectToIDMap<Type>::const_iterator id = ioObjectToIDMap->find(inObject);
+
71 if (id != ioObjectToIDMap->end())
+
72 {
+
73 // Existing object, write ID
+
74 inStream.Write(id->second);
+
75 }
+
76 else
+
77 {
+
78 // New object, write the ID
+
79 uint32 new_id = uint32(ioObjectToIDMap->size());
+
80 (*ioObjectToIDMap)[inObject] = new_id;
+
81 inStream.Write(new_id);
+
82
+
83 // Write the object
+
84 inObject->SaveBinaryState(inStream);
+
85 }
+
86 }
+
87}
+
+
88
+
90template <class Type>
+
+ +
92{
+
93 Result<Ref<Type>> result;
+
94
+
95 // Read id
+
96 uint32 id = ~uint32(0);
+
97 inStream.Read(id);
+
98
+
99 // Check null
+
100 if (id == ~uint32(0))
+
101 {
+
102 result.Set(nullptr);
+
103 return result;
+
104 }
+
105
+
106 // Check if it already exists
+
107 if (id >= ioIDToObjectMap.size())
+
108 {
+
109 // New object, restore it
+
110 result = Type::sRestoreFromBinaryState(inStream);
+
111 if (result.HasError())
+
112 return result;
+
113 JPH_ASSERT(id == ioIDToObjectMap.size());
+
114 ioIDToObjectMap.push_back(result.Get());
+
115 }
+
116 else
+
117 {
+
118 // Existing object filter
+
119 result.Set(ioIDToObjectMap[id].GetPtr());
+
120 }
+
121
+
122 return result;
+
123}
+
+
124
+
125// Save an array of objects to a stream.
+
126template <class ArrayType, class ValueType>
+
+
127void SaveObjectArray(StreamOut &inStream, const ArrayType &inArray, ObjectToIDMap<ValueType> *ioObjectToIDMap)
+
128{
+
129 uint32 len = uint32(inArray.size());
+
130 inStream.Write(len);
+
131 for (const ValueType *value: inArray)
+
132 SaveObjectReference(inStream, value, ioObjectToIDMap);
+
133}
+
+
134
+
135// Restore an array of objects from a stream.
+
136template <class ArrayType, class ValueType>
+
+ +
138{
+
139 Result<ArrayType> result;
+
140
+
141 uint32 len;
+
142 inStream.Read(len);
+
143 if (inStream.IsEOF() || inStream.IsFailed())
+
144 {
+
145 result.SetError("Failed to read stream");
+
146 return result;
+
147 }
+
148
+
149 ArrayType values;
+
150 values.reserve(len);
+
151 for (size_t i = 0; i < len; ++i)
+
152 {
+
153 Result value = RestoreObjectReference(inStream, ioIDToObjectMap);
+
154 if (value.HasError())
+
155 {
+
156 result.SetError(value.GetError());
+
157 return result;
+
158 }
+
159 values.push_back(std::move(value.Get()));
+
160 }
+
161
+
162 result.Set(values);
+
163 return result;
+
164}
+
+
165
+
166} // StreamUtils
+
+
167
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ + + + +
std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > > UnorderedMap
Definition UnorderedMap.h:13
+
Definition Array.h:36
+
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
void push_back(const T &inValue)
Add element to the back of the array.
Definition Array.h:275
+
const RTTI * Find(const char *inName)
Find type info for a specific class by name.
Definition Factory.cpp:19
+
static Factory * sInstance
Singleton factory instance.
Definition Factory.h:40
+
Definition RTTI.h:122
+
void * CreateObject() const
Create an object of this type (returns nullptr if the object is abstract)
Definition RTTI.cpp:53
+
Definition Reference.h:101
+
Helper class that either contains a valid result or an error.
Definition Result.h:12
+
void SetError(const char *inError)
Set an error value.
Definition Result.h:152
+
void Set(const Type &inResult)
Set the result value.
Definition Result.h:140
+
bool HasError() const
Check if we had an error.
Definition Result.h:146
+
const String & GetError() const
Get the error value.
Definition Result.h:149
+
const Type & Get() const
Get the result value.
Definition Result.h:137
+
Simple binary input stream.
Definition StreamIn.h:13
+
void Read(T &outT)
Read a primitive (e.g. float, int, etc.) from the binary stream.
Definition StreamIn.h:29
+
virtual bool IsEOF() const =0
Returns true when an attempt has been made to read past the end of the file.
+
virtual bool IsFailed() const =0
Returns true if there was an IO failure.
+
Simple binary output stream.
Definition StreamOut.h:13
+
void Write(const T &inT)
Write a primitive (e.g. float, int, etc.) to the binary stream.
Definition StreamOut.h:26
+
Definition StreamUtils.h:15
+
Result< ArrayType > RestoreObjectArray(StreamIn &inStream, IDToObjectMap< ValueType > &ioIDToObjectMap)
Definition StreamUtils.h:137
+
Result< Ref< Type > > RestoreObject(StreamIn &inStream, void(Type::*inRestoreBinaryStateFunction)(StreamIn &))
Definition StreamUtils.h:25
+
Result< Ref< Type > > RestoreObjectReference(StreamIn &inStream, IDToObjectMap< Type > &ioIDToObjectMap)
Restore an object reference from stream.
Definition StreamUtils.h:91
+
void SaveObjectArray(StreamOut &inStream, const ArrayType &inArray, ObjectToIDMap< ValueType > *ioObjectToIDMap)
Definition StreamUtils.h:127
+
UnorderedMap< const Type *, uint32 > ObjectToIDMap
Definition StreamUtils.h:18
+
void SaveObjectReference(StreamOut &inStream, const Type *inObject, ObjectToIDMap< Type > *ioObjectToIDMap)
Save an object reference to a stream. Uses a map to map objects to IDs which is also used to prevent ...
Definition StreamUtils.h:61
+
+
+ + + + diff --git a/_stream_wrapper_8h.html b/_stream_wrapper_8h.html new file mode 100644 index 000000000..bb2c18cc1 --- /dev/null +++ b/_stream_wrapper_8h.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Jolt/Core/StreamWrapper.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StreamWrapper.h File Reference
+
+
+
#include <Jolt/Core/StreamIn.h>
+#include <Jolt/Core/StreamOut.h>
+#include <ostream>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  StreamOutWrapper
 Wrapper around std::ostream. More...
 
class  StreamInWrapper
 Wrapper around std::istream. More...
 
+
+
+ + + + diff --git a/_stream_wrapper_8h.js b/_stream_wrapper_8h.js new file mode 100644 index 000000000..e8cad2994 --- /dev/null +++ b/_stream_wrapper_8h.js @@ -0,0 +1,5 @@ +var _stream_wrapper_8h = +[ + [ "StreamOutWrapper", "class_stream_out_wrapper.html", "class_stream_out_wrapper" ], + [ "StreamInWrapper", "class_stream_in_wrapper.html", "class_stream_in_wrapper" ] +]; \ No newline at end of file diff --git a/_stream_wrapper_8h_source.html b/_stream_wrapper_8h_source.html new file mode 100644 index 000000000..9adfe5adf --- /dev/null +++ b/_stream_wrapper_8h_source.html @@ -0,0 +1,184 @@ + + + + + + + +Jolt Physics: Jolt/Core/StreamWrapper.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StreamWrapper.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
+ + +
9
+ +
11#include <ostream>
+ +
13
+ +
15
+
+ +
18{
+
19public:
+
21 StreamOutWrapper(ostream &ioWrapped) : mWrapped(ioWrapped) { }
+
22
+
24 virtual void WriteBytes(const void *inData, size_t inNumBytes) override { mWrapped.write((const char *)inData, inNumBytes); }
+
25
+
27 virtual bool IsFailed() const override { return mWrapped.fail(); }
+
28
+
29private:
+
30 ostream & mWrapped;
+
31};
+
+
32
+
+ +
35{
+
36public:
+
38 StreamInWrapper(istream &ioWrapped) : mWrapped(ioWrapped) { }
+
39
+
41 virtual void ReadBytes(void *outData, size_t inNumBytes) override { mWrapped.read((char *)outData, inNumBytes); }
+
42
+
44 virtual bool IsEOF() const override { return mWrapped.eof(); }
+
45
+
47 virtual bool IsFailed() const override { return mWrapped.fail(); }
+
48
+
49private:
+
50 istream & mWrapped;
+
51};
+
+
52
+ +
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
Simple binary input stream.
Definition StreamIn.h:13
+
Wrapper around std::istream.
Definition StreamWrapper.h:35
+
virtual bool IsFailed() const override
Returns true if there was an IO failure.
Definition StreamWrapper.h:47
+
StreamInWrapper(istream &ioWrapped)
Constructor.
Definition StreamWrapper.h:38
+
virtual void ReadBytes(void *outData, size_t inNumBytes) override
Write a string of bytes to the binary stream.
Definition StreamWrapper.h:41
+
virtual bool IsEOF() const override
Returns true when an attempt has been made to read past the end of the file.
Definition StreamWrapper.h:44
+
Simple binary output stream.
Definition StreamOut.h:13
+
Wrapper around std::ostream.
Definition StreamWrapper.h:18
+
virtual bool IsFailed() const override
Returns true if there was an IO failure.
Definition StreamWrapper.h:27
+
StreamOutWrapper(ostream &ioWrapped)
Constructor.
Definition StreamWrapper.h:21
+
virtual void WriteBytes(const void *inData, size_t inNumBytes) override
Write a string of bytes to the binary stream.
Definition StreamWrapper.h:24
+
+
+ + + + diff --git a/_string_tools_8cpp.html b/_string_tools_8cpp.html new file mode 100644 index 000000000..ae42e91af --- /dev/null +++ b/_string_tools_8cpp.html @@ -0,0 +1,324 @@ + + + + + + + +Jolt Physics: Jolt/Core/StringTools.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StringTools.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <Jolt/Core/StringTools.h>
+#include <cstdarg>
+
+ + + + + + + + + + + + + + + + + + +

+Functions

JPH_SUPPRESS_WARNINGS_STD_BEGIN JPH_SUPPRESS_WARNINGS_STD_END JPH_NAMESPACE_BEGIN String StringFormat (const char *inFMT,...)
 
void StringReplace (String &ioString, const string_view &inSearch, const string_view &inReplace)
 Replace substring with other string.
 
void StringToVector (const string_view &inString, Array< String > &outVector, const string_view &inDelimiter, bool inClearVector)
 Convert a delimited string to an array of strings.
 
void VectorToString (const Array< String > &inVector, String &outString, const string_view &inDelimiter)
 Convert an array strings to a delimited string.
 
String ToLower (const string_view &inString)
 Convert a string to lower case.
 
const char * NibbleToBinary (uint32 inNibble)
 Converts the lower 4 bits of inNibble to a string that represents the number in binary format.
 
+

Function Documentation

+ +

◆ NibbleToBinary()

+ +
+
+ + + + + + + + +
const char * NibbleToBinary (uint32 inNibble)
+
+ +

Converts the lower 4 bits of inNibble to a string that represents the number in binary format.

+ +
+
+ +

◆ StringFormat()

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_SUPPRESS_WARNINGS_STD_BEGIN JPH_SUPPRESS_WARNINGS_STD_END JPH_NAMESPACE_BEGIN String StringFormat (const char * inFMT,
 ... 
)
+
+

Create a formatted text string for debugging purposes. Note that this function has an internal buffer of 1024 characters, so long strings will be trimmed.

+ +
+
+ +

◆ StringReplace()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void StringReplace (StringioString,
const string_view & inSearch,
const string_view & inReplace 
)
+
+ +

Replace substring with other string.

+ +
+
+ +

◆ StringToVector()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void StringToVector (const string_view & inString,
Array< String > & outVector,
const string_view & inDelimiter,
bool inClearVector 
)
+
+ +

Convert a delimited string to an array of strings.

+ +
+
+ +

◆ ToLower()

+ +
+
+ + + + + + + + +
String ToLower (const string_view & inString)
+
+ +

Convert a string to lower case.

+ +
+
+ +

◆ VectorToString()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void VectorToString (const Array< String > & inVector,
StringoutString,
const string_view & inDelimiter 
)
+
+ +

Convert an array strings to a delimited string.

+ +
+
+
+
+ + + + diff --git a/_string_tools_8cpp.js b/_string_tools_8cpp.js new file mode 100644 index 000000000..81a74f5cd --- /dev/null +++ b/_string_tools_8cpp.js @@ -0,0 +1,9 @@ +var _string_tools_8cpp = +[ + [ "NibbleToBinary", "_string_tools_8cpp.html#a479eac2df35b47887f8dbfa014f6923d", null ], + [ "StringFormat", "_string_tools_8cpp.html#acb1471934488a8e403995034bbc3d8b0", null ], + [ "StringReplace", "_string_tools_8cpp.html#a3cb1fdfee4bb3f11e76d9c0a5f690eec", null ], + [ "StringToVector", "_string_tools_8cpp.html#a353e97cf17bc7c6645c9354539f736d3", null ], + [ "ToLower", "_string_tools_8cpp.html#ac3399e40a8c21096dc8203af6a7519cc", null ], + [ "VectorToString", "_string_tools_8cpp.html#ae400232cec435a77c4b2526c82fe197a", null ] +]; \ No newline at end of file diff --git a/_string_tools_8h.html b/_string_tools_8h.html new file mode 100644 index 000000000..606b3d074 --- /dev/null +++ b/_string_tools_8h.html @@ -0,0 +1,378 @@ + + + + + + + +Jolt Physics: Jolt/Core/StringTools.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StringTools.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_EXPORT String StringFormat (const char *inFMT,...)
 
template<typename T >
String ConvertToString (const T &inValue)
 Convert type to string.
 
constexpr uint64 HashString (const char *inString)
 
JPH_EXPORT void StringReplace (String &ioString, const string_view &inSearch, const string_view &inReplace)
 Replace substring with other string.
 
JPH_EXPORT void StringToVector (const string_view &inString, Array< String > &outVector, const string_view &inDelimiter=",", bool inClearVector=true)
 Convert a delimited string to an array of strings.
 
JPH_EXPORT void VectorToString (const Array< String > &inVector, String &outString, const string_view &inDelimiter=",")
 Convert an array strings to a delimited string.
 
JPH_EXPORT String ToLower (const string_view &inString)
 Convert a string to lower case.
 
JPH_EXPORT const char * NibbleToBinary (uint32 inNibble)
 Converts the lower 4 bits of inNibble to a string that represents the number in binary format.
 
+

Function Documentation

+ +

◆ ConvertToString()

+ +
+
+
+template<typename T >
+ + + + + + + + +
String ConvertToString (const T & inValue)
+
+ +

Convert type to string.

+ +
+
+ +

◆ HashString()

+ +
+
+ + + + + +
+ + + + + + + + +
constexpr uint64 HashString (const char * inString)
+
+constexpr
+
+

Calculate the FNV-1a hash of inString.

See also
https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function
+ +
+
+ +

◆ NibbleToBinary()

+ +
+
+ + + + + + + + +
JPH_EXPORT const char * NibbleToBinary (uint32 inNibble)
+
+ +

Converts the lower 4 bits of inNibble to a string that represents the number in binary format.

+ +
+
+ +

◆ StringFormat()

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_EXPORT String StringFormat (const char * inFMT,
 ... 
)
+
+

Create a formatted text string for debugging purposes. Note that this function has an internal buffer of 1024 characters, so long strings will be trimmed.

+ +
+
+ +

◆ StringReplace()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_EXPORT void StringReplace (StringioString,
const string_view & inSearch,
const string_view & inReplace 
)
+
+ +

Replace substring with other string.

+ +
+
+ +

◆ StringToVector()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_EXPORT void StringToVector (const string_view & inString,
Array< String > & outVector,
const string_view & inDelimiter = ",",
bool inClearVector = true 
)
+
+ +

Convert a delimited string to an array of strings.

+ +
+
+ +

◆ ToLower()

+ +
+
+ + + + + + + + +
JPH_EXPORT String ToLower (const string_view & inString)
+
+ +

Convert a string to lower case.

+ +
+
+ +

◆ VectorToString()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_EXPORT void VectorToString (const Array< String > & inVector,
StringoutString,
const string_view & inDelimiter = "," 
)
+
+ +

Convert an array strings to a delimited string.

+ +
+
+
+
+ + + + diff --git a/_string_tools_8h.js b/_string_tools_8h.js new file mode 100644 index 000000000..00eb5d20c --- /dev/null +++ b/_string_tools_8h.js @@ -0,0 +1,11 @@ +var _string_tools_8h = +[ + [ "ConvertToString", "_string_tools_8h.html#a12b5bdab675fcd7004cbf9dbf2197538", null ], + [ "HashString", "_string_tools_8h.html#aa8f608a4239b6a863e405b05f5318fe6", null ], + [ "NibbleToBinary", "_string_tools_8h.html#acd6971b94f2b801aed310443d05c85d9", null ], + [ "StringFormat", "_string_tools_8h.html#a9829a5cb529d81ee7d6d6de1c294200c", null ], + [ "StringReplace", "_string_tools_8h.html#abdea20f54434c5c987489835602a2668", null ], + [ "StringToVector", "_string_tools_8h.html#a6d6e2c32ceb88a41e7ab8623735a4a77", null ], + [ "ToLower", "_string_tools_8h.html#a0d6b59714c2e6686fdfc0535bffcd22d", null ], + [ "VectorToString", "_string_tools_8h.html#a3b31af4468a8347daef1aaa582dba39e", null ] +]; \ No newline at end of file diff --git a/_string_tools_8h_source.html b/_string_tools_8h_source.html new file mode 100644 index 000000000..665fcc8ff --- /dev/null +++ b/_string_tools_8h_source.html @@ -0,0 +1,180 @@ + + + + + + + +Jolt Physics: Jolt/Core/StringTools.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StringTools.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
+
11JPH_EXPORT String StringFormat(const char *inFMT, ...);
+
12
+
14template<typename T>
+
+
15String ConvertToString(const T &inValue)
+
16{
+
17 using OStringStream = std::basic_ostringstream<char, std::char_traits<char>, STLAllocator<char>>;
+
18 OStringStream oss;
+
19 oss << inValue;
+
20 return oss.str();
+
21}
+
+
22
+
+
25constexpr uint64 HashString(const char *inString)
+
26{
+
27 uint64 hash = 14695981039346656037UL;
+
28 for (const char *c = inString; *c != 0; ++c)
+
29 {
+
30 hash ^= *c;
+
31 hash = hash * 1099511628211UL;
+
32 }
+
33 return hash;
+
34}
+
+
35
+
37JPH_EXPORT void StringReplace(String &ioString, const string_view &inSearch, const string_view &inReplace);
+
38
+
40JPH_EXPORT void StringToVector(const string_view &inString, Array<String> &outVector, const string_view &inDelimiter = ",", bool inClearVector = true);
+
41
+
43JPH_EXPORT void VectorToString(const Array<String> &inVector, String &outString, const string_view &inDelimiter = ",");
+
44
+
46JPH_EXPORT String ToLower(const string_view &inString);
+
47
+
49JPH_EXPORT const char *NibbleToBinary(uint32 inNibble);
+
50
+ +
#define JPH_EXPORT
Definition Core.h:236
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+
JPH_EXPORT String ToLower(const string_view &inString)
Convert a string to lower case.
Definition StringTools.cpp:86
+
String ConvertToString(const T &inValue)
Convert type to string.
Definition StringTools.h:15
+
JPH_EXPORT void VectorToString(const Array< String > &inVector, String &outString, const string_view &inDelimiter=",")
Convert an array strings to a delimited string.
Definition StringTools.cpp:70
+
JPH_EXPORT void StringToVector(const string_view &inString, Array< String > &outVector, const string_view &inDelimiter=",", bool inClearVector=true)
Convert a delimited string to an array of strings.
Definition StringTools.cpp:43
+
JPH_NAMESPACE_BEGIN JPH_EXPORT String StringFormat(const char *inFMT,...)
Definition StringTools.cpp:15
+
constexpr uint64 HashString(const char *inString)
Definition StringTools.h:25
+
JPH_EXPORT void StringReplace(String &ioString, const string_view &inSearch, const string_view &inReplace)
Replace substring with other string.
Definition StringTools.cpp:28
+
JPH_EXPORT const char * NibbleToBinary(uint32 inNibble)
Converts the lower 4 bits of inNibble to a string that represents the number in binary format.
Definition StringTools.cpp:95
+
Definition Array.h:36
+
STL allocator that forwards to our allocation functions.
Definition STLAllocator.h:17
+
+
+ + + + diff --git a/_sub_shape_i_d_8h.html b/_sub_shape_i_d_8h.html new file mode 100644 index 000000000..d196a6064 --- /dev/null +++ b/_sub_shape_i_d_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/SubShapeID.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SubShapeID.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + +

+Classes

class  SubShapeID
 A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compound shape. More...
 
class  SubShapeIDCreator
 
+
+
+ + + + diff --git a/_sub_shape_i_d_8h.js b/_sub_shape_i_d_8h.js new file mode 100644 index 000000000..6cfe8d414 --- /dev/null +++ b/_sub_shape_i_d_8h.js @@ -0,0 +1,5 @@ +var _sub_shape_i_d_8h = +[ + [ "SubShapeID", "class_sub_shape_i_d.html", "class_sub_shape_i_d" ], + [ "SubShapeIDCreator", "class_sub_shape_i_d_creator.html", "class_sub_shape_i_d_creator" ] +]; \ No newline at end of file diff --git a/_sub_shape_i_d_8h_source.html b/_sub_shape_i_d_8h_source.html new file mode 100644 index 000000000..f01faa7ca --- /dev/null +++ b/_sub_shape_i_d_8h_source.html @@ -0,0 +1,269 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/SubShapeID.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SubShapeID.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
+
+ +
23{
+
24public:
+ +
26
+
28 using Type = uint32;
+
29
+ +
32
+
33 static_assert(sizeof(BiggerType) > sizeof(Type), "The calculation below assumes BiggerType is a bigger type than Type");
+
34
+
36 static constexpr uint MaxBits = 8 * sizeof(Type);
+
37
+
39 SubShapeID() = default;
+
40
+
+
42 Type PopID(uint inBits, SubShapeID &outRemainder) const
+
43 {
+
44 Type mask_bits = Type((BiggerType(1) << inBits) - 1);
+
45 Type fill_bits = Type(BiggerType(cEmpty) << (MaxBits - inBits)); // Fill left side bits with 1 so that if there's no remainder all bits will be set, note that we do this using a BiggerType since on intel 0xffffffff << 32 == 0xffffffff
+
46 Type v = mValue & mask_bits;
+
47 outRemainder = SubShapeID(Type(BiggerType(mValue) >> inBits) | fill_bits);
+
48 return v;
+
49 }
+
+
50
+
+
52 inline Type GetValue() const
+
53 {
+
54 return mValue;
+
55 }
+
+
56
+
+
58 inline void SetValue(Type inValue)
+
59 {
+
60 mValue = inValue;
+
61 }
+
+
62
+
+
65 inline bool IsEmpty() const
+
66 {
+
67 return mValue == cEmpty;
+
68 }
+
+
69
+
+
71 inline bool operator == (const SubShapeID &inRHS) const
+
72 {
+
73 return mValue == inRHS.mValue;
+
74 }
+
+
75
+
+
77 inline bool operator != (const SubShapeID &inRHS) const
+
78 {
+
79 return mValue != inRHS.mValue;
+
80 }
+
+
81
+
82private:
+
83 friend class SubShapeIDCreator;
+
84
+
86 static constexpr Type cEmpty = ~Type(0);
+
87
+
89 explicit SubShapeID(const Type &inValue) : mValue(inValue) { }
+
90
+
93 void PushID(Type inValue, uint inFirstBit, uint inBits)
+
94 {
+
95 // First clear the bits
+
96 mValue &= ~(Type((BiggerType(1) << inBits) - 1) << inFirstBit);
+
97
+
98 // Then set them to the new value
+
99 mValue |= inValue << inFirstBit;
+
100 }
+
101
+
102 Type mValue = cEmpty;
+
103};
+
+
104
+
+ +
108{
+
109public:
+
+
111 SubShapeIDCreator PushID(uint inValue, uint inBits) const
+
112 {
+
113 JPH_ASSERT(inValue < (SubShapeID::BiggerType(1) << inBits));
+
114 SubShapeIDCreator copy = *this;
+
115 copy.mID.PushID(inValue, mCurrentBit, inBits);
+
116 copy.mCurrentBit += inBits;
+
117 JPH_ASSERT(copy.mCurrentBit <= SubShapeID::MaxBits);
+
118 return copy;
+
119 }
+
+
120
+
121 // Get the resulting sub shape ID
+
+
122 const SubShapeID & GetID() const
+
123 {
+
124 return mID;
+
125 }
+
+
126
+
+
128 inline uint GetNumBitsWritten() const
+
129 {
+
130 return mCurrentBit;
+
131 }
+
+
132
+
133private:
+
134 SubShapeID mID;
+
135 uint mCurrentBit = 0;
+
136};
+
+
137
+ +
std::uint64_t uint64
Definition Core.h:456
+
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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
Definition SubShapeID.h:108
+
SubShapeIDCreator PushID(uint inValue, uint inBits) const
Add a new id to the chain of id's and return it.
Definition SubShapeID.h:111
+
const SubShapeID & GetID() const
Definition SubShapeID.h:122
+
uint GetNumBitsWritten() const
Get the number of bits that have been written to the sub shape ID so far.
Definition SubShapeID.h:128
+
A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...
Definition SubShapeID.h:23
+
bool operator==(const SubShapeID &inRHS) const
Check equal.
Definition SubShapeID.h:71
+
bool operator!=(const SubShapeID &inRHS) const
Check not-equal.
Definition SubShapeID.h:77
+
void SetValue(Type inValue)
Set the value of the sub shape ID (use with care!)
Definition SubShapeID.h:58
+
uint32 Type
Underlying storage type.
Definition SubShapeID.h:28
+
bool IsEmpty() const
Definition SubShapeID.h:65
+
static constexpr uint MaxBits
How many bits we can store in this ID.
Definition SubShapeID.h:36
+
Type PopID(uint inBits, SubShapeID &outRemainder) const
Get the next id in the chain of ids (pops parents before children)
Definition SubShapeID.h:42
+
Type GetValue() const
Get the value of the path to the sub shape ID.
Definition SubShapeID.h:52
+
SubShapeID()=default
Constructor.
+
uint64 BiggerType
Type that is bigger than the underlying storage type for operations that would otherwise overflow.
Definition SubShapeID.h:31
+
+
+ + + + diff --git a/_sub_shape_i_d_pair_8h.html b/_sub_shape_i_d_pair_8h.html new file mode 100644 index 000000000..4b7cc4f67 --- /dev/null +++ b/_sub_shape_i_d_pair_8h.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/SubShapeIDPair.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SubShapeIDPair.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  SubShapeIDPair
 A pair of bodies and their sub shape ID's. Can be used as a key in a map to find a contact point. More...
 
+ + + +

+Namespaces

namespace  std
 
+
+
+ + + + diff --git a/_sub_shape_i_d_pair_8h.js b/_sub_shape_i_d_pair_8h.js new file mode 100644 index 000000000..15728bf6e --- /dev/null +++ b/_sub_shape_i_d_pair_8h.js @@ -0,0 +1,4 @@ +var _sub_shape_i_d_pair_8h = +[ + [ "SubShapeIDPair", "class_sub_shape_i_d_pair.html", "class_sub_shape_i_d_pair" ] +]; \ No newline at end of file diff --git a/_sub_shape_i_d_pair_8h_source.html b/_sub_shape_i_d_pair_8h_source.html new file mode 100644 index 000000000..7a6f62bc7 --- /dev/null +++ b/_sub_shape_i_d_pair_8h_source.html @@ -0,0 +1,228 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/SubShapeIDPair.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SubShapeIDPair.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
+ + + +
10
+ +
12
+
+ +
15{
+
16public:
+ +
18
+
20 SubShapeIDPair() = default;
+
21 SubShapeIDPair(const BodyID &inBody1ID, const SubShapeID &inSubShapeID1, const BodyID &inBody2ID, const SubShapeID &inSubShapeID2) : mBody1ID(inBody1ID), mSubShapeID1(inSubShapeID1), mBody2ID(inBody2ID), mSubShapeID2(inSubShapeID2) { }
+ +
23 SubShapeIDPair(const SubShapeIDPair &) = default;
+
24
+
+
26 inline bool operator == (const SubShapeIDPair &inRHS) const
+
27 {
+
28 return UVec4::sLoadInt4(reinterpret_cast<const uint32 *>(this)) == UVec4::sLoadInt4(reinterpret_cast<const uint32 *>(&inRHS));
+
29 }
+
+
30
+
+
32 inline bool operator < (const SubShapeIDPair &inRHS) const
+
33 {
+
34 if (mBody1ID != inRHS.mBody1ID)
+
35 return mBody1ID < inRHS.mBody1ID;
+
36
+
37 if (mSubShapeID1.GetValue() != inRHS.mSubShapeID1.GetValue())
+
38 return mSubShapeID1.GetValue() < inRHS.mSubShapeID1.GetValue();
+
39
+
40 if (mBody2ID != inRHS.mBody2ID)
+
41 return mBody2ID < inRHS.mBody2ID;
+
42
+
43 return mSubShapeID2.GetValue() < inRHS.mSubShapeID2.GetValue();
+
44 }
+
+
45
+
46 const BodyID & GetBody1ID() const { return mBody1ID; }
+
47 const SubShapeID & GetSubShapeID1() const { return mSubShapeID1; }
+
48 const BodyID & GetBody2ID() const { return mBody2ID; }
+
49 const SubShapeID & GetSubShapeID2() const { return mSubShapeID2; }
+
50
+
51 uint64 GetHash() const { return HashBytes(this, sizeof(SubShapeIDPair)); }
+
52
+
53private:
+
54 BodyID mBody1ID;
+
55 SubShapeID mSubShapeID1;
+
56 BodyID mBody2ID;
+
57 SubShapeID mSubShapeID2;
+
58};
+
+
59
+
60static_assert(sizeof(SubShapeIDPair) == 16, "Unexpected size");
+
61static_assert(alignof(SubShapeIDPair) == 4, "Assuming 4 byte aligned");
+
62
+ +
64
+ +
66
+
67namespace std
+
68{
+
70 template <>
+
71 struct hash<JPH::SubShapeIDPair>
+
72 {
+
73 inline size_t operator () (const JPH::SubShapeIDPair &inRHS) const
+
74 {
+
75 return static_cast<size_t>(inRHS.GetHash());
+
76 }
+
77 };
+
78}
+
79
+ + +
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
JPH_NAMESPACE_BEGIN uint64 HashBytes(const void *inData, uint inSize, uint64 inSeed=0xcbf29ce484222325UL)
Definition HashCombine.h:15
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compou...
Definition SubShapeID.h:23
+
Type GetValue() const
Get the value of the path to the sub shape ID.
Definition SubShapeID.h:52
+
A pair of bodies and their sub shape ID's. Can be used as a key in a map to find a contact point.
Definition SubShapeIDPair.h:15
+
bool operator==(const SubShapeIDPair &inRHS) const
Equality operator.
Definition SubShapeIDPair.h:26
+
const SubShapeID & GetSubShapeID2() const
Definition SubShapeIDPair.h:49
+
uint64 GetHash() const
Definition SubShapeIDPair.h:51
+
JPH_OVERRIDE_NEW_DELETE SubShapeIDPair()=default
Constructor.
+
const BodyID & GetBody1ID() const
Definition SubShapeIDPair.h:46
+
SubShapeIDPair(const BodyID &inBody1ID, const SubShapeID &inSubShapeID1, const BodyID &inBody2ID, const SubShapeID &inSubShapeID2)
Definition SubShapeIDPair.h:21
+
SubShapeIDPair(const SubShapeIDPair &)=default
+
SubShapeIDPair & operator=(const SubShapeIDPair &)=default
+
const SubShapeID & GetSubShapeID1() const
Definition SubShapeIDPair.h:47
+
bool operator<(const SubShapeIDPair &inRHS) const
Less than operator, used to consistently order contact points for a deterministic simulation.
Definition SubShapeIDPair.h:32
+
const BodyID & GetBody2ID() const
Definition SubShapeIDPair.h:48
+
static JPH_INLINE UVec4 sLoadInt4(const uint32 *inV)
Load 4 ints from memory.
Definition UVec4.inl:78
+
Definition Array.h:575
+
+
+ + + + diff --git a/_swing_twist_constraint_8cpp.html b/_swing_twist_constraint_8cpp.html new file mode 100644 index 000000000..6e1343592 --- /dev/null +++ b/_swing_twist_constraint_8cpp.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/SwingTwistConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SwingTwistConstraint.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (SwingTwistConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (SwingTwistConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_swing_twist_constraint_8cpp.js b/_swing_twist_constraint_8cpp.js new file mode 100644 index 000000000..78f3ebfa6 --- /dev/null +++ b/_swing_twist_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _swing_twist_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_swing_twist_constraint_8cpp.html#a1513293e8c5fb785aa7142d42159c3f2", null ] +]; \ No newline at end of file diff --git a/_swing_twist_constraint_8h.html b/_swing_twist_constraint_8h.html new file mode 100644 index 000000000..d10e04e36 --- /dev/null +++ b/_swing_twist_constraint_8h.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/SwingTwistConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SwingTwistConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Classes

class  SwingTwistConstraintSettings
 
class  SwingTwistConstraint
 
+
+
+ + + + diff --git a/_swing_twist_constraint_8h.js b/_swing_twist_constraint_8h.js new file mode 100644 index 000000000..d65a4669e --- /dev/null +++ b/_swing_twist_constraint_8h.js @@ -0,0 +1,5 @@ +var _swing_twist_constraint_8h = +[ + [ "SwingTwistConstraintSettings", "class_swing_twist_constraint_settings.html", "class_swing_twist_constraint_settings" ], + [ "SwingTwistConstraint", "class_swing_twist_constraint.html", "class_swing_twist_constraint" ] +]; \ No newline at end of file diff --git a/_swing_twist_constraint_8h_source.html b/_swing_twist_constraint_8h_source.html new file mode 100644 index 000000000..180668f91 --- /dev/null +++ b/_swing_twist_constraint_8h_source.html @@ -0,0 +1,366 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/SwingTwistConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SwingTwistConstraint.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
+ + + + + +
12
+ +
14
+
+ +
21{
+
22public:
+ +
24
+
25 // See: ConstraintSettings::SaveBinaryState
+
26 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
27
+
29 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
+
30
+ +
33
+
35 RVec3 mPosition1 = RVec3::sZero();
+
36 Vec3 mTwistAxis1 = Vec3::sAxisX();
+
37 Vec3 mPlaneAxis1 = Vec3::sAxisY();
+
38
+
40 RVec3 mPosition2 = RVec3::sZero();
+
41 Vec3 mTwistAxis2 = Vec3::sAxisX();
+
42 Vec3 mPlaneAxis2 = Vec3::sAxisY();
+
43
+ +
46
+
48 float mNormalHalfConeAngle = 0.0f;
+
49 float mPlaneHalfConeAngle = 0.0f;
+
50
+
52 float mTwistMinAngle = 0.0f;
+
53 float mTwistMaxAngle = 0.0f;
+
54
+
56 float mMaxFrictionTorque = 0.0f;
+
57
+ + +
61
+
62protected:
+
63 // See: ConstraintSettings::RestoreBinaryState
+
64 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
65};
+
+
66
+
+ +
71{
+
72public:
+ +
74
+
76 SwingTwistConstraint(Body &inBody1, Body &inBody2, const SwingTwistConstraintSettings &inSettings);
+
77
+ +
80 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override;
+
81 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
82 virtual void ResetWarmStart() override;
+
83 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
84 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
85 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
86#ifdef JPH_DEBUG_RENDERER
+
87 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
88 virtual void DrawConstraintLimits(DebugRenderer *inRenderer) const override;
+
89#endif // JPH_DEBUG_RENDERER
+
90 virtual void SaveState(StateRecorder &inStream) const override;
+
91 virtual void RestoreState(StateRecorder &inStream) override;
+
92 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
93
+
94 // See: TwoBodyConstraint
+
95 virtual Mat44 GetConstraintToBody1Matrix() const override { return Mat44::sRotationTranslation(mConstraintToBody1, mLocalSpacePosition1); }
+
96 virtual Mat44 GetConstraintToBody2Matrix() const override { return Mat44::sRotationTranslation(mConstraintToBody2, mLocalSpacePosition2); }
+
97
+
99 inline Vec3 GetLocalSpacePosition1() const { return mLocalSpacePosition1; }
+
100 inline Vec3 GetLocalSpacePosition2() const { return mLocalSpacePosition2; }
+
101 inline Quat GetConstraintToBody1() const { return mConstraintToBody1; }
+
102 inline Quat GetConstraintToBody2() const { return mConstraintToBody2; }
+
103
+
105 inline float GetNormalHalfConeAngle() const { return mNormalHalfConeAngle; }
+
106 inline void SetNormalHalfConeAngle(float inAngle) { mNormalHalfConeAngle = inAngle; UpdateLimits(); }
+
107 inline float GetPlaneHalfConeAngle() const { return mPlaneHalfConeAngle; }
+
108 inline void SetPlaneHalfConeAngle(float inAngle) { mPlaneHalfConeAngle = inAngle; UpdateLimits(); }
+
109 inline float GetTwistMinAngle() const { return mTwistMinAngle; }
+
110 inline void SetTwistMinAngle(float inAngle) { mTwistMinAngle = inAngle; UpdateLimits(); }
+
111 inline float GetTwistMaxAngle() const { return mTwistMaxAngle; }
+
112 inline void SetTwistMaxAngle(float inAngle) { mTwistMaxAngle = inAngle; UpdateLimits(); }
+
113
+
115 const MotorSettings & GetSwingMotorSettings() const { return mSwingMotorSettings; }
+
116 MotorSettings & GetSwingMotorSettings() { return mSwingMotorSettings; }
+
117 const MotorSettings & GetTwistMotorSettings() const { return mTwistMotorSettings; }
+
118 MotorSettings & GetTwistMotorSettings() { return mTwistMotorSettings; }
+
119
+
121 void SetMaxFrictionTorque(float inFrictionTorque) { mMaxFrictionTorque = inFrictionTorque; }
+
122 float GetMaxFrictionTorque() const { return mMaxFrictionTorque; }
+
123
+
125
+
127 void SetSwingMotorState(EMotorState inState);
+
128 EMotorState GetSwingMotorState() const { return mSwingMotorState; }
+
129 void SetTwistMotorState(EMotorState inState);
+
130 EMotorState GetTwistMotorState() const { return mTwistMotorState; }
+
131
+
133 void SetTargetAngularVelocityCS(Vec3Arg inAngularVelocity) { mTargetAngularVelocity = inAngularVelocity; }
+
134 Vec3 GetTargetAngularVelocityCS() const { return mTargetAngularVelocity; }
+
135
+
137 void SetTargetOrientationCS(QuatArg inOrientation);
+
138 Quat GetTargetOrientationCS() const { return mTargetOrientation; }
+
139
+
142 void SetTargetOrientationBS(QuatArg inOrientation) { SetTargetOrientationCS(mConstraintToBody1.Conjugated() * inOrientation * mConstraintToBody2); }
+
143
+
146 Quat GetRotationInConstraintSpace() const;
+
147
+
149 inline Vec3 GetTotalLambdaPosition() const { return mPointConstraintPart.GetTotalLambda(); }
+
150 inline float GetTotalLambdaTwist() const { return mSwingTwistConstraintPart.GetTotalTwistLambda(); }
+
151 inline float GetTotalLambdaSwingY() const { return mSwingTwistConstraintPart.GetTotalSwingYLambda(); }
+
152 inline float GetTotalLambdaSwingZ() const { return mSwingTwistConstraintPart.GetTotalSwingZLambda(); }
+
153 inline Vec3 GetTotalLambdaMotor() const { return Vec3(mMotorConstraintPart[0].GetTotalLambda(), mMotorConstraintPart[1].GetTotalLambda(), mMotorConstraintPart[2].GetTotalLambda()); }
+
154
+
155private:
+
156 // Update the limits in the swing twist constraint part
+
157 void UpdateLimits();
+
158
+
159 // CONFIGURATION PROPERTIES FOLLOW
+
160
+
161 // Local space constraint positions
+
162 Vec3 mLocalSpacePosition1;
+
163 Vec3 mLocalSpacePosition2;
+
164
+
165 // Transforms from constraint space to body space
+
166 Quat mConstraintToBody1;
+
167 Quat mConstraintToBody2;
+
168
+
169 // Limits
+
170 float mNormalHalfConeAngle;
+
171 float mPlaneHalfConeAngle;
+
172 float mTwistMinAngle;
+
173 float mTwistMaxAngle;
+
174
+
175 // Friction
+
176 float mMaxFrictionTorque;
+
177
+
178 // Motor controls
+
179 MotorSettings mSwingMotorSettings;
+
180 MotorSettings mTwistMotorSettings;
+
181 EMotorState mSwingMotorState = EMotorState::Off;
+
182 EMotorState mTwistMotorState = EMotorState::Off;
+
183 Vec3 mTargetAngularVelocity = Vec3::sZero();
+
184 Quat mTargetOrientation = Quat::sIdentity();
+
185
+
186 // RUN TIME PROPERTIES FOLLOW
+
187
+
188 // Rotation axis for motor constraint parts
+
189 Vec3 mWorldSpaceMotorAxis[3];
+
190
+
191 // The constraint parts
+
192 PointConstraintPart mPointConstraintPart;
+
193 SwingTwistConstraintPart mSwingTwistConstraintPart;
+
194 AngleConstraintPart mMotorConstraintPart[3];
+
195};
+
+
196
+ + +
EConstraintSpace
Certain constraints support setting them up in local or world space. This governs what is used.
Definition Constraint.h:58
+
@ WorldSpace
All constraint properties are specified in world space.
+
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#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
+ +
EMotorState
Definition MotorSettings.h:17
+
@ Off
Motor is off.
+ +
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+ +
ESwingType
How the swing limit behaves.
Definition SwingTwistConstraintPart.h:15
+
@ Cone
Swing is limited by a cone shape, note that this cone starts to deform for larger swing angles....
+ +
Definition AngleConstraintPart.h:37
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
static JPH_INLINE Mat44 sRotationTranslation(QuatArg inR, Vec3Arg inT)
Get matrix that rotates and translates.
Definition Mat44.inl:149
+
Definition MotorSettings.h:26
+
Definition PointConstraintPart.h:41
+
Definition Quat.h:33
+
static JPH_INLINE Quat sIdentity()
Definition Quat.h:103
+
Definition Reference.h:101
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition SwingTwistConstraint.h:71
+
void SetPlaneHalfConeAngle(float inAngle)
Definition SwingTwistConstraint.h:108
+
float GetNormalHalfConeAngle() const
Definition SwingTwistConstraint.h:105
+
void SetTwistMinAngle(float inAngle)
Definition SwingTwistConstraint.h:110
+
float GetTotalLambdaSwingY() const
Definition SwingTwistConstraint.h:151
+
float GetTwistMaxAngle() const
Definition SwingTwistConstraint.h:111
+
virtual EConstraintSubType GetSubType() const override
Get the sub type of a constraint.
Definition SwingTwistConstraint.h:79
+
virtual Mat44 GetConstraintToBody2Matrix() const override
Calculates the transform that transforms from constraint space to body 2 space. The first column of t...
Definition SwingTwistConstraint.h:96
+
float GetTotalLambdaSwingZ() const
Definition SwingTwistConstraint.h:152
+
void SetTargetAngularVelocityCS(Vec3Arg inAngularVelocity)
Set the target angular velocity of body 2 in constraint space of body 2.
Definition SwingTwistConstraint.h:133
+
Vec3 GetTotalLambdaMotor() const
Definition SwingTwistConstraint.h:153
+
EMotorState GetTwistMotorState() const
Definition SwingTwistConstraint.h:130
+
Quat GetConstraintToBody1() const
Definition SwingTwistConstraint.h:101
+
void SetTwistMaxAngle(float inAngle)
Definition SwingTwistConstraint.h:112
+
void SetNormalHalfConeAngle(float inAngle)
Definition SwingTwistConstraint.h:106
+
Vec3 GetLocalSpacePosition1() const
Definition SwingTwistConstraint.h:99
+
const MotorSettings & GetSwingMotorSettings() const
Definition SwingTwistConstraint.h:115
+
float GetPlaneHalfConeAngle() const
Definition SwingTwistConstraint.h:107
+
float GetMaxFrictionTorque() const
Definition SwingTwistConstraint.h:122
+
Quat GetConstraintToBody2() const
Definition SwingTwistConstraint.h:102
+
Vec3 GetTargetAngularVelocityCS() const
Definition SwingTwistConstraint.h:134
+
Vec3 GetTotalLambdaPosition() const
Definition SwingTwistConstraint.h:149
+
void SetTargetOrientationBS(QuatArg inOrientation)
Definition SwingTwistConstraint.h:142
+
Vec3 GetLocalSpacePosition2() const
Definition SwingTwistConstraint.h:100
+
Quat GetTargetOrientationCS() const
Definition SwingTwistConstraint.h:138
+
virtual Mat44 GetConstraintToBody1Matrix() const override
Calculates the transform that transforms from constraint space to body 1 space. The first column of t...
Definition SwingTwistConstraint.h:95
+
void SetMaxFrictionTorque(float inFrictionTorque)
Definition SwingTwistConstraint.h:121
+
MotorSettings & GetSwingMotorSettings()
Definition SwingTwistConstraint.h:116
+
float GetTwistMinAngle() const
Definition SwingTwistConstraint.h:109
+
const MotorSettings & GetTwistMotorSettings() const
Definition SwingTwistConstraint.h:117
+
MotorSettings & GetTwistMotorSettings()
Definition SwingTwistConstraint.h:118
+
float GetTotalLambdaTwist() const
Definition SwingTwistConstraint.h:150
+
EMotorState GetSwingMotorState() const
Definition SwingTwistConstraint.h:128
+
Definition SwingTwistConstraintPart.h:33
+
Definition SwingTwistConstraint.h:21
+
MotorSettings mSwingMotorSettings
Definition SwingTwistConstraint.h:59
+
MotorSettings mTwistMotorSettings
Definition SwingTwistConstraint.h:60
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const =0
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition Vec3.h:53
+
static JPH_INLINE Vec3 sAxisY()
Definition Vec3.h:54
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
+
+ + + + diff --git a/_swing_twist_constraint_part_8h.html b/_swing_twist_constraint_part_8h.html new file mode 100644 index 000000000..30b3c7fd1 --- /dev/null +++ b/_swing_twist_constraint_part_8h.html @@ -0,0 +1,167 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/SwingTwistConstraintPart.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SwingTwistConstraintPart.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  SwingTwistConstraintPart
 
+ + + + +

+Enumerations

enum class  ESwingType : uint8 { Cone +, Pyramid + }
 How the swing limit behaves. More...
 
+

Enumeration Type Documentation

+ +

◆ ESwingType

+ +
+
+ + + + + +
+ + + + +
enum class ESwingType : uint8
+
+strong
+
+ +

How the swing limit behaves.

+ + + +
Enumerator
Cone 

Swing is limited by a cone shape, note that this cone starts to deform for larger swing angles. Cone limits only support limits that are symmetric around 0.

+
Pyramid 

Swing is limited by a pyramid shape, note that this pyramid starts to deform for larger swing angles.

+
+ +
+
+
+
+ + + + diff --git a/_swing_twist_constraint_part_8h.js b/_swing_twist_constraint_part_8h.js new file mode 100644 index 000000000..a646dc9b1 --- /dev/null +++ b/_swing_twist_constraint_part_8h.js @@ -0,0 +1,8 @@ +var _swing_twist_constraint_part_8h = +[ + [ "SwingTwistConstraintPart", "class_swing_twist_constraint_part.html", "class_swing_twist_constraint_part" ], + [ "ESwingType", "_swing_twist_constraint_part_8h.html#add9e89df628b33308461ef46e1b796b6", [ + [ "Cone", "_swing_twist_constraint_part_8h.html#add9e89df628b33308461ef46e1b796b6acd2c8bc6e5f1ea17c918ccaf89660104", null ], + [ "Pyramid", "_swing_twist_constraint_part_8h.html#add9e89df628b33308461ef46e1b796b6a5e5b0d93bab61584149905b5e5dc71a0", null ] + ] ] +]; \ No newline at end of file diff --git a/_swing_twist_constraint_part_8h_source.html b/_swing_twist_constraint_part_8h_source.html new file mode 100644 index 000000000..3c978f3ea --- /dev/null +++ b/_swing_twist_constraint_part_8h_source.html @@ -0,0 +1,799 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart/SwingTwistConstraintPart.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SwingTwistConstraintPart.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
+ + + +
10
+ +
12
+
+
14enum class ESwingType : uint8
+
15{
+
16 Cone,
+
17 Pyramid,
+
18};
+
+
19
+
+ +
33{
+
34public:
+
+
36 void SetSwingType(ESwingType inSwingType)
+
37 {
+
38 mSwingType = inSwingType;
+
39 }
+
+
40
+
+ +
43 {
+
44 return mSwingType;
+
45 }
+
+
46
+
+
48 void SetLimits(float inTwistMinAngle, float inTwistMaxAngle, float inSwingYMinAngle, float inSwingYMaxAngle, float inSwingZMinAngle, float inSwingZMaxAngle)
+
49 {
+
50 constexpr float cLockedAngle = DegreesToRadians(0.5f);
+
51 constexpr float cFreeAngle = DegreesToRadians(179.5f);
+
52
+
53 // Assume sane input
+
54 JPH_ASSERT(inTwistMinAngle <= inTwistMaxAngle);
+
55 JPH_ASSERT(inSwingYMinAngle <= inSwingYMaxAngle);
+
56 JPH_ASSERT(inSwingZMinAngle <= inSwingZMaxAngle);
+
57 JPH_ASSERT(inSwingYMinAngle >= -JPH_PI && inSwingYMaxAngle <= JPH_PI);
+
58 JPH_ASSERT(inSwingZMinAngle >= -JPH_PI && inSwingZMaxAngle <= JPH_PI);
+
59
+
60 // Calculate the sine and cosine of the half angles
+
61 Vec4 half_twist = 0.5f * Vec4(inTwistMinAngle, inTwistMaxAngle, 0, 0);
+
62 Vec4 twist_s, twist_c;
+
63 half_twist.SinCos(twist_s, twist_c);
+
64 Vec4 half_swing = 0.5f * Vec4(inSwingYMinAngle, inSwingYMaxAngle, inSwingZMinAngle, inSwingZMaxAngle);
+
65 Vec4 swing_s, swing_c;
+
66 half_swing.SinCos(swing_s, swing_c);
+
67
+
68 // Store half angles for pyramid limit
+
69 mSwingYHalfMinAngle = half_swing.GetX();
+
70 mSwingYHalfMaxAngle = half_swing.GetY();
+
71 mSwingZHalfMinAngle = half_swing.GetZ();
+
72 mSwingZHalfMaxAngle = half_swing.GetW();
+
73
+
74 // Store axis flags which are used at runtime to quickly decided which constraints to apply
+
75 mRotationFlags = 0;
+
76 if (inTwistMinAngle > -cLockedAngle && inTwistMaxAngle < cLockedAngle)
+
77 {
+
78 mRotationFlags |= TwistXLocked;
+
79 mSinTwistHalfMinAngle = 0.0f;
+
80 mSinTwistHalfMaxAngle = 0.0f;
+
81 mCosTwistHalfMinAngle = 1.0f;
+
82 mCosTwistHalfMaxAngle = 1.0f;
+
83 }
+
84 else if (inTwistMinAngle < -cFreeAngle && inTwistMaxAngle > cFreeAngle)
+
85 {
+
86 mRotationFlags |= TwistXFree;
+
87 mSinTwistHalfMinAngle = -1.0f;
+
88 mSinTwistHalfMaxAngle = 1.0f;
+
89 mCosTwistHalfMinAngle = 0.0f;
+
90 mCosTwistHalfMaxAngle = 0.0f;
+
91 }
+
92 else
+
93 {
+
94 mSinTwistHalfMinAngle = twist_s.GetX();
+
95 mSinTwistHalfMaxAngle = twist_s.GetY();
+
96 mCosTwistHalfMinAngle = twist_c.GetX();
+
97 mCosTwistHalfMaxAngle = twist_c.GetY();
+
98 }
+
99
+
100 if (inSwingYMinAngle > -cLockedAngle && inSwingYMaxAngle < cLockedAngle)
+
101 {
+
102 mRotationFlags |= SwingYLocked;
+
103 mSinSwingYHalfMinAngle = 0.0f;
+
104 mSinSwingYHalfMaxAngle = 0.0f;
+
105 mCosSwingYHalfMinAngle = 1.0f;
+
106 mCosSwingYHalfMaxAngle = 1.0f;
+
107 }
+
108 else if (inSwingYMinAngle < -cFreeAngle && inSwingYMaxAngle > cFreeAngle)
+
109 {
+
110 mRotationFlags |= SwingYFree;
+
111 mSinSwingYHalfMinAngle = -1.0f;
+
112 mSinSwingYHalfMaxAngle = 1.0f;
+
113 mCosSwingYHalfMinAngle = 0.0f;
+
114 mCosSwingYHalfMaxAngle = 0.0f;
+
115 }
+
116 else
+
117 {
+
118 mSinSwingYHalfMinAngle = swing_s.GetX();
+
119 mSinSwingYHalfMaxAngle = swing_s.GetY();
+
120 mCosSwingYHalfMinAngle = swing_c.GetX();
+
121 mCosSwingYHalfMaxAngle = swing_c.GetY();
+
122 JPH_ASSERT(mSinSwingYHalfMinAngle <= mSinSwingYHalfMaxAngle);
+
123 }
+
124
+
125 if (inSwingZMinAngle > -cLockedAngle && inSwingZMaxAngle < cLockedAngle)
+
126 {
+
127 mRotationFlags |= SwingZLocked;
+
128 mSinSwingZHalfMinAngle = 0.0f;
+
129 mSinSwingZHalfMaxAngle = 0.0f;
+
130 mCosSwingZHalfMinAngle = 1.0f;
+
131 mCosSwingZHalfMaxAngle = 1.0f;
+
132 }
+
133 else if (inSwingZMinAngle < -cFreeAngle && inSwingZMaxAngle > cFreeAngle)
+
134 {
+
135 mRotationFlags |= SwingZFree;
+
136 mSinSwingZHalfMinAngle = -1.0f;
+
137 mSinSwingZHalfMaxAngle = 1.0f;
+
138 mCosSwingZHalfMinAngle = 0.0f;
+
139 mCosSwingZHalfMaxAngle = 0.0f;
+
140 }
+
141 else
+
142 {
+
143 mSinSwingZHalfMinAngle = swing_s.GetZ();
+
144 mSinSwingZHalfMaxAngle = swing_s.GetW();
+
145 mCosSwingZHalfMinAngle = swing_c.GetZ();
+
146 mCosSwingZHalfMaxAngle = swing_c.GetW();
+
147 JPH_ASSERT(mSinSwingZHalfMinAngle <= mSinSwingZHalfMaxAngle);
+
148 }
+
149 }
+
+
150
+
152 static constexpr uint cClampedTwistMin = 1 << 0;
+
153 static constexpr uint cClampedTwistMax = 1 << 1;
+
154 static constexpr uint cClampedSwingYMin = 1 << 2;
+
155 static constexpr uint cClampedSwingYMax = 1 << 3;
+
156 static constexpr uint cClampedSwingZMin = 1 << 4;
+
157 static constexpr uint cClampedSwingZMax = 1 << 5;
+
158
+
+
160 static JPH_INLINE bool sDistanceToMinShorter(float inDeltaMin, float inDeltaMax)
+
161 {
+
162 // We're outside of the limits, get actual delta to min/max range
+
163 // Note that a swing/twist of -1 and 1 represent the same angle, so if the difference is bigger than 1, the shortest angle is the other way around (2 - difference)
+
164 // We should actually be working with angles rather than sin(angle / 2). When the difference is small the approximation is accurate, but
+
165 // when working with extreme values the calculation is off and e.g. when the limit is between 0 and 180 a value of approx -60 will clamp
+
166 // to 180 rather than 0 (you'd expect anything > -90 to go to 0).
+
167 inDeltaMin = abs(inDeltaMin);
+
168 if (inDeltaMin > 1.0f) inDeltaMin = 2.0f - inDeltaMin;
+
169 inDeltaMax = abs(inDeltaMax);
+
170 if (inDeltaMax > 1.0f) inDeltaMax = 2.0f - inDeltaMax;
+
171 return inDeltaMin < inDeltaMax;
+
172 }
+
+
173
+
+
175 inline void ClampSwingTwist(Quat &ioSwing, Quat &ioTwist, uint &outClampedAxis) const
+
176 {
+
177 // Start with not clamped
+
178 outClampedAxis = 0;
+
179
+
180 // Check that swing and twist quaternions don't contain rotations around the wrong axis
+
181 JPH_ASSERT(ioSwing.GetX() == 0.0f);
+
182 JPH_ASSERT(ioTwist.GetY() == 0.0f);
+
183 JPH_ASSERT(ioTwist.GetZ() == 0.0f);
+
184
+
185 // Ensure quaternions have w > 0
+
186 bool negate_swing = ioSwing.GetW() < 0.0f;
+
187 if (negate_swing)
+
188 ioSwing = -ioSwing;
+
189 bool negate_twist = ioTwist.GetW() < 0.0f;
+
190 if (negate_twist)
+
191 ioTwist = -ioTwist;
+
192
+
193 if (mRotationFlags & TwistXLocked)
+
194 {
+
195 // Twist axis is locked, clamp whenever twist is not identity
+
196 outClampedAxis |= ioTwist.GetX() != 0.0f? (cClampedTwistMin | cClampedTwistMax) : 0;
+
197 ioTwist = Quat::sIdentity();
+
198 }
+
199 else if ((mRotationFlags & TwistXFree) == 0)
+
200 {
+
201 // Twist axis has limit, clamp whenever out of range
+
202 float delta_min = mSinTwistHalfMinAngle - ioTwist.GetX();
+
203 float delta_max = ioTwist.GetX() - mSinTwistHalfMaxAngle;
+
204 if (delta_min > 0.0f || delta_max > 0.0f)
+
205 {
+
206 // Pick the twist that corresponds to the smallest delta
+
207 if (sDistanceToMinShorter(delta_min, delta_max))
+
208 {
+
209 ioTwist = Quat(mSinTwistHalfMinAngle, 0, 0, mCosTwistHalfMinAngle);
+
210 outClampedAxis |= cClampedTwistMin;
+
211 }
+
212 else
+
213 {
+
214 ioTwist = Quat(mSinTwistHalfMaxAngle, 0, 0, mCosTwistHalfMaxAngle);
+
215 outClampedAxis |= cClampedTwistMax;
+
216 }
+
217 }
+
218 }
+
219
+
220 // Clamp swing
+
221 if (mRotationFlags & SwingYLocked)
+
222 {
+
223 if (mRotationFlags & SwingZLocked)
+
224 {
+
225 // Both swing Y and Z are disabled, no degrees of freedom in swing
+
226 outClampedAxis |= ioSwing.GetY() != 0.0f? (cClampedSwingYMin | cClampedSwingYMax) : 0;
+
227 outClampedAxis |= ioSwing.GetZ() != 0.0f? (cClampedSwingZMin | cClampedSwingZMax) : 0;
+
228 ioSwing = Quat::sIdentity();
+
229 }
+
230 else
+
231 {
+
232 // Swing Y angle disabled, only 1 degree of freedom in swing
+
233 outClampedAxis |= ioSwing.GetY() != 0.0f? (cClampedSwingYMin | cClampedSwingYMax) : 0;
+
234 float delta_min = mSinSwingZHalfMinAngle - ioSwing.GetZ();
+
235 float delta_max = ioSwing.GetZ() - mSinSwingZHalfMaxAngle;
+
236 if (delta_min > 0.0f || delta_max > 0.0f)
+
237 {
+
238 // Pick the swing that corresponds to the smallest delta
+
239 if (sDistanceToMinShorter(delta_min, delta_max))
+
240 {
+
241 ioSwing = Quat(0, 0, mSinSwingZHalfMinAngle, mCosSwingZHalfMinAngle);
+
242 outClampedAxis |= cClampedSwingZMin;
+
243 }
+
244 else
+
245 {
+
246 ioSwing = Quat(0, 0, mSinSwingZHalfMaxAngle, mCosSwingZHalfMaxAngle);
+
247 outClampedAxis |= cClampedSwingZMax;
+
248 }
+
249 }
+
250 else if ((outClampedAxis & cClampedSwingYMin) != 0)
+
251 {
+
252 float z = ioSwing.GetZ();
+
253 ioSwing = Quat(0, 0, z, sqrt(1.0f - Square(z)));
+
254 }
+
255 }
+
256 }
+
257 else if (mRotationFlags & SwingZLocked)
+
258 {
+
259 // Swing Z angle disabled, only 1 degree of freedom in swing
+
260 outClampedAxis |= ioSwing.GetZ() != 0.0f? (cClampedSwingZMin | cClampedSwingZMax) : 0;
+
261 float delta_min = mSinSwingYHalfMinAngle - ioSwing.GetY();
+
262 float delta_max = ioSwing.GetY() - mSinSwingYHalfMaxAngle;
+
263 if (delta_min > 0.0f || delta_max > 0.0f)
+
264 {
+
265 // Pick the swing that corresponds to the smallest delta
+
266 if (sDistanceToMinShorter(delta_min, delta_max))
+
267 {
+
268 ioSwing = Quat(0, mSinSwingYHalfMinAngle, 0, mCosSwingYHalfMinAngle);
+
269 outClampedAxis |= cClampedSwingYMin;
+
270 }
+
271 else
+
272 {
+
273 ioSwing = Quat(0, mSinSwingYHalfMaxAngle, 0, mCosSwingYHalfMaxAngle);
+
274 outClampedAxis |= cClampedSwingYMax;
+
275 }
+
276 }
+
277 else if ((outClampedAxis & cClampedSwingZMin) != 0)
+
278 {
+
279 float y = ioSwing.GetY();
+
280 ioSwing = Quat(0, y, 0, sqrt(1.0f - Square(y)));
+
281 }
+
282 }
+
283 else
+
284 {
+
285 // Two degrees of freedom
+
286 if (mSwingType == ESwingType::Cone)
+
287 {
+
288 // Use ellipse to solve limits
+
289 Ellipse ellipse(mSinSwingYHalfMaxAngle, mSinSwingZHalfMaxAngle);
+
290 Float2 point(ioSwing.GetY(), ioSwing.GetZ());
+
291 if (!ellipse.IsInside(point))
+
292 {
+
293 Float2 closest = ellipse.GetClosestPoint(point);
+
294 ioSwing = Quat(0, closest.x, closest.y, sqrt(max(0.0f, 1.0f - Square(closest.x) - Square(closest.y))));
+
295 outClampedAxis |= cClampedSwingYMin | cClampedSwingYMax | cClampedSwingZMin | cClampedSwingZMax; // We're not using the flags on which side we got clamped here
+
296 }
+
297 }
+
298 else
+
299 {
+
300 // Use pyramid to solve limits
+
301 // The quaternion rotating by angle y around the Y axis then rotating by angle z around the Z axis is:
+
302 // q = Quat::sRotation(Vec3::sAxisZ(), z) * Quat::sRotation(Vec3::sAxisY(), y)
+
303 // [q.x, q.y, q.z, q.w] = [-sin(y / 2) * sin(z / 2), sin(y / 2) * cos(z / 2), cos(y / 2) * sin(z / 2), cos(y / 2) * cos(z / 2)]
+
304 // So we can calculate y / 2 = atan2(q.y, q.w) and z / 2 = atan2(q.z, q.w)
+
305 Vec4 half_angle = Vec4::sATan2(ioSwing.GetXYZW().Swizzle<SWIZZLE_Y, SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_Z>(), ioSwing.GetXYZW().SplatW());
+
306 Vec4 min_half_angle(mSwingYHalfMinAngle, mSwingYHalfMinAngle, mSwingZHalfMinAngle, mSwingZHalfMinAngle);
+
307 Vec4 max_half_angle(mSwingYHalfMaxAngle, mSwingYHalfMaxAngle, mSwingZHalfMaxAngle, mSwingZHalfMaxAngle);
+
308 Vec4 clamped_half_angle = Vec4::sMin(Vec4::sMax(half_angle, min_half_angle), max_half_angle);
+
309 UVec4 unclamped = Vec4::sEquals(half_angle, clamped_half_angle);
+
310 if (!unclamped.TestAllTrue())
+
311 {
+
312 // We now calculate the quaternion again using the formula for q above,
+
313 // but we leave out the x component in order to not introduce twist
+
314 Vec4 s, c;
+
315 clamped_half_angle.SinCos(s, c);
+
316 ioSwing = Quat(0, s.GetY() * c.GetZ(), c.GetY() * s.GetZ(), c.GetY() * c.GetZ()).Normalized();
+
317 outClampedAxis |= cClampedSwingYMin | cClampedSwingYMax | cClampedSwingZMin | cClampedSwingZMax; // We're not using the flags on which side we got clamped here
+
318 }
+
319 }
+
320 }
+
321
+
322 // Flip sign back
+
323 if (negate_swing)
+
324 ioSwing = -ioSwing;
+
325 if (negate_twist)
+
326 ioTwist = -ioTwist;
+
327
+
328 JPH_ASSERT(ioSwing.IsNormalized());
+
329 JPH_ASSERT(ioTwist.IsNormalized());
+
330 }
+
+
331
+
+
337 inline void CalculateConstraintProperties(const Body &inBody1, const Body &inBody2, QuatArg inConstraintRotation, QuatArg inConstraintToWorld)
+
338 {
+
339 // Decompose into swing and twist
+
340 Quat q_swing, q_twist;
+
341 inConstraintRotation.GetSwingTwist(q_swing, q_twist);
+
342
+
343 // Clamp against joint limits
+
344 Quat q_clamped_swing = q_swing, q_clamped_twist = q_twist;
+
345 uint clamped_axis;
+
346 ClampSwingTwist(q_clamped_swing, q_clamped_twist, clamped_axis);
+
347
+
348 if (mRotationFlags & SwingYLocked)
+
349 {
+
350 Quat twist_to_world = inConstraintToWorld * q_swing;
+
351 mWorldSpaceSwingLimitYRotationAxis = twist_to_world.RotateAxisY();
+
352 mWorldSpaceSwingLimitZRotationAxis = twist_to_world.RotateAxisZ();
+
353
+
354 if (mRotationFlags & SwingZLocked)
+
355 {
+
356 // Swing fully locked
+
357 mSwingLimitYConstraintPart.CalculateConstraintProperties(inBody1, inBody2, mWorldSpaceSwingLimitYRotationAxis);
+
358 mSwingLimitZConstraintPart.CalculateConstraintProperties(inBody1, inBody2, mWorldSpaceSwingLimitZRotationAxis);
+
359 }
+
360 else
+
361 {
+
362 // Swing only locked around Y
+
363 mSwingLimitYConstraintPart.CalculateConstraintProperties(inBody1, inBody2, mWorldSpaceSwingLimitYRotationAxis);
+
364 if ((clamped_axis & (cClampedSwingZMin | cClampedSwingZMax)) != 0)
+
365 {
+
366 if ((clamped_axis & cClampedSwingZMin) != 0)
+
367 mWorldSpaceSwingLimitZRotationAxis = -mWorldSpaceSwingLimitZRotationAxis; // Flip axis if hitting min limit because the impulse limit is going to be between [-FLT_MAX, 0]
+
368 mSwingLimitZConstraintPart.CalculateConstraintProperties(inBody1, inBody2, mWorldSpaceSwingLimitZRotationAxis);
+
369 }
+
370 else
+
371 mSwingLimitZConstraintPart.Deactivate();
+
372 }
+
373 }
+
374 else if (mRotationFlags & SwingZLocked)
+
375 {
+
376 // Swing only locked around Z
+
377 Quat twist_to_world = inConstraintToWorld * q_swing;
+
378 mWorldSpaceSwingLimitYRotationAxis = twist_to_world.RotateAxisY();
+
379 mWorldSpaceSwingLimitZRotationAxis = twist_to_world.RotateAxisZ();
+
380
+
381 if ((clamped_axis & (cClampedSwingYMin | cClampedSwingYMax)) != 0)
+
382 {
+
383 if ((clamped_axis & cClampedSwingYMin) != 0)
+
384 mWorldSpaceSwingLimitYRotationAxis = -mWorldSpaceSwingLimitYRotationAxis; // Flip axis if hitting min limit because the impulse limit is going to be between [-FLT_MAX, 0]
+
385 mSwingLimitYConstraintPart.CalculateConstraintProperties(inBody1, inBody2, mWorldSpaceSwingLimitYRotationAxis);
+
386 }
+
387 else
+
388 mSwingLimitYConstraintPart.Deactivate();
+
389 mSwingLimitZConstraintPart.CalculateConstraintProperties(inBody1, inBody2, mWorldSpaceSwingLimitZRotationAxis);
+
390 }
+
391 else if ((mRotationFlags & SwingYZFree) != SwingYZFree)
+
392 {
+
393 // Swing has limits around Y and Z
+ +
395 {
+
396 // Calculate axis of rotation from clamped swing to swing
+
397 Vec3 current = (inConstraintToWorld * q_swing).RotateAxisX();
+
398 Vec3 desired = (inConstraintToWorld * q_clamped_swing).RotateAxisX();
+
399 mWorldSpaceSwingLimitYRotationAxis = desired.Cross(current);
+
400 float len = mWorldSpaceSwingLimitYRotationAxis.Length();
+
401 if (len != 0.0f)
+
402 {
+
403 mWorldSpaceSwingLimitYRotationAxis /= len;
+
404 mSwingLimitYConstraintPart.CalculateConstraintProperties(inBody1, inBody2, mWorldSpaceSwingLimitYRotationAxis);
+
405 }
+
406 else
+
407 mSwingLimitYConstraintPart.Deactivate();
+
408 }
+
409 else
+
410 mSwingLimitYConstraintPart.Deactivate();
+
411 mSwingLimitZConstraintPart.Deactivate();
+
412 }
+
413 else
+
414 {
+
415 // No swing limits
+
416 mSwingLimitYConstraintPart.Deactivate();
+
417 mSwingLimitZConstraintPart.Deactivate();
+
418 }
+
419
+
420 if (mRotationFlags & TwistXLocked)
+
421 {
+
422 // Twist locked, always activate constraint
+
423 mWorldSpaceTwistLimitRotationAxis = (inConstraintToWorld * q_swing).RotateAxisX();
+
424 mTwistLimitConstraintPart.CalculateConstraintProperties(inBody1, inBody2, mWorldSpaceTwistLimitRotationAxis);
+
425 }
+
426 else if ((mRotationFlags & TwistXFree) == 0)
+
427 {
+
428 // Twist has limits
+
429 if ((clamped_axis & (cClampedTwistMin | cClampedTwistMax)) != 0)
+
430 {
+
431 mWorldSpaceTwistLimitRotationAxis = (inConstraintToWorld * q_swing).RotateAxisX();
+
432 if ((clamped_axis & cClampedTwistMin) != 0)
+
433 mWorldSpaceTwistLimitRotationAxis = -mWorldSpaceTwistLimitRotationAxis; // Flip axis if hitting min limit because the impulse limit is going to be between [-FLT_MAX, 0]
+
434 mTwistLimitConstraintPart.CalculateConstraintProperties(inBody1, inBody2, mWorldSpaceTwistLimitRotationAxis);
+
435 }
+
436 else
+
437 mTwistLimitConstraintPart.Deactivate();
+
438 }
+
439 else
+
440 {
+
441 // No twist limits
+
442 mTwistLimitConstraintPart.Deactivate();
+
443 }
+
444 }
+
+
445
+
+ +
448 {
+
449 mSwingLimitYConstraintPart.Deactivate();
+
450 mSwingLimitZConstraintPart.Deactivate();
+
451 mTwistLimitConstraintPart.Deactivate();
+
452 }
+
+
453
+
+
455 inline bool IsActive() const
+
456 {
+
457 return mSwingLimitYConstraintPart.IsActive() || mSwingLimitZConstraintPart.IsActive() || mTwistLimitConstraintPart.IsActive();
+
458 }
+
+
459
+
+
461 inline void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
+
462 {
+
463 mSwingLimitYConstraintPart.WarmStart(ioBody1, ioBody2, inWarmStartImpulseRatio);
+
464 mSwingLimitZConstraintPart.WarmStart(ioBody1, ioBody2, inWarmStartImpulseRatio);
+
465 mTwistLimitConstraintPart.WarmStart(ioBody1, ioBody2, inWarmStartImpulseRatio);
+
466 }
+
+
467
+
+
469 inline bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)
+
470 {
+
471 bool impulse = false;
+
472
+
473 // Solve swing constraint
+
474 if (mSwingLimitYConstraintPart.IsActive())
+
475 impulse |= mSwingLimitYConstraintPart.SolveVelocityConstraint(ioBody1, ioBody2, mWorldSpaceSwingLimitYRotationAxis, -FLT_MAX, mSinSwingYHalfMinAngle == mSinSwingYHalfMaxAngle? FLT_MAX : 0.0f);
+
476
+
477 if (mSwingLimitZConstraintPart.IsActive())
+
478 impulse |= mSwingLimitZConstraintPart.SolveVelocityConstraint(ioBody1, ioBody2, mWorldSpaceSwingLimitZRotationAxis, -FLT_MAX, mSinSwingZHalfMinAngle == mSinSwingZHalfMaxAngle? FLT_MAX : 0.0f);
+
479
+
480 // Solve twist constraint
+
481 if (mTwistLimitConstraintPart.IsActive())
+
482 impulse |= mTwistLimitConstraintPart.SolveVelocityConstraint(ioBody1, ioBody2, mWorldSpaceTwistLimitRotationAxis, -FLT_MAX, mSinTwistHalfMinAngle == mSinTwistHalfMaxAngle? FLT_MAX : 0.0f);
+
483
+
484 return impulse;
+
485 }
+
+
486
+
+
493 inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, QuatArg inConstraintRotation, QuatArg inConstraintToBody1, QuatArg inConstraintToBody2, float inBaumgarte) const
+
494 {
+
495 Quat q_swing, q_twist;
+
496 inConstraintRotation.GetSwingTwist(q_swing, q_twist);
+
497
+
498 uint clamped_axis;
+
499 ClampSwingTwist(q_swing, q_twist, clamped_axis);
+
500
+
501 // Solve rotation violations
+
502 if (clamped_axis != 0)
+
503 {
+ +
505 Quat inv_initial_orientation = inConstraintToBody2 * (inConstraintToBody1 * q_swing * q_twist).Conjugated();
+
506 part.CalculateConstraintProperties(ioBody1, Mat44::sRotation(ioBody1.GetRotation()), ioBody2, Mat44::sRotation(ioBody2.GetRotation()));
+
507 return part.SolvePositionConstraint(ioBody1, ioBody2, inv_initial_orientation, inBaumgarte);
+
508 }
+
509
+
510 return false;
+
511 }
+
+
512
+
+
514 inline float GetTotalSwingYLambda() const
+
515 {
+
516 return mSwingLimitYConstraintPart.GetTotalLambda();
+
517 }
+
+
518
+
+
519 inline float GetTotalSwingZLambda() const
+
520 {
+
521 return mSwingLimitZConstraintPart.GetTotalLambda();
+
522 }
+
+
523
+
+
525 inline float GetTotalTwistLambda() const
+
526 {
+
527 return mTwistLimitConstraintPart.GetTotalLambda();
+
528 }
+
+
529
+
+
531 void SaveState(StateRecorder &inStream) const
+
532 {
+
533 mSwingLimitYConstraintPart.SaveState(inStream);
+
534 mSwingLimitZConstraintPart.SaveState(inStream);
+
535 mTwistLimitConstraintPart.SaveState(inStream);
+
536 }
+
+
537
+
+ +
540 {
+
541 mSwingLimitYConstraintPart.RestoreState(inStream);
+
542 mSwingLimitZConstraintPart.RestoreState(inStream);
+
543 mTwistLimitConstraintPart.RestoreState(inStream);
+
544 }
+
+
545
+
546private:
+
547 // CONFIGURATION PROPERTIES FOLLOW
+
548
+
549 enum ERotationFlags
+
550 {
+
552 TwistXLocked = 1 << 0,
+
553 SwingYLocked = 1 << 1,
+
554 SwingZLocked = 1 << 2,
+
555
+
557 TwistXFree = 1 << 3,
+
558 SwingYFree = 1 << 4,
+
559 SwingZFree = 1 << 5,
+
560 SwingYZFree = SwingYFree | SwingZFree
+
561 };
+
562
+
563 uint8 mRotationFlags;
+
564
+
565 // Constants
+
566 ESwingType mSwingType = ESwingType::Cone;
+
567 float mSinTwistHalfMinAngle;
+
568 float mSinTwistHalfMaxAngle;
+
569 float mCosTwistHalfMinAngle;
+
570 float mCosTwistHalfMaxAngle;
+
571 float mSwingYHalfMinAngle;
+
572 float mSwingYHalfMaxAngle;
+
573 float mSwingZHalfMinAngle;
+
574 float mSwingZHalfMaxAngle;
+
575 float mSinSwingYHalfMinAngle;
+
576 float mSinSwingYHalfMaxAngle;
+
577 float mSinSwingZHalfMinAngle;
+
578 float mSinSwingZHalfMaxAngle;
+
579 float mCosSwingYHalfMinAngle;
+
580 float mCosSwingYHalfMaxAngle;
+
581 float mCosSwingZHalfMinAngle;
+
582 float mCosSwingZHalfMaxAngle;
+
583
+
584 // RUN TIME PROPERTIES FOLLOW
+
585
+
587 Vec3 mWorldSpaceSwingLimitYRotationAxis;
+
588 Vec3 mWorldSpaceSwingLimitZRotationAxis;
+
589 Vec3 mWorldSpaceTwistLimitRotationAxis;
+
590
+
592 AngleConstraintPart mSwingLimitYConstraintPart;
+
593 AngleConstraintPart mSwingLimitZConstraintPart;
+
594 AngleConstraintPart mTwistLimitConstraintPart;
+
595};
+
+
596
+ + +
std::uint8_t uint8
Definition Core.h:453
+
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_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Square(T inV)
Square a value.
Definition Math.h:52
+
JPH_INLINE constexpr float DegreesToRadians(float inV)
Convert a value from degrees to radians.
Definition Math.h:13
+ +
ESwingType
How the swing limit behaves.
Definition SwingTwistConstraintPart.h:15
+
@ Pyramid
Swing is limited by a pyramid shape, note that this pyramid starts to deform for larger swing angles.
+
@ Cone
Swing is limited by a cone shape, note that this cone starts to deform for larger swing angles....
+
@ SWIZZLE_Z
Use the Z component.
Definition Swizzle.h:14
+
@ SWIZZLE_Y
Use the Y component.
Definition Swizzle.h:13
+
Definition AngleConstraintPart.h:37
+
void Deactivate()
Deactivate this constraint.
Definition AngleConstraintPart.h:148
+
bool IsActive() const
Check if constraint is active.
Definition AngleConstraintPart.h:155
+
void CalculateConstraintProperties(const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)
Definition AngleConstraintPart.h:81
+
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition AngleConstraintPart.h:244
+
void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
Definition AngleConstraintPart.h:164
+
bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
Definition AngleConstraintPart.h:176
+
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition AngleConstraintPart.h:238
+
float GetTotalLambda() const
Return lagrange multiplier.
Definition AngleConstraintPart.h:190
+
Definition Body.h:35
+
Quat GetRotation() const
World space rotation of the body.
Definition Body.h:231
+
Definition Ellipse.h:14
+
Float2 GetClosestPoint(const Float2 &inPoint) const
Definition Ellipse.h:30
+
bool IsInside(const Float2 &inPoint) const
Check if inPoint is inside the ellipse.
Definition Ellipse.h:22
+
Class that holds 2 floats, used as a storage class mainly.
Definition Float2.h:11
+
float y
Definition Float2.h:31
+
float x
Definition Float2.h:30
+
static JPH_INLINE Mat44 sRotation(Vec3Arg inAxis, float inAngle)
Rotate around arbitrary axis.
Definition Mat44.inl:139
+
Definition Quat.h:33
+
JPH_INLINE float GetW() const
Get W component (real part)
Definition Quat.h:78
+
JPH_INLINE float GetY() const
Get Y component (imaginary part j)
Definition Quat.h:72
+
JPH_INLINE float GetZ() const
Get Z component (imaginary part k)
Definition Quat.h:75
+
JPH_INLINE float GetX() const
Get X component (imaginary part i)
Definition Quat.h:69
+
static JPH_INLINE Quat sIdentity()
Definition Quat.h:103
+
JPH_INLINE Vec4 GetXYZW() const
Get the quaternion as a Vec4.
Definition Quat.h:84
+
JPH_INLINE void GetSwingTwist(Quat &outSwing, Quat &outTwist) const
Definition Quat.inl:215
+
JPH_INLINE Quat Normalized() const
Normalize the quaternion (make it length 1)
Definition Quat.h:139
+
JPH_INLINE Vec3 RotateAxisZ() const
Rotate a the vector (0, 0, 1) with this quaternion.
Definition Quat.inl:306
+
JPH_INLINE Vec3 RotateAxisY() const
Rotate a the vector (0, 1, 0) with this quaternion.
Definition Quat.inl:297
+
bool IsNormalized(float inTolerance=1.0e-5f) const
If the length of this quaternion is 1 +/- inTolerance.
Definition Quat.h:59
+
Definition RotationEulerConstraintPart.h:36
+
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, QuatArg inInvInitialOrientation, float inBaumgarte) const
Iteratively update the position constraint. Makes sure C(...) = 0.
Definition RotationEulerConstraintPart.h:182
+
void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, const Body &inBody2, Mat44Arg inRotation2)
Calculate properties used during the functions below.
Definition RotationEulerConstraintPart.h:139
+
Definition StateRecorder.h:48
+
Definition SwingTwistConstraintPart.h:33
+
float GetTotalSwingYLambda() const
Return lagrange multiplier for swing.
Definition SwingTwistConstraintPart.h:514
+
ESwingType GetSwingType() const
Get the swing type for this part.
Definition SwingTwistConstraintPart.h:42
+
void RestoreState(StateRecorder &inStream)
Restore state of this constraint part.
Definition SwingTwistConstraintPart.h:539
+
float GetTotalSwingZLambda() const
Definition SwingTwistConstraintPart.h:519
+
float GetTotalTwistLambda() const
Return lagrange multiplier for twist.
Definition SwingTwistConstraintPart.h:525
+
static constexpr uint cClampedSwingYMax
Definition SwingTwistConstraintPart.h:155
+
void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses.
Definition SwingTwistConstraintPart.h:461
+
static constexpr uint cClampedTwistMin
Flags to indicate which axis got clamped by ClampSwingTwist.
Definition SwingTwistConstraintPart.h:152
+
void ClampSwingTwist(Quat &ioSwing, Quat &ioTwist, uint &outClampedAxis) const
Clamp twist and swing against the constraint limits, returns which parts were clamped (everything ass...
Definition SwingTwistConstraintPart.h:175
+
static JPH_INLINE bool sDistanceToMinShorter(float inDeltaMin, float inDeltaMax)
Helper function to determine if we're clamped against the min or max limit.
Definition SwingTwistConstraintPart.h:160
+
static constexpr uint cClampedTwistMax
Definition SwingTwistConstraintPart.h:153
+
static constexpr uint cClampedSwingZMin
Definition SwingTwistConstraintPart.h:156
+
void SetSwingType(ESwingType inSwingType)
Override the swing type.
Definition SwingTwistConstraintPart.h:36
+
void SaveState(StateRecorder &inStream) const
Save state of this constraint part.
Definition SwingTwistConstraintPart.h:531
+
static constexpr uint cClampedSwingYMin
Definition SwingTwistConstraintPart.h:154
+
void SetLimits(float inTwistMinAngle, float inTwistMaxAngle, float inSwingYMinAngle, float inSwingYMaxAngle, float inSwingZMinAngle, float inSwingZMaxAngle)
Set limits for this constraint (see description above for parameters)
Definition SwingTwistConstraintPart.h:48
+
void CalculateConstraintProperties(const Body &inBody1, const Body &inBody2, QuatArg inConstraintRotation, QuatArg inConstraintToWorld)
Definition SwingTwistConstraintPart.h:337
+
static constexpr uint cClampedSwingZMax
Definition SwingTwistConstraintPart.h:157
+
bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)
Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equ...
Definition SwingTwistConstraintPart.h:469
+
void Deactivate()
Deactivate this constraint.
Definition SwingTwistConstraintPart.h:447
+
bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, QuatArg inConstraintRotation, QuatArg inConstraintToBody1, QuatArg inConstraintToBody2, float inBaumgarte) const
Definition SwingTwistConstraintPart.h:493
+
bool IsActive() const
Check if constraint is active.
Definition SwingTwistConstraintPart.h:455
+
Definition UVec4.h:12
+
JPH_INLINE bool TestAllTrue() const
Test if all components are true (true is when highest bit of component is set)
Definition UVec4.inl:405
+
Definition Vec3.h:17
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec3.inl:677
+
Definition Vec4.h:14
+
static Vec4 sATan2(Vec4Arg inY, Vec4Arg inX)
Calculate the arc tangent of y / x using the signs of the arguments to determine the correct quadrant...
Definition Vec4.inl:945
+
JPH_INLINE float GetW() const
Definition Vec4.h:116
+
static JPH_INLINE UVec4 sEquals(Vec4Arg inV1, Vec4Arg inV2)
Equals (component wise)
Definition Vec4.inl:166
+
static JPH_INLINE Vec4 sMin(Vec4Arg inV1, Vec4Arg inV2)
Return the minimum value of each of the components.
Definition Vec4.inl:138
+
JPH_INLINE Vec4 SplatW() const
Replicate the W component to all components.
Definition Vec4.inl:588
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec4.h:113
+
JPH_INLINE Vec4 Swizzle() const
Swizzle the elements in inV.
+
static JPH_INLINE Vec4 sMax(Vec4Arg inV1, Vec4Arg inV2)
Return the maximum of each of the components.
Definition Vec4.inl:152
+
JPH_INLINE float GetZ() const
Definition Vec4.h:115
+
JPH_INLINE float GetY() const
Definition Vec4.h:114
+
void SinCos(Vec4 &outSin, Vec4 &outCos) const
Calculate the sine and cosine for each element of this vector (input in radians)
Definition Vec4.inl:775
+
+
+ + + + diff --git a/_swizzle_8h.html b/_swizzle_8h.html new file mode 100644 index 000000000..ce6a6d73e --- /dev/null +++ b/_swizzle_8h.html @@ -0,0 +1,162 @@ + + + + + + + +Jolt Physics: Jolt/Math/Swizzle.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Swizzle.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Enumerations

enum  {
+  SWIZZLE_X = 0 +, SWIZZLE_Y = 1 +, SWIZZLE_Z = 2 +, SWIZZLE_W = 3 +,
+  SWIZZLE_UNUSED = 2 +
+ }
 Enum indicating which component to use when swizzling. More...
 
+

Enumeration Type Documentation

+ +

◆ anonymous enum

+ +
+
+ + + + +
anonymous enum
+
+ +

Enum indicating which component to use when swizzling.

+ + + + + + +
Enumerator
SWIZZLE_X 

Use the X component.

+
SWIZZLE_Y 

Use the Y component.

+
SWIZZLE_Z 

Use the Z component.

+
SWIZZLE_W 

Use the W component.

+
SWIZZLE_UNUSED 

We always use the Z component when we don't specifically want to initialize a value, this is consistent with what is done in Vec3(x, y, z), Vec3(Float3 &) and Vec3::sLoadFloat3Unsafe.

+
+ +
+
+
+
+ + + + diff --git a/_swizzle_8h_source.html b/_swizzle_8h_source.html new file mode 100644 index 000000000..e2ffaa124 --- /dev/null +++ b/_swizzle_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Jolt/Math/Swizzle.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Swizzle.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
+
10enum
+
11{
+ + + + + +
17};
+
18
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
@ SWIZZLE_Z
Use the Z component.
Definition Swizzle.h:14
+
@ SWIZZLE_W
Use the W component.
Definition Swizzle.h:15
+
@ SWIZZLE_X
Use the X component.
Definition Swizzle.h:12
+
@ SWIZZLE_UNUSED
We always use the Z component when we don't specifically want to initialize a value,...
Definition Swizzle.h:16
+
@ SWIZZLE_Y
Use the Y component.
Definition Swizzle.h:13
+
+
+ + + + diff --git a/_tapered_capsule_shape_8cpp.html b/_tapered_capsule_shape_8cpp.html new file mode 100644 index 000000000..a003903ea --- /dev/null +++ b/_tapered_capsule_shape_8cpp.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/TaperedCapsuleShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TaperedCapsuleShape.cpp File Reference
+
+
+ + + + +

+Classes

class  TaperedCapsuleShape::TaperedCapsule
 
+ + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (TaperedCapsuleShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (TaperedCapsuleShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_tapered_capsule_shape_8cpp.js b/_tapered_capsule_shape_8cpp.js new file mode 100644 index 000000000..8da53eb08 --- /dev/null +++ b/_tapered_capsule_shape_8cpp.js @@ -0,0 +1,5 @@ +var _tapered_capsule_shape_8cpp = +[ + [ "TaperedCapsuleShape::TaperedCapsule", "class_tapered_capsule_shape_1_1_tapered_capsule.html", "class_tapered_capsule_shape_1_1_tapered_capsule" ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_tapered_capsule_shape_8cpp.html#ae25b5dc9fc5b3a1ae324484315ac8c93", null ] +]; \ No newline at end of file diff --git a/_tapered_capsule_shape_8h.html b/_tapered_capsule_shape_8h.html new file mode 100644 index 000000000..51b377eda --- /dev/null +++ b/_tapered_capsule_shape_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/TaperedCapsuleShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TaperedCapsuleShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  TaperedCapsuleShapeSettings
 Class that constructs a TaperedCapsuleShape. More...
 
class  TaperedCapsuleShape
 A capsule with different top and bottom radii. More...
 
+
+
+ + + + diff --git a/_tapered_capsule_shape_8h.js b/_tapered_capsule_shape_8h.js new file mode 100644 index 000000000..972c4e7a9 --- /dev/null +++ b/_tapered_capsule_shape_8h.js @@ -0,0 +1,5 @@ +var _tapered_capsule_shape_8h = +[ + [ "TaperedCapsuleShapeSettings", "class_tapered_capsule_shape_settings.html", null ], + [ "TaperedCapsuleShape", "class_tapered_capsule_shape.html", "class_tapered_capsule_shape" ] +]; \ No newline at end of file diff --git a/_tapered_capsule_shape_8h_source.html b/_tapered_capsule_shape_8h_source.html new file mode 100644 index 000000000..711e4ecda --- /dev/null +++ b/_tapered_capsule_shape_8h_source.html @@ -0,0 +1,278 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/TaperedCapsuleShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TaperedCapsuleShape.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#ifdef JPH_DEBUG_RENDERER
+ +
10#endif // JPH_DEBUG_RENDERER
+
11
+ +
13
+
+ +
16{
+ +
18
+
19
+ +
21
+
23 TaperedCapsuleShapeSettings(float inHalfHeightOfTaperedCylinder, float inTopRadius, float inBottomRadius, const PhysicsMaterial *inMaterial = nullptr);
+
24
+
26 bool IsValid() const { return mTopRadius > 0.0f && mBottomRadius > 0.0f && mHalfHeightOfTaperedCylinder >= 0.0f; }
+
27
+
29 bool IsSphere() const;
+
30
+
31 // See: ShapeSettings
+
32 virtual ShapeResult Create() const override;
+
33
+
34 float mHalfHeightOfTaperedCylinder = 0.0f;
+
35 float mTopRadius = 0.0f;
+
36 float mBottomRadius = 0.0f;
+
37};
+
+
38
+
+ +
41{
+
42public:
+ +
44
+ +
47 TaperedCapsuleShape(const TaperedCapsuleShapeSettings &inSettings, ShapeResult &outResult);
+
48
+
49 // See Shape::GetCenterOfMass
+
50 virtual Vec3 GetCenterOfMass() const override { return mCenterOfMass; }
+
51
+
52 // See Shape::GetLocalBounds
+
53 virtual AABox GetLocalBounds() const override;
+
54
+
55 // See Shape::GetWorldSpaceBounds
+
56 virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+ +
58
+
59 // See Shape::GetInnerRadius
+
60 virtual float GetInnerRadius() const override { return min(mTopRadius, mBottomRadius); }
+
61
+
62 // See Shape::GetMassProperties
+
63 virtual MassProperties GetMassProperties() const override;
+
64
+
65 // See Shape::GetSurfaceNormal
+
66 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
67
+
68 // See Shape::GetSupportingFace
+
69 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
70
+
71 // See ConvexShape::GetSupportFunction
+
72 virtual const Support * GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override;
+
73
+
74 // See: Shape::CollideSoftBodyVertices
+
75 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
76
+
77#ifdef JPH_DEBUG_RENDERER
+
78 // See Shape::Draw
+
79 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
80#endif // JPH_DEBUG_RENDERER
+
81
+
82 // See Shape
+
83 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
84
+
85 // See Shape::GetStats
+
86 virtual Stats GetStats() const override { return Stats(sizeof(*this), 0); }
+
87
+
88 // See Shape::GetVolume
+
89 virtual float GetVolume() const override { return GetLocalBounds().GetVolume(); } // Volume is approximate!
+
90
+
91 // See Shape::IsValidScale
+
92 virtual bool IsValidScale(Vec3Arg inScale) const override;
+
93
+
94 // See Shape::MakeScaleValid
+
95 virtual Vec3 MakeScaleValid(Vec3Arg inScale) const override;
+
96
+
97 // Register shape functions with the registry
+
98 static void sRegister();
+
99
+
100protected:
+
101 // See: Shape::RestoreBinaryState
+
102 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
103
+
104private:
+
105 // Class for GetSupportFunction
+
106 class TaperedCapsule;
+
107
+
109 AABox GetInertiaApproximation() const;
+
110
+
111 Vec3 mCenterOfMass = Vec3::sZero();
+
112 float mTopRadius = 0.0f;
+
113 float mBottomRadius = 0.0f;
+
114 float mTopCenter = 0.0f;
+
115 float mBottomCenter = 0.0f;
+
116 float mConvexRadius = 0.0f;
+
117 float mSinAlpha = 0.0f;
+
118 float mTanAlpha = 0.0f;
+
119
+
120#ifdef JPH_DEBUG_RENDERER
+
121 mutable DebugRenderer::GeometryRef mGeometry;
+
122#endif // JPH_DEBUG_RENDERER
+
123};
+
+
124
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
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:76
+ +
Axis aligned box.
Definition AABox.h:16
+
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
+
Class that constructs a ConvexShape (abstract)
Definition ConvexShape.h:18
+
Definition DebugRenderer.h:47
+
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
+ + +
virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
Definition Shape.h:220
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
Definition SoftBodyVertex.h:16
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
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 TaperedCapsuleShape.cpp:137
+
A capsule with different top and bottom radii.
Definition TaperedCapsuleShape.h:41
+
JPH_OVERRIDE_NEW_DELETE TaperedCapsuleShape()
Constructor.
Definition TaperedCapsuleShape.h:46
+
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition TaperedCapsuleShape.h:86
+
virtual Vec3 GetCenterOfMass() const override
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition TaperedCapsuleShape.h:50
+
virtual float GetVolume() const override
Definition TaperedCapsuleShape.h:89
+
virtual float GetInnerRadius() const override
Definition TaperedCapsuleShape.h:60
+
Class that constructs a TaperedCapsuleShape.
Definition TaperedCapsuleShape.h:16
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
+
+ + + + diff --git a/_tapered_cylinder_shape_8cpp.html b/_tapered_cylinder_shape_8cpp.html new file mode 100644 index 000000000..8e3d8c7b4 --- /dev/null +++ b/_tapered_cylinder_shape_8cpp.html @@ -0,0 +1,160 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/TaperedCylinderShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TaperedCylinderShape.cpp File Reference
+
+
+ + + + + + +

+Classes

class  TaperedCylinderShape::TaperedCylinder
 
class  TaperedCylinderShape::TCSGetTrianglesContext
 
+ + + +

+Functions

 JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (TaperedCylinderShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (TaperedCylinderShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_tapered_cylinder_shape_8cpp.js b/_tapered_cylinder_shape_8cpp.js new file mode 100644 index 000000000..acea660c4 --- /dev/null +++ b/_tapered_cylinder_shape_8cpp.js @@ -0,0 +1,6 @@ +var _tapered_cylinder_shape_8cpp = +[ + [ "TaperedCylinderShape::TaperedCylinder", "class_tapered_cylinder_shape_1_1_tapered_cylinder.html", "class_tapered_cylinder_shape_1_1_tapered_cylinder" ], + [ "TaperedCylinderShape::TCSGetTrianglesContext", "class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html", "class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context" ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_tapered_cylinder_shape_8cpp.html#a8fc8ae859ee63bf3d3502a32a9d2adee", null ] +]; \ No newline at end of file diff --git a/_tapered_cylinder_shape_8h.html b/_tapered_cylinder_shape_8h.html new file mode 100644 index 000000000..cc6f96cc5 --- /dev/null +++ b/_tapered_cylinder_shape_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/TaperedCylinderShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TaperedCylinderShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  TaperedCylinderShapeSettings
 Class that constructs a TaperedCylinderShape. More...
 
class  TaperedCylinderShape
 A cylinder with different top and bottom radii. More...
 
+
+
+ + + + diff --git a/_tapered_cylinder_shape_8h.js b/_tapered_cylinder_shape_8h.js new file mode 100644 index 000000000..02f6eadd9 --- /dev/null +++ b/_tapered_cylinder_shape_8h.js @@ -0,0 +1,5 @@ +var _tapered_cylinder_shape_8h = +[ + [ "TaperedCylinderShapeSettings", "class_tapered_cylinder_shape_settings.html", null ], + [ "TaperedCylinderShape", "class_tapered_cylinder_shape.html", "class_tapered_cylinder_shape" ] +]; \ No newline at end of file diff --git a/_tapered_cylinder_shape_8h_source.html b/_tapered_cylinder_shape_8h_source.html new file mode 100644 index 000000000..d7e3a982d --- /dev/null +++ b/_tapered_cylinder_shape_8h_source.html @@ -0,0 +1,289 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/TaperedCylinderShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TaperedCylinderShape.h
+
+
+Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
+
2// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
+
3// SPDX-License-Identifier: MIT
+
4
+
5#pragma once
+
6
+ + +
9
+ +
11
+
+ +
14{
+ +
16
+
17
+ +
19
+
21 TaperedCylinderShapeSettings(float inHalfHeightOfTaperedCylinder, float inTopRadius, float inBottomRadius, float inConvexRadius = cDefaultConvexRadius, const PhysicsMaterial *inMaterial = nullptr);
+
22
+
23 // See: ShapeSettings
+
24 virtual ShapeResult Create() const override;
+
25
+
26 float mHalfHeight = 0.0f;
+
27 float mTopRadius = 0.0f;
+
28 float mBottomRadius = 0.0f;
+
29 float mConvexRadius = 0.0f;
+
30};
+
+
31
+
+ +
34{
+
35public:
+ +
37
+ +
40 TaperedCylinderShape(const TaperedCylinderShapeSettings &inSettings, ShapeResult &outResult);
+
41
+
43 inline float GetTopRadius() const { return mTopRadius; }
+
44
+
46 inline float GetBottomRadius() const { return mBottomRadius; }
+
47
+
49 inline float GetConvexRadius() const { return mConvexRadius; }
+
50
+
52 inline float GetHalfHeight() const { return 0.5f * (mTop - mBottom); }
+
53
+
54 // See Shape::GetCenterOfMass
+
55 virtual Vec3 GetCenterOfMass() const override { return Vec3(0, -0.5f * (mTop + mBottom), 0); }
+
56
+
57 // See Shape::GetLocalBounds
+
58 virtual AABox GetLocalBounds() const override;
+
59
+
60 // See Shape::GetInnerRadius
+
61 virtual float GetInnerRadius() const override { return min(mTopRadius, mBottomRadius); }
+
62
+
63 // See Shape::GetMassProperties
+
64 virtual MassProperties GetMassProperties() const override;
+
65
+
66 // See Shape::GetSurfaceNormal
+
67 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
68
+
69 // See Shape::GetSupportingFace
+
70 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
71
+
72 // See ConvexShape::GetSupportFunction
+
73 virtual const Support * GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override;
+
74
+
75 // See: Shape::CollidePoint
+
76 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
77
+
78 // See: Shape::CollideSoftBodyVertices
+
79 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
80
+
81 // See Shape::GetTrianglesStart
+
82 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override;
+
83
+
84 // See Shape::GetTrianglesNext
+
85 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override;
+
86
+
87#ifdef JPH_DEBUG_RENDERER
+
88 // See Shape::Draw
+
89 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
90#endif // JPH_DEBUG_RENDERER
+
91
+
92 // See Shape
+
93 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
94
+
95 // See Shape::GetStats
+
96 virtual Stats GetStats() const override { return Stats(sizeof(*this), 0); }
+
97
+
98 // See Shape::GetVolume
+
99 virtual float GetVolume() const override;
+
100
+
101 // See Shape::IsValidScale
+
102 virtual bool IsValidScale(Vec3Arg inScale) const override;
+
103
+
104 // See Shape::MakeScaleValid
+
105 virtual Vec3 MakeScaleValid(Vec3Arg inScale) const override;
+
106
+
107 // Register shape functions with the registry
+
108 static void sRegister();
+
109
+
110protected:
+
111 // See: Shape::RestoreBinaryState
+
112 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
113
+
114private:
+
115 // Class for GetSupportFunction
+
116 class TaperedCylinder;
+
117
+
118 // Class for GetTrianglesTart
+
119 class TCSGetTrianglesContext;
+
120
+
121 // Scale the cylinder
+
122 JPH_INLINE void GetScaled(Vec3Arg inScale, float &outTop, float &outBottom, float &outTopRadius, float &outBottomRadius, float &outConvexRadius) const;
+
123
+
124 float mTop = 0.0f;
+
125 float mBottom = 0.0f;
+
126 float mTopRadius = 0.0f;
+
127 float mBottomRadius = 0.0f;
+
128 float mConvexRadius = 0.0f;
+
129};
+
+
130
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
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
+ +
constexpr float cDefaultConvexRadius
How much padding to add around objects.
Definition PhysicsSettings.h:16
+
#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:76
+ +
Axis aligned box.
Definition AABox.h:16
+
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
+
Class that constructs a ConvexShape (abstract)
Definition ConvexShape.h:18
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
Definition Quat.h:33
+ +
Filter class.
Definition ShapeFilter.h:17
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
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 TaperedCylinderShape.cpp:148
+
A cylinder with different top and bottom radii.
Definition TaperedCylinderShape.h:34
+
virtual float GetInnerRadius() const override
Definition TaperedCylinderShape.h:61
+
float GetTopRadius() const
Get top radius of the tapered cylinder.
Definition TaperedCylinderShape.h:43
+
float GetConvexRadius() const
Get convex radius of the tapered cylinder.
Definition TaperedCylinderShape.h:49
+
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition TaperedCylinderShape.h:96
+
float GetBottomRadius() const
Get bottom radius of the tapered cylinder.
Definition TaperedCylinderShape.h:46
+
virtual Vec3 GetCenterOfMass() const override
All shapes are centered around their center of mass. This function returns the center of mass positio...
Definition TaperedCylinderShape.h:55
+
JPH_OVERRIDE_NEW_DELETE TaperedCylinderShape()
Constructor.
Definition TaperedCylinderShape.h:39
+
float GetHalfHeight() const
Get half height of the tapered cylinder.
Definition TaperedCylinderShape.h:52
+
Class that constructs a TaperedCylinderShape.
Definition TaperedCylinderShape.h:14
+
Definition Vec3.h:17
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
+
+ + + + diff --git a/_temp_allocator_8h.html b/_temp_allocator_8h.html new file mode 100644 index 000000000..8194ac73d --- /dev/null +++ b/_temp_allocator_8h.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Jolt/Core/TempAllocator.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TempAllocator.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + +

+Classes

class  TempAllocator
 
class  TempAllocatorImpl
 Default implementation of the temp allocator that allocates a large block through malloc upfront. More...
 
class  TempAllocatorMalloc
 
class  TempAllocatorImplWithMallocFallback
 Implementation of the TempAllocator that tries to allocate from a large preallocated block, but falls back to malloc when it is exhausted. More...
 
+
+
+ + + + diff --git a/_temp_allocator_8h.js b/_temp_allocator_8h.js new file mode 100644 index 000000000..d9ae1633a --- /dev/null +++ b/_temp_allocator_8h.js @@ -0,0 +1,7 @@ +var _temp_allocator_8h = +[ + [ "TempAllocator", "class_temp_allocator.html", "class_temp_allocator" ], + [ "TempAllocatorImpl", "class_temp_allocator_impl.html", "class_temp_allocator_impl" ], + [ "TempAllocatorMalloc", "class_temp_allocator_malloc.html", "class_temp_allocator_malloc" ], + [ "TempAllocatorImplWithMallocFallback", "class_temp_allocator_impl_with_malloc_fallback.html", "class_temp_allocator_impl_with_malloc_fallback" ] +]; \ No newline at end of file diff --git a/_temp_allocator_8h_source.html b/_temp_allocator_8h_source.html new file mode 100644 index 000000000..22f62fd2c --- /dev/null +++ b/_temp_allocator_8h_source.html @@ -0,0 +1,359 @@ + + + + + + + +Jolt Physics: Jolt/Core/TempAllocator.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TempAllocator.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
+
+ +
16{
+
17public:
+ +
19
+
21 virtual ~TempAllocator() = default;
+
22
+
24 virtual void * Allocate(uint inSize) = 0;
+
25
+
27 virtual void Free(void *inAddress, uint inSize) = 0;
+
28};
+
+
29
+
+ +
32{
+
33public:
+ +
35
+
+
37 explicit TempAllocatorImpl(uint inSize) :
+
38 mBase(static_cast<uint8 *>(AlignedAllocate(inSize, JPH_RVECTOR_ALIGNMENT))),
+
39 mSize(inSize)
+
40 {
+
41 }
+
+
42
+
+
44 virtual ~TempAllocatorImpl() override
+
45 {
+
46 JPH_ASSERT(mTop == 0);
+
47 AlignedFree(mBase);
+
48 }
+
+
49
+
50 // See: TempAllocator
+
+
51 virtual void * Allocate(uint inSize) override
+
52 {
+
53 if (inSize == 0)
+
54 {
+
55 return nullptr;
+
56 }
+
57 else
+
58 {
+
59 uint new_top = mTop + AlignUp(inSize, JPH_RVECTOR_ALIGNMENT);
+
60 if (new_top > mSize)
+
61 {
+
62 Trace("TempAllocator: Out of memory");
+
63 std::abort();
+
64 }
+
65 void *address = mBase + mTop;
+
66 mTop = new_top;
+
67 return address;
+
68 }
+
69 }
+
+
70
+
71 // See: TempAllocator
+
+
72 virtual void Free(void *inAddress, uint inSize) override
+
73 {
+
74 if (inAddress == nullptr)
+
75 {
+
76 JPH_ASSERT(inSize == 0);
+
77 }
+
78 else
+
79 {
+
80 mTop -= AlignUp(inSize, JPH_RVECTOR_ALIGNMENT);
+
81 if (mBase + mTop != inAddress)
+
82 {
+
83 Trace("TempAllocator: Freeing in the wrong order");
+
84 std::abort();
+
85 }
+
86 }
+
87 }
+
+
88
+
+
90 bool IsEmpty() const
+
91 {
+
92 return mTop == 0;
+
93 }
+
+
94
+
+
96 uint GetSize() const
+
97 {
+
98 return mSize;
+
99 }
+
+
100
+
+ +
103 {
+
104 return mTop;
+
105 }
+
+
106
+
+
108 bool CanAllocate(uint inSize) const
+
109 {
+
110 return mTop + AlignUp(inSize, JPH_RVECTOR_ALIGNMENT) <= mSize;
+
111 }
+
+
112
+
+
114 bool OwnsMemory(const void *inAddress) const
+
115 {
+
116 return inAddress >= mBase && inAddress < mBase + mSize;
+
117 }
+
+
118
+
119private:
+
120 uint8 * mBase;
+
121 uint mSize;
+
122 uint mTop = 0;
+
123};
+
+
124
+
+ +
128{
+
129public:
+ +
131
+
132 // See: TempAllocator
+
+
133 virtual void * Allocate(uint inSize) override
+
134 {
+
135 return inSize > 0? AlignedAllocate(inSize, JPH_RVECTOR_ALIGNMENT) : nullptr;
+
136 }
+
+
137
+
138 // See: TempAllocator
+
+
139 virtual void Free(void *inAddress, [[maybe_unused]] uint inSize) override
+
140 {
+
141 if (inAddress != nullptr)
+
142 AlignedFree(inAddress);
+
143 }
+
+
144};
+
+
145
+
+ +
148{
+
149public:
+ +
151
+
+ +
154 mAllocator(inSize)
+
155 {
+
156 }
+
+
157
+
158 // See: TempAllocator
+
+
159 virtual void * Allocate(uint inSize) override
+
160 {
+
161 if (mAllocator.CanAllocate(inSize))
+
162 return mAllocator.Allocate(inSize);
+
163 else
+
164 return mFallbackAllocator.Allocate(inSize);
+
165 }
+
+
166
+
167 // See: TempAllocator
+
+
168 virtual void Free(void *inAddress, uint inSize) override
+
169 {
+
170 if (inAddress == nullptr)
+
171 {
+
172 JPH_ASSERT(inSize == 0);
+
173 }
+
174 else
+
175 {
+
176 if (mAllocator.OwnsMemory(inAddress))
+
177 mAllocator.Free(inAddress, inSize);
+
178 else
+
179 mFallbackAllocator.Free(inAddress, inSize);
+
180 }
+
181 }
+
+
182
+
183private:
+
184 TempAllocatorImpl mAllocator;
+
185 TempAllocatorMalloc mFallbackAllocator;
+
186};
+
+
187
+ +
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
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
TraceFunction Trace
Definition IssueReporting.cpp:18
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
T AlignUp(T inV, uint64 inAlignment)
Align inV up to the next inAlignment bytes.
Definition Math.h:80
+
AlignedFreeFunction AlignedFree
Definition Memory.cpp:72
+
AlignedAllocateFunction AlignedAllocate
Definition Memory.cpp:71
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
#define JPH_RVECTOR_ALIGNMENT
Definition Real.h:34
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition TempAllocator.h:16
+
virtual void Free(void *inAddress, uint inSize)=0
Frees inSize bytes of memory located at inAddress.
+
virtual void * Allocate(uint inSize)=0
Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
+
virtual JPH_OVERRIDE_NEW_DELETE ~TempAllocator()=default
Destructor.
+
Default implementation of the temp allocator that allocates a large block through malloc upfront.
Definition TempAllocator.h:32
+
bool OwnsMemory(const void *inAddress) const
Check if memory block at inAddress is owned by this allocator.
Definition TempAllocator.h:114
+
virtual ~TempAllocatorImpl() override
Destructor, frees the block.
Definition TempAllocator.h:44
+
JPH_OVERRIDE_NEW_DELETE TempAllocatorImpl(uint inSize)
Constructs the allocator with a maximum allocatable size of inSize.
Definition TempAllocator.h:37
+
virtual void Free(void *inAddress, uint inSize) override
Frees inSize bytes of memory located at inAddress.
Definition TempAllocator.h:72
+
bool CanAllocate(uint inSize) const
Check if an allocation of inSize can be made in this fixed buffer allocator.
Definition TempAllocator.h:108
+
uint GetSize() const
Get the total size of the fixed buffer.
Definition TempAllocator.h:96
+
bool IsEmpty() const
Check if no allocations have been made.
Definition TempAllocator.h:90
+
virtual void * Allocate(uint inSize) override
Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
Definition TempAllocator.h:51
+
uint GetUsage() const
Get current usage in bytes of the buffer.
Definition TempAllocator.h:102
+
Implementation of the TempAllocator that tries to allocate from a large preallocated block,...
Definition TempAllocator.h:148
+
JPH_OVERRIDE_NEW_DELETE TempAllocatorImplWithMallocFallback(uint inSize)
Constructs the allocator with an initial fixed block if inSize.
Definition TempAllocator.h:153
+
virtual void Free(void *inAddress, uint inSize) override
Frees inSize bytes of memory located at inAddress.
Definition TempAllocator.h:168
+
virtual void * Allocate(uint inSize) override
Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
Definition TempAllocator.h:159
+
Definition TempAllocator.h:128
+
virtual void Free(void *inAddress, uint inSize) override
Frees inSize bytes of memory located at inAddress.
Definition TempAllocator.h:139
+
virtual JPH_OVERRIDE_NEW_DELETE void * Allocate(uint inSize) override
Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
Definition TempAllocator.h:133
+
+
+ + + + diff --git a/_tick_counter_8cpp.html b/_tick_counter_8cpp.html new file mode 100644 index 000000000..f42c05201 --- /dev/null +++ b/_tick_counter_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Core/TickCounter.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TickCounter.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <Jolt/Core/TickCounter.h>
+
+
+ + + + diff --git a/_tick_counter_8h.html b/_tick_counter_8h.html new file mode 100644 index 000000000..9f5ba6b6d --- /dev/null +++ b/_tick_counter_8h.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: Jolt/Core/TickCounter.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TickCounter.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_INLINE uint64 GetProcessorTickCount ()
 Functionality to get the processors cycle counter.
 
+

Function Documentation

+ +

◆ GetProcessorTickCount()

+ +
+
+ + + + + + + +
JPH_NAMESPACE_BEGIN JPH_INLINE uint64 GetProcessorTickCount ()
+
+ +

Functionality to get the processors cycle counter.

+ +
+
+
+
+ + + + diff --git a/_tick_counter_8h.js b/_tick_counter_8h.js new file mode 100644 index 000000000..6296f7973 --- /dev/null +++ b/_tick_counter_8h.js @@ -0,0 +1,4 @@ +var _tick_counter_8h = +[ + [ "GetProcessorTickCount", "_tick_counter_8h.html#ae23ab4860bcfb31beb5c9905f23426c1", null ] +]; \ No newline at end of file diff --git a/_tick_counter_8h_source.html b/_tick_counter_8h_source.html new file mode 100644 index 000000000..e29e7226b --- /dev/null +++ b/_tick_counter_8h_source.html @@ -0,0 +1,172 @@ + + + + + + + +Jolt Physics: Jolt/Core/TickCounter.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TickCounter.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
+
7// Include for __rdtsc
+
8#if defined(JPH_PLATFORM_WINDOWS)
+
9 #include <intrin.h>
+
10#elif defined(JPH_CPU_X86) && defined(JPH_COMPILER_GCC)
+
11 #include <x86intrin.h>
+
12#elif defined(JPH_CPU_E2K)
+
13 #include <x86intrin.h>
+
14#endif
+
15
+ +
17
+
18#if defined(JPH_PLATFORM_WINDOWS_UWP) || (defined(JPH_PLATFORM_WINDOWS) && defined(JPH_CPU_ARM))
+
19
+
21uint64 GetProcessorTickCount(); // Not inline to avoid having to include Windows.h
+
22
+
23#else
+
24
+
+ +
27{
+
28#if defined(JPH_PLATFORM_BLUE)
+
29 return JPH_PLATFORM_BLUE_GET_TICKS();
+
30#elif defined(JPH_CPU_X86)
+
31 return __rdtsc();
+
32#elif defined(JPH_CPU_E2K)
+
33 return __rdtsc();
+
34#elif defined(JPH_CPU_ARM) && defined(JPH_USE_NEON)
+
35 uint64 val;
+
36 asm volatile("mrs %0, cntvct_el0" : "=r" (val));
+
37 return val;
+
38#elif defined(JPH_CPU_ARM)
+
39 return 0; // Not supported
+
40#elif defined(JPH_CPU_WASM)
+
41 return 0; // Not supported
+
42#else
+
43 #error Undefined
+
44#endif
+
45}
+
+
46
+
47#endif // JPH_PLATFORM_WINDOWS_UWP || (JPH_PLATFORM_WINDOWS && JPH_CPU_ARM)
+
48
+ +
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_NAMESPACE_BEGIN JPH_INLINE uint64 GetProcessorTickCount()
Functionality to get the processors cycle counter.
Definition TickCounter.h:26
+
+
+ + + + diff --git a/_tracked_vehicle_controller_8cpp.html b/_tracked_vehicle_controller_8cpp.html new file mode 100644 index 000000000..9c4c812af --- /dev/null +++ b/_tracked_vehicle_controller_8cpp.html @@ -0,0 +1,168 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/TrackedVehicleController.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TrackedVehicleController.cpp File Reference
+
+
+ + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (TrackedVehicleControllerSettings)
 
 JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (WheelSettingsTV)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL() [1/2]

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (TrackedVehicleControllerSettings )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL() [2/2]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (WheelSettingsTV )
+
+ +
+
+
+
+ + + + diff --git a/_tracked_vehicle_controller_8cpp.js b/_tracked_vehicle_controller_8cpp.js new file mode 100644 index 000000000..aa97ba3bc --- /dev/null +++ b/_tracked_vehicle_controller_8cpp.js @@ -0,0 +1,5 @@ +var _tracked_vehicle_controller_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_tracked_vehicle_controller_8cpp.html#a2f27e133cbe090ced4a2382ffe497b11", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_tracked_vehicle_controller_8cpp.html#a0749145a349e1a00cb3a991296540235", null ] +]; \ No newline at end of file diff --git a/_tracked_vehicle_controller_8h.html b/_tracked_vehicle_controller_8h.html new file mode 100644 index 000000000..3be35150b --- /dev/null +++ b/_tracked_vehicle_controller_8h.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/TrackedVehicleController.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TrackedVehicleController.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + +

+Classes

class  WheelSettingsTV
 WheelSettings object specifically for TrackedVehicleController. More...
 
class  WheelTV
 Wheel object specifically for TrackedVehicleController. More...
 
class  TrackedVehicleControllerSettings
 
class  TrackedVehicleController
 Runtime controller class for vehicle with tank tracks. More...
 
+
+
+ + + + diff --git a/_tracked_vehicle_controller_8h.js b/_tracked_vehicle_controller_8h.js new file mode 100644 index 000000000..6039b6b58 --- /dev/null +++ b/_tracked_vehicle_controller_8h.js @@ -0,0 +1,7 @@ +var _tracked_vehicle_controller_8h = +[ + [ "WheelSettingsTV", "class_wheel_settings_t_v.html", "class_wheel_settings_t_v" ], + [ "WheelTV", "class_wheel_t_v.html", "class_wheel_t_v" ], + [ "TrackedVehicleControllerSettings", "class_tracked_vehicle_controller_settings.html", "class_tracked_vehicle_controller_settings" ], + [ "TrackedVehicleController", "class_tracked_vehicle_controller.html", "class_tracked_vehicle_controller" ] +]; \ No newline at end of file diff --git a/_tracked_vehicle_controller_8h_source.html b/_tracked_vehicle_controller_8h_source.html new file mode 100644 index 000000000..1db39a6d3 --- /dev/null +++ b/_tracked_vehicle_controller_8h_source.html @@ -0,0 +1,325 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/TrackedVehicleController.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TrackedVehicleController.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
+ + + + + +
12
+ +
14
+
15class PhysicsSystem;
+
16
+
+ +
19{
+
20public:
+ +
22
+
23 // See: WheelSettings
+
24 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
25 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
26
+
27 float mLongitudinalFriction = 4.0f;
+
28 float mLateralFriction = 2.0f;
+
29};
+
+
30
+
+
32class JPH_EXPORT WheelTV : public Wheel
+
33{
+
34public:
+ +
36
+
38 explicit WheelTV(const WheelSettingsTV &inWheel);
+
39
+
41 const WheelSettingsTV * GetSettings() const { return StaticCast<WheelSettingsTV>(mSettings); }
+
42
+
44 void CalculateAngularVelocity(const VehicleConstraint &inConstraint);
+
45
+
47 void Update(uint inWheelIndex, float inDeltaTime, const VehicleConstraint &inConstraint);
+
48
+
49 int mTrackIndex = -1;
+
50 float mCombinedLongitudinalFriction = 0.0f;
+
51 float mCombinedLateralFriction = 0.0f;
+
52 float mBrakeImpulse = 0.0f;
+
53};
+
+
54
+
+ +
60{
+
61public:
+ +
63
+
64 // Constructor
+ +
66
+
67 // See: VehicleControllerSettings
+
68 virtual VehicleController * ConstructController(VehicleConstraint &inConstraint) const override;
+
69 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
70 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
71
+ + + +
75};
+
+
76
+
+ +
79{
+
80public:
+ +
82
+ +
85
+
91 void SetDriverInput(float inForward, float inLeftRatio, float inRightRatio, float inBrake) { JPH_ASSERT(inLeftRatio != 0.0f && inRightRatio != 0.0f); mForwardInput = inForward; mLeftRatio = inLeftRatio; mRightRatio = inRightRatio; mBrakeInput = inBrake; }
+
92
+
94 void SetForwardInput(float inForward) { mForwardInput = inForward; }
+
95 float GetForwardInput() const { return mForwardInput; }
+
96
+
98 void SetLeftRatio(float inLeftRatio) { JPH_ASSERT(inLeftRatio != 0.0f); mLeftRatio = inLeftRatio; }
+
99 float GetLeftRatio() const { return mLeftRatio; }
+
100
+
102 void SetRightRatio(float inRightRatio) { JPH_ASSERT(inRightRatio != 0.0f); mRightRatio = inRightRatio; }
+
103 float GetRightRatio() const { return mRightRatio; }
+
104
+
106 void SetBrakeInput(float inBrake) { mBrakeInput = inBrake; }
+
107 float GetBrakeInput() const { return mBrakeInput; }
+
108
+
110 const VehicleEngine & GetEngine() const { return mEngine; }
+
111
+
113 VehicleEngine & GetEngine() { return mEngine; }
+
114
+
116 const VehicleTransmission & GetTransmission() const { return mTransmission; }
+
117
+
119 VehicleTransmission & GetTransmission() { return mTransmission; }
+
120
+
122 const VehicleTracks & GetTracks() const { return mTracks; }
+
123
+
125 VehicleTracks & GetTracks() { return mTracks; }
+
126
+
127#ifdef JPH_DEBUG_RENDERER
+
129 void SetRPMMeter(Vec3Arg inPosition, float inSize) { mRPMMeterPosition = inPosition; mRPMMeterSize = inSize; }
+
130#endif // JPH_DEBUG_RENDERER
+
131
+
132protected:
+
134 void SyncLeftRightTracks();
+
135
+
136 // See: VehicleController
+
137 virtual Wheel * ConstructWheel(const WheelSettings &inWheel) const override { JPH_ASSERT(IsKindOf(&inWheel, JPH_RTTI(WheelSettingsTV))); return new WheelTV(static_cast<const WheelSettingsTV &>(inWheel)); }
+
138 virtual bool AllowSleep() const override;
+
139 virtual void PreCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) override;
+
140 virtual void PostCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) override;
+
141 virtual bool SolveLongitudinalAndLateralConstraints(float inDeltaTime) override;
+
142 virtual void SaveState(StateRecorder &inStream) const override;
+
143 virtual void RestoreState(StateRecorder &inStream) override;
+
144#ifdef JPH_DEBUG_RENDERER
+
145 virtual void Draw(DebugRenderer *inRenderer) const override;
+
146#endif // JPH_DEBUG_RENDERER
+
147
+
148 // Control information
+
149 float mForwardInput = 0.0f;
+
150 float mLeftRatio = 1.0f;
+
151 float mRightRatio = 1.0f;
+
152 float mBrakeInput = 0.0f;
+
153
+
154 // Simulation information
+ + + +
158
+
159#ifdef JPH_DEBUG_RENDERER
+
160 // Debug settings
+
161 Vec3 mRPMMeterPosition { 0, 1, 0 };
+
162 float mRPMMeterSize = 0.5f;
+
163#endif // JPH_DEBUG_RENDERER
+
164};
+
+
165
+ +
#define JPH_EXPORT
Definition Core.h:236
+
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_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
bool IsKindOf(const Type *inObject, const RTTI *inRTTI)
Check if inObject is or is derived from DstType.
Definition RTTI.h:369
+
#define JPH_RTTI(class_name)
Definition RTTI.h:319
+
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+ + + + + +
VehicleTrack[(int) ETrackSide::Num] VehicleTracks
Definition VehicleTrack.h:54
+ +
Definition DebugRenderer.h:47
+
Definition PhysicsSystem.h:29
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Runtime controller class for vehicle with tank tracks.
Definition TrackedVehicleController.h:79
+
VehicleEngine mEngine
Engine state of the vehicle.
Definition TrackedVehicleController.h:155
+
VehicleTracks mTracks
Tracks of the vehicle.
Definition TrackedVehicleController.h:157
+
const VehicleTransmission & GetTransmission() const
Get current transmission state.
Definition TrackedVehicleController.h:116
+
const VehicleTracks & GetTracks() const
Get the tracks this vehicle has.
Definition TrackedVehicleController.h:122
+
float GetLeftRatio() const
Definition TrackedVehicleController.h:99
+
void SetRightRatio(float inRightRatio)
Value between -1 and 1 indicating an extra multiplier to the rotation rate of the right track (used f...
Definition TrackedVehicleController.h:102
+
float GetBrakeInput() const
Definition TrackedVehicleController.h:107
+
float GetRightRatio() const
Definition TrackedVehicleController.h:103
+
VehicleTransmission mTransmission
Transmission state of the vehicle.
Definition TrackedVehicleController.h:156
+
virtual Wheel * ConstructWheel(const WheelSettings &inWheel) const override
Definition TrackedVehicleController.h:137
+
void SetRPMMeter(Vec3Arg inPosition, float inSize)
Debug drawing of RPM meter.
Definition TrackedVehicleController.h:129
+
VehicleTracks & GetTracks()
Get the tracks this vehicle has (writable interface, allows you to make changes to the configuration ...
Definition TrackedVehicleController.h:125
+
void SetLeftRatio(float inLeftRatio)
Value between -1 and 1 indicating an extra multiplier to the rotation rate of the left track (used fo...
Definition TrackedVehicleController.h:98
+
const VehicleEngine & GetEngine() const
Get current engine state.
Definition TrackedVehicleController.h:110
+
float GetForwardInput() const
Definition TrackedVehicleController.h:95
+
VehicleEngine & GetEngine()
Get current engine state (writable interface, allows you to make changes to the configuration which w...
Definition TrackedVehicleController.h:113
+
void SetBrakeInput(float inBrake)
Value between 0 and 1 indicating how strong the brake pedal is pressed.
Definition TrackedVehicleController.h:106
+
void SetDriverInput(float inForward, float inLeftRatio, float inRightRatio, float inBrake)
Definition TrackedVehicleController.h:91
+
void SetForwardInput(float inForward)
Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving dir...
Definition TrackedVehicleController.h:94
+
VehicleTransmission & GetTransmission()
Get current transmission state (writable interface, allows you to make changes to the configuration w...
Definition TrackedVehicleController.h:119
+
Definition TrackedVehicleController.h:60
+
VehicleEngineSettings mEngine
The properties of the engine.
Definition TrackedVehicleController.h:72
+
VehicleTransmissionSettings mTransmission
The properties of the transmission (aka gear box)
Definition TrackedVehicleController.h:73
+
Definition Vec3.h:17
+
Definition VehicleConstraint.h:66
+
Runtime data for interface that controls acceleration / deceleration of the vehicle.
Definition VehicleController.h:41
+
Basic settings object for interface that controls acceleration / deceleration of the vehicle.
Definition VehicleController.h:25
+
Runtime data for engine.
Definition VehicleEngine.h:44
+
Generic properties for a vehicle engine.
Definition VehicleEngine.h:21
+
Generic properties for tank tracks.
Definition VehicleTrack.h:25
+
Runtime data for transmission.
Definition VehicleTransmission.h:46
+
Configuration for the transmission of a vehicle (gear box)
Definition VehicleTransmission.h:23
+
Base class for runtime data for a wheel, each VehicleController can implement a derived class of this...
Definition Wheel.h:46
+
Base class for wheel settings, each VehicleController can implement a derived class of this.
Definition Wheel.h:19
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents in binary form to inStream.
Definition Wheel.cpp:32
+
virtual void RestoreBinaryState(StreamIn &inStream)
Restores the contents in binary form to inStream.
Definition Wheel.cpp:49
+
WheelSettings object specifically for TrackedVehicleController.
Definition TrackedVehicleController.h:19
+
Wheel object specifically for TrackedVehicleController.
Definition TrackedVehicleController.h:33
+
const WheelSettingsTV * GetSettings() const
Override GetSettings and cast to the correct class.
Definition TrackedVehicleController.h:41
+
+
+ + + + diff --git a/_transformed_shape_8cpp.html b/_transformed_shape_8cpp.html new file mode 100644 index 000000000..2db6fd53f --- /dev/null +++ b/_transformed_shape_8cpp.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/TransformedShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TransformedShape.cpp File Reference
+
+
+
+
+ + + + diff --git a/_transformed_shape_8h.html b/_transformed_shape_8h.html new file mode 100644 index 000000000..ba1d02f3e --- /dev/null +++ b/_transformed_shape_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/TransformedShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TransformedShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  TransformedShape
 
+
+
+ + + + diff --git a/_transformed_shape_8h.js b/_transformed_shape_8h.js new file mode 100644 index 000000000..b0f9156cd --- /dev/null +++ b/_transformed_shape_8h.js @@ -0,0 +1,4 @@ +var _transformed_shape_8h = +[ + [ "TransformedShape", "class_transformed_shape.html", "class_transformed_shape" ] +]; \ No newline at end of file diff --git a/_transformed_shape_8h_source.html b/_transformed_shape_8h_source.html new file mode 100644 index 000000000..2bf98f1bf --- /dev/null +++ b/_transformed_shape_8h_source.html @@ -0,0 +1,347 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/TransformedShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TransformedShape.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
+ + + + + + +
13
+ +
15
+
16struct RRayCast;
+
17struct RShapeCast;
+ +
19class RayCastResult;
+
20
+
+ +
26{
+
27public:
+ +
29
+
31 TransformedShape() = default;
+
32 TransformedShape(RVec3Arg inPositionCOM, QuatArg inRotation, const Shape *inShape, const BodyID &inBodyID, const SubShapeIDCreator &inSubShapeIDCreator = SubShapeIDCreator()) : mShapePositionCOM(inPositionCOM), mShapeRotation(inRotation), mShape(inShape), mBodyID(inBodyID), mSubShapeIDCreator(inSubShapeIDCreator) { }
+
33
+
37 bool CastRay(const RRayCast &inRay, RayCastResult &ioHit) const;
+
38
+
41 void CastRay(const RRayCast &inRay, const RayCastSettings &inRayCastSettings, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const;
+
42
+
46 void CollidePoint(RVec3Arg inPoint, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const;
+
47
+
56 void CollideShape(const Shape *inShape, Vec3Arg inShapeScale, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const;
+
57
+
64 void CastShape(const RShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const;
+
65
+
68 void CollectTransformedShapes(const AABox &inBox, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const;
+
69
+ +
72
+
78 void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, RVec3Arg inBaseOffset) const;
+
79
+
86 int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const;
+
87
+
89 inline Vec3 GetShapeScale() const { return Vec3::sLoadFloat3Unsafe(mShapeScale); }
+
90 inline void SetShapeScale(Vec3Arg inScale) { inScale.StoreFloat3(&mShapeScale); }
+
91
+
93 inline RMat44 GetCenterOfMassTransform() const { return RMat44::sRotationTranslation(mShapeRotation, mShapePositionCOM); }
+
94
+
96 inline RMat44 GetInverseCenterOfMassTransform() const { return RMat44::sInverseRotationTranslation(mShapeRotation, mShapePositionCOM); }
+
97
+
+
99 inline void SetWorldTransform(RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inScale)
+
100 {
+
101 mShapePositionCOM = inPosition + inRotation * (inScale * mShape->GetCenterOfMass());
+
102 mShapeRotation = inRotation;
+
103 SetShapeScale(inScale);
+
104 }
+
+
105
+
+
107 inline void SetWorldTransform(RMat44Arg inTransform)
+
108 {
+
109 Vec3 scale;
+
110 RMat44 rot_trans = inTransform.Decompose(scale);
+
111 SetWorldTransform(rot_trans.GetTranslation(), rot_trans.GetQuaternion(), scale);
+
112 }
+
+
113
+
+ +
116 {
+
117 RMat44 transform = RMat44::sRotation(mShapeRotation).PreScaled(GetShapeScale());
+
118 transform.SetTranslation(mShapePositionCOM - transform.Multiply3x3(mShape->GetCenterOfMass()));
+
119 return transform;
+
120 }
+
+
121
+
123 AABox GetWorldSpaceBounds() const { return mShape != nullptr? mShape->GetWorldSpaceBounds(GetCenterOfMassTransform(), GetShapeScale()) : AABox(); }
+
124
+
+
126 inline SubShapeID MakeSubShapeIDRelativeToShape(const SubShapeID &inSubShapeID) const
+
127 {
+
128 // Take off the sub shape ID part that comes from mSubShapeIDCreator and validate that it is the same
+
129 SubShapeID sub_shape_id;
+
130 uint num_bits_written = mSubShapeIDCreator.GetNumBitsWritten();
+
131 JPH_IF_ENABLE_ASSERTS(uint32 root_id =) inSubShapeID.PopID(num_bits_written, sub_shape_id);
+
132 JPH_ASSERT(root_id == (mSubShapeIDCreator.GetID().GetValue() & ((1 << num_bits_written) - 1)));
+
133 return sub_shape_id;
+
134 }
+
+
135
+
+
138 inline Vec3 GetWorldSpaceSurfaceNormal(const SubShapeID &inSubShapeID, RVec3Arg inPosition) const
+
139 {
+
140 RMat44 inv_com = GetInverseCenterOfMassTransform();
+
141 Vec3 scale = GetShapeScale(); // See comment at ScaledShape::GetSurfaceNormal for the math behind the scaling of the normal
+
142 return inv_com.Multiply3x3Transposed(mShape->GetSurfaceNormal(MakeSubShapeIDRelativeToShape(inSubShapeID), Vec3(inv_com * inPosition) / scale) / scale).Normalized();
+
143 }
+
+
144
+
+
151 void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, RVec3Arg inBaseOffset, Shape::SupportingFace &outVertices) const
+
152 {
+
153 Mat44 com = GetCenterOfMassTransform().PostTranslated(-inBaseOffset).ToMat44();
+
154 mShape->GetSupportingFace(MakeSubShapeIDRelativeToShape(inSubShapeID), com.Multiply3x3Transposed(inDirection), GetShapeScale(), com, outVertices);
+
155 }
+
+
156
+
+
158 inline const PhysicsMaterial *GetMaterial(const SubShapeID &inSubShapeID) const
+
159 {
+
160 return mShape->GetMaterial(MakeSubShapeIDRelativeToShape(inSubShapeID));
+
161 }
+
+
162
+
+
164 inline uint64 GetSubShapeUserData(const SubShapeID &inSubShapeID) const
+
165 {
+
166 return mShape->GetSubShapeUserData(MakeSubShapeIDRelativeToShape(inSubShapeID));
+
167 }
+
+
168
+
+
173 TransformedShape GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
+
174 {
+
175 TransformedShape ts = mShape->GetSubShapeTransformedShape(inSubShapeID, Vec3::sZero(), mShapeRotation, GetShapeScale(), outRemainder);
+
176 ts.mShapePositionCOM += mShapePositionCOM;
+
177 return ts;
+
178 }
+
+
179
+
181 inline static BodyID sGetBodyID(const TransformedShape *inTS) { return inTS != nullptr? inTS->mBodyID : BodyID(); }
+
182
+ + + +
186 Float3 mShapeScale { 1, 1, 1 };
+ + +
189};
+
+
190
+
191static_assert(JPH_CPU_ADDRESS_BITS != 64 || sizeof(TransformedShape) == JPH_IF_SINGLE_PRECISION_ELSE(64, 96), "Not properly packed");
+
192static_assert(alignof(TransformedShape) == JPH_RVECTOR_ALIGNMENT, "Not properly aligned");
+
193
+ + + +
#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
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_IF_SINGLE_PRECISION_ELSE(s, d)
Definition Core.h:530
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
#define JPH_RVECTOR_ALIGNMENT
Definition Real.h:34
+ + + +
Axis aligned box.
Definition AABox.h:16
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
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 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.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
+
JPH_INLINE Mat44 PostTranslated(Vec3Arg inTranslation) const
Post multiply by translation matrix: result = Mat44::sTranslation(inTranslation) * this (i....
Definition Mat44.inl:903
+
JPH_INLINE Quat GetQuaternion() const
Convert to quaternion.
Definition Mat44.inl:783
+
JPH_INLINE Mat44 ToMat44() const
In single precision mode just return the matrix itself.
Definition Mat44.h:225
+
JPH_INLINE Vec3 Multiply3x3Transposed(Vec3Arg inV) const
Multiply vector by only 3x3 part of the transpose of the matrix ( )
Definition Mat44.inl:336
+
JPH_INLINE Mat44 Decompose(Vec3 &outScale) const
Definition Mat44.inl:919
+
JPH_INLINE Vec3 Multiply3x3(Vec3Arg inV) const
Multiply vector by only 3x3 part of the matrix.
Definition Mat44.inl:316
+
static JPH_INLINE Mat44 sRotationTranslation(QuatArg inR, Vec3Arg inT)
Get matrix that rotates and translates.
Definition Mat44.inl:149
+
JPH_INLINE Vec3 GetTranslation() const
Definition Mat44.h:152
+
static JPH_INLINE Mat44 sRotation(Vec3Arg inAxis, float inAngle)
Rotate around arbitrary axis.
Definition Mat44.inl:139
+
static JPH_INLINE Mat44 sInverseRotationTranslation(QuatArg inR, Vec3Arg inT)
Get inverse matrix of sRotationTranslation.
Definition Mat44.inl:156
+
JPH_INLINE void SetTranslation(Vec3Arg inV)
Definition Mat44.h:153
+
JPH_INLINE Mat44 PreScaled(Vec3Arg inScale) const
Scale a matrix: result = this * Mat44::sScale(inScale)
Definition Mat44.inl:908
+
Definition PhysicsMaterial.h:23
+
Definition Quat.h:33
+
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:151
+
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:184
+ +
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
+
Type PopID(uint inBits, SubShapeID &outRemainder) const
Get the next id in the chain of ids (pops parents before children)
Definition SubShapeID.h:42
+
Definition TransformedShape.h:26
+
void SetShapeScale(Vec3Arg inScale)
Definition TransformedShape.h:90
+
SubShapeID MakeSubShapeIDRelativeToShape(const SubShapeID &inSubShapeID) const
Make inSubShapeID relative to mShape. When mSubShapeIDCreator is not empty, this is needed in order t...
Definition TransformedShape.h:126
+
static BodyID sGetBodyID(const TransformedShape *inTS)
Helper function to return the body id from a transformed shape. If the transformed shape is null an i...
Definition TransformedShape.h:181
+
Quat mShapeRotation
Rotation of the shape.
Definition TransformedShape.h:184
+
AABox GetWorldSpaceBounds() const
Get the world space bounding box for this transformed shape.
Definition TransformedShape.h:123
+
RVec3 mShapePositionCOM
Center of mass world position of the shape.
Definition TransformedShape.h:183
+
Vec3 GetWorldSpaceSurfaceNormal(const SubShapeID &inSubShapeID, RVec3Arg inPosition) const
Definition TransformedShape.h:138
+
SubShapeIDCreator mSubShapeIDCreator
Optional sub shape ID creator for the shape (can be used when expanding compound shapes into multiple...
Definition TransformedShape.h:188
+
void SetWorldTransform(RMat44Arg inTransform)
Sets the world transform (including scale) of this transformed shape (not from the center of mass but...
Definition TransformedShape.h:107
+
void SetWorldTransform(RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inScale)
Sets the world transform (including scale) of this transformed shape (not from the center of mass but...
Definition TransformedShape.h:99
+
const PhysicsMaterial * GetMaterial(const SubShapeID &inSubShapeID) const
Get material of a particular sub shape.
Definition TransformedShape.h:158
+
TransformedShape(RVec3Arg inPositionCOM, QuatArg inRotation, const Shape *inShape, const BodyID &inBodyID, const SubShapeIDCreator &inSubShapeIDCreator=SubShapeIDCreator())
Definition TransformedShape.h:32
+
TransformedShape GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
Definition TransformedShape.h:173
+
RMat44 GetInverseCenterOfMassTransform() const
Calculates the inverse of the transform for this shape's center of mass (excluding scale)
Definition TransformedShape.h:96
+
uint64 GetSubShapeUserData(const SubShapeID &inSubShapeID) const
Get the user data of a particular sub shape.
Definition TransformedShape.h:164
+
Vec3 GetShapeScale() const
Get/set the scale of the shape as a Vec3.
Definition TransformedShape.h:89
+
JPH_OVERRIDE_NEW_DELETE TransformedShape()=default
Constructor.
+
void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, RVec3Arg inBaseOffset, Shape::SupportingFace &outVertices) const
Definition TransformedShape.h:151
+
RefConst< Shape > mShape
The shape itself.
Definition TransformedShape.h:185
+
BodyID mBodyID
Optional body ID from which this shape comes.
Definition TransformedShape.h:187
+
RMat44 GetWorldTransform() const
Calculates the world transform including scale of this shape (not from the center of mass but in the ...
Definition TransformedShape.h:115
+
RMat44 GetCenterOfMassTransform() const
Calculates the transform for this shapes's center of mass (excluding scale)
Definition TransformedShape.h:93
+
Definition Vec3.h:17
+
JPH_INLINE Vec3 Normalized() const
Normalize vector.
Definition Vec3.inl:702
+
JPH_INLINE void StoreFloat3(Float3 *outV) const
Store 3 floats to memory.
Definition Vec3.inl:765
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
Definition RayCast.h:52
+
Definition ShapeCast.h:74
+
An opaque buffer that holds shape specific information during GetTrianglesStart/Next.
Definition Shape.h:348
+
+
+ + + + diff --git a/_triangle_8h.html b/_triangle_8h.html new file mode 100644 index 000000000..5ca4af052 --- /dev/null +++ b/_triangle_8h.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/Triangle.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Triangle.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  Triangle
 A simple triangle and its material. More...
 
+ + + +

+Typedefs

using TriangleList = Array< Triangle >
 
+

Typedef Documentation

+ +

◆ TriangleList

+ +
+
+ + + + +
using TriangleList = Array<Triangle>
+
+ +
+
+
+
+ + + + diff --git a/_triangle_8h.js b/_triangle_8h.js new file mode 100644 index 000000000..96bfe9f15 --- /dev/null +++ b/_triangle_8h.js @@ -0,0 +1,5 @@ +var _triangle_8h = +[ + [ "Triangle", "class_triangle.html", "class_triangle" ], + [ "TriangleList", "_triangle_8h.html#af3a43a2425da3896c3d20b8ea8098af1", null ] +]; \ No newline at end of file diff --git a/_triangle_8h_source.html b/_triangle_8h_source.html new file mode 100644 index 000000000..203f432d4 --- /dev/null +++ b/_triangle_8h_source.html @@ -0,0 +1,170 @@ + + + + + + + +Jolt Physics: Jolt/Geometry/Triangle.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Triangle.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
+
+ +
11{
+
12public:
+ +
14
+
16 Triangle() = default;
+
17 Triangle(const Float3 &inV1, const Float3 &inV2, const Float3 &inV3, uint32 inMaterialIndex = 0, uint32 inUserData = 0) : mV { inV1, inV2, inV3 }, mMaterialIndex(inMaterialIndex), mUserData(inUserData) { }
+
18 Triangle(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, uint32 inMaterialIndex = 0, uint32 inUserData = 0) : mMaterialIndex(inMaterialIndex), mUserData(inUserData) { inV1.StoreFloat3(&mV[0]); inV2.StoreFloat3(&mV[1]); inV3.StoreFloat3(&mV[2]); }
+
19
+
+ +
22 {
+
23 return (Vec3::sLoadFloat3Unsafe(mV[0]) + Vec3::sLoadFloat3Unsafe(mV[1]) + Vec3::sLoadFloat3Unsafe(mV[2])) * (1.0f / 3.0f);
+
24 }
+
+
25
+ + + +
30};
+
+
31
+ +
33
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#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
+ +
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
A simple triangle and its material.
Definition Triangle.h:11
+
Triangle(const Float3 &inV1, const Float3 &inV2, const Float3 &inV3, uint32 inMaterialIndex=0, uint32 inUserData=0)
Definition Triangle.h:17
+
Vec3 GetCentroid() const
Get center of triangle.
Definition Triangle.h:21
+
uint32 mMaterialIndex
Follows mV[3] so that we can read mV as 4 vectors.
Definition Triangle.h:28
+
uint32 mUserData
User data that can be used for anything by the application, e.g. for tracking the original index of t...
Definition Triangle.h:29
+
JPH_OVERRIDE_NEW_DELETE Triangle()=default
Constructor.
+
Float3 mV[3]
Vertices.
Definition Triangle.h:27
+
Triangle(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, uint32 inMaterialIndex=0, uint32 inUserData=0)
Definition Triangle.h:18
+
Definition Vec3.h:17
+
JPH_INLINE void StoreFloat3(Float3 *outV) const
Store 3 floats to memory.
Definition Vec3.inl:765
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
+
+ + + + diff --git a/_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h.html b/_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h.html new file mode 100644 index 000000000..4af2cdd36 --- /dev/null +++ b/_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleCodecIndexed8BitPackSOA4Flags.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  TriangleCodecIndexed8BitPackSOA4Flags
 
class  TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader
 
struct  TriangleCodecIndexed8BitPackSOA4Flags::VertexData
 A single packed vertex. More...
 
struct  TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlock
 A block of 4 triangles. More...
 
struct  TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader
 A triangle header, will be followed by one or more TriangleBlocks. More...
 
class  TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext
 This class is used to validate that the triangle data will not be degenerate after compression. More...
 
class  TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext
 This class is used to encode and compress triangle data into a byte buffer. More...
 
class  TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext
 This class is used to decode and decompress triangle data packed by the EncodingContext. More...
 
+
+
+ + + + diff --git a/_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h.js b/_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h.js new file mode 100644 index 000000000..8aeab5fcc --- /dev/null +++ b/_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h.js @@ -0,0 +1,11 @@ +var _triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h = +[ + [ "TriangleCodecIndexed8BitPackSOA4Flags", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags" ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header" ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::VertexData", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.html", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data" ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlock", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.html", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block" ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header" ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context" ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context" ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context" ] +]; \ No newline at end of file diff --git a/_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h_source.html b/_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h_source.html new file mode 100644 index 000000000..fbba168cd --- /dev/null +++ b/_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h_source.html @@ -0,0 +1,739 @@ + + + + + + + +Jolt Physics: Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleCodecIndexed8BitPackSOA4Flags.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
+
+ +
25{
+
26public:
+
+ +
28 {
+
29 public:
+ + +
32 };
+
+
33
+
35 static constexpr int TriangleHeaderSize = sizeof(TriangleHeader);
+
36
+
38 static constexpr bool ChangesOffsetOnPack = false;
+
39
+
+ +
42 {
+ + +
45 };
+
+
46
+ +
54
+ +
62
+
+ +
65 {
+ + +
68 };
+
+
69
+
70 static_assert(sizeof(VertexData) == 8, "Compiler added padding");
+
71
+
+ +
74 {
+ + +
77 };
+
+
78
+
79 static_assert(sizeof(TriangleBlock) == 16, "Compiler added padding");
+
80
+ +
88
+
+ +
91 {
+
92 const VertexData * GetVertexData() const { return reinterpret_cast<const VertexData *>(reinterpret_cast<const uint8 *>(this) + (mFlags & OFFSET_TO_VERTICES_MASK)); }
+
93 const TriangleBlock * GetTriangleBlock() const { return reinterpret_cast<const TriangleBlock *>(reinterpret_cast<const uint8 *>(this) + sizeof(TriangleBlockHeader)); }
+
94 const uint32 * GetUserData() const { uint32 offset = mFlags >> OFFSET_TO_VERTICES_BITS; return offset == 0? nullptr : reinterpret_cast<const uint32 *>(GetTriangleBlock() + offset); }
+
95
+ +
97 };
+
+
98
+
99 static_assert(sizeof(TriangleBlockHeader) == 4, "Compiler added padding");
+
100
+
+ +
103 {
+
104 public:
+
+
106 ValidationContext(const IndexedTriangleList &inTriangles, const VertexList &inVertices) :
+
107 mVertices(inVertices)
+
108 {
+
109 // Only used the referenced triangles, just like EncodingContext::Finalize does
+
110 for (const IndexedTriangle &i : inTriangles)
+
111 for (uint32 idx : i.mIdx)
+
112 mBounds.Encapsulate(Vec3(inVertices[idx]));
+
113 }
+
+
114
+
+
116 bool IsDegenerate(const IndexedTriangle &inTriangle) const
+
117 {
+
118 // Quantize the triangle in the same way as EncodingContext::Finalize does
+
119 UVec4 quantized_vertex[3];
+
120 Vec3 compress_scale = Vec3::sReplicate(COMPONENT_MASK) / Vec3::sMax(mBounds.GetSize(), Vec3::sReplicate(1.0e-20f));
+
121 for (int i = 0; i < 3; ++i)
+
122 quantized_vertex[i] = ((Vec3(mVertices[inTriangle.mIdx[i]]) - mBounds.mMin) * compress_scale + Vec3::sReplicate(0.5f)).ToInt();
+
123 return quantized_vertex[0] == quantized_vertex[1] || quantized_vertex[1] == quantized_vertex[2] || quantized_vertex[0] == quantized_vertex[2];
+
124 }
+
+
125
+
126 private:
+
127 const VertexList & mVertices;
+
128 AABox mBounds;
+
129 };
+
+
130
+
+ +
133 {
+
134 public:
+
+
136 explicit EncodingContext(const VertexList &inVertices) :
+
137 mVertexMap(inVertices.size(), 0xffffffff) // Fill vertex map with 'not found'
+
138 {
+
139 // Reserve for worst case to avoid allocating in the inner loop
+
140 mVertices.reserve(inVertices.size());
+
141 }
+
+
142
+
+
144 uint GetPessimisticMemoryEstimate(uint inTriangleCount, bool inStoreUserData) const
+
145 {
+
146 // Worst case each triangle is alone in a block, none of the vertices are shared and we need to add 3 bytes to align the vertices
+
147 return inTriangleCount * (sizeof(TriangleBlockHeader) + sizeof(TriangleBlock) + (inStoreUserData? sizeof(uint32) : 0) + 3 * sizeof(VertexData)) + 3;
+
148 }
+
+
149
+
+
152 uint Pack(const IndexedTriangleList &inTriangles, bool inStoreUserData, ByteBuffer &ioBuffer, const char *&outError)
+
153 {
+
154 // Determine position of triangles start
+
155 uint offset = (uint)ioBuffer.size();
+
156
+
157 // Update stats
+
158 uint tri_count = (uint)inTriangles.size();
+
159 mNumTriangles += tri_count;
+
160
+
161 // Allocate triangle block header
+ +
163
+
164 // Compute first vertex that this batch will use (ensuring there's enough room if none of the vertices are shared)
+
165 uint start_vertex = Clamp((int)mVertices.size() - 256 + (int)tri_count * 3, 0, (int)mVertices.size());
+
166
+
167 // Store the start vertex offset, this will later be patched to give the delta offset relative to the triangle block
+
168 mOffsetsToPatch.push_back(uint((uint8 *)&header->mFlags - &ioBuffer[0]));
+
169 header->mFlags = start_vertex * sizeof(VertexData);
+
170 JPH_ASSERT(header->mFlags <= OFFSET_TO_VERTICES_MASK, "Offset to vertices doesn't fit");
+
171
+
172 // When we store user data we need to store the offset to the user data in TriangleBlocks
+
173 uint padded_triangle_count = AlignUp(tri_count, 4);
+
174 if (inStoreUserData)
+
175 {
+
176 uint32 num_blocks = padded_triangle_count >> 2;
+
177 JPH_ASSERT(num_blocks <= OFFSET_TO_USERDATA_MASK);
+
178 header->mFlags |= num_blocks << OFFSET_TO_VERTICES_BITS;
+
179 }
+
180
+
181 // Pack vertices
+
182 for (uint t = 0; t < padded_triangle_count; t += 4)
+
183 {
+
184 TriangleBlock *block = ioBuffer.Allocate<TriangleBlock>();
+
185 for (uint vertex_nr = 0; vertex_nr < 3; ++vertex_nr)
+
186 for (uint block_tri_idx = 0; block_tri_idx < 4; ++block_tri_idx)
+
187 {
+
188 // Fetch vertex index. Create degenerate triangles for padding triangles.
+
189 bool triangle_available = t + block_tri_idx < tri_count;
+
190 uint32 src_vertex_index = triangle_available? inTriangles[t + block_tri_idx].mIdx[vertex_nr] : inTriangles[tri_count - 1].mIdx[0];
+
191
+
192 // Check if we've seen this vertex before and if it is in the range that we can encode
+
193 uint32 &vertex_index = mVertexMap[src_vertex_index];
+
194 if (vertex_index == 0xffffffff || vertex_index < start_vertex)
+
195 {
+
196 // Add vertex
+
197 vertex_index = (uint32)mVertices.size();
+
198 mVertices.push_back(src_vertex_index);
+
199 }
+
200
+
201 // Store vertex index
+
202 uint32 vertex_offset = vertex_index - start_vertex;
+
203 if (vertex_offset > 0xff)
+
204 {
+
205 outError = "TriangleCodecIndexed8BitPackSOA4Flags: Offset doesn't fit in 8 bit";
+
206 return uint(-1);
+
207 }
+
208 block->mIndices[vertex_nr][block_tri_idx] = (uint8)vertex_offset;
+
209
+
210 // Store flags
+
211 uint32 flags = triangle_available? inTriangles[t + block_tri_idx].mMaterialIndex : 0;
+
212 if (flags > 0xff)
+
213 {
+
214 outError = "TriangleCodecIndexed8BitPackSOA4Flags: Material index doesn't fit in 8 bit";
+
215 return uint(-1);
+
216 }
+
217 block->mFlags[block_tri_idx] = (uint8)flags;
+
218 }
+
219 }
+
220
+
221 // Store user data
+
222 if (inStoreUserData)
+
223 {
+
224 uint32 *user_data = ioBuffer.Allocate<uint32>(tri_count);
+
225 for (uint t = 0; t < tri_count; ++t)
+
226 user_data[t] = inTriangles[t].mUserData;
+
227 }
+
228
+
229 return offset;
+
230 }
+
+
231
+
+
233 void Finalize(const VertexList &inVertices, TriangleHeader *ioHeader, ByteBuffer &ioBuffer) const
+
234 {
+
235 // Check if anything to do
+
236 if (mVertices.empty())
+
237 return;
+
238
+
239 // Align buffer to 4 bytes
+
240 uint vertices_idx = (uint)ioBuffer.Align(4);
+
241
+
242 // Patch the offsets
+
243 for (uint o : mOffsetsToPatch)
+
244 {
+
245 uint32 *flags = ioBuffer.Get<uint32>(o);
+
246 uint32 delta = vertices_idx - o;
+
247 if ((*flags & OFFSET_TO_VERTICES_MASK) + delta > OFFSET_TO_VERTICES_MASK)
+
248 JPH_ASSERT(false, "Offset to vertices doesn't fit");
+
249 *flags += delta;
+
250 }
+
251
+
252 // Calculate bounding box
+
253 AABox bounds;
+
254 for (uint32 v : mVertices)
+
255 bounds.Encapsulate(Vec3(inVertices[v]));
+
256
+
257 // Compress vertices
+
258 VertexData *vertices = ioBuffer.Allocate<VertexData>(mVertices.size());
+
259 Vec3 compress_scale = Vec3::sReplicate(COMPONENT_MASK) / Vec3::sMax(bounds.GetSize(), Vec3::sReplicate(1.0e-20f));
+
260 for (uint32 v : mVertices)
+
261 {
+
262 UVec4 c = ((Vec3(inVertices[v]) - bounds.mMin) * compress_scale + Vec3::sReplicate(0.5f)).ToInt();
+ + + +
266 vertices->mVertexXY = c.GetX() + (c.GetY() << COMPONENT_Y1);
+
267 vertices->mVertexZY = c.GetZ() + ((c.GetY() >> COMPONENT_Y1_BITS) << COMPONENT_Y2);
+
268 ++vertices;
+
269 }
+
270
+
271 // Store decompression information
+
272 bounds.mMin.StoreFloat3(&ioHeader->mOffset);
+
273 (bounds.GetSize() / Vec3::sReplicate(COMPONENT_MASK)).StoreFloat3(&ioHeader->mScale);
+
274 }
+
+
275
+
276 private:
+
277 using VertexMap = Array<uint32>;
+
278
+
279 uint mNumTriangles = 0;
+
280 Array<uint32> mVertices;
+
281 VertexMap mVertexMap;
+
282 Array<uint> mOffsetsToPatch;
+
283 };
+
+
284
+
+ +
287 {
+
288 private:
+
290 JPH_INLINE void Unpack(const VertexData *inVertices, UVec4Arg inIndex, Vec4 &outX, Vec4 &outY, Vec4 &outZ) const
+
291 {
+
292 // Get compressed data
+
293 UVec4 c1 = UVec4::sGatherInt4<8>(&inVertices->mVertexXY, inIndex);
+
294 UVec4 c2 = UVec4::sGatherInt4<8>(&inVertices->mVertexZY, inIndex);
+
295
+
296 // Unpack the x y and z component
+ + + +
300
+
301 // Convert to float
+
302 outX = Vec4::sFusedMultiplyAdd(xc.ToFloat(), mScaleX, mOffsetX);
+
303 outY = Vec4::sFusedMultiplyAdd(yc.ToFloat(), mScaleY, mOffsetY);
+
304 outZ = Vec4::sFusedMultiplyAdd(zc.ToFloat(), mScaleZ, mOffsetZ);
+
305 }
+
306
+
307 public:
+
+
308 JPH_INLINE explicit DecodingContext(const TriangleHeader *inHeader) :
+
309 mOffsetX(Vec4::sReplicate(inHeader->mOffset.x)),
+
310 mOffsetY(Vec4::sReplicate(inHeader->mOffset.y)),
+
311 mOffsetZ(Vec4::sReplicate(inHeader->mOffset.z)),
+
312 mScaleX(Vec4::sReplicate(inHeader->mScale.x)),
+
313 mScaleY(Vec4::sReplicate(inHeader->mScale.y)),
+
314 mScaleZ(Vec4::sReplicate(inHeader->mScale.z))
+
315 {
+
316 }
+
+
317
+
+
319 JPH_INLINE void Unpack(const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles) const
+
320 {
+
321 JPH_ASSERT(inNumTriangles > 0);
+
322 const TriangleBlockHeader *header = reinterpret_cast<const TriangleBlockHeader *>(inTriangleStart);
+
323 const VertexData *vertices = header->GetVertexData();
+
324 const TriangleBlock *t = header->GetTriangleBlock();
+
325 const TriangleBlock *end = t + ((inNumTriangles + 3) >> 2);
+
326
+
327 int triangles_left = inNumTriangles;
+
328
+
329 do
+
330 {
+
331 // Get the indices for the three vertices (reads 4 bytes extra, but these are the flags so that's ok)
+
332 UVec4 indices = UVec4::sLoadInt4(reinterpret_cast<const uint32 *>(&t->mIndices[0]));
+
333 UVec4 iv1 = indices.Expand4Byte0();
+
334 UVec4 iv2 = indices.Expand4Byte4();
+
335 UVec4 iv3 = indices.Expand4Byte8();
+
336
+
337 // Decompress the triangle data
+
338 Vec4 v1x, v1y, v1z, v2x, v2y, v2z, v3x, v3y, v3z;
+
339 Unpack(vertices, iv1, v1x, v1y, v1z);
+
340 Unpack(vertices, iv2, v2x, v2y, v2z);
+
341 Unpack(vertices, iv3, v3x, v3y, v3z);
+
342
+
343 // Transpose it so we get normal vectors
+
344 Mat44 v1 = Mat44(v1x, v1y, v1z, Vec4::sZero()).Transposed();
+
345 Mat44 v2 = Mat44(v2x, v2y, v2z, Vec4::sZero()).Transposed();
+
346 Mat44 v3 = Mat44(v3x, v3y, v3z, Vec4::sZero()).Transposed();
+
347
+
348 // Store triangle data
+
349 for (int i = 0; i < 4 && triangles_left > 0; ++i, --triangles_left)
+
350 {
+
351 *outTriangles++ = v1.GetColumn3(i);
+
352 *outTriangles++ = v2.GetColumn3(i);
+
353 *outTriangles++ = v3.GetColumn3(i);
+
354 }
+
355
+
356 ++t;
+
357 }
+
358 while (t < end);
+
359 }
+
+
360
+
+
362 JPH_INLINE float TestRay(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, const void *inTriangleStart, uint32 inNumTriangles, float inClosest, uint32 &outClosestTriangleIndex) const
+
363 {
+
364 JPH_ASSERT(inNumTriangles > 0);
+
365 const TriangleBlockHeader *header = reinterpret_cast<const TriangleBlockHeader *>(inTriangleStart);
+
366 const VertexData *vertices = header->GetVertexData();
+
367 const TriangleBlock *t = header->GetTriangleBlock();
+
368 const TriangleBlock *end = t + ((inNumTriangles + 3) >> 2);
+
369
+
370 Vec4 closest = Vec4::sReplicate(inClosest);
+
371 UVec4 closest_triangle_idx = UVec4::sZero();
+
372
+
373 UVec4 start_triangle_idx = UVec4::sZero();
+
374 do
+
375 {
+
376 // Get the indices for the three vertices (reads 4 bytes extra, but these are the flags so that's ok)
+
377 UVec4 indices = UVec4::sLoadInt4(reinterpret_cast<const uint32 *>(&t->mIndices[0]));
+
378 UVec4 iv1 = indices.Expand4Byte0();
+
379 UVec4 iv2 = indices.Expand4Byte4();
+
380 UVec4 iv3 = indices.Expand4Byte8();
+
381
+
382 // Decompress the triangle data
+
383 Vec4 v1x, v1y, v1z, v2x, v2y, v2z, v3x, v3y, v3z;
+
384 Unpack(vertices, iv1, v1x, v1y, v1z);
+
385 Unpack(vertices, iv2, v2x, v2y, v2z);
+
386 Unpack(vertices, iv3, v3x, v3y, v3z);
+
387
+
388 // Perform ray vs triangle test
+
389 Vec4 distance = RayTriangle4(inRayOrigin, inRayDirection, v1x, v1y, v1z, v2x, v2y, v2z, v3x, v3y, v3z);
+
390
+
391 // Update closest with the smaller values
+
392 UVec4 smaller = Vec4::sLess(distance, closest);
+
393 closest = Vec4::sSelect(closest, distance, smaller);
+
394
+
395 // Update triangle index with the smallest values
+
396 UVec4 triangle_idx = start_triangle_idx + UVec4(0, 1, 2, 3);
+
397 closest_triangle_idx = UVec4::sSelect(closest_triangle_idx, triangle_idx, smaller);
+
398
+
399 // Next block
+
400 ++t;
+
401 start_triangle_idx += UVec4::sReplicate(4);
+
402 }
+
403 while (t < end);
+
404
+
405 // Get the smallest component
+
406 Vec4::sSort4(closest, closest_triangle_idx);
+
407 outClosestTriangleIndex = closest_triangle_idx.GetX();
+
408 return closest.GetX();
+
409 }
+
+
410
+
+
412 inline void GetTriangle(const void *inTriangleStart, uint32 inTriangleIdx, Vec3 &outV1, Vec3 &outV2, Vec3 &outV3) const
+
413 {
+
414 const TriangleBlockHeader *header = reinterpret_cast<const TriangleBlockHeader *>(inTriangleStart);
+
415 const VertexData *vertices = header->GetVertexData();
+
416 const TriangleBlock *block = header->GetTriangleBlock() + (inTriangleIdx >> 2);
+
417 uint32 block_triangle_idx = inTriangleIdx & 0b11;
+
418
+
419 // Get the 3 vertices
+
420 const VertexData &v1 = vertices[block->mIndices[0][block_triangle_idx]];
+
421 const VertexData &v2 = vertices[block->mIndices[1][block_triangle_idx]];
+
422 const VertexData &v3 = vertices[block->mIndices[2][block_triangle_idx]];
+
423
+
424 // Pack the vertices
+
425 UVec4 c1(v1.mVertexXY, v2.mVertexXY, v3.mVertexXY, 0);
+
426 UVec4 c2(v1.mVertexZY, v2.mVertexZY, v3.mVertexZY, 0);
+
427
+
428 // Unpack the x y and z component
+ + + +
432
+
433 // Convert to float
+
434 Vec4 vx = Vec4::sFusedMultiplyAdd(xc.ToFloat(), mScaleX, mOffsetX);
+
435 Vec4 vy = Vec4::sFusedMultiplyAdd(yc.ToFloat(), mScaleY, mOffsetY);
+
436 Vec4 vz = Vec4::sFusedMultiplyAdd(zc.ToFloat(), mScaleZ, mOffsetZ);
+
437
+
438 // Transpose it so we get normal vectors
+
439 Mat44 trans = Mat44(vx, vy, vz, Vec4::sZero()).Transposed();
+
440 outV1 = trans.GetAxisX();
+
441 outV2 = trans.GetAxisY();
+
442 outV3 = trans.GetAxisZ();
+
443 }
+
+
444
+
+
446 JPH_INLINE uint32 GetUserData(const void *inTriangleStart, uint32 inTriangleIdx) const
+
447 {
+
448 const TriangleBlockHeader *header = reinterpret_cast<const TriangleBlockHeader *>(inTriangleStart);
+
449 const uint32 *user_data = header->GetUserData();
+
450 return user_data != nullptr? user_data[inTriangleIdx] : 0;
+
451 }
+
+
452
+
+
454 JPH_INLINE static void sGetFlags(const void *inTriangleStart, uint32 inNumTriangles, uint8 *outTriangleFlags)
+
455 {
+
456 JPH_ASSERT(inNumTriangles > 0);
+
457 const TriangleBlockHeader *header = reinterpret_cast<const TriangleBlockHeader *>(inTriangleStart);
+
458 const TriangleBlock *t = header->GetTriangleBlock();
+
459 const TriangleBlock *end = t + ((inNumTriangles + 3) >> 2);
+
460
+
461 int triangles_left = inNumTriangles;
+
462 do
+
463 {
+
464 for (int i = 0; i < 4 && triangles_left > 0; ++i, --triangles_left)
+
465 *outTriangleFlags++ = t->mFlags[i];
+
466
+
467 ++t;
+
468 }
+
469 while (t < end);
+
470 }
+
+
471
+
+
473 JPH_INLINE static uint8 sGetFlags(const void *inTriangleStart, int inTriangleIndex)
+
474 {
+
475 const TriangleBlockHeader *header = reinterpret_cast<const TriangleBlockHeader *>(inTriangleStart);
+
476 const TriangleBlock *first_block = header->GetTriangleBlock();
+
477 return first_block[inTriangleIndex >> 2].mFlags[inTriangleIndex & 0b11];
+
478 }
+
+
479
+
+
481 JPH_INLINE void Unpack(const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles, uint8 *outTriangleFlags) const
+
482 {
+
483 Unpack(inTriangleStart, inNumTriangles, outTriangles);
+
484 sGetFlags(inTriangleStart, inNumTriangles, outTriangleFlags);
+
485 }
+
+
486
+
487 private:
+
488 Vec4 mOffsetX;
+
489 Vec4 mOffsetY;
+
490 Vec4 mOffsetZ;
+
491 Vec4 mScaleX;
+
492 Vec4 mScaleY;
+
493 Vec4 mScaleZ;
+
494 };
+
+
495};
+
+
496
+ +
std::uint8_t uint8
Definition Core.h:453
+
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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)
Clamp a value between two values.
Definition Math.h:45
+
T AlignUp(T inV, uint64 inAlignment)
Align inV up to the next inAlignment bytes.
Definition Math.h:80
+ +
JPH_INLINE Vec4 RayTriangle4(Vec3Arg inOrigin, Vec3Arg inDirection, Vec4Arg inV0X, Vec4Arg inV0Y, Vec4Arg inV0Z, Vec4Arg inV1X, Vec4Arg inV1Y, Vec4Arg inV1Z, Vec4Arg inV2X, Vec4Arg inV2Y, Vec4Arg inV2Z)
Intersect ray with 4 triangles in SOA format, returns 4 vector of closest points or FLT_MAX if no hit...
Definition RayTriangle.h:76
+
Axis aligned box.
Definition AABox.h:16
+
Vec3 GetSize() const
Get size of bounding box.
Definition AABox.h:117
+
Vec3 mMin
Bounding box min and max.
Definition AABox.h:300
+
void Encapsulate(Vec3Arg inPos)
Encapsulate point in bounding box.
Definition AABox.h:53
+ +
bool empty() const
Returns true if there are no elements in the array.
Definition Array.h:312
+
size_type size() const
Returns amount of elements in the array.
Definition Array.h:318
+
void push_back(const T &inValue)
Add element to the back of the array.
Definition Array.h:275
+
void reserve(size_type inNewSize)
Reserve array space.
Definition Array.h:111
+
Simple byte buffer, aligned to a cache line.
Definition ByteBuffer.h:16
+
Type * Allocate(size_t inSize=1)
Allocate block of data of inSize elements and return the pointer.
Definition ByteBuffer.h:33
+
size_t Align(size_t inSize)
Align the size to a multiple of inSize, returns the length after alignment.
Definition ByteBuffer.h:19
+
const Type * Get(size_t inPosition) const
Get object at inPosition (an offset in bytes)
Definition ByteBuffer.h:61
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
Triangle with 32-bit indices and material index.
Definition IndexedTriangle.h:73
+
uint32 mIdx[3]
Definition IndexedTriangle.h:68
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
JPH_INLINE Vec3 GetAxisY() const
Definition Mat44.h:148
+
JPH_INLINE Vec3 GetAxisZ() const
Definition Mat44.h:150
+
JPH_INLINE Mat44 Transposed() const
Transpose matrix.
Definition Mat44.inl:467
+
JPH_INLINE Vec3 GetColumn3(uint inCol) const
Definition Mat44.h:158
+
JPH_INLINE Vec3 GetAxisX() const
Access to the columns.
Definition Mat44.h:146
+
This class is used to decode and decompress triangle data packed by the EncodingContext.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:287
+
void GetTriangle(const void *inTriangleStart, uint32 inTriangleIdx, Vec3 &outV1, Vec3 &outV2, Vec3 &outV3) const
Decode a single triangle.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:412
+
static JPH_INLINE uint8 sGetFlags(const void *inTriangleStart, int inTriangleIndex)
Get flags for a particular triangle.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:473
+
static JPH_INLINE void sGetFlags(const void *inTriangleStart, uint32 inNumTriangles, uint8 *outTriangleFlags)
Get flags for entire triangle block.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:454
+
JPH_INLINE uint32 GetUserData(const void *inTriangleStart, uint32 inTriangleIdx) const
Get user data for a triangle.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:446
+
JPH_INLINE void Unpack(const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles, uint8 *outTriangleFlags) const
Unpacks triangles and flags, convenience function.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:481
+
JPH_INLINE void Unpack(const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles) const
Unpacks triangles in the format t1v1,t1v2,t1v3, t2v1,t2v2,t2v3, ...
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:319
+
JPH_INLINE float TestRay(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, const void *inTriangleStart, uint32 inNumTriangles, float inClosest, uint32 &outClosestTriangleIndex) const
Tests a ray against the packed triangles.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:362
+
JPH_INLINE DecodingContext(const TriangleHeader *inHeader)
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:308
+
This class is used to encode and compress triangle data into a byte buffer.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:133
+
EncodingContext(const VertexList &inVertices)
Construct the encoding context.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:136
+
void Finalize(const VertexList &inVertices, TriangleHeader *ioHeader, ByteBuffer &ioBuffer) const
After all triangles have been packed, this finalizes the header and triangle buffer.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:233
+
uint Pack(const IndexedTriangleList &inTriangles, bool inStoreUserData, ByteBuffer &ioBuffer, const char *&outError)
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:152
+
uint GetPessimisticMemoryEstimate(uint inTriangleCount, bool inStoreUserData) const
Get an upper bound on the amount of bytes needed to store inTriangleCount triangles.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:144
+
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:28
+
Float3 mOffset
Offset of all vertices.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:30
+
Float3 mScale
Scale of all vertices, vertex_position = mOffset + mScale * compressed_vertex_position.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:31
+
This class is used to validate that the triangle data will not be degenerate after compression.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:103
+
bool IsDegenerate(const IndexedTriangle &inTriangle) const
Test if a triangle will be degenerate after quantization.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:116
+
ValidationContext(const IndexedTriangleList &inTriangles, const VertexList &inVertices)
Constructor.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:106
+
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:25
+
static constexpr bool ChangesOffsetOnPack
If this codec could return a different offset than the current buffer size when calling Pack()
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:38
+
static constexpr int TriangleHeaderSize
Size of the header (an empty struct is always > 0 bytes so this needs a separate variable)
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:35
+
EComponentData
Amount of bits per component.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:42
+
@ COMPONENT_BITS
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:43
+
@ COMPONENT_MASK
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:44
+
ETriangleBlockHeaderFlags
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:82
+
@ OFFSET_TO_USERDATA_BITS
When user data is stored, this is the number of blocks to skip to get to the user data (0 = no user d...
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:85
+
@ OFFSET_TO_USERDATA_MASK
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:86
+
@ OFFSET_TO_VERTICES_MASK
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:84
+
@ OFFSET_TO_VERTICES_BITS
Offset from current block to start of vertices in bytes.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:83
+
EVertexXY
Packed X and Y coordinate.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:49
+
@ COMPONENT_X
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:50
+
@ COMPONENT_Y1
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:51
+
@ COMPONENT_Y1_BITS
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:52
+
EVertexZY
Packed Z and Y coordinate.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:57
+
@ COMPONENT_Z
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:58
+
@ COMPONENT_Y2_BITS
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:60
+
@ COMPONENT_Y2
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:59
+
Definition UVec4.h:12
+
JPH_INLINE uint32 GetZ() const
Definition UVec4.h:104
+
JPH_INLINE UVec4 LogicalShiftLeft() const
Shift all components by Count bits to the left (filling with zeros from the left)
+
JPH_INLINE uint32 GetY() const
Definition UVec4.h:103
+
JPH_INLINE UVec4 LogicalShiftRight() const
Shift all components by Count bits to the right (filling with zeros from the right)
+
static JPH_INLINE UVec4 sReplicate(uint32 inV)
Replicate int inV across all components.
Definition UVec4.inl:56
+
JPH_INLINE UVec4 Expand4Byte4() const
Takes byte 4 .. 7 and expands them to X, Y, Z and W.
Definition UVec4.inl:507
+
JPH_INLINE UVec4 Expand4Byte0() const
Takes byte 0 .. 3 and expands them to X, Y, Z and W.
Definition UVec4.inl:492
+
static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)
Logical and (component wise)
Definition UVec4.inl:199
+
static JPH_INLINE UVec4 sOr(UVec4Arg inV1, UVec4Arg inV2)
Logical or (component wise)
Definition UVec4.inl:171
+
JPH_INLINE uint32 GetX() const
Get individual components.
Definition UVec4.h:102
+
JPH_INLINE UVec4 Expand4Byte8() const
Takes byte 8 .. 11 and expands them to X, Y, Z and W.
Definition UVec4.inl:522
+
static JPH_INLINE UVec4 sLoadInt4(const uint32 *inV)
Load 4 ints from memory.
Definition UVec4.inl:78
+
static JPH_INLINE UVec4 sZero()
Vector with all zeros.
Definition UVec4.inl:45
+
static JPH_INLINE UVec4 sSelect(UVec4Arg inV1, UVec4Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition UVec4.inl:157
+
JPH_INLINE Vec4 ToFloat() const
Convert each component from an int to a float.
Definition UVec4.inl:326
+
Definition Vec3.h:17
+
static JPH_INLINE Vec3 sMax(Vec3Arg inV1, Vec3Arg inV2)
Return the maximum of each of the components.
Definition Vec3.inl:159
+
JPH_INLINE void StoreFloat3(Float3 *outV) const
Store 3 floats to memory.
Definition Vec3.inl:765
+
static JPH_INLINE Vec3 sReplicate(float inV)
Replicate inV across all components.
Definition Vec3.inl:118
+
Definition Vec4.h:14
+
static JPH_INLINE void sSort4(Vec4 &ioValue, UVec4 &ioIndex)
Definition Vec4.inl:301
+
static JPH_INLINE UVec4 sLess(Vec4Arg inV1, Vec4Arg inV2)
Less than (component wise)
Definition Vec4.inl:180
+
static JPH_INLINE Vec4 sFusedMultiplyAdd(Vec4Arg inMul1, Vec4Arg inMul2, Vec4Arg inAdd)
Calculates inMul1 * inMul2 + inAdd.
Definition Vec4.inl:236
+
static JPH_INLINE Vec4 sSelect(Vec4Arg inV1, Vec4Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec4.inl:254
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec4.h:113
+
static JPH_INLINE Vec4 sZero()
Vector with all zeros.
Definition Vec4.inl:63
+
static JPH_INLINE Vec4 sReplicate(float inV)
Replicate inV across all components.
Definition Vec4.inl:74
+
A triangle header, will be followed by one or more TriangleBlocks.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:91
+
const VertexData * GetVertexData() const
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:92
+
uint32 mFlags
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:96
+
const TriangleBlock * GetTriangleBlock() const
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:93
+
const uint32 * GetUserData() const
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:94
+
A block of 4 triangles.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:74
+
uint8 mFlags[4]
Triangle flags (could contain material and active edges)
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:76
+
uint8 mIndices[3][4]
8 bit indices to triangle vertices for 4 triangles in the form mIndices[vertex][triangle] where verte...
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:75
+
A single packed vertex.
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:65
+
uint32 mVertexXY
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:66
+
uint32 mVertexZY
Definition TriangleCodecIndexed8BitPackSOA4Flags.h:67
+
+
+ + + + diff --git a/_triangle_grouper_8h.html b/_triangle_grouper_8h.html new file mode 100644 index 000000000..4f4cf5dbe --- /dev/null +++ b/_triangle_grouper_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/TriangleGrouper/TriangleGrouper.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleGrouper.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TriangleGrouper
 A class that groups triangles in batches of N (according to closeness) More...
 
+
+
+ + + + diff --git a/_triangle_grouper_8h.js b/_triangle_grouper_8h.js new file mode 100644 index 000000000..8067a12f6 --- /dev/null +++ b/_triangle_grouper_8h.js @@ -0,0 +1,4 @@ +var _triangle_grouper_8h = +[ + [ "TriangleGrouper", "class_triangle_grouper.html", "class_triangle_grouper" ] +]; \ No newline at end of file diff --git a/_triangle_grouper_8h_source.html b/_triangle_grouper_8h_source.html new file mode 100644 index 000000000..40a97f920 --- /dev/null +++ b/_triangle_grouper_8h_source.html @@ -0,0 +1,151 @@ + + + + + + + +Jolt Physics: Jolt/TriangleGrouper/TriangleGrouper.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleGrouper.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
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+
17 virtual ~TriangleGrouper() = default;
+
18
+
24 virtual void Group(const VertexList &inVertices, const IndexedTriangleList &inTriangles, int inGroupSize, Array<uint> &outGroupedTriangleIndices) = 0;
+
25};
+
+
26
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + + +
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
A class that groups triangles in batches of N (according to closeness)
Definition TriangleGrouper.h:14
+
virtual void Group(const VertexList &inVertices, const IndexedTriangleList &inTriangles, int inGroupSize, Array< uint > &outGroupedTriangleIndices)=0
+
virtual ~TriangleGrouper()=default
Virtual destructor.
+
+
+ + + + diff --git a/_triangle_grouper_closest_centroid_8cpp.html b/_triangle_grouper_closest_centroid_8cpp.html new file mode 100644 index 000000000..d45e515dd --- /dev/null +++ b/_triangle_grouper_closest_centroid_8cpp.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Jolt/TriangleGrouper/TriangleGrouperClosestCentroid.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleGrouperClosestCentroid.cpp File Reference
+
+
+
+
+ + + + diff --git a/_triangle_grouper_closest_centroid_8h.html b/_triangle_grouper_closest_centroid_8h.html new file mode 100644 index 000000000..e246801ae --- /dev/null +++ b/_triangle_grouper_closest_centroid_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/TriangleGrouper/TriangleGrouperClosestCentroid.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleGrouperClosestCentroid.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  TriangleGrouperClosestCentroid
 
+
+
+ + + + diff --git a/_triangle_grouper_closest_centroid_8h.js b/_triangle_grouper_closest_centroid_8h.js new file mode 100644 index 000000000..e2ee14f8c --- /dev/null +++ b/_triangle_grouper_closest_centroid_8h.js @@ -0,0 +1,4 @@ +var _triangle_grouper_closest_centroid_8h = +[ + [ "TriangleGrouperClosestCentroid", "class_triangle_grouper_closest_centroid.html", "class_triangle_grouper_closest_centroid" ] +]; \ No newline at end of file diff --git a/_triangle_grouper_closest_centroid_8h_source.html b/_triangle_grouper_closest_centroid_8h_source.html new file mode 100644 index 000000000..4fb22bc3b --- /dev/null +++ b/_triangle_grouper_closest_centroid_8h_source.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Jolt/TriangleGrouper/TriangleGrouperClosestCentroid.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleGrouperClosestCentroid.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
+
+ +
15{
+
16public:
+
17 // See: TriangleGrouper::Group
+
18 virtual void Group(const VertexList &inVertices, const IndexedTriangleList &inTriangles, int inGroupSize, Array<uint> &outGroupedTriangleIndices) override;
+
19};
+
+
20
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
Definition TriangleGrouperClosestCentroid.h:15
+
A class that groups triangles in batches of N (according to closeness)
Definition TriangleGrouper.h:14
+
virtual void Group(const VertexList &inVertices, const IndexedTriangleList &inTriangles, int inGroupSize, Array< uint > &outGroupedTriangleIndices)=0
+
+
+ + + + diff --git a/_triangle_grouper_morton_8cpp.html b/_triangle_grouper_morton_8cpp.html new file mode 100644 index 000000000..7b62a25cf --- /dev/null +++ b/_triangle_grouper_morton_8cpp.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Jolt/TriangleGrouper/TriangleGrouperMorton.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleGrouperMorton.cpp File Reference
+
+
+
+
+ + + + diff --git a/_triangle_grouper_morton_8h.html b/_triangle_grouper_morton_8h.html new file mode 100644 index 000000000..d2408c4f5 --- /dev/null +++ b/_triangle_grouper_morton_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/TriangleGrouper/TriangleGrouperMorton.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleGrouperMorton.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  TriangleGrouperMorton
 
+
+
+ + + + diff --git a/_triangle_grouper_morton_8h.js b/_triangle_grouper_morton_8h.js new file mode 100644 index 000000000..ae7e9f46b --- /dev/null +++ b/_triangle_grouper_morton_8h.js @@ -0,0 +1,4 @@ +var _triangle_grouper_morton_8h = +[ + [ "TriangleGrouperMorton", "class_triangle_grouper_morton.html", "class_triangle_grouper_morton" ] +]; \ No newline at end of file diff --git a/_triangle_grouper_morton_8h_source.html b/_triangle_grouper_morton_8h_source.html new file mode 100644 index 000000000..2f024f658 --- /dev/null +++ b/_triangle_grouper_morton_8h_source.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Jolt/TriangleGrouper/TriangleGrouperMorton.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleGrouperMorton.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
+
+ +
14{
+
15public:
+
16 // See: TriangleGrouper::Group
+
17 virtual void Group(const VertexList &inVertices, const IndexedTriangleList &inTriangles, int inGroupSize, Array<uint> &outGroupedTriangleIndices) override;
+
18};
+
+
19
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
A class that groups triangles in batches of N (according to closeness)
Definition TriangleGrouper.h:14
+
virtual void Group(const VertexList &inVertices, const IndexedTriangleList &inTriangles, int inGroupSize, Array< uint > &outGroupedTriangleIndices)=0
+
Definition TriangleGrouperMorton.h:14
+
+
+ + + + diff --git a/_triangle_shape_8cpp.html b/_triangle_shape_8cpp.html new file mode 100644 index 000000000..a6f9f1c59 --- /dev/null +++ b/_triangle_shape_8cpp.html @@ -0,0 +1,173 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/TriangleShape.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleShape.cpp File Reference
+
+
+ + + + + + + + +

+Classes

class  TriangleShape::TriangleNoConvex
 
class  TriangleShape::TriangleWithConvex
 
class  TriangleShape::TSGetTrianglesContext
 
+ + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (TriangleShapeSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (TriangleShapeSettings )
+
+ +
+
+
+
+ + + + diff --git a/_triangle_shape_8cpp.js b/_triangle_shape_8cpp.js new file mode 100644 index 000000000..00c8edd3e --- /dev/null +++ b/_triangle_shape_8cpp.js @@ -0,0 +1,7 @@ +var _triangle_shape_8cpp = +[ + [ "TriangleShape::TriangleNoConvex", "class_triangle_shape_1_1_triangle_no_convex.html", "class_triangle_shape_1_1_triangle_no_convex" ], + [ "TriangleShape::TriangleWithConvex", "class_triangle_shape_1_1_triangle_with_convex.html", "class_triangle_shape_1_1_triangle_with_convex" ], + [ "TriangleShape::TSGetTrianglesContext", "class_triangle_shape_1_1_t_s_get_triangles_context.html", "class_triangle_shape_1_1_t_s_get_triangles_context" ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_triangle_shape_8cpp.html#ac6189fd63691be735ece12b15f32d0f5", null ] +]; \ No newline at end of file diff --git a/_triangle_shape_8h.html b/_triangle_shape_8h.html new file mode 100644 index 000000000..617993c83 --- /dev/null +++ b/_triangle_shape_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/TriangleShape.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleShape.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  TriangleShapeSettings
 Class that constructs a TriangleShape. More...
 
class  TriangleShape
 A single triangle, not the most efficient way of creating a world filled with triangles but can be used as a query shape for example. More...
 
+
+
+ + + + diff --git a/_triangle_shape_8h.js b/_triangle_shape_8h.js new file mode 100644 index 000000000..6e68aec84 --- /dev/null +++ b/_triangle_shape_8h.js @@ -0,0 +1,5 @@ +var _triangle_shape_8h = +[ + [ "TriangleShapeSettings", "class_triangle_shape_settings.html", "class_triangle_shape_settings" ], + [ "TriangleShape", "class_triangle_shape.html", "class_triangle_shape" ] +]; \ No newline at end of file diff --git a/_triangle_shape_8h_source.html b/_triangle_shape_8h_source.html new file mode 100644 index 000000000..f1803a517 --- /dev/null +++ b/_triangle_shape_8h_source.html @@ -0,0 +1,304 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape/TriangleShape.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleShape.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{
+
14public:
+ +
16
+
17
+ +
19
+
22 TriangleShapeSettings(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, float inConvexRadius = 0.0f, const PhysicsMaterial *inMaterial = nullptr) : ConvexShapeSettings(inMaterial), mV1(inV1), mV2(inV2), mV3(inV3), mConvexRadius(inConvexRadius) { }
+
23
+
24 // See: ShapeSettings
+
25 virtual ShapeResult Create() const override;
+
26
+ + + +
30 float mConvexRadius = 0.0f;
+
31};
+
+
32
+
+ +
35{
+
36public:
+ +
38
+ +
41 TriangleShape(const TriangleShapeSettings &inSettings, ShapeResult &outResult);
+
42
+
45 TriangleShape(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, float inConvexRadius = 0.0f, const PhysicsMaterial *inMaterial = nullptr) : ConvexShape(EShapeSubType::Triangle, inMaterial), mV1(inV1), mV2(inV2), mV3(inV3), mConvexRadius(inConvexRadius) { JPH_ASSERT(inConvexRadius >= 0.0f); }
+
46
+
48 float GetConvexRadius() const { return mConvexRadius; }
+
49
+
50 // See Shape::GetLocalBounds
+
51 virtual AABox GetLocalBounds() const override;
+
52
+
53 // See Shape::GetWorldSpaceBounds
+
54 virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override;
+ +
56
+
57 // See Shape::GetInnerRadius
+
58 virtual float GetInnerRadius() const override { return mConvexRadius; }
+
59
+
60 // See Shape::GetMassProperties
+
61 virtual MassProperties GetMassProperties() const override;
+
62
+
63 // See Shape::GetSurfaceNormal
+
64 virtual Vec3 GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override;
+
65
+
66 // See Shape::GetSupportingFace
+
67 virtual void GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override;
+
68
+
69 // See ConvexShape::GetSupportFunction
+
70 virtual const Support * GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override;
+
71
+
72 // See Shape::GetSubmergedVolume
+
73 virtual void GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override;
+
74
+
75#ifdef JPH_DEBUG_RENDERER
+
76 // See Shape::Draw
+
77 virtual void Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override;
+
78#endif // JPH_DEBUG_RENDERER
+
79
+
80 // See Shape::CastRay
+
81 virtual bool CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override;
+
82 virtual void CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
83
+
84 // See: Shape::CollidePoint
+
85 virtual void CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter = { }) const override;
+
86
+
87 // See: Shape::CollideSoftBodyVertices
+
88 virtual void CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override;
+
89
+
90 // See Shape::GetTrianglesStart
+
91 virtual void GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override;
+
92
+
93 // See Shape::GetTrianglesNext
+
94 virtual int GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials = nullptr) const override;
+
95
+
96 // See Shape
+
97 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
98
+
99 // See Shape::GetStats
+
100 virtual Stats GetStats() const override { return Stats(sizeof(*this), 1); }
+
101
+
102 // See Shape::GetVolume
+
103 virtual float GetVolume() const override { return 0; }
+
104
+
105 // See Shape::IsValidScale
+
106 virtual bool IsValidScale(Vec3Arg inScale) const override;
+
107
+
108 // See Shape::MakeScaleValid
+
109 virtual Vec3 MakeScaleValid(Vec3Arg inScale) const override;
+
110
+
111 // Register shape functions with the registry
+
112 static void sRegister();
+
113
+
114protected:
+
115 // See: Shape::RestoreBinaryState
+
116 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
117
+
118private:
+
119 // Helper functions called by CollisionDispatch
+
120 static void sCollideConvexVsTriangle(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);
+
121 static void sCollideSphereVsTriangle(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);
+
122 static void sCastConvexVsTriangle(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
123 static void sCastSphereVsTriangle(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector);
+
124
+
125 // Context for GetTrianglesStart/Next
+
126 class TSGetTrianglesContext;
+
127
+
128 // Classes for GetSupportFunction
+
129 class TriangleNoConvex;
+
130 class TriangleWithConvex;
+
131
+
132 Vec3 mV1;
+
133 Vec3 mV2;
+
134 Vec3 mV3;
+
135 float mConvexRadius = 0.0f;
+
136};
+
+
137
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_IF_DEBUG_RENDERER(...)
Definition Core.h:536
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#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:76
+
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
+
Class that constructs a ConvexShape (abstract)
Definition ConvexShape.h:18
+
Definition DebugRenderer.h:47
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
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
+
Definition Quat.h:33
+
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:184
+
virtual AABox GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
Definition Shape.h:220
+
virtual ShapeResult Create() const =0
Create a shape according to the settings specified by this object.
+
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
+
A simple triangle and its material.
Definition Triangle.h:11
+
A single triangle, not the most efficient way of creating a world filled with triangles but can be us...
Definition TriangleShape.h:35
+
virtual float GetInnerRadius() const override
Definition TriangleShape.h:58
+
TriangleShape(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, float inConvexRadius=0.0f, const PhysicsMaterial *inMaterial=nullptr)
Definition TriangleShape.h:45
+
virtual Stats GetStats() const override
Get stats of this shape. Use for logging / data collection purposes only. Does not add values from ch...
Definition TriangleShape.h:100
+
JPH_OVERRIDE_NEW_DELETE TriangleShape()
Constructor.
Definition TriangleShape.h:40
+
float GetConvexRadius() const
Convex radius.
Definition TriangleShape.h:48
+
virtual float GetVolume() const override
Definition TriangleShape.h:103
+
Class that constructs a TriangleShape.
Definition TriangleShape.h:13
+
Vec3 mV3
Definition TriangleShape.h:29
+
Vec3 mV1
Definition TriangleShape.h:27
+
Vec3 mV2
Definition TriangleShape.h:28
+
Definition Vec3.h:17
+
Definition RayCast.h:47
+
Class that holds information about the shape that can be used for logging / data collection purposes.
Definition Shape.h:408
+
Definition ShapeCast.h:69
+
+
+ + + + diff --git a/_triangle_splitter_8cpp.html b/_triangle_splitter_8cpp.html new file mode 100644 index 000000000..7e8f6d634 --- /dev/null +++ b/_triangle_splitter_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitter.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitter.cpp File Reference
+
+
+
+
+ + + + diff --git a/_triangle_splitter_8h.html b/_triangle_splitter_8h.html new file mode 100644 index 000000000..746b420db --- /dev/null +++ b/_triangle_splitter_8h.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitter.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleSplitter.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

class  TriangleSplitter
 A class that splits a triangle list into two parts for building a tree. More...
 
struct  TriangleSplitter::Stats
 
struct  TriangleSplitter::Range
 Helper struct to indicate triangle range before and after the split. More...
 
+
+
+ + + + diff --git a/_triangle_splitter_8h.js b/_triangle_splitter_8h.js new file mode 100644 index 000000000..962377049 --- /dev/null +++ b/_triangle_splitter_8h.js @@ -0,0 +1,6 @@ +var _triangle_splitter_8h = +[ + [ "TriangleSplitter", "class_triangle_splitter.html", "class_triangle_splitter" ], + [ "TriangleSplitter::Stats", "struct_triangle_splitter_1_1_stats.html", "struct_triangle_splitter_1_1_stats" ], + [ "TriangleSplitter::Range", "struct_triangle_splitter_1_1_range.html", "struct_triangle_splitter_1_1_range" ] +]; \ No newline at end of file diff --git a/_triangle_splitter_8h_source.html b/_triangle_splitter_8h_source.html new file mode 100644 index 000000000..0e84a0f94 --- /dev/null +++ b/_triangle_splitter_8h_source.html @@ -0,0 +1,227 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitter.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitter.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
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+
17 TriangleSplitter(const VertexList &inVertices, const IndexedTriangleList &inTriangles);
+
18
+
20 virtual ~TriangleSplitter() = default;
+
21
+
+
22 struct Stats
+
23 {
+
24 const char * mSplitterName = nullptr;
+
25 int mLeafSize = 0;
+
26 };
+
+
27
+
29 virtual void GetStats(Stats &outStats) const = 0;
+
30
+
+
32 struct Range
+
33 {
+
35 Range() = default;
+
36 Range(uint inBegin, uint inEnd) : mBegin(inBegin), mEnd(inEnd) { }
+
37
+
+
39 uint Count() const
+
40 {
+
41 return mEnd - mBegin;
+
42 }
+
+
43
+ + +
47 };
+
+
48
+
+ +
51 {
+
52 return Range(0, (uint)mSortedTriangleIdx.size());
+
53 }
+
+
54
+
60 virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight) = 0;
+
61
+
+
63 const VertexList & GetVertices() const
+
64 {
+
65 return mVertices;
+
66 }
+
+
67
+
+
69 const IndexedTriangle & GetTriangle(uint inIdx) const
+
70 {
+
71 return mTriangles[mSortedTriangleIdx[inIdx]];
+
72 }
+
+
73
+
74protected:
+
76 bool SplitInternal(const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight);
+
77
+ + + + +
82};
+
+
83
+ +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + + +
Triangle with 32-bit indices and material index.
Definition IndexedTriangle.h:73
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
A class that splits a triangle list into two parts for building a tree.
Definition TriangleSplitter.h:14
+
Array< Float3 > mCentroids
Unsorted centroids of triangles.
Definition TriangleSplitter.h:80
+
virtual ~TriangleSplitter()=default
Virtual destructor.
+
const VertexList & GetVertices() const
Get the list of vertices.
Definition TriangleSplitter.h:63
+
const VertexList & mVertices
Vertices of the indexed triangles.
Definition TriangleSplitter.h:78
+
virtual void GetStats(Stats &outStats) const =0
Get stats of splitter.
+
virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight)=0
+
const IndexedTriangleList & mTriangles
Unsorted triangles.
Definition TriangleSplitter.h:79
+
Array< uint > mSortedTriangleIdx
Indices to sort triangles.
Definition TriangleSplitter.h:81
+
const IndexedTriangle & GetTriangle(uint inIdx) const
Get triangle by index.
Definition TriangleSplitter.h:69
+
Range GetInitialRange() const
Range of triangles to start with.
Definition TriangleSplitter.h:50
+
Helper struct to indicate triangle range before and after the split.
Definition TriangleSplitter.h:33
+
uint mEnd
Definition TriangleSplitter.h:46
+
Range(uint inBegin, uint inEnd)
Definition TriangleSplitter.h:36
+
uint Count() const
Get number of triangles in range.
Definition TriangleSplitter.h:39
+
uint mBegin
Start and end index (end = 1 beyond end)
Definition TriangleSplitter.h:45
+
Range()=default
Constructor.
+
Definition TriangleSplitter.h:23
+
+
+ + + + diff --git a/_triangle_splitter_binning_8cpp.html b/_triangle_splitter_binning_8cpp.html new file mode 100644 index 000000000..ed24d8ca9 --- /dev/null +++ b/_triangle_splitter_binning_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterBinning.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterBinning.cpp File Reference
+
+
+
+
+ + + + diff --git a/_triangle_splitter_binning_8h.html b/_triangle_splitter_binning_8h.html new file mode 100644 index 000000000..59f066797 --- /dev/null +++ b/_triangle_splitter_binning_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterBinning.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleSplitterBinning.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TriangleSplitterBinning
 Binning splitter approach taken from: Realtime Ray Tracing on GPU with BVH-based Packet Traversal by Johannes Gunther et al. More...
 
+
+
+ + + + diff --git a/_triangle_splitter_binning_8h.js b/_triangle_splitter_binning_8h.js new file mode 100644 index 000000000..baf2de229 --- /dev/null +++ b/_triangle_splitter_binning_8h.js @@ -0,0 +1,4 @@ +var _triangle_splitter_binning_8h = +[ + [ "TriangleSplitterBinning", "class_triangle_splitter_binning.html", "class_triangle_splitter_binning" ] +]; \ No newline at end of file diff --git a/_triangle_splitter_binning_8h_source.html b/_triangle_splitter_binning_8h_source.html new file mode 100644 index 000000000..d275e2270 --- /dev/null +++ b/_triangle_splitter_binning_8h_source.html @@ -0,0 +1,187 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterBinning.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterBinning.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
+ + +
9
+ +
11
+
+ +
14{
+
15public:
+
17 TriangleSplitterBinning(const VertexList &inVertices, const IndexedTriangleList &inTriangles, uint inMinNumBins = 8, uint inMaxNumBins = 128, uint inNumTrianglesPerBin = 6);
+
18
+
19 // See TriangleSplitter::GetStats
+
+
20 virtual void GetStats(Stats &outStats) const override
+
21 {
+
22 outStats.mSplitterName = "TriangleSplitterBinning";
+
23 }
+
+
24
+
25 // See TriangleSplitter::Split
+
26 virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight) override;
+
27
+
28private:
+
29 // Configuration
+
30 const uint mMinNumBins;
+
31 const uint mMaxNumBins;
+
32 const uint mNumTrianglesPerBin;
+
33
+
34 struct Bin
+
35 {
+
36 // Properties of this bin
+
37 AABox mBounds;
+
38 float mMinCentroid;
+
39 uint mNumTriangles;
+
40
+
41 // Accumulated data from left most / right most bin to current (including this bin)
+
42 AABox mBoundsAccumulatedLeft;
+
43 AABox mBoundsAccumulatedRight;
+
44 uint mNumTrianglesAccumulatedLeft;
+
45 uint mNumTrianglesAccumulatedRight;
+
46 };
+
47
+
48 // Scratch area to store the bins
+
49 Array<Bin> mBins;
+
50};
+
+
51
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Axis aligned box.
Definition AABox.h:16
+ +
Binning splitter approach taken from: Realtime Ray Tracing on GPU with BVH-based Packet Traversal by ...
Definition TriangleSplitterBinning.h:14
+
virtual void GetStats(Stats &outStats) const override
Get stats of splitter.
Definition TriangleSplitterBinning.h:20
+
A class that splits a triangle list into two parts for building a tree.
Definition TriangleSplitter.h:14
+
virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight)=0
+
Definition TriangleSplitter.h:23
+
const char * mSplitterName
Definition TriangleSplitter.h:24
+
+
+ + + + diff --git a/_triangle_splitter_fixed_leaf_size_8cpp.html b/_triangle_splitter_fixed_leaf_size_8cpp.html new file mode 100644 index 000000000..a08749104 --- /dev/null +++ b/_triangle_splitter_fixed_leaf_size_8cpp.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterFixedLeafSize.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterFixedLeafSize.cpp File Reference
+
+
+
+
+ + + + diff --git a/_triangle_splitter_fixed_leaf_size_8h.html b/_triangle_splitter_fixed_leaf_size_8h.html new file mode 100644 index 000000000..ba82ef167 --- /dev/null +++ b/_triangle_splitter_fixed_leaf_size_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterFixedLeafSize.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleSplitterFixedLeafSize.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  TriangleSplitterFixedLeafSize
 
+
+
+ + + + diff --git a/_triangle_splitter_fixed_leaf_size_8h.js b/_triangle_splitter_fixed_leaf_size_8h.js new file mode 100644 index 000000000..6a3f522e0 --- /dev/null +++ b/_triangle_splitter_fixed_leaf_size_8h.js @@ -0,0 +1,4 @@ +var _triangle_splitter_fixed_leaf_size_8h = +[ + [ "TriangleSplitterFixedLeafSize", "class_triangle_splitter_fixed_leaf_size.html", "class_triangle_splitter_fixed_leaf_size" ] +]; \ No newline at end of file diff --git a/_triangle_splitter_fixed_leaf_size_8h_source.html b/_triangle_splitter_fixed_leaf_size_8h_source.html new file mode 100644 index 000000000..c40ac2a0b --- /dev/null +++ b/_triangle_splitter_fixed_leaf_size_8h_source.html @@ -0,0 +1,190 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterFixedLeafSize.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterFixedLeafSize.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
+ + +
9
+ +
11
+
+ +
15{
+
16public:
+
18 TriangleSplitterFixedLeafSize(const VertexList &inVertices, const IndexedTriangleList &inTriangles, uint inLeafSize, uint inMinNumBins = 8, uint inMaxNumBins = 128, uint inNumTrianglesPerBin = 6);
+
19
+
20 // See TriangleSplitter::GetStats
+
+
21 virtual void GetStats(Stats &outStats) const override
+
22 {
+
23 outStats.mSplitterName = "TriangleSplitterFixedLeafSize";
+
24 outStats.mLeafSize = mLeafSize;
+
25 }
+
+
26
+
27 // See TriangleSplitter::Split
+
28 virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight) override;
+
29
+
30private:
+
32 Vec3 GetCentroidForGroup(uint inFirstTriangleInGroup);
+
33
+
34 // Configuration
+
35 const uint mLeafSize;
+
36 const uint mMinNumBins;
+
37 const uint mMaxNumBins;
+
38 const uint mNumTrianglesPerBin;
+
39
+
40 struct Bin
+
41 {
+
42 // Properties of this bin
+
43 AABox mBounds;
+
44 float mMinCentroid;
+
45 uint mNumTriangles;
+
46
+
47 // Accumulated data from left most / right most bin to current (including this bin)
+
48 AABox mBoundsAccumulatedLeft;
+
49 AABox mBoundsAccumulatedRight;
+
50 uint mNumTrianglesAccumulatedLeft;
+
51 uint mNumTrianglesAccumulatedRight;
+
52 };
+
53};
+
+
54
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Axis aligned box.
Definition AABox.h:16
+ +
Definition TriangleSplitterFixedLeafSize.h:15
+
virtual void GetStats(Stats &outStats) const override
Get stats of splitter.
Definition TriangleSplitterFixedLeafSize.h:21
+
A class that splits a triangle list into two parts for building a tree.
Definition TriangleSplitter.h:14
+
virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight)=0
+
Definition Vec3.h:17
+
Definition TriangleSplitter.h:23
+
int mLeafSize
Definition TriangleSplitter.h:25
+
const char * mSplitterName
Definition TriangleSplitter.h:24
+
+
+ + + + diff --git a/_triangle_splitter_longest_axis_8cpp.html b/_triangle_splitter_longest_axis_8cpp.html new file mode 100644 index 000000000..c80ea479d --- /dev/null +++ b/_triangle_splitter_longest_axis_8cpp.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterLongestAxis.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterLongestAxis.cpp File Reference
+
+
+
+
+ + + + diff --git a/_triangle_splitter_longest_axis_8h.html b/_triangle_splitter_longest_axis_8h.html new file mode 100644 index 000000000..9c8376e46 --- /dev/null +++ b/_triangle_splitter_longest_axis_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterLongestAxis.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleSplitterLongestAxis.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TriangleSplitterLongestAxis
 Splitter using center of bounding box with longest axis. More...
 
+
+
+ + + + diff --git a/_triangle_splitter_longest_axis_8h.js b/_triangle_splitter_longest_axis_8h.js new file mode 100644 index 000000000..4e95dd888 --- /dev/null +++ b/_triangle_splitter_longest_axis_8h.js @@ -0,0 +1,4 @@ +var _triangle_splitter_longest_axis_8h = +[ + [ "TriangleSplitterLongestAxis", "class_triangle_splitter_longest_axis.html", "class_triangle_splitter_longest_axis" ] +]; \ No newline at end of file diff --git a/_triangle_splitter_longest_axis_8h_source.html b/_triangle_splitter_longest_axis_8h_source.html new file mode 100644 index 000000000..a42c247d9 --- /dev/null +++ b/_triangle_splitter_longest_axis_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterLongestAxis.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterLongestAxis.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{
+
14public:
+
16 TriangleSplitterLongestAxis(const VertexList &inVertices, const IndexedTriangleList &inTriangles);
+
17
+
18 // See TriangleSplitter::GetStats
+
+
19 virtual void GetStats(Stats &outStats) const override
+
20 {
+
21 outStats.mSplitterName = "TriangleSplitterLongestAxis";
+
22 }
+
+
23
+
24 // See TriangleSplitter::Split
+
25 virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight) override;
+
26};
+
+
27
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
A class that splits a triangle list into two parts for building a tree.
Definition TriangleSplitter.h:14
+
virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight)=0
+
Splitter using center of bounding box with longest axis.
Definition TriangleSplitterLongestAxis.h:13
+
virtual void GetStats(Stats &outStats) const override
Get stats of splitter.
Definition TriangleSplitterLongestAxis.h:19
+
Definition TriangleSplitter.h:23
+
const char * mSplitterName
Definition TriangleSplitter.h:24
+
+
+ + + + diff --git a/_triangle_splitter_mean_8cpp.html b/_triangle_splitter_mean_8cpp.html new file mode 100644 index 000000000..1729adfce --- /dev/null +++ b/_triangle_splitter_mean_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterMean.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterMean.cpp File Reference
+
+
+
+
+ + + + diff --git a/_triangle_splitter_mean_8h.html b/_triangle_splitter_mean_8h.html new file mode 100644 index 000000000..6f1cb75ea --- /dev/null +++ b/_triangle_splitter_mean_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterMean.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleSplitterMean.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TriangleSplitterMean
 Splitter using mean of axis with biggest centroid deviation. More...
 
+
+
+ + + + diff --git a/_triangle_splitter_mean_8h.js b/_triangle_splitter_mean_8h.js new file mode 100644 index 000000000..465803586 --- /dev/null +++ b/_triangle_splitter_mean_8h.js @@ -0,0 +1,4 @@ +var _triangle_splitter_mean_8h = +[ + [ "TriangleSplitterMean", "class_triangle_splitter_mean.html", "class_triangle_splitter_mean" ] +]; \ No newline at end of file diff --git a/_triangle_splitter_mean_8h_source.html b/_triangle_splitter_mean_8h_source.html new file mode 100644 index 000000000..1aa860797 --- /dev/null +++ b/_triangle_splitter_mean_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterMean.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterMean.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{
+
14public:
+
16 TriangleSplitterMean(const VertexList &inVertices, const IndexedTriangleList &inTriangles);
+
17
+
18 // See TriangleSplitter::GetStats
+
+
19 virtual void GetStats(Stats &outStats) const override
+
20 {
+
21 outStats.mSplitterName = "TriangleSplitterMean";
+
22 }
+
+
23
+
24 // See TriangleSplitter::Split
+
25 virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight) override;
+
26};
+
+
27
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
A class that splits a triangle list into two parts for building a tree.
Definition TriangleSplitter.h:14
+
virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight)=0
+
Splitter using mean of axis with biggest centroid deviation.
Definition TriangleSplitterMean.h:13
+
virtual void GetStats(Stats &outStats) const override
Get stats of splitter.
Definition TriangleSplitterMean.h:19
+
Definition TriangleSplitter.h:23
+
const char * mSplitterName
Definition TriangleSplitter.h:24
+
+
+ + + + diff --git a/_triangle_splitter_morton_8cpp.html b/_triangle_splitter_morton_8cpp.html new file mode 100644 index 000000000..dc8d5f6d1 --- /dev/null +++ b/_triangle_splitter_morton_8cpp.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterMorton.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterMorton.cpp File Reference
+
+
+
+
+ + + + diff --git a/_triangle_splitter_morton_8h.html b/_triangle_splitter_morton_8h.html new file mode 100644 index 000000000..c103e706c --- /dev/null +++ b/_triangle_splitter_morton_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterMorton.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleSplitterMorton.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  TriangleSplitterMorton
 Splitter using Morton codes, see: http://devblogs.nvidia.com/parallelforall/thinking-parallel-part-iii-tree-construction-gpu/. More...
 
+
+
+ + + + diff --git a/_triangle_splitter_morton_8h.js b/_triangle_splitter_morton_8h.js new file mode 100644 index 000000000..feababb39 --- /dev/null +++ b/_triangle_splitter_morton_8h.js @@ -0,0 +1,4 @@ +var _triangle_splitter_morton_8h = +[ + [ "TriangleSplitterMorton", "class_triangle_splitter_morton.html", "class_triangle_splitter_morton" ] +]; \ No newline at end of file diff --git a/_triangle_splitter_morton_8h_source.html b/_triangle_splitter_morton_8h_source.html new file mode 100644 index 000000000..10221d48c --- /dev/null +++ b/_triangle_splitter_morton_8h_source.html @@ -0,0 +1,164 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter/TriangleSplitterMorton.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterMorton.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{
+
14public:
+
16 TriangleSplitterMorton(const VertexList &inVertices, const IndexedTriangleList &inTriangles);
+
17
+
18 // See TriangleSplitter::GetStats
+
+
19 virtual void GetStats(Stats &outStats) const override
+
20 {
+
21 outStats.mSplitterName = "TriangleSplitterMorton";
+
22 }
+
+
23
+
24 // See TriangleSplitter::Split
+
25 virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight) override;
+
26
+
27private:
+
28 // Precalculated Morton codes
+
29 Array<uint32> mMortonCodes;
+
30};
+
+
31
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ + +
A class that splits a triangle list into two parts for building a tree.
Definition TriangleSplitter.h:14
+
virtual bool Split(const Range &inTriangles, Range &outLeft, Range &outRight)=0
+
Splitter using Morton codes, see: http://devblogs.nvidia.com/parallelforall/thinking-parallel-part-ii...
Definition TriangleSplitterMorton.h:13
+
virtual void GetStats(Stats &outStats) const override
Get stats of splitter.
Definition TriangleSplitterMorton.h:19
+
Definition TriangleSplitter.h:23
+
const char * mSplitterName
Definition TriangleSplitter.h:24
+
+
+ + + + diff --git a/_trigonometry_8h.html b/_trigonometry_8h.html new file mode 100644 index 000000000..797e5c033 --- /dev/null +++ b/_trigonometry_8h.html @@ -0,0 +1,313 @@ + + + + + + + +Jolt Physics: Jolt/Math/Trigonometry.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Trigonometry.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_INLINE float Sin (float inX)
 Sine of x (input in radians)
 
JPH_INLINE float Cos (float inX)
 Cosine of x (input in radians)
 
JPH_INLINE float Tan (float inX)
 Tangent of x (input in radians)
 
JPH_INLINE float ASin (float inX)
 
JPH_INLINE float ACos (float inX)
 
JPH_INLINE float ACosApproximate (float inX)
 An approximation of ACos, max error is 4.2e-3 over the entire range [-1, 1], is approximately 2.5x faster than ACos.
 
JPH_INLINE float ATan (float inX)
 Arc tangent of x (returns value in the range [-PI / 2, PI / 2])
 
JPH_INLINE float ATan2 (float inY, float inX)
 Arc tangent of y / x using the signs of the arguments to determine the correct quadrant (returns value in the range [-PI, PI])
 
+

Function Documentation

+ +

◆ ACos()

+ +
+
+ + + + + + + + +
JPH_INLINE float ACos (float inX)
+
+

Arc cosine of x (returns value in the range [0, PI]) Note that all input values will be clamped to the range [-1, 1] and this function will not return NaNs like std::acos

+ +
+
+ +

◆ ACosApproximate()

+ +
+
+ + + + + + + + +
JPH_INLINE float ACosApproximate (float inX)
+
+ +

An approximation of ACos, max error is 4.2e-3 over the entire range [-1, 1], is approximately 2.5x faster than ACos.

+ +
+
+ +

◆ ASin()

+ +
+
+ + + + + + + + +
JPH_INLINE float ASin (float inX)
+
+

Arc sine of x (returns value in the range [-PI / 2, PI / 2]) Note that all input values will be clamped to the range [-1, 1] and this function will not return NaNs like std::asin

+ +
+
+ +

◆ ATan()

+ +
+
+ + + + + + + + +
JPH_INLINE float ATan (float inX)
+
+ +

Arc tangent of x (returns value in the range [-PI / 2, PI / 2])

+ +
+
+ +

◆ ATan2()

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE float ATan2 (float inY,
float inX 
)
+
+ +

Arc tangent of y / x using the signs of the arguments to determine the correct quadrant (returns value in the range [-PI, PI])

+ +
+
+ +

◆ Cos()

+ +
+
+ + + + + + + + +
JPH_INLINE float Cos (float inX)
+
+ +

Cosine of x (input in radians)

+ +
+
+ +

◆ Sin()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_INLINE float Sin (float inX)
+
+ +

Sine of x (input in radians)

+ +
+
+ +

◆ Tan()

+ +
+
+ + + + + + + + +
JPH_INLINE float Tan (float inX)
+
+ +

Tangent of x (input in radians)

+ +
+
+
+
+ + + + diff --git a/_trigonometry_8h.js b/_trigonometry_8h.js new file mode 100644 index 000000000..2de2a44a7 --- /dev/null +++ b/_trigonometry_8h.js @@ -0,0 +1,11 @@ +var _trigonometry_8h = +[ + [ "ACos", "_trigonometry_8h.html#a4d69678f84c03b333e32ca716998db39", null ], + [ "ACosApproximate", "_trigonometry_8h.html#a1dec7e1e2e84f4362a0a65d390a51ee0", null ], + [ "ASin", "_trigonometry_8h.html#a8d14d3276803ebb781ac40821491c959", null ], + [ "ATan", "_trigonometry_8h.html#a8d7d50cdb10f600d1493bd8a36c4029e", null ], + [ "ATan2", "_trigonometry_8h.html#a64f4ce00d99917535c674ec5172ccf78", null ], + [ "Cos", "_trigonometry_8h.html#a40fafb1c427199b6855d704fc79cd1cf", null ], + [ "Sin", "_trigonometry_8h.html#a89091907eb3da97f690e324849d773cb", null ], + [ "Tan", "_trigonometry_8h.html#a138c843d7c7c5f89c1757b159a86eb00", null ] +]; \ No newline at end of file diff --git a/_trigonometry_8h_source.html b/_trigonometry_8h_source.html new file mode 100644 index 000000000..897fad0d0 --- /dev/null +++ b/_trigonometry_8h_source.html @@ -0,0 +1,223 @@ + + + + + + + +Jolt Physics: Jolt/Math/Trigonometry.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Trigonometry.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
+
9// Note that this file exists because std::sin etc. are not platform independent and will lead to non-deterministic simulation
+
10
+
+
12JPH_INLINE float Sin(float inX)
+
13{
+
14 Vec4 s, c;
+
15 Vec4::sReplicate(inX).SinCos(s, c);
+
16 return s.GetX();
+
17}
+
+
18
+
+
20JPH_INLINE float Cos(float inX)
+
21{
+
22 Vec4 s, c;
+
23 Vec4::sReplicate(inX).SinCos(s, c);
+
24 return c.GetX();
+
25}
+
+
26
+
+
28JPH_INLINE float Tan(float inX)
+
29{
+
30 return Vec4::sReplicate(inX).Tan().GetX();
+
31}
+
+
32
+
+
35JPH_INLINE float ASin(float inX)
+
36{
+
37 return Vec4::sReplicate(inX).ASin().GetX();
+
38}
+
+
39
+
+
42JPH_INLINE float ACos(float inX)
+
43{
+
44 return Vec4::sReplicate(inX).ACos().GetX();
+
45}
+
+
46
+
+
48JPH_INLINE float ACosApproximate(float inX)
+
49{
+
50 // See: https://www.johndcook.com/blog/2022/09/06/inverse-cosine-near-1/
+
51 // See also: https://seblagarde.wordpress.com/2014/12/01/inverse-trigonometric-functions-gpu-optimization-for-amd-gcn-architecture/
+
52 // Taylor of cos(x) = 1 - x^2 / 2 + ...
+
53 // Substitute x = sqrt(2 y) we get: cos(sqrt(2 y)) = 1 - y
+
54 // Substitute z = 1 - y we get: cos(sqrt(2 (1 - z))) = z <=> acos(z) = sqrt(2 (1 - z))
+
55 // To avoid the discontinuity at 1, instead of using the Taylor expansion of acos(x) we use acos(x) / sqrt(2 (1 - x)) = 1 + (1 - x) / 12 + ...
+
56 // Since the approximation was made at 1, it has quite a large error at 0 meaning that if we want to extend to the
+
57 // range [-1, 1] by mirroring the range [0, 1], the value at 0+ is not the same as 0-.
+
58 // So we observe that the form of the Taylor expansion is f(x) = sqrt(1 - x) * (a + b x) and we fit the function so that f(0) = pi / 2
+
59 // this gives us a = pi / 2. f(1) = 0 regardless of b. We search for a constant b that minimizes the error in the range [0, 1].
+
60 float abs_x = min(abs(inX), 1.0f); // Ensure that we don't get a value larger than 1
+
61 float val = sqrt(1.0f - abs_x) * (JPH_PI / 2 - 0.175394f * abs_x);
+
62
+
63 // Our approximation is valid in the range [0, 1], extend it to the range [-1, 1]
+
64 return inX < 0? JPH_PI - val : val;
+
65}
+
+
66
+
+
68JPH_INLINE float ATan(float inX)
+
69{
+
70 return Vec4::sReplicate(inX).ATan().GetX();
+
71}
+
+
72
+
+
74JPH_INLINE float ATan2(float inY, float inX)
+
75{
+ +
77}
+
+
78
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
JPH_INLINE float Tan(float inX)
Tangent of x (input in radians)
Definition Trigonometry.h:28
+
JPH_INLINE float ACosApproximate(float inX)
An approximation of ACos, max error is 4.2e-3 over the entire range [-1, 1], is approximately 2....
Definition Trigonometry.h:48
+
JPH_INLINE float Cos(float inX)
Cosine of x (input in radians)
Definition Trigonometry.h:20
+
JPH_INLINE float ACos(float inX)
Definition Trigonometry.h:42
+
JPH_INLINE float ATan2(float inY, float inX)
Arc tangent of y / x using the signs of the arguments to determine the correct quadrant (returns valu...
Definition Trigonometry.h:74
+
JPH_NAMESPACE_BEGIN JPH_INLINE float Sin(float inX)
Sine of x (input in radians)
Definition Trigonometry.h:12
+
JPH_INLINE float ASin(float inX)
Definition Trigonometry.h:35
+
JPH_INLINE float ATan(float inX)
Arc tangent of x (returns value in the range [-PI / 2, PI / 2])
Definition Trigonometry.h:68
+
Definition Vec4.h:14
+
Vec4 ATan() const
Calculate the arc tangent for each element of this vector (returns value in the range [-PI / 2,...
Definition Vec4.inl:911
+
static Vec4 sATan2(Vec4Arg inY, Vec4Arg inX)
Calculate the arc tangent of y / x using the signs of the arguments to determine the correct quadrant...
Definition Vec4.inl:945
+
Vec4 ASin() const
Definition Vec4.inl:870
+
Vec4 Tan() const
Calculate the tangent for each element of this vector (input in radians)
Definition Vec4.inl:837
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec4.h:113
+
Vec4 ACos() const
Definition Vec4.inl:905
+
static JPH_INLINE Vec4 sReplicate(float inV)
Replicate inV across all components.
Definition Vec4.inl:74
+
void SinCos(Vec4 &outSin, Vec4 &outCos) const
Calculate the sine and cosine for each element of this vector (input in radians)
Definition Vec4.inl:775
+
+
+ + + + diff --git a/_two_body_constraint_8cpp.html b/_two_body_constraint_8cpp.html new file mode 100644 index 000000000..2924cfbb5 --- /dev/null +++ b/_two_body_constraint_8cpp.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/TwoBodyConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TwoBodyConstraint.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (TwoBodyConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (TwoBodyConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_two_body_constraint_8cpp.js b/_two_body_constraint_8cpp.js new file mode 100644 index 000000000..744ff45b4 --- /dev/null +++ b/_two_body_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _two_body_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT", "_two_body_constraint_8cpp.html#ab5fb5645c9d70816376dbc17a2ef8319", null ] +]; \ No newline at end of file diff --git a/_two_body_constraint_8h.html b/_two_body_constraint_8h.html new file mode 100644 index 000000000..4e4eaec23 --- /dev/null +++ b/_two_body_constraint_8h.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/TwoBodyConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TwoBodyConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  TwoBodyConstraintSettings
 Base class for settings for all constraints that involve 2 bodies. More...
 
class  TwoBodyConstraint
 Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent, Body2 the child. More...
 
+
+
+ + + + diff --git a/_two_body_constraint_8h.js b/_two_body_constraint_8h.js new file mode 100644 index 000000000..b2b982b52 --- /dev/null +++ b/_two_body_constraint_8h.js @@ -0,0 +1,5 @@ +var _two_body_constraint_8h = +[ + [ "TwoBodyConstraintSettings", "class_two_body_constraint_settings.html", "class_two_body_constraint_settings" ], + [ "TwoBodyConstraint", "class_two_body_constraint.html", "class_two_body_constraint" ] +]; \ No newline at end of file diff --git a/_two_body_constraint_8h_source.html b/_two_body_constraint_8h_source.html new file mode 100644 index 000000000..d0306bbb1 --- /dev/null +++ b/_two_body_constraint_8h_source.html @@ -0,0 +1,207 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/TwoBodyConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TwoBodyConstraint.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
+ + +
9
+ +
11
+ +
13
+
+ +
16{
+
17public:
+ +
19
+
20
+
22 virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const = 0;
+
23};
+
+
24
+
+ +
27{
+
28public:
+ +
30
+
32 TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings) : Constraint(inSettings), mBody1(&inBody1), mBody2(&inBody2) { }
+
33
+
35 virtual EConstraintType GetType() const override { return EConstraintType::TwoBodyConstraint; }
+
36
+
38 virtual bool IsActive() const override { return Constraint::IsActive() && (mBody1->IsActive() || mBody2->IsActive()) && (mBody2->IsDynamic() || mBody1->IsDynamic()); }
+
39#ifdef JPH_DEBUG_RENDERER
+
40 virtual void DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const override;
+
41#endif // JPH_DEBUG_RENDERER
+
42
+
44 Body * GetBody1() const { return mBody1; }
+
45 Body * GetBody2() const { return mBody2; }
+
46
+
48 virtual Mat44 GetConstraintToBody1Matrix() const = 0;
+
49
+
51 virtual Mat44 GetConstraintToBody2Matrix() const = 0;
+
52
+
54 virtual void BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override;
+
55
+
57 virtual uint BuildIslandSplits(LargeIslandSplitter &ioSplitter) const override;
+
58
+
59protected:
+ + +
63};
+
+
64
+ + + +
EConstraintType
Enum to identify constraint type.
Definition Constraint.h:27
+ +
#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
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
#define JPH_DECLARE_SERIALIZABLE_ABSTRACT(linkage, class_name)
Definition SerializableObject.h:120
+
Definition Body.h:35
+
Class that contains all bodies.
Definition BodyManager.h:44
+
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:103
+
virtual bool IsActive() const
Definition Constraint.h:171
+
Class used to store the configuration of a constraint. Allows run-time creation of constraints.
Definition Constraint.h:65
+
Definition DebugRenderer.h:47
+
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
Definition IslandBuilder.h:19
+
Definition LargeIslandSplitter.h:25
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent,...
Definition TwoBodyConstraint.h:27
+
virtual Mat44 GetConstraintToBody2Matrix() const =0
Calculates the transform that transforms from constraint space to body 2 space. The first column of t...
+
virtual Mat44 GetConstraintToBody1Matrix() const =0
Calculates the transform that transforms from constraint space to body 1 space. The first column of t...
+
Body * mBody2
Definition TwoBodyConstraint.h:62
+
virtual EConstraintType GetType() const override
Get the type of a constraint.
Definition TwoBodyConstraint.h:35
+
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
Constructor.
Definition TwoBodyConstraint.h:32
+
virtual bool IsActive() const override
Solver interface.
Definition TwoBodyConstraint.h:38
+
Body * GetBody2() const
Definition TwoBodyConstraint.h:45
+
Body * GetBody1() const
Access to the connected bodies.
Definition TwoBodyConstraint.h:44
+
Body * mBody1
The two bodies involved.
Definition TwoBodyConstraint.h:61
+
Base class for settings for all constraints that involve 2 bodies.
Definition TwoBodyConstraint.h:16
+
+
+ + + + diff --git a/_type_declarations_8cpp.html b/_type_declarations_8cpp.html new file mode 100644 index 000000000..a2c493aad --- /dev/null +++ b/_type_declarations_8cpp.html @@ -0,0 +1,563 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/TypeDeclarations.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TypeDeclarations.cpp File Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (uint8)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (uint16)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (int)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (uint32)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (uint64)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (float)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (double)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (bool)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (String)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (Float3)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (Double3)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (Vec3)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (DVec3)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (Vec4)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (Quat)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (Mat44)
 
 JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (DMat44)
 
 JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS (Color)
 
 JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS (AABox)
 
 JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS (Triangle)
 
 JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS (IndexedTriangle)
 
 JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS (Plane)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [1/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (bool )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [2/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (DMat44 )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [3/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (double )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [4/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (Double3 )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [5/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (DVec3 )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [6/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (float )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [7/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (Float3 )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [8/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (int )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [9/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (Mat44 )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [10/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (Quat )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [11/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (String )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [12/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (uint16 )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [13/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (uint32 )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [14/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (uint64 )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [15/17]

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (uint8 )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [16/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (Vec3 )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS() [17/17]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS (Vec4 )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS() [1/5]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS (AABox )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS() [2/5]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS (Color )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS() [3/5]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS (IndexedTriangle )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS() [4/5]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS (Plane )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS() [5/5]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS (Triangle )
+
+ +
+
+
+
+ + + + diff --git a/_type_declarations_8cpp.js b/_type_declarations_8cpp.js new file mode 100644 index 000000000..79a675cbf --- /dev/null +++ b/_type_declarations_8cpp.js @@ -0,0 +1,25 @@ +var _type_declarations_8cpp = +[ + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#aeb0656ddcc6a028148147995151f00b3", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a11182afe7612145c69d171d7a70e6ca8", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a68f66008287ed2cbc9c1bd96514d9eba", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a2c44a516ef07f3c1c2751a2708d58d1e", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#ac80a9f367fc05d3611c29302c735bd4d", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#ac9b74fbe4f4d9a2d54cb2b38a1c886eb", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#af343628ba183647c57887e6775472ac7", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a0d364d20a949b53123721b4a1dadd211", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a2b010525b68e5c2a57eb1025be64d97f", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a9b9cfd1ad3f7bc0cebce9c1b56cb6269", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a4669015ea8629e3740f310ae91eef460", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a6e266be4d9b6001f95cdc7f0c00a1466", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a2cb138a68f4b62b2f2eca331965db174", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a221b2591d49ca3ada970057fcc3f2225", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a930470ec4ef64437920078ecfbf35bb3", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#ab260e46e7681343e510c92433d3580a1", null ], + [ "JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a6b0342b461d651a6b91d2d5d44c82c5c", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a5c2ee98781c23edfab9859047cdf3056", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS", "_type_declarations_8cpp.html#abbf30c5c8ff9ec0d405fad2199843d0c", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS", "_type_declarations_8cpp.html#ad81c2911255e517b2e2b8112832839b1", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS", "_type_declarations_8cpp.html#acd8339b06e15d4f5eca371cbc12c27fc", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS", "_type_declarations_8cpp.html#a8e9b26575c4126cf92f6a53aeb8cc179", null ] +]; \ No newline at end of file diff --git a/_type_declarations_8h.html b/_type_declarations_8h.html new file mode 100644 index 000000000..03c6624c3 --- /dev/null +++ b/_type_declarations_8h.html @@ -0,0 +1,790 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/TypeDeclarations.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TypeDeclarations.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, uint8)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, uint16)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, int)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, uint32)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, uint64)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, float)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, double)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, bool)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, String)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, Float3)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, Double3)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, Vec3)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, DVec3)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, Vec4)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, Quat)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, Mat44)
 
 JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT, DMat44)
 
 JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS (JPH_EXPORT, Color)
 
 JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS (JPH_EXPORT, AABox)
 
 JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS (JPH_EXPORT, Triangle)
 
 JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS (JPH_EXPORT, IndexedTriangle)
 
 JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS (JPH_EXPORT, Plane)
 
+

Function Documentation

+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [1/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
bool  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [2/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
DMat44  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [3/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
double  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [4/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
Double3  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [5/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
DVec3  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [6/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
float  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [7/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
Float3  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [8/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
int  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [9/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
Mat44  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [10/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
Quat  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [11/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
String  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [12/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
uint16  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [13/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
uint32  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [14/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
uint64  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [15/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
uint8  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [16/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
Vec3  
)
+
+ +
+
+ +

◆ JPH_DECLARE_RTTI_OUTSIDE_CLASS() [17/17]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_RTTI_OUTSIDE_CLASS (JPH_EXPORT ,
Vec4  
)
+
+ +
+
+ +

◆ JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS() [1/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS (JPH_EXPORT ,
AABox  
)
+
+ +
+
+ +

◆ JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS() [2/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS (JPH_EXPORT ,
Color  
)
+
+ +
+
+ +

◆ JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS() [3/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS (JPH_EXPORT ,
IndexedTriangle  
)
+
+ +
+
+ +

◆ JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS() [4/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS (JPH_EXPORT ,
Plane  
)
+
+ +
+
+ +

◆ JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS() [5/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS (JPH_EXPORT ,
Triangle  
)
+
+ +
+
+
+
+ + + + diff --git a/_type_declarations_8h.js b/_type_declarations_8h.js new file mode 100644 index 000000000..0a6d6fa83 --- /dev/null +++ b/_type_declarations_8h.js @@ -0,0 +1,25 @@ +var _type_declarations_8h = +[ + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a8fa8a1bb547d4ea5dbf4be01b474a825", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#adaba06ca5abfb45048832e78d55bfaed", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#afb5600d9c1155a5b4946275be8a46083", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a2704d2ff1bdac3b5b820248cc72cc875", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a2dada4edc12396d421aad54fd3a880a0", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#ad74edb5e5392c4131cd54b55d54acc3f", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a7c4ea05a76fed4b97d6855db129fa69e", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a8f9ef9e4c01f888b64b76fc06c440a25", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a1a8c7c60f7c3128fe7218e02ba9acfc4", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a086d80a51af31bdeb74cb6bacde605ee", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#afe2e6efd40a082563570a021ccbb1f6f", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a2cd12a5e336b2c97efa2937a9bb8edc2", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a06065058d89eb12bed3964edef601a05", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a2fc933ca3173ed626632e00eacdf8ce3", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a6fdb6f424008bf062968d001645ba55b", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a272e1bdcd39d7965dfb3fb42656ef299", null ], + [ "JPH_DECLARE_RTTI_OUTSIDE_CLASS", "_type_declarations_8h.html#a73b1f26e619891542ef0f9be9c7cd7e3", null ], + [ "JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS", "_type_declarations_8h.html#a9c4abaf178f1c1c6ab48d44c02c3bf4b", null ], + [ "JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS", "_type_declarations_8h.html#a768396b208134898d9b3f3d871b75c40", null ], + [ "JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS", "_type_declarations_8h.html#aa8644cc8a0f9f5f4082156a79d8fd20d", null ], + [ "JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS", "_type_declarations_8h.html#a899ce9c69d02389a49b27a56e225f5ee", null ], + [ "JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS", "_type_declarations_8h.html#afce6572cad2ba9edd1d52d86f50fc357", null ] +]; \ No newline at end of file diff --git a/_type_declarations_8h_source.html b/_type_declarations_8h_source.html new file mode 100644 index 000000000..f94e28b7f --- /dev/null +++ b/_type_declarations_8h_source.html @@ -0,0 +1,191 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream/TypeDeclarations.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TypeDeclarations.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#include <Jolt/Core/Color.h>
+ + + +
12
+ +
14
+ + + + + + + + + + + + + + + + + + + + + + +
37
+ +
39
+
40// These need to be added after all types have been registered or else clang under linux will not find GetRTTIOfType for the type
+ + + + +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
std::uint16_t uint16
Definition Core.h:454
+ +
#define JPH_DECLARE_RTTI_OUTSIDE_CLASS(linkage, class_name)
Definition RTTI.h:217
+
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
+ + + +
#define JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(linkage, class_name)
Definition SerializableObject.h:95
+ +
Axis aligned box.
Definition AABox.h:16
+
Class that holds an RGBA color with 8-bits per component.
Definition Color.h:16
+
Holds a 4x4 matrix of floats with the last column consisting of doubles.
Definition DMat44.h:13
+
Definition DVec3.h:14
+
Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.
Definition Double3.h:13
+
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
Triangle with 32-bit indices and material index.
Definition IndexedTriangle.h:73
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
An infinite plane described by the formula X . Normal + Constant = 0.
Definition Plane.h:11
+
Definition Quat.h:33
+
A simple triangle and its material.
Definition Triangle.h:11
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_u_vec4_8h.html b/_u_vec4_8h.html new file mode 100644 index 000000000..e8b3aa43b --- /dev/null +++ b/_u_vec4_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Math/UVec4.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UVec4.h File Reference
+
+
+
#include <Jolt/Math/Vec4.h>
+#include "UVec4.inl"
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  UVec4
 
+
+
+ + + + diff --git a/_u_vec4_8h.js b/_u_vec4_8h.js new file mode 100644 index 000000000..a30d5f57d --- /dev/null +++ b/_u_vec4_8h.js @@ -0,0 +1,4 @@ +var _u_vec4_8h = +[ + [ "UVec4", "class_u_vec4.html", "class_u_vec4" ] +]; \ No newline at end of file diff --git a/_u_vec4_8h_source.html b/_u_vec4_8h_source.html new file mode 100644 index 000000000..391b03d45 --- /dev/null +++ b/_u_vec4_8h_source.html @@ -0,0 +1,321 @@ + + + + + + + +Jolt Physics: Jolt/Math/UVec4.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UVec4.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
+
7#include <Jolt/Math/Vec4.h>
+
8
+ +
10
+
+
11class [[nodiscard]] alignas(JPH_VECTOR_ALIGNMENT) UVec4
+
12{
+
13public:
+ +
15
+
16 // Underlying vector type
+
17#if defined(JPH_USE_SSE)
+
18 using Type = __m128i;
+
19#elif defined(JPH_USE_NEON)
+
20 using Type = uint32x4_t;
+
21#else
+
22 using Type = struct { uint32 mData[4]; };
+
23#endif
+
24
+
26 UVec4() = default;
+
27 UVec4(const UVec4 &inRHS) = default;
+
28 UVec4 & operator = (const UVec4 &inRHS) = default;
+
29 JPH_INLINE UVec4(Type inRHS) : mValue(inRHS) { }
+
30
+
32 JPH_INLINE UVec4(uint32 inX, uint32 inY, uint32 inZ, uint32 inW);
+
33
+
35 JPH_INLINE bool operator == (UVec4Arg inV2) const;
+
36 JPH_INLINE bool operator != (UVec4Arg inV2) const { return !(*this == inV2); }
+
37
+
39 template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+
40 JPH_INLINE UVec4 Swizzle() const;
+
41
+
43 static JPH_INLINE UVec4 sZero();
+
44
+
46 static JPH_INLINE UVec4 sReplicate(uint32 inV);
+
47
+
49 static JPH_INLINE UVec4 sLoadInt(const uint32 *inV);
+
50
+
52 static JPH_INLINE UVec4 sLoadInt4(const uint32 *inV);
+
53
+
55 static JPH_INLINE UVec4 sLoadInt4Aligned(const uint32 *inV);
+
56
+
58 template <const int Scale>
+
59 static JPH_INLINE UVec4 sGatherInt4(const uint32 *inBase, UVec4Arg inOffsets);
+
60
+
62 static JPH_INLINE UVec4 sMin(UVec4Arg inV1, UVec4Arg inV2);
+
63
+
65 static JPH_INLINE UVec4 sMax(UVec4Arg inV1, UVec4Arg inV2);
+
66
+
68 static JPH_INLINE UVec4 sEquals(UVec4Arg inV1, UVec4Arg inV2);
+
69
+
71 static JPH_INLINE UVec4 sSelect(UVec4Arg inV1, UVec4Arg inV2, UVec4Arg inControl);
+
72
+
74 static JPH_INLINE UVec4 sOr(UVec4Arg inV1, UVec4Arg inV2);
+
75
+
77 static JPH_INLINE UVec4 sXor(UVec4Arg inV1, UVec4Arg inV2);
+
78
+
80 static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2);
+
81
+
83 static JPH_INLINE UVec4 sNot(UVec4Arg inV1);
+
84
+
88 static JPH_INLINE UVec4 sSort4True(UVec4Arg inValue, UVec4Arg inIndex);
+
89
+
91#if defined(JPH_USE_SSE)
+
92 JPH_INLINE uint32 GetX() const { return uint32(_mm_cvtsi128_si32(mValue)); }
+
93 JPH_INLINE uint32 GetY() const { return mU32[1]; }
+
94 JPH_INLINE uint32 GetZ() const { return mU32[2]; }
+
95 JPH_INLINE uint32 GetW() const { return mU32[3]; }
+
96#elif defined(JPH_USE_NEON)
+
97 JPH_INLINE uint32 GetX() const { return vgetq_lane_u32(mValue, 0); }
+
98 JPH_INLINE uint32 GetY() const { return vgetq_lane_u32(mValue, 1); }
+
99 JPH_INLINE uint32 GetZ() const { return vgetq_lane_u32(mValue, 2); }
+
100 JPH_INLINE uint32 GetW() const { return vgetq_lane_u32(mValue, 3); }
+
101#else
+
102 JPH_INLINE uint32 GetX() const { return mU32[0]; }
+
103 JPH_INLINE uint32 GetY() const { return mU32[1]; }
+
104 JPH_INLINE uint32 GetZ() const { return mU32[2]; }
+
105 JPH_INLINE uint32 GetW() const { return mU32[3]; }
+
106#endif
+
107
+
109 JPH_INLINE void SetX(uint32 inX) { mU32[0] = inX; }
+
110 JPH_INLINE void SetY(uint32 inY) { mU32[1] = inY; }
+
111 JPH_INLINE void SetZ(uint32 inZ) { mU32[2] = inZ; }
+
112 JPH_INLINE void SetW(uint32 inW) { mU32[3] = inW; }
+
113
+
115 JPH_INLINE uint32 operator [] (uint inCoordinate) const { JPH_ASSERT(inCoordinate < 4); return mU32[inCoordinate]; }
+
116 JPH_INLINE uint32 & operator [] (uint inCoordinate) { JPH_ASSERT(inCoordinate < 4); return mU32[inCoordinate]; }
+
117
+
119 JPH_INLINE UVec4 operator * (UVec4Arg inV2) const;
+
120
+
122 JPH_INLINE UVec4 operator + (UVec4Arg inV2);
+
123
+
125 JPH_INLINE UVec4 & operator += (UVec4Arg inV2);
+
126
+
128 JPH_INLINE UVec4 SplatX() const;
+
129
+
131 JPH_INLINE UVec4 SplatY() const;
+
132
+
134 JPH_INLINE UVec4 SplatZ() const;
+
135
+
137 JPH_INLINE UVec4 SplatW() const;
+
138
+
140 JPH_INLINE Vec4 ToFloat() const;
+
141
+
143 JPH_INLINE Vec4 ReinterpretAsFloat() const;
+
144
+
146 JPH_INLINE void StoreInt4(uint32 *outV) const;
+
147
+
149 JPH_INLINE void StoreInt4Aligned(uint32 *outV) const;
+
150
+
152 JPH_INLINE bool TestAnyTrue() const;
+
153
+
155 JPH_INLINE bool TestAnyXYZTrue() const;
+
156
+
158 JPH_INLINE bool TestAllTrue() const;
+
159
+
161 JPH_INLINE bool TestAllXYZTrue() const;
+
162
+
164 JPH_INLINE int CountTrues() const;
+
165
+
167 JPH_INLINE int GetTrues() const;
+
168
+
170 template <const uint Count>
+
171 JPH_INLINE UVec4 LogicalShiftLeft() const;
+
172
+
174 template <const uint Count>
+
175 JPH_INLINE UVec4 LogicalShiftRight() const;
+
176
+
178 template <const uint Count>
+
179 JPH_INLINE UVec4 ArithmeticShiftRight() const;
+
180
+
182 JPH_INLINE UVec4 Expand4Uint16Lo() const;
+
183
+
185 JPH_INLINE UVec4 Expand4Uint16Hi() const;
+
186
+
188 JPH_INLINE UVec4 Expand4Byte0() const;
+
189
+
191 JPH_INLINE UVec4 Expand4Byte4() const;
+
192
+
194 JPH_INLINE UVec4 Expand4Byte8() const;
+
195
+
197 JPH_INLINE UVec4 Expand4Byte12() const;
+
198
+
200 JPH_INLINE UVec4 ShiftComponents4Minus(int inCount) const;
+
201
+
+
203 friend ostream & operator << (ostream &inStream, UVec4Arg inV)
+
204 {
+
205 inStream << inV.mU32[0] << ", " << inV.mU32[1] << ", " << inV.mU32[2] << ", " << inV.mU32[3];
+
206 return inStream;
+
207 }
+
+
208
+
209 union
+
210 {
+ +
212 uint32 mU32[4];
+
213 };
+
214};
+
+
215
+
216static_assert(is_trivial<UVec4>(), "Is supposed to be a trivial type!");
+
217
+ +
219
+
220#include "UVec4.inl"
+
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
+
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:451
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ + +
Definition UVec4.h:12
+
JPH_INLINE UVec4 Swizzle() const
Swizzle the elements in inV.
+
JPH_INLINE uint32 GetZ() const
Definition UVec4.h:104
+
JPH_INLINE UVec4 LogicalShiftLeft() const
Shift all components by Count bits to the left (filling with zeros from the left)
+
JPH_INLINE void SetW(uint32 inW)
Definition UVec4.h:112
+
JPH_INLINE uint32 GetY() const
Definition UVec4.h:103
+
JPH_INLINE void SetY(uint32 inY)
Definition UVec4.h:110
+
JPH_INLINE UVec4 LogicalShiftRight() const
Shift all components by Count bits to the right (filling with zeros from the right)
+
static JPH_INLINE UVec4 sGatherInt4(const uint32 *inBase, UVec4Arg inOffsets)
Gather 4 ints from memory at inBase + inOffsets[i] * Scale.
+
{ uint32 mData[4] Type
Definition UVec4.h:22
+
JPH_INLINE void SetZ(uint32 inZ)
Definition UVec4.h:111
+
JPH_INLINE uint32 GetW() const
Definition UVec4.h:105
+
Type mValue
Definition UVec4.h:211
+
UVec4(const UVec4 &inRHS)=default
+
JPH_INLINE uint32 GetX() const
Get individual components.
Definition UVec4.h:102
+
JPH_INLINE void SetX(uint32 inX)
Set individual components.
Definition UVec4.h:109
+
JPH_INLINE UVec4 ArithmeticShiftRight() const
Shift all components by Count bits to the right (shifting in the value of the highest bit)
+
JPH_INLINE UVec4(Type inRHS)
Definition UVec4.h:29
+
UVec4()=default
Constructor.
+
uint32 mU32[4]
Definition UVec4.h:212
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_u_vec4_8inl.html b/_u_vec4_8inl.html new file mode 100644 index 000000000..ec985ef94 --- /dev/null +++ b/_u_vec4_8inl.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Math/UVec4.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UVec4.inl File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_u_vec4_8inl_source.html b/_u_vec4_8inl_source.html new file mode 100644 index 000000000..8e5e26af9 --- /dev/null +++ b/_u_vec4_8inl_source.html @@ -0,0 +1,851 @@ + + + + + + + +Jolt Physics: Jolt/Math/UVec4.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UVec4.inl
+
+
+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
+ +
6
+
+ +
8{
+
9#if defined(JPH_USE_SSE)
+
10 mValue = _mm_set_epi32(int(inW), int(inZ), int(inY), int(inX));
+
11#elif defined(JPH_USE_NEON)
+
12 uint32x2_t xy = vcreate_u32(static_cast<uint64>(inX) | (static_cast<uint64>(inY) << 32));
+
13 uint32x2_t zw = vcreate_u32(static_cast<uint64>(inZ) | (static_cast<uint64>(inW) << 32));
+
14 mValue = vcombine_u32(xy, zw);
+
15#else
+
16 mU32[0] = inX;
+
17 mU32[1] = inY;
+
18 mU32[2] = inZ;
+
19 mU32[3] = inW;
+
20#endif
+
21}
+
+
22
+
+ +
24{
+
25 return sEquals(*this, inV2).TestAllTrue();
+
26}
+
+
27
+
28template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+
+ +
30{
+
31 static_assert(SwizzleX <= 3, "SwizzleX template parameter out of range");
+
32 static_assert(SwizzleY <= 3, "SwizzleY template parameter out of range");
+
33 static_assert(SwizzleZ <= 3, "SwizzleZ template parameter out of range");
+
34 static_assert(SwizzleW <= 3, "SwizzleW template parameter out of range");
+
35
+
36#if defined(JPH_USE_SSE)
+
37 return _mm_shuffle_epi32(mValue, _MM_SHUFFLE(SwizzleW, SwizzleZ, SwizzleY, SwizzleX));
+
38#elif defined(JPH_USE_NEON)
+
39 return JPH_NEON_SHUFFLE_U32x4(mValue, mValue, SwizzleX, SwizzleY, SwizzleZ, SwizzleW);
+
40#else
+
41 return UVec4(mU32[SwizzleX], mU32[SwizzleY], mU32[SwizzleZ], mU32[SwizzleW]);
+
42#endif
+
43}
+
+
44
+
+ +
46{
+
47#if defined(JPH_USE_SSE)
+
48 return _mm_setzero_si128();
+
49#elif defined(JPH_USE_NEON)
+
50 return vdupq_n_u32(0);
+
51#else
+
52 return UVec4(0, 0, 0, 0);
+
53#endif
+
54}
+
+
55
+
+ +
57{
+
58#if defined(JPH_USE_SSE)
+
59 return _mm_set1_epi32(int(inV));
+
60#elif defined(JPH_USE_NEON)
+
61 return vdupq_n_u32(inV);
+
62#else
+
63 return UVec4(inV, inV, inV, inV);
+
64#endif
+
65}
+
+
66
+
+ +
68{
+
69#if defined(JPH_USE_SSE)
+
70 return _mm_castps_si128(_mm_load_ss(reinterpret_cast<const float*>(inV)));
+
71#elif defined(JPH_USE_NEON)
+
72 return vsetq_lane_u32(*inV, vdupq_n_u32(0), 0);
+
73#else
+
74 return UVec4(*inV, 0, 0, 0);
+
75#endif
+
76}
+
+
77
+
+ +
79{
+
80#if defined(JPH_USE_SSE)
+
81 return _mm_loadu_si128(reinterpret_cast<const __m128i *>(inV));
+
82#elif defined(JPH_USE_NEON)
+
83 return vld1q_u32(inV);
+
84#else
+
85 return UVec4(inV[0], inV[1], inV[2], inV[3]);
+
86#endif
+
87}
+
+
88
+
+ +
90{
+
91#if defined(JPH_USE_SSE)
+
92 return _mm_load_si128(reinterpret_cast<const __m128i *>(inV));
+
93#elif defined(JPH_USE_NEON)
+
94 return vld1q_u32(inV); // ARM doesn't make distinction between aligned or not
+
95#else
+
96 return UVec4(inV[0], inV[1], inV[2], inV[3]);
+
97#endif
+
98}
+
+
99
+
100template <const int Scale>
+
+
101UVec4 UVec4::sGatherInt4(const uint32 *inBase, UVec4Arg inOffsets)
+
102{
+
103#ifdef JPH_USE_AVX2
+
104 return _mm_i32gather_epi32(reinterpret_cast<const int *>(inBase), inOffsets.mValue, Scale);
+
105#else
+
106 const uint8 *base = reinterpret_cast<const uint8 *>(inBase);
+
107 uint32 x = *reinterpret_cast<const uint32 *>(base + inOffsets.GetX() * Scale);
+
108 uint32 y = *reinterpret_cast<const uint32 *>(base + inOffsets.GetY() * Scale);
+
109 uint32 z = *reinterpret_cast<const uint32 *>(base + inOffsets.GetZ() * Scale);
+
110 uint32 w = *reinterpret_cast<const uint32 *>(base + inOffsets.GetW() * Scale);
+
111 return UVec4(x, y, z, w);
+
112#endif
+
113}
+
+
114
+
+ +
116{
+
117#if defined(JPH_USE_SSE4_1)
+
118 return _mm_min_epu32(inV1.mValue, inV2.mValue);
+
119#elif defined(JPH_USE_NEON)
+
120 return vminq_u32(inV1.mValue, inV2.mValue);
+
121#else
+
122 UVec4 result;
+
123 for (int i = 0; i < 4; i++)
+
124 result.mU32[i] = min(inV1.mU32[i], inV2.mU32[i]);
+
125 return result;
+
126#endif
+
127}
+
+
128
+
+ +
130{
+
131#if defined(JPH_USE_SSE4_1)
+
132 return _mm_max_epu32(inV1.mValue, inV2.mValue);
+
133#elif defined(JPH_USE_NEON)
+
134 return vmaxq_u32(inV1.mValue, inV2.mValue);
+
135#else
+
136 UVec4 result;
+
137 for (int i = 0; i < 4; i++)
+
138 result.mU32[i] = max(inV1.mU32[i], inV2.mU32[i]);
+
139 return result;
+
140#endif
+
141}
+
+
142
+
+ +
144{
+
145#if defined(JPH_USE_SSE)
+
146 return _mm_cmpeq_epi32(inV1.mValue, inV2.mValue);
+
147#elif defined(JPH_USE_NEON)
+
148 return vceqq_u32(inV1.mValue, inV2.mValue);
+
149#else
+
150 return UVec4(inV1.mU32[0] == inV2.mU32[0]? 0xffffffffu : 0,
+
151 inV1.mU32[1] == inV2.mU32[1]? 0xffffffffu : 0,
+
152 inV1.mU32[2] == inV2.mU32[2]? 0xffffffffu : 0,
+
153 inV1.mU32[3] == inV2.mU32[3]? 0xffffffffu : 0);
+
154#endif
+
155}
+
+
156
+
+ +
158{
+
159#if defined(JPH_USE_SSE4_1)
+
160 return _mm_castps_si128(_mm_blendv_ps(_mm_castsi128_ps(inV1.mValue), _mm_castsi128_ps(inV2.mValue), _mm_castsi128_ps(inControl.mValue)));
+
161#elif defined(JPH_USE_NEON)
+
162 return vbslq_u32(vreinterpretq_u32_s32(vshrq_n_s32(vreinterpretq_s32_u32(inControl.mValue), 31)), inV2.mValue, inV1.mValue);
+
163#else
+
164 UVec4 result;
+
165 for (int i = 0; i < 4; i++)
+
166 result.mU32[i] = inControl.mU32[i] ? inV2.mU32[i] : inV1.mU32[i];
+
167 return result;
+
168#endif
+
169}
+
+
170
+
+ +
172{
+
173#if defined(JPH_USE_SSE)
+
174 return _mm_or_si128(inV1.mValue, inV2.mValue);
+
175#elif defined(JPH_USE_NEON)
+
176 return vorrq_u32(inV1.mValue, inV2.mValue);
+
177#else
+
178 return UVec4(inV1.mU32[0] | inV2.mU32[0],
+
179 inV1.mU32[1] | inV2.mU32[1],
+
180 inV1.mU32[2] | inV2.mU32[2],
+
181 inV1.mU32[3] | inV2.mU32[3]);
+
182#endif
+
183}
+
+
184
+
+ +
186{
+
187#if defined(JPH_USE_SSE)
+
188 return _mm_xor_si128(inV1.mValue, inV2.mValue);
+
189#elif defined(JPH_USE_NEON)
+
190 return veorq_u32(inV1.mValue, inV2.mValue);
+
191#else
+
192 return UVec4(inV1.mU32[0] ^ inV2.mU32[0],
+
193 inV1.mU32[1] ^ inV2.mU32[1],
+
194 inV1.mU32[2] ^ inV2.mU32[2],
+
195 inV1.mU32[3] ^ inV2.mU32[3]);
+
196#endif
+
197}
+
+
198
+
+ +
200{
+
201#if defined(JPH_USE_SSE)
+
202 return _mm_and_si128(inV1.mValue, inV2.mValue);
+
203#elif defined(JPH_USE_NEON)
+
204 return vandq_u32(inV1.mValue, inV2.mValue);
+
205#else
+
206 return UVec4(inV1.mU32[0] & inV2.mU32[0],
+
207 inV1.mU32[1] & inV2.mU32[1],
+
208 inV1.mU32[2] & inV2.mU32[2],
+
209 inV1.mU32[3] & inV2.mU32[3]);
+
210#endif
+
211}
+
+
212
+
213
+
+ +
215{
+
216#if defined(JPH_USE_AVX512)
+
217 return _mm_ternarylogic_epi32(inV1.mValue, inV1.mValue, inV1.mValue, 0b01010101);
+
218#elif defined(JPH_USE_SSE)
+
219 return sXor(inV1, sReplicate(0xffffffff));
+
220#elif defined(JPH_USE_NEON)
+
221 return vmvnq_u32(inV1.mValue);
+
222#else
+
223 return UVec4(~inV1.mU32[0], ~inV1.mU32[1], ~inV1.mU32[2], ~inV1.mU32[3]);
+
224#endif
+
225}
+
+
226
+
+ +
228{
+
229 // If inValue.z is false then shift W to Z
+
230 UVec4 v = UVec4::sSelect(inIndex.Swizzle<SWIZZLE_X, SWIZZLE_Y, SWIZZLE_W, SWIZZLE_W>(), inIndex, inValue.SplatZ());
+
231
+
232 // If inValue.y is false then shift Z and further to Y and further
+ +
234
+
235 // If inValue.x is false then shift X and further to Y and further
+ +
237
+
238 return v;
+
239}
+
+
240
+
+ +
242{
+
243#if defined(JPH_USE_SSE4_1)
+
244 return _mm_mullo_epi32(mValue, inV2.mValue);
+
245#elif defined(JPH_USE_NEON)
+
246 return vmulq_u32(mValue, inV2.mValue);
+
247#else
+
248 UVec4 result;
+
249 for (int i = 0; i < 4; i++)
+
250 result.mU32[i] = mU32[i] * inV2.mU32[i];
+
251 return result;
+
252#endif
+
253}
+
+
254
+
+ +
256{
+
257#if defined(JPH_USE_SSE)
+
258 return _mm_add_epi32(mValue, inV2.mValue);
+
259#elif defined(JPH_USE_NEON)
+
260 return vaddq_u32(mValue, inV2.mValue);
+
261#else
+
262 return UVec4(mU32[0] + inV2.mU32[0],
+
263 mU32[1] + inV2.mU32[1],
+
264 mU32[2] + inV2.mU32[2],
+
265 mU32[3] + inV2.mU32[3]);
+
266#endif
+
267}
+
+
268
+
+ +
270{
+
271#if defined(JPH_USE_SSE)
+
272 mValue = _mm_add_epi32(mValue, inV2.mValue);
+
273#elif defined(JPH_USE_NEON)
+
274 mValue = vaddq_u32(mValue, inV2.mValue);
+
275#else
+
276 for (int i = 0; i < 4; ++i)
+
277 mU32[i] += inV2.mU32[i];
+
278#endif
+
279 return *this;
+
280}
+
+
281
+
+ +
283{
+
284#if defined(JPH_USE_SSE)
+
285 return _mm_shuffle_epi32(mValue, _MM_SHUFFLE(0, 0, 0, 0));
+
286#elif defined(JPH_USE_NEON)
+
287 return vdupq_laneq_u32(mValue, 0);
+
288#else
+
289 return UVec4(mU32[0], mU32[0], mU32[0], mU32[0]);
+
290#endif
+
291}
+
+
292
+
+ +
294{
+
295#if defined(JPH_USE_SSE)
+
296 return _mm_shuffle_epi32(mValue, _MM_SHUFFLE(1, 1, 1, 1));
+
297#elif defined(JPH_USE_NEON)
+
298 return vdupq_laneq_u32(mValue, 1);
+
299#else
+
300 return UVec4(mU32[1], mU32[1], mU32[1], mU32[1]);
+
301#endif
+
302}
+
+
303
+
+ +
305{
+
306#if defined(JPH_USE_SSE)
+
307 return _mm_shuffle_epi32(mValue, _MM_SHUFFLE(2, 2, 2, 2));
+
308#elif defined(JPH_USE_NEON)
+
309 return vdupq_laneq_u32(mValue, 2);
+
310#else
+
311 return UVec4(mU32[2], mU32[2], mU32[2], mU32[2]);
+
312#endif
+
313}
+
+
314
+
+ +
316{
+
317#if defined(JPH_USE_SSE)
+
318 return _mm_shuffle_epi32(mValue, _MM_SHUFFLE(3, 3, 3, 3));
+
319#elif defined(JPH_USE_NEON)
+
320 return vdupq_laneq_u32(mValue, 3);
+
321#else
+
322 return UVec4(mU32[3], mU32[3], mU32[3], mU32[3]);
+
323#endif
+
324}
+
+
325
+
+ +
327{
+
328#if defined(JPH_USE_SSE)
+
329 return _mm_cvtepi32_ps(mValue);
+
330#elif defined(JPH_USE_NEON)
+
331 return vcvtq_f32_u32(mValue);
+
332#else
+
333 return Vec4((float)mU32[0], (float)mU32[1], (float)mU32[2], (float)mU32[3]);
+
334#endif
+
335}
+
+
336
+
+ +
338{
+
339#if defined(JPH_USE_SSE)
+
340 return Vec4(_mm_castsi128_ps(mValue));
+
341#elif defined(JPH_USE_NEON)
+
342 return vreinterpretq_f32_u32(mValue);
+
343#else
+
344 return *reinterpret_cast<const Vec4 *>(this);
+
345#endif
+
346}
+
+
347
+
+
348void UVec4::StoreInt4(uint32 *outV) const
+
349{
+
350#if defined(JPH_USE_SSE)
+
351 _mm_storeu_si128(reinterpret_cast<__m128i *>(outV), mValue);
+
352#elif defined(JPH_USE_NEON)
+
353 vst1q_u32(outV, mValue);
+
354#else
+
355 for (int i = 0; i < 4; ++i)
+
356 outV[i] = mU32[i];
+
357#endif
+
358}
+
+
359
+
+ +
361{
+
362#if defined(JPH_USE_SSE)
+
363 _mm_store_si128(reinterpret_cast<__m128i *>(outV), mValue);
+
364#elif defined(JPH_USE_NEON)
+
365 vst1q_u32(outV, mValue); // ARM doesn't make distinction between aligned or not
+
366#else
+
367 for (int i = 0; i < 4; ++i)
+
368 outV[i] = mU32[i];
+
369#endif
+
370}
+
+
371
+
+ +
373{
+
374#if defined(JPH_USE_SSE)
+
375 return CountBits(_mm_movemask_ps(_mm_castsi128_ps(mValue)));
+
376#elif defined(JPH_USE_NEON)
+
377 return vaddvq_u32(vshrq_n_u32(mValue, 31));
+
378#else
+
379 return (mU32[0] >> 31) + (mU32[1] >> 31) + (mU32[2] >> 31) + (mU32[3] >> 31);
+
380#endif
+
381}
+
+
382
+
+ +
384{
+
385#if defined(JPH_USE_SSE)
+
386 return _mm_movemask_ps(_mm_castsi128_ps(mValue));
+
387#elif defined(JPH_USE_NEON)
+
388 int32x4_t shift = JPH_NEON_INT32x4(0, 1, 2, 3);
+
389 return vaddvq_u32(vshlq_u32(vshrq_n_u32(mValue, 31), shift));
+
390#else
+
391 return (mU32[0] >> 31) | ((mU32[1] >> 31) << 1) | ((mU32[2] >> 31) << 2) | ((mU32[3] >> 31) << 3);
+
392#endif
+
393}
+
+
394
+
+ +
396{
+
397 return GetTrues() != 0;
+
398}
+
+
399
+
+ +
401{
+
402 return (GetTrues() & 0b111) != 0;
+
403}
+
+
404
+
+ +
406{
+
407 return GetTrues() == 0b1111;
+
408}
+
+
409
+
+ +
411{
+
412 return (GetTrues() & 0b111) == 0b111;
+
413}
+
+
414
+
415template <const uint Count>
+
+ +
417{
+
418 static_assert(Count <= 31, "Invalid shift");
+
419
+
420#if defined(JPH_USE_SSE)
+
421 return _mm_slli_epi32(mValue, Count);
+
422#elif defined(JPH_USE_NEON)
+
423 return vshlq_n_u32(mValue, Count);
+
424#else
+
425 return UVec4(mU32[0] << Count, mU32[1] << Count, mU32[2] << Count, mU32[3] << Count);
+
426#endif
+
427}
+
+
428
+
429template <const uint Count>
+
+ +
431{
+
432 static_assert(Count <= 31, "Invalid shift");
+
433
+
434#if defined(JPH_USE_SSE)
+
435 return _mm_srli_epi32(mValue, Count);
+
436#elif defined(JPH_USE_NEON)
+
437 return vshrq_n_u32(mValue, Count);
+
438#else
+
439 return UVec4(mU32[0] >> Count, mU32[1] >> Count, mU32[2] >> Count, mU32[3] >> Count);
+
440#endif
+
441}
+
+
442
+
443template <const uint Count>
+
+ +
445{
+
446 static_assert(Count <= 31, "Invalid shift");
+
447
+
448#if defined(JPH_USE_SSE)
+
449 return _mm_srai_epi32(mValue, Count);
+
450#elif defined(JPH_USE_NEON)
+
451 return vreinterpretq_u32_s32(vshrq_n_s32(vreinterpretq_s32_u32(mValue), Count));
+
452#else
+
453 return UVec4(uint32(int32_t(mU32[0]) >> Count),
+
454 uint32(int32_t(mU32[1]) >> Count),
+
455 uint32(int32_t(mU32[2]) >> Count),
+
456 uint32(int32_t(mU32[3]) >> Count));
+
457#endif
+
458}
+
+
459
+
+ +
461{
+
462#if defined(JPH_USE_SSE)
+
463 return _mm_unpacklo_epi16(mValue, _mm_castps_si128(_mm_setzero_ps()));
+
464#elif defined(JPH_USE_NEON)
+
465 uint16x4_t value = vget_low_u16(vreinterpretq_u16_u32(mValue));
+
466 uint16x4_t zero = vdup_n_u16(0);
+
467 return vreinterpretq_u32_u16(vcombine_u16(vzip1_u16(value, zero), vzip2_u16(value, zero)));
+
468#else
+
469 return UVec4(mU32[0] & 0xffff,
+
470 (mU32[0] >> 16) & 0xffff,
+
471 mU32[1] & 0xffff,
+
472 (mU32[1] >> 16) & 0xffff);
+
473#endif
+
474}
+
+
475
+
+ +
477{
+
478#if defined(JPH_USE_SSE)
+
479 return _mm_unpackhi_epi16(mValue, _mm_castps_si128(_mm_setzero_ps()));
+
480#elif defined(JPH_USE_NEON)
+
481 uint16x4_t value = vget_high_u16(vreinterpretq_u16_u32(mValue));
+
482 uint16x4_t zero = vdup_n_u16(0);
+
483 return vreinterpretq_u32_u16(vcombine_u16(vzip1_u16(value, zero), vzip2_u16(value, zero)));
+
484#else
+
485 return UVec4(mU32[2] & 0xffff,
+
486 (mU32[2] >> 16) & 0xffff,
+
487 mU32[3] & 0xffff,
+
488 (mU32[3] >> 16) & 0xffff);
+
489#endif
+
490}
+
+
491
+
+ +
493{
+
494#if defined(JPH_USE_SSE4_1)
+
495 return _mm_shuffle_epi8(mValue, _mm_set_epi32(int(0xffffff03), int(0xffffff02), int(0xffffff01), int(0xffffff00)));
+
496#elif defined(JPH_USE_NEON)
+
497 uint8x16_t idx = JPH_NEON_UINT8x16(0x00, 0x7f, 0x7f, 0x7f, 0x01, 0x7f, 0x7f, 0x7f, 0x02, 0x7f, 0x7f, 0x7f, 0x03, 0x7f, 0x7f, 0x7f);
+
498 return vreinterpretq_u32_s8(vqtbl1q_s8(vreinterpretq_s8_u32(mValue), idx));
+
499#else
+
500 UVec4 result;
+
501 for (int i = 0; i < 4; i++)
+
502 result.mU32[i] = (mU32[0] >> (i * 8)) & 0xff;
+
503 return result;
+
504#endif
+
505}
+
+
506
+
+ +
508{
+
509#if defined(JPH_USE_SSE4_1)
+
510 return _mm_shuffle_epi8(mValue, _mm_set_epi32(int(0xffffff07), int(0xffffff06), int(0xffffff05), int(0xffffff04)));
+
511#elif defined(JPH_USE_NEON)
+
512 uint8x16_t idx = JPH_NEON_UINT8x16(0x04, 0x7f, 0x7f, 0x7f, 0x05, 0x7f, 0x7f, 0x7f, 0x06, 0x7f, 0x7f, 0x7f, 0x07, 0x7f, 0x7f, 0x7f);
+
513 return vreinterpretq_u32_s8(vqtbl1q_s8(vreinterpretq_s8_u32(mValue), idx));
+
514#else
+
515 UVec4 result;
+
516 for (int i = 0; i < 4; i++)
+
517 result.mU32[i] = (mU32[1] >> (i * 8)) & 0xff;
+
518 return result;
+
519#endif
+
520}
+
+
521
+
+ +
523{
+
524#if defined(JPH_USE_SSE4_1)
+
525 return _mm_shuffle_epi8(mValue, _mm_set_epi32(int(0xffffff0b), int(0xffffff0a), int(0xffffff09), int(0xffffff08)));
+
526#elif defined(JPH_USE_NEON)
+
527 uint8x16_t idx = JPH_NEON_UINT8x16(0x08, 0x7f, 0x7f, 0x7f, 0x09, 0x7f, 0x7f, 0x7f, 0x0a, 0x7f, 0x7f, 0x7f, 0x0b, 0x7f, 0x7f, 0x7f);
+
528 return vreinterpretq_u32_s8(vqtbl1q_s8(vreinterpretq_s8_u32(mValue), idx));
+
529#else
+
530 UVec4 result;
+
531 for (int i = 0; i < 4; i++)
+
532 result.mU32[i] = (mU32[2] >> (i * 8)) & 0xff;
+
533 return result;
+
534#endif
+
535}
+
+
536
+
+ +
538{
+
539#if defined(JPH_USE_SSE4_1)
+
540 return _mm_shuffle_epi8(mValue, _mm_set_epi32(int(0xffffff0f), int(0xffffff0e), int(0xffffff0d), int(0xffffff0c)));
+
541#elif defined(JPH_USE_NEON)
+
542 uint8x16_t idx = JPH_NEON_UINT8x16(0x0c, 0x7f, 0x7f, 0x7f, 0x0d, 0x7f, 0x7f, 0x7f, 0x0e, 0x7f, 0x7f, 0x7f, 0x0f, 0x7f, 0x7f, 0x7f);
+
543 return vreinterpretq_u32_s8(vqtbl1q_s8(vreinterpretq_s8_u32(mValue), idx));
+
544#else
+
545 UVec4 result;
+
546 for (int i = 0; i < 4; i++)
+
547 result.mU32[i] = (mU32[3] >> (i * 8)) & 0xff;
+
548 return result;
+
549#endif
+
550}
+
+
551
+
+ +
553{
+
554#if defined(JPH_USE_SSE4_1) || defined(JPH_USE_NEON)
+
555 alignas(UVec4) static constexpr uint32 sFourMinusXShuffle[5][4] =
+
556 {
+
557 { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff },
+
558 { 0x0f0e0d0c, 0xffffffff, 0xffffffff, 0xffffffff },
+
559 { 0x0b0a0908, 0x0f0e0d0c, 0xffffffff, 0xffffffff },
+
560 { 0x07060504, 0x0b0a0908, 0x0f0e0d0c, 0xffffffff },
+
561 { 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c }
+
562 };
+
563#endif
+
564
+
565#if defined(JPH_USE_SSE4_1)
+
566 return _mm_shuffle_epi8(mValue, *reinterpret_cast<const UVec4::Type *>(sFourMinusXShuffle[inCount]));
+
567#elif defined(JPH_USE_NEON)
+
568 uint8x16_t idx = vreinterpretq_u8_u32(*reinterpret_cast<const UVec4::Type *>(sFourMinusXShuffle[inCount]));
+
569 return vreinterpretq_u32_s8(vqtbl1q_s8(vreinterpretq_s8_u32(mValue), idx));
+
570#else
+
571 UVec4 result = UVec4::sZero();
+
572 for (int i = 0; i < inCount; i++)
+
573 result.mU32[i] = mU32[i + 4 - inCount];
+
574 return result;
+
575#endif
+
576}
+
+
577
+ +
std::uint8_t uint8
Definition Core.h:453
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
uint CountBits(uint32 inValue)
Count the number of 1 bits in a value.
Definition Math.h:161
+
@ SWIZZLE_Z
Use the Z component.
Definition Swizzle.h:14
+
@ SWIZZLE_W
Use the W component.
Definition Swizzle.h:15
+
@ SWIZZLE_X
Use the X component.
Definition Swizzle.h:12
+
@ SWIZZLE_Y
Use the Y component.
Definition Swizzle.h:13
+
Definition UVec4.h:12
+
JPH_INLINE UVec4 Swizzle() const
Swizzle the elements in inV.
+
static JPH_INLINE UVec4 sNot(UVec4Arg inV1)
Logical not (component wise)
Definition UVec4.inl:214
+
JPH_INLINE uint32 GetZ() const
Definition UVec4.h:104
+
static JPH_INLINE UVec4 sMin(UVec4Arg inV1, UVec4Arg inV2)
Return the minimum value of each of the components.
Definition UVec4.inl:115
+
JPH_INLINE UVec4 LogicalShiftLeft() const
Shift all components by Count bits to the left (filling with zeros from the left)
+
JPH_INLINE int CountTrues() const
Count the number of components that are true (true is when highest bit of component is set)
Definition UVec4.inl:372
+
JPH_INLINE UVec4 SplatY() const
Replicate the Y component to all components.
Definition UVec4.inl:293
+
static JPH_INLINE UVec4 sLoadInt(const uint32 *inV)
Load 1 int from memory and place it in the X component, zeros Y, Z and W.
Definition UVec4.inl:67
+
JPH_INLINE UVec4 Expand4Uint16Lo() const
Takes the lower 4 16 bits and expands them to X, Y, Z and W.
Definition UVec4.inl:460
+
static JPH_INLINE UVec4 sSort4True(UVec4Arg inValue, UVec4Arg inIndex)
Definition UVec4.inl:227
+
JPH_INLINE uint32 GetY() const
Definition UVec4.h:103
+
JPH_INLINE UVec4 LogicalShiftRight() const
Shift all components by Count bits to the right (filling with zeros from the right)
+
static JPH_INLINE UVec4 sReplicate(uint32 inV)
Replicate int inV across all components.
Definition UVec4.inl:56
+
JPH_INLINE UVec4 SplatX() const
Replicate the X component to all components.
Definition UVec4.inl:282
+
JPH_INLINE UVec4 Expand4Byte4() const
Takes byte 4 .. 7 and expands them to X, Y, Z and W.
Definition UVec4.inl:507
+
JPH_INLINE bool TestAllTrue() const
Test if all components are true (true is when highest bit of component is set)
Definition UVec4.inl:405
+
JPH_INLINE UVec4 Expand4Byte0() const
Takes byte 0 .. 3 and expands them to X, Y, Z and W.
Definition UVec4.inl:492
+
JPH_INLINE int GetTrues() const
Store if X is true in bit 0, Y in bit 1, Z in bit 2 and W in bit 3 (true is when highest bit of compo...
Definition UVec4.inl:383
+
JPH_INLINE bool TestAnyXYZTrue() const
Test if any of X, Y or Z components are true (true is when highest bit of component is set)
Definition UVec4.inl:400
+
JPH_INLINE UVec4 & operator+=(UVec4Arg inV2)
Add two integer vectors (component wise)
Definition UVec4.inl:269
+
static JPH_INLINE UVec4 sGatherInt4(const uint32 *inBase, UVec4Arg inOffsets)
Gather 4 ints from memory at inBase + inOffsets[i] * Scale.
+
static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)
Logical and (component wise)
Definition UVec4.inl:199
+
{ uint32 mData[4] Type
Definition UVec4.h:22
+
static JPH_INLINE UVec4 sEquals(UVec4Arg inV1, UVec4Arg inV2)
Equals (component wise)
Definition UVec4.inl:143
+
static JPH_INLINE UVec4 sOr(UVec4Arg inV1, UVec4Arg inV2)
Logical or (component wise)
Definition UVec4.inl:171
+
JPH_INLINE uint32 GetW() const
Definition UVec4.h:105
+
JPH_INLINE bool TestAllXYZTrue() const
Test if X, Y and Z components are true (true is when highest bit of component is set)
Definition UVec4.inl:410
+
JPH_INLINE UVec4 ShiftComponents4Minus(int inCount) const
Shift vector components by 4 - Count floats to the left, so if Count = 1 the resulting vector is (W,...
Definition UVec4.inl:552
+
JPH_INLINE bool operator==(UVec4Arg inV2) const
Comparison.
Definition UVec4.inl:23
+
static JPH_INLINE UVec4 sMax(UVec4Arg inV1, UVec4Arg inV2)
Return the maximum of each of the components.
Definition UVec4.inl:129
+
JPH_INLINE UVec4 SplatZ() const
Replicate the Z component to all components.
Definition UVec4.inl:304
+
Type mValue
Definition UVec4.h:211
+
JPH_INLINE UVec4 SplatW() const
Replicate the W component to all components.
Definition UVec4.inl:315
+
JPH_INLINE void StoreInt4(uint32 *outV) const
Store 4 ints to memory.
Definition UVec4.inl:348
+
JPH_INLINE uint32 GetX() const
Get individual components.
Definition UVec4.h:102
+
JPH_INLINE UVec4 Expand4Byte8() const
Takes byte 8 .. 11 and expands them to X, Y, Z and W.
Definition UVec4.inl:522
+
static JPH_INLINE UVec4 sLoadInt4Aligned(const uint32 *inV)
Load 4 ints from memory, aligned to 16 bytes.
Definition UVec4.inl:89
+
static JPH_INLINE UVec4 sLoadInt4(const uint32 *inV)
Load 4 ints from memory.
Definition UVec4.inl:78
+
JPH_INLINE UVec4 Expand4Byte12() const
Takes byte 12 .. 15 and expands them to X, Y, Z and W.
Definition UVec4.inl:537
+
static JPH_INLINE UVec4 sXor(UVec4Arg inV1, UVec4Arg inV2)
Logical xor (component wise)
Definition UVec4.inl:185
+
JPH_INLINE UVec4 Expand4Uint16Hi() const
Takes the upper 4 16 bits and expands them to X, Y, Z and W.
Definition UVec4.inl:476
+
static JPH_INLINE UVec4 sZero()
Vector with all zeros.
Definition UVec4.inl:45
+
JPH_INLINE UVec4 operator+(UVec4Arg inV2)
Adds an integer value to all integer components (discards any overflow)
Definition UVec4.inl:255
+
JPH_INLINE UVec4 ArithmeticShiftRight() const
Shift all components by Count bits to the right (shifting in the value of the highest bit)
+
UVec4()=default
Constructor.
+
JPH_INLINE UVec4 operator*(UVec4Arg inV2) const
Multiplies each of the 4 integer components with an integer (discards any overflow)
Definition UVec4.inl:241
+
static JPH_INLINE UVec4 sSelect(UVec4Arg inV1, UVec4Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition UVec4.inl:157
+
JPH_INLINE Vec4 ToFloat() const
Convert each component from an int to a float.
Definition UVec4.inl:326
+
JPH_INLINE Vec4 ReinterpretAsFloat() const
Reinterpret UVec4 as a Vec4 (doesn't change the bits)
Definition UVec4.inl:337
+
JPH_INLINE void StoreInt4Aligned(uint32 *outV) const
Store 4 ints to memory, aligned to 16 bytes.
Definition UVec4.inl:360
+
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:395
+
uint32 mU32[4]
Definition UVec4.h:212
+
Definition Vec4.h:14
+
+
+ + + + diff --git a/_u_vec8_8h.html b/_u_vec8_8h.html new file mode 100644 index 000000000..4aab6340d --- /dev/null +++ b/_u_vec8_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Math/UVec8.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UVec8.h File Reference
+
+
+
#include <Jolt/Math/Vec8.h>
+#include "UVec8.inl"
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  UVec8
 
+
+
+ + + + diff --git a/_u_vec8_8h.js b/_u_vec8_8h.js new file mode 100644 index 000000000..aa0111b1d --- /dev/null +++ b/_u_vec8_8h.js @@ -0,0 +1,4 @@ +var _u_vec8_8h = +[ + [ "UVec8", "class_u_vec8.html", "class_u_vec8" ] +]; \ No newline at end of file diff --git a/_u_vec8_8h_source.html b/_u_vec8_8h_source.html new file mode 100644 index 000000000..d4cee69eb --- /dev/null +++ b/_u_vec8_8h_source.html @@ -0,0 +1,219 @@ + + + + + + + +Jolt Physics: Jolt/Math/UVec8.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UVec8.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
+
7#include <Jolt/Math/Vec8.h>
+
8
+ +
10
+
+
11class [[nodiscard]] UVec8
+
12{
+
13public:
+ +
15
+
16 UVec8() = default;
+
17 UVec8(const UVec8 &inRHS) = default;
+
18 JPH_INLINE UVec8(__m256i inRHS) : mValue(inRHS) { }
+
19
+
21 JPH_INLINE UVec8(UVec4Arg inLo, UVec4Arg inHi);
+
22
+
24 JPH_INLINE bool operator == (UVec8Arg inV2) const;
+
25 JPH_INLINE bool operator != (UVec8Arg inV2) const { return !(*this == inV2); }
+
26
+
28 static JPH_INLINE UVec8 sReplicate(uint32 inV);
+
29
+
31 static JPH_INLINE UVec8 sSplatX(UVec4Arg inV);
+
32
+
34 static JPH_INLINE UVec8 sSplatY(UVec4Arg inV);
+
35
+
37 static JPH_INLINE UVec8 sSplatZ(UVec4Arg inV);
+
38
+
40 static JPH_INLINE UVec8 sEquals(UVec8Arg inV1, UVec8Arg inV2);
+
41
+
43 static JPH_INLINE UVec8 sSelect(UVec8Arg inV1, UVec8Arg inV2, UVec8Arg inControl);
+
44
+
46 static JPH_INLINE UVec8 sOr(UVec8Arg inV1, UVec8Arg inV2);
+
47
+
49 static JPH_INLINE UVec8 sXor(UVec8Arg inV1, UVec8Arg inV2);
+
50
+
52 static JPH_INLINE UVec8 sAnd(UVec8Arg inV1, UVec8Arg inV2);
+
53
+
55 JPH_INLINE uint32 operator [] (uint inCoordinate) const { JPH_ASSERT(inCoordinate < 8); return mU32[inCoordinate]; }
+
56 JPH_INLINE uint32 & operator [] (uint inCoordinate) { JPH_ASSERT(inCoordinate < 8); return mU32[inCoordinate]; }
+
57
+
59 template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+
60 JPH_INLINE UVec8 Swizzle() const;
+
61
+
63 JPH_INLINE bool TestAnyTrue() const;
+
64
+
66 JPH_INLINE bool TestAllTrue() const;
+
67
+
69 JPH_INLINE UVec4 LowerVec4() const;
+
70
+
72 JPH_INLINE UVec4 UpperVec4() const;
+
73
+
75 JPH_INLINE Vec8 ToFloat() const;
+
76
+
78 template <const uint Count>
+
79 JPH_INLINE UVec8 LogicalShiftLeft() const;
+
80
+
82 template <const uint Count>
+
83 JPH_INLINE UVec8 LogicalShiftRight() const;
+
84
+
86 template <const uint Count>
+
87 JPH_INLINE UVec8 ArithmeticShiftRight() const;
+
88
+
89 union
+
90 {
+
91 __m256i mValue;
+
92 uint32 mU32[8];
+
93 };
+
94};
+
+
95
+
96static_assert(is_trivial<UVec8>(), "Is supposed to be a trivial type!");
+
97
+ +
99
+
100#include "UVec8.inl"
+
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
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ + +
Definition UVec4.h:12
+
Definition UVec8.h:12
+
JPH_OVERRIDE_NEW_DELETE UVec8()=default
Intentionally not initialized for performance reasons.
+
JPH_INLINE UVec8 Swizzle() const
256 bit variant of Vec::Swizzle (no cross 128 bit lane swizzle)
+
JPH_INLINE UVec8 ArithmeticShiftRight() const
Shift all components by Count bits to the right (shifting in the value of the highest bit)
+
JPH_INLINE UVec8 LogicalShiftRight() const
Shift all components by Count bits to the right (filling with zeros from the right)
+
JPH_INLINE UVec8(__m256i inRHS)
Definition UVec8.h:18
+
UVec8(const UVec8 &inRHS)=default
+
__m256i mValue
Definition UVec8.h:91
+
JPH_INLINE UVec8 LogicalShiftLeft() const
Shift all components by Count bits to the left (filling with zeros from the left)
+
Definition Vec8.h:12
+
+
+ + + + diff --git a/_u_vec8_8inl.html b/_u_vec8_8inl.html new file mode 100644 index 000000000..c3b78588e --- /dev/null +++ b/_u_vec8_8inl.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Math/UVec8.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UVec8.inl File Reference
+
+
+ +

Go to the source code of this file.

+
+
+ + + + diff --git a/_u_vec8_8inl_source.html b/_u_vec8_8inl_source.html new file mode 100644 index 000000000..766e54bb3 --- /dev/null +++ b/_u_vec8_8inl_source.html @@ -0,0 +1,328 @@ + + + + + + + +Jolt Physics: Jolt/Math/UVec8.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UVec8.inl
+
+
+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
+ +
6
+
+ +
8 mValue(_mm256_insertf128_si256(_mm256_castsi128_si256(inLo.mValue), inHi.mValue, 1))
+
9{
+
10}
+
+
11
+
+ +
13{
+
14 return sEquals(*this, inV2).TestAllTrue();
+
15}
+
+
16
+
+ +
18{
+
19 return _mm256_set1_epi32(int(inV));
+
20}
+
+
21
+
+ +
23{
+
24 return _mm256_set1_epi32(inV.GetX());
+
25}
+
+
26
+
+ +
28{
+
29 return _mm256_set1_epi32(inV.GetY());
+
30}
+
+
31
+
+ +
33{
+
34 return _mm256_set1_epi32(inV.GetZ());
+
35}
+
+
36
+
+ +
38{
+
39#ifdef JPH_USE_AVX2
+
40 return _mm256_cmpeq_epi32(inV1.mValue, inV2.mValue);
+
41#else
+
42 return UVec8(UVec4::sEquals(inV1.LowerVec4(), inV2.LowerVec4()), UVec4::sEquals(inV1.UpperVec4(), inV2.UpperVec4()));
+
43#endif
+
44}
+
+
45
+
+ +
47{
+
48 return _mm256_castps_si256(_mm256_blendv_ps(_mm256_castsi256_ps(inV1.mValue), _mm256_castsi256_ps(inV2.mValue), _mm256_castsi256_ps(inControl.mValue)));
+
49}
+
+
50
+
+ +
52{
+
53 return _mm256_castps_si256(_mm256_or_ps(_mm256_castsi256_ps(inV1.mValue), _mm256_castsi256_ps(inV2.mValue)));
+
54}
+
+
55
+
+ +
57{
+
58 return _mm256_castps_si256(_mm256_xor_ps(_mm256_castsi256_ps(inV1.mValue), _mm256_castsi256_ps(inV2.mValue)));
+
59}
+
+
60
+
+ +
62{
+
63 return _mm256_castps_si256(_mm256_and_ps(_mm256_castsi256_ps(inV1.mValue), _mm256_castsi256_ps(inV2.mValue)));
+
64}
+
+
65
+
66template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+
+ +
68{
+
69 static_assert(SwizzleX <= 3, "SwizzleX template parameter out of range");
+
70 static_assert(SwizzleY <= 3, "SwizzleY template parameter out of range");
+
71 static_assert(SwizzleZ <= 3, "SwizzleZ template parameter out of range");
+
72 static_assert(SwizzleW <= 3, "SwizzleW template parameter out of range");
+
73
+
74 return _mm256_castps_si256(_mm256_shuffle_ps(_mm256_castsi256_ps(mValue), _mm256_castsi256_ps(mValue), _MM_SHUFFLE(SwizzleW, SwizzleZ, SwizzleY, SwizzleX)));
+
75}
+
+
76
+
+ +
78{
+
79 return _mm256_movemask_ps(_mm256_castsi256_ps(mValue)) != 0;
+
80}
+
+
81
+
+ +
83{
+
84 return _mm256_movemask_ps(_mm256_castsi256_ps(mValue)) == 0xff;
+
85}
+
+
86
+
+ +
88{
+
89 return _mm256_castsi256_si128(mValue);
+
90}
+
+
91
+
+ +
93{
+
94 return _mm_castps_si128(_mm256_extractf128_ps(_mm256_castsi256_ps(mValue), 1));
+
95}
+
+
96
+
+ +
98{
+
99 return _mm256_cvtepi32_ps(mValue);
+
100}
+
+
101
+
102template <const uint Count>
+
+ +
104{
+
105 static_assert(Count <= 31, "Invalid shift");
+
106
+
107#ifdef JPH_USE_AVX2
+
108 return _mm256_slli_epi32(mValue, Count);
+
109#else
+
110 return UVec8(LowerVec4().LogicalShiftLeft<Count>(), UpperVec4().LogicalShiftLeft<Count>());
+
111#endif
+
112}
+
+
113
+
114template <const uint Count>
+
+ +
116{
+
117 static_assert(Count <= 31, "Invalid shift");
+
118
+
119#ifdef JPH_USE_AVX2
+
120 return _mm256_srli_epi32(mValue, Count);
+
121#else
+
122 return UVec8(LowerVec4().LogicalShiftRight<Count>(), UpperVec4().LogicalShiftRight<Count>());
+
123#endif
+
124}
+
+
125
+
126template <const uint Count>
+
+ +
128{
+
129 static_assert(Count <= 31, "Invalid shift");
+
130
+
131#ifdef JPH_USE_AVX2
+
132 return _mm256_srai_epi32(mValue, Count);
+
133#else
+
134 return UVec8(LowerVec4().ArithmeticShiftRight<Count>(), UpperVec4().ArithmeticShiftRight<Count>());
+
135#endif
+
136}
+
+
137
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
Definition UVec4.h:12
+
JPH_INLINE uint32 GetZ() const
Definition UVec4.h:104
+
JPH_INLINE uint32 GetY() const
Definition UVec4.h:103
+
static JPH_INLINE UVec4 sEquals(UVec4Arg inV1, UVec4Arg inV2)
Equals (component wise)
Definition UVec4.inl:143
+
JPH_INLINE uint32 GetX() const
Get individual components.
Definition UVec4.h:102
+
Definition UVec8.h:12
+
JPH_OVERRIDE_NEW_DELETE UVec8()=default
Intentionally not initialized for performance reasons.
+
JPH_INLINE UVec4 UpperVec4() const
Fetch the higher 128 bit from a 256 bit variable.
Definition UVec8.inl:92
+
static JPH_INLINE UVec8 sEquals(UVec8Arg inV1, UVec8Arg inV2)
Equals (component wise)
Definition UVec8.inl:37
+
static JPH_INLINE UVec8 sSplatZ(UVec4Arg inV)
Replicate the Z component of inV to all components.
Definition UVec8.inl:32
+
JPH_INLINE UVec8 Swizzle() const
256 bit variant of Vec::Swizzle (no cross 128 bit lane swizzle)
+
JPH_INLINE bool TestAllTrue() const
Test if all components are true (true is when highest bit of component is set)
Definition UVec8.inl:82
+
JPH_INLINE bool operator==(UVec8Arg inV2) const
Comparison.
Definition UVec8.inl:12
+
JPH_INLINE UVec8 ArithmeticShiftRight() const
Shift all components by Count bits to the right (shifting in the value of the highest bit)
+
JPH_INLINE UVec8 LogicalShiftRight() const
Shift all components by Count bits to the right (filling with zeros from the right)
+
static JPH_INLINE UVec8 sAnd(UVec8Arg inV1, UVec8Arg inV2)
Logical and.
Definition UVec8.inl:61
+
JPH_INLINE bool TestAnyTrue() const
Test if any of the components are true (true is when highest bit of component is set)
Definition UVec8.inl:77
+
static JPH_INLINE UVec8 sSplatY(UVec4Arg inV)
Replicate the Y component of inV to all components.
Definition UVec8.inl:27
+
static JPH_INLINE UVec8 sSplatX(UVec4Arg inV)
Replicate the X component of inV to all components.
Definition UVec8.inl:22
+
static JPH_INLINE UVec8 sReplicate(uint32 inV)
Replicate int across all components.
Definition UVec8.inl:17
+
__m256i mValue
Definition UVec8.h:91
+
static JPH_INLINE UVec8 sOr(UVec8Arg inV1, UVec8Arg inV2)
Logical or.
Definition UVec8.inl:51
+
JPH_INLINE UVec4 LowerVec4() const
Fetch the lower 128 bit from a 256 bit variable.
Definition UVec8.inl:87
+
static JPH_INLINE UVec8 sXor(UVec8Arg inV1, UVec8Arg inV2)
Logical xor.
Definition UVec8.inl:56
+
JPH_INLINE Vec8 ToFloat() const
Converts int to float.
Definition UVec8.inl:97
+
JPH_INLINE UVec8 LogicalShiftLeft() const
Shift all components by Count bits to the left (filling with zeros from the left)
+
static JPH_INLINE UVec8 sSelect(UVec8Arg inV1, UVec8Arg inV2, UVec8Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition UVec8.inl:46
+
Definition Vec8.h:12
+
+
+ + + + diff --git a/_unordered_map_8h.html b/_unordered_map_8h.html new file mode 100644 index 000000000..72e326370 --- /dev/null +++ b/_unordered_map_8h.html @@ -0,0 +1,143 @@ + + + + + + + +Jolt Physics: Jolt/Core/UnorderedMap.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UnorderedMap.h File Reference
+
+
+
#include <unordered_map>
+
+

Go to the source code of this file.

+ + + + + +

+Typedefs

template<class Key , class T , class Hash = std::hash<Key>, class KeyEqual = std::equal_to<Key>>
using UnorderedMap = std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > >
 
+

Typedef Documentation

+ +

◆ UnorderedMap

+ +
+
+
+template<class Key , class T , class Hash = std::hash<Key>, class KeyEqual = std::equal_to<Key>>
+ + + + +
using UnorderedMap = std::unordered_map<Key, T, Hash, KeyEqual, STLAllocator<pair<const Key, T> >>
+
+ +
+
+
+
+ + + + diff --git a/_unordered_map_8h.js b/_unordered_map_8h.js new file mode 100644 index 000000000..89f915b0c --- /dev/null +++ b/_unordered_map_8h.js @@ -0,0 +1,4 @@ +var _unordered_map_8h = +[ + [ "UnorderedMap", "_unordered_map_8h.html#a847f6a36a0c058f016689ae051d0e7c6", null ] +]; \ No newline at end of file diff --git a/_unordered_map_8h_source.html b/_unordered_map_8h_source.html new file mode 100644 index 000000000..e890f77b7 --- /dev/null +++ b/_unordered_map_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Jolt/Core/UnorderedMap.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UnorderedMap.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#include <unordered_map>
+ +
10
+ +
12
+
13template <class Key, class T, class Hash = std::hash<Key>, class KeyEqual = std::equal_to<Key>> using UnorderedMap = std::unordered_map<Key, T, Hash, KeyEqual, STLAllocator<pair<const Key, T>>>;
+
14
+ +
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
std::unordered_map< Key, T, Hash, KeyEqual, STLAllocator< pair< const Key, T > > > UnorderedMap
Definition UnorderedMap.h:13
+
+
+ + + + diff --git a/_unordered_set_8h.html b/_unordered_set_8h.html new file mode 100644 index 000000000..2c11a051d --- /dev/null +++ b/_unordered_set_8h.html @@ -0,0 +1,143 @@ + + + + + + + +Jolt Physics: Jolt/Core/UnorderedSet.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UnorderedSet.h File Reference
+
+
+
#include <unordered_set>
+
+

Go to the source code of this file.

+ + + + + +

+Typedefs

template<class Key , class Hash = std::hash<Key>, class KeyEqual = std::equal_to<Key>>
using UnorderedSet = std::unordered_set< Key, Hash, KeyEqual, STLAllocator< Key > >
 
+

Typedef Documentation

+ +

◆ UnorderedSet

+ +
+
+
+template<class Key , class Hash = std::hash<Key>, class KeyEqual = std::equal_to<Key>>
+ + + + +
using UnorderedSet = std::unordered_set<Key, Hash, KeyEqual, STLAllocator<Key> >
+
+ +
+
+
+
+ + + + diff --git a/_unordered_set_8h.js b/_unordered_set_8h.js new file mode 100644 index 000000000..818046ba8 --- /dev/null +++ b/_unordered_set_8h.js @@ -0,0 +1,4 @@ +var _unordered_set_8h = +[ + [ "UnorderedSet", "_unordered_set_8h.html#af38f023af851a9cf630868e218f28285", null ] +]; \ No newline at end of file diff --git a/_unordered_set_8h_source.html b/_unordered_set_8h_source.html new file mode 100644 index 000000000..ded494279 --- /dev/null +++ b/_unordered_set_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Jolt/Core/UnorderedSet.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UnorderedSet.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#include <unordered_set>
+ +
10
+ +
12
+
13template <class Key, class Hash = std::hash<Key>, class KeyEqual = std::equal_to<Key>> using UnorderedSet = std::unordered_set<Key, Hash, KeyEqual, STLAllocator<Key>>;
+
14
+ +
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
std::unordered_set< Key, Hash, KeyEqual, STLAllocator< Key > > UnorderedSet
Definition UnorderedSet.h:13
+
+
+ + + + diff --git a/_vec3_8cpp.html b/_vec3_8cpp.html new file mode 100644 index 000000000..13f41d657 --- /dev/null +++ b/_vec3_8cpp.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec3.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vec3.cpp File Reference
+
+
+
#include <Jolt/Jolt.h>
+#include <Jolt/Math/Vec3.h>
+
+
+ + + + diff --git a/_vec3_8h.html b/_vec3_8h.html new file mode 100644 index 000000000..c2c5db0e6 --- /dev/null +++ b/_vec3_8h.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec3.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Vec3.h File Reference
+
+
+
#include <Jolt/Core/StaticArray.h>
+#include <Jolt/Math/Float3.h>
+#include <Jolt/Math/Swizzle.h>
+#include <Jolt/Math/MathTypes.h>
+#include "Vec3.inl"
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  Vec3
 
+
+
+ + + + diff --git a/_vec3_8h.js b/_vec3_8h.js new file mode 100644 index 000000000..08967536d --- /dev/null +++ b/_vec3_8h.js @@ -0,0 +1,4 @@ +var _vec3_8h = +[ + [ "Vec3", "class_vec3.html", "class_vec3" ] +]; \ No newline at end of file diff --git a/_vec3_8h_source.html b/_vec3_8h_source.html new file mode 100644 index 000000000..64eb02385 --- /dev/null +++ b/_vec3_8h_source.html @@ -0,0 +1,381 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec3.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vec3.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#include <Jolt/Math/Float3.h>
+
9#include <Jolt/Math/Swizzle.h>
+
10#include <Jolt/Math/MathTypes.h>
+
11
+ +
13
+
+
16class [[nodiscard]] alignas(JPH_VECTOR_ALIGNMENT) Vec3
+
17{
+
18public:
+ +
20
+
21 // Underlying vector type
+
22#if defined(JPH_USE_SSE)
+
23 using Type = __m128;
+
24#elif defined(JPH_USE_NEON)
+
25 using Type = float32x4_t;
+
26#else
+ +
28#endif
+
29
+
30 // Argument type
+ +
32
+
34 Vec3() = default;
+
35 Vec3(const Vec3 &inRHS) = default;
+
36 Vec3 & operator = (const Vec3 &inRHS) = default;
+
37 explicit JPH_INLINE Vec3(Vec4Arg inRHS);
+
38 JPH_INLINE Vec3(Type inRHS) : mValue(inRHS) { CheckW(); }
+
39
+
41 explicit JPH_INLINE Vec3(const Float3 &inV);
+
42
+
+
44 JPH_INLINE Vec3(float inX, float inY, float inZ);
+
45
+
47 static JPH_INLINE Vec3 sZero();
+
48
+
50 static JPH_INLINE Vec3 sNaN();
+
51
+
53 static JPH_INLINE Vec3 sAxisX() { return Vec3(1, 0, 0); }
+
54 static JPH_INLINE Vec3 sAxisY() { return Vec3(0, 1, 0); }
+
55 static JPH_INLINE Vec3 sAxisZ() { return Vec3(0, 0, 1); }
+
56
+
58 static JPH_INLINE Vec3 sReplicate(float inV);
+
59
+
61 static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV);
+
62
+
64 static JPH_INLINE Vec3 sMin(Vec3Arg inV1, Vec3Arg inV2);
+
65
+
67 static JPH_INLINE Vec3 sMax(Vec3Arg inV1, Vec3Arg inV2);
+
68
+
+
70 static JPH_INLINE Vec3 sClamp(Vec3Arg inV, Vec3Arg inMin, Vec3Arg inMax);
+
71
+
73 static JPH_INLINE UVec4 sEquals(Vec3Arg inV1, Vec3Arg inV2);
+
74
+
76 static JPH_INLINE UVec4 sLess(Vec3Arg inV1, Vec3Arg inV2);
+
77
+
79 static JPH_INLINE UVec4 sLessOrEqual(Vec3Arg inV1, Vec3Arg inV2);
+
80
+
82 static JPH_INLINE UVec4 sGreater(Vec3Arg inV1, Vec3Arg inV2);
+
83
+
85 static JPH_INLINE UVec4 sGreaterOrEqual(Vec3Arg inV1, Vec3Arg inV2);
+
86
+
88 static JPH_INLINE Vec3 sFusedMultiplyAdd(Vec3Arg inMul1, Vec3Arg inMul2, Vec3Arg inAdd);
+
89
+
91 static JPH_INLINE Vec3 sSelect(Vec3Arg inV1, Vec3Arg inV2, UVec4Arg inControl);
+
92
+
94 static JPH_INLINE Vec3 sOr(Vec3Arg inV1, Vec3Arg inV2);
+
95
+
97 static JPH_INLINE Vec3 sXor(Vec3Arg inV1, Vec3Arg inV2);
+
98
+
100 static JPH_INLINE Vec3 sAnd(Vec3Arg inV1, Vec3Arg inV2);
+
101
+
105 static JPH_INLINE Vec3 sUnitSpherical(float inTheta, float inPhi);
+
106
+
108 JPH_EXPORT static const StaticArray<Vec3, 1026> sUnitSphere;
+
109
+
111 template <class Random>
+
112 static inline Vec3 sRandom(Random &inRandom);
+
113
+
115#if defined(JPH_USE_SSE)
+
116 JPH_INLINE float GetX() const { return _mm_cvtss_f32(mValue); }
+
117 JPH_INLINE float GetY() const { return mF32[1]; }
+
118 JPH_INLINE float GetZ() const { return mF32[2]; }
+
119#elif defined(JPH_USE_NEON)
+
120 JPH_INLINE float GetX() const { return vgetq_lane_f32(mValue, 0); }
+
121 JPH_INLINE float GetY() const { return vgetq_lane_f32(mValue, 1); }
+
122 JPH_INLINE float GetZ() const { return vgetq_lane_f32(mValue, 2); }
+
123#else
+
124 JPH_INLINE float GetX() const { return mF32[0]; }
+
125 JPH_INLINE float GetY() const { return mF32[1]; }
+
126 JPH_INLINE float GetZ() const { return mF32[2]; }
+
127#endif
+
128
+
130 JPH_INLINE void SetX(float inX) { mF32[0] = inX; }
+
131 JPH_INLINE void SetY(float inY) { mF32[1] = inY; }
+
132 JPH_INLINE void SetZ(float inZ) { mF32[2] = mF32[3] = inZ; } // Assure Z and W are the same
+
133
+
135 JPH_INLINE void Set(float inX, float inY, float inZ) { *this = Vec3(inX, inY, inZ); }
+
136
+
138 JPH_INLINE float operator [] (uint inCoordinate) const { JPH_ASSERT(inCoordinate < 3); return mF32[inCoordinate]; }
+
139
+
141 JPH_INLINE void SetComponent(uint inCoordinate, float inValue) { JPH_ASSERT(inCoordinate < 3); mF32[inCoordinate] = inValue; mValue = sFixW(mValue); } // Assure Z and W are the same
+
142
+
144 JPH_INLINE bool operator == (Vec3Arg inV2) const;
+
145 JPH_INLINE bool operator != (Vec3Arg inV2) const { return !(*this == inV2); }
+
146
+
148 JPH_INLINE bool IsClose(Vec3Arg inV2, float inMaxDistSq = 1.0e-12f) const;
+
149
+
151 JPH_INLINE bool IsNearZero(float inMaxDistSq = 1.0e-12f) const;
+
152
+
154 JPH_INLINE bool IsNormalized(float inTolerance = 1.0e-6f) const;
+
155
+
157 JPH_INLINE bool IsNaN() const;
+
158
+
160 JPH_INLINE Vec3 operator * (Vec3Arg inV2) const;
+
161
+
163 JPH_INLINE Vec3 operator * (float inV2) const;
+
164
+
166 friend JPH_INLINE Vec3 operator * (float inV1, Vec3Arg inV2);
+
167
+
169 JPH_INLINE Vec3 operator / (float inV2) const;
+
170
+
172 JPH_INLINE Vec3 & operator *= (float inV2);
+
173
+
175 JPH_INLINE Vec3 & operator *= (Vec3Arg inV2);
+
176
+
178 JPH_INLINE Vec3 & operator /= (float inV2);
+
179
+
181 JPH_INLINE Vec3 operator + (Vec3Arg inV2) const;
+
182
+
184 JPH_INLINE Vec3 & operator += (Vec3Arg inV2);
+
185
+
187 JPH_INLINE Vec3 operator - () const;
+
188
+
190 JPH_INLINE Vec3 operator - (Vec3Arg inV2) const;
+
191
+
193 JPH_INLINE Vec3 & operator -= (Vec3Arg inV2);
+
194
+
196 JPH_INLINE Vec3 operator / (Vec3Arg inV2) const;
+
197
+
199 template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ>
+
200 JPH_INLINE Vec3 Swizzle() const;
+
201
+
203 JPH_INLINE Vec4 SplatX() const;
+
204
+
206 JPH_INLINE Vec4 SplatY() const;
+
207
+
209 JPH_INLINE Vec4 SplatZ() const;
+
210
+
212 JPH_INLINE int GetLowestComponentIndex() const;
+
213
+
215 JPH_INLINE int GetHighestComponentIndex() const;
+
216
+
218 JPH_INLINE Vec3 Abs() const;
+
219
+
221 JPH_INLINE Vec3 Reciprocal() const;
+
222
+
224 JPH_INLINE Vec3 Cross(Vec3Arg inV2) const;
+
225
+
227 JPH_INLINE Vec3 DotV(Vec3Arg inV2) const;
+
228
+
230 JPH_INLINE Vec4 DotV4(Vec3Arg inV2) const;
+
231
+
233 JPH_INLINE float Dot(Vec3Arg inV2) const;
+
234
+
236 JPH_INLINE float LengthSq() const;
+
237
+
239 JPH_INLINE float Length() const;
+
240
+
242 JPH_INLINE Vec3 Normalized() const;
+
243
+
245 JPH_INLINE Vec3 NormalizedOr(Vec3Arg inZeroValue) const;
+
246
+
248 JPH_INLINE void StoreFloat3(Float3 *outV) const;
+
249
+
251 JPH_INLINE UVec4 ToInt() const;
+
252
+
254 JPH_INLINE UVec4 ReinterpretAsInt() const;
+
255
+
257 JPH_INLINE float ReduceMin() const;
+
258
+
260 JPH_INLINE float ReduceMax() const;
+
261
+
263 JPH_INLINE Vec3 Sqrt() const;
+
264
+
266 JPH_INLINE Vec3 GetNormalizedPerpendicular() const;
+
267
+
269 JPH_INLINE Vec3 GetSign() const;
+
270
+
+
272 friend ostream & operator << (ostream &inStream, Vec3Arg inV)
+
273 {
+
274 inStream << inV.mF32[0] << ", " << inV.mF32[1] << ", " << inV.mF32[2];
+
275 return inStream;
+
276 }
+
+
277
+
279 JPH_INLINE void CheckW() const;
+
280
+
282 static JPH_INLINE Type sFixW(Type inValue);
+
283
+
284 union
+
285 {
+ +
287 float mF32[4];
+
288 };
+
289};
+
+
290
+
291static_assert(is_trivial<Vec3>(), "Is supposed to be a trivial type!");
+
292
+ +
294
+
295#include "Vec3.inl"
+
#define JPH_EXPORT
Definition Core.h:236
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:451
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
const Vec3 Vec3Arg
Definition MathTypes.h:20
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ + + +
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
Definition UVec4.h:12
+
Definition Vec3.h:17
+
static JPH_INLINE Type sFixW(Type inValue)
Internal helper function that ensures that the Z component is replicated to the W component to preven...
+
Vec4::Type Type
Definition Vec3.h:27
+
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition Vec3.h:53
+
JPH_INLINE void SetComponent(uint inCoordinate, float inValue)
Set float component by index.
Definition Vec3.h:141
+
Vec3(const Vec3 &inRHS)=default
+
static JPH_INLINE Vec3 sAxisY()
Definition Vec3.h:54
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
JPH_INLINE void SetY(float inY)
Definition Vec3.h:131
+
JPH_INLINE Vec3(Type inRHS)
Definition Vec3.h:38
+
JPH_INLINE void SetZ(float inZ)
Definition Vec3.h:132
+
JPH_INLINE void CheckW() const
Internal helper function that checks that W is equal to Z, so e.g. dividing by it should not generate...
+
static JPH_INLINE Vec3 sAxisZ()
Definition Vec3.h:55
+
JPH_INLINE void SetX(float inX)
Set individual components.
Definition Vec3.h:130
+
Type mValue
Definition Vec3.h:286
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
float mF32[4]
Definition Vec3.h:287
+
JPH_INLINE void Set(float inX, float inY, float inZ)
Set all components.
Definition Vec3.h:135
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
Vec3()=default
Constructor.
+
JPH_INLINE Vec3 Swizzle() const
Swizzle the elements in inV.
+
Definition Vec4.h:14
+
{ float mData[4] Type
Definition Vec4.h:24
+
+
+ + + + diff --git a/_vec3_8inl.html b/_vec3_8inl.html new file mode 100644 index 000000000..ffd0b902b --- /dev/null +++ b/_vec3_8inl.html @@ -0,0 +1,199 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec3.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Vec3.inl File Reference
+
+
+
#include <Jolt/Math/Vec4.h>
+#include <Jolt/Math/UVec4.h>
+#include <Jolt/Core/HashCombine.h>
+#include <random>
+
+

Go to the source code of this file.

+ + + + + + +

+Functions

JPH_SUPPRESS_WARNINGS_STD_BEGIN JPH_SUPPRESS_WARNINGS_STD_END JPH_MAKE_HASHABLE (JPH::Vec3, t.GetX(), t.GetY(), t.GetZ()) JPH_NAMESPACE_BEGIN void Vec3
 
Vec3 operator* (float inV1, Vec3Arg inV2)
 
+

Function Documentation

+ +

◆ JPH_MAKE_HASHABLE()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_SUPPRESS_WARNINGS_STD_BEGIN JPH_SUPPRESS_WARNINGS_STD_END JPH_MAKE_HASHABLE (JPH::Vec3 ,
t. GetX(),
t. GetY(),
t. GetZ() 
)
+
+ +
+
+ +

◆ operator*()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Vec3 operator* (float inV1,
Vec3Arg inV2 
)
+
+ +
+
+
+
+ + + + diff --git a/_vec3_8inl.js b/_vec3_8inl.js new file mode 100644 index 000000000..002eb270f --- /dev/null +++ b/_vec3_8inl.js @@ -0,0 +1,5 @@ +var _vec3_8inl = +[ + [ "JPH_MAKE_HASHABLE", "_vec3_8inl.html#abc96ec3d90dc5dc02f759c39265376ee", null ], + [ "operator*", "_vec3_8inl.html#a14695ec9e4b68a40e47bf9cbd11e62a4", null ] +]; \ No newline at end of file diff --git a/_vec3_8inl_source.html b/_vec3_8inl_source.html new file mode 100644 index 000000000..bfb5e261f --- /dev/null +++ b/_vec3_8inl_source.html @@ -0,0 +1,1200 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec3.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vec3.inl
+
+
+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#include <Jolt/Math/Vec4.h>
+
6#include <Jolt/Math/UVec4.h>
+ +
8
+ +
10#include <random>
+ +
12
+
13// Create a std::hash for Vec3
+
+
14JPH_MAKE_HASHABLE(JPH::Vec3, t.GetX(), t.GetY(), t.GetZ())
+
15
+ +
17
+
18void Vec3::CheckW() const
+
19{
+
20#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
21 // Avoid asserts when both components are NaN
+
22 JPH_ASSERT(reinterpret_cast<const uint32 *>(mF32)[2] == reinterpret_cast<const uint32 *>(mF32)[3]);
+
23#endif // JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
24}
+
25
+
26JPH_INLINE Vec3::Type Vec3::sFixW(Type inValue)
+
27{
+
28#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
29 #if defined(JPH_USE_SSE)
+
30 return _mm_shuffle_ps(inValue, inValue, _MM_SHUFFLE(2, 2, 1, 0));
+
31 #elif defined(JPH_USE_NEON)
+
32 return JPH_NEON_SHUFFLE_F32x4(inValue, inValue, 0, 1, 2, 2);
+
33 #else
+
34 Type value;
+
35 value.mData[0] = inValue.mData[0];
+
36 value.mData[1] = inValue.mData[1];
+
37 value.mData[2] = inValue.mData[2];
+
38 value.mData[3] = inValue.mData[2];
+
39 return value;
+
40 #endif
+
41#else
+
42 return inValue;
+
43#endif // JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
44}
+
+
45
+
+ +
47 mValue(sFixW(inRHS.mValue))
+
48{
+
49}
+
+
50
+
+
51Vec3::Vec3(const Float3 &inV)
+
52{
+
53#if defined(JPH_USE_SSE)
+
54 Type x = _mm_load_ss(&inV.x);
+
55 Type y = _mm_load_ss(&inV.y);
+
56 Type z = _mm_load_ss(&inV.z);
+
57 Type xy = _mm_unpacklo_ps(x, y);
+
58 mValue = _mm_shuffle_ps(xy, z, _MM_SHUFFLE(0, 0, 1, 0)); // Assure Z and W are the same
+
59#elif defined(JPH_USE_NEON)
+
60 float32x2_t xy = vld1_f32(&inV.x);
+
61 float32x2_t zz = vdup_n_f32(inV.z); // Assure Z and W are the same
+
62 mValue = vcombine_f32(xy, zz);
+
63#else
+
64 mF32[0] = inV[0];
+
65 mF32[1] = inV[1];
+
66 mF32[2] = inV[2];
+
67 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
68 mF32[3] = inV[2];
+
69 #endif
+
70#endif
+
71}
+
+
72
+
+
73Vec3::Vec3(float inX, float inY, float inZ)
+
74{
+
75#if defined(JPH_USE_SSE)
+
76 mValue = _mm_set_ps(inZ, inZ, inY, inX);
+
77#elif defined(JPH_USE_NEON)
+
78 uint32x2_t xy = vcreate_u32(static_cast<uint64>(BitCast<uint32>(inX)) | (static_cast<uint64>(BitCast<uint32>(inY)) << 32));
+
79 uint32x2_t zz = vreinterpret_u32_f32(vdup_n_f32(inZ));
+
80 mValue = vreinterpretq_f32_u32(vcombine_u32(xy, zz));
+
81#else
+
82 mF32[0] = inX;
+
83 mF32[1] = inY;
+
84 mF32[2] = inZ;
+
85 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
86 mF32[3] = inZ;
+
87 #endif
+
88#endif
+
89}
+
+
90
+
91template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ>
+
+ +
93{
+
94 static_assert(SwizzleX <= 3, "SwizzleX template parameter out of range");
+
95 static_assert(SwizzleY <= 3, "SwizzleY template parameter out of range");
+
96 static_assert(SwizzleZ <= 3, "SwizzleZ template parameter out of range");
+
97
+
98#if defined(JPH_USE_SSE)
+
99 return _mm_shuffle_ps(mValue, mValue, _MM_SHUFFLE(SwizzleZ, SwizzleZ, SwizzleY, SwizzleX)); // Assure Z and W are the same
+
100#elif defined(JPH_USE_NEON)
+
101 return JPH_NEON_SHUFFLE_F32x4(mValue, mValue, SwizzleX, SwizzleY, SwizzleZ, SwizzleZ);
+
102#else
+
103 return Vec3(mF32[SwizzleX], mF32[SwizzleY], mF32[SwizzleZ]);
+
104#endif
+
105}
+
+
106
+
+ +
108{
+
109#if defined(JPH_USE_SSE)
+
110 return _mm_setzero_ps();
+
111#elif defined(JPH_USE_NEON)
+
112 return vdupq_n_f32(0);
+
113#else
+
114 return Vec3(0, 0, 0);
+
115#endif
+
116}
+
+
117
+
+ +
119{
+
120#if defined(JPH_USE_SSE)
+
121 return _mm_set1_ps(inV);
+
122#elif defined(JPH_USE_NEON)
+
123 return vdupq_n_f32(inV);
+
124#else
+
125 return Vec3(inV, inV, inV);
+
126#endif
+
127}
+
+
128
+
+ +
130{
+
131 return sReplicate(numeric_limits<float>::quiet_NaN());
+
132}
+
+
133
+
+ +
135{
+
136#if defined(JPH_USE_SSE)
+
137 Type v = _mm_loadu_ps(&inV.x);
+
138#elif defined(JPH_USE_NEON)
+
139 Type v = vld1q_f32(&inV.x);
+
140#else
+
141 Type v = { inV.x, inV.y, inV.z };
+
142#endif
+
143 return sFixW(v);
+
144}
+
+
145
+
+ +
147{
+
148#if defined(JPH_USE_SSE)
+
149 return _mm_min_ps(inV1.mValue, inV2.mValue);
+
150#elif defined(JPH_USE_NEON)
+
151 return vminq_f32(inV1.mValue, inV2.mValue);
+
152#else
+
153 return Vec3(min(inV1.mF32[0], inV2.mF32[0]),
+
154 min(inV1.mF32[1], inV2.mF32[1]),
+
155 min(inV1.mF32[2], inV2.mF32[2]));
+
156#endif
+
157}
+
+
158
+
+ +
160{
+
161#if defined(JPH_USE_SSE)
+
162 return _mm_max_ps(inV1.mValue, inV2.mValue);
+
163#elif defined(JPH_USE_NEON)
+
164 return vmaxq_f32(inV1.mValue, inV2.mValue);
+
165#else
+
166 return Vec3(max(inV1.mF32[0], inV2.mF32[0]),
+
167 max(inV1.mF32[1], inV2.mF32[1]),
+
168 max(inV1.mF32[2], inV2.mF32[2]));
+
169#endif
+
170}
+
+
171
+
+ +
173{
+
174 return sMax(sMin(inV, inMax), inMin);
+
175}
+
+
176
+
+ +
178{
+
179#if defined(JPH_USE_SSE)
+
180 return _mm_castps_si128(_mm_cmpeq_ps(inV1.mValue, inV2.mValue));
+
181#elif defined(JPH_USE_NEON)
+
182 return vceqq_f32(inV1.mValue, inV2.mValue);
+
183#else
+
184 uint32 z = inV1.mF32[2] == inV2.mF32[2]? 0xffffffffu : 0;
+
185 return UVec4(inV1.mF32[0] == inV2.mF32[0]? 0xffffffffu : 0,
+
186 inV1.mF32[1] == inV2.mF32[1]? 0xffffffffu : 0,
+
187 z,
+
188 z);
+
189#endif
+
190}
+
+
191
+
+ +
193{
+
194#if defined(JPH_USE_SSE)
+
195 return _mm_castps_si128(_mm_cmplt_ps(inV1.mValue, inV2.mValue));
+
196#elif defined(JPH_USE_NEON)
+
197 return vcltq_f32(inV1.mValue, inV2.mValue);
+
198#else
+
199 uint32 z = inV1.mF32[2] < inV2.mF32[2]? 0xffffffffu : 0;
+
200 return UVec4(inV1.mF32[0] < inV2.mF32[0]? 0xffffffffu : 0,
+
201 inV1.mF32[1] < inV2.mF32[1]? 0xffffffffu : 0,
+
202 z,
+
203 z);
+
204#endif
+
205}
+
+
206
+
+ +
208{
+
209#if defined(JPH_USE_SSE)
+
210 return _mm_castps_si128(_mm_cmple_ps(inV1.mValue, inV2.mValue));
+
211#elif defined(JPH_USE_NEON)
+
212 return vcleq_f32(inV1.mValue, inV2.mValue);
+
213#else
+
214 uint32 z = inV1.mF32[2] <= inV2.mF32[2]? 0xffffffffu : 0;
+
215 return UVec4(inV1.mF32[0] <= inV2.mF32[0]? 0xffffffffu : 0,
+
216 inV1.mF32[1] <= inV2.mF32[1]? 0xffffffffu : 0,
+
217 z,
+
218 z);
+
219#endif
+
220}
+
+
221
+
+ +
223{
+
224#if defined(JPH_USE_SSE)
+
225 return _mm_castps_si128(_mm_cmpgt_ps(inV1.mValue, inV2.mValue));
+
226#elif defined(JPH_USE_NEON)
+
227 return vcgtq_f32(inV1.mValue, inV2.mValue);
+
228#else
+
229 uint32 z = inV1.mF32[2] > inV2.mF32[2]? 0xffffffffu : 0;
+
230 return UVec4(inV1.mF32[0] > inV2.mF32[0]? 0xffffffffu : 0,
+
231 inV1.mF32[1] > inV2.mF32[1]? 0xffffffffu : 0,
+
232 z,
+
233 z);
+
234#endif
+
235}
+
+
236
+
+ +
238{
+
239#if defined(JPH_USE_SSE)
+
240 return _mm_castps_si128(_mm_cmpge_ps(inV1.mValue, inV2.mValue));
+
241#elif defined(JPH_USE_NEON)
+
242 return vcgeq_f32(inV1.mValue, inV2.mValue);
+
243#else
+
244 uint32 z = inV1.mF32[2] >= inV2.mF32[2]? 0xffffffffu : 0;
+
245 return UVec4(inV1.mF32[0] >= inV2.mF32[0]? 0xffffffffu : 0,
+
246 inV1.mF32[1] >= inV2.mF32[1]? 0xffffffffu : 0,
+
247 z,
+
248 z);
+
249#endif
+
250}
+
+
251
+
+ +
253{
+
254#if defined(JPH_USE_SSE)
+
255 #ifdef JPH_USE_FMADD
+
256 return _mm_fmadd_ps(inMul1.mValue, inMul2.mValue, inAdd.mValue);
+
257 #else
+
258 return _mm_add_ps(_mm_mul_ps(inMul1.mValue, inMul2.mValue), inAdd.mValue);
+
259 #endif
+
260#elif defined(JPH_USE_NEON)
+
261 return vmlaq_f32(inAdd.mValue, inMul1.mValue, inMul2.mValue);
+
262#else
+
263 return Vec3(inMul1.mF32[0] * inMul2.mF32[0] + inAdd.mF32[0],
+
264 inMul1.mF32[1] * inMul2.mF32[1] + inAdd.mF32[1],
+
265 inMul1.mF32[2] * inMul2.mF32[2] + inAdd.mF32[2]);
+
266#endif
+
267}
+
+
268
+
+ +
270{
+
271#if defined(JPH_USE_SSE4_1)
+
272 Type v = _mm_blendv_ps(inV1.mValue, inV2.mValue, _mm_castsi128_ps(inControl.mValue));
+
273 return sFixW(v);
+
274#elif defined(JPH_USE_NEON)
+
275 Type v = vbslq_f32(vreinterpretq_u32_s32(vshrq_n_s32(vreinterpretq_s32_u32(inControl.mValue), 31)), inV2.mValue, inV1.mValue);
+
276 return sFixW(v);
+
277#else
+
278 Vec3 result;
+
279 for (int i = 0; i < 3; i++)
+
280 result.mF32[i] = inControl.mU32[i] ? inV2.mF32[i] : inV1.mF32[i];
+
281#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
282 result.mF32[3] = result.mF32[2];
+
283#endif // JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
284 return result;
+
285#endif
+
286}
+
+
287
+
+ +
289{
+
290#if defined(JPH_USE_SSE)
+
291 return _mm_or_ps(inV1.mValue, inV2.mValue);
+
292#elif defined(JPH_USE_NEON)
+
293 return vreinterpretq_f32_u32(vorrq_u32(vreinterpretq_u32_f32(inV1.mValue), vreinterpretq_u32_f32(inV2.mValue)));
+
294#else
+ +
296#endif
+
297}
+
+
298
+
+ +
300{
+
301#if defined(JPH_USE_SSE)
+
302 return _mm_xor_ps(inV1.mValue, inV2.mValue);
+
303#elif defined(JPH_USE_NEON)
+
304 return vreinterpretq_f32_u32(veorq_u32(vreinterpretq_u32_f32(inV1.mValue), vreinterpretq_u32_f32(inV2.mValue)));
+
305#else
+ +
307#endif
+
308}
+
+
309
+
+ +
311{
+
312#if defined(JPH_USE_SSE)
+
313 return _mm_and_ps(inV1.mValue, inV2.mValue);
+
314#elif defined(JPH_USE_NEON)
+
315 return vreinterpretq_f32_u32(vandq_u32(vreinterpretq_u32_f32(inV1.mValue), vreinterpretq_u32_f32(inV2.mValue)));
+
316#else
+ +
318#endif
+
319}
+
+
320
+
+
321Vec3 Vec3::sUnitSpherical(float inTheta, float inPhi)
+
322{
+
323 Vec4 s, c;
+
324 Vec4(inTheta, inPhi, 0, 0).SinCos(s, c);
+
325 return Vec3(s.GetX() * c.GetY(), s.GetX() * s.GetY(), c.GetX());
+
326}
+
+
327
+
328template <class Random>
+
+
329Vec3 Vec3::sRandom(Random &inRandom)
+
330{
+
331 std::uniform_real_distribution<float> zero_to_one(0.0f, 1.0f);
+
332 float theta = JPH_PI * zero_to_one(inRandom);
+
333 float phi = 2.0f * JPH_PI * zero_to_one(inRandom);
+
334 return sUnitSpherical(theta, phi);
+
335}
+
+
336
+
+ +
338{
+
339 return sEquals(*this, inV2).TestAllXYZTrue();
+
340}
+
+
341
+
+
342bool Vec3::IsClose(Vec3Arg inV2, float inMaxDistSq) const
+
343{
+
344 return (inV2 - *this).LengthSq() <= inMaxDistSq;
+
345}
+
+
346
+
+
347bool Vec3::IsNearZero(float inMaxDistSq) const
+
348{
+
349 return LengthSq() <= inMaxDistSq;
+
350}
+
+
351
+
+ +
353{
+
354#if defined(JPH_USE_SSE)
+
355 return _mm_mul_ps(mValue, inV2.mValue);
+
356#elif defined(JPH_USE_NEON)
+
357 return vmulq_f32(mValue, inV2.mValue);
+
358#else
+
359 return Vec3(mF32[0] * inV2.mF32[0], mF32[1] * inV2.mF32[1], mF32[2] * inV2.mF32[2]);
+
360#endif
+
361}
+
+
362
+
+
363Vec3 Vec3::operator * (float inV2) const
+
364{
+
365#if defined(JPH_USE_SSE)
+
366 return _mm_mul_ps(mValue, _mm_set1_ps(inV2));
+
367#elif defined(JPH_USE_NEON)
+
368 return vmulq_n_f32(mValue, inV2);
+
369#else
+
370 return Vec3(mF32[0] * inV2, mF32[1] * inV2, mF32[2] * inV2);
+
371#endif
+
372}
+
+
373
+
+
374Vec3 operator * (float inV1, Vec3Arg inV2)
+
375{
+
376#if defined(JPH_USE_SSE)
+
377 return _mm_mul_ps(_mm_set1_ps(inV1), inV2.mValue);
+
378#elif defined(JPH_USE_NEON)
+
379 return vmulq_n_f32(inV2.mValue, inV1);
+
380#else
+
381 return Vec3(inV1 * inV2.mF32[0], inV1 * inV2.mF32[1], inV1 * inV2.mF32[2]);
+
382#endif
+
383}
+
+
384
+
+
385Vec3 Vec3::operator / (float inV2) const
+
386{
+
387#if defined(JPH_USE_SSE)
+
388 return _mm_div_ps(mValue, _mm_set1_ps(inV2));
+
389#elif defined(JPH_USE_NEON)
+
390 return vdivq_f32(mValue, vdupq_n_f32(inV2));
+
391#else
+
392 return Vec3(mF32[0] / inV2, mF32[1] / inV2, mF32[2] / inV2);
+
393#endif
+
394}
+
+
395
+
+ +
397{
+
398#if defined(JPH_USE_SSE)
+
399 mValue = _mm_mul_ps(mValue, _mm_set1_ps(inV2));
+
400#elif defined(JPH_USE_NEON)
+
401 mValue = vmulq_n_f32(mValue, inV2);
+
402#else
+
403 for (int i = 0; i < 3; ++i)
+
404 mF32[i] *= inV2;
+
405 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
406 mF32[3] = mF32[2];
+
407 #endif
+
408#endif
+
409 return *this;
+
410}
+
+
411
+
+ +
413{
+
414#if defined(JPH_USE_SSE)
+
415 mValue = _mm_mul_ps(mValue, inV2.mValue);
+
416#elif defined(JPH_USE_NEON)
+
417 mValue = vmulq_f32(mValue, inV2.mValue);
+
418#else
+
419 for (int i = 0; i < 3; ++i)
+
420 mF32[i] *= inV2.mF32[i];
+
421 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
422 mF32[3] = mF32[2];
+
423 #endif
+
424#endif
+
425 return *this;
+
426}
+
+
427
+
+ +
429{
+
430#if defined(JPH_USE_SSE)
+
431 mValue = _mm_div_ps(mValue, _mm_set1_ps(inV2));
+
432#elif defined(JPH_USE_NEON)
+
433 mValue = vdivq_f32(mValue, vdupq_n_f32(inV2));
+
434#else
+
435 for (int i = 0; i < 3; ++i)
+
436 mF32[i] /= inV2;
+
437 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
438 mF32[3] = mF32[2];
+
439 #endif
+
440#endif
+
441 return *this;
+
442}
+
+
443
+
+ +
445{
+
446#if defined(JPH_USE_SSE)
+
447 return _mm_add_ps(mValue, inV2.mValue);
+
448#elif defined(JPH_USE_NEON)
+
449 return vaddq_f32(mValue, inV2.mValue);
+
450#else
+
451 return Vec3(mF32[0] + inV2.mF32[0], mF32[1] + inV2.mF32[1], mF32[2] + inV2.mF32[2]);
+
452#endif
+
453}
+
+
454
+
+ +
456{
+
457#if defined(JPH_USE_SSE)
+
458 mValue = _mm_add_ps(mValue, inV2.mValue);
+
459#elif defined(JPH_USE_NEON)
+
460 mValue = vaddq_f32(mValue, inV2.mValue);
+
461#else
+
462 for (int i = 0; i < 3; ++i)
+
463 mF32[i] += inV2.mF32[i];
+
464 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
465 mF32[3] = mF32[2];
+
466 #endif
+
467#endif
+
468 return *this;
+
469}
+
+
470
+
+ +
472{
+
473#if defined(JPH_USE_SSE)
+
474 return _mm_sub_ps(_mm_setzero_ps(), mValue);
+
475#elif defined(JPH_USE_NEON)
+
476 #ifdef JPH_CROSS_PLATFORM_DETERMINISTIC
+
477 return vsubq_f32(vdupq_n_f32(0), mValue);
+
478 #else
+
479 return vnegq_f32(mValue);
+
480 #endif
+
481#else
+
482 #ifdef JPH_CROSS_PLATFORM_DETERMINISTIC
+
483 return Vec3(0.0f - mF32[0], 0.0f - mF32[1], 0.0f - mF32[2]);
+
484 #else
+
485 return Vec3(-mF32[0], -mF32[1], -mF32[2]);
+
486 #endif
+
487#endif
+
488}
+
+
489
+
+ +
491{
+
492#if defined(JPH_USE_SSE)
+
493 return _mm_sub_ps(mValue, inV2.mValue);
+
494#elif defined(JPH_USE_NEON)
+
495 return vsubq_f32(mValue, inV2.mValue);
+
496#else
+
497 return Vec3(mF32[0] - inV2.mF32[0], mF32[1] - inV2.mF32[1], mF32[2] - inV2.mF32[2]);
+
498#endif
+
499}
+
+
500
+
+ +
502{
+
503#if defined(JPH_USE_SSE)
+
504 mValue = _mm_sub_ps(mValue, inV2.mValue);
+
505#elif defined(JPH_USE_NEON)
+
506 mValue = vsubq_f32(mValue, inV2.mValue);
+
507#else
+
508 for (int i = 0; i < 3; ++i)
+
509 mF32[i] -= inV2.mF32[i];
+
510 #ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
511 mF32[3] = mF32[2];
+
512 #endif
+
513#endif
+
514 return *this;
+
515}
+
+
516
+
+ +
518{
+
519 inV2.CheckW(); // Check W equals Z to avoid div by zero
+
520#if defined(JPH_USE_SSE)
+
521 return _mm_div_ps(mValue, inV2.mValue);
+
522#elif defined(JPH_USE_NEON)
+
523 return vdivq_f32(mValue, inV2.mValue);
+
524#else
+
525 return Vec3(mF32[0] / inV2.mF32[0], mF32[1] / inV2.mF32[1], mF32[2] / inV2.mF32[2]);
+
526#endif
+
527}
+
+
528
+
+ +
530{
+
531#if defined(JPH_USE_SSE)
+
532 return _mm_shuffle_ps(mValue, mValue, _MM_SHUFFLE(0, 0, 0, 0));
+
533#elif defined(JPH_USE_NEON)
+
534 return vdupq_laneq_f32(mValue, 0);
+
535#else
+
536 return Vec4(mF32[0], mF32[0], mF32[0], mF32[0]);
+
537#endif
+
538}
+
+
539
+
+ +
541{
+
542#if defined(JPH_USE_SSE)
+
543 return _mm_shuffle_ps(mValue, mValue, _MM_SHUFFLE(1, 1, 1, 1));
+
544#elif defined(JPH_USE_NEON)
+
545 return vdupq_laneq_f32(mValue, 1);
+
546#else
+
547 return Vec4(mF32[1], mF32[1], mF32[1], mF32[1]);
+
548#endif
+
549}
+
+
550
+
+ +
552{
+
553#if defined(JPH_USE_SSE)
+
554 return _mm_shuffle_ps(mValue, mValue, _MM_SHUFFLE(2, 2, 2, 2));
+
555#elif defined(JPH_USE_NEON)
+
556 return vdupq_laneq_f32(mValue, 2);
+
557#else
+
558 return Vec4(mF32[2], mF32[2], mF32[2], mF32[2]);
+
559#endif
+
560}
+
+
561
+
+ +
563{
+
564 return GetX() < GetY() ? (GetZ() < GetX() ? 2 : 0) : (GetZ() < GetY() ? 2 : 1);
+
565}
+
+
566
+
+ +
568{
+
569 return GetX() > GetY() ? (GetZ() > GetX() ? 2 : 0) : (GetZ() > GetY() ? 2 : 1);
+
570}
+
+
571
+
+ +
573{
+
574#if defined(JPH_USE_AVX512)
+
575 return _mm_range_ps(mValue, mValue, 0b1000);
+
576#elif defined(JPH_USE_SSE)
+
577 return _mm_max_ps(_mm_sub_ps(_mm_setzero_ps(), mValue), mValue);
+
578#elif defined(JPH_USE_NEON)
+
579 return vabsq_f32(mValue);
+
580#else
+
581 return Vec3(abs(mF32[0]), abs(mF32[1]), abs(mF32[2]));
+
582#endif
+
583}
+
+
584
+
+ +
586{
+
587 return sReplicate(1.0f) / mValue;
+
588}
+
+
589
+
+ +
591{
+
592#if defined(JPH_USE_SSE)
+
593 Type t1 = _mm_shuffle_ps(inV2.mValue, inV2.mValue, _MM_SHUFFLE(0, 0, 2, 1)); // Assure Z and W are the same
+
594 t1 = _mm_mul_ps(t1, mValue);
+
595 Type t2 = _mm_shuffle_ps(mValue, mValue, _MM_SHUFFLE(0, 0, 2, 1)); // Assure Z and W are the same
+
596 t2 = _mm_mul_ps(t2, inV2.mValue);
+
597 Type t3 = _mm_sub_ps(t1, t2);
+
598 return _mm_shuffle_ps(t3, t3, _MM_SHUFFLE(0, 0, 2, 1)); // Assure Z and W are the same
+
599#elif defined(JPH_USE_NEON)
+
600 Type t1 = JPH_NEON_SHUFFLE_F32x4(inV2.mValue, inV2.mValue, 1, 2, 0, 0); // Assure Z and W are the same
+
601 t1 = vmulq_f32(t1, mValue);
+
602 Type t2 = JPH_NEON_SHUFFLE_F32x4(mValue, mValue, 1, 2, 0, 0); // Assure Z and W are the same
+
603 t2 = vmulq_f32(t2, inV2.mValue);
+
604 Type t3 = vsubq_f32(t1, t2);
+
605 return JPH_NEON_SHUFFLE_F32x4(t3, t3, 1, 2, 0, 0); // Assure Z and W are the same
+
606#else
+
607 return Vec3(mF32[1] * inV2.mF32[2] - mF32[2] * inV2.mF32[1],
+
608 mF32[2] * inV2.mF32[0] - mF32[0] * inV2.mF32[2],
+
609 mF32[0] * inV2.mF32[1] - mF32[1] * inV2.mF32[0]);
+
610#endif
+
611}
+
+
612
+
+ +
614{
+
615#if defined(JPH_USE_SSE4_1)
+
616 return _mm_dp_ps(mValue, inV2.mValue, 0x7f);
+
617#elif defined(JPH_USE_NEON)
+
618 float32x4_t mul = vmulq_f32(mValue, inV2.mValue);
+
619 mul = vsetq_lane_f32(0, mul, 3);
+
620 return vdupq_n_f32(vaddvq_f32(mul));
+
621#else
+
622 float dot = 0.0f;
+
623 for (int i = 0; i < 3; i++)
+
624 dot += mF32[i] * inV2.mF32[i];
+
625 return Vec3::sReplicate(dot);
+
626#endif
+
627}
+
+
628
+
+ +
630{
+
631#if defined(JPH_USE_SSE4_1)
+
632 return _mm_dp_ps(mValue, inV2.mValue, 0x7f);
+
633#elif defined(JPH_USE_NEON)
+
634 float32x4_t mul = vmulq_f32(mValue, inV2.mValue);
+
635 mul = vsetq_lane_f32(0, mul, 3);
+
636 return vdupq_n_f32(vaddvq_f32(mul));
+
637#else
+
638 float dot = 0.0f;
+
639 for (int i = 0; i < 3; i++)
+
640 dot += mF32[i] * inV2.mF32[i];
+
641 return Vec4::sReplicate(dot);
+
642#endif
+
643}
+
+
644
+
+
645float Vec3::Dot(Vec3Arg inV2) const
+
646{
+
647#if defined(JPH_USE_SSE4_1)
+
648 return _mm_cvtss_f32(_mm_dp_ps(mValue, inV2.mValue, 0x7f));
+
649#elif defined(JPH_USE_NEON)
+
650 float32x4_t mul = vmulq_f32(mValue, inV2.mValue);
+
651 mul = vsetq_lane_f32(0, mul, 3);
+
652 return vaddvq_f32(mul);
+
653#else
+
654 float dot = 0.0f;
+
655 for (int i = 0; i < 3; i++)
+
656 dot += mF32[i] * inV2.mF32[i];
+
657 return dot;
+
658#endif
+
659}
+
+
660
+
+
661float Vec3::LengthSq() const
+
662{
+
663#if defined(JPH_USE_SSE4_1)
+
664 return _mm_cvtss_f32(_mm_dp_ps(mValue, mValue, 0x7f));
+
665#elif defined(JPH_USE_NEON)
+
666 float32x4_t mul = vmulq_f32(mValue, mValue);
+
667 mul = vsetq_lane_f32(0, mul, 3);
+
668 return vaddvq_f32(mul);
+
669#else
+
670 float len_sq = 0.0f;
+
671 for (int i = 0; i < 3; i++)
+
672 len_sq += mF32[i] * mF32[i];
+
673 return len_sq;
+
674#endif
+
675}
+
+
676
+
+
677float Vec3::Length() const
+
678{
+
679#if defined(JPH_USE_SSE4_1)
+
680 return _mm_cvtss_f32(_mm_sqrt_ss(_mm_dp_ps(mValue, mValue, 0x7f)));
+
681#elif defined(JPH_USE_NEON)
+
682 float32x4_t mul = vmulq_f32(mValue, mValue);
+
683 mul = vsetq_lane_f32(0, mul, 3);
+
684 float32x2_t sum = vdup_n_f32(vaddvq_f32(mul));
+
685 return vget_lane_f32(vsqrt_f32(sum), 0);
+
686#else
+
687 return sqrt(LengthSq());
+
688#endif
+
689}
+
+
690
+
+ +
692{
+
693#if defined(JPH_USE_SSE)
+
694 return _mm_sqrt_ps(mValue);
+
695#elif defined(JPH_USE_NEON)
+
696 return vsqrtq_f32(mValue);
+
697#else
+
698 return Vec3(sqrt(mF32[0]), sqrt(mF32[1]), sqrt(mF32[2]));
+
699#endif
+
700}
+
+
701
+
+ +
703{
+
704#if defined(JPH_USE_SSE4_1)
+
705 return _mm_div_ps(mValue, _mm_sqrt_ps(_mm_dp_ps(mValue, mValue, 0x7f)));
+
706#elif defined(JPH_USE_NEON)
+
707 float32x4_t mul = vmulq_f32(mValue, mValue);
+
708 mul = vsetq_lane_f32(0, mul, 3);
+
709 float32x4_t sum = vdupq_n_f32(vaddvq_f32(mul));
+
710 return vdivq_f32(mValue, vsqrtq_f32(sum));
+
711#else
+
712 return *this / Length();
+
713#endif
+
714}
+
+
715
+
+ +
717{
+
718#if defined(JPH_USE_SSE4_1)
+
719 Type len_sq = _mm_dp_ps(mValue, mValue, 0x7f);
+
720 Type is_zero = _mm_cmpeq_ps(len_sq, _mm_setzero_ps());
+
721#ifdef JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
722 if (_mm_movemask_ps(is_zero) == 0xf)
+
723 return inZeroValue;
+
724 else
+
725 return _mm_div_ps(mValue, _mm_sqrt_ps(len_sq));
+
726#else
+
727 return _mm_blendv_ps(_mm_div_ps(mValue, _mm_sqrt_ps(len_sq)), inZeroValue.mValue, is_zero);
+
728#endif // JPH_FLOATING_POINT_EXCEPTIONS_ENABLED
+
729#elif defined(JPH_USE_NEON)
+
730 float32x4_t mul = vmulq_f32(mValue, mValue);
+
731 mul = vsetq_lane_f32(0, mul, 3);
+
732 float32x4_t sum = vdupq_n_f32(vaddvq_f32(mul));
+
733 float32x4_t len = vsqrtq_f32(sum);
+
734 uint32x4_t is_zero = vceqq_f32(len, vdupq_n_f32(0));
+
735 return vbslq_f32(is_zero, inZeroValue.mValue, vdivq_f32(mValue, len));
+
736#else
+
737 float len_sq = LengthSq();
+
738 if (len_sq == 0.0f)
+
739 return inZeroValue;
+
740 else
+
741 return *this / sqrt(len_sq);
+
742#endif
+
743}
+
+
744
+
+
745bool Vec3::IsNormalized(float inTolerance) const
+
746{
+
747 return abs(LengthSq() - 1.0f) <= inTolerance;
+
748}
+
+
749
+
+
750bool Vec3::IsNaN() const
+
751{
+
752#if defined(JPH_USE_AVX512)
+
753 return (_mm_fpclass_ps_mask(mValue, 0b10000001) & 0x7) != 0;
+
754#elif defined(JPH_USE_SSE)
+
755 return (_mm_movemask_ps(_mm_cmpunord_ps(mValue, mValue)) & 0x7) != 0;
+
756#elif defined(JPH_USE_NEON)
+
757 uint32x4_t mask = JPH_NEON_UINT32x4(1, 1, 1, 0);
+
758 uint32x4_t is_equal = vceqq_f32(mValue, mValue); // If a number is not equal to itself it's a NaN
+
759 return vaddvq_u32(vandq_u32(is_equal, mask)) != 3;
+
760#else
+
761 return isnan(mF32[0]) || isnan(mF32[1]) || isnan(mF32[2]);
+
762#endif
+
763}
+
+
764
+
+
765void Vec3::StoreFloat3(Float3 *outV) const
+
766{
+
767#if defined(JPH_USE_SSE)
+
768 _mm_store_ss(&outV->x, mValue);
+
769 Vec3 t = Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_UNUSED>();
+
770 _mm_store_ss(&outV->y, t.mValue);
+ +
772 _mm_store_ss(&outV->z, t.mValue);
+
773#elif defined(JPH_USE_NEON)
+
774 float32x2_t xy = vget_low_f32(mValue);
+
775 vst1_f32(&outV->x, xy);
+
776 vst1q_lane_f32(&outV->z, mValue, 2);
+
777#else
+
778 outV->x = mF32[0];
+
779 outV->y = mF32[1];
+
780 outV->z = mF32[2];
+
781#endif
+
782}
+
+
783
+
+ +
785{
+
786#if defined(JPH_USE_SSE)
+
787 return _mm_cvttps_epi32(mValue);
+
788#elif defined(JPH_USE_NEON)
+
789 return vcvtq_u32_f32(mValue);
+
790#else
+
791 return UVec4(uint32(mF32[0]), uint32(mF32[1]), uint32(mF32[2]), uint32(mF32[3]));
+
792#endif
+
793}
+
+
794
+
+ +
796{
+
797#if defined(JPH_USE_SSE)
+
798 return UVec4(_mm_castps_si128(mValue));
+
799#elif defined(JPH_USE_NEON)
+
800 return vreinterpretq_u32_f32(mValue);
+
801#else
+
802 return *reinterpret_cast<const UVec4 *>(this);
+
803#endif
+
804}
+
+
805
+
+
806float Vec3::ReduceMin() const
+
807{
+
808 Vec3 v = sMin(mValue, Swizzle<SWIZZLE_Y, SWIZZLE_UNUSED, SWIZZLE_Z>());
+ +
810 return v.GetX();
+
811}
+
+
812
+
+
813float Vec3::ReduceMax() const
+
814{
+
815 Vec3 v = sMax(mValue, Swizzle<SWIZZLE_Y, SWIZZLE_UNUSED, SWIZZLE_Z>());
+ +
817 return v.GetX();
+
818}
+
+
819
+
+ +
821{
+
822 if (abs(mF32[0]) > abs(mF32[1]))
+
823 {
+
824 float len = sqrt(mF32[0] * mF32[0] + mF32[2] * mF32[2]);
+
825 return Vec3(mF32[2], 0.0f, -mF32[0]) / len;
+
826 }
+
827 else
+
828 {
+
829 float len = sqrt(mF32[1] * mF32[1] + mF32[2] * mF32[2]);
+
830 return Vec3(0.0f, mF32[2], -mF32[1]) / len;
+
831 }
+
832}
+
+
833
+
+ +
835{
+
836#if defined(JPH_USE_AVX512)
+
837 return _mm_fixupimm_ps(mValue, mValue, _mm_set1_epi32(0xA9A90A00), 0);
+
838#elif defined(JPH_USE_SSE)
+
839 Type minus_one = _mm_set1_ps(-1.0f);
+
840 Type one = _mm_set1_ps(1.0f);
+
841 return _mm_or_ps(_mm_and_ps(mValue, minus_one), one);
+
842#elif defined(JPH_USE_NEON)
+
843 Type minus_one = vdupq_n_f32(-1.0f);
+
844 Type one = vdupq_n_f32(1.0f);
+
845 return vreinterpretq_f32_u32(vorrq_u32(vandq_u32(vreinterpretq_u32_f32(mValue), vreinterpretq_u32_f32(minus_one)), vreinterpretq_u32_f32(one)));
+
846#else
+
847 return Vec3(std::signbit(mF32[0])? -1.0f : 1.0f,
+
848 std::signbit(mF32[1])? -1.0f : 1.0f,
+
849 std::signbit(mF32[2])? -1.0f : 1.0f);
+
850#endif
+
851}
+
+
852
+ +
#define JPH_SUPPRESS_WARNINGS_STD_BEGIN
Definition Core.h:383
+
#define JPH_SUPPRESS_WARNINGS_STD_END
Definition Core.h:395
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_MAKE_HASHABLE(type,...)
Definition HashCombine.h:87
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
@ SWIZZLE_Z
Use the Z component.
Definition Swizzle.h:14
+
@ SWIZZLE_UNUSED
We always use the Z component when we don't specifically want to initialize a value,...
Definition Swizzle.h:16
+
@ SWIZZLE_Y
Use the Y component.
Definition Swizzle.h:13
+ +
Vec3 operator*(float inV1, Vec3Arg inV2)
Definition Vec3.inl:374
+ +
Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.
Definition Float3.h:13
+
float y
Definition Float3.h:39
+
float z
Definition Float3.h:40
+
float x
Definition Float3.h:38
+
Definition UVec4.h:12
+
static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)
Logical and (component wise)
Definition UVec4.inl:199
+
static JPH_INLINE UVec4 sOr(UVec4Arg inV1, UVec4Arg inV2)
Logical or (component wise)
Definition UVec4.inl:171
+
JPH_INLINE bool TestAllXYZTrue() const
Test if X, Y and Z components are true (true is when highest bit of component is set)
Definition UVec4.inl:410
+
Type mValue
Definition UVec4.h:211
+
static JPH_INLINE UVec4 sXor(UVec4Arg inV1, UVec4Arg inV2)
Logical xor (component wise)
Definition UVec4.inl:185
+
JPH_INLINE Vec4 ReinterpretAsFloat() const
Reinterpret UVec4 as a Vec4 (doesn't change the bits)
Definition UVec4.inl:337
+
uint32 mU32[4]
Definition UVec4.h:212
+
Definition Vec3.h:17
+
JPH_INLINE bool IsClose(Vec3Arg inV2, float inMaxDistSq=1.0e-12f) const
Test if two vectors are close.
Definition Vec3.inl:342
+
static JPH_INLINE Vec3 sMax(Vec3Arg inV1, Vec3Arg inV2)
Return the maximum of each of the components.
Definition Vec3.inl:159
+
JPH_INLINE float Dot(Vec3Arg inV2) const
Dot product.
Definition Vec3.inl:645
+
JPH_INLINE Vec3 Normalized() const
Normalize vector.
Definition Vec3.inl:702
+
static JPH_INLINE Type sFixW(Type inValue)
Internal helper function that ensures that the Z component is replicated to the W component to preven...
+
Vec4::Type Type
Definition Vec3.h:27
+
JPH_INLINE bool operator==(Vec3Arg inV2) const
Comparison.
Definition Vec3.inl:337
+
JPH_INLINE Vec4 SplatX() const
Replicate the X component to all components.
Definition Vec3.inl:529
+
static JPH_INLINE Vec3 sMin(Vec3Arg inV1, Vec3Arg inV2)
Return the minimum value of each of the components.
Definition Vec3.inl:146
+
JPH_INLINE Vec3 Cross(Vec3Arg inV2) const
Cross product.
Definition Vec3.inl:590
+
JPH_INLINE Vec3 GetNormalizedPerpendicular() const
Get normalized vector that is perpendicular to this vector.
Definition Vec3.inl:820
+
static Vec3 sRandom(Random &inRandom)
Get random unit vector.
Definition Vec3.inl:329
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec3.h:124
+
JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const
Test if vector is normalized.
Definition Vec3.inl:745
+
static JPH_INLINE Vec3 sXor(Vec3Arg inV1, Vec3Arg inV2)
Logical xor (component wise)
Definition Vec3.inl:299
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec3.inl:677
+
static JPH_INLINE UVec4 sGreaterOrEqual(Vec3Arg inV1, Vec3Arg inV2)
Greater than or equal (component wise)
Definition Vec3.inl:237
+
JPH_INLINE float ReduceMin() const
Get the minimum of X, Y and Z.
Definition Vec3.inl:806
+
JPH_INLINE Vec3 & operator-=(Vec3Arg inV2)
Add two float vectors (component wise)
Definition Vec3.inl:501
+
JPH_INLINE float ReduceMax() const
Get the maximum of X, Y and Z.
Definition Vec3.inl:813
+
static JPH_INLINE UVec4 sLessOrEqual(Vec3Arg inV1, Vec3Arg inV2)
Less than or equal (component wise)
Definition Vec3.inl:207
+
JPH_INLINE Vec3 operator/(float inV2) const
Divide vector by float.
Definition Vec3.inl:385
+
friend JPH_INLINE Vec3 operator*(float inV1, Vec3Arg inV2)
Multiply vector with float.
Definition Vec3.inl:374
+
JPH_INLINE int GetLowestComponentIndex() const
Get index of component with lowest value.
Definition Vec3.inl:562
+
JPH_INLINE Vec3 & operator/=(float inV2)
Divide vector by float.
Definition Vec3.inl:428
+
JPH_INLINE Vec4 DotV4(Vec3Arg inV2) const
Dot product, returns the dot product in X, Y, Z and W components.
Definition Vec3.inl:629
+
JPH_INLINE Vec3 Abs() const
Return the absolute value of each of the components.
Definition Vec3.inl:572
+
JPH_INLINE Vec3 Reciprocal() const
Reciprocal vector (1 / value) for each of the components.
Definition Vec3.inl:585
+
JPH_INLINE Vec3 NormalizedOr(Vec3Arg inZeroValue) const
Normalize vector or return inZeroValue if the length of the vector is zero.
Definition Vec3.inl:716
+
JPH_INLINE Vec3 operator+(Vec3Arg inV2) const
Add two float vectors (component wise)
Definition Vec3.inl:444
+
JPH_INLINE Vec4 SplatZ() const
Replicate the Z component to all components.
Definition Vec3.inl:551
+
static JPH_INLINE Vec3 sOr(Vec3Arg inV1, Vec3Arg inV2)
Logical or (component wise)
Definition Vec3.inl:288
+
static JPH_INLINE UVec4 sGreater(Vec3Arg inV1, Vec3Arg inV2)
Greater than (component wise)
Definition Vec3.inl:222
+
static JPH_INLINE Vec3 sAnd(Vec3Arg inV1, Vec3Arg inV2)
Logical and (component wise)
Definition Vec3.inl:310
+
JPH_INLINE void CheckW() const
Internal helper function that checks that W is equal to Z, so e.g. dividing by it should not generate...
+
static JPH_INLINE Vec3 sSelect(Vec3Arg inV1, Vec3Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec3.inl:269
+
static JPH_INLINE Vec3 sUnitSpherical(float inTheta, float inPhi)
Definition Vec3.inl:321
+
JPH_INLINE UVec4 ToInt() const
Convert each component from a float to an int.
Definition Vec3.inl:784
+
Type mValue
Definition Vec3.h:286
+
JPH_INLINE float GetY() const
Definition Vec3.h:125
+
JPH_INLINE Vec4 SplatY() const
Replicate the Y component to all components.
Definition Vec3.inl:540
+
JPH_INLINE Vec3 operator-() const
Negate.
Definition Vec3.inl:471
+
JPH_INLINE void StoreFloat3(Float3 *outV) const
Store 3 floats to memory.
Definition Vec3.inl:765
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec3.inl:661
+
float mF32[4]
Definition Vec3.h:287
+
static JPH_INLINE UVec4 sEquals(Vec3Arg inV1, Vec3Arg inV2)
Equals (component wise)
Definition Vec3.inl:177
+
JPH_INLINE bool IsNearZero(float inMaxDistSq=1.0e-12f) const
Test if vector is near zero.
Definition Vec3.inl:347
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
static JPH_INLINE UVec4 sLess(Vec3Arg inV1, Vec3Arg inV2)
Less than (component wise)
Definition Vec3.inl:192
+
static JPH_INLINE Vec3 sReplicate(float inV)
Replicate inV across all components.
Definition Vec3.inl:118
+
static JPH_INLINE Vec3 sClamp(Vec3Arg inV, Vec3Arg inMin, Vec3Arg inMax)
Clamp a vector between min and max (component wise)
Definition Vec3.inl:172
+
JPH_INLINE Vec3 & operator*=(float inV2)
Multiply vector with float.
Definition Vec3.inl:396
+
JPH_INLINE Vec3 & operator+=(Vec3Arg inV2)
Add two float vectors (component wise)
Definition Vec3.inl:455
+
JPH_INLINE bool IsNaN() const
Test if vector contains NaN elements.
Definition Vec3.inl:750
+
JPH_INLINE Vec3 Sqrt() const
Component wise square root.
Definition Vec3.inl:691
+
JPH_INLINE UVec4 ReinterpretAsInt() const
Reinterpret Vec3 as a UVec4 (doesn't change the bits)
Definition Vec3.inl:795
+
JPH_INLINE Vec3 DotV(Vec3Arg inV2) const
Dot product, returns the dot product in X, Y and Z components.
Definition Vec3.inl:613
+
static JPH_INLINE Vec3 sLoadFloat3Unsafe(const Float3 &inV)
Load 3 floats from memory (reads 32 bits extra which it doesn't use)
Definition Vec3.inl:134
+
JPH_INLINE float GetZ() const
Definition Vec3.h:126
+
JPH_INLINE Vec3 GetSign() const
Get vector that contains the sign of each element (returns 1.0f if positive, -1.0f if negative)
Definition Vec3.inl:834
+
static JPH_INLINE Vec3 sNaN()
Vector with all NaN's.
Definition Vec3.inl:129
+
Vec3()=default
Constructor.
+
JPH_INLINE int GetHighestComponentIndex() const
Get index of component with highest value.
Definition Vec3.inl:567
+
static JPH_INLINE Vec3 sFusedMultiplyAdd(Vec3Arg inMul1, Vec3Arg inMul2, Vec3Arg inAdd)
Calculates inMul1 * inMul2 + inAdd.
Definition Vec3.inl:252
+
JPH_INLINE Vec3 Swizzle() const
Swizzle the elements in inV.
+
Definition Vec4.h:14
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec4.h:113
+
JPH_INLINE float GetY() const
Definition Vec4.h:114
+
static JPH_INLINE Vec4 sReplicate(float inV)
Replicate inV across all components.
Definition Vec4.inl:74
+
void SinCos(Vec4 &outSin, Vec4 &outCos) const
Calculate the sine and cosine for each element of this vector (input in radians)
Definition Vec4.inl:775
+
+
+ + + + diff --git a/_vec4_8h.html b/_vec4_8h.html new file mode 100644 index 000000000..b2a660027 --- /dev/null +++ b/_vec4_8h.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec4.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Vec4.h File Reference
+
+
+
#include <Jolt/Math/Float4.h>
+#include <Jolt/Math/Swizzle.h>
+#include <Jolt/Math/MathTypes.h>
+#include "Vec4.inl"
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  Vec4
 
+
+
+ + + + diff --git a/_vec4_8h.js b/_vec4_8h.js new file mode 100644 index 000000000..3f9e78a3c --- /dev/null +++ b/_vec4_8h.js @@ -0,0 +1,4 @@ +var _vec4_8h = +[ + [ "Vec4", "class_vec4.html", "class_vec4" ] +]; \ No newline at end of file diff --git a/_vec4_8h_source.html b/_vec4_8h_source.html new file mode 100644 index 000000000..c8d0cde66 --- /dev/null +++ b/_vec4_8h_source.html @@ -0,0 +1,367 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec4.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vec4.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
+
7#include <Jolt/Math/Float4.h>
+
8#include <Jolt/Math/Swizzle.h>
+ +
10
+ +
12
+
+
13class [[nodiscard]] alignas(JPH_VECTOR_ALIGNMENT) Vec4
+
14{
+
15public:
+ +
17
+
18 // Underlying vector type
+
19#if defined(JPH_USE_SSE)
+
20 using Type = __m128;
+
21#elif defined(JPH_USE_NEON)
+
22 using Type = float32x4_t;
+
23#else
+
24 using Type = struct { float mData[4]; };
+
25#endif
+
26
+
28 Vec4() = default;
+
29 Vec4(const Vec4 &inRHS) = default;
+
30 Vec4 & operator = (const Vec4 &inRHS) = default;
+
31 explicit JPH_INLINE Vec4(Vec3Arg inRHS);
+
32 JPH_INLINE Vec4(Vec3Arg inRHS, float inW);
+
33 JPH_INLINE Vec4(Type inRHS) : mValue(inRHS) { }
+
34
+
36 JPH_INLINE Vec4(float inX, float inY, float inZ, float inW);
+
37
+
39 static JPH_INLINE Vec4 sZero();
+
40
+
42 static JPH_INLINE Vec4 sNaN();
+
43
+
45 static JPH_INLINE Vec4 sReplicate(float inV);
+
46
+
48 static JPH_INLINE Vec4 sLoadFloat4(const Float4 *inV);
+
49
+
51 static JPH_INLINE Vec4 sLoadFloat4Aligned(const Float4 *inV);
+
52
+
54 template <const int Scale>
+
55 static JPH_INLINE Vec4 sGatherFloat4(const float *inBase, UVec4Arg inOffsets);
+
56
+
58 static JPH_INLINE Vec4 sMin(Vec4Arg inV1, Vec4Arg inV2);
+
59
+
61 static JPH_INLINE Vec4 sMax(Vec4Arg inV1, Vec4Arg inV2);
+
62
+
64 static JPH_INLINE UVec4 sEquals(Vec4Arg inV1, Vec4Arg inV2);
+
65
+
67 static JPH_INLINE UVec4 sLess(Vec4Arg inV1, Vec4Arg inV2);
+
68
+
70 static JPH_INLINE UVec4 sLessOrEqual(Vec4Arg inV1, Vec4Arg inV2);
+
71
+
73 static JPH_INLINE UVec4 sGreater(Vec4Arg inV1, Vec4Arg inV2);
+
74
+
76 static JPH_INLINE UVec4 sGreaterOrEqual(Vec4Arg inV1, Vec4Arg inV2);
+
77
+
79 static JPH_INLINE Vec4 sFusedMultiplyAdd(Vec4Arg inMul1, Vec4Arg inMul2, Vec4Arg inAdd);
+
80
+
82 static JPH_INLINE Vec4 sSelect(Vec4Arg inV1, Vec4Arg inV2, UVec4Arg inControl);
+
83
+
85 static JPH_INLINE Vec4 sOr(Vec4Arg inV1, Vec4Arg inV2);
+
86
+
88 static JPH_INLINE Vec4 sXor(Vec4Arg inV1, Vec4Arg inV2);
+
89
+
91 static JPH_INLINE Vec4 sAnd(Vec4Arg inV1, Vec4Arg inV2);
+
92
+
95 static JPH_INLINE void sSort4(Vec4 &ioValue, UVec4 &ioIndex);
+
96
+
99 static JPH_INLINE void sSort4Reverse(Vec4 &ioValue, UVec4 &ioIndex);
+
100
+
102#if defined(JPH_USE_SSE)
+
103 JPH_INLINE float GetX() const { return _mm_cvtss_f32(mValue); }
+
104 JPH_INLINE float GetY() const { return mF32[1]; }
+
105 JPH_INLINE float GetZ() const { return mF32[2]; }
+
106 JPH_INLINE float GetW() const { return mF32[3]; }
+
107#elif defined(JPH_USE_NEON)
+
108 JPH_INLINE float GetX() const { return vgetq_lane_f32(mValue, 0); }
+
109 JPH_INLINE float GetY() const { return vgetq_lane_f32(mValue, 1); }
+
110 JPH_INLINE float GetZ() const { return vgetq_lane_f32(mValue, 2); }
+
111 JPH_INLINE float GetW() const { return vgetq_lane_f32(mValue, 3); }
+
112#else
+
113 JPH_INLINE float GetX() const { return mF32[0]; }
+
114 JPH_INLINE float GetY() const { return mF32[1]; }
+
115 JPH_INLINE float GetZ() const { return mF32[2]; }
+
116 JPH_INLINE float GetW() const { return mF32[3]; }
+
117#endif
+
118
+
120 JPH_INLINE void SetX(float inX) { mF32[0] = inX; }
+
121 JPH_INLINE void SetY(float inY) { mF32[1] = inY; }
+
122 JPH_INLINE void SetZ(float inZ) { mF32[2] = inZ; }
+
123 JPH_INLINE void SetW(float inW) { mF32[3] = inW; }
+
124
+
126 JPH_INLINE void Set(float inX, float inY, float inZ, float inW) { *this = Vec4(inX, inY, inZ, inW); }
+
127
+
129 JPH_INLINE float operator [] (uint inCoordinate) const { JPH_ASSERT(inCoordinate < 4); return mF32[inCoordinate]; }
+
130 JPH_INLINE float & operator [] (uint inCoordinate) { JPH_ASSERT(inCoordinate < 4); return mF32[inCoordinate]; }
+
131
+
133 JPH_INLINE bool operator == (Vec4Arg inV2) const;
+
134 JPH_INLINE bool operator != (Vec4Arg inV2) const { return !(*this == inV2); }
+
135
+
137 JPH_INLINE bool IsClose(Vec4Arg inV2, float inMaxDistSq = 1.0e-12f) const;
+
138
+
140 JPH_INLINE bool IsNormalized(float inTolerance = 1.0e-6f) const;
+
141
+
143 JPH_INLINE bool IsNaN() const;
+
144
+
146 JPH_INLINE Vec4 operator * (Vec4Arg inV2) const;
+
147
+
149 JPH_INLINE Vec4 operator * (float inV2) const;
+
150
+
152 friend JPH_INLINE Vec4 operator * (float inV1, Vec4Arg inV2);
+
153
+
155 JPH_INLINE Vec4 operator / (float inV2) const;
+
156
+
158 JPH_INLINE Vec4 & operator *= (float inV2);
+
159
+
161 JPH_INLINE Vec4 & operator *= (Vec4Arg inV2);
+
162
+
164 JPH_INLINE Vec4 & operator /= (float inV2);
+
165
+
167 JPH_INLINE Vec4 operator + (Vec4Arg inV2) const;
+
168
+
170 JPH_INLINE Vec4 & operator += (Vec4Arg inV2);
+
171
+
173 JPH_INLINE Vec4 operator - () const;
+
174
+
176 JPH_INLINE Vec4 operator - (Vec4Arg inV2) const;
+
177
+
179 JPH_INLINE Vec4 & operator -= (Vec4Arg inV2);
+
180
+
182 JPH_INLINE Vec4 operator / (Vec4Arg inV2) const;
+
183
+
185 template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+
186 JPH_INLINE Vec4 Swizzle() const;
+
187
+
189 JPH_INLINE Vec4 SplatX() const;
+
190
+
192 JPH_INLINE Vec4 SplatY() const;
+
193
+
195 JPH_INLINE Vec4 SplatZ() const;
+
196
+
198 JPH_INLINE Vec4 SplatW() const;
+
199
+
201 JPH_INLINE Vec4 Abs() const;
+
202
+
204 JPH_INLINE Vec4 Reciprocal() const;
+
205
+
207 JPH_INLINE Vec4 DotV(Vec4Arg inV2) const;
+
208
+
210 JPH_INLINE float Dot(Vec4Arg inV2) const;
+
211
+
213 JPH_INLINE float LengthSq() const;
+
214
+
216 JPH_INLINE float Length() const;
+
217
+
219 JPH_INLINE Vec4 Normalized() const;
+
220
+
222 JPH_INLINE void StoreFloat4(Float4 *outV) const;
+
223
+
225 JPH_INLINE UVec4 ToInt() const;
+
226
+
228 JPH_INLINE UVec4 ReinterpretAsInt() const;
+
229
+
231 JPH_INLINE int GetSignBits() const;
+
232
+
234 JPH_INLINE float ReduceMin() const;
+
235
+
237 JPH_INLINE float ReduceMax() const;
+
238
+
240 JPH_INLINE Vec4 Sqrt() const;
+
241
+
243 JPH_INLINE Vec4 GetSign() const;
+
244
+
246 inline void SinCos(Vec4 &outSin, Vec4 &outCos) const;
+
247
+
249 inline Vec4 Tan() const;
+
250
+
253 inline Vec4 ASin() const;
+
254
+
257 inline Vec4 ACos() const;
+
258
+
260 inline Vec4 ATan() const;
+
261
+
263 inline static Vec4 sATan2(Vec4Arg inY, Vec4Arg inX);
+
264
+
+
266 friend ostream & operator << (ostream &inStream, Vec4Arg inV)
+
267 {
+
268 inStream << inV.mF32[0] << ", " << inV.mF32[1] << ", " << inV.mF32[2] << ", " << inV.mF32[3];
+
269 return inStream;
+
270 }
+
+
271
+
272 union
+
273 {
+ +
275 float mF32[4];
+
276 };
+
277};
+
+
278
+
279static_assert(is_trivial<Vec4>(), "Is supposed to be a trivial type!");
+
280
+ +
282
+
283#include "Vec4.inl"
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:451
+ +
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
JPH_INLINE float Tan(float inX)
Tangent of x (input in radians)
Definition Trigonometry.h:28
+
JPH_INLINE float ACos(float inX)
Definition Trigonometry.h:42
+
JPH_INLINE float ASin(float inX)
Definition Trigonometry.h:35
+
JPH_INLINE float ATan(float inX)
Arc tangent of x (returns value in the range [-PI / 2, PI / 2])
Definition Trigonometry.h:68
+ +
Class that holds 4 float values. Convert to Vec4 to perform calculations.
Definition Float4.h:11
+
Definition UVec4.h:12
+
Definition Vec3.h:17
+
Definition Vec4.h:14
+
float mF32[4]
Definition Vec4.h:275
+
Vec4()=default
Constructor.
+
JPH_INLINE void SetW(float inW)
Definition Vec4.h:123
+
JPH_INLINE float GetW() const
Definition Vec4.h:116
+
JPH_INLINE Vec4(Type inRHS)
Definition Vec4.h:33
+
JPH_INLINE void SetZ(float inZ)
Definition Vec4.h:122
+
Vec4(const Vec4 &inRHS)=default
+
static JPH_INLINE Vec4 sGatherFloat4(const float *inBase, UVec4Arg inOffsets)
Gather 4 floats from memory at inBase + inOffsets[i] * Scale.
+
JPH_INLINE void SetY(float inY)
Definition Vec4.h:121
+
JPH_INLINE void SetX(float inX)
Set individual components.
Definition Vec4.h:120
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec4.h:113
+
{ float mData[4] Type
Definition Vec4.h:24
+
JPH_INLINE Vec4 Swizzle() const
Swizzle the elements in inV.
+
Type mValue
Definition Vec4.h:274
+
JPH_INLINE float GetZ() const
Definition Vec4.h:115
+
JPH_INLINE void Set(float inX, float inY, float inZ, float inW)
Set all components.
Definition Vec4.h:126
+
JPH_INLINE float GetY() const
Definition Vec4.h:114
+
+
+ + + + diff --git a/_vec4_8inl.html b/_vec4_8inl.html new file mode 100644 index 000000000..3ddad52c8 --- /dev/null +++ b/_vec4_8inl.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec4.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Vec4.inl File Reference
+
+
+
#include <Jolt/Math/Trigonometry.h>
+#include <Jolt/Math/Vec3.h>
+#include <Jolt/Math/UVec4.h>
+
+

Go to the source code of this file.

+ + + + + +

+Functions

Vec4 operator* (float inV1, Vec4Arg inV2)
 Multiply vector with float.
 
+

Function Documentation

+ +

◆ operator*()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Vec4 operator* (float inV1,
Vec4Arg inV2 
)
+
+ +

Multiply vector with float.

+ +
+
+
+
+ + + + diff --git a/_vec4_8inl.js b/_vec4_8inl.js new file mode 100644 index 000000000..c3fb4b466 --- /dev/null +++ b/_vec4_8inl.js @@ -0,0 +1,4 @@ +var _vec4_8inl = +[ + [ "operator*", "_vec4_8inl.html#a90fa6632d6bf46f715945f2ae7b2e2ec", null ] +]; \ No newline at end of file diff --git a/_vec4_8inl_source.html b/_vec4_8inl_source.html new file mode 100644 index 000000000..f95b9baee --- /dev/null +++ b/_vec4_8inl_source.html @@ -0,0 +1,1333 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec4.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vec4.inl
+
+
+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
+ +
6#include <Jolt/Math/Vec3.h>
+
7#include <Jolt/Math/UVec4.h>
+
8
+ +
10
+
11// Constructor
+
+ +
13 mValue(inRHS.mValue)
+
14{
+
15}
+
+
16
+
+
17Vec4::Vec4(Vec3Arg inRHS, float inW)
+
18{
+
19#if defined(JPH_USE_SSE4_1)
+
20 mValue = _mm_blend_ps(inRHS.mValue, _mm_set1_ps(inW), 8);
+
21#elif defined(JPH_USE_NEON)
+
22 mValue = vsetq_lane_f32(inW, inRHS.mValue, 3);
+
23#else
+
24 for (int i = 0; i < 3; i++)
+
25 mF32[i] = inRHS.mF32[i];
+
26 mF32[3] = inW;
+
27#endif
+
28}
+
+
29
+
+
30Vec4::Vec4(float inX, float inY, float inZ, float inW)
+
31{
+
32#if defined(JPH_USE_SSE)
+
33 mValue = _mm_set_ps(inW, inZ, inY, inX);
+
34#elif defined(JPH_USE_NEON)
+
35 uint32x2_t xy = vcreate_u32(static_cast<uint64>(BitCast<uint32>(inX)) | (static_cast<uint64>(BitCast<uint32>(inY)) << 32));
+
36 uint32x2_t zw = vcreate_u32(static_cast<uint64>(BitCast<uint32>(inZ)) | (static_cast<uint64>(BitCast<uint32>(inW)) << 32));
+
37 mValue = vreinterpretq_f32_u32(vcombine_u32(xy, zw));
+
38#else
+
39 mF32[0] = inX;
+
40 mF32[1] = inY;
+
41 mF32[2] = inZ;
+
42 mF32[3] = inW;
+
43#endif
+
44}
+
+
45
+
46template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+
+ +
48{
+
49 static_assert(SwizzleX <= 3, "SwizzleX template parameter out of range");
+
50 static_assert(SwizzleY <= 3, "SwizzleY template parameter out of range");
+
51 static_assert(SwizzleZ <= 3, "SwizzleZ template parameter out of range");
+
52 static_assert(SwizzleW <= 3, "SwizzleW template parameter out of range");
+
53
+
54#if defined(JPH_USE_SSE)
+
55 return _mm_shuffle_ps(mValue, mValue, _MM_SHUFFLE(SwizzleW, SwizzleZ, SwizzleY, SwizzleX));
+
56#elif defined(JPH_USE_NEON)
+
57 return JPH_NEON_SHUFFLE_F32x4(mValue, mValue, SwizzleX, SwizzleY, SwizzleZ, SwizzleW);
+
58#else
+
59 return Vec4(mF32[SwizzleX], mF32[SwizzleY], mF32[SwizzleZ], mF32[SwizzleW]);
+
60#endif
+
61}
+
+
62
+
+ +
64{
+
65#if defined(JPH_USE_SSE)
+
66 return _mm_setzero_ps();
+
67#elif defined(JPH_USE_NEON)
+
68 return vdupq_n_f32(0);
+
69#else
+
70 return Vec4(0, 0, 0, 0);
+
71#endif
+
72}
+
+
73
+
+ +
75{
+
76#if defined(JPH_USE_SSE)
+
77 return _mm_set1_ps(inV);
+
78#elif defined(JPH_USE_NEON)
+
79 return vdupq_n_f32(inV);
+
80#else
+
81 return Vec4(inV, inV, inV, inV);
+
82#endif
+
83}
+
+
84
+
+ +
86{
+
87 return sReplicate(numeric_limits<float>::quiet_NaN());
+
88}
+
+
89
+
+ +
91{
+
92#if defined(JPH_USE_SSE)
+
93 return _mm_loadu_ps(&inV->x);
+
94#elif defined(JPH_USE_NEON)
+
95 return vld1q_f32(&inV->x);
+
96#else
+
97 return Vec4(inV->x, inV->y, inV->z, inV->w);
+
98#endif
+
99}
+
+
100
+
+ +
102{
+
103#if defined(JPH_USE_SSE)
+
104 return _mm_load_ps(&inV->x);
+
105#elif defined(JPH_USE_NEON)
+
106 return vld1q_f32(&inV->x);
+
107#else
+
108 return Vec4(inV->x, inV->y, inV->z, inV->w);
+
109#endif
+
110}
+
+
111
+
112template <const int Scale>
+
+
113Vec4 Vec4::sGatherFloat4(const float *inBase, UVec4Arg inOffsets)
+
114{
+
115#if defined(JPH_USE_SSE)
+
116 #ifdef JPH_USE_AVX2
+
117 return _mm_i32gather_ps(inBase, inOffsets.mValue, Scale);
+
118 #else
+
119 const uint8 *base = reinterpret_cast<const uint8 *>(inBase);
+
120 Type x = _mm_load_ss(reinterpret_cast<const float *>(base + inOffsets.GetX() * Scale));
+
121 Type y = _mm_load_ss(reinterpret_cast<const float *>(base + inOffsets.GetY() * Scale));
+
122 Type xy = _mm_unpacklo_ps(x, y);
+
123 Type z = _mm_load_ss(reinterpret_cast<const float *>(base + inOffsets.GetZ() * Scale));
+
124 Type w = _mm_load_ss(reinterpret_cast<const float *>(base + inOffsets.GetW() * Scale));
+
125 Type zw = _mm_unpacklo_ps(z, w);
+
126 return _mm_movelh_ps(xy, zw);
+
127 #endif
+
128#else
+
129 const uint8 *base = reinterpret_cast<const uint8 *>(inBase);
+
130 float x = *reinterpret_cast<const float *>(base + inOffsets.GetX() * Scale);
+
131 float y = *reinterpret_cast<const float *>(base + inOffsets.GetY() * Scale);
+
132 float z = *reinterpret_cast<const float *>(base + inOffsets.GetZ() * Scale);
+
133 float w = *reinterpret_cast<const float *>(base + inOffsets.GetW() * Scale);
+
134 return Vec4(x, y, z, w);
+
135#endif
+
136}
+
+
137
+
+ +
139{
+
140#if defined(JPH_USE_SSE)
+
141 return _mm_min_ps(inV1.mValue, inV2.mValue);
+
142#elif defined(JPH_USE_NEON)
+
143 return vminq_f32(inV1.mValue, inV2.mValue);
+
144#else
+
145 return Vec4(min(inV1.mF32[0], inV2.mF32[0]),
+
146 min(inV1.mF32[1], inV2.mF32[1]),
+
147 min(inV1.mF32[2], inV2.mF32[2]),
+
148 min(inV1.mF32[3], inV2.mF32[3]));
+
149#endif
+
150}
+
+
151
+
+ +
153{
+
154#if defined(JPH_USE_SSE)
+
155 return _mm_max_ps(inV1.mValue, inV2.mValue);
+
156#elif defined(JPH_USE_NEON)
+
157 return vmaxq_f32(inV1.mValue, inV2.mValue);
+
158#else
+
159 return Vec4(max(inV1.mF32[0], inV2.mF32[0]),
+
160 max(inV1.mF32[1], inV2.mF32[1]),
+
161 max(inV1.mF32[2], inV2.mF32[2]),
+
162 max(inV1.mF32[3], inV2.mF32[3]));
+
163#endif
+
164}
+
+
165
+
+ +
167{
+
168#if defined(JPH_USE_SSE)
+
169 return _mm_castps_si128(_mm_cmpeq_ps(inV1.mValue, inV2.mValue));
+
170#elif defined(JPH_USE_NEON)
+
171 return vceqq_f32(inV1.mValue, inV2.mValue);
+
172#else
+
173 return UVec4(inV1.mF32[0] == inV2.mF32[0]? 0xffffffffu : 0,
+
174 inV1.mF32[1] == inV2.mF32[1]? 0xffffffffu : 0,
+
175 inV1.mF32[2] == inV2.mF32[2]? 0xffffffffu : 0,
+
176 inV1.mF32[3] == inV2.mF32[3]? 0xffffffffu : 0);
+
177#endif
+
178}
+
+
179
+
+ +
181{
+
182#if defined(JPH_USE_SSE)
+
183 return _mm_castps_si128(_mm_cmplt_ps(inV1.mValue, inV2.mValue));
+
184#elif defined(JPH_USE_NEON)
+
185 return vcltq_f32(inV1.mValue, inV2.mValue);
+
186#else
+
187 return UVec4(inV1.mF32[0] < inV2.mF32[0]? 0xffffffffu : 0,
+
188 inV1.mF32[1] < inV2.mF32[1]? 0xffffffffu : 0,
+
189 inV1.mF32[2] < inV2.mF32[2]? 0xffffffffu : 0,
+
190 inV1.mF32[3] < inV2.mF32[3]? 0xffffffffu : 0);
+
191#endif
+
192}
+
+
193
+
+ +
195{
+
196#if defined(JPH_USE_SSE)
+
197 return _mm_castps_si128(_mm_cmple_ps(inV1.mValue, inV2.mValue));
+
198#elif defined(JPH_USE_NEON)
+
199 return vcleq_f32(inV1.mValue, inV2.mValue);
+
200#else
+
201 return UVec4(inV1.mF32[0] <= inV2.mF32[0]? 0xffffffffu : 0,
+
202 inV1.mF32[1] <= inV2.mF32[1]? 0xffffffffu : 0,
+
203 inV1.mF32[2] <= inV2.mF32[2]? 0xffffffffu : 0,
+
204 inV1.mF32[3] <= inV2.mF32[3]? 0xffffffffu : 0);
+
205#endif
+
206}
+
+
207
+
+ +
209{
+
210#if defined(JPH_USE_SSE)
+
211 return _mm_castps_si128(_mm_cmpgt_ps(inV1.mValue, inV2.mValue));
+
212#elif defined(JPH_USE_NEON)
+
213 return vcgtq_f32(inV1.mValue, inV2.mValue);
+
214#else
+
215 return UVec4(inV1.mF32[0] > inV2.mF32[0]? 0xffffffffu : 0,
+
216 inV1.mF32[1] > inV2.mF32[1]? 0xffffffffu : 0,
+
217 inV1.mF32[2] > inV2.mF32[2]? 0xffffffffu : 0,
+
218 inV1.mF32[3] > inV2.mF32[3]? 0xffffffffu : 0);
+
219#endif
+
220}
+
+
221
+
+ +
223{
+
224#if defined(JPH_USE_SSE)
+
225 return _mm_castps_si128(_mm_cmpge_ps(inV1.mValue, inV2.mValue));
+
226#elif defined(JPH_USE_NEON)
+
227 return vcgeq_f32(inV1.mValue, inV2.mValue);
+
228#else
+
229 return UVec4(inV1.mF32[0] >= inV2.mF32[0]? 0xffffffffu : 0,
+
230 inV1.mF32[1] >= inV2.mF32[1]? 0xffffffffu : 0,
+
231 inV1.mF32[2] >= inV2.mF32[2]? 0xffffffffu : 0,
+
232 inV1.mF32[3] >= inV2.mF32[3]? 0xffffffffu : 0);
+
233#endif
+
234}
+
+
235
+
+ +
237{
+
238#if defined(JPH_USE_SSE)
+
239 #ifdef JPH_USE_FMADD
+
240 return _mm_fmadd_ps(inMul1.mValue, inMul2.mValue, inAdd.mValue);
+
241 #else
+
242 return _mm_add_ps(_mm_mul_ps(inMul1.mValue, inMul2.mValue), inAdd.mValue);
+
243 #endif
+
244#elif defined(JPH_USE_NEON)
+
245 return vmlaq_f32(inAdd.mValue, inMul1.mValue, inMul2.mValue);
+
246#else
+
247 return Vec4(inMul1.mF32[0] * inMul2.mF32[0] + inAdd.mF32[0],
+
248 inMul1.mF32[1] * inMul2.mF32[1] + inAdd.mF32[1],
+
249 inMul1.mF32[2] * inMul2.mF32[2] + inAdd.mF32[2],
+
250 inMul1.mF32[3] * inMul2.mF32[3] + inAdd.mF32[3]);
+
251#endif
+
252}
+
+
253
+
+ +
255{
+
256#if defined(JPH_USE_SSE4_1)
+
257 return _mm_blendv_ps(inV1.mValue, inV2.mValue, _mm_castsi128_ps(inControl.mValue));
+
258#elif defined(JPH_USE_NEON)
+
259 return vbslq_f32(vreinterpretq_u32_s32(vshrq_n_s32(vreinterpretq_s32_u32(inControl.mValue), 31)), inV2.mValue, inV1.mValue);
+
260#else
+
261 Vec4 result;
+
262 for (int i = 0; i < 4; i++)
+
263 result.mF32[i] = inControl.mU32[i] ? inV2.mF32[i] : inV1.mF32[i];
+
264 return result;
+
265#endif
+
266}
+
+
267
+
+ +
269{
+
270#if defined(JPH_USE_SSE)
+
271 return _mm_or_ps(inV1.mValue, inV2.mValue);
+
272#elif defined(JPH_USE_NEON)
+
273 return vreinterpretq_f32_u32(vorrq_u32(vreinterpretq_u32_f32(inV1.mValue), vreinterpretq_u32_f32(inV2.mValue)));
+
274#else
+ +
276#endif
+
277}
+
+
278
+
+ +
280{
+
281#if defined(JPH_USE_SSE)
+
282 return _mm_xor_ps(inV1.mValue, inV2.mValue);
+
283#elif defined(JPH_USE_NEON)
+
284 return vreinterpretq_f32_u32(veorq_u32(vreinterpretq_u32_f32(inV1.mValue), vreinterpretq_u32_f32(inV2.mValue)));
+
285#else
+ +
287#endif
+
288}
+
+
289
+
+ +
291{
+
292#if defined(JPH_USE_SSE)
+
293 return _mm_and_ps(inV1.mValue, inV2.mValue);
+
294#elif defined(JPH_USE_NEON)
+
295 return vreinterpretq_f32_u32(vandq_u32(vreinterpretq_u32_f32(inV1.mValue), vreinterpretq_u32_f32(inV2.mValue)));
+
296#else
+ +
298#endif
+
299}
+
+
300
+
+
301void Vec4::sSort4(Vec4 &ioValue, UVec4 &ioIndex)
+
302{
+
303 // Pass 1, test 1st vs 3rd, 2nd vs 4th
+ + +
306 UVec4 c1 = sLess(ioValue, v1).Swizzle<SWIZZLE_Z, SWIZZLE_W, SWIZZLE_Z, SWIZZLE_W>();
+
307 ioValue = sSelect(ioValue, v1, c1);
+
308 ioIndex = UVec4::sSelect(ioIndex, i1, c1);
+
309
+
310 // Pass 2, test 1st vs 2nd, 3rd vs 4th
+ + +
313 UVec4 c2 = sLess(ioValue, v2).Swizzle<SWIZZLE_Y, SWIZZLE_Y, SWIZZLE_W, SWIZZLE_W>();
+
314 ioValue = sSelect(ioValue, v2, c2);
+
315 ioIndex = UVec4::sSelect(ioIndex, i2, c2);
+
316
+
317 // Pass 3, test 2nd vs 3rd component
+ + +
320 UVec4 c3 = sLess(ioValue, v3).Swizzle<SWIZZLE_X, SWIZZLE_Z, SWIZZLE_Z, SWIZZLE_W>();
+
321 ioValue = sSelect(ioValue, v3, c3);
+
322 ioIndex = UVec4::sSelect(ioIndex, i3, c3);
+
323}
+
+
324
+
+
325void Vec4::sSort4Reverse(Vec4 &ioValue, UVec4 &ioIndex)
+
326{
+
327 // Pass 1, test 1st vs 3rd, 2nd vs 4th
+ + + +
331 ioValue = sSelect(ioValue, v1, c1);
+
332 ioIndex = UVec4::sSelect(ioIndex, i1, c1);
+
333
+
334 // Pass 2, test 1st vs 2nd, 3rd vs 4th
+ + + +
338 ioValue = sSelect(ioValue, v2, c2);
+
339 ioIndex = UVec4::sSelect(ioIndex, i2, c2);
+
340
+
341 // Pass 3, test 2nd vs 3rd component
+ + + +
345 ioValue = sSelect(ioValue, v3, c3);
+
346 ioIndex = UVec4::sSelect(ioIndex, i3, c3);
+
347}
+
+
348
+
+ +
350{
+
351 return sEquals(*this, inV2).TestAllTrue();
+
352}
+
+
353
+
+
354bool Vec4::IsClose(Vec4Arg inV2, float inMaxDistSq) const
+
355{
+
356 return (inV2 - *this).LengthSq() <= inMaxDistSq;
+
357}
+
+
358
+
+
359bool Vec4::IsNormalized(float inTolerance) const
+
360{
+
361 return abs(LengthSq() - 1.0f) <= inTolerance;
+
362}
+
+
363
+
+
364bool Vec4::IsNaN() const
+
365{
+
366#if defined(JPH_USE_AVX512)
+
367 return _mm_fpclass_ps_mask(mValue, 0b10000001) != 0;
+
368#elif defined(JPH_USE_SSE)
+
369 return _mm_movemask_ps(_mm_cmpunord_ps(mValue, mValue)) != 0;
+
370#elif defined(JPH_USE_NEON)
+
371 uint32x4_t is_equal = vceqq_f32(mValue, mValue); // If a number is not equal to itself it's a NaN
+
372 return vaddvq_u32(vshrq_n_u32(is_equal, 31)) != 4;
+
373#else
+
374 return isnan(mF32[0]) || isnan(mF32[1]) || isnan(mF32[2]) || isnan(mF32[3]);
+
375#endif
+
376}
+
+
377
+
+ +
379{
+
380#if defined(JPH_USE_SSE)
+
381 return _mm_mul_ps(mValue, inV2.mValue);
+
382#elif defined(JPH_USE_NEON)
+
383 return vmulq_f32(mValue, inV2.mValue);
+
384#else
+
385 return Vec4(mF32[0] * inV2.mF32[0],
+
386 mF32[1] * inV2.mF32[1],
+
387 mF32[2] * inV2.mF32[2],
+
388 mF32[3] * inV2.mF32[3]);
+
389#endif
+
390}
+
+
391
+
+
392Vec4 Vec4::operator * (float inV2) const
+
393{
+
394#if defined(JPH_USE_SSE)
+
395 return _mm_mul_ps(mValue, _mm_set1_ps(inV2));
+
396#elif defined(JPH_USE_NEON)
+
397 return vmulq_n_f32(mValue, inV2);
+
398#else
+
399 return Vec4(mF32[0] * inV2, mF32[1] * inV2, mF32[2] * inV2, mF32[3] * inV2);
+
400#endif
+
401}
+
+
402
+
+
404Vec4 operator * (float inV1, Vec4Arg inV2)
+
405{
+
406#if defined(JPH_USE_SSE)
+
407 return _mm_mul_ps(_mm_set1_ps(inV1), inV2.mValue);
+
408#elif defined(JPH_USE_NEON)
+
409 return vmulq_n_f32(inV2.mValue, inV1);
+
410#else
+
411 return Vec4(inV1 * inV2.mF32[0],
+
412 inV1 * inV2.mF32[1],
+
413 inV1 * inV2.mF32[2],
+
414 inV1 * inV2.mF32[3]);
+
415#endif
+
416}
+
+
417
+
+
418Vec4 Vec4::operator / (float inV2) const
+
419{
+
420#if defined(JPH_USE_SSE)
+
421 return _mm_div_ps(mValue, _mm_set1_ps(inV2));
+
422#elif defined(JPH_USE_NEON)
+
423 return vdivq_f32(mValue, vdupq_n_f32(inV2));
+
424#else
+
425 return Vec4(mF32[0] / inV2, mF32[1] / inV2, mF32[2] / inV2, mF32[3] / inV2);
+
426#endif
+
427}
+
+
428
+
+ +
430{
+
431#if defined(JPH_USE_SSE)
+
432 mValue = _mm_mul_ps(mValue, _mm_set1_ps(inV2));
+
433#elif defined(JPH_USE_NEON)
+
434 mValue = vmulq_n_f32(mValue, inV2);
+
435#else
+
436 for (int i = 0; i < 4; ++i)
+
437 mF32[i] *= inV2;
+
438#endif
+
439 return *this;
+
440}
+
+
441
+
+ +
443{
+
444#if defined(JPH_USE_SSE)
+
445 mValue = _mm_mul_ps(mValue, inV2.mValue);
+
446#elif defined(JPH_USE_NEON)
+
447 mValue = vmulq_f32(mValue, inV2.mValue);
+
448#else
+
449 for (int i = 0; i < 4; ++i)
+
450 mF32[i] *= inV2.mF32[i];
+
451#endif
+
452 return *this;
+
453}
+
+
454
+
+ +
456{
+
457#if defined(JPH_USE_SSE)
+
458 mValue = _mm_div_ps(mValue, _mm_set1_ps(inV2));
+
459#elif defined(JPH_USE_NEON)
+
460 mValue = vdivq_f32(mValue, vdupq_n_f32(inV2));
+
461#else
+
462 for (int i = 0; i < 4; ++i)
+
463 mF32[i] /= inV2;
+
464#endif
+
465 return *this;
+
466}
+
+
467
+
+ +
469{
+
470#if defined(JPH_USE_SSE)
+
471 return _mm_add_ps(mValue, inV2.mValue);
+
472#elif defined(JPH_USE_NEON)
+
473 return vaddq_f32(mValue, inV2.mValue);
+
474#else
+
475 return Vec4(mF32[0] + inV2.mF32[0],
+
476 mF32[1] + inV2.mF32[1],
+
477 mF32[2] + inV2.mF32[2],
+
478 mF32[3] + inV2.mF32[3]);
+
479#endif
+
480}
+
+
481
+
+ +
483{
+
484#if defined(JPH_USE_SSE)
+
485 mValue = _mm_add_ps(mValue, inV2.mValue);
+
486#elif defined(JPH_USE_NEON)
+
487 mValue = vaddq_f32(mValue, inV2.mValue);
+
488#else
+
489 for (int i = 0; i < 4; ++i)
+
490 mF32[i] += inV2.mF32[i];
+
491#endif
+
492 return *this;
+
493}
+
+
494
+
+ +
496{
+
497#if defined(JPH_USE_SSE)
+
498 return _mm_sub_ps(_mm_setzero_ps(), mValue);
+
499#elif defined(JPH_USE_NEON)
+
500 #ifdef JPH_CROSS_PLATFORM_DETERMINISTIC
+
501 return vsubq_f32(vdupq_n_f32(0), mValue);
+
502 #else
+
503 return vnegq_f32(mValue);
+
504 #endif
+
505#else
+
506 #ifdef JPH_CROSS_PLATFORM_DETERMINISTIC
+
507 return Vec4(0.0f - mF32[0], 0.0f - mF32[1], 0.0f - mF32[2], 0.0f - mF32[3]);
+
508 #else
+
509 return Vec4(-mF32[0], -mF32[1], -mF32[2], -mF32[3]);
+
510 #endif
+
511#endif
+
512}
+
+
513
+
+ +
515{
+
516#if defined(JPH_USE_SSE)
+
517 return _mm_sub_ps(mValue, inV2.mValue);
+
518#elif defined(JPH_USE_NEON)
+
519 return vsubq_f32(mValue, inV2.mValue);
+
520#else
+
521 return Vec4(mF32[0] - inV2.mF32[0],
+
522 mF32[1] - inV2.mF32[1],
+
523 mF32[2] - inV2.mF32[2],
+
524 mF32[3] - inV2.mF32[3]);
+
525#endif
+
526}
+
+
527
+
+ +
529{
+
530#if defined(JPH_USE_SSE)
+
531 mValue = _mm_sub_ps(mValue, inV2.mValue);
+
532#elif defined(JPH_USE_NEON)
+
533 mValue = vsubq_f32(mValue, inV2.mValue);
+
534#else
+
535 for (int i = 0; i < 4; ++i)
+
536 mF32[i] -= inV2.mF32[i];
+
537#endif
+
538 return *this;
+
539}
+
+
540
+
+ +
542{
+
543#if defined(JPH_USE_SSE)
+
544 return _mm_div_ps(mValue, inV2.mValue);
+
545#elif defined(JPH_USE_NEON)
+
546 return vdivq_f32(mValue, inV2.mValue);
+
547#else
+
548 return Vec4(mF32[0] / inV2.mF32[0],
+
549 mF32[1] / inV2.mF32[1],
+
550 mF32[2] / inV2.mF32[2],
+
551 mF32[3] / inV2.mF32[3]);
+
552#endif
+
553}
+
+
554
+
+ +
556{
+
557#if defined(JPH_USE_SSE)
+
558 return _mm_shuffle_ps(mValue, mValue, _MM_SHUFFLE(0, 0, 0, 0));
+
559#elif defined(JPH_USE_NEON)
+
560 return vdupq_laneq_f32(mValue, 0);
+
561#else
+
562 return Vec4(mF32[0], mF32[0], mF32[0], mF32[0]);
+
563#endif
+
564}
+
+
565
+
+ +
567{
+
568#if defined(JPH_USE_SSE)
+
569 return _mm_shuffle_ps(mValue, mValue, _MM_SHUFFLE(1, 1, 1, 1));
+
570#elif defined(JPH_USE_NEON)
+
571 return vdupq_laneq_f32(mValue, 1);
+
572#else
+
573 return Vec4(mF32[1], mF32[1], mF32[1], mF32[1]);
+
574#endif
+
575}
+
+
576
+
+ +
578{
+
579#if defined(JPH_USE_SSE)
+
580 return _mm_shuffle_ps(mValue, mValue, _MM_SHUFFLE(2, 2, 2, 2));
+
581#elif defined(JPH_USE_NEON)
+
582 return vdupq_laneq_f32(mValue, 2);
+
583#else
+
584 return Vec4(mF32[2], mF32[2], mF32[2], mF32[2]);
+
585#endif
+
586}
+
+
587
+
+ +
589{
+
590#if defined(JPH_USE_SSE)
+
591 return _mm_shuffle_ps(mValue, mValue, _MM_SHUFFLE(3, 3, 3, 3));
+
592#elif defined(JPH_USE_NEON)
+
593 return vdupq_laneq_f32(mValue, 3);
+
594#else
+
595 return Vec4(mF32[3], mF32[3], mF32[3], mF32[3]);
+
596#endif
+
597}
+
+
598
+
+ +
600{
+
601#if defined(JPH_USE_AVX512)
+
602 return _mm_range_ps(mValue, mValue, 0b1000);
+
603#elif defined(JPH_USE_SSE)
+
604 return _mm_max_ps(_mm_sub_ps(_mm_setzero_ps(), mValue), mValue);
+
605#elif defined(JPH_USE_NEON)
+
606 return vabsq_f32(mValue);
+
607#else
+
608 return Vec4(abs(mF32[0]), abs(mF32[1]), abs(mF32[2]), abs(mF32[3]));
+
609#endif
+
610}
+
+
611
+
+ +
613{
+
614 return sReplicate(1.0f) / mValue;
+
615}
+
+
616
+
+ +
618{
+
619#if defined(JPH_USE_SSE4_1)
+
620 return _mm_dp_ps(mValue, inV2.mValue, 0xff);
+
621#elif defined(JPH_USE_NEON)
+
622 float32x4_t mul = vmulq_f32(mValue, inV2.mValue);
+
623 return vdupq_n_f32(vaddvq_f32(mul));
+
624#else
+
625 // Brackets placed so that the order is consistent with the vectorized version
+
626 return Vec4::sReplicate((mF32[0] * inV2.mF32[0] + mF32[1] * inV2.mF32[1]) + (mF32[2] * inV2.mF32[2] + mF32[3] * inV2.mF32[3]));
+
627#endif
+
628}
+
+
629
+
+
630float Vec4::Dot(Vec4Arg inV2) const
+
631{
+
632#if defined(JPH_USE_SSE4_1)
+
633 return _mm_cvtss_f32(_mm_dp_ps(mValue, inV2.mValue, 0xff));
+
634#elif defined(JPH_USE_NEON)
+
635 float32x4_t mul = vmulq_f32(mValue, inV2.mValue);
+
636 return vaddvq_f32(mul);
+
637#else
+
638 // Brackets placed so that the order is consistent with the vectorized version
+
639 return (mF32[0] * inV2.mF32[0] + mF32[1] * inV2.mF32[1]) + (mF32[2] * inV2.mF32[2] + mF32[3] * inV2.mF32[3]);
+
640#endif
+
641}
+
+
642
+
+
643float Vec4::LengthSq() const
+
644{
+
645#if defined(JPH_USE_SSE4_1)
+
646 return _mm_cvtss_f32(_mm_dp_ps(mValue, mValue, 0xff));
+
647#elif defined(JPH_USE_NEON)
+
648 float32x4_t mul = vmulq_f32(mValue, mValue);
+
649 return vaddvq_f32(mul);
+
650#else
+
651 // Brackets placed so that the order is consistent with the vectorized version
+
652 return (mF32[0] * mF32[0] + mF32[1] * mF32[1]) + (mF32[2] * mF32[2] + mF32[3] * mF32[3]);
+
653#endif
+
654}
+
+
655
+
+
656float Vec4::Length() const
+
657{
+
658#if defined(JPH_USE_SSE4_1)
+
659 return _mm_cvtss_f32(_mm_sqrt_ss(_mm_dp_ps(mValue, mValue, 0xff)));
+
660#elif defined(JPH_USE_NEON)
+
661 float32x4_t mul = vmulq_f32(mValue, mValue);
+
662 float32x2_t sum = vdup_n_f32(vaddvq_f32(mul));
+
663 return vget_lane_f32(vsqrt_f32(sum), 0);
+
664#else
+
665 // Brackets placed so that the order is consistent with the vectorized version
+
666 return sqrt((mF32[0] * mF32[0] + mF32[1] * mF32[1]) + (mF32[2] * mF32[2] + mF32[3] * mF32[3]));
+
667#endif
+
668}
+
+
669
+
+ +
671{
+
672#if defined(JPH_USE_SSE)
+
673 return _mm_sqrt_ps(mValue);
+
674#elif defined(JPH_USE_NEON)
+
675 return vsqrtq_f32(mValue);
+
676#else
+
677 return Vec4(sqrt(mF32[0]), sqrt(mF32[1]), sqrt(mF32[2]), sqrt(mF32[3]));
+
678#endif
+
679}
+
+
680
+
681
+
+ +
683{
+
684#if defined(JPH_USE_AVX512)
+
685 return _mm_fixupimm_ps(mValue, mValue, _mm_set1_epi32(0xA9A90A00), 0);
+
686#elif defined(JPH_USE_SSE)
+
687 Type minus_one = _mm_set1_ps(-1.0f);
+
688 Type one = _mm_set1_ps(1.0f);
+
689 return _mm_or_ps(_mm_and_ps(mValue, minus_one), one);
+
690#elif defined(JPH_USE_NEON)
+
691 Type minus_one = vdupq_n_f32(-1.0f);
+
692 Type one = vdupq_n_f32(1.0f);
+
693 return vreinterpretq_f32_u32(vorrq_u32(vandq_u32(vreinterpretq_u32_f32(mValue), vreinterpretq_u32_f32(minus_one)), vreinterpretq_u32_f32(one)));
+
694#else
+
695 return Vec4(std::signbit(mF32[0])? -1.0f : 1.0f,
+
696 std::signbit(mF32[1])? -1.0f : 1.0f,
+
697 std::signbit(mF32[2])? -1.0f : 1.0f,
+
698 std::signbit(mF32[3])? -1.0f : 1.0f);
+
699#endif
+
700}
+
+
701
+
+ +
703{
+
704#if defined(JPH_USE_SSE4_1)
+
705 return _mm_div_ps(mValue, _mm_sqrt_ps(_mm_dp_ps(mValue, mValue, 0xff)));
+
706#elif defined(JPH_USE_NEON)
+
707 float32x4_t mul = vmulq_f32(mValue, mValue);
+
708 float32x4_t sum = vdupq_n_f32(vaddvq_f32(mul));
+
709 return vdivq_f32(mValue, vsqrtq_f32(sum));
+
710#else
+
711 return *this / Length();
+
712#endif
+
713}
+
+
714
+
+
715void Vec4::StoreFloat4(Float4 *outV) const
+
716{
+
717#if defined(JPH_USE_SSE)
+
718 _mm_storeu_ps(&outV->x, mValue);
+
719#elif defined(JPH_USE_NEON)
+
720 vst1q_f32(&outV->x, mValue);
+
721#else
+
722 for (int i = 0; i < 4; ++i)
+
723 (&outV->x)[i] = mF32[i];
+
724#endif
+
725}
+
+
726
+
+ +
728{
+
729#if defined(JPH_USE_SSE)
+
730 return _mm_cvttps_epi32(mValue);
+
731#elif defined(JPH_USE_NEON)
+
732 return vcvtq_u32_f32(mValue);
+
733#else
+
734 return UVec4(uint32(mF32[0]), uint32(mF32[1]), uint32(mF32[2]), uint32(mF32[3]));
+
735#endif
+
736}
+
+
737
+
+ +
739{
+
740#if defined(JPH_USE_SSE)
+
741 return UVec4(_mm_castps_si128(mValue));
+
742#elif defined(JPH_USE_NEON)
+
743 return vreinterpretq_u32_f32(mValue);
+
744#else
+
745 return *reinterpret_cast<const UVec4 *>(this);
+
746#endif
+
747}
+
+
748
+
+ +
750{
+
751#if defined(JPH_USE_SSE)
+
752 return _mm_movemask_ps(mValue);
+
753#elif defined(JPH_USE_NEON)
+
754 int32x4_t shift = JPH_NEON_INT32x4(0, 1, 2, 3);
+
755 return vaddvq_u32(vshlq_u32(vshrq_n_u32(vreinterpretq_u32_f32(mValue), 31), shift));
+
756#else
+
757 return (std::signbit(mF32[0])? 1 : 0) | (std::signbit(mF32[1])? 2 : 0) | (std::signbit(mF32[2])? 4 : 0) | (std::signbit(mF32[3])? 8 : 0);
+
758#endif
+
759}
+
+
760
+
+
761float Vec4::ReduceMin() const
+
762{
+
763 Vec4 v = sMin(mValue, Swizzle<SWIZZLE_Y, SWIZZLE_UNUSED, SWIZZLE_W, SWIZZLE_UNUSED>());
+ +
765 return v.GetX();
+
766}
+
+
767
+
+
768float Vec4::ReduceMax() const
+
769{
+
770 Vec4 v = sMax(mValue, Swizzle<SWIZZLE_Y, SWIZZLE_UNUSED, SWIZZLE_W, SWIZZLE_UNUSED>());
+ +
772 return v.GetX();
+
773}
+
+
774
+
+
775void Vec4::SinCos(Vec4 &outSin, Vec4 &outCos) const
+
776{
+
777 // Implementation based on sinf.c from the cephes library, combines sinf and cosf in a single function, changes octants to quadrants and vectorizes it
+
778 // Original implementation by Stephen L. Moshier (See: http://www.moshier.net/)
+
779
+
780 // Make argument positive and remember sign for sin only since cos is symmetric around x (highest bit of a float is the sign bit)
+
781 UVec4 sin_sign = UVec4::sAnd(ReinterpretAsInt(), UVec4::sReplicate(0x80000000U));
+
782 Vec4 x = Vec4::sXor(*this, sin_sign.ReinterpretAsFloat());
+
783
+
784 // x / (PI / 2) rounded to nearest int gives us the quadrant closest to x
+
785 UVec4 quadrant = (0.6366197723675814f * x + Vec4::sReplicate(0.5f)).ToInt();
+
786
+
787 // Make x relative to the closest quadrant.
+
788 // This does x = x - quadrant * PI / 2 using a two step Cody-Waite argument reduction.
+
789 // This improves the accuracy of the result by avoiding loss of significant bits in the subtraction.
+
790 // We start with x = x - quadrant * PI / 2, PI / 2 in hexadecimal notation is 0x3fc90fdb, we remove the lowest 16 bits to
+
791 // get 0x3fc90000 (= 1.5703125) this means we can now multiply with a number of up to 2^16 without losing any bits.
+
792 // This leaves us with: x = (x - quadrant * 1.5703125) - quadrant * (PI / 2 - 1.5703125).
+
793 // PI / 2 - 1.5703125 in hexadecimal is 0x39fdaa22, stripping the lowest 12 bits we get 0x39fda000 (= 0.0004837512969970703125)
+
794 // This leaves uw with: x = ((x - quadrant * 1.5703125) - quadrant * 0.0004837512969970703125) - quadrant * (PI / 2 - 1.5703125 - 0.0004837512969970703125)
+
795 // See: https://stackoverflow.com/questions/42455143/sine-cosine-modular-extended-precision-arithmetic
+
796 // After this we have x in the range [-PI / 4, PI / 4].
+
797 Vec4 float_quadrant = quadrant.ToFloat();
+
798 x = ((x - float_quadrant * 1.5703125f) - float_quadrant * 0.0004837512969970703125f) - float_quadrant * 7.549789948768648e-8f;
+
799
+
800 // Calculate x2 = x^2
+
801 Vec4 x2 = x * x;
+
802
+
803 // Taylor expansion:
+
804 // Cos(x) = 1 - x^2/2! + x^4/4! - x^6/6! + x^8/8! + ... = (((x2/8!- 1/6!) * x2 + 1/4!) * x2 - 1/2!) * x2 + 1
+
805 Vec4 taylor_cos = ((2.443315711809948e-5f * x2 - Vec4::sReplicate(1.388731625493765e-3f)) * x2 + Vec4::sReplicate(4.166664568298827e-2f)) * x2 * x2 - 0.5f * x2 + Vec4::sReplicate(1.0f);
+
806 // Sin(x) = x - x^3/3! + x^5/5! - x^7/7! + ... = ((-x2/7! + 1/5!) * x2 - 1/3!) * x2 * x + x
+
807 Vec4 taylor_sin = ((-1.9515295891e-4f * x2 + Vec4::sReplicate(8.3321608736e-3f)) * x2 - Vec4::sReplicate(1.6666654611e-1f)) * x2 * x + x;
+
808
+
809 // The lowest 2 bits of quadrant indicate the quadrant that we are in.
+
810 // Let x be the original input value and x' our value that has been mapped to the range [-PI / 4, PI / 4].
+
811 // since cos(x) = sin(x - PI / 2) and since we want to use the Taylor expansion as close as possible to 0,
+
812 // we can alternate between using the Taylor expansion for sin and cos according to the following table:
+
813 //
+
814 // quadrant sin(x) cos(x)
+
815 // XXX00b sin(x') cos(x')
+
816 // XXX01b cos(x') -sin(x')
+
817 // XXX10b -sin(x') -cos(x')
+
818 // XXX11b -cos(x') sin(x')
+
819 //
+
820 // So: sin_sign = bit2, cos_sign = bit1 ^ bit2, bit1 determines if we use sin or cos Taylor expansion
+
821 UVec4 bit1 = quadrant.LogicalShiftLeft<31>();
+
822 UVec4 bit2 = UVec4::sAnd(quadrant.LogicalShiftLeft<30>(), UVec4::sReplicate(0x80000000U));
+
823
+
824 // Select which one of the results is sin and which one is cos
+
825 Vec4 s = Vec4::sSelect(taylor_sin, taylor_cos, bit1);
+
826 Vec4 c = Vec4::sSelect(taylor_cos, taylor_sin, bit1);
+
827
+
828 // Update the signs
+
829 sin_sign = UVec4::sXor(sin_sign, bit2);
+
830 UVec4 cos_sign = UVec4::sXor(bit1, bit2);
+
831
+
832 // Correct the signs
+
833 outSin = Vec4::sXor(s, sin_sign.ReinterpretAsFloat());
+
834 outCos = Vec4::sXor(c, cos_sign.ReinterpretAsFloat());
+
835}
+
+
836
+
+ +
838{
+
839 // Implementation based on tanf.c from the cephes library, see Vec4::SinCos for further details
+
840 // Original implementation by Stephen L. Moshier (See: http://www.moshier.net/)
+
841
+
842 // Make argument positive
+
843 UVec4 tan_sign = UVec4::sAnd(ReinterpretAsInt(), UVec4::sReplicate(0x80000000U));
+
844 Vec4 x = Vec4::sXor(*this, tan_sign.ReinterpretAsFloat());
+
845
+
846 // x / (PI / 2) rounded to nearest int gives us the quadrant closest to x
+
847 UVec4 quadrant = (0.6366197723675814f * x + Vec4::sReplicate(0.5f)).ToInt();
+
848
+
849 // Remap x to range [-PI / 4, PI / 4], see Vec4::SinCos
+
850 Vec4 float_quadrant = quadrant.ToFloat();
+
851 x = ((x - float_quadrant * 1.5703125f) - float_quadrant * 0.0004837512969970703125f) - float_quadrant * 7.549789948768648e-8f;
+
852
+
853 // Calculate x2 = x^2
+
854 Vec4 x2 = x * x;
+
855
+
856 // Roughly equivalent to the Taylor expansion:
+
857 // Tan(x) = x + x^3/3 + 2*x^5/15 + 17*x^7/315 + 62*x^9/2835 + ...
+
858 Vec4 tan =
+
859 (((((9.38540185543e-3f * x2 + Vec4::sReplicate(3.11992232697e-3f)) * x2 + Vec4::sReplicate(2.44301354525e-2f)) * x2
+
860 + Vec4::sReplicate(5.34112807005e-2f)) * x2 + Vec4::sReplicate(1.33387994085e-1f)) * x2 + Vec4::sReplicate(3.33331568548e-1f)) * x2 * x + x;
+
861
+
862 // For the 2nd and 4th quadrant we need to invert the value
+
863 UVec4 bit1 = quadrant.LogicalShiftLeft<31>();
+
864 tan = Vec4::sSelect(tan, Vec4::sReplicate(-1.0f) / (tan JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED(+ Vec4::sReplicate(FLT_MIN))), bit1); // Add small epsilon to prevent div by zero, works because tan is always positive
+
865
+
866 // Put the sign back
+
867 return Vec4::sXor(tan, tan_sign.ReinterpretAsFloat());
+
868}
+
+
869
+
+ +
871{
+
872 // Implementation based on asinf.c from the cephes library
+
873 // Original implementation by Stephen L. Moshier (See: http://www.moshier.net/)
+
874
+
875 // Make argument positive
+
876 UVec4 asin_sign = UVec4::sAnd(ReinterpretAsInt(), UVec4::sReplicate(0x80000000U));
+
877 Vec4 a = Vec4::sXor(*this, asin_sign.ReinterpretAsFloat());
+
878
+
879 // ASin is not defined outside the range [-1, 1] but it often happens that a value is slightly above 1 so we just clamp here
+
880 a = Vec4::sMin(a, Vec4::sReplicate(1.0f));
+
881
+
882 // When |x| <= 0.5 we use the asin approximation as is
+
883 Vec4 z1 = a * a;
+
884 Vec4 x1 = a;
+
885
+
886 // When |x| > 0.5 we use the identity asin(x) = PI / 2 - 2 * asin(sqrt((1 - x) / 2))
+
887 Vec4 z2 = 0.5f * (Vec4::sReplicate(1.0f) - a);
+
888 Vec4 x2 = z2.Sqrt();
+
889
+
890 // Select which of the two situations we have
+
891 UVec4 greater = Vec4::sGreater(a, Vec4::sReplicate(0.5f));
+
892 Vec4 z = Vec4::sSelect(z1, z2, greater);
+
893 Vec4 x = Vec4::sSelect(x1, x2, greater);
+
894
+
895 // Polynomial approximation of asin
+
896 z = ((((4.2163199048e-2f * z + Vec4::sReplicate(2.4181311049e-2f)) * z + Vec4::sReplicate(4.5470025998e-2f)) * z + Vec4::sReplicate(7.4953002686e-2f)) * z + Vec4::sReplicate(1.6666752422e-1f)) * z * x + x;
+
897
+
898 // If |x| > 0.5 we need to apply the remainder of the identity above
+
899 z = Vec4::sSelect(z, Vec4::sReplicate(0.5f * JPH_PI) - (z + z), greater);
+
900
+
901 // Put the sign back
+
902 return Vec4::sXor(z, asin_sign.ReinterpretAsFloat());
+
903}
+
+
904
+
+ +
906{
+
907 // Not the most accurate, but simple
+
908 return Vec4::sReplicate(0.5f * JPH_PI) - ASin();
+
909}
+
+
910
+
+ +
912{
+
913 // Implementation based on atanf.c from the cephes library
+
914 // Original implementation by Stephen L. Moshier (See: http://www.moshier.net/)
+
915
+
916 // Make argument positive
+
917 UVec4 atan_sign = UVec4::sAnd(ReinterpretAsInt(), UVec4::sReplicate(0x80000000U));
+
918 Vec4 x = Vec4::sXor(*this, atan_sign.ReinterpretAsFloat());
+
919 Vec4 y = Vec4::sZero();
+
920
+
921 // If x > Tan(PI / 8)
+
922 UVec4 greater1 = Vec4::sGreater(x, Vec4::sReplicate(0.4142135623730950f));
+
923 Vec4 x1 = (x - Vec4::sReplicate(1.0f)) / (x + Vec4::sReplicate(1.0f));
+
924
+
925 // If x > Tan(3 * PI / 8)
+
926 UVec4 greater2 = Vec4::sGreater(x, Vec4::sReplicate(2.414213562373095f));
+
927 Vec4 x2 = Vec4::sReplicate(-1.0f) / (x JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED(+ Vec4::sReplicate(FLT_MIN))); // Add small epsilon to prevent div by zero, works because x is always positive
+
928
+
929 // Apply first if
+
930 x = Vec4::sSelect(x, x1, greater1);
+
931 y = Vec4::sSelect(y, Vec4::sReplicate(0.25f * JPH_PI), greater1);
+
932
+
933 // Apply second if
+
934 x = Vec4::sSelect(x, x2, greater2);
+
935 y = Vec4::sSelect(y, Vec4::sReplicate(0.5f * JPH_PI), greater2);
+
936
+
937 // Polynomial approximation
+
938 Vec4 z = x * x;
+
939 y += (((8.05374449538e-2f * z - Vec4::sReplicate(1.38776856032e-1f)) * z + Vec4::sReplicate(1.99777106478e-1f)) * z - Vec4::sReplicate(3.33329491539e-1f)) * z * x + x;
+
940
+
941 // Put the sign back
+
942 return Vec4::sXor(y, atan_sign.ReinterpretAsFloat());
+
943}
+
+
944
+
+ +
946{
+
947 UVec4 sign_mask = UVec4::sReplicate(0x80000000U);
+
948
+
949 // Determine absolute value and sign of y
+
950 UVec4 y_sign = UVec4::sAnd(inY.ReinterpretAsInt(), sign_mask);
+
951 Vec4 y_abs = Vec4::sXor(inY, y_sign.ReinterpretAsFloat());
+
952
+
953 // Determine absolute value and sign of x
+
954 UVec4 x_sign = UVec4::sAnd(inX.ReinterpretAsInt(), sign_mask);
+
955 Vec4 x_abs = Vec4::sXor(inX, x_sign.ReinterpretAsFloat());
+
956
+
957 // Always divide smallest / largest to avoid dividing by zero
+
958 UVec4 x_is_numerator = Vec4::sLess(x_abs, y_abs);
+
959 Vec4 numerator = Vec4::sSelect(y_abs, x_abs, x_is_numerator);
+
960 Vec4 denominator = Vec4::sSelect(x_abs, y_abs, x_is_numerator);
+
961 Vec4 atan = (numerator / denominator).ATan();
+
962
+
963 // If we calculated x / y instead of y / x the result is PI / 2 - result (note that this is true because we know the result is positive because the input was positive)
+
964 atan = Vec4::sSelect(atan, Vec4::sReplicate(0.5f * JPH_PI) - atan, x_is_numerator);
+
965
+
966 // Now we need to map to the correct quadrant
+
967 // x_sign y_sign result
+
968 // +1 +1 atan
+
969 // -1 +1 -atan + PI
+
970 // -1 -1 atan - PI
+
971 // +1 -1 -atan
+
972 // This can be written as: x_sign * y_sign * (atan - (x_sign < 0? PI : 0))
+ +
974 atan = Vec4::sXor(atan, UVec4::sXor(x_sign, y_sign).ReinterpretAsFloat());
+
975 return atan;
+
976}
+
+
977
+ +
std::uint8_t uint8
Definition Core.h:453
+
std::uint64_t uint64
Definition Core.h:456
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
std::uint32_t uint32
Definition Core.h:455
+
#define JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED(...)
Definition Core.h:520
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
@ SWIZZLE_Z
Use the Z component.
Definition Swizzle.h:14
+
@ SWIZZLE_W
Use the W component.
Definition Swizzle.h:15
+
@ SWIZZLE_X
Use the X component.
Definition Swizzle.h:12
+
@ SWIZZLE_UNUSED
We always use the Z component when we don't specifically want to initialize a value,...
Definition Swizzle.h:16
+
@ SWIZZLE_Y
Use the Y component.
Definition Swizzle.h:13
+ + + +
Vec4 operator*(float inV1, Vec4Arg inV2)
Multiply vector with float.
Definition Vec4.inl:404
+
Class that holds 4 float values. Convert to Vec4 to perform calculations.
Definition Float4.h:11
+
float x
Definition Float4.h:25
+
float y
Definition Float4.h:26
+
float z
Definition Float4.h:27
+
float w
Definition Float4.h:28
+
Definition UVec4.h:12
+
JPH_INLINE UVec4 Swizzle() const
Swizzle the elements in inV.
+
JPH_INLINE uint32 GetZ() const
Definition UVec4.h:104
+
JPH_INLINE UVec4 LogicalShiftLeft() const
Shift all components by Count bits to the left (filling with zeros from the left)
+
JPH_INLINE uint32 GetY() const
Definition UVec4.h:103
+
static JPH_INLINE UVec4 sReplicate(uint32 inV)
Replicate int inV across all components.
Definition UVec4.inl:56
+
JPH_INLINE bool TestAllTrue() const
Test if all components are true (true is when highest bit of component is set)
Definition UVec4.inl:405
+
static JPH_INLINE UVec4 sAnd(UVec4Arg inV1, UVec4Arg inV2)
Logical and (component wise)
Definition UVec4.inl:199
+
static JPH_INLINE UVec4 sOr(UVec4Arg inV1, UVec4Arg inV2)
Logical or (component wise)
Definition UVec4.inl:171
+
JPH_INLINE uint32 GetW() const
Definition UVec4.h:105
+
Type mValue
Definition UVec4.h:211
+
JPH_INLINE uint32 GetX() const
Get individual components.
Definition UVec4.h:102
+
static JPH_INLINE UVec4 sXor(UVec4Arg inV1, UVec4Arg inV2)
Logical xor (component wise)
Definition UVec4.inl:185
+
JPH_INLINE UVec4 ArithmeticShiftRight() const
Shift all components by Count bits to the right (shifting in the value of the highest bit)
+
static JPH_INLINE UVec4 sSelect(UVec4Arg inV1, UVec4Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition UVec4.inl:157
+
JPH_INLINE Vec4 ToFloat() const
Convert each component from an int to a float.
Definition UVec4.inl:326
+
JPH_INLINE Vec4 ReinterpretAsFloat() const
Reinterpret UVec4 as a Vec4 (doesn't change the bits)
Definition UVec4.inl:337
+
uint32 mU32[4]
Definition UVec4.h:212
+
Definition Vec3.h:17
+
Type mValue
Definition Vec3.h:286
+
float mF32[4]
Definition Vec3.h:287
+
Definition Vec4.h:14
+
JPH_INLINE Vec4 SplatX() const
Replicate the X component to all components.
Definition Vec4.inl:555
+
static JPH_INLINE void sSort4(Vec4 &ioValue, UVec4 &ioIndex)
Definition Vec4.inl:301
+
Vec4 ATan() const
Calculate the arc tangent for each element of this vector (returns value in the range [-PI / 2,...
Definition Vec4.inl:911
+
static JPH_INLINE UVec4 sGreater(Vec4Arg inV1, Vec4Arg inV2)
Greater than (component wise)
Definition Vec4.inl:208
+
float mF32[4]
Definition Vec4.h:275
+
JPH_INLINE Vec4 operator-() const
Negate.
Definition Vec4.inl:495
+
Vec4()=default
Constructor.
+
static JPH_INLINE Vec4 sAnd(Vec4Arg inV1, Vec4Arg inV2)
Logical and (component wise)
Definition Vec4.inl:290
+
static JPH_INLINE Vec4 sLoadFloat4Aligned(const Float4 *inV)
Load 4 floats from memory, 16 bytes aligned.
Definition Vec4.inl:101
+
static Vec4 sATan2(Vec4Arg inY, Vec4Arg inX)
Calculate the arc tangent of y / x using the signs of the arguments to determine the correct quadrant...
Definition Vec4.inl:945
+
JPH_INLINE Vec4 GetSign() const
Get vector that contains the sign of each element (returns 1.0f if positive, -1.0f if negative)
Definition Vec4.inl:682
+
Vec4 ASin() const
Definition Vec4.inl:870
+
static JPH_INLINE Vec4 sXor(Vec4Arg inV1, Vec4Arg inV2)
Logical xor (component wise)
Definition Vec4.inl:279
+
JPH_INLINE Vec4 Abs() const
Return the absolute value of each of the components.
Definition Vec4.inl:599
+
JPH_INLINE Vec4 operator/(float inV2) const
Divide vector by float.
Definition Vec4.inl:418
+
Vec4 Tan() const
Calculate the tangent for each element of this vector (input in radians)
Definition Vec4.inl:837
+
JPH_INLINE UVec4 ToInt() const
Convert each component from a float to an int.
Definition Vec4.inl:727
+
JPH_INLINE Vec4 & operator+=(Vec4Arg inV2)
Add two float vectors (component wise)
Definition Vec4.inl:482
+
static JPH_INLINE UVec4 sLessOrEqual(Vec4Arg inV1, Vec4Arg inV2)
Less than or equal (component wise)
Definition Vec4.inl:194
+
static JPH_INLINE UVec4 sLess(Vec4Arg inV1, Vec4Arg inV2)
Less than (component wise)
Definition Vec4.inl:180
+
JPH_INLINE float Length() const
Length of vector.
Definition Vec4.inl:656
+
static JPH_INLINE void sSort4Reverse(Vec4 &ioValue, UVec4 &ioIndex)
Definition Vec4.inl:325
+
static JPH_INLINE Vec4 sFusedMultiplyAdd(Vec4Arg inMul1, Vec4Arg inMul2, Vec4Arg inAdd)
Calculates inMul1 * inMul2 + inAdd.
Definition Vec4.inl:236
+
JPH_INLINE Vec4 Normalized() const
Normalize vector.
Definition Vec4.inl:702
+
static JPH_INLINE UVec4 sEquals(Vec4Arg inV1, Vec4Arg inV2)
Equals (component wise)
Definition Vec4.inl:166
+
static JPH_INLINE Vec4 sSelect(Vec4Arg inV1, Vec4Arg inV2, UVec4Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec4.inl:254
+
JPH_INLINE float ReduceMax() const
Get the maximum of X, Y, Z and W.
Definition Vec4.inl:768
+
JPH_INLINE Vec4 Reciprocal() const
Reciprocal vector (1 / value) for each of the components.
Definition Vec4.inl:612
+
JPH_INLINE Vec4 SplatY() const
Replicate the Y component to all components.
Definition Vec4.inl:566
+
JPH_INLINE UVec4 ReinterpretAsInt() const
Reinterpret Vec4 as a UVec4 (doesn't change the bits)
Definition Vec4.inl:738
+
static JPH_INLINE UVec4 sGreaterOrEqual(Vec4Arg inV1, Vec4Arg inV2)
Greater than or equal (component wise)
Definition Vec4.inl:222
+
static JPH_INLINE Vec4 sMin(Vec4Arg inV1, Vec4Arg inV2)
Return the minimum value of each of the components.
Definition Vec4.inl:138
+
JPH_INLINE Vec4 SplatZ() const
Replicate the Z component to all components.
Definition Vec4.inl:577
+
JPH_INLINE Vec4 Sqrt() const
Component wise square root.
Definition Vec4.inl:670
+
JPH_INLINE Vec4 & operator*=(float inV2)
Multiply vector with float.
Definition Vec4.inl:429
+
static JPH_INLINE Vec4 sGatherFloat4(const float *inBase, UVec4Arg inOffsets)
Gather 4 floats from memory at inBase + inOffsets[i] * Scale.
+
JPH_INLINE Vec4 operator+(Vec4Arg inV2) const
Add two float vectors (component wise)
Definition Vec4.inl:468
+
JPH_INLINE Vec4 & operator/=(float inV2)
Divide vector by float.
Definition Vec4.inl:455
+
JPH_INLINE bool IsNormalized(float inTolerance=1.0e-6f) const
Test if vector is normalized.
Definition Vec4.inl:359
+
JPH_INLINE bool operator==(Vec4Arg inV2) const
Comparison.
Definition Vec4.inl:349
+
JPH_INLINE Vec4 SplatW() const
Replicate the W component to all components.
Definition Vec4.inl:588
+
JPH_INLINE Vec4 DotV(Vec4Arg inV2) const
Dot product, returns the dot product in X, Y and Z components.
Definition Vec4.inl:617
+
JPH_INLINE bool IsClose(Vec4Arg inV2, float inMaxDistSq=1.0e-12f) const
Test if two vectors are close.
Definition Vec4.inl:354
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec4.h:113
+
static JPH_INLINE Vec4 sLoadFloat4(const Float4 *inV)
Load 4 floats from memory.
Definition Vec4.inl:90
+
{ float mData[4] Type
Definition Vec4.h:24
+
static JPH_INLINE Vec4 sZero()
Vector with all zeros.
Definition Vec4.inl:63
+
JPH_INLINE Vec4 Swizzle() const
Swizzle the elements in inV.
+
static JPH_INLINE Vec4 sOr(Vec4Arg inV1, Vec4Arg inV2)
Logical or (component wise)
Definition Vec4.inl:268
+
JPH_INLINE float ReduceMin() const
Get the minimum of X, Y, Z and W.
Definition Vec4.inl:761
+
Type mValue
Definition Vec4.h:274
+
JPH_INLINE Vec4 & operator-=(Vec4Arg inV2)
Add two float vectors (component wise)
Definition Vec4.inl:528
+
JPH_INLINE float LengthSq() const
Squared length of vector.
Definition Vec4.inl:643
+
static JPH_INLINE Vec4 sMax(Vec4Arg inV1, Vec4Arg inV2)
Return the maximum of each of the components.
Definition Vec4.inl:152
+
JPH_INLINE float Dot(Vec4Arg inV2) const
Dot product.
Definition Vec4.inl:630
+
JPH_INLINE bool IsNaN() const
Test if vector contains NaN elements.
Definition Vec4.inl:364
+
static JPH_INLINE Vec4 sNaN()
Vector with all NaN's.
Definition Vec4.inl:85
+
Vec4 ACos() const
Definition Vec4.inl:905
+
JPH_INLINE int GetSignBits() const
Store if X is negative in bit 0, Y in bit 1, Z in bit 2 and W in bit 3.
Definition Vec4.inl:749
+
static JPH_INLINE Vec4 sReplicate(float inV)
Replicate inV across all components.
Definition Vec4.inl:74
+
void SinCos(Vec4 &outSin, Vec4 &outCos) const
Calculate the sine and cosine for each element of this vector (input in radians)
Definition Vec4.inl:775
+
JPH_INLINE void StoreFloat4(Float4 *outV) const
Store 4 floats to memory.
Definition Vec4.inl:715
+
friend JPH_INLINE Vec4 operator*(float inV1, Vec4Arg inV2)
Multiply vector with float.
Definition Vec4.inl:404
+
+
+ + + + diff --git a/_vec8_8h.html b/_vec8_8h.html new file mode 100644 index 000000000..42b668330 --- /dev/null +++ b/_vec8_8h.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec8.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Vec8.h File Reference
+
+
+
#include <Jolt/Math/MathTypes.h>
+#include "Vec8.inl"
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  Vec8
 
+
+
+ + + + diff --git a/_vec8_8h.js b/_vec8_8h.js new file mode 100644 index 000000000..940a51faa --- /dev/null +++ b/_vec8_8h.js @@ -0,0 +1,4 @@ +var _vec8_8h = +[ + [ "Vec8", "class_vec8.html", "class_vec8" ] +]; \ No newline at end of file diff --git a/_vec8_8h_source.html b/_vec8_8h_source.html new file mode 100644 index 000000000..faed84d1f --- /dev/null +++ b/_vec8_8h_source.html @@ -0,0 +1,222 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec8.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vec8.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
+
+
11class [[nodiscard]] Vec8
+
12{
+
13public:
+ +
15
+
17 Vec8() = default;
+
18 Vec8(const Vec8 &inRHS) = default;
+
19 JPH_INLINE Vec8(__m256 inRHS) : mValue(inRHS) { }
+
20
+
22 JPH_INLINE Vec8(Vec4Arg inLo, Vec4Arg inHi);
+
23
+
25 static JPH_INLINE Vec8 sZero();
+
26
+
28 static JPH_INLINE Vec8 sReplicate(float inV);
+
29
+
31 static JPH_INLINE Vec8 sSplatX(Vec4Arg inV);
+
32
+
34 static JPH_INLINE Vec8 sSplatY(Vec4Arg inV);
+
35
+
37 static JPH_INLINE Vec8 sSplatZ(Vec4Arg inV);
+
38
+
40 static JPH_INLINE Vec8 sFusedMultiplyAdd(Vec8Arg inMul1, Vec8Arg inMul2, Vec8Arg inAdd);
+
41
+
43 static JPH_INLINE Vec8 sSelect(Vec8Arg inV1, Vec8Arg inV2, UVec8Arg inControl);
+
44
+
46 static JPH_INLINE Vec8 sMin(Vec8Arg inV1, Vec8Arg inV2);
+
47
+
49 static JPH_INLINE Vec8 sMax(Vec8Arg inV1, Vec8Arg inV2);
+
50
+
52 static JPH_INLINE UVec8 sLess(Vec8Arg inV1, Vec8Arg inV2);
+
53
+
55 static JPH_INLINE UVec8 sGreater(Vec8Arg inV1, Vec8Arg inV2);
+
56
+
58 static JPH_INLINE Vec8 sLoadFloat8(const float *inV);
+
59
+
61 static JPH_INLINE Vec8 sLoadFloat8Aligned(const float *inV);
+
62
+
64 JPH_INLINE float operator [] (uint inCoordinate) const { JPH_ASSERT(inCoordinate < 8); return mF32[inCoordinate]; }
+
65 JPH_INLINE float & operator [] (uint inCoordinate) { JPH_ASSERT(inCoordinate < 8); return mF32[inCoordinate]; }
+
66
+
68 JPH_INLINE Vec8 operator * (Vec8Arg inV2) const;
+
69
+
71 JPH_INLINE Vec8 operator * (float inV2) const;
+
72
+
74 JPH_INLINE Vec8 operator + (Vec8Arg inV2) const;
+
75
+
77 JPH_INLINE Vec8 operator - (Vec8Arg inV2) const;
+
78
+
80 JPH_INLINE Vec8 operator / (Vec8Arg inV2) const;
+
81
+
83 JPH_INLINE Vec8 Reciprocal() const;
+
84
+
86 template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+
87 JPH_INLINE Vec8 Swizzle() const;
+
88
+
90 JPH_INLINE Vec8 Abs() const;
+
91
+
93 JPH_INLINE Vec4 LowerVec4() const;
+
94
+
96 JPH_INLINE Vec4 UpperVec4() const;
+
97
+
99 JPH_INLINE float ReduceMin() const;
+
100
+
101 union
+
102 {
+
103 __m256 mValue;
+
104 float mF32[8];
+
105 };
+
106};
+
+
107
+
108static_assert(is_trivial<Vec8>(), "Is supposed to be a trivial type!");
+
109
+ +
111
+
112#include "Vec8.inl"
+
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:451
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+ +
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
Definition UVec8.h:12
+
Definition Vec4.h:14
+
Definition Vec8.h:12
+
Vec8(const Vec8 &inRHS)=default
+
JPH_INLINE Vec8(__m256 inRHS)
Definition Vec8.h:19
+
JPH_OVERRIDE_NEW_DELETE Vec8()=default
Constructor.
+
__m256 mValue
Definition Vec8.h:103
+
JPH_INLINE Vec8 Swizzle() const
256 bit variant of Vec::Swizzle (no cross 128 bit lane swizzle)
+
+
+ + + + diff --git a/_vec8_8inl.html b/_vec8_8inl.html new file mode 100644 index 000000000..402553784 --- /dev/null +++ b/_vec8_8inl.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec8.inl File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vec8.inl File Reference
+
+
+
#include <Jolt/Math/UVec8.h>
+
+

Go to the source code of this file.

+
+
+ + + + diff --git a/_vec8_8inl_source.html b/_vec8_8inl_source.html new file mode 100644 index 000000000..51d058ace --- /dev/null +++ b/_vec8_8inl_source.html @@ -0,0 +1,354 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vec8.inl Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vec8.inl
+
+
+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#include <Jolt/Math/UVec8.h>
+
6
+ +
8
+
+ +
10 mValue(_mm256_insertf128_ps(_mm256_castps128_ps256(inLo.mValue), inHi.mValue, 1))
+
11{
+
12}
+
+
13
+
+ +
15{
+
16 return _mm256_setzero_ps();
+
17}
+
+
18
+
+ +
20{
+
21 return _mm256_set1_ps(inV);
+
22}
+
+
23
+
+ +
25{
+
26 return _mm256_set1_ps(inV.GetX());
+
27}
+
+
28
+
+ +
30{
+
31 return _mm256_set1_ps(inV.GetY());
+
32}
+
+
33
+
+ +
35{
+
36 return _mm256_set1_ps(inV.GetZ());
+
37}
+
+
38
+
+ +
40{
+
41#ifdef JPH_USE_FMADD
+
42 return _mm256_fmadd_ps(inMul1.mValue, inMul2.mValue, inAdd.mValue);
+
43#else
+
44 return _mm256_add_ps(_mm256_mul_ps(inMul1.mValue, inMul2.mValue), inAdd.mValue);
+
45#endif
+
46}
+
+
47
+
+ +
49{
+
50 return _mm256_blendv_ps(inV1.mValue, inV2.mValue, _mm256_castsi256_ps(inControl.mValue));
+
51}
+
+
52
+
+ +
54{
+
55 return _mm256_min_ps(inV1.mValue, inV2.mValue);
+
56}
+
+
57
+
+ +
59{
+
60 return _mm256_max_ps(inV1.mValue, inV2.mValue);
+
61}
+
+
62
+
+ +
64{
+
65 return _mm256_castps_si256(_mm256_cmp_ps(inV1.mValue, inV2.mValue, _CMP_LT_OQ));
+
66}
+
+
67
+
+ +
69{
+
70 return _mm256_castps_si256(_mm256_cmp_ps(inV1.mValue, inV2.mValue, _CMP_GT_OQ));
+
71}
+
+
72
+
+
73Vec8 Vec8::sLoadFloat8(const float *inV)
+
74{
+
75 return _mm256_loadu_ps(inV);
+
76}
+
+
77
+
+ +
79{
+
80 return _mm256_load_ps(inV);
+
81}
+
+
82
+
+ +
84{
+
85 return _mm256_mul_ps(mValue, inV2.mValue);
+
86}
+
+
87
+
+
88Vec8 Vec8::operator * (float inV2) const
+
89{
+
90 return _mm256_mul_ps(mValue, _mm256_set1_ps(inV2));
+
91}
+
+
92
+
+ +
94{
+
95 return _mm256_add_ps(mValue, inV2.mValue);
+
96}
+
+
97
+
+ +
99{
+
100 return _mm256_sub_ps(mValue, inV2.mValue);
+
101}
+
+
102
+
+ +
104{
+
105 return _mm256_div_ps(mValue, inV2.mValue);
+
106}
+
+
107
+
+ +
109{
+
110 return Vec8::sReplicate(1.0f) / mValue;
+
111}
+
+
112
+
113template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+
+ +
115{
+
116 static_assert(SwizzleX <= 3, "SwizzleX template parameter out of range");
+
117 static_assert(SwizzleY <= 3, "SwizzleY template parameter out of range");
+
118 static_assert(SwizzleZ <= 3, "SwizzleZ template parameter out of range");
+
119 static_assert(SwizzleW <= 3, "SwizzleW template parameter out of range");
+
120
+
121 return _mm256_shuffle_ps(mValue, mValue, _MM_SHUFFLE(SwizzleW, SwizzleZ, SwizzleY, SwizzleX));
+
122}
+
+
123
+
+ +
125{
+
126#if defined(JPH_USE_AVX512)
+
127 return _mm256_range_ps(mValue, mValue, 0b1000);
+
128#else
+
129 return _mm256_max_ps(_mm256_sub_ps(_mm256_setzero_ps(), mValue), mValue);
+
130#endif
+
131}
+
+
132
+
+ +
134{
+
135 return _mm256_castps256_ps128(mValue);
+
136}
+
+
137
+
+ +
139{
+
140 return _mm256_extractf128_ps(mValue, 1);
+
141}
+
+
142
+
+
143float Vec8::ReduceMin() const
+
144{
+ +
146}
+
+
147
+ +
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
Definition UVec8.h:12
+
__m256i mValue
Definition UVec8.h:91
+
Definition Vec4.h:14
+
static JPH_INLINE Vec4 sMin(Vec4Arg inV1, Vec4Arg inV2)
Return the minimum value of each of the components.
Definition Vec4.inl:138
+
JPH_INLINE float GetX() const
Get individual components.
Definition Vec4.h:113
+
JPH_INLINE float ReduceMin() const
Get the minimum of X, Y, Z and W.
Definition Vec4.inl:761
+
JPH_INLINE float GetZ() const
Definition Vec4.h:115
+
JPH_INLINE float GetY() const
Definition Vec4.h:114
+
Definition Vec8.h:12
+
static JPH_INLINE Vec8 sFusedMultiplyAdd(Vec8Arg inMul1, Vec8Arg inMul2, Vec8Arg inAdd)
Calculates inMul1 * inMul2 + inAdd.
Definition Vec8.inl:39
+
JPH_INLINE float ReduceMin() const
Get the minimum value of the 8 floats.
Definition Vec8.inl:143
+
JPH_INLINE Vec4 UpperVec4() const
Fetch the higher 128 bit from a 256 bit variable.
Definition Vec8.inl:138
+
static JPH_INLINE UVec8 sLess(Vec8Arg inV1, Vec8Arg inV2)
Less than.
Definition Vec8.inl:63
+
JPH_INLINE Vec8 Reciprocal() const
Reciprocal vector.
Definition Vec8.inl:108
+
static JPH_INLINE Vec8 sSplatX(Vec4Arg inV)
Replicate the X component of inV to all components.
Definition Vec8.inl:24
+
JPH_INLINE Vec8 operator-(Vec8Arg inV2) const
Subtract two float vectors.
Definition Vec8.inl:98
+
JPH_INLINE Vec8 Abs() const
Get absolute value of all components.
Definition Vec8.inl:124
+
static JPH_INLINE Vec8 sSplatY(Vec4Arg inV)
Replicate the Y component of inV to all components.
Definition Vec8.inl:29
+
static JPH_INLINE Vec8 sMax(Vec8Arg inV1, Vec8Arg inV2)
Component wise max.
Definition Vec8.inl:58
+
JPH_INLINE Vec8 operator/(Vec8Arg inV2) const
Divide.
Definition Vec8.inl:103
+
JPH_INLINE Vec8 operator*(Vec8Arg inV2) const
Multiply two float vectors.
Definition Vec8.inl:83
+
static JPH_INLINE Vec8 sLoadFloat8Aligned(const float *inV)
Load 8 floats from memory, 32 bytes aligned.
Definition Vec8.inl:78
+
static JPH_INLINE UVec8 sGreater(Vec8Arg inV1, Vec8Arg inV2)
Greater than.
Definition Vec8.inl:68
+
static JPH_INLINE Vec8 sZero()
Vector with all zeros.
Definition Vec8.inl:14
+
JPH_OVERRIDE_NEW_DELETE Vec8()=default
Constructor.
+
JPH_INLINE Vec4 LowerVec4() const
Fetch the lower 128 bit from a 256 bit variable.
Definition Vec8.inl:133
+
static JPH_INLINE Vec8 sSelect(Vec8Arg inV1, Vec8Arg inV2, UVec8Arg inControl)
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of in...
Definition Vec8.inl:48
+
static JPH_INLINE Vec8 sMin(Vec8Arg inV1, Vec8Arg inV2)
Component wise min.
Definition Vec8.inl:53
+
static JPH_INLINE Vec8 sSplatZ(Vec4Arg inV)
Replicate the Z component of inV to all components.
Definition Vec8.inl:34
+
__m256 mValue
Definition Vec8.h:103
+
JPH_INLINE Vec8 operator+(Vec8Arg inV2) const
Add two float vectors.
Definition Vec8.inl:93
+
static JPH_INLINE Vec8 sLoadFloat8(const float *inV)
Load from memory.
Definition Vec8.inl:73
+
JPH_INLINE Vec8 Swizzle() const
256 bit variant of Vec::Swizzle (no cross 128 bit lane swizzle)
+
static JPH_INLINE Vec8 sReplicate(float inV)
Replicate across all components.
Definition Vec8.inl:19
+
+
+ + + + diff --git a/_vector_8h.html b/_vector_8h.html new file mode 100644 index 000000000..5e984e673 --- /dev/null +++ b/_vector_8h.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vector.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Vector.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + +

+Classes

class  Vector< Rows >
 Templatized vector class. More...
 
+
+
+ + + + diff --git a/_vector_8h.js b/_vector_8h.js new file mode 100644 index 000000000..8be48d5f1 --- /dev/null +++ b/_vector_8h.js @@ -0,0 +1,4 @@ +var _vector_8h = +[ + [ "Vector< Rows >", "class_vector.html", "class_vector" ] +]; \ No newline at end of file diff --git a/_vector_8h_source.html b/_vector_8h_source.html new file mode 100644 index 000000000..cdf71e8c9 --- /dev/null +++ b/_vector_8h_source.html @@ -0,0 +1,378 @@ + + + + + + + +Jolt Physics: Jolt/Math/Vector.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vector.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
+
10template <uint Rows>
+
+
11class [[nodiscard]] Vector
+
12{
+
13public:
+
15 inline Vector() = default;
+
16 inline Vector(const Vector &) = default;
+
17
+
19 inline uint GetRows() const { return Rows; }
+
20
+
+
22 inline void SetZero()
+
23 {
+
24 for (uint r = 0; r < Rows; ++r)
+
25 mF32[r] = 0.0f;
+
26 }
+
+
27
+
28 inline static Vector sZero() { Vector v; v.SetZero(); return v; }
+
29
+
31 template <class OtherVector>
+
+
32 void CopyPart(const OtherVector &inV, uint inSourceRow, uint inNumRows, uint inDestRow)
+
33 {
+
34 for (uint r = 0; r < inNumRows; ++r)
+
35 mF32[inDestRow + r] = inV[inSourceRow + r];
+
36 }
+
+
37
+
+
39 inline float operator [] (uint inCoordinate) const
+
40 {
+
41 JPH_ASSERT(inCoordinate < Rows);
+
42 return mF32[inCoordinate];
+
43 }
+
+
44
+
+
45 inline float & operator [] (uint inCoordinate)
+
46 {
+
47 JPH_ASSERT(inCoordinate < Rows);
+
48 return mF32[inCoordinate];
+
49 }
+
+
50
+
+
52 inline bool operator == (const Vector &inV2) const
+
53 {
+
54 for (uint r = 0; r < Rows; ++r)
+
55 if (mF32[r] != inV2.mF32[r])
+
56 return false;
+
57 return true;
+
58 }
+
+
59
+
+
60 inline bool operator != (const Vector &inV2) const
+
61 {
+
62 for (uint r = 0; r < Rows; ++r)
+
63 if (mF32[r] != inV2.mF32[r])
+
64 return true;
+
65 return false;
+
66 }
+
+
67
+
+
69 inline bool IsZero() const
+
70 {
+
71 for (uint r = 0; r < Rows; ++r)
+
72 if (mF32[r] != 0.0f)
+
73 return false;
+
74 return true;
+
75 }
+
+
76
+
+
78 inline bool IsClose(const Vector &inV2, float inMaxDistSq = 1.0e-12f)
+
79 {
+
80 return (inV2 - *this).LengthSq() <= inMaxDistSq;
+
81 }
+
+
82
+
84 inline Vector & operator = (const Vector &) = default;
+
85
+
+
87 inline Vector operator * (const float inV2) const
+
88 {
+
89 Vector v;
+
90 for (uint r = 0; r < Rows; ++r)
+
91 v.mF32[r] = mF32[r] * inV2;
+
92 return v;
+
93 }
+
+
94
+
+
95 inline Vector & operator *= (const float inV2)
+
96 {
+
97 for (uint r = 0; r < Rows; ++r)
+
98 mF32[r] *= inV2;
+
99 return *this;
+
100 }
+
+
101
+
+
103 inline friend Vector operator * (const float inV1, const Vector &inV2)
+
104 {
+
105 return inV2 * inV1;
+
106 }
+
+
107
+
+
109 inline Vector operator / (float inV2) const
+
110 {
+
111 Vector v;
+
112 for (uint r = 0; r < Rows; ++r)
+
113 v.mF32[r] = mF32[r] / inV2;
+
114 return v;
+
115 }
+
+
116
+
+
117 inline Vector & operator /= (float inV2)
+
118 {
+
119 for (uint r = 0; r < Rows; ++r)
+
120 mF32[r] /= inV2;
+
121 return *this;
+
122 }
+
+
123
+
+
125 inline Vector operator + (const Vector &inV2) const
+
126 {
+
127 Vector v;
+
128 for (uint r = 0; r < Rows; ++r)
+
129 v.mF32[r] = mF32[r] + inV2.mF32[r];
+
130 return v;
+
131 }
+
+
132
+
+
133 inline Vector & operator += (const Vector &inV2)
+
134 {
+
135 for (uint r = 0; r < Rows; ++r)
+
136 mF32[r] += inV2.mF32[r];
+
137 return *this;
+
138 }
+
+
139
+
+
141 inline Vector operator - () const
+
142 {
+
143 Vector v;
+
144 for (uint r = 0; r < Rows; ++r)
+
145 v.mF32[r] = -mF32[r];
+
146 return v;
+
147 }
+
+
148
+
+
150 inline Vector operator - (const Vector &inV2) const
+
151 {
+
152 Vector v;
+
153 for (uint r = 0; r < Rows; ++r)
+
154 v.mF32[r] = mF32[r] - inV2.mF32[r];
+
155 return v;
+
156 }
+
+
157
+
+
158 inline Vector & operator -= (const Vector &inV2)
+
159 {
+
160 for (uint r = 0; r < Rows; ++r)
+
161 mF32[r] -= inV2.mF32[r];
+
162 return *this;
+
163 }
+
+
164
+
+
166 inline float Dot(const Vector &inV2) const
+
167 {
+
168 float dot = 0.0f;
+
169 for (uint r = 0; r < Rows; ++r)
+
170 dot += mF32[r] * inV2.mF32[r];
+
171 return dot;
+
172 }
+
+
173
+
+
175 inline float LengthSq() const
+
176 {
+
177 return Dot(*this);
+
178 }
+
+
179
+
+
181 inline float Length() const
+
182 {
+
183 return sqrt(LengthSq());
+
184 }
+
+
185
+
+
187 inline bool IsNormalized(float inToleranceSq = 1.0e-6f)
+
188 {
+
189 return abs(LengthSq() - 1.0f) <= inToleranceSq;
+
190 }
+
+
191
+
+
193 inline Vector Normalized() const
+
194 {
+
195 return *this / Length();
+
196 }
+
+
197
+
+
199 friend ostream & operator << (ostream &inStream, const Vector &inV)
+
200 {
+
201 inStream << "[";
+
202 for (uint i = 0; i < Rows - 1; ++i)
+
203 inStream << inV.mF32[i] << ", ";
+
204 inStream << inV.mF32[Rows - 1] << "]";
+
205 return inStream;
+
206 }
+
+
207
+
208 float mF32[Rows];
+
209};
+
+
210
+ +
unsigned int uint
Definition Core.h:452
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:451
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
Templatized vector class.
Definition Vector.h:12
+
void SetZero()
Vector with all zeros.
Definition Vector.h:22
+
Vector Normalized() const
Normalize vector.
Definition Vector.h:193
+
bool IsNormalized(float inToleranceSq=1.0e-6f)
Check if vector is normalized.
Definition Vector.h:187
+
float Length() const
Length of vector.
Definition Vector.h:181
+
uint GetRows() const
Dimensions.
Definition Vector.h:19
+
float mF32[Rows]
Definition Vector.h:208
+
Vector(const Vector &)=default
+
bool IsZero() const
Test if vector consists of all zeros.
Definition Vector.h:69
+
void CopyPart(const OtherVector &inV, uint inSourceRow, uint inNumRows, uint inDestRow)
Copy a (part) of another vector into this vector.
Definition Vector.h:32
+
Vector()=default
Constructor.
+
float Dot(const Vector &inV2) const
Dot product.
Definition Vector.h:166
+
static Vector sZero()
Definition Vector.h:28
+
bool IsClose(const Vector &inV2, float inMaxDistSq=1.0e-12f)
Test if two vectors are close to each other.
Definition Vector.h:78
+
float LengthSq() const
Squared length of vector.
Definition Vector.h:175
+
+
+ + + + diff --git a/_vehicle_anti_roll_bar_8cpp.html b/_vehicle_anti_roll_bar_8cpp.html new file mode 100644 index 000000000..8ddd49faf --- /dev/null +++ b/_vehicle_anti_roll_bar_8cpp.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleAntiRollBar.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleAntiRollBar.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (VehicleAntiRollBar)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (VehicleAntiRollBar )
+
+ +
+
+
+
+ + + + diff --git a/_vehicle_anti_roll_bar_8cpp.js b/_vehicle_anti_roll_bar_8cpp.js new file mode 100644 index 000000000..c46359db3 --- /dev/null +++ b/_vehicle_anti_roll_bar_8cpp.js @@ -0,0 +1,4 @@ +var _vehicle_anti_roll_bar_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_vehicle_anti_roll_bar_8cpp.html#a191ec6adc8e236ae5ff9b6297d247ce1", null ] +]; \ No newline at end of file diff --git a/_vehicle_anti_roll_bar_8h.html b/_vehicle_anti_roll_bar_8h.html new file mode 100644 index 000000000..2dc4844dc --- /dev/null +++ b/_vehicle_anti_roll_bar_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleAntiRollBar.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleAntiRollBar.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  VehicleAntiRollBar
 
+
+
+ + + + diff --git a/_vehicle_anti_roll_bar_8h.js b/_vehicle_anti_roll_bar_8h.js new file mode 100644 index 000000000..8fff8bf77 --- /dev/null +++ b/_vehicle_anti_roll_bar_8h.js @@ -0,0 +1,4 @@ +var _vehicle_anti_roll_bar_8h = +[ + [ "VehicleAntiRollBar", "class_vehicle_anti_roll_bar.html", "class_vehicle_anti_roll_bar" ] +]; \ No newline at end of file diff --git a/_vehicle_anti_roll_bar_8h_source.html b/_vehicle_anti_roll_bar_8h_source.html new file mode 100644 index 000000000..0593e84d1 --- /dev/null +++ b/_vehicle_anti_roll_bar_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleAntiRollBar.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleAntiRollBar.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
+ + + +
10
+ +
12
+
+ +
16{
+
17public:
+ +
19
+
20
+
21 void SaveBinaryState(StreamOut &inStream) const;
+
22
+
24 void RestoreBinaryState(StreamIn &inStream);
+
25
+
26 int mLeftWheel = 0;
+
27 int mRightWheel = 1;
+
28 float mStiffness = 1000.0f;
+
29};
+
+
30
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ + +
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition VehicleAntiRollBar.h:16
+
+
+ + + + diff --git a/_vehicle_collision_tester_8cpp.html b/_vehicle_collision_tester_8cpp.html new file mode 100644 index 000000000..d45391839 --- /dev/null +++ b/_vehicle_collision_tester_8cpp.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleCollisionTester.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleCollisionTester.cpp File Reference
+
+
+
+
+ + + + diff --git a/_vehicle_collision_tester_8h.html b/_vehicle_collision_tester_8h.html new file mode 100644 index 000000000..bbd9a4ed3 --- /dev/null +++ b/_vehicle_collision_tester_8h.html @@ -0,0 +1,136 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleCollisionTester.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleCollisionTester.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

class  VehicleCollisionTester
 Class that does collision detection between wheels and ground. More...
 
class  VehicleCollisionTesterRay
 Collision tester that tests collision using a raycast. More...
 
class  VehicleCollisionTesterCastSphere
 Collision tester that tests collision using a sphere cast. More...
 
class  VehicleCollisionTesterCastCylinder
 Collision tester that tests collision using a cylinder shape. More...
 
+
+
+ + + + diff --git a/_vehicle_collision_tester_8h.js b/_vehicle_collision_tester_8h.js new file mode 100644 index 000000000..483525413 --- /dev/null +++ b/_vehicle_collision_tester_8h.js @@ -0,0 +1,7 @@ +var _vehicle_collision_tester_8h = +[ + [ "VehicleCollisionTester", "class_vehicle_collision_tester.html", "class_vehicle_collision_tester" ], + [ "VehicleCollisionTesterRay", "class_vehicle_collision_tester_ray.html", "class_vehicle_collision_tester_ray" ], + [ "VehicleCollisionTesterCastSphere", "class_vehicle_collision_tester_cast_sphere.html", "class_vehicle_collision_tester_cast_sphere" ], + [ "VehicleCollisionTesterCastCylinder", "class_vehicle_collision_tester_cast_cylinder.html", "class_vehicle_collision_tester_cast_cylinder" ] +]; \ No newline at end of file diff --git a/_vehicle_collision_tester_8h_source.html b/_vehicle_collision_tester_8h_source.html new file mode 100644 index 000000000..bf75f9efe --- /dev/null +++ b/_vehicle_collision_tester_8h_source.html @@ -0,0 +1,269 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleCollisionTester.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleCollisionTester.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
+ + +
9
+ +
11
+
12class PhysicsSystem;
+ + + +
16class BodyFilter;
+
17
+
+
19class JPH_EXPORT VehicleCollisionTester : public RefTarget<VehicleCollisionTester>, public NonCopyable
+
20{
+
21public:
+ +
23
+ +
26 explicit VehicleCollisionTester(ObjectLayer inObjectLayer) : mObjectLayer(inObjectLayer) { }
+
27
+
29 virtual ~VehicleCollisionTester() = default;
+
30
+
32 ObjectLayer GetObjectLayer() const { return mObjectLayer; }
+
33 void SetObjectLayer(ObjectLayer inObjectLayer) { mObjectLayer = inObjectLayer; }
+
34
+
36 void SetBroadPhaseLayerFilter(const BroadPhaseLayerFilter *inFilter) { mBroadPhaseLayerFilter = inFilter; }
+
37 const BroadPhaseLayerFilter * GetBroadPhaseLayerFilter() const { return mBroadPhaseLayerFilter; }
+
38
+
40 void SetObjectLayerFilter(const ObjectLayerFilter *inFilter) { mObjectLayerFilter = inFilter; }
+
41 const ObjectLayerFilter * GetObjectLayerFilter() const { return mObjectLayerFilter; }
+
42
+
44 void SetBodyFilter(const BodyFilter *inFilter) { mBodyFilter = inFilter; }
+
45 const BodyFilter * GetBodyFilter() const { return mBodyFilter; }
+
46
+
60 virtual bool Collide(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const = 0;
+
61
+
74 virtual void PredictContactProperties(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const = 0;
+
75
+
76protected:
+
77 const BroadPhaseLayerFilter * mBroadPhaseLayerFilter = nullptr;
+
78 const ObjectLayerFilter * mObjectLayerFilter = nullptr;
+
79 const BodyFilter * mBodyFilter = nullptr;
+
80 ObjectLayer mObjectLayer = cObjectLayerInvalid;
+
81};
+
+
82
+
+ +
85{
+
86public:
+ +
88
+
93 VehicleCollisionTesterRay(ObjectLayer inObjectLayer, Vec3Arg inUp = Vec3::sAxisY(), float inMaxSlopeAngle = DegreesToRadians(80.0f)) : VehicleCollisionTester(inObjectLayer), mUp(inUp), mCosMaxSlopeAngle(Cos(inMaxSlopeAngle)) { }
+
94
+
95 // See: VehicleCollisionTester
+
96 virtual bool Collide(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const override;
+
97 virtual void PredictContactProperties(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const override;
+
98
+
99private:
+
100 Vec3 mUp;
+
101 float mCosMaxSlopeAngle;
+
102};
+
+
103
+
+ +
106{
+
107public:
+ +
109
+
115 VehicleCollisionTesterCastSphere(ObjectLayer inObjectLayer, float inRadius, Vec3Arg inUp = Vec3::sAxisY(), float inMaxSlopeAngle = DegreesToRadians(80.0f)) : VehicleCollisionTester(inObjectLayer), mRadius(inRadius), mUp(inUp), mCosMaxSlopeAngle(Cos(inMaxSlopeAngle)) { }
+
116
+
117 // See: VehicleCollisionTester
+
118 virtual bool Collide(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const override;
+
119 virtual void PredictContactProperties(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const override;
+
120
+
121private:
+
122 float mRadius;
+
123 Vec3 mUp;
+
124 float mCosMaxSlopeAngle;
+
125};
+
+
126
+
+ +
129{
+
130public:
+ +
132
+
136 VehicleCollisionTesterCastCylinder(ObjectLayer inObjectLayer, float inConvexRadiusFraction = 0.1f) : VehicleCollisionTester(inObjectLayer), mConvexRadiusFraction(inConvexRadiusFraction) { JPH_ASSERT(mConvexRadiusFraction >= 0.0f && mConvexRadiusFraction <= 1.0f); }
+
137
+
138 // See: VehicleCollisionTester
+
139 virtual bool Collide(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const override;
+
140 virtual void PredictContactProperties(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const override;
+
141
+
142private:
+
143 float mConvexRadiusFraction;
+
144};
+
+
145
+ + +
#define JPH_EXPORT
Definition Core.h:236
+
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_ASSERT(...)
Definition IssueReporting.h:33
+
JPH_INLINE constexpr float DegreesToRadians(float inV)
Convert a value from degrees to radians.
Definition Math.h:13
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+ +
uint16 ObjectLayer
Definition ObjectLayer.h:16
+
JPH_INLINE float Cos(float inX)
Cosine of x (input in radians)
Definition Trigonometry.h:20
+
Class function to filter out bodies, returns true if test should collide with body.
Definition BodyFilter.h:16
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Filter class for broadphase layers.
Definition BroadPhaseLayer.h:94
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Filter class for object layers.
Definition ObjectLayer.h:28
+
Definition PhysicsSystem.h:29
+
Definition Reference.h:35
+
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
+
static JPH_INLINE Vec3 sAxisY()
Definition Vec3.h:54
+
Collision tester that tests collision using a cylinder shape.
Definition VehicleCollisionTester.h:129
+
JPH_OVERRIDE_NEW_DELETE VehicleCollisionTesterCastCylinder(ObjectLayer inObjectLayer, float inConvexRadiusFraction=0.1f)
Definition VehicleCollisionTester.h:136
+
Collision tester that tests collision using a sphere cast.
Definition VehicleCollisionTester.h:106
+
JPH_OVERRIDE_NEW_DELETE VehicleCollisionTesterCastSphere(ObjectLayer inObjectLayer, float inRadius, Vec3Arg inUp=Vec3::sAxisY(), float inMaxSlopeAngle=DegreesToRadians(80.0f))
Definition VehicleCollisionTester.h:115
+
Class that does collision detection between wheels and ground.
Definition VehicleCollisionTester.h:20
+
ObjectLayer GetObjectLayer() const
Object layer to use for collision detection, this is used when the filters are not overridden.
Definition VehicleCollisionTester.h:32
+
virtual bool Collide(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const =0
+
virtual void PredictContactProperties(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const =0
+
void SetBodyFilter(const BodyFilter *inFilter)
Access to the body filter, when set this overrides the default filter that filters out the vehicle bo...
Definition VehicleCollisionTester.h:44
+
JPH_OVERRIDE_NEW_DELETE VehicleCollisionTester()=default
Constructors.
+
VehicleCollisionTester(ObjectLayer inObjectLayer)
Definition VehicleCollisionTester.h:26
+
virtual ~VehicleCollisionTester()=default
Virtual destructor.
+
const BodyFilter * GetBodyFilter() const
Definition VehicleCollisionTester.h:45
+
void SetBroadPhaseLayerFilter(const BroadPhaseLayerFilter *inFilter)
Access to the broad phase layer filter, when set this overrides the object layer supplied in the cons...
Definition VehicleCollisionTester.h:36
+
const BroadPhaseLayerFilter * GetBroadPhaseLayerFilter() const
Definition VehicleCollisionTester.h:37
+
const ObjectLayerFilter * GetObjectLayerFilter() const
Definition VehicleCollisionTester.h:41
+
void SetObjectLayerFilter(const ObjectLayerFilter *inFilter)
Access to the object layer filter, when set this overrides the object layer supplied in the construct...
Definition VehicleCollisionTester.h:40
+
void SetObjectLayer(ObjectLayer inObjectLayer)
Definition VehicleCollisionTester.h:33
+
Collision tester that tests collision using a raycast.
Definition VehicleCollisionTester.h:85
+
JPH_OVERRIDE_NEW_DELETE VehicleCollisionTesterRay(ObjectLayer inObjectLayer, Vec3Arg inUp=Vec3::sAxisY(), float inMaxSlopeAngle=DegreesToRadians(80.0f))
Definition VehicleCollisionTester.h:93
+
Definition VehicleConstraint.h:66
+
+
+ + + + diff --git a/_vehicle_constraint_8cpp.html b/_vehicle_constraint_8cpp.html new file mode 100644 index 000000000..8239886a4 --- /dev/null +++ b/_vehicle_constraint_8cpp.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleConstraint.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleConstraint.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (VehicleConstraintSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (VehicleConstraintSettings )
+
+ +
+
+
+
+ + + + diff --git a/_vehicle_constraint_8cpp.js b/_vehicle_constraint_8cpp.js new file mode 100644 index 000000000..0fe2fa435 --- /dev/null +++ b/_vehicle_constraint_8cpp.js @@ -0,0 +1,4 @@ +var _vehicle_constraint_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_vehicle_constraint_8cpp.html#ad9be5dcb275ef54ffd9f94e0f8dcc17d", null ] +]; \ No newline at end of file diff --git a/_vehicle_constraint_8h.html b/_vehicle_constraint_8h.html new file mode 100644 index 000000000..8ba187516 --- /dev/null +++ b/_vehicle_constraint_8h.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleConstraint.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleConstraint.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Classes

class  VehicleConstraintSettings
 
class  VehicleConstraint
 
+
+
+ + + + diff --git a/_vehicle_constraint_8h.js b/_vehicle_constraint_8h.js new file mode 100644 index 000000000..d7ed48644 --- /dev/null +++ b/_vehicle_constraint_8h.js @@ -0,0 +1,5 @@ +var _vehicle_constraint_8h = +[ + [ "VehicleConstraintSettings", "class_vehicle_constraint_settings.html", "class_vehicle_constraint_settings" ], + [ "VehicleConstraint", "class_vehicle_constraint.html", "class_vehicle_constraint" ] +]; \ No newline at end of file diff --git a/_vehicle_constraint_8h_source.html b/_vehicle_constraint_8h_source.html new file mode 100644 index 000000000..4c2b8a533 --- /dev/null +++ b/_vehicle_constraint_8h_source.html @@ -0,0 +1,373 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleConstraint.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleConstraint.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
+ + + + + + + +
14
+ +
16
+
17class PhysicsSystem;
+
18
+
+ +
24{
+
25public:
+ +
27
+
28
+
29 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
30
+
31 Vec3 mUp { 0, 1, 0 };
+
32 Vec3 mForward { 0, 0, 1 };
+
33 float mMaxPitchRollAngle = JPH_PI;
+ + + +
37
+
38protected:
+
40 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
41};
+
+
42
+
+ +
66{
+
67public:
+
69 VehicleConstraint(Body &inVehicleBody, const VehicleConstraintSettings &inSettings);
+
70 virtual ~VehicleConstraint() override;
+
71
+
73 virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::Vehicle; }
+
74
+
76 void SetMaxPitchRollAngle(float inMaxPitchRollAngle) { mCosMaxPitchRollAngle = Cos(inMaxPitchRollAngle); }
+
77
+
79 void SetVehicleCollisionTester(const VehicleCollisionTester *inTester) { mVehicleCollisionTester = inTester; }
+
80
+
83 using CombineFunction = function<void(uint inWheelIndex, float &ioLongitudinalFriction, float &ioLateralFriction, const Body &inBody2, const SubShapeID &inSubShapeID2)>;
+
84
+
87 void SetCombineFriction(const CombineFunction &inCombineFriction) { mCombineFriction = inCombineFriction; }
+
88 const CombineFunction & GetCombineFriction() const { return mCombineFriction; }
+
89
+
91 using StepCallback = function<void(VehicleConstraint &inVehicle, float inDeltaTime, PhysicsSystem &inPhysicsSystem)>;
+
92
+
96 const StepCallback & GetPreStepCallback() const { return mPreStepCallback; }
+
97 void SetPreStepCallback(const StepCallback &inPreStepCallback) { mPreStepCallback = inPreStepCallback; }
+
98
+
102 const StepCallback & GetPostCollideCallback() const { return mPostCollideCallback; }
+
103 void SetPostCollideCallback(const StepCallback &inPostCollideCallback) { mPostCollideCallback = inPostCollideCallback; }
+
104
+
108 const StepCallback & GetPostStepCallback() const { return mPostStepCallback; }
+
109 void SetPostStepCallback(const StepCallback &inPostStepCallback) { mPostStepCallback = inPostStepCallback; }
+
110
+
112 void OverrideGravity(Vec3Arg inGravity) { mGravityOverride = inGravity; mIsGravityOverridden = true; }
+
113 bool IsGravityOverridden() const { return mIsGravityOverridden; }
+
114 Vec3 GetGravityOverride() const { return mGravityOverride; }
+
115 void ResetGravityOverride() { mIsGravityOverridden = false; mBody->GetMotionProperties()->SetGravityFactor(1.0f); }
+
116
+
118 Vec3 GetLocalForward() const { return mForward; }
+
119
+
121 Vec3 GetLocalUp() const { return mUp; }
+
122
+
124 Vec3 GetWorldUp() const { return mWorldUp; }
+
125
+
127 Body * GetVehicleBody() const { return mBody; }
+
128
+
130 const VehicleController * GetController() const { return mController; }
+
131
+
133 VehicleController * GetController() { return mController; }
+
134
+
136 const Wheels & GetWheels() const { return mWheels; }
+
137
+
139 Wheels & GetWheels() { return mWheels; }
+
140
+
142 Wheel * GetWheel(uint inIdx) { return mWheels[inIdx]; }
+
143 const Wheel * GetWheel(uint inIdx) const { return mWheels[inIdx]; }
+
144
+
150 void GetWheelLocalBasis(const Wheel *inWheel, Vec3 &outForward, Vec3 &outUp, Vec3 &outRight) const;
+
151
+
156 Mat44 GetWheelLocalTransform(uint inWheelIndex, Vec3Arg inWheelRight, Vec3Arg inWheelUp) const;
+
157
+
162 RMat44 GetWheelWorldTransform(uint inWheelIndex, Vec3Arg inWheelRight, Vec3Arg inWheelUp) const;
+
163
+
168 void SetNumStepsBetweenCollisionTestActive(uint inSteps) { mNumStepsBetweenCollisionTestActive = inSteps; }
+
169 uint GetNumStepsBetweenCollisionTestActive() const { return mNumStepsBetweenCollisionTestActive; }
+
170
+
176 void SetNumStepsBetweenCollisionTestInactive(uint inSteps) { mNumStepsBetweenCollisionTestInactive = inSteps; }
+
177 uint GetNumStepsBetweenCollisionTestInactive() const { return mNumStepsBetweenCollisionTestInactive; }
+
178
+
179 // Generic interface of a constraint
+
180 virtual bool IsActive() const override { return mIsActive && Constraint::IsActive(); }
+
181 virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override { /* Do nothing */ }
+
182 virtual void SetupVelocityConstraint(float inDeltaTime) override;
+
183 virtual void ResetWarmStart() override;
+
184 virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
+
185 virtual bool SolveVelocityConstraint(float inDeltaTime) override;
+
186 virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
+
187 virtual void BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override;
+
188 virtual uint BuildIslandSplits(LargeIslandSplitter &ioSplitter) const override;
+
189#ifdef JPH_DEBUG_RENDERER
+
190 virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
+
191 virtual void DrawConstraintLimits(DebugRenderer *inRenderer) const override;
+
192#endif // JPH_DEBUG_RENDERER
+
193 virtual void SaveState(StateRecorder &inStream) const override;
+
194 virtual void RestoreState(StateRecorder &inStream) override;
+
195 virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
+
196
+
197private:
+
198 // See: PhysicsStepListener
+
199 virtual void OnStep(float inDeltaTime, PhysicsSystem &inPhysicsSystem) override;
+
200
+
201 // Calculate the position where the suspension and traction forces should be applied in world space, relative to the center of mass of both bodies
+
202 void CalculateSuspensionForcePoint(const Wheel &inWheel, Vec3 &outR1PlusU, Vec3 &outR2) const;
+
203
+
204 // Calculate the constraint properties for mPitchRollPart
+
205 void CalculatePitchRollConstraintProperties(RMat44Arg inBodyTransform);
+
206
+
207 // Gravity override
+
208 bool mIsGravityOverridden = false;
+
209 Vec3 mGravityOverride = Vec3::sZero();
+
210
+
211 // Simulation information
+
212 Body * mBody;
+
213 Vec3 mForward;
+
214 Vec3 mUp;
+
215 Vec3 mWorldUp;
+
216 Wheels mWheels;
+
217 Array<VehicleAntiRollBar> mAntiRollBars;
+
218 VehicleController * mController;
+
219 bool mIsActive = false;
+
220 uint mNumStepsBetweenCollisionTestActive = 1;
+
221 uint mNumStepsBetweenCollisionTestInactive = 1;
+
222 uint mCurrentStep = 0;
+
223
+
224 // Prevent vehicle from toppling over
+
225 float mCosMaxPitchRollAngle;
+
226 float mCosPitchRollAngle;
+
227 Vec3 mPitchRollRotationAxis { 0, 1, 0 };
+
228 AngleConstraintPart mPitchRollPart;
+
229
+
230 // Interfaces
+
231 RefConst<VehicleCollisionTester> mVehicleCollisionTester;
+
232 CombineFunction mCombineFriction = [](uint, float &ioLongitudinalFriction, float &ioLateralFriction, const Body &inBody2, const SubShapeID &)
+
233 {
+
234 float body_friction = inBody2.GetFriction();
+
235
+
236 ioLongitudinalFriction = sqrt(ioLongitudinalFriction * body_friction);
+
237 ioLateralFriction = sqrt(ioLateralFriction * body_friction);
+
238 };
+
239
+
240 // Callbacks
+
241 StepCallback mPreStepCallback;
+
242 StepCallback mPostCollideCallback;
+
243 StepCallback mPostStepCallback;
+
244};
+
+
245
+ + + +
EConstraintSubType
Enum to identify constraint sub type.
Definition Constraint.h:34
+ +
#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
+ +
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+
JPH_INLINE float Cos(float inX)
Cosine of x (input in radians)
Definition Trigonometry.h:20
+ + + + +
Definition AngleConstraintPart.h:37
+
Definition Array.h:36
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Class that contains all bodies.
Definition BodyManager.h:44
+
Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rig...
Definition Constraint.h:103
+
virtual bool IsActive() const
Definition Constraint.h:171
+
Class used to store the configuration of a constraint. Allows run-time creation of constraints.
Definition Constraint.h:65
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the constraint settings in binary form to inStream.
Definition Constraint.cpp:26
+
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition Constraint.cpp:36
+
Definition DebugRenderer.h:47
+
Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
Definition IslandBuilder.h:19
+
Definition LargeIslandSplitter.h:25
+
Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.
Definition Mat44.h:13
+
A listener class that receives a callback before every physics simulation step.
Definition PhysicsStepListener.h:13
+
Definition PhysicsSystem.h:29
+
Definition Reference.h:151
+
Definition Reference.h:101
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
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
+
static JPH_INLINE Vec3 sZero()
Vector with all zeros.
Definition Vec3.inl:107
+
Class that does collision detection between wheels and ground.
Definition VehicleCollisionTester.h:20
+
Definition VehicleConstraint.h:66
+
const StepCallback & GetPreStepCallback() const
Definition VehicleConstraint.h:96
+
void SetNumStepsBetweenCollisionTestActive(uint inSteps)
Definition VehicleConstraint.h:168
+
void ResetGravityOverride()
Note that resetting the gravity override will restore the gravity factor of the vehicle body to 1.
Definition VehicleConstraint.h:115
+
void SetCombineFriction(const CombineFunction &inCombineFriction)
Definition VehicleConstraint.h:87
+
const Wheel * GetWheel(uint inIdx) const
Definition VehicleConstraint.h:143
+
uint GetNumStepsBetweenCollisionTestInactive() const
Definition VehicleConstraint.h:177
+
const CombineFunction & GetCombineFriction() const
Definition VehicleConstraint.h:88
+
Body * GetVehicleBody() const
Access to the vehicle body.
Definition VehicleConstraint.h:127
+
void SetNumStepsBetweenCollisionTestInactive(uint inSteps)
Definition VehicleConstraint.h:176
+
virtual bool IsActive() const override
Definition VehicleConstraint.h:180
+
bool IsGravityOverridden() const
Definition VehicleConstraint.h:113
+
VehicleController * GetController()
Access to the vehicle controller interface (determines acceleration / deceleration)
Definition VehicleConstraint.h:133
+
void SetVehicleCollisionTester(const VehicleCollisionTester *inTester)
Set the interface that tests collision between wheel and ground.
Definition VehicleConstraint.h:79
+
void SetMaxPitchRollAngle(float inMaxPitchRollAngle)
Defines the maximum pitch/roll angle (rad), can be used to avoid the car from getting upside down....
Definition VehicleConstraint.h:76
+
Vec3 GetGravityOverride() const
Definition VehicleConstraint.h:114
+
const StepCallback & GetPostStepCallback() const
Definition VehicleConstraint.h:108
+
Vec3 GetLocalForward() const
Get the local space forward vector of the vehicle.
Definition VehicleConstraint.h:118
+
Wheels & GetWheels()
Get the state of a wheels (writable interface, allows you to make changes to the configuration which ...
Definition VehicleConstraint.h:139
+
Wheel * GetWheel(uint inIdx)
Get the state of a wheel.
Definition VehicleConstraint.h:142
+
Vec3 GetWorldUp() const
Vector indicating the world space up direction (used to limit vehicle pitch/roll),...
Definition VehicleConstraint.h:124
+
virtual EConstraintSubType GetSubType() const override
Get the type of a constraint.
Definition VehicleConstraint.h:73
+
function< void(uint inWheelIndex, float &ioLongitudinalFriction, float &ioLateralFriction, const Body &inBody2, const SubShapeID &inSubShapeID2)> CombineFunction
Definition VehicleConstraint.h:83
+
Vec3 GetLocalUp() const
Get the local space up vector of the vehicle.
Definition VehicleConstraint.h:121
+
uint GetNumStepsBetweenCollisionTestActive() const
Definition VehicleConstraint.h:169
+
const StepCallback & GetPostCollideCallback() const
Definition VehicleConstraint.h:102
+
const VehicleController * GetController() const
Access to the vehicle controller interface (determines acceleration / deceleration)
Definition VehicleConstraint.h:130
+
void SetPostCollideCallback(const StepCallback &inPostCollideCallback)
Definition VehicleConstraint.h:103
+
virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
Definition VehicleConstraint.h:181
+
void OverrideGravity(Vec3Arg inGravity)
Override gravity for this vehicle. Note that overriding gravity will set the gravity factor of the ve...
Definition VehicleConstraint.h:112
+
void SetPreStepCallback(const StepCallback &inPreStepCallback)
Definition VehicleConstraint.h:97
+
const Wheels & GetWheels() const
Get the state of the wheels.
Definition VehicleConstraint.h:136
+
void SetPostStepCallback(const StepCallback &inPostStepCallback)
Definition VehicleConstraint.h:109
+
function< void(VehicleConstraint &inVehicle, float inDeltaTime, PhysicsSystem &inPhysicsSystem)> StepCallback
Callback function to notify of current stage in PhysicsStepListener::OnStep.
Definition VehicleConstraint.h:91
+
Definition VehicleConstraint.h:24
+
Ref< VehicleControllerSettings > mController
Defines how the vehicle can accelerate / decelerate.
Definition VehicleConstraint.h:36
+
Array< Ref< WheelSettings > > mWheels
List of wheels and their properties.
Definition VehicleConstraint.h:34
+
Array< VehicleAntiRollBar > mAntiRollBars
List of anti rollbars and their properties.
Definition VehicleConstraint.h:35
+
Runtime data for interface that controls acceleration / deceleration of the vehicle.
Definition VehicleController.h:41
+
Base class for runtime data for a wheel, each VehicleController can implement a derived class of this...
Definition Wheel.h:46
+
+
+ + + + diff --git a/_vehicle_controller_8cpp.html b/_vehicle_controller_8cpp.html new file mode 100644 index 000000000..eb09aeb7f --- /dev/null +++ b/_vehicle_controller_8cpp.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleController.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleController.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (VehicleControllerSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT (VehicleControllerSettings )
+
+ +
+
+
+
+ + + + diff --git a/_vehicle_controller_8cpp.js b/_vehicle_controller_8cpp.js new file mode 100644 index 000000000..82dabac80 --- /dev/null +++ b/_vehicle_controller_8cpp.js @@ -0,0 +1,4 @@ +var _vehicle_controller_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT", "_vehicle_controller_8cpp.html#aaab0104360bd2a64084fdc7cc3a8e5b9", null ] +]; \ No newline at end of file diff --git a/_vehicle_controller_8h.html b/_vehicle_controller_8h.html new file mode 100644 index 000000000..f0404e340 --- /dev/null +++ b/_vehicle_controller_8h.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleController.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleController.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  VehicleControllerSettings
 Basic settings object for interface that controls acceleration / deceleration of the vehicle. More...
 
class  VehicleController
 Runtime data for interface that controls acceleration / deceleration of the vehicle. More...
 
+
+
+ + + + diff --git a/_vehicle_controller_8h.js b/_vehicle_controller_8h.js new file mode 100644 index 000000000..fd885c2d2 --- /dev/null +++ b/_vehicle_controller_8h.js @@ -0,0 +1,5 @@ +var _vehicle_controller_8h = +[ + [ "VehicleControllerSettings", "class_vehicle_controller_settings.html", "class_vehicle_controller_settings" ], + [ "VehicleController", "class_vehicle_controller.html", "class_vehicle_controller" ] +]; \ No newline at end of file diff --git a/_vehicle_controller_8h_source.html b/_vehicle_controller_8h_source.html new file mode 100644 index 000000000..18277af47 --- /dev/null +++ b/_vehicle_controller_8h_source.html @@ -0,0 +1,231 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleController.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleController.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
+ + + +
10#ifdef JPH_DEBUG_RENDERER
+ +
12#endif // JPH_DEBUG_RENDERER
+
13
+ +
15
+
16class PhysicsSystem;
+ + +
19class WheelSettings;
+
20class Wheel;
+
21class StateRecorder;
+
22
+
+
24class JPH_EXPORT VehicleControllerSettings : public SerializableObject, public RefTarget<VehicleControllerSettings>
+
25{
+
26public:
+ +
28
+
29
+
30 virtual void SaveBinaryState(StreamOut &inStream) const = 0;
+
31
+
33 virtual void RestoreBinaryState(StreamIn &inStream) = 0;
+
34
+
36 virtual VehicleController * ConstructController(VehicleConstraint &inConstraint) const = 0;
+
37};
+
+
38
+
+ +
41{
+
42public:
+ +
44
+
46 explicit VehicleController(VehicleConstraint &inConstraint) : mConstraint(inConstraint) { }
+
47 virtual ~VehicleController() = default;
+
48
+
49protected:
+
50 // The functions below are only for the VehicleConstraint
+
51 friend class VehicleConstraint;
+
52
+
53 // Create a new instance of wheel
+
54 virtual Wheel * ConstructWheel(const WheelSettings &inWheel) const = 0;
+
55
+
56 // If the vehicle is allowed to go to sleep
+
57 virtual bool AllowSleep() const = 0;
+
58
+
59 // Called before the wheel probes have been done
+
60 virtual void PreCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) = 0;
+
61
+
62 // Called after the wheel probes have been done
+
63 virtual void PostCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) = 0;
+
64
+
65 // Solve longitudinal and lateral constraint parts for all of the wheels
+
66 virtual bool SolveLongitudinalAndLateralConstraints(float inDeltaTime) = 0;
+
67
+
68 // Saving state for replay
+
69 virtual void SaveState(StateRecorder &inStream) const = 0;
+
70 virtual void RestoreState(StateRecorder &inStream) = 0;
+
71
+
72#ifdef JPH_DEBUG_RENDERER
+
73 // Drawing interface
+
74 virtual void Draw(DebugRenderer *inRenderer) const = 0;
+
75#endif // JPH_DEBUG_RENDERER
+
76
+ +
78};
+
+
79
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#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_ABSTRACT(linkage, class_name)
Definition SerializableObject.h:120
+ + +
Definition DebugRenderer.h:47
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition PhysicsSystem.h:29
+
Definition Reference.h:35
+
Definition SerializableObject.h:156
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition VehicleConstraint.h:66
+
Runtime data for interface that controls acceleration / deceleration of the vehicle.
Definition VehicleController.h:41
+
virtual bool AllowSleep() const =0
+
virtual void PostCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem)=0
+
virtual void Draw(DebugRenderer *inRenderer) const =0
+
virtual void PreCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem)=0
+
virtual void RestoreState(StateRecorder &inStream)=0
+
virtual Wheel * ConstructWheel(const WheelSettings &inWheel) const =0
+
virtual bool SolveLongitudinalAndLateralConstraints(float inDeltaTime)=0
+
JPH_OVERRIDE_NEW_DELETE VehicleController(VehicleConstraint &inConstraint)
Constructor / destructor.
Definition VehicleController.h:46
+
virtual ~VehicleController()=default
+
virtual void SaveState(StateRecorder &inStream) const =0
+
VehicleConstraint & mConstraint
The vehicle constraint we belong to.
Definition VehicleController.h:77
+
Basic settings object for interface that controls acceleration / deceleration of the vehicle.
Definition VehicleController.h:25
+
Base class for runtime data for a wheel, each VehicleController can implement a derived class of this...
Definition Wheel.h:46
+
Base class for wheel settings, each VehicleController can implement a derived class of this.
Definition Wheel.h:19
+
+
+ + + + diff --git a/_vehicle_differential_8cpp.html b/_vehicle_differential_8cpp.html new file mode 100644 index 000000000..765114a6b --- /dev/null +++ b/_vehicle_differential_8cpp.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleDifferential.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleDifferential.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (VehicleDifferentialSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (VehicleDifferentialSettings )
+
+ +
+
+
+
+ + + + diff --git a/_vehicle_differential_8cpp.js b/_vehicle_differential_8cpp.js new file mode 100644 index 000000000..83fb23898 --- /dev/null +++ b/_vehicle_differential_8cpp.js @@ -0,0 +1,4 @@ +var _vehicle_differential_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_vehicle_differential_8cpp.html#a50cc79d549a72c59bef3260836a30b46", null ] +]; \ No newline at end of file diff --git a/_vehicle_differential_8h.html b/_vehicle_differential_8h.html new file mode 100644 index 000000000..a8433081f --- /dev/null +++ b/_vehicle_differential_8h.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleDifferential.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleDifferential.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Classes

class  VehicleDifferentialSettings
 
+
+
+ + + + diff --git a/_vehicle_differential_8h.js b/_vehicle_differential_8h.js new file mode 100644 index 000000000..2c0574933 --- /dev/null +++ b/_vehicle_differential_8h.js @@ -0,0 +1,4 @@ +var _vehicle_differential_8h = +[ + [ "VehicleDifferentialSettings", "class_vehicle_differential_settings.html", "class_vehicle_differential_settings" ] +]; \ No newline at end of file diff --git a/_vehicle_differential_8h_source.html b/_vehicle_differential_8h_source.html new file mode 100644 index 000000000..9644cb547 --- /dev/null +++ b/_vehicle_differential_8h_source.html @@ -0,0 +1,164 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleDifferential.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleDifferential.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
+ + + +
10
+ +
12
+
+ +
14{
+
15public:
+ +
17
+
18
+
19 void SaveBinaryState(StreamOut &inStream) const;
+
20
+
22 void RestoreBinaryState(StreamIn &inStream);
+
23
+
29 void CalculateTorqueRatio(float inLeftAngularVelocity, float inRightAngularVelocity, float &outLeftTorqueFraction, float &outRightTorqueFraction) const;
+
30
+
31 int mLeftWheel = -1;
+
32 int mRightWheel = -1;
+
33 float mDifferentialRatio = 3.42f;
+
34 float mLeftRightSplit = 0.5f;
+
35 float mLimitedSlipRatio = 1.4f;
+
36 float mEngineTorqueRatio = 1.0f;
+
37};
+
+
38
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ + +
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition VehicleDifferential.h:14
+
+
+ + + + diff --git a/_vehicle_engine_8cpp.html b/_vehicle_engine_8cpp.html new file mode 100644 index 000000000..54a0c91ec --- /dev/null +++ b/_vehicle_engine_8cpp.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleEngine.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleEngine.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (VehicleEngineSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (VehicleEngineSettings )
+
+ +
+
+
+
+ + + + diff --git a/_vehicle_engine_8cpp.js b/_vehicle_engine_8cpp.js new file mode 100644 index 000000000..c7be37e96 --- /dev/null +++ b/_vehicle_engine_8cpp.js @@ -0,0 +1,4 @@ +var _vehicle_engine_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_vehicle_engine_8cpp.html#a2ab35424822ea37f7e7619790fb8b4fc", null ] +]; \ No newline at end of file diff --git a/_vehicle_engine_8h.html b/_vehicle_engine_8h.html new file mode 100644 index 000000000..605f88c52 --- /dev/null +++ b/_vehicle_engine_8h.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleEngine.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleEngine.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  VehicleEngineSettings
 Generic properties for a vehicle engine. More...
 
class  VehicleEngine
 Runtime data for engine. More...
 
+
+
+ + + + diff --git a/_vehicle_engine_8h.js b/_vehicle_engine_8h.js new file mode 100644 index 000000000..b44d990db --- /dev/null +++ b/_vehicle_engine_8h.js @@ -0,0 +1,5 @@ +var _vehicle_engine_8h = +[ + [ "VehicleEngineSettings", "class_vehicle_engine_settings.html", "class_vehicle_engine_settings" ], + [ "VehicleEngine", "class_vehicle_engine.html", "class_vehicle_engine" ] +]; \ No newline at end of file diff --git a/_vehicle_engine_8h_source.html b/_vehicle_engine_8h_source.html new file mode 100644 index 000000000..52b4a7cf7 --- /dev/null +++ b/_vehicle_engine_8h_source.html @@ -0,0 +1,223 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleEngine.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleEngine.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
+ + + +
10#include <Jolt/Core/StreamOut.h>
+ +
12
+ +
14
+
15#ifdef JPH_DEBUG_RENDERER
+
16 class DebugRenderer;
+
17#endif // JPH_DEBUG_RENDERER
+
18
+
+ +
21{
+
22public:
+ +
24
+
25
+ +
27
+
29 void SaveBinaryState(StreamOut &inStream) const;
+
30
+
32 void RestoreBinaryState(StreamIn &inStream);
+
33
+
34 float mMaxTorque = 500.0f;
+
35 float mMinRPM = 1000.0f;
+
36 float mMaxRPM = 6000.0f;
+ +
38 float mInertia = 0.5f;
+
39 float mAngularDamping = 0.2f;
+
40};
+
+
41
+
+ +
44{
+
45public:
+
47 static constexpr float cAngularVelocityToRPM = 60.0f / (2.0f * JPH_PI);
+
48
+
50 inline void ClampRPM() { mCurrentRPM = Clamp(mCurrentRPM, mMinRPM, mMaxRPM); }
+
51
+
53 float GetCurrentRPM() const { return mCurrentRPM; }
+
54
+
56 void SetCurrentRPM(float inRPM) { mCurrentRPM = inRPM; ClampRPM(); }
+
57
+
59 inline float GetAngularVelocity() const { return mCurrentRPM / cAngularVelocityToRPM; }
+
60
+
63 float GetTorque(float inAcceleration) const { return inAcceleration * mMaxTorque * mNormalizedTorque.GetValue(mCurrentRPM / mMaxRPM); }
+
64
+
68 void ApplyTorque(float inTorque, float inDeltaTime);
+
69
+
72 void ApplyDamping(float inDeltaTime);
+
73
+
74#ifdef JPH_DEBUG_RENDERER
+
75 // Function that converts RPM to an angle in radians for debugging purposes
+
76 float ConvertRPMToAngle(float inRPM) const { return (-0.75f + 1.5f * inRPM / mMaxRPM) * JPH_PI; }
+
77
+
79 void DrawRPM(DebugRenderer *inRenderer, RVec3Arg inPosition, Vec3Arg inForward, Vec3Arg inUp, float inSize, float inShiftDownRPM, float inShiftUpRPM) const;
+
80#endif // JPH_DEBUG_RENDERER
+
81
+
83 bool AllowSleep() const { return mCurrentRPM <= 1.01f * mMinRPM; }
+
84
+
86 void SaveState(StateRecorder &inStream) const;
+
87 void RestoreState(StateRecorder &inStream);
+
88
+
89private:
+
90 float mCurrentRPM = mMinRPM;
+
91};
+
+
92
+ +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
JPH_INLINE constexpr T Clamp(T inV, T inMin, T inMax)
Clamp a value between two values.
Definition Math.h:45
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ + + +
Definition DebugRenderer.h:47
+
Definition LinearCurve.h:17
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition Vec3.h:17
+
Runtime data for engine.
Definition VehicleEngine.h:44
+
void ClampRPM()
Clamp the RPM between min and max RPM.
Definition VehicleEngine.h:50
+
float GetTorque(float inAcceleration) const
Definition VehicleEngine.h:63
+
float ConvertRPMToAngle(float inRPM) const
Definition VehicleEngine.h:76
+
bool AllowSleep() const
If the engine is idle we allow the vehicle to sleep.
Definition VehicleEngine.h:83
+
void SetCurrentRPM(float inRPM)
Update rotation speed of engine in rounds per minute.
Definition VehicleEngine.h:56
+
float GetCurrentRPM() const
Current rotation speed of engine in rounds per minute.
Definition VehicleEngine.h:53
+
float GetAngularVelocity() const
Get current angular velocity of the engine in radians / second.
Definition VehicleEngine.h:59
+
Generic properties for a vehicle engine.
Definition VehicleEngine.h:21
+
LinearCurve mNormalizedTorque
Y-axis: Curve that describes a ratio of the max torque the engine can produce (0 = 0,...
Definition VehicleEngine.h:37
+
+
+ + + + diff --git a/_vehicle_track_8cpp.html b/_vehicle_track_8cpp.html new file mode 100644 index 000000000..45205a210 --- /dev/null +++ b/_vehicle_track_8cpp.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleTrack.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleTrack.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (VehicleTrackSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (VehicleTrackSettings )
+
+ +
+
+
+
+ + + + diff --git a/_vehicle_track_8cpp.js b/_vehicle_track_8cpp.js new file mode 100644 index 000000000..84f1216b8 --- /dev/null +++ b/_vehicle_track_8cpp.js @@ -0,0 +1,4 @@ +var _vehicle_track_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_vehicle_track_8cpp.html#a98e0dcbeb9696e18946fcf90bb3a303f", null ] +]; \ No newline at end of file diff --git a/_vehicle_track_8h.html b/_vehicle_track_8h.html new file mode 100644 index 000000000..a31e60ec1 --- /dev/null +++ b/_vehicle_track_8h.html @@ -0,0 +1,194 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleTrack.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleTrack.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  VehicleTrackSettings
 Generic properties for tank tracks. More...
 
class  VehicleTrack
 Runtime data for tank tracks. More...
 
+ + + +

+Typedefs

using VehicleTracks = VehicleTrack[(int) ETrackSide::Num]
 
+ + + + +

+Enumerations

enum class  ETrackSide : uint { Left = 0 +, Right = 1 +, Num = 2 + }
 On which side of the vehicle the track is located (for steering) More...
 
+

Typedef Documentation

+ +

◆ VehicleTracks

+ +
+
+ + + + +
using VehicleTracks = VehicleTrack[(int)ETrackSide::Num]
+
+ +
+
+

Enumeration Type Documentation

+ +

◆ ETrackSide

+ +
+
+ + + + + +
+ + + + +
enum class ETrackSide : uint
+
+strong
+
+ +

On which side of the vehicle the track is located (for steering)

+ + + + +
Enumerator
Left 
Right 
Num 
+ +
+
+
+
+ + + + diff --git a/_vehicle_track_8h.js b/_vehicle_track_8h.js new file mode 100644 index 000000000..d7f6b3b0d --- /dev/null +++ b/_vehicle_track_8h.js @@ -0,0 +1,11 @@ +var _vehicle_track_8h = +[ + [ "VehicleTrackSettings", "class_vehicle_track_settings.html", "class_vehicle_track_settings" ], + [ "VehicleTrack", "class_vehicle_track.html", "class_vehicle_track" ], + [ "VehicleTracks", "_vehicle_track_8h.html#ac48aa2b382da4e4d33f022c79f598719", null ], + [ "ETrackSide", "_vehicle_track_8h.html#a8008ce273c0da3c40bc613d9495818d2", [ + [ "Left", "_vehicle_track_8h.html#a8008ce273c0da3c40bc613d9495818d2a945d5e233cf7d6240f6b783b36a374ff", null ], + [ "Right", "_vehicle_track_8h.html#a8008ce273c0da3c40bc613d9495818d2a92b09c7c48c520c3c55e497875da437c", null ], + [ "Num", "_vehicle_track_8h.html#a8008ce273c0da3c40bc613d9495818d2ab3e3076d9b3c53bede50d468b647b109", null ] + ] ] +]; \ No newline at end of file diff --git a/_vehicle_track_8h_source.html b/_vehicle_track_8h_source.html new file mode 100644 index 000000000..009d1bb17 --- /dev/null +++ b/_vehicle_track_8h_source.html @@ -0,0 +1,199 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleTrack.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleTrack.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
+ + + +
10#include <Jolt/Core/StreamOut.h>
+ +
12
+ +
14
+
+
16enum class ETrackSide : uint
+
17{
+
18 Left = 0,
+
19 Right = 1,
+
20 Num = 2
+
21};
+
+
22
+
+ +
25{
+
26public:
+ +
28
+
29
+
30 void SaveBinaryState(StreamOut &inStream) const;
+
31
+
33 void RestoreBinaryState(StreamIn &inStream);
+
34
+ + +
37 float mInertia = 10.0f;
+
38 float mAngularDamping = 0.5f;
+
39 float mMaxBrakeTorque = 15000.0f;
+
40 float mDifferentialRatio = 6.0f;
+
41};
+
+
42
+
+ +
45{
+
46public:
+
48 void SaveState(StateRecorder &inStream) const;
+
49 void RestoreState(StateRecorder &inStream);
+
50
+
51 float mAngularVelocity = 0.0f;
+
52};
+
+
53
+ +
55
+ +
#define JPH_EXPORT
Definition Core.h:236
+
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_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ + + +
ETrackSide
On which side of the vehicle the track is located (for steering)
Definition VehicleTrack.h:17
+ + + +
VehicleTrack[(int) ETrackSide::Num] VehicleTracks
Definition VehicleTrack.h:54
+
Definition Array.h:36
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Runtime data for tank tracks.
Definition VehicleTrack.h:45
+
Generic properties for tank tracks.
Definition VehicleTrack.h:25
+
Array< uint > mWheels
Indices of wheels that are inside this track, should include the driven wheel too.
Definition VehicleTrack.h:36
+
uint mDrivenWheel
Which wheel on the track is connected to the engine.
Definition VehicleTrack.h:35
+
+
+ + + + diff --git a/_vehicle_transmission_8cpp.html b/_vehicle_transmission_8cpp.html new file mode 100644 index 000000000..c10b14508 --- /dev/null +++ b/_vehicle_transmission_8cpp.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleTransmission.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleTransmission.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (VehicleTransmissionSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL (VehicleTransmissionSettings )
+
+ +
+
+
+
+ + + + diff --git a/_vehicle_transmission_8cpp.js b/_vehicle_transmission_8cpp.js new file mode 100644 index 000000000..806fb7f3f --- /dev/null +++ b/_vehicle_transmission_8cpp.js @@ -0,0 +1,4 @@ +var _vehicle_transmission_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL", "_vehicle_transmission_8cpp.html#a65a211b8b63e58b3974b9cf5dce4943c", null ] +]; \ No newline at end of file diff --git a/_vehicle_transmission_8h.html b/_vehicle_transmission_8h.html new file mode 100644 index 000000000..8544c05a9 --- /dev/null +++ b/_vehicle_transmission_8h.html @@ -0,0 +1,172 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleTransmission.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleTransmission.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  VehicleTransmissionSettings
 Configuration for the transmission of a vehicle (gear box) More...
 
class  VehicleTransmission
 Runtime data for transmission. More...
 
+ + + + +

+Enumerations

enum class  ETransmissionMode : uint8 { Auto +, Manual + }
 How gears are shifted. More...
 
+

Enumeration Type Documentation

+ +

◆ ETransmissionMode

+ +
+
+ + + + + +
+ + + + +
enum class ETransmissionMode : uint8
+
+strong
+
+ +

How gears are shifted.

+ + + +
Enumerator
Auto 

Automatically shift gear up and down.

+
Manual 

Manual gear shift (call SetTransmissionInput)

+
+ +
+
+
+
+ + + + diff --git a/_vehicle_transmission_8h.js b/_vehicle_transmission_8h.js new file mode 100644 index 000000000..a148d64b5 --- /dev/null +++ b/_vehicle_transmission_8h.js @@ -0,0 +1,9 @@ +var _vehicle_transmission_8h = +[ + [ "VehicleTransmissionSettings", "class_vehicle_transmission_settings.html", "class_vehicle_transmission_settings" ], + [ "VehicleTransmission", "class_vehicle_transmission.html", "class_vehicle_transmission" ], + [ "ETransmissionMode", "_vehicle_transmission_8h.html#ad3e125d6d786c09fddfa10be390f851d", [ + [ "Auto", "_vehicle_transmission_8h.html#ad3e125d6d786c09fddfa10be390f851da06b9281e396db002010bde1de57262eb", null ], + [ "Manual", "_vehicle_transmission_8h.html#ad3e125d6d786c09fddfa10be390f851dae1ba155a9f2e8c3be94020eef32a0301", null ] + ] ] +]; \ No newline at end of file diff --git a/_vehicle_transmission_8h_source.html b/_vehicle_transmission_8h_source.html new file mode 100644 index 000000000..ae8c8af04 --- /dev/null +++ b/_vehicle_transmission_8h_source.html @@ -0,0 +1,217 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/VehicleTransmission.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleTransmission.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
+ + + + +
11
+ +
13
+
+ +
16{
+
17 Auto,
+
18 Manual,
+
19};
+
+
20
+
+ +
23{
+
24public:
+ +
26
+
27
+
28 void SaveBinaryState(StreamOut &inStream) const;
+
29
+
31 void RestoreBinaryState(StreamIn &inStream);
+
32
+ +
34 Array<float> mGearRatios { 2.66f, 1.78f, 1.3f, 1.0f, 0.74f };
+
35 Array<float> mReverseGearRatios { -2.90f };
+
36 float mSwitchTime = 0.5f;
+
37 float mClutchReleaseTime = 0.3f;
+
38 float mSwitchLatency = 0.5f;
+
39 float mShiftUpRPM = 4000.0f;
+
40 float mShiftDownRPM = 2000.0f;
+
41 float mClutchStrength = 10.0f;
+
42};
+
+
43
+
+ +
46{
+
47public:
+
51 void Set(int inCurrentGear, float inClutchFriction) { mCurrentGear = inCurrentGear; mClutchFriction = inClutchFriction; }
+
52
+
58 void Update(float inDeltaTime, float inCurrentRPM, float inForwardInput, bool inCanShiftUp);
+
59
+
61 int GetCurrentGear() const { return mCurrentGear; }
+
62
+
64 float GetClutchFriction() const { return mClutchFriction; }
+
65
+
67 bool IsSwitchingGear() const { return mGearSwitchTimeLeft > 0.0f; }
+
68
+
70 float GetCurrentRatio() const;
+
71
+
73 bool AllowSleep() const { return mGearSwitchTimeLeft <= 0.0f && mClutchReleaseTimeLeft <= 0.0f && mGearSwitchLatencyTimeLeft <= 0.0f; }
+
74
+
76 void SaveState(StateRecorder &inStream) const;
+
77 void RestoreState(StateRecorder &inStream);
+
78
+
79private:
+
80 int mCurrentGear = 0;
+
81 float mClutchFriction = 1.0f;
+
82 float mGearSwitchTimeLeft = 0.0f;
+
83 float mClutchReleaseTimeLeft = 0.0f;
+
84 float mGearSwitchLatencyTimeLeft = 0.0f;
+
85};
+
+
86
+ +
std::uint8_t uint8
Definition Core.h:453
+
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+ +
#define JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:80
+ + + +
ETransmissionMode
How gears are shifted.
Definition VehicleTransmission.h:16
+
@ Auto
Automatically shift gear up and down.
+
@ Manual
Manual gear shift (call SetTransmissionInput)
+
Definition Array.h:36
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Runtime data for transmission.
Definition VehicleTransmission.h:46
+
bool AllowSleep() const
Only allow sleeping when the transmission is idle.
Definition VehicleTransmission.h:73
+
int GetCurrentGear() const
Current gear, -1 = reverse, 0 = neutral, 1 = 1st gear etc.
Definition VehicleTransmission.h:61
+
float GetClutchFriction() const
Value between 0 and 1 indicating how much friction the clutch gives (0 = no friction,...
Definition VehicleTransmission.h:64
+
void Set(int inCurrentGear, float inClutchFriction)
Definition VehicleTransmission.h:51
+
bool IsSwitchingGear() const
If the auto box is currently switching gears.
Definition VehicleTransmission.h:67
+
Configuration for the transmission of a vehicle (gear box)
Definition VehicleTransmission.h:23
+
+
+ + + + diff --git a/_wheel_8cpp.html b/_wheel_8cpp.html new file mode 100644 index 000000000..8d562ec8b --- /dev/null +++ b/_wheel_8cpp.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/Wheel.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Wheel.cpp File Reference
+
+
+ + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (WheelSettings)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (WheelSettings )
+
+ +
+
+
+
+ + + + diff --git a/_wheel_8cpp.js b/_wheel_8cpp.js new file mode 100644 index 000000000..79ac9e843 --- /dev/null +++ b/_wheel_8cpp.js @@ -0,0 +1,4 @@ +var _wheel_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_wheel_8cpp.html#aae9ec94c4fcc6c80a0e8004da1e2d0f8", null ] +]; \ No newline at end of file diff --git a/_wheel_8h.html b/_wheel_8h.html new file mode 100644 index 000000000..b2a8a8f8c --- /dev/null +++ b/_wheel_8h.html @@ -0,0 +1,154 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/Wheel.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Wheel.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  WheelSettings
 Base class for wheel settings, each VehicleController can implement a derived class of this. More...
 
class  Wheel
 Base class for runtime data for a wheel, each VehicleController can implement a derived class of this. More...
 
+ + + +

+Typedefs

using Wheels = Array< Wheel * >
 
+

Typedef Documentation

+ +

◆ Wheels

+ +
+
+ + + + +
using Wheels = Array<Wheel *>
+
+ +
+
+
+
+ + + + diff --git a/_wheel_8h.js b/_wheel_8h.js new file mode 100644 index 000000000..881d406de --- /dev/null +++ b/_wheel_8h.js @@ -0,0 +1,6 @@ +var _wheel_8h = +[ + [ "WheelSettings", "class_wheel_settings.html", "class_wheel_settings" ], + [ "Wheel", "class_wheel.html", "class_wheel" ], + [ "Wheels", "_wheel_8h.html#a177d95c47064f7e2adb44ca634cd550d", null ] +]; \ No newline at end of file diff --git a/_wheel_8h_source.html b/_wheel_8h_source.html new file mode 100644 index 000000000..9c49b5939 --- /dev/null +++ b/_wheel_8h_source.html @@ -0,0 +1,309 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/Wheel.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Wheel.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
+ + + +
10#include <Jolt/Core/StreamIn.h>
+
11#include <Jolt/Core/StreamOut.h>
+
12
+ +
14
+ +
16
+
+
18class JPH_EXPORT WheelSettings : public SerializableObject, public RefTarget<WheelSettings>
+
19{
+
20public:
+ +
22
+
23
+
24 virtual void SaveBinaryState(StreamOut &inStream) const;
+
25
+
27 virtual void RestoreBinaryState(StreamIn &inStream);
+
28
+
29 Vec3 mPosition { 0, 0, 0 };
+
30 Vec3 mSuspensionForcePoint { 0, 0, 0 };
+
31 Vec3 mSuspensionDirection { 0, -1, 0 };
+
32 Vec3 mSteeringAxis { 0, 1, 0 };
+
33 Vec3 mWheelUp { 0, 1, 0 };
+
34 Vec3 mWheelForward { 0, 0, 1 };
+
35 float mSuspensionMinLength = 0.3f;
+
36 float mSuspensionMaxLength = 0.5f;
+
37 float mSuspensionPreloadLength = 0.0f;
+
38 SpringSettings mSuspensionSpring { ESpringMode::FrequencyAndDamping, 1.5f, 0.5f };
+
39 float mRadius = 0.3f;
+
40 float mWidth = 0.1f;
+
41 bool mEnableSuspensionForcePoint = false;
+
42};
+
+
43
+
+ +
46{
+
47public:
+ +
49
+
51 explicit Wheel(const WheelSettings &inSettings);
+
52 virtual ~Wheel() = default;
+
53
+
55 const WheelSettings * GetSettings() const { return mSettings; }
+
56
+
58 float GetAngularVelocity() const { return mAngularVelocity; }
+
59
+
61 void SetAngularVelocity(float inVel) { mAngularVelocity = inVel; }
+
62
+
64 float GetRotationAngle() const { return mAngle; }
+
65
+
67 void SetRotationAngle(float inAngle) { mAngle = inAngle; }
+
68
+
70 float GetSteerAngle() const { return mSteerAngle; }
+
71
+
73 void SetSteerAngle(float inAngle) { mSteerAngle = inAngle; }
+
74
+
76 inline bool HasContact() const { return !mContactBodyID.IsInvalid(); }
+
77
+
79 BodyID GetContactBodyID() const { return mContactBodyID; }
+
80
+
82 SubShapeID GetContactSubShapeID() const { return mContactSubShapeID; }
+
83
+
85 RVec3 GetContactPosition() const { JPH_ASSERT(HasContact()); return mContactPosition; }
+
86
+
88 Vec3 GetContactPointVelocity() const { JPH_ASSERT(HasContact()); return mContactPointVelocity; }
+
89
+
91 Vec3 GetContactNormal() const { JPH_ASSERT(HasContact()); return mContactNormal; }
+
92
+
94 Vec3 GetContactLongitudinal() const { JPH_ASSERT(HasContact()); return mContactLongitudinal; }
+
95
+
97 Vec3 GetContactLateral() const { JPH_ASSERT(HasContact()); return mContactLateral; }
+
98
+
100 float GetSuspensionLength() const { return mSuspensionLength; }
+
101
+
103 bool HasHitHardPoint() const { return mSuspensionMaxUpPart.IsActive(); }
+
104
+
106 float GetSuspensionLambda() const { return mSuspensionPart.GetTotalLambda() + mSuspensionMaxUpPart.GetTotalLambda(); }
+
107
+
109 float GetLongitudinalLambda() const { return mLongitudinalPart.GetTotalLambda(); }
+
110
+
112 float GetLateralLambda() const { return mLateralPart.GetTotalLambda(); }
+
113
+
115 bool SolveLongitudinalConstraintPart(const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse);
+
116
+
118 bool SolveLateralConstraintPart(const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse);
+
119
+
120protected:
+
121 friend class VehicleConstraint;
+
122
+ + + +
126 Body * mContactBody = nullptr;
+ + + + + + + +
134 float mAntiRollBarImpulse = 0.0f;
+
135
+
136 float mSteerAngle = 0.0f;
+
137 float mAngularVelocity = 0.0f;
+
138 float mAngle = 0.0f;
+
139
+ + + + +
144};
+
+
145
+ +
147
+ + + +
#define JPH_EXPORT
Definition Core.h:236
+
#define JPH_NAMESPACE_END
Definition Core.h:378
+
#define JPH_NAMESPACE_BEGIN
Definition Core.h:372
+
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
float Real
Definition Real.h:27
+ +
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+
@ FrequencyAndDamping
Frequency and damping are specified.
+ + + +
Definition AxisConstraintPart.h:43
+
Definition Body.h:35
+
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
+
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
+
Definition Reference.h:151
+
Definition Reference.h:35
+
Definition SerializableObject.h:156
+
Settings for a linear or angular spring.
Definition SpringSettings.h:23
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
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
+
Definition VehicleConstraint.h:66
+
Base class for runtime data for a wheel, each VehicleController can implement a derived class of this...
Definition Wheel.h:46
+
RefConst< WheelSettings > mSettings
Configuration settings for this wheel.
Definition Wheel.h:123
+
float GetRotationAngle() const
Get the current rotation angle of the wheel in radians [0, 2 pi].
Definition Wheel.h:64
+
float GetSteerAngle() const
Get the current steer angle of the wheel in radians [-pi, pi], positive is to the left.
Definition Wheel.h:70
+
Vec3 mContactNormal
Normal of the contact point between wheel and ground.
Definition Wheel.h:130
+
Vec3 GetContactLateral() const
Returns lateral direction (sideways direction) in world space (note by the time you call this the veh...
Definition Wheel.h:97
+
void SetAngularVelocity(float inVel)
Update the angular velocity (rad/s)
Definition Wheel.h:61
+
float GetLateralLambda() const
Get total impulse (N s) applied along the sideways direction of the wheel.
Definition Wheel.h:112
+
AxisConstraintPart mLateralPart
Controls movement sideways (slip)
Definition Wheel.h:143
+
Vec3 mContactLongitudinal
Vector perpendicular to normal in the forward direction.
Definition Wheel.h:131
+
float mSuspensionLength
Current length of the suspension.
Definition Wheel.h:127
+
SubShapeID GetContactSubShapeID() const
Returns the sub shape ID where we're contacting the body.
Definition Wheel.h:82
+
Vec3 GetContactLongitudinal() const
Returns longitudinal direction (direction along the wheel relative to floor) in world space (note by ...
Definition Wheel.h:94
+
BodyID mContactBodyID
ID of body for ground.
Definition Wheel.h:124
+
AxisConstraintPart mSuspensionMaxUpPart
Adds a hard limit when reaching the minimal suspension length.
Definition Wheel.h:141
+
bool HasHitHardPoint() const
Check if the suspension hit its upper limit.
Definition Wheel.h:103
+
Vec3 mContactPointVelocity
Velocity of the contact point (m / s, not relative to the wheel but in world space)
Definition Wheel.h:129
+
void SetSteerAngle(float inAngle)
Set the current steer angle of the wheel in radians [-pi, pi].
Definition Wheel.h:73
+
Vec3 GetContactPointVelocity() const
Velocity of the contact point (m / s, not relative to the wheel but in world space)
Definition Wheel.h:88
+
AxisConstraintPart mSuspensionPart
Controls movement up/down along the contact normal.
Definition Wheel.h:140
+
virtual ~Wheel()=default
+
Real mAxlePlaneConstant
Constant for the contact plane of the axle, defined as ContactNormal . (WorldSpaceSuspensionPoint + S...
Definition Wheel.h:133
+
void SetRotationAngle(float inAngle)
Set the current rotation angle of the wheel in radians [0, 2 pi].
Definition Wheel.h:67
+
AxisConstraintPart mLongitudinalPart
Controls movement forward/backward.
Definition Wheel.h:142
+
Vec3 GetContactNormal() const
Returns the current contact normal in world space (note by the time you call this the vehicle has mov...
Definition Wheel.h:91
+
const WheelSettings * GetSettings() const
Get settings for the wheel.
Definition Wheel.h:55
+
RVec3 mContactPosition
Position of the contact point between wheel and ground.
Definition Wheel.h:128
+
float GetLongitudinalLambda() const
Get total impulse (N s) applied along the forward direction of the wheel.
Definition Wheel.h:109
+
BodyID GetContactBodyID() const
Returns the body ID of the body that this wheel is touching.
Definition Wheel.h:79
+
float GetSuspensionLength() const
Get the length of the suspension for a wheel (m) relative to the suspension attachment point (hard po...
Definition Wheel.h:100
+
float GetAngularVelocity() const
Get the angular velocity (rad/s) for this wheel, note that positive means the wheel is rotating such ...
Definition Wheel.h:58
+
bool HasContact() const
Returns true if the wheel is touching an object.
Definition Wheel.h:76
+
Vec3 mContactLateral
Vector perpendicular to normal and longitudinal direction in the right direction.
Definition Wheel.h:132
+
float GetSuspensionLambda() const
Get the total impulse (N s) that was applied by the suspension.
Definition Wheel.h:106
+
SubShapeID mContactSubShapeID
Sub shape ID for ground.
Definition Wheel.h:125
+
RVec3 GetContactPosition() const
Returns the current contact position in world space (note by the time you call this the vehicle has m...
Definition Wheel.h:85
+
Base class for wheel settings, each VehicleController can implement a derived class of this.
Definition Wheel.h:19
+
+
+ + + + diff --git a/_wheeled_vehicle_controller_8cpp.html b/_wheeled_vehicle_controller_8cpp.html new file mode 100644 index 000000000..cd4c4f9d1 --- /dev/null +++ b/_wheeled_vehicle_controller_8cpp.html @@ -0,0 +1,170 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/WheeledVehicleController.cpp File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
WheeledVehicleController.cpp File Reference
+
+
+ + + + + + +

+Functions

JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (WheeledVehicleControllerSettings)
 
 JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (WheelSettingsWV)
 
+

Function Documentation

+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL() [1/2]

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (WheeledVehicleControllerSettings )
+
+ +
+
+ +

◆ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL() [2/2]

+ +
+
+ + + + + + + + +
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL (WheelSettingsWV )
+
+ +
+
+
+
+ + + + diff --git a/_wheeled_vehicle_controller_8cpp.js b/_wheeled_vehicle_controller_8cpp.js new file mode 100644 index 000000000..707e09a5e --- /dev/null +++ b/_wheeled_vehicle_controller_8cpp.js @@ -0,0 +1,5 @@ +var _wheeled_vehicle_controller_8cpp = +[ + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_wheeled_vehicle_controller_8cpp.html#a0afad877c24e4be183c0adcff929113f", null ], + [ "JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL", "_wheeled_vehicle_controller_8cpp.html#ab7e91fcc1e60b7a9b1feba7b85213e50", null ] +]; \ No newline at end of file diff --git a/_wheeled_vehicle_controller_8h.html b/_wheeled_vehicle_controller_8h.html new file mode 100644 index 000000000..315fedd0b --- /dev/null +++ b/_wheeled_vehicle_controller_8h.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/WheeledVehicleController.h File Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
WheeledVehicleController.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + +

+Classes

class  WheelSettingsWV
 WheelSettings object specifically for WheeledVehicleController. More...
 
class  WheelWV
 Wheel object specifically for WheeledVehicleController. More...
 
class  WheeledVehicleControllerSettings
 
class  WheeledVehicleController
 Runtime controller class. More...
 
+
+
+ + + + diff --git a/_wheeled_vehicle_controller_8h.js b/_wheeled_vehicle_controller_8h.js new file mode 100644 index 000000000..cdd9f836d --- /dev/null +++ b/_wheeled_vehicle_controller_8h.js @@ -0,0 +1,7 @@ +var _wheeled_vehicle_controller_8h = +[ + [ "WheelSettingsWV", "class_wheel_settings_w_v.html", "class_wheel_settings_w_v" ], + [ "WheelWV", "class_wheel_w_v.html", "class_wheel_w_v" ], + [ "WheeledVehicleControllerSettings", "class_wheeled_vehicle_controller_settings.html", "class_wheeled_vehicle_controller_settings" ], + [ "WheeledVehicleController", "class_wheeled_vehicle_controller.html", "class_wheeled_vehicle_controller" ] +]; \ No newline at end of file diff --git a/_wheeled_vehicle_controller_8h_source.html b/_wheeled_vehicle_controller_8h_source.html new file mode 100644 index 000000000..b6ef6841c --- /dev/null +++ b/_wheeled_vehicle_controller_8h_source.html @@ -0,0 +1,370 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle/WheeledVehicleController.h Source File + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
WheeledVehicleController.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
+ + + + + + +
13
+ +
15
+
16class PhysicsSystem;
+
17
+
+ +
20{
+
21public:
+ +
23
+
24
+ +
26
+
27 // See: WheelSettings
+
28 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
29 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
30
+
31 float mInertia = 0.9f;
+
32 float mAngularDamping = 0.2f;
+
33 float mMaxSteerAngle = DegreesToRadians(70.0f);
+ + +
36 float mMaxBrakeTorque = 1500.0f;
+
37 float mMaxHandBrakeTorque = 4000.0f;
+
38};
+
+
39
+
+
41class JPH_EXPORT WheelWV : public Wheel
+
42{
+
43public:
+ +
45
+
47 explicit WheelWV(const WheelSettingsWV &inWheel);
+
48
+
50 const WheelSettingsWV * GetSettings() const { return StaticCast<WheelSettingsWV>(mSettings); }
+
51
+
+
53 void ApplyTorque(float inTorque, float inDeltaTime)
+
54 {
+
55 mAngularVelocity += inTorque * inDeltaTime / GetSettings()->mInertia;
+
56 }
+
+
57
+
59 void Update(uint inWheelIndex, float inDeltaTime, const VehicleConstraint &inConstraint);
+
60
+
61 float mLongitudinalSlip = 0.0f;
+
62 float mLateralSlip = 0.0f;
+
63 float mCombinedLongitudinalFriction = 0.0f;
+
64 float mCombinedLateralFriction = 0.0f;
+
65 float mBrakeImpulse = 0.0f;
+
66};
+
+
67
+
+ +
73{
+
74public:
+ +
76
+
77 // See: VehicleControllerSettings
+
78 virtual VehicleController * ConstructController(VehicleConstraint &inConstraint) const override;
+
79 virtual void SaveBinaryState(StreamOut &inStream) const override;
+
80 virtual void RestoreBinaryState(StreamIn &inStream) override;
+
81
+ + + +
85 float mDifferentialLimitedSlipRatio = 1.4f;
+
86};
+
+
87
+
+ +
90{
+
91public:
+ +
93
+ +
96
+ +
99
+
105 void SetDriverInput(float inForward, float inRight, float inBrake, float inHandBrake) { mForwardInput = inForward; mRightInput = inRight; mBrakeInput = inBrake; mHandBrakeInput = inHandBrake; }
+
106
+
108 void SetForwardInput(float inForward) { mForwardInput = inForward; }
+
109 float GetForwardInput() const { return mForwardInput; }
+
110
+
112 void SetRightInput(float inRight) { mRightInput = inRight; }
+
113 float GetRightInput() const { return mRightInput; }
+
114
+
116 void SetBrakeInput(float inBrake) { mBrakeInput = inBrake; }
+
117 float GetBrakeInput() const { return mBrakeInput; }
+
118
+
120 void SetHandBrakeInput(float inHandBrake) { mHandBrakeInput = inHandBrake; }
+
121 float GetHandBrakeInput() const { return mHandBrakeInput; }
+
122
+
124 const VehicleEngine & GetEngine() const { return mEngine; }
+
125
+
127 VehicleEngine & GetEngine() { return mEngine; }
+
128
+
130 const VehicleTransmission & GetTransmission() const { return mTransmission; }
+
131
+
133 VehicleTransmission & GetTransmission() { return mTransmission; }
+
134
+
136 const Differentials & GetDifferentials() const { return mDifferentials; }
+
137
+
139 Differentials & GetDifferentials() { return mDifferentials; }
+
140
+
142 float GetDifferentialLimitedSlipRatio() const { return mDifferentialLimitedSlipRatio; }
+
143 void SetDifferentialLimitedSlipRatio(float inV) { mDifferentialLimitedSlipRatio = inV; }
+
144
+
146 float GetWheelSpeedAtClutch() const;
+
147
+
149 using TireMaxImpulseCallback = function<void(uint inWheelIndex, float &outLongitudinalImpulse, float &outLateralImpulse, float inSuspensionImpulse, float inLongitudinalFriction, float inLateralFriction, float inLongitudinalSlip, float inLateralSlip, float inDeltaTime)>;
+
150 const TireMaxImpulseCallback&GetTireMaxImpulseCallback() const { return mTireMaxImpulseCallback; }
+
151 void SetTireMaxImpulseCallback(const TireMaxImpulseCallback &inTireMaxImpulseCallback) { mTireMaxImpulseCallback = inTireMaxImpulseCallback; }
+
152
+
153#ifdef JPH_DEBUG_RENDERER
+
155 void SetRPMMeter(Vec3Arg inPosition, float inSize) { mRPMMeterPosition = inPosition; mRPMMeterSize = inSize; }
+
156#endif // JPH_DEBUG_RENDERER
+
157
+
158protected:
+
159 // See: VehicleController
+
160 virtual Wheel * ConstructWheel(const WheelSettings &inWheel) const override { JPH_ASSERT(IsKindOf(&inWheel, JPH_RTTI(WheelSettingsWV))); return new WheelWV(static_cast<const WheelSettingsWV &>(inWheel)); }
+
161 virtual bool AllowSleep() const override;
+
162 virtual void PreCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) override;
+
163 virtual void PostCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) override;
+
164 virtual bool SolveLongitudinalAndLateralConstraints(float inDeltaTime) override;
+
165 virtual void SaveState(StateRecorder &inStream) const override;
+
166 virtual void RestoreState(StateRecorder &inStream) override;
+
167#ifdef JPH_DEBUG_RENDERER
+
168 virtual void Draw(DebugRenderer *inRenderer) const override;
+
169#endif // JPH_DEBUG_RENDERER
+
170
+
171 // Control information
+
172 float mForwardInput = 0.0f;
+
173 float mRightInput = 0.0f;
+
174 float mBrakeInput = 0.0f;
+
175 float mHandBrakeInput = 0.0f;
+
176
+
177 // Simulation information
+ + + + +
182 float mPreviousDeltaTime = 0.0f;
+
183
+
184 // Callback that calculates the max impulse that the tire can apply to the ground
+
+
185 TireMaxImpulseCallback mTireMaxImpulseCallback =
+
186 [](uint, float &outLongitudinalImpulse, float &outLateralImpulse, float inSuspensionImpulse, float inLongitudinalFriction, float inLateralFriction, float, float, float)
+
187 {
+
188 outLongitudinalImpulse = inLongitudinalFriction * inSuspensionImpulse;
+
189 outLateralImpulse = inLateralFriction * inSuspensionImpulse;
+
190 };
+
+
191
+
192#ifdef JPH_DEBUG_RENDERER
+
193 // Debug settings
+
194 Vec3 mRPMMeterPosition { 0, 1, 0 };
+
195 float mRPMMeterSize = 0.5f;
+
196#endif // JPH_DEBUG_RENDERER
+
197};
+
+
198
+ +
#define JPH_EXPORT
Definition Core.h:236
+
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_ASSERT(...)
Definition IssueReporting.h:33
+ +
JPH_INLINE constexpr float DegreesToRadians(float inV)
Convert a value from degrees to radians.
Definition Math.h:13
+
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:31
+
bool IsKindOf(const Type *inObject, const RTTI *inRTTI)
Check if inObject is or is derived from DstType.
Definition RTTI.h:369
+
#define JPH_RTTI(class_name)
Definition RTTI.h:319
+
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition SerializableObject.h:109
+ + + + + +
Definition Array.h:36
+
Definition DebugRenderer.h:47
+
Definition LinearCurve.h:17
+
Definition PhysicsSystem.h:29
+
Definition StateRecorder.h:48
+
Simple binary input stream.
Definition StreamIn.h:13
+
Simple binary output stream.
Definition StreamOut.h:13
+
Definition Vec3.h:17
+
Definition VehicleConstraint.h:66
+
Runtime data for interface that controls acceleration / deceleration of the vehicle.
Definition VehicleController.h:41
+
Basic settings object for interface that controls acceleration / deceleration of the vehicle.
Definition VehicleController.h:25
+
Runtime data for engine.
Definition VehicleEngine.h:44
+
Generic properties for a vehicle engine.
Definition VehicleEngine.h:21
+
Runtime data for transmission.
Definition VehicleTransmission.h:46
+
Configuration for the transmission of a vehicle (gear box)
Definition VehicleTransmission.h:23
+
Base class for runtime data for a wheel, each VehicleController can implement a derived class of this...
Definition Wheel.h:46
+
Base class for wheel settings, each VehicleController can implement a derived class of this.
Definition Wheel.h:19
+
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents in binary form to inStream.
Definition Wheel.cpp:32
+
virtual void RestoreBinaryState(StreamIn &inStream)
Restores the contents in binary form to inStream.
Definition Wheel.cpp:49
+
WheelSettings object specifically for WheeledVehicleController.
Definition WheeledVehicleController.h:20
+
LinearCurve mLateralFriction
On the Y-axis: friction in the sideways direction of the tire. Friction is normally between 0 (no fri...
Definition WheeledVehicleController.h:35
+
LinearCurve mLongitudinalFriction
On the Y-axis: friction in the forward direction of the tire. Friction is normally between 0 (no fric...
Definition WheeledVehicleController.h:34
+
Wheel object specifically for WheeledVehicleController.
Definition WheeledVehicleController.h:42
+
const WheelSettingsWV * GetSettings() const
Override GetSettings and cast to the correct class.
Definition WheeledVehicleController.h:50
+
void ApplyTorque(float inTorque, float inDeltaTime)
Apply a torque (N m) to the wheel for a particular delta time.
Definition WheeledVehicleController.h:53
+
Runtime controller class.
Definition WheeledVehicleController.h:90
+
function< void(uint inWheelIndex, float &outLongitudinalImpulse, float &outLateralImpulse, float inSuspensionImpulse, float inLongitudinalFriction, float inLateralFriction, float inLongitudinalSlip, float inLateralSlip, float inDeltaTime)> TireMaxImpulseCallback
Calculate max tire impulses by combining friction, slip, and suspension impulse. Note that the actual...
Definition WheeledVehicleController.h:149
+
void SetDifferentialLimitedSlipRatio(float inV)
Definition WheeledVehicleController.h:143
+
void SetForwardInput(float inForward)
Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving dir...
Definition WheeledVehicleController.h:108
+
VehicleTransmission mTransmission
Transmission state of the vehicle.
Definition WheeledVehicleController.h:179
+
void SetBrakeInput(float inBrake)
Value between 0 and 1 indicating how strong the brake pedal is pressed.
Definition WheeledVehicleController.h:116
+
const VehicleTransmission & GetTransmission() const
Get current transmission state.
Definition WheeledVehicleController.h:130
+
void SetDriverInput(float inForward, float inRight, float inBrake, float inHandBrake)
Definition WheeledVehicleController.h:105
+
Differentials mDifferentials
Differential states of the vehicle.
Definition WheeledVehicleController.h:180
+
float GetRightInput() const
Definition WheeledVehicleController.h:113
+
const VehicleEngine & GetEngine() const
Get current engine state.
Definition WheeledVehicleController.h:124
+
VehicleEngine mEngine
Engine state of the vehicle.
Definition WheeledVehicleController.h:178
+
float GetDifferentialLimitedSlipRatio() const
Ratio max / min average wheel speed of each differential (measured at the clutch).
Definition WheeledVehicleController.h:142
+
void SetRPMMeter(Vec3Arg inPosition, float inSize)
Debug drawing of RPM meter.
Definition WheeledVehicleController.h:155
+
const Differentials & GetDifferentials() const
Get the differentials this vehicle has.
Definition WheeledVehicleController.h:136
+
float GetForwardInput() const
Definition WheeledVehicleController.h:109
+
float GetHandBrakeInput() const
Definition WheeledVehicleController.h:121
+
void SetHandBrakeInput(float inHandBrake)
Value between 0 and 1 indicating how strong the hand brake is pulled.
Definition WheeledVehicleController.h:120
+
virtual Wheel * ConstructWheel(const WheelSettings &inWheel) const override
Definition WheeledVehicleController.h:160
+
void SetTireMaxImpulseCallback(const TireMaxImpulseCallback &inTireMaxImpulseCallback)
Definition WheeledVehicleController.h:151
+
VehicleTransmission & GetTransmission()
Get current transmission state (writable interface, allows you to make changes to the configuration w...
Definition WheeledVehicleController.h:133
+
const TireMaxImpulseCallback & GetTireMaxImpulseCallback() const
Definition WheeledVehicleController.h:150
+
float GetBrakeInput() const
Definition WheeledVehicleController.h:117
+
float mDifferentialLimitedSlipRatio
Ratio max / min average wheel speed of each differential (measured at the clutch).
Definition WheeledVehicleController.h:181
+
Differentials & GetDifferentials()
Get the differentials this vehicle has (writable interface, allows you to make changes to the configu...
Definition WheeledVehicleController.h:139
+
VehicleEngine & GetEngine()
Get current engine state (writable interface, allows you to make changes to the configuration which w...
Definition WheeledVehicleController.h:127
+
void SetRightInput(float inRight)
Value between -1 and 1 indicating desired steering angle (1 = right)
Definition WheeledVehicleController.h:112
+
Definition WheeledVehicleController.h:73
+
Array< VehicleDifferentialSettings > mDifferentials
List of differentials and their properties.
Definition WheeledVehicleController.h:84
+
VehicleTransmissionSettings mTransmission
The properties of the transmission (aka gear box)
Definition WheeledVehicleController.h:83
+
VehicleEngineSettings mEngine
The properties of the engine.
Definition WheeledVehicleController.h:82
+
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 000000000..9a3f48629 --- /dev/null +++ b/annotated.html @@ -0,0 +1,602 @@ + + + + + + + +Jolt Physics: Class List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Nstd
 CAABBTreeBuilderHelper class to build an AABB tree
 CAABBTreeBuilderStats
 CAABBTreeToBufferConversion algorithm that converts an AABB tree to an optimized binary buffer
 CAABoxAxis aligned box
 CAABoxCastStructure that holds AABox moving linearly through 3d space
 CAddConvexRadiusStructure that adds a convex radius
 CAllHitCollisionCollectorSimple implementation that collects all hits and optionally sorts them on distance
 CAllocatorHasReallocateDefault implementation of AllocatorHasReallocate which tells if an allocator has a reallocate function
 CAllocatorHasReallocate< STLAllocator< T > >The STLAllocator implements the reallocate function if the alignment of the class is smaller or equal to the default alignment for the platform
 CAngleConstraintPart
 CAnyHitCollisionCollectorSimple implementation that collects any hit
 CArray
 CAxisConstraintPart
 CBody
 CBodyActivationListener
 CBodyCreationSettingsSettings for constructing a rigid body
 CBodyDrawFilterClass function to filter out bodies for debug rendering, returns true if body should be rendered
 CBodyFilterClass function to filter out bodies, returns true if test should collide with body
 CBodyIDID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding race conditions
 CBodyInterface
 CBodyLockBaseBase class for locking bodies for the duration of the scope of this class (do not use directly)
 CBodyLockInterfaceBase class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLockMultiRead / BodyLockMultiWrite instead
 CBodyLockInterfaceLockingImplementation that uses the body manager to lock the correct mutex for a body
 CBodyLockInterfaceNoLockImplementation that performs no locking (assumes the lock has already been taken)
 CBodyLockMultiBaseBase class for locking multiple bodies for the duration of the scope of this class (do not use directly)
 CBodyLockMultiRead
 CBodyLockMultiWriteSpecialization that locks multiple bodies for writing to
 CBodyLockRead
 CBodyLockWriteSpecialization that locks a body for writing to
 CBodyManagerClass that contains all bodies
 CBodyPairStructure that holds a body pair
 CBodyWithMotionProperties
 CBoxShapeA box, centered around the origin
 CBoxShapeSettingsClass that constructs a BoxShape
 CBroadPhaseUsed to do coarse collision detection operations to quickly prune out bodies that will not collide
 CBroadPhaseBruteForceTest BroadPhase implementation that does not do anything to speed up the operations. Can be used as a reference implementation
 CBroadPhaseCastResultStructure that holds a ray cast or other object cast hit
 CBroadPhaseLayer
 CBroadPhaseLayerFilterFilter class for broadphase layers
 CBroadPhaseLayerInterfaceInterface that the application should implement to allow mapping object layers to broadphase layers
 CBroadPhaseLayerInterfaceMask
 CBroadPhaseLayerInterfaceTable
 CBroadPhaseQuadTreeFast SIMD based quad tree BroadPhase that is multithreading aware and tries to do a minimal amount of locking
 CBroadPhaseQuery
 CByteBufferSimple byte buffer, aligned to a cache line
 CCalculateSolverStepsClass used to calculate the total number of velocity and position steps
 CCapsuleShapeA capsule, implemented as a line segment with convex radius
 CCapsuleShapeSettingsClass that constructs a CapsuleShape
 CCastConvexVsTrianglesCollision detection helper that casts a convex object vs one or more triangles
 CCastSphereVsTrianglesCollision detection helper that casts a sphere vs one or more triangles
 CCharacter
 CCharacterBaseBase class for character class
 CCharacterBaseSettingsBase class for configuration of a character
 CCharacterContactListenerThis class receives callbacks when a virtual character hits something
 CCharacterContactSettingsThis class contains settings that allow you to override the behavior of a character's collision response
 CCharacterSettingsContains the configuration of a character
 CCharacterVirtual
 CCharacterVirtualSettingsContains the configuration of a character
 CCharacterVsCharacterCollision
 CCharacterVsCharacterCollisionSimple
 CClosestHitCollisionCollectorSimple implementation that collects the closest / deepest hit
 CCollideConvexVsTrianglesCollision detection helper that collides a convex object vs one or more triangles
 CCollidePointResultStructure that holds the result of colliding a point against a shape
 CCollideSettingsBaseSettings to be passed with a collision query
 CCollideShapeResultClass that contains all information of two colliding shapes
 CCollideShapeSettingsSettings to be passed with a collision query
 CCollideSoftBodyVerticesVsTrianglesCollision detection helper that collides soft body vertices vs triangles
 CCollideSphereVsTrianglesCollision detection helper that collides a sphere vs one or more triangles
 CCollisionCollectorVirtual interface that allows collecting multiple collision results
 CCollisionCollectorTraitsCastRayTraits to use for CastRay
 CCollisionCollectorTraitsCastShapeTraits to use for CastShape
 CCollisionCollectorTraitsCollideShapeTraits to use for CollideShape
 CCollisionDispatchDispatch function, main function to handle collisions between shapes
 CCollisionEstimationResultA structure that contains the estimated contact and friction impulses and the resulting body velocities
 CCollisionGroup
 CColorClass that holds an RGBA color with 8-bits per component
 CCompoundShapeBase class for a compound shape
 CCompoundShapeSettingsBase class settings to construct a compound shape
 CConeConstraint
 CConeConstraintSettingsCone constraint settings, used to create a cone constraint
 CConstraintBase class for all physics constraints. A constraint removes one or more degrees of freedom for a rigid body
 CConstraintManagerA constraint manager manages all constraints of the same type
 CConstraintSettingsClass used to store the configuration of a constraint. Allows run-time creation of constraints
 CContactConstraintManager
 CContactListener
 CContactManifoldManifold class, describes the contact surface between two bodies
 CContactSettings
 CConvexHullBuilderA convex hull builder that tries to create hulls as accurately as possible. Used for offline processing
 CConvexHullBuilder2DA convex hull builder that tries to create 2D hulls as accurately as possible. Used for offline processing
 CConvexHullShapeA convex hull
 CConvexHullShapeSettingsClass that constructs a ConvexHullShape
 CConvexShapeBase class for all convex shapes. Defines a virtual interface
 CConvexShapeSettingsClass that constructs a ConvexShape (abstract)
 CCylinderShapeA cylinder
 CCylinderShapeSettingsClass that constructs a CylinderShape
 CDebugRenderer
 CDebugRendererPlaybackClass that can read a recorded stream from DebugRendererRecorder and plays it back trough a DebugRenderer
 CDebugRendererRecorderImplementation of DebugRenderer that records the API invocations to be played back later
 CDebugRendererSimple
 CDecoratedShapeBase class for shapes that decorate another shape with extra functionality (e.g. scale, translation etc.)
 CDecoratedShapeSettingsClass that constructs a DecoratedShape
 CDefaultBroadPhaseLayerFilterDefault filter class that uses the pair filter in combination with a specified layer to filter layers
 CDefaultObjectLayerFilterDefault filter class that uses the pair filter in combination with a specified layer to filter layers
 CDistanceConstraintThis constraint is a stiff spring that holds 2 points at a fixed distance from each other
 CDistanceConstraintSettingsDistance constraint settings, used to create a distance constraint
 CDMat44Holds a 4x4 matrix of floats with the last column consisting of doubles
 CDouble3Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations
 CDualAxisConstraintPart
 CDummyCalculateSolverStepsDummy class to replace the steps calculator when we don't need the result
 CDVec3
 CDynMatrixDynamic resizable matrix class
 CEllipse
 CEPAConvexHullBuilderA convex hull builder specifically made for the EPA penetration depth calculation. It trades accuracy for speed and will simply abort of the hull forms defects due to numerical precision problems
 CEPAPenetrationDepth
 CFactoryThis class is responsible for creating instances of classes based on their name or hash and is mainly used for deserialization of saved data
 CFixedConstraint
 CFixedConstraintSettingsFixed constraint settings, used to create a fixed constraint
 CFixedSizeFreeList
 CFloat2Class that holds 2 floats, used as a storage class mainly
 CFloat3Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations
 CFloat4Class that holds 4 float values. Convert to Vec4 to perform calculations
 CFPExceptionDisableDivByZero
 CFPExceptionDisableInvalid
 CFPExceptionsEnableDummy implementations
 CGearConstraint
 CGearConstraintPart
 CGearConstraintSettingsGear constraint settings
 CGetTrianglesContextMultiVertexListImplementation of GetTrianglesStart/Next that uses a multiple fixed lists of vertices for the triangles. These are transformed into world space when getting the triangles
 CGetTrianglesContextVertexListImplementation of GetTrianglesStart/Next that uses a fixed list of vertices for the triangles. These are transformed into world space when getting the triangles
 CGJKClosestPoint
 CGroupFilterAbstract class that checks if two CollisionGroups collide
 CGroupFilterTable
 CHeightFieldShape
 CHeightFieldShapeSettingsClass that constructs a HeightFieldShape
 CHingeConstraintA hinge constraint constrains 2 bodies on a single point and allows only a single axis of rotation
 CHingeConstraintSettingsHinge constraint settings, used to create a hinge constraint
 CHingeRotationConstraintPart
 CIgnoreMultipleBodiesFilterA simple body filter implementation that ignores multiple, specified bodies
 CIgnoreSingleBodyFilterA simple body filter implementation that ignores a single, specified body
 CIgnoreSingleBodyFilterChainedIgnores a single body and chains the filter to another filter
 CIndependentAxisConstraintPart
 CIndexedTriangleTriangle with 32-bit indices and material index
 CIndexedTriangleNoMaterialTriangle with 32-bit indices
 CInternalEdgeRemovingCollector
 CIObjectStreamInInterface class for reading from an object stream
 CIObjectStreamOutInterface class for writing to an object stream
 CIslandBuilderKeeps track of connected bodies and builds islands for multithreaded velocity/position update
 CJobSystem
 CJobSystemSingleThreadedImplementation of a JobSystem without threads, runs jobs as soon as they are added
 CJobSystemThreadPool
 CJobSystemWithBarrier
 CLargeIslandSplitter
 CLFHMAllocatorAllocator for a lock free hash map
 CLFHMAllocatorContext
 CLinearCurve
 CLockFreeHashMap
 CMassPropertiesDescribes the mass and inertia properties of a body. Used during body construction only
 CMat44Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix
 CMatrixTemplatized matrix class
 CMeshShape
 CMeshShapeSettingsClass that constructs a MeshShape
 CMinkowskiDifferenceStructure that performs a Minkowski difference A - B
 CMortonCode
 CMotionPropertiesThe Body class only keeps track of state for static bodies, the MotionProperties class keeps the additional state needed for a moving Body. It has a 1-on-1 relationship with the body
 CMotorcycleControllerRuntime controller class
 CMotorcycleControllerSettings
 CMotorSettings
 CMutableCompoundShape
 CMutableCompoundShapeSettingsClass that constructs a MutableCompoundShape
 CMutex
 CMutexArray
 CNarrowPhaseQuery
 CNodeCodecQuadTreeHalfFloat
 CNonCopyableClass that makes another class non-copyable. Usage: Inherit from NonCopyable
 CObjectLayerFilterFilter class for object layers
 CObjectLayerPairFilterFilter class to test if two objects can collide based on their object layer. Used while finding collision pairs
 CObjectLayerPairFilterMask
 CObjectLayerPairFilterTable
 CObjectStreamBase class for object stream input and output streams
 CObjectStreamBinaryInImplementation of ObjectStream binary input stream
 CObjectStreamBinaryOutImplementation of ObjectStream binary output stream
 CObjectStreamIn
 CObjectStreamOut
 CObjectStreamTextInImplementation of ObjectStream text input stream
 CObjectStreamTextOutImplementation of ObjectStream text output stream
 CObjectVsBroadPhaseLayerFilterClass to test if an object can collide with a broadphase layer. Used while finding collision pairs
 CObjectVsBroadPhaseLayerFilterMask
 CObjectVsBroadPhaseLayerFilterTable
 COffsetCenterOfMassShapeThis shape will shift the center of mass of a child shape, it can e.g. be used to lower the center of mass of an unstable object like a boat to make it stable
 COffsetCenterOfMassShapeSettingsClass that constructs an OffsetCenterOfMassShape
 COrientedBoxOriented box
 CPathConstraintPath constraint, used to constrain the degrees of freedom between two bodies to a path
 CPathConstraintPathThe path for a path constraint. It allows attaching two bodies to each other while giving the second body the freedom to move along a path relative to the first
 CPathConstraintPathHermiteA path that follows a Hermite spline
 CPathConstraintSettings
 CPhysicsLock
 CPhysicsMaterial
 CPhysicsMaterialSimpleSample implementation of PhysicsMaterial that just holds the needed properties directly
 CPhysicsSceneContains the creation settings of a set of bodies
 CPhysicsSettings
 CPhysicsStepListenerA listener class that receives a callback before every physics simulation step
 CPhysicsSystem
 CPhysicsUpdateContextInformation used during the Update call
 CPlaneAn infinite plane described by the formula X . Normal + Constant = 0
 CPlaneShape
 CPlaneShapeSettingsClass that constructs a PlaneShape
 CPointConstraintA point constraint constrains 2 bodies on a single point (removing 3 degrees of freedom)
 CPointConstraintPart
 CPointConstraintSettingsPoint constraint settings, used to create a point constraint
 CPointConvexSupportClass that wraps a point so that it can be used with convex collision detection
 CPolygonConvexSupportClass that wraps a polygon so that it can used with convex collision detection
 CPolyhedronSubmergedVolumeCalculator
 CProfileMeasurementCreate this class on the stack to start sampling timing information of a particular scope
 CProfilerSingleton class for managing profiling information
 CProfileSample
 CProfileThreadCollects all samples of a single thread
 CPulleyConstraintA pulley constraint
 CPulleyConstraintSettings
 CQuadTree
 CQuat
 CRackAndPinionConstraint
 CRackAndPinionConstraintPart
 CRackAndPinionConstraintSettingsRack and pinion constraint (slider & gear) settings
 CRagdollRuntime ragdoll information
 CRagdollSettingsContains the structure of a ragdoll
 CRayCast
 CRayCastResultSpecialization of cast result against a shape
 CRayCastSettingsSettings to be passed with a ray cast
 CRayCastTStructure that holds a single ray cast
 CRayInvDirectionHelper structure holding the reciprocal of a ray for Ray vs AABox testing
 CRef
 CRefConst
 CRefTarget
 CRefTargetVirtualPure virtual version of RefTarget
 CResultHelper class that either contains a valid result or an error
 CReversedShapeFilterHelper class to reverse the order of the shapes in the ShouldCollide function
 CRotatedTranslatedShape
 CRotatedTranslatedShapeSettingsClass that constructs a RotatedTranslatedShape
 CRotationEulerConstraintPart
 CRotationQuatConstraintPart
 CRRayCast
 CRShapeCast
 CRTTI
 CScaledShapeA shape that scales a child shape in local space of that shape. The scale can be non-uniform and can even turn it inside out when one or three components of the scale are negative
 CScaledShapeSettingsClass that constructs a ScaledShape
 CScopeExitClass that calls a function when it goes out of scope
 CSemaphore
 CSerializableAttributeAttributes are members of classes that need to be serialized
 CSerializableObject
 CShapeBase class for all shapes (collision volume of a body). Defines a virtual interface for collision detection
 CShapeCast
 CShapeCastResultResult of a shape cast test
 CShapeCastSettingsSettings to be passed with a shape cast
 CShapeCastTStructure that holds a single shape cast (a shape moving along a linear path in 3d space with no rotation)
 CShapeFilterFilter class
 CShapeFunctionsFunction table for functions on shapes
 CShapeSettings
 CSharedLockHelper class that is similar to std::shared_lock
 CSharedMutex
 CSixDOFConstraint6 Degree Of Freedom Constraint. Allows control over each of the 6 degrees of freedom
 CSixDOFConstraintSettings6 Degree Of Freedom Constraint setup structure. Allows control over each of the 6 degrees of freedom
 CSkeletalAnimationResource for a skinned animation
 CSkeletonResource that contains the joint hierarchy for a skeleton
 CSkeletonMapperClass that is able to map a low detail (ragdoll) skeleton to a high detail (animation) skeleton and vice versa
 CSkeletonPoseInstance of a skeleton, contains the pose the current skeleton is in
 CSliderConstraintA slider constraint allows movement in only 1 axis (and no rotation). Also known as a prismatic constraint
 CSliderConstraintSettingsSlider constraint settings, used to create a slider constraint
 CSoftBodyContactListener
 CSoftBodyContactSettings
 CSoftBodyCreationSettings
 CSoftBodyManifoldAn interface to query which vertices of a soft body are colliding with other bodies
 CSoftBodyMotionPropertiesThis class contains the runtime information of a soft body
 CSoftBodyShapeShape used exclusively for soft bodies. Adds the ability to perform collision checks against soft bodies
 CSoftBodySharedSettings
 CSoftBodyUpdateContextTemporary data used by the update of a soft body
 CSoftBodyVertex
 CSoftBodyWithMotionPropertiesAndShape
 CSpecifiedBroadPhaseLayerFilterAllows objects from a specific broad phase layer only
 CSpecifiedObjectLayerFilterAllows objects from a specific layer only
 CSphere
 CSphereShape
 CSphereShapeSettingsClass that constructs a SphereShape
 CSpringPartClass used in other constraint parts to calculate the required bias factor in the lagrange multiplier for creating springs
 CSpringSettingsSettings for a linear or angular spring
 CStateRecorder
 CStateRecorderFilterUser callbacks that allow determining which parts of the simulation should be saved by a StateRecorder
 CStateRecorderImplImplementation of the StateRecorder class that uses a stringstream as underlying store and that implements checking if the state doesn't change upon reading
 CStaticArraySimple variable length array backed by a fixed size buffer
 CStaticCompoundShape
 CStaticCompoundShapeSettingsClass that constructs a StaticCompoundShape. Note that if you only want a compound of 1 shape, use a RotatedTranslatedShape instead
 CSTLAlignedAllocatorSTL allocator that takes care that memory is aligned to N bytes
 CSTLAllocatorSTL allocator that forwards to our allocation functions
 CSTLTempAllocatorSTL allocator that wraps around TempAllocator
 CStreamInSimple binary input stream
 CStreamInWrapperWrapper around std::istream
 CStreamOutSimple binary output stream
 CStreamOutWrapperWrapper around std::ostream
 CSubShapeIDA sub shape id contains a path to an element (usually a triangle or other primitive type) of a compound shape
 CSubShapeIDCreator
 CSubShapeIDPairA pair of bodies and their sub shape ID's. Can be used as a key in a map to find a contact point
 CSwingTwistConstraint
 CSwingTwistConstraintPart
 CSwingTwistConstraintSettings
 CTaperedCapsuleShapeA capsule with different top and bottom radii
 CTaperedCapsuleShapeSettingsClass that constructs a TaperedCapsuleShape
 CTaperedCylinderShapeA cylinder with different top and bottom radii
 CTaperedCylinderShapeSettingsClass that constructs a TaperedCylinderShape
 CTempAllocator
 CTempAllocatorImplDefault implementation of the temp allocator that allocates a large block through malloc upfront
 CTempAllocatorImplWithMallocFallbackImplementation of the TempAllocator that tries to allocate from a large preallocated block, but falls back to malloc when it is exhausted
 CTempAllocatorMalloc
 CTrackedVehicleControllerRuntime controller class for vehicle with tank tracks
 CTrackedVehicleControllerSettings
 CTransformedConvexObject
 CTransformedShape
 CTriangleA simple triangle and its material
 CTriangleCodecIndexed8BitPackSOA4Flags
 CTriangleConvexSupportClass that wraps a triangle so that it can used with convex collision detection
 CTriangleGrouperA class that groups triangles in batches of N (according to closeness)
 CTriangleGrouperClosestCentroid
 CTriangleGrouperMorton
 CTriangleShapeA single triangle, not the most efficient way of creating a world filled with triangles but can be used as a query shape for example
 CTriangleShapeSettingsClass that constructs a TriangleShape
 CTriangleSplitterA class that splits a triangle list into two parts for building a tree
 CTriangleSplitterBinningBinning splitter approach taken from: Realtime Ray Tracing on GPU with BVH-based Packet Traversal by Johannes Gunther et al
 CTriangleSplitterFixedLeafSize
 CTriangleSplitterLongestAxisSplitter using center of bounding box with longest axis
 CTriangleSplitterMeanSplitter using mean of axis with biggest centroid deviation
 CTriangleSplitterMortonSplitter using Morton codes, see: http://devblogs.nvidia.com/parallelforall/thinking-parallel-part-iii-tree-construction-gpu/
 CTwoBodyConstraintBase class for all constraints that involve 2 bodies. Body1 is usually considered the parent, Body2 the child
 CTwoBodyConstraintSettingsBase class for settings for all constraints that involve 2 bodies
 CUniqueLockHelper class that is similar to std::unique_lock
 CUVec4
 CUVec8
 CVec3
 CVec4
 CVec8
 CVectorTemplatized vector class
 CVehicleAntiRollBar
 CVehicleCollisionTesterClass that does collision detection between wheels and ground
 CVehicleCollisionTesterCastCylinderCollision tester that tests collision using a cylinder shape
 CVehicleCollisionTesterCastSphereCollision tester that tests collision using a sphere cast
 CVehicleCollisionTesterRayCollision tester that tests collision using a raycast
 CVehicleConstraint
 CVehicleConstraintSettings
 CVehicleControllerRuntime data for interface that controls acceleration / deceleration of the vehicle
 CVehicleControllerSettingsBasic settings object for interface that controls acceleration / deceleration of the vehicle
 CVehicleDifferentialSettings
 CVehicleEngineRuntime data for engine
 CVehicleEngineSettingsGeneric properties for a vehicle engine
 CVehicleTrackRuntime data for tank tracks
 CVehicleTrackSettingsGeneric properties for tank tracks
 CVehicleTransmissionRuntime data for transmission
 CVehicleTransmissionSettingsConfiguration for the transmission of a vehicle (gear box)
 CWheelBase class for runtime data for a wheel, each VehicleController can implement a derived class of this
 CWheeledVehicleControllerRuntime controller class
 CWheeledVehicleControllerSettings
 CWheelSettingsBase class for wheel settings, each VehicleController can implement a derived class of this
 CWheelSettingsTVWheelSettings object specifically for TrackedVehicleController
 CWheelSettingsWVWheelSettings object specifically for WheeledVehicleController
 CWheelTVWheel object specifically for TrackedVehicleController
 CWheelWVWheel object specifically for WheeledVehicleController
+
+
+
+ + + + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 000000000..b2ec74d23 --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,369 @@ +var annotated_dup = +[ + [ "std", "namespacestd.html", [ + [ "hash< JPH::StaticArray< T, N > >", "structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.html", "structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4" ], + [ "hash< JPH::String >", "structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.html", "structstd_1_1hash_3_01_j_p_h_1_1_string_01_4" ] + ] ], + [ "AABBTreeBuilder", "class_a_a_b_b_tree_builder.html", "class_a_a_b_b_tree_builder" ], + [ "AABBTreeBuilderStats", "struct_a_a_b_b_tree_builder_stats.html", "struct_a_a_b_b_tree_builder_stats" ], + [ "AABBTreeToBuffer", "class_a_a_b_b_tree_to_buffer.html", "class_a_a_b_b_tree_to_buffer" ], + [ "AABox", "class_a_a_box.html", "class_a_a_box" ], + [ "AABoxCast", "struct_a_a_box_cast.html", "struct_a_a_box_cast" ], + [ "AddConvexRadius", "struct_add_convex_radius.html", "struct_add_convex_radius" ], + [ "AllHitCollisionCollector", "class_all_hit_collision_collector.html", "class_all_hit_collision_collector" ], + [ "AllocatorHasReallocate", "struct_allocator_has_reallocate.html", null ], + [ "AllocatorHasReallocate< STLAllocator< T > >", "struct_allocator_has_reallocate_3_01_s_t_l_allocator_3_01_t_01_4_01_4.html", null ], + [ "AngleConstraintPart", "class_angle_constraint_part.html", "class_angle_constraint_part" ], + [ "AnyHitCollisionCollector", "class_any_hit_collision_collector.html", "class_any_hit_collision_collector" ], + [ "Array", "class_array.html", "class_array" ], + [ "AxisConstraintPart", "class_axis_constraint_part.html", "class_axis_constraint_part" ], + [ "Body", "class_body.html", "class_body" ], + [ "BodyActivationListener", "class_body_activation_listener.html", "class_body_activation_listener" ], + [ "BodyCreationSettings", "class_body_creation_settings.html", "class_body_creation_settings" ], + [ "BodyDrawFilter", "class_body_draw_filter.html", "class_body_draw_filter" ], + [ "BodyFilter", "class_body_filter.html", "class_body_filter" ], + [ "BodyID", "class_body_i_d.html", "class_body_i_d" ], + [ "BodyInterface", "class_body_interface.html", "class_body_interface" ], + [ "BodyLockBase", "class_body_lock_base.html", "class_body_lock_base" ], + [ "BodyLockInterface", "class_body_lock_interface.html", "class_body_lock_interface" ], + [ "BodyLockInterfaceLocking", "class_body_lock_interface_locking.html", "class_body_lock_interface_locking" ], + [ "BodyLockInterfaceNoLock", "class_body_lock_interface_no_lock.html", "class_body_lock_interface_no_lock" ], + [ "BodyLockMultiBase", "class_body_lock_multi_base.html", "class_body_lock_multi_base" ], + [ "BodyLockMultiRead", "class_body_lock_multi_read.html", null ], + [ "BodyLockMultiWrite", "class_body_lock_multi_write.html", null ], + [ "BodyLockRead", "class_body_lock_read.html", null ], + [ "BodyLockWrite", "class_body_lock_write.html", null ], + [ "BodyManager", "class_body_manager.html", "class_body_manager" ], + [ "BodyPair", "struct_body_pair.html", "struct_body_pair" ], + [ "BodyWithMotionProperties", "class_body_with_motion_properties.html", "class_body_with_motion_properties" ], + [ "BoxShape", "class_box_shape.html", "class_box_shape" ], + [ "BoxShapeSettings", "class_box_shape_settings.html", "class_box_shape_settings" ], + [ "BroadPhase", "class_broad_phase.html", "class_broad_phase" ], + [ "BroadPhaseBruteForce", "class_broad_phase_brute_force.html", "class_broad_phase_brute_force" ], + [ "BroadPhaseCastResult", "class_broad_phase_cast_result.html", "class_broad_phase_cast_result" ], + [ "BroadPhaseLayer", "class_broad_phase_layer.html", "class_broad_phase_layer" ], + [ "BroadPhaseLayerFilter", "class_broad_phase_layer_filter.html", "class_broad_phase_layer_filter" ], + [ "BroadPhaseLayerInterface", "class_broad_phase_layer_interface.html", "class_broad_phase_layer_interface" ], + [ "BroadPhaseLayerInterfaceMask", "class_broad_phase_layer_interface_mask.html", "class_broad_phase_layer_interface_mask" ], + [ "BroadPhaseLayerInterfaceTable", "class_broad_phase_layer_interface_table.html", "class_broad_phase_layer_interface_table" ], + [ "BroadPhaseQuadTree", "class_broad_phase_quad_tree.html", "class_broad_phase_quad_tree" ], + [ "BroadPhaseQuery", "class_broad_phase_query.html", "class_broad_phase_query" ], + [ "ByteBuffer", "class_byte_buffer.html", "class_byte_buffer" ], + [ "CalculateSolverSteps", "class_calculate_solver_steps.html", "class_calculate_solver_steps" ], + [ "CapsuleShape", "class_capsule_shape.html", "class_capsule_shape" ], + [ "CapsuleShapeSettings", "class_capsule_shape_settings.html", null ], + [ "CastConvexVsTriangles", "class_cast_convex_vs_triangles.html", "class_cast_convex_vs_triangles" ], + [ "CastSphereVsTriangles", "class_cast_sphere_vs_triangles.html", "class_cast_sphere_vs_triangles" ], + [ "Character", "class_character.html", "class_character" ], + [ "CharacterBase", "class_character_base.html", "class_character_base" ], + [ "CharacterBaseSettings", "class_character_base_settings.html", "class_character_base_settings" ], + [ "CharacterContactListener", "class_character_contact_listener.html", "class_character_contact_listener" ], + [ "CharacterContactSettings", "class_character_contact_settings.html", "class_character_contact_settings" ], + [ "CharacterSettings", "class_character_settings.html", "class_character_settings" ], + [ "CharacterVirtual", "class_character_virtual.html", "class_character_virtual" ], + [ "CharacterVirtualSettings", "class_character_virtual_settings.html", "class_character_virtual_settings" ], + [ "CharacterVsCharacterCollision", "class_character_vs_character_collision.html", "class_character_vs_character_collision" ], + [ "CharacterVsCharacterCollisionSimple", "class_character_vs_character_collision_simple.html", "class_character_vs_character_collision_simple" ], + [ "ClosestHitCollisionCollector", "class_closest_hit_collision_collector.html", "class_closest_hit_collision_collector" ], + [ "CollideConvexVsTriangles", "class_collide_convex_vs_triangles.html", "class_collide_convex_vs_triangles" ], + [ "CollidePointResult", "class_collide_point_result.html", "class_collide_point_result" ], + [ "CollideSettingsBase", "class_collide_settings_base.html", "class_collide_settings_base" ], + [ "CollideShapeResult", "class_collide_shape_result.html", "class_collide_shape_result" ], + [ "CollideShapeSettings", "class_collide_shape_settings.html", "class_collide_shape_settings" ], + [ "CollideSoftBodyVerticesVsTriangles", "class_collide_soft_body_vertices_vs_triangles.html", "class_collide_soft_body_vertices_vs_triangles" ], + [ "CollideSphereVsTriangles", "class_collide_sphere_vs_triangles.html", "class_collide_sphere_vs_triangles" ], + [ "CollisionCollector", "class_collision_collector.html", "class_collision_collector" ], + [ "CollisionCollectorTraitsCastRay", "class_collision_collector_traits_cast_ray.html", null ], + [ "CollisionCollectorTraitsCastShape", "class_collision_collector_traits_cast_shape.html", null ], + [ "CollisionCollectorTraitsCollideShape", "class_collision_collector_traits_collide_shape.html", null ], + [ "CollisionDispatch", "class_collision_dispatch.html", "class_collision_dispatch" ], + [ "CollisionEstimationResult", "struct_collision_estimation_result.html", "struct_collision_estimation_result" ], + [ "CollisionGroup", "class_collision_group.html", "class_collision_group" ], + [ "Color", "class_color.html", "class_color" ], + [ "CompoundShape", "class_compound_shape.html", "class_compound_shape" ], + [ "CompoundShapeSettings", "class_compound_shape_settings.html", "class_compound_shape_settings" ], + [ "ConeConstraint", "class_cone_constraint.html", "class_cone_constraint" ], + [ "ConeConstraintSettings", "class_cone_constraint_settings.html", "class_cone_constraint_settings" ], + [ "Constraint", "class_constraint.html", "class_constraint" ], + [ "ConstraintManager", "class_constraint_manager.html", "class_constraint_manager" ], + [ "ConstraintSettings", "class_constraint_settings.html", "class_constraint_settings" ], + [ "ContactConstraintManager", "class_contact_constraint_manager.html", "class_contact_constraint_manager" ], + [ "ContactListener", "class_contact_listener.html", "class_contact_listener" ], + [ "ContactManifold", "class_contact_manifold.html", "class_contact_manifold" ], + [ "ContactSettings", "class_contact_settings.html", "class_contact_settings" ], + [ "ConvexHullBuilder", "class_convex_hull_builder.html", "class_convex_hull_builder" ], + [ "ConvexHullBuilder2D", "class_convex_hull_builder2_d.html", "class_convex_hull_builder2_d" ], + [ "ConvexHullShape", "class_convex_hull_shape.html", "class_convex_hull_shape" ], + [ "ConvexHullShapeSettings", "class_convex_hull_shape_settings.html", "class_convex_hull_shape_settings" ], + [ "ConvexShape", "class_convex_shape.html", "class_convex_shape" ], + [ "ConvexShapeSettings", "class_convex_shape_settings.html", "class_convex_shape_settings" ], + [ "CylinderShape", "class_cylinder_shape.html", "class_cylinder_shape" ], + [ "CylinderShapeSettings", "class_cylinder_shape_settings.html", "class_cylinder_shape_settings" ], + [ "DebugRenderer", "class_debug_renderer.html", "class_debug_renderer" ], + [ "DebugRendererPlayback", "class_debug_renderer_playback.html", "class_debug_renderer_playback" ], + [ "DebugRendererRecorder", "class_debug_renderer_recorder.html", "class_debug_renderer_recorder" ], + [ "DebugRendererSimple", "class_debug_renderer_simple.html", "class_debug_renderer_simple" ], + [ "DecoratedShape", "class_decorated_shape.html", "class_decorated_shape" ], + [ "DecoratedShapeSettings", "class_decorated_shape_settings.html", null ], + [ "DefaultBroadPhaseLayerFilter", "class_default_broad_phase_layer_filter.html", "class_default_broad_phase_layer_filter" ], + [ "DefaultObjectLayerFilter", "class_default_object_layer_filter.html", "class_default_object_layer_filter" ], + [ "DistanceConstraint", "class_distance_constraint.html", "class_distance_constraint" ], + [ "DistanceConstraintSettings", "class_distance_constraint_settings.html", "class_distance_constraint_settings" ], + [ "DMat44", "class_d_mat44.html", "class_d_mat44" ], + [ "Double3", "class_double3.html", "class_double3" ], + [ "DualAxisConstraintPart", "class_dual_axis_constraint_part.html", "class_dual_axis_constraint_part" ], + [ "DummyCalculateSolverSteps", "class_dummy_calculate_solver_steps.html", "class_dummy_calculate_solver_steps" ], + [ "DVec3", "class_d_vec3.html", "class_d_vec3" ], + [ "DynMatrix", "class_dyn_matrix.html", "class_dyn_matrix" ], + [ "Ellipse", "class_ellipse.html", "class_ellipse" ], + [ "EPAConvexHullBuilder", "class_e_p_a_convex_hull_builder.html", "class_e_p_a_convex_hull_builder" ], + [ "EPAPenetrationDepth", "class_e_p_a_penetration_depth.html", "class_e_p_a_penetration_depth" ], + [ "Factory", "class_factory.html", "class_factory" ], + [ "FixedConstraint", "class_fixed_constraint.html", "class_fixed_constraint" ], + [ "FixedConstraintSettings", "class_fixed_constraint_settings.html", "class_fixed_constraint_settings" ], + [ "FixedSizeFreeList", "class_fixed_size_free_list.html", "class_fixed_size_free_list" ], + [ "Float2", "class_float2.html", "class_float2" ], + [ "Float3", "class_float3.html", "class_float3" ], + [ "Float4", "class_float4.html", "class_float4" ], + [ "FPExceptionDisableDivByZero", "class_f_p_exception_disable_div_by_zero.html", null ], + [ "FPExceptionDisableInvalid", "class_f_p_exception_disable_invalid.html", null ], + [ "FPExceptionsEnable", "class_f_p_exceptions_enable.html", null ], + [ "GearConstraint", "class_gear_constraint.html", "class_gear_constraint" ], + [ "GearConstraintPart", "class_gear_constraint_part.html", "class_gear_constraint_part" ], + [ "GearConstraintSettings", "class_gear_constraint_settings.html", "class_gear_constraint_settings" ], + [ "GetTrianglesContextMultiVertexList", "class_get_triangles_context_multi_vertex_list.html", "class_get_triangles_context_multi_vertex_list" ], + [ "GetTrianglesContextVertexList", "class_get_triangles_context_vertex_list.html", "class_get_triangles_context_vertex_list" ], + [ "GJKClosestPoint", "class_g_j_k_closest_point.html", "class_g_j_k_closest_point" ], + [ "GroupFilter", "class_group_filter.html", "class_group_filter" ], + [ "GroupFilterTable", "class_group_filter_table.html", "class_group_filter_table" ], + [ "HeightFieldShape", "class_height_field_shape.html", "class_height_field_shape" ], + [ "HeightFieldShapeSettings", "class_height_field_shape_settings.html", "class_height_field_shape_settings" ], + [ "HingeConstraint", "class_hinge_constraint.html", "class_hinge_constraint" ], + [ "HingeConstraintSettings", "class_hinge_constraint_settings.html", "class_hinge_constraint_settings" ], + [ "HingeRotationConstraintPart", "class_hinge_rotation_constraint_part.html", "class_hinge_rotation_constraint_part" ], + [ "IgnoreMultipleBodiesFilter", "class_ignore_multiple_bodies_filter.html", "class_ignore_multiple_bodies_filter" ], + [ "IgnoreSingleBodyFilter", "class_ignore_single_body_filter.html", "class_ignore_single_body_filter" ], + [ "IgnoreSingleBodyFilterChained", "class_ignore_single_body_filter_chained.html", "class_ignore_single_body_filter_chained" ], + [ "IndependentAxisConstraintPart", "class_independent_axis_constraint_part.html", "class_independent_axis_constraint_part" ], + [ "IndexedTriangle", "class_indexed_triangle.html", "class_indexed_triangle" ], + [ "IndexedTriangleNoMaterial", "class_indexed_triangle_no_material.html", "class_indexed_triangle_no_material" ], + [ "InternalEdgeRemovingCollector", "class_internal_edge_removing_collector.html", "class_internal_edge_removing_collector" ], + [ "IObjectStreamIn", "class_i_object_stream_in.html", "class_i_object_stream_in" ], + [ "IObjectStreamOut", "class_i_object_stream_out.html", "class_i_object_stream_out" ], + [ "IslandBuilder", "class_island_builder.html", "class_island_builder" ], + [ "JobSystem", "class_job_system.html", "class_job_system" ], + [ "JobSystemSingleThreaded", "class_job_system_single_threaded.html", "class_job_system_single_threaded" ], + [ "JobSystemThreadPool", "class_job_system_thread_pool.html", "class_job_system_thread_pool" ], + [ "JobSystemWithBarrier", "class_job_system_with_barrier.html", "class_job_system_with_barrier" ], + [ "LargeIslandSplitter", "class_large_island_splitter.html", "class_large_island_splitter" ], + [ "LFHMAllocator", "class_l_f_h_m_allocator.html", "class_l_f_h_m_allocator" ], + [ "LFHMAllocatorContext", "class_l_f_h_m_allocator_context.html", "class_l_f_h_m_allocator_context" ], + [ "LinearCurve", "class_linear_curve.html", "class_linear_curve" ], + [ "LockFreeHashMap", "class_lock_free_hash_map.html", "class_lock_free_hash_map" ], + [ "MassProperties", "class_mass_properties.html", "class_mass_properties" ], + [ "Mat44", "class_mat44.html", "class_mat44" ], + [ "Matrix", "class_matrix.html", "class_matrix" ], + [ "MeshShape", "class_mesh_shape.html", "class_mesh_shape" ], + [ "MeshShapeSettings", "class_mesh_shape_settings.html", "class_mesh_shape_settings" ], + [ "MinkowskiDifference", "struct_minkowski_difference.html", "struct_minkowski_difference" ], + [ "MortonCode", "class_morton_code.html", null ], + [ "MotionProperties", "class_motion_properties.html", "class_motion_properties" ], + [ "MotorcycleController", "class_motorcycle_controller.html", "class_motorcycle_controller" ], + [ "MotorcycleControllerSettings", "class_motorcycle_controller_settings.html", "class_motorcycle_controller_settings" ], + [ "MotorSettings", "class_motor_settings.html", "class_motor_settings" ], + [ "MutableCompoundShape", "class_mutable_compound_shape.html", "class_mutable_compound_shape" ], + [ "MutableCompoundShapeSettings", "class_mutable_compound_shape_settings.html", "class_mutable_compound_shape_settings" ], + [ "Mutex", "class_mutex.html", "class_mutex" ], + [ "MutexArray", "class_mutex_array.html", "class_mutex_array" ], + [ "NarrowPhaseQuery", "class_narrow_phase_query.html", "class_narrow_phase_query" ], + [ "NodeCodecQuadTreeHalfFloat", "class_node_codec_quad_tree_half_float.html", "class_node_codec_quad_tree_half_float" ], + [ "NonCopyable", "class_non_copyable.html", "class_non_copyable" ], + [ "ObjectLayerFilter", "class_object_layer_filter.html", "class_object_layer_filter" ], + [ "ObjectLayerPairFilter", "class_object_layer_pair_filter.html", "class_object_layer_pair_filter" ], + [ "ObjectLayerPairFilterMask", "class_object_layer_pair_filter_mask.html", "class_object_layer_pair_filter_mask" ], + [ "ObjectLayerPairFilterTable", "class_object_layer_pair_filter_table.html", "class_object_layer_pair_filter_table" ], + [ "ObjectStream", "class_object_stream.html", "class_object_stream" ], + [ "ObjectStreamBinaryIn", "class_object_stream_binary_in.html", "class_object_stream_binary_in" ], + [ "ObjectStreamBinaryOut", "class_object_stream_binary_out.html", "class_object_stream_binary_out" ], + [ "ObjectStreamIn", "class_object_stream_in.html", "class_object_stream_in" ], + [ "ObjectStreamOut", "class_object_stream_out.html", "class_object_stream_out" ], + [ "ObjectStreamTextIn", "class_object_stream_text_in.html", "class_object_stream_text_in" ], + [ "ObjectStreamTextOut", "class_object_stream_text_out.html", "class_object_stream_text_out" ], + [ "ObjectVsBroadPhaseLayerFilter", "class_object_vs_broad_phase_layer_filter.html", "class_object_vs_broad_phase_layer_filter" ], + [ "ObjectVsBroadPhaseLayerFilterMask", "class_object_vs_broad_phase_layer_filter_mask.html", "class_object_vs_broad_phase_layer_filter_mask" ], + [ "ObjectVsBroadPhaseLayerFilterTable", "class_object_vs_broad_phase_layer_filter_table.html", "class_object_vs_broad_phase_layer_filter_table" ], + [ "OffsetCenterOfMassShape", "class_offset_center_of_mass_shape.html", "class_offset_center_of_mass_shape" ], + [ "OffsetCenterOfMassShapeSettings", "class_offset_center_of_mass_shape_settings.html", "class_offset_center_of_mass_shape_settings" ], + [ "OrientedBox", "class_oriented_box.html", "class_oriented_box" ], + [ "PathConstraint", "class_path_constraint.html", "class_path_constraint" ], + [ "PathConstraintPath", "class_path_constraint_path.html", "class_path_constraint_path" ], + [ "PathConstraintPathHermite", "class_path_constraint_path_hermite.html", "class_path_constraint_path_hermite" ], + [ "PathConstraintSettings", "class_path_constraint_settings.html", "class_path_constraint_settings" ], + [ "PhysicsLock", "class_physics_lock.html", null ], + [ "PhysicsMaterial", "class_physics_material.html", "class_physics_material" ], + [ "PhysicsMaterialSimple", "class_physics_material_simple.html", "class_physics_material_simple" ], + [ "PhysicsScene", "class_physics_scene.html", "class_physics_scene" ], + [ "PhysicsSettings", "struct_physics_settings.html", "struct_physics_settings" ], + [ "PhysicsStepListener", "class_physics_step_listener.html", "class_physics_step_listener" ], + [ "PhysicsSystem", "class_physics_system.html", "class_physics_system" ], + [ "PhysicsUpdateContext", "class_physics_update_context.html", "class_physics_update_context" ], + [ "Plane", "class_plane.html", "class_plane" ], + [ "PlaneShape", "class_plane_shape.html", "class_plane_shape" ], + [ "PlaneShapeSettings", "class_plane_shape_settings.html", "class_plane_shape_settings" ], + [ "PointConstraint", "class_point_constraint.html", "class_point_constraint" ], + [ "PointConstraintPart", "class_point_constraint_part.html", "class_point_constraint_part" ], + [ "PointConstraintSettings", "class_point_constraint_settings.html", "class_point_constraint_settings" ], + [ "PointConvexSupport", "struct_point_convex_support.html", "struct_point_convex_support" ], + [ "PolygonConvexSupport", "struct_polygon_convex_support.html", "struct_polygon_convex_support" ], + [ "PolyhedronSubmergedVolumeCalculator", "class_polyhedron_submerged_volume_calculator.html", "class_polyhedron_submerged_volume_calculator" ], + [ "ProfileMeasurement", "class_profile_measurement.html", "class_profile_measurement" ], + [ "Profiler", "class_profiler.html", "class_profiler" ], + [ "ProfileSample", "class_profile_sample.html", "class_profile_sample" ], + [ "ProfileThread", "class_profile_thread.html", "class_profile_thread" ], + [ "PulleyConstraint", "class_pulley_constraint.html", "class_pulley_constraint" ], + [ "PulleyConstraintSettings", "class_pulley_constraint_settings.html", "class_pulley_constraint_settings" ], + [ "QuadTree", "class_quad_tree.html", "class_quad_tree" ], + [ "Quat", "class_quat.html", "class_quat" ], + [ "RackAndPinionConstraint", "class_rack_and_pinion_constraint.html", "class_rack_and_pinion_constraint" ], + [ "RackAndPinionConstraintPart", "class_rack_and_pinion_constraint_part.html", "class_rack_and_pinion_constraint_part" ], + [ "RackAndPinionConstraintSettings", "class_rack_and_pinion_constraint_settings.html", "class_rack_and_pinion_constraint_settings" ], + [ "Ragdoll", "class_ragdoll.html", "class_ragdoll" ], + [ "RagdollSettings", "class_ragdoll_settings.html", "class_ragdoll_settings" ], + [ "RayCast", "struct_ray_cast.html", null ], + [ "RayCastResult", "class_ray_cast_result.html", "class_ray_cast_result" ], + [ "RayCastSettings", "class_ray_cast_settings.html", "class_ray_cast_settings" ], + [ "RayCastT", "struct_ray_cast_t.html", "struct_ray_cast_t" ], + [ "RayInvDirection", "class_ray_inv_direction.html", "class_ray_inv_direction" ], + [ "Ref", "class_ref.html", "class_ref" ], + [ "RefConst", "class_ref_const.html", "class_ref_const" ], + [ "RefTarget", "class_ref_target.html", "class_ref_target" ], + [ "RefTargetVirtual", "class_ref_target_virtual.html", "class_ref_target_virtual" ], + [ "Result", "class_result.html", "class_result" ], + [ "ReversedShapeFilter", "class_reversed_shape_filter.html", "class_reversed_shape_filter" ], + [ "RotatedTranslatedShape", "class_rotated_translated_shape.html", "class_rotated_translated_shape" ], + [ "RotatedTranslatedShapeSettings", "class_rotated_translated_shape_settings.html", "class_rotated_translated_shape_settings" ], + [ "RotationEulerConstraintPart", "class_rotation_euler_constraint_part.html", "class_rotation_euler_constraint_part" ], + [ "RotationQuatConstraintPart", "class_rotation_quat_constraint_part.html", "class_rotation_quat_constraint_part" ], + [ "RRayCast", "struct_r_ray_cast.html", "struct_r_ray_cast" ], + [ "RShapeCast", "struct_r_shape_cast.html", "struct_r_shape_cast" ], + [ "RTTI", "class_r_t_t_i.html", "class_r_t_t_i" ], + [ "ScaledShape", "class_scaled_shape.html", "class_scaled_shape" ], + [ "ScaledShapeSettings", "class_scaled_shape_settings.html", null ], + [ "ScopeExit", "class_scope_exit.html", "class_scope_exit" ], + [ "Semaphore", "class_semaphore.html", "class_semaphore" ], + [ "SerializableAttribute", "class_serializable_attribute.html", "class_serializable_attribute" ], + [ "SerializableObject", "class_serializable_object.html", "class_serializable_object" ], + [ "Shape", "class_shape.html", "class_shape" ], + [ "ShapeCast", "struct_shape_cast.html", null ], + [ "ShapeCastResult", "class_shape_cast_result.html", "class_shape_cast_result" ], + [ "ShapeCastSettings", "class_shape_cast_settings.html", "class_shape_cast_settings" ], + [ "ShapeCastT", "struct_shape_cast_t.html", "struct_shape_cast_t" ], + [ "ShapeFilter", "class_shape_filter.html", "class_shape_filter" ], + [ "ShapeFunctions", "class_shape_functions.html", "class_shape_functions" ], + [ "ShapeSettings", "class_shape_settings.html", "class_shape_settings" ], + [ "SharedLock", "class_shared_lock.html", "class_shared_lock" ], + [ "SharedMutex", "class_shared_mutex.html", "class_shared_mutex" ], + [ "SixDOFConstraint", "class_six_d_o_f_constraint.html", "class_six_d_o_f_constraint" ], + [ "SixDOFConstraintSettings", "class_six_d_o_f_constraint_settings.html", "class_six_d_o_f_constraint_settings" ], + [ "SkeletalAnimation", "class_skeletal_animation.html", "class_skeletal_animation" ], + [ "Skeleton", "class_skeleton.html", "class_skeleton" ], + [ "SkeletonMapper", "class_skeleton_mapper.html", "class_skeleton_mapper" ], + [ "SkeletonPose", "class_skeleton_pose.html", "class_skeleton_pose" ], + [ "SliderConstraint", "class_slider_constraint.html", "class_slider_constraint" ], + [ "SliderConstraintSettings", "class_slider_constraint_settings.html", "class_slider_constraint_settings" ], + [ "SoftBodyContactListener", "class_soft_body_contact_listener.html", "class_soft_body_contact_listener" ], + [ "SoftBodyContactSettings", "class_soft_body_contact_settings.html", "class_soft_body_contact_settings" ], + [ "SoftBodyCreationSettings", "class_soft_body_creation_settings.html", "class_soft_body_creation_settings" ], + [ "SoftBodyManifold", "class_soft_body_manifold.html", "class_soft_body_manifold" ], + [ "SoftBodyMotionProperties", "class_soft_body_motion_properties.html", "class_soft_body_motion_properties" ], + [ "SoftBodyShape", "class_soft_body_shape.html", "class_soft_body_shape" ], + [ "SoftBodySharedSettings", "class_soft_body_shared_settings.html", "class_soft_body_shared_settings" ], + [ "SoftBodyUpdateContext", "class_soft_body_update_context.html", "class_soft_body_update_context" ], + [ "SoftBodyVertex", "class_soft_body_vertex.html", "class_soft_body_vertex" ], + [ "SoftBodyWithMotionPropertiesAndShape", "class_soft_body_with_motion_properties_and_shape.html", "class_soft_body_with_motion_properties_and_shape" ], + [ "SpecifiedBroadPhaseLayerFilter", "class_specified_broad_phase_layer_filter.html", "class_specified_broad_phase_layer_filter" ], + [ "SpecifiedObjectLayerFilter", "class_specified_object_layer_filter.html", "class_specified_object_layer_filter" ], + [ "Sphere", "class_sphere.html", "class_sphere" ], + [ "SphereShape", "class_sphere_shape.html", "class_sphere_shape" ], + [ "SphereShapeSettings", "class_sphere_shape_settings.html", "class_sphere_shape_settings" ], + [ "SpringPart", "class_spring_part.html", "class_spring_part" ], + [ "SpringSettings", "class_spring_settings.html", "class_spring_settings" ], + [ "StateRecorder", "class_state_recorder.html", "class_state_recorder" ], + [ "StateRecorderFilter", "class_state_recorder_filter.html", "class_state_recorder_filter" ], + [ "StateRecorderImpl", "class_state_recorder_impl.html", "class_state_recorder_impl" ], + [ "StaticArray", "class_static_array.html", "class_static_array" ], + [ "StaticCompoundShape", "class_static_compound_shape.html", "class_static_compound_shape" ], + [ "StaticCompoundShapeSettings", "class_static_compound_shape_settings.html", "class_static_compound_shape_settings" ], + [ "STLAlignedAllocator", "class_s_t_l_aligned_allocator.html", "class_s_t_l_aligned_allocator" ], + [ "STLAllocator", "class_s_t_l_allocator.html", "class_s_t_l_allocator" ], + [ "STLTempAllocator", "class_s_t_l_temp_allocator.html", "class_s_t_l_temp_allocator" ], + [ "StreamIn", "class_stream_in.html", "class_stream_in" ], + [ "StreamInWrapper", "class_stream_in_wrapper.html", "class_stream_in_wrapper" ], + [ "StreamOut", "class_stream_out.html", "class_stream_out" ], + [ "StreamOutWrapper", "class_stream_out_wrapper.html", "class_stream_out_wrapper" ], + [ "SubShapeID", "class_sub_shape_i_d.html", "class_sub_shape_i_d" ], + [ "SubShapeIDCreator", "class_sub_shape_i_d_creator.html", "class_sub_shape_i_d_creator" ], + [ "SubShapeIDPair", "class_sub_shape_i_d_pair.html", "class_sub_shape_i_d_pair" ], + [ "SwingTwistConstraint", "class_swing_twist_constraint.html", "class_swing_twist_constraint" ], + [ "SwingTwistConstraintPart", "class_swing_twist_constraint_part.html", "class_swing_twist_constraint_part" ], + [ "SwingTwistConstraintSettings", "class_swing_twist_constraint_settings.html", "class_swing_twist_constraint_settings" ], + [ "TaperedCapsuleShape", "class_tapered_capsule_shape.html", "class_tapered_capsule_shape" ], + [ "TaperedCapsuleShapeSettings", "class_tapered_capsule_shape_settings.html", null ], + [ "TaperedCylinderShape", "class_tapered_cylinder_shape.html", "class_tapered_cylinder_shape" ], + [ "TaperedCylinderShapeSettings", "class_tapered_cylinder_shape_settings.html", null ], + [ "TempAllocator", "class_temp_allocator.html", "class_temp_allocator" ], + [ "TempAllocatorImpl", "class_temp_allocator_impl.html", "class_temp_allocator_impl" ], + [ "TempAllocatorImplWithMallocFallback", "class_temp_allocator_impl_with_malloc_fallback.html", "class_temp_allocator_impl_with_malloc_fallback" ], + [ "TempAllocatorMalloc", "class_temp_allocator_malloc.html", "class_temp_allocator_malloc" ], + [ "TrackedVehicleController", "class_tracked_vehicle_controller.html", "class_tracked_vehicle_controller" ], + [ "TrackedVehicleControllerSettings", "class_tracked_vehicle_controller_settings.html", "class_tracked_vehicle_controller_settings" ], + [ "TransformedConvexObject", "struct_transformed_convex_object.html", "struct_transformed_convex_object" ], + [ "TransformedShape", "class_transformed_shape.html", "class_transformed_shape" ], + [ "Triangle", "class_triangle.html", "class_triangle" ], + [ "TriangleCodecIndexed8BitPackSOA4Flags", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags" ], + [ "TriangleConvexSupport", "struct_triangle_convex_support.html", "struct_triangle_convex_support" ], + [ "TriangleGrouper", "class_triangle_grouper.html", "class_triangle_grouper" ], + [ "TriangleGrouperClosestCentroid", "class_triangle_grouper_closest_centroid.html", "class_triangle_grouper_closest_centroid" ], + [ "TriangleGrouperMorton", "class_triangle_grouper_morton.html", "class_triangle_grouper_morton" ], + [ "TriangleShape", "class_triangle_shape.html", "class_triangle_shape" ], + [ "TriangleShapeSettings", "class_triangle_shape_settings.html", "class_triangle_shape_settings" ], + [ "TriangleSplitter", "class_triangle_splitter.html", "class_triangle_splitter" ], + [ "TriangleSplitterBinning", "class_triangle_splitter_binning.html", "class_triangle_splitter_binning" ], + [ "TriangleSplitterFixedLeafSize", "class_triangle_splitter_fixed_leaf_size.html", "class_triangle_splitter_fixed_leaf_size" ], + [ "TriangleSplitterLongestAxis", "class_triangle_splitter_longest_axis.html", "class_triangle_splitter_longest_axis" ], + [ "TriangleSplitterMean", "class_triangle_splitter_mean.html", "class_triangle_splitter_mean" ], + [ "TriangleSplitterMorton", "class_triangle_splitter_morton.html", "class_triangle_splitter_morton" ], + [ "TwoBodyConstraint", "class_two_body_constraint.html", "class_two_body_constraint" ], + [ "TwoBodyConstraintSettings", "class_two_body_constraint_settings.html", "class_two_body_constraint_settings" ], + [ "UniqueLock", "class_unique_lock.html", "class_unique_lock" ], + [ "UVec4", "class_u_vec4.html", "class_u_vec4" ], + [ "UVec8", "class_u_vec8.html", "class_u_vec8" ], + [ "Vec3", "class_vec3.html", "class_vec3" ], + [ "Vec4", "class_vec4.html", "class_vec4" ], + [ "Vec8", "class_vec8.html", "class_vec8" ], + [ "Vector", "class_vector.html", "class_vector" ], + [ "VehicleAntiRollBar", "class_vehicle_anti_roll_bar.html", "class_vehicle_anti_roll_bar" ], + [ "VehicleCollisionTester", "class_vehicle_collision_tester.html", "class_vehicle_collision_tester" ], + [ "VehicleCollisionTesterCastCylinder", "class_vehicle_collision_tester_cast_cylinder.html", "class_vehicle_collision_tester_cast_cylinder" ], + [ "VehicleCollisionTesterCastSphere", "class_vehicle_collision_tester_cast_sphere.html", "class_vehicle_collision_tester_cast_sphere" ], + [ "VehicleCollisionTesterRay", "class_vehicle_collision_tester_ray.html", "class_vehicle_collision_tester_ray" ], + [ "VehicleConstraint", "class_vehicle_constraint.html", "class_vehicle_constraint" ], + [ "VehicleConstraintSettings", "class_vehicle_constraint_settings.html", "class_vehicle_constraint_settings" ], + [ "VehicleController", "class_vehicle_controller.html", "class_vehicle_controller" ], + [ "VehicleControllerSettings", "class_vehicle_controller_settings.html", "class_vehicle_controller_settings" ], + [ "VehicleDifferentialSettings", "class_vehicle_differential_settings.html", "class_vehicle_differential_settings" ], + [ "VehicleEngine", "class_vehicle_engine.html", "class_vehicle_engine" ], + [ "VehicleEngineSettings", "class_vehicle_engine_settings.html", "class_vehicle_engine_settings" ], + [ "VehicleTrack", "class_vehicle_track.html", "class_vehicle_track" ], + [ "VehicleTrackSettings", "class_vehicle_track_settings.html", "class_vehicle_track_settings" ], + [ "VehicleTransmission", "class_vehicle_transmission.html", "class_vehicle_transmission" ], + [ "VehicleTransmissionSettings", "class_vehicle_transmission_settings.html", "class_vehicle_transmission_settings" ], + [ "Wheel", "class_wheel.html", "class_wheel" ], + [ "WheeledVehicleController", "class_wheeled_vehicle_controller.html", "class_wheeled_vehicle_controller" ], + [ "WheeledVehicleControllerSettings", "class_wheeled_vehicle_controller_settings.html", "class_wheeled_vehicle_controller_settings" ], + [ "WheelSettings", "class_wheel_settings.html", "class_wheel_settings" ], + [ "WheelSettingsTV", "class_wheel_settings_t_v.html", "class_wheel_settings_t_v" ], + [ "WheelSettingsWV", "class_wheel_settings_w_v.html", "class_wheel_settings_w_v" ], + [ "WheelTV", "class_wheel_t_v.html", "class_wheel_t_v" ], + [ "WheelWV", "class_wheel_w_v.html", "class_wheel_w_v" ] +]; \ No newline at end of file diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 000000000..224b29aa9 Binary files /dev/null and b/bc_s.png differ diff --git a/bc_sd.png b/bc_sd.png new file mode 100644 index 000000000..31ca888dc Binary files /dev/null and b/bc_sd.png differ diff --git a/class_a_a_b_b_tree_builder-members.html b/class_a_a_b_b_tree_builder-members.html new file mode 100644 index 000000000..c9ddb93b7 --- /dev/null +++ b/class_a_a_b_b_tree_builder-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AABBTreeBuilder Member List
+
+
+ +

This is the complete list of members for AABBTreeBuilder, including all inherited members.

+ + + +
AABBTreeBuilder(TriangleSplitter &inSplitter, uint inMaxTrianglesPerLeaf=16)AABBTreeBuilder
Build(AABBTreeBuilderStats &outStats)AABBTreeBuilder
+
+ + + + diff --git a/class_a_a_b_b_tree_builder.html b/class_a_a_b_b_tree_builder.html new file mode 100644 index 000000000..88e589ab9 --- /dev/null +++ b/class_a_a_b_b_tree_builder.html @@ -0,0 +1,197 @@ + + + + + + + +Jolt Physics: AABBTreeBuilder Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AABBTreeBuilder Class Reference
+
+
+ +

Helper class to build an AABB tree. + More...

+ +

#include <AABBTreeBuilder.h>

+ + + + + +

+Classes

class  Node
 A node in the tree, contains the AABox for the tree and any child nodes or triangles. More...
 
+ + + + + + + +

+Public Member Functions

 AABBTreeBuilder (TriangleSplitter &inSplitter, uint inMaxTrianglesPerLeaf=16)
 Constructor.
 
NodeBuild (AABBTreeBuilderStats &outStats)
 Recursively build tree, returns the root node of the tree.
 
+

Detailed Description

+

Helper class to build an AABB tree.

+

Constructor & Destructor Documentation

+ +

◆ AABBTreeBuilder()

+ +
+
+ + + + + + + + + + + + + + + + + + +
AABBTreeBuilder::AABBTreeBuilder (TriangleSplitterinSplitter,
uint inMaxTrianglesPerLeaf = 16 
)
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ Build()

+ +
+
+ + + + + + + + +
AABBTreeBuilder::Node * AABBTreeBuilder::Build (AABBTreeBuilderStatsoutStats)
+
+ +

Recursively build tree, returns the root node of the tree.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_a_a_b_b_tree_builder.js b/class_a_a_b_b_tree_builder.js new file mode 100644 index 000000000..ce57bab8d --- /dev/null +++ b/class_a_a_b_b_tree_builder.js @@ -0,0 +1,6 @@ +var class_a_a_b_b_tree_builder = +[ + [ "Node", "class_a_a_b_b_tree_builder_1_1_node.html", "class_a_a_b_b_tree_builder_1_1_node" ], + [ "AABBTreeBuilder", "class_a_a_b_b_tree_builder.html#a3a44b40e58b23523baab7698ed9eb117", null ], + [ "Build", "class_a_a_b_b_tree_builder.html#a82efdb085cf7ee8b64188c28c0f854d7", null ] +]; \ No newline at end of file diff --git a/class_a_a_b_b_tree_builder_1_1_node-members.html b/class_a_a_b_b_tree_builder_1_1_node-members.html new file mode 100644 index 000000000..7a1226d4a --- /dev/null +++ b/class_a_a_b_b_tree_builder_1_1_node-members.html @@ -0,0 +1,135 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AABBTreeBuilder::Node Member List
+
+
+ +

This is the complete list of members for AABBTreeBuilder::Node, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
AABBTreeBuilderAABBTreeBuilder::Nodefriend
CalculateSAHCost(float inCostTraversal, float inCostLeaf) constAABBTreeBuilder::Node
GetLeafNodeCount() constAABBTreeBuilder::Node
GetMaxDepth() constAABBTreeBuilder::Node
GetMinDepth() constAABBTreeBuilder::Node
GetNChildren(uint inN, Array< const Node * > &outChildren) constAABBTreeBuilder::Node
GetNodeCount() constAABBTreeBuilder::Node
GetTriangleCount() constAABBTreeBuilder::Nodeinline
GetTriangleCountInTree() constAABBTreeBuilder::Node
GetTriangleCountPerNode(float &outAverage, uint &outMin, uint &outMax) constAABBTreeBuilder::Node
HasChildren() constAABBTreeBuilder::Nodeinline
mBoundsAABBTreeBuilder::Node
mChildAABBTreeBuilder::Node
mTrianglesAABBTreeBuilder::Node
Node()AABBTreeBuilder::Node
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~Node()AABBTreeBuilder::Node
+
+ + + + diff --git a/class_a_a_b_b_tree_builder_1_1_node.html b/class_a_a_b_b_tree_builder_1_1_node.html new file mode 100644 index 000000000..8f921a53e --- /dev/null +++ b/class_a_a_b_b_tree_builder_1_1_node.html @@ -0,0 +1,557 @@ + + + + + + + +Jolt Physics: AABBTreeBuilder::Node Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AABBTreeBuilder::Node Class Reference
+
+
+ +

A node in the tree, contains the AABox for the tree and any child nodes or triangles. + More...

+ +

#include <AABBTreeBuilder.h>

+
+Inheritance diagram for AABBTreeBuilder::Node:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Node ()
 Constructor.
 
 ~Node ()
 
uint GetTriangleCount () const
 Get number of triangles in this node.
 
bool HasChildren () const
 Check if this node has any children.
 
uint GetMinDepth () const
 Min depth of tree.
 
uint GetMaxDepth () const
 Max depth of tree.
 
uint GetNodeCount () const
 Number of nodes in tree.
 
uint GetLeafNodeCount () const
 Number of leaf nodes in tree.
 
uint GetTriangleCountInTree () const
 Get triangle count in tree.
 
void GetTriangleCountPerNode (float &outAverage, uint &outMin, uint &outMax) const
 Calculate min and max triangles per node.
 
float CalculateSAHCost (float inCostTraversal, float inCostLeaf) const
 Calculate the total cost of the tree using the surface area heuristic.
 
void GetNChildren (uint inN, Array< const Node * > &outChildren) const
 Recursively get children (breadth first) to get in total inN children (or less if there are no more)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + +

+Public Attributes

AABox mBounds
 Bounding box.
 
IndexedTriangleList mTriangles
 Triangles (if no child nodes)
 
NodemChild [2]
 Child nodes (if no triangles)
 
+ + + +

+Friends

class AABBTreeBuilder
 
+

Detailed Description

+

A node in the tree, contains the AABox for the tree and any child nodes or triangles.

+

Constructor & Destructor Documentation

+ +

◆ Node()

+ +
+
+ + + + + + + +
JPH_NAMESPACE_BEGIN AABBTreeBuilder::Node::Node ()
+
+ +

Constructor.

+ +
+
+ +

◆ ~Node()

+ +
+
+ + + + + + + +
AABBTreeBuilder::Node::~Node ()
+
+ +
+
+

Member Function Documentation

+ +

◆ CalculateSAHCost()

+ +
+
+ + + + + + + + + + + + + + + + + + +
float AABBTreeBuilder::Node::CalculateSAHCost (float inCostTraversal,
float inCostLeaf 
) const
+
+ +

Calculate the total cost of the tree using the surface area heuristic.

+ +
+
+ +

◆ GetLeafNodeCount()

+ +
+
+ + + + + + + +
uint AABBTreeBuilder::Node::GetLeafNodeCount () const
+
+ +

Number of leaf nodes in tree.

+ +
+
+ +

◆ GetMaxDepth()

+ +
+
+ + + + + + + +
uint AABBTreeBuilder::Node::GetMaxDepth () const
+
+ +

Max depth of tree.

+ +
+
+ +

◆ GetMinDepth()

+ +
+
+ + + + + + + +
uint AABBTreeBuilder::Node::GetMinDepth () const
+
+ +

Min depth of tree.

+ +
+
+ +

◆ GetNChildren()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void AABBTreeBuilder::Node::GetNChildren (uint inN,
Array< const Node * > & outChildren 
) const
+
+ +

Recursively get children (breadth first) to get in total inN children (or less if there are no more)

+ +
+
+ +

◆ GetNodeCount()

+ +
+
+ + + + + + + +
uint AABBTreeBuilder::Node::GetNodeCount () const
+
+ +

Number of nodes in tree.

+ +
+
+ +

◆ GetTriangleCount()

+ +
+
+ + + + + +
+ + + + + + + +
uint AABBTreeBuilder::Node::GetTriangleCount () const
+
+inline
+
+ +

Get number of triangles in this node.

+ +
+
+ +

◆ GetTriangleCountInTree()

+ +
+
+ + + + + + + +
uint AABBTreeBuilder::Node::GetTriangleCountInTree () const
+
+ +

Get triangle count in tree.

+ +
+
+ +

◆ GetTriangleCountPerNode()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void AABBTreeBuilder::Node::GetTriangleCountPerNode (float & outAverage,
uintoutMin,
uintoutMax 
) const
+
+ +

Calculate min and max triangles per node.

+ +
+
+ +

◆ HasChildren()

+ +
+
+ + + + + +
+ + + + + + + +
bool AABBTreeBuilder::Node::HasChildren () const
+
+inline
+
+ +

Check if this node has any children.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ AABBTreeBuilder

+ +
+
+ + + + + +
+ + + + +
friend class AABBTreeBuilder
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ mBounds

+ +
+
+ + + + +
AABox AABBTreeBuilder::Node::mBounds
+
+ +

Bounding box.

+ +
+
+ +

◆ mChild

+ +
+
+ + + + +
Node* AABBTreeBuilder::Node::mChild[2]
+
+ +

Child nodes (if no triangles)

+ +
+
+ +

◆ mTriangles

+ +
+
+ + + + +
IndexedTriangleList AABBTreeBuilder::Node::mTriangles
+
+ +

Triangles (if no child nodes)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_a_a_b_b_tree_builder_1_1_node.js b/class_a_a_b_b_tree_builder_1_1_node.js new file mode 100644 index 000000000..d956b59dd --- /dev/null +++ b/class_a_a_b_b_tree_builder_1_1_node.js @@ -0,0 +1,19 @@ +var class_a_a_b_b_tree_builder_1_1_node = +[ + [ "Node", "class_a_a_b_b_tree_builder_1_1_node.html#a8db3648f4a90b334c170c51f4545b2c0", null ], + [ "~Node", "class_a_a_b_b_tree_builder_1_1_node.html#ac377068485ba4e2055d0b65d50bbb344", null ], + [ "CalculateSAHCost", "class_a_a_b_b_tree_builder_1_1_node.html#af66f1c559bb11897ba3d2d996b931e5d", null ], + [ "GetLeafNodeCount", "class_a_a_b_b_tree_builder_1_1_node.html#a26388038bedeaa6f463327ca1542fb06", null ], + [ "GetMaxDepth", "class_a_a_b_b_tree_builder_1_1_node.html#aef9d9d0695306595e4b6f16b2b47e60c", null ], + [ "GetMinDepth", "class_a_a_b_b_tree_builder_1_1_node.html#a22a2cb2691825e2935516c36bc936875", null ], + [ "GetNChildren", "class_a_a_b_b_tree_builder_1_1_node.html#a8babc5943488e1ca48b9768c647f599a", null ], + [ "GetNodeCount", "class_a_a_b_b_tree_builder_1_1_node.html#ae1245ceb7193257c465b0916c9c19f10", null ], + [ "GetTriangleCount", "class_a_a_b_b_tree_builder_1_1_node.html#ab9f14f78dc59d08126ca910121c173e0", null ], + [ "GetTriangleCountInTree", "class_a_a_b_b_tree_builder_1_1_node.html#ad4227473a354d52097ead61c6fa8d992", null ], + [ "GetTriangleCountPerNode", "class_a_a_b_b_tree_builder_1_1_node.html#a03a6ef7fe1cfc46cb4cb85d49c0188ed", null ], + [ "HasChildren", "class_a_a_b_b_tree_builder_1_1_node.html#ae10ed18604852aa130a4770fe72c9240", null ], + [ "AABBTreeBuilder", "class_a_a_b_b_tree_builder_1_1_node.html#a27094b8ce6a5cd4a6edb184d2ae9b302", null ], + [ "mBounds", "class_a_a_b_b_tree_builder_1_1_node.html#a4549ed8b447ff95b86f267118f229f49", null ], + [ "mChild", "class_a_a_b_b_tree_builder_1_1_node.html#adfba523204796d8e9d9e0871cf0e51a6", null ], + [ "mTriangles", "class_a_a_b_b_tree_builder_1_1_node.html#a4ddf63bc140eacd04b11913f745b2e2f", null ] +]; \ No newline at end of file diff --git a/class_a_a_b_b_tree_builder_1_1_node.png b/class_a_a_b_b_tree_builder_1_1_node.png new file mode 100644 index 000000000..903e6f187 Binary files /dev/null and b/class_a_a_b_b_tree_builder_1_1_node.png differ diff --git a/class_a_a_b_b_tree_to_buffer-members.html b/class_a_a_b_b_tree_to_buffer-members.html new file mode 100644 index 000000000..2555ed49b --- /dev/null +++ b/class_a_a_b_b_tree_to_buffer-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AABBTreeToBuffer< TriangleCodec, NodeCodec > Member List
+
+
+ +

This is the complete list of members for AABBTreeToBuffer< TriangleCodec, NodeCodec >, including all inherited members.

+ + + + + + + + + + + + +
Convert(const VertexList &inVertices, const AABBTreeBuilder::Node *inRoot, bool inStoreUserData, const char *&outError)AABBTreeToBuffer< TriangleCodec, NodeCodec >inline
GetBuffer() constAABBTreeToBuffer< TriangleCodec, NodeCodec >inline
GetBuffer()AABBTreeToBuffer< TriangleCodec, NodeCodec >inline
GetNodeHeader() constAABBTreeToBuffer< TriangleCodec, NodeCodec >inline
GetRoot() constAABBTreeToBuffer< TriangleCodec, NodeCodec >inline
GetTriangleHeader() constAABBTreeToBuffer< TriangleCodec, NodeCodec >inline
HeaderSizeAABBTreeToBuffer< TriangleCodec, NodeCodec >static
NodeHeader typedefAABBTreeToBuffer< TriangleCodec, NodeCodec >
NumChildrenPerNodeAABBTreeToBuffer< TriangleCodec, NodeCodec >static
TriangleHeader typedefAABBTreeToBuffer< TriangleCodec, NodeCodec >
TriangleHeaderSizeAABBTreeToBuffer< TriangleCodec, NodeCodec >static
+
+ + + + diff --git a/class_a_a_b_b_tree_to_buffer.html b/class_a_a_b_b_tree_to_buffer.html new file mode 100644 index 000000000..40b23572c --- /dev/null +++ b/class_a_a_b_b_tree_to_buffer.html @@ -0,0 +1,487 @@ + + + + + + + +Jolt Physics: AABBTreeToBuffer< TriangleCodec, NodeCodec > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AABBTreeToBuffer< TriangleCodec, NodeCodec > Class Template Reference
+
+
+ +

Conversion algorithm that converts an AABB tree to an optimized binary buffer. + More...

+ +

#include <AABBTreeToBuffer.h>

+ + + + + + + + +

+Public Types

using NodeHeader = typename NodeCodec::Header
 Header for the tree.
 
using TriangleHeader = typename TriangleCodec::TriangleHeader
 Header for the triangles.
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool Convert (const VertexList &inVertices, const AABBTreeBuilder::Node *inRoot, bool inStoreUserData, const char *&outError)
 Convert AABB tree. Returns false if failed.
 
const ByteBufferGetBuffer () const
 Get resulting data.
 
ByteBufferGetBuffer ()
 Get resulting data.
 
const NodeHeaderGetNodeHeader () const
 Get header for tree.
 
const TriangleHeaderGetTriangleHeader () const
 Get header for triangles.
 
const void * GetRoot () const
 Get root of resulting tree.
 
+ + + + + + + + + + +

+Static Public Attributes

static const int HeaderSize = NodeCodec::HeaderSize
 Size in bytes of the header of the tree.
 
static const int NumChildrenPerNode = NodeCodec::NumChildrenPerNode
 Maximum number of children per node in the tree.
 
static const int TriangleHeaderSize = TriangleCodec::TriangleHeaderSize
 Size in bytes of the header for the triangles.
 
+

Detailed Description

+
template<class TriangleCodec, class NodeCodec>
+class AABBTreeToBuffer< TriangleCodec, NodeCodec >

Conversion algorithm that converts an AABB tree to an optimized binary buffer.

+

Member Typedef Documentation

+ +

◆ NodeHeader

+ +
+
+
+template<class TriangleCodec , class NodeCodec >
+ + + + +
using AABBTreeToBuffer< TriangleCodec, NodeCodec >::NodeHeader = typename NodeCodec::Header
+
+ +

Header for the tree.

+ +
+
+ +

◆ TriangleHeader

+ +
+
+
+template<class TriangleCodec , class NodeCodec >
+ + + + +
using AABBTreeToBuffer< TriangleCodec, NodeCodec >::TriangleHeader = typename TriangleCodec::TriangleHeader
+
+ +

Header for the triangles.

+ +
+
+

Member Function Documentation

+ +

◆ Convert()

+ +
+
+
+template<class TriangleCodec , class NodeCodec >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool AABBTreeToBuffer< TriangleCodec, NodeCodec >::Convert (const VertexListinVertices,
const AABBTreeBuilder::NodeinRoot,
bool inStoreUserData,
const char *& outError 
)
+
+inline
+
+ +

Convert AABB tree. Returns false if failed.

+ +
+
+ +

◆ GetBuffer() [1/2]

+ +
+
+
+template<class TriangleCodec , class NodeCodec >
+ + + + + +
+ + + + + + + +
ByteBuffer & AABBTreeToBuffer< TriangleCodec, NodeCodec >::GetBuffer ()
+
+inline
+
+ +

Get resulting data.

+ +
+
+ +

◆ GetBuffer() [2/2]

+ +
+
+
+template<class TriangleCodec , class NodeCodec >
+ + + + + +
+ + + + + + + +
const ByteBuffer & AABBTreeToBuffer< TriangleCodec, NodeCodec >::GetBuffer () const
+
+inline
+
+ +

Get resulting data.

+ +
+
+ +

◆ GetNodeHeader()

+ +
+
+
+template<class TriangleCodec , class NodeCodec >
+ + + + + +
+ + + + + + + +
const NodeHeader * AABBTreeToBuffer< TriangleCodec, NodeCodec >::GetNodeHeader () const
+
+inline
+
+ +

Get header for tree.

+ +
+
+ +

◆ GetRoot()

+ +
+
+
+template<class TriangleCodec , class NodeCodec >
+ + + + + +
+ + + + + + + +
const void * AABBTreeToBuffer< TriangleCodec, NodeCodec >::GetRoot () const
+
+inline
+
+ +

Get root of resulting tree.

+ +
+
+ +

◆ GetTriangleHeader()

+ +
+
+
+template<class TriangleCodec , class NodeCodec >
+ + + + + +
+ + + + + + + +
const TriangleHeader * AABBTreeToBuffer< TriangleCodec, NodeCodec >::GetTriangleHeader () const
+
+inline
+
+ +

Get header for triangles.

+ +
+
+

Member Data Documentation

+ +

◆ HeaderSize

+ +
+
+
+template<class TriangleCodec , class NodeCodec >
+ + + + + +
+ + + + +
const int AABBTreeToBuffer< TriangleCodec, NodeCodec >::HeaderSize = NodeCodec::HeaderSize
+
+static
+
+ +

Size in bytes of the header of the tree.

+ +
+
+ +

◆ NumChildrenPerNode

+ +
+
+
+template<class TriangleCodec , class NodeCodec >
+ + + + + +
+ + + + +
const int AABBTreeToBuffer< TriangleCodec, NodeCodec >::NumChildrenPerNode = NodeCodec::NumChildrenPerNode
+
+static
+
+ +

Maximum number of children per node in the tree.

+ +
+
+ +

◆ TriangleHeaderSize

+ +
+
+
+template<class TriangleCodec , class NodeCodec >
+ + + + + +
+ + + + +
const int AABBTreeToBuffer< TriangleCodec, NodeCodec >::TriangleHeaderSize = TriangleCodec::TriangleHeaderSize
+
+static
+
+ +

Size in bytes of the header for the triangles.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_a_a_b_b_tree_to_buffer.js b/class_a_a_b_b_tree_to_buffer.js new file mode 100644 index 000000000..cb29e404b --- /dev/null +++ b/class_a_a_b_b_tree_to_buffer.js @@ -0,0 +1,11 @@ +var class_a_a_b_b_tree_to_buffer = +[ + [ "NodeHeader", "class_a_a_b_b_tree_to_buffer.html#a89411f4596ab17c134c473d165ee42ba", null ], + [ "TriangleHeader", "class_a_a_b_b_tree_to_buffer.html#a72146720e95aebf8168fd00cd7ef0f1f", null ], + [ "Convert", "class_a_a_b_b_tree_to_buffer.html#aaabe4187b0d51fd57d3922ded7b450fc", null ], + [ "GetBuffer", "class_a_a_b_b_tree_to_buffer.html#acae333f2766987a53f64a7beea67904b", null ], + [ "GetBuffer", "class_a_a_b_b_tree_to_buffer.html#a841bb385899da6eb30c41c225ff61ddf", null ], + [ "GetNodeHeader", "class_a_a_b_b_tree_to_buffer.html#ab50a5ee87130c340d6b3cf8816ebf249", null ], + [ "GetRoot", "class_a_a_b_b_tree_to_buffer.html#ae2034a353c9336f3e7df4bcdf9f97d8c", null ], + [ "GetTriangleHeader", "class_a_a_b_b_tree_to_buffer.html#aabe86791c5d2da2af6dcba505090b989", null ] +]; \ No newline at end of file diff --git a/class_a_a_box-members.html b/class_a_a_box-members.html new file mode 100644 index 000000000..761f5a726 --- /dev/null +++ b/class_a_a_box-members.html @@ -0,0 +1,154 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AABox Member List
+
+
+ +

This is the complete list of members for AABox, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AABox()AABoxinline
AABox(Vec3Arg inMin, Vec3Arg inMax)AABoxinline
AABox(DVec3Arg inMin, DVec3Arg inMax)AABoxinline
AABox(Vec3Arg inCenter, float inRadius)AABoxinline
Contains(const AABox &inOther) constAABoxinline
Contains(Vec3Arg inOther) constAABoxinline
Contains(DVec3Arg inOther) constAABoxinline
Encapsulate(Vec3Arg inPos)AABoxinline
Encapsulate(const AABox &inRHS)AABoxinline
Encapsulate(const Triangle &inRHS)AABoxinline
Encapsulate(const VertexList &inVertices, const IndexedTriangle &inTriangle)AABoxinline
EnsureMinimalEdgeLength(float inMinEdgeLength)AABoxinline
ExpandBy(Vec3Arg inVector)AABoxinline
GetCenter() constAABoxinline
GetClosestPoint(Vec3Arg inPoint) constAABoxinline
GetExtent() constAABoxinline
GetSize() constAABoxinline
GetSqDistanceTo(Vec3Arg inPoint) constAABoxinline
GetSupport(Vec3Arg inDirection) constAABoxinline
GetSupportingFace(Vec3Arg inDirection, VERTEX_ARRAY &outVertices) constAABoxinline
GetSurfaceArea() constAABoxinline
GetVolume() constAABoxinline
Intersect(const AABox &inOther) constAABoxinline
IsValid() constAABoxinline
mMaxAABox
mMinAABox
operator!=(const AABox &inRHS) constAABoxinline
operator==(const AABox &inRHS) constAABoxinline
Overlaps(const AABox &inOther) constAABoxinline
Overlaps(const Plane &inPlane) constAABoxinline
sBiggest()AABoxinlinestatic
Scaled(Vec3Arg inScale) constAABoxinline
SetEmpty()AABoxinline
sFromTwoPoints(Vec3Arg inP1, Vec3Arg inP2)AABoxinlinestatic
Transformed(Mat44Arg inMatrix) constAABoxinline
Transformed(DMat44Arg inMatrix) constAABoxinline
Translate(Vec3Arg inTranslation)AABoxinline
Translate(DVec3Arg inTranslation)AABoxinline
+
+ + + + diff --git a/class_a_a_box.html b/class_a_a_box.html new file mode 100644 index 000000000..9c1cee194 --- /dev/null +++ b/class_a_a_box.html @@ -0,0 +1,1335 @@ + + + + + + + +Jolt Physics: AABox Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AABox Class Reference
+
+
+ +

Axis aligned box. + More...

+ +

#include <AABox.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE AABox ()
 Constructor.
 
 AABox (Vec3Arg inMin, Vec3Arg inMax)
 
 AABox (DVec3Arg inMin, DVec3Arg inMax)
 
 AABox (Vec3Arg inCenter, float inRadius)
 
bool operator== (const AABox &inRHS) const
 Comparison operators.
 
bool operator!= (const AABox &inRHS) const
 
void SetEmpty ()
 Reset the bounding box to an empty bounding box.
 
bool IsValid () const
 Check if the bounding box is valid (max >= min)
 
void Encapsulate (Vec3Arg inPos)
 Encapsulate point in bounding box.
 
void Encapsulate (const AABox &inRHS)
 Encapsulate bounding box in bounding box.
 
void Encapsulate (const Triangle &inRHS)
 Encapsulate triangle in bounding box.
 
void Encapsulate (const VertexList &inVertices, const IndexedTriangle &inTriangle)
 Encapsulate triangle in bounding box.
 
AABox Intersect (const AABox &inOther) const
 Intersect this bounding box with inOther, returns the intersection.
 
void EnsureMinimalEdgeLength (float inMinEdgeLength)
 Make sure that each edge of the bounding box has a minimal length.
 
void ExpandBy (Vec3Arg inVector)
 Widen the box on both sides by inVector.
 
Vec3 GetCenter () const
 Get center of bounding box.
 
Vec3 GetExtent () const
 Get extent of bounding box (half of the size)
 
Vec3 GetSize () const
 Get size of bounding box.
 
float GetSurfaceArea () const
 Get surface area of bounding box.
 
float GetVolume () const
 Get volume of bounding box.
 
bool Contains (const AABox &inOther) const
 Check if this box contains another box.
 
bool Contains (Vec3Arg inOther) const
 Check if this box contains a point.
 
bool Contains (DVec3Arg inOther) const
 Check if this box contains a point.
 
bool Overlaps (const AABox &inOther) const
 Check if this box overlaps with another box.
 
bool Overlaps (const Plane &inPlane) const
 Check if this box overlaps with a plane.
 
void Translate (Vec3Arg inTranslation)
 Translate bounding box.
 
void Translate (DVec3Arg inTranslation)
 Translate bounding box.
 
AABox Transformed (Mat44Arg inMatrix) const
 Transform bounding box.
 
AABox Transformed (DMat44Arg inMatrix) const
 Transform bounding box.
 
AABox Scaled (Vec3Arg inScale) const
 Scale this bounding box, can handle non-uniform and negative scaling.
 
Vec3 GetSupport (Vec3Arg inDirection) const
 Calculate the support vector for this convex shape.
 
template<class VERTEX_ARRAY >
void GetSupportingFace (Vec3Arg inDirection, VERTEX_ARRAY &outVertices) const
 Get the vertices of the face that faces inDirection the most.
 
Vec3 GetClosestPoint (Vec3Arg inPoint) const
 Get the closest point on or in this box to inPoint.
 
float GetSqDistanceTo (Vec3Arg inPoint) const
 Get the squared distance between inPoint and this box (will be 0 if in Point is inside the box)
 
+ + + + + + + +

+Static Public Member Functions

static AABox sFromTwoPoints (Vec3Arg inP1, Vec3Arg inP2)
 Create box from 2 points.
 
static AABox sBiggest ()
 Get bounding box of size 2 * FLT_MAX.
 
+ + + + + + +

+Public Attributes

Vec3 mMin
 Bounding box min and max.
 
Vec3 mMax
 
+

Detailed Description

+

Axis aligned box.

+

Constructor & Destructor Documentation

+ +

◆ AABox() [1/4]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE AABox::AABox ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ AABox() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox::AABox (Vec3Arg inMin,
Vec3Arg inMax 
)
+
+inline
+
+ +
+
+ +

◆ AABox() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox::AABox (DVec3Arg inMin,
DVec3Arg inMax 
)
+
+inline
+
+ +
+
+ +

◆ AABox() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox::AABox (Vec3Arg inCenter,
float inRadius 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ Contains() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + +
bool AABox::Contains (const AABoxinOther) const
+
+inline
+
+ +

Check if this box contains another box.

+ +
+
+ +

◆ Contains() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
bool AABox::Contains (DVec3Arg inOther) const
+
+inline
+
+ +

Check if this box contains a point.

+ +
+
+ +

◆ Contains() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
bool AABox::Contains (Vec3Arg inOther) const
+
+inline
+
+ +

Check if this box contains a point.

+ +
+
+ +

◆ Encapsulate() [1/4]

+ +
+
+ + + + + +
+ + + + + + + + +
void AABox::Encapsulate (const AABoxinRHS)
+
+inline
+
+ +

Encapsulate bounding box in bounding box.

+ +
+
+ +

◆ Encapsulate() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + +
void AABox::Encapsulate (const TriangleinRHS)
+
+inline
+
+ +

Encapsulate triangle in bounding box.

+ +
+
+ +

◆ Encapsulate() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void AABox::Encapsulate (const VertexListinVertices,
const IndexedTriangleinTriangle 
)
+
+inline
+
+ +

Encapsulate triangle in bounding box.

+ +
+
+ +

◆ Encapsulate() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + +
void AABox::Encapsulate (Vec3Arg inPos)
+
+inline
+
+ +

Encapsulate point in bounding box.

+ +
+
+ +

◆ EnsureMinimalEdgeLength()

+ +
+
+ + + + + +
+ + + + + + + + +
void AABox::EnsureMinimalEdgeLength (float inMinEdgeLength)
+
+inline
+
+ +

Make sure that each edge of the bounding box has a minimal length.

+ +
+
+ +

◆ ExpandBy()

+ +
+
+ + + + + +
+ + + + + + + + +
void AABox::ExpandBy (Vec3Arg inVector)
+
+inline
+
+ +

Widen the box on both sides by inVector.

+ +
+
+ +

◆ GetCenter()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 AABox::GetCenter () const
+
+inline
+
+ +

Get center of bounding box.

+ +
+
+ +

◆ GetClosestPoint()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 AABox::GetClosestPoint (Vec3Arg inPoint) const
+
+inline
+
+ +

Get the closest point on or in this box to inPoint.

+ +
+
+ +

◆ GetExtent()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 AABox::GetExtent () const
+
+inline
+
+ +

Get extent of bounding box (half of the size)

+ +
+
+ +

◆ GetSize()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 AABox::GetSize () const
+
+inline
+
+ +

Get size of bounding box.

+ +
+
+ +

◆ GetSqDistanceTo()

+ +
+
+ + + + + +
+ + + + + + + + +
float AABox::GetSqDistanceTo (Vec3Arg inPoint) const
+
+inline
+
+ +

Get the squared distance between inPoint and this box (will be 0 if in Point is inside the box)

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 AABox::GetSupport (Vec3Arg inDirection) const
+
+inline
+
+ +

Calculate the support vector for this convex shape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+
+template<class VERTEX_ARRAY >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void AABox::GetSupportingFace (Vec3Arg inDirection,
VERTEX_ARRAY & outVertices 
) const
+
+inline
+
+ +

Get the vertices of the face that faces inDirection the most.

+ +
+
+ +

◆ GetSurfaceArea()

+ +
+
+ + + + + +
+ + + + + + + +
float AABox::GetSurfaceArea () const
+
+inline
+
+ +

Get surface area of bounding box.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
float AABox::GetVolume () const
+
+inline
+
+ +

Get volume of bounding box.

+ +
+
+ +

◆ Intersect()

+ +
+
+ + + + + +
+ + + + + + + + +
AABox AABox::Intersect (const AABoxinOther) const
+
+inline
+
+ +

Intersect this bounding box with inOther, returns the intersection.

+ +
+
+ +

◆ IsValid()

+ +
+
+ + + + + +
+ + + + + + + +
bool AABox::IsValid () const
+
+inline
+
+ +

Check if the bounding box is valid (max >= min)

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool AABox::operator!= (const AABoxinRHS) const
+
+inline
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool AABox::operator== (const AABoxinRHS) const
+
+inline
+
+ +

Comparison operators.

+ +
+
+ +

◆ Overlaps() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool AABox::Overlaps (const AABoxinOther) const
+
+inline
+
+ +

Check if this box overlaps with another box.

+ +
+
+ +

◆ Overlaps() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool AABox::Overlaps (const PlaneinPlane) const
+
+inline
+
+ +

Check if this box overlaps with a plane.

+ +
+
+ +

◆ sBiggest()

+ +
+
+ + + + + +
+ + + + + + + +
static AABox AABox::sBiggest ()
+
+inlinestatic
+
+ +

Get bounding box of size 2 * FLT_MAX.

+ +
+
+ +

◆ Scaled()

+ +
+
+ + + + + +
+ + + + + + + + +
AABox AABox::Scaled (Vec3Arg inScale) const
+
+inline
+
+ +

Scale this bounding box, can handle non-uniform and negative scaling.

+ +
+
+ +

◆ SetEmpty()

+ +
+
+ + + + + +
+ + + + + + + +
void AABox::SetEmpty ()
+
+inline
+
+ +

Reset the bounding box to an empty bounding box.

+ +
+
+ +

◆ sFromTwoPoints()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static AABox AABox::sFromTwoPoints (Vec3Arg inP1,
Vec3Arg inP2 
)
+
+inlinestatic
+
+ +

Create box from 2 points.

+ +
+
+ +

◆ Transformed() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
AABox AABox::Transformed (DMat44Arg inMatrix) const
+
+inline
+
+ +

Transform bounding box.

+ +
+
+ +

◆ Transformed() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
AABox AABox::Transformed (Mat44Arg inMatrix) const
+
+inline
+
+ +

Transform bounding box.

+ +
+
+ +

◆ Translate() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void AABox::Translate (DVec3Arg inTranslation)
+
+inline
+
+ +

Translate bounding box.

+ +
+
+ +

◆ Translate() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void AABox::Translate (Vec3Arg inTranslation)
+
+inline
+
+ +

Translate bounding box.

+ +
+
+

Member Data Documentation

+ +

◆ mMax

+ +
+
+ + + + +
Vec3 AABox::mMax
+
+ +
+
+ +

◆ mMin

+ +
+
+ + + + +
Vec3 AABox::mMin
+
+ +

Bounding box min and max.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_a_a_box.js b/class_a_a_box.js new file mode 100644 index 000000000..39a53ecae --- /dev/null +++ b/class_a_a_box.js @@ -0,0 +1,39 @@ +var class_a_a_box = +[ + [ "AABox", "class_a_a_box.html#a0982651a7b0ed25cab78537cdeba982a", null ], + [ "AABox", "class_a_a_box.html#a8431a72347bfdb1a77ae45dcbba9c35b", null ], + [ "AABox", "class_a_a_box.html#ac70f850fdf8680f4fa8a3f7fdb60cfbd", null ], + [ "AABox", "class_a_a_box.html#aa7799618a0616c960b4f912ceac17d19", null ], + [ "Contains", "class_a_a_box.html#ae52734145d3a50ef7536bda72b553797", null ], + [ "Contains", "class_a_a_box.html#af09ba30f5f27874bbd9f407341a2dc42", null ], + [ "Contains", "class_a_a_box.html#a374d1dc1d0889a919b9c3fbaea694750", null ], + [ "Encapsulate", "class_a_a_box.html#a83d2f26869e8870c2d6dfd41804d5438", null ], + [ "Encapsulate", "class_a_a_box.html#af29df5ecf944d7ec92eea7d016e49320", null ], + [ "Encapsulate", "class_a_a_box.html#a88aa8b06db963335016bcb124091feec", null ], + [ "Encapsulate", "class_a_a_box.html#addccf5b511ece1be10dbae4818d4aaa0", null ], + [ "EnsureMinimalEdgeLength", "class_a_a_box.html#a377eb9ef3dfdd76f62d0faf6e0a54525", null ], + [ "ExpandBy", "class_a_a_box.html#a7023c1c28f073fa0d14ecee0f5fc8ee8", null ], + [ "GetCenter", "class_a_a_box.html#ae39e3c3fee87093735787b4c3fd58a8d", null ], + [ "GetClosestPoint", "class_a_a_box.html#aac4e2dce7616f266b7ef3ae25a9a9aac", null ], + [ "GetExtent", "class_a_a_box.html#a094a8548424826014024349fd7b96766", null ], + [ "GetSize", "class_a_a_box.html#a376b8319c2ac3e843b1dfac1b8288e94", null ], + [ "GetSqDistanceTo", "class_a_a_box.html#a9d68bc754580c6a3055ce4e6a305460f", null ], + [ "GetSupport", "class_a_a_box.html#aaea4b8b5fc160778df59859a1c4dc69b", null ], + [ "GetSupportingFace", "class_a_a_box.html#a8ebca3740082c6ad5359d8c42d6c5f69", null ], + [ "GetSurfaceArea", "class_a_a_box.html#ace160fe5908ca1b3125b757bdfde8d22", null ], + [ "GetVolume", "class_a_a_box.html#aab14f598d69dfa94daf74cc8d7721a21", null ], + [ "Intersect", "class_a_a_box.html#a5dfffd69562c679b789599bb3b30f736", null ], + [ "IsValid", "class_a_a_box.html#ad68947562ff18e440f87d50265001647", null ], + [ "operator!=", "class_a_a_box.html#a0b29e5ea5c5dd1df0d7a2ad484ba7e82", null ], + [ "operator==", "class_a_a_box.html#a41d9c76bb5347116f892a98e00b39a08", null ], + [ "Overlaps", "class_a_a_box.html#ac0d76efbc7bd7904881eeb5911df8457", null ], + [ "Overlaps", "class_a_a_box.html#abd758e269f2b5b508a7dd66a427e4dba", null ], + [ "Scaled", "class_a_a_box.html#a31ebfa8ddbf9f09cb16aee086e0bbffc", null ], + [ "SetEmpty", "class_a_a_box.html#a5c69aa69cf37132aa62dc0b58571e79c", null ], + [ "Transformed", "class_a_a_box.html#a8be97ca2e05200438519a73994ca26a9", null ], + [ "Transformed", "class_a_a_box.html#abd7316d2e960c1a365acc924b1492ff3", null ], + [ "Translate", "class_a_a_box.html#a2a472cf66982e1eb113185ccb8fde0f4", null ], + [ "Translate", "class_a_a_box.html#ad20ec5f347a638536bdcbeb91f8993f5", null ], + [ "mMax", "class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1", null ], + [ "mMin", "class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911", null ] +]; \ No newline at end of file diff --git a/class_all_hit_collision_collector-members.html b/class_all_hit_collision_collector-members.html new file mode 100644 index 000000000..44aa6dc2f --- /dev/null +++ b/class_all_hit_collision_collector-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AllHitCollisionCollector< CollectorType > Member List
+
+
+ +

This is the complete list of members for AllHitCollisionCollector< CollectorType >, including all inherited members.

+ + + + + + + +
AddHit(const ResultType &inResult) overrideAllHitCollisionCollector< CollectorType >inlinevirtual
HadHit() constAllHitCollisionCollector< CollectorType >inline
mHitsAllHitCollisionCollector< CollectorType >
Reset() overrideAllHitCollisionCollector< CollectorType >inlinevirtual
ResultType typedefAllHitCollisionCollector< CollectorType >
Sort()AllHitCollisionCollector< CollectorType >inline
+
+ + + + diff --git a/class_all_hit_collision_collector.html b/class_all_hit_collision_collector.html new file mode 100644 index 000000000..5f9ce4313 --- /dev/null +++ b/class_all_hit_collision_collector.html @@ -0,0 +1,311 @@ + + + + + + + +Jolt Physics: AllHitCollisionCollector< CollectorType > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AllHitCollisionCollector< CollectorType > Class Template Reference
+
+
+ +

Simple implementation that collects all hits and optionally sorts them on distance. + More...

+ +

#include <CollisionCollectorImpl.h>

+
+Inheritance diagram for AllHitCollisionCollector< CollectorType >:
+
+
+ +
+ + + + + +

+Public Types

using ResultType = typename CollectorType::ResultType
 Redeclare ResultType.
 
+ + + + + + + + + + + +

+Public Member Functions

virtual void Reset () override
 
virtual void AddHit (const ResultType &inResult) override
 
void Sort ()
 Order hits on closest first.
 
bool HadHit () const
 Check if any hits were collected.
 
+ + + +

+Public Attributes

Array< ResultTypemHits
 
+

Detailed Description

+
template<class CollectorType>
+class AllHitCollisionCollector< CollectorType >

Simple implementation that collects all hits and optionally sorts them on distance.

+

Member Typedef Documentation

+ +

◆ ResultType

+ +
+
+
+template<class CollectorType >
+ + + + +
using AllHitCollisionCollector< CollectorType >::ResultType = typename CollectorType::ResultType
+
+ +

Redeclare ResultType.

+ +
+
+

Member Function Documentation

+ +

◆ AddHit()

+ +
+
+
+template<class CollectorType >
+ + + + + +
+ + + + + + + + +
virtual void AllHitCollisionCollector< CollectorType >::AddHit (const ResultTypeinResult)
+
+inlineoverridevirtual
+
+ +
+
+ +

◆ HadHit()

+ +
+
+
+template<class CollectorType >
+ + + + + +
+ + + + + + + +
bool AllHitCollisionCollector< CollectorType >::HadHit () const
+
+inline
+
+ +

Check if any hits were collected.

+ +
+
+ +

◆ Reset()

+ +
+
+
+template<class CollectorType >
+ + + + + +
+ + + + + + + +
virtual void AllHitCollisionCollector< CollectorType >::Reset ()
+
+inlineoverridevirtual
+
+ +
+
+ +

◆ Sort()

+ +
+
+
+template<class CollectorType >
+ + + + + +
+ + + + + + + +
void AllHitCollisionCollector< CollectorType >::Sort ()
+
+inline
+
+ +

Order hits on closest first.

+ +
+
+

Member Data Documentation

+ +

◆ mHits

+ +
+
+
+template<class CollectorType >
+ + + + +
Array<ResultType> AllHitCollisionCollector< CollectorType >::mHits
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_all_hit_collision_collector.js b/class_all_hit_collision_collector.js new file mode 100644 index 000000000..f862812c0 --- /dev/null +++ b/class_all_hit_collision_collector.js @@ -0,0 +1,9 @@ +var class_all_hit_collision_collector = +[ + [ "ResultType", "class_all_hit_collision_collector.html#ac61acffd70a24d96dbf53ef96134fecf", null ], + [ "AddHit", "class_all_hit_collision_collector.html#ae581ce1300189f781fafe702951dbf96", null ], + [ "HadHit", "class_all_hit_collision_collector.html#abb747117423ae48dc5e4f661084ef32a", null ], + [ "Reset", "class_all_hit_collision_collector.html#af3bfc75b183c4406c65807ff0d62dd43", null ], + [ "Sort", "class_all_hit_collision_collector.html#a6301883d4dfcfd89e61ac4cd62e5c92a", null ], + [ "mHits", "class_all_hit_collision_collector.html#ad55540177fc266c38b2170b4105bed54", null ] +]; \ No newline at end of file diff --git a/class_all_hit_collision_collector.png b/class_all_hit_collision_collector.png new file mode 100644 index 000000000..9de4630f8 Binary files /dev/null and b/class_all_hit_collision_collector.png differ diff --git a/class_angle_constraint_part-members.html b/class_angle_constraint_part-members.html new file mode 100644 index 000000000..f89d8df0f --- /dev/null +++ b/class_angle_constraint_part-members.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AngleConstraintPart Member List
+
+
+ +

This is the complete list of members for AngleConstraintPart, including all inherited members.

+ + + + + + + + + + + + + +
CalculateConstraintProperties(const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)AngleConstraintPartinline
CalculateConstraintPropertiesWithFrequencyAndDamping(float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inFrequency, float inDamping)AngleConstraintPartinline
CalculateConstraintPropertiesWithSettings(float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, const SpringSettings &inSpringSettings)AngleConstraintPartinline
CalculateConstraintPropertiesWithStiffnessAndDamping(float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inStiffness, float inDamping)AngleConstraintPartinline
Deactivate()AngleConstraintPartinline
GetTotalLambda() constAngleConstraintPartinline
IsActive() constAngleConstraintPartinline
RestoreState(StateRecorder &inStream)AngleConstraintPartinline
SaveState(StateRecorder &inStream) constAngleConstraintPartinline
SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) constAngleConstraintPartinline
SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)AngleConstraintPartinline
WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)AngleConstraintPartinline
+
+ + + + diff --git a/class_angle_constraint_part.html b/class_angle_constraint_part.html new file mode 100644 index 000000000..733e18067 --- /dev/null +++ b/class_angle_constraint_part.html @@ -0,0 +1,781 @@ + + + + + + + +Jolt Physics: AngleConstraintPart Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AngleConstraintPart Class Reference
+
+
+ +

#include <AngleConstraintPart.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void CalculateConstraintProperties (const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)
 
void CalculateConstraintPropertiesWithFrequencyAndDamping (float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inFrequency, float inDamping)
 
void CalculateConstraintPropertiesWithStiffnessAndDamping (float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inStiffness, float inDamping)
 
void CalculateConstraintPropertiesWithSettings (float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, const SpringSettings &inSpringSettings)
 Selects one of the above functions based on the spring settings.
 
void Deactivate ()
 Deactivate this constraint.
 
bool IsActive () const
 Check if constraint is active.
 
void WarmStart (Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
 
bool SolveVelocityConstraint (Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
 
float GetTotalLambda () const
 Return lagrange multiplier.
 
bool SolvePositionConstraint (Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) const
 
void SaveState (StateRecorder &inStream) const
 Save state of this constraint part.
 
void RestoreState (StateRecorder &inStream)
 Restore state of this constraint part.
 
+

Detailed Description

+

Constraint that constrains rotation along 1 axis

+

Based on: "Constraints Derivation for Rigid Body Simulation in 3D" - Daniel Chappuis, see section 2.4.5

+

Constraint equation (eq 108):

+

+\[C = \theta(t) - \theta_{min}\] +

+

Jacobian (eq 109):

+

+\[J = \begin{bmatrix}0 & -a^T & 0 & a^T\end{bmatrix}\] +

+

Used terms (here and below, everything in world space):
+a = axis around which rotation is constrained (normalized).
+x1, x2 = center of mass for the bodies.
+v = [v1, w1, v2, w2].
+v1, v2 = linear velocity of body 1 and 2.
+w1, w2 = angular velocity of body 1 and 2.
+M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].
+ \(K^{-1} = \left( J M^{-1} J^T \right)^{-1}\) = effective mass.
+b = velocity bias.
+ \(\beta\) = baumgarte constant.

+

Member Function Documentation

+ +

◆ CalculateConstraintProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void AngleConstraintPart::CalculateConstraintProperties (const BodyinBody1,
const BodyinBody2,
Vec3Arg inWorldSpaceAxis,
float inBias = 0.0f 
)
+
+inline
+
+

Calculate properties used during the functions below

Parameters
+ + + + + +
inBody1The first body that this constraint is attached to
inBody2The second body that this constraint is attached to
inWorldSpaceAxisThe axis of rotation along which the constraint acts (normalized) Set the following terms to zero if you don't want to drive the constraint to zero with a spring:
inBiasBias term (b) for the constraint impulse: lambda = J v + b
+
+
+ +
+
+ +

◆ CalculateConstraintPropertiesWithFrequencyAndDamping()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void AngleConstraintPart::CalculateConstraintPropertiesWithFrequencyAndDamping (float inDeltaTime,
const BodyinBody1,
const BodyinBody2,
Vec3Arg inWorldSpaceAxis,
float inBias,
float inC,
float inFrequency,
float inDamping 
)
+
+inline
+
+

Calculate properties used during the functions below

Parameters
+ + + + + + + + + +
inDeltaTimeTime step
inBody1The first body that this constraint is attached to
inBody2The second body that this constraint is attached to
inWorldSpaceAxisThe axis of rotation along which the constraint acts (normalized) Set the following terms to zero if you don't want to drive the constraint to zero with a spring:
inBiasBias term (b) for the constraint impulse: lambda = J v + b
inCValue of the constraint equation (C)
inFrequencyOscillation frequency (Hz)
inDampingDamping factor (0 = no damping, 1 = critical damping)
+
+
+ +
+
+ +

◆ CalculateConstraintPropertiesWithSettings()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void AngleConstraintPart::CalculateConstraintPropertiesWithSettings (float inDeltaTime,
const BodyinBody1,
const BodyinBody2,
Vec3Arg inWorldSpaceAxis,
float inBias,
float inC,
const SpringSettingsinSpringSettings 
)
+
+inline
+
+ +

Selects one of the above functions based on the spring settings.

+ +
+
+ +

◆ CalculateConstraintPropertiesWithStiffnessAndDamping()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void AngleConstraintPart::CalculateConstraintPropertiesWithStiffnessAndDamping (float inDeltaTime,
const BodyinBody1,
const BodyinBody2,
Vec3Arg inWorldSpaceAxis,
float inBias,
float inC,
float inStiffness,
float inDamping 
)
+
+inline
+
+

Calculate properties used during the functions below

Parameters
+ + + + + + + + + +
inDeltaTimeTime step
inBody1The first body that this constraint is attached to
inBody2The second body that this constraint is attached to
inWorldSpaceAxisThe axis of rotation along which the constraint acts (normalized) Set the following terms to zero if you don't want to drive the constraint to zero with a spring:
inBiasBias term (b) for the constraint impulse: lambda = J v + b
inCValue of the constraint equation (C)
inStiffnessSpring stiffness k.
inDampingSpring damping coefficient c.
+
+
+ +
+
+ +

◆ Deactivate()

+ +
+
+ + + + + +
+ + + + + + + +
void AngleConstraintPart::Deactivate ()
+
+inline
+
+ +

Deactivate this constraint.

+ +
+
+ +

◆ GetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float AngleConstraintPart::GetTotalLambda () const
+
+inline
+
+ +

Return lagrange multiplier.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool AngleConstraintPart::IsActive () const
+
+inline
+
+ +

Check if constraint is active.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void AngleConstraintPart::RestoreState (StateRecorderinStream)
+
+inline
+
+ +

Restore state of this constraint part.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void AngleConstraintPart::SaveState (StateRecorderinStream) const
+
+inline
+
+ +

Save state of this constraint part.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool AngleConstraintPart::SolvePositionConstraint (BodyioBody1,
BodyioBody2,
float inC,
float inBaumgarte 
) const
+
+inline
+
+

Iteratively update the position constraint. Makes sure C(...) == 0.

Parameters
+ + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inCValue of the constraint equation (C)
inBaumgarteBaumgarte constant (fraction of the error to correct)
+
+
+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool AngleConstraintPart::SolveVelocityConstraint (BodyioBody1,
BodyioBody2,
Vec3Arg inWorldSpaceAxis,
float inMinLambda,
float inMaxLambda 
)
+
+inline
+
+

Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.

Parameters
+ + + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inWorldSpaceAxisThe axis of rotation along which the constraint acts (normalized)
inMinLambdaMinimum angular impulse to apply (N m s)
inMaxLambdaMaximum angular impulse to apply (N m s)
+
+
+ +
+
+ +

◆ WarmStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void AngleConstraintPart::WarmStart (BodyioBody1,
BodyioBody2,
float inWarmStartImpulseRatio 
)
+
+inline
+
+

Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses

Parameters
+ + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inWarmStartImpulseRatioRatio of new step to old time step (dt_new / dt_old) for scaling the lagrange multiplier of the previous frame
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_angle_constraint_part.js b/class_angle_constraint_part.js new file mode 100644 index 000000000..6e17c1f93 --- /dev/null +++ b/class_angle_constraint_part.js @@ -0,0 +1,15 @@ +var class_angle_constraint_part = +[ + [ "CalculateConstraintProperties", "class_angle_constraint_part.html#a4db6fb3120c161301e04ee92276544d4", null ], + [ "CalculateConstraintPropertiesWithFrequencyAndDamping", "class_angle_constraint_part.html#ace82e23e9129e1c30c93134a2d75504e", null ], + [ "CalculateConstraintPropertiesWithSettings", "class_angle_constraint_part.html#ac8eb562a067ed5596aca09e04ffc32d1", null ], + [ "CalculateConstraintPropertiesWithStiffnessAndDamping", "class_angle_constraint_part.html#a13c8d05c1aef17b2edc81da4ea754404", null ], + [ "Deactivate", "class_angle_constraint_part.html#a27c8bf9c172f0d3867c1a489aa08c840", null ], + [ "GetTotalLambda", "class_angle_constraint_part.html#af482295498d9ca4f6fcdd0c034d0fb90", null ], + [ "IsActive", "class_angle_constraint_part.html#a470e2813d397af02acc6bf8e8373431c", null ], + [ "RestoreState", "class_angle_constraint_part.html#a80bd3ee7db86967d1a55100ab244d01c", null ], + [ "SaveState", "class_angle_constraint_part.html#ab75081badd77c6854423f45825ff36ce", null ], + [ "SolvePositionConstraint", "class_angle_constraint_part.html#a11bb8ed0daf36021dc407fd13cbfde90", null ], + [ "SolveVelocityConstraint", "class_angle_constraint_part.html#aab9cd08fa77ca04f5ab6a6d5cfd78538", null ], + [ "WarmStart", "class_angle_constraint_part.html#a8b54544706a1005ac865db7c445b76f1", null ] +]; \ No newline at end of file diff --git a/class_any_hit_collision_collector-members.html b/class_any_hit_collision_collector-members.html new file mode 100644 index 000000000..d86ee96fd --- /dev/null +++ b/class_any_hit_collision_collector-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AnyHitCollisionCollector< CollectorType > Member List
+
+
+ +

This is the complete list of members for AnyHitCollisionCollector< CollectorType >, including all inherited members.

+ + + + + + +
AddHit(const ResultType &inResult) overrideAnyHitCollisionCollector< CollectorType >inlinevirtual
HadHit() constAnyHitCollisionCollector< CollectorType >inline
mHitAnyHitCollisionCollector< CollectorType >
Reset() overrideAnyHitCollisionCollector< CollectorType >inlinevirtual
ResultType typedefAnyHitCollisionCollector< CollectorType >
+
+ + + + diff --git a/class_any_hit_collision_collector.html b/class_any_hit_collision_collector.html new file mode 100644 index 000000000..10bd2f2d0 --- /dev/null +++ b/class_any_hit_collision_collector.html @@ -0,0 +1,279 @@ + + + + + + + +Jolt Physics: AnyHitCollisionCollector< CollectorType > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AnyHitCollisionCollector< CollectorType > Class Template Reference
+
+
+ +

Simple implementation that collects any hit. + More...

+ +

#include <CollisionCollectorImpl.h>

+
+Inheritance diagram for AnyHitCollisionCollector< CollectorType >:
+
+
+ +
+ + + + + +

+Public Types

using ResultType = typename CollectorType::ResultType
 Redeclare ResultType.
 
+ + + + + + + + +

+Public Member Functions

virtual void Reset () override
 
virtual void AddHit (const ResultType &inResult) override
 
bool HadHit () const
 Check if this collector has had a hit.
 
+ + + +

+Public Attributes

ResultType mHit
 
+

Detailed Description

+
template<class CollectorType>
+class AnyHitCollisionCollector< CollectorType >

Simple implementation that collects any hit.

+

Member Typedef Documentation

+ +

◆ ResultType

+ +
+
+
+template<class CollectorType >
+ + + + +
using AnyHitCollisionCollector< CollectorType >::ResultType = typename CollectorType::ResultType
+
+ +

Redeclare ResultType.

+ +
+
+

Member Function Documentation

+ +

◆ AddHit()

+ +
+
+
+template<class CollectorType >
+ + + + + +
+ + + + + + + + +
virtual void AnyHitCollisionCollector< CollectorType >::AddHit (const ResultTypeinResult)
+
+inlineoverridevirtual
+
+ +
+
+ +

◆ HadHit()

+ +
+
+
+template<class CollectorType >
+ + + + + +
+ + + + + + + +
bool AnyHitCollisionCollector< CollectorType >::HadHit () const
+
+inline
+
+ +

Check if this collector has had a hit.

+ +
+
+ +

◆ Reset()

+ +
+
+
+template<class CollectorType >
+ + + + + +
+ + + + + + + +
virtual void AnyHitCollisionCollector< CollectorType >::Reset ()
+
+inlineoverridevirtual
+
+ +
+
+

Member Data Documentation

+ +

◆ mHit

+ +
+
+
+template<class CollectorType >
+ + + + +
ResultType AnyHitCollisionCollector< CollectorType >::mHit
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_any_hit_collision_collector.js b/class_any_hit_collision_collector.js new file mode 100644 index 000000000..3506dd813 --- /dev/null +++ b/class_any_hit_collision_collector.js @@ -0,0 +1,8 @@ +var class_any_hit_collision_collector = +[ + [ "ResultType", "class_any_hit_collision_collector.html#a77d0831cb582d968272a2216e99fd9db", null ], + [ "AddHit", "class_any_hit_collision_collector.html#a405568a565f6b818c6fd08a14983b921", null ], + [ "HadHit", "class_any_hit_collision_collector.html#a91c5757d891295842942599a359fdf36", null ], + [ "Reset", "class_any_hit_collision_collector.html#a037964d4624c351fe863295ebe465c91", null ], + [ "mHit", "class_any_hit_collision_collector.html#a97c636d4025873517dae7ade6fc362c5", null ] +]; \ No newline at end of file diff --git a/class_any_hit_collision_collector.png b/class_any_hit_collision_collector.png new file mode 100644 index 000000000..d3c317fa1 Binary files /dev/null and b/class_any_hit_collision_collector.png differ diff --git a/class_array-members.html b/class_array-members.html new file mode 100644 index 000000000..3640a0d91 --- /dev/null +++ b/class_array-members.html @@ -0,0 +1,178 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Array< T, Allocator > Member List
+
+
+ +

This is the complete list of members for Array< T, Allocator >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Array()=defaultArray< T, Allocator >
Array(const Allocator &inAllocator)Array< T, Allocator >inlineexplicit
Array(size_type inLength, const Allocator &inAllocator={ })Array< T, Allocator >inlineexplicit
Array(size_type inLength, const T &inValue, const Allocator &inAllocator={ })Array< T, Allocator >inline
Array(std::initializer_list< T > inList, const Allocator &inAllocator={ })Array< T, Allocator >inline
Array(const_iterator inBegin, const_iterator inEnd, const Allocator &inAllocator={ })Array< T, Allocator >inline
Array(const Array< T, Allocator > &inRHS)Array< T, Allocator >inline
Array(Array< T, Allocator > &&inRHS) noexceptArray< T, Allocator >inline
assign(Iterator inBegin, Iterator inEnd)Array< T, Allocator >inline
assign(std::initializer_list< T > inList)Array< T, Allocator >inline
at(size_type inIdx)Array< T, Allocator >inline
at(size_type inIdx) constArray< T, Allocator >inline
back() constArray< T, Allocator >inline
back()Array< T, Allocator >inline
begin() constArray< T, Allocator >inline
begin()Array< T, Allocator >inline
capacity() constArray< T, Allocator >inline
cbegin() constArray< T, Allocator >inline
cend() constArray< T, Allocator >inline
clear()Array< T, Allocator >inline
const_iterator typedefArray< T, Allocator >
const_pointer typedefArray< T, Allocator >
const_reference typedefArray< T, Allocator >
data() constArray< T, Allocator >inline
data()Array< T, Allocator >inline
emplace_back(A &&... inValue)Array< T, Allocator >inline
empty() constArray< T, Allocator >inline
end() constArray< T, Allocator >inline
end()Array< T, Allocator >inline
erase(const_iterator inIter)Array< T, Allocator >inline
erase(const_iterator inBegin, const_iterator inEnd)Array< T, Allocator >inline
front() constArray< T, Allocator >inline
front()Array< T, Allocator >inline
get_allocator()Array< T, Allocator >inline
get_allocator() constArray< T, Allocator >inline
insert(const_iterator inPos, Iterator inBegin, Iterator inEnd)Array< T, Allocator >inline
insert(const_iterator inPos, const T &inValue)Array< T, Allocator >inline
iterator typedefArray< T, Allocator >
operator!=(const Array< T, Allocator > &inRHS) constArray< T, Allocator >inline
STLAllocator::operator!=(const STLAllocator< T > &) constSTLAllocator< T >inlineprivate
operator=(const Array< T, Allocator > &inRHS)Array< T, Allocator >inline
operator=(Array< T, Allocator > &&inRHS) noexceptArray< T, Allocator >inline
operator=(std::initializer_list< T > inRHS)Array< T, Allocator >inline
operator==(const Array< T, Allocator > &inRHS) constArray< T, Allocator >inline
STLAllocator::operator==(const STLAllocator< T > &) constSTLAllocator< T >inlineprivate
operator[](size_type inIdx)Array< T, Allocator >inline
operator[](size_type inIdx) constArray< T, Allocator >inline
pointer typedefArray< T, Allocator >
pop_back()Array< T, Allocator >inline
push_back(const T &inValue)Array< T, Allocator >inline
push_back(T &&inValue)Array< T, Allocator >inline
STLAllocator::reallocate(pointer inOldPointer, size_type inOldSize, size_type inNewSize)STLAllocator< T >inlineprivate
reference typedefArray< T, Allocator >
reserve(size_type inNewSize)Array< T, Allocator >inline
resize(size_type inNewSize)Array< T, Allocator >inline
resize(size_type inNewSize, const T &inValue)Array< T, Allocator >inline
shrink_to_fit()Array< T, Allocator >inline
size() constArray< T, Allocator >inline
size_type typedefArray< T, Allocator >
swap(Array< T, Allocator > &inRHS) noexceptArray< T, Allocator >inline
value_type typedefArray< T, Allocator >
~Array()Array< T, Allocator >inline
+
+ + + + diff --git a/class_array.html b/class_array.html new file mode 100644 index 000000000..64f51afc7 --- /dev/null +++ b/class_array.html @@ -0,0 +1,2027 @@ + + + + + + + +Jolt Physics: Array< T, Allocator > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Array< T, Allocator > Class Template Reference
+
+
+ +

#include <Array.h>

+
+Inheritance diagram for Array< T, Allocator >:
+
+
+ + +STLAllocator< T > +ByteBuffer + +
+ + + + + + + + + + + + + + + + + + +

+Public Types

using value_type = T
 
using size_type = size_t
 
using pointer = T *
 
using const_pointer = const T *
 
using reference = T &
 
using const_reference = const T &
 
using const_iterator = const T *
 
using iterator = T *
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void reserve (size_type inNewSize)
 Reserve array space.
 
void resize (size_type inNewSize)
 Resize array to new length.
 
void resize (size_type inNewSize, const T &inValue)
 Resize array to new length and initialize all elements with inValue.
 
void clear ()
 Destruct all elements and set length to zero.
 
template<class Iterator >
void assign (Iterator inBegin, Iterator inEnd)
 Replace the contents of this array with inBegin .. inEnd.
 
void assign (std::initializer_list< T > inList)
 Replace the contents of this array with inList.
 
 Array ()=default
 Default constructor.
 
 Array (const Allocator &inAllocator)
 Constructor with allocator.
 
 Array (size_type inLength, const Allocator &inAllocator={ })
 Constructor with length.
 
 Array (size_type inLength, const T &inValue, const Allocator &inAllocator={ })
 Constructor with length and value.
 
 Array (std::initializer_list< T > inList, const Allocator &inAllocator={ })
 Constructor from initializer list.
 
 Array (const_iterator inBegin, const_iterator inEnd, const Allocator &inAllocator={ })
 Constructor from iterator.
 
 Array (const Array< T, Allocator > &inRHS)
 Copy constructor.
 
 Array (Array< T, Allocator > &&inRHS) noexcept
 Move constructor.
 
 ~Array ()
 Destruct all elements.
 
Allocator & get_allocator ()
 Get the allocator.
 
const Allocator & get_allocator () const
 
void push_back (const T &inValue)
 Add element to the back of the array.
 
void push_back (T &&inValue)
 
template<class... A>
T & emplace_back (A &&... inValue)
 Construct element at the back of the array.
 
void pop_back ()
 Remove element from the back of the array.
 
bool empty () const
 Returns true if there are no elements in the array.
 
size_type size () const
 Returns amount of elements in the array.
 
size_type capacity () const
 Returns maximum amount of elements the array can hold.
 
void shrink_to_fit ()
 Reduce the capacity of the array to match its size.
 
void swap (Array< T, Allocator > &inRHS) noexcept
 Swap the contents of two arrays.
 
template<class Iterator >
void insert (const_iterator inPos, Iterator inBegin, Iterator inEnd)
 
void insert (const_iterator inPos, const T &inValue)
 
void erase (const_iterator inIter)
 Remove one element from the array.
 
void erase (const_iterator inBegin, const_iterator inEnd)
 Remove multiple element from the array.
 
const_iterator begin () const
 Iterators.
 
const_iterator end () const
 
const_iterator cbegin () const
 
const_iterator cend () const
 
iterator begin ()
 
iterator end ()
 
const T * data () const
 
T * data ()
 
T & operator[] (size_type inIdx)
 Access element.
 
const T & operator[] (size_type inIdx) const
 
T & at (size_type inIdx)
 Access element.
 
const T & at (size_type inIdx) const
 
const T & front () const
 First element in the array.
 
T & front ()
 
const T & back () const
 Last element in the array.
 
T & back ()
 
Array< T, Allocator > & operator= (const Array< T, Allocator > &inRHS)
 Assignment operator.
 
Array< T, Allocator > & operator= (Array< T, Allocator > &&inRHS) noexcept
 Assignment move operator.
 
Array< T, Allocator > & operator= (std::initializer_list< T > inRHS)
 Assignment operator.
 
bool operator== (const Array< T, Allocator > &inRHS) const
 Comparing arrays.
 
bool operator!= (const Array< T, Allocator > &inRHS) const
 
+

Detailed Description

+
template<class T, class Allocator = STLAllocator<T>>
+class Array< T, Allocator >

Simple replacement for std::vector

+

Major differences:

    +
  • Memory is not initialized to zero (this was causing a lot of page faults when deserializing large MeshShapes / HeightFieldShapes)
  • +
  • Iterators are simple pointers (for now)
  • +
  • No exception safety
  • +
  • No specialization like std::vector<bool> has
  • +
  • Not all functions have been implemented
  • +
+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + +
using Array< T, Allocator >::const_iterator = const T *
+
+ +
+
+ +

◆ const_pointer

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + +
using Array< T, Allocator >::const_pointer = const T *
+
+ +
+
+ +

◆ const_reference

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + +
using Array< T, Allocator >::const_reference = const T &
+
+ +
+
+ +

◆ iterator

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + +
using Array< T, Allocator >::iterator = T *
+
+ +
+
+ +

◆ pointer

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + +
using Array< T, Allocator >::pointer = T *
+
+ +
+
+ +

◆ reference

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + +
using Array< T, Allocator >::reference = T &
+
+ +
+
+ +

◆ size_type

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + +
using Array< T, Allocator >::size_type = size_t
+
+ +
+
+ +

◆ value_type

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + +
using Array< T, Allocator >::value_type = T
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Array() [1/8]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
Array< T, Allocator >::Array ()
+
+default
+
+ +

Default constructor.

+ +
+
+ +

◆ Array() [2/8]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
Array< T, Allocator >::Array (const Allocator & inAllocator)
+
+inlineexplicit
+
+ +

Constructor with allocator.

+ +
+
+ +

◆ Array() [3/8]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Array< T, Allocator >::Array (size_type inLength,
const Allocator & inAllocator = { } 
)
+
+inlineexplicit
+
+ +

Constructor with length.

+ +
+
+ +

◆ Array() [4/8]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Array< T, Allocator >::Array (size_type inLength,
const T & inValue,
const Allocator & inAllocator = { } 
)
+
+inline
+
+ +

Constructor with length and value.

+ +
+
+ +

◆ Array() [5/8]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Array< T, Allocator >::Array (std::initializer_list< T > inList,
const Allocator & inAllocator = { } 
)
+
+inline
+
+ +

Constructor from initializer list.

+ +
+
+ +

◆ Array() [6/8]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Array< T, Allocator >::Array (const_iterator inBegin,
const_iterator inEnd,
const Allocator & inAllocator = { } 
)
+
+inline
+
+ +

Constructor from iterator.

+ +
+
+ +

◆ Array() [7/8]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
Array< T, Allocator >::Array (const Array< T, Allocator > & inRHS)
+
+inline
+
+ +

Copy constructor.

+ +
+
+ +

◆ Array() [8/8]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
Array< T, Allocator >::Array (Array< T, Allocator > && inRHS)
+
+inlinenoexcept
+
+ +

Move constructor.

+ +
+
+ +

◆ ~Array()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
Array< T, Allocator >::~Array ()
+
+inline
+
+ +

Destruct all elements.

+ +
+
+

Member Function Documentation

+ +

◆ assign() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+
+template<class Iterator >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Array< T, Allocator >::assign (Iterator inBegin,
Iterator inEnd 
)
+
+inline
+
+ +

Replace the contents of this array with inBegin .. inEnd.

+ +
+
+ +

◆ assign() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
void Array< T, Allocator >::assign (std::initializer_list< T > inList)
+
+inline
+
+ +

Replace the contents of this array with inList.

+ +
+
+ +

◆ at() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
T & Array< T, Allocator >::at (size_type inIdx)
+
+inline
+
+ +

Access element.

+ +
+
+ +

◆ at() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
const T & Array< T, Allocator >::at (size_type inIdx) const
+
+inline
+
+ +
+
+ +

◆ back() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
T & Array< T, Allocator >::back ()
+
+inline
+
+ +
+
+ +

◆ back() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
const T & Array< T, Allocator >::back () const
+
+inline
+
+ +

Last element in the array.

+ +
+
+ +

◆ begin() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
iterator Array< T, Allocator >::begin ()
+
+inline
+
+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
const_iterator Array< T, Allocator >::begin () const
+
+inline
+
+ +

Iterators.

+ +
+
+ +

◆ capacity()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
size_type Array< T, Allocator >::capacity () const
+
+inline
+
+ +

Returns maximum amount of elements the array can hold.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
const_iterator Array< T, Allocator >::cbegin () const
+
+inline
+
+ +
+
+ +

◆ cend()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
const_iterator Array< T, Allocator >::cend () const
+
+inline
+
+ +
+
+ +

◆ clear()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
void Array< T, Allocator >::clear ()
+
+inline
+
+ +

Destruct all elements and set length to zero.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
T * Array< T, Allocator >::data ()
+
+inline
+
+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
const T * Array< T, Allocator >::data () const
+
+inline
+
+ +
+
+ +

◆ emplace_back()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+
+template<class... A>
+ + + + + +
+ + + + + + + + +
T & Array< T, Allocator >::emplace_back (A &&... inValue)
+
+inline
+
+ +

Construct element at the back of the array.

+ +
+
+ +

◆ empty()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
bool Array< T, Allocator >::empty () const
+
+inline
+
+ +

Returns true if there are no elements in the array.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
iterator Array< T, Allocator >::end ()
+
+inline
+
+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
const_iterator Array< T, Allocator >::end () const
+
+inline
+
+ +
+
+ +

◆ erase() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Array< T, Allocator >::erase (const_iterator inBegin,
const_iterator inEnd 
)
+
+inline
+
+ +

Remove multiple element from the array.

+ +
+
+ +

◆ erase() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
void Array< T, Allocator >::erase (const_iterator inIter)
+
+inline
+
+ +

Remove one element from the array.

+ +
+
+ +

◆ front() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
T & Array< T, Allocator >::front ()
+
+inline
+
+ +
+
+ +

◆ front() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
const T & Array< T, Allocator >::front () const
+
+inline
+
+ +

First element in the array.

+ +
+
+ +

◆ get_allocator() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
Allocator & Array< T, Allocator >::get_allocator ()
+
+inline
+
+ +

Get the allocator.

+ +
+
+ +

◆ get_allocator() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
const Allocator & Array< T, Allocator >::get_allocator () const
+
+inline
+
+ +
+
+ +

◆ insert() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Array< T, Allocator >::insert (const_iterator inPos,
const T & inValue 
)
+
+inline
+
+ +
+
+ +

◆ insert() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+
+template<class Iterator >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Array< T, Allocator >::insert (const_iterator inPos,
Iterator inBegin,
Iterator inEnd 
)
+
+inline
+
+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
bool Array< T, Allocator >::operator!= (const Array< T, Allocator > & inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator=() [1/3]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
Array< T, Allocator > & Array< T, Allocator >::operator= (Array< T, Allocator > && inRHS)
+
+inlinenoexcept
+
+ +

Assignment move operator.

+ +
+
+ +

◆ operator=() [2/3]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
Array< T, Allocator > & Array< T, Allocator >::operator= (const Array< T, Allocator > & inRHS)
+
+inline
+
+ +

Assignment operator.

+ +
+
+ +

◆ operator=() [3/3]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
Array< T, Allocator > & Array< T, Allocator >::operator= (std::initializer_list< T > inRHS)
+
+inline
+
+ +

Assignment operator.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
bool Array< T, Allocator >::operator== (const Array< T, Allocator > & inRHS) const
+
+inline
+
+ +

Comparing arrays.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
T & Array< T, Allocator >::operator[] (size_type inIdx)
+
+inline
+
+ +

Access element.

+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
const T & Array< T, Allocator >::operator[] (size_type inIdx) const
+
+inline
+
+ +
+
+ +

◆ pop_back()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
void Array< T, Allocator >::pop_back ()
+
+inline
+
+ +

Remove element from the back of the array.

+ +
+
+ +

◆ push_back() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
void Array< T, Allocator >::push_back (const T & inValue)
+
+inline
+
+ +

Add element to the back of the array.

+ +
+
+ +

◆ push_back() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
void Array< T, Allocator >::push_back (T && inValue)
+
+inline
+
+ +
+
+ +

◆ reserve()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
void Array< T, Allocator >::reserve (size_type inNewSize)
+
+inline
+
+ +

Reserve array space.

+ +
+
+ +

◆ resize() [1/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
void Array< T, Allocator >::resize (size_type inNewSize)
+
+inline
+
+ +

Resize array to new length.

+ +
+
+ +

◆ resize() [2/2]

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Array< T, Allocator >::resize (size_type inNewSize,
const T & inValue 
)
+
+inline
+
+ +

Resize array to new length and initialize all elements with inValue.

+ +
+
+ +

◆ shrink_to_fit()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
void Array< T, Allocator >::shrink_to_fit ()
+
+inline
+
+ +

Reduce the capacity of the array to match its size.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + +
size_type Array< T, Allocator >::size () const
+
+inline
+
+ +

Returns amount of elements in the array.

+ +
+
+ +

◆ swap()

+ +
+
+
+template<class T , class Allocator = STLAllocator<T>>
+ + + + + +
+ + + + + + + + +
void Array< T, Allocator >::swap (Array< T, Allocator > & inRHS)
+
+inlinenoexcept
+
+ +

Swap the contents of two arrays.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_array.js b/class_array.js new file mode 100644 index 000000000..d09ff13c7 --- /dev/null +++ b/class_array.js @@ -0,0 +1,62 @@ +var class_array = +[ + [ "const_iterator", "class_array.html#a56e441292c5696ddb5dbf22f6dc49efc", null ], + [ "const_pointer", "class_array.html#a7d73213bece8dcc069e12d49120e310d", null ], + [ "const_reference", "class_array.html#ac8f52920730f4869d98d20d3b927e2f1", null ], + [ "iterator", "class_array.html#ab021b8f27be055471331c9bb98bfd702", null ], + [ "pointer", "class_array.html#aadaa82074f4a976c897010961811a910", null ], + [ "reference", "class_array.html#aeeb498ab8730019eaf0899f1cbf8e6c8", null ], + [ "size_type", "class_array.html#a4a40aef148c8e577471a1371e336da00", null ], + [ "value_type", "class_array.html#ae43095e19f7836cb66d85f50c6b12f2d", null ], + [ "Array", "class_array.html#a16d387784beee3e4ed9928a9edadc089", null ], + [ "Array", "class_array.html#a4595444b3f64178f76b4c26066397d95", null ], + [ "Array", "class_array.html#ac0757293b0dd92c58cbcc79b1d4a588a", null ], + [ "Array", "class_array.html#a8da2d23aa24ffc66a29cea60ae6b39d9", null ], + [ "Array", "class_array.html#a98bf0be959b81ee4ecc69fd68fa98b9f", null ], + [ "Array", "class_array.html#aef00de2a2e4817b0faeea0906b87b8b9", null ], + [ "Array", "class_array.html#afb8c4cdc7722694c43d9e0661e774e08", null ], + [ "Array", "class_array.html#a9faa45c57a1bd643eae7d6b7017c606e", null ], + [ "~Array", "class_array.html#a4aa206b27627450f5cfa5dbbc7b57c14", null ], + [ "assign", "class_array.html#ae1283a9f0de42a16a3f526726a366fee", null ], + [ "assign", "class_array.html#af7a4d07255a8cfd0b90d171c12427d0d", null ], + [ "at", "class_array.html#ad43d0fa1083ae9004b7a4de150f9a7f5", null ], + [ "at", "class_array.html#aeeca660e7d286155dc31eb356525673a", null ], + [ "back", "class_array.html#ac884e13d12d2f321df09467c121a909f", null ], + [ "back", "class_array.html#a4c0bf34f85afda89306030b0a1f9c032", null ], + [ "begin", "class_array.html#a7cf4b2db22a30a247af7e3b2839a385a", null ], + [ "begin", "class_array.html#a5ca209989bad1f51065a8f7d9a73d3af", null ], + [ "capacity", "class_array.html#a42a530879c2fc250dfffdb6cfb275846", null ], + [ "cbegin", "class_array.html#a601b37256e5fffc49ce74a8c8b997c58", null ], + [ "cend", "class_array.html#aa33f1fdcc692237993dd9df99768ebc7", null ], + [ "clear", "class_array.html#aa16b46005583854b8db4570eaee59134", null ], + [ "data", "class_array.html#a5b7aadb17c283136252c6d0c4bb92009", null ], + [ "data", "class_array.html#a981fa99850b2f859c24c554596a19cfb", null ], + [ "emplace_back", "class_array.html#aaae2b09589c5ac4cf96d98aa5df75f61", null ], + [ "empty", "class_array.html#a3184fd974ff46c9a1bccbc6428008c93", null ], + [ "end", "class_array.html#a660a72e00524f911c812c9c69206c75f", null ], + [ "end", "class_array.html#aeb0fa5a613a57fab1931331f95c61908", null ], + [ "erase", "class_array.html#a6ad56d9150990119cd932d750b06f83d", null ], + [ "erase", "class_array.html#ae826452f2c7b1e7fa97cb5ad6aaf17c8", null ], + [ "front", "class_array.html#aed0c6709d99c58e1fa69467d44b7c933", null ], + [ "front", "class_array.html#ad8c3916e62ff98cbe99f94be4dbaeb5a", null ], + [ "get_allocator", "class_array.html#ae5fb070c8068c0ac54d5c7f62d8f39dc", null ], + [ "get_allocator", "class_array.html#aa786807555ceba5b3ba76839aff2a92b", null ], + [ "insert", "class_array.html#ac6af5bac62e99ef93d1ab63077eeda24", null ], + [ "insert", "class_array.html#a621b4ce6e5e1bdc2e158ba276b89aeae", null ], + [ "operator!=", "class_array.html#a44b682273941051e9bab4d8b2200b937", null ], + [ "operator=", "class_array.html#ab8763ef20b9d72b7efc5181ea4378e4d", null ], + [ "operator=", "class_array.html#a3888af658dde61b5449bccdff1b42f2f", null ], + [ "operator=", "class_array.html#a44429f86d45dfbec15bc1e37e2f130fd", null ], + [ "operator==", "class_array.html#a7bc128d07bcc35a13aed911cb4496017", null ], + [ "operator[]", "class_array.html#a3db15f447d9e9d229ba10fd90189d305", null ], + [ "operator[]", "class_array.html#ad555cccefb5cb1f9b0e761f5939bfbcd", null ], + [ "pop_back", "class_array.html#a2c37797c7b03253cf8917b02ff91ce64", null ], + [ "push_back", "class_array.html#ac5d65863953f43e8a5effc2dce32ecd1", null ], + [ "push_back", "class_array.html#a255bfb0bbc74db48e0a1b30b959dfa90", null ], + [ "reserve", "class_array.html#ada6d2585215a3cb5b2effbe4dfa08d7b", null ], + [ "resize", "class_array.html#a1355a4e6cf533d895191b93eaa95e769", null ], + [ "resize", "class_array.html#a6ef30c832102c214f54d3552f0f1d550", null ], + [ "shrink_to_fit", "class_array.html#aa0b6ed6d3fb2d6b28086e05f46ff8819", null ], + [ "size", "class_array.html#a9d2ab10879978f2c32e760a92fa0d585", null ], + [ "swap", "class_array.html#a8a91e5ebc333d5fc2373fe0fc597b6d3", null ] +]; \ No newline at end of file diff --git a/class_array.png b/class_array.png new file mode 100644 index 000000000..aa0a52409 Binary files /dev/null and b/class_array.png differ diff --git a/class_axis_constraint_part-members.html b/class_axis_constraint_part-members.html new file mode 100644 index 000000000..5c57690a3 --- /dev/null +++ b/class_axis_constraint_part-members.html @@ -0,0 +1,137 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AxisConstraintPart Member List
+
+
+ +

This is the complete list of members for AxisConstraintPart, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
CalculateConstraintProperties(const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)AxisConstraintPartinline
CalculateConstraintPropertiesWithFrequencyAndDamping(float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inFrequency, float inDamping)AxisConstraintPartinline
CalculateConstraintPropertiesWithMassOverride(const Body &inBody1, float inInvMass1, float inInvInertiaScale1, Vec3Arg inR1PlusU, const Body &inBody2, float inInvMass2, float inInvInertiaScale2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)AxisConstraintPartinline
CalculateConstraintPropertiesWithSettings(float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, const SpringSettings &inSpringSettings)AxisConstraintPartinline
CalculateConstraintPropertiesWithStiffnessAndDamping(float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inStiffness, float inDamping)AxisConstraintPartinline
Deactivate()AxisConstraintPartinline
GetTotalLambda() constAxisConstraintPartinline
IsActive() constAxisConstraintPartinline
RestoreState(StateRecorder &inStream)AxisConstraintPartinline
SaveState(StateRecorder &inStream) constAxisConstraintPartinline
SetTotalLambda(float inLambda)AxisConstraintPartinline
SolvePositionConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inC, float inBaumgarte) constAxisConstraintPartinline
SolvePositionConstraintWithMassOverride(Body &ioBody1, float inInvMass1, Body &ioBody2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inC, float inBaumgarte) constAxisConstraintPartinline
SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)AxisConstraintPartinline
SolveVelocityConstraintWithMassOverride(Body &ioBody1, float inInvMass1, Body &ioBody2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)AxisConstraintPartinline
TemplatedCalculateConstraintProperties(float inInvMass1, Mat44Arg inInvI1, Vec3Arg inR1PlusU, float inInvMass2, Mat44Arg inInvI2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)AxisConstraintPartinline
TemplatedSolveVelocityConstraint(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)AxisConstraintPartinline
TemplatedSolveVelocityConstraintApplyLambda(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inTotalLambda)AxisConstraintPartinline
TemplatedSolveVelocityConstraintGetTotalLambda(const MotionProperties *ioMotionProperties1, const MotionProperties *ioMotionProperties2, Vec3Arg inWorldSpaceAxis) constAxisConstraintPartinline
TemplatedWarmStart(MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inWarmStartImpulseRatio)AxisConstraintPartinline
WarmStart(Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inWarmStartImpulseRatio)AxisConstraintPartinline
+
+ + + + diff --git a/class_axis_constraint_part.html b/class_axis_constraint_part.html new file mode 100644 index 000000000..cdb595d31 --- /dev/null +++ b/class_axis_constraint_part.html @@ -0,0 +1,1485 @@ + + + + + + + +Jolt Physics: AxisConstraintPart Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
AxisConstraintPart Class Reference
+
+
+ +

#include <AxisConstraintPart.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<EMotionType Type1, EMotionType Type2>
JPH_INLINE void TemplatedCalculateConstraintProperties (float inInvMass1, Mat44Arg inInvI1, Vec3Arg inR1PlusU, float inInvMass2, Mat44Arg inInvI2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)
 Templated form of CalculateConstraintProperties with the motion types baked in.
 
void CalculateConstraintProperties (const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)
 
void CalculateConstraintPropertiesWithMassOverride (const Body &inBody1, float inInvMass1, float inInvInertiaScale1, Vec3Arg inR1PlusU, const Body &inBody2, float inInvMass2, float inInvInertiaScale2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)
 
void CalculateConstraintPropertiesWithFrequencyAndDamping (float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inFrequency, float inDamping)
 
void CalculateConstraintPropertiesWithStiffnessAndDamping (float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inStiffness, float inDamping)
 
void CalculateConstraintPropertiesWithSettings (float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, const SpringSettings &inSpringSettings)
 Selects one of the above functions based on the spring settings.
 
void Deactivate ()
 Deactivate this constraint.
 
bool IsActive () const
 Check if constraint is active.
 
template<EMotionType Type1, EMotionType Type2>
void TemplatedWarmStart (MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inWarmStartImpulseRatio)
 Templated form of WarmStart with the motion types baked in.
 
void WarmStart (Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inWarmStartImpulseRatio)
 
template<EMotionType Type1, EMotionType Type2>
JPH_INLINE float TemplatedSolveVelocityConstraintGetTotalLambda (const MotionProperties *ioMotionProperties1, const MotionProperties *ioMotionProperties2, Vec3Arg inWorldSpaceAxis) const
 Templated form of SolveVelocityConstraint with the motion types baked in, part 1: get the total lambda.
 
template<EMotionType Type1, EMotionType Type2>
JPH_INLINE bool TemplatedSolveVelocityConstraintApplyLambda (MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inTotalLambda)
 Templated form of SolveVelocityConstraint with the motion types baked in, part 2: apply new lambda.
 
template<EMotionType Type1, EMotionType Type2>
bool TemplatedSolveVelocityConstraint (MotionProperties *ioMotionProperties1, float inInvMass1, MotionProperties *ioMotionProperties2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
 Templated form of SolveVelocityConstraint with the motion types baked in.
 
bool SolveVelocityConstraint (Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
 
bool SolveVelocityConstraintWithMassOverride (Body &ioBody1, float inInvMass1, Body &ioBody2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inMinLambda, float inMaxLambda)
 
bool SolvePositionConstraint (Body &ioBody1, Body &ioBody2, Vec3Arg inWorldSpaceAxis, float inC, float inBaumgarte) const
 
bool SolvePositionConstraintWithMassOverride (Body &ioBody1, float inInvMass1, Body &ioBody2, float inInvMass2, Vec3Arg inWorldSpaceAxis, float inC, float inBaumgarte) const
 
void SetTotalLambda (float inLambda)
 Override total lagrange multiplier, can be used to set the initial value for warm starting.
 
float GetTotalLambda () const
 Return lagrange multiplier.
 
void SaveState (StateRecorder &inStream) const
 Save state of this constraint part.
 
void RestoreState (StateRecorder &inStream)
 Restore state of this constraint part.
 
+

Detailed Description

+

Constraint that constrains motion along 1 axis

+
See also
"Constraints Derivation for Rigid Body Simulation in 3D" - Daniel Chappuis, section 2.1.1 (we're not using the approximation of eq 27 but instead add the U term as in eq 55)
+

Constraint equation (eq 25):

+

+\[C = (p_2 - p_1) \cdot n\] +

+

Jacobian (eq 28):

+

+\[J = \begin{bmatrix} -n^T & (-(r_1 + u) \times n)^T & n^T & (r_2 \times n)^T \end{bmatrix}\] +

+

Used terms (here and below, everything in world space):
+n = constraint axis (normalized).
+p1, p2 = constraint points.
+r1 = p1 - x1.
+r2 = p2 - x2.
+u = x2 + r2 - x1 - r1 = p2 - p1.
+x1, x2 = center of mass for the bodies.
+v = [v1, w1, v2, w2].
+v1, v2 = linear velocity of body 1 and 2.
+w1, w2 = angular velocity of body 1 and 2.
+M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].
+ \(K^{-1} = \left( J M^{-1} J^T \right)^{-1}\) = effective mass.
+b = velocity bias.
+ \(\beta\) = baumgarte constant.

+

Member Function Documentation

+ +

◆ CalculateConstraintProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void AxisConstraintPart::CalculateConstraintProperties (const BodyinBody1,
Vec3Arg inR1PlusU,
const BodyinBody2,
Vec3Arg inR2,
Vec3Arg inWorldSpaceAxis,
float inBias = 0.0f 
)
+
+inline
+
+

Calculate properties used during the functions below

Parameters
+ + + + + + + +
inBody1The first body that this constraint is attached to
inBody2The second body that this constraint is attached to
inR1PlusUSee equations above (r1 + u)
inR2See equations above (r2)
inWorldSpaceAxisAxis along which the constraint acts (normalized, pointing from body 1 to 2)
inBiasBias term (b) for the constraint impulse: lambda = J v + b
+
+
+ +
+
+ +

◆ CalculateConstraintPropertiesWithFrequencyAndDamping()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void AxisConstraintPart::CalculateConstraintPropertiesWithFrequencyAndDamping (float inDeltaTime,
const BodyinBody1,
Vec3Arg inR1PlusU,
const BodyinBody2,
Vec3Arg inR2,
Vec3Arg inWorldSpaceAxis,
float inBias,
float inC,
float inFrequency,
float inDamping 
)
+
+inline
+
+

Calculate properties used during the functions below

Parameters
+ + + + + + + + + + + +
inDeltaTimeTime step
inBody1The first body that this constraint is attached to
inBody2The second body that this constraint is attached to
inR1PlusUSee equations above (r1 + u)
inR2See equations above (r2)
inWorldSpaceAxisAxis along which the constraint acts (normalized, pointing from body 1 to 2)
inBiasBias term (b) for the constraint impulse: lambda = J v + b
inCValue of the constraint equation (C).
inFrequencyOscillation frequency (Hz).
inDampingDamping factor (0 = no damping, 1 = critical damping).
+
+
+ +
+
+ +

◆ CalculateConstraintPropertiesWithMassOverride()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void AxisConstraintPart::CalculateConstraintPropertiesWithMassOverride (const BodyinBody1,
float inInvMass1,
float inInvInertiaScale1,
Vec3Arg inR1PlusU,
const BodyinBody2,
float inInvMass2,
float inInvInertiaScale2,
Vec3Arg inR2,
Vec3Arg inWorldSpaceAxis,
float inBias = 0.0f 
)
+
+inline
+
+

Calculate properties used during the functions below, version that supports mass scaling

Parameters
+ + + + + + + + + + + +
inBody1The first body that this constraint is attached to
inBody2The second body that this constraint is attached to
inInvMass1The inverse mass of body 1 (only used when body 1 is dynamic)
inInvMass2The inverse mass of body 2 (only used when body 2 is dynamic)
inInvInertiaScale1Scale factor for the inverse inertia of body 1
inInvInertiaScale2Scale factor for the inverse inertia of body 2
inR1PlusUSee equations above (r1 + u)
inR2See equations above (r2)
inWorldSpaceAxisAxis along which the constraint acts (normalized, pointing from body 1 to 2)
inBiasBias term (b) for the constraint impulse: lambda = J v + b
+
+
+ +
+
+ +

◆ CalculateConstraintPropertiesWithSettings()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void AxisConstraintPart::CalculateConstraintPropertiesWithSettings (float inDeltaTime,
const BodyinBody1,
Vec3Arg inR1PlusU,
const BodyinBody2,
Vec3Arg inR2,
Vec3Arg inWorldSpaceAxis,
float inBias,
float inC,
const SpringSettingsinSpringSettings 
)
+
+inline
+
+ +

Selects one of the above functions based on the spring settings.

+ +
+
+ +

◆ CalculateConstraintPropertiesWithStiffnessAndDamping()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void AxisConstraintPart::CalculateConstraintPropertiesWithStiffnessAndDamping (float inDeltaTime,
const BodyinBody1,
Vec3Arg inR1PlusU,
const BodyinBody2,
Vec3Arg inR2,
Vec3Arg inWorldSpaceAxis,
float inBias,
float inC,
float inStiffness,
float inDamping 
)
+
+inline
+
+

Calculate properties used during the functions below

Parameters
+ + + + + + + + + + + +
inDeltaTimeTime step
inBody1The first body that this constraint is attached to
inBody2The second body that this constraint is attached to
inR1PlusUSee equations above (r1 + u)
inR2See equations above (r2)
inWorldSpaceAxisAxis along which the constraint acts (normalized, pointing from body 1 to 2)
inBiasBias term (b) for the constraint impulse: lambda = J v + b
inCValue of the constraint equation (C).
inStiffnessSpring stiffness k.
inDampingSpring damping coefficient c.
+
+
+ +
+
+ +

◆ Deactivate()

+ +
+
+ + + + + +
+ + + + + + + +
void AxisConstraintPart::Deactivate ()
+
+inline
+
+ +

Deactivate this constraint.

+ +
+
+ +

◆ GetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float AxisConstraintPart::GetTotalLambda () const
+
+inline
+
+ +

Return lagrange multiplier.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool AxisConstraintPart::IsActive () const
+
+inline
+
+ +

Check if constraint is active.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void AxisConstraintPart::RestoreState (StateRecorderinStream)
+
+inline
+
+ +

Restore state of this constraint part.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void AxisConstraintPart::SaveState (StateRecorderinStream) const
+
+inline
+
+ +

Save state of this constraint part.

+ +
+
+ +

◆ SetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + + +
void AxisConstraintPart::SetTotalLambda (float inLambda)
+
+inline
+
+ +

Override total lagrange multiplier, can be used to set the initial value for warm starting.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool AxisConstraintPart::SolvePositionConstraint (BodyioBody1,
BodyioBody2,
Vec3Arg inWorldSpaceAxis,
float inC,
float inBaumgarte 
) const
+
+inline
+
+

Iteratively update the position constraint. Makes sure C(...) = 0.

Parameters
+ + + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inWorldSpaceAxisAxis along which the constraint acts (normalized)
inCValue of the constraint equation (C)
inBaumgarteBaumgarte constant (fraction of the error to correct)
+
+
+ +
+
+ +

◆ SolvePositionConstraintWithMassOverride()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool AxisConstraintPart::SolvePositionConstraintWithMassOverride (BodyioBody1,
float inInvMass1,
BodyioBody2,
float inInvMass2,
Vec3Arg inWorldSpaceAxis,
float inC,
float inBaumgarte 
) const
+
+inline
+
+

Iteratively update the position constraint. Makes sure C(...) = 0.

Parameters
+ + + + + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inInvMass1The inverse mass of body 1 (only used when body 1 is dynamic)
inInvMass2The inverse mass of body 2 (only used when body 2 is dynamic)
inWorldSpaceAxisAxis along which the constraint acts (normalized)
inCValue of the constraint equation (C)
inBaumgarteBaumgarte constant (fraction of the error to correct)
+
+
+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool AxisConstraintPart::SolveVelocityConstraint (BodyioBody1,
BodyioBody2,
Vec3Arg inWorldSpaceAxis,
float inMinLambda,
float inMaxLambda 
)
+
+inline
+
+

Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.

Parameters
+ + + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inWorldSpaceAxisAxis along which the constraint acts (normalized)
inMinLambdaMinimum value of constraint impulse to apply (N s)
inMaxLambdaMaximum value of constraint impulse to apply (N s)
+
+
+ +
+
+ +

◆ SolveVelocityConstraintWithMassOverride()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool AxisConstraintPart::SolveVelocityConstraintWithMassOverride (BodyioBody1,
float inInvMass1,
BodyioBody2,
float inInvMass2,
Vec3Arg inWorldSpaceAxis,
float inMinLambda,
float inMaxLambda 
)
+
+inline
+
+

Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.

Parameters
+ + + + + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inInvMass1The inverse mass of body 1 (only used when body 1 is dynamic)
inInvMass2The inverse mass of body 2 (only used when body 2 is dynamic)
inWorldSpaceAxisAxis along which the constraint acts (normalized)
inMinLambdaMinimum value of constraint impulse to apply (N s)
inMaxLambdaMaximum value of constraint impulse to apply (N s)
+
+
+ +
+
+ +

◆ TemplatedCalculateConstraintProperties()

+ +
+
+
+template<EMotionType Type1, EMotionType Type2>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE void AxisConstraintPart::TemplatedCalculateConstraintProperties (float inInvMass1,
Mat44Arg inInvI1,
Vec3Arg inR1PlusU,
float inInvMass2,
Mat44Arg inInvI2,
Vec3Arg inR2,
Vec3Arg inWorldSpaceAxis,
float inBias = 0.0f 
)
+
+inline
+
+ +

Templated form of CalculateConstraintProperties with the motion types baked in.

+ +
+
+ +

◆ TemplatedSolveVelocityConstraint()

+ +
+
+
+template<EMotionType Type1, EMotionType Type2>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool AxisConstraintPart::TemplatedSolveVelocityConstraint (MotionPropertiesioMotionProperties1,
float inInvMass1,
MotionPropertiesioMotionProperties2,
float inInvMass2,
Vec3Arg inWorldSpaceAxis,
float inMinLambda,
float inMaxLambda 
)
+
+inline
+
+ +

Templated form of SolveVelocityConstraint with the motion types baked in.

+ +
+
+ +

◆ TemplatedSolveVelocityConstraintApplyLambda()

+ +
+
+
+template<EMotionType Type1, EMotionType Type2>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE bool AxisConstraintPart::TemplatedSolveVelocityConstraintApplyLambda (MotionPropertiesioMotionProperties1,
float inInvMass1,
MotionPropertiesioMotionProperties2,
float inInvMass2,
Vec3Arg inWorldSpaceAxis,
float inTotalLambda 
)
+
+inline
+
+ +

Templated form of SolveVelocityConstraint with the motion types baked in, part 2: apply new lambda.

+ +
+
+ +

◆ TemplatedSolveVelocityConstraintGetTotalLambda()

+ +
+
+
+template<EMotionType Type1, EMotionType Type2>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE float AxisConstraintPart::TemplatedSolveVelocityConstraintGetTotalLambda (const MotionPropertiesioMotionProperties1,
const MotionPropertiesioMotionProperties2,
Vec3Arg inWorldSpaceAxis 
) const
+
+inline
+
+ +

Templated form of SolveVelocityConstraint with the motion types baked in, part 1: get the total lambda.

+ +
+
+ +

◆ TemplatedWarmStart()

+ +
+
+
+template<EMotionType Type1, EMotionType Type2>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void AxisConstraintPart::TemplatedWarmStart (MotionPropertiesioMotionProperties1,
float inInvMass1,
MotionPropertiesioMotionProperties2,
float inInvMass2,
Vec3Arg inWorldSpaceAxis,
float inWarmStartImpulseRatio 
)
+
+inline
+
+ +

Templated form of WarmStart with the motion types baked in.

+ +
+
+ +

◆ WarmStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void AxisConstraintPart::WarmStart (BodyioBody1,
BodyioBody2,
Vec3Arg inWorldSpaceAxis,
float inWarmStartImpulseRatio 
)
+
+inline
+
+

Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses

Parameters
+ + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inWorldSpaceAxisAxis along which the constraint acts (normalized)
inWarmStartImpulseRatioRatio of new step to old time step (dt_new / dt_old) for scaling the lagrange multiplier of the previous frame
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_axis_constraint_part.js b/class_axis_constraint_part.js new file mode 100644 index 000000000..2c28902c8 --- /dev/null +++ b/class_axis_constraint_part.js @@ -0,0 +1,24 @@ +var class_axis_constraint_part = +[ + [ "CalculateConstraintProperties", "class_axis_constraint_part.html#aeff890db41d91de6fddb9a2872d9e146", null ], + [ "CalculateConstraintPropertiesWithFrequencyAndDamping", "class_axis_constraint_part.html#a5b0fcca001a8673716a9e6acaaf030a4", null ], + [ "CalculateConstraintPropertiesWithMassOverride", "class_axis_constraint_part.html#a747c6cfe29af60b2e718af65f8066712", null ], + [ "CalculateConstraintPropertiesWithSettings", "class_axis_constraint_part.html#a0fa7dab4d8e1aa0b78e38ba24d926a9b", null ], + [ "CalculateConstraintPropertiesWithStiffnessAndDamping", "class_axis_constraint_part.html#ae8c4a8375c2a6f88e2adf1398743bed3", null ], + [ "Deactivate", "class_axis_constraint_part.html#a6b2103009bf467876c92689dc3fec29d", null ], + [ "GetTotalLambda", "class_axis_constraint_part.html#a012581aad01dbf091d9f8e2cf0ea6605", null ], + [ "IsActive", "class_axis_constraint_part.html#a20095a523dff24e09134b315841f1fcb", null ], + [ "RestoreState", "class_axis_constraint_part.html#afdaf8583a278a760eae80b8169ee6989", null ], + [ "SaveState", "class_axis_constraint_part.html#ad17a6a0c982d958f3e96e3b460315e5f", null ], + [ "SetTotalLambda", "class_axis_constraint_part.html#a21284d5ab7133a4e85f37fcfecb0be8e", null ], + [ "SolvePositionConstraint", "class_axis_constraint_part.html#a12a0588911733208e89fa65de7e2b2fc", null ], + [ "SolvePositionConstraintWithMassOverride", "class_axis_constraint_part.html#a981dad22bd1333ed2147264f3285c112", null ], + [ "SolveVelocityConstraint", "class_axis_constraint_part.html#a0f72dffd609be0cba29f2619c5a2c63a", null ], + [ "SolveVelocityConstraintWithMassOverride", "class_axis_constraint_part.html#aac25bbc0f7371f640c6e2af6a94c5cfc", null ], + [ "TemplatedCalculateConstraintProperties", "class_axis_constraint_part.html#a5a8bc2c7a35f60b63e233ed13db1749b", null ], + [ "TemplatedSolveVelocityConstraint", "class_axis_constraint_part.html#a24593248d2181c548e9621817beab264", null ], + [ "TemplatedSolveVelocityConstraintApplyLambda", "class_axis_constraint_part.html#aaf10ea43c5acaac802523b68dfbaf51d", null ], + [ "TemplatedSolveVelocityConstraintGetTotalLambda", "class_axis_constraint_part.html#a9f2617fd84fcdd5a77f4502c6e327143", null ], + [ "TemplatedWarmStart", "class_axis_constraint_part.html#adb5b5d041b1261d227b2d657a93cabd9", null ], + [ "WarmStart", "class_axis_constraint_part.html#a60befc8c7707dd567b633ecd7b870446", null ] +]; \ No newline at end of file diff --git a/class_body-members.html b/class_body-members.html new file mode 100644 index 000000000..291b8c1f5 --- /dev/null +++ b/class_body-members.html @@ -0,0 +1,217 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Body Member List
+
+
+ +

This is the complete list of members for Body, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddAngularImpulse(Vec3Arg inAngularImpulse)Bodyinline
AddForce(Vec3Arg inForce)Bodyinline
AddForce(Vec3Arg inForce, RVec3Arg inPosition)Bodyinline
AddImpulse(Vec3Arg inImpulse)Bodyinline
AddImpulse(Vec3Arg inImpulse, RVec3Arg inPosition)Bodyinline
AddPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)Bodyinline
AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)Bodyinline
AddTorque(Vec3Arg inTorque)Bodyinline
ApplyBuoyancyImpulse(RVec3Arg inSurfacePosition, Vec3Arg inSurfaceNormal, float inBuoyancy, float inLinearDrag, float inAngularDrag, Vec3Arg inFluidVelocity, Vec3Arg inGravity, float inDeltaTime)Body
BodyManagerBodyfriend
BodyWithMotionPropertiesBodyfriend
CalculateWorldSpaceBoundsInternal()Body
CanBeKinematicOrDynamic() constBodyinline
cInactiveIndexBodystatic
GetAccumulatedForce() constBodyinline
GetAccumulatedTorque() constBodyinline
GetAllowSleeping() constBodyinline
GetAngularVelocity() constBodyinline
GetApplyGyroscopicForce() constBodyinline
GetBodyCreationSettings() constBody
GetBodyType() constBodyinline
GetBroadPhaseLayer() constBodyinline
GetCenterOfMassPosition() constBodyinline
GetCenterOfMassTransform() constBodyinline
GetCollideKinematicVsNonDynamic() constBodyinline
GetCollisionGroup() constBodyinline
GetCollisionGroup()Bodyinline
GetEnhancedInternalEdgeRemoval() constBodyinline
GetEnhancedInternalEdgeRemovalWithBody(const Body &inBody2) constBodyinline
GetFriction() constBodyinline
GetID() constBodyinline
GetIndexInActiveBodiesInternal() constBodyinline
GetInverseCenterOfMassTransform() constBodyinline
GetInverseInertia() constBodyinline
GetLinearVelocity() constBodyinline
GetMotionProperties() constBodyinline
GetMotionProperties()Bodyinline
GetMotionPropertiesUnchecked() constBodyinline
GetMotionPropertiesUnchecked()Bodyinline
GetMotionType() constBodyinline
GetObjectLayer() constBodyinline
GetPointVelocity(RVec3Arg inPoint) constBodyinline
GetPointVelocityCOM(Vec3Arg inPointRelativeToCOM) constBodyinline
GetPosition() constBodyinline
GetRestitution() constBodyinline
GetRotation() constBodyinline
GetShape() constBodyinline
GetSoftBodyCreationSettings() constBody
GetTransformedShape() constBodyinline
GetUseManifoldReduction() constBodyinline
GetUseManifoldReductionWithBody(const Body &inBody2) constBodyinline
GetUserData() constBodyinline
GetWorldSpaceBounds() constBodyinline
GetWorldSpaceSurfaceNormal(const SubShapeID &inSubShapeID, RVec3Arg inPosition) constBodyinline
GetWorldTransform() constBodyinline
InvalidateContactCacheInternal()Bodyinline
IsActive() constBodyinline
IsCollisionCacheInvalid() constBodyinline
IsDynamic() constBodyinline
IsInBroadPhase() constBodyinline
IsKinematic() constBodyinline
IsRigidBody() constBodyinline
IsSensor() constBodyinline
IsSoftBody() constBodyinline
IsStatic() constBodyinline
MoveKinematic(RVec3Arg inTargetPosition, QuatArg inTargetRotation, float inDeltaTime)Body
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ResetForce()Bodyinline
ResetMotion()Bodyinline
ResetSleepTimer()Bodyinline
ResetTorque()Bodyinline
RestoreState(StateRecorder &inStream)Body
SaveState(StateRecorder &inStream) constBody
SetAllowSleeping(bool inAllow)Body
SetAngularVelocity(Vec3Arg inAngularVelocity)Bodyinline
SetAngularVelocityClamped(Vec3Arg inAngularVelocity)Bodyinline
SetApplyGyroscopicForce(bool inApply)Bodyinline
SetCollideKinematicVsNonDynamic(bool inCollide)Bodyinline
SetCollisionGroup(const CollisionGroup &inGroup)Bodyinline
SetEnhancedInternalEdgeRemoval(bool inApply)Bodyinline
SetFriction(float inFriction)Bodyinline
SetInBroadPhaseInternal(bool inInBroadPhase)Bodyinline
SetIsSensor(bool inIsSensor)Bodyinline
SetLinearVelocity(Vec3Arg inLinearVelocity)Bodyinline
SetLinearVelocityClamped(Vec3Arg inLinearVelocity)Bodyinline
SetMotionType(EMotionType inMotionType)Body
SetPositionAndRotationInternal(RVec3Arg inPosition, QuatArg inRotation, bool inResetSleepTimer=true)Body
SetRestitution(float inRestitution)Bodyinline
SetShapeInternal(const Shape *inShape, bool inUpdateMassProperties)Body
SetUseManifoldReduction(bool inUseReduction)Bodyinline
SetUserData(uint64 inUserData)Bodyinline
sFindCollidingPairsCanCollide(const Body &inBody1, const Body &inBody2)Bodyinlinestatic
sFixedToWorldBodystatic
SoftBodyWithMotionPropertiesAndShapeBodyfriend
SubPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)Bodyinline
SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)Bodyinline
UpdateCenterOfMassInternal(Vec3Arg inPreviousCenterOfMass, bool inUpdateMassProperties)Body
UpdateSleepStateInternal(float inDeltaTime, float inMaxMovement, float inTimeBeforeSleep)Body
ValidateContactCacheInternal()Bodyinline
+
+ + + + diff --git a/class_body.html b/class_body.html new file mode 100644 index 000000000..1e2c8b03b --- /dev/null +++ b/class_body.html @@ -0,0 +1,3136 @@ + + + + + + + +Jolt Physics: Body Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Body Class Reference
+
+
+ +

#include <Body.h>

+
+Inheritance diagram for Body:
+
+
+ + +NonCopyable +BodyWithMotionProperties +SoftBodyWithMotionPropertiesAndShape + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE const BodyIDGetID () const
 Get the id of this body.
 
EBodyType GetBodyType () const
 Get the type of body (rigid or soft)
 
bool IsRigidBody () const
 Check if this body is a rigid body.
 
bool IsSoftBody () const
 Check if this body is a soft body.
 
bool IsActive () const
 If this body is currently actively simulating (true) or sleeping (false)
 
bool IsStatic () const
 Check if this body is static (not movable)
 
bool IsKinematic () const
 Check if this body is kinematic (keyframed), which means that it will move according to its current velocity, but forces don't affect it.
 
bool IsDynamic () const
 Check if this body is dynamic, which means that it moves and forces can act on it.
 
bool CanBeKinematicOrDynamic () const
 Check if a body could be made kinematic or dynamic (if it was created dynamic or with mAllowDynamicOrKinematic set to true)
 
void SetIsSensor (bool inIsSensor)
 
bool IsSensor () const
 Check if this body is a sensor.
 
void SetCollideKinematicVsNonDynamic (bool inCollide)
 
bool GetCollideKinematicVsNonDynamic () const
 Check if kinematic objects can generate contact points against other kinematic or static objects.
 
void SetUseManifoldReduction (bool inUseReduction)
 
bool GetUseManifoldReduction () const
 Check if this body can use manifold reduction.
 
bool GetUseManifoldReductionWithBody (const Body &inBody2) const
 Checks if the combination of this body and inBody2 should use manifold reduction.
 
void SetApplyGyroscopicForce (bool inApply)
 Set to indicate that the gyroscopic force should be applied to this body (aka Dzhanibekov effect, see https://en.wikipedia.org/wiki/Tennis_racket_theorem)
 
bool GetApplyGyroscopicForce () const
 Check if the gyroscopic force is being applied for this body.
 
void SetEnhancedInternalEdgeRemoval (bool inApply)
 Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.
 
bool GetEnhancedInternalEdgeRemoval () const
 Check if enhanced internal edge removal is turned on.
 
bool GetEnhancedInternalEdgeRemovalWithBody (const Body &inBody2) const
 Checks if the combination of this body and inBody2 should use enhanced internal edge removal.
 
EMotionType GetMotionType () const
 Get the bodies motion type.
 
void SetMotionType (EMotionType inMotionType)
 Set the motion type of this body. Consider using BodyInterface::SetMotionType instead of this function if the body may be active or if it needs to be activated.
 
BroadPhaseLayer GetBroadPhaseLayer () const
 Get broadphase layer, this determines in which broad phase sub-tree the object is placed.
 
ObjectLayer GetObjectLayer () const
 Get object layer, this determines which other objects it collides with.
 
const CollisionGroupGetCollisionGroup () const
 Collision group and sub-group ID, determines which other objects it collides with.
 
CollisionGroupGetCollisionGroup ()
 
void SetCollisionGroup (const CollisionGroup &inGroup)
 
bool GetAllowSleeping () const
 If this body can go to sleep. Note that disabling sleeping on a sleeping object will not wake it up.
 
void SetAllowSleeping (bool inAllow)
 
void ResetSleepTimer ()
 Resets the sleep timer. This does not wake up the body if it is sleeping, but allows resetting the system that detects when a body is sleeping.
 
float GetFriction () const
 Friction (dimensionless number, usually between 0 and 1, 0 = no friction, 1 = friction force equals force that presses the two bodies together). Note that bodies can have negative friction but the combined friction (see PhysicsSystem::SetCombineFriction) should never go below zero.
 
void SetFriction (float inFriction)
 
float GetRestitution () const
 Restitution (dimensionless number, usually between 0 and 1, 0 = completely inelastic collision response, 1 = completely elastic collision response). Note that bodies can have negative restitution but the combined restitution (see PhysicsSystem::SetCombineRestitution) should never go below zero.
 
void SetRestitution (float inRestitution)
 
Vec3 GetLinearVelocity () const
 Get world space linear velocity of the center of mass (unit: m/s)
 
void SetLinearVelocity (Vec3Arg inLinearVelocity)
 Set world space linear velocity of the center of mass (unit: m/s)
 
void SetLinearVelocityClamped (Vec3Arg inLinearVelocity)
 Set world space linear velocity of the center of mass, will make sure the value is clamped against the maximum linear velocity.
 
Vec3 GetAngularVelocity () const
 Get world space angular velocity of the center of mass (unit: rad/s)
 
void SetAngularVelocity (Vec3Arg inAngularVelocity)
 Set world space angular velocity of the center of mass (unit: rad/s)
 
void SetAngularVelocityClamped (Vec3Arg inAngularVelocity)
 Set world space angular velocity of the center of mass, will make sure the value is clamped against the maximum angular velocity.
 
Vec3 GetPointVelocityCOM (Vec3Arg inPointRelativeToCOM) const
 Velocity of point inPoint (in center of mass space, e.g. on the surface of the body) of the body (unit: m/s)
 
Vec3 GetPointVelocity (RVec3Arg inPoint) const
 Velocity of point inPoint (in world space, e.g. on the surface of the body) of the body (unit: m/s)
 
void AddForce (Vec3Arg inForce)
 Add force (unit: N) at center of mass for the next time step, will be reset after the next call to PhysicsSystem::Update.
 
void AddForce (Vec3Arg inForce, RVec3Arg inPosition)
 Add force (unit: N) at inPosition for the next time step, will be reset after the next call to PhysicsSystem::Update.
 
void AddTorque (Vec3Arg inTorque)
 Add torque (unit: N m) for the next time step, will be reset after the next call to PhysicsSystem::Update.
 
Vec3 GetAccumulatedForce () const
 
Vec3 GetAccumulatedTorque () const
 
JPH_INLINE void ResetForce ()
 
JPH_INLINE void ResetTorque ()
 
JPH_INLINE void ResetMotion ()
 
Mat44 GetInverseInertia () const
 Get inverse inertia tensor in world space.
 
void AddImpulse (Vec3Arg inImpulse)
 Add impulse to center of mass (unit: kg m/s)
 
void AddImpulse (Vec3Arg inImpulse, RVec3Arg inPosition)
 Add impulse to point in world space (unit: kg m/s)
 
void AddAngularImpulse (Vec3Arg inAngularImpulse)
 Add angular impulse in world space (unit: N m s)
 
void MoveKinematic (RVec3Arg inTargetPosition, QuatArg inTargetRotation, float inDeltaTime)
 Set velocity of body such that it will be positioned at inTargetPosition/Rotation in inDeltaTime seconds.
 
bool ApplyBuoyancyImpulse (RVec3Arg inSurfacePosition, Vec3Arg inSurfaceNormal, float inBuoyancy, float inLinearDrag, float inAngularDrag, Vec3Arg inFluidVelocity, Vec3Arg inGravity, float inDeltaTime)
 
bool IsInBroadPhase () const
 Check if this body has been added to the physics system.
 
bool IsCollisionCacheInvalid () const
 Check if this body has been changed in such a way that the collision cache should be considered invalid for any body interacting with this body.
 
const ShapeGetShape () const
 Get the shape of this body.
 
RVec3 GetPosition () const
 World space position of the body.
 
Quat GetRotation () const
 World space rotation of the body.
 
RMat44 GetWorldTransform () const
 Calculates the transform of this body.
 
RVec3 GetCenterOfMassPosition () const
 Gets the world space position of this body's center of mass.
 
RMat44 GetCenterOfMassTransform () const
 Calculates the transform for this body's center of mass.
 
RMat44 GetInverseCenterOfMassTransform () const
 Calculates the inverse of the transform for this body's center of mass.
 
const AABoxGetWorldSpaceBounds () const
 Get world space bounding box.
 
const MotionPropertiesGetMotionProperties () const
 Access to the motion properties.
 
MotionPropertiesGetMotionProperties ()
 
const MotionPropertiesGetMotionPropertiesUnchecked () const
 Access to the motion properties (version that does not check if the object is kinematic or dynamic)
 
MotionPropertiesGetMotionPropertiesUnchecked ()
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
Vec3 GetWorldSpaceSurfaceNormal (const SubShapeID &inSubShapeID, RVec3Arg inPosition) const
 Get surface normal of a particular sub shape and its world space surface position on this body.
 
TransformedShape GetTransformedShape () const
 Get the transformed shape of this body, which can be used to do collision detection outside of a body lock.
 
BodyCreationSettings GetBodyCreationSettings () const
 Debug function to convert a body back to a body creation settings object to be able to save/recreate the body later.
 
SoftBodyCreationSettings GetSoftBodyCreationSettings () const
 Debug function to convert a soft body back to a soft body creation settings object to be able to save/recreate the body later.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + +

+Static Public Attributes

static Body sFixedToWorld
 A dummy body that can be used by constraints to attach a constraint to the world instead of another body.
 
static constexpr uint32 cInactiveIndex = MotionProperties::cInactiveIndex
 Constant indicating that body is not active.
 
+ + + + + + + +

+Friends

class BodyManager
 
class BodyWithMotionProperties
 
class SoftBodyWithMotionPropertiesAndShape
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

THESE FUNCTIONS ARE FOR INTERNAL USE ONLY AND SHOULD NOT BE CALLED BY THE APPLICATION

void AddPositionStep (Vec3Arg inLinearVelocityTimesDeltaTime)
 Update position using an Euler step (used during position integrate & constraint solving)
 
void SubPositionStep (Vec3Arg inLinearVelocityTimesDeltaTime)
 
void AddRotationStep (Vec3Arg inAngularVelocityTimesDeltaTime)
 Update rotation using an Euler step (using during position integrate & constraint solving)
 
void SubRotationStep (Vec3Arg inAngularVelocityTimesDeltaTime)
 
void SetInBroadPhaseInternal (bool inInBroadPhase)
 Flag if body is in the broadphase (should only be called by the BroadPhase)
 
bool InvalidateContactCacheInternal ()
 Invalidate the contact cache (should only be called by the BodyManager), will be reset the next simulation step. Returns true if the contact cache was still valid.
 
void ValidateContactCacheInternal ()
 Reset the collision cache invalid flag (should only be called by the BodyManager).
 
void CalculateWorldSpaceBoundsInternal ()
 Updates world space bounding box (should only be called by the PhysicsSystem)
 
void SetPositionAndRotationInternal (RVec3Arg inPosition, QuatArg inRotation, bool inResetSleepTimer=true)
 Function to update body's position (should only be called by the BodyInterface since it also requires updating the broadphase)
 
void UpdateCenterOfMassInternal (Vec3Arg inPreviousCenterOfMass, bool inUpdateMassProperties)
 
void SetShapeInternal (const Shape *inShape, bool inUpdateMassProperties)
 
uint32 GetIndexInActiveBodiesInternal () const
 Access to the index in the BodyManager::mActiveBodies list.
 
ECanSleep UpdateSleepStateInternal (float inDeltaTime, float inMaxMovement, float inTimeBeforeSleep)
 Update eligibility for sleeping.
 
void SaveState (StateRecorder &inStream) const
 Saving state for replay.
 
void RestoreState (StateRecorder &inStream)
 Restoring state for replay.
 
static bool sFindCollidingPairsCanCollide (const Body &inBody1, const Body &inBody2)
 
+

Detailed Description

+

A rigid body that can be simulated using the physics system

+

Note that internally all properties (position, velocity etc.) are tracked relative to the center of mass of the object to simplify the simulation of the object.

+

The offset between the position of the body and the center of mass position of the body is GetShape()->GetCenterOfMass(). The functions that get/set the position of the body all indicate if they are relative to the center of mass or to the original position in which the shape was created.

+

The linear velocity is also velocity of the center of mass, to correct for this: \(VelocityCOM = Velocity - AngularVelocity \times ShapeCOM\).

+

Member Function Documentation

+ +

◆ AddAngularImpulse()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::AddAngularImpulse (Vec3Arg inAngularImpulse)
+
+inline
+
+ +

Add angular impulse in world space (unit: N m s)

+ +
+
+ +

◆ AddForce() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::AddForce (Vec3Arg inForce)
+
+inline
+
+ +

Add force (unit: N) at center of mass for the next time step, will be reset after the next call to PhysicsSystem::Update.

+ +
+
+ +

◆ AddForce() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Body::AddForce (Vec3Arg inForce,
RVec3Arg inPosition 
)
+
+inline
+
+ +

Add force (unit: N) at inPosition for the next time step, will be reset after the next call to PhysicsSystem::Update.

+ +
+
+ +

◆ AddImpulse() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::AddImpulse (Vec3Arg inImpulse)
+
+inline
+
+ +

Add impulse to center of mass (unit: kg m/s)

+ +
+
+ +

◆ AddImpulse() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Body::AddImpulse (Vec3Arg inImpulse,
RVec3Arg inPosition 
)
+
+inline
+
+ +

Add impulse to point in world space (unit: kg m/s)

+ +
+
+ +

◆ AddPositionStep()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::AddPositionStep (Vec3Arg inLinearVelocityTimesDeltaTime)
+
+inline
+
+ +

Update position using an Euler step (used during position integrate & constraint solving)

+ +
+
+ +

◆ AddRotationStep()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::AddRotationStep (Vec3Arg inAngularVelocityTimesDeltaTime)
+
+inline
+
+ +

Update rotation using an Euler step (using during position integrate & constraint solving)

+ +
+
+ +

◆ AddTorque()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::AddTorque (Vec3Arg inTorque)
+
+inline
+
+ +

Add torque (unit: N m) for the next time step, will be reset after the next call to PhysicsSystem::Update.

+ +
+
+ +

◆ ApplyBuoyancyImpulse()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool Body::ApplyBuoyancyImpulse (RVec3Arg inSurfacePosition,
Vec3Arg inSurfaceNormal,
float inBuoyancy,
float inLinearDrag,
float inAngularDrag,
Vec3Arg inFluidVelocity,
Vec3Arg inGravity,
float inDeltaTime 
)
+
+

Applies an impulse to the body that simulates fluid buoyancy and drag

Parameters
+ + + + + + + + + +
inSurfacePositionPosition of the fluid surface in world space
inSurfaceNormalNormal of the fluid surface (should point up)
inBuoyancyThe buoyancy factor for the body. 1 = neutral body, < 1 sinks, > 1 floats. Note that we don't use the fluid density since it is harder to configure than a simple number between [0, 2]
inLinearDragLinear drag factor that slows down the body when in the fluid (approx. 0.5)
inAngularDragAngular drag factor that slows down rotation when the body is in the fluid (approx. 0.01)
inFluidVelocityThe average velocity of the fluid (in m/s) in which the body resides
inGravityThe gravity vector (pointing down)
inDeltaTimeDelta time of the next simulation step (in s)
+
+
+
Returns
true if an impulse was applied, false if the body was not in the fluid
+ +
+
+ +

◆ CalculateWorldSpaceBoundsInternal()

+ +
+
+ + + + + + + +
void Body::CalculateWorldSpaceBoundsInternal ()
+
+ +

Updates world space bounding box (should only be called by the PhysicsSystem)

+ +
+
+ +

◆ CanBeKinematicOrDynamic()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::CanBeKinematicOrDynamic () const
+
+inline
+
+ +

Check if a body could be made kinematic or dynamic (if it was created dynamic or with mAllowDynamicOrKinematic set to true)

+ +
+
+ +

◆ GetAccumulatedForce()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Body::GetAccumulatedForce () const
+
+inline
+
+ +
+
+ +

◆ GetAccumulatedTorque()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Body::GetAccumulatedTorque () const
+
+inline
+
+ +
+
+ +

◆ GetAllowSleeping()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::GetAllowSleeping () const
+
+inline
+
+ +

If this body can go to sleep. Note that disabling sleeping on a sleeping object will not wake it up.

+ +
+
+ +

◆ GetAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Body::GetAngularVelocity () const
+
+inline
+
+ +

Get world space angular velocity of the center of mass (unit: rad/s)

+ +
+
+ +

◆ GetApplyGyroscopicForce()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::GetApplyGyroscopicForce () const
+
+inline
+
+ +

Check if the gyroscopic force is being applied for this body.

+ +
+
+ +

◆ GetBodyCreationSettings()

+ +
+
+ + + + + + + +
BodyCreationSettings Body::GetBodyCreationSettings () const
+
+ +

Debug function to convert a body back to a body creation settings object to be able to save/recreate the body later.

+ +
+
+ +

◆ GetBodyType()

+ +
+
+ + + + + +
+ + + + + + + +
EBodyType Body::GetBodyType () const
+
+inline
+
+ +

Get the type of body (rigid or soft)

+ +
+
+ +

◆ GetBroadPhaseLayer()

+ +
+
+ + + + + +
+ + + + + + + +
BroadPhaseLayer Body::GetBroadPhaseLayer () const
+
+inline
+
+ +

Get broadphase layer, this determines in which broad phase sub-tree the object is placed.

+ +
+
+ +

◆ GetCenterOfMassPosition()

+ +
+
+ + + + + +
+ + + + + + + +
RVec3 Body::GetCenterOfMassPosition () const
+
+inline
+
+ +

Gets the world space position of this body's center of mass.

+ +
+
+ +

◆ GetCenterOfMassTransform()

+ +
+
+ + + + + +
+ + + + + + + +
RMat44 Body::GetCenterOfMassTransform () const
+
+inline
+
+ +

Calculates the transform for this body's center of mass.

+ +
+
+ +

◆ GetCollideKinematicVsNonDynamic()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::GetCollideKinematicVsNonDynamic () const
+
+inline
+
+ +

Check if kinematic objects can generate contact points against other kinematic or static objects.

+ +
+
+ +

◆ GetCollisionGroup() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
CollisionGroup & Body::GetCollisionGroup ()
+
+inline
+
+ +
+
+ +

◆ GetCollisionGroup() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const CollisionGroup & Body::GetCollisionGroup () const
+
+inline
+
+ +

Collision group and sub-group ID, determines which other objects it collides with.

+ +
+
+ +

◆ GetEnhancedInternalEdgeRemoval()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::GetEnhancedInternalEdgeRemoval () const
+
+inline
+
+ +

Check if enhanced internal edge removal is turned on.

+ +
+
+ +

◆ GetEnhancedInternalEdgeRemovalWithBody()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Body::GetEnhancedInternalEdgeRemovalWithBody (const BodyinBody2) const
+
+inline
+
+ +

Checks if the combination of this body and inBody2 should use enhanced internal edge removal.

+ +
+
+ +

◆ GetFriction()

+ +
+
+ + + + + +
+ + + + + + + +
float Body::GetFriction () const
+
+inline
+
+ +

Friction (dimensionless number, usually between 0 and 1, 0 = no friction, 1 = friction force equals force that presses the two bodies together). Note that bodies can have negative friction but the combined friction (see PhysicsSystem::SetCombineFriction) should never go below zero.

+ +
+
+ +

◆ GetID()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE const BodyID & Body::GetID () const
+
+inline
+
+ +

Get the id of this body.

+ +
+
+ +

◆ GetIndexInActiveBodiesInternal()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 Body::GetIndexInActiveBodiesInternal () const
+
+inline
+
+ +

Access to the index in the BodyManager::mActiveBodies list.

+ +
+
+ +

◆ GetInverseCenterOfMassTransform()

+ +
+
+ + + + + +
+ + + + + + + +
RMat44 Body::GetInverseCenterOfMassTransform () const
+
+inline
+
+ +

Calculates the inverse of the transform for this body's center of mass.

+ +
+
+ +

◆ GetInverseInertia()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 Body::GetInverseInertia () const
+
+inline
+
+ +

Get inverse inertia tensor in world space.

+ +
+
+ +

◆ GetLinearVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Body::GetLinearVelocity () const
+
+inline
+
+ +

Get world space linear velocity of the center of mass (unit: m/s)

+ +
+
+ +

◆ GetMotionProperties() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
MotionProperties * Body::GetMotionProperties ()
+
+inline
+
+ +
+
+ +

◆ GetMotionProperties() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const MotionProperties * Body::GetMotionProperties () const
+
+inline
+
+ +

Access to the motion properties.

+ +
+
+ +

◆ GetMotionPropertiesUnchecked() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
MotionProperties * Body::GetMotionPropertiesUnchecked ()
+
+inline
+
+ +
+
+ +

◆ GetMotionPropertiesUnchecked() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const MotionProperties * Body::GetMotionPropertiesUnchecked () const
+
+inline
+
+ +

Access to the motion properties (version that does not check if the object is kinematic or dynamic)

+ +
+
+ +

◆ GetMotionType()

+ +
+
+ + + + + +
+ + + + + + + +
EMotionType Body::GetMotionType () const
+
+inline
+
+ +

Get the bodies motion type.

+ +
+
+ +

◆ GetObjectLayer()

+ +
+
+ + + + + +
+ + + + + + + +
ObjectLayer Body::GetObjectLayer () const
+
+inline
+
+ +

Get object layer, this determines which other objects it collides with.

+ +
+
+ +

◆ GetPointVelocity()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 Body::GetPointVelocity (RVec3Arg inPoint) const
+
+inline
+
+ +

Velocity of point inPoint (in world space, e.g. on the surface of the body) of the body (unit: m/s)

+ +
+
+ +

◆ GetPointVelocityCOM()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 Body::GetPointVelocityCOM (Vec3Arg inPointRelativeToCOM) const
+
+inline
+
+ +

Velocity of point inPoint (in center of mass space, e.g. on the surface of the body) of the body (unit: m/s)

+ +
+
+ +

◆ GetPosition()

+ +
+
+ + + + + +
+ + + + + + + +
RVec3 Body::GetPosition () const
+
+inline
+
+ +

World space position of the body.

+ +
+
+ +

◆ GetRestitution()

+ +
+
+ + + + + +
+ + + + + + + +
float Body::GetRestitution () const
+
+inline
+
+ +

Restitution (dimensionless number, usually between 0 and 1, 0 = completely inelastic collision response, 1 = completely elastic collision response). Note that bodies can have negative restitution but the combined restitution (see PhysicsSystem::SetCombineRestitution) should never go below zero.

+ +
+
+ +

◆ GetRotation()

+ +
+
+ + + + + +
+ + + + + + + +
Quat Body::GetRotation () const
+
+inline
+
+ +

World space rotation of the body.

+ +
+
+ +

◆ GetShape()

+ +
+
+ + + + + +
+ + + + + + + +
const Shape * Body::GetShape () const
+
+inline
+
+ +

Get the shape of this body.

+ +
+
+ +

◆ GetSoftBodyCreationSettings()

+ +
+
+ + + + + + + +
SoftBodyCreationSettings Body::GetSoftBodyCreationSettings () const
+
+ +

Debug function to convert a soft body back to a soft body creation settings object to be able to save/recreate the body later.

+ +
+
+ +

◆ GetTransformedShape()

+ +
+
+ + + + + +
+ + + + + + + +
TransformedShape Body::GetTransformedShape () const
+
+inline
+
+ +

Get the transformed shape of this body, which can be used to do collision detection outside of a body lock.

+ +
+
+ +

◆ GetUseManifoldReduction()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::GetUseManifoldReduction () const
+
+inline
+
+ +

Check if this body can use manifold reduction.

+ +
+
+ +

◆ GetUseManifoldReductionWithBody()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Body::GetUseManifoldReductionWithBody (const BodyinBody2) const
+
+inline
+
+ +

Checks if the combination of this body and inBody2 should use manifold reduction.

+ +
+
+ +

◆ GetUserData()

+ +
+
+ + + + + +
+ + + + + + + +
uint64 Body::GetUserData () const
+
+inline
+
+ +

Access to the user data, can be used for anything by the application.

+ +
+
+ +

◆ GetWorldSpaceBounds()

+ +
+
+ + + + + +
+ + + + + + + +
const AABox & Body::GetWorldSpaceBounds () const
+
+inline
+
+ +

Get world space bounding box.

+ +
+
+ +

◆ GetWorldSpaceSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 Body::GetWorldSpaceSurfaceNormal (const SubShapeIDinSubShapeID,
RVec3Arg inPosition 
) const
+
+inline
+
+ +

Get surface normal of a particular sub shape and its world space surface position on this body.

+ +
+
+ +

◆ GetWorldTransform()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_NAMESPACE_BEGIN RMat44 Body::GetWorldTransform () const
+
+inline
+
+ +

Calculates the transform of this body.

+ +
+
+ +

◆ InvalidateContactCacheInternal()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::InvalidateContactCacheInternal ()
+
+inline
+
+ +

Invalidate the contact cache (should only be called by the BodyManager), will be reset the next simulation step. Returns true if the contact cache was still valid.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::IsActive () const
+
+inline
+
+ +

If this body is currently actively simulating (true) or sleeping (false)

+ +
+
+ +

◆ IsCollisionCacheInvalid()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::IsCollisionCacheInvalid () const
+
+inline
+
+ +

Check if this body has been changed in such a way that the collision cache should be considered invalid for any body interacting with this body.

+ +
+
+ +

◆ IsDynamic()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::IsDynamic () const
+
+inline
+
+ +

Check if this body is dynamic, which means that it moves and forces can act on it.

+ +
+
+ +

◆ IsInBroadPhase()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::IsInBroadPhase () const
+
+inline
+
+ +

Check if this body has been added to the physics system.

+ +
+
+ +

◆ IsKinematic()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::IsKinematic () const
+
+inline
+
+ +

Check if this body is kinematic (keyframed), which means that it will move according to its current velocity, but forces don't affect it.

+ +
+
+ +

◆ IsRigidBody()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::IsRigidBody () const
+
+inline
+
+ +

Check if this body is a rigid body.

+ +
+
+ +

◆ IsSensor()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::IsSensor () const
+
+inline
+
+ +

Check if this body is a sensor.

+ +
+
+ +

◆ IsSoftBody()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::IsSoftBody () const
+
+inline
+
+ +

Check if this body is a soft body.

+ +
+
+ +

◆ IsStatic()

+ +
+
+ + + + + +
+ + + + + + + +
bool Body::IsStatic () const
+
+inline
+
+ +

Check if this body is static (not movable)

+ +
+
+ +

◆ MoveKinematic()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Body::MoveKinematic (RVec3Arg inTargetPosition,
QuatArg inTargetRotation,
float inDeltaTime 
)
+
+ +

Set velocity of body such that it will be positioned at inTargetPosition/Rotation in inDeltaTime seconds.

+ +
+
+ +

◆ ResetForce()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE void Body::ResetForce ()
+
+inline
+
+ +
+
+ +

◆ ResetMotion()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE void Body::ResetMotion ()
+
+inline
+
+ +
+
+ +

◆ ResetSleepTimer()

+ +
+
+ + + + + +
+ + + + + + + +
void Body::ResetSleepTimer ()
+
+inline
+
+ +

Resets the sleep timer. This does not wake up the body if it is sleeping, but allows resetting the system that detects when a body is sleeping.

+ +
+
+ +

◆ ResetTorque()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE void Body::ResetTorque ()
+
+inline
+
+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + + + + +
void Body::RestoreState (StateRecorderinStream)
+
+ +

Restoring state for replay.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + + + + +
void Body::SaveState (StateRecorderinStream) const
+
+ +

Saving state for replay.

+ +
+
+ +

◆ SetAllowSleeping()

+ +
+
+ + + + + + + + +
void Body::SetAllowSleeping (bool inAllow)
+
+ +
+
+ +

◆ SetAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetAngularVelocity (Vec3Arg inAngularVelocity)
+
+inline
+
+ +

Set world space angular velocity of the center of mass (unit: rad/s)

+ +
+
+ +

◆ SetAngularVelocityClamped()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetAngularVelocityClamped (Vec3Arg inAngularVelocity)
+
+inline
+
+ +

Set world space angular velocity of the center of mass, will make sure the value is clamped against the maximum angular velocity.

+ +
+
+ +

◆ SetApplyGyroscopicForce()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetApplyGyroscopicForce (bool inApply)
+
+inline
+
+ +

Set to indicate that the gyroscopic force should be applied to this body (aka Dzhanibekov effect, see https://en.wikipedia.org/wiki/Tennis_racket_theorem)

+ +
+
+ +

◆ SetCollideKinematicVsNonDynamic()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetCollideKinematicVsNonDynamic (bool inCollide)
+
+inline
+
+

If kinematic objects can generate contact points against other kinematic or static objects. Note that turning this on can be CPU intensive as much more collision detection work will be done without any effect on the simulation (kinematic objects are not affected by other kinematic/static objects). This can be used to make sensors detect static objects. Note that the sensor must be kinematic and active for it to detect static objects.

+ +
+
+ +

◆ SetCollisionGroup()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetCollisionGroup (const CollisionGroupinGroup)
+
+inline
+
+ +
+
+ +

◆ SetEnhancedInternalEdgeRemoval()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetEnhancedInternalEdgeRemoval (bool inApply)
+
+inline
+
+ +

Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.

+ +
+
+ +

◆ SetFriction()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetFriction (float inFriction)
+
+inline
+
+ +
+
+ +

◆ SetInBroadPhaseInternal()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetInBroadPhaseInternal (bool inInBroadPhase)
+
+inline
+
+ +

Flag if body is in the broadphase (should only be called by the BroadPhase)

+ +
+
+ +

◆ SetIsSensor()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetIsSensor (bool inIsSensor)
+
+inline
+
+

Change the body to a sensor. A sensor will receive collision callbacks, but will not cause any collision responses and can be used as a trigger volume. The cheapest sensor (in terms of CPU usage) is a sensor with motion type Static (they can be moved around using BodyInterface::SetPosition/SetPositionAndRotation). These sensors will only detect collisions with active Dynamic or Kinematic bodies. As soon as a body go to sleep, the contact point with the sensor will be lost. If you make a sensor Dynamic or Kinematic and activate them, the sensor will be able to detect collisions with sleeping bodies too. An active sensor will never go to sleep automatically. When you make a Dynamic or Kinematic sensor, make sure it is in an ObjectLayer that does not collide with Static bodies or other sensors to avoid extra overhead in the broad phase.

+ +
+
+ +

◆ SetLinearVelocity()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetLinearVelocity (Vec3Arg inLinearVelocity)
+
+inline
+
+ +

Set world space linear velocity of the center of mass (unit: m/s)

+ +
+
+ +

◆ SetLinearVelocityClamped()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetLinearVelocityClamped (Vec3Arg inLinearVelocity)
+
+inline
+
+ +

Set world space linear velocity of the center of mass, will make sure the value is clamped against the maximum linear velocity.

+ +
+
+ +

◆ SetMotionType()

+ +
+
+ + + + + + + + +
void Body::SetMotionType (EMotionType inMotionType)
+
+ +

Set the motion type of this body. Consider using BodyInterface::SetMotionType instead of this function if the body may be active or if it needs to be activated.

+ +
+
+ +

◆ SetPositionAndRotationInternal()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Body::SetPositionAndRotationInternal (RVec3Arg inPosition,
QuatArg inRotation,
bool inResetSleepTimer = true 
)
+
+ +

Function to update body's position (should only be called by the BodyInterface since it also requires updating the broadphase)

+ +
+
+ +

◆ SetRestitution()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetRestitution (float inRestitution)
+
+inline
+
+ +
+
+ +

◆ SetShapeInternal()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Body::SetShapeInternal (const ShapeinShape,
bool inUpdateMassProperties 
)
+
+

Function to update a body's shape (should only be called by the BodyInterface since it also requires updating the broadphase)

Parameters
+ + + +
inShapeThe new shape for this body
inUpdateMassPropertiesWhen true, the mass and inertia tensor is recalculated
+
+
+ +
+
+ +

◆ SetUseManifoldReduction()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetUseManifoldReduction (bool inUseReduction)
+
+inline
+
+

If PhysicsSettings::mUseManifoldReduction is true, this allows turning off manifold reduction for this specific body. Manifold reduction by default will combine contacts with similar normals that come from different SubShapeIDs (e.g. different triangles in a mesh shape or different compound shapes). If the application requires tracking exactly which SubShapeIDs are in contact, you can turn off manifold reduction. Note that this comes at a performance cost. Consider using BodyInterface::SetUseManifoldReduction if the body could already be in contact with other bodies to ensure that the contact cache is invalidated and you get the correct contact callbacks.

+ +
+
+ +

◆ SetUserData()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SetUserData (uint64 inUserData)
+
+inline
+
+ +
+
+ +

◆ sFindCollidingPairsCanCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool Body::sFindCollidingPairsCanCollide (const BodyinBody1,
const BodyinBody2 
)
+
+inlinestatic
+
+

Helper function for BroadPhase::FindCollidingPairs that returns true when two bodies can collide It assumes that body 1 is dynamic and active and guarantees that it body 1 collides with body 2 that body 2 will not collide with body 1 in order to avoid finding duplicate collision pairs

+ +
+
+ +

◆ SubPositionStep()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SubPositionStep (Vec3Arg inLinearVelocityTimesDeltaTime)
+
+inline
+
+ +
+
+ +

◆ SubRotationStep()

+ +
+
+ + + + + +
+ + + + + + + + +
void Body::SubRotationStep (Vec3Arg inAngularVelocityTimesDeltaTime)
+
+inline
+
+ +
+
+ +

◆ UpdateCenterOfMassInternal()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Body::UpdateCenterOfMassInternal (Vec3Arg inPreviousCenterOfMass,
bool inUpdateMassProperties 
)
+
+

Updates the center of mass and optionally mass properties after shifting the center of mass or changes to the shape (should only be called by the BodyInterface since it also requires updating the broadphase)

Parameters
+ + + +
inPreviousCenterOfMassCenter of mass of the shape before the alterations
inUpdateMassPropertiesWhen true, the mass and inertia tensor is recalculated
+
+
+ +
+
+ +

◆ UpdateSleepStateInternal()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ECanSleep Body::UpdateSleepStateInternal (float inDeltaTime,
float inMaxMovement,
float inTimeBeforeSleep 
)
+
+ +

Update eligibility for sleeping.

+ +
+
+ +

◆ ValidateContactCacheInternal()

+ +
+
+ + + + + +
+ + + + + + + +
void Body::ValidateContactCacheInternal ()
+
+inline
+
+ +

Reset the collision cache invalid flag (should only be called by the BodyManager).

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ BodyManager

+ +
+
+ + + + + +
+ + + + +
friend class BodyManager
+
+friend
+
+ +
+
+ +

◆ BodyWithMotionProperties

+ +
+
+ + + + + +
+ + + + +
friend class BodyWithMotionProperties
+
+friend
+
+ +
+
+ +

◆ SoftBodyWithMotionPropertiesAndShape

+ +
+
+ + + + + +
+ + + + +
friend class SoftBodyWithMotionPropertiesAndShape
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ cInactiveIndex

+ +
+
+ + + + + +
+ + + + +
constexpr uint32 Body::cInactiveIndex = MotionProperties::cInactiveIndex
+
+staticconstexpr
+
+ +

Constant indicating that body is not active.

+ +
+
+ +

◆ sFixedToWorld

+ +
+
+ + + + + +
+ + + + +
Body Body::sFixedToWorld
+
+static
+
+ +

A dummy body that can be used by constraints to attach a constraint to the world instead of another body.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_body.js b/class_body.js new file mode 100644 index 000000000..9f0035806 --- /dev/null +++ b/class_body.js @@ -0,0 +1,98 @@ +var class_body = +[ + [ "AddAngularImpulse", "class_body.html#aa797042eec783ed27333f529b66221a3", null ], + [ "AddForce", "class_body.html#add8352d484a2805f114400159151185b", null ], + [ "AddForce", "class_body.html#a330c986c992c3fdc142194e870e3b8d3", null ], + [ "AddImpulse", "class_body.html#af4e42e6ae915ca4fcaee1c988eeba0f7", null ], + [ "AddImpulse", "class_body.html#aca6076501cd66dedd2618166fdf1750a", null ], + [ "AddPositionStep", "class_body.html#af98f831df76bd7e54eeb92d79fa3c8cd", null ], + [ "AddRotationStep", "class_body.html#a3385650a73d75c7d9c16d13ea2d5519f", null ], + [ "AddTorque", "class_body.html#aec30d437f934327d261e8ebdc23a2c8c", null ], + [ "ApplyBuoyancyImpulse", "class_body.html#a7797f43ac6078b682b4c9cb6c7b9b18e", null ], + [ "CalculateWorldSpaceBoundsInternal", "class_body.html#a1aace226a07f37492739bf10fd16a720", null ], + [ "CanBeKinematicOrDynamic", "class_body.html#a97addaa630b716fbc5b21ba19fdcf6ec", null ], + [ "GetAccumulatedForce", "class_body.html#ad6c366c23710a8f103f6504cfccccc93", null ], + [ "GetAccumulatedTorque", "class_body.html#a9294deeff168fbb210f24f25e063fb38", null ], + [ "GetAllowSleeping", "class_body.html#a1de301b3077fe2ae6339b910573ef3c6", null ], + [ "GetAngularVelocity", "class_body.html#adb1bb49db094ac2ef7c4951d07ba8417", null ], + [ "GetApplyGyroscopicForce", "class_body.html#af7a0aaf1d49d9be5ffb7d6f195d3c74a", null ], + [ "GetBodyCreationSettings", "class_body.html#aad1ce1d84e95cab008fb239465b3496f", null ], + [ "GetBodyType", "class_body.html#a864a31f176da8e3329f83cb65c23f3d6", null ], + [ "GetBroadPhaseLayer", "class_body.html#a4b9b625f789caa55cc9a3c7663644011", null ], + [ "GetCenterOfMassPosition", "class_body.html#a10bf9dd2b7c39a93568e8eb3ada8da2a", null ], + [ "GetCenterOfMassTransform", "class_body.html#a9431bfa66a018714074fe149c7a65ac5", null ], + [ "GetCollideKinematicVsNonDynamic", "class_body.html#a8bb48012c114b300a9bfdd296cfe0546", null ], + [ "GetCollisionGroup", "class_body.html#aca55936886e8c9d4dc072efa6e7baa47", null ], + [ "GetCollisionGroup", "class_body.html#a5865492b92c7c2e321c6916e80f5b7cb", null ], + [ "GetEnhancedInternalEdgeRemoval", "class_body.html#aa32a2192fa7e0ad595c63113e367d606", null ], + [ "GetEnhancedInternalEdgeRemovalWithBody", "class_body.html#a264f4c99047d880e0ec05ba558f64ee9", null ], + [ "GetFriction", "class_body.html#abb35a0778672e9f3622d8cfa93b428b3", null ], + [ "GetID", "class_body.html#acbcb599679bb6a330a7ea3427fe90604", null ], + [ "GetIndexInActiveBodiesInternal", "class_body.html#a61c94ac7d927ff8e5b3c980fc11af5a1", null ], + [ "GetInverseCenterOfMassTransform", "class_body.html#a9c317394889f2064a20693935036eeb3", null ], + [ "GetInverseInertia", "class_body.html#a731f2a92e9e215ff87efc831999e0e6e", null ], + [ "GetLinearVelocity", "class_body.html#a6451197a038f1d99b4b92beae4656842", null ], + [ "GetMotionProperties", "class_body.html#aa9e634771e2ed719757a71cb9751b353", null ], + [ "GetMotionProperties", "class_body.html#a0d39987255227c4221fcea66cb1fc041", null ], + [ "GetMotionPropertiesUnchecked", "class_body.html#ad0cc27e6920daa31fc9e42a7824d2d02", null ], + [ "GetMotionPropertiesUnchecked", "class_body.html#abe012219037c12313c7ef1116ee74865", null ], + [ "GetMotionType", "class_body.html#a146a4745ed28c3d9b06abe02ee3d3490", null ], + [ "GetObjectLayer", "class_body.html#a652dca18d0969696d5a4a589c30eddc2", null ], + [ "GetPointVelocity", "class_body.html#a04705ba7fe0c4cfac8bda79a43421beb", null ], + [ "GetPointVelocityCOM", "class_body.html#a19540cae81c6338eb7023bb9c923b0d4", null ], + [ "GetPosition", "class_body.html#adce53bad2dc9f79804d6a01d435c06e0", null ], + [ "GetRestitution", "class_body.html#a5657cc63a5fd9ee1e4a8408ac51affcc", null ], + [ "GetRotation", "class_body.html#aaee24bfb5e32e756f50113b9d1f45a2c", null ], + [ "GetShape", "class_body.html#a45950d9b3f8f28aafa13a81374912bf1", null ], + [ "GetSoftBodyCreationSettings", "class_body.html#a61a0607212ae03156e55dbfdabceb886", null ], + [ "GetTransformedShape", "class_body.html#ab29a0e2490187a1e08d21c4e9235f2a3", null ], + [ "GetUseManifoldReduction", "class_body.html#ae2732111d3d846bfceb19459fa2ee963", null ], + [ "GetUseManifoldReductionWithBody", "class_body.html#a602ae16f05ab73cd5cae80c2fd9b4a0d", null ], + [ "GetUserData", "class_body.html#a48b9455aae90fe4d73302389f6c7d9b5", null ], + [ "GetWorldSpaceBounds", "class_body.html#a2be34f0150bb5f520f21330ee6b7cb41", null ], + [ "GetWorldSpaceSurfaceNormal", "class_body.html#a12422310c7aa9ec72e2376d08fbee6b5", null ], + [ "GetWorldTransform", "class_body.html#a4bab5d07f84d5a9d38119a1923298b5c", null ], + [ "InvalidateContactCacheInternal", "class_body.html#a469ea05f3200587491082a0f11f54fc6", null ], + [ "IsActive", "class_body.html#ae172c10ebdda3e473ae54f7e35c62cd1", null ], + [ "IsCollisionCacheInvalid", "class_body.html#a6e13ebc7a47c0170acc0c976f7724ea8", null ], + [ "IsDynamic", "class_body.html#a1b21c30907c8c9ce30c176a054057bef", null ], + [ "IsInBroadPhase", "class_body.html#a0d17f6ccde9ed070cdead2585ee87446", null ], + [ "IsKinematic", "class_body.html#ab49045bc1738e110dea9cbc020528338", null ], + [ "IsRigidBody", "class_body.html#a8365154663e94343e1045893ee3b4c16", null ], + [ "IsSensor", "class_body.html#a251e1c9d8c9c7e40ddabc73420ac9ab1", null ], + [ "IsSoftBody", "class_body.html#a454781f1340576ad7f752b51dd8a179d", null ], + [ "IsStatic", "class_body.html#a83748a3d5a5b0a5b0242ba91875b8e13", null ], + [ "MoveKinematic", "class_body.html#a015be9d70225c08eb10d01753415febd", null ], + [ "ResetForce", "class_body.html#a91ec38c6d564c65d7dde56f315a8eb31", null ], + [ "ResetMotion", "class_body.html#ae5800f2a270af3dcf7b53c009b67ef95", null ], + [ "ResetSleepTimer", "class_body.html#a95efc4cbe40bfab41c74b2add880fa04", null ], + [ "ResetTorque", "class_body.html#ab3872c4fdcf4046aac2565bbe14061e8", null ], + [ "RestoreState", "class_body.html#a5b4cf0e59625d5607d1317e8ad2de290", null ], + [ "SaveState", "class_body.html#a64202a0bd7babbef34094157036bda8c", null ], + [ "SetAllowSleeping", "class_body.html#a4fcb04dbca94ff4cf4b48289f26c26b4", null ], + [ "SetAngularVelocity", "class_body.html#a15d802457f106f2255a6401ea0aaee9f", null ], + [ "SetAngularVelocityClamped", "class_body.html#a9033b203f8511c35dca0dfc8ca1c25ca", null ], + [ "SetApplyGyroscopicForce", "class_body.html#acb02850d1a8baecc879d224f47e9ab70", null ], + [ "SetCollideKinematicVsNonDynamic", "class_body.html#adefe521957195c57e06a905431160d10", null ], + [ "SetCollisionGroup", "class_body.html#a16ebf80baa257da06fdf4996a8b22476", null ], + [ "SetEnhancedInternalEdgeRemoval", "class_body.html#a87c94617c51d1d35e49b64b0a29d18a4", null ], + [ "SetFriction", "class_body.html#af3576faa64307d6d9318a7c0dad47d21", null ], + [ "SetInBroadPhaseInternal", "class_body.html#aa600fe2037b7ded7a84a8bf479213ebc", null ], + [ "SetIsSensor", "class_body.html#a5d8e1f66eed163868a633cdb93859f77", null ], + [ "SetLinearVelocity", "class_body.html#a603b71ad2f5dbb76fd80fa9dff8be7f9", null ], + [ "SetLinearVelocityClamped", "class_body.html#a5e1e46dac04eaf5fbaed87d6d781480d", null ], + [ "SetMotionType", "class_body.html#ab5bda1ea540be9e8383b974c21d5771a", null ], + [ "SetPositionAndRotationInternal", "class_body.html#a1f42d6ce3b4ce87fce69561a4d2a4442", null ], + [ "SetRestitution", "class_body.html#a6589465cd947d75f90b3975e6bdfd96e", null ], + [ "SetShapeInternal", "class_body.html#a63941e4493131921269e74ba993a6ccb", null ], + [ "SetUseManifoldReduction", "class_body.html#a8c24ff0c08f1a31fc57d01420f9cae8b", null ], + [ "SetUserData", "class_body.html#a3fff2f601caed12dd89c6d7fcb04dad6", null ], + [ "SubPositionStep", "class_body.html#a3c0a6198eb89412439dfcaef56eadade", null ], + [ "SubRotationStep", "class_body.html#ab0df53d82e3a8356fac91d178b30c369", null ], + [ "UpdateCenterOfMassInternal", "class_body.html#a0c81be8ceb81f10124d14a45b670ea9a", null ], + [ "UpdateSleepStateInternal", "class_body.html#a047680ce755ba6d66aa078b317bb037f", null ], + [ "ValidateContactCacheInternal", "class_body.html#aed0987087ec4b3c3571c6a6a339361ad", null ], + [ "BodyManager", "class_body.html#a58dc89a83d8c4dc28bd5f6e8c0ed35c8", null ], + [ "BodyWithMotionProperties", "class_body.html#a9e3350c41c89f980a2198b359ba62857", null ], + [ "SoftBodyWithMotionPropertiesAndShape", "class_body.html#adce65bfd20d74b92a90a53883a218dee", null ] +]; \ No newline at end of file diff --git a/class_body.png b/class_body.png new file mode 100644 index 000000000..0c17f6bcb Binary files /dev/null and b/class_body.png differ diff --git a/class_body_activation_listener-members.html b/class_body_activation_listener-members.html new file mode 100644 index 000000000..e267c24e0 --- /dev/null +++ b/class_body_activation_listener-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyActivationListener Member List
+
+
+ +

This is the complete list of members for BodyActivationListener, including all inherited members.

+ + + + +
OnBodyActivated(const BodyID &inBodyID, uint64 inBodyUserData)=0BodyActivationListenerpure virtual
OnBodyDeactivated(const BodyID &inBodyID, uint64 inBodyUserData)=0BodyActivationListenerpure virtual
~BodyActivationListener()=defaultBodyActivationListenervirtual
+
+ + + + diff --git a/class_body_activation_listener.html b/class_body_activation_listener.html new file mode 100644 index 000000000..ebe074dbf --- /dev/null +++ b/class_body_activation_listener.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: BodyActivationListener Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyActivationListener Class Referenceabstract
+
+
+ +

#include <BodyActivationListener.h>

+ + + + + + + + + +

+Public Member Functions

virtual ~BodyActivationListener ()=default
 Ensure virtual destructor.
 
virtual void OnBodyActivated (const BodyID &inBodyID, uint64 inBodyUserData)=0
 
virtual void OnBodyDeactivated (const BodyID &inBodyID, uint64 inBodyUserData)=0
 
+

Detailed Description

+

A listener class that receives events when a body activates or deactivates. It can be registered with the BodyManager (or PhysicsSystem).

+

Constructor & Destructor Documentation

+ +

◆ ~BodyActivationListener()

+ +
+
+ + + + + +
+ + + + + + + +
virtual BodyActivationListener::~BodyActivationListener ()
+
+virtualdefault
+
+ +

Ensure virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ OnBodyActivated()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void BodyActivationListener::OnBodyActivated (const BodyIDinBodyID,
uint64 inBodyUserData 
)
+
+pure virtual
+
+

Called whenever a body activates, note this can be called from any thread so make sure your code is thread safe. At the time of the callback the body inBodyID will be locked and no bodies can be written/activated/deactivated from the callback.

+ +
+
+ +

◆ OnBodyDeactivated()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void BodyActivationListener::OnBodyDeactivated (const BodyIDinBodyID,
uint64 inBodyUserData 
)
+
+pure virtual
+
+

Called whenever a body deactivates, note this can be called from any thread so make sure your code is thread safe. At the time of the callback the body inBodyID will be locked and no bodies can be written/activated/deactivated from the callback.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_activation_listener.js b/class_body_activation_listener.js new file mode 100644 index 000000000..5c4632d4f --- /dev/null +++ b/class_body_activation_listener.js @@ -0,0 +1,6 @@ +var class_body_activation_listener = +[ + [ "~BodyActivationListener", "class_body_activation_listener.html#a1fad22d1fc6b3dd2a7b31e7e230abca3", null ], + [ "OnBodyActivated", "class_body_activation_listener.html#a448ea399091ddce1e908977b90e286c6", null ], + [ "OnBodyDeactivated", "class_body_activation_listener.html#aa92b184061db51e535acfa215895b47f", null ] +]; \ No newline at end of file diff --git a/class_body_creation_settings-members.html b/class_body_creation_settings-members.html new file mode 100644 index 000000000..e0caf0b64 --- /dev/null +++ b/class_body_creation_settings-members.html @@ -0,0 +1,166 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyCreationSettings Member List
+
+
+ +

This is the complete list of members for BodyCreationSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BCSResult typedefBodyCreationSettings
BodyCreationSettings()=defaultBodyCreationSettings
BodyCreationSettings(const ShapeSettings *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)BodyCreationSettingsinline
BodyCreationSettings(const Shape *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)BodyCreationSettingsinline
ConvertShapeSettings()BodyCreationSettings
GetMassProperties() constBodyCreationSettings
GetShape() constBodyCreationSettings
GetShapeSettings() constBodyCreationSettingsinline
GroupFilterToIDMap typedefBodyCreationSettings
HasMassProperties() constBodyCreationSettingsinline
IDToGroupFilterMap typedefBodyCreationSettings
IDToMaterialMap typedefBodyCreationSettings
IDToShapeMap typedefBodyCreationSettings
mAllowDynamicOrKinematicBodyCreationSettings
mAllowedDOFsBodyCreationSettings
mAllowSleepingBodyCreationSettings
mAngularDampingBodyCreationSettings
mAngularVelocityBodyCreationSettings
mApplyGyroscopicForceBodyCreationSettings
MaterialToIDMap typedefBodyCreationSettings
mCollideKinematicVsNonDynamicBodyCreationSettings
mCollisionGroupBodyCreationSettings
mEnhancedInternalEdgeRemovalBodyCreationSettings
mFrictionBodyCreationSettings
mGravityFactorBodyCreationSettings
mInertiaMultiplierBodyCreationSettings
mIsSensorBodyCreationSettings
mLinearDampingBodyCreationSettings
mLinearVelocityBodyCreationSettings
mMassPropertiesOverrideBodyCreationSettings
mMaxAngularVelocityBodyCreationSettings
mMaxLinearVelocityBodyCreationSettings
mMotionQualityBodyCreationSettings
mMotionTypeBodyCreationSettings
mNumPositionStepsOverrideBodyCreationSettings
mNumVelocityStepsOverrideBodyCreationSettings
mObjectLayerBodyCreationSettings
mOverrideMassPropertiesBodyCreationSettings
mPositionBodyCreationSettings
mRestitutionBodyCreationSettings
mRotationBodyCreationSettings
mUseManifoldReductionBodyCreationSettings
mUserDataBodyCreationSettings
RestoreBinaryState(StreamIn &inStream)BodyCreationSettings
SaveBinaryState(StreamOut &inStream) constBodyCreationSettings
SaveWithChildren(StreamOut &inStream, ShapeToIDMap *ioShapeMap, MaterialToIDMap *ioMaterialMap, GroupFilterToIDMap *ioGroupFilterMap) constBodyCreationSettings
SetShape(const Shape *inShape)BodyCreationSettingsinline
SetShapeSettings(const ShapeSettings *inShape)BodyCreationSettingsinline
ShapeToIDMap typedefBodyCreationSettings
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap, IDToGroupFilterMap &ioGroupFilterMap)BodyCreationSettingsstatic
+
+ + + + diff --git a/class_body_creation_settings.html b/class_body_creation_settings.html new file mode 100644 index 000000000..8dc7a3d43 --- /dev/null +++ b/class_body_creation_settings.html @@ -0,0 +1,1290 @@ + + + + + + + +Jolt Physics: BodyCreationSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyCreationSettings Class Reference
+
+
+ +

Settings for constructing a rigid body. + More...

+ +

#include <BodyCreationSettings.h>

+
+Inheritance diagram for BodyCreationSettings:
+
+
+ + +RagdollSettings::Part + +
+ + + + + + + + + + + + + + + + +

+Public Types

using GroupFilterToIDMap = StreamUtils::ObjectToIDMap< GroupFilter >
 
using IDToGroupFilterMap = StreamUtils::IDToObjectMap< GroupFilter >
 
using ShapeToIDMap = Shape::ShapeToIDMap
 
using IDToShapeMap = Shape::IDToShapeMap
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
using BCSResult = Result< BodyCreationSettings >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BodyCreationSettings ()=default
 Constructor.
 
 BodyCreationSettings (const ShapeSettings *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)
 
 BodyCreationSettings (const Shape *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)
 
const ShapeSettingsGetShapeSettings () const
 Access to the shape settings object. This contains serializable (non-runtime optimized) information about the Shape.
 
void SetShapeSettings (const ShapeSettings *inShape)
 
Shape::ShapeResult ConvertShapeSettings ()
 Convert ShapeSettings object into a Shape object. This will free the ShapeSettings object and make the object ready for runtime. Serialization is no longer possible after this.
 
const ShapeGetShape () const
 Access to the run-time shape object. Will convert from ShapeSettings object if needed.
 
void SetShape (const Shape *inShape)
 
bool HasMassProperties () const
 Check if the mass properties of this body will be calculated (only relevant for kinematic or dynamic objects that need a MotionProperties object)
 
MassProperties GetMassProperties () const
 Calculate (or return when overridden) the mass and inertia for this body.
 
void SaveBinaryState (StreamOut &inStream) const
 Saves the state of this object in binary form to inStream. Doesn't store the shape nor the group filter.
 
void RestoreBinaryState (StreamIn &inStream)
 Restore the state of this object from inStream. Doesn't restore the shape nor the group filter.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap *ioShapeMap, MaterialToIDMap *ioMaterialMap, GroupFilterToIDMap *ioGroupFilterMap) const
 
+ + + + +

+Static Public Member Functions

static BCSResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap, IDToGroupFilterMap &ioGroupFilterMap)
 Restore body creation settings, its shape, materials and group filter. Pass in an empty map in ioShapeMap / ioMaterialMap / ioGroupFilterMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

RVec3 mPosition = RVec3::sZero()
 Position of the body (not of the center of mass)
 
Quat mRotation = Quat::sIdentity()
 Rotation of the body.
 
Vec3 mLinearVelocity = Vec3::sZero()
 World space linear velocity of the center of mass (m/s)
 
Vec3 mAngularVelocity = Vec3::sZero()
 World space angular velocity (rad/s)
 
uint64 mUserData = 0
 User data value (can be used by application)
 
Collision settings
ObjectLayer mObjectLayer = 0
 The collision layer this body belongs to (determines if two objects can collide)
 
CollisionGroup mCollisionGroup
 The collision group this body belongs to (determines if two objects can collide)
 
Simulation properties
EMotionType mMotionType = EMotionType::Dynamic
 Motion type, determines if the object is static, dynamic or kinematic.
 
EAllowedDOFs mAllowedDOFs = EAllowedDOFs::All
 Which degrees of freedom this body has (can be used to limit simulation to 2D)
 
bool mAllowDynamicOrKinematic = false
 When this body is created as static, this setting tells the system to create a MotionProperties object so that the object can be switched to kinematic or dynamic.
 
bool mIsSensor = false
 If this body is a sensor. A sensor will receive collision callbacks, but will not cause any collision responses and can be used as a trigger volume. See description at Body::SetIsSensor.
 
bool mCollideKinematicVsNonDynamic = false
 If kinematic objects can generate contact points against other kinematic or static objects. See description at Body::SetCollideKinematicVsNonDynamic.
 
bool mUseManifoldReduction = true
 If this body should use manifold reduction (see description at Body::SetUseManifoldReduction)
 
bool mApplyGyroscopicForce = false
 Set to indicate that the gyroscopic force should be applied to this body (aka Dzhanibekov effect, see https://en.wikipedia.org/wiki/Tennis_racket_theorem)
 
EMotionQuality mMotionQuality = EMotionQuality::Discrete
 Motion quality, or how well it detects collisions when it has a high velocity.
 
bool mEnhancedInternalEdgeRemoval = false
 Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.
 
bool mAllowSleeping = true
 If this body can go to sleep or not.
 
float mFriction = 0.2f
 Friction of the body (dimensionless number, usually between 0 and 1, 0 = no friction, 1 = friction force equals force that presses the two bodies together). Note that bodies can have negative friction but the combined friction (see PhysicsSystem::SetCombineFriction) should never go below zero.
 
float mRestitution = 0.0f
 Restitution of body (dimensionless number, usually between 0 and 1, 0 = completely inelastic collision response, 1 = completely elastic collision response). Note that bodies can have negative restitution but the combined restitution (see PhysicsSystem::SetCombineRestitution) should never go below zero.
 
float mLinearDamping = 0.05f
 Linear damping: dv/dt = -c * v. c must be between 0 and 1 but is usually close to 0.
 
float mAngularDamping = 0.05f
 Angular damping: dw/dt = -c * w. c must be between 0 and 1 but is usually close to 0.
 
float mMaxLinearVelocity = 500.0f
 Maximum linear velocity that this body can reach (m/s)
 
float mMaxAngularVelocity = 0.25f * JPH_PI * 60.0f
 Maximum angular velocity that this body can reach (rad/s)
 
float mGravityFactor = 1.0f
 Value to multiply gravity with for this body.
 
uint mNumVelocityStepsOverride = 0
 Used only when this body is dynamic and colliding. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when this body is dynamic and colliding. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
+ + + + + + + + + + +

Mass properties of the body (by default calculated by the shape)

EOverrideMassProperties mOverrideMassProperties = EOverrideMassProperties::CalculateMassAndInertia
 Determines how mMassPropertiesOverride will be used.
 
float mInertiaMultiplier = 1.0f
 When calculating the inertia (not when it is provided) the calculated inertia will be multiplied by this value.
 
MassProperties mMassPropertiesOverride
 Contains replacement mass settings which override the automatically calculated values.
 
+

Detailed Description

+

Settings for constructing a rigid body.

+

Member Typedef Documentation

+ +

◆ BCSResult

+ + + +

◆ GroupFilterToIDMap

+ + + +

◆ IDToGroupFilterMap

+ + + +

◆ IDToMaterialMap

+ + + +

◆ IDToShapeMap

+ + + +

◆ MaterialToIDMap

+ + + +

◆ ShapeToIDMap

+ + +

Constructor & Destructor Documentation

+ +

◆ BodyCreationSettings() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
BodyCreationSettings::BodyCreationSettings ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ BodyCreationSettings() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BodyCreationSettings::BodyCreationSettings (const ShapeSettingsinShape,
RVec3Arg inPosition,
QuatArg inRotation,
EMotionType inMotionType,
ObjectLayer inObjectLayer 
)
+
+inline
+
+ +
+
+ +

◆ BodyCreationSettings() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BodyCreationSettings::BodyCreationSettings (const ShapeinShape,
RVec3Arg inPosition,
QuatArg inRotation,
EMotionType inMotionType,
ObjectLayer inObjectLayer 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ ConvertShapeSettings()

+ +
+
+ + + + + + + +
Shape::ShapeResult BodyCreationSettings::ConvertShapeSettings ()
+
+ +

Convert ShapeSettings object into a Shape object. This will free the ShapeSettings object and make the object ready for runtime. Serialization is no longer possible after this.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + + + +
MassProperties BodyCreationSettings::GetMassProperties () const
+
+ +

Calculate (or return when overridden) the mass and inertia for this body.

+ +
+
+ +

◆ GetShape()

+ +
+
+ + + + + + + +
const Shape * BodyCreationSettings::GetShape () const
+
+ +

Access to the run-time shape object. Will convert from ShapeSettings object if needed.

+ +
+
+ +

◆ GetShapeSettings()

+ +
+
+ + + + + +
+ + + + + + + +
const ShapeSettings * BodyCreationSettings::GetShapeSettings () const
+
+inline
+
+ +

Access to the shape settings object. This contains serializable (non-runtime optimized) information about the Shape.

+ +
+
+ +

◆ HasMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
bool BodyCreationSettings::HasMassProperties () const
+
+inline
+
+ +

Check if the mass properties of this body will be calculated (only relevant for kinematic or dynamic objects that need a MotionProperties object)

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void BodyCreationSettings::RestoreBinaryState (StreamIninStream)
+
+ +

Restore the state of this object from inStream. Doesn't restore the shape nor the group filter.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void BodyCreationSettings::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the state of this object in binary form to inStream. Doesn't store the shape nor the group filter.

+ +
+
+ +

◆ SaveWithChildren()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BodyCreationSettings::SaveWithChildren (StreamOutinStream,
ShapeToIDMapioShapeMap,
MaterialToIDMapioMaterialMap,
GroupFilterToIDMapioGroupFilterMap 
) const
+
+

Save body creation settings, its shape, materials and group filter. Pass in an empty map in ioShapeMap / ioMaterialMap / ioGroupFilterMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates. Pass nullptr to ioShapeMap and ioMaterial map to skip saving shapes Pass nullptr to ioGroupFilterMap to skip saving group filters

+ +
+
+ +

◆ SetShape()

+ +
+
+ + + + + +
+ + + + + + + + +
void BodyCreationSettings::SetShape (const ShapeinShape)
+
+inline
+
+ +
+
+ +

◆ SetShapeSettings()

+ +
+
+ + + + + +
+ + + + + + + + +
void BodyCreationSettings::SetShapeSettings (const ShapeSettingsinShape)
+
+inline
+
+ +
+
+ +

◆ sRestoreWithChildren()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BodyCreationSettings::BCSResult BodyCreationSettings::sRestoreWithChildren (StreamIninStream,
IDToShapeMapioShapeMap,
IDToMaterialMapioMaterialMap,
IDToGroupFilterMapioGroupFilterMap 
)
+
+static
+
+ +

Restore body creation settings, its shape, materials and group filter. Pass in an empty map in ioShapeMap / ioMaterialMap / ioGroupFilterMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.

+ +
+
+

Member Data Documentation

+ +

◆ mAllowDynamicOrKinematic

+ +
+
+ + + + +
bool BodyCreationSettings::mAllowDynamicOrKinematic = false
+
+ +

When this body is created as static, this setting tells the system to create a MotionProperties object so that the object can be switched to kinematic or dynamic.

+ +
+
+ +

◆ mAllowedDOFs

+ +
+
+ + + + +
EAllowedDOFs BodyCreationSettings::mAllowedDOFs = EAllowedDOFs::All
+
+ +

Which degrees of freedom this body has (can be used to limit simulation to 2D)

+ +
+
+ +

◆ mAllowSleeping

+ +
+
+ + + + +
bool BodyCreationSettings::mAllowSleeping = true
+
+ +

If this body can go to sleep or not.

+ +
+
+ +

◆ mAngularDamping

+ +
+
+ + + + +
float BodyCreationSettings::mAngularDamping = 0.05f
+
+ +

Angular damping: dw/dt = -c * w. c must be between 0 and 1 but is usually close to 0.

+ +
+
+ +

◆ mAngularVelocity

+ +
+
+ + + + +
Vec3 BodyCreationSettings::mAngularVelocity = Vec3::sZero()
+
+ +

World space angular velocity (rad/s)

+ +
+
+ +

◆ mApplyGyroscopicForce

+ +
+
+ + + + +
bool BodyCreationSettings::mApplyGyroscopicForce = false
+
+ +

Set to indicate that the gyroscopic force should be applied to this body (aka Dzhanibekov effect, see https://en.wikipedia.org/wiki/Tennis_racket_theorem)

+ +
+
+ +

◆ mCollideKinematicVsNonDynamic

+ +
+
+ + + + +
bool BodyCreationSettings::mCollideKinematicVsNonDynamic = false
+
+ +

If kinematic objects can generate contact points against other kinematic or static objects. See description at Body::SetCollideKinematicVsNonDynamic.

+ +
+
+ +

◆ mCollisionGroup

+ +
+
+ + + + +
CollisionGroup BodyCreationSettings::mCollisionGroup
+
+ +

The collision group this body belongs to (determines if two objects can collide)

+ +
+
+ +

◆ mEnhancedInternalEdgeRemoval

+ +
+
+ + + + +
bool BodyCreationSettings::mEnhancedInternalEdgeRemoval = false
+
+ +

Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.

+ +
+
+ +

◆ mFriction

+ +
+
+ + + + +
float BodyCreationSettings::mFriction = 0.2f
+
+ +

Friction of the body (dimensionless number, usually between 0 and 1, 0 = no friction, 1 = friction force equals force that presses the two bodies together). Note that bodies can have negative friction but the combined friction (see PhysicsSystem::SetCombineFriction) should never go below zero.

+ +
+
+ +

◆ mGravityFactor

+ +
+
+ + + + +
float BodyCreationSettings::mGravityFactor = 1.0f
+
+ +

Value to multiply gravity with for this body.

+ +
+
+ +

◆ mInertiaMultiplier

+ +
+
+ + + + +
float BodyCreationSettings::mInertiaMultiplier = 1.0f
+
+ +

When calculating the inertia (not when it is provided) the calculated inertia will be multiplied by this value.

+ +
+
+ +

◆ mIsSensor

+ +
+
+ + + + +
bool BodyCreationSettings::mIsSensor = false
+
+ +

If this body is a sensor. A sensor will receive collision callbacks, but will not cause any collision responses and can be used as a trigger volume. See description at Body::SetIsSensor.

+ +
+
+ +

◆ mLinearDamping

+ +
+
+ + + + +
float BodyCreationSettings::mLinearDamping = 0.05f
+
+ +

Linear damping: dv/dt = -c * v. c must be between 0 and 1 but is usually close to 0.

+ +
+
+ +

◆ mLinearVelocity

+ +
+
+ + + + +
Vec3 BodyCreationSettings::mLinearVelocity = Vec3::sZero()
+
+ +

World space linear velocity of the center of mass (m/s)

+ +
+
+ +

◆ mMassPropertiesOverride

+ +
+
+ + + + +
MassProperties BodyCreationSettings::mMassPropertiesOverride
+
+ +

Contains replacement mass settings which override the automatically calculated values.

+ +
+
+ +

◆ mMaxAngularVelocity

+ +
+
+ + + + +
float BodyCreationSettings::mMaxAngularVelocity = 0.25f * JPH_PI * 60.0f
+
+ +

Maximum angular velocity that this body can reach (rad/s)

+ +
+
+ +

◆ mMaxLinearVelocity

+ +
+
+ + + + +
float BodyCreationSettings::mMaxLinearVelocity = 500.0f
+
+ +

Maximum linear velocity that this body can reach (m/s)

+ +
+
+ +

◆ mMotionQuality

+ +
+
+ + + + +
EMotionQuality BodyCreationSettings::mMotionQuality = EMotionQuality::Discrete
+
+ +

Motion quality, or how well it detects collisions when it has a high velocity.

+ +
+
+ +

◆ mMotionType

+ +
+
+ + + + +
EMotionType BodyCreationSettings::mMotionType = EMotionType::Dynamic
+
+ +

Motion type, determines if the object is static, dynamic or kinematic.

+ +
+
+ +

◆ mNumPositionStepsOverride

+ +
+
+ + + + +
uint BodyCreationSettings::mNumPositionStepsOverride = 0
+
+ +

Used only when this body is dynamic and colliding. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.

+ +
+
+ +

◆ mNumVelocityStepsOverride

+ +
+
+ + + + +
uint BodyCreationSettings::mNumVelocityStepsOverride = 0
+
+ +

Used only when this body is dynamic and colliding. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.

+ +
+
+ +

◆ mObjectLayer

+ +
+
+ + + + +
ObjectLayer BodyCreationSettings::mObjectLayer = 0
+
+ +

The collision layer this body belongs to (determines if two objects can collide)

+ +
+
+ +

◆ mOverrideMassProperties

+ +
+
+ + + + +
EOverrideMassProperties BodyCreationSettings::mOverrideMassProperties = EOverrideMassProperties::CalculateMassAndInertia
+
+ +

Determines how mMassPropertiesOverride will be used.

+ +
+
+ +

◆ mPosition

+ +
+
+ + + + +
RVec3 BodyCreationSettings::mPosition = RVec3::sZero()
+
+ +

Position of the body (not of the center of mass)

+ +
+
+ +

◆ mRestitution

+ +
+
+ + + + +
float BodyCreationSettings::mRestitution = 0.0f
+
+ +

Restitution of body (dimensionless number, usually between 0 and 1, 0 = completely inelastic collision response, 1 = completely elastic collision response). Note that bodies can have negative restitution but the combined restitution (see PhysicsSystem::SetCombineRestitution) should never go below zero.

+ +
+
+ +

◆ mRotation

+ +
+
+ + + + +
Quat BodyCreationSettings::mRotation = Quat::sIdentity()
+
+ +

Rotation of the body.

+ +
+
+ +

◆ mUseManifoldReduction

+ +
+
+ + + + +
bool BodyCreationSettings::mUseManifoldReduction = true
+
+ +

If this body should use manifold reduction (see description at Body::SetUseManifoldReduction)

+ +
+
+ +

◆ mUserData

+ +
+
+ + + + +
uint64 BodyCreationSettings::mUserData = 0
+
+ +

User data value (can be used by application)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_body_creation_settings.js b/class_body_creation_settings.js new file mode 100644 index 000000000..87e2beb5a --- /dev/null +++ b/class_body_creation_settings.js @@ -0,0 +1,52 @@ +var class_body_creation_settings = +[ + [ "BCSResult", "class_body_creation_settings.html#a3d7ae6cc90958bea23ab0383b6b90cc1", null ], + [ "GroupFilterToIDMap", "class_body_creation_settings.html#a1b23e021697957516526baf59f549f0e", null ], + [ "IDToGroupFilterMap", "class_body_creation_settings.html#a0489d76cdd3ec9368ef0edfd99878c92", null ], + [ "IDToMaterialMap", "class_body_creation_settings.html#ada70b5de55b8cc6ea9f93e67b0d98227", null ], + [ "IDToShapeMap", "class_body_creation_settings.html#a38d63e9e7f85d16ecca1db06ca0dabc8", null ], + [ "MaterialToIDMap", "class_body_creation_settings.html#a2cb4b24152969669d6f2193e2f9f7b76", null ], + [ "ShapeToIDMap", "class_body_creation_settings.html#af26faa1cd67cfc60a3f9ebe90873f446", null ], + [ "BodyCreationSettings", "class_body_creation_settings.html#aec5d90393812f5354e8505f70f4b00c9", null ], + [ "BodyCreationSettings", "class_body_creation_settings.html#a6926eec582c4902d3040637ff5ff2332", null ], + [ "BodyCreationSettings", "class_body_creation_settings.html#a807ecf473d73ab8a468ee4126f5ac79b", null ], + [ "ConvertShapeSettings", "class_body_creation_settings.html#ac3bf8e14319df094679f6644f6b80e48", null ], + [ "GetMassProperties", "class_body_creation_settings.html#acce5eaf6c72e325d23d8d791039c6954", null ], + [ "GetShape", "class_body_creation_settings.html#ab668ffb9415e2e9d8790bb532b83bf53", null ], + [ "GetShapeSettings", "class_body_creation_settings.html#a35093b07ed1677438e4f3d004d0d8a2e", null ], + [ "HasMassProperties", "class_body_creation_settings.html#a9386fbbcc940bfb89b8442f342748e32", null ], + [ "RestoreBinaryState", "class_body_creation_settings.html#a272d105640dc6f4376a064a8ebe2c343", null ], + [ "SaveBinaryState", "class_body_creation_settings.html#aabf81d68f5c180341800d69b401dddee", null ], + [ "SaveWithChildren", "class_body_creation_settings.html#a1fd7d70d7e594158940a126d69c64a77", null ], + [ "SetShape", "class_body_creation_settings.html#a0c74dee7b551bce3c0a7477283f27145", null ], + [ "SetShapeSettings", "class_body_creation_settings.html#af8e4ddec15be3ad2ba87e99139fec1e5", null ], + [ "mAllowDynamicOrKinematic", "class_body_creation_settings.html#afe686c8d207fb99499a89e19d1780158", null ], + [ "mAllowedDOFs", "class_body_creation_settings.html#a871979dfec392313a4fe00760ff9ae07", null ], + [ "mAllowSleeping", "class_body_creation_settings.html#a23d76509d285d785fbc84c7573343be8", null ], + [ "mAngularDamping", "class_body_creation_settings.html#ac900bf31bcafa1dd0d5dfe42969687dd", null ], + [ "mAngularVelocity", "class_body_creation_settings.html#a390f9572645214782004c8296f0e90cf", null ], + [ "mApplyGyroscopicForce", "class_body_creation_settings.html#a4bfa019a5f9d834392c7c8243c885396", null ], + [ "mCollideKinematicVsNonDynamic", "class_body_creation_settings.html#a824e71e8ce2673afc3a7716411016ee6", null ], + [ "mCollisionGroup", "class_body_creation_settings.html#ae0a1420ed9449ccae2b1b58715f6fe41", null ], + [ "mEnhancedInternalEdgeRemoval", "class_body_creation_settings.html#a3ff57f2892a515d062718701434601c9", null ], + [ "mFriction", "class_body_creation_settings.html#a43650f269088d8351a1ad5a1da8824c0", null ], + [ "mGravityFactor", "class_body_creation_settings.html#a428f8482f140f5bd09e542d6d9c699c2", null ], + [ "mInertiaMultiplier", "class_body_creation_settings.html#a4bd85f028390274d79f291ea20f7c9f5", null ], + [ "mIsSensor", "class_body_creation_settings.html#ad327b3b479e63fe5bfbecf0510d69d44", null ], + [ "mLinearDamping", "class_body_creation_settings.html#acda69c9b63d5be31be48b13059d3d438", null ], + [ "mLinearVelocity", "class_body_creation_settings.html#a31f029773df5278a498c417d0a7e2c83", null ], + [ "mMassPropertiesOverride", "class_body_creation_settings.html#af7f022cb3042750da187b24e8a242c99", null ], + [ "mMaxAngularVelocity", "class_body_creation_settings.html#a86ee89ede6a31b9f8df4e9c257051119", null ], + [ "mMaxLinearVelocity", "class_body_creation_settings.html#a54911a3a04da2c077dd27c5f8bca960d", null ], + [ "mMotionQuality", "class_body_creation_settings.html#a66c8700dfa9204a90b9bd7c7db50e85f", null ], + [ "mMotionType", "class_body_creation_settings.html#ad8fc3740b604486c0b030b2d9d381b2f", null ], + [ "mNumPositionStepsOverride", "class_body_creation_settings.html#a9caedbea102f60fadfbf1e96fc8cde85", null ], + [ "mNumVelocityStepsOverride", "class_body_creation_settings.html#a84ee0ecf67e26c9ffffe42ad435b8ec1", null ], + [ "mObjectLayer", "class_body_creation_settings.html#a976a222257c112edca9c43805e1331cd", null ], + [ "mOverrideMassProperties", "class_body_creation_settings.html#aaefa0f471f73fbfaf0f288e56e20b384", null ], + [ "mPosition", "class_body_creation_settings.html#a71bcd0c1b8798b78246f3ccb9c2ab637", null ], + [ "mRestitution", "class_body_creation_settings.html#ad248781dc0ad8671c19af02106c9f054", null ], + [ "mRotation", "class_body_creation_settings.html#a8b4eaa2eceb1493a1a70d3bef422e3ad", null ], + [ "mUseManifoldReduction", "class_body_creation_settings.html#a50e9e038bb9df7acfe71dbb56480271c", null ], + [ "mUserData", "class_body_creation_settings.html#aca747cc540a625d75c5a5abf0ad68216", null ] +]; \ No newline at end of file diff --git a/class_body_creation_settings.png b/class_body_creation_settings.png new file mode 100644 index 000000000..1481651b4 Binary files /dev/null and b/class_body_creation_settings.png differ diff --git a/class_body_draw_filter-members.html b/class_body_draw_filter-members.html new file mode 100644 index 000000000..2f5ec4ce8 --- /dev/null +++ b/class_body_draw_filter-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyDrawFilter Member List
+
+
+ +

This is the complete list of members for BodyDrawFilter, including all inherited members.

+ + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldDraw(const Body &inBody) constBodyDrawFilterinlinevirtual
~BodyDrawFilter()=defaultBodyDrawFiltervirtual
+
+ + + + diff --git a/class_body_draw_filter.html b/class_body_draw_filter.html new file mode 100644 index 000000000..3693fa0bf --- /dev/null +++ b/class_body_draw_filter.html @@ -0,0 +1,210 @@ + + + + + + + +Jolt Physics: BodyDrawFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyDrawFilter Class Reference
+
+
+ +

Class function to filter out bodies for debug rendering, returns true if body should be rendered. + More...

+ +

#include <BodyFilter.h>

+
+Inheritance diagram for BodyDrawFilter:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~BodyDrawFilter ()=default
 Destructor.
 
virtual bool ShouldDraw (const Body &inBody) const
 Filter function. Returns true if inBody should be rendered.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Class function to filter out bodies for debug rendering, returns true if body should be rendered.

+

Constructor & Destructor Documentation

+ +

◆ ~BodyDrawFilter()

+ +
+
+ + + + + +
+ + + + + + + +
virtual BodyDrawFilter::~BodyDrawFilter ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldDraw()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool BodyDrawFilter::ShouldDraw (const BodyinBody) const
+
+inlinevirtual
+
+ +

Filter function. Returns true if inBody should be rendered.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_draw_filter.js b/class_body_draw_filter.js new file mode 100644 index 000000000..f4870bd72 --- /dev/null +++ b/class_body_draw_filter.js @@ -0,0 +1,5 @@ +var class_body_draw_filter = +[ + [ "~BodyDrawFilter", "class_body_draw_filter.html#af5f4640284a83886f0896d313126ad6d", null ], + [ "ShouldDraw", "class_body_draw_filter.html#a46dc16be92346884c4c857af56763435", null ] +]; \ No newline at end of file diff --git a/class_body_draw_filter.png b/class_body_draw_filter.png new file mode 100644 index 000000000..c7326632f Binary files /dev/null and b/class_body_draw_filter.png differ diff --git a/class_body_filter-members.html b/class_body_filter-members.html new file mode 100644 index 000000000..cd19e566d --- /dev/null +++ b/class_body_filter-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyFilter Member List
+
+
+ +

This is the complete list of members for BodyFilter, including all inherited members.

+ + + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(const BodyID &inBodyID) constBodyFilterinlinevirtual
ShouldCollideLocked(const Body &inBody) constBodyFilterinlinevirtual
~BodyFilter()=defaultBodyFiltervirtual
+
+ + + + diff --git a/class_body_filter.html b/class_body_filter.html new file mode 100644 index 000000000..51e264754 --- /dev/null +++ b/class_body_filter.html @@ -0,0 +1,248 @@ + + + + + + + +Jolt Physics: BodyFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyFilter Class Reference
+
+
+ +

Class function to filter out bodies, returns true if test should collide with body. + More...

+ +

#include <BodyFilter.h>

+
+Inheritance diagram for BodyFilter:
+
+
+ + +NonCopyable +IgnoreMultipleBodiesFilter +IgnoreSingleBodyFilter +IgnoreSingleBodyFilterChained + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~BodyFilter ()=default
 Destructor.
 
virtual bool ShouldCollide (const BodyID &inBodyID) const
 Filter function. Returns true if we should collide with inBodyID.
 
virtual bool ShouldCollideLocked (const Body &inBody) const
 Filter function. Returns true if we should collide with inBody (this is called after the body is locked and makes it possible to filter based on body members)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Class function to filter out bodies, returns true if test should collide with body.

+

Constructor & Destructor Documentation

+ +

◆ ~BodyFilter()

+ +
+
+ + + + + +
+ + + + + + + +
virtual BodyFilter::~BodyFilter ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool BodyFilter::ShouldCollide (const BodyIDinBodyID) const
+
+inlinevirtual
+
+ +

Filter function. Returns true if we should collide with inBodyID.

+ +

Reimplemented in IgnoreSingleBodyFilter, IgnoreMultipleBodiesFilter, and IgnoreSingleBodyFilterChained.

+ +
+
+ +

◆ ShouldCollideLocked()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool BodyFilter::ShouldCollideLocked (const BodyinBody) const
+
+inlinevirtual
+
+ +

Filter function. Returns true if we should collide with inBody (this is called after the body is locked and makes it possible to filter based on body members)

+ +

Reimplemented in IgnoreSingleBodyFilterChained.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_filter.js b/class_body_filter.js new file mode 100644 index 000000000..85727ee1e --- /dev/null +++ b/class_body_filter.js @@ -0,0 +1,6 @@ +var class_body_filter = +[ + [ "~BodyFilter", "class_body_filter.html#a8a5a1a0ff7c5f292c8e90b0648fd4f9b", null ], + [ "ShouldCollide", "class_body_filter.html#af6f1c46fdb171ad70570c1ca83b0eab7", null ], + [ "ShouldCollideLocked", "class_body_filter.html#a1236e4cc531ca2268fb4fbb0d2c3e8f6", null ] +]; \ No newline at end of file diff --git a/class_body_filter.png b/class_body_filter.png new file mode 100644 index 000000000..75181f178 Binary files /dev/null and b/class_body_filter.png differ diff --git a/class_body_i_d-members.html b/class_body_i_d-members.html new file mode 100644 index 000000000..ad375bf72 --- /dev/null +++ b/class_body_i_d-members.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyID Member List
+
+
+ +

This is the complete list of members for BodyID, including all inherited members.

+ + + + + + + + + + + + + + + + +
BodyID()BodyIDinline
BodyID(uint32 inID)BodyIDinlineexplicit
BodyID(uint32 inID, uint8 inSequenceNumber)BodyIDinlineexplicit
cBroadPhaseBitBodyIDstatic
cInvalidBodyIDBodyIDstatic
cMaxBodyIndexBodyIDstatic
cMaxSequenceNumberBodyIDstatic
GetIndex() constBodyIDinline
GetIndexAndSequenceNumber() constBodyIDinline
GetSequenceNumber() constBodyIDinline
IsInvalid() constBodyIDinline
operator!=(const BodyID &inRHS) constBodyIDinline
operator<(const BodyID &inRHS) constBodyIDinline
operator==(const BodyID &inRHS) constBodyIDinline
operator>(const BodyID &inRHS) constBodyIDinline
+
+ + + + diff --git a/class_body_i_d.html b/class_body_i_d.html new file mode 100644 index 000000000..bb715d4f8 --- /dev/null +++ b/class_body_i_d.html @@ -0,0 +1,590 @@ + + + + + + + +Jolt Physics: BodyID Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyID Class Reference
+
+
+ +

ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding race conditions. + More...

+ +

#include <BodyID.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BodyID ()
 Construct invalid body ID.
 
 BodyID (uint32 inID)
 Construct from index and sequence number combined in a single uint32 (use with care!)
 
 BodyID (uint32 inID, uint8 inSequenceNumber)
 Construct from index and sequence number.
 
uint32 GetIndex () const
 Get index in body array.
 
uint8 GetSequenceNumber () const
 
uint32 GetIndexAndSequenceNumber () const
 Returns the index and sequence number combined in an uint32.
 
bool IsInvalid () const
 Check if the ID is valid.
 
bool operator== (const BodyID &inRHS) const
 Equals check.
 
bool operator!= (const BodyID &inRHS) const
 Not equals check.
 
bool operator< (const BodyID &inRHS) const
 Smaller than operator, can be used for sorting bodies.
 
bool operator> (const BodyID &inRHS) const
 Greater than operator, can be used for sorting bodies.
 
+ + + + + + + + + + + + + +

+Static Public Attributes

static JPH_OVERRIDE_NEW_DELETE constexpr uint32 cInvalidBodyID = 0xffffffff
 The value for an invalid body ID.
 
static constexpr uint32 cBroadPhaseBit = 0x00800000
 This bit is used by the broadphase.
 
static constexpr uint32 cMaxBodyIndex = 0x7fffff
 Maximum value for body index (also the maximum amount of bodies supported - 1)
 
static constexpr uint8 cMaxSequenceNumber = 0xff
 Maximum value for the sequence number.
 
+

Detailed Description

+

ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding race conditions.

+

Constructor & Destructor Documentation

+ +

◆ BodyID() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
BodyID::BodyID ()
+
+inline
+
+ +

Construct invalid body ID.

+ +
+
+ +

◆ BodyID() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
BodyID::BodyID (uint32 inID)
+
+inlineexplicit
+
+ +

Construct from index and sequence number combined in a single uint32 (use with care!)

+ +
+
+ +

◆ BodyID() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
BodyID::BodyID (uint32 inID,
uint8 inSequenceNumber 
)
+
+inlineexplicit
+
+ +

Construct from index and sequence number.

+ +
+
+

Member Function Documentation

+ +

◆ GetIndex()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 BodyID::GetIndex () const
+
+inline
+
+ +

Get index in body array.

+ +
+
+ +

◆ GetIndexAndSequenceNumber()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 BodyID::GetIndexAndSequenceNumber () const
+
+inline
+
+ +

Returns the index and sequence number combined in an uint32.

+ +
+
+ +

◆ GetSequenceNumber()

+ +
+
+ + + + + +
+ + + + + + + +
uint8 BodyID::GetSequenceNumber () const
+
+inline
+
+

Get sequence number of body. The sequence number can be used to check if a body ID with the same body index has been reused by another body. It is mainly used in multi threaded situations where a body is removed and its body index is immediately reused by a body created from another thread. Functions querying the broadphase can (after acquiring a body lock) detect that the body has been removed (we assume that this won't happen more than 128 times in a row).

+ +
+
+ +

◆ IsInvalid()

+ +
+
+ + + + + +
+ + + + + + + +
bool BodyID::IsInvalid () const
+
+inline
+
+ +

Check if the ID is valid.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BodyID::operator!= (const BodyIDinRHS) const
+
+inline
+
+ +

Not equals check.

+ +
+
+ +

◆ operator<()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BodyID::operator< (const BodyIDinRHS) const
+
+inline
+
+ +

Smaller than operator, can be used for sorting bodies.

+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BodyID::operator== (const BodyIDinRHS) const
+
+inline
+
+ +

Equals check.

+ +
+
+ +

◆ operator>()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BodyID::operator> (const BodyIDinRHS) const
+
+inline
+
+ +

Greater than operator, can be used for sorting bodies.

+ +
+
+

Member Data Documentation

+ +

◆ cBroadPhaseBit

+ +
+
+ + + + + +
+ + + + +
constexpr uint32 BodyID::cBroadPhaseBit = 0x00800000
+
+staticconstexpr
+
+ +

This bit is used by the broadphase.

+ +
+
+ +

◆ cInvalidBodyID

+ +
+
+ + + + + +
+ + + + +
JPH_OVERRIDE_NEW_DELETE constexpr uint32 BodyID::cInvalidBodyID = 0xffffffff
+
+staticconstexpr
+
+ +

The value for an invalid body ID.

+ +
+
+ +

◆ cMaxBodyIndex

+ +
+
+ + + + + +
+ + + + +
constexpr uint32 BodyID::cMaxBodyIndex = 0x7fffff
+
+staticconstexpr
+
+ +

Maximum value for body index (also the maximum amount of bodies supported - 1)

+ +
+
+ +

◆ cMaxSequenceNumber

+ +
+
+ + + + + +
+ + + + +
constexpr uint8 BodyID::cMaxSequenceNumber = 0xff
+
+staticconstexpr
+
+ +

Maximum value for the sequence number.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_i_d.js b/class_body_i_d.js new file mode 100644 index 000000000..064b43379 --- /dev/null +++ b/class_body_i_d.js @@ -0,0 +1,14 @@ +var class_body_i_d = +[ + [ "BodyID", "class_body_i_d.html#a43c06446ee70f43cb4516600cb6285f4", null ], + [ "BodyID", "class_body_i_d.html#a4e601acab1a7ff5d5742673f8bd36530", null ], + [ "BodyID", "class_body_i_d.html#a702d36c88f9ee8f41b349330e30b46b7", null ], + [ "GetIndex", "class_body_i_d.html#ae7455ec3e8eec8ec963fb99ea4176fd6", null ], + [ "GetIndexAndSequenceNumber", "class_body_i_d.html#aaff1cc7e76b557c1ce750bea2286290c", null ], + [ "GetSequenceNumber", "class_body_i_d.html#af327d342cd7e2a6be188bc836270ba51", null ], + [ "IsInvalid", "class_body_i_d.html#a0967deb4e1f200037bf32e14c4fec9e1", null ], + [ "operator!=", "class_body_i_d.html#a7bdbfe3abcab2c0d393187423a40c9a4", null ], + [ "operator<", "class_body_i_d.html#a198e4c4fe4c671e614e4fa664a004b9d", null ], + [ "operator==", "class_body_i_d.html#a717e575a515906ef45ab9f152175e6f4", null ], + [ "operator>", "class_body_i_d.html#a97ad33ad13e398831574a7a5bb97e741", null ] +]; \ No newline at end of file diff --git a/class_body_interface-members.html b/class_body_interface-members.html new file mode 100644 index 000000000..8f179e5ea --- /dev/null +++ b/class_body_interface-members.html @@ -0,0 +1,205 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyInterface Member List
+
+
+ +

This is the complete list of members for BodyInterface, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActivateBodies(const BodyID *inBodyIDs, int inNumber)BodyInterface
ActivateBodiesInAABox(const AABox &inBox, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter)BodyInterface
ActivateBody(const BodyID &inBodyID)BodyInterface
ActivateConstraint(const TwoBodyConstraint *inConstraint)BodyInterface
AddAngularImpulse(const BodyID &inBodyID, Vec3Arg inAngularImpulse)BodyInterface
AddBodiesAbort(BodyID *ioBodies, int inNumber, AddState inAddState)BodyInterface
AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState, EActivation inActivationMode)BodyInterface
AddBodiesPrepare(BodyID *ioBodies, int inNumber)BodyInterface
AddBody(const BodyID &inBodyID, EActivation inActivationMode)BodyInterface
AddForce(const BodyID &inBodyID, Vec3Arg inForce, EActivation inActivationMode=EActivation::Activate)BodyInterface
AddForce(const BodyID &inBodyID, Vec3Arg inForce, RVec3Arg inPoint, EActivation inActivationMode=EActivation::Activate)BodyInterface
AddForceAndTorque(const BodyID &inBodyID, Vec3Arg inForce, Vec3Arg inTorque, EActivation inActivationMode=EActivation::Activate)BodyInterface
AddImpulse(const BodyID &inBodyID, Vec3Arg inImpulse)BodyInterface
AddImpulse(const BodyID &inBodyID, Vec3Arg inImpulse, RVec3Arg inPoint)BodyInterface
AddLinearAndAngularVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity)BodyInterface
AddLinearVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity)BodyInterface
AddState typedefBodyInterface
AddTorque(const BodyID &inBodyID, Vec3Arg inTorque, EActivation inActivationMode=EActivation::Activate)BodyInterface
ApplyBuoyancyImpulse(const BodyID &inBodyID, RVec3Arg inSurfacePosition, Vec3Arg inSurfaceNormal, float inBuoyancy, float inLinearDrag, float inAngularDrag, Vec3Arg inFluidVelocity, Vec3Arg inGravity, float inDeltaTime)BodyInterface
AssignBodyID(Body *ioBody)BodyInterface
AssignBodyID(Body *ioBody, const BodyID &inBodyID)BodyInterface
CreateAndAddBody(const BodyCreationSettings &inSettings, EActivation inActivationMode)BodyInterface
CreateAndAddSoftBody(const SoftBodyCreationSettings &inSettings, EActivation inActivationMode)BodyInterface
CreateBody(const BodyCreationSettings &inSettings)BodyInterface
CreateBodyWithID(const BodyID &inBodyID, const BodyCreationSettings &inSettings)BodyInterface
CreateBodyWithoutID(const BodyCreationSettings &inSettings) constBodyInterface
CreateConstraint(const TwoBodyConstraintSettings *inSettings, const BodyID &inBodyID1, const BodyID &inBodyID2)BodyInterface
CreateSoftBody(const SoftBodyCreationSettings &inSettings)BodyInterface
CreateSoftBodyWithID(const BodyID &inBodyID, const SoftBodyCreationSettings &inSettings)BodyInterface
CreateSoftBodyWithoutID(const SoftBodyCreationSettings &inSettings) constBodyInterface
DeactivateBodies(const BodyID *inBodyIDs, int inNumber)BodyInterface
DeactivateBody(const BodyID &inBodyID)BodyInterface
DestroyBodies(const BodyID *inBodyIDs, int inNumber)BodyInterface
DestroyBody(const BodyID &inBodyID)BodyInterface
DestroyBodyWithoutID(Body *inBody) constBodyInterface
GetAngularVelocity(const BodyID &inBodyID) constBodyInterface
GetBodyType(const BodyID &inBodyID) constBodyInterface
GetCenterOfMassPosition(const BodyID &inBodyID) constBodyInterface
GetCenterOfMassTransform(const BodyID &inBodyID) constBodyInterface
GetFriction(const BodyID &inBodyID) constBodyInterface
GetGravityFactor(const BodyID &inBodyID) constBodyInterface
GetInverseInertia(const BodyID &inBodyID) constBodyInterface
GetLinearAndAngularVelocity(const BodyID &inBodyID, Vec3 &outLinearVelocity, Vec3 &outAngularVelocity) constBodyInterface
GetLinearVelocity(const BodyID &inBodyID) constBodyInterface
GetMaterial(const BodyID &inBodyID, const SubShapeID &inSubShapeID) constBodyInterface
GetMotionQuality(const BodyID &inBodyID) constBodyInterface
GetMotionType(const BodyID &inBodyID) constBodyInterface
GetObjectLayer(const BodyID &inBodyID) constBodyInterface
GetPointVelocity(const BodyID &inBodyID, RVec3Arg inPoint) constBodyInterface
GetPosition(const BodyID &inBodyID) constBodyInterface
GetPositionAndRotation(const BodyID &inBodyID, RVec3 &outPosition, Quat &outRotation) constBodyInterface
GetRestitution(const BodyID &inBodyID) constBodyInterface
GetRotation(const BodyID &inBodyID) constBodyInterface
GetShape(const BodyID &inBodyID) constBodyInterface
GetTransformedShape(const BodyID &inBodyID) constBodyInterface
GetUseManifoldReduction(const BodyID &inBodyID) constBodyInterface
GetUserData(const BodyID &inBodyID) constBodyInterface
GetWorldTransform(const BodyID &inBodyID) constBodyInterface
Init(BodyLockInterface &inBodyLockInterface, BodyManager &inBodyManager, BroadPhase &inBroadPhase)BodyInterfaceinline
InvalidateContactCache(const BodyID &inBodyID)BodyInterface
IsActive(const BodyID &inBodyID) constBodyInterface
IsAdded(const BodyID &inBodyID) constBodyInterface
MoveKinematic(const BodyID &inBodyID, RVec3Arg inTargetPosition, QuatArg inTargetRotation, float inDeltaTime)BodyInterface
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inPreviousCenterOfMass, bool inUpdateMassProperties, EActivation inActivationMode) constBodyInterface
operator=(const NonCopyable &)=deleteNonCopyable
RemoveBodies(BodyID *ioBodies, int inNumber)BodyInterface
RemoveBody(const BodyID &inBodyID)BodyInterface
ResetSleepTimer(const BodyID &inBodyID)BodyInterface
SetAngularVelocity(const BodyID &inBodyID, Vec3Arg inAngularVelocity)BodyInterface
SetFriction(const BodyID &inBodyID, float inFriction)BodyInterface
SetGravityFactor(const BodyID &inBodyID, float inGravityFactor)BodyInterface
SetLinearAndAngularVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity)BodyInterface
SetLinearVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity)BodyInterface
SetMotionQuality(const BodyID &inBodyID, EMotionQuality inMotionQuality)BodyInterface
SetMotionType(const BodyID &inBodyID, EMotionType inMotionType, EActivation inActivationMode)BodyInterface
SetObjectLayer(const BodyID &inBodyID, ObjectLayer inLayer)BodyInterface
SetPosition(const BodyID &inBodyID, RVec3Arg inPosition, EActivation inActivationMode)BodyInterface
SetPositionAndRotation(const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode)BodyInterface
SetPositionAndRotationWhenChanged(const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode)BodyInterface
SetPositionRotationAndVelocity(const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity)BodyInterface
SetRestitution(const BodyID &inBodyID, float inRestitution)BodyInterface
SetRotation(const BodyID &inBodyID, QuatArg inRotation, EActivation inActivationMode)BodyInterface
SetShape(const BodyID &inBodyID, const Shape *inShape, bool inUpdateMassProperties, EActivation inActivationMode) constBodyInterface
SetUseManifoldReduction(const BodyID &inBodyID, bool inUseReduction)BodyInterface
SetUserData(const BodyID &inBodyID, uint64 inUserData) constBodyInterface
UnassignBodyID(const BodyID &inBodyID)BodyInterface
UnassignBodyIDs(const BodyID *inBodyIDs, int inNumber, Body **outBodies)BodyInterface
+
+ + + + diff --git a/class_body_interface.html b/class_body_interface.html new file mode 100644 index 000000000..9c9f4de8d --- /dev/null +++ b/class_body_interface.html @@ -0,0 +1,2757 @@ + + + + + + + +Jolt Physics: BodyInterface Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyInterface Class Reference
+
+
+ +

#include <BodyInterface.h>

+
+Inheritance diagram for BodyInterface:
+
+
+ + +NonCopyable + +
+ + + + + +

+Public Types

using AddState = void *
 Add state handle, used to keep track of a batch of bodies while adding them to the PhysicsSystem.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void Init (BodyLockInterface &inBodyLockInterface, BodyManager &inBodyManager, BroadPhase &inBroadPhase)
 Initialize the interface (should only be called by PhysicsSystem)
 
BodyCreateBody (const BodyCreationSettings &inSettings)
 
BodyCreateSoftBody (const SoftBodyCreationSettings &inSettings)
 
BodyCreateBodyWithID (const BodyID &inBodyID, const BodyCreationSettings &inSettings)
 
BodyCreateSoftBodyWithID (const BodyID &inBodyID, const SoftBodyCreationSettings &inSettings)
 Create a soft body with specified ID. See comments at CreateBodyWithID.
 
BodyCreateBodyWithoutID (const BodyCreationSettings &inSettings) const
 
BodyCreateSoftBodyWithoutID (const SoftBodyCreationSettings &inSettings) const
 Advanced use only. Creates a body without specifying an ID. See comments at CreateBodyWithoutID.
 
void DestroyBodyWithoutID (Body *inBody) const
 
bool AssignBodyID (Body *ioBody)
 
bool AssignBodyID (Body *ioBody, const BodyID &inBodyID)
 
BodyUnassignBodyID (const BodyID &inBodyID)
 Advanced use only. See UnassignBodyIDs. Unassigns the ID of a single body.
 
void UnassignBodyIDs (const BodyID *inBodyIDs, int inNumber, Body **outBodies)
 
void DestroyBody (const BodyID &inBodyID)
 
void DestroyBodies (const BodyID *inBodyIDs, int inNumber)
 
void AddBody (const BodyID &inBodyID, EActivation inActivationMode)
 
void RemoveBody (const BodyID &inBodyID)
 Remove body from the physics system.
 
bool IsAdded (const BodyID &inBodyID) const
 Check if a body has been added to the physics system.
 
BodyID CreateAndAddBody (const BodyCreationSettings &inSettings, EActivation inActivationMode)
 
BodyID CreateAndAddSoftBody (const SoftBodyCreationSettings &inSettings, EActivation inActivationMode)
 
TwoBodyConstraintCreateConstraint (const TwoBodyConstraintSettings *inSettings, const BodyID &inBodyID1, const BodyID &inBodyID2)
 Create a two body constraint.
 
void ActivateConstraint (const TwoBodyConstraint *inConstraint)
 Activate non-static bodies attached to a constraint.
 
void MoveKinematic (const BodyID &inBodyID, RVec3Arg inTargetPosition, QuatArg inTargetRotation, float inDeltaTime)
 Set velocity of body such that it will be positioned at inTargetPosition/Rotation in inDeltaTime seconds (will activate body if needed)
 
void SetLinearAndAngularVelocity (const BodyID &inBodyID, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity)
 
void GetLinearAndAngularVelocity (const BodyID &inBodyID, Vec3 &outLinearVelocity, Vec3 &outAngularVelocity) const
 
void SetLinearVelocity (const BodyID &inBodyID, Vec3Arg inLinearVelocity)
 
Vec3 GetLinearVelocity (const BodyID &inBodyID) const
 
void AddLinearVelocity (const BodyID &inBodyID, Vec3Arg inLinearVelocity)
 Add velocity to current velocity.
 
void AddLinearAndAngularVelocity (const BodyID &inBodyID, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity)
 Add linear and angular to current velocities.
 
void SetAngularVelocity (const BodyID &inBodyID, Vec3Arg inAngularVelocity)
 
Vec3 GetAngularVelocity (const BodyID &inBodyID) const
 
Vec3 GetPointVelocity (const BodyID &inBodyID, RVec3Arg inPoint) const
 Velocity of point inPoint (in world space, e.g. on the surface of the body) of the body.
 
void SetPositionRotationAndVelocity (const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity)
 
Mat44 GetInverseInertia (const BodyID &inBodyID) const
 Get inverse inertia tensor in world space.
 
TransformedShape GetTransformedShape (const BodyID &inBodyID) const
 Get transform and shape for this body, used to perform collision detection.
 
uint64 GetUserData (const BodyID &inBodyID) const
 Get the user data for a body.
 
void SetUserData (const BodyID &inBodyID, uint64 inUserData) const
 
const PhysicsMaterialGetMaterial (const BodyID &inBodyID, const SubShapeID &inSubShapeID) const
 Get the material for a particular sub shape.
 
void InvalidateContactCache (const BodyID &inBodyID)
 Set the Body::EFlags::InvalidateContactCache flag for the specified body. This means that the collision cache is invalid for any body pair involving that body until the next physics step.
 
Batch adding interface
AddState AddBodiesPrepare (BodyID *ioBodies, int inNumber)
 
void AddBodiesFinalize (BodyID *ioBodies, int inNumber, AddState inAddState, EActivation inActivationMode)
 
void AddBodiesAbort (BodyID *ioBodies, int inNumber, AddState inAddState)
 
void RemoveBodies (BodyID *ioBodies, int inNumber)
 
Activate / deactivate a body
void ActivateBody (const BodyID &inBodyID)
 
void ActivateBodies (const BodyID *inBodyIDs, int inNumber)
 
void ActivateBodiesInAABox (const AABox &inBox, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter)
 
void DeactivateBody (const BodyID &inBodyID)
 
void DeactivateBodies (const BodyID *inBodyIDs, int inNumber)
 
bool IsActive (const BodyID &inBodyID) const
 
void ResetSleepTimer (const BodyID &inBodyID)
 
Access to the shape of a body
RefConst< ShapeGetShape (const BodyID &inBodyID) const
 Get the current shape.
 
void SetShape (const BodyID &inBodyID, const Shape *inShape, bool inUpdateMassProperties, EActivation inActivationMode) const
 
void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inPreviousCenterOfMass, bool inUpdateMassProperties, EActivation inActivationMode) const
 
Object layer of a body
void SetObjectLayer (const BodyID &inBodyID, ObjectLayer inLayer)
 
ObjectLayer GetObjectLayer (const BodyID &inBodyID) const
 
Position and rotation of a body
void SetPositionAndRotation (const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode)
 
void SetPositionAndRotationWhenChanged (const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode)
 Will only update the position/rotation and activate the body when the difference is larger than a very small number. This avoids updating the broadphase/waking up a body when the resulting position/orientation doesn't really change.
 
void GetPositionAndRotation (const BodyID &inBodyID, RVec3 &outPosition, Quat &outRotation) const
 
void SetPosition (const BodyID &inBodyID, RVec3Arg inPosition, EActivation inActivationMode)
 
RVec3 GetPosition (const BodyID &inBodyID) const
 
RVec3 GetCenterOfMassPosition (const BodyID &inBodyID) const
 
void SetRotation (const BodyID &inBodyID, QuatArg inRotation, EActivation inActivationMode)
 
Quat GetRotation (const BodyID &inBodyID) const
 
RMat44 GetWorldTransform (const BodyID &inBodyID) const
 
RMat44 GetCenterOfMassTransform (const BodyID &inBodyID) const
 
Add forces to the body
void AddForce (const BodyID &inBodyID, Vec3Arg inForce, EActivation inActivationMode=EActivation::Activate)
 See Body::AddForce.
 
void AddForce (const BodyID &inBodyID, Vec3Arg inForce, RVec3Arg inPoint, EActivation inActivationMode=EActivation::Activate)
 Applied at inPoint.
 
void AddTorque (const BodyID &inBodyID, Vec3Arg inTorque, EActivation inActivationMode=EActivation::Activate)
 See Body::AddTorque.
 
void AddForceAndTorque (const BodyID &inBodyID, Vec3Arg inForce, Vec3Arg inTorque, EActivation inActivationMode=EActivation::Activate)
 A combination of Body::AddForce and Body::AddTorque.
 
Add an impulse to the body
void AddImpulse (const BodyID &inBodyID, Vec3Arg inImpulse)
 Applied at center of mass.
 
void AddImpulse (const BodyID &inBodyID, Vec3Arg inImpulse, RVec3Arg inPoint)
 Applied at inPoint.
 
void AddAngularImpulse (const BodyID &inBodyID, Vec3Arg inAngularImpulse)
 
bool ApplyBuoyancyImpulse (const BodyID &inBodyID, RVec3Arg inSurfacePosition, Vec3Arg inSurfaceNormal, float inBuoyancy, float inLinearDrag, float inAngularDrag, Vec3Arg inFluidVelocity, Vec3Arg inGravity, float inDeltaTime)
 
Body type
EBodyType GetBodyType (const BodyID &inBodyID) const
 
Body motion type
void SetMotionType (const BodyID &inBodyID, EMotionType inMotionType, EActivation inActivationMode)
 
EMotionType GetMotionType (const BodyID &inBodyID) const
 
Body motion quality
void SetMotionQuality (const BodyID &inBodyID, EMotionQuality inMotionQuality)
 
EMotionQuality GetMotionQuality (const BodyID &inBodyID) const
 
Restitution
void SetRestitution (const BodyID &inBodyID, float inRestitution)
 
float GetRestitution (const BodyID &inBodyID) const
 
Friction
void SetFriction (const BodyID &inBodyID, float inFriction)
 
float GetFriction (const BodyID &inBodyID) const
 
Gravity factor
void SetGravityFactor (const BodyID &inBodyID, float inGravityFactor)
 
float GetGravityFactor (const BodyID &inBodyID) const
 
Manifold reduction
void SetUseManifoldReduction (const BodyID &inBodyID, bool inUseReduction)
 
bool GetUseManifoldReduction (const BodyID &inBodyID) const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Class that provides operations on bodies using a body ID. Note that if you need to do multiple operations on a single body, it is more efficient to lock the body once and combine the operations. All quantities are in world space unless otherwise specified.

+

Member Typedef Documentation

+ +

◆ AddState

+ +
+
+ + + + +
using BodyInterface::AddState = void *
+
+ +

Add state handle, used to keep track of a batch of bodies while adding them to the PhysicsSystem.

+ +
+
+

Member Function Documentation

+ +

◆ ActivateBodies()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::ActivateBodies (const BodyIDinBodyIDs,
int inNumber 
)
+
+ +
+
+ +

◆ ActivateBodiesInAABox()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::ActivateBodiesInAABox (const AABoxinBox,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
)
+
+ +
+
+ +

◆ ActivateBody()

+ +
+
+ + + + + + + + +
void BodyInterface::ActivateBody (const BodyIDinBodyID)
+
+ +
+
+ +

◆ ActivateConstraint()

+ +
+
+ + + + + + + + +
void BodyInterface::ActivateConstraint (const TwoBodyConstraintinConstraint)
+
+ +

Activate non-static bodies attached to a constraint.

+ +
+
+ +

◆ AddAngularImpulse()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::AddAngularImpulse (const BodyIDinBodyID,
Vec3Arg inAngularImpulse 
)
+
+ +
+
+ +

◆ AddBodiesAbort()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::AddBodiesAbort (BodyIDioBodies,
int inNumber,
AddState inAddState 
)
+
+

Abort adding bodies to the PhysicsSystem, supply the return value of AddBodiesPrepare in inAddState. This can be done on a background thread without influencing the PhysicsSystem. Please ensure that the ioBodies array passed to AddBodiesPrepare is unmodified and passed again to this function.

+ +
+
+ +

◆ AddBodiesFinalize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::AddBodiesFinalize (BodyIDioBodies,
int inNumber,
AddState inAddState,
EActivation inActivationMode 
)
+
+

Finalize adding bodies to the PhysicsSystem, supply the return value of AddBodiesPrepare in inAddState. Please ensure that the ioBodies array passed to AddBodiesPrepare is unmodified and passed again to this function.

+ +
+
+ +

◆ AddBodiesPrepare()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BodyInterface::AddState BodyInterface::AddBodiesPrepare (BodyIDioBodies,
int inNumber 
)
+
+

Prepare adding inNumber bodies at ioBodies to the PhysicsSystem, returns a handle that should be used in AddBodiesFinalize/Abort. This can be done on a background thread without influencing the PhysicsSystem. ioBodies may be shuffled around by this function and should be kept that way until AddBodiesFinalize/Abort is called.

+ +
+
+ +

◆ AddBody()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::AddBody (const BodyIDinBodyID,
EActivation inActivationMode 
)
+
+

Add body to the physics system. Note that if you need to add multiple bodies, use the AddBodiesPrepare/AddBodiesFinalize function. Adding many bodies, one at a time, results in a really inefficient broadphase until PhysicsSystem::OptimizeBroadPhase is called or when PhysicsSystem::Update rebuilds the tree! After adding, to get a body by ID use the BodyLockRead or BodyLockWrite interface!

+ +
+
+ +

◆ AddForce() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::AddForce (const BodyIDinBodyID,
Vec3Arg inForce,
EActivation inActivationMode = EActivation::Activate 
)
+
+ +

See Body::AddForce.

+ +
+
+ +

◆ AddForce() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::AddForce (const BodyIDinBodyID,
Vec3Arg inForce,
RVec3Arg inPoint,
EActivation inActivationMode = EActivation::Activate 
)
+
+ +

Applied at inPoint.

+ +
+
+ +

◆ AddForceAndTorque()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::AddForceAndTorque (const BodyIDinBodyID,
Vec3Arg inForce,
Vec3Arg inTorque,
EActivation inActivationMode = EActivation::Activate 
)
+
+ +

A combination of Body::AddForce and Body::AddTorque.

+ +
+
+ +

◆ AddImpulse() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::AddImpulse (const BodyIDinBodyID,
Vec3Arg inImpulse 
)
+
+ +

Applied at center of mass.

+ +
+
+ +

◆ AddImpulse() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::AddImpulse (const BodyIDinBodyID,
Vec3Arg inImpulse,
RVec3Arg inPoint 
)
+
+ +

Applied at inPoint.

+ +
+
+ +

◆ AddLinearAndAngularVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::AddLinearAndAngularVelocity (const BodyIDinBodyID,
Vec3Arg inLinearVelocity,
Vec3Arg inAngularVelocity 
)
+
+ +

Add linear and angular to current velocities.

+ +
+
+ +

◆ AddLinearVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::AddLinearVelocity (const BodyIDinBodyID,
Vec3Arg inLinearVelocity 
)
+
+ +

Add velocity to current velocity.

+ +
+
+ +

◆ AddTorque()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::AddTorque (const BodyIDinBodyID,
Vec3Arg inTorque,
EActivation inActivationMode = EActivation::Activate 
)
+
+ +

See Body::AddTorque.

+ +
+
+ +

◆ ApplyBuoyancyImpulse()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool BodyInterface::ApplyBuoyancyImpulse (const BodyIDinBodyID,
RVec3Arg inSurfacePosition,
Vec3Arg inSurfaceNormal,
float inBuoyancy,
float inLinearDrag,
float inAngularDrag,
Vec3Arg inFluidVelocity,
Vec3Arg inGravity,
float inDeltaTime 
)
+
+ +
+
+ +

◆ AssignBodyID() [1/2]

+ +
+
+ + + + + + + + +
bool BodyInterface::AssignBodyID (BodyioBody)
+
+

Advanced use only. Assigns the next available body ID to a body that was created using CreateBodyWithoutID. After this call, the body can be added to the physics system.

Returns
false if the body already has an ID or out of body ids.
+ +
+
+ +

◆ AssignBodyID() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool BodyInterface::AssignBodyID (BodyioBody,
const BodyIDinBodyID 
)
+
+

Advanced use only. Assigns a body ID to a body that was created using CreateBodyWithoutID. After this call, the body can be added to the physics system.

Returns
false if the body already has an ID or if the ID is not valid.
+ +
+
+ +

◆ CreateAndAddBody()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BodyID BodyInterface::CreateAndAddBody (const BodyCreationSettingsinSettings,
EActivation inActivationMode 
)
+
+

Combines CreateBody and AddBody

Returns
Created body ID or an invalid ID when out of bodies
+ +
+
+ +

◆ CreateAndAddSoftBody()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BodyID BodyInterface::CreateAndAddSoftBody (const SoftBodyCreationSettingsinSettings,
EActivation inActivationMode 
)
+
+

Combines CreateSoftBody and AddBody

Returns
Created body ID or an invalid ID when out of bodies
+ +
+
+ +

◆ CreateBody()

+ +
+
+ + + + + + + + +
Body * BodyInterface::CreateBody (const BodyCreationSettingsinSettings)
+
+

Create a rigid body

Returns
Created body or null when out of bodies
+ +
+
+ +

◆ CreateBodyWithID()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Body * BodyInterface::CreateBodyWithID (const BodyIDinBodyID,
const BodyCreationSettingsinSettings 
)
+
+

Create a rigid body with specified ID. This function can be used if a simulation is to run in sync between clients or if a simulation needs to be restored exactly. The ID created on the server can be replicated to the client and used to create a deterministic simulation.

Returns
Created body or null when the body ID is invalid or a body of the same ID already exists.
+ +
+
+ +

◆ CreateBodyWithoutID()

+ +
+
+ + + + + + + + +
Body * BodyInterface::CreateBodyWithoutID (const BodyCreationSettingsinSettings) const
+
+

Advanced use only. Creates a rigid body without specifying an ID. This body cannot be added to the physics system until it has been assigned a body ID. This can be used to decouple allocation from registering the body. A call to CreateBodyWithoutID followed by AssignBodyID is equivalent to calling CreateBodyWithID.

Returns
Created body
+ +
+
+ +

◆ CreateConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * BodyInterface::CreateConstraint (const TwoBodyConstraintSettingsinSettings,
const BodyIDinBodyID1,
const BodyIDinBodyID2 
)
+
+ +

Create a two body constraint.

+ +
+
+ +

◆ CreateSoftBody()

+ +
+
+ + + + + + + + +
Body * BodyInterface::CreateSoftBody (const SoftBodyCreationSettingsinSettings)
+
+

Create a soft body

Returns
Created body or null when out of bodies
+ +
+
+ +

◆ CreateSoftBodyWithID()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Body * BodyInterface::CreateSoftBodyWithID (const BodyIDinBodyID,
const SoftBodyCreationSettingsinSettings 
)
+
+ +

Create a soft body with specified ID. See comments at CreateBodyWithID.

+ +
+
+ +

◆ CreateSoftBodyWithoutID()

+ +
+
+ + + + + + + + +
Body * BodyInterface::CreateSoftBodyWithoutID (const SoftBodyCreationSettingsinSettings) const
+
+ +

Advanced use only. Creates a body without specifying an ID. See comments at CreateBodyWithoutID.

+ +
+
+ +

◆ DeactivateBodies()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::DeactivateBodies (const BodyIDinBodyIDs,
int inNumber 
)
+
+ +
+
+ +

◆ DeactivateBody()

+ +
+
+ + + + + + + + +
void BodyInterface::DeactivateBody (const BodyIDinBodyID)
+
+ +
+
+ +

◆ DestroyBodies()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::DestroyBodies (const BodyIDinBodyIDs,
int inNumber 
)
+
+

Destroy multiple bodies Make sure that you remove the bodies from the physics system using BodyInterface::RemoveBody before calling this function.

+ +
+
+ +

◆ DestroyBody()

+ +
+
+ + + + + + + + +
void BodyInterface::DestroyBody (const BodyIDinBodyID)
+
+

Destroy a body. Make sure that you remove the body from the physics system using BodyInterface::RemoveBody before calling this function.

+ +
+
+ +

◆ DestroyBodyWithoutID()

+ +
+
+ + + + + + + + +
void BodyInterface::DestroyBodyWithoutID (BodyinBody) const
+
+

Advanced use only. Destroy a body previously created with CreateBodyWithoutID that hasn't gotten an ID yet through the AssignBodyID function, or a body that has had its body ID unassigned through UnassignBodyIDs. Bodies that have an ID should be destroyed through DestroyBody.

+ +
+
+ +

◆ GetAngularVelocity()

+ +
+
+ + + + + + + + +
Vec3 BodyInterface::GetAngularVelocity (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetBodyType()

+ +
+
+ + + + + + + + +
EBodyType BodyInterface::GetBodyType (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetCenterOfMassPosition()

+ +
+
+ + + + + + + + +
RVec3 BodyInterface::GetCenterOfMassPosition (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetCenterOfMassTransform()

+ +
+
+ + + + + + + + +
RMat44 BodyInterface::GetCenterOfMassTransform (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetFriction()

+ +
+
+ + + + + + + + +
float BodyInterface::GetFriction (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetGravityFactor()

+ +
+
+ + + + + + + + +
float BodyInterface::GetGravityFactor (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetInverseInertia()

+ +
+
+ + + + + + + + +
Mat44 BodyInterface::GetInverseInertia (const BodyIDinBodyID) const
+
+ +

Get inverse inertia tensor in world space.

+ +
+
+ +

◆ GetLinearAndAngularVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::GetLinearAndAngularVelocity (const BodyIDinBodyID,
Vec3outLinearVelocity,
Vec3outAngularVelocity 
) const
+
+ +
+
+ +

◆ GetLinearVelocity()

+ +
+
+ + + + + + + + +
Vec3 BodyInterface::GetLinearVelocity (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetMaterial()

+ +
+
+ + + + + + + + + + + + + + + + + + +
const PhysicsMaterial * BodyInterface::GetMaterial (const BodyIDinBodyID,
const SubShapeIDinSubShapeID 
) const
+
+ +

Get the material for a particular sub shape.

+ +
+
+ +

◆ GetMotionQuality()

+ +
+
+ + + + + + + + +
EMotionQuality BodyInterface::GetMotionQuality (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetMotionType()

+ +
+
+ + + + + + + + +
EMotionType BodyInterface::GetMotionType (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetObjectLayer()

+ +
+
+ + + + + + + + +
ObjectLayer BodyInterface::GetObjectLayer (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetPointVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Vec3 BodyInterface::GetPointVelocity (const BodyIDinBodyID,
RVec3Arg inPoint 
) const
+
+ +

Velocity of point inPoint (in world space, e.g. on the surface of the body) of the body.

+ +
+
+ +

◆ GetPosition()

+ +
+
+ + + + + + + + +
RVec3 BodyInterface::GetPosition (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetPositionAndRotation()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::GetPositionAndRotation (const BodyIDinBodyID,
RVec3outPosition,
QuatoutRotation 
) const
+
+ +
+
+ +

◆ GetRestitution()

+ +
+
+ + + + + + + + +
float BodyInterface::GetRestitution (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetRotation()

+ +
+
+ + + + + + + + +
Quat BodyInterface::GetRotation (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetShape()

+ +
+
+ + + + + + + + +
RefConst< Shape > BodyInterface::GetShape (const BodyIDinBodyID) const
+
+ +

Get the current shape.

+ +
+
+ +

◆ GetTransformedShape()

+ +
+
+ + + + + + + + +
TransformedShape BodyInterface::GetTransformedShape (const BodyIDinBodyID) const
+
+ +

Get transform and shape for this body, used to perform collision detection.

+ +
+
+ +

◆ GetUseManifoldReduction()

+ +
+
+ + + + + + + + +
bool BodyInterface::GetUseManifoldReduction (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ GetUserData()

+ +
+
+ + + + + + + + +
uint64 BodyInterface::GetUserData (const BodyIDinBodyID) const
+
+ +

Get the user data for a body.

+ +
+
+ +

◆ GetWorldTransform()

+ +
+
+ + + + + + + + +
RMat44 BodyInterface::GetWorldTransform (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ Init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::Init (BodyLockInterfaceinBodyLockInterface,
BodyManagerinBodyManager,
BroadPhaseinBroadPhase 
)
+
+inline
+
+ +

Initialize the interface (should only be called by PhysicsSystem)

+ +
+
+ +

◆ InvalidateContactCache()

+ +
+
+ + + + + + + + +
void BodyInterface::InvalidateContactCache (const BodyIDinBodyID)
+
+ +

Set the Body::EFlags::InvalidateContactCache flag for the specified body. This means that the collision cache is invalid for any body pair involving that body until the next physics step.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + + + + +
bool BodyInterface::IsActive (const BodyIDinBodyID) const
+
+ +
+
+ +

◆ IsAdded()

+ +
+
+ + + + + + + + +
bool BodyInterface::IsAdded (const BodyIDinBodyID) const
+
+ +

Check if a body has been added to the physics system.

+ +
+
+ +

◆ MoveKinematic()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::MoveKinematic (const BodyIDinBodyID,
RVec3Arg inTargetPosition,
QuatArg inTargetRotation,
float inDeltaTime 
)
+
+ +

Set velocity of body such that it will be positioned at inTargetPosition/Rotation in inDeltaTime seconds (will activate body if needed)

+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inPreviousCenterOfMass,
bool inUpdateMassProperties,
EActivation inActivationMode 
) const
+
+

Notify all systems to indicate that a shape has changed (usable for MutableCompoundShapes)

Parameters
+ + + + + +
inBodyIDBody ID of body that had its shape changed
inPreviousCenterOfMassCenter of mass of the shape before the alterations
inUpdateMassPropertiesWhen true, the mass and inertia tensor is recalculated
inActivationModeWeather or not to activate the body
+
+
+ +
+
+ +

◆ RemoveBodies()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::RemoveBodies (BodyIDioBodies,
int inNumber 
)
+
+

Remove inNumber bodies in ioBodies from the PhysicsSystem. ioBodies may be shuffled around by this function.

+ +
+
+ +

◆ RemoveBody()

+ +
+
+ + + + + + + + +
void BodyInterface::RemoveBody (const BodyIDinBodyID)
+
+ +

Remove body from the physics system.

+ +
+
+ +

◆ ResetSleepTimer()

+ +
+
+ + + + + + + + +
void BodyInterface::ResetSleepTimer (const BodyIDinBodyID)
+
+ +
+
+ +

◆ SetAngularVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::SetAngularVelocity (const BodyIDinBodyID,
Vec3Arg inAngularVelocity 
)
+
+ +
+
+ +

◆ SetFriction()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::SetFriction (const BodyIDinBodyID,
float inFriction 
)
+
+ +
+
+ +

◆ SetGravityFactor()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::SetGravityFactor (const BodyIDinBodyID,
float inGravityFactor 
)
+
+ +
+
+ +

◆ SetLinearAndAngularVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::SetLinearAndAngularVelocity (const BodyIDinBodyID,
Vec3Arg inLinearVelocity,
Vec3Arg inAngularVelocity 
)
+
+

Linear or angular velocity (functions will activate body if needed). Note that the linear velocity is the velocity of the center of mass, which may not coincide with the position of your object, to correct for this: \(VelocityCOM = Velocity - AngularVelocity \times ShapeCOM\)

+ +
+
+ +

◆ SetLinearVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::SetLinearVelocity (const BodyIDinBodyID,
Vec3Arg inLinearVelocity 
)
+
+ +
+
+ +

◆ SetMotionQuality()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::SetMotionQuality (const BodyIDinBodyID,
EMotionQuality inMotionQuality 
)
+
+ +
+
+ +

◆ SetMotionType()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::SetMotionType (const BodyIDinBodyID,
EMotionType inMotionType,
EActivation inActivationMode 
)
+
+ +
+
+ +

◆ SetObjectLayer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::SetObjectLayer (const BodyIDinBodyID,
ObjectLayer inLayer 
)
+
+ +
+
+ +

◆ SetPosition()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::SetPosition (const BodyIDinBodyID,
RVec3Arg inPosition,
EActivation inActivationMode 
)
+
+ +
+
+ +

◆ SetPositionAndRotation()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::SetPositionAndRotation (const BodyIDinBodyID,
RVec3Arg inPosition,
QuatArg inRotation,
EActivation inActivationMode 
)
+
+ +
+
+ +

◆ SetPositionAndRotationWhenChanged()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::SetPositionAndRotationWhenChanged (const BodyIDinBodyID,
RVec3Arg inPosition,
QuatArg inRotation,
EActivation inActivationMode 
)
+
+ +

Will only update the position/rotation and activate the body when the difference is larger than a very small number. This avoids updating the broadphase/waking up a body when the resulting position/orientation doesn't really change.

+ +
+
+ +

◆ SetPositionRotationAndVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::SetPositionRotationAndVelocity (const BodyIDinBodyID,
RVec3Arg inPosition,
QuatArg inRotation,
Vec3Arg inLinearVelocity,
Vec3Arg inAngularVelocity 
)
+
+

Set the complete motion state of a body. Note that the linear velocity is the velocity of the center of mass, which may not coincide with the position of your object, to correct for this: \(VelocityCOM = Velocity - AngularVelocity \times ShapeCOM\)

+ +
+
+ +

◆ SetRestitution()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::SetRestitution (const BodyIDinBodyID,
float inRestitution 
)
+
+ +
+
+ +

◆ SetRotation()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::SetRotation (const BodyIDinBodyID,
QuatArg inRotation,
EActivation inActivationMode 
)
+
+ +
+
+ +

◆ SetShape()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::SetShape (const BodyIDinBodyID,
const ShapeinShape,
bool inUpdateMassProperties,
EActivation inActivationMode 
) const
+
+

Set a new shape on the body

Parameters
+ + + + + +
inBodyIDBody ID of body that had its shape changed
inShapeThe new shape
inUpdateMassPropertiesWhen true, the mass and inertia tensor is recalculated
inActivationModeWeather or not to activate the body
+
+
+ +
+
+ +

◆ SetUseManifoldReduction()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::SetUseManifoldReduction (const BodyIDinBodyID,
bool inUseReduction 
)
+
+ +
+
+ +

◆ SetUserData()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyInterface::SetUserData (const BodyIDinBodyID,
uint64 inUserData 
) const
+
+ +
+
+ +

◆ UnassignBodyID()

+ +
+
+ + + + + + + + +
Body * BodyInterface::UnassignBodyID (const BodyIDinBodyID)
+
+ +

Advanced use only. See UnassignBodyIDs. Unassigns the ID of a single body.

+ +
+
+ +

◆ UnassignBodyIDs()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyInterface::UnassignBodyIDs (const BodyIDinBodyIDs,
int inNumber,
Body ** outBodies 
)
+
+

Advanced use only. Removes a number of body IDs from their bodies and returns the body pointers. Before calling this, the body should have been removed from the physics system. The body can be destroyed through DestroyBodyWithoutID. This can be used to decouple deallocation. A call to UnassignBodyIDs followed by calls to DestroyBodyWithoutID is equivalent to calling DestroyBodies.

Parameters
+ + + + +
inBodyIDsA list of body IDs
inNumberNumber of bodies in the list
outBodiesIf not null on input, this will contain a list of body pointers corresponding to inBodyIDs that can be destroyed afterwards (caller assumes ownership over these).
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_body_interface.js b/class_body_interface.js new file mode 100644 index 000000000..8e73a5fa4 --- /dev/null +++ b/class_body_interface.js @@ -0,0 +1,89 @@ +var class_body_interface = +[ + [ "AddState", "class_body_interface.html#af4706607b933c4e7d04aace99feca333", null ], + [ "ActivateBodies", "class_body_interface.html#aa9ac89ba91cff574fb148dfe155c272e", null ], + [ "ActivateBodiesInAABox", "class_body_interface.html#a0397e4e0c43023b4c55d171d944dc430", null ], + [ "ActivateBody", "class_body_interface.html#ab6ccbc72a1df04bd16c5dc5dee7bdf30", null ], + [ "ActivateConstraint", "class_body_interface.html#a7b4ab713c9ed9369f43930510791562b", null ], + [ "AddAngularImpulse", "class_body_interface.html#a6d26f5967fd267e154b014a3c3af9c2e", null ], + [ "AddBodiesAbort", "class_body_interface.html#abc4f7a8cfd9e27064365eef9753bfa27", null ], + [ "AddBodiesFinalize", "class_body_interface.html#a64e1dd1d09088ca5a07384397f77f0aa", null ], + [ "AddBodiesPrepare", "class_body_interface.html#aab69381ebd96bc19d152bc8a928e9902", null ], + [ "AddBody", "class_body_interface.html#a4ba54993b7bbc05f1a6ffccbc46f0397", null ], + [ "AddForce", "class_body_interface.html#a9ecde691e54928413bc001db60830488", null ], + [ "AddForce", "class_body_interface.html#a14f052076561426a785052193f1407b4", null ], + [ "AddForceAndTorque", "class_body_interface.html#acd2ec8e3ed17843a62f671a206e9688f", null ], + [ "AddImpulse", "class_body_interface.html#add7aa9b7c776237b53d79e95d0d71c40", null ], + [ "AddImpulse", "class_body_interface.html#a7bff4d600e56557afed4417b21f6c8e4", null ], + [ "AddLinearAndAngularVelocity", "class_body_interface.html#a7e4f5dc5ce2c8a045a008a93f141204b", null ], + [ "AddLinearVelocity", "class_body_interface.html#a9a665d14b83fe63e236a0adce30d9877", null ], + [ "AddTorque", "class_body_interface.html#abc6f86e75b2c5b77afd8b066b4d51a52", null ], + [ "ApplyBuoyancyImpulse", "class_body_interface.html#af12108f11ee689a1ebc8320a1ac45e87", null ], + [ "AssignBodyID", "class_body_interface.html#a4247f0851fb8dfbe92f5b83a41863595", null ], + [ "AssignBodyID", "class_body_interface.html#a7669d5c31627d2c99fac69723fb1a219", null ], + [ "CreateAndAddBody", "class_body_interface.html#a1484650a796607c688529fe600dc9e9f", null ], + [ "CreateAndAddSoftBody", "class_body_interface.html#a0424b908e93229e76b8e2577931abe3f", null ], + [ "CreateBody", "class_body_interface.html#ae0205e33e033e932177183c7b20da0f1", null ], + [ "CreateBodyWithID", "class_body_interface.html#a6ce6c1e2646429777f65e66e7a21e05b", null ], + [ "CreateBodyWithoutID", "class_body_interface.html#abb17d2706f2ee0c0aac4c82d774bece2", null ], + [ "CreateConstraint", "class_body_interface.html#ac5d2f3a832968329c91af032409abc68", null ], + [ "CreateSoftBody", "class_body_interface.html#ab96c4bc3e0015772d42d48c094b72388", null ], + [ "CreateSoftBodyWithID", "class_body_interface.html#a06ffc5520f0460fed075bced2c4de434", null ], + [ "CreateSoftBodyWithoutID", "class_body_interface.html#ad6e464f89f991661c201fecad8dbe324", null ], + [ "DeactivateBodies", "class_body_interface.html#a0dea3b8edb237b9dd29fb05da84a1331", null ], + [ "DeactivateBody", "class_body_interface.html#a62255f9678f727b3838fc7f25d3c47e0", null ], + [ "DestroyBodies", "class_body_interface.html#a95b819fbbcd8a85c25cbce1a319a9037", null ], + [ "DestroyBody", "class_body_interface.html#a43fb4ffc35661c67642ffa804d1dad8a", null ], + [ "DestroyBodyWithoutID", "class_body_interface.html#a6263a2b21c5544789bdf4040deacc377", null ], + [ "GetAngularVelocity", "class_body_interface.html#a0e14c414d534c2eefc77b218bb36c197", null ], + [ "GetBodyType", "class_body_interface.html#abeb48122f4f459d13cea20f1f4dbaf07", null ], + [ "GetCenterOfMassPosition", "class_body_interface.html#a2d3c9157b54b0dad58af5d90056a1334", null ], + [ "GetCenterOfMassTransform", "class_body_interface.html#a4a0420af0583a689216522fb1c367edc", null ], + [ "GetFriction", "class_body_interface.html#a098e8a339528606a7d3f41c5ba5da8a2", null ], + [ "GetGravityFactor", "class_body_interface.html#a2e3bf749aa0626529b43f173437a9ec0", null ], + [ "GetInverseInertia", "class_body_interface.html#a9f6a8905527bc1a025eda4f97f76f573", null ], + [ "GetLinearAndAngularVelocity", "class_body_interface.html#ab10d8f90079351e23596e1abadfe7e5d", null ], + [ "GetLinearVelocity", "class_body_interface.html#a3e25561a23fd268d649e3c968b9ffada", null ], + [ "GetMaterial", "class_body_interface.html#a4b76f55d8fcbb5bb8c170069d03c1f79", null ], + [ "GetMotionQuality", "class_body_interface.html#a3b3b74fdcf84502aaa693303bf0a91a5", null ], + [ "GetMotionType", "class_body_interface.html#a28dc9afdb017050075993e360cfc83ec", null ], + [ "GetObjectLayer", "class_body_interface.html#a4b8d499ac748154a6bdaf948377a0071", null ], + [ "GetPointVelocity", "class_body_interface.html#a0861d123b1e074d35c8f9e0151e391d6", null ], + [ "GetPosition", "class_body_interface.html#a97f114a5663f7a5e9461c73c01d4b2af", null ], + [ "GetPositionAndRotation", "class_body_interface.html#a48912c55b281718dbd1cb25e6797c46e", null ], + [ "GetRestitution", "class_body_interface.html#a4a4947d638e0d8b6663f50824c9cbd58", null ], + [ "GetRotation", "class_body_interface.html#a1afec2cfd709e9f48e21f1112da9b21b", null ], + [ "GetShape", "class_body_interface.html#af67cf1a0f9c7fa744d4e2387d63e04ba", null ], + [ "GetTransformedShape", "class_body_interface.html#ae468b34e460759f4cf4e76486e404ee4", null ], + [ "GetUseManifoldReduction", "class_body_interface.html#af83d47bf486a2e3c70b485ede215b412", null ], + [ "GetUserData", "class_body_interface.html#a34942329fd9b3230e938f4418302138c", null ], + [ "GetWorldTransform", "class_body_interface.html#a8409d75ef7758e7c61675be89629cb6c", null ], + [ "Init", "class_body_interface.html#a53d3b19282c77d972f684abeb16b42a8", null ], + [ "InvalidateContactCache", "class_body_interface.html#af554a69ffbdfb5290c03cc9562ed21e5", null ], + [ "IsActive", "class_body_interface.html#a762f492665332fe71e31d0e37d4355c7", null ], + [ "IsAdded", "class_body_interface.html#a1a67ebf158316c8ce40768aab624680b", null ], + [ "MoveKinematic", "class_body_interface.html#a511b9da7dae147b6d8d3227f30724334", null ], + [ "NotifyShapeChanged", "class_body_interface.html#aa2e0c12f152375b42b3de56faf9bec86", null ], + [ "RemoveBodies", "class_body_interface.html#a4e0007d53ba413e916a527b870b35a87", null ], + [ "RemoveBody", "class_body_interface.html#a522d341ddd68225e12eb510f072399f9", null ], + [ "ResetSleepTimer", "class_body_interface.html#a1fba61b765e02400402899b838a7e517", null ], + [ "SetAngularVelocity", "class_body_interface.html#a4c18bf3267f16f16294385150f36824c", null ], + [ "SetFriction", "class_body_interface.html#affaf38fde1489b775c179303ed67c0cc", null ], + [ "SetGravityFactor", "class_body_interface.html#a2171a36d0ff2b98c019ed4b0bcb0db39", null ], + [ "SetLinearAndAngularVelocity", "class_body_interface.html#a77222f0f950004cddea8170eb825dcaa", null ], + [ "SetLinearVelocity", "class_body_interface.html#a49831752041e13262dff231f4e404302", null ], + [ "SetMotionQuality", "class_body_interface.html#a38ce02df9d2363eec48af42ba61741bf", null ], + [ "SetMotionType", "class_body_interface.html#a18efc1ae5268eabc115fe7ba7ed170b9", null ], + [ "SetObjectLayer", "class_body_interface.html#a2c1a6660958d7f52b37e45587ccbab92", null ], + [ "SetPosition", "class_body_interface.html#a19838143d494d7d0ddb4fb0226ca2cad", null ], + [ "SetPositionAndRotation", "class_body_interface.html#a369e907b665f5814d864790173062d7f", null ], + [ "SetPositionAndRotationWhenChanged", "class_body_interface.html#a12c9c1534c1c6441c51f663a29eb4daf", null ], + [ "SetPositionRotationAndVelocity", "class_body_interface.html#ad7e39bea301498df0e27024869a2cff9", null ], + [ "SetRestitution", "class_body_interface.html#a7fb8b9b6e59dfe3f78f9e8e3c2776675", null ], + [ "SetRotation", "class_body_interface.html#a199aec558e03ec611fc32e2e4fcbfc07", null ], + [ "SetShape", "class_body_interface.html#a051a4064706509e2b1c4dcc6d688676d", null ], + [ "SetUseManifoldReduction", "class_body_interface.html#a7f730135a74e9cb798d8a7d6c49acefb", null ], + [ "SetUserData", "class_body_interface.html#abd152dcf89e6c0147a6929e04f96c578", null ], + [ "UnassignBodyID", "class_body_interface.html#a90516454ed80b9ffd59dccb2dbcd8f2b", null ], + [ "UnassignBodyIDs", "class_body_interface.html#a88613a7d9e6ba099b3a02faf842ac7d7", null ] +]; \ No newline at end of file diff --git a/class_body_interface.png b/class_body_interface.png new file mode 100644 index 000000000..c9bc7c3ae Binary files /dev/null and b/class_body_interface.png differ diff --git a/class_body_lock_base-members.html b/class_body_lock_base-members.html new file mode 100644 index 000000000..d25cd973f --- /dev/null +++ b/class_body_lock_base-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyLockBase< Write, BodyType > Member List
+
+
+ +

This is the complete list of members for BodyLockBase< Write, BodyType >, including all inherited members.

+ + + + + + + + + + +
BodyLockBase(const BodyLockInterface &inBodyLockInterface, const BodyID &inBodyID)BodyLockBase< Write, BodyType >inline
GetBody() constBodyLockBase< Write, BodyType >inline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ReleaseLock()BodyLockBase< Write, BodyType >inline
Succeeded() constBodyLockBase< Write, BodyType >inline
SucceededAndIsInBroadPhase() constBodyLockBase< Write, BodyType >inline
~BodyLockBase()BodyLockBase< Write, BodyType >inline
+
+ + + + diff --git a/class_body_lock_base.html b/class_body_lock_base.html new file mode 100644 index 000000000..00024e16d --- /dev/null +++ b/class_body_lock_base.html @@ -0,0 +1,353 @@ + + + + + + + +Jolt Physics: BodyLockBase< Write, BodyType > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyLockBase< Write, BodyType > Class Template Reference
+
+
+ +

Base class for locking bodies for the duration of the scope of this class (do not use directly) + More...

+ +

#include <BodyLock.h>

+
+Inheritance diagram for BodyLockBase< Write, BodyType >:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BodyLockBase (const BodyLockInterface &inBodyLockInterface, const BodyID &inBodyID)
 Constructor will lock the body.
 
void ReleaseLock ()
 Explicitly release the lock (normally this is done in the destructor)
 
 ~BodyLockBase ()
 Destructor will unlock the body.
 
bool Succeeded () const
 Test if the lock was successful (if the body ID was valid)
 
bool SucceededAndIsInBroadPhase () const
 Test if the lock was successful (if the body ID was valid) and the body is still in the broad phase.
 
BodyType & GetBody () const
 Access the body.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+
template<bool Write, class BodyType>
+class BodyLockBase< Write, BodyType >

Base class for locking bodies for the duration of the scope of this class (do not use directly)

+

Constructor & Destructor Documentation

+ +

◆ BodyLockBase()

+ +
+
+
+template<bool Write, class BodyType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
BodyLockBase< Write, BodyType >::BodyLockBase (const BodyLockInterfaceinBodyLockInterface,
const BodyIDinBodyID 
)
+
+inline
+
+ +

Constructor will lock the body.

+ +
+
+ +

◆ ~BodyLockBase()

+ +
+
+
+template<bool Write, class BodyType >
+ + + + + +
+ + + + + + + +
BodyLockBase< Write, BodyType >::~BodyLockBase ()
+
+inline
+
+ +

Destructor will unlock the body.

+ +
+
+

Member Function Documentation

+ +

◆ GetBody()

+ +
+
+
+template<bool Write, class BodyType >
+ + + + + +
+ + + + + + + +
BodyType & BodyLockBase< Write, BodyType >::GetBody () const
+
+inline
+
+ +

Access the body.

+ +
+
+ +

◆ ReleaseLock()

+ +
+
+
+template<bool Write, class BodyType >
+ + + + + +
+ + + + + + + +
void BodyLockBase< Write, BodyType >::ReleaseLock ()
+
+inline
+
+ +

Explicitly release the lock (normally this is done in the destructor)

+ +
+
+ +

◆ Succeeded()

+ +
+
+
+template<bool Write, class BodyType >
+ + + + + +
+ + + + + + + +
bool BodyLockBase< Write, BodyType >::Succeeded () const
+
+inline
+
+ +

Test if the lock was successful (if the body ID was valid)

+ +
+
+ +

◆ SucceededAndIsInBroadPhase()

+ +
+
+
+template<bool Write, class BodyType >
+ + + + + +
+ + + + + + + +
bool BodyLockBase< Write, BodyType >::SucceededAndIsInBroadPhase () const
+
+inline
+
+ +

Test if the lock was successful (if the body ID was valid) and the body is still in the broad phase.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_lock_base.js b/class_body_lock_base.js new file mode 100644 index 000000000..aad200e98 --- /dev/null +++ b/class_body_lock_base.js @@ -0,0 +1,9 @@ +var class_body_lock_base = +[ + [ "BodyLockBase", "class_body_lock_base.html#a6567f612e029f57f4a49aebcf54334a9", null ], + [ "~BodyLockBase", "class_body_lock_base.html#a30194dac9c9d2ca469894dd7c5719d40", null ], + [ "GetBody", "class_body_lock_base.html#aa79bd3d8f64b4f92a2744737eddc6e59", null ], + [ "ReleaseLock", "class_body_lock_base.html#ad55e418ae5441d32196be0d6433e4cec", null ], + [ "Succeeded", "class_body_lock_base.html#a8ee09ef1fb31697b4f965c8e5ee09e5f", null ], + [ "SucceededAndIsInBroadPhase", "class_body_lock_base.html#a9ed231a8aea3cfa9e1e721707dcd08fb", null ] +]; \ No newline at end of file diff --git a/class_body_lock_base.png b/class_body_lock_base.png new file mode 100644 index 000000000..60177297d Binary files /dev/null and b/class_body_lock_base.png differ diff --git a/class_body_lock_interface-members.html b/class_body_lock_interface-members.html new file mode 100644 index 000000000..5d3c8cc9d --- /dev/null +++ b/class_body_lock_interface-members.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyLockInterface Member List
+
+
+ +

This is the complete list of members for BodyLockInterface, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
BodyLockInterface(BodyManager &inBodyManager)BodyLockInterfaceinlineexplicit
GetAllBodiesMutexMask() constBodyLockInterfaceinline
GetMutexMask(const BodyID *inBodies, int inNumber) const =0BodyLockInterfacepure virtual
LockRead(const BodyID &inBodyID) const =0BodyLockInterfacepure virtual
LockRead(MutexMask inMutexMask) const =0BodyLockInterfacepure virtual
LockWrite(const BodyID &inBodyID) const =0BodyLockInterfacepure virtual
LockWrite(MutexMask inMutexMask) const =0BodyLockInterfacepure virtual
mBodyManagerBodyLockInterfaceprotected
MutexMask typedefBodyLockInterface
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
TryGetBody(const BodyID &inBodyID) constBodyLockInterfaceinline
UnlockRead(SharedMutex *inMutex) const =0BodyLockInterfacepure virtual
UnlockRead(MutexMask inMutexMask) const =0BodyLockInterfacepure virtual
UnlockWrite(SharedMutex *inMutex) const =0BodyLockInterfacepure virtual
UnlockWrite(MutexMask inMutexMask) const =0BodyLockInterfacepure virtual
~BodyLockInterface()=defaultBodyLockInterfacevirtual
+
+ + + + diff --git a/class_body_lock_interface.html b/class_body_lock_interface.html new file mode 100644 index 000000000..54ed0a0be --- /dev/null +++ b/class_body_lock_interface.html @@ -0,0 +1,605 @@ + + + + + + + +Jolt Physics: BodyLockInterface Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyLockInterface Class Referenceabstract
+
+
+ +

Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLockMultiRead / BodyLockMultiWrite instead. + More...

+ +

#include <BodyLockInterface.h>

+
+Inheritance diagram for BodyLockInterface:
+
+
+ + +NonCopyable +BodyLockInterfaceLocking +BodyLockInterfaceNoLock + +
+ + + + + +

+Public Types

using MutexMask = BodyManager::MutexMask
 Redefine MutexMask.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BodyLockInterface (BodyManager &inBodyManager)
 Constructor.
 
virtual ~BodyLockInterface ()=default
 
MutexMask GetAllBodiesMutexMask () const
 Get the mask needed to lock all bodies.
 
BodyTryGetBody (const BodyID &inBodyID) const
 Convert body ID to body.
 
Locking functions
virtual SharedMutexLockRead (const BodyID &inBodyID) const =0
 
virtual void UnlockRead (SharedMutex *inMutex) const =0
 
virtual SharedMutexLockWrite (const BodyID &inBodyID) const =0
 
virtual void UnlockWrite (SharedMutex *inMutex) const =0
 
Batch locking functions
virtual MutexMask GetMutexMask (const BodyID *inBodies, int inNumber) const =0
 
virtual void LockRead (MutexMask inMutexMask) const =0
 
virtual void UnlockRead (MutexMask inMutexMask) const =0
 
virtual void LockWrite (MutexMask inMutexMask) const =0
 
virtual void UnlockWrite (MutexMask inMutexMask) const =0
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + +

+Protected Attributes

BodyManagermBodyManager
 
+

Detailed Description

+

Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLockMultiRead / BodyLockMultiWrite instead.

+

Member Typedef Documentation

+ +

◆ MutexMask

+ +
+
+ +

Redefine MutexMask.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ BodyLockInterface()

+ +
+
+ + + + + +
+ + + + + + + + +
BodyLockInterface::BodyLockInterface (BodyManagerinBodyManager)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+ +

◆ ~BodyLockInterface()

+ +
+
+ + + + + +
+ + + + + + + +
virtual BodyLockInterface::~BodyLockInterface ()
+
+virtualdefault
+
+ +
+
+

Member Function Documentation

+ +

◆ GetAllBodiesMutexMask()

+ +
+
+ + + + + +
+ + + + + + + +
MutexMask BodyLockInterface::GetAllBodiesMutexMask () const
+
+inline
+
+ +

Get the mask needed to lock all bodies.

+ +
+
+ +

◆ GetMutexMask()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual MutexMask BodyLockInterface::GetMutexMask (const BodyIDinBodies,
int inNumber 
) const
+
+pure virtual
+
+
+ +

◆ LockRead() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SharedMutex * BodyLockInterface::LockRead (const BodyIDinBodyID) const
+
+pure virtual
+
+
+ +

◆ LockRead() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterface::LockRead (MutexMask inMutexMask) const
+
+pure virtual
+
+
+ +

◆ LockWrite() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SharedMutex * BodyLockInterface::LockWrite (const BodyIDinBodyID) const
+
+pure virtual
+
+
+ +

◆ LockWrite() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterface::LockWrite (MutexMask inMutexMask) const
+
+pure virtual
+
+
+ +

◆ TryGetBody()

+ +
+
+ + + + + +
+ + + + + + + + +
Body * BodyLockInterface::TryGetBody (const BodyIDinBodyID) const
+
+inline
+
+ +

Convert body ID to body.

+ +
+
+ +

◆ UnlockRead() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterface::UnlockRead (MutexMask inMutexMask) const
+
+pure virtual
+
+
+ +

◆ UnlockRead() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterface::UnlockRead (SharedMutexinMutex) const
+
+pure virtual
+
+
+ +

◆ UnlockWrite() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterface::UnlockWrite (MutexMask inMutexMask) const
+
+pure virtual
+
+
+ +

◆ UnlockWrite() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterface::UnlockWrite (SharedMutexinMutex) const
+
+pure virtual
+
+
+

Member Data Documentation

+ +

◆ mBodyManager

+ +
+
+ + + + + +
+ + + + +
BodyManager& BodyLockInterface::mBodyManager
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_lock_interface.js b/class_body_lock_interface.js new file mode 100644 index 000000000..9ebe8767f --- /dev/null +++ b/class_body_lock_interface.js @@ -0,0 +1,18 @@ +var class_body_lock_interface = +[ + [ "MutexMask", "class_body_lock_interface.html#a771acdfb6a269ae145b3b7867b560ebb", null ], + [ "BodyLockInterface", "class_body_lock_interface.html#a502df83afc4e8e8e77d7a8b2993c1f8e", null ], + [ "~BodyLockInterface", "class_body_lock_interface.html#ad019e65f235b7cc04199696fa0ef1fc2", null ], + [ "GetAllBodiesMutexMask", "class_body_lock_interface.html#a76bee9cac091824dea84407a94a557f6", null ], + [ "GetMutexMask", "class_body_lock_interface.html#a3bfe95981277029552253f953f5e2179", null ], + [ "LockRead", "class_body_lock_interface.html#a8a771b3c89803fee5e6d1c90f2f96a07", null ], + [ "LockRead", "class_body_lock_interface.html#ae146eecd6e18c0b9b5e19f72a2696572", null ], + [ "LockWrite", "class_body_lock_interface.html#a9d17ddb805293e6495f3569a4ed32969", null ], + [ "LockWrite", "class_body_lock_interface.html#a8ec7191e60755953798e570d01c0b30b", null ], + [ "TryGetBody", "class_body_lock_interface.html#a69aba1e1549e9bc55c1ccd4b68cc171a", null ], + [ "UnlockRead", "class_body_lock_interface.html#a702e6d9dba53f21d054dc51397bd9c39", null ], + [ "UnlockRead", "class_body_lock_interface.html#a01f2a12bf7200265b64aae3effd3a82d", null ], + [ "UnlockWrite", "class_body_lock_interface.html#ae7ab56617d45d42ee2935b0eaf9b57e6", null ], + [ "UnlockWrite", "class_body_lock_interface.html#a786e43ce709b4214d7ebda26961d4725", null ], + [ "mBodyManager", "class_body_lock_interface.html#a061f3644dbda5115a837f9acbf0d3f6e", null ] +]; \ No newline at end of file diff --git a/class_body_lock_interface.png b/class_body_lock_interface.png new file mode 100644 index 000000000..dfe467bd5 Binary files /dev/null and b/class_body_lock_interface.png differ diff --git a/class_body_lock_interface_locking-members.html b/class_body_lock_interface_locking-members.html new file mode 100644 index 000000000..ce060d053 --- /dev/null +++ b/class_body_lock_interface_locking-members.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyLockInterfaceLocking Member List
+
+
+ +

This is the complete list of members for BodyLockInterfaceLocking, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
BodyLockInterface(BodyManager &inBodyManager)BodyLockInterfaceLockinginlineexplicit
GetAllBodiesMutexMask() constBodyLockInterfaceinline
GetMutexMask(const BodyID *inBodies, int inNumber) const overrideBodyLockInterfaceLockinginlinevirtual
LockRead(const BodyID &inBodyID) const overrideBodyLockInterfaceLockinginlinevirtual
LockRead(MutexMask inMutexMask) const overrideBodyLockInterfaceLockinginlinevirtual
LockWrite(const BodyID &inBodyID) const overrideBodyLockInterfaceLockinginlinevirtual
LockWrite(MutexMask inMutexMask) const overrideBodyLockInterfaceLockinginlinevirtual
mBodyManagerBodyLockInterfaceprotected
MutexMask typedefBodyLockInterface
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
TryGetBody(const BodyID &inBodyID) constBodyLockInterfaceinline
UnlockRead(SharedMutex *inMutex) const overrideBodyLockInterfaceLockinginlinevirtual
UnlockRead(MutexMask inMutexMask) const overrideBodyLockInterfaceLockinginlinevirtual
UnlockWrite(SharedMutex *inMutex) const overrideBodyLockInterfaceLockinginlinevirtual
UnlockWrite(MutexMask inMutexMask) const overrideBodyLockInterfaceLockinginlinevirtual
~BodyLockInterface()=defaultBodyLockInterfacevirtual
+
+ + + + diff --git a/class_body_lock_interface_locking.html b/class_body_lock_interface_locking.html new file mode 100644 index 000000000..271be1095 --- /dev/null +++ b/class_body_lock_interface_locking.html @@ -0,0 +1,484 @@ + + + + + + + +Jolt Physics: BodyLockInterfaceLocking Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyLockInterfaceLocking Class Referencefinal
+
+
+ +

Implementation that uses the body manager to lock the correct mutex for a body. + More...

+ +

#include <BodyLockInterface.h>

+
+Inheritance diagram for BodyLockInterfaceLocking:
+
+
+ + +BodyLockInterface +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BodyLockInterface (BodyManager &inBodyManager)
 Constructor.
 
Locking functions
virtual SharedMutexLockRead (const BodyID &inBodyID) const override
 
virtual void UnlockRead (SharedMutex *inMutex) const override
 
virtual SharedMutexLockWrite (const BodyID &inBodyID) const override
 
virtual void UnlockWrite (SharedMutex *inMutex) const override
 
Batch locking functions
virtual MutexMask GetMutexMask (const BodyID *inBodies, int inNumber) const override
 
virtual void LockRead (MutexMask inMutexMask) const override
 
virtual void UnlockRead (MutexMask inMutexMask) const override
 
virtual void LockWrite (MutexMask inMutexMask) const override
 
virtual void UnlockWrite (MutexMask inMutexMask) const override
 
- Public Member Functions inherited from BodyLockInterface
 BodyLockInterface (BodyManager &inBodyManager)
 Constructor.
 
virtual ~BodyLockInterface ()=default
 
MutexMask GetAllBodiesMutexMask () const
 Get the mask needed to lock all bodies.
 
BodyTryGetBody (const BodyID &inBodyID) const
 Convert body ID to body.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BodyLockInterface
using MutexMask = BodyManager::MutexMask
 Redefine MutexMask.
 
- Protected Attributes inherited from BodyLockInterface
BodyManagermBodyManager
 
+

Detailed Description

+

Implementation that uses the body manager to lock the correct mutex for a body.

+

Member Function Documentation

+ +

◆ BodyLockInterface()

+ +
+
+ + + + + +
+ + + + + + + + +
BodyLockInterface::BodyLockInterface (BodyManagerinBodyManager)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+ +

◆ GetMutexMask()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual MutexMask BodyLockInterfaceLocking::GetMutexMask (const BodyIDinBodies,
int inNumber 
) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ LockRead() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SharedMutex * BodyLockInterfaceLocking::LockRead (const BodyIDinBodyID) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ LockRead() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterfaceLocking::LockRead (MutexMask inMutexMask) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ LockWrite() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SharedMutex * BodyLockInterfaceLocking::LockWrite (const BodyIDinBodyID) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ LockWrite() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterfaceLocking::LockWrite (MutexMask inMutexMask) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ UnlockRead() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterfaceLocking::UnlockRead (MutexMask inMutexMask) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ UnlockRead() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterfaceLocking::UnlockRead (SharedMutexinMutex) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ UnlockWrite() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterfaceLocking::UnlockWrite (MutexMask inMutexMask) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ UnlockWrite() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterfaceLocking::UnlockWrite (SharedMutexinMutex) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_lock_interface_locking.js b/class_body_lock_interface_locking.js new file mode 100644 index 000000000..2459b87af --- /dev/null +++ b/class_body_lock_interface_locking.js @@ -0,0 +1,13 @@ +var class_body_lock_interface_locking = +[ + [ "BodyLockInterface", "class_body_lock_interface_locking.html#a502df83afc4e8e8e77d7a8b2993c1f8e", null ], + [ "GetMutexMask", "class_body_lock_interface_locking.html#ad5654fb1a33df17e9bc1aada33b5dcab", null ], + [ "LockRead", "class_body_lock_interface_locking.html#a5324dd788c8358e092527e3c68d9a682", null ], + [ "LockRead", "class_body_lock_interface_locking.html#adedab6f41d8e601a0780462678235b19", null ], + [ "LockWrite", "class_body_lock_interface_locking.html#a109d30a7639dde11979c5e1ccb62707c", null ], + [ "LockWrite", "class_body_lock_interface_locking.html#a518e5c21911dbfd54f7f2c6390dc7d35", null ], + [ "UnlockRead", "class_body_lock_interface_locking.html#a23ed101c9ed1d8266dc7742f002f908b", null ], + [ "UnlockRead", "class_body_lock_interface_locking.html#a523d0b2ec0c63a14964ff67b407cf8dd", null ], + [ "UnlockWrite", "class_body_lock_interface_locking.html#a25822b34a4987988f2100790c1279eb2", null ], + [ "UnlockWrite", "class_body_lock_interface_locking.html#a0651763a01d010609627cf84153b65d9", null ] +]; \ No newline at end of file diff --git a/class_body_lock_interface_locking.png b/class_body_lock_interface_locking.png new file mode 100644 index 000000000..d9ea2a5de Binary files /dev/null and b/class_body_lock_interface_locking.png differ diff --git a/class_body_lock_interface_no_lock-members.html b/class_body_lock_interface_no_lock-members.html new file mode 100644 index 000000000..891b46ecf --- /dev/null +++ b/class_body_lock_interface_no_lock-members.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyLockInterfaceNoLock Member List
+
+
+ +

This is the complete list of members for BodyLockInterfaceNoLock, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
BodyLockInterface(BodyManager &inBodyManager)BodyLockInterfaceNoLockinlineexplicit
GetAllBodiesMutexMask() constBodyLockInterfaceinline
GetMutexMask(const BodyID *inBodies, int inNumber) const overrideBodyLockInterfaceNoLockinlinevirtual
LockRead(const BodyID &inBodyID) const overrideBodyLockInterfaceNoLockinlinevirtual
LockRead(MutexMask inMutexMask) const overrideBodyLockInterfaceNoLockinlinevirtual
LockWrite(const BodyID &inBodyID) const overrideBodyLockInterfaceNoLockinlinevirtual
LockWrite(MutexMask inMutexMask) const overrideBodyLockInterfaceNoLockinlinevirtual
mBodyManagerBodyLockInterfaceprotected
MutexMask typedefBodyLockInterface
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
TryGetBody(const BodyID &inBodyID) constBodyLockInterfaceinline
UnlockRead(SharedMutex *inMutex) const overrideBodyLockInterfaceNoLockinlinevirtual
UnlockRead(MutexMask inMutexMask) const overrideBodyLockInterfaceNoLockinlinevirtual
UnlockWrite(SharedMutex *inMutex) const overrideBodyLockInterfaceNoLockinlinevirtual
UnlockWrite(MutexMask inMutexMask) const overrideBodyLockInterfaceNoLockinlinevirtual
~BodyLockInterface()=defaultBodyLockInterfacevirtual
+
+ + + + diff --git a/class_body_lock_interface_no_lock.html b/class_body_lock_interface_no_lock.html new file mode 100644 index 000000000..85f3cbd05 --- /dev/null +++ b/class_body_lock_interface_no_lock.html @@ -0,0 +1,484 @@ + + + + + + + +Jolt Physics: BodyLockInterfaceNoLock Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyLockInterfaceNoLock Class Referencefinal
+
+
+ +

Implementation that performs no locking (assumes the lock has already been taken) + More...

+ +

#include <BodyLockInterface.h>

+
+Inheritance diagram for BodyLockInterfaceNoLock:
+
+
+ + +BodyLockInterface +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BodyLockInterface (BodyManager &inBodyManager)
 Constructor.
 
Locking functions
virtual SharedMutexLockRead (const BodyID &inBodyID) const override
 
virtual void UnlockRead (SharedMutex *inMutex) const override
 
virtual SharedMutexLockWrite (const BodyID &inBodyID) const override
 
virtual void UnlockWrite (SharedMutex *inMutex) const override
 
Batch locking functions
virtual MutexMask GetMutexMask (const BodyID *inBodies, int inNumber) const override
 
virtual void LockRead (MutexMask inMutexMask) const override
 
virtual void UnlockRead (MutexMask inMutexMask) const override
 
virtual void LockWrite (MutexMask inMutexMask) const override
 
virtual void UnlockWrite (MutexMask inMutexMask) const override
 
- Public Member Functions inherited from BodyLockInterface
 BodyLockInterface (BodyManager &inBodyManager)
 Constructor.
 
virtual ~BodyLockInterface ()=default
 
MutexMask GetAllBodiesMutexMask () const
 Get the mask needed to lock all bodies.
 
BodyTryGetBody (const BodyID &inBodyID) const
 Convert body ID to body.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BodyLockInterface
using MutexMask = BodyManager::MutexMask
 Redefine MutexMask.
 
- Protected Attributes inherited from BodyLockInterface
BodyManagermBodyManager
 
+

Detailed Description

+

Implementation that performs no locking (assumes the lock has already been taken)

+

Member Function Documentation

+ +

◆ BodyLockInterface()

+ +
+
+ + + + + +
+ + + + + + + + +
BodyLockInterface::BodyLockInterface (BodyManagerinBodyManager)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+ +

◆ GetMutexMask()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual MutexMask BodyLockInterfaceNoLock::GetMutexMask (const BodyIDinBodies,
int inNumber 
) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ LockRead() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SharedMutex * BodyLockInterfaceNoLock::LockRead (const BodyIDinBodyID) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ LockRead() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterfaceNoLock::LockRead (MutexMask inMutexMask) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ LockWrite() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual SharedMutex * BodyLockInterfaceNoLock::LockWrite (const BodyIDinBodyID) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ LockWrite() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterfaceNoLock::LockWrite (MutexMask inMutexMask) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ UnlockRead() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterfaceNoLock::UnlockRead (MutexMask inMutexMask) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ UnlockRead() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterfaceNoLock::UnlockRead (SharedMutexinMutex) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ UnlockWrite() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterfaceNoLock::UnlockWrite (MutexMask inMutexMask) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+ +

◆ UnlockWrite() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BodyLockInterfaceNoLock::UnlockWrite (SharedMutexinMutex) const
+
+inlineoverridevirtual
+
+ +

Implements BodyLockInterface.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_lock_interface_no_lock.js b/class_body_lock_interface_no_lock.js new file mode 100644 index 000000000..3d11ab4aa --- /dev/null +++ b/class_body_lock_interface_no_lock.js @@ -0,0 +1,13 @@ +var class_body_lock_interface_no_lock = +[ + [ "BodyLockInterface", "class_body_lock_interface_no_lock.html#a502df83afc4e8e8e77d7a8b2993c1f8e", null ], + [ "GetMutexMask", "class_body_lock_interface_no_lock.html#a49bd93a0cda1adce88e20921774d94a6", null ], + [ "LockRead", "class_body_lock_interface_no_lock.html#a53465d00162795f90dd2fba3910723bd", null ], + [ "LockRead", "class_body_lock_interface_no_lock.html#ae134b2fa9fc485ed7b6db8283d6b2088", null ], + [ "LockWrite", "class_body_lock_interface_no_lock.html#a785146858bb1499ca0af9a45aeaeef2f", null ], + [ "LockWrite", "class_body_lock_interface_no_lock.html#a235037dc08d8880dab6ab247f4066b8a", null ], + [ "UnlockRead", "class_body_lock_interface_no_lock.html#a4d836b80b0c07e560833952731ccf407", null ], + [ "UnlockRead", "class_body_lock_interface_no_lock.html#ae073928dc06535a51719369ca70dda2f", null ], + [ "UnlockWrite", "class_body_lock_interface_no_lock.html#ab745b6ced33c003efdc5877c6756128d", null ], + [ "UnlockWrite", "class_body_lock_interface_no_lock.html#a6ecbc0cbe52514464956d3a49b73d79f", null ] +]; \ No newline at end of file diff --git a/class_body_lock_interface_no_lock.png b/class_body_lock_interface_no_lock.png new file mode 100644 index 000000000..6799f5fe7 Binary files /dev/null and b/class_body_lock_interface_no_lock.png differ diff --git a/class_body_lock_multi_base-members.html b/class_body_lock_multi_base-members.html new file mode 100644 index 000000000..c3bb48079 --- /dev/null +++ b/class_body_lock_multi_base-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyLockMultiBase< Write, BodyType > Member List
+
+
+ +

This is the complete list of members for BodyLockMultiBase< Write, BodyType >, including all inherited members.

+ + + + + + + + +
BodyLockMultiBase(const BodyLockInterface &inBodyLockInterface, const BodyID *inBodyIDs, int inNumber)BodyLockMultiBase< Write, BodyType >inline
GetBody(int inBodyIndex) constBodyLockMultiBase< Write, BodyType >inline
MutexMask typedefBodyLockMultiBase< Write, BodyType >
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~BodyLockMultiBase()BodyLockMultiBase< Write, BodyType >inline
+
+ + + + diff --git a/class_body_lock_multi_base.html b/class_body_lock_multi_base.html new file mode 100644 index 000000000..4e79aa1c5 --- /dev/null +++ b/class_body_lock_multi_base.html @@ -0,0 +1,290 @@ + + + + + + + +Jolt Physics: BodyLockMultiBase< Write, BodyType > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyLockMultiBase< Write, BodyType > Class Template Reference
+
+
+ +

Base class for locking multiple bodies for the duration of the scope of this class (do not use directly) + More...

+ +

#include <BodyLockMulti.h>

+
+Inheritance diagram for BodyLockMultiBase< Write, BodyType >:
+
+
+ + +NonCopyable + +
+ + + + + +

+Public Types

using MutexMask = BodyLockInterface::MutexMask
 Redefine MutexMask.
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 BodyLockMultiBase (const BodyLockInterface &inBodyLockInterface, const BodyID *inBodyIDs, int inNumber)
 Constructor will lock the bodies.
 
 ~BodyLockMultiBase ()
 Destructor will unlock the bodies.
 
BodyType * GetBody (int inBodyIndex) const
 Access the body (returns null if body was not properly locked)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+
template<bool Write, class BodyType>
+class BodyLockMultiBase< Write, BodyType >

Base class for locking multiple bodies for the duration of the scope of this class (do not use directly)

+

Member Typedef Documentation

+ +

◆ MutexMask

+ +
+
+
+template<bool Write, class BodyType >
+ + + + +
using BodyLockMultiBase< Write, BodyType >::MutexMask = BodyLockInterface::MutexMask
+
+ +

Redefine MutexMask.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ BodyLockMultiBase()

+ +
+
+
+template<bool Write, class BodyType >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BodyLockMultiBase< Write, BodyType >::BodyLockMultiBase (const BodyLockInterfaceinBodyLockInterface,
const BodyIDinBodyIDs,
int inNumber 
)
+
+inline
+
+ +

Constructor will lock the bodies.

+ +
+
+ +

◆ ~BodyLockMultiBase()

+ +
+
+
+template<bool Write, class BodyType >
+ + + + + +
+ + + + + + + +
BodyLockMultiBase< Write, BodyType >::~BodyLockMultiBase ()
+
+inline
+
+ +

Destructor will unlock the bodies.

+ +
+
+

Member Function Documentation

+ +

◆ GetBody()

+ +
+
+
+template<bool Write, class BodyType >
+ + + + + +
+ + + + + + + + +
BodyType * BodyLockMultiBase< Write, BodyType >::GetBody (int inBodyIndex) const
+
+inline
+
+ +

Access the body (returns null if body was not properly locked)

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_lock_multi_base.js b/class_body_lock_multi_base.js new file mode 100644 index 000000000..8f6dc8f91 --- /dev/null +++ b/class_body_lock_multi_base.js @@ -0,0 +1,7 @@ +var class_body_lock_multi_base = +[ + [ "MutexMask", "class_body_lock_multi_base.html#aed093a87a311d01a99c7818f4e766570", null ], + [ "BodyLockMultiBase", "class_body_lock_multi_base.html#a64d2906481b4018d8394f0d8cb199cc8", null ], + [ "~BodyLockMultiBase", "class_body_lock_multi_base.html#a609defeb89fbcc31c19ee6af88844601", null ], + [ "GetBody", "class_body_lock_multi_base.html#a4598ff93b693a8679203b4fc72965786", null ] +]; \ No newline at end of file diff --git a/class_body_lock_multi_base.png b/class_body_lock_multi_base.png new file mode 100644 index 000000000..d509f0039 Binary files /dev/null and b/class_body_lock_multi_base.png differ diff --git a/class_body_lock_multi_read-members.html b/class_body_lock_multi_read-members.html new file mode 100644 index 000000000..cbed08858 --- /dev/null +++ b/class_body_lock_multi_read-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyLockMultiRead Member List
+
+
+ +

This is the complete list of members for BodyLockMultiRead, including all inherited members.

+ + + + + + + +
GetBody(int inBodyIndex) constBodyLockMultiBase< false, const Body >inline
MutexMask typedefBodyLockMultiBase< false, const Body >
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~BodyLockMultiBase()BodyLockMultiBase< false, const Body >inline
+
+ + + + diff --git a/class_body_lock_multi_read.html b/class_body_lock_multi_read.html new file mode 100644 index 000000000..29351ec4e --- /dev/null +++ b/class_body_lock_multi_read.html @@ -0,0 +1,177 @@ + + + + + + + +Jolt Physics: BodyLockMultiRead Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyLockMultiRead Class Reference
+
+
+ +

#include <BodyLockMulti.h>

+
+Inheritance diagram for BodyLockMultiRead:
+
+
+ + +BodyLockMultiBase< false, const Body > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BodyLockMultiBase< false, const Body >
using MutexMask = BodyLockInterface::MutexMask
 Redefine MutexMask.
 
- Public Member Functions inherited from BodyLockMultiBase< false, const Body >
 BodyLockMultiBase (const BodyLockInterface &inBodyLockInterface, const BodyID *inBodyIDs, int inNumber)
 Constructor will lock the bodies.
 
 ~BodyLockMultiBase ()
 Destructor will unlock the bodies.
 
const BodyGetBody (int inBodyIndex) const
 Access the body (returns null if body was not properly locked)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

A multi body lock takes a number of body IDs and locks the underlying bodies so that other threads cannot access its members

+

The common usage pattern is:

BodyLockInterface lock_interface = physics_system.GetBodyLockInterface(); // Or non-locking interface if the lock is already taken
+const BodyID *body_id = ...; // Obtain IDs to bodies
+int num_body_ids = ...;
+
+// Scoped lock
+{
+    BodyLockMultiRead lock(lock_interface, body_ids, num_body_ids);
+    for (int i = 0; i < num_body_ids; ++i)
+    {
+        const Body *body = lock.GetBody(i);
+        if (body != nullptr)
+        {
+            const Body &body = lock.Body();
+
+            // Do something with body
+            ...
+        }
+    }
+} 
+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_lock_multi_read.png b/class_body_lock_multi_read.png new file mode 100644 index 000000000..359bde9d3 Binary files /dev/null and b/class_body_lock_multi_read.png differ diff --git a/class_body_lock_multi_write-members.html b/class_body_lock_multi_write-members.html new file mode 100644 index 000000000..16c0638b4 --- /dev/null +++ b/class_body_lock_multi_write-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyLockMultiWrite Member List
+
+
+ +

This is the complete list of members for BodyLockMultiWrite, including all inherited members.

+ + + + + + + +
GetBody(int inBodyIndex) constBodyLockMultiBase< true, Body >inline
MutexMask typedefBodyLockMultiBase< true, Body >
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~BodyLockMultiBase()BodyLockMultiBase< true, Body >inline
+
+ + + + diff --git a/class_body_lock_multi_write.html b/class_body_lock_multi_write.html new file mode 100644 index 000000000..c353d4545 --- /dev/null +++ b/class_body_lock_multi_write.html @@ -0,0 +1,162 @@ + + + + + + + +Jolt Physics: BodyLockMultiWrite Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyLockMultiWrite Class Reference
+
+
+ +

Specialization that locks multiple bodies for writing to. + More...

+ +

#include <BodyLockMulti.h>

+
+Inheritance diagram for BodyLockMultiWrite:
+
+
+ + +BodyLockMultiBase< true, Body > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BodyLockMultiBase< true, Body >
using MutexMask = BodyLockInterface::MutexMask
 Redefine MutexMask.
 
- Public Member Functions inherited from BodyLockMultiBase< true, Body >
 BodyLockMultiBase (const BodyLockInterface &inBodyLockInterface, const BodyID *inBodyIDs, int inNumber)
 Constructor will lock the bodies.
 
 ~BodyLockMultiBase ()
 Destructor will unlock the bodies.
 
BodyGetBody (int inBodyIndex) const
 Access the body (returns null if body was not properly locked)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Specialization that locks multiple bodies for writing to.

+
See also
BodyLockMultiRead for usage patterns.
+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_lock_multi_write.png b/class_body_lock_multi_write.png new file mode 100644 index 000000000..e0c2d87a1 Binary files /dev/null and b/class_body_lock_multi_write.png differ diff --git a/class_body_lock_read-members.html b/class_body_lock_read-members.html new file mode 100644 index 000000000..fcb7385bd --- /dev/null +++ b/class_body_lock_read-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyLockRead Member List
+
+
+ +

This is the complete list of members for BodyLockRead, including all inherited members.

+ + + + + + + + + +
GetBody() constBodyLockBase< false, const Body >inline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ReleaseLock()BodyLockBase< false, const Body >inline
Succeeded() constBodyLockBase< false, const Body >inline
SucceededAndIsInBroadPhase() constBodyLockBase< false, const Body >inline
~BodyLockBase()BodyLockBase< false, const Body >inline
+
+ + + + diff --git a/class_body_lock_read.html b/class_body_lock_read.html new file mode 100644 index 000000000..874bbc59b --- /dev/null +++ b/class_body_lock_read.html @@ -0,0 +1,177 @@ + + + + + + + +Jolt Physics: BodyLockRead Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyLockRead Class Reference
+
+
+ +

#include <BodyLock.h>

+
+Inheritance diagram for BodyLockRead:
+
+
+ + +BodyLockBase< false, const Body > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from BodyLockBase< false, const Body >
 BodyLockBase (const BodyLockInterface &inBodyLockInterface, const BodyID &inBodyID)
 Constructor will lock the body.
 
void ReleaseLock ()
 Explicitly release the lock (normally this is done in the destructor)
 
 ~BodyLockBase ()
 Destructor will unlock the body.
 
bool Succeeded () const
 Test if the lock was successful (if the body ID was valid)
 
bool SucceededAndIsInBroadPhase () const
 Test if the lock was successful (if the body ID was valid) and the body is still in the broad phase.
 
const BodyGetBody () const
 Access the body.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

A body lock takes a body ID and locks the underlying body so that other threads cannot access its members

+

The common usage pattern is:

BodyLockInterface lock_interface = physics_system.GetBodyLockInterface(); // Or non-locking interface if the lock is already taken
+BodyID body_id = ...; // Obtain ID to body
+
+// Scoped lock
+{
+    BodyLockRead lock(lock_interface, body_id);
+    if (lock.Succeeded()) // body_id may no longer be valid
+    {
+        const Body &body = lock.GetBody();
+
+        // Do something with body
+        ...
+    }
+} 
+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_lock_read.png b/class_body_lock_read.png new file mode 100644 index 000000000..98d05b9f4 Binary files /dev/null and b/class_body_lock_read.png differ diff --git a/class_body_lock_write-members.html b/class_body_lock_write-members.html new file mode 100644 index 000000000..0c8c5bfdb --- /dev/null +++ b/class_body_lock_write-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyLockWrite Member List
+
+
+ +

This is the complete list of members for BodyLockWrite, including all inherited members.

+ + + + + + + + + +
GetBody() constBodyLockBase< true, Body >inline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ReleaseLock()BodyLockBase< true, Body >inline
Succeeded() constBodyLockBase< true, Body >inline
SucceededAndIsInBroadPhase() constBodyLockBase< true, Body >inline
~BodyLockBase()BodyLockBase< true, Body >inline
+
+ + + + diff --git a/class_body_lock_write.html b/class_body_lock_write.html new file mode 100644 index 000000000..2df56ffa0 --- /dev/null +++ b/class_body_lock_write.html @@ -0,0 +1,167 @@ + + + + + + + +Jolt Physics: BodyLockWrite Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyLockWrite Class Reference
+
+
+ +

Specialization that locks a body for writing to. + More...

+ +

#include <BodyLock.h>

+
+Inheritance diagram for BodyLockWrite:
+
+
+ + +BodyLockBase< true, Body > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from BodyLockBase< true, Body >
 BodyLockBase (const BodyLockInterface &inBodyLockInterface, const BodyID &inBodyID)
 Constructor will lock the body.
 
void ReleaseLock ()
 Explicitly release the lock (normally this is done in the destructor)
 
 ~BodyLockBase ()
 Destructor will unlock the body.
 
bool Succeeded () const
 Test if the lock was successful (if the body ID was valid)
 
bool SucceededAndIsInBroadPhase () const
 Test if the lock was successful (if the body ID was valid) and the body is still in the broad phase.
 
BodyGetBody () const
 Access the body.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Specialization that locks a body for writing to.

+
See also
BodyLockRead for usage patterns.
+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_lock_write.png b/class_body_lock_write.png new file mode 100644 index 000000000..632589a0a Binary files /dev/null and b/class_body_lock_write.png differ diff --git a/class_body_manager-members.html b/class_body_manager-members.html new file mode 100644 index 000000000..bf33258d9 --- /dev/null +++ b/class_body_manager-members.html @@ -0,0 +1,167 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyManager Member List
+
+
+ +

This is the complete list of members for BodyManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActivateBodies(const BodyID *inBodyIDs, int inNumber)BodyManager
AddBody(Body *ioBody)BodyManager
AddBodyWithCustomID(Body *ioBody, const BodyID &inBodyID)BodyManager
AllocateBody(const BodyCreationSettings &inBodyCreationSettings) constBodyManager
AllocateSoftBody(const SoftBodyCreationSettings &inSoftBodyCreationSettings) constBodyManager
DeactivateBodies(const BodyID *inBodyIDs, int inNumber)BodyManager
DestroyBodies(const BodyID *inBodyIDs, int inNumber)BodyManager
Draw(const DrawSettings &inSettings, const PhysicsSettings &inPhysicsSettings, DebugRenderer *inRenderer, const BodyDrawFilter *inBodyFilter=nullptr)BodyManager
EShapeColor enum nameBodyManager
FreeBody(Body *inBody) constBodyManager
GetActiveBodies(EBodyType inType, BodyIDVector &outBodyIDs) constBodyManager
GetActiveBodiesUnsafe(EBodyType inType) constBodyManagerinline
GetAllBodiesMutexMask() constBodyManagerinline
GetBodies() constBodyManagerinline
GetBodies()BodyManagerinline
GetBody(const BodyID &inID) constBodyManagerinline
GetBody(const BodyID &inID)BodyManagerinline
GetBodyActivationListener() constBodyManagerinline
GetBodyIDs(BodyIDVector &outBodies) constBodyManager
GetBodyStats() constBodyManager
GetMaxBodies() constBodyManagerinline
GetMutexForBody(const BodyID &inID) constBodyManagerinline
GetMutexMask(const BodyID *inBodies, int inNumber) constBodyManager
GetNumActiveBodies(EBodyType inType) constBodyManagerinline
GetNumActiveCCDBodies() constBodyManagerinline
GetNumBodies() constBodyManager
Init(uint inMaxBodies, uint inNumBodyMutexes, const BroadPhaseLayerInterface &inLayerInterface)BodyManager
InvalidateContactCacheForBody(Body &ioBody)BodyManager
LockAllBodies() constBodyManager
LockRead(MutexMask inMutexMask) constBodyManager
LockWrite(MutexMask inMutexMask) constBodyManager
MutexMask typedefBodyManager
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
RemoveBodies(const BodyID *inBodyIDs, int inNumber, Body **outBodies)BodyManager
RestoreBodyState(Body &inBody, StateRecorder &inStream)BodyManager
RestoreState(StateRecorder &inStream)BodyManager
SaveBodyState(const Body &inBody, StateRecorder &inStream) constBodyManager
SaveState(StateRecorder &inStream, const StateRecorderFilter *inFilter) constBodyManager
SetBodyActivationListener(BodyActivationListener *inListener)BodyManager
SetBodyObjectLayerInternal(Body &ioBody, ObjectLayer inLayer) constBodyManagerinline
SetMotionQuality(Body &ioBody, EMotionQuality inMotionQuality)BodyManager
sIsValidBodyPointer(const Body *inBody)BodyManagerinlinestatic
TryGetBody(const BodyID &inID) constBodyManagerinline
TryGetBody(const BodyID &inID)BodyManagerinline
UnlockAllBodies() constBodyManager
UnlockRead(MutexMask inMutexMask) constBodyManager
UnlockWrite(MutexMask inMutexMask) constBodyManager
ValidateContactCacheForAllBodies()BodyManager
~BodyManager()BodyManager
+
+ + + + diff --git a/class_body_manager.html b/class_body_manager.html new file mode 100644 index 000000000..f0e3156a2 --- /dev/null +++ b/class_body_manager.html @@ -0,0 +1,1542 @@ + + + + + + + +Jolt Physics: BodyManager Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyManager Class Reference
+
+
+ +

Class that contains all bodies. + More...

+ +

#include <BodyManager.h>

+
+Inheritance diagram for BodyManager:
+
+
+ + +NonCopyable + +
+ + + + + + + + +

+Classes

struct  BodyStats
 Helper struct that counts the number of bodies of each type. More...
 
struct  DrawSettings
 Draw settings. More...
 
+ + + + + + +

+Public Types

enum class  EShapeColor {
+  InstanceColor +, ShapeTypeColor +, MotionTypeColor +, SleepColor +,
+  IslandColor +, MaterialColor +
+ }
 
using MutexMask = uint64
 Bodies are protected using an array of mutexes (so a fixed number, not 1 per body). Each bit in this mask indicates a locked mutex.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ~BodyManager ()
 Destructor.
 
void Init (uint inMaxBodies, uint inNumBodyMutexes, const BroadPhaseLayerInterface &inLayerInterface)
 Initialize the manager.
 
uint GetNumBodies () const
 Gets the current amount of bodies that are in the body manager.
 
uint GetMaxBodies () const
 Gets the max bodies that we can support.
 
BodyStats GetBodyStats () const
 Get stats about the bodies in the body manager (slow, iterates through all bodies)
 
BodyAllocateBody (const BodyCreationSettings &inBodyCreationSettings) const
 Create a body using creation settings. The returned body will not be part of the body manager yet.
 
BodyAllocateSoftBody (const SoftBodyCreationSettings &inSoftBodyCreationSettings) const
 Create a soft body using creation settings. The returned body will not be part of the body manager yet.
 
void FreeBody (Body *inBody) const
 Free a body that has not been added to the body manager yet (if it has, use DestroyBodies).
 
bool AddBody (Body *ioBody)
 Add a body to the body manager, assigning it the next available ID. Returns false if no more IDs are available.
 
bool AddBodyWithCustomID (Body *ioBody, const BodyID &inBodyID)
 Add a body to the body manager, assigning it a custom ID. Returns false if the ID is not valid.
 
void RemoveBodies (const BodyID *inBodyIDs, int inNumber, Body **outBodies)
 Remove a list of bodies from the body manager.
 
void DestroyBodies (const BodyID *inBodyIDs, int inNumber)
 Remove a set of bodies from the body manager and frees them.
 
void ActivateBodies (const BodyID *inBodyIDs, int inNumber)
 
void DeactivateBodies (const BodyID *inBodyIDs, int inNumber)
 
void SetMotionQuality (Body &ioBody, EMotionQuality inMotionQuality)
 Update the motion quality for a body.
 
void GetActiveBodies (EBodyType inType, BodyIDVector &outBodyIDs) const
 Get copy of the list of active bodies under protection of a lock.
 
const BodyIDGetActiveBodiesUnsafe (EBodyType inType) const
 Get the list of active bodies. Note: Not thread safe. The active bodies list can change at any moment.
 
uint32 GetNumActiveBodies (EBodyType inType) const
 Get the number of active bodies.
 
uint32 GetNumActiveCCDBodies () const
 Get the number of active bodies that are using continuous collision detection.
 
void SetBodyActivationListener (BodyActivationListener *inListener)
 Listener that is notified whenever a body is activated/deactivated.
 
BodyActivationListenerGetBodyActivationListener () const
 
const BodyVectorGetBodies () const
 Get all bodies. Note that this can contain invalid body pointers, call sIsValidBodyPointer to check.
 
BodyVectorGetBodies ()
 Get all bodies. Note that this can contain invalid body pointers, call sIsValidBodyPointer to check.
 
void GetBodyIDs (BodyIDVector &outBodies) const
 Get all body IDs under the protection of a lock.
 
const BodyGetBody (const BodyID &inID) const
 Access a body (not protected by lock)
 
BodyGetBody (const BodyID &inID)
 Access a body (not protected by lock)
 
const BodyTryGetBody (const BodyID &inID) const
 Access a body, will return a nullptr if the body ID is no longer valid (not protected by lock)
 
BodyTryGetBody (const BodyID &inID)
 Access a body, will return a nullptr if the body ID is no longer valid (not protected by lock)
 
SharedMutexGetMutexForBody (const BodyID &inID) const
 Access the mutex for a single body.
 
void LockAllBodies () const
 Lock all bodies. This should only be done during PhysicsSystem::Update().
 
void UnlockAllBodies () const
 Unlock all bodies. This should only be done during PhysicsSystem::Update().
 
void SetBodyObjectLayerInternal (Body &ioBody, ObjectLayer inLayer) const
 Function to update body's layer (should only be called by the BodyInterface since it also requires updating the broadphase)
 
void InvalidateContactCacheForBody (Body &ioBody)
 Set the Body::EFlags::InvalidateContactCache flag for the specified body. This means that the collision cache is invalid for any body pair involving that body until the next physics step.
 
void ValidateContactCacheForAllBodies ()
 Reset the Body::EFlags::InvalidateContactCache flag for all bodies. All contact pairs in the contact cache will now by valid again.
 
void SaveState (StateRecorder &inStream, const StateRecorderFilter *inFilter) const
 Saving state for replay.
 
bool RestoreState (StateRecorder &inStream)
 Restoring state for replay. Returns false if failed.
 
void SaveBodyState (const Body &inBody, StateRecorder &inStream) const
 Save the state of a single body for replay.
 
void RestoreBodyState (Body &inBody, StateRecorder &inStream)
 Save the state of a single body for replay.
 
void Draw (const DrawSettings &inSettings, const PhysicsSettings &inPhysicsSettings, DebugRenderer *inRenderer, const BodyDrawFilter *inBodyFilter=nullptr)
 Draw the state of the bodies (debugging purposes)
 
Batch body mutex access (do not use directly)
MutexMask GetAllBodiesMutexMask () const
 
MutexMask GetMutexMask (const BodyID *inBodies, int inNumber) const
 
void LockRead (MutexMask inMutexMask) const
 
void UnlockRead (MutexMask inMutexMask) const
 
void LockWrite (MutexMask inMutexMask) const
 
void UnlockWrite (MutexMask inMutexMask) const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + +

+Static Public Member Functions

static bool sIsValidBodyPointer (const Body *inBody)
 Check if this is a valid body pointer. When a body is freed the memory that the pointer occupies is reused to store a freelist.
 
+

Detailed Description

+

Class that contains all bodies.

+

Member Typedef Documentation

+ +

◆ MutexMask

+ +
+
+ + + + +
using BodyManager::MutexMask = uint64
+
+ +

Bodies are protected using an array of mutexes (so a fixed number, not 1 per body). Each bit in this mask indicates a locked mutex.

+ +
+
+

Member Enumeration Documentation

+ +

◆ EShapeColor

+ +
+
+ + + + + +
+ + + + +
enum class BodyManager::EShapeColor
+
+strong
+
+ + + + + + + +
Enumerator
InstanceColor 

Random color per instance.

+
ShapeTypeColor 

Convex = green, scaled = yellow, compound = orange, mesh = red.

+
MotionTypeColor 

Static = grey, keyframed = green, dynamic = random color per instance.

+
SleepColor 

Static = grey, keyframed = green, dynamic = yellow, sleeping = red.

+
IslandColor 

Static = grey, active = random color per island, sleeping = light grey.

+
MaterialColor 

Color as defined by the PhysicsMaterial of the shape.

+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~BodyManager()

+ +
+
+ + + + + + + +
BodyManager::~BodyManager ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ ActivateBodies()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyManager::ActivateBodies (const BodyIDinBodyIDs,
int inNumber 
)
+
+

Activate a list of bodies. This function should only be called when an exclusive lock for the bodies are held.

+ +
+
+ +

◆ AddBody()

+ +
+
+ + + + + + + + +
bool BodyManager::AddBody (BodyioBody)
+
+ +

Add a body to the body manager, assigning it the next available ID. Returns false if no more IDs are available.

+ +
+
+ +

◆ AddBodyWithCustomID()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool BodyManager::AddBodyWithCustomID (BodyioBody,
const BodyIDinBodyID 
)
+
+ +

Add a body to the body manager, assigning it a custom ID. Returns false if the ID is not valid.

+ +
+
+ +

◆ AllocateBody()

+ +
+
+ + + + + + + + +
Body * BodyManager::AllocateBody (const BodyCreationSettingsinBodyCreationSettings) const
+
+ +

Create a body using creation settings. The returned body will not be part of the body manager yet.

+ +
+
+ +

◆ AllocateSoftBody()

+ +
+
+ + + + + + + + +
Body * BodyManager::AllocateSoftBody (const SoftBodyCreationSettingsinSoftBodyCreationSettings) const
+
+ +

Create a soft body using creation settings. The returned body will not be part of the body manager yet.

+ +
+
+ +

◆ DeactivateBodies()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyManager::DeactivateBodies (const BodyIDinBodyIDs,
int inNumber 
)
+
+

Deactivate a list of bodies. This function should only be called when an exclusive lock for the bodies are held.

+ +
+
+ +

◆ DestroyBodies()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyManager::DestroyBodies (const BodyIDinBodyIDs,
int inNumber 
)
+
+ +

Remove a set of bodies from the body manager and frees them.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BodyManager::Draw (const DrawSettingsinSettings,
const PhysicsSettingsinPhysicsSettings,
DebugRendererinRenderer,
const BodyDrawFilterinBodyFilter = nullptr 
)
+
+ +

Draw the state of the bodies (debugging purposes)

+ +
+
+ +

◆ FreeBody()

+ +
+
+ + + + + + + + +
void BodyManager::FreeBody (BodyinBody) const
+
+ +

Free a body that has not been added to the body manager yet (if it has, use DestroyBodies).

+ +
+
+ +

◆ GetActiveBodies()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyManager::GetActiveBodies (EBodyType inType,
BodyIDVectoroutBodyIDs 
) const
+
+ +

Get copy of the list of active bodies under protection of a lock.

+ +
+
+ +

◆ GetActiveBodiesUnsafe()

+ +
+
+ + + + + +
+ + + + + + + + +
const BodyID * BodyManager::GetActiveBodiesUnsafe (EBodyType inType) const
+
+inline
+
+ +

Get the list of active bodies. Note: Not thread safe. The active bodies list can change at any moment.

+ +
+
+ +

◆ GetAllBodiesMutexMask()

+ +
+
+ + + + + +
+ + + + + + + +
MutexMask BodyManager::GetAllBodiesMutexMask () const
+
+inline
+
+ +
+
+ +

◆ GetBodies() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
BodyVector & BodyManager::GetBodies ()
+
+inline
+
+ +

Get all bodies. Note that this can contain invalid body pointers, call sIsValidBodyPointer to check.

+ +
+
+ +

◆ GetBodies() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const BodyVector & BodyManager::GetBodies () const
+
+inline
+
+ +

Get all bodies. Note that this can contain invalid body pointers, call sIsValidBodyPointer to check.

+ +
+
+ +

◆ GetBody() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Body & BodyManager::GetBody (const BodyIDinID)
+
+inline
+
+ +

Access a body (not protected by lock)

+ +
+
+ +

◆ GetBody() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
const Body & BodyManager::GetBody (const BodyIDinID) const
+
+inline
+
+ +

Access a body (not protected by lock)

+ +
+
+ +

◆ GetBodyActivationListener()

+ +
+
+ + + + + +
+ + + + + + + +
BodyActivationListener * BodyManager::GetBodyActivationListener () const
+
+inline
+
+ +
+
+ +

◆ GetBodyIDs()

+ +
+
+ + + + + + + + +
void BodyManager::GetBodyIDs (BodyIDVectoroutBodies) const
+
+ +

Get all body IDs under the protection of a lock.

+ +
+
+ +

◆ GetBodyStats()

+ +
+
+ + + + + + + +
BodyManager::BodyStats BodyManager::GetBodyStats () const
+
+ +

Get stats about the bodies in the body manager (slow, iterates through all bodies)

+ +
+
+ +

◆ GetMaxBodies()

+ +
+
+ + + + + +
+ + + + + + + +
uint BodyManager::GetMaxBodies () const
+
+inline
+
+ +

Gets the max bodies that we can support.

+ +
+
+ +

◆ GetMutexForBody()

+ +
+
+ + + + + +
+ + + + + + + + +
SharedMutex & BodyManager::GetMutexForBody (const BodyIDinID) const
+
+inline
+
+ +

Access the mutex for a single body.

+ +
+
+ +

◆ GetMutexMask()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BodyManager::MutexMask BodyManager::GetMutexMask (const BodyIDinBodies,
int inNumber 
) const
+
+ +
+
+ +

◆ GetNumActiveBodies()

+ +
+
+ + + + + +
+ + + + + + + + +
uint32 BodyManager::GetNumActiveBodies (EBodyType inType) const
+
+inline
+
+ +

Get the number of active bodies.

+ +
+
+ +

◆ GetNumActiveCCDBodies()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 BodyManager::GetNumActiveCCDBodies () const
+
+inline
+
+ +

Get the number of active bodies that are using continuous collision detection.

+ +
+
+ +

◆ GetNumBodies()

+ +
+
+ + + + + + + +
uint BodyManager::GetNumBodies () const
+
+ +

Gets the current amount of bodies that are in the body manager.

+ +
+
+ +

◆ Init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyManager::Init (uint inMaxBodies,
uint inNumBodyMutexes,
const BroadPhaseLayerInterfaceinLayerInterface 
)
+
+ +

Initialize the manager.

+ +
+
+ +

◆ InvalidateContactCacheForBody()

+ +
+
+ + + + + + + + +
void BodyManager::InvalidateContactCacheForBody (BodyioBody)
+
+ +

Set the Body::EFlags::InvalidateContactCache flag for the specified body. This means that the collision cache is invalid for any body pair involving that body until the next physics step.

+ +
+
+ +

◆ LockAllBodies()

+ +
+
+ + + + + + + +
void BodyManager::LockAllBodies () const
+
+ +

Lock all bodies. This should only be done during PhysicsSystem::Update().

+ +
+
+ +

◆ LockRead()

+ +
+
+ + + + + + + + +
void BodyManager::LockRead (MutexMask inMutexMask) const
+
+ +
+
+ +

◆ LockWrite()

+ +
+
+ + + + + + + + +
void BodyManager::LockWrite (MutexMask inMutexMask) const
+
+ +
+
+ +

◆ RemoveBodies()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BodyManager::RemoveBodies (const BodyIDinBodyIDs,
int inNumber,
Body ** outBodies 
)
+
+ +

Remove a list of bodies from the body manager.

+ +
+
+ +

◆ RestoreBodyState()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyManager::RestoreBodyState (BodyinBody,
StateRecorderinStream 
)
+
+ +

Save the state of a single body for replay.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + + + + +
bool BodyManager::RestoreState (StateRecorderinStream)
+
+ +

Restoring state for replay. Returns false if failed.

+ +
+
+ +

◆ SaveBodyState()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyManager::SaveBodyState (const BodyinBody,
StateRecorderinStream 
) const
+
+ +

Save the state of a single body for replay.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyManager::SaveState (StateRecorderinStream,
const StateRecorderFilterinFilter 
) const
+
+ +

Saving state for replay.

+ +
+
+ +

◆ SetBodyActivationListener()

+ +
+
+ + + + + + + + +
void BodyManager::SetBodyActivationListener (BodyActivationListenerinListener)
+
+ +

Listener that is notified whenever a body is activated/deactivated.

+ +
+
+ +

◆ SetBodyObjectLayerInternal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BodyManager::SetBodyObjectLayerInternal (BodyioBody,
ObjectLayer inLayer 
) const
+
+inline
+
+ +

Function to update body's layer (should only be called by the BodyInterface since it also requires updating the broadphase)

+ +
+
+ +

◆ SetMotionQuality()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BodyManager::SetMotionQuality (BodyioBody,
EMotionQuality inMotionQuality 
)
+
+ +

Update the motion quality for a body.

+ +
+
+ +

◆ sIsValidBodyPointer()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool BodyManager::sIsValidBodyPointer (const BodyinBody)
+
+inlinestatic
+
+ +

Check if this is a valid body pointer. When a body is freed the memory that the pointer occupies is reused to store a freelist.

+ +
+
+ +

◆ TryGetBody() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Body * BodyManager::TryGetBody (const BodyIDinID)
+
+inline
+
+ +

Access a body, will return a nullptr if the body ID is no longer valid (not protected by lock)

+ +
+
+ +

◆ TryGetBody() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
const Body * BodyManager::TryGetBody (const BodyIDinID) const
+
+inline
+
+ +

Access a body, will return a nullptr if the body ID is no longer valid (not protected by lock)

+ +
+
+ +

◆ UnlockAllBodies()

+ +
+
+ + + + + + + +
void BodyManager::UnlockAllBodies () const
+
+ +

Unlock all bodies. This should only be done during PhysicsSystem::Update().

+ +
+
+ +

◆ UnlockRead()

+ +
+
+ + + + + + + + +
void BodyManager::UnlockRead (MutexMask inMutexMask) const
+
+ +
+
+ +

◆ UnlockWrite()

+ +
+
+ + + + + + + + +
void BodyManager::UnlockWrite (MutexMask inMutexMask) const
+
+ +
+
+ +

◆ ValidateContactCacheForAllBodies()

+ +
+
+ + + + + + + +
void BodyManager::ValidateContactCacheForAllBodies ()
+
+ +

Reset the Body::EFlags::InvalidateContactCache flag for all bodies. All contact pairs in the contact cache will now by valid again.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_body_manager.js b/class_body_manager.js new file mode 100644 index 000000000..5ca6a1603 --- /dev/null +++ b/class_body_manager.js @@ -0,0 +1,59 @@ +var class_body_manager = +[ + [ "BodyStats", "struct_body_manager_1_1_body_stats.html", "struct_body_manager_1_1_body_stats" ], + [ "DrawSettings", "struct_body_manager_1_1_draw_settings.html", "struct_body_manager_1_1_draw_settings" ], + [ "MutexMask", "class_body_manager.html#aee0d75a5176680f7c00728fa33cbe9e2", null ], + [ "EShapeColor", "class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2", [ + [ "InstanceColor", "class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2a99ee1c53265abeecfe720f4bc3fc44a6", null ], + [ "ShapeTypeColor", "class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2ae474501d8e6be0d0983214885896073a", null ], + [ "MotionTypeColor", "class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2ac415a727aec99b44707c3555b360c85b", null ], + [ "SleepColor", "class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2ac00cf17870a7f30bd11fb50ca2b66709", null ], + [ "IslandColor", "class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2a3396ca60625ec56b88b34019e16d5121", null ], + [ "MaterialColor", "class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2ae4a9ebce3bde9cd56c2cccdf58d392a0", null ] + ] ], + [ "~BodyManager", "class_body_manager.html#afad1dc5c74c430f9210a84e553d259ee", null ], + [ "ActivateBodies", "class_body_manager.html#aecdc4718d0c9ccf33f9eaf2a42c6ab79", null ], + [ "AddBody", "class_body_manager.html#aa7e0cc82ef6c860655af523205fd9cb6", null ], + [ "AddBodyWithCustomID", "class_body_manager.html#ad8c3c4c7e6257244b81cfa8bc590149b", null ], + [ "AllocateBody", "class_body_manager.html#ab90b6879d9b21e0301102dd1f5791cb2", null ], + [ "AllocateSoftBody", "class_body_manager.html#a003634616068c3e51029c38e77de7fec", null ], + [ "DeactivateBodies", "class_body_manager.html#ac8e13efcbe3e2fab505e2c9047f9d2ef", null ], + [ "DestroyBodies", "class_body_manager.html#a5c0cc30ec7f2c4a5bcd1119906a6632e", null ], + [ "Draw", "class_body_manager.html#a877463f0189e8e131edec5d83413726b", null ], + [ "FreeBody", "class_body_manager.html#ac9b3fea305ee74fb2cb1d70d4773aee0", null ], + [ "GetActiveBodies", "class_body_manager.html#aae54df1753149fbac33cb8ea6f930da7", null ], + [ "GetActiveBodiesUnsafe", "class_body_manager.html#ac646f95e699a7d4525d65407ee3bea69", null ], + [ "GetAllBodiesMutexMask", "class_body_manager.html#a4e54107c92d7ac62098e267ab8d16eb2", null ], + [ "GetBodies", "class_body_manager.html#ace4bb400f2a6b4f17e04aa10134dee4f", null ], + [ "GetBodies", "class_body_manager.html#ac6c6a208195a666e62fc3bd9c4456bfa", null ], + [ "GetBody", "class_body_manager.html#a2ac7db2095cb425b04bdad508e2acc4f", null ], + [ "GetBody", "class_body_manager.html#ae89bc88048a56cbf21d70e78ec142a18", null ], + [ "GetBodyActivationListener", "class_body_manager.html#a3bb9c3e62332a39fd9ac1eac4c12ca52", null ], + [ "GetBodyIDs", "class_body_manager.html#aa65000b18f18a1d02bf432446dff7c05", null ], + [ "GetBodyStats", "class_body_manager.html#a63c55f1d5d3ed30c4aa6a19ad14713ac", null ], + [ "GetMaxBodies", "class_body_manager.html#ad54b2a378ee3653de2130da1ab3f69a5", null ], + [ "GetMutexForBody", "class_body_manager.html#a608703b173fa10233dfd617150a2db67", null ], + [ "GetMutexMask", "class_body_manager.html#a447a132451ef5c4def8e0c51450b2701", null ], + [ "GetNumActiveBodies", "class_body_manager.html#afc847edf3623bce165d4c872f0dc4d68", null ], + [ "GetNumActiveCCDBodies", "class_body_manager.html#a462f40b51e2bbdae500c62584d0376be", null ], + [ "GetNumBodies", "class_body_manager.html#a28e008be233691bbccef7d17e20d113d", null ], + [ "Init", "class_body_manager.html#a2d0f5cce4bc65b5dd60e79edc37fd0d9", null ], + [ "InvalidateContactCacheForBody", "class_body_manager.html#a2d9975b3a1fb311c3956820eae65b7ce", null ], + [ "LockAllBodies", "class_body_manager.html#a425eaf59b68a237d6821267ed1474f35", null ], + [ "LockRead", "class_body_manager.html#ab9fe4438ea3c96fa4b2cbc724f425024", null ], + [ "LockWrite", "class_body_manager.html#a21232e25b634203c299d6192180b6fe6", null ], + [ "RemoveBodies", "class_body_manager.html#a2a65ea34748b9f3f354d4325f905ab1c", null ], + [ "RestoreBodyState", "class_body_manager.html#ad1de147dfb454f5963629a98489c1159", null ], + [ "RestoreState", "class_body_manager.html#af64512a91a78f48a75c5cead5552e281", null ], + [ "SaveBodyState", "class_body_manager.html#ab1eb2a2bbf12bbe839475093826b6ceb", null ], + [ "SaveState", "class_body_manager.html#a5fcbaca9d9a52129a56451ce519e9598", null ], + [ "SetBodyActivationListener", "class_body_manager.html#a5f4202f0ef087177b642a93c13d82d9a", null ], + [ "SetBodyObjectLayerInternal", "class_body_manager.html#ae42a0183320aaebe459af6b0cc937daf", null ], + [ "SetMotionQuality", "class_body_manager.html#af449412eb723ffe93a193d9b9aa86f3b", null ], + [ "TryGetBody", "class_body_manager.html#a57535e1d1645cc00b57fb7e8ecccc259", null ], + [ "TryGetBody", "class_body_manager.html#ac441f5d6015c113423972740f3e2815f", null ], + [ "UnlockAllBodies", "class_body_manager.html#a5bfccfc12e83e13bc8ed0ceacff6ccc3", null ], + [ "UnlockRead", "class_body_manager.html#a3cfb772a46e7495234f6f14bff09ba99", null ], + [ "UnlockWrite", "class_body_manager.html#a27ee56a1128b6d9df49d56ea8308d95b", null ], + [ "ValidateContactCacheForAllBodies", "class_body_manager.html#a4e5f1bfab762cd561b21320d97ef0594", null ] +]; \ No newline at end of file diff --git a/class_body_manager.png b/class_body_manager.png new file mode 100644 index 000000000..59d5cd87c Binary files /dev/null and b/class_body_manager.png differ diff --git a/class_body_with_motion_properties-members.html b/class_body_with_motion_properties-members.html new file mode 100644 index 000000000..5b45a3337 --- /dev/null +++ b/class_body_with_motion_properties-members.html @@ -0,0 +1,215 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BodyWithMotionProperties Member List
+
+
+ +

This is the complete list of members for BodyWithMotionProperties, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddAngularImpulse(Vec3Arg inAngularImpulse)Bodyinline
AddForce(Vec3Arg inForce)Bodyinline
AddForce(Vec3Arg inForce, RVec3Arg inPosition)Bodyinline
AddImpulse(Vec3Arg inImpulse)Bodyinline
AddImpulse(Vec3Arg inImpulse, RVec3Arg inPosition)Bodyinline
AddPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)Bodyinline
AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)Bodyinline
AddTorque(Vec3Arg inTorque)Bodyinline
ApplyBuoyancyImpulse(RVec3Arg inSurfacePosition, Vec3Arg inSurfaceNormal, float inBuoyancy, float inLinearDrag, float inAngularDrag, Vec3Arg inFluidVelocity, Vec3Arg inGravity, float inDeltaTime)Body
CalculateWorldSpaceBoundsInternal()Body
CanBeKinematicOrDynamic() constBodyinline
cInactiveIndexBodystatic
GetAccumulatedForce() constBodyinline
GetAccumulatedTorque() constBodyinline
GetAllowSleeping() constBodyinline
GetAngularVelocity() constBodyinline
GetApplyGyroscopicForce() constBodyinline
GetBodyCreationSettings() constBody
GetBodyType() constBodyinline
GetBroadPhaseLayer() constBodyinline
GetCenterOfMassPosition() constBodyinline
GetCenterOfMassTransform() constBodyinline
GetCollideKinematicVsNonDynamic() constBodyinline
GetCollisionGroup() constBodyinline
GetCollisionGroup()Bodyinline
GetEnhancedInternalEdgeRemoval() constBodyinline
GetEnhancedInternalEdgeRemovalWithBody(const Body &inBody2) constBodyinline
GetFriction() constBodyinline
GetID() constBodyinline
GetIndexInActiveBodiesInternal() constBodyinline
GetInverseCenterOfMassTransform() constBodyinline
GetInverseInertia() constBodyinline
GetLinearVelocity() constBodyinline
GetMotionProperties() constBodyinline
GetMotionProperties()Bodyinline
GetMotionPropertiesUnchecked() constBodyinline
GetMotionPropertiesUnchecked()Bodyinline
GetMotionType() constBodyinline
GetObjectLayer() constBodyinline
GetPointVelocity(RVec3Arg inPoint) constBodyinline
GetPointVelocityCOM(Vec3Arg inPointRelativeToCOM) constBodyinline
GetPosition() constBodyinline
GetRestitution() constBodyinline
GetRotation() constBodyinline
GetShape() constBodyinline
GetSoftBodyCreationSettings() constBody
GetTransformedShape() constBodyinline
GetUseManifoldReduction() constBodyinline
GetUseManifoldReductionWithBody(const Body &inBody2) constBodyinline
GetUserData() constBodyinline
GetWorldSpaceBounds() constBodyinline
GetWorldSpaceSurfaceNormal(const SubShapeID &inSubShapeID, RVec3Arg inPosition) constBodyinline
GetWorldTransform() constBodyinline
InvalidateContactCacheInternal()Bodyinline
IsActive() constBodyinline
IsCollisionCacheInvalid() constBodyinline
IsDynamic() constBodyinline
IsInBroadPhase() constBodyinline
IsKinematic() constBodyinline
IsRigidBody() constBodyinline
IsSensor() constBodyinline
IsSoftBody() constBodyinline
IsStatic() constBodyinline
mMotionPropertiesBodyWithMotionProperties
MoveKinematic(RVec3Arg inTargetPosition, QuatArg inTargetRotation, float inDeltaTime)Body
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ResetForce()Bodyinline
ResetMotion()Bodyinline
ResetSleepTimer()Bodyinline
ResetTorque()Bodyinline
RestoreState(StateRecorder &inStream)Body
SaveState(StateRecorder &inStream) constBody
SetAllowSleeping(bool inAllow)Body
SetAngularVelocity(Vec3Arg inAngularVelocity)Bodyinline
SetAngularVelocityClamped(Vec3Arg inAngularVelocity)Bodyinline
SetApplyGyroscopicForce(bool inApply)Bodyinline
SetCollideKinematicVsNonDynamic(bool inCollide)Bodyinline
SetCollisionGroup(const CollisionGroup &inGroup)Bodyinline
SetEnhancedInternalEdgeRemoval(bool inApply)Bodyinline
SetFriction(float inFriction)Bodyinline
SetInBroadPhaseInternal(bool inInBroadPhase)Bodyinline
SetIsSensor(bool inIsSensor)Bodyinline
SetLinearVelocity(Vec3Arg inLinearVelocity)Bodyinline
SetLinearVelocityClamped(Vec3Arg inLinearVelocity)Bodyinline
SetMotionType(EMotionType inMotionType)Body
SetPositionAndRotationInternal(RVec3Arg inPosition, QuatArg inRotation, bool inResetSleepTimer=true)Body
SetRestitution(float inRestitution)Bodyinline
SetShapeInternal(const Shape *inShape, bool inUpdateMassProperties)Body
SetUseManifoldReduction(bool inUseReduction)Bodyinline
SetUserData(uint64 inUserData)Bodyinline
sFindCollidingPairsCanCollide(const Body &inBody1, const Body &inBody2)Bodyinlinestatic
sFixedToWorldBodystatic
SubPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)Bodyinline
SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)Bodyinline
UpdateCenterOfMassInternal(Vec3Arg inPreviousCenterOfMass, bool inUpdateMassProperties)Body
UpdateSleepStateInternal(float inDeltaTime, float inMaxMovement, float inTimeBeforeSleep)Body
ValidateContactCacheInternal()Bodyinline
+
+ + + + diff --git a/class_body_with_motion_properties.html b/class_body_with_motion_properties.html new file mode 100644 index 000000000..5e5fc01c1 --- /dev/null +++ b/class_body_with_motion_properties.html @@ -0,0 +1,427 @@ + + + + + + + +Jolt Physics: BodyWithMotionProperties Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BodyWithMotionProperties Class Reference
+
+
+
+Inheritance diagram for BodyWithMotionProperties:
+
+
+ + +Body +NonCopyable + +
+ + + + +

+Public Attributes

JPH_OVERRIDE_NEW_DELETE MotionProperties mMotionProperties
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from Body
JPH_OVERRIDE_NEW_DELETE const BodyIDGetID () const
 Get the id of this body.
 
EBodyType GetBodyType () const
 Get the type of body (rigid or soft)
 
bool IsRigidBody () const
 Check if this body is a rigid body.
 
bool IsSoftBody () const
 Check if this body is a soft body.
 
bool IsActive () const
 If this body is currently actively simulating (true) or sleeping (false)
 
bool IsStatic () const
 Check if this body is static (not movable)
 
bool IsKinematic () const
 Check if this body is kinematic (keyframed), which means that it will move according to its current velocity, but forces don't affect it.
 
bool IsDynamic () const
 Check if this body is dynamic, which means that it moves and forces can act on it.
 
bool CanBeKinematicOrDynamic () const
 Check if a body could be made kinematic or dynamic (if it was created dynamic or with mAllowDynamicOrKinematic set to true)
 
void SetIsSensor (bool inIsSensor)
 
bool IsSensor () const
 Check if this body is a sensor.
 
void SetCollideKinematicVsNonDynamic (bool inCollide)
 
bool GetCollideKinematicVsNonDynamic () const
 Check if kinematic objects can generate contact points against other kinematic or static objects.
 
void SetUseManifoldReduction (bool inUseReduction)
 
bool GetUseManifoldReduction () const
 Check if this body can use manifold reduction.
 
bool GetUseManifoldReductionWithBody (const Body &inBody2) const
 Checks if the combination of this body and inBody2 should use manifold reduction.
 
void SetApplyGyroscopicForce (bool inApply)
 Set to indicate that the gyroscopic force should be applied to this body (aka Dzhanibekov effect, see https://en.wikipedia.org/wiki/Tennis_racket_theorem)
 
bool GetApplyGyroscopicForce () const
 Check if the gyroscopic force is being applied for this body.
 
void SetEnhancedInternalEdgeRemoval (bool inApply)
 Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.
 
bool GetEnhancedInternalEdgeRemoval () const
 Check if enhanced internal edge removal is turned on.
 
bool GetEnhancedInternalEdgeRemovalWithBody (const Body &inBody2) const
 Checks if the combination of this body and inBody2 should use enhanced internal edge removal.
 
EMotionType GetMotionType () const
 Get the bodies motion type.
 
void SetMotionType (EMotionType inMotionType)
 Set the motion type of this body. Consider using BodyInterface::SetMotionType instead of this function if the body may be active or if it needs to be activated.
 
BroadPhaseLayer GetBroadPhaseLayer () const
 Get broadphase layer, this determines in which broad phase sub-tree the object is placed.
 
ObjectLayer GetObjectLayer () const
 Get object layer, this determines which other objects it collides with.
 
const CollisionGroupGetCollisionGroup () const
 Collision group and sub-group ID, determines which other objects it collides with.
 
CollisionGroupGetCollisionGroup ()
 
void SetCollisionGroup (const CollisionGroup &inGroup)
 
bool GetAllowSleeping () const
 If this body can go to sleep. Note that disabling sleeping on a sleeping object will not wake it up.
 
void SetAllowSleeping (bool inAllow)
 
void ResetSleepTimer ()
 Resets the sleep timer. This does not wake up the body if it is sleeping, but allows resetting the system that detects when a body is sleeping.
 
float GetFriction () const
 Friction (dimensionless number, usually between 0 and 1, 0 = no friction, 1 = friction force equals force that presses the two bodies together). Note that bodies can have negative friction but the combined friction (see PhysicsSystem::SetCombineFriction) should never go below zero.
 
void SetFriction (float inFriction)
 
float GetRestitution () const
 Restitution (dimensionless number, usually between 0 and 1, 0 = completely inelastic collision response, 1 = completely elastic collision response). Note that bodies can have negative restitution but the combined restitution (see PhysicsSystem::SetCombineRestitution) should never go below zero.
 
void SetRestitution (float inRestitution)
 
Vec3 GetLinearVelocity () const
 Get world space linear velocity of the center of mass (unit: m/s)
 
void SetLinearVelocity (Vec3Arg inLinearVelocity)
 Set world space linear velocity of the center of mass (unit: m/s)
 
void SetLinearVelocityClamped (Vec3Arg inLinearVelocity)
 Set world space linear velocity of the center of mass, will make sure the value is clamped against the maximum linear velocity.
 
Vec3 GetAngularVelocity () const
 Get world space angular velocity of the center of mass (unit: rad/s)
 
void SetAngularVelocity (Vec3Arg inAngularVelocity)
 Set world space angular velocity of the center of mass (unit: rad/s)
 
void SetAngularVelocityClamped (Vec3Arg inAngularVelocity)
 Set world space angular velocity of the center of mass, will make sure the value is clamped against the maximum angular velocity.
 
Vec3 GetPointVelocityCOM (Vec3Arg inPointRelativeToCOM) const
 Velocity of point inPoint (in center of mass space, e.g. on the surface of the body) of the body (unit: m/s)
 
Vec3 GetPointVelocity (RVec3Arg inPoint) const
 Velocity of point inPoint (in world space, e.g. on the surface of the body) of the body (unit: m/s)
 
void AddForce (Vec3Arg inForce)
 Add force (unit: N) at center of mass for the next time step, will be reset after the next call to PhysicsSystem::Update.
 
void AddForce (Vec3Arg inForce, RVec3Arg inPosition)
 Add force (unit: N) at inPosition for the next time step, will be reset after the next call to PhysicsSystem::Update.
 
void AddTorque (Vec3Arg inTorque)
 Add torque (unit: N m) for the next time step, will be reset after the next call to PhysicsSystem::Update.
 
Vec3 GetAccumulatedForce () const
 
Vec3 GetAccumulatedTorque () const
 
JPH_INLINE void ResetForce ()
 
JPH_INLINE void ResetTorque ()
 
JPH_INLINE void ResetMotion ()
 
Mat44 GetInverseInertia () const
 Get inverse inertia tensor in world space.
 
void AddImpulse (Vec3Arg inImpulse)
 Add impulse to center of mass (unit: kg m/s)
 
void AddImpulse (Vec3Arg inImpulse, RVec3Arg inPosition)
 Add impulse to point in world space (unit: kg m/s)
 
void AddAngularImpulse (Vec3Arg inAngularImpulse)
 Add angular impulse in world space (unit: N m s)
 
void MoveKinematic (RVec3Arg inTargetPosition, QuatArg inTargetRotation, float inDeltaTime)
 Set velocity of body such that it will be positioned at inTargetPosition/Rotation in inDeltaTime seconds.
 
bool ApplyBuoyancyImpulse (RVec3Arg inSurfacePosition, Vec3Arg inSurfaceNormal, float inBuoyancy, float inLinearDrag, float inAngularDrag, Vec3Arg inFluidVelocity, Vec3Arg inGravity, float inDeltaTime)
 
bool IsInBroadPhase () const
 Check if this body has been added to the physics system.
 
bool IsCollisionCacheInvalid () const
 Check if this body has been changed in such a way that the collision cache should be considered invalid for any body interacting with this body.
 
const ShapeGetShape () const
 Get the shape of this body.
 
RVec3 GetPosition () const
 World space position of the body.
 
Quat GetRotation () const
 World space rotation of the body.
 
RMat44 GetWorldTransform () const
 Calculates the transform of this body.
 
RVec3 GetCenterOfMassPosition () const
 Gets the world space position of this body's center of mass.
 
RMat44 GetCenterOfMassTransform () const
 Calculates the transform for this body's center of mass.
 
RMat44 GetInverseCenterOfMassTransform () const
 Calculates the inverse of the transform for this body's center of mass.
 
const AABoxGetWorldSpaceBounds () const
 Get world space bounding box.
 
const MotionPropertiesGetMotionProperties () const
 Access to the motion properties.
 
MotionPropertiesGetMotionProperties ()
 
const MotionPropertiesGetMotionPropertiesUnchecked () const
 Access to the motion properties (version that does not check if the object is kinematic or dynamic)
 
MotionPropertiesGetMotionPropertiesUnchecked ()
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
Vec3 GetWorldSpaceSurfaceNormal (const SubShapeID &inSubShapeID, RVec3Arg inPosition) const
 Get surface normal of a particular sub shape and its world space surface position on this body.
 
TransformedShape GetTransformedShape () const
 Get the transformed shape of this body, which can be used to do collision detection outside of a body lock.
 
BodyCreationSettings GetBodyCreationSettings () const
 Debug function to convert a body back to a body creation settings object to be able to save/recreate the body later.
 
SoftBodyCreationSettings GetSoftBodyCreationSettings () const
 Debug function to convert a soft body back to a soft body creation settings object to be able to save/recreate the body later.
 
void AddPositionStep (Vec3Arg inLinearVelocityTimesDeltaTime)
 Update position using an Euler step (used during position integrate & constraint solving)
 
void SubPositionStep (Vec3Arg inLinearVelocityTimesDeltaTime)
 
void AddRotationStep (Vec3Arg inAngularVelocityTimesDeltaTime)
 Update rotation using an Euler step (using during position integrate & constraint solving)
 
void SubRotationStep (Vec3Arg inAngularVelocityTimesDeltaTime)
 
void SetInBroadPhaseInternal (bool inInBroadPhase)
 Flag if body is in the broadphase (should only be called by the BroadPhase)
 
bool InvalidateContactCacheInternal ()
 Invalidate the contact cache (should only be called by the BodyManager), will be reset the next simulation step. Returns true if the contact cache was still valid.
 
void ValidateContactCacheInternal ()
 Reset the collision cache invalid flag (should only be called by the BodyManager).
 
void CalculateWorldSpaceBoundsInternal ()
 Updates world space bounding box (should only be called by the PhysicsSystem)
 
void SetPositionAndRotationInternal (RVec3Arg inPosition, QuatArg inRotation, bool inResetSleepTimer=true)
 Function to update body's position (should only be called by the BodyInterface since it also requires updating the broadphase)
 
void UpdateCenterOfMassInternal (Vec3Arg inPreviousCenterOfMass, bool inUpdateMassProperties)
 
void SetShapeInternal (const Shape *inShape, bool inUpdateMassProperties)
 
uint32 GetIndexInActiveBodiesInternal () const
 Access to the index in the BodyManager::mActiveBodies list.
 
ECanSleep UpdateSleepStateInternal (float inDeltaTime, float inMaxMovement, float inTimeBeforeSleep)
 Update eligibility for sleeping.
 
void SaveState (StateRecorder &inStream) const
 Saving state for replay.
 
void RestoreState (StateRecorder &inStream)
 Restoring state for replay.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Static Public Member Functions inherited from Body
static bool sFindCollidingPairsCanCollide (const Body &inBody1, const Body &inBody2)
 
- Static Public Attributes inherited from Body
static Body sFixedToWorld
 A dummy body that can be used by constraints to attach a constraint to the world instead of another body.
 
static constexpr uint32 cInactiveIndex = MotionProperties::cInactiveIndex
 Constant indicating that body is not active.
 
+

Member Data Documentation

+ +

◆ mMotionProperties

+ +
+
+ + + + +
JPH_OVERRIDE_NEW_DELETE MotionProperties BodyWithMotionProperties::mMotionProperties
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_body_with_motion_properties.js b/class_body_with_motion_properties.js new file mode 100644 index 000000000..9a1b07882 --- /dev/null +++ b/class_body_with_motion_properties.js @@ -0,0 +1,4 @@ +var class_body_with_motion_properties = +[ + [ "mMotionProperties", "class_body_with_motion_properties.html#a56d65018e9d81d40acad96fc9e5802dc", null ] +]; \ No newline at end of file diff --git a/class_body_with_motion_properties.png b/class_body_with_motion_properties.png new file mode 100644 index 000000000..8a98bb36b Binary files /dev/null and b/class_body_with_motion_properties.png differ diff --git a/class_box_shape-members.html b/class_box_shape-members.html new file mode 100644 index 000000000..4b3896fd6 --- /dev/null +++ b/class_box_shape-members.html @@ -0,0 +1,206 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BoxShape Member List
+
+
+ +

This is the complete list of members for BoxShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
BoxShape()BoxShapeinline
BoxShape(const BoxShapeSettings &inSettings, ShapeResult &outResult)BoxShape
BoxShape(Vec3Arg inHalfExtent, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)BoxShapeinline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideBoxShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideBoxShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideBoxShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideBoxShapevirtual
ConvexShape(EShapeSubType inSubType)ConvexShapeinlineexplicit
ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)ConvexShapeinline
ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial)ConvexShapeinline
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideBoxShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideConvexShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideConvexShapevirtual
ESupportMode enum nameConvexShape
GetCenterOfMass() constShapeinlinevirtual
GetConvexRadius() constBoxShapeinline
GetDensity() constConvexShapeinline
GetHalfExtent() constBoxShapeinline
GetInnerRadius() const overrideBoxShapeinlinevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const overrideBoxShapeinlinevirtual
GetMassProperties() const overrideBoxShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideConvexShapeinlinevirtual
GetMaterial() constConvexShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideBoxShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideConvexShapevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideConvexShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const overrideBoxShapevirtual
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideBoxShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideBoxShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideBoxShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideBoxShapevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideBoxShapeinlinevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) constShapevirtual
MakeScaleValid(Vec3Arg inScale) constShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() constShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideBoxShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) overrideConvexShapevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) const overrideBoxShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) const overrideConvexShapevirtual
Shape::SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetDensity(float inDensity)ConvexShapeinline
SetEmbedded() constRefTarget< Shape >inline
SetMaterial(const PhysicsMaterial *inMaterial)ConvexShapeinline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()BoxShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
sUnitSphereTrianglesConvexShapeprotectedstatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_box_shape.html b/class_box_shape.html new file mode 100644 index 000000000..eeacb76b3 --- /dev/null +++ b/class_box_shape.html @@ -0,0 +1,1343 @@ + + + + + + + +Jolt Physics: BoxShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BoxShape Class Referencefinal
+
+
+ +

A box, centered around the origin. + More...

+ +

#include <BoxShape.h>

+
+Inheritance diagram for BoxShape:
+
+
+ + +ConvexShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + +

+Classes

class  Box
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE BoxShape ()
 Constructor.
 
 BoxShape (const BoxShapeSettings &inSettings, ShapeResult &outResult)
 
 BoxShape (Vec3Arg inHalfExtent, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)
 
Vec3 GetHalfExtent () const
 Get half extent of box.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual const SupportGetSupportFunction (ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
float GetConvexRadius () const
 Get the convex radius of this box.
 
- Public Member Functions inherited from ConvexShape
JPH_OVERRIDE_NEW_DELETE ConvexShape (EShapeSubType inSubType)
 Constructor.
 
 ConvexShape (EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)
 
 ConvexShape (EShapeSubType inSubType, const PhysicsMaterial *inMaterial)
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
void SetMaterial (const PhysicsMaterial *inMaterial)
 Material of the shape.
 
const PhysicsMaterialGetMaterial () const
 
void SetDensity (float inDensity)
 Set density of the shape (kg / m^3)
 
float GetDensity () const
 Get density of the shape (kg / m^3)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const override
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual bool MustBeStatic () const
 Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.
 
virtual Vec3 GetCenterOfMass () const
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual bool IsValidScale (Vec3Arg inScale) const
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from ConvexShape
static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConvexShape
enum class  ESupportMode { ExcludeConvexRadius +, IncludeConvexRadius +, Default + }
 How the GetSupport function should behave. More...
 
- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from ConvexShape
static const StaticArray< Vec3, 384 > sUnitSphereTriangles
 Vertex list that forms a unit sphere.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A box, centered around the origin.

+

Constructor & Destructor Documentation

+ +

◆ BoxShape() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE BoxShape::BoxShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ BoxShape() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
BoxShape::BoxShape (const BoxShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+ +

◆ BoxShape() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BoxShape::BoxShape (Vec3Arg inHalfExtent,
float inConvexRadius = cDefaultConvexRadius,
const PhysicsMaterialinMaterial = nullptr 
)
+
+inline
+
+

Create a box with half edge length inHalfExtent and convex radius inConvexRadius. (internally the convex radius will be subtracted from the half extent so the total box will not grow with the convex radius).

+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BoxShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool BoxShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BoxShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BoxShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BoxShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float BoxShape::GetConvexRadius () const
+
+inline
+
+ +

Get the convex radius of this box.

+ +
+
+ +

◆ GetHalfExtent()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 BoxShape::GetHalfExtent () const
+
+inline
+
+ +

Get half extent of box.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float BoxShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
virtual AABox BoxShape::GetLocalBounds () const
+
+inlineoverridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties BoxShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats BoxShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
const ConvexShape::Support * BoxShape::GetSupportFunction (ESupportMode inMode,
SupportBufferinBuffer,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Returns an object that provides the GetSupport function for this shape. inMode determines if this support function includes or excludes the convex radius. of the values returned by the GetSupport function. This improves numerical accuracy of the results. inScale scales this shape in local space.

+ +

Implements ConvexShape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BoxShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 BoxShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int BoxShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+overridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BoxShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float BoxShape::GetVolume () const
+
+inlineoverridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void BoxShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void BoxShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void BoxShape::sRegister ()
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_box_shape.js b/class_box_shape.js new file mode 100644 index 000000000..09992c2e3 --- /dev/null +++ b/class_box_shape.js @@ -0,0 +1,26 @@ +var class_box_shape = +[ + [ "Box", "class_box_shape_1_1_box.html", "class_box_shape_1_1_box" ], + [ "BoxShape", "class_box_shape.html#a4004360f2a7438e69fa3d0a252fc8f28", null ], + [ "BoxShape", "class_box_shape.html#a2088320f53aad4bffd21eac9317e0848", null ], + [ "BoxShape", "class_box_shape.html#a4ccbcc1c06232059f4b8711cb54d21f8", null ], + [ "CastRay", "class_box_shape.html#a9c2aaae3c5b69a6154a5ef68b0faf764", null ], + [ "CastRay", "class_box_shape.html#afb509d4c0094c0f58a54590e5b801a0f", null ], + [ "CollidePoint", "class_box_shape.html#ac79f1b2e03b7c9c374f8f8dbeb3104bb", null ], + [ "CollideSoftBodyVertices", "class_box_shape.html#a959bd34253ac2ce5b13986ee2e1da393", null ], + [ "Draw", "class_box_shape.html#a4d5f89d904e7044077b0b187aa74e474", null ], + [ "GetConvexRadius", "class_box_shape.html#a3e4280756f0e7d044f6473224f5e5097", null ], + [ "GetHalfExtent", "class_box_shape.html#a44e8965153d83d24e534d6278f9d6e0d", null ], + [ "GetInnerRadius", "class_box_shape.html#a50c713511a3e73d2c69cb03843eb06e8", null ], + [ "GetLocalBounds", "class_box_shape.html#a5abe98f791addef880ea73ea813ec372", null ], + [ "GetMassProperties", "class_box_shape.html#a2a6f91fa07d5ef9ef2541c0acfcdf9e8", null ], + [ "GetStats", "class_box_shape.html#aa47cad6cf56f35a41e8626c3fd587fb3", null ], + [ "GetSupportFunction", "class_box_shape.html#a8078cbdc696e4fb8e65fb7c312dfb1f6", null ], + [ "GetSupportingFace", "class_box_shape.html#a10628c6c084267e249ef86fa924ac620", null ], + [ "GetSurfaceNormal", "class_box_shape.html#ae279a012b515691509f4d15927925664", null ], + [ "GetTrianglesNext", "class_box_shape.html#a90ed6d83a46a7311750bfa7877d72def", null ], + [ "GetTrianglesStart", "class_box_shape.html#a287e16289c491cd9dbd980e59ca7725b", null ], + [ "GetVolume", "class_box_shape.html#a22a7afcc6db8041d6e0f335bfee62ec0", null ], + [ "RestoreBinaryState", "class_box_shape.html#a5d9e2eb38ff5d85f18f838fbf3e69499", null ], + [ "SaveBinaryState", "class_box_shape.html#ab93fc4ffd39a648e2627478638547746", null ] +]; \ No newline at end of file diff --git a/class_box_shape.png b/class_box_shape.png new file mode 100644 index 000000000..0c1b0007a Binary files /dev/null and b/class_box_shape.png differ diff --git a/class_box_shape_1_1_box-members.html b/class_box_shape_1_1_box-members.html new file mode 100644 index 000000000..921d2fdc4 --- /dev/null +++ b/class_box_shape_1_1_box-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BoxShape::Box Member List
+
+
+ +

This is the complete list of members for BoxShape::Box, including all inherited members.

+ + + + + +
Box(const AABox &inBox, float inConvexRadius)BoxShape::Boxinline
GetConvexRadius() const overrideBoxShape::Boxinlinevirtual
GetSupport(Vec3Arg inDirection) const overrideBoxShape::Boxinlinevirtual
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_box_shape_1_1_box.html b/class_box_shape_1_1_box.html new file mode 100644 index 000000000..ab9e615f5 --- /dev/null +++ b/class_box_shape_1_1_box.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: BoxShape::Box Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BoxShape::Box Class Referencefinal
+
+
+
+Inheritance diagram for BoxShape::Box:
+
+
+ + +ConvexShape::Support + +
+ + + + + + + + + + + + +

+Public Member Functions

 Box (const AABox &inBox, float inConvexRadius)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Constructor & Destructor Documentation

+ +

◆ Box()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
BoxShape::Box::Box (const AABoxinBox,
float inConvexRadius 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float BoxShape::Box::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 BoxShape::Box::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_box_shape_1_1_box.js b/class_box_shape_1_1_box.js new file mode 100644 index 000000000..67b3ded92 --- /dev/null +++ b/class_box_shape_1_1_box.js @@ -0,0 +1,6 @@ +var class_box_shape_1_1_box = +[ + [ "Box", "class_box_shape_1_1_box.html#af913f6873feba3de236ec74247bf0298", null ], + [ "GetConvexRadius", "class_box_shape_1_1_box.html#aae4ca0e522c6bf8bfd05b2ac5a8f3657", null ], + [ "GetSupport", "class_box_shape_1_1_box.html#addae08ce81d2c3eaca0acd914c2fe662", null ] +]; \ No newline at end of file diff --git a/class_box_shape_1_1_box.png b/class_box_shape_1_1_box.png new file mode 100644 index 000000000..d9d0ea854 Binary files /dev/null and b/class_box_shape_1_1_box.png differ diff --git a/class_box_shape_settings-members.html b/class_box_shape_settings-members.html new file mode 100644 index 000000000..1ec5dd001 --- /dev/null +++ b/class_box_shape_settings-members.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BoxShapeSettings Member List
+
+
+ +

This is the complete list of members for BoxShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
BoxShapeSettings()=defaultBoxShapeSettings
BoxShapeSettings(Vec3Arg inHalfExtent, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)BoxShapeSettingsinline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
ConvexShapeSettings()=defaultConvexShapeSettings
ConvexShapeSettings(const PhysicsMaterial *inMaterial)ConvexShapeSettingsinlineexplicit
Create() const overrideBoxShapeSettingsvirtual
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mConvexRadiusBoxShapeSettings
mDensityConvexShapeSettings
mHalfExtentBoxShapeSettings
mMaterialConvexShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetDensity(float inDensity)ConvexShapeSettingsinline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_box_shape_settings.html b/class_box_shape_settings.html new file mode 100644 index 000000000..b977d13c2 --- /dev/null +++ b/class_box_shape_settings.html @@ -0,0 +1,371 @@ + + + + + + + +Jolt Physics: BoxShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BoxShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a BoxShape. + More...

+ +

#include <BoxShape.h>

+
+Inheritance diagram for BoxShapeSettings:
+
+
+ + +ConvexShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 BoxShapeSettings ()=default
 Default constructor for deserialization.
 
 BoxShapeSettings (Vec3Arg inHalfExtent, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)
 
virtual ShapeResult Create () const override
 Create a shape according to the settings specified by this object.
 
- Public Member Functions inherited from ConvexShapeSettings
 ConvexShapeSettings ()=default
 Constructor.
 
 ConvexShapeSettings (const PhysicsMaterial *inMaterial)
 
void SetDensity (float inDensity)
 Set the density of the object in kg / m^3.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + +

+Public Attributes

Vec3 mHalfExtent = Vec3::sZero()
 Half the size of the box (including convex radius)
 
float mConvexRadius = 0.0f
 
- Public Attributes inherited from ConvexShapeSettings
RefConst< PhysicsMaterialmMaterial
 Material assigned to this shape.
 
float mDensity = 1000.0f
 Uniform density of the interior of the convex object (kg / m^3)
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a BoxShape.

+

Constructor & Destructor Documentation

+ +

◆ BoxShapeSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
BoxShapeSettings::BoxShapeSettings ()
+
+default
+
+ +

Default constructor for deserialization.

+ +
+
+ +

◆ BoxShapeSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
BoxShapeSettings::BoxShapeSettings (Vec3Arg inHalfExtent,
float inConvexRadius = cDefaultConvexRadius,
const PhysicsMaterialinMaterial = nullptr 
)
+
+inline
+
+

Create a box with half edge length inHalfExtent and convex radius inConvexRadius. (internally the convex radius will be subtracted from the half extent so the total box will not grow with the convex radius).

+ +
+
+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + +
ShapeSettings::ShapeResult BoxShapeSettings::Create () const
+
+overridevirtual
+
+ +

Create a shape according to the settings specified by this object.

+ +

Implements ShapeSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mConvexRadius

+ +
+
+ + + + +
float BoxShapeSettings::mConvexRadius = 0.0f
+
+ +
+
+ +

◆ mHalfExtent

+ +
+
+ + + + +
Vec3 BoxShapeSettings::mHalfExtent = Vec3::sZero()
+
+ +

Half the size of the box (including convex radius)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_box_shape_settings.js b/class_box_shape_settings.js new file mode 100644 index 000000000..28c5e4486 --- /dev/null +++ b/class_box_shape_settings.js @@ -0,0 +1,8 @@ +var class_box_shape_settings = +[ + [ "BoxShapeSettings", "class_box_shape_settings.html#a4c1e144d10ffefdcd6f31ddf46feffc1", null ], + [ "BoxShapeSettings", "class_box_shape_settings.html#a0c622692b801fef15ec5aaf849cca94c", null ], + [ "Create", "class_box_shape_settings.html#a25dd77e367eb83a372690aab9c9e744a", null ], + [ "mConvexRadius", "class_box_shape_settings.html#aecc49db555c063a396538e9b9fb988fd", null ], + [ "mHalfExtent", "class_box_shape_settings.html#a67b8492124d92c0a1021ffd9e87726cd", null ] +]; \ No newline at end of file diff --git a/class_box_shape_settings.png b/class_box_shape_settings.png new file mode 100644 index 000000000..ff1e28790 Binary files /dev/null and b/class_box_shape_settings.png differ diff --git a/class_broad_phase-members.html b/class_broad_phase-members.html new file mode 100644 index 000000000..608dcf75e --- /dev/null +++ b/class_broad_phase-members.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhase Member List
+
+
+ +

This is the complete list of members for BroadPhase, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddBodiesAbort(BodyID *ioBodies, int inNumber, AddState inAddState)BroadPhaseinlinevirtual
AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState)=0BroadPhasepure virtual
AddBodiesPrepare(BodyID *ioBodies, int inNumber)BroadPhaseinlinevirtual
AddState typedefBroadPhase
CastAABox(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0BroadPhaseQuerypure virtual
CastAABoxNoLock(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const =0BroadPhasepure virtual
CastRay(const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0BroadPhaseQuerypure virtual
CollideAABox(const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0BroadPhaseQuerypure virtual
CollideOrientedBox(const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0BroadPhaseQuerypure virtual
CollidePoint(Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0BroadPhaseQuerypure virtual
CollideSphere(Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0BroadPhaseQuerypure virtual
FindCollidingPairs(BodyID *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter, BodyPairCollector &ioPairCollector) const =0BroadPhasepure virtual
FrameSync()BroadPhaseinlinevirtual
GetBounds() const =0BroadPhasepure virtual
Init(BodyManager *inBodyManager, const BroadPhaseLayerInterface &inLayerInterface)BroadPhasevirtual
LockModifications()BroadPhaseinlinevirtual
mBodyManagerBroadPhaseprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyBodiesAABBChanged(BodyID *ioBodies, int inNumber, bool inTakeLock=true)=0BroadPhasepure virtual
NotifyBodiesLayerChanged(BodyID *ioBodies, int inNumber)=0BroadPhasepure virtual
operator=(const NonCopyable &)=deleteNonCopyable
Optimize()BroadPhaseinlinevirtual
RemoveBodies(BodyID *ioBodies, int inNumber)=0BroadPhasepure virtual
UnlockModifications()BroadPhaseinlinevirtual
UpdateFinalize(const UpdateState &inUpdateState)BroadPhaseinlinevirtual
UpdatePrepare()BroadPhaseinlinevirtual
~BroadPhaseQuery()=defaultBroadPhaseQueryvirtual
+
+ + + + diff --git a/class_broad_phase.html b/class_broad_phase.html new file mode 100644 index 000000000..2924e8350 --- /dev/null +++ b/class_broad_phase.html @@ -0,0 +1,903 @@ + + + + + + + +Jolt Physics: BroadPhase Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhase Class Referenceabstract
+
+
+ +

Used to do coarse collision detection operations to quickly prune out bodies that will not collide. + More...

+ +

#include <BroadPhase.h>

+
+Inheritance diagram for BroadPhase:
+
+
+ + +BroadPhaseQuery +NonCopyable +BroadPhaseBruteForce +BroadPhaseQuadTree + +
+ + + + + +

+Classes

struct  UpdateState
 Context used during broadphase update. More...
 
+ + + + +

+Public Types

using AddState = void *
 Handle used during adding bodies to the broadphase.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void Init (BodyManager *inBodyManager, const BroadPhaseLayerInterface &inLayerInterface)
 
virtual void Optimize ()
 Should be called after many objects have been inserted to make the broadphase more efficient, usually done on startup only.
 
virtual void FrameSync ()
 Must be called just before updating the broadphase when none of the body mutexes are locked.
 
virtual void LockModifications ()
 Must be called before UpdatePrepare to prevent modifications from being made to the tree.
 
virtual UpdateState UpdatePrepare ()
 
virtual void UpdateFinalize (const UpdateState &inUpdateState)
 Finalizing the update will quickly apply the changes.
 
virtual void UnlockModifications ()
 Must be called after UpdateFinalize to allow modifications to the broadphase.
 
virtual AddState AddBodiesPrepare (BodyID *ioBodies, int inNumber)
 
virtual void AddBodiesFinalize (BodyID *ioBodies, int inNumber, AddState inAddState)=0
 
virtual void AddBodiesAbort (BodyID *ioBodies, int inNumber, AddState inAddState)
 
virtual void RemoveBodies (BodyID *ioBodies, int inNumber)=0
 
virtual void NotifyBodiesAABBChanged (BodyID *ioBodies, int inNumber, bool inTakeLock=true)=0
 
virtual void NotifyBodiesLayerChanged (BodyID *ioBodies, int inNumber)=0
 Call whenever the layer (and optionally the aabb as well) of a body changes (can change order of ioBodies array)
 
virtual void FindCollidingPairs (BodyID *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter, BodyPairCollector &ioPairCollector) const =0
 
virtual void CastAABoxNoLock (const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const =0
 Same as BroadPhaseQuery::CastAABox but can be implemented in a way to take no broad phase locks.
 
virtual AABox GetBounds () const =0
 Get the bounding box of all objects in the broadphase.
 
- Public Member Functions inherited from BroadPhaseQuery
virtual ~BroadPhaseQuery ()=default
 Virtual destructor.
 
virtual void CastRay (const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
 Cast a ray and add any hits to ioCollector.
 
virtual void CollideAABox (const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
 Get bodies intersecting with inBox and any hits to ioCollector.
 
virtual void CollideSphere (Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
 Get bodies intersecting with a sphere and any hits to ioCollector.
 
virtual void CollidePoint (Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
 Get bodies intersecting with a point and any hits to ioCollector.
 
virtual void CollideOrientedBox (const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
 Get bodies intersecting with an oriented box and any hits to ioCollector.
 
virtual void CastAABox (const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
 Cast a box and add any hits to ioCollector.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + +

+Protected Attributes

BodyManagermBodyManager = nullptr
 Link to the body manager that manages the bodies in this broadphase.
 
+

Detailed Description

+

Used to do coarse collision detection operations to quickly prune out bodies that will not collide.

+

Member Typedef Documentation

+ +

◆ AddState

+ +
+
+ + + + +
using BroadPhase::AddState = void *
+
+ +

Handle used during adding bodies to the broadphase.

+ +
+
+

Member Function Documentation

+ +

◆ AddBodiesAbort()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BroadPhase::AddBodiesAbort (BodyIDioBodies,
int inNumber,
AddState inAddState 
)
+
+inlinevirtual
+
+

Abort adding bodies to the broadphase, supply the return value of AddBodiesPrepare in inAddState. This can be done on a background thread without influencing the broadphase. Please ensure that the ioBodies array passed to AddBodiesPrepare is unmodified and passed again to this function.

+ +

Reimplemented in BroadPhaseQuadTree.

+ +
+
+ +

◆ AddBodiesFinalize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BroadPhase::AddBodiesFinalize (BodyIDioBodies,
int inNumber,
AddState inAddState 
)
+
+pure virtual
+
+

Finalize adding bodies to the broadphase, supply the return value of AddBodiesPrepare in inAddState. Please ensure that the ioBodies array passed to AddBodiesPrepare is unmodified and passed again to this function.

+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+ +

◆ AddBodiesPrepare()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual AddState BroadPhase::AddBodiesPrepare (BodyIDioBodies,
int inNumber 
)
+
+inlinevirtual
+
+

Prepare adding inNumber bodies at ioBodies to the broadphase, returns a handle that should be used in AddBodiesFinalize/Abort. This can be done on a background thread without influencing the broadphase. ioBodies may be shuffled around by this function and should be kept that way until AddBodiesFinalize/Abort is called.

+ +

Reimplemented in BroadPhaseQuadTree.

+ +
+
+ +

◆ CastAABoxNoLock()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BroadPhase::CastAABoxNoLock (const AABoxCastinBox,
CastShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+pure virtual
+
+ +

Same as BroadPhaseQuery::CastAABox but can be implemented in a way to take no broad phase locks.

+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+ +

◆ FindCollidingPairs()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BroadPhase::FindCollidingPairs (BodyIDioActiveBodies,
int inNumActiveBodies,
float inSpeculativeContactDistance,
const ObjectVsBroadPhaseLayerFilterinObjectVsBroadPhaseLayerFilter,
const ObjectLayerPairFilterinObjectLayerPairFilter,
BodyPairCollectorioPairCollector 
) const
+
+pure virtual
+
+

Find all colliding pairs between dynamic bodies Note that this function is very specifically tailored for the PhysicsSystem::Update function, hence it is not part of the BroadPhaseQuery interface. One of the assumptions it can make is that no locking is needed during the query as it will only be called during a very particular part of the update.

Parameters
+ + + + + + + +
ioActiveBodiesis a list of bodies for which we need to find colliding pairs (this function can change the order of the ioActiveBodies array). This can be a subset of the set of active bodies in the system.
inNumActiveBodiesis the size of the ioActiveBodies array.
inSpeculativeContactDistanceDistance at which speculative contact points will be created.
inObjectVsBroadPhaseLayerFilteris the filter that determines if an object can collide with a broadphase layer.
inObjectLayerPairFilteris the filter that determines if two objects can collide.
ioPairCollectorreceives callbacks for every body pair found.
+
+
+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+ +

◆ FrameSync()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BroadPhase::FrameSync ()
+
+inlinevirtual
+
+ +

Must be called just before updating the broadphase when none of the body mutexes are locked.

+ +

Reimplemented in BroadPhaseQuadTree.

+ +
+
+ +

◆ GetBounds()

+ +
+
+ + + + + +
+ + + + + + + +
virtual AABox BroadPhase::GetBounds () const
+
+pure virtual
+
+ +

Get the bounding box of all objects in the broadphase.

+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+ +

◆ Init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void BroadPhase::Init (BodyManagerinBodyManager,
const BroadPhaseLayerInterfaceinLayerInterface 
)
+
+virtual
+
+

Initialize the broadphase.

Parameters
+ + + +
inBodyManagerThe body manager singleton
inLayerInterfaceInterface that maps object layers to broadphase layers. Note that the broadphase takes a pointer to the data inside inObjectToBroadPhaseLayer so this object should remain static.
+
+
+ +

Reimplemented in BroadPhaseQuadTree.

+ +
+
+ +

◆ LockModifications()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BroadPhase::LockModifications ()
+
+inlinevirtual
+
+ +

Must be called before UpdatePrepare to prevent modifications from being made to the tree.

+ +

Reimplemented in BroadPhaseQuadTree.

+ +
+
+ +

◆ NotifyBodiesAABBChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BroadPhase::NotifyBodiesAABBChanged (BodyIDioBodies,
int inNumber,
bool inTakeLock = true 
)
+
+pure virtual
+
+

Call whenever the aabb of a body changes (can change order of ioBodies array) inTakeLock should be false if we're between LockModifications/UnlockModificiations in which case care needs to be taken to not call this between UpdatePrepare/UpdateFinalize

+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+ +

◆ NotifyBodiesLayerChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void BroadPhase::NotifyBodiesLayerChanged (BodyIDioBodies,
int inNumber 
)
+
+pure virtual
+
+ +

Call whenever the layer (and optionally the aabb as well) of a body changes (can change order of ioBodies array)

+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+ +

◆ Optimize()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BroadPhase::Optimize ()
+
+inlinevirtual
+
+ +

Should be called after many objects have been inserted to make the broadphase more efficient, usually done on startup only.

+ +

Reimplemented in BroadPhaseQuadTree.

+ +
+
+ +

◆ RemoveBodies()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void BroadPhase::RemoveBodies (BodyIDioBodies,
int inNumber 
)
+
+pure virtual
+
+

Remove inNumber bodies in ioBodies from the broadphase. ioBodies may be shuffled around by this function.

+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+ +

◆ UnlockModifications()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BroadPhase::UnlockModifications ()
+
+inlinevirtual
+
+ +

Must be called after UpdateFinalize to allow modifications to the broadphase.

+ +

Reimplemented in BroadPhaseQuadTree.

+ +
+
+ +

◆ UpdateFinalize()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void BroadPhase::UpdateFinalize (const UpdateStateinUpdateState)
+
+inlinevirtual
+
+ +

Finalizing the update will quickly apply the changes.

+ +

Reimplemented in BroadPhaseQuadTree.

+ +
+
+ +

◆ UpdatePrepare()

+ +
+
+ + + + + +
+ + + + + + + +
virtual UpdateState BroadPhase::UpdatePrepare ()
+
+inlinevirtual
+
+

Update the broadphase, needs to be called frequently to update the internal state when bodies have been modified. The UpdatePrepare() function can run in a background thread without influencing the broadphase

+ +

Reimplemented in BroadPhaseQuadTree.

+ +
+
+

Member Data Documentation

+ +

◆ mBodyManager

+ +
+
+ + + + + +
+ + + + +
BodyManager* BroadPhase::mBodyManager = nullptr
+
+protected
+
+ +

Link to the body manager that manages the bodies in this broadphase.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_broad_phase.js b/class_broad_phase.js new file mode 100644 index 000000000..dd98fdd10 --- /dev/null +++ b/class_broad_phase.js @@ -0,0 +1,22 @@ +var class_broad_phase = +[ + [ "UpdateState", "struct_broad_phase_1_1_update_state.html", "struct_broad_phase_1_1_update_state" ], + [ "AddState", "class_broad_phase.html#ae7d00a18a41401f177a2a1d111265b10", null ], + [ "AddBodiesAbort", "class_broad_phase.html#a031638360b44d1a9b2176590796eb2a6", null ], + [ "AddBodiesFinalize", "class_broad_phase.html#a07f0fba42d45520a9bc2d22f2a636584", null ], + [ "AddBodiesPrepare", "class_broad_phase.html#adc636ae60807c46011ed3674b6a983c2", null ], + [ "CastAABoxNoLock", "class_broad_phase.html#a324830206fb4032c6a6670fea6c15143", null ], + [ "FindCollidingPairs", "class_broad_phase.html#aecd92cc792c15c624b97eeeac11cc468", null ], + [ "FrameSync", "class_broad_phase.html#a4772ae4d99f16342a494b7c1e0066d8d", null ], + [ "GetBounds", "class_broad_phase.html#ac1c7ee25257e8b1c1e89f6bd610d77fb", null ], + [ "Init", "class_broad_phase.html#ad7d7ba03cddb7946ad487176458ffce4", null ], + [ "LockModifications", "class_broad_phase.html#a09a84eceb64acb6636984a06bbb7a73a", null ], + [ "NotifyBodiesAABBChanged", "class_broad_phase.html#a1a88ea16a35689cad897fcffa428a2ed", null ], + [ "NotifyBodiesLayerChanged", "class_broad_phase.html#a9acfe24c8f30529d412a26174dba503c", null ], + [ "Optimize", "class_broad_phase.html#ab209cd12e5b3c915ed9d9c65e5d34089", null ], + [ "RemoveBodies", "class_broad_phase.html#adfcebfeb40995d6a122dd53730eec6fd", null ], + [ "UnlockModifications", "class_broad_phase.html#a588463ac5567b3cc721c45cdb90138d6", null ], + [ "UpdateFinalize", "class_broad_phase.html#ab78bec1eb43c0ff847eaf489bd2e95a2", null ], + [ "UpdatePrepare", "class_broad_phase.html#af28614224a9ae6463bce9f2039468852", null ], + [ "mBodyManager", "class_broad_phase.html#a7789150cb00a308ed3da284decedb169", null ] +]; \ No newline at end of file diff --git a/class_broad_phase.png b/class_broad_phase.png new file mode 100644 index 000000000..9fe8248af Binary files /dev/null and b/class_broad_phase.png differ diff --git a/class_broad_phase_brute_force-members.html b/class_broad_phase_brute_force-members.html new file mode 100644 index 000000000..ad27339d1 --- /dev/null +++ b/class_broad_phase_brute_force-members.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseBruteForce Member List
+
+
+ +

This is the complete list of members for BroadPhaseBruteForce, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddBodiesAbort(BodyID *ioBodies, int inNumber, AddState inAddState)BroadPhaseinlinevirtual
AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState) overrideBroadPhaseBruteForcevirtual
AddBodiesPrepare(BodyID *ioBodies, int inNumber)BroadPhaseinlinevirtual
AddState typedefBroadPhase
CastAABox(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseBruteForcevirtual
CastAABoxNoLock(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseBruteForcevirtual
CastRay(const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseBruteForcevirtual
CollideAABox(const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseBruteForcevirtual
CollideOrientedBox(const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseBruteForcevirtual
CollidePoint(Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseBruteForcevirtual
CollideSphere(Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseBruteForcevirtual
FindCollidingPairs(BodyID *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter, BodyPairCollector &ioPairCollector) const overrideBroadPhaseBruteForcevirtual
FrameSync()BroadPhaseinlinevirtual
GetBounds() const overrideBroadPhaseBruteForcevirtual
Init(BodyManager *inBodyManager, const BroadPhaseLayerInterface &inLayerInterface)BroadPhasevirtual
LockModifications()BroadPhaseinlinevirtual
mBodyManagerBroadPhaseprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyBodiesAABBChanged(BodyID *ioBodies, int inNumber, bool inTakeLock) overrideBroadPhaseBruteForcevirtual
NotifyBodiesLayerChanged(BodyID *ioBodies, int inNumber) overrideBroadPhaseBruteForcevirtual
operator=(const NonCopyable &)=deleteNonCopyable
Optimize()BroadPhaseinlinevirtual
RemoveBodies(BodyID *ioBodies, int inNumber) overrideBroadPhaseBruteForcevirtual
UnlockModifications()BroadPhaseinlinevirtual
UpdateFinalize(const UpdateState &inUpdateState)BroadPhaseinlinevirtual
UpdatePrepare()BroadPhaseinlinevirtual
~BroadPhaseQuery()=defaultBroadPhaseQueryvirtual
+
+ + + + diff --git a/class_broad_phase_brute_force.html b/class_broad_phase_brute_force.html new file mode 100644 index 000000000..a5e2d08a9 --- /dev/null +++ b/class_broad_phase_brute_force.html @@ -0,0 +1,866 @@ + + + + + + + +Jolt Physics: BroadPhaseBruteForce Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseBruteForce Class Referencefinal
+
+
+ +

Test BroadPhase implementation that does not do anything to speed up the operations. Can be used as a reference implementation. + More...

+ +

#include <BroadPhaseBruteForce.h>

+
+Inheritance diagram for BroadPhaseBruteForce:
+
+
+ + +BroadPhase +BroadPhaseQuery +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual JPH_OVERRIDE_NEW_DELETE void AddBodiesFinalize (BodyID *ioBodies, int inNumber, AddState inAddState) override
 
virtual void RemoveBodies (BodyID *ioBodies, int inNumber) override
 
virtual void NotifyBodiesAABBChanged (BodyID *ioBodies, int inNumber, bool inTakeLock) override
 
virtual void NotifyBodiesLayerChanged (BodyID *ioBodies, int inNumber) override
 Call whenever the layer (and optionally the aabb as well) of a body changes (can change order of ioBodies array)
 
virtual void CastRay (const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Cast a ray and add any hits to ioCollector.
 
virtual void CollideAABox (const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Get bodies intersecting with inBox and any hits to ioCollector.
 
virtual void CollideSphere (Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Get bodies intersecting with a sphere and any hits to ioCollector.
 
virtual void CollidePoint (Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Get bodies intersecting with a point and any hits to ioCollector.
 
virtual void CollideOrientedBox (const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Get bodies intersecting with an oriented box and any hits to ioCollector.
 
virtual void CastAABoxNoLock (const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Same as BroadPhaseQuery::CastAABox but can be implemented in a way to take no broad phase locks.
 
virtual void CastAABox (const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Cast a box and add any hits to ioCollector.
 
virtual void FindCollidingPairs (BodyID *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter, BodyPairCollector &ioPairCollector) const override
 
virtual AABox GetBounds () const override
 Get the bounding box of all objects in the broadphase.
 
- Public Member Functions inherited from BroadPhase
virtual void Init (BodyManager *inBodyManager, const BroadPhaseLayerInterface &inLayerInterface)
 
virtual void Optimize ()
 Should be called after many objects have been inserted to make the broadphase more efficient, usually done on startup only.
 
virtual void FrameSync ()
 Must be called just before updating the broadphase when none of the body mutexes are locked.
 
virtual void LockModifications ()
 Must be called before UpdatePrepare to prevent modifications from being made to the tree.
 
virtual UpdateState UpdatePrepare ()
 
virtual void UpdateFinalize (const UpdateState &inUpdateState)
 Finalizing the update will quickly apply the changes.
 
virtual void UnlockModifications ()
 Must be called after UpdateFinalize to allow modifications to the broadphase.
 
virtual AddState AddBodiesPrepare (BodyID *ioBodies, int inNumber)
 
virtual void AddBodiesAbort (BodyID *ioBodies, int inNumber, AddState inAddState)
 
- Public Member Functions inherited from BroadPhaseQuery
virtual ~BroadPhaseQuery ()=default
 Virtual destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BroadPhase
using AddState = void *
 Handle used during adding bodies to the broadphase.
 
- Protected Attributes inherited from BroadPhase
BodyManagermBodyManager = nullptr
 Link to the body manager that manages the bodies in this broadphase.
 
+

Detailed Description

+

Test BroadPhase implementation that does not do anything to speed up the operations. Can be used as a reference implementation.

+

Member Function Documentation

+ +

◆ AddBodiesFinalize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void BroadPhaseBruteForce::AddBodiesFinalize (BodyIDioBodies,
int inNumber,
AddState inAddState 
)
+
+overridevirtual
+
+

Finalize adding bodies to the broadphase, supply the return value of AddBodiesPrepare in inAddState. Please ensure that the ioBodies array passed to AddBodiesPrepare is unmodified and passed again to this function.

+ +

Implements BroadPhase.

+ +
+
+ +

◆ CastAABox()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseBruteForce::CastAABox (const AABoxCastinBox,
CastShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Cast a box and add any hits to ioCollector.

+ +

Implements BroadPhaseQuery.

+ +
+
+ +

◆ CastAABoxNoLock()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseBruteForce::CastAABoxNoLock (const AABoxCastinBox,
CastShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Same as BroadPhaseQuery::CastAABox but can be implemented in a way to take no broad phase locks.

+ +

Implements BroadPhase.

+ +
+
+ +

◆ CastRay()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseBruteForce::CastRay (const RayCastinRay,
RayCastBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Cast a ray and add any hits to ioCollector.

+ +

Implements BroadPhaseQuery.

+ +
+
+ +

◆ CollideAABox()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseBruteForce::CollideAABox (const AABoxinBox,
CollideShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Get bodies intersecting with inBox and any hits to ioCollector.

+ +

Implements BroadPhaseQuery.

+ +
+
+ +

◆ CollideOrientedBox()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseBruteForce::CollideOrientedBox (const OrientedBoxinBox,
CollideShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Get bodies intersecting with an oriented box and any hits to ioCollector.

+ +

Implements BroadPhaseQuery.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseBruteForce::CollidePoint (Vec3Arg inPoint,
CollideShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Get bodies intersecting with a point and any hits to ioCollector.

+ +

Implements BroadPhaseQuery.

+ +
+
+ +

◆ CollideSphere()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseBruteForce::CollideSphere (Vec3Arg inCenter,
float inRadius,
CollideShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Get bodies intersecting with a sphere and any hits to ioCollector.

+ +

Implements BroadPhaseQuery.

+ +
+
+ +

◆ FindCollidingPairs()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseBruteForce::FindCollidingPairs (BodyIDioActiveBodies,
int inNumActiveBodies,
float inSpeculativeContactDistance,
const ObjectVsBroadPhaseLayerFilterinObjectVsBroadPhaseLayerFilter,
const ObjectLayerPairFilterinObjectLayerPairFilter,
BodyPairCollectorioPairCollector 
) const
+
+overridevirtual
+
+

Find all colliding pairs between dynamic bodies Note that this function is very specifically tailored for the PhysicsSystem::Update function, hence it is not part of the BroadPhaseQuery interface. One of the assumptions it can make is that no locking is needed during the query as it will only be called during a very particular part of the update.

Parameters
+ + + + + + + +
ioActiveBodiesis a list of bodies for which we need to find colliding pairs (this function can change the order of the ioActiveBodies array). This can be a subset of the set of active bodies in the system.
inNumActiveBodiesis the size of the ioActiveBodies array.
inSpeculativeContactDistanceDistance at which speculative contact points will be created.
inObjectVsBroadPhaseLayerFilteris the filter that determines if an object can collide with a broadphase layer.
inObjectLayerPairFilteris the filter that determines if two objects can collide.
ioPairCollectorreceives callbacks for every body pair found.
+
+
+ +

Implements BroadPhase.

+ +
+
+ +

◆ GetBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox BroadPhaseBruteForce::GetBounds () const
+
+overridevirtual
+
+ +

Get the bounding box of all objects in the broadphase.

+ +

Implements BroadPhase.

+ +
+
+ +

◆ NotifyBodiesAABBChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseBruteForce::NotifyBodiesAABBChanged (BodyIDioBodies,
int inNumber,
bool inTakeLock 
)
+
+overridevirtual
+
+

Call whenever the aabb of a body changes (can change order of ioBodies array) inTakeLock should be false if we're between LockModifications/UnlockModificiations in which case care needs to be taken to not call this between UpdatePrepare/UpdateFinalize

+ +

Implements BroadPhase.

+ +
+
+ +

◆ NotifyBodiesLayerChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BroadPhaseBruteForce::NotifyBodiesLayerChanged (BodyIDioBodies,
int inNumber 
)
+
+overridevirtual
+
+ +

Call whenever the layer (and optionally the aabb as well) of a body changes (can change order of ioBodies array)

+ +

Implements BroadPhase.

+ +
+
+ +

◆ RemoveBodies()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BroadPhaseBruteForce::RemoveBodies (BodyIDioBodies,
int inNumber 
)
+
+overridevirtual
+
+

Remove inNumber bodies in ioBodies from the broadphase. ioBodies may be shuffled around by this function.

+ +

Implements BroadPhase.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_broad_phase_brute_force.js b/class_broad_phase_brute_force.js new file mode 100644 index 000000000..25880f0f5 --- /dev/null +++ b/class_broad_phase_brute_force.js @@ -0,0 +1,16 @@ +var class_broad_phase_brute_force = +[ + [ "AddBodiesFinalize", "class_broad_phase_brute_force.html#a75b3feb54f2c3710b20b27c5379ad55e", null ], + [ "CastAABox", "class_broad_phase_brute_force.html#a56f59ffbc87333de2af4c7d995a048a3", null ], + [ "CastAABoxNoLock", "class_broad_phase_brute_force.html#a039672aad27d2a635e3f8ffccb3b7a69", null ], + [ "CastRay", "class_broad_phase_brute_force.html#aa802d83be23764261a739ad0dce2dd6d", null ], + [ "CollideAABox", "class_broad_phase_brute_force.html#a942ee7721ab6b973d1ff0f84c5ec3c39", null ], + [ "CollideOrientedBox", "class_broad_phase_brute_force.html#a7e8ac19b326adf19996bd1288089018b", null ], + [ "CollidePoint", "class_broad_phase_brute_force.html#af8ccb4b811426b36bfb2e51e1e61b92b", null ], + [ "CollideSphere", "class_broad_phase_brute_force.html#a1550bc80cf969b9db8c1acc327902b00", null ], + [ "FindCollidingPairs", "class_broad_phase_brute_force.html#a2d0f339251687a983a58b516350e93ac", null ], + [ "GetBounds", "class_broad_phase_brute_force.html#a64c0008d13703a25a0bfb3f3d1556f5d", null ], + [ "NotifyBodiesAABBChanged", "class_broad_phase_brute_force.html#a59e4b801e711b42da8018c7f9e8362be", null ], + [ "NotifyBodiesLayerChanged", "class_broad_phase_brute_force.html#a533303a0786892359c0e2e64ac4371cc", null ], + [ "RemoveBodies", "class_broad_phase_brute_force.html#a488f130c96e125ae1b0dda672d805f65", null ] +]; \ No newline at end of file diff --git a/class_broad_phase_brute_force.png b/class_broad_phase_brute_force.png new file mode 100644 index 000000000..afc872803 Binary files /dev/null and b/class_broad_phase_brute_force.png differ diff --git a/class_broad_phase_cast_result-members.html b/class_broad_phase_cast_result-members.html new file mode 100644 index 000000000..d71150bd6 --- /dev/null +++ b/class_broad_phase_cast_result-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseCastResult Member List
+
+
+ +

This is the complete list of members for BroadPhaseCastResult, including all inherited members.

+ + + + + +
GetEarlyOutFraction() constBroadPhaseCastResultinline
mBodyIDBroadPhaseCastResult
mFractionBroadPhaseCastResult
Reset()BroadPhaseCastResultinline
+
+ + + + diff --git a/class_broad_phase_cast_result.html b/class_broad_phase_cast_result.html new file mode 100644 index 000000000..a4edd2eb6 --- /dev/null +++ b/class_broad_phase_cast_result.html @@ -0,0 +1,244 @@ + + + + + + + +Jolt Physics: BroadPhaseCastResult Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseCastResult Class Reference
+
+
+ +

Structure that holds a ray cast or other object cast hit. + More...

+ +

#include <CastResult.h>

+
+Inheritance diagram for BroadPhaseCastResult:
+
+
+ + +RayCastResult + +
+ + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE float GetEarlyOutFraction () const
 Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'. For rays/cast shapes we can just use the collision fraction.
 
void Reset ()
 Reset this result so it can be reused for a new cast.
 
+ + + + + + + +

+Public Attributes

BodyID mBodyID
 Body that was hit.
 
float mFraction = 1.0f + FLT_EPSILON
 Hit fraction of the ray/object [0, 1], HitPoint = Start + mFraction * (End - Start)
 
+

Detailed Description

+

Structure that holds a ray cast or other object cast hit.

+

Member Function Documentation

+ +

◆ GetEarlyOutFraction()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE float BroadPhaseCastResult::GetEarlyOutFraction () const
+
+inline
+
+ +

Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'. For rays/cast shapes we can just use the collision fraction.

+ +
+
+ +

◆ Reset()

+ +
+
+ + + + + +
+ + + + + + + +
void BroadPhaseCastResult::Reset ()
+
+inline
+
+ +

Reset this result so it can be reused for a new cast.

+ +
+
+

Member Data Documentation

+ +

◆ mBodyID

+ +
+
+ + + + +
BodyID BroadPhaseCastResult::mBodyID
+
+ +

Body that was hit.

+ +
+
+ +

◆ mFraction

+ +
+
+ + + + +
float BroadPhaseCastResult::mFraction = 1.0f + FLT_EPSILON
+
+ +

Hit fraction of the ray/object [0, 1], HitPoint = Start + mFraction * (End - Start)

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_broad_phase_cast_result.js b/class_broad_phase_cast_result.js new file mode 100644 index 000000000..086bdb211 --- /dev/null +++ b/class_broad_phase_cast_result.js @@ -0,0 +1,7 @@ +var class_broad_phase_cast_result = +[ + [ "GetEarlyOutFraction", "class_broad_phase_cast_result.html#a06287289bf870782bbfc79f5ea3ac2bc", null ], + [ "Reset", "class_broad_phase_cast_result.html#abf6a8c98a31073d7a755df3c6d52ae7e", null ], + [ "mBodyID", "class_broad_phase_cast_result.html#ad65b00f9908c1418c385964e5815800c", null ], + [ "mFraction", "class_broad_phase_cast_result.html#a3336f4d32762bcbcb6bcfd2b6fcbf7fb", null ] +]; \ No newline at end of file diff --git a/class_broad_phase_cast_result.png b/class_broad_phase_cast_result.png new file mode 100644 index 000000000..ad6509a18 Binary files /dev/null and b/class_broad_phase_cast_result.png differ diff --git a/class_broad_phase_layer-members.html b/class_broad_phase_layer-members.html new file mode 100644 index 000000000..65e887a6d --- /dev/null +++ b/class_broad_phase_layer-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseLayer Member List
+
+
+ +

This is the complete list of members for BroadPhaseLayer, including all inherited members.

+ + + + + + + + + + + +
BroadPhaseLayer()=defaultBroadPhaseLayer
BroadPhaseLayer(Type inValue)BroadPhaseLayerinlineexplicit
BroadPhaseLayer(const BroadPhaseLayer &)=defaultBroadPhaseLayer
GetValue() constBroadPhaseLayerinline
operator Type() constBroadPhaseLayerinlineexplicit
operator!=(const BroadPhaseLayer &inRHS) constBroadPhaseLayerinline
operator<(const BroadPhaseLayer &inRHS) constBroadPhaseLayerinline
operator=(const BroadPhaseLayer &)=defaultBroadPhaseLayer
operator==(const BroadPhaseLayer &inRHS) constBroadPhaseLayerinline
Type typedefBroadPhaseLayer
+
+ + + + diff --git a/class_broad_phase_layer.html b/class_broad_phase_layer.html new file mode 100644 index 000000000..8fd895139 --- /dev/null +++ b/class_broad_phase_layer.html @@ -0,0 +1,400 @@ + + + + + + + +Jolt Physics: BroadPhaseLayer Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseLayer Class Reference
+
+
+ +

#include <BroadPhaseLayer.h>

+ + + + +

+Public Types

using Type = uint8
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_INLINE BroadPhaseLayer ()=default
 
JPH_INLINE constexpr BroadPhaseLayer (Type inValue)
 
JPH_INLINE constexpr BroadPhaseLayer (const BroadPhaseLayer &)=default
 
JPH_INLINE BroadPhaseLayeroperator= (const BroadPhaseLayer &)=default
 
JPH_INLINE constexpr bool operator== (const BroadPhaseLayer &inRHS) const
 
JPH_INLINE constexpr bool operator!= (const BroadPhaseLayer &inRHS) const
 
JPH_INLINE constexpr bool operator< (const BroadPhaseLayer &inRHS) const
 
JPH_INLINE constexpr operator Type () const
 
JPH_INLINE Type GetValue () const
 
+

Detailed Description

+

An object layer can be mapped to a broadphase layer. Objects with the same broadphase layer will end up in the same sub structure (usually a tree) of the broadphase. When there are many layers, this reduces the total amount of sub structures the broad phase needs to manage. Usually you want objects that don't collide with each other in different broad phase layers, but there could be exceptions if objects layers only contain a minor amount of objects so it is not beneficial to give each layer its own sub structure in the broadphase. Note: This class requires explicit casting from and to Type to avoid confusion with ObjectLayer

+

Member Typedef Documentation

+ +

◆ Type

+ +
+
+ + + + +
using BroadPhaseLayer::Type = uint8
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ BroadPhaseLayer() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE BroadPhaseLayer::BroadPhaseLayer ()
+
+default
+
+ +
+
+ +

◆ BroadPhaseLayer() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE constexpr BroadPhaseLayer::BroadPhaseLayer (Type inValue)
+
+inlineexplicitconstexpr
+
+ +
+
+ +

◆ BroadPhaseLayer() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE constexpr BroadPhaseLayer::BroadPhaseLayer (const BroadPhaseLayer)
+
+constexprdefault
+
+ +
+
+

Member Function Documentation

+ +

◆ GetValue()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Type BroadPhaseLayer::GetValue () const
+
+inline
+
+ +
+
+ +

◆ operator Type()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE constexpr BroadPhaseLayer::operator Type () const
+
+inlineexplicitconstexpr
+
+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE constexpr bool BroadPhaseLayer::operator!= (const BroadPhaseLayerinRHS) const
+
+inlineconstexpr
+
+ +
+
+ +

◆ operator<()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE constexpr bool BroadPhaseLayer::operator< (const BroadPhaseLayerinRHS) const
+
+inlineconstexpr
+
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE BroadPhaseLayer & BroadPhaseLayer::operator= (const BroadPhaseLayer)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE constexpr bool BroadPhaseLayer::operator== (const BroadPhaseLayerinRHS) const
+
+inlineconstexpr
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_broad_phase_layer.js b/class_broad_phase_layer.js new file mode 100644 index 000000000..9a39211bb --- /dev/null +++ b/class_broad_phase_layer.js @@ -0,0 +1,13 @@ +var class_broad_phase_layer = +[ + [ "Type", "class_broad_phase_layer.html#a9b1092d1684a4570ec8a44b853b668b0", null ], + [ "BroadPhaseLayer", "class_broad_phase_layer.html#a5a745cab41c36b5acda7ba4332abd068", null ], + [ "BroadPhaseLayer", "class_broad_phase_layer.html#a731f26e18a30c3bbb274df1296e78a9e", null ], + [ "BroadPhaseLayer", "class_broad_phase_layer.html#ab22a0985d4594f952096da14ab4560d8", null ], + [ "GetValue", "class_broad_phase_layer.html#a88ef7f609071bbf53e1c018966e65c36", null ], + [ "operator Type", "class_broad_phase_layer.html#ae0cc32e470894d6c842ace0ab9054360", null ], + [ "operator!=", "class_broad_phase_layer.html#ab0429cbf863c7c513553a36ea154b849", null ], + [ "operator<", "class_broad_phase_layer.html#a5408ee98531f1a48e1931c71ea2955e9", null ], + [ "operator=", "class_broad_phase_layer.html#ab0344f5719acb04f80e27ca65e48e81e", null ], + [ "operator==", "class_broad_phase_layer.html#adfb985183ea3a872650b100859883a6e", null ] +]; \ No newline at end of file diff --git a/class_broad_phase_layer_filter-members.html b/class_broad_phase_layer_filter-members.html new file mode 100644 index 000000000..b23eff806 --- /dev/null +++ b/class_broad_phase_layer_filter-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseLayerFilter Member List
+
+
+ +

This is the complete list of members for BroadPhaseLayerFilter, including all inherited members.

+ + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(BroadPhaseLayer inLayer) constBroadPhaseLayerFilterinlinevirtual
~BroadPhaseLayerFilter()=defaultBroadPhaseLayerFiltervirtual
+
+ + + + diff --git a/class_broad_phase_layer_filter.html b/class_broad_phase_layer_filter.html new file mode 100644 index 000000000..b94a584d5 --- /dev/null +++ b/class_broad_phase_layer_filter.html @@ -0,0 +1,214 @@ + + + + + + + +Jolt Physics: BroadPhaseLayerFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseLayerFilter Class Reference
+
+
+ +

Filter class for broadphase layers. + More...

+ +

#include <BroadPhaseLayer.h>

+
+Inheritance diagram for BroadPhaseLayerFilter:
+
+
+ + +NonCopyable +DefaultBroadPhaseLayerFilter +SpecifiedBroadPhaseLayerFilter + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~BroadPhaseLayerFilter ()=default
 Destructor.
 
virtual bool ShouldCollide (BroadPhaseLayer inLayer) const
 Function to filter out broadphase layers when doing collision query test (return true to allow testing against objects with this layer)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Filter class for broadphase layers.

+

Constructor & Destructor Documentation

+ +

◆ ~BroadPhaseLayerFilter()

+ +
+
+ + + + + +
+ + + + + + + +
virtual BroadPhaseLayerFilter::~BroadPhaseLayerFilter ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool BroadPhaseLayerFilter::ShouldCollide (BroadPhaseLayer inLayer) const
+
+inlinevirtual
+
+ +

Function to filter out broadphase layers when doing collision query test (return true to allow testing against objects with this layer)

+ +

Reimplemented in DefaultBroadPhaseLayerFilter, and SpecifiedBroadPhaseLayerFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_broad_phase_layer_filter.js b/class_broad_phase_layer_filter.js new file mode 100644 index 000000000..77e6ba85e --- /dev/null +++ b/class_broad_phase_layer_filter.js @@ -0,0 +1,5 @@ +var class_broad_phase_layer_filter = +[ + [ "~BroadPhaseLayerFilter", "class_broad_phase_layer_filter.html#a925a1ef794d370861c3daa4c2aad3f97", null ], + [ "ShouldCollide", "class_broad_phase_layer_filter.html#ac1ac3c869de6ebfe9fa1ded56faddb55", null ] +]; \ No newline at end of file diff --git a/class_broad_phase_layer_filter.png b/class_broad_phase_layer_filter.png new file mode 100644 index 000000000..659faa2b5 Binary files /dev/null and b/class_broad_phase_layer_filter.png differ diff --git a/class_broad_phase_layer_interface-members.html b/class_broad_phase_layer_interface-members.html new file mode 100644 index 000000000..ac86c6cf1 --- /dev/null +++ b/class_broad_phase_layer_interface-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseLayerInterface Member List
+
+
+ +

This is the complete list of members for BroadPhaseLayerInterface, including all inherited members.

+ + + + + + + + +
GetBroadPhaseLayer(ObjectLayer inLayer) const =0BroadPhaseLayerInterfacepure virtual
GetBroadPhaseLayerName(BroadPhaseLayer inLayer) const =0BroadPhaseLayerInterfacepure virtual
GetNumBroadPhaseLayers() const =0BroadPhaseLayerInterfacepure virtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~BroadPhaseLayerInterface()=defaultBroadPhaseLayerInterfacevirtual
+
+ + + + diff --git a/class_broad_phase_layer_interface.html b/class_broad_phase_layer_interface.html new file mode 100644 index 000000000..27244047c --- /dev/null +++ b/class_broad_phase_layer_interface.html @@ -0,0 +1,279 @@ + + + + + + + +Jolt Physics: BroadPhaseLayerInterface Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseLayerInterface Class Referenceabstract
+
+
+ +

Interface that the application should implement to allow mapping object layers to broadphase layers. + More...

+ +

#include <BroadPhaseLayer.h>

+
+Inheritance diagram for BroadPhaseLayerInterface:
+
+
+ + +NonCopyable +BroadPhaseLayerInterfaceMask +BroadPhaseLayerInterfaceTable + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~BroadPhaseLayerInterface ()=default
 Destructor.
 
virtual uint GetNumBroadPhaseLayers () const =0
 Return the number of broadphase layers there are.
 
virtual BroadPhaseLayer GetBroadPhaseLayer (ObjectLayer inLayer) const =0
 Convert an object layer to the corresponding broadphase layer.
 
virtual const char * GetBroadPhaseLayerName (BroadPhaseLayer inLayer) const =0
 Get the user readable name of a broadphase layer (debugging purposes)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Interface that the application should implement to allow mapping object layers to broadphase layers.

+

Constructor & Destructor Documentation

+ +

◆ ~BroadPhaseLayerInterface()

+ +
+
+ + + + + +
+ + + + + + + +
virtual BroadPhaseLayerInterface::~BroadPhaseLayerInterface ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetBroadPhaseLayer()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual BroadPhaseLayer BroadPhaseLayerInterface::GetBroadPhaseLayer (ObjectLayer inLayer) const
+
+pure virtual
+
+ +

Convert an object layer to the corresponding broadphase layer.

+ +

Implemented in BroadPhaseLayerInterfaceMask, and BroadPhaseLayerInterfaceTable.

+ +
+
+ +

◆ GetBroadPhaseLayerName()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual const char * BroadPhaseLayerInterface::GetBroadPhaseLayerName (BroadPhaseLayer inLayer) const
+
+pure virtual
+
+ +

Get the user readable name of a broadphase layer (debugging purposes)

+ +

Implemented in BroadPhaseLayerInterfaceMask, and BroadPhaseLayerInterfaceTable.

+ +
+
+ +

◆ GetNumBroadPhaseLayers()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint BroadPhaseLayerInterface::GetNumBroadPhaseLayers () const
+
+pure virtual
+
+ +

Return the number of broadphase layers there are.

+ +

Implemented in BroadPhaseLayerInterfaceMask, and BroadPhaseLayerInterfaceTable.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_broad_phase_layer_interface.js b/class_broad_phase_layer_interface.js new file mode 100644 index 000000000..c0df2457e --- /dev/null +++ b/class_broad_phase_layer_interface.js @@ -0,0 +1,7 @@ +var class_broad_phase_layer_interface = +[ + [ "~BroadPhaseLayerInterface", "class_broad_phase_layer_interface.html#aefc74492347f08d653121e2f4af91e59", null ], + [ "GetBroadPhaseLayer", "class_broad_phase_layer_interface.html#a5007c9b9beab5c16af36e89b48cd06cb", null ], + [ "GetBroadPhaseLayerName", "class_broad_phase_layer_interface.html#af599bec360da5437bfc74cb0fd749225", null ], + [ "GetNumBroadPhaseLayers", "class_broad_phase_layer_interface.html#a3eeb469199592955036a5b24633b8f53", null ] +]; \ No newline at end of file diff --git a/class_broad_phase_layer_interface.png b/class_broad_phase_layer_interface.png new file mode 100644 index 000000000..364af7632 Binary files /dev/null and b/class_broad_phase_layer_interface.png differ diff --git a/class_broad_phase_layer_interface_mask-members.html b/class_broad_phase_layer_interface_mask-members.html new file mode 100644 index 000000000..66ac2c815 --- /dev/null +++ b/class_broad_phase_layer_interface_mask-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseLayerInterfaceMask Member List
+
+
+ +

This is the complete list of members for BroadPhaseLayerInterfaceMask, including all inherited members.

+ + + + + + + + + + + + +
BroadPhaseLayerInterfaceMask(uint inNumBroadPhaseLayers)BroadPhaseLayerInterfaceMaskinlineexplicit
ConfigureLayer(BroadPhaseLayer inBroadPhaseLayer, uint32 inGroupsToInclude, uint32 inGroupsToExclude)BroadPhaseLayerInterfaceMaskinline
GetBroadPhaseLayer(ObjectLayer inLayer) const overrideBroadPhaseLayerInterfaceMaskinlinevirtual
GetBroadPhaseLayerName(BroadPhaseLayer inLayer) const overrideBroadPhaseLayerInterfaceMaskinlinevirtual
GetNumBroadPhaseLayers() const overrideBroadPhaseLayerInterfaceMaskinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
SetBroadPhaseLayerName(BroadPhaseLayer inLayer, const char *inName)BroadPhaseLayerInterfaceMaskinline
ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) constBroadPhaseLayerInterfaceMaskinline
~BroadPhaseLayerInterface()=defaultBroadPhaseLayerInterfacevirtual
+
+ + + + diff --git a/class_broad_phase_layer_interface_mask.html b/class_broad_phase_layer_interface_mask.html new file mode 100644 index 000000000..71bc51903 --- /dev/null +++ b/class_broad_phase_layer_interface_mask.html @@ -0,0 +1,401 @@ + + + + + + + +Jolt Physics: BroadPhaseLayerInterfaceMask Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseLayerInterfaceMask Class Reference
+
+
+ +

#include <BroadPhaseLayerInterfaceMask.h>

+
+Inheritance diagram for BroadPhaseLayerInterfaceMask:
+
+
+ + +BroadPhaseLayerInterface +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE BroadPhaseLayerInterfaceMask (uint inNumBroadPhaseLayers)
 
void ConfigureLayer (BroadPhaseLayer inBroadPhaseLayer, uint32 inGroupsToInclude, uint32 inGroupsToExclude)
 
virtual uint GetNumBroadPhaseLayers () const override
 Return the number of broadphase layers there are.
 
virtual BroadPhaseLayer GetBroadPhaseLayer (ObjectLayer inLayer) const override
 Convert an object layer to the corresponding broadphase layer.
 
bool ShouldCollide (ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const
 Returns true if an object layer should collide with a broadphase layer, this function is being called from ObjectVsBroadPhaseLayerFilterMask.
 
void SetBroadPhaseLayerName (BroadPhaseLayer inLayer, const char *inName)
 
virtual const char * GetBroadPhaseLayerName (BroadPhaseLayer inLayer) const override
 Get the user readable name of a broadphase layer (debugging purposes)
 
- Public Member Functions inherited from BroadPhaseLayerInterface
virtual ~BroadPhaseLayerInterface ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

BroadPhaseLayerInterface implementation. This defines a mapping between object and broadphase layers. This implementation works together with ObjectLayerPairFilterMask and ObjectVsBroadPhaseLayerFilterMask. A broadphase layer is suitable for an object if its group & inGroupsToInclude is not zero and its group & inGroupsToExclude is zero. The broadphase layers are iterated from lowest to highest value and the first one that matches is taken. If none match then it takes the last layer.

+

Constructor & Destructor Documentation

+ +

◆ BroadPhaseLayerInterfaceMask()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE BroadPhaseLayerInterfaceMask::BroadPhaseLayerInterfaceMask (uint inNumBroadPhaseLayers)
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ ConfigureLayer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseLayerInterfaceMask::ConfigureLayer (BroadPhaseLayer inBroadPhaseLayer,
uint32 inGroupsToInclude,
uint32 inGroupsToExclude 
)
+
+inline
+
+ +
+
+ +

◆ GetBroadPhaseLayer()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual BroadPhaseLayer BroadPhaseLayerInterfaceMask::GetBroadPhaseLayer (ObjectLayer inLayer) const
+
+inlineoverridevirtual
+
+ +

Convert an object layer to the corresponding broadphase layer.

+ +

Implements BroadPhaseLayerInterface.

+ +
+
+ +

◆ GetBroadPhaseLayerName()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual const char * BroadPhaseLayerInterfaceMask::GetBroadPhaseLayerName (BroadPhaseLayer inLayer) const
+
+inlineoverridevirtual
+
+ +

Get the user readable name of a broadphase layer (debugging purposes)

+ +

Implements BroadPhaseLayerInterface.

+ +
+
+ +

◆ GetNumBroadPhaseLayers()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint BroadPhaseLayerInterfaceMask::GetNumBroadPhaseLayers () const
+
+inlineoverridevirtual
+
+ +

Return the number of broadphase layers there are.

+ +

Implements BroadPhaseLayerInterface.

+ +
+
+ +

◆ SetBroadPhaseLayerName()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BroadPhaseLayerInterfaceMask::SetBroadPhaseLayerName (BroadPhaseLayer inLayer,
const char * inName 
)
+
+inline
+
+ +
+
+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool BroadPhaseLayerInterfaceMask::ShouldCollide (ObjectLayer inLayer1,
BroadPhaseLayer inLayer2 
) const
+
+inline
+
+ +

Returns true if an object layer should collide with a broadphase layer, this function is being called from ObjectVsBroadPhaseLayerFilterMask.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_broad_phase_layer_interface_mask.js b/class_broad_phase_layer_interface_mask.js new file mode 100644 index 000000000..84a4bb3f6 --- /dev/null +++ b/class_broad_phase_layer_interface_mask.js @@ -0,0 +1,10 @@ +var class_broad_phase_layer_interface_mask = +[ + [ "BroadPhaseLayerInterfaceMask", "class_broad_phase_layer_interface_mask.html#a91a0c2af42acacfefdb8901fc1bc9696", null ], + [ "ConfigureLayer", "class_broad_phase_layer_interface_mask.html#a01a9ec0c57462e3cda401b73edbf3573", null ], + [ "GetBroadPhaseLayer", "class_broad_phase_layer_interface_mask.html#a75300021e8d32e840ec8eb0d4a292b5a", null ], + [ "GetBroadPhaseLayerName", "class_broad_phase_layer_interface_mask.html#aaf3574120e2a6941af759af7feec9746", null ], + [ "GetNumBroadPhaseLayers", "class_broad_phase_layer_interface_mask.html#a5c4d1d6ac5321a8bd30ddd54be36f24d", null ], + [ "SetBroadPhaseLayerName", "class_broad_phase_layer_interface_mask.html#a28a251385bdfff0681491b5bdabcb22a", null ], + [ "ShouldCollide", "class_broad_phase_layer_interface_mask.html#ae96ef540e10bbd5d1dbed4260d8d179a", null ] +]; \ No newline at end of file diff --git a/class_broad_phase_layer_interface_mask.png b/class_broad_phase_layer_interface_mask.png new file mode 100644 index 000000000..045b2f75e Binary files /dev/null and b/class_broad_phase_layer_interface_mask.png differ diff --git a/class_broad_phase_layer_interface_table-members.html b/class_broad_phase_layer_interface_table-members.html new file mode 100644 index 000000000..f9fa0bd1c --- /dev/null +++ b/class_broad_phase_layer_interface_table-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseLayerInterfaceTable Member List
+
+
+ +

This is the complete list of members for BroadPhaseLayerInterfaceTable, including all inherited members.

+ + + + + + + + + + + +
BroadPhaseLayerInterfaceTable(uint inNumObjectLayers, uint inNumBroadPhaseLayers)BroadPhaseLayerInterfaceTableinline
GetBroadPhaseLayer(ObjectLayer inLayer) const overrideBroadPhaseLayerInterfaceTableinlinevirtual
GetBroadPhaseLayerName(BroadPhaseLayer inLayer) const overrideBroadPhaseLayerInterfaceTableinlinevirtual
GetNumBroadPhaseLayers() const overrideBroadPhaseLayerInterfaceTableinlinevirtual
MapObjectToBroadPhaseLayer(ObjectLayer inObjectLayer, BroadPhaseLayer inBroadPhaseLayer)BroadPhaseLayerInterfaceTableinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
SetBroadPhaseLayerName(BroadPhaseLayer inLayer, const char *inName)BroadPhaseLayerInterfaceTableinline
~BroadPhaseLayerInterface()=defaultBroadPhaseLayerInterfacevirtual
+
+ + + + diff --git a/class_broad_phase_layer_interface_table.html b/class_broad_phase_layer_interface_table.html new file mode 100644 index 000000000..41102f29c --- /dev/null +++ b/class_broad_phase_layer_interface_table.html @@ -0,0 +1,363 @@ + + + + + + + +Jolt Physics: BroadPhaseLayerInterfaceTable Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseLayerInterfaceTable Class Reference
+
+
+ +

#include <BroadPhaseLayerInterfaceTable.h>

+
+Inheritance diagram for BroadPhaseLayerInterfaceTable:
+
+
+ + +BroadPhaseLayerInterface +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE BroadPhaseLayerInterfaceTable (uint inNumObjectLayers, uint inNumBroadPhaseLayers)
 
void MapObjectToBroadPhaseLayer (ObjectLayer inObjectLayer, BroadPhaseLayer inBroadPhaseLayer)
 
virtual uint GetNumBroadPhaseLayers () const override
 Return the number of broadphase layers there are.
 
virtual BroadPhaseLayer GetBroadPhaseLayer (ObjectLayer inLayer) const override
 Convert an object layer to the corresponding broadphase layer.
 
void SetBroadPhaseLayerName (BroadPhaseLayer inLayer, const char *inName)
 
virtual const char * GetBroadPhaseLayerName (BroadPhaseLayer inLayer) const override
 Get the user readable name of a broadphase layer (debugging purposes)
 
- Public Member Functions inherited from BroadPhaseLayerInterface
virtual ~BroadPhaseLayerInterface ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

BroadPhaseLayerInterface implementation. This defines a mapping between object and broadphase layers. This implementation uses a simple table

+

Constructor & Destructor Documentation

+ +

◆ BroadPhaseLayerInterfaceTable()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_OVERRIDE_NEW_DELETE BroadPhaseLayerInterfaceTable::BroadPhaseLayerInterfaceTable (uint inNumObjectLayers,
uint inNumBroadPhaseLayers 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetBroadPhaseLayer()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual BroadPhaseLayer BroadPhaseLayerInterfaceTable::GetBroadPhaseLayer (ObjectLayer inLayer) const
+
+inlineoverridevirtual
+
+ +

Convert an object layer to the corresponding broadphase layer.

+ +

Implements BroadPhaseLayerInterface.

+ +
+
+ +

◆ GetBroadPhaseLayerName()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual const char * BroadPhaseLayerInterfaceTable::GetBroadPhaseLayerName (BroadPhaseLayer inLayer) const
+
+inlineoverridevirtual
+
+ +

Get the user readable name of a broadphase layer (debugging purposes)

+ +

Implements BroadPhaseLayerInterface.

+ +
+
+ +

◆ GetNumBroadPhaseLayers()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint BroadPhaseLayerInterfaceTable::GetNumBroadPhaseLayers () const
+
+inlineoverridevirtual
+
+ +

Return the number of broadphase layers there are.

+ +

Implements BroadPhaseLayerInterface.

+ +
+
+ +

◆ MapObjectToBroadPhaseLayer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BroadPhaseLayerInterfaceTable::MapObjectToBroadPhaseLayer (ObjectLayer inObjectLayer,
BroadPhaseLayer inBroadPhaseLayer 
)
+
+inline
+
+ +
+
+ +

◆ SetBroadPhaseLayerName()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BroadPhaseLayerInterfaceTable::SetBroadPhaseLayerName (BroadPhaseLayer inLayer,
const char * inName 
)
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_broad_phase_layer_interface_table.js b/class_broad_phase_layer_interface_table.js new file mode 100644 index 000000000..125a551d9 --- /dev/null +++ b/class_broad_phase_layer_interface_table.js @@ -0,0 +1,9 @@ +var class_broad_phase_layer_interface_table = +[ + [ "BroadPhaseLayerInterfaceTable", "class_broad_phase_layer_interface_table.html#accae5298efb3880af7dd16c8ba4a9e72", null ], + [ "GetBroadPhaseLayer", "class_broad_phase_layer_interface_table.html#a0606a1dec4b344e326ed643f97929d2f", null ], + [ "GetBroadPhaseLayerName", "class_broad_phase_layer_interface_table.html#ac85f1b6915faa433719b8d6a28886428", null ], + [ "GetNumBroadPhaseLayers", "class_broad_phase_layer_interface_table.html#a0b15a05cfa5251b19bd3f1e5c14b38f3", null ], + [ "MapObjectToBroadPhaseLayer", "class_broad_phase_layer_interface_table.html#a1c93b211dfb3e39b7c4cfed49ce961ad", null ], + [ "SetBroadPhaseLayerName", "class_broad_phase_layer_interface_table.html#a62cece34b11f4cd2d37c063b7dc32116", null ] +]; \ No newline at end of file diff --git a/class_broad_phase_layer_interface_table.png b/class_broad_phase_layer_interface_table.png new file mode 100644 index 000000000..70866d305 Binary files /dev/null and b/class_broad_phase_layer_interface_table.png differ diff --git a/class_broad_phase_quad_tree-members.html b/class_broad_phase_quad_tree-members.html new file mode 100644 index 000000000..8b9e999bd --- /dev/null +++ b/class_broad_phase_quad_tree-members.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseQuadTree Member List
+
+
+ +

This is the complete list of members for BroadPhaseQuadTree, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddBodiesAbort(BodyID *ioBodies, int inNumber, AddState inAddState) overrideBroadPhaseQuadTreevirtual
AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState) overrideBroadPhaseQuadTreevirtual
AddBodiesPrepare(BodyID *ioBodies, int inNumber) overrideBroadPhaseQuadTreevirtual
AddState typedefBroadPhase
CastAABox(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseQuadTreevirtual
CastAABoxNoLock(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseQuadTreevirtual
CastRay(const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseQuadTreevirtual
CollideAABox(const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseQuadTreevirtual
CollideOrientedBox(const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseQuadTreevirtual
CollidePoint(Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseQuadTreevirtual
CollideSphere(Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const overrideBroadPhaseQuadTreevirtual
FindCollidingPairs(BodyID *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter, BodyPairCollector &ioPairCollector) const overrideBroadPhaseQuadTreevirtual
FrameSync() overrideBroadPhaseQuadTreevirtual
GetBounds() const overrideBroadPhaseQuadTreevirtual
Init(BodyManager *inBodyManager, const BroadPhaseLayerInterface &inLayerInterface) overrideBroadPhaseQuadTreevirtual
LockModifications() overrideBroadPhaseQuadTreevirtual
mBodyManagerBroadPhaseprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyBodiesAABBChanged(BodyID *ioBodies, int inNumber, bool inTakeLock) overrideBroadPhaseQuadTreevirtual
NotifyBodiesLayerChanged(BodyID *ioBodies, int inNumber) overrideBroadPhaseQuadTreevirtual
operator=(const NonCopyable &)=deleteNonCopyable
Optimize() overrideBroadPhaseQuadTreevirtual
RemoveBodies(BodyID *ioBodies, int inNumber) overrideBroadPhaseQuadTreevirtual
UnlockModifications() overrideBroadPhaseQuadTreevirtual
UpdateFinalize(const UpdateState &inUpdateState) overrideBroadPhaseQuadTreevirtual
UpdatePrepare() overrideBroadPhaseQuadTreevirtual
~BroadPhaseQuadTree() overrideBroadPhaseQuadTreevirtual
~BroadPhaseQuery()=defaultBroadPhaseQueryvirtual
+
+ + + + diff --git a/class_broad_phase_quad_tree.html b/class_broad_phase_quad_tree.html new file mode 100644 index 000000000..1cb31d221 --- /dev/null +++ b/class_broad_phase_quad_tree.html @@ -0,0 +1,1200 @@ + + + + + + + +Jolt Physics: BroadPhaseQuadTree Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseQuadTree Class Referencefinal
+
+
+ +

Fast SIMD based quad tree BroadPhase that is multithreading aware and tries to do a minimal amount of locking. + More...

+ +

#include <BroadPhaseQuadTree.h>

+
+Inheritance diagram for BroadPhaseQuadTree:
+
+
+ + +BroadPhase +BroadPhaseQuery +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual JPH_OVERRIDE_NEW_DELETE ~BroadPhaseQuadTree () override
 Destructor.
 
virtual void Init (BodyManager *inBodyManager, const BroadPhaseLayerInterface &inLayerInterface) override
 
virtual void Optimize () override
 Should be called after many objects have been inserted to make the broadphase more efficient, usually done on startup only.
 
virtual void FrameSync () override
 Must be called just before updating the broadphase when none of the body mutexes are locked.
 
virtual void LockModifications () override
 Must be called before UpdatePrepare to prevent modifications from being made to the tree.
 
virtual UpdateState UpdatePrepare () override
 
virtual void UpdateFinalize (const UpdateState &inUpdateState) override
 Finalizing the update will quickly apply the changes.
 
virtual void UnlockModifications () override
 Must be called after UpdateFinalize to allow modifications to the broadphase.
 
virtual AddState AddBodiesPrepare (BodyID *ioBodies, int inNumber) override
 
virtual void AddBodiesFinalize (BodyID *ioBodies, int inNumber, AddState inAddState) override
 
virtual void AddBodiesAbort (BodyID *ioBodies, int inNumber, AddState inAddState) override
 
virtual void RemoveBodies (BodyID *ioBodies, int inNumber) override
 
virtual void NotifyBodiesAABBChanged (BodyID *ioBodies, int inNumber, bool inTakeLock) override
 
virtual void NotifyBodiesLayerChanged (BodyID *ioBodies, int inNumber) override
 Call whenever the layer (and optionally the aabb as well) of a body changes (can change order of ioBodies array)
 
virtual void CastRay (const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Cast a ray and add any hits to ioCollector.
 
virtual void CollideAABox (const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Get bodies intersecting with inBox and any hits to ioCollector.
 
virtual void CollideSphere (Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Get bodies intersecting with a sphere and any hits to ioCollector.
 
virtual void CollidePoint (Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Get bodies intersecting with a point and any hits to ioCollector.
 
virtual void CollideOrientedBox (const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Get bodies intersecting with an oriented box and any hits to ioCollector.
 
virtual void CastAABoxNoLock (const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Same as BroadPhaseQuery::CastAABox but can be implemented in a way to take no broad phase locks.
 
virtual void CastAABox (const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter) const override
 Cast a box and add any hits to ioCollector.
 
virtual void FindCollidingPairs (BodyID *ioActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter, BodyPairCollector &ioPairCollector) const override
 
virtual AABox GetBounds () const override
 Get the bounding box of all objects in the broadphase.
 
- Public Member Functions inherited from BroadPhaseQuery
virtual ~BroadPhaseQuery ()=default
 Virtual destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BroadPhase
using AddState = void *
 Handle used during adding bodies to the broadphase.
 
- Protected Attributes inherited from BroadPhase
BodyManagermBodyManager = nullptr
 Link to the body manager that manages the bodies in this broadphase.
 
+

Detailed Description

+

Fast SIMD based quad tree BroadPhase that is multithreading aware and tries to do a minimal amount of locking.

+

Constructor & Destructor Documentation

+ +

◆ ~BroadPhaseQuadTree()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_NAMESPACE_BEGIN BroadPhaseQuadTree::~BroadPhaseQuadTree ()
+
+overridevirtual
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ AddBodiesAbort()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::AddBodiesAbort (BodyIDioBodies,
int inNumber,
AddState inAddState 
)
+
+overridevirtual
+
+

Abort adding bodies to the broadphase, supply the return value of AddBodiesPrepare in inAddState. This can be done on a background thread without influencing the broadphase. Please ensure that the ioBodies array passed to AddBodiesPrepare is unmodified and passed again to this function.

+ +

Reimplemented from BroadPhase.

+ +
+
+ +

◆ AddBodiesFinalize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::AddBodiesFinalize (BodyIDioBodies,
int inNumber,
AddState inAddState 
)
+
+overridevirtual
+
+

Finalize adding bodies to the broadphase, supply the return value of AddBodiesPrepare in inAddState. Please ensure that the ioBodies array passed to AddBodiesPrepare is unmodified and passed again to this function.

+ +

Implements BroadPhase.

+ +
+
+ +

◆ AddBodiesPrepare()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
BroadPhase::AddState BroadPhaseQuadTree::AddBodiesPrepare (BodyIDioBodies,
int inNumber 
)
+
+overridevirtual
+
+

Prepare adding inNumber bodies at ioBodies to the broadphase, returns a handle that should be used in AddBodiesFinalize/Abort. This can be done on a background thread without influencing the broadphase. ioBodies may be shuffled around by this function and should be kept that way until AddBodiesFinalize/Abort is called.

+ +

Reimplemented from BroadPhase.

+ +
+
+ +

◆ CastAABox()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::CastAABox (const AABoxCastinBox,
CastShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Cast a box and add any hits to ioCollector.

+ +

Implements BroadPhaseQuery.

+ +
+
+ +

◆ CastAABoxNoLock()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::CastAABoxNoLock (const AABoxCastinBox,
CastShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Same as BroadPhaseQuery::CastAABox but can be implemented in a way to take no broad phase locks.

+ +

Implements BroadPhase.

+ +
+
+ +

◆ CastRay()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::CastRay (const RayCastinRay,
RayCastBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Cast a ray and add any hits to ioCollector.

+ +

Implements BroadPhaseQuery.

+ +
+
+ +

◆ CollideAABox()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::CollideAABox (const AABoxinBox,
CollideShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Get bodies intersecting with inBox and any hits to ioCollector.

+ +

Implements BroadPhaseQuery.

+ +
+
+ +

◆ CollideOrientedBox()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::CollideOrientedBox (const OrientedBoxinBox,
CollideShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Get bodies intersecting with an oriented box and any hits to ioCollector.

+ +

Implements BroadPhaseQuery.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::CollidePoint (Vec3Arg inPoint,
CollideShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Get bodies intersecting with a point and any hits to ioCollector.

+ +

Implements BroadPhaseQuery.

+ +
+
+ +

◆ CollideSphere()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::CollideSphere (Vec3Arg inCenter,
float inRadius,
CollideShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter 
) const
+
+overridevirtual
+
+ +

Get bodies intersecting with a sphere and any hits to ioCollector.

+ +

Implements BroadPhaseQuery.

+ +
+
+ +

◆ FindCollidingPairs()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::FindCollidingPairs (BodyIDioActiveBodies,
int inNumActiveBodies,
float inSpeculativeContactDistance,
const ObjectVsBroadPhaseLayerFilterinObjectVsBroadPhaseLayerFilter,
const ObjectLayerPairFilterinObjectLayerPairFilter,
BodyPairCollectorioPairCollector 
) const
+
+overridevirtual
+
+

Find all colliding pairs between dynamic bodies Note that this function is very specifically tailored for the PhysicsSystem::Update function, hence it is not part of the BroadPhaseQuery interface. One of the assumptions it can make is that no locking is needed during the query as it will only be called during a very particular part of the update.

Parameters
+ + + + + + + +
ioActiveBodiesis a list of bodies for which we need to find colliding pairs (this function can change the order of the ioActiveBodies array). This can be a subset of the set of active bodies in the system.
inNumActiveBodiesis the size of the ioActiveBodies array.
inSpeculativeContactDistanceDistance at which speculative contact points will be created.
inObjectVsBroadPhaseLayerFilteris the filter that determines if an object can collide with a broadphase layer.
inObjectLayerPairFilteris the filter that determines if two objects can collide.
ioPairCollectorreceives callbacks for every body pair found.
+
+
+ +

Implements BroadPhase.

+ +
+
+ +

◆ FrameSync()

+ +
+
+ + + + + +
+ + + + + + + +
void BroadPhaseQuadTree::FrameSync ()
+
+overridevirtual
+
+ +

Must be called just before updating the broadphase when none of the body mutexes are locked.

+ +

Reimplemented from BroadPhase.

+ +
+
+ +

◆ GetBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox BroadPhaseQuadTree::GetBounds () const
+
+overridevirtual
+
+ +

Get the bounding box of all objects in the broadphase.

+ +

Implements BroadPhase.

+ +
+
+ +

◆ Init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::Init (BodyManagerinBodyManager,
const BroadPhaseLayerInterfaceinLayerInterface 
)
+
+overridevirtual
+
+

Initialize the broadphase.

Parameters
+ + + +
inBodyManagerThe body manager singleton
inLayerInterfaceInterface that maps object layers to broadphase layers. Note that the broadphase takes a pointer to the data inside inObjectToBroadPhaseLayer so this object should remain static.
+
+
+ +

Reimplemented from BroadPhase.

+ +
+
+ +

◆ LockModifications()

+ +
+
+ + + + + +
+ + + + + + + +
void BroadPhaseQuadTree::LockModifications ()
+
+overridevirtual
+
+ +

Must be called before UpdatePrepare to prevent modifications from being made to the tree.

+ +

Reimplemented from BroadPhase.

+ +
+
+ +

◆ NotifyBodiesAABBChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::NotifyBodiesAABBChanged (BodyIDioBodies,
int inNumber,
bool inTakeLock 
)
+
+overridevirtual
+
+

Call whenever the aabb of a body changes (can change order of ioBodies array) inTakeLock should be false if we're between LockModifications/UnlockModificiations in which case care needs to be taken to not call this between UpdatePrepare/UpdateFinalize

+ +

Implements BroadPhase.

+ +
+
+ +

◆ NotifyBodiesLayerChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::NotifyBodiesLayerChanged (BodyIDioBodies,
int inNumber 
)
+
+overridevirtual
+
+ +

Call whenever the layer (and optionally the aabb as well) of a body changes (can change order of ioBodies array)

+ +

Implements BroadPhase.

+ +
+
+ +

◆ Optimize()

+ +
+
+ + + + + +
+ + + + + + + +
void BroadPhaseQuadTree::Optimize ()
+
+overridevirtual
+
+ +

Should be called after many objects have been inserted to make the broadphase more efficient, usually done on startup only.

+ +

Reimplemented from BroadPhase.

+ +
+
+ +

◆ RemoveBodies()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BroadPhaseQuadTree::RemoveBodies (BodyIDioBodies,
int inNumber 
)
+
+overridevirtual
+
+

Remove inNumber bodies in ioBodies from the broadphase. ioBodies may be shuffled around by this function.

+ +

Implements BroadPhase.

+ +
+
+ +

◆ UnlockModifications()

+ +
+
+ + + + + +
+ + + + + + + +
void BroadPhaseQuadTree::UnlockModifications ()
+
+overridevirtual
+
+ +

Must be called after UpdateFinalize to allow modifications to the broadphase.

+ +

Reimplemented from BroadPhase.

+ +
+
+ +

◆ UpdateFinalize()

+ +
+
+ + + + + +
+ + + + + + + + +
void BroadPhaseQuadTree::UpdateFinalize (const UpdateStateinUpdateState)
+
+overridevirtual
+
+ +

Finalizing the update will quickly apply the changes.

+ +

Reimplemented from BroadPhase.

+ +
+
+ +

◆ UpdatePrepare()

+ +
+
+ + + + + +
+ + + + + + + +
BroadPhase::UpdateState BroadPhaseQuadTree::UpdatePrepare ()
+
+overridevirtual
+
+

Update the broadphase, needs to be called frequently to update the internal state when bodies have been modified. The UpdatePrepare() function can run in a background thread without influencing the broadphase

+ +

Reimplemented from BroadPhase.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_broad_phase_quad_tree.js b/class_broad_phase_quad_tree.js new file mode 100644 index 000000000..a4d9f6cba --- /dev/null +++ b/class_broad_phase_quad_tree.js @@ -0,0 +1,26 @@ +var class_broad_phase_quad_tree = +[ + [ "~BroadPhaseQuadTree", "class_broad_phase_quad_tree.html#a0345666a910f38b25ec943d17a3131b5", null ], + [ "AddBodiesAbort", "class_broad_phase_quad_tree.html#a7873fb8f52203413346e4ba2fbf6859c", null ], + [ "AddBodiesFinalize", "class_broad_phase_quad_tree.html#a5f3d5a38786504df32579eb87b5c5eb8", null ], + [ "AddBodiesPrepare", "class_broad_phase_quad_tree.html#a0069028e847115d1adf3558bb09cb5a8", null ], + [ "CastAABox", "class_broad_phase_quad_tree.html#abff5df5af5ebe792ad05fec8d7e8beb2", null ], + [ "CastAABoxNoLock", "class_broad_phase_quad_tree.html#a91f3216a3baed7d4ee6cea9dea879d9a", null ], + [ "CastRay", "class_broad_phase_quad_tree.html#a15e9cc48cbd4838fb1f5f64faee99b80", null ], + [ "CollideAABox", "class_broad_phase_quad_tree.html#ababb4885596fb1dd266438a0d57fe16f", null ], + [ "CollideOrientedBox", "class_broad_phase_quad_tree.html#a0b2255def43618e472f268d426596a46", null ], + [ "CollidePoint", "class_broad_phase_quad_tree.html#af5143b02d37873e6527da51ca6af9255", null ], + [ "CollideSphere", "class_broad_phase_quad_tree.html#ae7611ff0242bf2fa18f035db22a28d5a", null ], + [ "FindCollidingPairs", "class_broad_phase_quad_tree.html#af5fd975a61944a35c8ea2ea1daaa22de", null ], + [ "FrameSync", "class_broad_phase_quad_tree.html#aed698682cac2d4b1ab94dcd65ccd5ebf", null ], + [ "GetBounds", "class_broad_phase_quad_tree.html#ab985dcdd61af886d4bcfbb3858fb1b1d", null ], + [ "Init", "class_broad_phase_quad_tree.html#aff006c957ae78fae8652ed352f7f1bc2", null ], + [ "LockModifications", "class_broad_phase_quad_tree.html#a7d387d77d1d6e8f388dde9470458da81", null ], + [ "NotifyBodiesAABBChanged", "class_broad_phase_quad_tree.html#a1ef1e671fbf1837a502f7033bd946ca3", null ], + [ "NotifyBodiesLayerChanged", "class_broad_phase_quad_tree.html#a332de5255be585631ba7d353dc45575b", null ], + [ "Optimize", "class_broad_phase_quad_tree.html#a0314ec8db348c144f5e4c722e5d26bca", null ], + [ "RemoveBodies", "class_broad_phase_quad_tree.html#aecb695ab5c29fcb219e4f5ee7e27dba8", null ], + [ "UnlockModifications", "class_broad_phase_quad_tree.html#aa60691ada837fd47ffcb53a969682661", null ], + [ "UpdateFinalize", "class_broad_phase_quad_tree.html#a851b5a33060fbd112d44cb3707829252", null ], + [ "UpdatePrepare", "class_broad_phase_quad_tree.html#a5a9eb444b1947b066fe77fc66d7899ff", null ] +]; \ No newline at end of file diff --git a/class_broad_phase_quad_tree.png b/class_broad_phase_quad_tree.png new file mode 100644 index 000000000..3d0fb1ebf Binary files /dev/null and b/class_broad_phase_quad_tree.png differ diff --git a/class_broad_phase_query-members.html b/class_broad_phase_query-members.html new file mode 100644 index 000000000..62d8ec38c --- /dev/null +++ b/class_broad_phase_query-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhaseQuery Member List
+
+
+ +

This is the complete list of members for BroadPhaseQuery, including all inherited members.

+ + + + + + + + + + + +
CastAABox(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0BroadPhaseQuerypure virtual
CastRay(const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0BroadPhaseQuerypure virtual
CollideAABox(const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0BroadPhaseQuerypure virtual
CollideOrientedBox(const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0BroadPhaseQuerypure virtual
CollidePoint(Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0BroadPhaseQuerypure virtual
CollideSphere(Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0BroadPhaseQuerypure virtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~BroadPhaseQuery()=defaultBroadPhaseQueryvirtual
+
+ + + + diff --git a/class_broad_phase_query.html b/class_broad_phase_query.html new file mode 100644 index 000000000..9443d467d --- /dev/null +++ b/class_broad_phase_query.html @@ -0,0 +1,515 @@ + + + + + + + +Jolt Physics: BroadPhaseQuery Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BroadPhaseQuery Class Referenceabstract
+
+
+ +

#include <BroadPhaseQuery.h>

+
+Inheritance diagram for BroadPhaseQuery:
+
+
+ + +NonCopyable +BroadPhase +BroadPhaseBruteForce +BroadPhaseQuadTree + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~BroadPhaseQuery ()=default
 Virtual destructor.
 
virtual void CastRay (const RayCast &inRay, RayCastBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
 Cast a ray and add any hits to ioCollector.
 
virtual void CollideAABox (const AABox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
 Get bodies intersecting with inBox and any hits to ioCollector.
 
virtual void CollideSphere (Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
 Get bodies intersecting with a sphere and any hits to ioCollector.
 
virtual void CollidePoint (Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
 Get bodies intersecting with a point and any hits to ioCollector.
 
virtual void CollideOrientedBox (const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
 Get bodies intersecting with an oriented box and any hits to ioCollector.
 
virtual void CastAABox (const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }) const =0
 Cast a box and add any hits to ioCollector.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Interface to the broadphase that can perform collision queries. These queries will only test the bounding box of the body to quickly determine a potential set of colliding bodies. The shapes of the bodies are not tested, if you want this then you should use the NarrowPhaseQuery interface.

+

Constructor & Destructor Documentation

+ +

◆ ~BroadPhaseQuery()

+ +
+
+ + + + + +
+ + + + + + + +
virtual BroadPhaseQuery::~BroadPhaseQuery ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ CastAABox()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BroadPhaseQuery::CastAABox (const AABoxCastinBox,
CastShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter = { },
const ObjectLayerFilterinObjectLayerFilter = { } 
) const
+
+pure virtual
+
+ +

Cast a box and add any hits to ioCollector.

+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+ +

◆ CastRay()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BroadPhaseQuery::CastRay (const RayCastinRay,
RayCastBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter = { },
const ObjectLayerFilterinObjectLayerFilter = { } 
) const
+
+pure virtual
+
+ +

Cast a ray and add any hits to ioCollector.

+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+ +

◆ CollideAABox()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BroadPhaseQuery::CollideAABox (const AABoxinBox,
CollideShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter = { },
const ObjectLayerFilterinObjectLayerFilter = { } 
) const
+
+pure virtual
+
+ +

Get bodies intersecting with inBox and any hits to ioCollector.

+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+ +

◆ CollideOrientedBox()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BroadPhaseQuery::CollideOrientedBox (const OrientedBoxinBox,
CollideShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter = { },
const ObjectLayerFilterinObjectLayerFilter = { } 
) const
+
+pure virtual
+
+ +

Get bodies intersecting with an oriented box and any hits to ioCollector.

+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BroadPhaseQuery::CollidePoint (Vec3Arg inPoint,
CollideShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter = { },
const ObjectLayerFilterinObjectLayerFilter = { } 
) const
+
+pure virtual
+
+ +

Get bodies intersecting with a point and any hits to ioCollector.

+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+ +

◆ CollideSphere()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BroadPhaseQuery::CollideSphere (Vec3Arg inCenter,
float inRadius,
CollideShapeBodyCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter = { },
const ObjectLayerFilterinObjectLayerFilter = { } 
) const
+
+pure virtual
+
+ +

Get bodies intersecting with a sphere and any hits to ioCollector.

+ +

Implemented in BroadPhaseBruteForce, and BroadPhaseQuadTree.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_broad_phase_query.js b/class_broad_phase_query.js new file mode 100644 index 000000000..cd310aced --- /dev/null +++ b/class_broad_phase_query.js @@ -0,0 +1,10 @@ +var class_broad_phase_query = +[ + [ "~BroadPhaseQuery", "class_broad_phase_query.html#a3eb1b1cf5421ba7785cff7e7aa4bd702", null ], + [ "CastAABox", "class_broad_phase_query.html#a8df87b27367ff5e9911f7966359d326a", null ], + [ "CastRay", "class_broad_phase_query.html#a1c74037652396c3584021f9b99341397", null ], + [ "CollideAABox", "class_broad_phase_query.html#a4a63335c1c6b386af32b22d4e74dbf5a", null ], + [ "CollideOrientedBox", "class_broad_phase_query.html#aeec59baf944dd3f63f172dbf732768b2", null ], + [ "CollidePoint", "class_broad_phase_query.html#a191877420623144ad7ba7a78db56baa9", null ], + [ "CollideSphere", "class_broad_phase_query.html#afb74ce9d61cf7048e3ea8a48a2997d38", null ] +]; \ No newline at end of file diff --git a/class_broad_phase_query.png b/class_broad_phase_query.png new file mode 100644 index 000000000..7968654a4 Binary files /dev/null and b/class_broad_phase_query.png differ diff --git a/class_byte_buffer-members.html b/class_byte_buffer-members.html new file mode 100644 index 000000000..27d052961 --- /dev/null +++ b/class_byte_buffer-members.html @@ -0,0 +1,180 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ByteBuffer Member List
+
+
+ +

This is the complete list of members for ByteBuffer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Align(size_t inSize)ByteBufferinline
Allocate(size_t inSize=1)ByteBufferinline
AppendVector(const Array< Type > &inData)ByteBufferinline
Array()=defaultArray< T, Allocator >
Array(const Allocator &inAllocator)Array< T, Allocator >inlineexplicit
Array(size_type inLength, const Allocator &inAllocator={ })Array< T, Allocator >inlineexplicit
Array(size_type inLength, const T &inValue, const Allocator &inAllocator={ })Array< T, Allocator >inline
Array(std::initializer_list< T > inList, const Allocator &inAllocator={ })Array< T, Allocator >inline
Array(const_iterator inBegin, const_iterator inEnd, const Allocator &inAllocator={ })Array< T, Allocator >inline
Array(const Array< T, Allocator > &inRHS)Array< T, Allocator >inline
Array(Array< T, Allocator > &&inRHS) noexceptArray< T, Allocator >inline
assign(Iterator inBegin, Iterator inEnd)Array< T, Allocator >inline
assign(std::initializer_list< T > inList)Array< T, Allocator >inline
at(size_type inIdx)Array< T, Allocator >inline
at(size_type inIdx) constArray< T, Allocator >inline
back() constArray< T, Allocator >inline
back()Array< T, Allocator >inline
begin() constArray< T, Allocator >inline
begin()Array< T, Allocator >inline
capacity() constArray< T, Allocator >inline
cbegin() constArray< T, Allocator >inline
cend() constArray< T, Allocator >inline
clear()Array< T, Allocator >inline
const_iterator typedefArray< T, Allocator >
const_pointer typedefArray< T, Allocator >
const_reference typedefArray< T, Allocator >
data() constArray< T, Allocator >inline
data()Array< T, Allocator >inline
emplace_back(A &&... inValue)Array< T, Allocator >inline
empty() constArray< T, Allocator >inline
end() constArray< T, Allocator >inline
end()Array< T, Allocator >inline
erase(const_iterator inIter)Array< T, Allocator >inline
erase(const_iterator inBegin, const_iterator inEnd)Array< T, Allocator >inline
front() constArray< T, Allocator >inline
front()Array< T, Allocator >inline
Get(size_t inPosition) constByteBufferinline
Get(size_t inPosition)ByteBufferinline
get_allocator()Array< T, Allocator >inline
get_allocator() constArray< T, Allocator >inline
insert(const_iterator inPos, Iterator inBegin, Iterator inEnd)Array< T, Allocator >inline
insert(const_iterator inPos, const T &inValue)Array< T, Allocator >inline
iterator typedefArray< T, Allocator >
operator!=(const Array< T, Allocator > &inRHS) constArray< T, Allocator >inline
operator=(const Array< T, Allocator > &inRHS)Array< T, Allocator >inline
operator=(Array< T, Allocator > &&inRHS) noexceptArray< T, Allocator >inline
operator=(std::initializer_list< T > inRHS)Array< T, Allocator >inline
operator==(const Array< T, Allocator > &inRHS) constArray< T, Allocator >inline
operator[](size_type inIdx)Array< T, Allocator >inline
operator[](size_type inIdx) constArray< T, Allocator >inline
pointer typedefArray< T, Allocator >
pop_back()Array< T, Allocator >inline
push_back(const T &inValue)Array< T, Allocator >inline
push_back(T &&inValue)Array< T, Allocator >inline
reference typedefArray< T, Allocator >
reserve(size_type inNewSize)Array< T, Allocator >inline
resize(size_type inNewSize)Array< T, Allocator >inline
resize(size_type inNewSize, const T &inValue)Array< T, Allocator >inline
shrink_to_fit()Array< T, Allocator >inline
size() constArray< T, Allocator >inline
size_type typedefArray< T, Allocator >
swap(Array< T, Allocator > &inRHS) noexceptArray< T, Allocator >inline
value_type typedefArray< T, Allocator >
~Array()Array< T, Allocator >inline
+
+ + + + diff --git a/class_byte_buffer.html b/class_byte_buffer.html new file mode 100644 index 000000000..7d8510d49 --- /dev/null +++ b/class_byte_buffer.html @@ -0,0 +1,470 @@ + + + + + + + +Jolt Physics: ByteBuffer Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ByteBuffer Class Reference
+
+
+ +

Simple byte buffer, aligned to a cache line. + More...

+ +

#include <ByteBuffer.h>

+
+Inheritance diagram for ByteBuffer:
+
+
+ + +Array< T, Allocator > +STLAllocator< T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

size_t Align (size_t inSize)
 Align the size to a multiple of inSize, returns the length after alignment.
 
template<class Type >
Type * Allocate (size_t inSize=1)
 Allocate block of data of inSize elements and return the pointer.
 
template<class Type >
void AppendVector (const Array< Type > &inData)
 Append inData to the buffer.
 
template<class Type >
const Type * Get (size_t inPosition) const
 Get object at inPosition (an offset in bytes)
 
template<class Type >
Type * Get (size_t inPosition)
 Get object at inPosition (an offset in bytes)
 
- Public Member Functions inherited from Array< T, Allocator >
void reserve (size_type inNewSize)
 Reserve array space.
 
void resize (size_type inNewSize)
 Resize array to new length.
 
void resize (size_type inNewSize, const T &inValue)
 Resize array to new length and initialize all elements with inValue.
 
void clear ()
 Destruct all elements and set length to zero.
 
template<class Iterator >
void assign (Iterator inBegin, Iterator inEnd)
 Replace the contents of this array with inBegin .. inEnd.
 
void assign (std::initializer_list< T > inList)
 Replace the contents of this array with inList.
 
 Array ()=default
 Default constructor.
 
 Array (const Allocator &inAllocator)
 Constructor with allocator.
 
 Array (size_type inLength, const Allocator &inAllocator={ })
 Constructor with length.
 
 Array (size_type inLength, const T &inValue, const Allocator &inAllocator={ })
 Constructor with length and value.
 
 Array (std::initializer_list< T > inList, const Allocator &inAllocator={ })
 Constructor from initializer list.
 
 Array (const_iterator inBegin, const_iterator inEnd, const Allocator &inAllocator={ })
 Constructor from iterator.
 
 Array (const Array< T, Allocator > &inRHS)
 Copy constructor.
 
 Array (Array< T, Allocator > &&inRHS) noexcept
 Move constructor.
 
 ~Array ()
 Destruct all elements.
 
Allocator & get_allocator ()
 Get the allocator.
 
const Allocator & get_allocator () const
 
void push_back (const T &inValue)
 Add element to the back of the array.
 
void push_back (T &&inValue)
 
template<class... A>
T & emplace_back (A &&... inValue)
 Construct element at the back of the array.
 
void pop_back ()
 Remove element from the back of the array.
 
bool empty () const
 Returns true if there are no elements in the array.
 
size_type size () const
 Returns amount of elements in the array.
 
size_type capacity () const
 Returns maximum amount of elements the array can hold.
 
void shrink_to_fit ()
 Reduce the capacity of the array to match its size.
 
void swap (Array< T, Allocator > &inRHS) noexcept
 Swap the contents of two arrays.
 
template<class Iterator >
void insert (const_iterator inPos, Iterator inBegin, Iterator inEnd)
 
void insert (const_iterator inPos, const T &inValue)
 
void erase (const_iterator inIter)
 Remove one element from the array.
 
void erase (const_iterator inBegin, const_iterator inEnd)
 Remove multiple element from the array.
 
const_iterator begin () const
 Iterators.
 
const_iterator end () const
 
const_iterator cbegin () const
 
const_iterator cend () const
 
iterator begin ()
 
iterator end ()
 
const T * data () const
 
T * data ()
 
T & operator[] (size_type inIdx)
 Access element.
 
const T & operator[] (size_type inIdx) const
 
T & at (size_type inIdx)
 Access element.
 
const T & at (size_type inIdx) const
 
const T & front () const
 First element in the array.
 
T & front ()
 
const T & back () const
 Last element in the array.
 
T & back ()
 
Array< T, Allocator > & operator= (const Array< T, Allocator > &inRHS)
 Assignment operator.
 
Array< T, Allocator > & operator= (Array< T, Allocator > &&inRHS) noexcept
 Assignment move operator.
 
Array< T, Allocator > & operator= (std::initializer_list< T > inRHS)
 Assignment operator.
 
bool operator== (const Array< T, Allocator > &inRHS) const
 Comparing arrays.
 
bool operator!= (const Array< T, Allocator > &inRHS) const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from Array< T, Allocator >
using value_type = T
 
using size_type = size_t
 
using pointer = T *
 
using const_pointer = const T *
 
using reference = T &
 
using const_reference = const T &
 
using const_iterator = const T *
 
using iterator = T *
 
+

Detailed Description

+

Simple byte buffer, aligned to a cache line.

+

Member Function Documentation

+ +

◆ Align()

+ +
+
+ + + + + +
+ + + + + + + + +
size_t ByteBuffer::Align (size_t inSize)
+
+inline
+
+ +

Align the size to a multiple of inSize, returns the length after alignment.

+ +
+
+ +

◆ Allocate()

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
Type * ByteBuffer::Allocate (size_t inSize = 1)
+
+inline
+
+ +

Allocate block of data of inSize elements and return the pointer.

+ +
+
+ +

◆ AppendVector()

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
void ByteBuffer::AppendVector (const Array< Type > & inData)
+
+inline
+
+ +

Append inData to the buffer.

+ +
+
+ +

◆ Get() [1/2]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
Type * ByteBuffer::Get (size_t inPosition)
+
+inline
+
+ +

Get object at inPosition (an offset in bytes)

+ +
+
+ +

◆ Get() [2/2]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
const Type * ByteBuffer::Get (size_t inPosition) const
+
+inline
+
+ +

Get object at inPosition (an offset in bytes)

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_byte_buffer.js b/class_byte_buffer.js new file mode 100644 index 000000000..ef76fce65 --- /dev/null +++ b/class_byte_buffer.js @@ -0,0 +1,8 @@ +var class_byte_buffer = +[ + [ "Align", "class_byte_buffer.html#ad30809667592e1c5b70ecd023017b692", null ], + [ "Allocate", "class_byte_buffer.html#a6fc1274ad81be5609f1f1e807be7cf6b", null ], + [ "AppendVector", "class_byte_buffer.html#ac1f1080abfd6e0dce2133c7781b46fee", null ], + [ "Get", "class_byte_buffer.html#a502a857a7380d4ef9cdf880563a426ef", null ], + [ "Get", "class_byte_buffer.html#afc33bc408efa8e38051debb2c4f64aa8", null ] +]; \ No newline at end of file diff --git a/class_byte_buffer.png b/class_byte_buffer.png new file mode 100644 index 000000000..2469e98a0 Binary files /dev/null and b/class_byte_buffer.png differ diff --git a/class_calculate_solver_steps-members.html b/class_calculate_solver_steps-members.html new file mode 100644 index 000000000..213c9d5b2 --- /dev/null +++ b/class_calculate_solver_steps-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CalculateSolverSteps Member List
+
+
+ +

This is the complete list of members for CalculateSolverSteps, including all inherited members.

+ + + + + + +
CalculateSolverSteps(const PhysicsSettings &inSettings)CalculateSolverStepsinlineexplicit
Finalize()CalculateSolverStepsinline
GetNumPositionSteps() constCalculateSolverStepsinline
GetNumVelocitySteps() constCalculateSolverStepsinline
operator()(const Type *inObject)CalculateSolverStepsinline
+
+ + + + diff --git a/class_calculate_solver_steps.html b/class_calculate_solver_steps.html new file mode 100644 index 000000000..fc0aaf5d7 --- /dev/null +++ b/class_calculate_solver_steps.html @@ -0,0 +1,285 @@ + + + + + + + +Jolt Physics: CalculateSolverSteps Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CalculateSolverSteps Class Reference
+
+
+ +

Class used to calculate the total number of velocity and position steps. + More...

+ +

#include <CalculateSolverSteps.h>

+ + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_INLINE CalculateSolverSteps (const PhysicsSettings &inSettings)
 Constructor.
 
template<class Type >
JPH_INLINE void operator() (const Type *inObject)
 Combine the number of velocity and position steps for this body/constraint with the current values.
 
JPH_INLINE void Finalize ()
 Must be called after all bodies/constraints have been processed.
 
JPH_INLINE uint GetNumPositionSteps () const
 Get the results of the calculation.
 
JPH_INLINE uint GetNumVelocitySteps () const
 
+

Detailed Description

+

Class used to calculate the total number of velocity and position steps.

+

Constructor & Destructor Documentation

+ +

◆ CalculateSolverSteps()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE CalculateSolverSteps::CalculateSolverSteps (const PhysicsSettingsinSettings)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ Finalize()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE void CalculateSolverSteps::Finalize ()
+
+inline
+
+ +

Must be called after all bodies/constraints have been processed.

+ +
+
+ +

◆ GetNumPositionSteps()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE uint CalculateSolverSteps::GetNumPositionSteps () const
+
+inline
+
+ +

Get the results of the calculation.

+ +
+
+ +

◆ GetNumVelocitySteps()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE uint CalculateSolverSteps::GetNumVelocitySteps () const
+
+inline
+
+ +
+
+ +

◆ operator()()

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
JPH_INLINE void CalculateSolverSteps::operator() (const Type * inObject)
+
+inline
+
+ +

Combine the number of velocity and position steps for this body/constraint with the current values.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_calculate_solver_steps.js b/class_calculate_solver_steps.js new file mode 100644 index 000000000..677aa2daa --- /dev/null +++ b/class_calculate_solver_steps.js @@ -0,0 +1,8 @@ +var class_calculate_solver_steps = +[ + [ "CalculateSolverSteps", "class_calculate_solver_steps.html#a0729dfc06ab52170861d1494fe051087", null ], + [ "Finalize", "class_calculate_solver_steps.html#a589b3b000f0552ebbaf507f133d73046", null ], + [ "GetNumPositionSteps", "class_calculate_solver_steps.html#acdbd82e652ad5f8e4f1ebd10081dbae3", null ], + [ "GetNumVelocitySteps", "class_calculate_solver_steps.html#a262debb9c3b307d430c154b91306268a", null ], + [ "operator()", "class_calculate_solver_steps.html#a9fce04eeb077b4f258a71de586113359", null ] +]; \ No newline at end of file diff --git a/class_capsule_shape-members.html b/class_capsule_shape-members.html new file mode 100644 index 000000000..448d1b047 --- /dev/null +++ b/class_capsule_shape-members.html @@ -0,0 +1,208 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CapsuleShape Member List
+
+
+ +

This is the complete list of members for CapsuleShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CapsuleShape()CapsuleShapeinline
CapsuleShape(const CapsuleShapeSettings &inSettings, ShapeResult &outResult)CapsuleShape
CapsuleShape(float inHalfHeightOfCylinder, float inRadius, const PhysicsMaterial *inMaterial=nullptr)CapsuleShapeinline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideCapsuleShapevirtual
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideCapsuleShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideCapsuleShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideCapsuleShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideCapsuleShapevirtual
ConvexShape(EShapeSubType inSubType)ConvexShapeinlineexplicit
ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)ConvexShapeinline
ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial)ConvexShapeinline
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideCapsuleShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideConvexShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideConvexShapevirtual
ESupportMode enum nameConvexShape
GetCenterOfMass() constShapeinlinevirtual
GetDensity() constConvexShapeinline
GetHalfHeightOfCylinder() constCapsuleShapeinline
GetInnerRadius() const overrideCapsuleShapeinlinevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const overrideCapsuleShapevirtual
GetMassProperties() const overrideCapsuleShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideConvexShapeinlinevirtual
GetMaterial() constConvexShapeinline
GetRadius() constCapsuleShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideCapsuleShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideConvexShapevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideConvexShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const overrideCapsuleShapevirtual
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideCapsuleShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideCapsuleShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideCapsuleShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideCapsuleShapevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideCapsuleShapeinlinevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideCapsuleShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constCapsuleShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constCapsuleShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) const overrideCapsuleShapevirtual
MakeScaleValid(Vec3Arg inScale) const overrideCapsuleShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() constShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideCapsuleShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) overrideConvexShapevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) const overrideCapsuleShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) const overrideConvexShapevirtual
Shape::SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetDensity(float inDensity)ConvexShapeinline
SetEmbedded() constRefTarget< Shape >inline
SetMaterial(const PhysicsMaterial *inMaterial)ConvexShapeinline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()CapsuleShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
sUnitSphereTrianglesConvexShapeprotectedstatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_capsule_shape.html b/class_capsule_shape.html new file mode 100644 index 000000000..85a85354b --- /dev/null +++ b/class_capsule_shape.html @@ -0,0 +1,1589 @@ + + + + + + + +Jolt Physics: CapsuleShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CapsuleShape Class Referencefinal
+
+
+ +

A capsule, implemented as a line segment with convex radius. + More...

+ +

#include <CapsuleShape.h>

+
+Inheritance diagram for CapsuleShape:
+
+
+ + +ConvexShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + + + +

+Classes

class  CapsuleNoConvex
 
class  CapsuleWithConvex
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE CapsuleShape ()
 Constructor.
 
 CapsuleShape (const CapsuleShapeSettings &inSettings, ShapeResult &outResult)
 
 CapsuleShape (float inHalfHeightOfCylinder, float inRadius, const PhysicsMaterial *inMaterial=nullptr)
 Create a capsule centered around the origin with one sphere cap at (0, -inHalfHeightOfCylinder, 0) and the other at (0, inHalfHeightOfCylinder, 0)
 
float GetRadius () const
 Radius of the cylinder.
 
float GetHalfHeightOfCylinder () const
 Get half of the height of the cylinder.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual const SupportGetSupportFunction (ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
- Public Member Functions inherited from ConvexShape
JPH_OVERRIDE_NEW_DELETE ConvexShape (EShapeSubType inSubType)
 Constructor.
 
 ConvexShape (EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)
 
 ConvexShape (EShapeSubType inSubType, const PhysicsMaterial *inMaterial)
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
void SetMaterial (const PhysicsMaterial *inMaterial)
 Material of the shape.
 
const PhysicsMaterialGetMaterial () const
 
void SetDensity (float inDensity)
 Set density of the shape (kg / m^3)
 
float GetDensity () const
 Get density of the shape (kg / m^3)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const override
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual bool MustBeStatic () const
 Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.
 
virtual Vec3 GetCenterOfMass () const
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from ConvexShape
static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConvexShape
enum class  ESupportMode { ExcludeConvexRadius +, IncludeConvexRadius +, Default + }
 How the GetSupport function should behave. More...
 
- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from ConvexShape
static const StaticArray< Vec3, 384 > sUnitSphereTriangles
 Vertex list that forms a unit sphere.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A capsule, implemented as a line segment with convex radius.

+

Constructor & Destructor Documentation

+ +

◆ CapsuleShape() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE CapsuleShape::CapsuleShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ CapsuleShape() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
CapsuleShape::CapsuleShape (const CapsuleShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+ +

◆ CapsuleShape() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
CapsuleShape::CapsuleShape (float inHalfHeightOfCylinder,
float inRadius,
const PhysicsMaterialinMaterial = nullptr 
)
+
+inline
+
+ +

Create a capsule centered around the origin with one sphere cap at (0, -inHalfHeightOfCylinder, 0) and the other at (0, inHalfHeightOfCylinder, 0)

+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CastRay() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool ConvexShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CastRay() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CapsuleShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CapsuleShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CapsuleShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CapsuleShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ GetHalfHeightOfCylinder()

+ +
+
+ + + + + +
+ + + + + + + +
float CapsuleShape::GetHalfHeightOfCylinder () const
+
+inline
+
+ +

Get half of the height of the cylinder.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float CapsuleShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox CapsuleShape::GetLocalBounds () const
+
+overridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties CapsuleShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float CapsuleShape::GetRadius () const
+
+inline
+
+ +

Radius of the cylinder.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats CapsuleShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
const ConvexShape::Support * CapsuleShape::GetSupportFunction (ESupportMode inMode,
SupportBufferinBuffer,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Returns an object that provides the GetSupport function for this shape. inMode determines if this support function includes or excludes the convex radius. of the values returned by the GetSupport function. This improves numerical accuracy of the results. inScale scales this shape in local space.

+ +

Implements ConvexShape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CapsuleShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 CapsuleShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int CapsuleShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+overridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CapsuleShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float CapsuleShape::GetVolume () const
+
+inlineoverridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox Shape::GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inline
+
+ +

Get world space bounds including convex radius.

+ +
+
+ +

◆ GetWorldSpaceBounds() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual AABox Shape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inlinevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox CapsuleShape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ IsValidScale()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CapsuleShape::IsValidScale (Vec3Arg inScale) const
+
+overridevirtual
+
+

Test if inScale is a valid scale for this shape. Some shapes can only be scaled uniformly, compound shapes cannot handle shapes being rotated and scaled (this would cause shearing), scale can never be zero. When the scale is invalid, the function will return false.

+

Here's a list of supported scales:

    +
  • SphereShape: Scale must be uniform (signs of scale are ignored).
  • +
  • BoxShape: Any scale supported (signs of scale are ignored).
  • +
  • TriangleShape: Any scale supported when convex radius is zero, otherwise only uniform scale supported.
  • +
  • CapsuleShape: Scale must be uniform (signs of scale are ignored).
  • +
  • TaperedCapsuleShape: Scale must be uniform (sign of Y scale can be used to flip the capsule).
  • +
  • CylinderShape: Scale must be uniform in XZ plane, Y can scale independently (signs of scale are ignored).
  • +
  • RotatedTranslatedShape: Scale must not cause shear in the child shape.
  • +
  • CompoundShape: Scale must not cause shear in any of the child shapes.
  • +
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ MakeScaleValid()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 CapsuleShape::MakeScaleValid (Vec3Arg inScale) const
+
+overridevirtual
+
+

This function will make sure that if you wrap this shape in a ScaledShape that the scale is valid. Note that this involves discarding components of the scale that are invalid, so the resulting scaled shape may be different than the requested scale. Compare the return value of this function with the scale you passed in to detect major inconsistencies and possibly warn the user.

Parameters
+ + +
inScaleLocal space scale for this shape.
+
+
+
Returns
Scale that can be used to wrap this shape in a ScaledShape. IsValidScale will return true for this scale.
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void CapsuleShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void CapsuleShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void CapsuleShape::sRegister ()
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_capsule_shape.js b/class_capsule_shape.js new file mode 100644 index 000000000..830ff058c --- /dev/null +++ b/class_capsule_shape.js @@ -0,0 +1,33 @@ +var class_capsule_shape = +[ + [ "CapsuleNoConvex", "class_capsule_shape_1_1_capsule_no_convex.html", "class_capsule_shape_1_1_capsule_no_convex" ], + [ "CapsuleWithConvex", "class_capsule_shape_1_1_capsule_with_convex.html", "class_capsule_shape_1_1_capsule_with_convex" ], + [ "CapsuleShape", "class_capsule_shape.html#acd06172be8b996ff941844f1aa3ce35b", null ], + [ "CapsuleShape", "class_capsule_shape.html#a28722612eca063d47b2e99c5d1a2e16c", null ], + [ "CapsuleShape", "class_capsule_shape.html#ab5b3085112fe4348a5831f9e94441f7c", null ], + [ "CastRay", "class_capsule_shape.html#ae1a5536cb1e4855bdd86433e08496b3b", null ], + [ "CastRay", "class_capsule_shape.html#af2943e795c49300d95d68950231de8a3", null ], + [ "CastRay", "class_capsule_shape.html#a4db465fc9986e3c869fa5c0b65733403", null ], + [ "CollidePoint", "class_capsule_shape.html#a8474d2a38ac14d1d950829f284a0ca97", null ], + [ "CollideSoftBodyVertices", "class_capsule_shape.html#a86ec075742fb7f9f617b81216ff59e68", null ], + [ "Draw", "class_capsule_shape.html#a4e38d9480d6ce322203bc484f5ec9b12", null ], + [ "GetHalfHeightOfCylinder", "class_capsule_shape.html#a24208af1f0e53c7de6e62c821699a2c3", null ], + [ "GetInnerRadius", "class_capsule_shape.html#aff824c6f74dbd43d6ddbb577e2324e50", null ], + [ "GetLocalBounds", "class_capsule_shape.html#ac70e898196e639abb8602e67fed64848", null ], + [ "GetMassProperties", "class_capsule_shape.html#a5eb19a20ae866f171dbbb7b2d5449d1c", null ], + [ "GetRadius", "class_capsule_shape.html#aa8b10abff70cdeb364e5663344a4c793", null ], + [ "GetStats", "class_capsule_shape.html#a274bd9ad407e747585488727e4697357", null ], + [ "GetSupportFunction", "class_capsule_shape.html#a5f226d8512e8a2612438200932d3986c", null ], + [ "GetSupportingFace", "class_capsule_shape.html#ae0226a091e853142536c48e5462ee463", null ], + [ "GetSurfaceNormal", "class_capsule_shape.html#ac8ed07dee809bbe362b3dd4ec286aa35", null ], + [ "GetTrianglesNext", "class_capsule_shape.html#ac735140fc6d8d36ca5c598deba432ae2", null ], + [ "GetTrianglesStart", "class_capsule_shape.html#ac5f59452b7a3fc2c31ba77f2997ec493", null ], + [ "GetVolume", "class_capsule_shape.html#aeeab148856a7d53ddf1a42934fbb048c", null ], + [ "GetWorldSpaceBounds", "class_capsule_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b", null ], + [ "GetWorldSpaceBounds", "class_capsule_shape.html#a9f8379fa338802436700b86a07fab3be", null ], + [ "GetWorldSpaceBounds", "class_capsule_shape.html#ae745928604f1c1a87d3b6f60e4b25224", null ], + [ "IsValidScale", "class_capsule_shape.html#aaf0e3b1687a9af015aaf19ccc214f8a2", null ], + [ "MakeScaleValid", "class_capsule_shape.html#a27e36ca5e59ea1a3846a4160404b600a", null ], + [ "RestoreBinaryState", "class_capsule_shape.html#a716f8cb75afae9e84d3668f7c6520876", null ], + [ "SaveBinaryState", "class_capsule_shape.html#a75a13a9c3137ac60110d6fdbc72bddf3", null ] +]; \ No newline at end of file diff --git a/class_capsule_shape.png b/class_capsule_shape.png new file mode 100644 index 000000000..39135437b Binary files /dev/null and b/class_capsule_shape.png differ diff --git a/class_capsule_shape_1_1_capsule_no_convex-members.html b/class_capsule_shape_1_1_capsule_no_convex-members.html new file mode 100644 index 000000000..7ec98947a --- /dev/null +++ b/class_capsule_shape_1_1_capsule_no_convex-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CapsuleShape::CapsuleNoConvex Member List
+
+
+ +

This is the complete list of members for CapsuleShape::CapsuleNoConvex, including all inherited members.

+ + + + + +
CapsuleNoConvex(Vec3Arg inHalfHeightOfCylinder, float inConvexRadius)CapsuleShape::CapsuleNoConvexinline
GetConvexRadius() const overrideCapsuleShape::CapsuleNoConvexinlinevirtual
GetSupport(Vec3Arg inDirection) const overrideCapsuleShape::CapsuleNoConvexinlinevirtual
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_capsule_shape_1_1_capsule_no_convex.html b/class_capsule_shape_1_1_capsule_no_convex.html new file mode 100644 index 000000000..0df9b457e --- /dev/null +++ b/class_capsule_shape_1_1_capsule_no_convex.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: CapsuleShape::CapsuleNoConvex Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CapsuleShape::CapsuleNoConvex Class Referencefinal
+
+
+
+Inheritance diagram for CapsuleShape::CapsuleNoConvex:
+
+
+ + +ConvexShape::Support + +
+ + + + + + + + + + + + +

+Public Member Functions

 CapsuleNoConvex (Vec3Arg inHalfHeightOfCylinder, float inConvexRadius)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Constructor & Destructor Documentation

+ +

◆ CapsuleNoConvex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
CapsuleShape::CapsuleNoConvex::CapsuleNoConvex (Vec3Arg inHalfHeightOfCylinder,
float inConvexRadius 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float CapsuleShape::CapsuleNoConvex::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 CapsuleShape::CapsuleNoConvex::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_capsule_shape_1_1_capsule_no_convex.js b/class_capsule_shape_1_1_capsule_no_convex.js new file mode 100644 index 000000000..34cca23b9 --- /dev/null +++ b/class_capsule_shape_1_1_capsule_no_convex.js @@ -0,0 +1,6 @@ +var class_capsule_shape_1_1_capsule_no_convex = +[ + [ "CapsuleNoConvex", "class_capsule_shape_1_1_capsule_no_convex.html#a19beb7b16e30ad38c472ef12f35debce", null ], + [ "GetConvexRadius", "class_capsule_shape_1_1_capsule_no_convex.html#ac5c3f5013f55a44ca8a27f4f26bcdd7e", null ], + [ "GetSupport", "class_capsule_shape_1_1_capsule_no_convex.html#a0be6a5849883349f4d1e7bfa2107b4c6", null ] +]; \ No newline at end of file diff --git a/class_capsule_shape_1_1_capsule_no_convex.png b/class_capsule_shape_1_1_capsule_no_convex.png new file mode 100644 index 000000000..5abb9c8dd Binary files /dev/null and b/class_capsule_shape_1_1_capsule_no_convex.png differ diff --git a/class_capsule_shape_1_1_capsule_with_convex-members.html b/class_capsule_shape_1_1_capsule_with_convex-members.html new file mode 100644 index 000000000..de304483e --- /dev/null +++ b/class_capsule_shape_1_1_capsule_with_convex-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CapsuleShape::CapsuleWithConvex Member List
+
+
+ +

This is the complete list of members for CapsuleShape::CapsuleWithConvex, including all inherited members.

+ + + + + +
CapsuleWithConvex(Vec3Arg inHalfHeightOfCylinder, float inRadius)CapsuleShape::CapsuleWithConvexinline
GetConvexRadius() const overrideCapsuleShape::CapsuleWithConvexinlinevirtual
GetSupport(Vec3Arg inDirection) const overrideCapsuleShape::CapsuleWithConvexinlinevirtual
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_capsule_shape_1_1_capsule_with_convex.html b/class_capsule_shape_1_1_capsule_with_convex.html new file mode 100644 index 000000000..1af21214d --- /dev/null +++ b/class_capsule_shape_1_1_capsule_with_convex.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: CapsuleShape::CapsuleWithConvex Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CapsuleShape::CapsuleWithConvex Class Referencefinal
+
+
+
+Inheritance diagram for CapsuleShape::CapsuleWithConvex:
+
+
+ + +ConvexShape::Support + +
+ + + + + + + + + + + + +

+Public Member Functions

 CapsuleWithConvex (Vec3Arg inHalfHeightOfCylinder, float inRadius)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Constructor & Destructor Documentation

+ +

◆ CapsuleWithConvex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
CapsuleShape::CapsuleWithConvex::CapsuleWithConvex (Vec3Arg inHalfHeightOfCylinder,
float inRadius 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float CapsuleShape::CapsuleWithConvex::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 CapsuleShape::CapsuleWithConvex::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_capsule_shape_1_1_capsule_with_convex.js b/class_capsule_shape_1_1_capsule_with_convex.js new file mode 100644 index 000000000..f65bd8d47 --- /dev/null +++ b/class_capsule_shape_1_1_capsule_with_convex.js @@ -0,0 +1,6 @@ +var class_capsule_shape_1_1_capsule_with_convex = +[ + [ "CapsuleWithConvex", "class_capsule_shape_1_1_capsule_with_convex.html#ab43fab2b559ee221f84cfff5038aba0d", null ], + [ "GetConvexRadius", "class_capsule_shape_1_1_capsule_with_convex.html#a8848a4436820ea01656a3dc6f0700c12", null ], + [ "GetSupport", "class_capsule_shape_1_1_capsule_with_convex.html#a15a15b4961f231684a30f4fbcdbee693", null ] +]; \ No newline at end of file diff --git a/class_capsule_shape_1_1_capsule_with_convex.png b/class_capsule_shape_1_1_capsule_with_convex.png new file mode 100644 index 000000000..1519c5838 Binary files /dev/null and b/class_capsule_shape_1_1_capsule_with_convex.png differ diff --git a/class_capsule_shape_settings-members.html b/class_capsule_shape_settings-members.html new file mode 100644 index 000000000..2ae0a4560 --- /dev/null +++ b/class_capsule_shape_settings-members.html @@ -0,0 +1,140 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CapsuleShapeSettings Member List
+
+
+ +

This is the complete list of members for CapsuleShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
ConvexShapeSettings()=defaultConvexShapeSettings
ConvexShapeSettings(const PhysicsMaterial *inMaterial)ConvexShapeSettingsinlineexplicit
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mDensityConvexShapeSettings
mMaterialConvexShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetDensity(float inDensity)ConvexShapeSettingsinline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_capsule_shape_settings.html b/class_capsule_shape_settings.html new file mode 100644 index 000000000..f01842649 --- /dev/null +++ b/class_capsule_shape_settings.html @@ -0,0 +1,218 @@ + + + + + + + +Jolt Physics: CapsuleShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CapsuleShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a CapsuleShape. + More...

+ +

#include <CapsuleShape.h>

+
+Inheritance diagram for CapsuleShapeSettings:
+
+
+ + +ConvexShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Public Member Functions inherited from ConvexShapeSettings
 ConvexShapeSettings ()=default
 Constructor.
 
 ConvexShapeSettings (const PhysicsMaterial *inMaterial)
 
void SetDensity (float inDensity)
 Set the density of the object in kg / m^3.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Public Attributes inherited from ConvexShapeSettings
RefConst< PhysicsMaterialmMaterial
 Material assigned to this shape.
 
float mDensity = 1000.0f
 Uniform density of the interior of the convex object (kg / m^3)
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a CapsuleShape.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_capsule_shape_settings.png b/class_capsule_shape_settings.png new file mode 100644 index 000000000..7aacbcf9f Binary files /dev/null and b/class_capsule_shape_settings.png differ diff --git a/class_cast_convex_vs_triangles-members.html b/class_cast_convex_vs_triangles-members.html new file mode 100644 index 000000000..97c51e6e9 --- /dev/null +++ b/class_cast_convex_vs_triangles-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CastConvexVsTriangles Member List
+
+
+ +

This is the complete list of members for CastConvexVsTriangles, including all inherited members.

+ + + + + + + + + +
Cast(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2)CastConvexVsTriangles
CastConvexVsTriangles(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, CastShapeCollector &ioCollector)CastConvexVsTriangles
mCenterOfMassTransform2CastConvexVsTrianglesprotected
mCollectorCastConvexVsTrianglesprotected
mScaleCastConvexVsTrianglesprotected
mShapeCastCastConvexVsTrianglesprotected
mShapeCastSettingsCastConvexVsTrianglesprotected
mSubShapeIDCreator1CastConvexVsTrianglesprotected
+
+ + + + diff --git a/class_cast_convex_vs_triangles.html b/class_cast_convex_vs_triangles.html new file mode 100644 index 000000000..019b99fc4 --- /dev/null +++ b/class_cast_convex_vs_triangles.html @@ -0,0 +1,404 @@ + + + + + + + +Jolt Physics: CastConvexVsTriangles Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CastConvexVsTriangles Class Reference
+
+
+ +

Collision detection helper that casts a convex object vs one or more triangles. + More...

+ +

#include <CastConvexVsTriangles.h>

+ + + + + + +

+Public Member Functions

 CastConvexVsTriangles (const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, CastShapeCollector &ioCollector)
 
void Cast (Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2)
 
+ + + + + + + + + + + + + +

+Protected Attributes

const ShapeCastmShapeCast
 
const ShapeCastSettingsmShapeCastSettings
 
const Mat44mCenterOfMassTransform2
 
Vec3 mScale
 
SubShapeIDCreator mSubShapeIDCreator1
 
CastShapeCollectormCollector
 
+

Detailed Description

+

Collision detection helper that casts a convex object vs one or more triangles.

+

Constructor & Destructor Documentation

+ +

◆ CastConvexVsTriangles()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN CastConvexVsTriangles::CastConvexVsTriangles (const ShapeCastinShapeCast,
const ShapeCastSettingsinShapeCastSettings,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform2,
const SubShapeIDCreatorinSubShapeIDCreator1,
CastShapeCollectorioCollector 
)
+
+

Constructor

Parameters
+ + + + + + + +
inShapeCastThe shape to cast against the triangles and its start and direction
inShapeCastSettingsSettings for performing the cast
inScaleLocal space scale for the shape to cast against (scales relative to its center of mass).
inCenterOfMassTransform2Is the center of mass transform of shape 2 (excluding scale), this is used to provide a transform to the shape cast result so that local quantities can be transformed into world space.
inSubShapeIDCreator1Class that tracks the current sub shape ID for the casting shape
ioCollectorThe collector that receives the results.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Cast()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CastConvexVsTriangles::Cast (Vec3Arg inV0,
Vec3Arg inV1,
Vec3Arg inV2,
uint8 inActiveEdges,
const SubShapeIDinSubShapeID2 
)
+
+

Cast convex object with a single triangle

Parameters
+ + + + +
inV0,inV1,inV2CCW triangle vertices
inActiveEdgesbit 0 = edge v0..v1 is active, bit 1 = edge v1..v2 is active, bit 2 = edge v2..v0 is active An active edge is an edge that is not connected to another triangle in such a way that it is impossible to collide with the edge
inSubShapeID2The sub shape ID for the triangle
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mCenterOfMassTransform2

+ +
+
+ + + + + +
+ + + + +
const Mat44& CastConvexVsTriangles::mCenterOfMassTransform2
+
+protected
+
+ +
+
+ +

◆ mCollector

+ +
+
+ + + + + +
+ + + + +
CastShapeCollector& CastConvexVsTriangles::mCollector
+
+protected
+
+ +
+
+ +

◆ mScale

+ +
+
+ + + + + +
+ + + + +
Vec3 CastConvexVsTriangles::mScale
+
+protected
+
+ +
+
+ +

◆ mShapeCast

+ +
+
+ + + + + +
+ + + + +
const ShapeCast& CastConvexVsTriangles::mShapeCast
+
+protected
+
+ +
+
+ +

◆ mShapeCastSettings

+ +
+
+ + + + + +
+ + + + +
const ShapeCastSettings& CastConvexVsTriangles::mShapeCastSettings
+
+protected
+
+ +
+
+ +

◆ mSubShapeIDCreator1

+ +
+
+ + + + + +
+ + + + +
SubShapeIDCreator CastConvexVsTriangles::mSubShapeIDCreator1
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_cast_convex_vs_triangles.js b/class_cast_convex_vs_triangles.js new file mode 100644 index 000000000..80acddb96 --- /dev/null +++ b/class_cast_convex_vs_triangles.js @@ -0,0 +1,11 @@ +var class_cast_convex_vs_triangles = +[ + [ "CastConvexVsTriangles", "class_cast_convex_vs_triangles.html#a242808830324f2586b4d4b747dac87e5", null ], + [ "Cast", "class_cast_convex_vs_triangles.html#a50f5c573fd6198c72639e72cde71ca96", null ], + [ "mCenterOfMassTransform2", "class_cast_convex_vs_triangles.html#abd1a020012d0dc31bf29f954c42da71b", null ], + [ "mCollector", "class_cast_convex_vs_triangles.html#aa541b629f013a34846b0b497e991b679", null ], + [ "mScale", "class_cast_convex_vs_triangles.html#a888e9e6de829076e3e90e5c3b414aaff", null ], + [ "mShapeCast", "class_cast_convex_vs_triangles.html#ade82995516a037d9229d24150ccc2020", null ], + [ "mShapeCastSettings", "class_cast_convex_vs_triangles.html#aecef46503b69985f8ce93474d7d9a59a", null ], + [ "mSubShapeIDCreator1", "class_cast_convex_vs_triangles.html#ac22fb7d322f54265651f5a46ea07a070", null ] +]; \ No newline at end of file diff --git a/class_cast_sphere_vs_triangles-members.html b/class_cast_sphere_vs_triangles-members.html new file mode 100644 index 000000000..fcbf4bcc2 --- /dev/null +++ b/class_cast_sphere_vs_triangles-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CastSphereVsTriangles Member List
+
+
+ +

This is the complete list of members for CastSphereVsTriangles, including all inherited members.

+ + + + + + + + + + + +
Cast(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2)CastSphereVsTriangles
CastSphereVsTriangles(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, CastShapeCollector &ioCollector)CastSphereVsTriangles
mCenterOfMassTransform2CastSphereVsTrianglesprotected
mCollectorCastSphereVsTrianglesprotected
mDirectionCastSphereVsTrianglesprotected
mRadiusCastSphereVsTrianglesprotected
mScaleCastSphereVsTrianglesprotected
mShapeCastSettingsCastSphereVsTrianglesprotected
mStartCastSphereVsTrianglesprotected
mSubShapeIDCreator1CastSphereVsTrianglesprotected
+
+ + + + diff --git a/class_cast_sphere_vs_triangles.html b/class_cast_sphere_vs_triangles.html new file mode 100644 index 000000000..b64b53693 --- /dev/null +++ b/class_cast_sphere_vs_triangles.html @@ -0,0 +1,461 @@ + + + + + + + +Jolt Physics: CastSphereVsTriangles Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CastSphereVsTriangles Class Reference
+
+
+ +

Collision detection helper that casts a sphere vs one or more triangles. + More...

+ +

#include <CastSphereVsTriangles.h>

+ + + + + + +

+Public Member Functions

 CastSphereVsTriangles (const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, CastShapeCollector &ioCollector)
 
void Cast (Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2)
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

Vec3 mStart
 Starting location of the sphere.
 
Vec3 mDirection
 Direction and length of movement of sphere.
 
float mRadius
 Scaled radius of sphere.
 
const ShapeCastSettingsmShapeCastSettings
 
const Mat44mCenterOfMassTransform2
 
Vec3 mScale
 
SubShapeIDCreator mSubShapeIDCreator1
 
CastShapeCollectormCollector
 
+

Detailed Description

+

Collision detection helper that casts a sphere vs one or more triangles.

+

Constructor & Destructor Documentation

+ +

◆ CastSphereVsTriangles()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN CastSphereVsTriangles::CastSphereVsTriangles (const ShapeCastinShapeCast,
const ShapeCastSettingsinShapeCastSettings,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform2,
const SubShapeIDCreatorinSubShapeIDCreator1,
CastShapeCollectorioCollector 
)
+
+

Constructor

Parameters
+ + + + + + + +
inShapeCastThe sphere to cast against the triangles and its start and direction
inShapeCastSettingsSettings for performing the cast
inScaleLocal space scale for the shape to cast against (scales relative to its center of mass).
inCenterOfMassTransform2Is the center of mass transform of shape 2 (excluding scale), this is used to provide a transform to the shape cast result so that local quantities can be transformed into world space.
inSubShapeIDCreator1Class that tracks the current sub shape ID for the casting shape
ioCollectorThe collector that receives the results.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Cast()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CastSphereVsTriangles::Cast (Vec3Arg inV0,
Vec3Arg inV1,
Vec3Arg inV2,
uint8 inActiveEdges,
const SubShapeIDinSubShapeID2 
)
+
+

Cast sphere with a single triangle

Parameters
+ + + + +
inV0,inV1,inV2CCW triangle vertices
inActiveEdgesbit 0 = edge v0..v1 is active, bit 1 = edge v1..v2 is active, bit 2 = edge v2..v0 is active An active edge is an edge that is not connected to another triangle in such a way that it is impossible to collide with the edge
inSubShapeID2The sub shape ID for the triangle
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mCenterOfMassTransform2

+ +
+
+ + + + + +
+ + + + +
const Mat44& CastSphereVsTriangles::mCenterOfMassTransform2
+
+protected
+
+ +
+
+ +

◆ mCollector

+ +
+
+ + + + + +
+ + + + +
CastShapeCollector& CastSphereVsTriangles::mCollector
+
+protected
+
+ +
+
+ +

◆ mDirection

+ +
+
+ + + + + +
+ + + + +
Vec3 CastSphereVsTriangles::mDirection
+
+protected
+
+ +

Direction and length of movement of sphere.

+ +
+
+ +

◆ mRadius

+ +
+
+ + + + + +
+ + + + +
float CastSphereVsTriangles::mRadius
+
+protected
+
+ +

Scaled radius of sphere.

+ +
+
+ +

◆ mScale

+ +
+
+ + + + + +
+ + + + +
Vec3 CastSphereVsTriangles::mScale
+
+protected
+
+ +
+
+ +

◆ mShapeCastSettings

+ +
+
+ + + + + +
+ + + + +
const ShapeCastSettings& CastSphereVsTriangles::mShapeCastSettings
+
+protected
+
+ +
+
+ +

◆ mStart

+ +
+
+ + + + + +
+ + + + +
Vec3 CastSphereVsTriangles::mStart
+
+protected
+
+ +

Starting location of the sphere.

+ +
+
+ +

◆ mSubShapeIDCreator1

+ +
+
+ + + + + +
+ + + + +
SubShapeIDCreator CastSphereVsTriangles::mSubShapeIDCreator1
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_cast_sphere_vs_triangles.js b/class_cast_sphere_vs_triangles.js new file mode 100644 index 000000000..c25c75aa5 --- /dev/null +++ b/class_cast_sphere_vs_triangles.js @@ -0,0 +1,13 @@ +var class_cast_sphere_vs_triangles = +[ + [ "CastSphereVsTriangles", "class_cast_sphere_vs_triangles.html#ae273e921a49cb110b61ab9f1c1480174", null ], + [ "Cast", "class_cast_sphere_vs_triangles.html#ade8de510194b2a8bed2474f3b9605a80", null ], + [ "mCenterOfMassTransform2", "class_cast_sphere_vs_triangles.html#a03488d3918d45962d2b31d3b14e16f46", null ], + [ "mCollector", "class_cast_sphere_vs_triangles.html#a8764255c552586baff1eb0790b7e30ca", null ], + [ "mDirection", "class_cast_sphere_vs_triangles.html#a55eca94a671eb829c77a28ea4ce2c38a", null ], + [ "mRadius", "class_cast_sphere_vs_triangles.html#ad228cdb4784b5a3ad14b6ba38c296d34", null ], + [ "mScale", "class_cast_sphere_vs_triangles.html#ab317c8a940b4398351ccb4e3f4477688", null ], + [ "mShapeCastSettings", "class_cast_sphere_vs_triangles.html#aedd22f079116eb249e674bb2350b283e", null ], + [ "mStart", "class_cast_sphere_vs_triangles.html#a97177eb99d17fdaba69e79d5a1e6be9b", null ], + [ "mSubShapeIDCreator1", "class_cast_sphere_vs_triangles.html#a24ea3c9bbd79ad02885b38316b1e38cd", null ] +]; \ No newline at end of file diff --git a/class_character-members.html b/class_character-members.html new file mode 100644 index 000000000..53c786974 --- /dev/null +++ b/class_character-members.html @@ -0,0 +1,190 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Character Member List
+
+
+ +

This is the complete list of members for Character, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Activate(bool inLockBodies=true)Character
AddImpulse(Vec3Arg inImpulse, bool inLockBodies=true)Character
AddLinearVelocity(Vec3Arg inLinearVelocity, bool inLockBodies=true)Character
AddRef() constRefTarget< CharacterBase >inline
AddToPhysicsSystem(EActivation inActivationMode=EActivation::Activate, bool inLockBodies=true)Character
cEmbeddedRefTarget< CharacterBase >protectedstatic
Character(const CharacterSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, uint64 inUserData, PhysicsSystem *inSystem)Character
CharacterBase(const CharacterBaseSettings *inSettings, PhysicsSystem *inSystem)CharacterBase
CheckCollision(RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inMovementDirection, float inMaxSeparationDistance, const Shape *inShape, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, bool inLockBodies=true) constCharacter
cNoMaxSlopeAngleCharacterBaseprotectedstatic
EGroundState enum nameCharacterBase
GetBodyID() constCharacterinline
GetCenterOfMassPosition(bool inLockBodies=true) constCharacter
GetCosMaxSlopeAngle() constCharacterBaseinline
GetGroundBodyID() constCharacterBaseinline
GetGroundMaterial() constCharacterBaseinline
GetGroundNormal() constCharacterBaseinline
GetGroundPosition() constCharacterBaseinline
GetGroundState() constCharacterBaseinline
GetGroundSubShapeID() constCharacterBaseinline
GetGroundUserData() constCharacterBaseinline
GetGroundVelocity() constCharacterBaseinline
GetLayer() constCharacterinline
GetLinearVelocity(bool inLockBodies=true) constCharacter
GetPosition(bool inLockBodies=true) constCharacter
GetPositionAndRotation(RVec3 &outPosition, Quat &outRotation, bool inLockBodies=true) constCharacter
GetRefCount() constRefTarget< CharacterBase >inline
GetRotation(bool inLockBodies=true) constCharacter
GetShape() constCharacterBaseinline
GetTransformedShape(bool inLockBodies=true) constCharacter
GetUp() constCharacterBaseinline
GetWorldTransform(bool inLockBodies=true) constCharacter
IsSlopeTooSteep(Vec3Arg inNormal) constCharacterBaseinline
IsSupported() constCharacterBaseinline
mCosMaxSlopeAngleCharacterBaseprotected
mGroundBodyIDCharacterBaseprotected
mGroundBodySubShapeIDCharacterBaseprotected
mGroundMaterialCharacterBaseprotected
mGroundNormalCharacterBaseprotected
mGroundPositionCharacterBaseprotected
mGroundStateCharacterBaseprotected
mGroundUserDataCharacterBaseprotected
mGroundVelocityCharacterBaseprotected
mRefCountRefTarget< CharacterBase >mutableprotected
mShapeCharacterBaseprotected
mSupportingVolumeCharacterBaseprotected
mSystemCharacterBaseprotected
mUpCharacterBaseprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< CharacterBase >::operator=(const RefTarget &)RefTarget< CharacterBase >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PostSimulation(float inMaxSeparationDistance, bool inLockBodies=true)Character
RefTarget()=defaultRefTarget< CharacterBase >inline
RefTarget(const RefTarget &)RefTarget< CharacterBase >inline
Release() constRefTarget< CharacterBase >inline
RemoveFromPhysicsSystem(bool inLockBodies=true)Character
RestoreState(StateRecorder &inStream)CharacterBasevirtual
SaveState(StateRecorder &inStream) constCharacterBasevirtual
SetEmbedded() constRefTarget< CharacterBase >inline
SetLayer(ObjectLayer inLayer, bool inLockBodies=true)Character
SetLinearAndAngularVelocity(Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity, bool inLockBodies=true)Character
SetLinearVelocity(Vec3Arg inLinearVelocity, bool inLockBodies=true)Character
SetMaxSlopeAngle(float inMaxSlopeAngle)CharacterBaseinline
SetPosition(RVec3Arg inPostion, EActivation inActivationMode=EActivation::Activate, bool inLockBodies=true)Character
SetPositionAndRotation(RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode=EActivation::Activate, bool inLockBodies=true) constCharacter
SetRotation(QuatArg inRotation, EActivation inActivationMode=EActivation::Activate, bool inLockBodies=true)Character
SetShape(const Shape *inShape, float inMaxPenetrationDepth, bool inLockBodies=true)Character
SetUp(Vec3Arg inUp)CharacterBaseinline
sInternalGetRefCountOffset()RefTarget< CharacterBase >inlinestatic
sToString(EGroundState inState)CharacterBasestatic
~Character() overrideCharactervirtual
~CharacterBase()=defaultCharacterBasevirtual
~RefTarget()RefTarget< CharacterBase >inline
+
+ + + + diff --git a/class_character.html b/class_character.html new file mode 100644 index 000000000..af5533a56 --- /dev/null +++ b/class_character.html @@ -0,0 +1,1135 @@ + + + + + + + +Jolt Physics: Character Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Character Class Reference
+
+
+ +

#include <Character.h>

+
+Inheritance diagram for Character:
+
+
+ + +CharacterBase +RefTarget< CharacterBase > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Character (const CharacterSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, uint64 inUserData, PhysicsSystem *inSystem)
 
virtual ~Character () override
 Destructor.
 
void AddToPhysicsSystem (EActivation inActivationMode=EActivation::Activate, bool inLockBodies=true)
 Add bodies and constraints to the system and optionally activate the bodies.
 
void RemoveFromPhysicsSystem (bool inLockBodies=true)
 Remove bodies and constraints from the system.
 
void Activate (bool inLockBodies=true)
 Wake up the character.
 
void PostSimulation (float inMaxSeparationDistance, bool inLockBodies=true)
 
void SetLinearAndAngularVelocity (Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity, bool inLockBodies=true)
 Control the velocity of the character.
 
Vec3 GetLinearVelocity (bool inLockBodies=true) const
 Get the linear velocity of the character (m / s)
 
void SetLinearVelocity (Vec3Arg inLinearVelocity, bool inLockBodies=true)
 Set the linear velocity of the character (m / s)
 
void AddLinearVelocity (Vec3Arg inLinearVelocity, bool inLockBodies=true)
 Add world space linear velocity to current velocity (m / s)
 
void AddImpulse (Vec3Arg inImpulse, bool inLockBodies=true)
 Add impulse to the center of mass of the character.
 
BodyID GetBodyID () const
 Get the body associated with this character.
 
void GetPositionAndRotation (RVec3 &outPosition, Quat &outRotation, bool inLockBodies=true) const
 Get position / rotation of the body.
 
void SetPositionAndRotation (RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode=EActivation::Activate, bool inLockBodies=true) const
 Set the position / rotation of the body, optionally activating it.
 
RVec3 GetPosition (bool inLockBodies=true) const
 Get the position of the character.
 
void SetPosition (RVec3Arg inPostion, EActivation inActivationMode=EActivation::Activate, bool inLockBodies=true)
 Set the position of the character, optionally activating it.
 
Quat GetRotation (bool inLockBodies=true) const
 Get the rotation of the character.
 
void SetRotation (QuatArg inRotation, EActivation inActivationMode=EActivation::Activate, bool inLockBodies=true)
 Set the rotation of the character, optionally activating it.
 
RVec3 GetCenterOfMassPosition (bool inLockBodies=true) const
 Position of the center of mass of the underlying rigid body.
 
RMat44 GetWorldTransform (bool inLockBodies=true) const
 Calculate the world transform of the character.
 
ObjectLayer GetLayer () const
 Get the layer of the character.
 
void SetLayer (ObjectLayer inLayer, bool inLockBodies=true)
 Update the layer of the character.
 
bool SetShape (const Shape *inShape, float inMaxPenetrationDepth, bool inLockBodies=true)
 
TransformedShape GetTransformedShape (bool inLockBodies=true) const
 Get the transformed shape that represents the volume of the character, can be used for collision checks.
 
void CheckCollision (RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inMovementDirection, float inMaxSeparationDistance, const Shape *inShape, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, bool inLockBodies=true) const
 Get all contacts for the character at a particular location.
 
- Public Member Functions inherited from CharacterBase
JPH_OVERRIDE_NEW_DELETE CharacterBase (const CharacterBaseSettings *inSettings, PhysicsSystem *inSystem)
 Constructor.
 
virtual ~CharacterBase ()=default
 Destructor.
 
void SetMaxSlopeAngle (float inMaxSlopeAngle)
 Set the maximum angle of slope that character can still walk on (radians)
 
float GetCosMaxSlopeAngle () const
 
void SetUp (Vec3Arg inUp)
 Set the up vector for the character.
 
Vec3 GetUp () const
 
bool IsSlopeTooSteep (Vec3Arg inNormal) const
 Check if the normal of the ground surface is too steep to walk on.
 
const ShapeGetShape () const
 Get the current shape that the character is using.
 
EGroundState GetGroundState () const
 Current ground state.
 
bool IsSupported () const
 Returns true if the player is supported by normal or steep ground.
 
RVec3 GetGroundPosition () const
 Get the contact point with the ground.
 
Vec3 GetGroundNormal () const
 Get the contact normal with the ground.
 
Vec3 GetGroundVelocity () const
 Velocity in world space of ground.
 
const PhysicsMaterialGetGroundMaterial () const
 Material that the character is standing on.
 
BodyID GetGroundBodyID () const
 BodyID of the object the character is standing on. Note may have been removed!
 
SubShapeID GetGroundSubShapeID () const
 Sub part of the body that we're standing on.
 
uint64 GetGroundUserData () const
 User data value of the body that we're standing on.
 
virtual void SaveState (StateRecorder &inStream) const
 
virtual void RestoreState (StateRecorder &inStream)
 
- Public Member Functions inherited from RefTarget< CharacterBase >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from CharacterBase
enum class  EGroundState { OnGround +, OnSteepGround +, NotSupported +, InAir + }
 
- Static Public Member Functions inherited from CharacterBase
static const char * sToString (EGroundState inState)
 Debug function to convert enum values to string.
 
- Static Public Member Functions inherited from RefTarget< CharacterBase >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from CharacterBase
PhysicsSystemmSystem
 
RefConst< ShapemShape
 
Vec3 mUp
 
Plane mSupportingVolume
 
float mCosMaxSlopeAngle
 
EGroundState mGroundState = EGroundState::InAir
 
BodyID mGroundBodyID
 
SubShapeID mGroundBodySubShapeID
 
RVec3 mGroundPosition = RVec3::sZero()
 
Vec3 mGroundNormal = Vec3::sZero()
 
Vec3 mGroundVelocity = Vec3::sZero()
 
RefConst< PhysicsMaterialmGroundMaterial = PhysicsMaterial::sDefault
 
uint64 mGroundUserData = 0
 
- Protected Attributes inherited from RefTarget< CharacterBase >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from CharacterBase
static constexpr float cNoMaxSlopeAngle = 0.9999f
 
- Static Protected Attributes inherited from RefTarget< CharacterBase >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Runtime character object. This object usually represents the player or a humanoid AI. It uses a single rigid body, usually with a capsule shape to simulate movement and collision for the character. The character is a keyframed object, the application controls it by setting the velocity.

+

Constructor & Destructor Documentation

+ +

◆ Character()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Character::Character (const CharacterSettingsinSettings,
RVec3Arg inPosition,
QuatArg inRotation,
uint64 inUserData,
PhysicsSysteminSystem 
)
+
+

Constructor

Parameters
+ + + + + + +
inSettingsThe settings for the character
inPositionInitial position for the character
inRotationInitial rotation for the character (usually only around Y)
inUserDataApplication specific value
inSystemPhysics system that this character will be added to later
+
+
+ +
+
+ +

◆ ~Character()

+ +
+
+ + + + + +
+ + + + + + + +
Character::~Character ()
+
+overridevirtual
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Activate()

+ +
+
+ + + + + + + + +
void Character::Activate (bool inLockBodies = true)
+
+ +

Wake up the character.

+ +
+
+ +

◆ AddImpulse()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Character::AddImpulse (Vec3Arg inImpulse,
bool inLockBodies = true 
)
+
+ +

Add impulse to the center of mass of the character.

+ +
+
+ +

◆ AddLinearVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Character::AddLinearVelocity (Vec3Arg inLinearVelocity,
bool inLockBodies = true 
)
+
+ +

Add world space linear velocity to current velocity (m / s)

+ +
+
+ +

◆ AddToPhysicsSystem()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Character::AddToPhysicsSystem (EActivation inActivationMode = EActivation::Activate,
bool inLockBodies = true 
)
+
+ +

Add bodies and constraints to the system and optionally activate the bodies.

+ +
+
+ +

◆ CheckCollision()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void Character::CheckCollision (RVec3Arg inPosition,
QuatArg inRotation,
Vec3Arg inMovementDirection,
float inMaxSeparationDistance,
const ShapeinShape,
RVec3Arg inBaseOffset,
CollideShapeCollectorioCollector,
bool inLockBodies = true 
) const
+
+ +

Get all contacts for the character at a particular location.

+
Parameters
+ + + + + + + + + +
inPositionPosition to test.
inRotationRotation at which to test the shape.
inMovementDirectionA hint in which direction the character is moving, will be used to calculate a proper normal.
inMaxSeparationDistanceHow much distance around the character you want to report contacts in (can be 0 to match the character exactly).
inShapeShape to test collision with.
inBaseOffsetAll hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. GetPosition() since floats are most accurate near the origin
ioCollectorCollision collector that receives the collision results.
inLockBodiesIf the collision query should use the locking body interface (true) or the non locking body interface (false)
+
+
+ +
+
+ +

◆ GetBodyID()

+ +
+
+ + + + + +
+ + + + + + + +
BodyID Character::GetBodyID () const
+
+inline
+
+ +

Get the body associated with this character.

+ +
+
+ +

◆ GetCenterOfMassPosition()

+ +
+
+ + + + + + + + +
RVec3 Character::GetCenterOfMassPosition (bool inLockBodies = true) const
+
+ +

Position of the center of mass of the underlying rigid body.

+ +
+
+ +

◆ GetLayer()

+ +
+
+ + + + + +
+ + + + + + + +
ObjectLayer Character::GetLayer () const
+
+inline
+
+ +

Get the layer of the character.

+ +
+
+ +

◆ GetLinearVelocity()

+ +
+
+ + + + + + + + +
Vec3 Character::GetLinearVelocity (bool inLockBodies = true) const
+
+ +

Get the linear velocity of the character (m / s)

+ +
+
+ +

◆ GetPosition()

+ +
+
+ + + + + + + + +
RVec3 Character::GetPosition (bool inLockBodies = true) const
+
+ +

Get the position of the character.

+ +
+
+ +

◆ GetPositionAndRotation()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Character::GetPositionAndRotation (RVec3outPosition,
QuatoutRotation,
bool inLockBodies = true 
) const
+
+ +

Get position / rotation of the body.

+ +
+
+ +

◆ GetRotation()

+ +
+
+ + + + + + + + +
Quat Character::GetRotation (bool inLockBodies = true) const
+
+ +

Get the rotation of the character.

+ +
+
+ +

◆ GetTransformedShape()

+ +
+
+ + + + + + + + +
TransformedShape Character::GetTransformedShape (bool inLockBodies = true) const
+
+ +

Get the transformed shape that represents the volume of the character, can be used for collision checks.

+ +
+
+ +

◆ GetWorldTransform()

+ +
+
+ + + + + + + + +
RMat44 Character::GetWorldTransform (bool inLockBodies = true) const
+
+ +

Calculate the world transform of the character.

+ +
+
+ +

◆ PostSimulation()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Character::PostSimulation (float inMaxSeparationDistance,
bool inLockBodies = true 
)
+
+

Needs to be called after every PhysicsSystem::Update

Parameters
+ + + +
inMaxSeparationDistanceMax distance between the floor and the character to still consider the character standing on the floor
inLockBodiesIf the collision query should use the locking body interface (true) or the non locking body interface (false)
+
+
+ +
+
+ +

◆ RemoveFromPhysicsSystem()

+ +
+
+ + + + + + + + +
void Character::RemoveFromPhysicsSystem (bool inLockBodies = true)
+
+ +

Remove bodies and constraints from the system.

+ +
+
+ +

◆ SetLayer()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Character::SetLayer (ObjectLayer inLayer,
bool inLockBodies = true 
)
+
+ +

Update the layer of the character.

+ +
+
+ +

◆ SetLinearAndAngularVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Character::SetLinearAndAngularVelocity (Vec3Arg inLinearVelocity,
Vec3Arg inAngularVelocity,
bool inLockBodies = true 
)
+
+ +

Control the velocity of the character.

+ +
+
+ +

◆ SetLinearVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Character::SetLinearVelocity (Vec3Arg inLinearVelocity,
bool inLockBodies = true 
)
+
+ +

Set the linear velocity of the character (m / s)

+ +
+
+ +

◆ SetPosition()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Character::SetPosition (RVec3Arg inPostion,
EActivation inActivationMode = EActivation::Activate,
bool inLockBodies = true 
)
+
+ +

Set the position of the character, optionally activating it.

+ +
+
+ +

◆ SetPositionAndRotation()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void Character::SetPositionAndRotation (RVec3Arg inPosition,
QuatArg inRotation,
EActivation inActivationMode = EActivation::Activate,
bool inLockBodies = true 
) const
+
+ +

Set the position / rotation of the body, optionally activating it.

+ +
+
+ +

◆ SetRotation()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Character::SetRotation (QuatArg inRotation,
EActivation inActivationMode = EActivation::Activate,
bool inLockBodies = true 
)
+
+ +

Set the rotation of the character, optionally activating it.

+ +
+
+ +

◆ SetShape()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool Character::SetShape (const ShapeinShape,
float inMaxPenetrationDepth,
bool inLockBodies = true 
)
+
+

Switch the shape of the character (e.g. for stance). When inMaxPenetrationDepth is not FLT_MAX, it checks if the new shape collides before switching shape. Returns true if the switch succeeded.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_character.js b/class_character.js new file mode 100644 index 000000000..d388f5c77 --- /dev/null +++ b/class_character.js @@ -0,0 +1,28 @@ +var class_character = +[ + [ "Character", "class_character.html#a7201fef809d55c2a7272634b373ead2c", null ], + [ "~Character", "class_character.html#a5e399f512bf22a9e8558a4bae1ec9555", null ], + [ "Activate", "class_character.html#a66a9abe442b15eaf3aab219facb5dbb4", null ], + [ "AddImpulse", "class_character.html#aa33a41b66f31c085eeb3f262f09972b7", null ], + [ "AddLinearVelocity", "class_character.html#af00e186740a38260f2987984045051c0", null ], + [ "AddToPhysicsSystem", "class_character.html#ad4ce42b7ef3dbd8a9a864033d3c71e14", null ], + [ "CheckCollision", "class_character.html#a1b1549f27b1b533f1b44c839ebdf3ed2", null ], + [ "GetBodyID", "class_character.html#a3d54e80af16da4731c1ec83f2a2f06f2", null ], + [ "GetCenterOfMassPosition", "class_character.html#a9c169077da6b5931e1f0bb2431e8f02f", null ], + [ "GetLayer", "class_character.html#a58a00716728ad3592066cb999b33ecdc", null ], + [ "GetLinearVelocity", "class_character.html#a38468a2f17e15c84019c98496909c7a9", null ], + [ "GetPosition", "class_character.html#abb9ac0e79c04c6e1016511a162bc0855", null ], + [ "GetPositionAndRotation", "class_character.html#acbe6e08d5f65047764e825dad49c8cc3", null ], + [ "GetRotation", "class_character.html#a5e63091e4ec6920b9054a835d5a1e93e", null ], + [ "GetTransformedShape", "class_character.html#a494c0f369f5aa12f2b5933b4cf4ba102", null ], + [ "GetWorldTransform", "class_character.html#a860a13343fac533562e20f01a0b5ca2d", null ], + [ "PostSimulation", "class_character.html#a6fd02888e30d3a718e81680857ca3968", null ], + [ "RemoveFromPhysicsSystem", "class_character.html#a58a8b4717f4cbcd8dd9ba3fc77111a5d", null ], + [ "SetLayer", "class_character.html#ac1def305b85f0a56932686fcdaad764f", null ], + [ "SetLinearAndAngularVelocity", "class_character.html#a8daf9cb1fdba5d3a75599d57e156b57b", null ], + [ "SetLinearVelocity", "class_character.html#a03d43dd12da2501fbb643bdbe7daef46", null ], + [ "SetPosition", "class_character.html#a55a75b63d6ac90d08399e5bcd48346d1", null ], + [ "SetPositionAndRotation", "class_character.html#a17120469ace1ad77f381e4ab2223ad65", null ], + [ "SetRotation", "class_character.html#a92dd19169cbf86dca78b423891eb2819", null ], + [ "SetShape", "class_character.html#a15f5407b7ccbe01588462989a4e0cfda", null ] +]; \ No newline at end of file diff --git a/class_character.png b/class_character.png new file mode 100644 index 000000000..435232f98 Binary files /dev/null and b/class_character.png differ diff --git a/class_character_base-members.html b/class_character_base-members.html new file mode 100644 index 000000000..c7daa290b --- /dev/null +++ b/class_character_base-members.html @@ -0,0 +1,165 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterBase Member List
+
+
+ +

This is the complete list of members for CharacterBase, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< CharacterBase >inline
cEmbeddedRefTarget< CharacterBase >protectedstatic
CharacterBase(const CharacterBaseSettings *inSettings, PhysicsSystem *inSystem)CharacterBase
cNoMaxSlopeAngleCharacterBaseprotectedstatic
EGroundState enum nameCharacterBase
GetCosMaxSlopeAngle() constCharacterBaseinline
GetGroundBodyID() constCharacterBaseinline
GetGroundMaterial() constCharacterBaseinline
GetGroundNormal() constCharacterBaseinline
GetGroundPosition() constCharacterBaseinline
GetGroundState() constCharacterBaseinline
GetGroundSubShapeID() constCharacterBaseinline
GetGroundUserData() constCharacterBaseinline
GetGroundVelocity() constCharacterBaseinline
GetRefCount() constRefTarget< CharacterBase >inline
GetShape() constCharacterBaseinline
GetUp() constCharacterBaseinline
IsSlopeTooSteep(Vec3Arg inNormal) constCharacterBaseinline
IsSupported() constCharacterBaseinline
mCosMaxSlopeAngleCharacterBaseprotected
mGroundBodyIDCharacterBaseprotected
mGroundBodySubShapeIDCharacterBaseprotected
mGroundMaterialCharacterBaseprotected
mGroundNormalCharacterBaseprotected
mGroundPositionCharacterBaseprotected
mGroundStateCharacterBaseprotected
mGroundUserDataCharacterBaseprotected
mGroundVelocityCharacterBaseprotected
mRefCountRefTarget< CharacterBase >mutableprotected
mShapeCharacterBaseprotected
mSupportingVolumeCharacterBaseprotected
mSystemCharacterBaseprotected
mUpCharacterBaseprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< CharacterBase >::operator=(const RefTarget &)RefTarget< CharacterBase >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< CharacterBase >inline
RefTarget(const RefTarget &)RefTarget< CharacterBase >inline
Release() constRefTarget< CharacterBase >inline
RestoreState(StateRecorder &inStream)CharacterBasevirtual
SaveState(StateRecorder &inStream) constCharacterBasevirtual
SetEmbedded() constRefTarget< CharacterBase >inline
SetMaxSlopeAngle(float inMaxSlopeAngle)CharacterBaseinline
SetUp(Vec3Arg inUp)CharacterBaseinline
sInternalGetRefCountOffset()RefTarget< CharacterBase >inlinestatic
sToString(EGroundState inState)CharacterBasestatic
~CharacterBase()=defaultCharacterBasevirtual
~RefTarget()RefTarget< CharacterBase >inline
+
+ + + + diff --git a/class_character_base.html b/class_character_base.html new file mode 100644 index 000000000..d9ef8e62a --- /dev/null +++ b/class_character_base.html @@ -0,0 +1,1177 @@ + + + + + + + +Jolt Physics: CharacterBase Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CharacterBase Class Reference
+
+
+ +

Base class for character class. + More...

+ +

#include <CharacterBase.h>

+
+Inheritance diagram for CharacterBase:
+
+
+ + +RefTarget< CharacterBase > +NonCopyable +Character +CharacterVirtual + +
+ + + + +

+Public Types

enum class  EGroundState { OnGround +, OnSteepGround +, NotSupported +, InAir + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE CharacterBase (const CharacterBaseSettings *inSettings, PhysicsSystem *inSystem)
 Constructor.
 
virtual ~CharacterBase ()=default
 Destructor.
 
void SetMaxSlopeAngle (float inMaxSlopeAngle)
 Set the maximum angle of slope that character can still walk on (radians)
 
float GetCosMaxSlopeAngle () const
 
void SetUp (Vec3Arg inUp)
 Set the up vector for the character.
 
Vec3 GetUp () const
 
bool IsSlopeTooSteep (Vec3Arg inNormal) const
 Check if the normal of the ground surface is too steep to walk on.
 
const ShapeGetShape () const
 Get the current shape that the character is using.
 
- Public Member Functions inherited from RefTarget< CharacterBase >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + +

+Static Public Member Functions

static const char * sToString (EGroundState inState)
 Debug function to convert enum values to string.
 
- Static Public Member Functions inherited from RefTarget< CharacterBase >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Properties of the ground this character is standing on

PhysicsSystemmSystem
 
RefConst< ShapemShape
 
Vec3 mUp
 
Plane mSupportingVolume
 
float mCosMaxSlopeAngle
 
EGroundState mGroundState = EGroundState::InAir
 
BodyID mGroundBodyID
 
SubShapeID mGroundBodySubShapeID
 
RVec3 mGroundPosition = RVec3::sZero()
 
Vec3 mGroundNormal = Vec3::sZero()
 
Vec3 mGroundVelocity = Vec3::sZero()
 
RefConst< PhysicsMaterialmGroundMaterial = PhysicsMaterial::sDefault
 
uint64 mGroundUserData = 0
 
static constexpr float cNoMaxSlopeAngle = 0.9999f
 
EGroundState GetGroundState () const
 Current ground state.
 
bool IsSupported () const
 Returns true if the player is supported by normal or steep ground.
 
RVec3 GetGroundPosition () const
 Get the contact point with the ground.
 
Vec3 GetGroundNormal () const
 Get the contact normal with the ground.
 
Vec3 GetGroundVelocity () const
 Velocity in world space of ground.
 
const PhysicsMaterialGetGroundMaterial () const
 Material that the character is standing on.
 
BodyID GetGroundBodyID () const
 BodyID of the object the character is standing on. Note may have been removed!
 
SubShapeID GetGroundSubShapeID () const
 Sub part of the body that we're standing on.
 
uint64 GetGroundUserData () const
 User data value of the body that we're standing on.
 
virtual void SaveState (StateRecorder &inStream) const
 
virtual void RestoreState (StateRecorder &inStream)
 
+ + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from RefTarget< CharacterBase >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< CharacterBase >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Base class for character class.

+

Member Enumeration Documentation

+ +

◆ EGroundState

+ +
+
+ + + + + +
+ + + + +
enum class CharacterBase::EGroundState
+
+strong
+
+ + + + + +
Enumerator
OnGround 

Character is on the ground and can move freely.

+
OnSteepGround 

Character is on a slope that is too steep and can't climb up any further. The caller should start applying downward velocity if sliding from the slope is desired.

+
NotSupported 

Character is touching an object, but is not supported by it and should fall. The GetGroundXXX functions will return information about the touched object.

+
InAir 

Character is in the air and is not touching anything.

+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CharacterBase()

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN CharacterBase::CharacterBase (const CharacterBaseSettingsinSettings,
PhysicsSysteminSystem 
)
+
+ +

Constructor.

+ +
+
+ +

◆ ~CharacterBase()

+ +
+
+ + + + + +
+ + + + + + + +
virtual CharacterBase::~CharacterBase ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetCosMaxSlopeAngle()

+ +
+
+ + + + + +
+ + + + + + + +
float CharacterBase::GetCosMaxSlopeAngle () const
+
+inline
+
+ +
+
+ +

◆ GetGroundBodyID()

+ +
+
+ + + + + +
+ + + + + + + +
BodyID CharacterBase::GetGroundBodyID () const
+
+inline
+
+ +

BodyID of the object the character is standing on. Note may have been removed!

+ +
+
+ +

◆ GetGroundMaterial()

+ +
+
+ + + + + +
+ + + + + + + +
const PhysicsMaterial * CharacterBase::GetGroundMaterial () const
+
+inline
+
+ +

Material that the character is standing on.

+ +
+
+ +

◆ GetGroundNormal()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 CharacterBase::GetGroundNormal () const
+
+inline
+
+ +

Get the contact normal with the ground.

+ +
+
+ +

◆ GetGroundPosition()

+ +
+
+ + + + + +
+ + + + + + + +
RVec3 CharacterBase::GetGroundPosition () const
+
+inline
+
+ +

Get the contact point with the ground.

+ +
+
+ +

◆ GetGroundState()

+ +
+
+ + + + + +
+ + + + + + + +
EGroundState CharacterBase::GetGroundState () const
+
+inline
+
+ +

Current ground state.

+ +
+
+ +

◆ GetGroundSubShapeID()

+ +
+
+ + + + + +
+ + + + + + + +
SubShapeID CharacterBase::GetGroundSubShapeID () const
+
+inline
+
+ +

Sub part of the body that we're standing on.

+ +
+
+ +

◆ GetGroundUserData()

+ +
+
+ + + + + +
+ + + + + + + +
uint64 CharacterBase::GetGroundUserData () const
+
+inline
+
+ +

User data value of the body that we're standing on.

+ +
+
+ +

◆ GetGroundVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 CharacterBase::GetGroundVelocity () const
+
+inline
+
+ +

Velocity in world space of ground.

+ +
+
+ +

◆ GetShape()

+ +
+
+ + + + + +
+ + + + + + + +
const Shape * CharacterBase::GetShape () const
+
+inline
+
+ +

Get the current shape that the character is using.

+ +
+
+ +

◆ GetUp()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 CharacterBase::GetUp () const
+
+inline
+
+ +
+
+ +

◆ IsSlopeTooSteep()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CharacterBase::IsSlopeTooSteep (Vec3Arg inNormal) const
+
+inline
+
+ +

Check if the normal of the ground surface is too steep to walk on.

+ +
+
+ +

◆ IsSupported()

+ +
+
+ + + + + +
+ + + + + + + +
bool CharacterBase::IsSupported () const
+
+inline
+
+ +

Returns true if the player is supported by normal or steep ground.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterBase::RestoreState (StateRecorderinStream)
+
+virtual
+
+ +

Reimplemented in CharacterVirtual.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterBase::SaveState (StateRecorderinStream) const
+
+virtual
+
+ +

Reimplemented in CharacterVirtual.

+ +
+
+ +

◆ SetMaxSlopeAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterBase::SetMaxSlopeAngle (float inMaxSlopeAngle)
+
+inline
+
+ +

Set the maximum angle of slope that character can still walk on (radians)

+ +
+
+ +

◆ SetUp()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterBase::SetUp (Vec3Arg inUp)
+
+inline
+
+ +

Set the up vector for the character.

+ +
+
+ +

◆ sToString()

+ +
+
+ + + + + +
+ + + + + + + + +
const char * CharacterBase::sToString (EGroundState inState)
+
+static
+
+ +

Debug function to convert enum values to string.

+ +
+
+

Member Data Documentation

+ +

◆ cNoMaxSlopeAngle

+ +
+
+ + + + + +
+ + + + +
constexpr float CharacterBase::cNoMaxSlopeAngle = 0.9999f
+
+staticconstexprprotected
+
+ +
+
+ +

◆ mCosMaxSlopeAngle

+ +
+
+ + + + + +
+ + + + +
float CharacterBase::mCosMaxSlopeAngle
+
+protected
+
+ +
+
+ +

◆ mGroundBodyID

+ +
+
+ + + + + +
+ + + + +
BodyID CharacterBase::mGroundBodyID
+
+protected
+
+ +
+
+ +

◆ mGroundBodySubShapeID

+ +
+
+ + + + + +
+ + + + +
SubShapeID CharacterBase::mGroundBodySubShapeID
+
+protected
+
+ +
+
+ +

◆ mGroundMaterial

+ +
+
+ + + + + +
+ + + + +
RefConst<PhysicsMaterial> CharacterBase::mGroundMaterial = PhysicsMaterial::sDefault
+
+protected
+
+ +
+
+ +

◆ mGroundNormal

+ +
+
+ + + + + +
+ + + + +
Vec3 CharacterBase::mGroundNormal = Vec3::sZero()
+
+protected
+
+ +
+
+ +

◆ mGroundPosition

+ +
+
+ + + + + +
+ + + + +
RVec3 CharacterBase::mGroundPosition = RVec3::sZero()
+
+protected
+
+ +
+
+ +

◆ mGroundState

+ +
+
+ + + + + +
+ + + + +
EGroundState CharacterBase::mGroundState = EGroundState::InAir
+
+protected
+
+ +
+
+ +

◆ mGroundUserData

+ +
+
+ + + + + +
+ + + + +
uint64 CharacterBase::mGroundUserData = 0
+
+protected
+
+ +
+
+ +

◆ mGroundVelocity

+ +
+
+ + + + + +
+ + + + +
Vec3 CharacterBase::mGroundVelocity = Vec3::sZero()
+
+protected
+
+ +
+
+ +

◆ mShape

+ +
+
+ + + + + +
+ + + + +
RefConst<Shape> CharacterBase::mShape
+
+protected
+
+ +
+
+ +

◆ mSupportingVolume

+ +
+
+ + + + + +
+ + + + +
Plane CharacterBase::mSupportingVolume
+
+protected
+
+ +
+
+ +

◆ mSystem

+ +
+
+ + + + + +
+ + + + +
PhysicsSystem* CharacterBase::mSystem
+
+protected
+
+ +
+
+ +

◆ mUp

+ +
+
+ + + + + +
+ + + + +
Vec3 CharacterBase::mUp
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_character_base.js b/class_character_base.js new file mode 100644 index 000000000..442f7df58 --- /dev/null +++ b/class_character_base.js @@ -0,0 +1,41 @@ +var class_character_base = +[ + [ "EGroundState", "class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77e", [ + [ "OnGround", "class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77ea2b9beed57034f5727573d7ded76cf777", null ], + [ "OnSteepGround", "class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77ea50f80f8d96a6d65de73ba8a6b9910761", null ], + [ "NotSupported", "class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77ea9ed2d871602556951e39f3cebd08d6cb", null ], + [ "InAir", "class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77eaee4e669a07b061d70b9b79dfed9cb5e7", null ] + ] ], + [ "CharacterBase", "class_character_base.html#ae105fe52be09ccb14a7e7aa57b83e8ca", null ], + [ "~CharacterBase", "class_character_base.html#a5e0ba80e28b9e012acf7b8c1fa605ef5", null ], + [ "GetCosMaxSlopeAngle", "class_character_base.html#aa7d43079f3b6c40c3fa1ccc30a8682bf", null ], + [ "GetGroundBodyID", "class_character_base.html#ab677215920d0b4cd10874b3a56a35026", null ], + [ "GetGroundMaterial", "class_character_base.html#ac4771494235c54165b6b4c9ad64dcdc8", null ], + [ "GetGroundNormal", "class_character_base.html#adde62ba706430b59595bb8d56731eaa8", null ], + [ "GetGroundPosition", "class_character_base.html#a0ecc9be497c5fc46bef4277a734a691a", null ], + [ "GetGroundState", "class_character_base.html#ab8ce7589bd0e97901030bceeda7a513b", null ], + [ "GetGroundSubShapeID", "class_character_base.html#a2ab264ce1b5888134b38177f71a81f91", null ], + [ "GetGroundUserData", "class_character_base.html#ae8c2a236d46c2e362021c1ab3364c432", null ], + [ "GetGroundVelocity", "class_character_base.html#a692578285569b48d19d53684360a5656", null ], + [ "GetShape", "class_character_base.html#afe046cfb3333be1fcb186f42821ddb19", null ], + [ "GetUp", "class_character_base.html#a2a437049ade0a3ab8ab7aeafb64f5163", null ], + [ "IsSlopeTooSteep", "class_character_base.html#a87e7e3bcc174d5e498844dcac7f7f173", null ], + [ "IsSupported", "class_character_base.html#a700e706b9c1710409fc16c6f9a083e0b", null ], + [ "RestoreState", "class_character_base.html#ad9d1540df7d44b3aaeee88a527df7d7d", null ], + [ "SaveState", "class_character_base.html#ab28f7afaa654cf8461f3638dd01334e0", null ], + [ "SetMaxSlopeAngle", "class_character_base.html#a0c2099dfbf12c1bd6f839a3eda5c9726", null ], + [ "SetUp", "class_character_base.html#a46d5822b95a5e771adc1e33f1f9b891c", null ], + [ "mCosMaxSlopeAngle", "class_character_base.html#a9da1e29d9257f3cce909487da437a0c9", null ], + [ "mGroundBodyID", "class_character_base.html#a893268ea23759f36ebe8e317a54afa7e", null ], + [ "mGroundBodySubShapeID", "class_character_base.html#afa16450cf4dc265231e0f616aa5eeec9", null ], + [ "mGroundMaterial", "class_character_base.html#a2586c1571ba8e5adc511d71f413de2c1", null ], + [ "mGroundNormal", "class_character_base.html#a3537f13f2e427573266d9f591f1aadf3", null ], + [ "mGroundPosition", "class_character_base.html#a2b9e9d8616bb0c7c8cb6ba59f5c7bf8a", null ], + [ "mGroundState", "class_character_base.html#a1cf96842849baa268527dfa548219510", null ], + [ "mGroundUserData", "class_character_base.html#acf9a8bdf6fa420d9615206d196794135", null ], + [ "mGroundVelocity", "class_character_base.html#add543ae2333820dbf77e23009dfe4367", null ], + [ "mShape", "class_character_base.html#a5c10220e06a8a5bb274a4b02c28cb0b6", null ], + [ "mSupportingVolume", "class_character_base.html#ae9fb45e5980787c5f7f718f6e7703797", null ], + [ "mSystem", "class_character_base.html#ac6c3f8f7a2492d0c0f2eac85a9cc5a01", null ], + [ "mUp", "class_character_base.html#a5f637f449a17fb6a1b10297764de48b4", null ] +]; \ No newline at end of file diff --git a/class_character_base.png b/class_character_base.png new file mode 100644 index 000000000..27212bb4f Binary files /dev/null and b/class_character_base.png differ diff --git a/class_character_base_settings-members.html b/class_character_base_settings-members.html new file mode 100644 index 000000000..54bacc4ef --- /dev/null +++ b/class_character_base_settings-members.html @@ -0,0 +1,136 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterBaseSettings Member List
+
+
+ +

This is the complete list of members for CharacterBaseSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< CharacterBaseSettings >inline
cEmbeddedRefTarget< CharacterBaseSettings >protectedstatic
CharacterBaseSettings()=defaultCharacterBaseSettings
CharacterBaseSettings(const CharacterBaseSettings &inSettings)=defaultCharacterBaseSettings
GetRefCount() constRefTarget< CharacterBaseSettings >inline
mEnhancedInternalEdgeRemovalCharacterBaseSettings
mMaxSlopeAngleCharacterBaseSettings
mRefCountRefTarget< CharacterBaseSettings >mutableprotected
mShapeCharacterBaseSettings
mSupportingVolumeCharacterBaseSettings
mUpCharacterBaseSettings
operator=(const CharacterBaseSettings &inSettings)=defaultCharacterBaseSettings
RefTarget< CharacterBaseSettings >::operator=(const RefTarget &)RefTarget< CharacterBaseSettings >inline
RefTarget()=defaultRefTarget< CharacterBaseSettings >inline
RefTarget(const RefTarget &)RefTarget< CharacterBaseSettings >inline
Release() constRefTarget< CharacterBaseSettings >inline
SetEmbedded() constRefTarget< CharacterBaseSettings >inline
sInternalGetRefCountOffset()RefTarget< CharacterBaseSettings >inlinestatic
~CharacterBaseSettings()=defaultCharacterBaseSettingsvirtual
~RefTarget()RefTarget< CharacterBaseSettings >inline
+
+ + + + diff --git a/class_character_base_settings.html b/class_character_base_settings.html new file mode 100644 index 000000000..02e719585 --- /dev/null +++ b/class_character_base_settings.html @@ -0,0 +1,393 @@ + + + + + + + +Jolt Physics: CharacterBaseSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CharacterBaseSettings Class Reference
+
+
+ +

Base class for configuration of a character. + More...

+ +

#include <CharacterBase.h>

+
+Inheritance diagram for CharacterBaseSettings:
+
+
+ + +RefTarget< CharacterBaseSettings > +CharacterSettings +CharacterVirtualSettings + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE CharacterBaseSettings ()=default
 Constructor.
 
 CharacterBaseSettings (const CharacterBaseSettings &inSettings)=default
 
CharacterBaseSettingsoperator= (const CharacterBaseSettings &inSettings)=default
 
virtual ~CharacterBaseSettings ()=default
 Virtual destructor.
 
- Public Member Functions inherited from RefTarget< CharacterBaseSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + +

+Public Attributes

Vec3 mUp = Vec3::sAxisY()
 Vector indicating the up direction of the character.
 
Plane mSupportingVolume { Vec3::sAxisY(), -1.0e10f }
 
float mMaxSlopeAngle = DegreesToRadians(50.0f)
 Maximum angle of slope that character can still walk on (radians).
 
bool mEnhancedInternalEdgeRemoval = false
 Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.
 
RefConst< ShapemShape
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< CharacterBaseSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< CharacterBaseSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< CharacterBaseSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Base class for configuration of a character.

+

Constructor & Destructor Documentation

+ +

◆ CharacterBaseSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE CharacterBaseSettings::CharacterBaseSettings ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ CharacterBaseSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
CharacterBaseSettings::CharacterBaseSettings (const CharacterBaseSettingsinSettings)
+
+default
+
+ +
+
+ +

◆ ~CharacterBaseSettings()

+ +
+
+ + + + + +
+ + + + + + + +
virtual CharacterBaseSettings::~CharacterBaseSettings ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
CharacterBaseSettings & CharacterBaseSettings::operator= (const CharacterBaseSettingsinSettings)
+
+default
+
+ +
+
+

Member Data Documentation

+ +

◆ mEnhancedInternalEdgeRemoval

+ +
+
+ + + + +
bool CharacterBaseSettings::mEnhancedInternalEdgeRemoval = false
+
+ +

Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.

+ +
+
+ +

◆ mMaxSlopeAngle

+ +
+
+ + + + +
float CharacterBaseSettings::mMaxSlopeAngle = DegreesToRadians(50.0f)
+
+ +

Maximum angle of slope that character can still walk on (radians).

+ +
+
+ +

◆ mShape

+ +
+
+ + + + +
RefConst<Shape> CharacterBaseSettings::mShape
+
+

Initial shape that represents the character's volume. Usually this is a capsule, make sure the shape is made so that the bottom of the shape is at (0, 0, 0).

+ +
+
+ +

◆ mSupportingVolume

+ +
+
+ + + + +
Plane CharacterBaseSettings::mSupportingVolume { Vec3::sAxisY(), -1.0e10f }
+
+

Plane, defined in local space relative to the character. Every contact behind this plane can support the character, every contact in front of this plane is treated as only colliding with the player. Default: Accept any contact.

+ +
+
+ +

◆ mUp

+ +
+
+ + + + +
Vec3 CharacterBaseSettings::mUp = Vec3::sAxisY()
+
+ +

Vector indicating the up direction of the character.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_character_base_settings.js b/class_character_base_settings.js new file mode 100644 index 000000000..d84c661ce --- /dev/null +++ b/class_character_base_settings.js @@ -0,0 +1,12 @@ +var class_character_base_settings = +[ + [ "CharacterBaseSettings", "class_character_base_settings.html#aef4e52d5c83775b714f3c6f545ab032b", null ], + [ "CharacterBaseSettings", "class_character_base_settings.html#ae04306c946170955be1189d60c562155", null ], + [ "~CharacterBaseSettings", "class_character_base_settings.html#adf1f42bae7e622c2c3a0ae2273f6f5f5", null ], + [ "operator=", "class_character_base_settings.html#af7d10fafd91664c8d175bf04785940f2", null ], + [ "mEnhancedInternalEdgeRemoval", "class_character_base_settings.html#a203e7cb826ccd98d6f3551f2aa198ee3", null ], + [ "mMaxSlopeAngle", "class_character_base_settings.html#a6daeb1476d88ee8f13118e85a9c07b67", null ], + [ "mShape", "class_character_base_settings.html#aee9be06866efe751ab7e2df57edee6b1", null ], + [ "mSupportingVolume", "class_character_base_settings.html#a31c6c2f0de04f45c657b0932319b6bfb", null ], + [ "mUp", "class_character_base_settings.html#a97272d417a1fa07e4c9c6213e7d5c291", null ] +]; \ No newline at end of file diff --git a/class_character_base_settings.png b/class_character_base_settings.png new file mode 100644 index 000000000..58c3eda7c Binary files /dev/null and b/class_character_base_settings.png differ diff --git a/class_character_contact_listener-members.html b/class_character_contact_listener-members.html new file mode 100644 index 000000000..65ea81b60 --- /dev/null +++ b/class_character_contact_listener-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterContactListener Member List
+
+
+ +

This is the complete list of members for CharacterContactListener, including all inherited members.

+ + + + + + + + + +
OnAdjustBodyVelocity(const CharacterVirtual *inCharacter, const Body &inBody2, Vec3 &ioLinearVelocity, Vec3 &ioAngularVelocity)CharacterContactListenerinlinevirtual
OnCharacterContactAdded(const CharacterVirtual *inCharacter, const CharacterVirtual *inOtherCharacter, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, CharacterContactSettings &ioSettings)CharacterContactListenerinlinevirtual
OnCharacterContactSolve(const CharacterVirtual *inCharacter, const CharacterVirtual *inOtherCharacter, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, Vec3Arg inContactVelocity, const PhysicsMaterial *inContactMaterial, Vec3Arg inCharacterVelocity, Vec3 &ioNewCharacterVelocity)CharacterContactListenerinlinevirtual
OnCharacterContactValidate(const CharacterVirtual *inCharacter, const CharacterVirtual *inOtherCharacter, const SubShapeID &inSubShapeID2)CharacterContactListenerinlinevirtual
OnContactAdded(const CharacterVirtual *inCharacter, const BodyID &inBodyID2, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, CharacterContactSettings &ioSettings)CharacterContactListenerinlinevirtual
OnContactSolve(const CharacterVirtual *inCharacter, const BodyID &inBodyID2, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, Vec3Arg inContactVelocity, const PhysicsMaterial *inContactMaterial, Vec3Arg inCharacterVelocity, Vec3 &ioNewCharacterVelocity)CharacterContactListenerinlinevirtual
OnContactValidate(const CharacterVirtual *inCharacter, const BodyID &inBodyID2, const SubShapeID &inSubShapeID2)CharacterContactListenerinlinevirtual
~CharacterContactListener()=defaultCharacterContactListenervirtual
+
+ + + + diff --git a/class_character_contact_listener.html b/class_character_contact_listener.html new file mode 100644 index 000000000..bb69e8df7 --- /dev/null +++ b/class_character_contact_listener.html @@ -0,0 +1,623 @@ + + + + + + + +Jolt Physics: CharacterContactListener Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CharacterContactListener Class Reference
+
+
+ +

This class receives callbacks when a virtual character hits something. + More...

+ +

#include <CharacterVirtual.h>

+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~CharacterContactListener ()=default
 Destructor.
 
virtual void OnAdjustBodyVelocity (const CharacterVirtual *inCharacter, const Body &inBody2, Vec3 &ioLinearVelocity, Vec3 &ioAngularVelocity)
 
virtual bool OnContactValidate (const CharacterVirtual *inCharacter, const BodyID &inBodyID2, const SubShapeID &inSubShapeID2)
 Checks if a character can collide with specified body. Return true if the contact is valid.
 
virtual bool OnCharacterContactValidate (const CharacterVirtual *inCharacter, const CharacterVirtual *inOtherCharacter, const SubShapeID &inSubShapeID2)
 Same as OnContactValidate but when colliding with a CharacterVirtual.
 
virtual void OnContactAdded (const CharacterVirtual *inCharacter, const BodyID &inBodyID2, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, CharacterContactSettings &ioSettings)
 
virtual void OnCharacterContactAdded (const CharacterVirtual *inCharacter, const CharacterVirtual *inOtherCharacter, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, CharacterContactSettings &ioSettings)
 Same as OnContactAdded but when colliding with a CharacterVirtual.
 
virtual void OnContactSolve (const CharacterVirtual *inCharacter, const BodyID &inBodyID2, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, Vec3Arg inContactVelocity, const PhysicsMaterial *inContactMaterial, Vec3Arg inCharacterVelocity, Vec3 &ioNewCharacterVelocity)
 
virtual void OnCharacterContactSolve (const CharacterVirtual *inCharacter, const CharacterVirtual *inOtherCharacter, const SubShapeID &inSubShapeID2, RVec3Arg inContactPosition, Vec3Arg inContactNormal, Vec3Arg inContactVelocity, const PhysicsMaterial *inContactMaterial, Vec3Arg inCharacterVelocity, Vec3 &ioNewCharacterVelocity)
 Same as OnContactSolve but when colliding with a CharacterVirtual.
 
+

Detailed Description

+

This class receives callbacks when a virtual character hits something.

+

Constructor & Destructor Documentation

+ +

◆ ~CharacterContactListener()

+ +
+
+ + + + + +
+ + + + + + + +
virtual CharacterContactListener::~CharacterContactListener ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ OnAdjustBodyVelocity()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void CharacterContactListener::OnAdjustBodyVelocity (const CharacterVirtualinCharacter,
const BodyinBody2,
Vec3ioLinearVelocity,
Vec3ioAngularVelocity 
)
+
+inlinevirtual
+
+

Callback to adjust the velocity of a body as seen by the character. Can be adjusted to e.g. implement a conveyor belt or an inertial dampener system of a sci-fi space ship. Note that inBody2 is locked during the callback so you can read its properties freely.

+ +
+
+ +

◆ OnCharacterContactAdded()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void CharacterContactListener::OnCharacterContactAdded (const CharacterVirtualinCharacter,
const CharacterVirtualinOtherCharacter,
const SubShapeIDinSubShapeID2,
RVec3Arg inContactPosition,
Vec3Arg inContactNormal,
CharacterContactSettingsioSettings 
)
+
+inlinevirtual
+
+ +

Same as OnContactAdded but when colliding with a CharacterVirtual.

+ +
+
+ +

◆ OnCharacterContactSolve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void CharacterContactListener::OnCharacterContactSolve (const CharacterVirtualinCharacter,
const CharacterVirtualinOtherCharacter,
const SubShapeIDinSubShapeID2,
RVec3Arg inContactPosition,
Vec3Arg inContactNormal,
Vec3Arg inContactVelocity,
const PhysicsMaterialinContactMaterial,
Vec3Arg inCharacterVelocity,
Vec3ioNewCharacterVelocity 
)
+
+inlinevirtual
+
+ +

Same as OnContactSolve but when colliding with a CharacterVirtual.

+ +
+
+ +

◆ OnCharacterContactValidate()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool CharacterContactListener::OnCharacterContactValidate (const CharacterVirtualinCharacter,
const CharacterVirtualinOtherCharacter,
const SubShapeIDinSubShapeID2 
)
+
+inlinevirtual
+
+ +

Same as OnContactValidate but when colliding with a CharacterVirtual.

+ +
+
+ +

◆ OnContactAdded()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void CharacterContactListener::OnContactAdded (const CharacterVirtualinCharacter,
const BodyIDinBodyID2,
const SubShapeIDinSubShapeID2,
RVec3Arg inContactPosition,
Vec3Arg inContactNormal,
CharacterContactSettingsioSettings 
)
+
+inlinevirtual
+
+

Called whenever the character collides with a body.

Parameters
+ + + + + + + +
inCharacterCharacter that is being solved
inBodyID2Body ID of body that is being hit
inSubShapeID2Sub shape ID of shape that is being hit
inContactPositionWorld space contact position
inContactNormalWorld space contact normal
ioSettingsSettings returned by the contact callback to indicate how the character should behave
+
+
+ +
+
+ +

◆ OnContactSolve()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void CharacterContactListener::OnContactSolve (const CharacterVirtualinCharacter,
const BodyIDinBodyID2,
const SubShapeIDinSubShapeID2,
RVec3Arg inContactPosition,
Vec3Arg inContactNormal,
Vec3Arg inContactVelocity,
const PhysicsMaterialinContactMaterial,
Vec3Arg inCharacterVelocity,
Vec3ioNewCharacterVelocity 
)
+
+inlinevirtual
+
+

Called whenever a contact is being used by the solver. Allows the listener to override the resulting character velocity (e.g. by preventing sliding along certain surfaces).

Parameters
+ + + + + + + + + + +
inCharacterCharacter that is being solved
inBodyID2Body ID of body that is being hit
inSubShapeID2Sub shape ID of shape that is being hit
inContactPositionWorld space contact position
inContactNormalWorld space contact normal
inContactVelocityWorld space velocity of contact point (e.g. for a moving platform)
inContactMaterialMaterial of contact point
inCharacterVelocityWorld space velocity of the character prior to hitting this contact
ioNewCharacterVelocityContains the calculated world space velocity of the character after hitting this contact, this velocity slides along the surface of the contact. Can be modified by the listener to provide an alternative velocity.
+
+
+ +
+
+ +

◆ OnContactValidate()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool CharacterContactListener::OnContactValidate (const CharacterVirtualinCharacter,
const BodyIDinBodyID2,
const SubShapeIDinSubShapeID2 
)
+
+inlinevirtual
+
+ +

Checks if a character can collide with specified body. Return true if the contact is valid.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_character_contact_listener.js b/class_character_contact_listener.js new file mode 100644 index 000000000..6317ff6b5 --- /dev/null +++ b/class_character_contact_listener.js @@ -0,0 +1,11 @@ +var class_character_contact_listener = +[ + [ "~CharacterContactListener", "class_character_contact_listener.html#a1cbf56ca2333e878c3d7da75b9dfc0ba", null ], + [ "OnAdjustBodyVelocity", "class_character_contact_listener.html#a861889d3b1f2349eb1726ebfd979bf53", null ], + [ "OnCharacterContactAdded", "class_character_contact_listener.html#a66b85f5bafb3d0fd5a07ef1b278826e4", null ], + [ "OnCharacterContactSolve", "class_character_contact_listener.html#ad611891b1e902a1bc9596935362c141e", null ], + [ "OnCharacterContactValidate", "class_character_contact_listener.html#a5ede2bdf086dafcaa1f53fd6fe4a5e7b", null ], + [ "OnContactAdded", "class_character_contact_listener.html#a07550deec345e7d94ca05afdd341b11d", null ], + [ "OnContactSolve", "class_character_contact_listener.html#a4d1a8b09ee3a923d4aa7bc53aec160b6", null ], + [ "OnContactValidate", "class_character_contact_listener.html#a46fc7a819cf904aa3db5cf1648f21530", null ] +]; \ No newline at end of file diff --git a/class_character_contact_settings-members.html b/class_character_contact_settings-members.html new file mode 100644 index 000000000..934d24a8f --- /dev/null +++ b/class_character_contact_settings-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterContactSettings Member List
+
+
+ +

This is the complete list of members for CharacterContactSettings, including all inherited members.

+ + + +
mCanPushCharacterCharacterContactSettings
mCanReceiveImpulsesCharacterContactSettings
+
+ + + + diff --git a/class_character_contact_settings.html b/class_character_contact_settings.html new file mode 100644 index 000000000..87f2ed468 --- /dev/null +++ b/class_character_contact_settings.html @@ -0,0 +1,168 @@ + + + + + + + +Jolt Physics: CharacterContactSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CharacterContactSettings Class Reference
+
+
+ +

This class contains settings that allow you to override the behavior of a character's collision response. + More...

+ +

#include <CharacterVirtual.h>

+ + + + + + + +

+Public Attributes

bool mCanPushCharacter = true
 True when the object can push the virtual character.
 
bool mCanReceiveImpulses = true
 
+

Detailed Description

+

This class contains settings that allow you to override the behavior of a character's collision response.

+

Member Data Documentation

+ +

◆ mCanPushCharacter

+ +
+
+ + + + +
bool CharacterContactSettings::mCanPushCharacter = true
+
+ +

True when the object can push the virtual character.

+ +
+
+ +

◆ mCanReceiveImpulses

+ +
+
+ + + + +
bool CharacterContactSettings::mCanReceiveImpulses = true
+
+

True when the virtual character can apply impulses (push) the body. Note that this only works against rigid bodies. Other CharacterVirtual objects can only be moved in their own update, so you must ensure that in their OnCharacterContactAdded mCanPushCharacter is true.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_character_contact_settings.js b/class_character_contact_settings.js new file mode 100644 index 000000000..1b8116683 --- /dev/null +++ b/class_character_contact_settings.js @@ -0,0 +1,5 @@ +var class_character_contact_settings = +[ + [ "mCanPushCharacter", "class_character_contact_settings.html#a08d217d923d36ad868fa83b8d1851833", null ], + [ "mCanReceiveImpulses", "class_character_contact_settings.html#a9e1a4f9fb9e52f755a15af2066cf441b", null ] +]; \ No newline at end of file diff --git a/class_character_settings-members.html b/class_character_settings-members.html new file mode 100644 index 000000000..e748c76a9 --- /dev/null +++ b/class_character_settings-members.html @@ -0,0 +1,140 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterSettings Member List
+
+
+ +

This is the complete list of members for CharacterSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< CharacterBaseSettings >inline
cEmbeddedRefTarget< CharacterBaseSettings >protectedstatic
CharacterBaseSettings()=defaultCharacterBaseSettings
CharacterBaseSettings(const CharacterBaseSettings &inSettings)=defaultCharacterBaseSettings
GetRefCount() constRefTarget< CharacterBaseSettings >inline
mEnhancedInternalEdgeRemovalCharacterBaseSettings
mFrictionCharacterSettings
mGravityFactorCharacterSettings
mLayerCharacterSettings
mMassCharacterSettings
mMaxSlopeAngleCharacterBaseSettings
mRefCountRefTarget< CharacterBaseSettings >mutableprotected
mShapeCharacterBaseSettings
mSupportingVolumeCharacterBaseSettings
mUpCharacterBaseSettings
operator=(const CharacterBaseSettings &inSettings)=defaultCharacterBaseSettings
RefTarget< CharacterBaseSettings >::operator=(const RefTarget &)RefTarget< CharacterBaseSettings >inline
RefTarget()=defaultRefTarget< CharacterBaseSettings >inline
RefTarget(const RefTarget &)RefTarget< CharacterBaseSettings >inline
Release() constRefTarget< CharacterBaseSettings >inline
SetEmbedded() constRefTarget< CharacterBaseSettings >inline
sInternalGetRefCountOffset()RefTarget< CharacterBaseSettings >inlinestatic
~CharacterBaseSettings()=defaultCharacterBaseSettingsvirtual
~RefTarget()RefTarget< CharacterBaseSettings >inline
+
+ + + + diff --git a/class_character_settings.html b/class_character_settings.html new file mode 100644 index 000000000..b5ccfcb41 --- /dev/null +++ b/class_character_settings.html @@ -0,0 +1,280 @@ + + + + + + + +Jolt Physics: CharacterSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CharacterSettings Class Reference
+
+
+ +

Contains the configuration of a character. + More...

+ +

#include <Character.h>

+
+Inheritance diagram for CharacterSettings:
+
+
+ + +CharacterBaseSettings +RefTarget< CharacterBaseSettings > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

JPH_OVERRIDE_NEW_DELETE ObjectLayer mLayer = 0
 Layer that this character will be added to.
 
float mMass = 80.0f
 Mass of the character.
 
float mFriction = 0.2f
 Friction for the character.
 
float mGravityFactor = 1.0f
 Value to multiply gravity with for this character.
 
- Public Attributes inherited from CharacterBaseSettings
Vec3 mUp = Vec3::sAxisY()
 Vector indicating the up direction of the character.
 
Plane mSupportingVolume { Vec3::sAxisY(), -1.0e10f }
 
float mMaxSlopeAngle = DegreesToRadians(50.0f)
 Maximum angle of slope that character can still walk on (radians).
 
bool mEnhancedInternalEdgeRemoval = false
 Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.
 
RefConst< ShapemShape
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from CharacterBaseSettings
JPH_OVERRIDE_NEW_DELETE CharacterBaseSettings ()=default
 Constructor.
 
 CharacterBaseSettings (const CharacterBaseSettings &inSettings)=default
 
CharacterBaseSettingsoperator= (const CharacterBaseSettings &inSettings)=default
 
virtual ~CharacterBaseSettings ()=default
 Virtual destructor.
 
- Public Member Functions inherited from RefTarget< CharacterBaseSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Static Public Member Functions inherited from RefTarget< CharacterBaseSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< CharacterBaseSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< CharacterBaseSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Contains the configuration of a character.

+

Member Data Documentation

+ +

◆ mFriction

+ +
+
+ + + + +
float CharacterSettings::mFriction = 0.2f
+
+ +

Friction for the character.

+ +
+
+ +

◆ mGravityFactor

+ +
+
+ + + + +
float CharacterSettings::mGravityFactor = 1.0f
+
+ +

Value to multiply gravity with for this character.

+ +
+
+ +

◆ mLayer

+ +
+
+ + + + +
JPH_OVERRIDE_NEW_DELETE ObjectLayer CharacterSettings::mLayer = 0
+
+ +

Layer that this character will be added to.

+ +
+
+ +

◆ mMass

+ +
+
+ + + + +
float CharacterSettings::mMass = 80.0f
+
+ +

Mass of the character.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_character_settings.js b/class_character_settings.js new file mode 100644 index 000000000..e6c5ff8f7 --- /dev/null +++ b/class_character_settings.js @@ -0,0 +1,7 @@ +var class_character_settings = +[ + [ "mFriction", "class_character_settings.html#ae969662f5e8bf47dc1837922dc80aa85", null ], + [ "mGravityFactor", "class_character_settings.html#a3110e7b55981e0764c21c67351cb2115", null ], + [ "mLayer", "class_character_settings.html#a6ae08196eebfbd6121386a6838848dbd", null ], + [ "mMass", "class_character_settings.html#a9d6fa4613227caf468f618e34011e657", null ] +]; \ No newline at end of file diff --git a/class_character_settings.png b/class_character_settings.png new file mode 100644 index 000000000..768266a80 Binary files /dev/null and b/class_character_settings.png differ diff --git a/class_character_virtual-members.html b/class_character_virtual-members.html new file mode 100644 index 000000000..bdb0df63d --- /dev/null +++ b/class_character_virtual-members.html @@ -0,0 +1,219 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterVirtual Member List
+
+
+ +

This is the complete list of members for CharacterVirtual, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< CharacterBase >inline
CancelVelocityTowardsSteepSlopes(Vec3Arg inDesiredVelocity) constCharacterVirtual
CanWalkStairs(Vec3Arg inLinearVelocity) constCharacterVirtual
cEmbeddedRefTarget< CharacterBase >protectedstatic
CharacterBase(const CharacterBaseSettings *inSettings, PhysicsSystem *inSystem)CharacterBase
CharacterVirtual(const CharacterVirtualSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, uint64 inUserData, PhysicsSystem *inSystem)CharacterVirtual
CharacterVirtual(const CharacterVirtualSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, PhysicsSystem *inSystem)CharacterVirtualinline
CheckCollision(RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inMovementDirection, float inMaxSeparationDistance, const Shape *inShape, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter) constCharacterVirtual
cNoMaxSlopeAngleCharacterBaseprotectedstatic
ContactList typedefCharacterVirtual
EGroundState enum nameCharacterBase
ExtendedUpdate(float inDeltaTime, Vec3Arg inGravity, const ExtendedUpdateSettings &inSettings, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator)CharacterVirtual
GetActiveContacts() constCharacterVirtualinline
GetCenterOfMassPosition() constCharacterVirtualinline
GetCenterOfMassTransform() constCharacterVirtualinline
GetCharacterPadding() constCharacterVirtualinline
GetCosMaxSlopeAngle() constCharacterBaseinline
GetEnhancedInternalEdgeRemoval() constCharacterVirtualinline
GetGroundBodyID() constCharacterBaseinline
GetGroundMaterial() constCharacterBaseinline
GetGroundNormal() constCharacterBaseinline
GetGroundPosition() constCharacterBaseinline
GetGroundState() constCharacterBaseinline
GetGroundSubShapeID() constCharacterBaseinline
GetGroundUserData() constCharacterBaseinline
GetGroundVelocity() constCharacterBaseinline
GetHitReductionCosMaxAngle() constCharacterVirtualinline
GetInnerBodyID() constCharacterVirtualinline
GetLinearVelocity() constCharacterVirtualinline
GetListener() constCharacterVirtualinline
GetMass() constCharacterVirtualinline
GetMaxHitsExceeded() constCharacterVirtualinline
GetMaxNumHits() constCharacterVirtualinline
GetMaxStrength() constCharacterVirtualinline
GetPenetrationRecoverySpeed() constCharacterVirtualinline
GetPosition() constCharacterVirtualinline
GetRefCount() constRefTarget< CharacterBase >inline
GetRotation() constCharacterVirtualinline
GetShape() constCharacterBaseinline
GetShapeOffset() constCharacterVirtualinline
GetTransformedShape() constCharacterVirtualinline
GetUp() constCharacterBaseinline
GetUserData() constCharacterVirtualinline
GetWorldTransform() constCharacterVirtualinline
HasCollidedWith(const BodyID &inBody) constCharacterVirtualinline
HasCollidedWith(const CharacterVirtual *inCharacter) constCharacterVirtualinline
IsSlopeTooSteep(Vec3Arg inNormal) constCharacterBaseinline
IsSupported() constCharacterBaseinline
mCosMaxSlopeAngleCharacterBaseprotected
mGroundBodyIDCharacterBaseprotected
mGroundBodySubShapeIDCharacterBaseprotected
mGroundMaterialCharacterBaseprotected
mGroundNormalCharacterBaseprotected
mGroundPositionCharacterBaseprotected
mGroundStateCharacterBaseprotected
mGroundUserDataCharacterBaseprotected
mGroundVelocityCharacterBaseprotected
mRefCountRefTarget< CharacterBase >mutableprotected
mShapeCharacterBaseprotected
mSupportingVolumeCharacterBaseprotected
mSystemCharacterBaseprotected
mUpCharacterBaseprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< CharacterBase >::operator=(const RefTarget &)RefTarget< CharacterBase >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefreshContacts(const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator)CharacterVirtual
RefTarget()=defaultRefTarget< CharacterBase >inline
RefTarget(const RefTarget &)RefTarget< CharacterBase >inline
Release() constRefTarget< CharacterBase >inline
RestoreState(StateRecorder &inStream) overrideCharacterVirtualvirtual
SaveState(StateRecorder &inStream) const overrideCharacterVirtualvirtual
sDrawConstraintsCharacterVirtualinlinestatic
sDrawStickToFloorCharacterVirtualinlinestatic
sDrawWalkStairsCharacterVirtualinlinestatic
SetCharacterVsCharacterCollision(CharacterVsCharacterCollision *inCharacterVsCharacterCollision)CharacterVirtualinline
SetEmbedded() constRefTarget< CharacterBase >inline
SetEnhancedInternalEdgeRemoval(bool inApply)CharacterVirtualinline
SetHitReductionCosMaxAngle(float inCosMaxAngle)CharacterVirtualinline
SetInnerBodyShape(const Shape *inShape)CharacterVirtual
SetLinearVelocity(Vec3Arg inLinearVelocity)CharacterVirtualinline
SetListener(CharacterContactListener *inListener)CharacterVirtualinline
SetMass(float inMass)CharacterVirtualinline
SetMaxNumHits(uint inMaxHits)CharacterVirtualinline
SetMaxSlopeAngle(float inMaxSlopeAngle)CharacterBaseinline
SetMaxStrength(float inMaxStrength)CharacterVirtualinline
SetPenetrationRecoverySpeed(float inSpeed)CharacterVirtualinline
SetPosition(RVec3Arg inPosition)CharacterVirtualinline
SetRotation(QuatArg inRotation)CharacterVirtualinline
SetShape(const Shape *inShape, float inMaxPenetrationDepth, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator)CharacterVirtual
SetShapeOffset(Vec3Arg inShapeOffset)CharacterVirtualinline
SetUp(Vec3Arg inUp)CharacterBaseinline
SetUserData(uint64 inUserData)CharacterVirtual
sInternalGetRefCountOffset()RefTarget< CharacterBase >inlinestatic
StickToFloor(Vec3Arg inStepDown, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator)CharacterVirtual
sToString(EGroundState inState)CharacterBasestatic
TempContactList typedefCharacterVirtual
Update(float inDeltaTime, Vec3Arg inGravity, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator)CharacterVirtual
UpdateGroundVelocity()CharacterVirtual
WalkStairs(float inDeltaTime, Vec3Arg inStepUp, Vec3Arg inStepForward, Vec3Arg inStepForwardTest, Vec3Arg inStepDownExtra, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator)CharacterVirtual
~CharacterBase()=defaultCharacterBasevirtual
~CharacterVirtual() overrideCharacterVirtualvirtual
~RefTarget()RefTarget< CharacterBase >inline
+
+ + + + diff --git a/class_character_virtual.html b/class_character_virtual.html new file mode 100644 index 000000000..dfd3f0005 --- /dev/null +++ b/class_character_virtual.html @@ -0,0 +1,2276 @@ + + + + + + + +Jolt Physics: CharacterVirtual Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CharacterVirtual Class Reference
+
+
+ +

#include <CharacterVirtual.h>

+
+Inheritance diagram for CharacterVirtual:
+
+
+ + +CharacterBase +RefTarget< CharacterBase > +NonCopyable + +
+ + + + + + + +

+Classes

struct  Contact
 
struct  ExtendedUpdateSettings
 Settings struct with settings for ExtendedUpdate. More...
 
+ + + + + + + + +

+Public Types

using TempContactList = Array< Contact, STLTempAllocator< Contact > >
 
using ContactList = Array< Contact >
 
- Public Types inherited from CharacterBase
enum class  EGroundState { OnGround +, OnSteepGround +, NotSupported +, InAir + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE CharacterVirtual (const CharacterVirtualSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, uint64 inUserData, PhysicsSystem *inSystem)
 
 CharacterVirtual (const CharacterVirtualSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, PhysicsSystem *inSystem)
 Constructor without user data.
 
virtual ~CharacterVirtual () override
 Destructor.
 
void SetListener (CharacterContactListener *inListener)
 Set the contact listener.
 
CharacterContactListenerGetListener () const
 Get the current contact listener.
 
void SetCharacterVsCharacterCollision (CharacterVsCharacterCollision *inCharacterVsCharacterCollision)
 Set the character vs character collision interface.
 
Vec3 GetLinearVelocity () const
 Get the linear velocity of the character (m / s)
 
void SetLinearVelocity (Vec3Arg inLinearVelocity)
 Set the linear velocity of the character (m / s)
 
RVec3 GetPosition () const
 Get the position of the character.
 
void SetPosition (RVec3Arg inPosition)
 Set the position of the character.
 
Quat GetRotation () const
 Get the rotation of the character.
 
void SetRotation (QuatArg inRotation)
 Set the rotation of the character.
 
RVec3 GetCenterOfMassPosition () const
 
RMat44 GetWorldTransform () const
 Calculate the world transform of the character.
 
RMat44 GetCenterOfMassTransform () const
 Calculates the transform for this character's center of mass.
 
float GetMass () const
 Character mass (kg)
 
void SetMass (float inMass)
 
float GetMaxStrength () const
 Maximum force with which the character can push other bodies (N)
 
void SetMaxStrength (float inMaxStrength)
 
float GetPenetrationRecoverySpeed () const
 This value governs how fast a penetration will be resolved, 0 = nothing is resolved, 1 = everything in one update.
 
void SetPenetrationRecoverySpeed (float inSpeed)
 
bool GetEnhancedInternalEdgeRemoval () const
 Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.
 
void SetEnhancedInternalEdgeRemoval (bool inApply)
 
float GetCharacterPadding () const
 Character padding.
 
uint GetMaxNumHits () const
 Max num hits to collect in order to avoid excess of contact points collection.
 
void SetMaxNumHits (uint inMaxHits)
 
float GetHitReductionCosMaxAngle () const
 Cos(angle) where angle is the maximum angle between two hits contact normals that are allowed to be merged during hit reduction. Default is around 2.5 degrees. Set to -1 to turn off.
 
void SetHitReductionCosMaxAngle (float inCosMaxAngle)
 
bool GetMaxHitsExceeded () const
 
Vec3 GetShapeOffset () const
 An extra offset applied to the shape in local space. This allows applying an extra offset to the shape in local space. Note that setting it on the fly can cause the shape to teleport into collision.
 
void SetShapeOffset (Vec3Arg inShapeOffset)
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
BodyID GetInnerBodyID () const
 Optional inner rigid body that proxies the character in the world. Can be used to update body properties.
 
Vec3 CancelVelocityTowardsSteepSlopes (Vec3Arg inDesiredVelocity) const
 
void Update (float inDeltaTime, Vec3Arg inGravity, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator)
 
bool CanWalkStairs (Vec3Arg inLinearVelocity) const
 
bool WalkStairs (float inDeltaTime, Vec3Arg inStepUp, Vec3Arg inStepForward, Vec3Arg inStepForwardTest, Vec3Arg inStepDownExtra, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator)
 
bool StickToFloor (Vec3Arg inStepDown, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator)
 
void ExtendedUpdate (float inDeltaTime, Vec3Arg inGravity, const ExtendedUpdateSettings &inSettings, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator)
 
void RefreshContacts (const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator)
 This function can be used after a character has teleported to determine the new contacts with the world.
 
void UpdateGroundVelocity ()
 
bool SetShape (const Shape *inShape, float inMaxPenetrationDepth, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter, TempAllocator &inAllocator)
 
void SetInnerBodyShape (const Shape *inShape)
 Updates the shape of the inner rigid body. Should be called after a successful call to SetShape.
 
TransformedShape GetTransformedShape () const
 Get the transformed shape that represents the volume of the character, can be used for collision checks.
 
void CheckCollision (RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inMovementDirection, float inMaxSeparationDistance, const Shape *inShape, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter, const BodyFilter &inBodyFilter, const ShapeFilter &inShapeFilter) const
 Get all contacts for the character at a particular location. When colliding with another character virtual, this pointer will be provided through CollideShapeCollector::SetUserContext before adding a hit.
 
virtual void SaveState (StateRecorder &inStream) const override
 
virtual void RestoreState (StateRecorder &inStream) override
 
const ContactListGetActiveContacts () const
 Access to the internal list of contacts that the character has found.
 
bool HasCollidedWith (const BodyID &inBody) const
 Check if the character is currently in contact with or has collided with another body in the last time step.
 
bool HasCollidedWith (const CharacterVirtual *inCharacter) const
 Check if the character is currently in contact with or has collided with another character in the last time step.
 
- Public Member Functions inherited from CharacterBase
JPH_OVERRIDE_NEW_DELETE CharacterBase (const CharacterBaseSettings *inSettings, PhysicsSystem *inSystem)
 Constructor.
 
virtual ~CharacterBase ()=default
 Destructor.
 
void SetMaxSlopeAngle (float inMaxSlopeAngle)
 Set the maximum angle of slope that character can still walk on (radians)
 
float GetCosMaxSlopeAngle () const
 
void SetUp (Vec3Arg inUp)
 Set the up vector for the character.
 
Vec3 GetUp () const
 
bool IsSlopeTooSteep (Vec3Arg inNormal) const
 Check if the normal of the ground surface is too steep to walk on.
 
const ShapeGetShape () const
 Get the current shape that the character is using.
 
EGroundState GetGroundState () const
 Current ground state.
 
bool IsSupported () const
 Returns true if the player is supported by normal or steep ground.
 
RVec3 GetGroundPosition () const
 Get the contact point with the ground.
 
Vec3 GetGroundNormal () const
 Get the contact normal with the ground.
 
Vec3 GetGroundVelocity () const
 Velocity in world space of ground.
 
const PhysicsMaterialGetGroundMaterial () const
 Material that the character is standing on.
 
BodyID GetGroundBodyID () const
 BodyID of the object the character is standing on. Note may have been removed!
 
SubShapeID GetGroundSubShapeID () const
 Sub part of the body that we're standing on.
 
uint64 GetGroundUserData () const
 User data value of the body that we're standing on.
 
- Public Member Functions inherited from RefTarget< CharacterBase >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + +

+Static Public Attributes

static bool sDrawConstraints = false
 Draw the current state of the constraints for iteration 0 when creating them.
 
static bool sDrawWalkStairs = false
 Draw the state of the walk stairs algorithm.
 
static bool sDrawStickToFloor = false
 Draw the state of the stick to floor algorithm.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from CharacterBase
static const char * sToString (EGroundState inState)
 Debug function to convert enum values to string.
 
- Static Public Member Functions inherited from RefTarget< CharacterBase >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from CharacterBase
PhysicsSystemmSystem
 
RefConst< ShapemShape
 
Vec3 mUp
 
Plane mSupportingVolume
 
float mCosMaxSlopeAngle
 
EGroundState mGroundState = EGroundState::InAir
 
BodyID mGroundBodyID
 
SubShapeID mGroundBodySubShapeID
 
RVec3 mGroundPosition = RVec3::sZero()
 
Vec3 mGroundNormal = Vec3::sZero()
 
Vec3 mGroundVelocity = Vec3::sZero()
 
RefConst< PhysicsMaterialmGroundMaterial = PhysicsMaterial::sDefault
 
uint64 mGroundUserData = 0
 
- Protected Attributes inherited from RefTarget< CharacterBase >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from CharacterBase
static constexpr float cNoMaxSlopeAngle = 0.9999f
 
- Static Protected Attributes inherited from RefTarget< CharacterBase >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Runtime character object. This object usually represents the player. Contrary to the Character class it doesn't use a rigid body but moves doing collision checks only (hence the name virtual). The advantage of this is that you can determine when the character moves in the frame (usually this has to happen at a very particular point in the frame) but the downside is that other objects don't see this virtual character. In order to make this work it is recommended to pair a CharacterVirtual with a Character that moves along. This Character should be keyframed (or at least have no gravity) and move along with the CharacterVirtual so that other rigid bodies can collide with it.

+

Member Typedef Documentation

+ +

◆ ContactList

+ +
+
+ +
+
+ +

◆ TempContactList

+ + +

Constructor & Destructor Documentation

+ +

◆ CharacterVirtual() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CharacterVirtual::CharacterVirtual (const CharacterVirtualSettingsinSettings,
RVec3Arg inPosition,
QuatArg inRotation,
uint64 inUserData,
PhysicsSysteminSystem 
)
+
+

Constructor

Parameters
+ + + + + + +
inSettingsThe settings for the character
inPositionInitial position for the character
inRotationInitial rotation for the character (usually only around the up-axis)
inUserDataApplication specific value
inSystemPhysics system that this character will be added to
+
+
+ +
+
+ +

◆ CharacterVirtual() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CharacterVirtual::CharacterVirtual (const CharacterVirtualSettingsinSettings,
RVec3Arg inPosition,
QuatArg inRotation,
PhysicsSysteminSystem 
)
+
+inline
+
+ +

Constructor without user data.

+ +
+
+ +

◆ ~CharacterVirtual()

+ +
+
+ + + + + +
+ + + + + + + +
CharacterVirtual::~CharacterVirtual ()
+
+overridevirtual
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ CancelVelocityTowardsSteepSlopes()

+ +
+
+ + + + + + + + +
Vec3 CharacterVirtual::CancelVelocityTowardsSteepSlopes (Vec3Arg inDesiredVelocity) const
+
+

This function can be called prior to calling Update() to convert a desired velocity into a velocity that won't make the character move further onto steep slopes. This velocity can then be set on the character using SetLinearVelocity()

Parameters
+ + +
inDesiredVelocityVelocity to clamp against steep walls
+
+
+
Returns
A new velocity vector that won't make the character move up steep slopes
+ +
+
+ +

◆ CanWalkStairs()

+ +
+
+ + + + + + + + +
bool CharacterVirtual::CanWalkStairs (Vec3Arg inLinearVelocity) const
+
+

This function will return true if the character has moved into a slope that is too steep (e.g. a vertical wall). You would call WalkStairs to attempt to step up stairs.

Parameters
+ + +
inLinearVelocityThe linear velocity that the player desired. This is used to determine if we're pushing into a step.
+
+
+ +
+
+ +

◆ CheckCollision()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CharacterVirtual::CheckCollision (RVec3Arg inPosition,
QuatArg inRotation,
Vec3Arg inMovementDirection,
float inMaxSeparationDistance,
const ShapeinShape,
RVec3Arg inBaseOffset,
CollideShapeCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter,
const BodyFilterinBodyFilter,
const ShapeFilterinShapeFilter 
) const
+
+ +

Get all contacts for the character at a particular location. When colliding with another character virtual, this pointer will be provided through CollideShapeCollector::SetUserContext before adding a hit.

+
Parameters
+ + + + + + + + + + + + +
inPositionPosition to test, note that this position will be corrected for the character padding.
inRotationRotation at which to test the shape.
inMovementDirectionA hint in which direction the character is moving, will be used to calculate a proper normal.
inMaxSeparationDistanceHow much distance around the character you want to report contacts in (can be 0 to match the character exactly).
inShapeShape to test collision with.
inBaseOffsetAll hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. GetPosition() since floats are most accurate near the origin
ioCollectorCollision collector that receives the collision results.
inBroadPhaseLayerFilterFilter that is used to check if the character collides with something in the broadphase.
inObjectLayerFilterFilter that is used to check if a character collides with a layer.
inBodyFilterFilter that is used to check if a character collides with a body.
inShapeFilterFilter that is used to check if a character collides with a subshape.
+
+
+ +
+
+ +

◆ ExtendedUpdate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CharacterVirtual::ExtendedUpdate (float inDeltaTime,
Vec3Arg inGravity,
const ExtendedUpdateSettingsinSettings,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter,
const BodyFilterinBodyFilter,
const ShapeFilterinShapeFilter,
TempAllocatorinAllocator 
)
+
+

This function combines Update, StickToFloor and WalkStairs. This function serves as an example of how these functions could be combined. Before calling, call SetLinearVelocity to update the horizontal/vertical speed of the character, typically this is:

    +
  • When on OnGround and not moving away from ground: velocity = GetGroundVelocity() + horizontal speed as input by player + optional vertical jump velocity + delta time * gravity
  • +
  • Else: velocity = current vertical velocity + horizontal speed as input by player + delta time * gravity
    Parameters
    + + + + + + + + + +
    inDeltaTimeTime step to simulate.
    inGravityGravity vector (m/s^2). This gravity vector is only used when the character is standing on top of another object to apply downward force.
    inSettingsA structure containing settings for the algorithm.
    inBroadPhaseLayerFilterFilter that is used to check if the character collides with something in the broadphase.
    inObjectLayerFilterFilter that is used to check if a character collides with a layer.
    inBodyFilterFilter that is used to check if a character collides with a body.
    inShapeFilterFilter that is used to check if a character collides with a subshape.
    inAllocatorAn allocator for temporary allocations. All memory will be freed by the time this function returns.
    +
    +
    +
  • +
+ +
+
+ +

◆ GetActiveContacts()

+ +
+
+ + + + + +
+ + + + + + + +
const ContactList & CharacterVirtual::GetActiveContacts () const
+
+inline
+
+ +

Access to the internal list of contacts that the character has found.

+ +
+
+ +

◆ GetCenterOfMassPosition()

+ +
+
+ + + + + +
+ + + + + + + +
RVec3 CharacterVirtual::GetCenterOfMassPosition () const
+
+inline
+
+ +
+
+ +

◆ GetCenterOfMassTransform()

+ +
+
+ + + + + +
+ + + + + + + +
RMat44 CharacterVirtual::GetCenterOfMassTransform () const
+
+inline
+
+ +

Calculates the transform for this character's center of mass.

+ +
+
+ +

◆ GetCharacterPadding()

+ +
+
+ + + + + +
+ + + + + + + +
float CharacterVirtual::GetCharacterPadding () const
+
+inline
+
+ +

Character padding.

+ +
+
+ +

◆ GetEnhancedInternalEdgeRemoval()

+ +
+
+ + + + + +
+ + + + + + + +
bool CharacterVirtual::GetEnhancedInternalEdgeRemoval () const
+
+inline
+
+ +

Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.

+ +
+
+ +

◆ GetHitReductionCosMaxAngle()

+ +
+
+ + + + + +
+ + + + + + + +
float CharacterVirtual::GetHitReductionCosMaxAngle () const
+
+inline
+
+ +

Cos(angle) where angle is the maximum angle between two hits contact normals that are allowed to be merged during hit reduction. Default is around 2.5 degrees. Set to -1 to turn off.

+ +
+
+ +

◆ GetInnerBodyID()

+ +
+
+ + + + + +
+ + + + + + + +
BodyID CharacterVirtual::GetInnerBodyID () const
+
+inline
+
+ +

Optional inner rigid body that proxies the character in the world. Can be used to update body properties.

+ +
+
+ +

◆ GetLinearVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 CharacterVirtual::GetLinearVelocity () const
+
+inline
+
+ +

Get the linear velocity of the character (m / s)

+ +
+
+ +

◆ GetListener()

+ +
+
+ + + + + +
+ + + + + + + +
CharacterContactListener * CharacterVirtual::GetListener () const
+
+inline
+
+ +

Get the current contact listener.

+ +
+
+ +

◆ GetMass()

+ +
+
+ + + + + +
+ + + + + + + +
float CharacterVirtual::GetMass () const
+
+inline
+
+ +

Character mass (kg)

+ +
+
+ +

◆ GetMaxHitsExceeded()

+ +
+
+ + + + + +
+ + + + + + + +
bool CharacterVirtual::GetMaxHitsExceeded () const
+
+inline
+
+

Returns if we exceeded the maximum number of hits during the last collision check and had to discard hits based on distance. This can be used to find areas that have too complex geometry for the character to navigate properly. To solve you can either increase the max number of hits or simplify the geometry. Note that the character simulation will try to do its best to select the most relevant contacts to avoid the character from getting stuck.

+ +
+
+ +

◆ GetMaxNumHits()

+ +
+
+ + + + + +
+ + + + + + + +
uint CharacterVirtual::GetMaxNumHits () const
+
+inline
+
+ +

Max num hits to collect in order to avoid excess of contact points collection.

+ +
+
+ +

◆ GetMaxStrength()

+ +
+
+ + + + + +
+ + + + + + + +
float CharacterVirtual::GetMaxStrength () const
+
+inline
+
+ +

Maximum force with which the character can push other bodies (N)

+ +
+
+ +

◆ GetPenetrationRecoverySpeed()

+ +
+
+ + + + + +
+ + + + + + + +
float CharacterVirtual::GetPenetrationRecoverySpeed () const
+
+inline
+
+ +

This value governs how fast a penetration will be resolved, 0 = nothing is resolved, 1 = everything in one update.

+ +
+
+ +

◆ GetPosition()

+ +
+
+ + + + + +
+ + + + + + + +
RVec3 CharacterVirtual::GetPosition () const
+
+inline
+
+ +

Get the position of the character.

+ +
+
+ +

◆ GetRotation()

+ +
+
+ + + + + +
+ + + + + + + +
Quat CharacterVirtual::GetRotation () const
+
+inline
+
+ +

Get the rotation of the character.

+ +
+
+ +

◆ GetShapeOffset()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 CharacterVirtual::GetShapeOffset () const
+
+inline
+
+ +

An extra offset applied to the shape in local space. This allows applying an extra offset to the shape in local space. Note that setting it on the fly can cause the shape to teleport into collision.

+ +
+
+ +

◆ GetTransformedShape()

+ +
+
+ + + + + +
+ + + + + + + +
TransformedShape CharacterVirtual::GetTransformedShape () const
+
+inline
+
+ +

Get the transformed shape that represents the volume of the character, can be used for collision checks.

+ +
+
+ +

◆ GetUserData()

+ +
+
+ + + + + +
+ + + + + + + +
uint64 CharacterVirtual::GetUserData () const
+
+inline
+
+ +

Access to the user data, can be used for anything by the application.

+ +
+
+ +

◆ GetWorldTransform()

+ +
+
+ + + + + +
+ + + + + + + +
RMat44 CharacterVirtual::GetWorldTransform () const
+
+inline
+
+ +

Calculate the world transform of the character.

+ +
+
+ +

◆ HasCollidedWith() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool CharacterVirtual::HasCollidedWith (const BodyIDinBody) const
+
+inline
+
+ +

Check if the character is currently in contact with or has collided with another body in the last time step.

+ +
+
+ +

◆ HasCollidedWith() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool CharacterVirtual::HasCollidedWith (const CharacterVirtualinCharacter) const
+
+inline
+
+ +

Check if the character is currently in contact with or has collided with another character in the last time step.

+ +
+
+ +

◆ RefreshContacts()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CharacterVirtual::RefreshContacts (const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter,
const BodyFilterinBodyFilter,
const ShapeFilterinShapeFilter,
TempAllocatorinAllocator 
)
+
+ +

This function can be used after a character has teleported to determine the new contacts with the world.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Reimplemented from CharacterBase.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Reimplemented from CharacterBase.

+ +
+
+ +

◆ SetCharacterVsCharacterCollision()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SetCharacterVsCharacterCollision (CharacterVsCharacterCollisioninCharacterVsCharacterCollision)
+
+inline
+
+ +

Set the character vs character collision interface.

+ +
+
+ +

◆ SetEnhancedInternalEdgeRemoval()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SetEnhancedInternalEdgeRemoval (bool inApply)
+
+inline
+
+ +
+
+ +

◆ SetHitReductionCosMaxAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SetHitReductionCosMaxAngle (float inCosMaxAngle)
+
+inline
+
+ +
+
+ +

◆ SetInnerBodyShape()

+ +
+
+ + + + + + + + +
void CharacterVirtual::SetInnerBodyShape (const ShapeinShape)
+
+ +

Updates the shape of the inner rigid body. Should be called after a successful call to SetShape.

+ +
+
+ +

◆ SetLinearVelocity()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SetLinearVelocity (Vec3Arg inLinearVelocity)
+
+inline
+
+ +

Set the linear velocity of the character (m / s)

+ +
+
+ +

◆ SetListener()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SetListener (CharacterContactListenerinListener)
+
+inline
+
+ +

Set the contact listener.

+ +
+
+ +

◆ SetMass()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SetMass (float inMass)
+
+inline
+
+ +
+
+ +

◆ SetMaxNumHits()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SetMaxNumHits (uint inMaxHits)
+
+inline
+
+ +
+
+ +

◆ SetMaxStrength()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SetMaxStrength (float inMaxStrength)
+
+inline
+
+ +
+
+ +

◆ SetPenetrationRecoverySpeed()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SetPenetrationRecoverySpeed (float inSpeed)
+
+inline
+
+ +
+
+ +

◆ SetPosition()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SetPosition (RVec3Arg inPosition)
+
+inline
+
+ +

Set the position of the character.

+ +
+
+ +

◆ SetRotation()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SetRotation (QuatArg inRotation)
+
+inline
+
+ +

Set the rotation of the character.

+ +
+
+ +

◆ SetShape()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool CharacterVirtual::SetShape (const ShapeinShape,
float inMaxPenetrationDepth,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter,
const BodyFilterinBodyFilter,
const ShapeFilterinShapeFilter,
TempAllocatorinAllocator 
)
+
+

Switch the shape of the character (e.g. for stance).

Parameters
+ + + + + + + + +
inShapeThe shape to switch to.
inMaxPenetrationDepthWhen inMaxPenetrationDepth is not FLT_MAX, it checks if the new shape collides before switching shape. This is the max penetration we're willing to accept after the switch.
inBroadPhaseLayerFilterFilter that is used to check if the character collides with something in the broadphase.
inObjectLayerFilterFilter that is used to check if a character collides with a layer.
inBodyFilterFilter that is used to check if a character collides with a body.
inShapeFilterFilter that is used to check if a character collides with a subshape.
inAllocatorAn allocator for temporary allocations. All memory will be freed by the time this function returns.
+
+
+
Returns
Returns true if the switch succeeded.
+ +
+
+ +

◆ SetShapeOffset()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVirtual::SetShapeOffset (Vec3Arg inShapeOffset)
+
+inline
+
+ +
+
+ +

◆ SetUserData()

+ +
+
+ + + + + + + + +
void CharacterVirtual::SetUserData (uint64 inUserData)
+
+ +
+
+ +

◆ StickToFloor()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool CharacterVirtual::StickToFloor (Vec3Arg inStepDown,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter,
const BodyFilterinBodyFilter,
const ShapeFilterinShapeFilter,
TempAllocatorinAllocator 
)
+
+

This function can be used to artificially keep the character to the floor. Normally when a character is on a small step and starts moving horizontally, the character will lose contact with the floor because the initial vertical velocity is zero while the horizontal velocity is quite high. To prevent the character from losing contact with the floor, we do an additional collision check downwards and if we find the floor within a certain distance, we project the character onto the floor.

Parameters
+ + + + + + + +
inStepDownMax amount to project the character downwards (if no floor is found within this distance, the function will return false)
inBroadPhaseLayerFilterFilter that is used to check if the character collides with something in the broadphase.
inObjectLayerFilterFilter that is used to check if a character collides with a layer.
inBodyFilterFilter that is used to check if a character collides with a body.
inShapeFilterFilter that is used to check if a character collides with a subshape.
inAllocatorAn allocator for temporary allocations. All memory will be freed by the time this function returns.
+
+
+
Returns
True if the character was successfully projected onto the floor.
+ +
+
+ +

◆ Update()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CharacterVirtual::Update (float inDeltaTime,
Vec3Arg inGravity,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter,
const BodyFilterinBodyFilter,
const ShapeFilterinShapeFilter,
TempAllocatorinAllocator 
)
+
+

This is the main update function. It moves the character according to its current velocity (the character is similar to a kinematic body in the sense that you set the velocity and the character will follow unless collision is blocking the way). Note it's your own responsibility to apply gravity to the character velocity! Different surface materials (like ice) can be emulated by getting the ground material and adjusting the velocity and/or the max slope angle accordingly every frame.

Parameters
+ + + + + + + + +
inDeltaTimeTime step to simulate.
inGravityGravity vector (m/s^2). This gravity vector is only used when the character is standing on top of another object to apply downward force.
inBroadPhaseLayerFilterFilter that is used to check if the character collides with something in the broadphase.
inObjectLayerFilterFilter that is used to check if a character collides with a layer.
inBodyFilterFilter that is used to check if a character collides with a body.
inShapeFilterFilter that is used to check if a character collides with a subshape.
inAllocatorAn allocator for temporary allocations. All memory will be freed by the time this function returns.
+
+
+ +
+
+ +

◆ UpdateGroundVelocity()

+ +
+
+ + + + + + + +
void CharacterVirtual::UpdateGroundVelocity ()
+
+

Use the ground body ID to get an updated estimate of the ground velocity. This function can be used if the ground body has moved / changed velocity and you want a new estimate of the ground velocity. It will not perform collision detection, so is less accurate than RefreshContacts but a lot faster.

+ +
+
+ +

◆ WalkStairs()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool CharacterVirtual::WalkStairs (float inDeltaTime,
Vec3Arg inStepUp,
Vec3Arg inStepForward,
Vec3Arg inStepForwardTest,
Vec3Arg inStepDownExtra,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter,
const ObjectLayerFilterinObjectLayerFilter,
const BodyFilterinBodyFilter,
const ShapeFilterinShapeFilter,
TempAllocatorinAllocator 
)
+
+

When stair walking is needed, you can call the WalkStairs function to cast up, forward and down again to try to find a valid position

Parameters
+ + + + + + + + + + + +
inDeltaTimeTime step to simulate.
inStepUpThe direction and distance to step up (this corresponds to the max step height)
inStepForwardThe direction and distance to step forward after the step up
inStepForwardTestWhen running at a high frequency, inStepForward can be very small and it's likely that you hit the side of the stairs on the way down. This could produce a normal that violates the max slope angle. If this happens, we test again using this distance from the up position to see if we find a valid slope.
inStepDownExtraAn additional translation that is added when stepping down at the end. Allows you to step further down than up. Set to zero if you don't want this. Should be in the opposite direction of up.
inBroadPhaseLayerFilterFilter that is used to check if the character collides with something in the broadphase.
inObjectLayerFilterFilter that is used to check if a character collides with a layer.
inBodyFilterFilter that is used to check if a character collides with a body.
inShapeFilterFilter that is used to check if a character collides with a subshape.
inAllocatorAn allocator for temporary allocations. All memory will be freed by the time this function returns.
+
+
+
Returns
true if the stair walk was successful
+ +
+
+

Member Data Documentation

+ +

◆ sDrawConstraints

+ +
+
+ + + + + +
+ + + + +
bool CharacterVirtual::sDrawConstraints = false
+
+inlinestatic
+
+ +

Draw the current state of the constraints for iteration 0 when creating them.

+ +
+
+ +

◆ sDrawStickToFloor

+ +
+
+ + + + + +
+ + + + +
bool CharacterVirtual::sDrawStickToFloor = false
+
+inlinestatic
+
+ +

Draw the state of the stick to floor algorithm.

+ +
+
+ +

◆ sDrawWalkStairs

+ +
+
+ + + + + +
+ + + + +
bool CharacterVirtual::sDrawWalkStairs = false
+
+inlinestatic
+
+ +

Draw the state of the walk stairs algorithm.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_character_virtual.js b/class_character_virtual.js new file mode 100644 index 000000000..5b9ac141d --- /dev/null +++ b/class_character_virtual.js @@ -0,0 +1,58 @@ +var class_character_virtual = +[ + [ "Contact", "struct_character_virtual_1_1_contact.html", "struct_character_virtual_1_1_contact" ], + [ "ExtendedUpdateSettings", "struct_character_virtual_1_1_extended_update_settings.html", "struct_character_virtual_1_1_extended_update_settings" ], + [ "ContactList", "class_character_virtual.html#a8f4e50aacdfa032e1c4ce049c06703c0", null ], + [ "TempContactList", "class_character_virtual.html#acbd32e2c0649cdf4f15677ad0d98a8e9", null ], + [ "CharacterVirtual", "class_character_virtual.html#a13f67f142bec57745727eb33250c1e01", null ], + [ "CharacterVirtual", "class_character_virtual.html#ab1970bba46b2522707111bec95fa9e07", null ], + [ "~CharacterVirtual", "class_character_virtual.html#ad932d26de4902065092ee3c6c30bc9de", null ], + [ "CancelVelocityTowardsSteepSlopes", "class_character_virtual.html#a1e8c56bb848a852be4e63806fe6a74c6", null ], + [ "CanWalkStairs", "class_character_virtual.html#af44f8072c8e2687bbc20452b608fc5fe", null ], + [ "CheckCollision", "class_character_virtual.html#ae70222c609c35c1acd94b9fc24e03681", null ], + [ "ExtendedUpdate", "class_character_virtual.html#ae03c43c12e8eb6496b8c8044c70b591f", null ], + [ "GetActiveContacts", "class_character_virtual.html#a2fcecdf5b3e0f584f2bb7ec5a128dbe6", null ], + [ "GetCenterOfMassPosition", "class_character_virtual.html#a44dfb8aa6d88860b6a4ff094d211871e", null ], + [ "GetCenterOfMassTransform", "class_character_virtual.html#aad9788892410b982d43bbd34ef8a016c", null ], + [ "GetCharacterPadding", "class_character_virtual.html#a643ed04caa01ba9e4e4fc9d5058dc3d7", null ], + [ "GetEnhancedInternalEdgeRemoval", "class_character_virtual.html#a9e39a28dbce389399848347dbf95956a", null ], + [ "GetHitReductionCosMaxAngle", "class_character_virtual.html#ae8dcc6de2efd2ad646722e92ed1ba38a", null ], + [ "GetInnerBodyID", "class_character_virtual.html#a7d6637e5d42ab04152b831b609014af1", null ], + [ "GetLinearVelocity", "class_character_virtual.html#a9f8aca4dbbb9c926e52ca8b7337c4c71", null ], + [ "GetListener", "class_character_virtual.html#aacf19c0b42216d6dc497c20556b642e7", null ], + [ "GetMass", "class_character_virtual.html#a1ae032d5f31f955686e3c519abfaa1a4", null ], + [ "GetMaxHitsExceeded", "class_character_virtual.html#a4bcaf2938288d8a8cbf907f74851b109", null ], + [ "GetMaxNumHits", "class_character_virtual.html#a6b037237b95355079f9aca7904899004", null ], + [ "GetMaxStrength", "class_character_virtual.html#a6d11baa32abe7ab7f75100daca4fda2c", null ], + [ "GetPenetrationRecoverySpeed", "class_character_virtual.html#a2407cd5fec2965214f0d9c3c27eb47ca", null ], + [ "GetPosition", "class_character_virtual.html#a24f025912ca62c15e830bd6213129d6b", null ], + [ "GetRotation", "class_character_virtual.html#afdec9f01a8b449ba9b29f39c42afe0d8", null ], + [ "GetShapeOffset", "class_character_virtual.html#ad36f1869421eeee298f3230d27841071", null ], + [ "GetTransformedShape", "class_character_virtual.html#a181bbafd30966b7ecc4313283c3a1252", null ], + [ "GetUserData", "class_character_virtual.html#acc49b466797667ae5f4bb1ee44e83b2e", null ], + [ "GetWorldTransform", "class_character_virtual.html#a36a2e0c44e55954fbc62aed4e030ab01", null ], + [ "HasCollidedWith", "class_character_virtual.html#a59a36680856b7f106bbad79345c1525b", null ], + [ "HasCollidedWith", "class_character_virtual.html#adacc8eaa741dfd330fbf2d58fa4b7541", null ], + [ "RefreshContacts", "class_character_virtual.html#a09ecc3efc44b912eca30d9dbc05cc558", null ], + [ "RestoreState", "class_character_virtual.html#a34ce1577ff0641d5a326af721a3c9b71", null ], + [ "SaveState", "class_character_virtual.html#a4eec1547ca605d2556bf781237b40ee7", null ], + [ "SetCharacterVsCharacterCollision", "class_character_virtual.html#a3982b9711188db9d30ee0dab32a81d0b", null ], + [ "SetEnhancedInternalEdgeRemoval", "class_character_virtual.html#a1596c6b7df4854e170f59416c67aeabc", null ], + [ "SetHitReductionCosMaxAngle", "class_character_virtual.html#ac74cd57b392ad9570e419251ce2d70c8", null ], + [ "SetInnerBodyShape", "class_character_virtual.html#af94e73cd650ddac2b76b55d18dca302e", null ], + [ "SetLinearVelocity", "class_character_virtual.html#a25da7eb8e9ff5316e357cbf59027b57e", null ], + [ "SetListener", "class_character_virtual.html#af7bfe39cc6f67eeb4cd8d4d453d8b179", null ], + [ "SetMass", "class_character_virtual.html#a93a6110e80e08ef092d7f010a45e3bb5", null ], + [ "SetMaxNumHits", "class_character_virtual.html#a683ab8265d9c39c512864b8041c675aa", null ], + [ "SetMaxStrength", "class_character_virtual.html#a5e3e1a90e94534669194d929a4f15700", null ], + [ "SetPenetrationRecoverySpeed", "class_character_virtual.html#ad767e40abd649085a9b2d8df813dbc8c", null ], + [ "SetPosition", "class_character_virtual.html#af3622b341d017712981d6d26de99fe5c", null ], + [ "SetRotation", "class_character_virtual.html#ac0b74d1e4ec29a6a4853bc8cbb72578d", null ], + [ "SetShape", "class_character_virtual.html#a8149fcb7a9f932dd5154e23588e20763", null ], + [ "SetShapeOffset", "class_character_virtual.html#a6fd639e0938a0c068ff683a33ee613c9", null ], + [ "SetUserData", "class_character_virtual.html#a06b2c2e7446c66a85bc7314f5b4fd71e", null ], + [ "StickToFloor", "class_character_virtual.html#a994b7c0aa38c4930117253eafdd9c9b9", null ], + [ "Update", "class_character_virtual.html#ab9ce165035699a776a9d0b3e570def01", null ], + [ "UpdateGroundVelocity", "class_character_virtual.html#a5817d937424e252d406f71f0ba8771da", null ], + [ "WalkStairs", "class_character_virtual.html#a7b92d577e9abb6193f971e26df9964f7", null ] +]; \ No newline at end of file diff --git a/class_character_virtual.png b/class_character_virtual.png new file mode 100644 index 000000000..a0bed7052 Binary files /dev/null and b/class_character_virtual.png differ diff --git a/class_character_virtual_settings-members.html b/class_character_virtual_settings-members.html new file mode 100644 index 000000000..20877aa74 --- /dev/null +++ b/class_character_virtual_settings-members.html @@ -0,0 +1,151 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterVirtualSettings Member List
+
+
+ +

This is the complete list of members for CharacterVirtualSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< CharacterBaseSettings >inline
cEmbeddedRefTarget< CharacterBaseSettings >protectedstatic
CharacterBaseSettings()=defaultCharacterBaseSettings
CharacterBaseSettings(const CharacterBaseSettings &inSettings)=defaultCharacterBaseSettings
GetRefCount() constRefTarget< CharacterBaseSettings >inline
mBackFaceModeCharacterVirtualSettings
mCharacterPaddingCharacterVirtualSettings
mCollisionToleranceCharacterVirtualSettings
mEnhancedInternalEdgeRemovalCharacterBaseSettings
mHitReductionCosMaxAngleCharacterVirtualSettings
mInnerBodyLayerCharacterVirtualSettings
mInnerBodyShapeCharacterVirtualSettings
mMassCharacterVirtualSettings
mMaxCollisionIterationsCharacterVirtualSettings
mMaxConstraintIterationsCharacterVirtualSettings
mMaxNumHitsCharacterVirtualSettings
mMaxSlopeAngleCharacterBaseSettings
mMaxStrengthCharacterVirtualSettings
mMinTimeRemainingCharacterVirtualSettings
mPenetrationRecoverySpeedCharacterVirtualSettings
mPredictiveContactDistanceCharacterVirtualSettings
mRefCountRefTarget< CharacterBaseSettings >mutableprotected
mShapeCharacterBaseSettings
mShapeOffsetCharacterVirtualSettings
mSupportingVolumeCharacterBaseSettings
mUpCharacterBaseSettings
operator=(const CharacterBaseSettings &inSettings)=defaultCharacterBaseSettings
RefTarget< CharacterBaseSettings >::operator=(const RefTarget &)RefTarget< CharacterBaseSettings >inline
RefTarget()=defaultRefTarget< CharacterBaseSettings >inline
RefTarget(const RefTarget &)RefTarget< CharacterBaseSettings >inline
Release() constRefTarget< CharacterBaseSettings >inline
SetEmbedded() constRefTarget< CharacterBaseSettings >inline
sInternalGetRefCountOffset()RefTarget< CharacterBaseSettings >inlinestatic
~CharacterBaseSettings()=defaultCharacterBaseSettingsvirtual
~RefTarget()RefTarget< CharacterBaseSettings >inline
+
+ + + + diff --git a/class_character_virtual_settings.html b/class_character_virtual_settings.html new file mode 100644 index 000000000..ec15b5d87 --- /dev/null +++ b/class_character_virtual_settings.html @@ -0,0 +1,492 @@ + + + + + + + +Jolt Physics: CharacterVirtualSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CharacterVirtualSettings Class Reference
+
+
+ +

Contains the configuration of a character. + More...

+ +

#include <CharacterVirtual.h>

+
+Inheritance diagram for CharacterVirtualSettings:
+
+
+ + +CharacterBaseSettings +RefTarget< CharacterBaseSettings > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

JPH_OVERRIDE_NEW_DELETE float mMass = 70.0f
 Character mass (kg). Used to push down objects with gravity when the character is standing on top.
 
float mMaxStrength = 100.0f
 Maximum force with which the character can push other bodies (N).
 
Vec3 mShapeOffset = Vec3::sZero()
 An extra offset applied to the shape in local space. This allows applying an extra offset to the shape in local space.
 
Movement settings
EBackFaceMode mBackFaceMode = EBackFaceMode::CollideWithBackFaces
 When colliding with back faces, the character will not be able to move through back facing triangles. Use this if you have triangles that need to collide on both sides.
 
float mPredictiveContactDistance = 0.1f
 How far to scan outside of the shape for predictive contacts. A value of 0 will most likely cause the character to get stuck as it cannot properly calculate a sliding direction anymore. A value that's too high will cause ghost collisions.
 
uint mMaxCollisionIterations = 5
 Max amount of collision loops.
 
uint mMaxConstraintIterations = 15
 How often to try stepping in the constraint solving.
 
float mMinTimeRemaining = 1.0e-4f
 Early out condition: If this much time is left to simulate we are done.
 
float mCollisionTolerance = 1.0e-3f
 How far we're willing to penetrate geometry.
 
float mCharacterPadding = 0.02f
 How far we try to stay away from the geometry, this ensures that the sweep will hit as little as possible lowering the collision cost and reducing the risk of getting stuck.
 
uint mMaxNumHits = 256
 Max num hits to collect in order to avoid excess of contact points collection.
 
float mHitReductionCosMaxAngle = 0.999f
 Cos(angle) where angle is the maximum angle between two hits contact normals that are allowed to be merged during hit reduction. Default is around 2.5 degrees. Set to -1 to turn off.
 
float mPenetrationRecoverySpeed = 1.0f
 This value governs how fast a penetration will be resolved, 0 = nothing is resolved, 1 = everything in one update.
 
RefConst< ShapemInnerBodyShape
 
ObjectLayer mInnerBodyLayer = 0
 Layer that the inner rigid body will be added to.
 
- Public Attributes inherited from CharacterBaseSettings
Vec3 mUp = Vec3::sAxisY()
 Vector indicating the up direction of the character.
 
Plane mSupportingVolume { Vec3::sAxisY(), -1.0e10f }
 
float mMaxSlopeAngle = DegreesToRadians(50.0f)
 Maximum angle of slope that character can still walk on (radians).
 
bool mEnhancedInternalEdgeRemoval = false
 Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.
 
RefConst< ShapemShape
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from CharacterBaseSettings
JPH_OVERRIDE_NEW_DELETE CharacterBaseSettings ()=default
 Constructor.
 
 CharacterBaseSettings (const CharacterBaseSettings &inSettings)=default
 
CharacterBaseSettingsoperator= (const CharacterBaseSettings &inSettings)=default
 
virtual ~CharacterBaseSettings ()=default
 Virtual destructor.
 
- Public Member Functions inherited from RefTarget< CharacterBaseSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Static Public Member Functions inherited from RefTarget< CharacterBaseSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< CharacterBaseSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< CharacterBaseSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Contains the configuration of a character.

+

Member Data Documentation

+ +

◆ mBackFaceMode

+ +
+
+ + + + +
EBackFaceMode CharacterVirtualSettings::mBackFaceMode = EBackFaceMode::CollideWithBackFaces
+
+ +

When colliding with back faces, the character will not be able to move through back facing triangles. Use this if you have triangles that need to collide on both sides.

+ +
+
+ +

◆ mCharacterPadding

+ +
+
+ + + + +
float CharacterVirtualSettings::mCharacterPadding = 0.02f
+
+ +

How far we try to stay away from the geometry, this ensures that the sweep will hit as little as possible lowering the collision cost and reducing the risk of getting stuck.

+ +
+
+ +

◆ mCollisionTolerance

+ +
+
+ + + + +
float CharacterVirtualSettings::mCollisionTolerance = 1.0e-3f
+
+ +

How far we're willing to penetrate geometry.

+ +
+
+ +

◆ mHitReductionCosMaxAngle

+ +
+
+ + + + +
float CharacterVirtualSettings::mHitReductionCosMaxAngle = 0.999f
+
+ +

Cos(angle) where angle is the maximum angle between two hits contact normals that are allowed to be merged during hit reduction. Default is around 2.5 degrees. Set to -1 to turn off.

+ +
+
+ +

◆ mInnerBodyLayer

+ +
+
+ + + + +
ObjectLayer CharacterVirtualSettings::mInnerBodyLayer = 0
+
+ +

Layer that the inner rigid body will be added to.

+ +
+
+ +

◆ mInnerBodyShape

+ +
+
+ + + + +
RefConst<Shape> CharacterVirtualSettings::mInnerBodyShape
+
+

This character can optionally have an inner rigid body. This rigid body can be used to give the character presence in the world. When set it means that:

+ +
+
+ +

◆ mMass

+ +
+
+ + + + +
JPH_OVERRIDE_NEW_DELETE float CharacterVirtualSettings::mMass = 70.0f
+
+ +

Character mass (kg). Used to push down objects with gravity when the character is standing on top.

+ +
+
+ +

◆ mMaxCollisionIterations

+ +
+
+ + + + +
uint CharacterVirtualSettings::mMaxCollisionIterations = 5
+
+ +

Max amount of collision loops.

+ +
+
+ +

◆ mMaxConstraintIterations

+ +
+
+ + + + +
uint CharacterVirtualSettings::mMaxConstraintIterations = 15
+
+ +

How often to try stepping in the constraint solving.

+ +
+
+ +

◆ mMaxNumHits

+ +
+
+ + + + +
uint CharacterVirtualSettings::mMaxNumHits = 256
+
+ +

Max num hits to collect in order to avoid excess of contact points collection.

+ +
+
+ +

◆ mMaxStrength

+ +
+
+ + + + +
float CharacterVirtualSettings::mMaxStrength = 100.0f
+
+ +

Maximum force with which the character can push other bodies (N).

+ +
+
+ +

◆ mMinTimeRemaining

+ +
+
+ + + + +
float CharacterVirtualSettings::mMinTimeRemaining = 1.0e-4f
+
+ +

Early out condition: If this much time is left to simulate we are done.

+ +
+
+ +

◆ mPenetrationRecoverySpeed

+ +
+
+ + + + +
float CharacterVirtualSettings::mPenetrationRecoverySpeed = 1.0f
+
+ +

This value governs how fast a penetration will be resolved, 0 = nothing is resolved, 1 = everything in one update.

+ +
+
+ +

◆ mPredictiveContactDistance

+ +
+
+ + + + +
float CharacterVirtualSettings::mPredictiveContactDistance = 0.1f
+
+ +

How far to scan outside of the shape for predictive contacts. A value of 0 will most likely cause the character to get stuck as it cannot properly calculate a sliding direction anymore. A value that's too high will cause ghost collisions.

+ +
+
+ +

◆ mShapeOffset

+ +
+
+ + + + +
Vec3 CharacterVirtualSettings::mShapeOffset = Vec3::sZero()
+
+ +

An extra offset applied to the shape in local space. This allows applying an extra offset to the shape in local space.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_character_virtual_settings.js b/class_character_virtual_settings.js new file mode 100644 index 000000000..edced35d9 --- /dev/null +++ b/class_character_virtual_settings.js @@ -0,0 +1,18 @@ +var class_character_virtual_settings = +[ + [ "mBackFaceMode", "class_character_virtual_settings.html#adc60ceaa1f25e2cd6853b319499f82d1", null ], + [ "mCharacterPadding", "class_character_virtual_settings.html#a9799feb816f4df4f956ffed435d18b4c", null ], + [ "mCollisionTolerance", "class_character_virtual_settings.html#ace6da7c342df36edfce5a7aac44b1664", null ], + [ "mHitReductionCosMaxAngle", "class_character_virtual_settings.html#ae797247a9a90a161abd965a8f56ae584", null ], + [ "mInnerBodyLayer", "class_character_virtual_settings.html#a699ed6e9c6b175c50ec3f0a349969904", null ], + [ "mInnerBodyShape", "class_character_virtual_settings.html#a894dfc1bbdcf975b2878430ed7df33ec", null ], + [ "mMass", "class_character_virtual_settings.html#a71a9f1bf58ebf5c2d8b272f62fb7c734", null ], + [ "mMaxCollisionIterations", "class_character_virtual_settings.html#a1ddf59bd95417f3b95341f03ade9812b", null ], + [ "mMaxConstraintIterations", "class_character_virtual_settings.html#a1c5a728c9f0e095f4c76a51e61ff8bb3", null ], + [ "mMaxNumHits", "class_character_virtual_settings.html#afb718ba333f1f915a205d060097f8a81", null ], + [ "mMaxStrength", "class_character_virtual_settings.html#a6187712f620530e0b086a0437690929f", null ], + [ "mMinTimeRemaining", "class_character_virtual_settings.html#a43cabe3e717a0d42ce6ba8383760c20f", null ], + [ "mPenetrationRecoverySpeed", "class_character_virtual_settings.html#a5a58aa76a938c5845f1b375114a4cebb", null ], + [ "mPredictiveContactDistance", "class_character_virtual_settings.html#aeeefd4daed1e249cc0c98126bd8e4007", null ], + [ "mShapeOffset", "class_character_virtual_settings.html#a71029078959636aa6a6bca8ab72f31e3", null ] +]; \ No newline at end of file diff --git a/class_character_virtual_settings.png b/class_character_virtual_settings.png new file mode 100644 index 000000000..cb40d68af Binary files /dev/null and b/class_character_virtual_settings.png differ diff --git a/class_character_vs_character_collision-members.html b/class_character_vs_character_collision-members.html new file mode 100644 index 000000000..23e09d06f --- /dev/null +++ b/class_character_vs_character_collision-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterVsCharacterCollision Member List
+
+
+ +

This is the complete list of members for CharacterVsCharacterCollision, including all inherited members.

+ + + + + + + +
CastCharacter(const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, Vec3Arg inDirection, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector) const =0CharacterVsCharacterCollisionpure virtual
CollideCharacter(const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector) const =0CharacterVsCharacterCollisionpure virtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~CharacterVsCharacterCollision()=defaultCharacterVsCharacterCollisionvirtual
+
+ + + + diff --git a/class_character_vs_character_collision.html b/class_character_vs_character_collision.html new file mode 100644 index 000000000..859ffdb6a --- /dev/null +++ b/class_character_vs_character_collision.html @@ -0,0 +1,317 @@ + + + + + + + +Jolt Physics: CharacterVsCharacterCollision Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CharacterVsCharacterCollision Class Referenceabstract
+
+
+ +

#include <CharacterVirtual.h>

+
+Inheritance diagram for CharacterVsCharacterCollision:
+
+
+ + +NonCopyable +CharacterVsCharacterCollisionSimple + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~CharacterVsCharacterCollision ()=default
 
virtual void CollideCharacter (const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector) const =0
 
virtual void CastCharacter (const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, Vec3Arg inDirection, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector) const =0
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Interface class that allows a CharacterVirtual to check collision with other CharacterVirtual instances. Since CharacterVirtual instances are not registered anywhere, it is up to the application to test collision against relevant characters. The characters could be stored in a tree structure to make this more efficient.

+

Constructor & Destructor Documentation

+ +

◆ ~CharacterVsCharacterCollision()

+ +
+
+ + + + + +
+ + + + + + + +
virtual CharacterVsCharacterCollision::~CharacterVsCharacterCollision ()
+
+virtualdefault
+
+ +
+
+

Member Function Documentation

+ +

◆ CastCharacter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void CharacterVsCharacterCollision::CastCharacter (const CharacterVirtualinCharacter,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inDirection,
const ShapeCastSettingsinShapeCastSettings,
RVec3Arg inBaseOffset,
CastShapeCollectorioCollector 
) const
+
+pure virtual
+
+

Cast a character against other CharacterVirtuals.

Parameters
+ + + + + + + +
inCharacterThe character to cast.
inCenterOfMassTransformCenter of mass transform for this character.
inDirectionDirection and length to cast in.
inShapeCastSettingsSettings for the shape cast.
inBaseOffsetAll hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. GetPosition() since floats are most accurate near the origin
ioCollectorCollision collector that receives the collision results.
+
+
+ +

Implemented in CharacterVsCharacterCollisionSimple.

+ +
+
+ +

◆ CollideCharacter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void CharacterVsCharacterCollision::CollideCharacter (const CharacterVirtualinCharacter,
RMat44Arg inCenterOfMassTransform,
const CollideShapeSettingsinCollideShapeSettings,
RVec3Arg inBaseOffset,
CollideShapeCollectorioCollector 
) const
+
+pure virtual
+
+

Collide a character against other CharacterVirtuals.

Parameters
+ + + + + + +
inCharacterThe character to collide.
inCenterOfMassTransformCenter of mass transform for this character.
inCollideShapeSettingsSettings for the collision check.
inBaseOffsetAll hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. GetPosition() since floats are most accurate near the origin
ioCollectorCollision collector that receives the collision results.
+
+
+ +

Implemented in CharacterVsCharacterCollisionSimple.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_character_vs_character_collision.js b/class_character_vs_character_collision.js new file mode 100644 index 000000000..c9299dc7d --- /dev/null +++ b/class_character_vs_character_collision.js @@ -0,0 +1,6 @@ +var class_character_vs_character_collision = +[ + [ "~CharacterVsCharacterCollision", "class_character_vs_character_collision.html#ac761e9773325df331eb599af2f498525", null ], + [ "CastCharacter", "class_character_vs_character_collision.html#acaecf7e7bdb70d2cade8e585b64a1b82", null ], + [ "CollideCharacter", "class_character_vs_character_collision.html#a1336885e4964801d0812b3089faa674b", null ] +]; \ No newline at end of file diff --git a/class_character_vs_character_collision.png b/class_character_vs_character_collision.png new file mode 100644 index 000000000..ebb94bbff Binary files /dev/null and b/class_character_vs_character_collision.png differ diff --git a/class_character_vs_character_collision_simple-members.html b/class_character_vs_character_collision_simple-members.html new file mode 100644 index 000000000..bf97da5c8 --- /dev/null +++ b/class_character_vs_character_collision_simple-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CharacterVsCharacterCollisionSimple Member List
+
+
+ +

This is the complete list of members for CharacterVsCharacterCollisionSimple, including all inherited members.

+ + + + + + + + + + +
Add(CharacterVirtual *inCharacter)CharacterVsCharacterCollisionSimpleinline
CastCharacter(const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, Vec3Arg inDirection, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector) const overrideCharacterVsCharacterCollisionSimplevirtual
CollideCharacter(const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector) const overrideCharacterVsCharacterCollisionSimplevirtual
mCharactersCharacterVsCharacterCollisionSimple
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Remove(const CharacterVirtual *inCharacter)CharacterVsCharacterCollisionSimple
~CharacterVsCharacterCollision()=defaultCharacterVsCharacterCollisionvirtual
+
+ + + + diff --git a/class_character_vs_character_collision_simple.html b/class_character_vs_character_collision_simple.html new file mode 100644 index 000000000..da9f8862d --- /dev/null +++ b/class_character_vs_character_collision_simple.html @@ -0,0 +1,371 @@ + + + + + + + +Jolt Physics: CharacterVsCharacterCollisionSimple Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CharacterVsCharacterCollisionSimple Class Reference
+
+
+ +

#include <CharacterVirtual.h>

+
+Inheritance diagram for CharacterVsCharacterCollisionSimple:
+
+
+ + +CharacterVsCharacterCollision +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void Add (CharacterVirtual *inCharacter)
 Add a character to the list of characters to check collision against.
 
void Remove (const CharacterVirtual *inCharacter)
 Remove a character from the list of characters to check collision against.
 
virtual void CollideCharacter (const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector) const override
 
virtual void CastCharacter (const CharacterVirtual *inCharacter, RMat44Arg inCenterOfMassTransform, Vec3Arg inDirection, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector) const override
 
- Public Member Functions inherited from CharacterVsCharacterCollision
virtual ~CharacterVsCharacterCollision ()=default
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + +

+Public Attributes

Array< CharacterVirtual * > mCharacters
 The list of characters to check collision against.
 
+

Detailed Description

+

Simple collision checker that loops over all registered characters. Note that this is not thread safe, so make sure that only one CharacterVirtual is checking collision at a time.

+

Member Function Documentation

+ +

◆ Add()

+ +
+
+ + + + + +
+ + + + + + + + +
void CharacterVsCharacterCollisionSimple::Add (CharacterVirtualinCharacter)
+
+inline
+
+ +

Add a character to the list of characters to check collision against.

+ +
+
+ +

◆ CastCharacter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CharacterVsCharacterCollisionSimple::CastCharacter (const CharacterVirtualinCharacter,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inDirection,
const ShapeCastSettingsinShapeCastSettings,
RVec3Arg inBaseOffset,
CastShapeCollectorioCollector 
) const
+
+overridevirtual
+
+

Cast a character against other CharacterVirtuals.

Parameters
+ + + + + + + +
inCharacterThe character to cast.
inCenterOfMassTransformCenter of mass transform for this character.
inDirectionDirection and length to cast in.
inShapeCastSettingsSettings for the shape cast.
inBaseOffsetAll hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. GetPosition() since floats are most accurate near the origin
ioCollectorCollision collector that receives the collision results.
+
+
+ +

Implements CharacterVsCharacterCollision.

+ +
+
+ +

◆ CollideCharacter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CharacterVsCharacterCollisionSimple::CollideCharacter (const CharacterVirtualinCharacter,
RMat44Arg inCenterOfMassTransform,
const CollideShapeSettingsinCollideShapeSettings,
RVec3Arg inBaseOffset,
CollideShapeCollectorioCollector 
) const
+
+overridevirtual
+
+

Collide a character against other CharacterVirtuals.

Parameters
+ + + + + + +
inCharacterThe character to collide.
inCenterOfMassTransformCenter of mass transform for this character.
inCollideShapeSettingsSettings for the collision check.
inBaseOffsetAll hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. GetPosition() since floats are most accurate near the origin
ioCollectorCollision collector that receives the collision results.
+
+
+ +

Implements CharacterVsCharacterCollision.

+ +
+
+ +

◆ Remove()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN void CharacterVsCharacterCollisionSimple::Remove (const CharacterVirtualinCharacter)
+
+ +

Remove a character from the list of characters to check collision against.

+ +
+
+

Member Data Documentation

+ +

◆ mCharacters

+ +
+
+ + + + +
Array<CharacterVirtual *> CharacterVsCharacterCollisionSimple::mCharacters
+
+ +

The list of characters to check collision against.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_character_vs_character_collision_simple.js b/class_character_vs_character_collision_simple.js new file mode 100644 index 000000000..7abe1dad2 --- /dev/null +++ b/class_character_vs_character_collision_simple.js @@ -0,0 +1,8 @@ +var class_character_vs_character_collision_simple = +[ + [ "Add", "class_character_vs_character_collision_simple.html#a1c9a2607b50bd68ced9c7262d01cad67", null ], + [ "CastCharacter", "class_character_vs_character_collision_simple.html#a3b514db9cada6a4fbb66cae3d39201bf", null ], + [ "CollideCharacter", "class_character_vs_character_collision_simple.html#a7785735e8caff3effb04f2325d661d46", null ], + [ "Remove", "class_character_vs_character_collision_simple.html#a63d4e54dee0aca96e4c77e7c78a6b350", null ], + [ "mCharacters", "class_character_vs_character_collision_simple.html#ab7c49c006037265b684bccd7d9b4cd22", null ] +]; \ No newline at end of file diff --git a/class_character_vs_character_collision_simple.png b/class_character_vs_character_collision_simple.png new file mode 100644 index 000000000..0146c0f7c Binary files /dev/null and b/class_character_vs_character_collision_simple.png differ diff --git a/class_closest_hit_collision_collector-members.html b/class_closest_hit_collision_collector-members.html new file mode 100644 index 000000000..041a1a2f3 --- /dev/null +++ b/class_closest_hit_collision_collector-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ClosestHitCollisionCollector< CollectorType > Member List
+
+
+ +

This is the complete list of members for ClosestHitCollisionCollector< CollectorType >, including all inherited members.

+ + + + + + +
AddHit(const ResultType &inResult) overrideClosestHitCollisionCollector< CollectorType >inlinevirtual
HadHit() constClosestHitCollisionCollector< CollectorType >inline
mHitClosestHitCollisionCollector< CollectorType >
Reset() overrideClosestHitCollisionCollector< CollectorType >inlinevirtual
ResultType typedefClosestHitCollisionCollector< CollectorType >
+
+ + + + diff --git a/class_closest_hit_collision_collector.html b/class_closest_hit_collision_collector.html new file mode 100644 index 000000000..a699e4a2b --- /dev/null +++ b/class_closest_hit_collision_collector.html @@ -0,0 +1,279 @@ + + + + + + + +Jolt Physics: ClosestHitCollisionCollector< CollectorType > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ClosestHitCollisionCollector< CollectorType > Class Template Reference
+
+
+ +

Simple implementation that collects the closest / deepest hit. + More...

+ +

#include <CollisionCollectorImpl.h>

+
+Inheritance diagram for ClosestHitCollisionCollector< CollectorType >:
+
+
+ +
+ + + + + +

+Public Types

using ResultType = typename CollectorType::ResultType
 Redeclare ResultType.
 
+ + + + + + + + +

+Public Member Functions

virtual void Reset () override
 
virtual void AddHit (const ResultType &inResult) override
 
bool HadHit () const
 Check if this collector has had a hit.
 
+ + + +

+Public Attributes

ResultType mHit
 
+

Detailed Description

+
template<class CollectorType>
+class ClosestHitCollisionCollector< CollectorType >

Simple implementation that collects the closest / deepest hit.

+

Member Typedef Documentation

+ +

◆ ResultType

+ +
+
+
+template<class CollectorType >
+ + + + +
using ClosestHitCollisionCollector< CollectorType >::ResultType = typename CollectorType::ResultType
+
+ +

Redeclare ResultType.

+ +
+
+

Member Function Documentation

+ +

◆ AddHit()

+ +
+
+
+template<class CollectorType >
+ + + + + +
+ + + + + + + + +
virtual void ClosestHitCollisionCollector< CollectorType >::AddHit (const ResultTypeinResult)
+
+inlineoverridevirtual
+
+ +
+
+ +

◆ HadHit()

+ +
+
+
+template<class CollectorType >
+ + + + + +
+ + + + + + + +
bool ClosestHitCollisionCollector< CollectorType >::HadHit () const
+
+inline
+
+ +

Check if this collector has had a hit.

+ +
+
+ +

◆ Reset()

+ +
+
+
+template<class CollectorType >
+ + + + + +
+ + + + + + + +
virtual void ClosestHitCollisionCollector< CollectorType >::Reset ()
+
+inlineoverridevirtual
+
+ +
+
+

Member Data Documentation

+ +

◆ mHit

+ +
+
+
+template<class CollectorType >
+ + + + +
ResultType ClosestHitCollisionCollector< CollectorType >::mHit
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_closest_hit_collision_collector.js b/class_closest_hit_collision_collector.js new file mode 100644 index 000000000..ae222d72e --- /dev/null +++ b/class_closest_hit_collision_collector.js @@ -0,0 +1,8 @@ +var class_closest_hit_collision_collector = +[ + [ "ResultType", "class_closest_hit_collision_collector.html#afe58b3f7279a8934bb7faca08f68bdf7", null ], + [ "AddHit", "class_closest_hit_collision_collector.html#a59e5b29507bc2aa633fe55c0bb08ff3e", null ], + [ "HadHit", "class_closest_hit_collision_collector.html#aa9679e95456d67c8f813e6f13de6e65c", null ], + [ "Reset", "class_closest_hit_collision_collector.html#a14955035534ef11baa2d3785ba004eee", null ], + [ "mHit", "class_closest_hit_collision_collector.html#a770bdcdb6dc04ab4070aad443395e642", null ] +]; \ No newline at end of file diff --git a/class_closest_hit_collision_collector.png b/class_closest_hit_collision_collector.png new file mode 100644 index 000000000..7a5b73812 Binary files /dev/null and b/class_closest_hit_collision_collector.png differ diff --git a/class_collide_convex_vs_triangles-members.html b/class_collide_convex_vs_triangles-members.html new file mode 100644 index 000000000..96cb6d998 --- /dev/null +++ b/class_collide_convex_vs_triangles-members.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollideConvexVsTriangles Member List
+
+
+ +

This is the complete list of members for CollideConvexVsTriangles, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
Collide(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2)CollideConvexVsTriangles
CollideConvexVsTriangles(const ConvexShape *inShape1, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeID &inSubShapeID1, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector)CollideConvexVsTriangles
mBoundsOf1CollideConvexVsTrianglesprotected
mBoundsOf1InSpaceOf2CollideConvexVsTrianglesprotected
mBufferExCvxRadiusCollideConvexVsTrianglesprotected
mBufferIncCvxRadiusCollideConvexVsTrianglesprotected
mCollectorCollideConvexVsTrianglesprotected
mCollideShapeSettingsCollideConvexVsTrianglesprotected
mScale1CollideConvexVsTrianglesprotected
mScale2CollideConvexVsTrianglesprotected
mScaleSign2CollideConvexVsTrianglesprotected
mShape1CollideConvexVsTrianglesprotected
mShape1ExCvxRadiusCollideConvexVsTrianglesprotected
mShape1IncCvxRadiusCollideConvexVsTrianglesprotected
mSubShapeID1CollideConvexVsTrianglesprotected
mTransform1CollideConvexVsTrianglesprotected
mTransform2To1CollideConvexVsTrianglesprotected
+
+ + + + diff --git a/class_collide_convex_vs_triangles.html b/class_collide_convex_vs_triangles.html new file mode 100644 index 000000000..9d2faa093 --- /dev/null +++ b/class_collide_convex_vs_triangles.html @@ -0,0 +1,679 @@ + + + + + + + +Jolt Physics: CollideConvexVsTriangles Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollideConvexVsTriangles Class Reference
+
+
+ +

Collision detection helper that collides a convex object vs one or more triangles. + More...

+ +

#include <CollideConvexVsTriangles.h>

+ + + + + + +

+Public Member Functions

 CollideConvexVsTriangles (const ConvexShape *inShape1, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeID &inSubShapeID1, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector)
 
void Collide (Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

const CollideShapeSettingsmCollideShapeSettings
 Settings for this collision operation.
 
CollideShapeCollectormCollector
 The collector that will receive the results.
 
const ConvexShapemShape1
 The shape that we're colliding with.
 
Vec3 mScale1
 The scale of the shape (in shape local space) of the shape we're colliding with.
 
Vec3 mScale2
 The scale of the shape (in shape local space) of the shape we're colliding against.
 
Mat44 mTransform1
 Transform of the shape we're colliding with.
 
Mat44 mTransform2To1
 Transform that takes a point in space of the colliding shape to the shape we're colliding with.
 
AABox mBoundsOf1
 Bounds of the colliding shape in local space.
 
AABox mBoundsOf1InSpaceOf2
 Bounds of the colliding shape in space of shape we're colliding with.
 
SubShapeID mSubShapeID1
 Sub shape ID of colliding shape.
 
float mScaleSign2
 Sign of the scale of object 2, -1 if object is inside out, 1 if not.
 
ConvexShape::SupportBuffer mBufferExCvxRadius
 Buffer that holds the support function data excluding convex radius.
 
ConvexShape::SupportBuffer mBufferIncCvxRadius
 Buffer that holds the support function data including convex radius.
 
const ConvexShape::SupportmShape1ExCvxRadius = nullptr
 Actual support function object excluding convex radius.
 
const ConvexShape::SupportmShape1IncCvxRadius = nullptr
 Actual support function object including convex radius.
 
+

Detailed Description

+

Collision detection helper that collides a convex object vs one or more triangles.

+

Constructor & Destructor Documentation

+ +

◆ CollideConvexVsTriangles()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN CollideConvexVsTriangles::CollideConvexVsTriangles (const ConvexShapeinShape1,
Vec3Arg inScale1,
Vec3Arg inScale2,
Mat44Arg inCenterOfMassTransform1,
Mat44Arg inCenterOfMassTransform2,
const SubShapeIDinSubShapeID1,
const CollideShapeSettingsinCollideShapeSettings,
CollideShapeCollectorioCollector 
)
+
+

Constructor

Parameters
+ + + + + + + + + +
inShape1The convex shape to collide against triangles
inScale1Local space scale for the convex object (scales relative to its center of mass)
inScale2Local space scale for the triangles
inCenterOfMassTransform1Transform that takes the center of mass of 1 into world space
inCenterOfMassTransform2Transform that takes the center of mass of 2 into world space
inSubShapeID1Sub shape ID of the convex object
inCollideShapeSettingsSettings for the collide shape query
ioCollectorThe collector that will receive the results
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Collide()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CollideConvexVsTriangles::Collide (Vec3Arg inV0,
Vec3Arg inV1,
Vec3Arg inV2,
uint8 inActiveEdges,
const SubShapeIDinSubShapeID2 
)
+
+

Collide convex object with a single triangle

Parameters
+ + + + +
inV0,inV1,inV2CCW triangle vertices
inActiveEdgesbit 0 = edge v0..v1 is active, bit 1 = edge v1..v2 is active, bit 2 = edge v2..v0 is active An active edge is an edge that is not connected to another triangle in such a way that it is impossible to collide with the edge
inSubShapeID2The sub shape ID for the triangle
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mBoundsOf1

+ +
+
+ + + + + +
+ + + + +
AABox CollideConvexVsTriangles::mBoundsOf1
+
+protected
+
+ +

Bounds of the colliding shape in local space.

+ +
+
+ +

◆ mBoundsOf1InSpaceOf2

+ +
+
+ + + + + +
+ + + + +
AABox CollideConvexVsTriangles::mBoundsOf1InSpaceOf2
+
+protected
+
+ +

Bounds of the colliding shape in space of shape we're colliding with.

+ +
+
+ +

◆ mBufferExCvxRadius

+ +
+
+ + + + + +
+ + + + +
ConvexShape::SupportBuffer CollideConvexVsTriangles::mBufferExCvxRadius
+
+protected
+
+ +

Buffer that holds the support function data excluding convex radius.

+ +
+
+ +

◆ mBufferIncCvxRadius

+ +
+
+ + + + + +
+ + + + +
ConvexShape::SupportBuffer CollideConvexVsTriangles::mBufferIncCvxRadius
+
+protected
+
+ +

Buffer that holds the support function data including convex radius.

+ +
+
+ +

◆ mCollector

+ +
+
+ + + + + +
+ + + + +
CollideShapeCollector& CollideConvexVsTriangles::mCollector
+
+protected
+
+ +

The collector that will receive the results.

+ +
+
+ +

◆ mCollideShapeSettings

+ +
+
+ + + + + +
+ + + + +
const CollideShapeSettings& CollideConvexVsTriangles::mCollideShapeSettings
+
+protected
+
+ +

Settings for this collision operation.

+ +
+
+ +

◆ mScale1

+ +
+
+ + + + + +
+ + + + +
Vec3 CollideConvexVsTriangles::mScale1
+
+protected
+
+ +

The scale of the shape (in shape local space) of the shape we're colliding with.

+ +
+
+ +

◆ mScale2

+ +
+
+ + + + + +
+ + + + +
Vec3 CollideConvexVsTriangles::mScale2
+
+protected
+
+ +

The scale of the shape (in shape local space) of the shape we're colliding against.

+ +
+
+ +

◆ mScaleSign2

+ +
+
+ + + + + +
+ + + + +
float CollideConvexVsTriangles::mScaleSign2
+
+protected
+
+ +

Sign of the scale of object 2, -1 if object is inside out, 1 if not.

+ +
+
+ +

◆ mShape1

+ +
+
+ + + + + +
+ + + + +
const ConvexShape* CollideConvexVsTriangles::mShape1
+
+protected
+
+ +

The shape that we're colliding with.

+ +
+
+ +

◆ mShape1ExCvxRadius

+ +
+
+ + + + + +
+ + + + +
const ConvexShape::Support* CollideConvexVsTriangles::mShape1ExCvxRadius = nullptr
+
+protected
+
+ +

Actual support function object excluding convex radius.

+ +
+
+ +

◆ mShape1IncCvxRadius

+ +
+
+ + + + + +
+ + + + +
const ConvexShape::Support* CollideConvexVsTriangles::mShape1IncCvxRadius = nullptr
+
+protected
+
+ +

Actual support function object including convex radius.

+ +
+
+ +

◆ mSubShapeID1

+ +
+
+ + + + + +
+ + + + +
SubShapeID CollideConvexVsTriangles::mSubShapeID1
+
+protected
+
+ +

Sub shape ID of colliding shape.

+ +
+
+ +

◆ mTransform1

+ +
+
+ + + + + +
+ + + + +
Mat44 CollideConvexVsTriangles::mTransform1
+
+protected
+
+ +

Transform of the shape we're colliding with.

+ +
+
+ +

◆ mTransform2To1

+ +
+
+ + + + + +
+ + + + +
Mat44 CollideConvexVsTriangles::mTransform2To1
+
+protected
+
+ +

Transform that takes a point in space of the colliding shape to the shape we're colliding with.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_collide_convex_vs_triangles.js b/class_collide_convex_vs_triangles.js new file mode 100644 index 000000000..0194c1b9c --- /dev/null +++ b/class_collide_convex_vs_triangles.js @@ -0,0 +1,20 @@ +var class_collide_convex_vs_triangles = +[ + [ "CollideConvexVsTriangles", "class_collide_convex_vs_triangles.html#ade596a8c8b3a18d72739ead25ef0e569", null ], + [ "Collide", "class_collide_convex_vs_triangles.html#ab9cbc3709c7d17d812ca1eba57f8f436", null ], + [ "mBoundsOf1", "class_collide_convex_vs_triangles.html#a596f47c1410024dc4b388fbe734bf8a7", null ], + [ "mBoundsOf1InSpaceOf2", "class_collide_convex_vs_triangles.html#a97a9af3d0958130bfbcbce4b5f3c81ae", null ], + [ "mBufferExCvxRadius", "class_collide_convex_vs_triangles.html#a02e46e4e5290250e02a6937168ccec6b", null ], + [ "mBufferIncCvxRadius", "class_collide_convex_vs_triangles.html#a9783d040f7efa2ebd16d4ac12790156c", null ], + [ "mCollector", "class_collide_convex_vs_triangles.html#a3f3d24787366a4941beaba991c5649c9", null ], + [ "mCollideShapeSettings", "class_collide_convex_vs_triangles.html#a69acefd643423ee75a0ba2177d0973a8", null ], + [ "mScale1", "class_collide_convex_vs_triangles.html#a147a2531a2e1a590e84349ea90143d84", null ], + [ "mScale2", "class_collide_convex_vs_triangles.html#a13228a63f38c3ba1b6cf83671456f6e5", null ], + [ "mScaleSign2", "class_collide_convex_vs_triangles.html#a031ebb813c9dbe4a24299bc474bc264b", null ], + [ "mShape1", "class_collide_convex_vs_triangles.html#a323951ad9eea3102241913f2fc38184b", null ], + [ "mShape1ExCvxRadius", "class_collide_convex_vs_triangles.html#ab7f021a387977244b9bf2364c2e0f1b9", null ], + [ "mShape1IncCvxRadius", "class_collide_convex_vs_triangles.html#a76b3b285e2401983415ad2183e501655", null ], + [ "mSubShapeID1", "class_collide_convex_vs_triangles.html#ac938fe2d5f06a8acc3dca0ea0034d7d1", null ], + [ "mTransform1", "class_collide_convex_vs_triangles.html#a8dc5e32b75220d7216387f253d1356c6", null ], + [ "mTransform2To1", "class_collide_convex_vs_triangles.html#aae5e07005177f17412f4102c2a8440b6", null ] +]; \ No newline at end of file diff --git a/class_collide_point_result-members.html b/class_collide_point_result-members.html new file mode 100644 index 000000000..08e7c9fe3 --- /dev/null +++ b/class_collide_point_result-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollidePointResult Member List
+
+
+ +

This is the complete list of members for CollidePointResult, including all inherited members.

+ + + + +
GetEarlyOutFraction() constCollidePointResultinline
mBodyIDCollidePointResult
mSubShapeID2CollidePointResult
+
+ + + + diff --git a/class_collide_point_result.html b/class_collide_point_result.html new file mode 100644 index 000000000..57057839b --- /dev/null +++ b/class_collide_point_result.html @@ -0,0 +1,205 @@ + + + + + + + +Jolt Physics: CollidePointResult Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollidePointResult Class Reference
+
+
+ +

Structure that holds the result of colliding a point against a shape. + More...

+ +

#include <CollidePointResult.h>

+ + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE float GetEarlyOutFraction () const
 Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'. For point queries there is no sensible return value.
 
+ + + + + + + +

+Public Attributes

BodyID mBodyID
 Body that was hit.
 
SubShapeID mSubShapeID2
 Sub shape ID of shape that we collided against.
 
+

Detailed Description

+

Structure that holds the result of colliding a point against a shape.

+

Member Function Documentation

+ +

◆ GetEarlyOutFraction()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE float CollidePointResult::GetEarlyOutFraction () const
+
+inline
+
+ +

Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'. For point queries there is no sensible return value.

+ +
+
+

Member Data Documentation

+ +

◆ mBodyID

+ +
+
+ + + + +
BodyID CollidePointResult::mBodyID
+
+ +

Body that was hit.

+ +
+
+ +

◆ mSubShapeID2

+ +
+
+ + + + +
SubShapeID CollidePointResult::mSubShapeID2
+
+ +

Sub shape ID of shape that we collided against.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_collide_point_result.js b/class_collide_point_result.js new file mode 100644 index 000000000..e0101e296 --- /dev/null +++ b/class_collide_point_result.js @@ -0,0 +1,6 @@ +var class_collide_point_result = +[ + [ "GetEarlyOutFraction", "class_collide_point_result.html#a2fe473a4baa681ab11ce3a291d8a26a8", null ], + [ "mBodyID", "class_collide_point_result.html#af82d1a1ce22fddff9c57c5970b6f4de3", null ], + [ "mSubShapeID2", "class_collide_point_result.html#afb9f97847ff73066b54793e15ebb2aa8", null ] +]; \ No newline at end of file diff --git a/class_collide_settings_base-members.html b/class_collide_settings_base-members.html new file mode 100644 index 000000000..9b5583edb --- /dev/null +++ b/class_collide_settings_base-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollideSettingsBase Member List
+
+
+ +

This is the complete list of members for CollideSettingsBase, including all inherited members.

+ + + + + + +
mActiveEdgeModeCollideSettingsBase
mActiveEdgeMovementDirectionCollideSettingsBase
mCollectFacesModeCollideSettingsBase
mCollisionToleranceCollideSettingsBase
mPenetrationToleranceCollideSettingsBase
+
+ + + + diff --git a/class_collide_settings_base.html b/class_collide_settings_base.html new file mode 100644 index 000000000..4ae96106e --- /dev/null +++ b/class_collide_settings_base.html @@ -0,0 +1,237 @@ + + + + + + + +Jolt Physics: CollideSettingsBase Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollideSettingsBase Class Reference
+
+
+ +

Settings to be passed with a collision query. + More...

+ +

#include <CollideShape.h>

+
+Inheritance diagram for CollideSettingsBase:
+
+
+ + +CollideShapeSettings +ShapeCastSettings + +
+ + + + + + + + + + + + + + + + + +

+Public Attributes

JPH_OVERRIDE_NEW_DELETE EActiveEdgeMode mActiveEdgeMode = EActiveEdgeMode::CollideOnlyWithActive
 How active edges (edges that a moving object should bump into) are handled.
 
ECollectFacesMode mCollectFacesMode = ECollectFacesMode::NoFaces
 If colliding faces should be collected or only the collision point.
 
float mCollisionTolerance = cDefaultCollisionTolerance
 If objects are closer than this distance, they are considered to be colliding (used for GJK) (unit: meter)
 
float mPenetrationTolerance = cDefaultPenetrationTolerance
 A factor that determines the accuracy of the penetration depth calculation. If the change of the squared distance is less than tolerance * current_penetration_depth^2 the algorithm will terminate. (unit: dimensionless)
 
Vec3 mActiveEdgeMovementDirection = Vec3::sZero()
 When mActiveEdgeMode is CollideOnlyWithActive a movement direction can be provided. When hitting an inactive edge, the system will select the triangle normal as penetration depth only if it impedes the movement less than with the calculated penetration depth.
 
+

Detailed Description

+

Settings to be passed with a collision query.

+

Member Data Documentation

+ +

◆ mActiveEdgeMode

+ +
+
+ + + + +
JPH_OVERRIDE_NEW_DELETE EActiveEdgeMode CollideSettingsBase::mActiveEdgeMode = EActiveEdgeMode::CollideOnlyWithActive
+
+ +

How active edges (edges that a moving object should bump into) are handled.

+ +
+
+ +

◆ mActiveEdgeMovementDirection

+ +
+
+ + + + +
Vec3 CollideSettingsBase::mActiveEdgeMovementDirection = Vec3::sZero()
+
+ +

When mActiveEdgeMode is CollideOnlyWithActive a movement direction can be provided. When hitting an inactive edge, the system will select the triangle normal as penetration depth only if it impedes the movement less than with the calculated penetration depth.

+ +
+
+ +

◆ mCollectFacesMode

+ +
+
+ + + + +
ECollectFacesMode CollideSettingsBase::mCollectFacesMode = ECollectFacesMode::NoFaces
+
+ +

If colliding faces should be collected or only the collision point.

+ +
+
+ +

◆ mCollisionTolerance

+ +
+
+ + + + +
float CollideSettingsBase::mCollisionTolerance = cDefaultCollisionTolerance
+
+ +

If objects are closer than this distance, they are considered to be colliding (used for GJK) (unit: meter)

+ +
+
+ +

◆ mPenetrationTolerance

+ +
+
+ + + + +
float CollideSettingsBase::mPenetrationTolerance = cDefaultPenetrationTolerance
+
+ +

A factor that determines the accuracy of the penetration depth calculation. If the change of the squared distance is less than tolerance * current_penetration_depth^2 the algorithm will terminate. (unit: dimensionless)

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_collide_settings_base.js b/class_collide_settings_base.js new file mode 100644 index 000000000..49e8c1933 --- /dev/null +++ b/class_collide_settings_base.js @@ -0,0 +1,8 @@ +var class_collide_settings_base = +[ + [ "mActiveEdgeMode", "class_collide_settings_base.html#a15b85d50667172c651f917096a99a54e", null ], + [ "mActiveEdgeMovementDirection", "class_collide_settings_base.html#aede854538605c943e5076753ac2ff9e2", null ], + [ "mCollectFacesMode", "class_collide_settings_base.html#a0c9c32e2267f57dcc73952e3469512bd", null ], + [ "mCollisionTolerance", "class_collide_settings_base.html#a0b92708903a65cb2bcc412a49b080736", null ], + [ "mPenetrationTolerance", "class_collide_settings_base.html#a153906919e1de4a797964973d0164f44", null ] +]; \ No newline at end of file diff --git a/class_collide_settings_base.png b/class_collide_settings_base.png new file mode 100644 index 000000000..7b235018d Binary files /dev/null and b/class_collide_settings_base.png differ diff --git a/class_collide_shape_result-members.html b/class_collide_shape_result-members.html new file mode 100644 index 000000000..b9bf080d5 --- /dev/null +++ b/class_collide_shape_result-members.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollideShapeResult Member List
+
+
+ +

This is the complete list of members for CollideShapeResult, including all inherited members.

+ + + + + + + + + + + + + + + +
CollideShapeResult()=defaultCollideShapeResult
CollideShapeResult(Vec3Arg inContactPointOn1, Vec3Arg inContactPointOn2, Vec3Arg inPenetrationAxis, float inPenetrationDepth, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2)CollideShapeResultinline
Face typedefCollideShapeResult
GetEarlyOutFraction() constCollideShapeResultinline
mBodyID2CollideShapeResult
mContactPointOn1CollideShapeResult
mContactPointOn2CollideShapeResult
mPenetrationAxisCollideShapeResult
mPenetrationDepthCollideShapeResult
mShape1FaceCollideShapeResult
mShape2FaceCollideShapeResult
mSubShapeID1CollideShapeResult
mSubShapeID2CollideShapeResult
Reversed() constCollideShapeResultinline
+
+ + + + diff --git a/class_collide_shape_result.html b/class_collide_shape_result.html new file mode 100644 index 000000000..0e467d75a --- /dev/null +++ b/class_collide_shape_result.html @@ -0,0 +1,500 @@ + + + + + + + +Jolt Physics: CollideShapeResult Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollideShapeResult Class Reference
+
+
+ +

Class that contains all information of two colliding shapes. + More...

+ +

#include <CollideShape.h>

+
+Inheritance diagram for CollideShapeResult:
+
+
+ + +ShapeCastResult + +
+ + + + +

+Public Types

using Face = StaticArray< Vec3, 32 >
 
+ + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE CollideShapeResult ()=default
 Default constructor.
 
 CollideShapeResult (Vec3Arg inContactPointOn1, Vec3Arg inContactPointOn2, Vec3Arg inPenetrationAxis, float inPenetrationDepth, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2)
 Constructor.
 
float GetEarlyOutFraction () const
 Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'. We use -penetration depth to get the hit with the biggest penetration depth.
 
CollideShapeResult Reversed () const
 Reverses the hit result, swapping contact point 1 with contact point 2 etc.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Vec3 mContactPointOn1
 Contact point on the surface of shape 1 (in world space or relative to base offset)
 
Vec3 mContactPointOn2
 Contact point on the surface of shape 2 (in world space or relative to base offset). If the penetration depth is 0, this will be the same as mContactPointOn1.
 
Vec3 mPenetrationAxis
 Direction to move shape 2 out of collision along the shortest path (magnitude is meaningless, in world space). You can use -mPenetrationAxis.Normalized() as contact normal.
 
float mPenetrationDepth
 Penetration depth (move shape 2 by this distance to resolve the collision)
 
SubShapeID mSubShapeID1
 Sub shape ID that identifies the face on shape 1.
 
SubShapeID mSubShapeID2
 Sub shape ID that identifies the face on shape 2.
 
BodyID mBodyID2
 BodyID to which shape 2 belongs to.
 
Face mShape1Face
 Colliding face on shape 1 (optional result, in world space or relative to base offset)
 
Face mShape2Face
 Colliding face on shape 2 (optional result, in world space or relative to base offset)
 
+

Detailed Description

+

Class that contains all information of two colliding shapes.

+

Member Typedef Documentation

+ +

◆ Face

+ +
+
+ + + + +
using CollideShapeResult::Face = StaticArray<Vec3, 32>
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CollideShapeResult() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE CollideShapeResult::CollideShapeResult ()
+
+default
+
+ +

Default constructor.

+ +
+
+ +

◆ CollideShapeResult() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CollideShapeResult::CollideShapeResult (Vec3Arg inContactPointOn1,
Vec3Arg inContactPointOn2,
Vec3Arg inPenetrationAxis,
float inPenetrationDepth,
const SubShapeIDinSubShapeID1,
const SubShapeIDinSubShapeID2,
const BodyIDinBodyID2 
)
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetEarlyOutFraction()

+ +
+
+ + + + + +
+ + + + + + + +
float CollideShapeResult::GetEarlyOutFraction () const
+
+inline
+
+ +

Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'. We use -penetration depth to get the hit with the biggest penetration depth.

+ +
+
+ +

◆ Reversed()

+ +
+
+ + + + + +
+ + + + + + + +
CollideShapeResult CollideShapeResult::Reversed () const
+
+inline
+
+ +

Reverses the hit result, swapping contact point 1 with contact point 2 etc.

+ +
+
+

Member Data Documentation

+ +

◆ mBodyID2

+ +
+
+ + + + +
BodyID CollideShapeResult::mBodyID2
+
+ +

BodyID to which shape 2 belongs to.

+ +
+
+ +

◆ mContactPointOn1

+ +
+
+ + + + +
Vec3 CollideShapeResult::mContactPointOn1
+
+ +

Contact point on the surface of shape 1 (in world space or relative to base offset)

+ +
+
+ +

◆ mContactPointOn2

+ +
+
+ + + + +
Vec3 CollideShapeResult::mContactPointOn2
+
+ +

Contact point on the surface of shape 2 (in world space or relative to base offset). If the penetration depth is 0, this will be the same as mContactPointOn1.

+ +
+
+ +

◆ mPenetrationAxis

+ +
+
+ + + + +
Vec3 CollideShapeResult::mPenetrationAxis
+
+ +

Direction to move shape 2 out of collision along the shortest path (magnitude is meaningless, in world space). You can use -mPenetrationAxis.Normalized() as contact normal.

+ +
+
+ +

◆ mPenetrationDepth

+ +
+
+ + + + +
float CollideShapeResult::mPenetrationDepth
+
+ +

Penetration depth (move shape 2 by this distance to resolve the collision)

+ +
+
+ +

◆ mShape1Face

+ +
+
+ + + + +
Face CollideShapeResult::mShape1Face
+
+ +

Colliding face on shape 1 (optional result, in world space or relative to base offset)

+ +
+
+ +

◆ mShape2Face

+ +
+
+ + + + +
Face CollideShapeResult::mShape2Face
+
+ +

Colliding face on shape 2 (optional result, in world space or relative to base offset)

+ +
+
+ +

◆ mSubShapeID1

+ +
+
+ + + + +
SubShapeID CollideShapeResult::mSubShapeID1
+
+ +

Sub shape ID that identifies the face on shape 1.

+ +
+
+ +

◆ mSubShapeID2

+ +
+
+ + + + +
SubShapeID CollideShapeResult::mSubShapeID2
+
+ +

Sub shape ID that identifies the face on shape 2.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_collide_shape_result.js b/class_collide_shape_result.js new file mode 100644 index 000000000..b232fbac3 --- /dev/null +++ b/class_collide_shape_result.js @@ -0,0 +1,17 @@ +var class_collide_shape_result = +[ + [ "Face", "class_collide_shape_result.html#a5cdb68a0447b40ffa2cfd725c1896356", null ], + [ "CollideShapeResult", "class_collide_shape_result.html#a7fe57d79718e199535fa4d9601e646ff", null ], + [ "CollideShapeResult", "class_collide_shape_result.html#a89e76885c988cdc177f121c6bb18801d", null ], + [ "GetEarlyOutFraction", "class_collide_shape_result.html#abe452fa6ddc8670a0c020d5420a92f3b", null ], + [ "Reversed", "class_collide_shape_result.html#a84eb31fb18eea1a96cadad32a3f6fe4e", null ], + [ "mBodyID2", "class_collide_shape_result.html#a22e33232d0af6889b6715dfaa460ebbb", null ], + [ "mContactPointOn1", "class_collide_shape_result.html#a76dd6be632967ea1f0348eca8155be44", null ], + [ "mContactPointOn2", "class_collide_shape_result.html#a2f09d3bbc9e1563c974836c2327f73a7", null ], + [ "mPenetrationAxis", "class_collide_shape_result.html#a3704397b8c4c6e39f2bb94bb477a7bc7", null ], + [ "mPenetrationDepth", "class_collide_shape_result.html#a940adcfe5fa917a065f5ae65773de013", null ], + [ "mShape1Face", "class_collide_shape_result.html#aa79b80c5eca1d8e7bf57771421bc3acc", null ], + [ "mShape2Face", "class_collide_shape_result.html#ae69726442e6d35051405f8d437003316", null ], + [ "mSubShapeID1", "class_collide_shape_result.html#a0a62402355f85f878a6444bbcbba31c4", null ], + [ "mSubShapeID2", "class_collide_shape_result.html#ab12cb1e36b125a536229698328e30d9a", null ] +]; \ No newline at end of file diff --git a/class_collide_shape_result.png b/class_collide_shape_result.png new file mode 100644 index 000000000..1efe0ec35 Binary files /dev/null and b/class_collide_shape_result.png differ diff --git a/class_collide_shape_settings-members.html b/class_collide_shape_settings-members.html new file mode 100644 index 000000000..9a48d2d3e --- /dev/null +++ b/class_collide_shape_settings-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollideShapeSettings Member List
+
+
+ +

This is the complete list of members for CollideShapeSettings, including all inherited members.

+ + + + + + + + +
mActiveEdgeModeCollideSettingsBase
mActiveEdgeMovementDirectionCollideSettingsBase
mBackFaceModeCollideShapeSettings
mCollectFacesModeCollideSettingsBase
mCollisionToleranceCollideSettingsBase
mMaxSeparationDistanceCollideShapeSettings
mPenetrationToleranceCollideSettingsBase
+
+ + + + diff --git a/class_collide_shape_settings.html b/class_collide_shape_settings.html new file mode 100644 index 000000000..d4cd0491f --- /dev/null +++ b/class_collide_shape_settings.html @@ -0,0 +1,195 @@ + + + + + + + +Jolt Physics: CollideShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollideShapeSettings Class Reference
+
+
+ +

Settings to be passed with a collision query. + More...

+ +

#include <CollideShape.h>

+
+Inheritance diagram for CollideShapeSettings:
+
+
+ + +CollideSettingsBase + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

JPH_OVERRIDE_NEW_DELETE float mMaxSeparationDistance = 0.0f
 When > 0 contacts in the vicinity of the query shape can be found. All nearest contacts that are not further away than this distance will be found (unit: meter)
 
EBackFaceMode mBackFaceMode = EBackFaceMode::IgnoreBackFaces
 How backfacing triangles should be treated.
 
- Public Attributes inherited from CollideSettingsBase
JPH_OVERRIDE_NEW_DELETE EActiveEdgeMode mActiveEdgeMode = EActiveEdgeMode::CollideOnlyWithActive
 How active edges (edges that a moving object should bump into) are handled.
 
ECollectFacesMode mCollectFacesMode = ECollectFacesMode::NoFaces
 If colliding faces should be collected or only the collision point.
 
float mCollisionTolerance = cDefaultCollisionTolerance
 If objects are closer than this distance, they are considered to be colliding (used for GJK) (unit: meter)
 
float mPenetrationTolerance = cDefaultPenetrationTolerance
 A factor that determines the accuracy of the penetration depth calculation. If the change of the squared distance is less than tolerance * current_penetration_depth^2 the algorithm will terminate. (unit: dimensionless)
 
Vec3 mActiveEdgeMovementDirection = Vec3::sZero()
 When mActiveEdgeMode is CollideOnlyWithActive a movement direction can be provided. When hitting an inactive edge, the system will select the triangle normal as penetration depth only if it impedes the movement less than with the calculated penetration depth.
 
+

Detailed Description

+

Settings to be passed with a collision query.

+

Member Data Documentation

+ +

◆ mBackFaceMode

+ +
+
+ + + + +
EBackFaceMode CollideShapeSettings::mBackFaceMode = EBackFaceMode::IgnoreBackFaces
+
+ +

How backfacing triangles should be treated.

+ +
+
+ +

◆ mMaxSeparationDistance

+ +
+
+ + + + +
JPH_OVERRIDE_NEW_DELETE float CollideShapeSettings::mMaxSeparationDistance = 0.0f
+
+ +

When > 0 contacts in the vicinity of the query shape can be found. All nearest contacts that are not further away than this distance will be found (unit: meter)

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_collide_shape_settings.js b/class_collide_shape_settings.js new file mode 100644 index 000000000..70fc43283 --- /dev/null +++ b/class_collide_shape_settings.js @@ -0,0 +1,5 @@ +var class_collide_shape_settings = +[ + [ "mBackFaceMode", "class_collide_shape_settings.html#a6fd0a08fc31725386fc3bef0b9aee212", null ], + [ "mMaxSeparationDistance", "class_collide_shape_settings.html#a511c99470c2fe3b2e82d06ffe26c52c1", null ] +]; \ No newline at end of file diff --git a/class_collide_shape_settings.png b/class_collide_shape_settings.png new file mode 100644 index 000000000..06a05fb48 Binary files /dev/null and b/class_collide_shape_settings.png differ diff --git a/class_collide_soft_body_vertices_vs_triangles-members.html b/class_collide_soft_body_vertices_vs_triangles-members.html new file mode 100644 index 000000000..5a5ba7115 --- /dev/null +++ b/class_collide_soft_body_vertices_vs_triangles-members.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollideSoftBodyVerticesVsTriangles Member List
+
+
+ +

This is the complete list of members for CollideSoftBodyVerticesVsTriangles, including all inherited members.

+ + + + + + + + + + + + + + + +
CollideSoftBodyVerticesVsTriangles(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale)CollideSoftBodyVerticesVsTrianglesinline
FinishVertex(SoftBodyVertex &ioVertex, int inCollidingShapeIndex) constCollideSoftBodyVerticesVsTrianglesinline
mClosestDistanceSqCollideSoftBodyVerticesVsTriangles
mClosestPointCollideSoftBodyVerticesVsTriangles
mInvTransformCollideSoftBodyVerticesVsTriangles
mLocalPositionCollideSoftBodyVerticesVsTriangles
mNormalSignCollideSoftBodyVerticesVsTriangles
mSetCollideSoftBodyVerticesVsTriangles
mTransformCollideSoftBodyVerticesVsTriangles
mV0CollideSoftBodyVerticesVsTriangles
mV1CollideSoftBodyVerticesVsTriangles
mV2CollideSoftBodyVerticesVsTriangles
ProcessTriangle(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2)CollideSoftBodyVerticesVsTrianglesinline
StartVertex(const SoftBodyVertex &inVertex)CollideSoftBodyVerticesVsTrianglesinline
+
+ + + + diff --git a/class_collide_soft_body_vertices_vs_triangles.html b/class_collide_soft_body_vertices_vs_triangles.html new file mode 100644 index 000000000..46ca4b157 --- /dev/null +++ b/class_collide_soft_body_vertices_vs_triangles.html @@ -0,0 +1,446 @@ + + + + + + + +Jolt Physics: CollideSoftBodyVerticesVsTriangles Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollideSoftBodyVerticesVsTriangles Class Reference
+
+
+ +

Collision detection helper that collides soft body vertices vs triangles. + More...

+ +

#include <CollideSoftBodyVerticesVsTriangles.h>

+ + + + + + + + + + +

+Public Member Functions

 CollideSoftBodyVerticesVsTriangles (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale)
 
JPH_INLINE void StartVertex (const SoftBodyVertex &inVertex)
 
JPH_INLINE void ProcessTriangle (Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2)
 
JPH_INLINE void FinishVertex (SoftBodyVertex &ioVertex, int inCollidingShapeIndex) const
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Mat44 mTransform
 
Mat44 mInvTransform
 
Vec3 mLocalPosition
 
Vec3 mV0
 
Vec3 mV1
 
Vec3 mV2
 
Vec3 mClosestPoint
 
float mNormalSign
 
float mClosestDistanceSq
 
uint32 mSet
 
+

Detailed Description

+

Collision detection helper that collides soft body vertices vs triangles.

+

Constructor & Destructor Documentation

+ +

◆ CollideSoftBodyVerticesVsTriangles()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
CollideSoftBodyVerticesVsTriangles::CollideSoftBodyVerticesVsTriangles (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ FinishVertex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE void CollideSoftBodyVerticesVsTriangles::FinishVertex (SoftBodyVertexioVertex,
int inCollidingShapeIndex 
) const
+
+inline
+
+ +
+
+ +

◆ ProcessTriangle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE void CollideSoftBodyVerticesVsTriangles::ProcessTriangle (Vec3Arg inV0,
Vec3Arg inV1,
Vec3Arg inV2 
)
+
+inline
+
+ +
+
+ +

◆ StartVertex()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void CollideSoftBodyVerticesVsTriangles::StartVertex (const SoftBodyVertexinVertex)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mClosestDistanceSq

+ +
+
+ + + + +
float CollideSoftBodyVerticesVsTriangles::mClosestDistanceSq
+
+ +
+
+ +

◆ mClosestPoint

+ +
+
+ + + + +
Vec3 CollideSoftBodyVerticesVsTriangles::mClosestPoint
+
+ +
+
+ +

◆ mInvTransform

+ +
+
+ + + + +
Mat44 CollideSoftBodyVerticesVsTriangles::mInvTransform
+
+ +
+
+ +

◆ mLocalPosition

+ +
+
+ + + + +
Vec3 CollideSoftBodyVerticesVsTriangles::mLocalPosition
+
+ +
+
+ +

◆ mNormalSign

+ +
+
+ + + + +
float CollideSoftBodyVerticesVsTriangles::mNormalSign
+
+ +
+
+ +

◆ mSet

+ +
+
+ + + + +
uint32 CollideSoftBodyVerticesVsTriangles::mSet
+
+ +
+
+ +

◆ mTransform

+ +
+
+ + + + +
Mat44 CollideSoftBodyVerticesVsTriangles::mTransform
+
+ +
+
+ +

◆ mV0

+ +
+
+ + + + +
Vec3 CollideSoftBodyVerticesVsTriangles::mV0
+
+ +
+
+ +

◆ mV1

+ +
+
+ + + + +
Vec3 CollideSoftBodyVerticesVsTriangles::mV1
+
+ +
+
+ +

◆ mV2

+ +
+
+ + + + +
Vec3 CollideSoftBodyVerticesVsTriangles::mV2
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_collide_soft_body_vertices_vs_triangles.js b/class_collide_soft_body_vertices_vs_triangles.js new file mode 100644 index 000000000..e30b20b15 --- /dev/null +++ b/class_collide_soft_body_vertices_vs_triangles.js @@ -0,0 +1,17 @@ +var class_collide_soft_body_vertices_vs_triangles = +[ + [ "CollideSoftBodyVerticesVsTriangles", "class_collide_soft_body_vertices_vs_triangles.html#a801e7995617c6fb1b447d75fd703ed4b", null ], + [ "FinishVertex", "class_collide_soft_body_vertices_vs_triangles.html#ace145cd2baa9706d2b2ebb786db53066", null ], + [ "ProcessTriangle", "class_collide_soft_body_vertices_vs_triangles.html#a54442c53c1d2fefa091bec3fb6a14b2d", null ], + [ "StartVertex", "class_collide_soft_body_vertices_vs_triangles.html#af5a3ecc5d8027b5e5ea5a313f3cd30cc", null ], + [ "mClosestDistanceSq", "class_collide_soft_body_vertices_vs_triangles.html#aae3d91df7e34600c0fc1f6b5025dd97c", null ], + [ "mClosestPoint", "class_collide_soft_body_vertices_vs_triangles.html#acc8d25a6bde60a6594038c35d5899083", null ], + [ "mInvTransform", "class_collide_soft_body_vertices_vs_triangles.html#a6b17a54ebb55638f9b3bec43b352cc5c", null ], + [ "mLocalPosition", "class_collide_soft_body_vertices_vs_triangles.html#a6e56ae2ebc875f2880d0e9cbea51324e", null ], + [ "mNormalSign", "class_collide_soft_body_vertices_vs_triangles.html#abc7074eb47917ae835d52b39ba27eba0", null ], + [ "mSet", "class_collide_soft_body_vertices_vs_triangles.html#a686bf253a9b480309cbf6bb8f9ace6b1", null ], + [ "mTransform", "class_collide_soft_body_vertices_vs_triangles.html#ad5e739e65afabaeec273f234c5041595", null ], + [ "mV0", "class_collide_soft_body_vertices_vs_triangles.html#af25a1c81f66dd091515540878e130f59", null ], + [ "mV1", "class_collide_soft_body_vertices_vs_triangles.html#ad1bb010ce70cfec0aa0e060a0ea1d413", null ], + [ "mV2", "class_collide_soft_body_vertices_vs_triangles.html#a8ccc0079644faa1068d3b40a0de22f71", null ] +]; \ No newline at end of file diff --git a/class_collide_sphere_vs_triangles-members.html b/class_collide_sphere_vs_triangles-members.html new file mode 100644 index 000000000..d4594dcb2 --- /dev/null +++ b/class_collide_sphere_vs_triangles-members.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollideSphereVsTriangles Member List
+
+
+ +

This is the complete list of members for CollideSphereVsTriangles, including all inherited members.

+ + + + + + + + + + + + + +
Collide(Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2)CollideSphereVsTriangles
CollideSphereVsTriangles(const SphereShape *inShape1, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeID &inSubShapeID1, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector)CollideSphereVsTriangles
mCollectorCollideSphereVsTrianglesprotected
mCollideShapeSettingsCollideSphereVsTrianglesprotected
mRadiusCollideSphereVsTrianglesprotected
mRadiusPlusMaxSeparationSqCollideSphereVsTrianglesprotected
mScale2CollideSphereVsTrianglesprotected
mScaleSign2CollideSphereVsTrianglesprotected
mShape1CollideSphereVsTrianglesprotected
mSphereCenterIn2CollideSphereVsTrianglesprotected
mSubShapeID1CollideSphereVsTrianglesprotected
mTransform2CollideSphereVsTrianglesprotected
+
+ + + + diff --git a/class_collide_sphere_vs_triangles.html b/class_collide_sphere_vs_triangles.html new file mode 100644 index 000000000..d640968bd --- /dev/null +++ b/class_collide_sphere_vs_triangles.html @@ -0,0 +1,544 @@ + + + + + + + +Jolt Physics: CollideSphereVsTriangles Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollideSphereVsTriangles Class Reference
+
+
+ +

Collision detection helper that collides a sphere vs one or more triangles. + More...

+ +

#include <CollideSphereVsTriangles.h>

+ + + + + + +

+Public Member Functions

 CollideSphereVsTriangles (const SphereShape *inShape1, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeID &inSubShapeID1, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector)
 
void Collide (Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2, uint8 inActiveEdges, const SubShapeID &inSubShapeID2)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

const CollideShapeSettingsmCollideShapeSettings
 Settings for this collision operation.
 
CollideShapeCollectormCollector
 The collector that will receive the results.
 
const SphereShapemShape1
 The shape that we're colliding with.
 
Vec3 mScale2
 The scale of the shape (in shape local space) of the shape we're colliding against.
 
Mat44 mTransform2
 Transform of the shape we're colliding against.
 
Vec3 mSphereCenterIn2
 The center of the sphere in the space of 2.
 
SubShapeID mSubShapeID1
 Sub shape ID of colliding shape.
 
float mScaleSign2
 Sign of the scale of object 2, -1 if object is inside out, 1 if not.
 
float mRadius
 Radius of the sphere.
 
float mRadiusPlusMaxSeparationSq
 (Radius + Max SeparationDistance)^2
 
+

Detailed Description

+

Collision detection helper that collides a sphere vs one or more triangles.

+

Constructor & Destructor Documentation

+ +

◆ CollideSphereVsTriangles()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CollideSphereVsTriangles::CollideSphereVsTriangles (const SphereShapeinShape1,
Vec3Arg inScale1,
Vec3Arg inScale2,
Mat44Arg inCenterOfMassTransform1,
Mat44Arg inCenterOfMassTransform2,
const SubShapeIDinSubShapeID1,
const CollideShapeSettingsinCollideShapeSettings,
CollideShapeCollectorioCollector 
)
+
+

Constructor

Parameters
+ + + + + + + + + +
inShape1The sphere to collide against triangles
inScale1Local space scale for the sphere (scales relative to its center of mass)
inScale2Local space scale for the triangles
inCenterOfMassTransform1Transform that takes the center of mass of 1 into world space
inCenterOfMassTransform2Transform that takes the center of mass of 2 into world space
inSubShapeID1Sub shape ID of the convex object
inCollideShapeSettingsSettings for the collide shape query
ioCollectorThe collector that will receive the results
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Collide()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CollideSphereVsTriangles::Collide (Vec3Arg inV0,
Vec3Arg inV1,
Vec3Arg inV2,
uint8 inActiveEdges,
const SubShapeIDinSubShapeID2 
)
+
+

Collide sphere with a single triangle

Parameters
+ + + + +
inV0,inV1,inV2CCW triangle vertices
inActiveEdgesbit 0 = edge v0..v1 is active, bit 1 = edge v1..v2 is active, bit 2 = edge v2..v0 is active An active edge is an edge that is not connected to another triangle in such a way that it is impossible to collide with the edge
inSubShapeID2The sub shape ID for the triangle
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mCollector

+ +
+
+ + + + + +
+ + + + +
CollideShapeCollector& CollideSphereVsTriangles::mCollector
+
+protected
+
+ +

The collector that will receive the results.

+ +
+
+ +

◆ mCollideShapeSettings

+ +
+
+ + + + + +
+ + + + +
const CollideShapeSettings& CollideSphereVsTriangles::mCollideShapeSettings
+
+protected
+
+ +

Settings for this collision operation.

+ +
+
+ +

◆ mRadius

+ +
+
+ + + + + +
+ + + + +
float CollideSphereVsTriangles::mRadius
+
+protected
+
+ +

Radius of the sphere.

+ +
+
+ +

◆ mRadiusPlusMaxSeparationSq

+ +
+
+ + + + + +
+ + + + +
float CollideSphereVsTriangles::mRadiusPlusMaxSeparationSq
+
+protected
+
+ +

(Radius + Max SeparationDistance)^2

+ +
+
+ +

◆ mScale2

+ +
+
+ + + + + +
+ + + + +
Vec3 CollideSphereVsTriangles::mScale2
+
+protected
+
+ +

The scale of the shape (in shape local space) of the shape we're colliding against.

+ +
+
+ +

◆ mScaleSign2

+ +
+
+ + + + + +
+ + + + +
float CollideSphereVsTriangles::mScaleSign2
+
+protected
+
+ +

Sign of the scale of object 2, -1 if object is inside out, 1 if not.

+ +
+
+ +

◆ mShape1

+ +
+
+ + + + + +
+ + + + +
const SphereShape* CollideSphereVsTriangles::mShape1
+
+protected
+
+ +

The shape that we're colliding with.

+ +
+
+ +

◆ mSphereCenterIn2

+ +
+
+ + + + + +
+ + + + +
Vec3 CollideSphereVsTriangles::mSphereCenterIn2
+
+protected
+
+ +

The center of the sphere in the space of 2.

+ +
+
+ +

◆ mSubShapeID1

+ +
+
+ + + + + +
+ + + + +
SubShapeID CollideSphereVsTriangles::mSubShapeID1
+
+protected
+
+ +

Sub shape ID of colliding shape.

+ +
+
+ +

◆ mTransform2

+ +
+
+ + + + + +
+ + + + +
Mat44 CollideSphereVsTriangles::mTransform2
+
+protected
+
+ +

Transform of the shape we're colliding against.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_collide_sphere_vs_triangles.js b/class_collide_sphere_vs_triangles.js new file mode 100644 index 000000000..e72722a3a --- /dev/null +++ b/class_collide_sphere_vs_triangles.js @@ -0,0 +1,15 @@ +var class_collide_sphere_vs_triangles = +[ + [ "CollideSphereVsTriangles", "class_collide_sphere_vs_triangles.html#a5201a21ae7222f10f6bb06b0c4e70bbb", null ], + [ "Collide", "class_collide_sphere_vs_triangles.html#af95dc49f0b89ed30a49892cf5b881aa0", null ], + [ "mCollector", "class_collide_sphere_vs_triangles.html#a460823cc00792faff84a226c694a68ba", null ], + [ "mCollideShapeSettings", "class_collide_sphere_vs_triangles.html#af299e3ed6996c856a01661a80a8f9151", null ], + [ "mRadius", "class_collide_sphere_vs_triangles.html#a0ceac76dc9e4731e8309af5fb46bb27c", null ], + [ "mRadiusPlusMaxSeparationSq", "class_collide_sphere_vs_triangles.html#aa984267713203452f765300b0b38fa2e", null ], + [ "mScale2", "class_collide_sphere_vs_triangles.html#afb2ca480a98d76d118b9d3d6f789fddd", null ], + [ "mScaleSign2", "class_collide_sphere_vs_triangles.html#a2b8e001093de41ada6fb3f32a02162b1", null ], + [ "mShape1", "class_collide_sphere_vs_triangles.html#a49702fc34c4a8b6bf866605f02a3e95d", null ], + [ "mSphereCenterIn2", "class_collide_sphere_vs_triangles.html#a1ba538db910e96e6bbeee5f29c7518ed", null ], + [ "mSubShapeID1", "class_collide_sphere_vs_triangles.html#a7da1606e9e21e89e87680088a542058b", null ], + [ "mTransform2", "class_collide_sphere_vs_triangles.html#a4813b78df4e0eb5493ae90ca519155ba", null ] +]; \ No newline at end of file diff --git a/class_collision_collector-members.html b/class_collision_collector-members.html new file mode 100644 index 000000000..5b28591a2 --- /dev/null +++ b/class_collision_collector-members.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionCollector< ResultTypeArg, TraitsType > Member List
+
+
+ +

This is the complete list of members for CollisionCollector< ResultTypeArg, TraitsType >, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
AddHit(const ResultType &inResult)=0CollisionCollector< ResultTypeArg, TraitsType >pure virtual
CollisionCollector()=defaultCollisionCollector< ResultTypeArg, TraitsType >
CollisionCollector(const CollisionCollector< ResultTypeArg2, TraitsType > &inRHS)CollisionCollector< ResultTypeArg, TraitsType >inlineexplicit
CollisionCollector(const CollisionCollector< ResultTypeArg, TraitsType > &inRHS)=defaultCollisionCollector< ResultTypeArg, TraitsType >
ForceEarlyOut()CollisionCollector< ResultTypeArg, TraitsType >inline
GetContext() constCollisionCollector< ResultTypeArg, TraitsType >inline
GetEarlyOutFraction() constCollisionCollector< ResultTypeArg, TraitsType >inline
GetPositiveEarlyOutFraction() constCollisionCollector< ResultTypeArg, TraitsType >inline
OnBody(const Body &inBody)CollisionCollector< ResultTypeArg, TraitsType >inlinevirtual
Reset()CollisionCollector< ResultTypeArg, TraitsType >inlinevirtual
ResetEarlyOutFraction(float inFraction=TraitsType::InitialEarlyOutFraction)CollisionCollector< ResultTypeArg, TraitsType >inline
ResultType typedefCollisionCollector< ResultTypeArg, TraitsType >
SetContext(const TransformedShape *inContext)CollisionCollector< ResultTypeArg, TraitsType >inline
SetUserData(uint64 inUserData)CollisionCollector< ResultTypeArg, TraitsType >inlinevirtual
ShouldEarlyOut() constCollisionCollector< ResultTypeArg, TraitsType >inline
UpdateEarlyOutFraction(float inFraction)CollisionCollector< ResultTypeArg, TraitsType >inline
~CollisionCollector()=defaultCollisionCollector< ResultTypeArg, TraitsType >virtual
+
+ + + + diff --git a/class_collision_collector.html b/class_collision_collector.html new file mode 100644 index 000000000..ab654351d --- /dev/null +++ b/class_collision_collector.html @@ -0,0 +1,688 @@ + + + + + + + +Jolt Physics: CollisionCollector< ResultTypeArg, TraitsType > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionCollector< ResultTypeArg, TraitsType > Class Template Referenceabstract
+
+
+ +

Virtual interface that allows collecting multiple collision results. + More...

+ +

#include <CollisionCollector.h>

+
+Inheritance diagram for CollisionCollector< ResultTypeArg, TraitsType >:
+
+
+ + +InternalEdgeRemovingCollector + +
+ + + + + +

+Public Types

using ResultType = ResultTypeArg
 Declare ResultType so that derived classes can use it.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 CollisionCollector ()=default
 Default constructor.
 
template<class ResultTypeArg2 >
 CollisionCollector (const CollisionCollector< ResultTypeArg2, TraitsType > &inRHS)
 Constructor to initialize from another collector.
 
 CollisionCollector (const CollisionCollector< ResultTypeArg, TraitsType > &inRHS)=default
 
virtual ~CollisionCollector ()=default
 Destructor.
 
virtual void Reset ()
 If you want to reuse this collector, call Reset()
 
virtual void OnBody (const Body &inBody)
 
void SetContext (const TransformedShape *inContext)
 Set by the collision detection functions to the current TransformedShape that we're colliding against before calling the AddHit function.
 
const TransformedShapeGetContext () const
 
virtual void SetUserData (uint64 inUserData)
 This function can be used to set some user data on the collision collector.
 
virtual void AddHit (const ResultType &inResult)=0
 This function will be called for every hit found, it's up to the application to decide how to store the hit.
 
void UpdateEarlyOutFraction (float inFraction)
 Update the early out fraction (should be lower than before)
 
void ResetEarlyOutFraction (float inFraction=TraitsType::InitialEarlyOutFraction)
 Reset the early out fraction to a specific value.
 
void ForceEarlyOut ()
 Force the collision detection algorithm to terminate as soon as possible. Call this from the AddHit function when a satisfying hit is found.
 
bool ShouldEarlyOut () const
 When true, the collector will no longer accept any additional hits and the collision detection routine should early out as soon as possible.
 
float GetEarlyOutFraction () const
 Get the current early out value.
 
float GetPositiveEarlyOutFraction () const
 Get the current early out value but make sure it's bigger than zero, this is used for shape casting as negative values are used for penetration.
 
+

Detailed Description

+
template<class ResultTypeArg, class TraitsType>
+class CollisionCollector< ResultTypeArg, TraitsType >

Virtual interface that allows collecting multiple collision results.

+

Member Typedef Documentation

+ +

◆ ResultType

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + +
using CollisionCollector< ResultTypeArg, TraitsType >::ResultType = ResultTypeArg
+
+ +

Declare ResultType so that derived classes can use it.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CollisionCollector() [1/3]

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + +
CollisionCollector< ResultTypeArg, TraitsType >::CollisionCollector ()
+
+default
+
+ +

Default constructor.

+ +
+
+ +

◆ CollisionCollector() [2/3]

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+
+template<class ResultTypeArg2 >
+ + + + + +
+ + + + + + + + +
CollisionCollector< ResultTypeArg, TraitsType >::CollisionCollector (const CollisionCollector< ResultTypeArg2, TraitsType > & inRHS)
+
+inlineexplicit
+
+ +

Constructor to initialize from another collector.

+ +
+
+ +

◆ CollisionCollector() [3/3]

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + + +
CollisionCollector< ResultTypeArg, TraitsType >::CollisionCollector (const CollisionCollector< ResultTypeArg, TraitsType > & inRHS)
+
+default
+
+ +
+
+ +

◆ ~CollisionCollector()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + +
virtual CollisionCollector< ResultTypeArg, TraitsType >::~CollisionCollector ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ AddHit()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + + +
virtual void CollisionCollector< ResultTypeArg, TraitsType >::AddHit (const ResultTypeinResult)
+
+pure virtual
+
+ +

This function will be called for every hit found, it's up to the application to decide how to store the hit.

+ +
+
+ +

◆ ForceEarlyOut()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + +
void CollisionCollector< ResultTypeArg, TraitsType >::ForceEarlyOut ()
+
+inline
+
+ +

Force the collision detection algorithm to terminate as soon as possible. Call this from the AddHit function when a satisfying hit is found.

+ +
+
+ +

◆ GetContext()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + +
const TransformedShape * CollisionCollector< ResultTypeArg, TraitsType >::GetContext () const
+
+inline
+
+ +
+
+ +

◆ GetEarlyOutFraction()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + +
float CollisionCollector< ResultTypeArg, TraitsType >::GetEarlyOutFraction () const
+
+inline
+
+ +

Get the current early out value.

+ +
+
+ +

◆ GetPositiveEarlyOutFraction()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + +
float CollisionCollector< ResultTypeArg, TraitsType >::GetPositiveEarlyOutFraction () const
+
+inline
+
+ +

Get the current early out value but make sure it's bigger than zero, this is used for shape casting as negative values are used for penetration.

+ +
+
+ +

◆ OnBody()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + + +
virtual void CollisionCollector< ResultTypeArg, TraitsType >::OnBody (const BodyinBody)
+
+inlinevirtual
+
+

When running a query through the NarrowPhaseQuery class, this will be called for every body that is potentially colliding. It allows collecting additional information needed by the collision collector implementation from the body under lock protection before AddHit is called (e.g. the user data pointer or the velocity of the body).

+ +

Reimplemented in InternalEdgeRemovingCollector.

+ +
+
+ +

◆ Reset()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + +
virtual void CollisionCollector< ResultTypeArg, TraitsType >::Reset ()
+
+inlinevirtual
+
+ +

If you want to reuse this collector, call Reset()

+ +

Reimplemented in InternalEdgeRemovingCollector.

+ +
+
+ +

◆ ResetEarlyOutFraction()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + + +
void CollisionCollector< ResultTypeArg, TraitsType >::ResetEarlyOutFraction (float inFraction = TraitsType::InitialEarlyOutFraction)
+
+inline
+
+ +

Reset the early out fraction to a specific value.

+ +
+
+ +

◆ SetContext()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + + +
void CollisionCollector< ResultTypeArg, TraitsType >::SetContext (const TransformedShapeinContext)
+
+inline
+
+ +

Set by the collision detection functions to the current TransformedShape that we're colliding against before calling the AddHit function.

+ +
+
+ +

◆ SetUserData()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + + +
virtual void CollisionCollector< ResultTypeArg, TraitsType >::SetUserData (uint64 inUserData)
+
+inlinevirtual
+
+ +

This function can be used to set some user data on the collision collector.

+ +
+
+ +

◆ ShouldEarlyOut()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + +
bool CollisionCollector< ResultTypeArg, TraitsType >::ShouldEarlyOut () const
+
+inline
+
+ +

When true, the collector will no longer accept any additional hits and the collision detection routine should early out as soon as possible.

+ +
+
+ +

◆ UpdateEarlyOutFraction()

+ +
+
+
+template<class ResultTypeArg , class TraitsType >
+ + + + + +
+ + + + + + + + +
void CollisionCollector< ResultTypeArg, TraitsType >::UpdateEarlyOutFraction (float inFraction)
+
+inline
+
+ +

Update the early out fraction (should be lower than before)

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_collision_collector.js b/class_collision_collector.js new file mode 100644 index 000000000..70a2e8d85 --- /dev/null +++ b/class_collision_collector.js @@ -0,0 +1,20 @@ +var class_collision_collector = +[ + [ "ResultType", "class_collision_collector.html#aca5d333c728a1e1768694c8845d86783", null ], + [ "CollisionCollector", "class_collision_collector.html#a1da599bacd865c579f31e64676e36206", null ], + [ "CollisionCollector", "class_collision_collector.html#a7d7b02e890a7ea24b0030027ce4851f9", null ], + [ "CollisionCollector", "class_collision_collector.html#a9ece66bb7cac504d660f412ded03e024", null ], + [ "~CollisionCollector", "class_collision_collector.html#a428497d94c0d54c4fb4e7ce6a016fc0d", null ], + [ "AddHit", "class_collision_collector.html#a762c35402676662897e50dd8224e496e", null ], + [ "ForceEarlyOut", "class_collision_collector.html#a04a9260170d7c96389b50c6f6843c8b5", null ], + [ "GetContext", "class_collision_collector.html#ab9bfe5f6799afc12509d8dbad2c5b90b", null ], + [ "GetEarlyOutFraction", "class_collision_collector.html#ab972bb0e68e602c5eea898dfb7166d07", null ], + [ "GetPositiveEarlyOutFraction", "class_collision_collector.html#aeb1fb262127298ec8bc296ead30a2e77", null ], + [ "OnBody", "class_collision_collector.html#ac2986bb5d0b4f6147d2507571ee3a014", null ], + [ "Reset", "class_collision_collector.html#a77f6668a80319dfb85f68b97c7b6d103", null ], + [ "ResetEarlyOutFraction", "class_collision_collector.html#a07e4d9859fe39cfde6674ebb3ece445a", null ], + [ "SetContext", "class_collision_collector.html#ada5357990f959132a05d4d4d21f8c7b3", null ], + [ "SetUserData", "class_collision_collector.html#aefb07c8a9dd625efefeb0f37ee2957d6", null ], + [ "ShouldEarlyOut", "class_collision_collector.html#a45cb1cfbb5ec957d3c66b65d2333d825", null ], + [ "UpdateEarlyOutFraction", "class_collision_collector.html#ac46233c07f2d69db516879fbbcef8be1", null ] +]; \ No newline at end of file diff --git a/class_collision_collector.png b/class_collision_collector.png new file mode 100644 index 000000000..7b6794a54 Binary files /dev/null and b/class_collision_collector.png differ diff --git a/class_collision_collector_traits_cast_ray-members.html b/class_collision_collector_traits_cast_ray-members.html new file mode 100644 index 000000000..11441d20e --- /dev/null +++ b/class_collision_collector_traits_cast_ray-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionCollectorTraitsCastRay Member List
+
+
+ +

This is the complete list of members for CollisionCollectorTraitsCastRay, including all inherited members.

+ + + +
InitialEarlyOutFractionCollisionCollectorTraitsCastRaystatic
ShouldEarlyOutFractionCollisionCollectorTraitsCastRaystatic
+
+ + + + diff --git a/class_collision_collector_traits_cast_ray.html b/class_collision_collector_traits_cast_ray.html new file mode 100644 index 000000000..75f54a39b --- /dev/null +++ b/class_collision_collector_traits_cast_ray.html @@ -0,0 +1,187 @@ + + + + + + + +Jolt Physics: CollisionCollectorTraitsCastRay Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionCollectorTraitsCastRay Class Reference
+
+
+ +

Traits to use for CastRay. + More...

+ +

#include <CollisionCollector.h>

+ + + + + + + + +

+Static Public Attributes

static constexpr float InitialEarlyOutFraction = 1.0f + FLT_EPSILON
 For rays the early out fraction is the fraction along the line to order hits.
 
static constexpr float ShouldEarlyOutFraction = 0.0f
 Closest hit: Fraction is 0.
 
+

Detailed Description

+

Traits to use for CastRay.

+

Member Data Documentation

+ +

◆ InitialEarlyOutFraction

+ +
+
+ + + + + +
+ + + + +
constexpr float CollisionCollectorTraitsCastRay::InitialEarlyOutFraction = 1.0f + FLT_EPSILON
+
+staticconstexpr
+
+ +

For rays the early out fraction is the fraction along the line to order hits.

+

Furthest hit: Fraction is 1 + epsilon

+ +
+
+ +

◆ ShouldEarlyOutFraction

+ +
+
+ + + + + +
+ + + + +
constexpr float CollisionCollectorTraitsCastRay::ShouldEarlyOutFraction = 0.0f
+
+staticconstexpr
+
+ +

Closest hit: Fraction is 0.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_collision_collector_traits_cast_shape-members.html b/class_collision_collector_traits_cast_shape-members.html new file mode 100644 index 000000000..3602ba756 --- /dev/null +++ b/class_collision_collector_traits_cast_shape-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionCollectorTraitsCastShape Member List
+
+
+ +

This is the complete list of members for CollisionCollectorTraitsCastShape, including all inherited members.

+ + + +
InitialEarlyOutFractionCollisionCollectorTraitsCastShapestatic
ShouldEarlyOutFractionCollisionCollectorTraitsCastShapestatic
+
+ + + + diff --git a/class_collision_collector_traits_cast_shape.html b/class_collision_collector_traits_cast_shape.html new file mode 100644 index 000000000..454768487 --- /dev/null +++ b/class_collision_collector_traits_cast_shape.html @@ -0,0 +1,187 @@ + + + + + + + +Jolt Physics: CollisionCollectorTraitsCastShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionCollectorTraitsCastShape Class Reference
+
+
+ +

Traits to use for CastShape. + More...

+ +

#include <CollisionCollector.h>

+ + + + + + + + +

+Static Public Attributes

static constexpr float InitialEarlyOutFraction = 1.0f + FLT_EPSILON
 For rays the early out fraction is the fraction along the line to order hits.
 
static constexpr float ShouldEarlyOutFraction = -FLT_MAX
 Deepest hit: Penetration is infinite.
 
+

Detailed Description

+

Traits to use for CastShape.

+

Member Data Documentation

+ +

◆ InitialEarlyOutFraction

+ +
+
+ + + + + +
+ + + + +
constexpr float CollisionCollectorTraitsCastShape::InitialEarlyOutFraction = 1.0f + FLT_EPSILON
+
+staticconstexpr
+
+ +

For rays the early out fraction is the fraction along the line to order hits.

+

Furthest hit: Fraction is 1 + epsilon

+ +
+
+ +

◆ ShouldEarlyOutFraction

+ +
+
+ + + + + +
+ + + + +
constexpr float CollisionCollectorTraitsCastShape::ShouldEarlyOutFraction = -FLT_MAX
+
+staticconstexpr
+
+ +

Deepest hit: Penetration is infinite.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_collision_collector_traits_collide_shape-members.html b/class_collision_collector_traits_collide_shape-members.html new file mode 100644 index 000000000..5a8ffa9b4 --- /dev/null +++ b/class_collision_collector_traits_collide_shape-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionCollectorTraitsCollideShape Member List
+
+
+ +

This is the complete list of members for CollisionCollectorTraitsCollideShape, including all inherited members.

+ + + +
InitialEarlyOutFractionCollisionCollectorTraitsCollideShapestatic
ShouldEarlyOutFractionCollisionCollectorTraitsCollideShapestatic
+
+ + + + diff --git a/class_collision_collector_traits_collide_shape.html b/class_collision_collector_traits_collide_shape.html new file mode 100644 index 000000000..a07fa7f9e --- /dev/null +++ b/class_collision_collector_traits_collide_shape.html @@ -0,0 +1,187 @@ + + + + + + + +Jolt Physics: CollisionCollectorTraitsCollideShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionCollectorTraitsCollideShape Class Reference
+
+
+ +

Traits to use for CollideShape. + More...

+ +

#include <CollisionCollector.h>

+ + + + + + + + +

+Static Public Attributes

static constexpr float InitialEarlyOutFraction = FLT_MAX
 For shape collisions we use -penetration depth to order hits.
 
static constexpr float ShouldEarlyOutFraction = -FLT_MAX
 Deepest hit: Penetration is infinite.
 
+

Detailed Description

+

Traits to use for CollideShape.

+

Member Data Documentation

+ +

◆ InitialEarlyOutFraction

+ +
+
+ + + + + +
+ + + + +
constexpr float CollisionCollectorTraitsCollideShape::InitialEarlyOutFraction = FLT_MAX
+
+staticconstexpr
+
+ +

For shape collisions we use -penetration depth to order hits.

+

Most shallow hit: Separation is infinite

+ +
+
+ +

◆ ShouldEarlyOutFraction

+ +
+
+ + + + + +
+ + + + +
constexpr float CollisionCollectorTraitsCollideShape::ShouldEarlyOutFraction = -FLT_MAX
+
+staticconstexpr
+
+ +

Deepest hit: Penetration is infinite.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_collision_dispatch-members.html b/class_collision_dispatch-members.html new file mode 100644 index 000000000..ede6a3d81 --- /dev/null +++ b/class_collision_dispatch-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionDispatch Member List
+
+
+ +

This is the complete list of members for CollisionDispatch, including all inherited members.

+ + + + + + + + + + + +
CastShape typedefCollisionDispatch
CollideShape typedefCollisionDispatch
sCastShapeVsShapeLocalSpace(const ShapeCast &inShapeCastLocal, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)CollisionDispatchinlinestatic
sCastShapeVsShapeWorldSpace(const ShapeCast &inShapeCastWorld, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)CollisionDispatchinlinestatic
sCollideShapeVsShape(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={ })CollisionDispatchinlinestatic
sInit()CollisionDispatchstatic
sRegisterCastShape(EShapeSubType inType1, EShapeSubType inType2, CastShape inFunction)CollisionDispatchinlinestatic
sRegisterCollideShape(EShapeSubType inType1, EShapeSubType inType2, CollideShape inFunction)CollisionDispatchinlinestatic
sReversedCastShape(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)CollisionDispatchstatic
sReversedCollideShape(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)CollisionDispatchstatic
+
+ + + + diff --git a/class_collision_dispatch.html b/class_collision_dispatch.html new file mode 100644 index 000000000..7f9127f4a --- /dev/null +++ b/class_collision_dispatch.html @@ -0,0 +1,761 @@ + + + + + + + +Jolt Physics: CollisionDispatch Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionDispatch Class Reference
+
+
+ +

Dispatch function, main function to handle collisions between shapes. + More...

+ +

#include <CollisionDispatch.h>

+ + + + + + + + +

+Public Types

using CollideShape = void(*)(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)
 Function that collides 2 shapes (see sCollideShapeVsShape)
 
using CastShape = void(*)(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)
 Function that casts a shape vs another shape (see sCastShapeVsShapeLocalSpace)
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void sCollideShapeVsShape (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={ })
 
static void sCastShapeVsShapeLocalSpace (const ShapeCast &inShapeCastLocal, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)
 
static void sCastShapeVsShapeWorldSpace (const ShapeCast &inShapeCastWorld, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)
 
static void sInit ()
 Initialize all collision functions with a function that asserts and returns no collision.
 
static void sRegisterCollideShape (EShapeSubType inType1, EShapeSubType inType2, CollideShape inFunction)
 Register a collide shape function in the collision table.
 
static void sRegisterCastShape (EShapeSubType inType1, EShapeSubType inType2, CastShape inFunction)
 Register a cast shape function in the collision table.
 
static void sReversedCollideShape (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)
 An implementation of CollideShape that swaps inShape1 and inShape2 and swaps the result back, can be registered if the collision function only exists the other way around.
 
static void sReversedCastShape (const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)
 An implementation of CastShape that swaps inShape1 and inShape2 and swaps the result back, can be registered if the collision function only exists the other way around.
 
+

Detailed Description

+

Dispatch function, main function to handle collisions between shapes.

+

Member Typedef Documentation

+ +

◆ CastShape

+ +
+
+ + + + +
using CollisionDispatch::CastShape = void (*)(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const Shape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)
+
+ +

Function that casts a shape vs another shape (see sCastShapeVsShapeLocalSpace)

+ +
+
+ +

◆ CollideShape

+ +
+
+ + + + +
using CollisionDispatch::CollideShape = void (*)(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)
+
+ +

Function that collides 2 shapes (see sCollideShapeVsShape)

+ +
+
+

Member Function Documentation

+ +

◆ sCastShapeVsShapeLocalSpace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void CollisionDispatch::sCastShapeVsShapeLocalSpace (const ShapeCastinShapeCastLocal,
const ShapeCastSettingsinShapeCastSettings,
const ShapeinShape,
Vec3Arg inScale,
const ShapeFilterinShapeFilter,
Mat44Arg inCenterOfMassTransform2,
const SubShapeIDCreatorinSubShapeIDCreator1,
const SubShapeIDCreatorinSubShapeIDCreator2,
CastShapeCollectorioCollector 
)
+
+inlinestatic
+
+

Cast a shape against this shape, passes any hits found to ioCollector. Note: This version takes the shape cast in local space relative to the center of mass of inShape, take a look at sCastShapeVsShapeWorldSpace if you have a shape cast in world space.

Parameters
+ + + + + + + + + + +
inShapeCastLocalThe shape to cast against the other shape and its start and direction.
inShapeCastSettingsSettings for performing the cast
inShapeThe shape to cast against.
inScaleLocal space scale for the shape to cast against (scales relative to its center of mass).
inShapeFilterallows selectively disabling collisions between pairs of (sub) shapes.
inCenterOfMassTransform2Is the center of mass transform of shape 2 (excluding scale), this is used to provide a transform to the shape cast result so that local hit result quantities can be transformed into world space.
inSubShapeIDCreator1Class that tracks the current sub shape ID for the casting shape
inSubShapeIDCreator2Class that tracks the current sub shape ID for the shape we're casting against
ioCollectorThe collector that receives the results.
+
+
+ +
+
+ +

◆ sCastShapeVsShapeWorldSpace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void CollisionDispatch::sCastShapeVsShapeWorldSpace (const ShapeCastinShapeCastWorld,
const ShapeCastSettingsinShapeCastSettings,
const ShapeinShape,
Vec3Arg inScale,
const ShapeFilterinShapeFilter,
Mat44Arg inCenterOfMassTransform2,
const SubShapeIDCreatorinSubShapeIDCreator1,
const SubShapeIDCreatorinSubShapeIDCreator2,
CastShapeCollectorioCollector 
)
+
+inlinestatic
+
+

See: sCastShapeVsShapeLocalSpace. The only difference is that the shape cast (inShapeCastWorld) is provided in world space. Note: A shape cast contains the center of mass start of the shape, if you have the world transform of the shape you probably want to construct it using ShapeCast::sFromWorldTransform.

+ +
+
+ +

◆ sCollideShapeVsShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void CollisionDispatch::sCollideShapeVsShape (const ShapeinShape1,
const ShapeinShape2,
Vec3Arg inScale1,
Vec3Arg inScale2,
Mat44Arg inCenterOfMassTransform1,
Mat44Arg inCenterOfMassTransform2,
const SubShapeIDCreatorinSubShapeIDCreator1,
const SubShapeIDCreatorinSubShapeIDCreator2,
const CollideShapeSettingsinCollideShapeSettings,
CollideShapeCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
)
+
+inlinestatic
+
+

Collide 2 shapes and pass any collision on to ioCollector

Parameters
+ + + + + + + + + + + + +
inShape1The first shape
inShape2The second shape
inScale1Local space scale of shape 1 (scales relative to its center of mass)
inScale2Local space scale of shape 2 (scales relative to its center of mass)
inCenterOfMassTransform1Transform to transform center of mass of shape 1 into world space
inCenterOfMassTransform2Transform to transform center of mass of shape 2 into world space
inSubShapeIDCreator1Class that tracks the current sub shape ID for shape 1
inSubShapeIDCreator2Class that tracks the current sub shape ID for shape 2
inCollideShapeSettingsOptions for the CollideShape test
ioCollectorThe collector that receives the results.
inShapeFilterallows selectively disabling collisions between pairs of (sub) shapes.
+
+
+ +
+
+ +

◆ sInit()

+ +
+
+ + + + + +
+ + + + + + + +
void CollisionDispatch::sInit ()
+
+static
+
+ +

Initialize all collision functions with a function that asserts and returns no collision.

+ +
+
+ +

◆ sRegisterCastShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void CollisionDispatch::sRegisterCastShape (EShapeSubType inType1,
EShapeSubType inType2,
CastShape inFunction 
)
+
+inlinestatic
+
+ +

Register a cast shape function in the collision table.

+ +
+
+ +

◆ sRegisterCollideShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void CollisionDispatch::sRegisterCollideShape (EShapeSubType inType1,
EShapeSubType inType2,
CollideShape inFunction 
)
+
+inlinestatic
+
+ +

Register a collide shape function in the collision table.

+ +
+
+ +

◆ sReversedCastShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CollisionDispatch::sReversedCastShape (const ShapeCastinShapeCast,
const ShapeCastSettingsinShapeCastSettings,
const ShapeinShape,
Vec3Arg inScale,
const ShapeFilterinShapeFilter,
Mat44Arg inCenterOfMassTransform2,
const SubShapeIDCreatorinSubShapeIDCreator1,
const SubShapeIDCreatorinSubShapeIDCreator2,
CastShapeCollectorioCollector 
)
+
+static
+
+ +

An implementation of CastShape that swaps inShape1 and inShape2 and swaps the result back, can be registered if the collision function only exists the other way around.

+ +
+
+ +

◆ sReversedCollideShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CollisionDispatch::sReversedCollideShape (const ShapeinShape1,
const ShapeinShape2,
Vec3Arg inScale1,
Vec3Arg inScale2,
Mat44Arg inCenterOfMassTransform1,
Mat44Arg inCenterOfMassTransform2,
const SubShapeIDCreatorinSubShapeIDCreator1,
const SubShapeIDCreatorinSubShapeIDCreator2,
const CollideShapeSettingsinCollideShapeSettings,
CollideShapeCollectorioCollector,
const ShapeFilterinShapeFilter 
)
+
+static
+
+ +

An implementation of CollideShape that swaps inShape1 and inShape2 and swaps the result back, can be registered if the collision function only exists the other way around.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_collision_dispatch.js b/class_collision_dispatch.js new file mode 100644 index 000000000..96f286347 --- /dev/null +++ b/class_collision_dispatch.js @@ -0,0 +1,5 @@ +var class_collision_dispatch = +[ + [ "CastShape", "class_collision_dispatch.html#a9b0ecb3f10cdac7c5cf648cb2fa0b8e8", null ], + [ "CollideShape", "class_collision_dispatch.html#ad1a72bfcb8688f4eaf881aad847c2319", null ] +]; \ No newline at end of file diff --git a/class_collision_group-members.html b/class_collision_group-members.html new file mode 100644 index 000000000..7ca762dad --- /dev/null +++ b/class_collision_group-members.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CollisionGroup Member List
+
+
+ +

This is the complete list of members for CollisionGroup, including all inherited members.

+ + + + + + + + + + + + + + + + +
CanCollide(const CollisionGroup &inOther) constCollisionGroupinline
cInvalidGroupCollisionGroupstatic
cInvalidSubGroupCollisionGroupstatic
CollisionGroup()=defaultCollisionGroup
CollisionGroup(const GroupFilter *inFilter, GroupID inGroupID, SubGroupID inSubGroupID)CollisionGroupinline
GetGroupFilter() constCollisionGroupinline
GetGroupID() constCollisionGroupinline
GetSubGroupID() constCollisionGroupinline
GroupID typedefCollisionGroup
RestoreBinaryState(StreamIn &inStream)CollisionGroup
SaveBinaryState(StreamOut &inStream) constCollisionGroup
SetGroupFilter(const GroupFilter *inFilter)CollisionGroupinline
SetGroupID(GroupID inID)CollisionGroupinline
SetSubGroupID(SubGroupID inID)CollisionGroupinline
SubGroupID typedefCollisionGroup
+
+ + + + diff --git a/class_collision_group.html b/class_collision_group.html new file mode 100644 index 000000000..58d4e2a48 --- /dev/null +++ b/class_collision_group.html @@ -0,0 +1,556 @@ + + + + + + + +Jolt Physics: CollisionGroup Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CollisionGroup Class Reference
+
+
+ +

#include <CollisionGroup.h>

+ + + + + + +

+Public Types

using GroupID = uint32
 
using SubGroupID = uint32
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 CollisionGroup ()=default
 Default constructor.
 
 CollisionGroup (const GroupFilter *inFilter, GroupID inGroupID, SubGroupID inSubGroupID)
 Construct with all properties.
 
void SetGroupFilter (const GroupFilter *inFilter)
 Set the collision group filter.
 
const GroupFilterGetGroupFilter () const
 Get the collision group filter.
 
void SetGroupID (GroupID inID)
 Set the main group id for this object.
 
GroupID GetGroupID () const
 
void SetSubGroupID (SubGroupID inID)
 Add this object to a sub group.
 
SubGroupID GetSubGroupID () const
 
bool CanCollide (const CollisionGroup &inOther) const
 Check if this object collides with another object.
 
void SaveBinaryState (StreamOut &inStream) const
 Saves the state of this object in binary form to inStream. Does not save group filter.
 
void RestoreBinaryState (StreamIn &inStream)
 Restore the state of this object from inStream. Does not save group filter.
 
+ + + + + +

+Static Public Attributes

static const GroupID cInvalidGroup = ~GroupID(0)
 
static const SubGroupID cInvalidSubGroup = ~SubGroupID(0)
 
+

Detailed Description

+

Two objects collide with each other if:

    +
  • Both don't have a group filter
  • +
  • The first group filter says that the objects can collide
  • +
  • Or if there's no filter for the first object, the second group filter says the objects can collide
  • +
+

Member Typedef Documentation

+ +

◆ GroupID

+ +
+
+ + + + +
using CollisionGroup::GroupID = uint32
+
+ +
+
+ +

◆ SubGroupID

+ +
+
+ + + + +
using CollisionGroup::SubGroupID = uint32
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CollisionGroup() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
CollisionGroup::CollisionGroup ()
+
+default
+
+ +

Default constructor.

+ +
+
+ +

◆ CollisionGroup() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
CollisionGroup::CollisionGroup (const GroupFilterinFilter,
GroupID inGroupID,
SubGroupID inSubGroupID 
)
+
+inline
+
+ +

Construct with all properties.

+ +
+
+

Member Function Documentation

+ +

◆ CanCollide()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CollisionGroup::CanCollide (const CollisionGroupinOther) const
+
+inline
+
+ +

Check if this object collides with another object.

+ +
+
+ +

◆ GetGroupFilter()

+ +
+
+ + + + + +
+ + + + + + + +
const GroupFilter * CollisionGroup::GetGroupFilter () const
+
+inline
+
+ +

Get the collision group filter.

+ +
+
+ +

◆ GetGroupID()

+ +
+
+ + + + + +
+ + + + + + + +
GroupID CollisionGroup::GetGroupID () const
+
+inline
+
+ +
+
+ +

◆ GetSubGroupID()

+ +
+
+ + + + + +
+ + + + + + + +
SubGroupID CollisionGroup::GetSubGroupID () const
+
+inline
+
+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void CollisionGroup::RestoreBinaryState (StreamIninStream)
+
+ +

Restore the state of this object from inStream. Does not save group filter.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void CollisionGroup::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the state of this object in binary form to inStream. Does not save group filter.

+ +
+
+ +

◆ SetGroupFilter()

+ +
+
+ + + + + +
+ + + + + + + + +
void CollisionGroup::SetGroupFilter (const GroupFilterinFilter)
+
+inline
+
+ +

Set the collision group filter.

+ +
+
+ +

◆ SetGroupID()

+ +
+
+ + + + + +
+ + + + + + + + +
void CollisionGroup::SetGroupID (GroupID inID)
+
+inline
+
+ +

Set the main group id for this object.

+ +
+
+ +

◆ SetSubGroupID()

+ +
+
+ + + + + +
+ + + + + + + + +
void CollisionGroup::SetSubGroupID (SubGroupID inID)
+
+inline
+
+ +

Add this object to a sub group.

+ +
+
+

Member Data Documentation

+ +

◆ cInvalidGroup

+ +
+
+ + + + + +
+ + + + +
const GroupID CollisionGroup::cInvalidGroup = ~GroupID(0)
+
+static
+
+ +
+
+ +

◆ cInvalidSubGroup

+ +
+
+ + + + + +
+ + + + +
const SubGroupID CollisionGroup::cInvalidSubGroup = ~SubGroupID(0)
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_collision_group.js b/class_collision_group.js new file mode 100644 index 000000000..2b62d50b7 --- /dev/null +++ b/class_collision_group.js @@ -0,0 +1,16 @@ +var class_collision_group = +[ + [ "GroupID", "class_collision_group.html#ab44e31c9fa83c4818b1560d71c15dddd", null ], + [ "SubGroupID", "class_collision_group.html#ae26aaf0a13015f02f01c0e128ccebcfd", null ], + [ "CollisionGroup", "class_collision_group.html#ad9f6cce170470d571b3927c44d7104ec", null ], + [ "CollisionGroup", "class_collision_group.html#a5428cf2e49b467026e833c0955d35b30", null ], + [ "CanCollide", "class_collision_group.html#aa7e60aa0b9f6e5563ab4ca690c8e2b56", null ], + [ "GetGroupFilter", "class_collision_group.html#abcda9f0cd8d5d8b2ee42bee0a19430a7", null ], + [ "GetGroupID", "class_collision_group.html#a1521cec7d03c83265aecca64ec684433", null ], + [ "GetSubGroupID", "class_collision_group.html#a156fd729674403783be12fe41ee5b288", null ], + [ "RestoreBinaryState", "class_collision_group.html#abff4339a09c8ad38cc7aee4449d5ecaf", null ], + [ "SaveBinaryState", "class_collision_group.html#a687bdb750277759925f00c5fb55b6835", null ], + [ "SetGroupFilter", "class_collision_group.html#a24632cad19f63669929509eceb904290", null ], + [ "SetGroupID", "class_collision_group.html#ab49afbb0cbf8526e2b1ee89d8f2a34dd", null ], + [ "SetSubGroupID", "class_collision_group.html#a9ac2eb88530e8281a130bd73539d127b", null ] +]; \ No newline at end of file diff --git a/class_color-members.html b/class_color-members.html new file mode 100644 index 000000000..9fc06ad1f --- /dev/null +++ b/class_color-members.html @@ -0,0 +1,152 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Color Member List
+
+
+ +

This is the complete list of members for Color, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aColor
bColor
Color()=defaultColor
Color(const Color &inRHS)=defaultColor
Color(uint32 inColor)Colorinlineexplicit
Color(uint8 inRed, uint8 inGreen, uint8 inBlue, uint8 inAlpha=255)Colorinline
Color(ColorArg inRHS, uint8 inAlpha)Colorinline
gColor
GetIntensity() constColorinline
GetUInt32() constColorinline
mU32Color
operator!=(ColorArg inRHS) constColorinline
operator()(uint inIdx) constColorinline
operator()(uint inIdx)Colorinline
operator*(const Color &inRHS) constColorinline
operator*(float inIntensity) constColorinline
operator=(const Color &inRHS)=defaultColor
operator==(ColorArg inRHS) constColorinline
rColor
sBlackColorstatic
sBlueColorstatic
sCyanColorstatic
sDarkBlueColorstatic
sDarkGreenColorstatic
sDarkOrangeColorstatic
sDarkRedColorstatic
sGetDistinctColor(int inIndex)Colorstatic
sGreenColorstatic
sGreyColorstatic
sLightGreyColorstatic
sOrangeColorstatic
sPurpleColorstatic
sRedColorstatic
sWhiteColorstatic
sYellowColorstatic
ToVec4() constColorinline
+
+ + + + diff --git a/class_color.html b/class_color.html new file mode 100644 index 000000000..d21b7e72e --- /dev/null +++ b/class_color.html @@ -0,0 +1,1131 @@ + + + + + + + +Jolt Physics: Color Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Color Class Reference
+
+
+ +

Class that holds an RGBA color with 8-bits per component. + More...

+ +

#include <Color.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Color ()=default
 Constructors.
 
 Color (const Color &inRHS)=default
 
Coloroperator= (const Color &inRHS)=default
 
constexpr Color (uint32 inColor)
 
constexpr Color (uint8 inRed, uint8 inGreen, uint8 inBlue, uint8 inAlpha=255)
 
constexpr Color (ColorArg inRHS, uint8 inAlpha)
 
bool operator== (ColorArg inRHS) const
 Comparison.
 
bool operator!= (ColorArg inRHS) const
 
uint32 GetUInt32 () const
 Convert to uint32.
 
uint8 operator() (uint inIdx) const
 Element access, 0 = red, 1 = green, 2 = blue, 3 = alpha.
 
uint8operator() (uint inIdx)
 
Color operator* (const Color &inRHS) const
 Multiply two colors.
 
Color operator* (float inIntensity) const
 Multiply color with intensity in the range [0, 1].
 
Vec4 ToVec4 () const
 Convert to Vec4 with range [0, 1].
 
uint8 GetIntensity () const
 Get grayscale intensity of color.
 
+ + + + +

+Static Public Member Functions

static Color sGetDistinctColor (int inIndex)
 Get a visually distinct color.
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

union { 
 
   uint32   mU32 
 Combined value for red, green, blue and alpha. More...
 
   struct { 
 
      uint8   r 
 Red channel. More...
 
      uint8   g 
 Green channel. More...
 
      uint8   b 
 Blue channel. More...
 
      uint8   a 
 Alpha channel. More...
 
   }  
 
};  
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Attributes

static const Color sBlack
 Predefined colors.
 
static const Color sDarkRed
 
static const Color sRed
 
static const Color sDarkGreen
 
static const Color sGreen
 
static const Color sDarkBlue
 
static const Color sBlue
 
static const Color sYellow
 
static const Color sPurple
 
static const Color sCyan
 
static const Color sOrange
 
static const Color sDarkOrange
 
static const Color sGrey
 
static const Color sLightGrey
 
static const Color sWhite
 
+

Detailed Description

+

Class that holds an RGBA color with 8-bits per component.

+

Constructor & Destructor Documentation

+ +

◆ Color() [1/5]

+ +
+
+ + + + + +
+ + + + + + + +
Color::Color ()
+
+default
+
+ +

Constructors.

+

Intentionally not initialized for performance reasons

+ +
+
+ +

◆ Color() [2/5]

+ +
+
+ + + + + +
+ + + + + + + + +
Color::Color (const ColorinRHS)
+
+default
+
+ +
+
+ +

◆ Color() [3/5]

+ +
+
+ + + + + +
+ + + + + + + + +
constexpr Color::Color (uint32 inColor)
+
+inlineexplicitconstexpr
+
+ +
+
+ +

◆ Color() [4/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
constexpr Color::Color (uint8 inRed,
uint8 inGreen,
uint8 inBlue,
uint8 inAlpha = 255 
)
+
+inlineconstexpr
+
+ +
+
+ +

◆ Color() [5/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
constexpr Color::Color (ColorArg inRHS,
uint8 inAlpha 
)
+
+inlineconstexpr
+
+ +
+
+

Member Function Documentation

+ +

◆ GetIntensity()

+ +
+
+ + + + + +
+ + + + + + + +
uint8 Color::GetIntensity () const
+
+inline
+
+ +

Get grayscale intensity of color.

+ +
+
+ +

◆ GetUInt32()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 Color::GetUInt32 () const
+
+inline
+
+ +

Convert to uint32.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Color::operator!= (ColorArg inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
uint8 & Color::operator() (uint inIdx)
+
+inline
+
+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
uint8 Color::operator() (uint inIdx) const
+
+inline
+
+ +

Element access, 0 = red, 1 = green, 2 = blue, 3 = alpha.

+ +
+
+ +

◆ operator*() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Color Color::operator* (const ColorinRHS) const
+
+inline
+
+ +

Multiply two colors.

+ +
+
+ +

◆ operator*() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Color Color::operator* (float inIntensity) const
+
+inline
+
+ +

Multiply color with intensity in the range [0, 1].

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
Color & Color::operator= (const ColorinRHS)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Color::operator== (ColorArg inRHS) const
+
+inline
+
+ +

Comparison.

+ +
+
+ +

◆ sGetDistinctColor()

+ +
+
+ + + + + +
+ + + + + + + + +
Color Color::sGetDistinctColor (int inIndex)
+
+static
+
+ +

Get a visually distinct color.

+ +
+
+ +

◆ ToVec4()

+ +
+
+ + + + + +
+ + + + + + + +
Vec4 Color::ToVec4 () const
+
+inline
+
+ +

Convert to Vec4 with range [0, 1].

+ +
+
+

Member Data Documentation

+ +

◆ [union]

+ +
+
+ + + + +
union { ... } Color
+
+ +
+
+ +

◆ a

+ +
+
+ + + + +
uint8 Color::a
+
+ +

Alpha channel.

+ +
+
+ +

◆ b

+ +
+
+ + + + +
uint8 Color::b
+
+ +

Blue channel.

+ +
+
+ +

◆ g

+ +
+
+ + + + +
uint8 Color::g
+
+ +

Green channel.

+ +
+
+ +

◆ mU32

+ +
+
+ + + + +
uint32 Color::mU32
+
+ +

Combined value for red, green, blue and alpha.

+ +
+
+ +

◆ r

+ +
+
+ + + + +
uint8 Color::r
+
+ +

Red channel.

+ +
+
+ +

◆ sBlack

+ +
+
+ + + + + +
+ + + + +
JPH_NAMESPACE_BEGIN const Color Color::sBlack
+
+static
+
+ +

Predefined colors.

+ +
+
+ +

◆ sBlue

+ +
+
+ + + + + +
+ + + + +
const Color Color::sBlue
+
+static
+
+ +
+
+ +

◆ sCyan

+ +
+
+ + + + + +
+ + + + +
const Color Color::sCyan
+
+static
+
+ +
+
+ +

◆ sDarkBlue

+ +
+
+ + + + + +
+ + + + +
const Color Color::sDarkBlue
+
+static
+
+ +
+
+ +

◆ sDarkGreen

+ +
+
+ + + + + +
+ + + + +
const Color Color::sDarkGreen
+
+static
+
+ +
+
+ +

◆ sDarkOrange

+ +
+
+ + + + + +
+ + + + +
const Color Color::sDarkOrange
+
+static
+
+ +
+
+ +

◆ sDarkRed

+ +
+
+ + + + + +
+ + + + +
const Color Color::sDarkRed
+
+static
+
+ +
+
+ +

◆ sGreen

+ +
+
+ + + + + +
+ + + + +
const Color Color::sGreen
+
+static
+
+ +
+
+ +

◆ sGrey

+ +
+
+ + + + + +
+ + + + +
const Color Color::sGrey
+
+static
+
+ +
+
+ +

◆ sLightGrey

+ +
+
+ + + + + +
+ + + + +
const Color Color::sLightGrey
+
+static
+
+ +
+
+ +

◆ sOrange

+ +
+
+ + + + + +
+ + + + +
const Color Color::sOrange
+
+static
+
+ +
+
+ +

◆ sPurple

+ +
+
+ + + + + +
+ + + + +
const Color Color::sPurple
+
+static
+
+ +
+
+ +

◆ sRed

+ +
+
+ + + + + +
+ + + + +
const Color Color::sRed
+
+static
+
+ +
+
+ +

◆ sWhite

+ +
+
+ + + + + +
+ + + + +
const Color Color::sWhite
+
+static
+
+ +
+
+ +

◆ sYellow

+ +
+
+ + + + + +
+ + + + +
const Color Color::sYellow
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_color.js b/class_color.js new file mode 100644 index 000000000..692163824 --- /dev/null +++ b/class_color.js @@ -0,0 +1,23 @@ +var class_color = +[ + [ "Color", "class_color.html#a6fae8aa8b75d27cb134234e75b41caf2", null ], + [ "Color", "class_color.html#ab0984656578d1e7f385df33e89b5cea3", null ], + [ "Color", "class_color.html#a79a97521474802216413085579b5ac25", null ], + [ "Color", "class_color.html#affa4da76e6fbf13ef771c90473426362", null ], + [ "Color", "class_color.html#a2f0eb176e87b5a207f349b8117695091", null ], + [ "GetIntensity", "class_color.html#afca651317831a93dba25464c5325f0ce", null ], + [ "GetUInt32", "class_color.html#aedcaed2b19d4b10e7c994ed8ab1ac58d", null ], + [ "operator!=", "class_color.html#a71e5796a05f70a9c800c094ff87a515d", null ], + [ "operator()", "class_color.html#a55d48519d8f98cc395a6b30e87f6a023", null ], + [ "operator()", "class_color.html#aa52025f450b77f4d76a76d822245eb69", null ], + [ "operator*", "class_color.html#a0c9f1a84dc0774797c3ca7f08e2f2369", null ], + [ "operator*", "class_color.html#a2693356ec20fc6aa66b6e5eafd931a63", null ], + [ "operator=", "class_color.html#af17368dfb9bb92e736c5cca7fe5911e7", null ], + [ "operator==", "class_color.html#a03d0301862c3ad6820ced1619c30ab2b", null ], + [ "ToVec4", "class_color.html#ab2a95c51874ddeb032fb6c08fd663873", null ], + [ "a", "class_color.html#a729ed4dcbc4fc228bf764851fd28f913", null ], + [ "b", "class_color.html#a177ce5853f9bb12fda1c545dfb6f4ddf", null ], + [ "g", "class_color.html#a895f2e61ca018a91877f52021f8748bd", null ], + [ "mU32", "class_color.html#a24745df31385c2a1d46335a75c48dcfb", null ], + [ "r", "class_color.html#ac25ae2b764ad9bbf8b8c79141f84d4ae", null ] +]; \ No newline at end of file diff --git a/class_compound_shape-members.html b/class_compound_shape-members.html new file mode 100644 index 000000000..bee59a9bb --- /dev/null +++ b/class_compound_shape-members.html @@ -0,0 +1,210 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CompoundShape Member List
+
+
+ +

This is the complete list of members for CompoundShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CalculateInnerRadius()CompoundShapeinlineprotected
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const =0Shapepure virtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0Shapepure virtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0Shapepure virtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideCompoundShapevirtual
CompoundShape(EShapeSubType inSubType)CompoundShapeinlineexplicit
CompoundShape(EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)CompoundShapeinline
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideCompoundShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideCompoundShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideCompoundShapevirtual
GetCenterOfMass() const overrideCompoundShapeinlinevirtual
GetCompoundUserData(uint inIdx) constCompoundShapeinline
GetInnerRadius() const overrideCompoundShapeinlinevirtual
GetIntersectingSubShapes(const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const =0CompoundShapepure virtual
GetIntersectingSubShapes(const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const =0CompoundShapepure virtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const overrideCompoundShapevirtual
GetLocalBounds() const overrideCompoundShapeinlinevirtual
GetMassProperties() const overrideCompoundShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideCompoundShapevirtual
GetNumSubShapes() constCompoundShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const =0Shapepure virtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) const overrideCompoundShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideCompoundShapevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShape(uint inIdx) constCompoundShapeinline
GetSubShapeIDBits() constCompoundShapeinlineprotected
GetSubShapeIDBitsRecursive() const overrideCompoundShapevirtual
GetSubShapeIDFromIndex(int inIdx, const SubShapeIDCreator &inParentSubShapeID) constCompoundShapeinline
GetSubShapeIndexFromID(SubShapeID inSubShapeID, SubShapeID &outRemainder) constCompoundShapeinline
GetSubShapes() constCompoundShapeinline
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const overrideCompoundShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) const overrideCompoundShapevirtual
GetSubType() constShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideCompoundShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideCompoundShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideCompoundShapeinlinevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideCompoundShapeinlinevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideCompoundShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideCompoundShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constCompoundShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constCompoundShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsSubShapeIDValid(SubShapeID inSubShapeID) constCompoundShapeinline
IsValidScale(Vec3Arg inScale) const overrideCompoundShapevirtual
MakeScaleValid(Vec3Arg inScale) const overrideCompoundShapevirtual
MaterialToIDMap typedefShape
mCenterOfMassCompoundShapeprotected
mInnerRadiusCompoundShapeprotected
mLocalBoundsCompoundShapeprotected
mRefCountRefTarget< Shape >mutableprotected
mSubShapesCompoundShapeprotected
MustBeStatic() const overrideCompoundShapevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideCompoundShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)Shapeinlinevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes) overrideCompoundShapevirtual
SaveBinaryState(StreamOut &inStream) const overrideCompoundShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) const overrideCompoundShapevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetCompoundUserData(uint inIdx, uint32 inUserData)CompoundShapeinline
SetEmbedded() constRefTarget< Shape >inline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()CompoundShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
SubShapes typedefCompoundShape
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const overrideCompoundShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_compound_shape.html b/class_compound_shape.html new file mode 100644 index 000000000..6884b3b54 --- /dev/null +++ b/class_compound_shape.html @@ -0,0 +1,2371 @@ + + + + + + + +Jolt Physics: CompoundShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CompoundShape Class Referenceabstract
+
+
+ +

Base class for a compound shape. + More...

+ +

#include <CompoundShape.h>

+
+Inheritance diagram for CompoundShape:
+
+
+ + +Shape +RefTarget< Shape > +NonCopyable +MutableCompoundShape +StaticCompoundShape + +
+ + + + + + + + + + + + + + + + + + + + +

+Classes

struct  CastRayVisitor
 
struct  CastRayVisitorCollector
 
struct  CastShapeVisitor
 
struct  CollectTransformedShapesVisitor
 
struct  CollideCompoundVsShapeVisitor
 
struct  CollidePointVisitor
 
struct  CollideShapeVsCompoundVisitor
 
struct  GetIntersectingSubShapesVisitor
 
struct  SubShape
 
+ + + + + + + + + + + + + + + + + + + +

+Public Types

using SubShapes = Array< SubShape >
 
- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE CompoundShape (EShapeSubType inSubType)
 Constructor.
 
 CompoundShape (EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual Vec3 GetCenterOfMass () const override
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
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.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const override
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const override
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const override
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual int GetIntersectingSubShapes (const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const =0
 
virtual int GetIntersectingSubShapes (const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const =0
 
const SubShapesGetSubShapes () const
 Access to the sub shapes of this compound.
 
uint GetNumSubShapes () const
 Get the total number of sub shapes.
 
const SubShapeGetSubShape (uint inIdx) const
 Access to a particular sub shape.
 
uint32 GetCompoundUserData (uint inIdx) const
 Get the user data associated with a shape in this compound.
 
void SetCompoundUserData (uint inIdx, uint32 inUserData)
 Set the user data associated with a shape in this compound.
 
bool IsSubShapeIDValid (SubShapeID inSubShapeID) const
 
uint32 GetSubShapeIndexFromID (SubShapeID inSubShapeID, SubShapeID &outRemainder) const
 
SubShapeIDCreator GetSubShapeIDFromIndex (int inIdx, const SubShapeIDCreator &inParentSubShapeID) const
 Convert a sub shape index to a sub shape ID.
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const override
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes) override
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const override
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual float GetVolume () const override
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const =0
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStats () const =0
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + + + + + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
uint GetSubShapeIDBits () const
 Determine amount of bits needed to encode sub shape id.
 
void CalculateInnerRadius ()
 Determine the inner radius of this shape.
 
+ + + + + + + + + + + + + + + +

+Protected Attributes

Vec3 mCenterOfMass { Vec3::sZero() }
 Center of mass of the compound.
 
AABox mLocalBounds
 
SubShapes mSubShapes
 
float mInnerRadius = FLT_MAX
 Smallest radius of GetInnerRadius() of child shapes.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
+ + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Base class for a compound shape.

+

Member Typedef Documentation

+ +

◆ SubShapes

+ +
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CompoundShape() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE CompoundShape::CompoundShape (EShapeSubType inSubType)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+ +

◆ CompoundShape() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
CompoundShape::CompoundShape (EShapeSubType inSubType,
const ShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ CalculateInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
void CompoundShape::CalculateInnerRadius ()
+
+inlineprotected
+
+ +

Determine the inner radius of this shape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CompoundShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CompoundShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ DrawGetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CompoundShape::DrawGetSupportFunction (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inDrawSupportDirection 
) const
+
+overridevirtual
+
+ +

Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ DrawGetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CompoundShape::DrawGetSupportingFace (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+ +

Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetCenterOfMass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vec3 CompoundShape::GetCenterOfMass () const
+
+inlineoverridevirtual
+
+ +

All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetCompoundUserData()

+ +
+
+ + + + + +
+ + + + + + + + +
uint32 CompoundShape::GetCompoundUserData (uint inIdx) const
+
+inline
+
+ +

Get the user data associated with a shape in this compound.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float CompoundShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetIntersectingSubShapes() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual int CompoundShape::GetIntersectingSubShapes (const AABoxinBox,
uintoutSubShapeIndices,
int inMaxSubShapeIndices 
) const
+
+pure virtual
+
+

Get which sub shape's bounding boxes overlap with an axis aligned box

Parameters
+ + + + +
inBoxThe axis aligned box to test against (relative to the center of mass of this shape)
outSubShapeIndicesBuffer where to place the indices of the sub shapes that intersect
inMaxSubShapeIndicesHow many indices will fit in the buffer (normally you'd provide a buffer of GetNumSubShapes() indices)
+
+
+
Returns
How many indices were placed in outSubShapeIndices
+ +

Implemented in MutableCompoundShape, and StaticCompoundShape.

+ +
+
+ +

◆ GetIntersectingSubShapes() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual int CompoundShape::GetIntersectingSubShapes (const OrientedBoxinBox,
uintoutSubShapeIndices,
int inMaxSubShapeIndices 
) const
+
+pure virtual
+
+

Get which sub shape's bounding boxes overlap with an axis aligned box

Parameters
+ + + + +
inBoxThe axis aligned box to test against (relative to the center of mass of this shape)
outSubShapeIndicesBuffer where to place the indices of the sub shapes that intersect
inMaxSubShapeIndicesHow many indices will fit in the buffer (normally you'd provide a buffer of GetNumSubShapes() indices)
+
+
+
Returns
How many indices were placed in outSubShapeIndices
+ +

Implemented in MutableCompoundShape, and StaticCompoundShape.

+ +
+
+ +

◆ GetLeafShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
const Shape * CompoundShape::GetLeafShape (const SubShapeIDinSubShapeID,
SubShapeIDoutRemainder 
) const
+
+overridevirtual
+
+

Get the leaf shape for a particular sub shape ID.

Parameters
+ + + +
inSubShapeIDThe full sub shape ID that indicates the path to the leaf shape
outRemainderWhat remains of the sub shape ID after removing the path to the leaf shape (could e.g. refer to a triangle within a MeshShape)
+
+
+
Returns
The shape or null if the sub shape ID is invalid
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
virtual AABox CompoundShape::GetLocalBounds () const
+
+inlineoverridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties CompoundShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMaterial()

+ +
+
+ + + + + +
+ + + + + + + + +
const PhysicsMaterial * CompoundShape::GetMaterial (const SubShapeIDinSubShapeID) const
+
+overridevirtual
+
+ +

Get the material assigned to a particular sub shape ID.

+ +

Implements Shape.

+ +
+
+ +

◆ GetNumSubShapes()

+ +
+
+ + + + + +
+ + + + + + + +
uint CompoundShape::GetNumSubShapes () const
+
+inline
+
+ +

Get the total number of sub shapes.

+ +
+
+ +

◆ GetStatsRecursive()

+ +
+
+ + + + + +
+ + + + + + + + +
Shape::Stats CompoundShape::GetStatsRecursive (VisitedShapesioVisitedShapes) const
+
+overridevirtual
+
+ +

Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.

+

Get the combined stats of this shape and its children.

Parameters
+ + +
ioVisitedShapesis used to track which shapes have already been visited, to avoid calculating the wrong memory size.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CompoundShape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3 &outCenterOfBuoyancy  JPH_IF_DEBUG_RENDERER, RVec3Arg inBaseOffset 
) const
+
+overridevirtual
+
+ +
+
+ +

◆ GetSubShape()

+ +
+
+ + + + + +
+ + + + + + + + +
const SubShape & CompoundShape::GetSubShape (uint inIdx) const
+
+inline
+
+ +

Access to a particular sub shape.

+ +
+
+ +

◆ GetSubShapeIDBits()

+ +
+
+ + + + + +
+ + + + + + + +
uint CompoundShape::GetSubShapeIDBits () const
+
+inlineprotected
+
+ +

Determine amount of bits needed to encode sub shape id.

+ +
+
+ +

◆ GetSubShapeIDBitsRecursive()

+ +
+
+ + + + + +
+ + + + + + + +
uint CompoundShape::GetSubShapeIDBitsRecursive () const
+
+overridevirtual
+
+ +

Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubShapeIDFromIndex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
SubShapeIDCreator CompoundShape::GetSubShapeIDFromIndex (int inIdx,
const SubShapeIDCreatorinParentSubShapeID 
) const
+
+inline
+
+ +

Convert a sub shape index to a sub shape ID.

+
Parameters
+ + + +
inIdxIndex of the sub shape of this compound
inParentSubShapeIDParent SubShapeID (describing the path to the compound shape)
+
+
+
Returns
A sub shape ID creator that contains the full path to the sub shape with index inIdx
+ +
+
+ +

◆ GetSubShapeIndexFromID()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint32 CompoundShape::GetSubShapeIndexFromID (SubShapeID inSubShapeID,
SubShapeIDoutRemainder 
) const
+
+inline
+
+

Convert SubShapeID to sub shape index

Parameters
+ + + +
inSubShapeIDSub shape id that indicates the leaf shape relative to this shape
outRemainderThis is the sub shape ID for the sub shape of the compound after popping off the index
+
+
+
Returns
The index of the sub shape of this compound
+ +
+
+ +

◆ GetSubShapes()

+ +
+
+ + + + + +
+ + + + + + + +
const SubShapes & CompoundShape::GetSubShapes () const
+
+inline
+
+ +

Access to the sub shapes of this compound.

+ +
+
+ +

◆ GetSubShapeTransformedShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TransformedShape CompoundShape::GetSubShapeTransformedShape (const SubShapeIDinSubShapeID,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale,
SubShapeIDoutRemainder 
) const
+
+overridevirtual
+
+

Get the direct child sub shape and its transform for a sub shape ID.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID that indicates the path to the leaf shape
inPositionCOMThe position of the center of mass of this shape
inRotationThe orientation of this shape
inScaleScale in local space of the shape (scales relative to its center of mass)
outRemainderThe remainder of the sub shape ID after removing the sub shape
+
+
+
Returns
Direct child sub shape and its transform, note that the body ID and sub shape ID will be invalid
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSubShapeUserData()

+ +
+
+ + + + + +
+ + + + + + + + +
uint64 CompoundShape::GetSubShapeUserData (const SubShapeIDinSubShapeID) const
+
+overridevirtual
+
+ +

Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CompoundShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 CompoundShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual int CompoundShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+inlineoverridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void CompoundShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+inlineoverridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Implements Shape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
float CompoundShape::GetVolume () const
+
+overridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox Shape::GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inline
+
+ +

Get world space bounds including convex radius.

+ +
+
+ +

◆ GetWorldSpaceBounds() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual AABox Shape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inlinevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox CompoundShape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ IsSubShapeIDValid()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CompoundShape::IsSubShapeIDValid (SubShapeID inSubShapeID) const
+
+inline
+
+

Check if a sub shape ID is still valid for this shape

Parameters
+ + +
inSubShapeIDSub shape id that indicates the leaf shape relative to this shape
+
+
+
Returns
True if the ID is valid, false if not
+ +
+
+ +

◆ IsValidScale()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CompoundShape::IsValidScale (Vec3Arg inScale) const
+
+overridevirtual
+
+

Test if inScale is a valid scale for this shape. Some shapes can only be scaled uniformly, compound shapes cannot handle shapes being rotated and scaled (this would cause shearing), scale can never be zero. When the scale is invalid, the function will return false.

+

Here's a list of supported scales:

    +
  • SphereShape: Scale must be uniform (signs of scale are ignored).
  • +
  • BoxShape: Any scale supported (signs of scale are ignored).
  • +
  • TriangleShape: Any scale supported when convex radius is zero, otherwise only uniform scale supported.
  • +
  • CapsuleShape: Scale must be uniform (signs of scale are ignored).
  • +
  • TaperedCapsuleShape: Scale must be uniform (sign of Y scale can be used to flip the capsule).
  • +
  • CylinderShape: Scale must be uniform in XZ plane, Y can scale independently (signs of scale are ignored).
  • +
  • RotatedTranslatedShape: Scale must not cause shear in the child shape.
  • +
  • CompoundShape: Scale must not cause shear in any of the child shapes.
  • +
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ MakeScaleValid()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 CompoundShape::MakeScaleValid (Vec3Arg inScale) const
+
+overridevirtual
+
+

This function will make sure that if you wrap this shape in a ScaledShape that the scale is valid. Note that this involves discarding components of the scale that are invalid, so the resulting scaled shape may be different than the requested scale. Compare the return value of this function with the scale you passed in to detect major inconsistencies and possibly warn the user.

Parameters
+ + +
inScaleLocal space scale for this shape.
+
+
+
Returns
Scale that can be used to wrap this shape in a ScaledShape. IsValidScale will return true for this scale.
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ MustBeStatic()

+ +
+
+ + + + + +
+ + + + + + + +
bool CompoundShape::MustBeStatic () const
+
+overridevirtual
+
+ +

Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void CompoundShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from Shape.

+ +

Reimplemented in MutableCompoundShape, and StaticCompoundShape.

+ +
+
+ +

◆ RestoreSubShapeState()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CompoundShape::RestoreSubShapeState (const ShapeRefCinSubShapes,
uint inNumShapes 
)
+
+overridevirtual
+
+ +

Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void CompoundShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from Shape.

+ +

Reimplemented in MutableCompoundShape, and StaticCompoundShape.

+ +
+
+ +

◆ SaveSubShapeState()

+ +
+
+ + + + + +
+ + + + + + + + +
void CompoundShape::SaveSubShapeState (ShapeListoutSubShapes) const
+
+overridevirtual
+
+ +

Outputs the shape references that this shape has to outSubShapes.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SetCompoundUserData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CompoundShape::SetCompoundUserData (uint inIdx,
uint32 inUserData 
)
+
+inline
+
+ +

Set the user data associated with a shape in this compound.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void CompoundShape::sRegister ()
+
+static
+
+ +
+
+ +

◆ TransformShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CompoundShape::TransformShape (Mat44Arg inCenterOfMassTransform,
TransformedShapeCollectorioCollector 
) const
+
+overridevirtual
+
+

Transforms this shape and all of its children with inTransform, resulting shape(s) are passed to ioCollector. Note that not all shapes support all transforms (especially true for scaling), the resulting shape will try to match the transform as accurately as possible.

Parameters
+ + + +
inCenterOfMassTransformThe transform (rotation, translation, scale) that the center of mass of the shape should get
ioCollectorThe transformed shapes will be passed to this collector
+
+
+ +

Reimplemented from Shape.

+ +
+
+

Member Data Documentation

+ +

◆ mCenterOfMass

+ +
+
+ + + + + +
+ + + + +
Vec3 CompoundShape::mCenterOfMass { Vec3::sZero() }
+
+protected
+
+ +

Center of mass of the compound.

+ +
+
+ +

◆ mInnerRadius

+ +
+
+ + + + + +
+ + + + +
float CompoundShape::mInnerRadius = FLT_MAX
+
+protected
+
+ +

Smallest radius of GetInnerRadius() of child shapes.

+ +
+
+ +

◆ mLocalBounds

+ +
+
+ + + + + +
+ + + + +
AABox CompoundShape::mLocalBounds
+
+protected
+
+ +
+
+ +

◆ mSubShapes

+ +
+
+ + + + + +
+ + + + +
SubShapes CompoundShape::mSubShapes
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_compound_shape.js b/class_compound_shape.js new file mode 100644 index 000000000..9a1b7b1c3 --- /dev/null +++ b/class_compound_shape.js @@ -0,0 +1,62 @@ +var class_compound_shape = +[ + [ "CastRayVisitor", "struct_compound_shape_1_1_cast_ray_visitor.html", "struct_compound_shape_1_1_cast_ray_visitor" ], + [ "CastRayVisitorCollector", "struct_compound_shape_1_1_cast_ray_visitor_collector.html", "struct_compound_shape_1_1_cast_ray_visitor_collector" ], + [ "CastShapeVisitor", "struct_compound_shape_1_1_cast_shape_visitor.html", "struct_compound_shape_1_1_cast_shape_visitor" ], + [ "CollectTransformedShapesVisitor", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html", "struct_compound_shape_1_1_collect_transformed_shapes_visitor" ], + [ "CollideCompoundVsShapeVisitor", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor" ], + [ "CollidePointVisitor", "struct_compound_shape_1_1_collide_point_visitor.html", "struct_compound_shape_1_1_collide_point_visitor" ], + [ "CollideShapeVsCompoundVisitor", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor" ], + [ "GetIntersectingSubShapesVisitor", "struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html", "struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor" ], + [ "SubShape", "struct_compound_shape_1_1_sub_shape.html", "struct_compound_shape_1_1_sub_shape" ], + [ "SubShapes", "class_compound_shape.html#a55fbd4f496242427b0e62d788a597e5b", null ], + [ "CompoundShape", "class_compound_shape.html#a6e087096097e738d9cb0547d1be060c9", null ], + [ "CompoundShape", "class_compound_shape.html#ac6d8a7e5c9f6758682f1a85437b09014", null ], + [ "CalculateInnerRadius", "class_compound_shape.html#ab1a1657fdb82a4b135872bacbca9ceaa", null ], + [ "CollideSoftBodyVertices", "class_compound_shape.html#add02d7783abadeb5c303c55aae10c11b", null ], + [ "Draw", "class_compound_shape.html#ae6d820f0033d6933b35babdd50cabe29", null ], + [ "DrawGetSupportFunction", "class_compound_shape.html#afe32beff5208c480e33fd9177ab8a6be", null ], + [ "DrawGetSupportingFace", "class_compound_shape.html#ad881834415dfef9c84b044402818d7fd", null ], + [ "GetCenterOfMass", "class_compound_shape.html#aeec4b7c1a31225a01b314f2528f27b24", null ], + [ "GetCompoundUserData", "class_compound_shape.html#a596eae9a25f8ed13ac35f2a58b318368", null ], + [ "GetInnerRadius", "class_compound_shape.html#ae17025f3ed04cdf063dc0f3b180468a4", null ], + [ "GetIntersectingSubShapes", "class_compound_shape.html#abe5c3a8558c840abba213a6a48149f85", null ], + [ "GetIntersectingSubShapes", "class_compound_shape.html#a3f38b90e13eccc4d52de7bbc2cbcb9aa", null ], + [ "GetLeafShape", "class_compound_shape.html#a40578c3218a3282bb4a39e858f01e4b0", null ], + [ "GetLocalBounds", "class_compound_shape.html#aed1247824e7919d8a948293f586b15dc", null ], + [ "GetMassProperties", "class_compound_shape.html#a24b8501f64dae77c9cb4cfa408fc7537", null ], + [ "GetMaterial", "class_compound_shape.html#a53e888da6c84a5a7a8b96bacd0a12f92", null ], + [ "GetNumSubShapes", "class_compound_shape.html#abe1e5333a667ccd80b6146b951abf918", null ], + [ "GetStatsRecursive", "class_compound_shape.html#acd0cdb69e92db34899880f3f6b596bec", null ], + [ "GetSubmergedVolume", "class_compound_shape.html#a9a5f3e80546cee592d5a79cd4e3561ee", null ], + [ "GetSubShape", "class_compound_shape.html#af70b012c88d2bedfb9541d40e6e46fb2", null ], + [ "GetSubShapeIDBits", "class_compound_shape.html#a3f4a71f903b9b37eb61262257ca268f2", null ], + [ "GetSubShapeIDBitsRecursive", "class_compound_shape.html#ab0cb754108355742e26e08614beaaec1", null ], + [ "GetSubShapeIDFromIndex", "class_compound_shape.html#a66ae55d5b737c492d73286dff4615215", null ], + [ "GetSubShapeIndexFromID", "class_compound_shape.html#a6ff804957bb05620ab762532d2f2ab3d", null ], + [ "GetSubShapes", "class_compound_shape.html#a3c4efdc6b41fc47e604ee8154425a80a", null ], + [ "GetSubShapeTransformedShape", "class_compound_shape.html#ae21a8dff0919f928ae1d282293018a8c", null ], + [ "GetSubShapeUserData", "class_compound_shape.html#adf93c781343189f225f39656a64240db", null ], + [ "GetSupportingFace", "class_compound_shape.html#aaa7ac5ce56a586d8179181add8af60fa", null ], + [ "GetSurfaceNormal", "class_compound_shape.html#a4f1bcd2e95e17efeff42556cbc729110", null ], + [ "GetTrianglesNext", "class_compound_shape.html#a86dbc7e794fdf43a39fed13e60731a0b", null ], + [ "GetTrianglesStart", "class_compound_shape.html#a1e3571fbe4835d1bfec50d9d7a1a2b1f", null ], + [ "GetVolume", "class_compound_shape.html#a2c66ad490f6662e3ef81e44cabee11fa", null ], + [ "GetWorldSpaceBounds", "class_compound_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b", null ], + [ "GetWorldSpaceBounds", "class_compound_shape.html#a9f8379fa338802436700b86a07fab3be", null ], + [ "GetWorldSpaceBounds", "class_compound_shape.html#a4c52ac0245dea72dd6fc63c7f6f2ef4b", null ], + [ "IsSubShapeIDValid", "class_compound_shape.html#a3fd5589e3e33b94b8c112393b431152b", null ], + [ "IsValidScale", "class_compound_shape.html#a8d582144c0bcce878f9a956aaf116c79", null ], + [ "MakeScaleValid", "class_compound_shape.html#a7c3c686e436b80d627b038ccac943b48", null ], + [ "MustBeStatic", "class_compound_shape.html#a1fe017e41afb14b1192689a5fa81ad2e", null ], + [ "RestoreBinaryState", "class_compound_shape.html#a117d02ee25d15fff53f59f29434b3449", null ], + [ "RestoreSubShapeState", "class_compound_shape.html#a75ac24c967580322df489ae7afb6e87b", null ], + [ "SaveBinaryState", "class_compound_shape.html#a92f328ba37c5ad9d3a5555db36e05003", null ], + [ "SaveSubShapeState", "class_compound_shape.html#ac06931859e525bc0b7a2513c7c84176a", null ], + [ "SetCompoundUserData", "class_compound_shape.html#a79a6d4592f894bfc0ed0496bdce68e98", null ], + [ "TransformShape", "class_compound_shape.html#a10919d4b9069ed45d39e765f94e44b2c", null ], + [ "mCenterOfMass", "class_compound_shape.html#a6f0173f4441e35a94b5faa7e95062234", null ], + [ "mInnerRadius", "class_compound_shape.html#a3218b42376c5d2e7958d01010fb4a326", null ], + [ "mLocalBounds", "class_compound_shape.html#a230f2ff5c2d384c55f7845ff18acc8b0", null ], + [ "mSubShapes", "class_compound_shape.html#ad0a3a145f580f2d8f5fabb2495a8eb7c", null ] +]; \ No newline at end of file diff --git a/class_compound_shape.png b/class_compound_shape.png new file mode 100644 index 000000000..6a9bfad6e Binary files /dev/null and b/class_compound_shape.png differ diff --git a/class_compound_shape_settings-members.html b/class_compound_shape_settings-members.html new file mode 100644 index 000000000..c7156e89b --- /dev/null +++ b/class_compound_shape_settings-members.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CompoundShapeSettings Member List
+
+
+ +

This is the complete list of members for CompoundShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
AddShape(Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape, uint32 inUserData=0)CompoundShapeSettings
AddShape(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape, uint32 inUserData=0)CompoundShapeSettings
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
CompoundShapeSettings()=defaultCompoundShapeSettings
Create() const =0ShapeSettingspure virtual
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mRefCountRefTarget< ShapeSettings >mutableprotected
mSubShapesCompoundShapeSettings
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
SubShapes typedefCompoundShapeSettings
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_compound_shape_settings.html b/class_compound_shape_settings.html new file mode 100644 index 000000000..7466bf725 --- /dev/null +++ b/class_compound_shape_settings.html @@ -0,0 +1,380 @@ + + + + + + + +Jolt Physics: CompoundShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CompoundShapeSettings Class Reference
+
+
+ +

Base class settings to construct a compound shape. + More...

+ +

#include <CompoundShape.h>

+
+Inheritance diagram for CompoundShapeSettings:
+
+
+ + +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable +MutableCompoundShapeSettings +StaticCompoundShapeSettings + +
+ + + + +

+Classes

struct  SubShapeSettings
 
+ + + + + + +

+Public Types

using SubShapes = Array< SubShapeSettings >
 
- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 CompoundShapeSettings ()=default
 Constructor. Use AddShape to add the parts.
 
void AddShape (Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape, uint32 inUserData=0)
 Add a shape to the compound.
 
void AddShape (Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape, uint32 inUserData=0)
 Add a shape to the compound. Variant that uses a concrete shape, which means this object cannot be serialized.
 
- Public Member Functions inherited from ShapeSettings
virtual ShapeResult Create () const =0
 Create a shape according to the settings specified by this object.
 
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + +

+Public Attributes

SubShapes mSubShapes
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Base class settings to construct a compound shape.

+

Member Typedef Documentation

+ +

◆ SubShapes

+ + +

Constructor & Destructor Documentation

+ +

◆ CompoundShapeSettings()

+ +
+
+ + + + + +
+ + + + + + + +
CompoundShapeSettings::CompoundShapeSettings ()
+
+default
+
+ +

Constructor. Use AddShape to add the parts.

+ +
+
+

Member Function Documentation

+ +

◆ AddShape() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CompoundShapeSettings::AddShape (Vec3Arg inPosition,
QuatArg inRotation,
const ShapeinShape,
uint32 inUserData = 0 
)
+
+ +

Add a shape to the compound. Variant that uses a concrete shape, which means this object cannot be serialized.

+ +
+
+ +

◆ AddShape() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CompoundShapeSettings::AddShape (Vec3Arg inPosition,
QuatArg inRotation,
const ShapeSettingsinShape,
uint32 inUserData = 0 
)
+
+ +

Add a shape to the compound.

+ +
+
+

Member Data Documentation

+ +

◆ mSubShapes

+ +
+
+ + + + +
SubShapes CompoundShapeSettings::mSubShapes
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_compound_shape_settings.js b/class_compound_shape_settings.js new file mode 100644 index 000000000..729ba36bf --- /dev/null +++ b/class_compound_shape_settings.js @@ -0,0 +1,9 @@ +var class_compound_shape_settings = +[ + [ "SubShapeSettings", "struct_compound_shape_settings_1_1_sub_shape_settings.html", "struct_compound_shape_settings_1_1_sub_shape_settings" ], + [ "SubShapes", "class_compound_shape_settings.html#ac4842f25ad3eada96183eb8a0e1efdac", null ], + [ "CompoundShapeSettings", "class_compound_shape_settings.html#a203d5072fa51f2c61b999cfb76ed9867", null ], + [ "AddShape", "class_compound_shape_settings.html#ac0822915d29caf55fc61d749ab4dd10e", null ], + [ "AddShape", "class_compound_shape_settings.html#aeda2764beb7bc3fcb85d957df93a1431", null ], + [ "mSubShapes", "class_compound_shape_settings.html#a1fcf910b218527bcd856bf017b8ea6f3", null ] +]; \ No newline at end of file diff --git a/class_compound_shape_settings.png b/class_compound_shape_settings.png new file mode 100644 index 000000000..039911364 Binary files /dev/null and b/class_compound_shape_settings.png differ diff --git a/class_cone_constraint-members.html b/class_cone_constraint-members.html new file mode 100644 index 000000000..fc77f4f9c --- /dev/null +++ b/class_cone_constraint-members.html @@ -0,0 +1,175 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConeConstraint Member List
+
+
+ +

This is the complete list of members for ConeConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
ConeConstraint(Body &inBody1, Body &inBody2, const ConeConstraintSettings &inSettings)ConeConstraint
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const overrideConeConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) const overrideConeConstraintvirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overrideConeConstraintvirtual
GetConstraintToBody1Matrix() const overrideConeConstraintvirtual
GetConstraintToBody2Matrix() const overrideConeConstraintvirtual
GetCosHalfConeAngle() constConeConstraintinline
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const overrideConeConstraintinlinevirtual
GetTotalLambdaPosition() constConeConstraintinline
GetTotalLambdaRotation() constConeConstraintinline
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
IsActive() const overrideTwoBodyConstraintinlinevirtual
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overrideConeConstraintvirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart() overrideConeConstraintvirtual
RestoreState(StateRecorder &inStream) overrideConeConstraintvirtual
SaveState(StateRecorder &inStream) const overrideConeConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetHalfConeAngle(float inHalfConeAngle)ConeConstraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetupVelocityConstraint(float inDeltaTime) overrideConeConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overrideConeConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overrideConeConstraintvirtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overrideConeConstraintvirtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_cone_constraint.html b/class_cone_constraint.html new file mode 100644 index 000000000..cfcf87155 --- /dev/null +++ b/class_cone_constraint.html @@ -0,0 +1,885 @@ + + + + + + + +Jolt Physics: ConeConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConeConstraint Class Referencefinal
+
+
+ +

#include <ConeConstraint.h>

+
+Inheritance diagram for ConeConstraint:
+
+
+ + +TwoBodyConstraint +Constraint +RefTarget< Constraint > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ConeConstraint (Body &inBody1, Body &inBody2, const ConeConstraintSettings &inSettings)
 Construct cone constraint.
 
virtual EConstraintSubType GetSubType () const override
 Get the sub type of a constraint.
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
virtual Mat44 GetConstraintToBody1Matrix () const override
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const override
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
void SetHalfConeAngle (float inHalfConeAngle)
 Update maximum angle between body 1 and 2 (see ConeConstraintSettings)
 
float GetCosHalfConeAngle () const
 
- Public Member Functions inherited from TwoBodyConstraint
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + +

Get Lagrange multiplier from last physics update (the linear/angular impulse applied to satisfy the constraint)

Vec3 GetTotalLambdaPosition () const
 
float GetTotalLambdaRotation () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from TwoBodyConstraint
BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A cone constraint constraints 2 bodies to a single point and limits the swing between the twist axis within a cone:

+

t1 . t2 <= cos(theta)

+

Where:

+

t1 = twist axis of body 1. t2 = twist axis of body 2. theta = half cone angle (angle from the principal axis of the cone to the edge).

+

Calculating the Jacobian:

+

Constraint equation:

+

C = t1 . t2 - cos(theta)

+

Derivative:

+

d/dt C = d/dt (t1 . t2) = (d/dt t1) . t2 + t1 . (d/dt t2) = (w1 x t1) . t2 + t1 . (w2 x t2) = (t1 x t2) . w1 + (t2 x t1) . w2

+

d/dt C = J v = [0, -t2 x t1, 0, t2 x t1] [v1, w1, v2, w2]

+

Where J is the Jacobian.

+

Note that this is the exact same equation as used in AngleConstraintPart if we use t2 x t1 as the world space axis

+

Constructor & Destructor Documentation

+ +

◆ ConeConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ConeConstraint::ConeConstraint (BodyinBody1,
BodyinBody2,
const ConeConstraintSettingsinSettings 
)
+
+ +

Construct cone constraint.

+ +
+
+

Member Function Documentation

+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConeConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ DrawConstraintLimits()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConeConstraint::DrawConstraintLimits (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > ConeConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 ConeConstraint::GetConstraintToBody1Matrix () const
+
+overridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 ConeConstraint::GetConstraintToBody2Matrix () const
+
+overridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetCosHalfConeAngle()

+ +
+
+ + + + + +
+ + + + + + + +
float ConeConstraint::GetCosHalfConeAngle () const
+
+inline
+
+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType ConeConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Get the sub type of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetTotalLambdaPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 ConeConstraint::GetTotalLambdaPosition () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaRotation()

+ +
+
+ + + + + +
+ + + + + + + +
float ConeConstraint::GetTotalLambdaRotation () const
+
+inline
+
+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ConeConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+overridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void ConeConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConeConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConeConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetHalfConeAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConeConstraint::SetHalfConeAngle (float inHalfConeAngle)
+
+inline
+
+ +

Update maximum angle between body 1 and 2 (see ConeConstraintSettings)

+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConeConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ConeConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ConeConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConeConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_cone_constraint.js b/class_cone_constraint.js new file mode 100644 index 000000000..82edd7a87 --- /dev/null +++ b/class_cone_constraint.js @@ -0,0 +1,22 @@ +var class_cone_constraint = +[ + [ "ConeConstraint", "class_cone_constraint.html#a2fcce97ba85a4eba463a59524d9b9f8c", null ], + [ "DrawConstraint", "class_cone_constraint.html#ab5002a97909c7f2c8d4b7b589ee93a46", null ], + [ "DrawConstraintLimits", "class_cone_constraint.html#ab9c5d6d9a767242a2d593d5592ca83e2", null ], + [ "GetConstraintSettings", "class_cone_constraint.html#aa88d6b874c14c0bfb2d435100fef4c04", null ], + [ "GetConstraintToBody1Matrix", "class_cone_constraint.html#a90969c19baeb56184ffed487ecca0864", null ], + [ "GetConstraintToBody2Matrix", "class_cone_constraint.html#a49faa7b82a46f13d0cddec8ee9a1986e", null ], + [ "GetCosHalfConeAngle", "class_cone_constraint.html#a0f739908f826f4db4600278ebd0e05ba", null ], + [ "GetSubType", "class_cone_constraint.html#a174c2fdca09d8ceddbf14f71384791b7", null ], + [ "GetTotalLambdaPosition", "class_cone_constraint.html#af2d889a7774303768a6cde6dee342378", null ], + [ "GetTotalLambdaRotation", "class_cone_constraint.html#a08b441d44cc4d9adbad89d88d6d48d91", null ], + [ "NotifyShapeChanged", "class_cone_constraint.html#a59b0a0be6774c77193b8209b6be988f2", null ], + [ "ResetWarmStart", "class_cone_constraint.html#a3de043a81f61d8f612ee14b0e291ea9e", null ], + [ "RestoreState", "class_cone_constraint.html#a1f9682febf21f688361448462dbe785c", null ], + [ "SaveState", "class_cone_constraint.html#a754754ea8cf871ed812f27bed021fbc9", null ], + [ "SetHalfConeAngle", "class_cone_constraint.html#ad50d26fc50088ee00e7bb9a7248f5fc4", null ], + [ "SetupVelocityConstraint", "class_cone_constraint.html#a4cdc1ebd99d91003dbebedd91b1b8a4f", null ], + [ "SolvePositionConstraint", "class_cone_constraint.html#a1a39e014d33bfd39d6a22b951c2fbd65", null ], + [ "SolveVelocityConstraint", "class_cone_constraint.html#a6d9ec2215d7e54abb3277386ca1201f5", null ], + [ "WarmStartVelocityConstraint", "class_cone_constraint.html#adeefa918b20db08c73d87cac71e93cfd", null ] +]; \ No newline at end of file diff --git a/class_cone_constraint.png b/class_cone_constraint.png new file mode 100644 index 000000000..f71712958 Binary files /dev/null and b/class_cone_constraint.png differ diff --git a/class_cone_constraint_settings-members.html b/class_cone_constraint_settings-members.html new file mode 100644 index 000000000..b8f4a9b69 --- /dev/null +++ b/class_cone_constraint_settings-members.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConeConstraintSettings Member List
+
+
+ +

This is the complete list of members for ConeConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const overrideConeConstraintSettingsvirtual
GetRefCount() constRefTarget< ConstraintSettings >inline
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mHalfConeAngleConeConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mPoint1ConeConstraintSettings
mPoint2ConeConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mSpaceConeConstraintSettings
mTwistAxis1ConeConstraintSettings
mTwistAxis2ConeConstraintSettings
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideConeConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overrideConeConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_cone_constraint_settings.html b/class_cone_constraint_settings.html new file mode 100644 index 000000000..f193bd67a --- /dev/null +++ b/class_cone_constraint_settings.html @@ -0,0 +1,445 @@ + + + + + + + +Jolt Physics: ConeConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConeConstraintSettings Class Referencefinal
+
+
+ +

Cone constraint settings, used to create a cone constraint. + More...

+ +

#include <ConeConstraint.h>

+
+Inheritance diagram for ConeConstraintSettings:
+
+
+ + +TwoBodyConstraintSettings +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 Create an instance of this constraint.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EConstraintSpace mSpace = EConstraintSpace::WorldSpace
 This determines in which space the constraint is setup, all properties below should be in the specified space.
 
RVec3 mPoint1 = RVec3::sZero()
 Body 1 constraint reference frame (space determined by mSpace)
 
Vec3 mTwistAxis1 = Vec3::sAxisX()
 
RVec3 mPoint2 = RVec3::sZero()
 Body 2 constraint reference frame (space determined by mSpace)
 
Vec3 mTwistAxis2 = Vec3::sAxisX()
 
float mHalfConeAngle = 0.0f
 Half of maximum angle between twist axis of body 1 and 2.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Cone constraint settings, used to create a cone constraint.

+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * ConeConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+overridevirtual
+
+ +

Create an instance of this constraint.

+ +

Implements TwoBodyConstraintSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConeConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConeConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mHalfConeAngle

+ +
+
+ + + + +
float ConeConstraintSettings::mHalfConeAngle = 0.0f
+
+ +

Half of maximum angle between twist axis of body 1 and 2.

+ +
+
+ +

◆ mPoint1

+ +
+
+ + + + +
RVec3 ConeConstraintSettings::mPoint1 = RVec3::sZero()
+
+ +

Body 1 constraint reference frame (space determined by mSpace)

+ +
+
+ +

◆ mPoint2

+ +
+
+ + + + +
RVec3 ConeConstraintSettings::mPoint2 = RVec3::sZero()
+
+ +

Body 2 constraint reference frame (space determined by mSpace)

+ +
+
+ +

◆ mSpace

+ +
+
+ + + + +
EConstraintSpace ConeConstraintSettings::mSpace = EConstraintSpace::WorldSpace
+
+ +

This determines in which space the constraint is setup, all properties below should be in the specified space.

+ +
+
+ +

◆ mTwistAxis1

+ +
+
+ + + + +
Vec3 ConeConstraintSettings::mTwistAxis1 = Vec3::sAxisX()
+
+ +
+
+ +

◆ mTwistAxis2

+ +
+
+ + + + +
Vec3 ConeConstraintSettings::mTwistAxis2 = Vec3::sAxisX()
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_cone_constraint_settings.js b/class_cone_constraint_settings.js new file mode 100644 index 000000000..4b51b3d7f --- /dev/null +++ b/class_cone_constraint_settings.js @@ -0,0 +1,12 @@ +var class_cone_constraint_settings = +[ + [ "Create", "class_cone_constraint_settings.html#ad1912e12def073c5c5c9c93fbfb76298", null ], + [ "RestoreBinaryState", "class_cone_constraint_settings.html#a18a734d20a0d8d9fbaf697523d43a53d", null ], + [ "SaveBinaryState", "class_cone_constraint_settings.html#a39ca1254ca2bb8c686eec1c92cbe48a3", null ], + [ "mHalfConeAngle", "class_cone_constraint_settings.html#a066cd8f6efad21fe6f8bb0ead8e21c5d", null ], + [ "mPoint1", "class_cone_constraint_settings.html#a63250461238f740ff251cd7e567e7e22", null ], + [ "mPoint2", "class_cone_constraint_settings.html#ac9831884f13146df159980ce13a7f108", null ], + [ "mSpace", "class_cone_constraint_settings.html#ac479688fa75bbf306dc300bc35ae19a2", null ], + [ "mTwistAxis1", "class_cone_constraint_settings.html#abd15590482096d82b4ca8c8d4013cccf", null ], + [ "mTwistAxis2", "class_cone_constraint_settings.html#a3143db81034d1f0268764f1fe44f5c19", null ] +]; \ No newline at end of file diff --git a/class_cone_constraint_settings.png b/class_cone_constraint_settings.png new file mode 100644 index 000000000..d8a25a3cc Binary files /dev/null and b/class_cone_constraint_settings.png differ diff --git a/class_constraint-members.html b/class_constraint-members.html new file mode 100644 index 000000000..5ee3d3c1b --- /dev/null +++ b/class_constraint-members.html @@ -0,0 +1,164 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Constraint Member List
+
+
+ +

This is the complete list of members for Constraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager)=0Constraintpure virtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const =0Constraintpure virtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
ConstraintManagerConstraintfriend
DrawConstraint(DebugRenderer *inRenderer) const =0Constraintpure virtual
DrawConstraintLimits(DebugRenderer *inRenderer) constConstraintinlinevirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) constConstraintinlinevirtual
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const =0Constraintpure virtual
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const =0Constraintpure virtual
GetType() constConstraintinlinevirtual
GetUserData() constConstraintinline
IsActive() constConstraintinlinevirtual
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM)=0Constraintpure virtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart()=0Constraintpure virtual
RestoreState(StateRecorder &inStream)Constraintvirtual
SaveState(StateRecorder &inStream) constConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetupVelocityConstraint(float inDeltaTime)=0Constraintpure virtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte)=0Constraintpure virtual
SolveVelocityConstraint(float inDeltaTime)=0Constraintpure virtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
WarmStartVelocityConstraint(float inWarmStartImpulseRatio)=0Constraintpure virtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_constraint.html b/class_constraint.html new file mode 100644 index 000000000..6f43dd7d2 --- /dev/null +++ b/class_constraint.html @@ -0,0 +1,1277 @@ + + + + + + + +Jolt Physics: Constraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Constraint Class Referenceabstract
+
+
+ +

Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rigid body. + More...

+ +

#include <Constraint.h>

+
+Inheritance diagram for Constraint:
+
+
+ + +RefTarget< Constraint > +NonCopyable +TwoBodyConstraint +VehicleConstraint +ConeConstraint +DistanceConstraint +FixedConstraint +GearConstraint +HingeConstraint +PathConstraint +PointConstraint +PulleyConstraint +RackAndPinionConstraint +SixDOFConstraint +SliderConstraint +SwingTwistConstraint + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
virtual EConstraintType GetType () const
 Get the type of a constraint.
 
virtual EConstraintSubType GetSubType () const =0
 Get the sub type of a constraint.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM)=0
 
virtual void ResetWarmStart ()=0
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager)=0
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const =0
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const =0
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
virtual void SaveState (StateRecorder &inStream) const
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream)
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const =0
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
Solver interface
virtual bool IsActive () const
 
virtual void SetupVelocityConstraint (float inDeltaTime)=0
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio)=0
 
virtual bool SolveVelocityConstraint (float inDeltaTime)=0
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte)=0
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + +

+Protected Member Functions

void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
+ + + + + + + + +

+Protected Attributes

float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
+ + + +

+Friends

class ConstraintManager
 
+ + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Base class for all physics constraints. A constraint removes one or more degrees of freedom for a rigid body.

+

Constructor & Destructor Documentation

+ +

◆ Constraint()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE Constraint::Constraint (const ConstraintSettingsinSettings)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+ +

◆ ~Constraint()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Constraint::~Constraint ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ BuildIslands()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void Constraint::BuildIslands (uint32 inConstraintIndex,
IslandBuilderioBuilder,
BodyManagerinBodyManager 
)
+
+pure virtual
+
+ +

Link bodies that are connected by this constraint in the island builder.

+ +

Implemented in TwoBodyConstraint, and VehicleConstraint.

+ +
+
+ +

◆ BuildIslandSplits()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual uint Constraint::BuildIslandSplits (LargeIslandSplitterioSplitter) const
+
+pure virtual
+
+ +

Link bodies that are connected by this constraint in the same split. Returns the split index.

+ +

Implemented in TwoBodyConstraint, and VehicleConstraint.

+ +
+
+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void Constraint::DrawConstraint (DebugRendererinRenderer) const
+
+pure virtual
+
+
+ +

◆ DrawConstraintLimits()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void Constraint::DrawConstraintLimits (DebugRendererinRenderer) const
+
+inlinevirtual
+
+
+ +

◆ DrawConstraintReferenceFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void Constraint::DrawConstraintReferenceFrame (DebugRendererinRenderer) const
+
+inlinevirtual
+
+ +

Reimplemented in TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintPriority()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 Constraint::GetConstraintPriority () const
+
+inline
+
+

Priority of the constraint when solving. Higher numbers have are more likely to be solved correctly. Note that if you want a deterministic simulation and you cannot guarantee the order in which constraints are added/removed, you can make the priority for all constraints unique to get a deterministic ordering.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Ref< ConstraintSettings > Constraint::GetConstraintSettings () const
+
+pure virtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implemented in ConeConstraint, DistanceConstraint, FixedConstraint, GearConstraint, HingeConstraint, PathConstraint, PointConstraint, PulleyConstraint, RackAndPinionConstraint, SixDOFConstraint, SliderConstraint, SwingTwistConstraint, and VehicleConstraint.

+ +
+
+ +

◆ GetDrawConstraintSize()

+ +
+
+ + + + + +
+ + + + + + + +
float Constraint::GetDrawConstraintSize () const
+
+inline
+
+ +

Size of constraint when drawing it through the debug renderer.

+ +
+
+ +

◆ GetEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
bool Constraint::GetEnabled () const
+
+inline
+
+ +

Test if a constraint is enabled.

+ +
+
+ +

◆ GetNumPositionStepsOverride()

+ +
+
+ + + + + +
+ + + + + + + +
uint Constraint::GetNumPositionStepsOverride () const
+
+inline
+
+ +
+
+ +

◆ GetNumVelocityStepsOverride()

+ +
+
+ + + + + +
+ + + + + + + +
uint Constraint::GetNumVelocityStepsOverride () const
+
+inline
+
+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType Constraint::GetSubType () const
+
+pure virtual
+
+
+ +

◆ GetType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintType Constraint::GetType () const
+
+inlinevirtual
+
+ +

Get the type of a constraint.

+ +

Reimplemented in TwoBodyConstraint.

+ +
+
+ +

◆ GetUserData()

+ +
+
+ + + + + +
+ + + + + + + +
uint64 Constraint::GetUserData () const
+
+inline
+
+ +

Access to the user data, can be used for anything by the application.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool Constraint::IsActive () const
+
+inlinevirtual
+
+ +

Reimplemented in PathConstraint, TwoBodyConstraint, and VehicleConstraint.

+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void Constraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+pure virtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implemented in ConeConstraint, DistanceConstraint, FixedConstraint, GearConstraint, HingeConstraint, PathConstraint, PointConstraint, PulleyConstraint, RackAndPinionConstraint, SixDOFConstraint, SliderConstraint, SwingTwistConstraint, and VehicleConstraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void Constraint::ResetWarmStart ()
+
+pure virtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implemented in ConeConstraint, DistanceConstraint, FixedConstraint, GearConstraint, HingeConstraint, PathConstraint, PointConstraint, PulleyConstraint, RackAndPinionConstraint, SixDOFConstraint, SliderConstraint, SwingTwistConstraint, and VehicleConstraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void Constraint::RestoreState (StateRecorderinStream)
+
+virtual
+
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void Constraint::SaveState (StateRecorderinStream) const
+
+virtual
+
+
+ +

◆ SetConstraintPriority()

+ +
+
+ + + + + +
+ + + + + + + + +
void Constraint::SetConstraintPriority (uint32 inPriority)
+
+inline
+
+ +
+
+ +

◆ SetDrawConstraintSize()

+ +
+
+ + + + + +
+ + + + + + + + +
void Constraint::SetDrawConstraintSize (float inSize)
+
+inline
+
+ +
+
+ +

◆ SetEnabled()

+ +
+
+ + + + + +
+ + + + + + + + +
void Constraint::SetEnabled (bool inEnabled)
+
+inline
+
+

Enable / disable this constraint. This can e.g. be used to implement a breakable constraint by detecting that the constraint impulse (see e.g. PointConstraint::GetTotalLambdaPosition) went over a certain limit and then disabling the constraint. Note that although a disabled constraint will not affect the simulation in any way anymore, it does incur some processing overhead. Alternatively you can remove a constraint from the constraint manager (which may be more costly if you want to disable the constraint for a short while).

+ +
+
+ +

◆ SetNumPositionStepsOverride()

+ +
+
+ + + + + +
+ + + + + + + + +
void Constraint::SetNumPositionStepsOverride (uint inN)
+
+inline
+
+ +

Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.

+ +
+
+ +

◆ SetNumVelocityStepsOverride()

+ +
+
+ + + + + +
+ + + + + + + + +
void Constraint::SetNumVelocityStepsOverride (uint inN)
+
+inline
+
+ +

Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.

+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void Constraint::SetupVelocityConstraint (float inDeltaTime)
+
+pure virtual
+
+
+ +

◆ SetUserData()

+ +
+
+ + + + + +
+ + + + + + + + +
void Constraint::SetUserData (uint64 inUserData)
+
+inline
+
+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool Constraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+pure virtual
+
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool Constraint::SolveVelocityConstraint (float inDeltaTime)
+
+pure virtual
+
+
+ +

◆ ToConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + + +
void Constraint::ToConstraintSettings (ConstraintSettingsoutSettings) const
+
+protected
+
+ +

Helper function to copy settings back to constraint settings for this base class.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void Constraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+pure virtual
+
+
+

Friends And Related Symbol Documentation

+ +

◆ ConstraintManager

+ +
+
+ + + + + +
+ + + + +
friend class ConstraintManager
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ mDrawConstraintSize

+ +
+
+ + + + + +
+ + + + +
float Constraint::mDrawConstraintSize
+
+protected
+
+ +

Size of constraint when drawing it through the debug renderer.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_constraint.js b/class_constraint.js new file mode 100644 index 000000000..7b7273a9f --- /dev/null +++ b/class_constraint.js @@ -0,0 +1,37 @@ +var class_constraint = +[ + [ "Constraint", "class_constraint.html#ae16420a87c4410ab9586397805c909bb", null ], + [ "~Constraint", "class_constraint.html#a1608cc2c7d701d0e9dbcb5656d5845bb", null ], + [ "BuildIslands", "class_constraint.html#af62388f6f234f8cd7d24af34e49180fd", null ], + [ "BuildIslandSplits", "class_constraint.html#a6388265dbe8e1a92980d796006879798", null ], + [ "DrawConstraint", "class_constraint.html#acd05177b26e3251b1a9aff9dded18701", null ], + [ "DrawConstraintLimits", "class_constraint.html#a528e67a83b796e469b10d5c473dc195f", null ], + [ "DrawConstraintReferenceFrame", "class_constraint.html#a9789129d9dcf3f78e84322b374d0a2c9", null ], + [ "GetConstraintPriority", "class_constraint.html#a6c75250d651da3854eda9e929193e585", null ], + [ "GetConstraintSettings", "class_constraint.html#a2cb32f0fbbc03050fd09c975e01277d2", null ], + [ "GetDrawConstraintSize", "class_constraint.html#a719b99d4d20e0c67d5412fb40a00ada3", null ], + [ "GetEnabled", "class_constraint.html#a2e0b8708469ecb3ea071c1b37ca8ea26", null ], + [ "GetNumPositionStepsOverride", "class_constraint.html#ad2530947a5b0c4c24e965ab85fdf9ec8", null ], + [ "GetNumVelocityStepsOverride", "class_constraint.html#a56624d10dcf6dd18fa8903897fcc2a03", null ], + [ "GetSubType", "class_constraint.html#a632a8161ad49c443c2e3a8b600a730a1", null ], + [ "GetType", "class_constraint.html#a6e290088c6049b1f1d1fb26df96dce3a", null ], + [ "GetUserData", "class_constraint.html#a51361e09906d05f85d341d1bad2cecd5", null ], + [ "IsActive", "class_constraint.html#a2181f0c1fdc1de4b22afcd42e1b2273a", null ], + [ "NotifyShapeChanged", "class_constraint.html#a3072411d2c9da10356f2087cdc02ec70", null ], + [ "ResetWarmStart", "class_constraint.html#af6f6f7bc9ec10dbaf721515b19241294", null ], + [ "RestoreState", "class_constraint.html#a9a8b58f759bee231ebbfc7147041a0b7", null ], + [ "SaveState", "class_constraint.html#a829eb3dda397de5cc7a7799ce959cc8b", null ], + [ "SetConstraintPriority", "class_constraint.html#a4b32ce7efd330ecf878f8ace4e0dd151", null ], + [ "SetDrawConstraintSize", "class_constraint.html#ae26efcf11518c9b1c2e15821ca7d8937", null ], + [ "SetEnabled", "class_constraint.html#aa6621fbefd246003aece1e9be8a169cb", null ], + [ "SetNumPositionStepsOverride", "class_constraint.html#a746a3c987f34f2573c0add9ddd56f390", null ], + [ "SetNumVelocityStepsOverride", "class_constraint.html#a4c9b56bbae7de5094241daddc6975059", null ], + [ "SetupVelocityConstraint", "class_constraint.html#a175a388f9989341951507e08876fdf30", null ], + [ "SetUserData", "class_constraint.html#a2e643bd3c3a9167c70037d3eb87acb75", null ], + [ "SolvePositionConstraint", "class_constraint.html#adeae5677da3f7d76ca6af382be14e4eb", null ], + [ "SolveVelocityConstraint", "class_constraint.html#a30636bfbf85cd0898a8ee3c543bf675f", null ], + [ "ToConstraintSettings", "class_constraint.html#aa117730922a803f0a12321bcd68583ab", null ], + [ "WarmStartVelocityConstraint", "class_constraint.html#abb0ee6b5bf11fb8b8aeb45271b24f1a7", null ], + [ "ConstraintManager", "class_constraint.html#ad0bf54a2be7863a42cdd8ee748f89582", null ], + [ "mDrawConstraintSize", "class_constraint.html#af5f5c736eb3830ff27ec07200399dc46", null ] +]; \ No newline at end of file diff --git a/class_constraint.png b/class_constraint.png new file mode 100644 index 000000000..66f1c103e Binary files /dev/null and b/class_constraint.png differ diff --git a/class_constraint_manager-members.html b/class_constraint_manager-members.html new file mode 100644 index 000000000..917209258 --- /dev/null +++ b/class_constraint_manager-members.html @@ -0,0 +1,137 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConstraintManager Member List
+
+
+ +

This is the complete list of members for ConstraintManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
Add(Constraint **inConstraints, int inNumber)ConstraintManager
DrawConstraintLimits(DebugRenderer *inRenderer) constConstraintManager
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) constConstraintManager
DrawConstraints(DebugRenderer *inRenderer) constConstraintManager
GetActiveConstraints(uint32 inStartConstraintIdx, uint32 inEndConstraintIdx, Constraint **outActiveConstraints, uint32 &outNumActiveConstraints) constConstraintManager
GetConstraints() constConstraintManager
GetNumConstraints() constConstraintManagerinline
LockAllConstraints()ConstraintManagerinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Remove(Constraint **inConstraint, int inNumber)ConstraintManager
RestoreState(StateRecorder &inStream)ConstraintManager
SaveState(StateRecorder &inStream, const StateRecorderFilter *inFilter) constConstraintManager
sBuildIslands(Constraint **inActiveConstraints, uint32 inNumActiveConstraints, IslandBuilder &ioBuilder, BodyManager &inBodyManager)ConstraintManagerstatic
sSetupVelocityConstraints(Constraint **inActiveConstraints, uint32 inNumActiveConstraints, float inDeltaTime)ConstraintManagerstatic
sSolvePositionConstraints(Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inDeltaTime, float inBaumgarte)ConstraintManagerstatic
sSolveVelocityConstraints(Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inDeltaTime)ConstraintManagerstatic
sSortConstraints(Constraint **inActiveConstraints, uint32 *inConstraintIdxBegin, uint32 *inConstraintIdxEnd)ConstraintManagerstatic
sWarmStartVelocityConstraints(Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inWarmStartImpulseRatio, ConstraintCallback &ioCallback)ConstraintManagerstatic
UnlockAllConstraints()ConstraintManagerinline
+
+ + + + diff --git a/class_constraint_manager.html b/class_constraint_manager.html new file mode 100644 index 000000000..b41ad062a --- /dev/null +++ b/class_constraint_manager.html @@ -0,0 +1,815 @@ + + + + + + + +Jolt Physics: ConstraintManager Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConstraintManager Class Reference
+
+
+ +

A constraint manager manages all constraints of the same type. + More...

+ +

#include <ConstraintManager.h>

+
+Inheritance diagram for ConstraintManager:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE void Add (Constraint **inConstraints, int inNumber)
 
void Remove (Constraint **inConstraint, int inNumber)
 
Constraints GetConstraints () const
 Get a list of all constraints.
 
uint32 GetNumConstraints () const
 Get total number of constraints.
 
void GetActiveConstraints (uint32 inStartConstraintIdx, uint32 inEndConstraintIdx, Constraint **outActiveConstraints, uint32 &outNumActiveConstraints) const
 Determine the active constraints of a subset of the constraints.
 
void DrawConstraints (DebugRenderer *inRenderer) const
 Draw all constraints.
 
void DrawConstraintLimits (DebugRenderer *inRenderer) const
 Draw all constraint limits.
 
void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const
 Draw all constraint reference frames.
 
void SaveState (StateRecorder &inStream, const StateRecorderFilter *inFilter) const
 Save state of constraints.
 
bool RestoreState (StateRecorder &inStream)
 Restore the state of constraints. Returns false if failed.
 
void LockAllConstraints ()
 Lock all constraints. This should only be done during PhysicsSystem::Update().
 
void UnlockAllConstraints ()
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void sBuildIslands (Constraint **inActiveConstraints, uint32 inNumActiveConstraints, IslandBuilder &ioBuilder, BodyManager &inBodyManager)
 Link bodies to form islands.
 
static void sSortConstraints (Constraint **inActiveConstraints, uint32 *inConstraintIdxBegin, uint32 *inConstraintIdxEnd)
 In order to have a deterministic simulation, we need to sort the constraints of an island before solving them.
 
static void sSetupVelocityConstraints (Constraint **inActiveConstraints, uint32 inNumActiveConstraints, float inDeltaTime)
 Prior to solving the velocity constraints, you must call SetupVelocityConstraints once to precalculate values that are independent of velocity.
 
template<class ConstraintCallback >
static void sWarmStartVelocityConstraints (Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inWarmStartImpulseRatio, ConstraintCallback &ioCallback)
 Apply last frame's impulses, must be called prior to SolveVelocityConstraints.
 
static bool sSolveVelocityConstraints (Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inDeltaTime)
 This function is called multiple times to iteratively come to a solution that meets all velocity constraints.
 
static bool sSolvePositionConstraints (Constraint **inActiveConstraints, const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inDeltaTime, float inBaumgarte)
 This function is called multiple times to iteratively come to a solution that meets all position constraints.
 
+

Detailed Description

+

A constraint manager manages all constraints of the same type.

+

Member Function Documentation

+ +

◆ Add()

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void ConstraintManager::Add (Constraint ** inConstraints,
int inNumber 
)
+
+

Add a new constraint. This is thread safe. Note that the inConstraints array is allowed to have nullptrs, these will be ignored.

+ +
+
+ +

◆ DrawConstraintLimits()

+ +
+
+ + + + + + + + +
void ConstraintManager::DrawConstraintLimits (DebugRendererinRenderer) const
+
+ +

Draw all constraint limits.

+ +
+
+ +

◆ DrawConstraintReferenceFrame()

+ +
+
+ + + + + + + + +
void ConstraintManager::DrawConstraintReferenceFrame (DebugRendererinRenderer) const
+
+ +

Draw all constraint reference frames.

+ +
+
+ +

◆ DrawConstraints()

+ +
+
+ + + + + + + + +
void ConstraintManager::DrawConstraints (DebugRendererinRenderer) const
+
+ +

Draw all constraints.

+ +
+
+ +

◆ GetActiveConstraints()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConstraintManager::GetActiveConstraints (uint32 inStartConstraintIdx,
uint32 inEndConstraintIdx,
Constraint ** outActiveConstraints,
uint32outNumActiveConstraints 
) const
+
+ +

Determine the active constraints of a subset of the constraints.

+ +
+
+ +

◆ GetConstraints()

+ +
+
+ + + + + + + +
Constraints ConstraintManager::GetConstraints () const
+
+ +

Get a list of all constraints.

+ +
+
+ +

◆ GetNumConstraints()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 ConstraintManager::GetNumConstraints () const
+
+inline
+
+ +

Get total number of constraints.

+ +
+
+ +

◆ LockAllConstraints()

+ +
+
+ + + + + +
+ + + + + + + +
void ConstraintManager::LockAllConstraints ()
+
+inline
+
+ +

Lock all constraints. This should only be done during PhysicsSystem::Update().

+ +
+
+ +

◆ Remove()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ConstraintManager::Remove (Constraint ** inConstraint,
int inNumber 
)
+
+

Remove a constraint. This is thread safe. Note that the inConstraints array is allowed to have nullptrs, these will be ignored.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + + + + +
bool ConstraintManager::RestoreState (StateRecorderinStream)
+
+ +

Restore the state of constraints. Returns false if failed.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ConstraintManager::SaveState (StateRecorderinStream,
const StateRecorderFilterinFilter 
) const
+
+ +

Save state of constraints.

+ +
+
+ +

◆ sBuildIslands()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConstraintManager::sBuildIslands (Constraint ** inActiveConstraints,
uint32 inNumActiveConstraints,
IslandBuilderioBuilder,
BodyManagerinBodyManager 
)
+
+static
+
+ +

Link bodies to form islands.

+ +
+
+ +

◆ sSetupVelocityConstraints()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ConstraintManager::sSetupVelocityConstraints (Constraint ** inActiveConstraints,
uint32 inNumActiveConstraints,
float inDeltaTime 
)
+
+static
+
+ +

Prior to solving the velocity constraints, you must call SetupVelocityConstraints once to precalculate values that are independent of velocity.

+ +
+
+ +

◆ sSolvePositionConstraints()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool ConstraintManager::sSolvePositionConstraints (Constraint ** inActiveConstraints,
const uint32inConstraintIdxBegin,
const uint32inConstraintIdxEnd,
float inDeltaTime,
float inBaumgarte 
)
+
+static
+
+ +

This function is called multiple times to iteratively come to a solution that meets all position constraints.

+ +
+
+ +

◆ sSolveVelocityConstraints()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool ConstraintManager::sSolveVelocityConstraints (Constraint ** inActiveConstraints,
const uint32inConstraintIdxBegin,
const uint32inConstraintIdxEnd,
float inDeltaTime 
)
+
+static
+
+ +

This function is called multiple times to iteratively come to a solution that meets all velocity constraints.

+ +
+
+ +

◆ sSortConstraints()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ConstraintManager::sSortConstraints (Constraint ** inActiveConstraints,
uint32inConstraintIdxBegin,
uint32inConstraintIdxEnd 
)
+
+static
+
+ +

In order to have a deterministic simulation, we need to sort the constraints of an island before solving them.

+ +
+
+ +

◆ sWarmStartVelocityConstraints()

+ +
+
+
+template<class ConstraintCallback >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
template void ConstraintManager::sWarmStartVelocityConstraints< DummyCalculateSolverSteps > (Constraint ** inActiveConstraints,
const uint32inConstraintIdxBegin,
const uint32inConstraintIdxEnd,
float inWarmStartImpulseRatio,
ConstraintCallback & ioCallback 
)
+
+static
+
+ +

Apply last frame's impulses, must be called prior to SolveVelocityConstraints.

+ +
+
+ +

◆ UnlockAllConstraints()

+ +
+
+ + + + + +
+ + + + + + + +
void ConstraintManager::UnlockAllConstraints ()
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_constraint_manager.js b/class_constraint_manager.js new file mode 100644 index 000000000..ad98da433 --- /dev/null +++ b/class_constraint_manager.js @@ -0,0 +1,15 @@ +var class_constraint_manager = +[ + [ "Add", "class_constraint_manager.html#ae323401f2d9039dd330b070808c494f7", null ], + [ "DrawConstraintLimits", "class_constraint_manager.html#ada42a650942ca12b4ffef3bc772ccaed", null ], + [ "DrawConstraintReferenceFrame", "class_constraint_manager.html#a8e8f3c781d808b7676cb6a7e8e377a3b", null ], + [ "DrawConstraints", "class_constraint_manager.html#acbfe993a9253a89c1a75f1fa8318a706", null ], + [ "GetActiveConstraints", "class_constraint_manager.html#a6620266366dc35c2bf3877530a0d0c2a", null ], + [ "GetConstraints", "class_constraint_manager.html#a28696554e9f5f7b0b2169fa523e80440", null ], + [ "GetNumConstraints", "class_constraint_manager.html#acd910b293c763c5c5a6f7c29a37721fb", null ], + [ "LockAllConstraints", "class_constraint_manager.html#ae8d4baabaedc6f26b774d40b71b6bf85", null ], + [ "Remove", "class_constraint_manager.html#acb16102f8700cbe29811d38abf913d0a", null ], + [ "RestoreState", "class_constraint_manager.html#aa6041abc2a70cc411e4d814c9dbf43f2", null ], + [ "SaveState", "class_constraint_manager.html#a77ead63fb9a81614e3a9bede90fbe730", null ], + [ "UnlockAllConstraints", "class_constraint_manager.html#aef2a29f192caeb1209dfc1a6db0afb96", null ] +]; \ No newline at end of file diff --git a/class_constraint_manager.png b/class_constraint_manager.png new file mode 100644 index 000000000..1dd46e65a Binary files /dev/null and b/class_constraint_manager.png differ diff --git a/class_constraint_settings-members.html b/class_constraint_settings-members.html new file mode 100644 index 000000000..040fd063e --- /dev/null +++ b/class_constraint_settings-members.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConstraintSettings Member List
+
+
+ +

This is the complete list of members for ConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
GetRefCount() constRefTarget< ConstraintSettings >inline
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream)ConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) constConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_constraint_settings.html b/class_constraint_settings.html new file mode 100644 index 000000000..14af8367e --- /dev/null +++ b/class_constraint_settings.html @@ -0,0 +1,449 @@ + + + + + + + +Jolt Physics: ConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConstraintSettings Class Reference
+
+
+ +

Class used to store the configuration of a constraint. Allows run-time creation of constraints. + More...

+ +

#include <Constraint.h>

+
+Inheritance diagram for ConstraintSettings:
+
+
+ + +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable +TwoBodyConstraintSettings +VehicleConstraintSettings +ConeConstraintSettings +DistanceConstraintSettings +FixedConstraintSettings +GearConstraintSettings +HingeConstraintSettings +PathConstraintSettings +PointConstraintSettings +PulleyConstraintSettings +RackAndPinionConstraintSettings +SixDOFConstraintSettings +SliderConstraintSettings +SwingTwistConstraintSettings + +
+ + + + +

+Public Types

using ConstraintResult = Result< Ref< ConstraintSettings > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const
 Saves the contents of the constraint settings in binary form to inStream.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + +

+Static Public Member Functions

static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream)
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class used to store the configuration of a constraint. Allows run-time creation of constraints.

+

Member Typedef Documentation

+ +

◆ ConstraintResult

+ + +

Member Function Documentation

+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+protectedvirtual
+
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+virtual
+
+
+ +

◆ sRestoreFromBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
ConstraintSettings::ConstraintResult ConstraintSettings::sRestoreFromBinaryState (StreamIninStream)
+
+static
+
+ +

Creates a constraint of the correct type and restores its contents from the binary stream inStream.

+ +
+
+

Member Data Documentation

+ +

◆ mConstraintPriority

+ +
+
+ + + + +
uint32 ConstraintSettings::mConstraintPriority = 0
+
+

Priority of the constraint when solving. Higher numbers have are more likely to be solved correctly. Note that if you want a deterministic simulation and you cannot guarantee the order in which constraints are added/removed, you can make the priority for all constraints unique to get a deterministic ordering.

+ +
+
+ +

◆ mDrawConstraintSize

+ +
+
+ + + + +
float ConstraintSettings::mDrawConstraintSize = 1.0f
+
+ +

Size of constraint when drawing it through the debug renderer.

+ +
+
+ +

◆ mEnabled

+ +
+
+ + + + +
bool ConstraintSettings::mEnabled = true
+
+ +

If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.

+ +
+
+ +

◆ mNumPositionStepsOverride

+ +
+
+ + + + +
uint ConstraintSettings::mNumPositionStepsOverride = 0
+
+ +

Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.

+ +
+
+ +

◆ mNumVelocityStepsOverride

+ +
+
+ + + + +
uint ConstraintSettings::mNumVelocityStepsOverride = 0
+
+ +

Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.

+ +
+
+ +

◆ mUserData

+ +
+
+ + + + +
uint64 ConstraintSettings::mUserData = 0
+
+ +

User data value (can be used by application)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_constraint_settings.js b/class_constraint_settings.js new file mode 100644 index 000000000..94dc11e5f --- /dev/null +++ b/class_constraint_settings.js @@ -0,0 +1,12 @@ +var class_constraint_settings = +[ + [ "ConstraintResult", "class_constraint_settings.html#a67f1344ed1a315ab9bb8af855d0a82b5", null ], + [ "RestoreBinaryState", "class_constraint_settings.html#a71f815e6f2e1bd3e0c8be210936b0e79", null ], + [ "SaveBinaryState", "class_constraint_settings.html#a3123d8d5dc6b127c2d19c95f6fe23a74", null ], + [ "mConstraintPriority", "class_constraint_settings.html#ab01ba90506d17f415054bfa6208a4939", null ], + [ "mDrawConstraintSize", "class_constraint_settings.html#ad2e3913b76c52d885bf88b9e9dc2bfd3", null ], + [ "mEnabled", "class_constraint_settings.html#a190607bdccb3df5a2fef3d6cc60c4eae", null ], + [ "mNumPositionStepsOverride", "class_constraint_settings.html#a7022c1a032590883f2002aeef24adf69", null ], + [ "mNumVelocityStepsOverride", "class_constraint_settings.html#ade4ba912369caad8d5acb9ce87c27e4f", null ], + [ "mUserData", "class_constraint_settings.html#a5f1b930fc3798cce17979e631a2a8a05", null ] +]; \ No newline at end of file diff --git a/class_constraint_settings.png b/class_constraint_settings.png new file mode 100644 index 000000000..19916d12c Binary files /dev/null and b/class_constraint_settings.png differ diff --git a/class_contact_constraint_manager-members.html b/class_contact_constraint_manager-members.html new file mode 100644 index 000000000..a0f24fee4 --- /dev/null +++ b/class_contact_constraint_manager-members.html @@ -0,0 +1,156 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ContactConstraintManager Member List
+
+
+ +

This is the complete list of members for ContactConstraintManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddBodyPair(ContactAllocator &ioContactAllocator, const Body &inBody1, const Body &inBody2)ContactConstraintManager
AddContactConstraint(ContactAllocator &ioContactAllocator, BodyPairHandle inBodyPair, Body &inBody1, Body &inBody2, const ContactManifold &inManifold)ContactConstraintManager
BodyPairHandle typedefContactConstraintManager
CombineFunction typedefContactConstraintManager
ContactConstraintManager(const PhysicsSettings &inPhysicsSettings)ContactConstraintManagerexplicit
FinalizeContactCacheAndCallContactPointRemovedCallbacks(uint inExpectedNumBodyPairs, uint inExpectedNumManifolds)ContactConstraintManager
FinishConstraintBuffer()ContactConstraintManager
GetAffectedBodies(uint32 inConstraintIdx, const Body *&outBody1, const Body *&outBody2) constContactConstraintManagerinline
GetCombineFriction() constContactConstraintManagerinline
GetCombineRestitution() constContactConstraintManagerinline
GetContactAllocator()ContactConstraintManagerinline
GetContactListener() constContactConstraintManagerinline
GetContactsFromCache(ContactAllocator &ioContactAllocator, Body &inBody1, Body &inBody2, bool &outPairHandled, bool &outConstraintCreated)ContactConstraintManager
GetMaxConstraints() constContactConstraintManagerinline
GetNumConstraints() constContactConstraintManagerinline
Init(uint inMaxBodyPairs, uint inMaxContactConstraints)ContactConstraintManager
MaxContactPointsContactConstraintManagerstatic
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
OnCCDContactAdded(ContactAllocator &ioContactAllocator, const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &outSettings)ContactConstraintManager
operator=(const NonCopyable &)=deleteNonCopyable
PrepareConstraintBuffer(PhysicsUpdateContext *inContext)ContactConstraintManager
RecycleConstraintBuffer()ContactConstraintManager
RestoreState(StateRecorder &inStream)ContactConstraintManager
SaveState(StateRecorder &inStream, const StateRecorderFilter *inFilter) constContactConstraintManager
sDrawContactManifoldsContactConstraintManagerstatic
sDrawContactPointContactConstraintManagerstatic
sDrawContactPointReductionContactConstraintManagerstatic
sDrawSupportingFacesContactConstraintManagerstatic
SetCombineFriction(CombineFunction inCombineFriction)ContactConstraintManagerinline
SetCombineRestitution(CombineFunction inCombineRestitution)ContactConstraintManagerinline
SetContactListener(ContactListener *inListener)ContactConstraintManagerinline
SolvePositionConstraints(const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd)ContactConstraintManager
SolveVelocityConstraints(const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd)ContactConstraintManager
SortContacts(uint32 *inConstraintIdxBegin, uint32 *inConstraintIdxEnd) constContactConstraintManager
StoreAppliedImpulses(const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd) constContactConstraintManager
ValidateContactPoint(const Body &inBody1, const Body &inBody2, RVec3Arg inBaseOffset, const CollideShapeResult &inCollisionResult) constContactConstraintManagerinline
WarmStartVelocityConstraints(const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inWarmStartImpulseRatio, MotionPropertiesCallback &ioCallback)ContactConstraintManager
WereBodiesInContact(const BodyID &inBody1ID, const BodyID &inBody2ID) constContactConstraintManager
~ContactConstraintManager()ContactConstraintManager
+
+ + + + diff --git a/class_contact_constraint_manager.html b/class_contact_constraint_manager.html new file mode 100644 index 000000000..8439dd382 --- /dev/null +++ b/class_contact_constraint_manager.html @@ -0,0 +1,1365 @@ + + + + + + + +Jolt Physics: ContactConstraintManager Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ContactConstraintManager Class Reference
+
+
+ +

#include <ContactConstraintManager.h>

+
+Inheritance diagram for ContactConstraintManager:
+
+
+ + +NonCopyable + +
+ + + + + +

+Classes

class  ContactAllocator
 Contacts are allocated in a lock free hash map. More...
 
+ + + + + + +

+Public Types

using CombineFunction = float(*)(const Body &inBody1, const SubShapeID &inSubShapeID1, const Body &inBody2, const SubShapeID &inSubShapeID2)
 
using BodyPairHandle = void *
 Handle used to keep track of the current body pair.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ContactConstraintManager (const PhysicsSettings &inPhysicsSettings)
 Constructor.
 
 ~ContactConstraintManager ()
 
void Init (uint inMaxBodyPairs, uint inMaxContactConstraints)
 
void SetContactListener (ContactListener *inListener)
 Listener that is notified whenever a contact point between two bodies is added/updated/removed.
 
ContactListenerGetContactListener () const
 
void SetCombineFriction (CombineFunction inCombineFriction)
 
CombineFunction GetCombineFriction () const
 
void SetCombineRestitution (CombineFunction inCombineRestitution)
 
CombineFunction GetCombineRestitution () const
 
uint32 GetMaxConstraints () const
 Get the max number of contact constraints that are allowed.
 
ValidateResult ValidateContactPoint (const Body &inBody1, const Body &inBody2, RVec3Arg inBaseOffset, const CollideShapeResult &inCollisionResult) const
 Check with the listener if inBody1 and inBody2 could collide, returns false if not.
 
void PrepareConstraintBuffer (PhysicsUpdateContext *inContext)
 Sets up the constraint buffer. Should be called before starting collision detection.
 
ContactAllocator GetContactAllocator ()
 Get a new allocator context for storing contacts. Note that you should call this once and then add multiple contacts using the context.
 
void GetContactsFromCache (ContactAllocator &ioContactAllocator, Body &inBody1, Body &inBody2, bool &outPairHandled, bool &outConstraintCreated)
 
BodyPairHandle AddBodyPair (ContactAllocator &ioContactAllocator, const Body &inBody1, const Body &inBody2)
 
bool AddContactConstraint (ContactAllocator &ioContactAllocator, BodyPairHandle inBodyPair, Body &inBody1, Body &inBody2, const ContactManifold &inManifold)
 
void FinalizeContactCacheAndCallContactPointRemovedCallbacks (uint inExpectedNumBodyPairs, uint inExpectedNumManifolds)
 
bool WereBodiesInContact (const BodyID &inBody1ID, const BodyID &inBody2ID) const
 
uint32 GetNumConstraints () const
 Get the number of contact constraints that were found.
 
void SortContacts (uint32 *inConstraintIdxBegin, uint32 *inConstraintIdxEnd) const
 Sort contact constraints deterministically.
 
void GetAffectedBodies (uint32 inConstraintIdx, const Body *&outBody1, const Body *&outBody2) const
 Get the affected bodies for a given constraint.
 
template<class MotionPropertiesCallback >
void WarmStartVelocityConstraints (const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd, float inWarmStartImpulseRatio, MotionPropertiesCallback &ioCallback)
 Apply last frame's impulses as an initial guess for this frame's impulses.
 
bool SolveVelocityConstraints (const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd)
 
void StoreAppliedImpulses (const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd) const
 Save back the lambdas to the contact cache for the next warm start.
 
bool SolvePositionConstraints (const uint32 *inConstraintIdxBegin, const uint32 *inConstraintIdxEnd)
 
void RecycleConstraintBuffer ()
 Recycle the constraint buffer. Should be called between collision simulation steps.
 
void FinishConstraintBuffer ()
 Terminate the constraint buffer. Should be called after simulation ends.
 
void OnCCDContactAdded (ContactAllocator &ioContactAllocator, const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &outSettings)
 
void SaveState (StateRecorder &inStream, const StateRecorderFilter *inFilter) const
 Saving state for replay.
 
bool RestoreState (StateRecorder &inStream)
 Restoring state for replay. Returns false when failed.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + +

+Static Public Attributes

static const int MaxContactPoints = 4
 Max 4 contact points are needed for a stable manifold.
 
static bool sDrawContactPoint = false
 
static bool sDrawSupportingFaces = false
 
static bool sDrawContactPointReduction = false
 
static bool sDrawContactManifolds = false
 
+

Member Typedef Documentation

+ +

◆ BodyPairHandle

+ +
+
+ + + + +
using ContactConstraintManager::BodyPairHandle = void *
+
+ +

Handle used to keep track of the current body pair.

+ +
+
+ +

◆ CombineFunction

+ +
+
+ + + + +
using ContactConstraintManager::CombineFunction = float (*)(const Body &inBody1, const SubShapeID &inSubShapeID1, const Body &inBody2, const SubShapeID &inSubShapeID2)
+
+

Callback function to combine the restitution or friction of two bodies Note that when merging manifolds (when PhysicsSettings::mUseManifoldReduction is true) you will only get a callback for the merged manifold. It is not possible in that case to get all sub shape ID pairs that were colliding, you'll get the first encountered pair.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ContactConstraintManager()

+ +
+
+ + + + + +
+ + + + + + + + +
ContactConstraintManager::ContactConstraintManager (const PhysicsSettingsinPhysicsSettings)
+
+explicit
+
+ +

Constructor.

+ +
+
+ +

◆ ~ContactConstraintManager()

+ +
+
+ + + + + + + +
ContactConstraintManager::~ContactConstraintManager ()
+
+ +
+
+

Member Function Documentation

+ +

◆ AddBodyPair()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ContactConstraintManager::BodyPairHandle ContactConstraintManager::AddBodyPair (ContactAllocatorioContactAllocator,
const BodyinBody1,
const BodyinBody2 
)
+
+

Create a handle for a colliding body pair so that contact constraints can be added between them. Needs to be called once per body pair per frame before calling AddContactConstraint.

+ +
+
+ +

◆ AddContactConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool ContactConstraintManager::AddContactConstraint (ContactAllocatorioContactAllocator,
BodyPairHandle inBodyPair,
BodyinBody1,
BodyinBody2,
const ContactManifoldinManifold 
)
+
+

Add a contact constraint for this frame.

+
Parameters
+ + + + + + +
ioContactAllocatorThe allocator that reserves memory for the contacts
inBodyPairThe handle for the contact cache for this body pair
inBody1The first body that is colliding
inBody2The second body that is colliding
inManifoldThe manifold that describes the collision
+
+
+
Returns
true if a contact constraint was created (can be false in the case of a sensor)
+

This is using the approach described in 'Modeling and Solving Constraints' by Erin Catto presented at GDC 2009 (and later years with slight modifications). We're using the formulas from slide 50 - 53 combined.

+

Euler velocity integration:

+

v1' = v1 + M^-1 P

+

Impulse:

+

P = J^T lambda

+

Constraint force:

+

lambda = -K^-1 J v1

+

Inverse effective mass:

+

K = J M^-1 J^T

+

Constraint equation (limits movement in 1 axis):

+

C = (p2 - p1) . n

+

Jacobian (for position constraint)

+

J = [-n, -r1 x n, n, r2 x n]

+

n = contact normal (pointing away from body 1). p1, p2 = positions of collision on body 1 and 2. r1, r2 = contact point relative to center of mass of body 1 and body 2 (r1 = p1 - x1, r2 = p2 - x2). v1, v2 = (linear velocity, angular velocity): 6 vectors containing linear and angular velocity for body 1 and 2. M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].

+ +
+
+ +

◆ FinalizeContactCacheAndCallContactPointRemovedCallbacks()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ContactConstraintManager::FinalizeContactCacheAndCallContactPointRemovedCallbacks (uint inExpectedNumBodyPairs,
uint inExpectedNumManifolds 
)
+
+

Finalizes the contact cache, the contact cache that was generated during the calls to AddContactConstraint in this update will be used from now on to read from. After finalizing the contact cache, the contact removed callbacks will be called. inExpectedNumBodyPairs / inExpectedNumManifolds are the amount of body pairs / manifolds found in the previous step and is used to determine the amount of buckets the contact cache hash map will use in the next update.

+ +
+
+ +

◆ FinishConstraintBuffer()

+ +
+
+ + + + + + + +
void ContactConstraintManager::FinishConstraintBuffer ()
+
+ +

Terminate the constraint buffer. Should be called after simulation ends.

+ +
+
+ +

◆ GetAffectedBodies()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ContactConstraintManager::GetAffectedBodies (uint32 inConstraintIdx,
const Body *& outBody1,
const Body *& outBody2 
) const
+
+inline
+
+ +

Get the affected bodies for a given constraint.

+ +
+
+ +

◆ GetCombineFriction()

+ +
+
+ + + + + +
+ + + + + + + +
CombineFunction ContactConstraintManager::GetCombineFriction () const
+
+inline
+
+ +
+
+ +

◆ GetCombineRestitution()

+ +
+
+ + + + + +
+ + + + + + + +
CombineFunction ContactConstraintManager::GetCombineRestitution () const
+
+inline
+
+ +
+
+ +

◆ GetContactAllocator()

+ +
+
+ + + + + +
+ + + + + + + +
ContactAllocator ContactConstraintManager::GetContactAllocator ()
+
+inline
+
+ +

Get a new allocator context for storing contacts. Note that you should call this once and then add multiple contacts using the context.

+ +
+
+ +

◆ GetContactListener()

+ +
+
+ + + + + +
+ + + + + + + +
ContactListener * ContactConstraintManager::GetContactListener () const
+
+inline
+
+ +
+
+ +

◆ GetContactsFromCache()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ContactConstraintManager::GetContactsFromCache (ContactAllocatorioContactAllocator,
BodyinBody1,
BodyinBody2,
bool & outPairHandled,
bool & outConstraintCreated 
)
+
+

Check if the contact points from the previous frame are reusable and if so copy them. When the cache was usable and the pair has been handled: outPairHandled = true. When a contact constraint was produced: outConstraintCreated = true.

+ +
+
+ +

◆ GetMaxConstraints()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 ContactConstraintManager::GetMaxConstraints () const
+
+inline
+
+ +

Get the max number of contact constraints that are allowed.

+ +
+
+ +

◆ GetNumConstraints()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 ContactConstraintManager::GetNumConstraints () const
+
+inline
+
+ +

Get the number of contact constraints that were found.

+ +
+
+ +

◆ Init()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ContactConstraintManager::Init (uint inMaxBodyPairs,
uint inMaxContactConstraints 
)
+
+

Initialize the system.

Parameters
+ + + +
inMaxBodyPairsMaximum amount of body pairs to process (anything else will fall through the world), this number should generally be much higher than the max amount of contact points as there will be lots of bodies close that are not actually touching
inMaxContactConstraintsMaximum amount of contact constraints to process (anything else will fall through the world)
+
+
+ +
+
+ +

◆ OnCCDContactAdded()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ContactConstraintManager::OnCCDContactAdded (ContactAllocatorioContactAllocator,
const BodyinBody1,
const BodyinBody2,
const ContactManifoldinManifold,
ContactSettingsoutSettings 
)
+
+

Called by continuous collision detection to notify the contact listener that a contact was added

Parameters
+ + + + + + +
ioContactAllocatorThe allocator that reserves memory for the contacts
inBody1The first body that is colliding
inBody2The second body that is colliding
inManifoldThe manifold that describes the collision
outSettingsThe calculated contact settings (may be overridden by the contact listener)
+
+
+ +
+
+ +

◆ PrepareConstraintBuffer()

+ +
+
+ + + + + + + + +
void ContactConstraintManager::PrepareConstraintBuffer (PhysicsUpdateContextinContext)
+
+ +

Sets up the constraint buffer. Should be called before starting collision detection.

+ +
+
+ +

◆ RecycleConstraintBuffer()

+ +
+
+ + + + + + + +
void ContactConstraintManager::RecycleConstraintBuffer ()
+
+ +

Recycle the constraint buffer. Should be called between collision simulation steps.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + + + + +
bool ContactConstraintManager::RestoreState (StateRecorderinStream)
+
+ +

Restoring state for replay. Returns false when failed.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ContactConstraintManager::SaveState (StateRecorderinStream,
const StateRecorderFilterinFilter 
) const
+
+ +

Saving state for replay.

+ +
+
+ +

◆ SetCombineFriction()

+ +
+
+ + + + + +
+ + + + + + + + +
void ContactConstraintManager::SetCombineFriction (CombineFunction inCombineFriction)
+
+inline
+
+

Set the function that combines the friction of two bodies and returns it Default method is the geometric mean: sqrt(friction1 * friction2).

+ +
+
+ +

◆ SetCombineRestitution()

+ +
+
+ + + + + +
+ + + + + + + + +
void ContactConstraintManager::SetCombineRestitution (CombineFunction inCombineRestitution)
+
+inline
+
+

Set the function that combines the restitution of two bodies and returns it Default method is max(restitution1, restitution1)

+ +
+
+ +

◆ SetContactListener()

+ +
+
+ + + + + +
+ + + + + + + + +
void ContactConstraintManager::SetContactListener (ContactListenerinListener)
+
+inline
+
+ +

Listener that is notified whenever a contact point between two bodies is added/updated/removed.

+ +
+
+ +

◆ SolvePositionConstraints()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool ContactConstraintManager::SolvePositionConstraints (const uint32inConstraintIdxBegin,
const uint32inConstraintIdxEnd 
)
+
+

Solve position constraints. This is using the approach described in 'Modeling and Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity integrate + a position integrate and then discard the velocity change.

+

Constraint force:

+

lambda = -K^-1 b

+

Baumgarte stabilization:

+

b = beta / dt C

+

beta = baumgarte stabilization factor. dt = delta time.

+ +
+
+ +

◆ SolveVelocityConstraints()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool ContactConstraintManager::SolveVelocityConstraints (const uint32inConstraintIdxBegin,
const uint32inConstraintIdxEnd 
)
+
+

Solve velocity constraints, when almost nothing changes this should only apply very small impulses since we're warm starting with the total impulse applied in the last frame above.

+

Friction wise we're using the Coulomb friction model which says that:

+

|F_T| <= mu |F_N|

+

Where F_T is the tangential force, F_N is the normal force and mu is the friction coefficient

+

In impulse terms this becomes:

+

|lambda_T| <= mu |lambda_N|

+

And the constraint that needs to be applied is exactly the same as a non penetration constraint except that we use a tangent instead of a normal. The tangent should point in the direction of the tangential velocity of the point:

+

J = [-T, -r1 x T, T, r2 x T]

+

Where T is the tangent.

+

See slide 42 and 43.

+

Restitution is implemented as a velocity bias (see slide 41):

+

b = e v_n^-

+

e = the restitution coefficient, v_n^- is the normal velocity prior to the collision

+

Restitution is only applied when v_n^- is large enough and the points are moving towards collision

+ +
+
+ +

◆ SortContacts()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ContactConstraintManager::SortContacts (uint32inConstraintIdxBegin,
uint32inConstraintIdxEnd 
) const
+
+ +

Sort contact constraints deterministically.

+ +
+
+ +

◆ StoreAppliedImpulses()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ContactConstraintManager::StoreAppliedImpulses (const uint32inConstraintIdxBegin,
const uint32inConstraintIdxEnd 
) const
+
+ +

Save back the lambdas to the contact cache for the next warm start.

+ +
+
+ +

◆ ValidateContactPoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ValidateResult ContactConstraintManager::ValidateContactPoint (const BodyinBody1,
const BodyinBody2,
RVec3Arg inBaseOffset,
const CollideShapeResultinCollisionResult 
) const
+
+inline
+
+ +

Check with the listener if inBody1 and inBody2 could collide, returns false if not.

+ +
+
+ +

◆ WarmStartVelocityConstraints()

+ +
+
+
+template<class MotionPropertiesCallback >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
template void ContactConstraintManager::WarmStartVelocityConstraints< DummyCalculateSolverSteps > (const uint32inConstraintIdxBegin,
const uint32inConstraintIdxEnd,
float inWarmStartImpulseRatio,
MotionPropertiesCallback & ioCallback 
)
+
+ +

Apply last frame's impulses as an initial guess for this frame's impulses.

+ +
+
+ +

◆ WereBodiesInContact()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool ContactConstraintManager::WereBodiesInContact (const BodyIDinBody1ID,
const BodyIDinBody2ID 
) const
+
+

Check if 2 bodies were in contact during the last simulation step. Since contacts are only detected between active bodies, at least one of the bodies must be active. Uses the read collision cache to determine if 2 bodies are in contact.

+ +
+
+

Member Data Documentation

+ +

◆ MaxContactPoints

+ +
+
+ + + + + +
+ + + + +
const int ContactConstraintManager::MaxContactPoints = 4
+
+static
+
+ +

Max 4 contact points are needed for a stable manifold.

+ +
+
+ +

◆ sDrawContactManifolds

+ +
+
+ + + + + +
+ + + + +
bool ContactConstraintManager::sDrawContactManifolds = false
+
+static
+
+ +
+
+ +

◆ sDrawContactPoint

+ +
+
+ + + + + +
+ + + + +
bool ContactConstraintManager::sDrawContactPoint = false
+
+static
+
+ +
+
+ +

◆ sDrawContactPointReduction

+ +
+
+ + + + + +
+ + + + +
bool ContactConstraintManager::sDrawContactPointReduction = false
+
+static
+
+ +
+
+ +

◆ sDrawSupportingFaces

+ +
+
+ + + + + +
+ + + + +
bool ContactConstraintManager::sDrawSupportingFaces = false
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_contact_constraint_manager.js b/class_contact_constraint_manager.js new file mode 100644 index 000000000..a942ea94d --- /dev/null +++ b/class_contact_constraint_manager.js @@ -0,0 +1,36 @@ +var class_contact_constraint_manager = +[ + [ "ContactAllocator", "class_contact_constraint_manager_1_1_contact_allocator.html", "class_contact_constraint_manager_1_1_contact_allocator" ], + [ "BodyPairHandle", "class_contact_constraint_manager.html#a5d7bb30c442d466ba19b92f8b5ffb754", null ], + [ "CombineFunction", "class_contact_constraint_manager.html#ad0b40a0f57d994f32b069744541fce56", null ], + [ "ContactConstraintManager", "class_contact_constraint_manager.html#ad99d5188de106b071b28914b4bece25f", null ], + [ "~ContactConstraintManager", "class_contact_constraint_manager.html#a99bbf2c00ef2ee156223858f2a2d6597", null ], + [ "AddBodyPair", "class_contact_constraint_manager.html#a1527877d78511ca6896722d9416e09d1", null ], + [ "AddContactConstraint", "class_contact_constraint_manager.html#ad54fa2fc8b0cbc1cd6cb5c5846e781be", null ], + [ "FinalizeContactCacheAndCallContactPointRemovedCallbacks", "class_contact_constraint_manager.html#a3b9cf92154e49319463950b66e692f56", null ], + [ "FinishConstraintBuffer", "class_contact_constraint_manager.html#a08550dcab7e85e7f82fcc0c7658baa32", null ], + [ "GetAffectedBodies", "class_contact_constraint_manager.html#a81dea14ac1bd33f74a07085690095403", null ], + [ "GetCombineFriction", "class_contact_constraint_manager.html#a2f9d4fe92f6b8a2952b51acb10f55258", null ], + [ "GetCombineRestitution", "class_contact_constraint_manager.html#a3e9f74aa49c583d6656430fa421326ab", null ], + [ "GetContactAllocator", "class_contact_constraint_manager.html#ae52944ca4945e6255a0f31794cf2aed5", null ], + [ "GetContactListener", "class_contact_constraint_manager.html#a7aa47c7b4d7470e83735deb74eae608d", null ], + [ "GetContactsFromCache", "class_contact_constraint_manager.html#ac438b9748b641a504658e700f0e43305", null ], + [ "GetMaxConstraints", "class_contact_constraint_manager.html#a50938b07679f8a97fff61e98a209c87c", null ], + [ "GetNumConstraints", "class_contact_constraint_manager.html#aad540014a518a8f5942842e1a347447f", null ], + [ "Init", "class_contact_constraint_manager.html#a8225433cfdf9f63fa149fdac25e0a263", null ], + [ "OnCCDContactAdded", "class_contact_constraint_manager.html#a95c132f19384bb01d869331e9faf3757", null ], + [ "PrepareConstraintBuffer", "class_contact_constraint_manager.html#a56fbdeb8c26a568919d431973830111a", null ], + [ "RecycleConstraintBuffer", "class_contact_constraint_manager.html#a3ede12b173e9c63f9421176573661b27", null ], + [ "RestoreState", "class_contact_constraint_manager.html#a2bc5cc8b8d36cf641dc4217fed0e63f6", null ], + [ "SaveState", "class_contact_constraint_manager.html#a09b5daefc89dca1489be3afa077cfcc0", null ], + [ "SetCombineFriction", "class_contact_constraint_manager.html#aae82d70c097d2c5a514faebd73ee4873", null ], + [ "SetCombineRestitution", "class_contact_constraint_manager.html#ae324c787f7d2ab43ed3adb13d3e7f24e", null ], + [ "SetContactListener", "class_contact_constraint_manager.html#acf262d3235f4eea01cd2aa8a9a3bfe83", null ], + [ "SolvePositionConstraints", "class_contact_constraint_manager.html#a45d8cb39a9e2a3644149661f4e01d2bd", null ], + [ "SolveVelocityConstraints", "class_contact_constraint_manager.html#a6be90138088b291b35baed7974887729", null ], + [ "SortContacts", "class_contact_constraint_manager.html#af45077f4de2c4ec57ebecf450e9b88f0", null ], + [ "StoreAppliedImpulses", "class_contact_constraint_manager.html#ac825a74176ec59d9e2995e67fc8d43c1", null ], + [ "ValidateContactPoint", "class_contact_constraint_manager.html#a4abd47f225871f02cd3a0c964106439d", null ], + [ "WarmStartVelocityConstraints", "class_contact_constraint_manager.html#abaf06f1f9eb408cf99a8231bc8801e8f", null ], + [ "WereBodiesInContact", "class_contact_constraint_manager.html#a46532b93dfd2edb0b45be8e5af4a7111", null ] +]; \ No newline at end of file diff --git a/class_contact_constraint_manager.png b/class_contact_constraint_manager.png new file mode 100644 index 000000000..7cb0d3f80 Binary files /dev/null and b/class_contact_constraint_manager.png differ diff --git a/class_contact_constraint_manager_1_1_contact_allocator-members.html b/class_contact_constraint_manager_1_1_contact_allocator-members.html new file mode 100644 index 000000000..a773bdfd7 --- /dev/null +++ b/class_contact_constraint_manager_1_1_contact_allocator-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ContactConstraintManager::ContactAllocator Member List
+
+
+ +

This is the complete list of members for ContactConstraintManager::ContactAllocator, including all inherited members.

+ + + + + + + + + +
Allocate(uint32 inSize, uint32 inAlignment, uint32 &outWriteOffset)LFHMAllocatorContextinline
LFHMAllocatorContext(LFHMAllocator &inAllocator, uint32 inBlockSize)ContactConstraintManager::ContactAllocatorinline
mErrorsContactConstraintManager::ContactAllocator
mNumBodyPairsContactConstraintManager::ContactAllocator
mNumManifoldsContactConstraintManager::ContactAllocator
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
+
+ + + + diff --git a/class_contact_constraint_manager_1_1_contact_allocator.html b/class_contact_constraint_manager_1_1_contact_allocator.html new file mode 100644 index 000000000..212f7c710 --- /dev/null +++ b/class_contact_constraint_manager_1_1_contact_allocator.html @@ -0,0 +1,259 @@ + + + + + + + +Jolt Physics: ContactConstraintManager::ContactAllocator Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ContactConstraintManager::ContactAllocator Class Reference
+
+
+ +

Contacts are allocated in a lock free hash map. + More...

+ +

#include <ContactConstraintManager.h>

+
+Inheritance diagram for ContactConstraintManager::ContactAllocator:
+
+
+ + +LFHMAllocatorContext +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 LFHMAllocatorContext (LFHMAllocator &inAllocator, uint32 inBlockSize)
 Construct a new allocator context.
 
- Public Member Functions inherited from LFHMAllocatorContext
 LFHMAllocatorContext (LFHMAllocator &inAllocator, uint32 inBlockSize)
 Construct a new allocator context.
 
bool Allocate (uint32 inSize, uint32 inAlignment, uint32 &outWriteOffset)
 Allocate data block.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + +

+Public Attributes

uint mNumBodyPairs = 0
 Total number of body pairs added using this allocator.
 
uint mNumManifolds = 0
 Total number of manifolds added using this allocator.
 
EPhysicsUpdateError mErrors = EPhysicsUpdateError::None
 Errors reported on this allocator.
 
+

Detailed Description

+

Contacts are allocated in a lock free hash map.

+

Member Function Documentation

+ +

◆ LFHMAllocatorContext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
LFHMAllocatorContext::LFHMAllocatorContext (LFHMAllocatorinAllocator,
uint32 inBlockSize 
)
+
+inline
+
+ +

Construct a new allocator context.

+ +
+
+

Member Data Documentation

+ +

◆ mErrors

+ +
+
+ + + + +
EPhysicsUpdateError ContactConstraintManager::ContactAllocator::mErrors = EPhysicsUpdateError::None
+
+ +

Errors reported on this allocator.

+ +
+
+ +

◆ mNumBodyPairs

+ +
+
+ + + + +
uint ContactConstraintManager::ContactAllocator::mNumBodyPairs = 0
+
+ +

Total number of body pairs added using this allocator.

+ +
+
+ +

◆ mNumManifolds

+ +
+
+ + + + +
uint ContactConstraintManager::ContactAllocator::mNumManifolds = 0
+
+ +

Total number of manifolds added using this allocator.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_contact_constraint_manager_1_1_contact_allocator.js b/class_contact_constraint_manager_1_1_contact_allocator.js new file mode 100644 index 000000000..85f64fa67 --- /dev/null +++ b/class_contact_constraint_manager_1_1_contact_allocator.js @@ -0,0 +1,7 @@ +var class_contact_constraint_manager_1_1_contact_allocator = +[ + [ "LFHMAllocatorContext", "class_contact_constraint_manager_1_1_contact_allocator.html#a4937e72fe7c08c45687b9deb3c3dba32", null ], + [ "mErrors", "class_contact_constraint_manager_1_1_contact_allocator.html#a1968130257ab4041d6e18c676869fdd3", null ], + [ "mNumBodyPairs", "class_contact_constraint_manager_1_1_contact_allocator.html#a1f988bcee137591463666032293d8357", null ], + [ "mNumManifolds", "class_contact_constraint_manager_1_1_contact_allocator.html#a7a95eb0a19e0b32c637eadf107977c3c", null ] +]; \ No newline at end of file diff --git a/class_contact_constraint_manager_1_1_contact_allocator.png b/class_contact_constraint_manager_1_1_contact_allocator.png new file mode 100644 index 000000000..79d040d24 Binary files /dev/null and b/class_contact_constraint_manager_1_1_contact_allocator.png differ diff --git a/class_contact_listener-members.html b/class_contact_listener-members.html new file mode 100644 index 000000000..34e204adb --- /dev/null +++ b/class_contact_listener-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ContactListener Member List
+
+
+ +

This is the complete list of members for ContactListener, including all inherited members.

+ + + + + + +
OnContactAdded(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &ioSettings)ContactListenerinlinevirtual
OnContactPersisted(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &ioSettings)ContactListenerinlinevirtual
OnContactRemoved(const SubShapeIDPair &inSubShapePair)ContactListenerinlinevirtual
OnContactValidate(const Body &inBody1, const Body &inBody2, RVec3Arg inBaseOffset, const CollideShapeResult &inCollisionResult)ContactListenerinlinevirtual
~ContactListener()=defaultContactListenervirtual
+
+ + + + diff --git a/class_contact_listener.html b/class_contact_listener.html new file mode 100644 index 000000000..c8bccebb6 --- /dev/null +++ b/class_contact_listener.html @@ -0,0 +1,346 @@ + + + + + + + +Jolt Physics: ContactListener Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ContactListener Class Reference
+
+
+ +

#include <ContactListener.h>

+ + + + + + + + + + + + + +

+Public Member Functions

virtual ~ContactListener ()=default
 Ensure virtual destructor.
 
virtual ValidateResult OnContactValidate (const Body &inBody1, const Body &inBody2, RVec3Arg inBaseOffset, const CollideShapeResult &inCollisionResult)
 
virtual void OnContactAdded (const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &ioSettings)
 
virtual void OnContactPersisted (const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &ioSettings)
 
virtual void OnContactRemoved (const SubShapeIDPair &inSubShapePair)
 
+

Detailed Description

+

A listener class that receives collision contact events. It can be registered with the ContactConstraintManager (or PhysicsSystem). Note that contact listener callbacks are called from multiple threads at the same time when all bodies are locked, you're only allowed to read from the bodies and you can't change physics state. During OnContactRemoved you cannot access the bodies at all, see the comments at that function.

+

Constructor & Destructor Documentation

+ +

◆ ~ContactListener()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ContactListener::~ContactListener ()
+
+virtualdefault
+
+ +

Ensure virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ OnContactAdded()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void ContactListener::OnContactAdded (const BodyinBody1,
const BodyinBody2,
const ContactManifoldinManifold,
ContactSettingsioSettings 
)
+
+inlinevirtual
+
+

Called whenever a new contact point is detected. Note that this callback is called when all bodies are locked, so don't use any locking functions! Body 1 and 2 will be sorted such that body 1 ID < body 2 ID, so body 1 may not be dynamic. Note that only active bodies will report contacts, as soon as a body goes to sleep the contacts between that body and all other bodies will receive an OnContactRemoved callback, if this is the case then Body::IsActive() will return false during the callback. When contacts are added, the constraint solver has not run yet, so the collision impulse is unknown at that point. The velocities of inBody1 and inBody2 are the velocities before the contact has been resolved, so you can use this to estimate the collision impulse to e.g. determine the volume of the impact sound to play (see: EstimateCollisionResponse).

+ +
+
+ +

◆ OnContactPersisted()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void ContactListener::OnContactPersisted (const BodyinBody1,
const BodyinBody2,
const ContactManifoldinManifold,
ContactSettingsioSettings 
)
+
+inlinevirtual
+
+

Called whenever a contact is detected that was also detected last update. Note that this callback is called when all bodies are locked, so don't use any locking functions! Body 1 and 2 will be sorted such that body 1 ID < body 2 ID, so body 1 may not be dynamic. If the structure of the shape of a body changes between simulation steps (e.g. by adding/removing a child shape of a compound shape), it is possible that the same sub shape ID used to identify the removed child shape is now reused for a different child shape. The physics system cannot detect this, so may send a 'contact persisted' callback even though the contact is now on a different child shape. You can detect this by keeping the old shape (before adding/removing a part) around until the next PhysicsSystem::Update (when the OnContactPersisted callbacks are triggered) and resolving the sub shape ID against both the old and new shape to see if they still refer to the same child shape.

+ +
+
+ +

◆ OnContactRemoved()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ContactListener::OnContactRemoved (const SubShapeIDPairinSubShapePair)
+
+inlinevirtual
+
+

Called whenever a contact was detected last update but is not detected anymore. You cannot access the bodies at the time of this callback because:

    +
  • All bodies are locked at the time of this callback.
  • +
  • Some properties of the bodies are being modified from another thread at the same time.
  • +
  • The body may have been removed and destroyed (you'll receive an OnContactRemoved callback in the PhysicsSystem::Update after the body has been removed). Cache what you need in the OnContactAdded and OnContactPersisted callbacks and store it in a separate structure to use during this callback. Alternatively, you could just record that the contact was removed and process it after PhysicsSimulation::Update. Body 1 and 2 will be sorted such that body 1 ID < body 2 ID, so body 1 may not be dynamic. The sub shape ID were created in the previous simulation step too, so if the structure of a shape changes (e.g. by adding/removing a child shape of a compound shape), the sub shape ID may not be valid / may not point to the same sub shape anymore. If you want to know if this is the last contact between the two bodies, use PhysicsSystem::WereBodiesInContact.
  • +
+ +
+
+ +

◆ OnContactValidate()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual ValidateResult ContactListener::OnContactValidate (const BodyinBody1,
const BodyinBody2,
RVec3Arg inBaseOffset,
const CollideShapeResultinCollisionResult 
)
+
+inlinevirtual
+
+

Called after detecting a collision between a body pair, but before calling OnContactAdded and before adding the contact constraint. If the function rejects the contact, the contact will not be added and any other contacts between this body pair will not be processed. This function will only be called once per PhysicsSystem::Update per body pair and may not be called again the next update if a contact persists and no new contact pairs between sub shapes are found. This is a rather expensive time to reject a contact point since a lot of the collision detection has happened already, make sure you filter out the majority of undesired body pairs through the ObjectLayerPairFilter that is registered on the PhysicsSystem. Note that this callback is called when all bodies are locked, so don't use any locking functions! Body 1 will have a motion type that is larger or equal than body 2's motion type (order from large to small: dynamic -> kinematic -> static). When motion types are equal, they are ordered by BodyID. The collision result (inCollisionResult) is reported relative to inBaseOffset.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_contact_listener.js b/class_contact_listener.js new file mode 100644 index 000000000..ca890470e --- /dev/null +++ b/class_contact_listener.js @@ -0,0 +1,8 @@ +var class_contact_listener = +[ + [ "~ContactListener", "class_contact_listener.html#a577b31dbf6d6e5a6ada2864a0b3f70bd", null ], + [ "OnContactAdded", "class_contact_listener.html#aeb1d7908c8556ce24448ac572d7ad944", null ], + [ "OnContactPersisted", "class_contact_listener.html#aa11e4d0107c2764e1c7e04eef72cb404", null ], + [ "OnContactRemoved", "class_contact_listener.html#aef8f0cac1d560622743420afcd1ce17a", null ], + [ "OnContactValidate", "class_contact_listener.html#abb704483e4e1f2eba7109b504afdf482", null ] +]; \ No newline at end of file diff --git a/class_contact_manifold-members.html b/class_contact_manifold-members.html new file mode 100644 index 000000000..97fcdd958 --- /dev/null +++ b/class_contact_manifold-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ContactManifold Member List
+
+
+ +

This is the complete list of members for ContactManifold, including all inherited members.

+ + + + + + + + + + + +
GetWorldSpaceContactPointOn1(uint inIndex) constContactManifoldinline
GetWorldSpaceContactPointOn2(uint inIndex) constContactManifoldinline
mBaseOffsetContactManifold
mPenetrationDepthContactManifold
mRelativeContactPointsOn1ContactManifold
mRelativeContactPointsOn2ContactManifold
mSubShapeID1ContactManifold
mSubShapeID2ContactManifold
mWorldSpaceNormalContactManifold
SwapShapes() constContactManifoldinline
+
+ + + + diff --git a/class_contact_manifold.html b/class_contact_manifold.html new file mode 100644 index 000000000..92989d09e --- /dev/null +++ b/class_contact_manifold.html @@ -0,0 +1,356 @@ + + + + + + + +Jolt Physics: ContactManifold Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ContactManifold Class Reference
+
+
+ +

Manifold class, describes the contact surface between two bodies. + More...

+ +

#include <ContactListener.h>

+ + + + + + + + + + +

+Public Member Functions

ContactManifold SwapShapes () const
 Swaps shape 1 and 2.
 
RVec3 GetWorldSpaceContactPointOn1 (uint inIndex) const
 Access to the world space contact positions.
 
RVec3 GetWorldSpaceContactPointOn2 (uint inIndex) const
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

RVec3 mBaseOffset
 Offset to which all the contact points are relative.
 
Vec3 mWorldSpaceNormal
 Normal for this manifold, direction along which to move body 2 out of collision along the shortest path.
 
float mPenetrationDepth
 Penetration depth (move shape 2 by this distance to resolve the collision). If this value is negative, this is a speculative contact point and may not actually result in a velocity change as during solving the bodies may not actually collide.
 
SubShapeID mSubShapeID1
 Sub shapes that formed this manifold (note that when multiple manifolds are combined because they're coplanar, we lose some information here because we only keep track of one sub shape pair that we encounter, see description at Body::SetUseManifoldReduction)
 
SubShapeID mSubShapeID2
 
ContactPoints mRelativeContactPointsOn1
 Contact points on the surface of shape 1 relative to mBaseOffset.
 
ContactPoints mRelativeContactPointsOn2
 Contact points on the surface of shape 2 relative to mBaseOffset. If there's no penetration, this will be the same as mRelativeContactPointsOn1. If there is penetration they will be different.
 
+

Detailed Description

+

Manifold class, describes the contact surface between two bodies.

+

Member Function Documentation

+ +

◆ GetWorldSpaceContactPointOn1()

+ +
+
+ + + + + +
+ + + + + + + + +
RVec3 ContactManifold::GetWorldSpaceContactPointOn1 (uint inIndex) const
+
+inline
+
+ +

Access to the world space contact positions.

+ +
+
+ +

◆ GetWorldSpaceContactPointOn2()

+ +
+
+ + + + + +
+ + + + + + + + +
RVec3 ContactManifold::GetWorldSpaceContactPointOn2 (uint inIndex) const
+
+inline
+
+ +
+
+ +

◆ SwapShapes()

+ +
+
+ + + + + +
+ + + + + + + +
ContactManifold ContactManifold::SwapShapes () const
+
+inline
+
+ +

Swaps shape 1 and 2.

+ +
+
+

Member Data Documentation

+ +

◆ mBaseOffset

+ +
+
+ + + + +
RVec3 ContactManifold::mBaseOffset
+
+ +

Offset to which all the contact points are relative.

+ +
+
+ +

◆ mPenetrationDepth

+ +
+
+ + + + +
float ContactManifold::mPenetrationDepth
+
+ +

Penetration depth (move shape 2 by this distance to resolve the collision). If this value is negative, this is a speculative contact point and may not actually result in a velocity change as during solving the bodies may not actually collide.

+ +
+
+ +

◆ mRelativeContactPointsOn1

+ +
+
+ + + + +
ContactPoints ContactManifold::mRelativeContactPointsOn1
+
+ +

Contact points on the surface of shape 1 relative to mBaseOffset.

+ +
+
+ +

◆ mRelativeContactPointsOn2

+ +
+
+ + + + +
ContactPoints ContactManifold::mRelativeContactPointsOn2
+
+ +

Contact points on the surface of shape 2 relative to mBaseOffset. If there's no penetration, this will be the same as mRelativeContactPointsOn1. If there is penetration they will be different.

+ +
+
+ +

◆ mSubShapeID1

+ +
+
+ + + + +
SubShapeID ContactManifold::mSubShapeID1
+
+ +

Sub shapes that formed this manifold (note that when multiple manifolds are combined because they're coplanar, we lose some information here because we only keep track of one sub shape pair that we encounter, see description at Body::SetUseManifoldReduction)

+ +
+
+ +

◆ mSubShapeID2

+ +
+
+ + + + +
SubShapeID ContactManifold::mSubShapeID2
+
+ +
+
+ +

◆ mWorldSpaceNormal

+ +
+
+ + + + +
Vec3 ContactManifold::mWorldSpaceNormal
+
+ +

Normal for this manifold, direction along which to move body 2 out of collision along the shortest path.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_contact_manifold.js b/class_contact_manifold.js new file mode 100644 index 000000000..210d58408 --- /dev/null +++ b/class_contact_manifold.js @@ -0,0 +1,13 @@ +var class_contact_manifold = +[ + [ "GetWorldSpaceContactPointOn1", "class_contact_manifold.html#a1112cfe6df7934c56e585d5985d2870a", null ], + [ "GetWorldSpaceContactPointOn2", "class_contact_manifold.html#a28d3d860f9bb992c0c581b7a68df6681", null ], + [ "SwapShapes", "class_contact_manifold.html#a48787ecfb82e124dfa8cd1de71ed8027", null ], + [ "mBaseOffset", "class_contact_manifold.html#a7411bc12e55f88b3e2855fe8dc57a05e", null ], + [ "mPenetrationDepth", "class_contact_manifold.html#add2819f7131894b379fd2c6f4b90099a", null ], + [ "mRelativeContactPointsOn1", "class_contact_manifold.html#ab878d752ba8167d0e1292ddded15f153", null ], + [ "mRelativeContactPointsOn2", "class_contact_manifold.html#a82c0a5937e977e8ce4169d39e1a3d64c", null ], + [ "mSubShapeID1", "class_contact_manifold.html#ad02e3fa2a71653627234207197f2038a", null ], + [ "mSubShapeID2", "class_contact_manifold.html#a4daf9a7c0e11fcbfe1a65ffcea1a5fb1", null ], + [ "mWorldSpaceNormal", "class_contact_manifold.html#ab90dc956aa8b9936495992212fa64487", null ] +]; \ No newline at end of file diff --git a/class_contact_settings-members.html b/class_contact_settings-members.html new file mode 100644 index 000000000..33657d803 --- /dev/null +++ b/class_contact_settings-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ContactSettings Member List
+
+
+ +

This is the complete list of members for ContactSettings, including all inherited members.

+ + + + + + + + + + +
mCombinedFrictionContactSettings
mCombinedRestitutionContactSettings
mInvInertiaScale1ContactSettings
mInvInertiaScale2ContactSettings
mInvMassScale1ContactSettings
mInvMassScale2ContactSettings
mIsSensorContactSettings
mRelativeAngularSurfaceVelocityContactSettings
mRelativeLinearSurfaceVelocityContactSettings
+
+ + + + diff --git a/class_contact_settings.html b/class_contact_settings.html new file mode 100644 index 000000000..f8081f208 --- /dev/null +++ b/class_contact_settings.html @@ -0,0 +1,300 @@ + + + + + + + +Jolt Physics: ContactSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ContactSettings Class Reference
+
+
+ +

#include <ContactListener.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

float mCombinedFriction
 Combined friction for the body pair (see: PhysicsSystem::SetCombineFriction)
 
float mCombinedRestitution
 Combined restitution for the body pair (see: PhysicsSystem::SetCombineRestitution)
 
float mInvMassScale1 = 1.0f
 Scale factor for the inverse mass of body 1 (0 = infinite mass, 1 = use original mass, 2 = body has half the mass). For the same contact pair, you should strive to keep the value the same over time.
 
float mInvInertiaScale1 = 1.0f
 Scale factor for the inverse inertia of body 1 (usually same as mInvMassScale1)
 
float mInvMassScale2 = 1.0f
 Scale factor for the inverse mass of body 2 (0 = infinite mass, 1 = use original mass, 2 = body has half the mass). For the same contact pair, you should strive to keep the value the same over time.
 
float mInvInertiaScale2 = 1.0f
 Scale factor for the inverse inertia of body 2 (usually same as mInvMassScale2)
 
bool mIsSensor
 If the contact should be treated as a sensor vs body contact (no collision response)
 
Vec3 mRelativeLinearSurfaceVelocity = Vec3::sZero()
 Relative linear surface velocity between the bodies (world space surface velocity of body 2 - world space surface velocity of body 1), can be used to create a conveyor belt effect.
 
Vec3 mRelativeAngularSurfaceVelocity = Vec3::sZero()
 Relative angular surface velocity between the bodies (world space angular surface velocity of body 2 - world space angular surface velocity of body 1). Note that this angular velocity is relative to the center of mass of body 1, so if you want it relative to body 2's center of mass you need to add body 2 angular velocity x (body 1 world space center of mass - body 2 world space center of mass) to mRelativeLinearSurfaceVelocity.
 
+

Detailed Description

+

When a contact point is added or persisted, the callback gets a chance to override certain properties of the contact constraint. The values are filled in with their defaults by the system so the callback doesn't need to modify anything, but it can if it wants to.

+

Member Data Documentation

+ +

◆ mCombinedFriction

+ +
+
+ + + + +
float ContactSettings::mCombinedFriction
+
+ +

Combined friction for the body pair (see: PhysicsSystem::SetCombineFriction)

+ +
+
+ +

◆ mCombinedRestitution

+ +
+
+ + + + +
float ContactSettings::mCombinedRestitution
+
+ +

Combined restitution for the body pair (see: PhysicsSystem::SetCombineRestitution)

+ +
+
+ +

◆ mInvInertiaScale1

+ +
+
+ + + + +
float ContactSettings::mInvInertiaScale1 = 1.0f
+
+ +

Scale factor for the inverse inertia of body 1 (usually same as mInvMassScale1)

+ +
+
+ +

◆ mInvInertiaScale2

+ +
+
+ + + + +
float ContactSettings::mInvInertiaScale2 = 1.0f
+
+ +

Scale factor for the inverse inertia of body 2 (usually same as mInvMassScale2)

+ +
+
+ +

◆ mInvMassScale1

+ +
+
+ + + + +
float ContactSettings::mInvMassScale1 = 1.0f
+
+ +

Scale factor for the inverse mass of body 1 (0 = infinite mass, 1 = use original mass, 2 = body has half the mass). For the same contact pair, you should strive to keep the value the same over time.

+ +
+
+ +

◆ mInvMassScale2

+ +
+
+ + + + +
float ContactSettings::mInvMassScale2 = 1.0f
+
+ +

Scale factor for the inverse mass of body 2 (0 = infinite mass, 1 = use original mass, 2 = body has half the mass). For the same contact pair, you should strive to keep the value the same over time.

+ +
+
+ +

◆ mIsSensor

+ +
+
+ + + + +
bool ContactSettings::mIsSensor
+
+ +

If the contact should be treated as a sensor vs body contact (no collision response)

+ +
+
+ +

◆ mRelativeAngularSurfaceVelocity

+ +
+
+ + + + +
Vec3 ContactSettings::mRelativeAngularSurfaceVelocity = Vec3::sZero()
+
+ +

Relative angular surface velocity between the bodies (world space angular surface velocity of body 2 - world space angular surface velocity of body 1). Note that this angular velocity is relative to the center of mass of body 1, so if you want it relative to body 2's center of mass you need to add body 2 angular velocity x (body 1 world space center of mass - body 2 world space center of mass) to mRelativeLinearSurfaceVelocity.

+ +
+
+ +

◆ mRelativeLinearSurfaceVelocity

+ +
+
+ + + + +
Vec3 ContactSettings::mRelativeLinearSurfaceVelocity = Vec3::sZero()
+
+ +

Relative linear surface velocity between the bodies (world space surface velocity of body 2 - world space surface velocity of body 1), can be used to create a conveyor belt effect.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_contact_settings.js b/class_contact_settings.js new file mode 100644 index 000000000..8cc4a4d2a --- /dev/null +++ b/class_contact_settings.js @@ -0,0 +1,12 @@ +var class_contact_settings = +[ + [ "mCombinedFriction", "class_contact_settings.html#a7a6722d38f6dd9f504412e3663400a2d", null ], + [ "mCombinedRestitution", "class_contact_settings.html#ade2482177e9dd9c8596a4a1cc6338979", null ], + [ "mInvInertiaScale1", "class_contact_settings.html#aaf521121674ff2c72b762c87bfabed11", null ], + [ "mInvInertiaScale2", "class_contact_settings.html#a699874a8c427e9861a83b993c55b1ee8", null ], + [ "mInvMassScale1", "class_contact_settings.html#a6b2c4b599362d4e3837120571af2c3ce", null ], + [ "mInvMassScale2", "class_contact_settings.html#a37639a208ebcf5ca37462c3689c73828", null ], + [ "mIsSensor", "class_contact_settings.html#a1c5f448521399a40a9384dcc1aa1474f", null ], + [ "mRelativeAngularSurfaceVelocity", "class_contact_settings.html#a5f18a7a0fa71d91b1bd75481ea549de9", null ], + [ "mRelativeLinearSurfaceVelocity", "class_contact_settings.html#a42f0680fb14771132aab269491c217ff", null ] +]; \ No newline at end of file diff --git a/class_convex_hull_builder-members.html b/class_convex_hull_builder-members.html new file mode 100644 index 000000000..2f52c4331 --- /dev/null +++ b/class_convex_hull_builder-members.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullBuilder Member List
+
+
+ +

This is the complete list of members for ConvexHullBuilder, including all inherited members.

+ + + + + + + + + + + + + + + + +
ConflictList typedefConvexHullBuilder
ContainsFace(const Array< int > &inIndices) constConvexHullBuilder
ConvexHullBuilder(const Positions &inPositions)ConvexHullBuilderexplicit
DetermineMaxError(Face *&outFaceWithMaxError, float &outMaxError, int &outMaxErrorPositionIdx, float &outCoplanarDistance) constConvexHullBuilder
EResult enum nameConvexHullBuilder
Faces typedefConvexHullBuilder
GetCenterOfMassAndVolume(Vec3 &outCenterOfMass, float &outVolume) constConvexHullBuilder
GetFaces() constConvexHullBuilderinline
GetNumVerticesUsed() constConvexHullBuilder
Initialize(int inMaxVertices, float inTolerance, const char *&outError)ConvexHullBuilder
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Positions typedefConvexHullBuilder
~ConvexHullBuilder()ConvexHullBuilderinline
+
+ + + + diff --git a/class_convex_hull_builder.html b/class_convex_hull_builder.html new file mode 100644 index 000000000..c99710913 --- /dev/null +++ b/class_convex_hull_builder.html @@ -0,0 +1,526 @@ + + + + + + + +Jolt Physics: ConvexHullBuilder Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullBuilder Class Reference
+
+
+ +

A convex hull builder that tries to create hulls as accurately as possible. Used for offline processing. + More...

+ +

#include <ConvexHullBuilder.h>

+
+Inheritance diagram for ConvexHullBuilder:
+
+
+ + +NonCopyable + +
+ + + + + + + + +

+Classes

class  Edge
 Class that holds the information of an edge. More...
 
class  Face
 Class that holds the information of one face. More...
 
+ + + + + + + + + + +

+Public Types

enum class  EResult {
+  Success +, MaxVerticesReached +, TooFewPoints +, TooFewFaces +,
+  Degenerate +
+ }
 Result enum that indicates how the hull got created. More...
 
using ConflictList = Array< int >
 
using Positions = Array< Vec3 >
 
using Faces = Array< Face * >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConvexHullBuilder (const Positions &inPositions)
 Constructor.
 
 ~ConvexHullBuilder ()
 Destructor.
 
EResult Initialize (int inMaxVertices, float inTolerance, const char *&outError)
 
int GetNumVerticesUsed () const
 Returns the amount of vertices that are currently used by the hull.
 
bool ContainsFace (const Array< int > &inIndices) const
 Returns true if the hull contains a polygon with inIndices (counter clockwise indices in mPositions)
 
void GetCenterOfMassAndVolume (Vec3 &outCenterOfMass, float &outVolume) const
 Calculate the center of mass and the volume of the current convex hull.
 
void DetermineMaxError (Face *&outFaceWithMaxError, float &outMaxError, int &outMaxErrorPositionIdx, float &outCoplanarDistance) const
 
const FacesGetFaces () const
 Access to the created faces. Memory is owned by the convex hull builder.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

A convex hull builder that tries to create hulls as accurately as possible. Used for offline processing.

+

Member Typedef Documentation

+ +

◆ ConflictList

+ +
+
+ + + + +
using ConvexHullBuilder::ConflictList = Array<int>
+
+ +
+
+ +

◆ Faces

+ +
+
+ + + + +
using ConvexHullBuilder::Faces = Array<Face *>
+
+ +
+
+ +

◆ Positions

+ +
+
+ +
+
+

Member Enumeration Documentation

+ +

◆ EResult

+ +
+
+ + + + + +
+ + + + +
enum class ConvexHullBuilder::EResult
+
+strong
+
+ +

Result enum that indicates how the hull got created.

+ + + + + + +
Enumerator
Success 

Hull building finished successfully.

+
MaxVerticesReached 

Hull building finished successfully, but the desired accuracy was not reached because the max vertices limit was reached.

+
TooFewPoints 

Too few points to create a hull.

+
TooFewFaces 

Too few faces in the created hull (signifies precision errors during building)

+
Degenerate 

Degenerate hull detected.

+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ConvexHullBuilder()

+ +
+
+ + + + + +
+ + + + + + + + +
ConvexHullBuilder::ConvexHullBuilder (const PositionsinPositions)
+
+explicit
+
+ +

Constructor.

+ +
+
+ +

◆ ~ConvexHullBuilder()

+ +
+
+ + + + + +
+ + + + + + + +
ConvexHullBuilder::~ConvexHullBuilder ()
+
+inline
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ ContainsFace()

+ +
+
+ + + + + + + + +
bool ConvexHullBuilder::ContainsFace (const Array< int > & inIndices) const
+
+ +

Returns true if the hull contains a polygon with inIndices (counter clockwise indices in mPositions)

+ +
+
+ +

◆ DetermineMaxError()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexHullBuilder::DetermineMaxError (Face *& outFaceWithMaxError,
float & outMaxError,
int & outMaxErrorPositionIdx,
float & outCoplanarDistance 
) const
+
+

Determines the point that is furthest outside of the hull and reports how far it is outside of the hull (which indicates a failure during hull building)

Parameters
+ + + + + +
outFaceWithMaxErrorThe face that caused the error
outMaxErrorThe maximum distance of a point to the hull
outMaxErrorPositionIdxThe index of the point that had this distance
outCoplanarDistancePoints that are less than this distance from the hull are considered on the hull. This should be used as a lowerbound for the allowed error.
+
+
+ +
+
+ +

◆ GetCenterOfMassAndVolume()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ConvexHullBuilder::GetCenterOfMassAndVolume (Vec3outCenterOfMass,
float & outVolume 
) const
+
+ +

Calculate the center of mass and the volume of the current convex hull.

+ +
+
+ +

◆ GetFaces()

+ +
+
+ + + + + +
+ + + + + + + +
const Faces & ConvexHullBuilder::GetFaces () const
+
+inline
+
+ +

Access to the created faces. Memory is owned by the convex hull builder.

+ +
+
+ +

◆ GetNumVerticesUsed()

+ +
+
+ + + + + + + +
int ConvexHullBuilder::GetNumVerticesUsed () const
+
+ +

Returns the amount of vertices that are currently used by the hull.

+ +
+
+ +

◆ Initialize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ConvexHullBuilder::EResult ConvexHullBuilder::Initialize (int inMaxVertices,
float inTolerance,
const char *& outError 
)
+
+

Takes all positions as provided by the constructor and use them to build a hull Any points that are closer to the hull than inTolerance will be discarded

Parameters
+ + + + +
inMaxVerticesMax vertices to allow in the hull. Specify INT_MAX if there is no limit.
inToleranceMax distance that a point is allowed to be outside of the hull
outErrorError message when building fails
+
+
+
Returns
Status code that reports if the hull was created or not
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_convex_hull_builder.js b/class_convex_hull_builder.js new file mode 100644 index 000000000..25e0124ef --- /dev/null +++ b/class_convex_hull_builder.js @@ -0,0 +1,23 @@ +var class_convex_hull_builder = +[ + [ "Edge", "class_convex_hull_builder_1_1_edge.html", "class_convex_hull_builder_1_1_edge" ], + [ "Face", "class_convex_hull_builder_1_1_face.html", "class_convex_hull_builder_1_1_face" ], + [ "ConflictList", "class_convex_hull_builder.html#ace24021747e9c5b273b5ed357622564c", null ], + [ "Faces", "class_convex_hull_builder.html#ae9f7a2eb095de53f76a7d3ea9198f7b4", null ], + [ "Positions", "class_convex_hull_builder.html#ae813b9da0b02f643f5075e121aa6880b", null ], + [ "EResult", "class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469a", [ + [ "Success", "class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa505a83f220c02df2f85c3810cd9ceb38", null ], + [ "MaxVerticesReached", "class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa7cc57ee56f4f29991173f4efa7a469e9", null ], + [ "TooFewPoints", "class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa675071632f91d793892ece6ed205483f", null ], + [ "TooFewFaces", "class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa04477b2749feb6999bd3cb1c9f6fd963", null ], + [ "Degenerate", "class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa24c813faee6d26cc144bec89a984824d", null ] + ] ], + [ "ConvexHullBuilder", "class_convex_hull_builder.html#a245e3c9f2ac5137c9ee5d66c9f7a7b9d", null ], + [ "~ConvexHullBuilder", "class_convex_hull_builder.html#a3182f05659156aba23773cd1cdb5c0cd", null ], + [ "ContainsFace", "class_convex_hull_builder.html#a423d9e378746f1e9d6edb19bb2afa11f", null ], + [ "DetermineMaxError", "class_convex_hull_builder.html#aae519c2ae09443413ef0c9e91dd26076", null ], + [ "GetCenterOfMassAndVolume", "class_convex_hull_builder.html#a4e3fbe324250233f9a3d527004d08c09", null ], + [ "GetFaces", "class_convex_hull_builder.html#a2eade6ba63e25c3bda4eaf159d1128ce", null ], + [ "GetNumVerticesUsed", "class_convex_hull_builder.html#af5deecbd010d00845107696af6797e63", null ], + [ "Initialize", "class_convex_hull_builder.html#afa4a4a97fc8ae9e58c039b3c36d10c54", null ] +]; \ No newline at end of file diff --git a/class_convex_hull_builder.png b/class_convex_hull_builder.png new file mode 100644 index 000000000..cb907d0a6 Binary files /dev/null and b/class_convex_hull_builder.png differ diff --git a/class_convex_hull_builder2_d-members.html b/class_convex_hull_builder2_d-members.html new file mode 100644 index 000000000..96b2286c8 --- /dev/null +++ b/class_convex_hull_builder2_d-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullBuilder2D Member List
+
+
+ +

This is the complete list of members for ConvexHullBuilder2D, including all inherited members.

+ + + + + + + + + + +
ConvexHullBuilder2D(const Positions &inPositions)ConvexHullBuilder2Dexplicit
Edges typedefConvexHullBuilder2D
EResult enum nameConvexHullBuilder2D
Initialize(int inIdx1, int inIdx2, int inIdx3, int inMaxVertices, float inTolerance, Edges &outEdges)ConvexHullBuilder2D
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Positions typedefConvexHullBuilder2D
~ConvexHullBuilder2D()ConvexHullBuilder2D
+
+ + + + diff --git a/class_convex_hull_builder2_d.html b/class_convex_hull_builder2_d.html new file mode 100644 index 000000000..57aebf7d7 --- /dev/null +++ b/class_convex_hull_builder2_d.html @@ -0,0 +1,344 @@ + + + + + + + +Jolt Physics: ConvexHullBuilder2D Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullBuilder2D Class Reference
+
+
+ +

A convex hull builder that tries to create 2D hulls as accurately as possible. Used for offline processing. + More...

+ +

#include <ConvexHullBuilder2D.h>

+
+Inheritance diagram for ConvexHullBuilder2D:
+
+
+ + +NonCopyable + +
+ + + + + + + + + +

+Public Types

enum class  EResult { Success +, MaxVerticesReached + }
 Result enum that indicates how the hull got created. More...
 
using Positions = Array< Vec3 >
 
using Edges = Array< int >
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

 ConvexHullBuilder2D (const Positions &inPositions)
 
 ~ConvexHullBuilder2D ()
 Destructor.
 
EResult Initialize (int inIdx1, int inIdx2, int inIdx3, int inMaxVertices, float inTolerance, Edges &outEdges)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

A convex hull builder that tries to create 2D hulls as accurately as possible. Used for offline processing.

+

Member Typedef Documentation

+ +

◆ Edges

+ +
+
+ + + + +
using ConvexHullBuilder2D::Edges = Array<int>
+
+ +
+
+ +

◆ Positions

+ +
+
+ +
+
+

Member Enumeration Documentation

+ +

◆ EResult

+ +
+
+ + + + + +
+ + + + +
enum class ConvexHullBuilder2D::EResult
+
+strong
+
+ +

Result enum that indicates how the hull got created.

+ + + +
Enumerator
Success 

Hull building finished successfully.

+
MaxVerticesReached 

Hull building finished successfully, but the desired accuracy was not reached because the max vertices limit was reached.

+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ConvexHullBuilder2D()

+ +
+
+ + + + + +
+ + + + + + + + +
ConvexHullBuilder2D::ConvexHullBuilder2D (const PositionsinPositions)
+
+explicit
+
+

Constructor

Parameters
+ + +
inPositionsPositions used to make the hull. Uses X and Y component of Vec3 only!
+
+
+ +
+
+ +

◆ ~ConvexHullBuilder2D()

+ +
+
+ + + + + + + +
ConvexHullBuilder2D::~ConvexHullBuilder2D ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Initialize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConvexHullBuilder2D::EResult ConvexHullBuilder2D::Initialize (int inIdx1,
int inIdx2,
int inIdx3,
int inMaxVertices,
float inTolerance,
EdgesoutEdges 
)
+
+

Takes all positions as provided by the constructor and use them to build a hull Any points that are closer to the hull than inTolerance will be discarded

Parameters
+ + + + + +
inIdx1,inIdx2,inIdx3The indices to use as initial hull (in any order)
inMaxVerticesMax vertices to allow in the hull. Specify INT_MAX if there is no limit.
inToleranceMax distance that a point is allowed to be outside of the hull
outEdgesOn success this will contain the list of indices that form the hull (counter clockwise)
+
+
+
Returns
Status code that reports if the hull was created or not
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_convex_hull_builder2_d.js b/class_convex_hull_builder2_d.js new file mode 100644 index 000000000..2e7f22865 --- /dev/null +++ b/class_convex_hull_builder2_d.js @@ -0,0 +1,12 @@ +var class_convex_hull_builder2_d = +[ + [ "Edges", "class_convex_hull_builder2_d.html#a5827b465379b2d68b9bf2e6968565df5", null ], + [ "Positions", "class_convex_hull_builder2_d.html#a73280989dea747d4ec494b260e85222c", null ], + [ "EResult", "class_convex_hull_builder2_d.html#a249cc4fd8288bd1cf447d3d820e9dcd0", [ + [ "Success", "class_convex_hull_builder2_d.html#a249cc4fd8288bd1cf447d3d820e9dcd0a505a83f220c02df2f85c3810cd9ceb38", null ], + [ "MaxVerticesReached", "class_convex_hull_builder2_d.html#a249cc4fd8288bd1cf447d3d820e9dcd0a7cc57ee56f4f29991173f4efa7a469e9", null ] + ] ], + [ "ConvexHullBuilder2D", "class_convex_hull_builder2_d.html#ab299706e0b4a473b763116a31ff234c8", null ], + [ "~ConvexHullBuilder2D", "class_convex_hull_builder2_d.html#a9fd6172b0d35d0f66114514b6a8a31b0", null ], + [ "Initialize", "class_convex_hull_builder2_d.html#aa7047be80b54c2b14497e3d34c3dd956", null ] +]; \ No newline at end of file diff --git a/class_convex_hull_builder2_d.png b/class_convex_hull_builder2_d.png new file mode 100644 index 000000000..4f882d728 Binary files /dev/null and b/class_convex_hull_builder2_d.png differ diff --git a/class_convex_hull_builder_1_1_edge-members.html b/class_convex_hull_builder_1_1_edge-members.html new file mode 100644 index 000000000..fcae12a27 --- /dev/null +++ b/class_convex_hull_builder_1_1_edge-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullBuilder::Edge Member List
+
+
+ +

This is the complete list of members for ConvexHullBuilder::Edge, including all inherited members.

+ + + + + + + + + + +
Edge(Face *inFace, int inStartIdx)ConvexHullBuilder::Edgeinline
GetPreviousEdge()ConvexHullBuilder::Edgeinline
mFaceConvexHullBuilder::Edge
mNeighbourEdgeConvexHullBuilder::Edge
mNextEdgeConvexHullBuilder::Edge
mStartIdxConvexHullBuilder::Edge
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
+
+ + + + diff --git a/class_convex_hull_builder_1_1_edge.html b/class_convex_hull_builder_1_1_edge.html new file mode 100644 index 000000000..92c777192 --- /dev/null +++ b/class_convex_hull_builder_1_1_edge.html @@ -0,0 +1,301 @@ + + + + + + + +Jolt Physics: ConvexHullBuilder::Edge Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullBuilder::Edge Class Reference
+
+
+ +

Class that holds the information of an edge. + More...

+ +

#include <ConvexHullBuilder.h>

+
+Inheritance diagram for ConvexHullBuilder::Edge:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Edge (Face *inFace, int inStartIdx)
 Constructor.
 
EdgeGetPreviousEdge ()
 Get the previous edge.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + +

+Public Attributes

FacemFace
 Face that this edge belongs to.
 
EdgemNextEdge = nullptr
 Next edge of this face.
 
EdgemNeighbourEdge = nullptr
 Edge that this edge is connected to.
 
int mStartIdx
 Vertex index in mPositions that indicates the start vertex of this edge.
 
+

Detailed Description

+

Class that holds the information of an edge.

+

Constructor & Destructor Documentation

+ +

◆ Edge()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_OVERRIDE_NEW_DELETE ConvexHullBuilder::Edge::Edge (FaceinFace,
int inStartIdx 
)
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetPreviousEdge()

+ +
+
+ + + + + +
+ + + + + + + +
Edge * ConvexHullBuilder::Edge::GetPreviousEdge ()
+
+inline
+
+ +

Get the previous edge.

+ +
+
+

Member Data Documentation

+ +

◆ mFace

+ +
+
+ + + + +
Face* ConvexHullBuilder::Edge::mFace
+
+ +

Face that this edge belongs to.

+ +
+
+ +

◆ mNeighbourEdge

+ +
+
+ + + + +
Edge* ConvexHullBuilder::Edge::mNeighbourEdge = nullptr
+
+ +

Edge that this edge is connected to.

+ +
+
+ +

◆ mNextEdge

+ +
+
+ + + + +
Edge* ConvexHullBuilder::Edge::mNextEdge = nullptr
+
+ +

Next edge of this face.

+ +
+
+ +

◆ mStartIdx

+ +
+
+ + + + +
int ConvexHullBuilder::Edge::mStartIdx
+
+ +

Vertex index in mPositions that indicates the start vertex of this edge.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_convex_hull_builder_1_1_edge.js b/class_convex_hull_builder_1_1_edge.js new file mode 100644 index 000000000..361c05f2e --- /dev/null +++ b/class_convex_hull_builder_1_1_edge.js @@ -0,0 +1,9 @@ +var class_convex_hull_builder_1_1_edge = +[ + [ "Edge", "class_convex_hull_builder_1_1_edge.html#a0d350bab8acf2ad5360554e87c2c5b0e", null ], + [ "GetPreviousEdge", "class_convex_hull_builder_1_1_edge.html#af8a79bb1db1fa4f8cdbc67dc04261563", null ], + [ "mFace", "class_convex_hull_builder_1_1_edge.html#abfc9e0d70adde9c5c0118cccaace8677", null ], + [ "mNeighbourEdge", "class_convex_hull_builder_1_1_edge.html#a0472b2afdf6989d40f9e82067364df1d", null ], + [ "mNextEdge", "class_convex_hull_builder_1_1_edge.html#a6b51430691fc49292ebca40a2736b508", null ], + [ "mStartIdx", "class_convex_hull_builder_1_1_edge.html#ab10d2e518b78941d3a5a4cb8854e30df", null ] +]; \ No newline at end of file diff --git a/class_convex_hull_builder_1_1_edge.png b/class_convex_hull_builder_1_1_edge.png new file mode 100644 index 000000000..78deed066 Binary files /dev/null and b/class_convex_hull_builder_1_1_edge.png differ diff --git a/class_convex_hull_builder_1_1_face-members.html b/class_convex_hull_builder_1_1_face-members.html new file mode 100644 index 000000000..871e7bde2 --- /dev/null +++ b/class_convex_hull_builder_1_1_face-members.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullBuilder::Face Member List
+
+
+ +

This is the complete list of members for ConvexHullBuilder::Face, including all inherited members.

+ + + + + + + + + + + + + + +
CalculateNormalAndCentroid(const Vec3 *inPositions)ConvexHullBuilder::Face
Initialize(int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions)ConvexHullBuilder::Face
IsFacing(Vec3Arg inPosition) constConvexHullBuilder::Faceinline
mCentroidConvexHullBuilder::Face
mConflictListConvexHullBuilder::Face
mFirstEdgeConvexHullBuilder::Face
mFurthestPointDistanceSqConvexHullBuilder::Face
mNormalConvexHullBuilder::Face
mRemovedConvexHullBuilder::Face
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~Face()ConvexHullBuilder::Face
+
+ + + + diff --git a/class_convex_hull_builder_1_1_face.html b/class_convex_hull_builder_1_1_face.html new file mode 100644 index 000000000..532844caa --- /dev/null +++ b/class_convex_hull_builder_1_1_face.html @@ -0,0 +1,390 @@ + + + + + + + +Jolt Physics: ConvexHullBuilder::Face Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullBuilder::Face Class Reference
+
+
+ +

Class that holds the information of one face. + More...

+ +

#include <ConvexHullBuilder.h>

+
+Inheritance diagram for ConvexHullBuilder::Face:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ~Face ()
 Destructor.
 
void Initialize (int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions)
 Initialize a face with three indices.
 
void CalculateNormalAndCentroid (const Vec3 *inPositions)
 Calculates the centroid and normal for this face.
 
bool IsFacing (Vec3Arg inPosition) const
 Check if face inFace is facing inPosition.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

Vec3 mNormal
 Normal of this face, length is 2 times area of face.
 
Vec3 mCentroid
 Center of the face.
 
ConflictList mConflictList
 Positions associated with this edge (that are closest to this edge). The last position in the list is the point that is furthest away from the face.
 
EdgemFirstEdge = nullptr
 First edge of this face.
 
float mFurthestPointDistanceSq = 0.0f
 Squared distance of furthest point from the conflict list to the face.
 
bool mRemoved = false
 Flag that indicates that face has been removed (face will be freed later)
 
+

Detailed Description

+

Class that holds the information of one face.

+

Constructor & Destructor Documentation

+ +

◆ ~Face()

+ +
+
+ + + + + + + +
JPH_SUPPRESS_WARNINGS_STD_BEGIN JPH_SUPPRESS_WARNINGS_STD_END JPH_NAMESPACE_BEGIN ConvexHullBuilder::Face::~Face ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ CalculateNormalAndCentroid()

+ +
+
+ + + + + + + + +
void ConvexHullBuilder::Face::CalculateNormalAndCentroid (const Vec3inPositions)
+
+ +

Calculates the centroid and normal for this face.

+ +
+
+ +

◆ Initialize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexHullBuilder::Face::Initialize (int inIdx0,
int inIdx1,
int inIdx2,
const Vec3inPositions 
)
+
+ +

Initialize a face with three indices.

+ +
+
+ +

◆ IsFacing()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ConvexHullBuilder::Face::IsFacing (Vec3Arg inPosition) const
+
+inline
+
+ +

Check if face inFace is facing inPosition.

+ +
+
+

Member Data Documentation

+ +

◆ mCentroid

+ +
+
+ + + + +
Vec3 ConvexHullBuilder::Face::mCentroid
+
+ +

Center of the face.

+ +
+
+ +

◆ mConflictList

+ +
+
+ + + + +
ConflictList ConvexHullBuilder::Face::mConflictList
+
+ +

Positions associated with this edge (that are closest to this edge). The last position in the list is the point that is furthest away from the face.

+ +
+
+ +

◆ mFirstEdge

+ +
+
+ + + + +
Edge* ConvexHullBuilder::Face::mFirstEdge = nullptr
+
+ +

First edge of this face.

+ +
+
+ +

◆ mFurthestPointDistanceSq

+ +
+
+ + + + +
float ConvexHullBuilder::Face::mFurthestPointDistanceSq = 0.0f
+
+ +

Squared distance of furthest point from the conflict list to the face.

+ +
+
+ +

◆ mNormal

+ +
+
+ + + + +
Vec3 ConvexHullBuilder::Face::mNormal
+
+ +

Normal of this face, length is 2 times area of face.

+ +
+
+ +

◆ mRemoved

+ +
+
+ + + + +
bool ConvexHullBuilder::Face::mRemoved = false
+
+ +

Flag that indicates that face has been removed (face will be freed later)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_convex_hull_builder_1_1_face.js b/class_convex_hull_builder_1_1_face.js new file mode 100644 index 000000000..af01c55f5 --- /dev/null +++ b/class_convex_hull_builder_1_1_face.js @@ -0,0 +1,13 @@ +var class_convex_hull_builder_1_1_face = +[ + [ "~Face", "class_convex_hull_builder_1_1_face.html#a76369d0554260d6e1405544d01422bec", null ], + [ "CalculateNormalAndCentroid", "class_convex_hull_builder_1_1_face.html#a96233d9beb894b8c85c834b13868a4e1", null ], + [ "Initialize", "class_convex_hull_builder_1_1_face.html#ad7bd1a953fcc40b6987a3d51c90f61ce", null ], + [ "IsFacing", "class_convex_hull_builder_1_1_face.html#ab6cda375e944b9d24410dab0ee120c4e", null ], + [ "mCentroid", "class_convex_hull_builder_1_1_face.html#aac39b755e92c80eff3b7a24ccfc54306", null ], + [ "mConflictList", "class_convex_hull_builder_1_1_face.html#af009d8104d2c16039128bd10007cdeac", null ], + [ "mFirstEdge", "class_convex_hull_builder_1_1_face.html#a6c4d1af7b20e96a40a47b541c509bd1e", null ], + [ "mFurthestPointDistanceSq", "class_convex_hull_builder_1_1_face.html#acefff13e1b81ab41edd158c68132c797", null ], + [ "mNormal", "class_convex_hull_builder_1_1_face.html#ad9d4de58a7e80db8bcff6ffe1f88326b", null ], + [ "mRemoved", "class_convex_hull_builder_1_1_face.html#abf031b64af208beebf2e41403b7869bf", null ] +]; \ No newline at end of file diff --git a/class_convex_hull_builder_1_1_face.png b/class_convex_hull_builder_1_1_face.png new file mode 100644 index 000000000..e758a2cc0 Binary files /dev/null and b/class_convex_hull_builder_1_1_face.png differ diff --git a/class_convex_hull_shape-members.html b/class_convex_hull_shape-members.html new file mode 100644 index 000000000..b3e7036f5 --- /dev/null +++ b/class_convex_hull_shape-members.html @@ -0,0 +1,213 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullShape Member List
+
+
+ +

This is the complete list of members for ConvexHullShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideConvexHullShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideConvexHullShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
cMaxPointsInHullConvexHullShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideConvexHullShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideConvexHullShapevirtual
ConvexHullShape()ConvexHullShapeinline
ConvexHullShape(const ConvexHullShapeSettings &inSettings, ShapeResult &outResult)ConvexHullShape
ConvexShape(EShapeSubType inSubType)ConvexShapeinlineexplicit
ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)ConvexShapeinline
ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial)ConvexShapeinline
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideConvexHullShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideConvexShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideConvexShapevirtual
DrawShrunkShape(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constConvexHullShape
ESupportMode enum nameConvexShape
GetCenterOfMass() const overrideConvexHullShapeinlinevirtual
GetConvexRadius() constConvexHullShapeinline
GetDensity() constConvexShapeinline
GetFaceVertices(uint inFaceIndex, uint inMaxVertices, uint *outVertices) constConvexHullShapeinline
GetInnerRadius() const overrideConvexHullShapeinlinevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const overrideConvexHullShapeinlinevirtual
GetMassProperties() const overrideConvexHullShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideConvexShapeinlinevirtual
GetMaterial() constConvexShapeinline
GetNumFaces() constConvexHullShapeinline
GetNumPoints() constConvexHullShapeinline
GetNumVerticesInFace(uint inFaceIndex) constConvexHullShapeinline
GetPlanes() constConvexHullShapeinline
GetPoint(uint inIndex) constConvexHullShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideConvexHullShapevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideConvexHullShapevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideConvexShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const overrideConvexHullShapevirtual
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideConvexHullShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideConvexHullShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideConvexHullShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideConvexHullShapevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideConvexHullShapeinlinevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) constShapevirtual
MakeScaleValid(Vec3Arg inScale) constShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() constShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideConvexHullShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) overrideConvexShapevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) const overrideConvexHullShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) const overrideConvexShapevirtual
Shape::SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawFaceOutlinesConvexHullShapeinlinestatic
sDrawSubmergedVolumesShapestatic
SetDensity(float inDensity)ConvexShapeinline
SetEmbedded() constRefTarget< Shape >inline
SetMaterial(const PhysicsMaterial *inMaterial)ConvexShapeinline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()ConvexHullShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
sUnitSphereTrianglesConvexShapeprotectedstatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_convex_hull_shape.html b/class_convex_hull_shape.html new file mode 100644 index 000000000..9301b842c --- /dev/null +++ b/class_convex_hull_shape.html @@ -0,0 +1,1666 @@ + + + + + + + +Jolt Physics: ConvexHullShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullShape Class Referencefinal
+
+
+ +

A convex hull. + More...

+ +

#include <ConvexHullShape.h>

+
+Inheritance diagram for ConvexHullShape:
+
+
+ + +ConvexShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + + + + + + + +

+Classes

class  CHSGetTrianglesContext
 
class  HullNoConvex
 
class  HullWithConvex
 
class  HullWithConvexScaled
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConvexHullShape ()
 Constructor.
 
 ConvexHullShape (const ConvexHullShapeSettings &inSettings, ShapeResult &outResult)
 
virtual Vec3 GetCenterOfMass () const override
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual const SupportGetSupportFunction (ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
void DrawShrunkShape (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Debugging helper draw function that draws how all points are moved when a shape is shrunk by the convex radius.
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
float GetConvexRadius () const
 Get the convex radius of this convex hull.
 
const Array< Plane > & GetPlanes () const
 Get the planes of this convex hull.
 
uint GetNumPoints () const
 Get the number of vertices in this convex hull.
 
Vec3 GetPoint (uint inIndex) const
 Get a vertex of this convex hull relative to the center of mass.
 
uint GetNumFaces () const
 Get the number of faces in this convex hull.
 
uint GetNumVerticesInFace (uint inFaceIndex) const
 Get the number of vertices in a face.
 
uint GetFaceVertices (uint inFaceIndex, uint inMaxVertices, uint *outVertices) const
 
- Public Member Functions inherited from ConvexShape
JPH_OVERRIDE_NEW_DELETE ConvexShape (EShapeSubType inSubType)
 Constructor.
 
 ConvexShape (EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)
 
 ConvexShape (EShapeSubType inSubType, const PhysicsMaterial *inMaterial)
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
void SetMaterial (const PhysicsMaterial *inMaterial)
 Material of the shape.
 
const PhysicsMaterialGetMaterial () const
 
void SetDensity (float inDensity)
 Set density of the shape (kg / m^3)
 
float GetDensity () const
 Get density of the shape (kg / m^3)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const override
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual bool MustBeStatic () const
 Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual bool IsValidScale (Vec3Arg inScale) const
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from ConvexShape
static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + + + + + + + + + + +

+Static Public Attributes

static JPH_OVERRIDE_NEW_DELETE constexpr int cMaxPointsInHull = 256
 
static bool sDrawFaceOutlines = false
 Draw the outlines of the faces of the convex hull when drawing the shape.
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConvexShape
enum class  ESupportMode { ExcludeConvexRadius +, IncludeConvexRadius +, Default + }
 How the GetSupport function should behave. More...
 
- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from ConvexShape
static const StaticArray< Vec3, 384 > sUnitSphereTriangles
 Vertex list that forms a unit sphere.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A convex hull.

+

Constructor & Destructor Documentation

+ +

◆ ConvexHullShape() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
ConvexHullShape::ConvexHullShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ ConvexHullShape() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
ConvexHullShape::ConvexHullShape (const ConvexHullShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexHullShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool ConvexHullShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexHullShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexHullShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexHullShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ DrawShrunkShape()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexHullShape::DrawShrunkShape (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+ +

Debugging helper draw function that draws how all points are moved when a shape is shrunk by the convex radius.

+ +
+
+ +

◆ GetCenterOfMass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vec3 ConvexHullShape::GetCenterOfMass () const
+
+inlineoverridevirtual
+
+ +

All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float ConvexHullShape::GetConvexRadius () const
+
+inline
+
+ +

Get the convex radius of this convex hull.

+ +
+
+ +

◆ GetFaceVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint ConvexHullShape::GetFaceVertices (uint inFaceIndex,
uint inMaxVertices,
uintoutVertices 
) const
+
+inline
+
+

Get the vertices indices of a face

Parameters
+ + + + +
inFaceIndexIndex of the face.
inMaxVerticesMaximum number of vertices to return.
outVerticesArray of vertices indices, must be at least inMaxVertices in size, the vertices are returned in counter clockwise order and the positions can be obtained using GetPoint(index).
+
+
+
Returns
Number of vertices in face, if this is bigger than inMaxVertices, not all vertices were retrieved.
+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float ConvexHullShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
virtual AABox ConvexHullShape::GetLocalBounds () const
+
+inlineoverridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties ConvexHullShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetNumFaces()

+ +
+
+ + + + + +
+ + + + + + + +
uint ConvexHullShape::GetNumFaces () const
+
+inline
+
+ +

Get the number of faces in this convex hull.

+ +
+
+ +

◆ GetNumPoints()

+ +
+
+ + + + + +
+ + + + + + + +
uint ConvexHullShape::GetNumPoints () const
+
+inline
+
+ +

Get the number of vertices in this convex hull.

+ +
+
+ +

◆ GetNumVerticesInFace()

+ +
+
+ + + + + +
+ + + + + + + + +
uint ConvexHullShape::GetNumVerticesInFace (uint inFaceIndex) const
+
+inline
+
+ +

Get the number of vertices in a face.

+ +
+
+ +

◆ GetPlanes()

+ +
+
+ + + + + +
+ + + + + + + +
const Array< Plane > & ConvexHullShape::GetPlanes () const
+
+inline
+
+ +

Get the planes of this convex hull.

+ +
+
+ +

◆ GetPoint()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 ConvexHullShape::GetPoint (uint inIndex) const
+
+inline
+
+ +

Get a vertex of this convex hull relative to the center of mass.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
Shape::Stats ConvexHullShape::GetStats () const
+
+overridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexHullShape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3 &outCenterOfBuoyancy  JPH_IF_DEBUG_RENDERER, RVec3Arg inBaseOffset 
) const
+
+overridevirtual
+
+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
const ConvexShape::Support * ConvexHullShape::GetSupportFunction (ESupportMode inMode,
SupportBufferinBuffer,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Returns an object that provides the GetSupport function for this shape. inMode determines if this support function includes or excludes the convex radius. of the values returned by the GetSupport function. This improves numerical accuracy of the results. inScale scales this shape in local space.

+ +

Implements ConvexShape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexHullShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 ConvexHullShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int ConvexHullShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+overridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexHullShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float ConvexHullShape::GetVolume () const
+
+inlineoverridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConvexHullShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConvexHullShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void ConvexHullShape::sRegister ()
+
+static
+
+ +
+
+

Member Data Documentation

+ +

◆ cMaxPointsInHull

+ +
+
+ + + + + +
+ + + + +
JPH_OVERRIDE_NEW_DELETE constexpr int ConvexHullShape::cMaxPointsInHull = 256
+
+staticconstexpr
+
+

Maximum amount of points supported in a convex hull. Note that while constructing a hull, interior points are discarded so you can provide more points. The ConvexHullShapeSettings::Create function will return an error when too many points are provided.

+ +
+
+ +

◆ sDrawFaceOutlines

+ +
+
+ + + + + +
+ + + + +
bool ConvexHullShape::sDrawFaceOutlines = false
+
+inlinestatic
+
+ +

Draw the outlines of the faces of the convex hull when drawing the shape.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_convex_hull_shape.js b/class_convex_hull_shape.js new file mode 100644 index 000000000..918b8db2f --- /dev/null +++ b/class_convex_hull_shape.js @@ -0,0 +1,36 @@ +var class_convex_hull_shape = +[ + [ "CHSGetTrianglesContext", "class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html", "class_convex_hull_shape_1_1_c_h_s_get_triangles_context" ], + [ "HullNoConvex", "class_convex_hull_shape_1_1_hull_no_convex.html", "class_convex_hull_shape_1_1_hull_no_convex" ], + [ "HullWithConvex", "class_convex_hull_shape_1_1_hull_with_convex.html", "class_convex_hull_shape_1_1_hull_with_convex" ], + [ "HullWithConvexScaled", "class_convex_hull_shape_1_1_hull_with_convex_scaled.html", "class_convex_hull_shape_1_1_hull_with_convex_scaled" ], + [ "ConvexHullShape", "class_convex_hull_shape.html#ab2c0f1f214f4542f932fc0de78ad9312", null ], + [ "ConvexHullShape", "class_convex_hull_shape.html#aad25bb2ae100d80bf90b5f2a4a3f2436", null ], + [ "CastRay", "class_convex_hull_shape.html#aebdc497b84304d41defc52341ff57dee", null ], + [ "CastRay", "class_convex_hull_shape.html#a4bd9f4df37b021fb520b8acfaa441794", null ], + [ "CollidePoint", "class_convex_hull_shape.html#a735042a5743c3f86f5a57efdf0326c85", null ], + [ "CollideSoftBodyVertices", "class_convex_hull_shape.html#ad18b9b99f430af79e5d4ea67a90cb9fd", null ], + [ "Draw", "class_convex_hull_shape.html#a539ee8eb075e2011e67dfd10292f0c12", null ], + [ "DrawShrunkShape", "class_convex_hull_shape.html#ac286a6da6e3f7df5e7dc8fb507f80e2e", null ], + [ "GetCenterOfMass", "class_convex_hull_shape.html#a0f05c53d66e43a401aca34de00d700c1", null ], + [ "GetConvexRadius", "class_convex_hull_shape.html#ae130c8434054b8c5778bde9eee608598", null ], + [ "GetFaceVertices", "class_convex_hull_shape.html#a264fca49465c3fcfd2b261b6ee795f3a", null ], + [ "GetInnerRadius", "class_convex_hull_shape.html#a43f64b08407a44d5c441f41ce520dfe5", null ], + [ "GetLocalBounds", "class_convex_hull_shape.html#a49b4086adc746e5b69c772b4607cd2ec", null ], + [ "GetMassProperties", "class_convex_hull_shape.html#aef499d89aadc1f62c7d2acc527d54e4f", null ], + [ "GetNumFaces", "class_convex_hull_shape.html#a93a52de78a436f3c3a54c72a9c9e1e05", null ], + [ "GetNumPoints", "class_convex_hull_shape.html#adb56ee374395d692a32d08975e8d91ff", null ], + [ "GetNumVerticesInFace", "class_convex_hull_shape.html#a57b08042d580d3cecbef5cb5e7dd179f", null ], + [ "GetPlanes", "class_convex_hull_shape.html#a82497cbbe81983826a5f13a0dd0f3b2b", null ], + [ "GetPoint", "class_convex_hull_shape.html#a611a3efc9d9016c15917bf329eadf2ec", null ], + [ "GetStats", "class_convex_hull_shape.html#abdfd4a2a43587db1b5d726c78d3ee2b5", null ], + [ "GetSubmergedVolume", "class_convex_hull_shape.html#ab050ca44e34a8329d661019c379b39c6", null ], + [ "GetSupportFunction", "class_convex_hull_shape.html#ae343a96fe9cce1424f7ddeb7a98a393b", null ], + [ "GetSupportingFace", "class_convex_hull_shape.html#a9707b7f687ecaac45496dc111535782e", null ], + [ "GetSurfaceNormal", "class_convex_hull_shape.html#a586cf0e80d2f705fb104d4b6c3cb5d13", null ], + [ "GetTrianglesNext", "class_convex_hull_shape.html#a7def260c11540094261de145227efa04", null ], + [ "GetTrianglesStart", "class_convex_hull_shape.html#a6c4c9fd637e19f6d7d7aa32a0389a6a6", null ], + [ "GetVolume", "class_convex_hull_shape.html#a0f6066d340c3db1d1d06373fa18b4691", null ], + [ "RestoreBinaryState", "class_convex_hull_shape.html#a15bb554d0dcaf667f40bdb13b07f6ccd", null ], + [ "SaveBinaryState", "class_convex_hull_shape.html#a358bad64610220b2deb68c4aa821748e", null ] +]; \ No newline at end of file diff --git a/class_convex_hull_shape.png b/class_convex_hull_shape.png new file mode 100644 index 000000000..f09c9853b Binary files /dev/null and b/class_convex_hull_shape.png differ diff --git a/class_convex_hull_shape_1_1_c_h_s_get_triangles_context-members.html b/class_convex_hull_shape_1_1_c_h_s_get_triangles_context-members.html new file mode 100644 index 000000000..6f1c0bc08 --- /dev/null +++ b/class_convex_hull_shape_1_1_c_h_s_get_triangles_context-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullShape::CHSGetTrianglesContext Member List
+
+
+ +

This is the complete list of members for ConvexHullShape::CHSGetTrianglesContext, including all inherited members.

+ + + + + +
CHSGetTrianglesContext(Mat44Arg inTransform, bool inIsInsideOut)ConvexHullShape::CHSGetTrianglesContextinline
mCurrentFaceConvexHullShape::CHSGetTrianglesContext
mIsInsideOutConvexHullShape::CHSGetTrianglesContext
mTransformConvexHullShape::CHSGetTrianglesContext
+
+ + + + diff --git a/class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html b/class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html new file mode 100644 index 000000000..5ec2e18e2 --- /dev/null +++ b/class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html @@ -0,0 +1,216 @@ + + + + + + + +Jolt Physics: ConvexHullShape::CHSGetTrianglesContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullShape::CHSGetTrianglesContext Class Reference
+
+
+ + + + +

+Public Member Functions

 CHSGetTrianglesContext (Mat44Arg inTransform, bool inIsInsideOut)
 
+ + + + + + + +

+Public Attributes

Mat44 mTransform
 
bool mIsInsideOut
 
size_t mCurrentFace = 0
 
+

Constructor & Destructor Documentation

+ +

◆ CHSGetTrianglesContext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ConvexHullShape::CHSGetTrianglesContext::CHSGetTrianglesContext (Mat44Arg inTransform,
bool inIsInsideOut 
)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mCurrentFace

+ +
+
+ + + + +
size_t ConvexHullShape::CHSGetTrianglesContext::mCurrentFace = 0
+
+ +
+
+ +

◆ mIsInsideOut

+ +
+
+ + + + +
bool ConvexHullShape::CHSGetTrianglesContext::mIsInsideOut
+
+ +
+
+ +

◆ mTransform

+ +
+
+ + + + +
Mat44 ConvexHullShape::CHSGetTrianglesContext::mTransform
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_convex_hull_shape_1_1_c_h_s_get_triangles_context.js b/class_convex_hull_shape_1_1_c_h_s_get_triangles_context.js new file mode 100644 index 000000000..7a9cd8889 --- /dev/null +++ b/class_convex_hull_shape_1_1_c_h_s_get_triangles_context.js @@ -0,0 +1,7 @@ +var class_convex_hull_shape_1_1_c_h_s_get_triangles_context = +[ + [ "CHSGetTrianglesContext", "class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html#a3c02ac3528dc01b7d2450eb4e19c1d95", null ], + [ "mCurrentFace", "class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html#afbd620fc52b4916635309d3f7e16338c", null ], + [ "mIsInsideOut", "class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html#a2fddbc85a34e6e1dfa5e49624dde0f47", null ], + [ "mTransform", "class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html#ac7fb2a99b543d33c12bd22fae1469532", null ] +]; \ No newline at end of file diff --git a/class_convex_hull_shape_1_1_hull_no_convex-members.html b/class_convex_hull_shape_1_1_hull_no_convex-members.html new file mode 100644 index 000000000..8b33851af --- /dev/null +++ b/class_convex_hull_shape_1_1_hull_no_convex-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullShape::HullNoConvex Member List
+
+
+ +

This is the complete list of members for ConvexHullShape::HullNoConvex, including all inherited members.

+ + + + + + + + +
GetConvexRadius() const overrideConvexHullShape::HullNoConvexinlinevirtual
GetPoints()ConvexHullShape::HullNoConvexinline
GetPoints() constConvexHullShape::HullNoConvexinline
GetSupport(Vec3Arg inDirection) const overrideConvexHullShape::HullNoConvexinlinevirtual
HullNoConvex(float inConvexRadius)ConvexHullShape::HullNoConvexinlineexplicit
PointsArray typedefConvexHullShape::HullNoConvex
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_convex_hull_shape_1_1_hull_no_convex.html b/class_convex_hull_shape_1_1_hull_no_convex.html new file mode 100644 index 000000000..2c52f50f8 --- /dev/null +++ b/class_convex_hull_shape_1_1_hull_no_convex.html @@ -0,0 +1,303 @@ + + + + + + + +Jolt Physics: ConvexHullShape::HullNoConvex Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullShape::HullNoConvex Class Referencefinal
+
+
+
+Inheritance diagram for ConvexHullShape::HullNoConvex:
+
+
+ + +ConvexShape::Support + +
+ + + + +

+Public Types

using PointsArray = StaticArray< Vec3, cMaxPointsInHull >
 
+ + + + + + + + + + + + + + + +

+Public Member Functions

 HullNoConvex (float inConvexRadius)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
PointsArrayGetPoints ()
 
const PointsArrayGetPoints () const
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Member Typedef Documentation

+ +

◆ PointsArray

+ + +

Constructor & Destructor Documentation

+ +

◆ HullNoConvex()

+ +
+
+ + + + + +
+ + + + + + + + +
ConvexHullShape::HullNoConvex::HullNoConvex (float inConvexRadius)
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float ConvexHullShape::HullNoConvex::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetPoints() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
PointsArray & ConvexHullShape::HullNoConvex::GetPoints ()
+
+inline
+
+ +
+
+ +

◆ GetPoints() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const PointsArray & ConvexHullShape::HullNoConvex::GetPoints () const
+
+inline
+
+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 ConvexHullShape::HullNoConvex::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_convex_hull_shape_1_1_hull_no_convex.js b/class_convex_hull_shape_1_1_hull_no_convex.js new file mode 100644 index 000000000..079fc8796 --- /dev/null +++ b/class_convex_hull_shape_1_1_hull_no_convex.js @@ -0,0 +1,9 @@ +var class_convex_hull_shape_1_1_hull_no_convex = +[ + [ "PointsArray", "class_convex_hull_shape_1_1_hull_no_convex.html#a8a4d0da03b860376b42f768cd7534844", null ], + [ "HullNoConvex", "class_convex_hull_shape_1_1_hull_no_convex.html#a652a6ba8e320db5f9bd800be8a09b383", null ], + [ "GetConvexRadius", "class_convex_hull_shape_1_1_hull_no_convex.html#a9eb3d10a97e5ff7728db7f2ab218eff5", null ], + [ "GetPoints", "class_convex_hull_shape_1_1_hull_no_convex.html#ae04c0e70e714f921fadc87f564dba26e", null ], + [ "GetPoints", "class_convex_hull_shape_1_1_hull_no_convex.html#a92d3e4199e5b0f75fb4726659a67b4f3", null ], + [ "GetSupport", "class_convex_hull_shape_1_1_hull_no_convex.html#ac12140f541d4dcf2b1c6a58108c0b026", null ] +]; \ No newline at end of file diff --git a/class_convex_hull_shape_1_1_hull_no_convex.png b/class_convex_hull_shape_1_1_hull_no_convex.png new file mode 100644 index 000000000..79016a846 Binary files /dev/null and b/class_convex_hull_shape_1_1_hull_no_convex.png differ diff --git a/class_convex_hull_shape_1_1_hull_with_convex-members.html b/class_convex_hull_shape_1_1_hull_with_convex-members.html new file mode 100644 index 000000000..e002304f8 --- /dev/null +++ b/class_convex_hull_shape_1_1_hull_with_convex-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullShape::HullWithConvex Member List
+
+
+ +

This is the complete list of members for ConvexHullShape::HullWithConvex, including all inherited members.

+ + + + + +
GetConvexRadius() const overrideConvexHullShape::HullWithConvexinlinevirtual
GetSupport(Vec3Arg inDirection) const overrideConvexHullShape::HullWithConvexinlinevirtual
HullWithConvex(const ConvexHullShape *inShape)ConvexHullShape::HullWithConvexinlineexplicit
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_convex_hull_shape_1_1_hull_with_convex.html b/class_convex_hull_shape_1_1_hull_with_convex.html new file mode 100644 index 000000000..da14a07dd --- /dev/null +++ b/class_convex_hull_shape_1_1_hull_with_convex.html @@ -0,0 +1,228 @@ + + + + + + + +Jolt Physics: ConvexHullShape::HullWithConvex Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullShape::HullWithConvex Class Referencefinal
+
+
+
+Inheritance diagram for ConvexHullShape::HullWithConvex:
+
+
+ + +ConvexShape::Support + +
+ + + + + + + + + + + + +

+Public Member Functions

 HullWithConvex (const ConvexHullShape *inShape)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Constructor & Destructor Documentation

+ +

◆ HullWithConvex()

+ +
+
+ + + + + +
+ + + + + + + + +
ConvexHullShape::HullWithConvex::HullWithConvex (const ConvexHullShapeinShape)
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float ConvexHullShape::HullWithConvex::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 ConvexHullShape::HullWithConvex::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_convex_hull_shape_1_1_hull_with_convex.js b/class_convex_hull_shape_1_1_hull_with_convex.js new file mode 100644 index 000000000..0a36e60d6 --- /dev/null +++ b/class_convex_hull_shape_1_1_hull_with_convex.js @@ -0,0 +1,6 @@ +var class_convex_hull_shape_1_1_hull_with_convex = +[ + [ "HullWithConvex", "class_convex_hull_shape_1_1_hull_with_convex.html#a2cc182e90ba06f5fdf0db6824c4173ee", null ], + [ "GetConvexRadius", "class_convex_hull_shape_1_1_hull_with_convex.html#a069ec0a55025c42b3496246b949cd596", null ], + [ "GetSupport", "class_convex_hull_shape_1_1_hull_with_convex.html#a0abf6518afb0203d73ed2308d3bb83b1", null ] +]; \ No newline at end of file diff --git a/class_convex_hull_shape_1_1_hull_with_convex.png b/class_convex_hull_shape_1_1_hull_with_convex.png new file mode 100644 index 000000000..0eca161a1 Binary files /dev/null and b/class_convex_hull_shape_1_1_hull_with_convex.png differ diff --git a/class_convex_hull_shape_1_1_hull_with_convex_scaled-members.html b/class_convex_hull_shape_1_1_hull_with_convex_scaled-members.html new file mode 100644 index 000000000..9a47c5b8a --- /dev/null +++ b/class_convex_hull_shape_1_1_hull_with_convex_scaled-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullShape::HullWithConvexScaled Member List
+
+
+ +

This is the complete list of members for ConvexHullShape::HullWithConvexScaled, including all inherited members.

+ + + + + +
GetConvexRadius() const overrideConvexHullShape::HullWithConvexScaledinlinevirtual
GetSupport(Vec3Arg inDirection) const overrideConvexHullShape::HullWithConvexScaledinlinevirtual
HullWithConvexScaled(const ConvexHullShape *inShape, Vec3Arg inScale)ConvexHullShape::HullWithConvexScaledinline
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_convex_hull_shape_1_1_hull_with_convex_scaled.html b/class_convex_hull_shape_1_1_hull_with_convex_scaled.html new file mode 100644 index 000000000..3f22a2c15 --- /dev/null +++ b/class_convex_hull_shape_1_1_hull_with_convex_scaled.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: ConvexHullShape::HullWithConvexScaled Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullShape::HullWithConvexScaled Class Referencefinal
+
+
+
+Inheritance diagram for ConvexHullShape::HullWithConvexScaled:
+
+
+ + +ConvexShape::Support + +
+ + + + + + + + + + + + +

+Public Member Functions

 HullWithConvexScaled (const ConvexHullShape *inShape, Vec3Arg inScale)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Constructor & Destructor Documentation

+ +

◆ HullWithConvexScaled()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ConvexHullShape::HullWithConvexScaled::HullWithConvexScaled (const ConvexHullShapeinShape,
Vec3Arg inScale 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float ConvexHullShape::HullWithConvexScaled::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 ConvexHullShape::HullWithConvexScaled::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_convex_hull_shape_1_1_hull_with_convex_scaled.js b/class_convex_hull_shape_1_1_hull_with_convex_scaled.js new file mode 100644 index 000000000..3c127d935 --- /dev/null +++ b/class_convex_hull_shape_1_1_hull_with_convex_scaled.js @@ -0,0 +1,6 @@ +var class_convex_hull_shape_1_1_hull_with_convex_scaled = +[ + [ "HullWithConvexScaled", "class_convex_hull_shape_1_1_hull_with_convex_scaled.html#a909efa72b31f796f8b86bc2fbe00d620", null ], + [ "GetConvexRadius", "class_convex_hull_shape_1_1_hull_with_convex_scaled.html#a35a3f457cbdae6352227be61c356bba1", null ], + [ "GetSupport", "class_convex_hull_shape_1_1_hull_with_convex_scaled.html#aad0e71dae0215de9d65abee32e3d5bb7", null ] +]; \ No newline at end of file diff --git a/class_convex_hull_shape_1_1_hull_with_convex_scaled.png b/class_convex_hull_shape_1_1_hull_with_convex_scaled.png new file mode 100644 index 000000000..04ff656a4 Binary files /dev/null and b/class_convex_hull_shape_1_1_hull_with_convex_scaled.png differ diff --git a/class_convex_hull_shape_settings-members.html b/class_convex_hull_shape_settings-members.html new file mode 100644 index 000000000..5e295d063 --- /dev/null +++ b/class_convex_hull_shape_settings-members.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexHullShapeSettings Member List
+
+
+ +

This is the complete list of members for ConvexHullShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
ConvexHullShapeSettings()=defaultConvexHullShapeSettings
ConvexHullShapeSettings(const Vec3 *inPoints, int inNumPoints, float inMaxConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)ConvexHullShapeSettingsinline
ConvexHullShapeSettings(const Array< Vec3 > &inPoints, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)ConvexHullShapeSettingsinline
ConvexShapeSettings()=defaultConvexShapeSettings
ConvexShapeSettings(const PhysicsMaterial *inMaterial)ConvexShapeSettingsinlineexplicit
Create() const overrideConvexHullShapeSettingsvirtual
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mDensityConvexShapeSettings
mHullToleranceConvexHullShapeSettings
mMaterialConvexShapeSettings
mMaxConvexRadiusConvexHullShapeSettings
mMaxErrorConvexRadiusConvexHullShapeSettings
mPointsConvexHullShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetDensity(float inDensity)ConvexShapeSettingsinline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_convex_hull_shape_settings.html b/class_convex_hull_shape_settings.html new file mode 100644 index 000000000..20bfa7d00 --- /dev/null +++ b/class_convex_hull_shape_settings.html @@ -0,0 +1,462 @@ + + + + + + + +Jolt Physics: ConvexHullShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexHullShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a ConvexHullShape. + More...

+ +

#include <ConvexHullShape.h>

+
+Inheritance diagram for ConvexHullShapeSettings:
+
+
+ + +ConvexShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConvexHullShapeSettings ()=default
 Default constructor for deserialization.
 
 ConvexHullShapeSettings (const Vec3 *inPoints, int inNumPoints, float inMaxConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)
 
 ConvexHullShapeSettings (const Array< Vec3 > &inPoints, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)
 
virtual ShapeResult Create () const override
 Create a shape according to the settings specified by this object.
 
- Public Member Functions inherited from ConvexShapeSettings
 ConvexShapeSettings ()=default
 Constructor.
 
 ConvexShapeSettings (const PhysicsMaterial *inMaterial)
 
void SetDensity (float inDensity)
 Set the density of the object in kg / m^3.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Array< Vec3mPoints
 Points to create the hull from.
 
float mMaxConvexRadius = 0.0f
 Convex radius as supplied by the constructor. Note that during hull creation the convex radius can be made smaller if the value is too big for the hull.
 
float mMaxErrorConvexRadius = 0.05f
 Maximum distance between the shrunk hull + convex radius and the actual hull.
 
float mHullTolerance = 1.0e-3f
 Points are allowed this far outside of the hull (increasing this yields a hull with less vertices). Note that the actual used value can be larger if the points of the hull are far apart.
 
- Public Attributes inherited from ConvexShapeSettings
RefConst< PhysicsMaterialmMaterial
 Material assigned to this shape.
 
float mDensity = 1000.0f
 Uniform density of the interior of the convex object (kg / m^3)
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a ConvexHullShape.

+

Constructor & Destructor Documentation

+ +

◆ ConvexHullShapeSettings() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
ConvexHullShapeSettings::ConvexHullShapeSettings ()
+
+default
+
+ +

Default constructor for deserialization.

+ +
+
+ +

◆ ConvexHullShapeSettings() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConvexHullShapeSettings::ConvexHullShapeSettings (const Vec3inPoints,
int inNumPoints,
float inMaxConvexRadius = cDefaultConvexRadius,
const PhysicsMaterialinMaterial = nullptr 
)
+
+inline
+
+

Create a convex hull from inPoints and maximum convex radius inMaxConvexRadius, the radius is automatically lowered if the hull requires it. (internally this will be subtracted so the total size will not grow with the convex radius).

+ +
+
+ +

◆ ConvexHullShapeSettings() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ConvexHullShapeSettings::ConvexHullShapeSettings (const Array< Vec3 > & inPoints,
float inConvexRadius = cDefaultConvexRadius,
const PhysicsMaterialinMaterial = nullptr 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + +
ShapeSettings::ShapeResult ConvexHullShapeSettings::Create () const
+
+overridevirtual
+
+ +

Create a shape according to the settings specified by this object.

+ +

Implements ShapeSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mHullTolerance

+ +
+
+ + + + +
float ConvexHullShapeSettings::mHullTolerance = 1.0e-3f
+
+ +

Points are allowed this far outside of the hull (increasing this yields a hull with less vertices). Note that the actual used value can be larger if the points of the hull are far apart.

+ +
+
+ +

◆ mMaxConvexRadius

+ +
+
+ + + + +
float ConvexHullShapeSettings::mMaxConvexRadius = 0.0f
+
+ +

Convex radius as supplied by the constructor. Note that during hull creation the convex radius can be made smaller if the value is too big for the hull.

+ +
+
+ +

◆ mMaxErrorConvexRadius

+ +
+
+ + + + +
float ConvexHullShapeSettings::mMaxErrorConvexRadius = 0.05f
+
+ +

Maximum distance between the shrunk hull + convex radius and the actual hull.

+ +
+
+ +

◆ mPoints

+ +
+
+ + + + +
Array<Vec3> ConvexHullShapeSettings::mPoints
+
+ +

Points to create the hull from.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_convex_hull_shape_settings.js b/class_convex_hull_shape_settings.js new file mode 100644 index 000000000..03584c2e6 --- /dev/null +++ b/class_convex_hull_shape_settings.js @@ -0,0 +1,11 @@ +var class_convex_hull_shape_settings = +[ + [ "ConvexHullShapeSettings", "class_convex_hull_shape_settings.html#a524da03e0e78e8bd774c322547e97e2b", null ], + [ "ConvexHullShapeSettings", "class_convex_hull_shape_settings.html#aa1f2ab646bf6c5b3dfed2733d59d5a3b", null ], + [ "ConvexHullShapeSettings", "class_convex_hull_shape_settings.html#a3922b9c1f60a1e6b49fd1600304ed9dd", null ], + [ "Create", "class_convex_hull_shape_settings.html#ad3143893a432135229b6780d3ff379a2", null ], + [ "mHullTolerance", "class_convex_hull_shape_settings.html#aa006dbe7352d17185c87bc21e04c32d7", null ], + [ "mMaxConvexRadius", "class_convex_hull_shape_settings.html#a82032e45fa5a1d7ff889135d2ec6489f", null ], + [ "mMaxErrorConvexRadius", "class_convex_hull_shape_settings.html#ae8ff620cba66c37323776d2aa4be06da", null ], + [ "mPoints", "class_convex_hull_shape_settings.html#a3a3326f9fdbfa46abd18998e972efc6d", null ] +]; \ No newline at end of file diff --git a/class_convex_hull_shape_settings.png b/class_convex_hull_shape_settings.png new file mode 100644 index 000000000..3a69d4783 Binary files /dev/null and b/class_convex_hull_shape_settings.png differ diff --git a/class_convex_shape-members.html b/class_convex_shape-members.html new file mode 100644 index 000000000..2ec80fc09 --- /dev/null +++ b/class_convex_shape-members.html @@ -0,0 +1,201 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexShape Member List
+
+
+ +

This is the complete list of members for ConvexShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideConvexShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideConvexShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideConvexShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const =0Shapepure virtual
ConvexShape(EShapeSubType inSubType)ConvexShapeinlineexplicit
ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)ConvexShapeinline
ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial)ConvexShapeinline
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const =0Shapepure virtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideConvexShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideConvexShapevirtual
ESupportMode enum nameConvexShape
GetCenterOfMass() constShapeinlinevirtual
GetDensity() constConvexShapeinline
GetInnerRadius() const =0Shapepure virtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const =0Shapepure virtual
GetMassProperties() const =0Shapepure virtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideConvexShapeinlinevirtual
GetMaterial() constConvexShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const =0Shapepure virtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideConvexShapevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideConvexShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const =0ConvexShapepure virtual
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) constShapeinlinevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const =0Shapepure virtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideConvexShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideConvexShapevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const =0Shapepure virtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) constShapevirtual
MakeScaleValid(Vec3Arg inScale) constShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() constShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideConvexShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) overrideConvexShapevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) const overrideConvexShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) const overrideConvexShapevirtual
Shape::SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetDensity(float inDensity)ConvexShapeinline
SetEmbedded() constRefTarget< Shape >inline
SetMaterial(const PhysicsMaterial *inMaterial)ConvexShapeinline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()ConvexShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
sUnitSphereTrianglesConvexShapeprotectedstatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_convex_shape.html b/class_convex_shape.html new file mode 100644 index 000000000..5c143d606 --- /dev/null +++ b/class_convex_shape.html @@ -0,0 +1,1390 @@ + + + + + + + +Jolt Physics: ConvexShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexShape Class Referenceabstract
+
+
+ +

Base class for all convex shapes. Defines a virtual interface. + More...

+ +

#include <ConvexShape.h>

+
+Inheritance diagram for ConvexShape:
+
+
+ + +Shape +RefTarget< Shape > +NonCopyable +BoxShape +CapsuleShape +ConvexHullShape +CylinderShape +SphereShape +TaperedCapsuleShape +TaperedCylinderShape +TriangleShape + +
+ + + + + + + + + + +

+Classes

class  CSGetTrianglesContext
 
class  Support
 Function that provides an interface for GJK. More...
 
class  SupportBuffer
 Buffer to hold a Support object, used to avoid dynamic memory allocations. More...
 
+ + + + + + + + + + + + + + + + + + + + +

+Public Types

enum class  ESupportMode { ExcludeConvexRadius +, IncludeConvexRadius +, Default + }
 How the GetSupport function should behave. More...
 
- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ConvexShape (EShapeSubType inSubType)
 Constructor.
 
 ConvexShape (EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)
 
 ConvexShape (EShapeSubType inSubType, const PhysicsMaterial *inMaterial)
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual const SupportGetSupportFunction (ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const =0
 
void SetMaterial (const PhysicsMaterial *inMaterial)
 Material of the shape.
 
const PhysicsMaterialGetMaterial () const
 
void SetDensity (float inDensity)
 Set density of the shape (kg / m^3)
 
float GetDensity () const
 Get density of the shape (kg / m^3)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const override
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual bool MustBeStatic () const
 Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.
 
virtual Vec3 GetCenterOfMass () const
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetLocalBounds () const =0
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual float GetInnerRadius () const =0
 
virtual MassProperties GetMassProperties () const =0
 Calculate the mass and inertia of this shape.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const =0
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const =0
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const =0
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStats () const =0
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual float GetVolume () const =0
 
virtual bool IsValidScale (Vec3Arg inScale) const
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + +

+Static Protected Attributes

static const StaticArray< Vec3, 384 > sUnitSphereTriangles
 Vertex list that forms a unit sphere.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+ + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
+

Detailed Description

+

Base class for all convex shapes. Defines a virtual interface.

+

Member Enumeration Documentation

+ +

◆ ESupportMode

+ +
+
+ + + + + +
+ + + + +
enum class ConvexShape::ESupportMode
+
+strong
+
+ +

How the GetSupport function should behave.

+ + + + +
Enumerator
ExcludeConvexRadius 

Return the shape excluding the convex radius, Support::GetConvexRadius will return the convex radius if there is one, but adding this radius may not result in the most accurate/efficient representation of shapes with sharp edges.

+
IncludeConvexRadius 

Return the shape including the convex radius, Support::GetSupport includes the convex radius if there is one, Support::GetConvexRadius will return 0.

+
Default 

Use both Support::GetSupport add Support::GetConvexRadius to get a support point that matches the original shape as accurately/efficiently as possible.

+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ConvexShape() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE ConvexShape::ConvexShape (EShapeSubType inSubType)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+ +

◆ ConvexShape() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ConvexShape::ConvexShape (EShapeSubType inSubType,
const ConvexShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+inline
+
+ +
+
+ +

◆ ConvexShape() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ConvexShape::ConvexShape (EShapeSubType inSubType,
const PhysicsMaterialinMaterial 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Implements Shape.

+ +

Reimplemented in BoxShape, CapsuleShape, ConvexHullShape, CylinderShape, SphereShape, and TriangleShape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool ConvexShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Implements Shape.

+ +

Reimplemented in BoxShape, CapsuleShape, CapsuleShape, ConvexHullShape, CylinderShape, CylinderShape, SphereShape, and TriangleShape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Implements Shape.

+ +

Reimplemented in BoxShape, CapsuleShape, ConvexHullShape, CylinderShape, SphereShape, TaperedCylinderShape, and TriangleShape.

+ +
+
+ +

◆ DrawGetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexShape::DrawGetSupportFunction (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inDrawSupportDirection 
) const
+
+overridevirtual
+
+ +

Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ DrawGetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexShape::DrawGetSupportingFace (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+ +

Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetDensity()

+ +
+
+ + + + + +
+ + + + + + + +
float ConvexShape::GetDensity () const
+
+inline
+
+ +

Get density of the shape (kg / m^3)

+ +
+
+ +

◆ GetMaterial() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
const PhysicsMaterial * ConvexShape::GetMaterial () const
+
+inline
+
+ +
+
+ +

◆ GetMaterial() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual const PhysicsMaterial * ConvexShape::GetMaterial (const SubShapeIDinSubShapeID) const
+
+inlineoverridevirtual
+
+ +

Get the material assigned to a particular sub shape ID.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexShape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3 &outCenterOfBuoyancy  JPH_IF_DEBUG_RENDERER, RVec3Arg inBaseOffset 
) const
+
+overridevirtual
+
+ +

Reimplemented in ConvexHullShape, SphereShape, and TriangleShape.

+ +
+
+ +

◆ GetSubShapeIDBitsRecursive()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint ConvexShape::GetSubShapeIDBitsRecursive () const
+
+inlineoverridevirtual
+
+ +

Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual const Support * ConvexShape::GetSupportFunction (ESupportMode inMode,
SupportBufferinBuffer,
Vec3Arg inScale 
) const
+
+pure virtual
+
+

Returns an object that provides the GetSupport function for this shape. inMode determines if this support function includes or excludes the convex radius. of the values returned by the GetSupport function. This improves numerical accuracy of the results. inScale scales this shape in local space.

+ +

Implemented in BoxShape, CapsuleShape, ConvexHullShape, CylinderShape, SphereShape, TaperedCapsuleShape, TaperedCylinderShape, and TriangleShape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int ConvexShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+overridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Implements Shape.

+ +

Reimplemented in BoxShape, CapsuleShape, ConvexHullShape, CylinderShape, SphereShape, TaperedCylinderShape, and TriangleShape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Implements Shape.

+ +

Reimplemented in BoxShape, CapsuleShape, ConvexHullShape, CylinderShape, SphereShape, TaperedCylinderShape, and TriangleShape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConvexShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from Shape.

+ +

Reimplemented in BoxShape, CapsuleShape, ConvexHullShape, CylinderShape, SphereShape, TaperedCapsuleShape, TaperedCylinderShape, and TriangleShape.

+ +
+
+ +

◆ RestoreMaterialState()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ConvexShape::RestoreMaterialState (const PhysicsMaterialRefCinMaterials,
uint inNumMaterials 
)
+
+overridevirtual
+
+ +

Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConvexShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from Shape.

+ +

Reimplemented in BoxShape, CapsuleShape, ConvexHullShape, CylinderShape, SphereShape, TaperedCapsuleShape, TaperedCylinderShape, and TriangleShape.

+ +
+
+ +

◆ SaveMaterialState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConvexShape::SaveMaterialState (PhysicsMaterialListoutMaterials) const
+
+overridevirtual
+
+ +
+
+ +

◆ SetDensity()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConvexShape::SetDensity (float inDensity)
+
+inline
+
+ +

Set density of the shape (kg / m^3)

+ +
+
+ +

◆ SetMaterial()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConvexShape::SetMaterial (const PhysicsMaterialinMaterial)
+
+inline
+
+ +

Material of the shape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void ConvexShape::sRegister ()
+
+static
+
+ +
+
+

Member Data Documentation

+ +

◆ sUnitSphereTriangles

+ +
+
+ + + + + +
+ + + + +
const StaticArray< Vec3, 384 > ConvexShape::sUnitSphereTriangles
+
+staticprotected
+
+Initial value:
= []() {
+
const int level = 2;
+
+ + + +
return verts;
+
}()
+
static void sCreateHalfUnitSphereBottom(A &ioVertices, int inDetailLevel)
Helper function that creates a vertex list of a half unit sphere (bottom part)
Definition GetTrianglesContext.h:82
+
static void sCreateHalfUnitSphereTop(A &ioVertices, int inDetailLevel)
Helper function that creates a vertex list of a half unit sphere (top part)
Definition GetTrianglesContext.h:72
+
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
+

Vertex list that forms a unit sphere.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_convex_shape.js b/class_convex_shape.js new file mode 100644 index 000000000..549d345cc --- /dev/null +++ b/class_convex_shape.js @@ -0,0 +1,33 @@ +var class_convex_shape = +[ + [ "CSGetTrianglesContext", "class_convex_shape_1_1_c_s_get_triangles_context.html", "class_convex_shape_1_1_c_s_get_triangles_context" ], + [ "Support", "class_convex_shape_1_1_support.html", "class_convex_shape_1_1_support" ], + [ "SupportBuffer", "class_convex_shape_1_1_support_buffer.html", "class_convex_shape_1_1_support_buffer" ], + [ "ESupportMode", "class_convex_shape.html#a4cd6e2f87f30d108faf1f119dd73a06b", [ + [ "ExcludeConvexRadius", "class_convex_shape.html#a4cd6e2f87f30d108faf1f119dd73a06bafc1094532d8eef9e23613fe6846685c1", null ], + [ "IncludeConvexRadius", "class_convex_shape.html#a4cd6e2f87f30d108faf1f119dd73a06badc738ebd4ba89322ae44c2d1ec8cda9f", null ], + [ "Default", "class_convex_shape.html#a4cd6e2f87f30d108faf1f119dd73a06ba7a1920d61156abc05a60135aefe8bc67", null ] + ] ], + [ "ConvexShape", "class_convex_shape.html#a6454ef09933ded91976c8f77bec976db", null ], + [ "ConvexShape", "class_convex_shape.html#a221da2b420dd837cee4aeb37dd3e7078", null ], + [ "ConvexShape", "class_convex_shape.html#a99d3262f306f702b0e6ae40ab53e6b34", null ], + [ "CastRay", "class_convex_shape.html#ae1a5536cb1e4855bdd86433e08496b3b", null ], + [ "CastRay", "class_convex_shape.html#af2943e795c49300d95d68950231de8a3", null ], + [ "CollidePoint", "class_convex_shape.html#a6257c07e716aa0654965b5a72ac31d39", null ], + [ "DrawGetSupportFunction", "class_convex_shape.html#a6b8a3a589361aaa51d2bb77c70fea79f", null ], + [ "DrawGetSupportingFace", "class_convex_shape.html#ad53dad63ff9dccff4c3feb90d79091ae", null ], + [ "GetDensity", "class_convex_shape.html#a25975ed48abd058648020ee11498ce4e", null ], + [ "GetMaterial", "class_convex_shape.html#a7c9d827d2e8d38b5ba1ed2d4f9263b15", null ], + [ "GetMaterial", "class_convex_shape.html#a7a9e29e9a33f123f0ab8b25dd4e04cc0", null ], + [ "GetSubmergedVolume", "class_convex_shape.html#a49e7da39c873a9b8e3c3ffde94d31972", null ], + [ "GetSubShapeIDBitsRecursive", "class_convex_shape.html#aeda184c70bca8f98105bd58df579eb87", null ], + [ "GetSupportFunction", "class_convex_shape.html#ae043918f1de4d0049c6cb2a92b545e06", null ], + [ "GetTrianglesNext", "class_convex_shape.html#ac067fd156edf8fa249c8ed65bc9f5f18", null ], + [ "GetTrianglesStart", "class_convex_shape.html#a063b182d0bc6eddcde2b3fd422fca7a7", null ], + [ "RestoreBinaryState", "class_convex_shape.html#a6398de9c5aec64886a5184efb4fcca8f", null ], + [ "RestoreMaterialState", "class_convex_shape.html#aa0989125373d245ea41cbf5c1db96198", null ], + [ "SaveBinaryState", "class_convex_shape.html#aa9c3915087e7b816b583a8041c5701f6", null ], + [ "SaveMaterialState", "class_convex_shape.html#aa9b6442bec38456b3b263bfc8c9e0c34", null ], + [ "SetDensity", "class_convex_shape.html#a1ba0e0da5502685fd59888f3bc9cb73e", null ], + [ "SetMaterial", "class_convex_shape.html#a39b6d0d9db468564c90488e41b737a08", null ] +]; \ No newline at end of file diff --git a/class_convex_shape.png b/class_convex_shape.png new file mode 100644 index 000000000..449d26d3e Binary files /dev/null and b/class_convex_shape.png differ diff --git a/class_convex_shape_1_1_c_s_get_triangles_context-members.html b/class_convex_shape_1_1_c_s_get_triangles_context-members.html new file mode 100644 index 000000000..6b08b9678 --- /dev/null +++ b/class_convex_shape_1_1_c_s_get_triangles_context-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexShape::CSGetTrianglesContext Member List
+
+
+ +

This is the complete list of members for ConvexShape::CSGetTrianglesContext, including all inherited members.

+ + + + + + + +
CSGetTrianglesContext(const ConvexShape *inShape, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale)ConvexShape::CSGetTrianglesContextinline
mCurrentVertexConvexShape::CSGetTrianglesContext
mIsInsideOutConvexShape::CSGetTrianglesContext
mLocalToWorldConvexShape::CSGetTrianglesContext
mSupportConvexShape::CSGetTrianglesContext
mSupportBufferConvexShape::CSGetTrianglesContext
+
+ + + + diff --git a/class_convex_shape_1_1_c_s_get_triangles_context.html b/class_convex_shape_1_1_c_s_get_triangles_context.html new file mode 100644 index 000000000..50d9ca17f --- /dev/null +++ b/class_convex_shape_1_1_c_s_get_triangles_context.html @@ -0,0 +1,260 @@ + + + + + + + +Jolt Physics: ConvexShape::CSGetTrianglesContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexShape::CSGetTrianglesContext Class Reference
+
+
+ + + + +

+Public Member Functions

 CSGetTrianglesContext (const ConvexShape *inShape, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale)
 
+ + + + + + + + + + + +

+Public Attributes

SupportBuffer mSupportBuffer
 
const SupportmSupport
 
Mat44 mLocalToWorld
 
bool mIsInsideOut
 
size_t mCurrentVertex = 0
 
+

Constructor & Destructor Documentation

+ +

◆ CSGetTrianglesContext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConvexShape::CSGetTrianglesContext::CSGetTrianglesContext (const ConvexShapeinShape,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mCurrentVertex

+ +
+
+ + + + +
size_t ConvexShape::CSGetTrianglesContext::mCurrentVertex = 0
+
+ +
+
+ +

◆ mIsInsideOut

+ +
+
+ + + + +
bool ConvexShape::CSGetTrianglesContext::mIsInsideOut
+
+ +
+
+ +

◆ mLocalToWorld

+ +
+
+ + + + +
Mat44 ConvexShape::CSGetTrianglesContext::mLocalToWorld
+
+ +
+
+ +

◆ mSupport

+ +
+
+ + + + +
const Support* ConvexShape::CSGetTrianglesContext::mSupport
+
+ +
+
+ +

◆ mSupportBuffer

+ +
+
+ + + + +
SupportBuffer ConvexShape::CSGetTrianglesContext::mSupportBuffer
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_convex_shape_1_1_c_s_get_triangles_context.js b/class_convex_shape_1_1_c_s_get_triangles_context.js new file mode 100644 index 000000000..caa6f4e03 --- /dev/null +++ b/class_convex_shape_1_1_c_s_get_triangles_context.js @@ -0,0 +1,9 @@ +var class_convex_shape_1_1_c_s_get_triangles_context = +[ + [ "CSGetTrianglesContext", "class_convex_shape_1_1_c_s_get_triangles_context.html#a894b10f5caa797d008eff4064a563b28", null ], + [ "mCurrentVertex", "class_convex_shape_1_1_c_s_get_triangles_context.html#adb9196e2efacc406e508aff493209d17", null ], + [ "mIsInsideOut", "class_convex_shape_1_1_c_s_get_triangles_context.html#a17b70d3851175bf3454059a58b32dadf", null ], + [ "mLocalToWorld", "class_convex_shape_1_1_c_s_get_triangles_context.html#a781c219b40131230c304766330b6d772", null ], + [ "mSupport", "class_convex_shape_1_1_c_s_get_triangles_context.html#ac64202470dce73526cf31cae7fab85ba", null ], + [ "mSupportBuffer", "class_convex_shape_1_1_c_s_get_triangles_context.html#a45f81810720d3e76a07ef3af08cba37c", null ] +]; \ No newline at end of file diff --git a/class_convex_shape_1_1_support-members.html b/class_convex_shape_1_1_support-members.html new file mode 100644 index 000000000..e1004744a --- /dev/null +++ b/class_convex_shape_1_1_support-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexShape::Support Member List
+
+
+ +

This is the complete list of members for ConvexShape::Support, including all inherited members.

+ + + + +
GetConvexRadius() const =0ConvexShape::Supportpure virtual
GetSupport(Vec3Arg inDirection) const =0ConvexShape::Supportpure virtual
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_convex_shape_1_1_support.html b/class_convex_shape_1_1_support.html new file mode 100644 index 000000000..9fddedc2d --- /dev/null +++ b/class_convex_shape_1_1_support.html @@ -0,0 +1,245 @@ + + + + + + + +Jolt Physics: ConvexShape::Support Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexShape::Support Class Referenceabstract
+
+
+ +

Function that provides an interface for GJK. + More...

+ +

#include <ConvexShape.h>

+
+Inheritance diagram for ConvexShape::Support:
+
+
+ + +BoxShape::Box +CapsuleShape::CapsuleNoConvex +CapsuleShape::CapsuleWithConvex +ConvexHullShape::HullNoConvex +ConvexHullShape::HullWithConvex +ConvexHullShape::HullWithConvexScaled +CylinderShape::Cylinder +SphereShape::SphereNoConvex +SphereShape::SphereWithConvex +TaperedCapsuleShape::TaperedCapsule +TaperedCylinderShape::TaperedCylinder +TriangleShape::TriangleNoConvex +TriangleShape::TriangleWithConvex + +
+ + + + + + + + + +

+Public Member Functions

virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const =0
 
virtual float GetConvexRadius () const =0
 
+

Detailed Description

+

Function that provides an interface for GJK.

+

Constructor & Destructor Documentation

+ +

◆ ~Support()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ConvexShape::Support::~Support ()
+
+virtualdefault
+
+ +

Warning: Virtual destructor will not be called on this object!

+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float ConvexShape::Support::GetConvexRadius () const
+
+pure virtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implemented in BoxShape::Box, CapsuleShape::CapsuleNoConvex, CapsuleShape::CapsuleWithConvex, ConvexHullShape::HullNoConvex, ConvexHullShape::HullWithConvex, ConvexHullShape::HullWithConvexScaled, CylinderShape::Cylinder, SphereShape::SphereNoConvex, SphereShape::SphereWithConvex, TaperedCapsuleShape::TaperedCapsule, TaperedCylinderShape::TaperedCylinder, TriangleShape::TriangleNoConvex, and TriangleShape::TriangleWithConvex.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 ConvexShape::Support::GetSupport (Vec3Arg inDirection) const
+
+pure virtual
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_convex_shape_1_1_support.js b/class_convex_shape_1_1_support.js new file mode 100644 index 000000000..5fd2872b3 --- /dev/null +++ b/class_convex_shape_1_1_support.js @@ -0,0 +1,6 @@ +var class_convex_shape_1_1_support = +[ + [ "~Support", "class_convex_shape_1_1_support.html#a24c8452338cbc755fb69f04aca229a4c", null ], + [ "GetConvexRadius", "class_convex_shape_1_1_support.html#ab6255a297bd904ef2c09a9cce6c3c05b", null ], + [ "GetSupport", "class_convex_shape_1_1_support.html#ab2a715898d419c03321366a009539ae0", null ] +]; \ No newline at end of file diff --git a/class_convex_shape_1_1_support.png b/class_convex_shape_1_1_support.png new file mode 100644 index 000000000..0b85dcdfb Binary files /dev/null and b/class_convex_shape_1_1_support.png differ diff --git a/class_convex_shape_1_1_support_buffer-members.html b/class_convex_shape_1_1_support_buffer-members.html new file mode 100644 index 000000000..93fd64074 --- /dev/null +++ b/class_convex_shape_1_1_support_buffer-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexShape::SupportBuffer Member List
+
+
+ +

This is the complete list of members for ConvexShape::SupportBuffer, including all inherited members.

+ + +
mDataConvexShape::SupportBuffer
+
+ + + + diff --git a/class_convex_shape_1_1_support_buffer.html b/class_convex_shape_1_1_support_buffer.html new file mode 100644 index 000000000..2b7f942de --- /dev/null +++ b/class_convex_shape_1_1_support_buffer.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: ConvexShape::SupportBuffer Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexShape::SupportBuffer Class Reference
+
+
+ +

Buffer to hold a Support object, used to avoid dynamic memory allocations. + More...

+ +

#include <ConvexShape.h>

+ + + + +

+Public Attributes

uint8 mData [4160]
 
+

Detailed Description

+

Buffer to hold a Support object, used to avoid dynamic memory allocations.

+

Member Data Documentation

+ +

◆ mData

+ +
+
+ + + + +
uint8 ConvexShape::SupportBuffer::mData[4160]
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_convex_shape_1_1_support_buffer.js b/class_convex_shape_1_1_support_buffer.js new file mode 100644 index 000000000..4c3ab3be0 --- /dev/null +++ b/class_convex_shape_1_1_support_buffer.js @@ -0,0 +1,4 @@ +var class_convex_shape_1_1_support_buffer = +[ + [ "mData", "class_convex_shape_1_1_support_buffer.html#a618fb8977591351e952be032d21d0e13", null ] +]; \ No newline at end of file diff --git a/class_convex_shape_settings-members.html b/class_convex_shape_settings-members.html new file mode 100644 index 000000000..de3498a3f --- /dev/null +++ b/class_convex_shape_settings-members.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConvexShapeSettings Member List
+
+
+ +

This is the complete list of members for ConvexShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
ConvexShapeSettings()=defaultConvexShapeSettings
ConvexShapeSettings(const PhysicsMaterial *inMaterial)ConvexShapeSettingsinlineexplicit
Create() const =0ShapeSettingspure virtual
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mDensityConvexShapeSettings
mMaterialConvexShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetDensity(float inDensity)ConvexShapeSettingsinline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_convex_shape_settings.html b/class_convex_shape_settings.html new file mode 100644 index 000000000..369f2a758 --- /dev/null +++ b/class_convex_shape_settings.html @@ -0,0 +1,349 @@ + + + + + + + +Jolt Physics: ConvexShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ConvexShapeSettings Class Reference
+
+
+ +

Class that constructs a ConvexShape (abstract) + More...

+ +

#include <ConvexShape.h>

+
+Inheritance diagram for ConvexShapeSettings:
+
+
+ + +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable +BoxShapeSettings +CapsuleShapeSettings +ConvexHullShapeSettings +CylinderShapeSettings +SphereShapeSettings +TaperedCapsuleShapeSettings +TaperedCylinderShapeSettings +TriangleShapeSettings + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ConvexShapeSettings ()=default
 Constructor.
 
 ConvexShapeSettings (const PhysicsMaterial *inMaterial)
 
void SetDensity (float inDensity)
 Set the density of the object in kg / m^3.
 
- Public Member Functions inherited from ShapeSettings
virtual ShapeResult Create () const =0
 Create a shape according to the settings specified by this object.
 
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + +

+Public Attributes

RefConst< PhysicsMaterialmMaterial
 Material assigned to this shape.
 
float mDensity = 1000.0f
 Uniform density of the interior of the convex object (kg / m^3)
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a ConvexShape (abstract)

+

Constructor & Destructor Documentation

+ +

◆ ConvexShapeSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
ConvexShapeSettings::ConvexShapeSettings ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ ConvexShapeSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
ConvexShapeSettings::ConvexShapeSettings (const PhysicsMaterialinMaterial)
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ SetDensity()

+ +
+
+ + + + + +
+ + + + + + + + +
void ConvexShapeSettings::SetDensity (float inDensity)
+
+inline
+
+ +

Set the density of the object in kg / m^3.

+ +
+
+

Member Data Documentation

+ +

◆ mDensity

+ +
+
+ + + + +
float ConvexShapeSettings::mDensity = 1000.0f
+
+ +

Uniform density of the interior of the convex object (kg / m^3)

+ +
+
+ +

◆ mMaterial

+ +
+
+ + + + +
RefConst<PhysicsMaterial> ConvexShapeSettings::mMaterial
+
+ +

Material assigned to this shape.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_convex_shape_settings.js b/class_convex_shape_settings.js new file mode 100644 index 000000000..7edbcef91 --- /dev/null +++ b/class_convex_shape_settings.js @@ -0,0 +1,8 @@ +var class_convex_shape_settings = +[ + [ "ConvexShapeSettings", "class_convex_shape_settings.html#a88a8f361fef655ab590b7bda895f6461", null ], + [ "ConvexShapeSettings", "class_convex_shape_settings.html#a80f5baa702dc1c5733daca4f72529cd1", null ], + [ "SetDensity", "class_convex_shape_settings.html#a752045fcec2dba15556b60cc249590e5", null ], + [ "mDensity", "class_convex_shape_settings.html#a174f774be405a5f445b429c921946957", null ], + [ "mMaterial", "class_convex_shape_settings.html#a1eedf808729ed4b2d4e67088749639d8", null ] +]; \ No newline at end of file diff --git a/class_convex_shape_settings.png b/class_convex_shape_settings.png new file mode 100644 index 000000000..ecd4af0f9 Binary files /dev/null and b/class_convex_shape_settings.png differ diff --git a/class_cylinder_shape-members.html b/class_cylinder_shape-members.html new file mode 100644 index 000000000..1183ab0b4 --- /dev/null +++ b/class_cylinder_shape-members.html @@ -0,0 +1,208 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CylinderShape Member List
+
+
+ +

This is the complete list of members for CylinderShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideCylinderShapevirtual
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideCylinderShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideCylinderShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideCylinderShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideCylinderShapevirtual
ConvexShape(EShapeSubType inSubType)ConvexShapeinlineexplicit
ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)ConvexShapeinline
ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial)ConvexShapeinline
CylinderShape()CylinderShapeinline
CylinderShape(const CylinderShapeSettings &inSettings, ShapeResult &outResult)CylinderShape
CylinderShape(float inHalfHeight, float inRadius, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)CylinderShape
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideCylinderShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideConvexShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideConvexShapevirtual
ESupportMode enum nameConvexShape
GetCenterOfMass() constShapeinlinevirtual
GetConvexRadius() constCylinderShapeinline
GetDensity() constConvexShapeinline
GetHalfHeight() constCylinderShapeinline
GetInnerRadius() const overrideCylinderShapeinlinevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const overrideCylinderShapevirtual
GetMassProperties() const overrideCylinderShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideConvexShapeinlinevirtual
GetMaterial() constConvexShapeinline
GetRadius() constCylinderShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideCylinderShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideConvexShapevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideConvexShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const overrideCylinderShapevirtual
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideCylinderShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideCylinderShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideCylinderShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideCylinderShapevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideCylinderShapeinlinevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) const overrideCylinderShapevirtual
MakeScaleValid(Vec3Arg inScale) const overrideCylinderShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() constShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideCylinderShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) overrideConvexShapevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) const overrideCylinderShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) const overrideConvexShapevirtual
Shape::SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetDensity(float inDensity)ConvexShapeinline
SetEmbedded() constRefTarget< Shape >inline
SetMaterial(const PhysicsMaterial *inMaterial)ConvexShapeinline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()CylinderShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
sUnitSphereTrianglesConvexShapeprotectedstatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_cylinder_shape.html b/class_cylinder_shape.html new file mode 100644 index 000000000..1d94f43d6 --- /dev/null +++ b/class_cylinder_shape.html @@ -0,0 +1,1492 @@ + + + + + + + +Jolt Physics: CylinderShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CylinderShape Class Referencefinal
+
+
+ +

A cylinder. + More...

+ +

#include <CylinderShape.h>

+
+Inheritance diagram for CylinderShape:
+
+
+ + +ConvexShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + +

+Classes

class  Cylinder
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE CylinderShape ()
 Constructor.
 
 CylinderShape (const CylinderShapeSettings &inSettings, ShapeResult &outResult)
 
 CylinderShape (float inHalfHeight, float inRadius, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)
 
float GetHalfHeight () const
 Get half height of cylinder.
 
float GetRadius () const
 Get radius of cylinder.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual const SupportGetSupportFunction (ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
float GetConvexRadius () const
 Get the convex radius of this cylinder.
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
- Public Member Functions inherited from ConvexShape
JPH_OVERRIDE_NEW_DELETE ConvexShape (EShapeSubType inSubType)
 Constructor.
 
 ConvexShape (EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)
 
 ConvexShape (EShapeSubType inSubType, const PhysicsMaterial *inMaterial)
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
void SetMaterial (const PhysicsMaterial *inMaterial)
 Material of the shape.
 
const PhysicsMaterialGetMaterial () const
 
void SetDensity (float inDensity)
 Set density of the shape (kg / m^3)
 
float GetDensity () const
 Get density of the shape (kg / m^3)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const override
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual bool MustBeStatic () const
 Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.
 
virtual Vec3 GetCenterOfMass () const
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from ConvexShape
static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConvexShape
enum class  ESupportMode { ExcludeConvexRadius +, IncludeConvexRadius +, Default + }
 How the GetSupport function should behave. More...
 
- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from ConvexShape
static const StaticArray< Vec3, 384 > sUnitSphereTriangles
 Vertex list that forms a unit sphere.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A cylinder.

+

Constructor & Destructor Documentation

+ +

◆ CylinderShape() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE CylinderShape::CylinderShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ CylinderShape() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
CylinderShape::CylinderShape (const CylinderShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+ +

◆ CylinderShape() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CylinderShape::CylinderShape (float inHalfHeight,
float inRadius,
float inConvexRadius = cDefaultConvexRadius,
const PhysicsMaterialinMaterial = nullptr 
)
+
+

Create a shape centered around the origin with one top at (0, -inHalfHeight, 0) and the other at (0, inHalfHeight, 0) and radius inRadius. (internally the convex radius will be subtracted from the cylinder the total cylinder will not grow with the convex radius, but the edges of the cylinder will be rounded a bit).

+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ConvexShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CastRay() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool ConvexShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CastRay() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CylinderShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CylinderShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CylinderShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CylinderShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float CylinderShape::GetConvexRadius () const
+
+inline
+
+ +

Get the convex radius of this cylinder.

+ +
+
+ +

◆ GetHalfHeight()

+ +
+
+ + + + + +
+ + + + + + + +
float CylinderShape::GetHalfHeight () const
+
+inline
+
+ +

Get half height of cylinder.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float CylinderShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox CylinderShape::GetLocalBounds () const
+
+overridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties CylinderShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float CylinderShape::GetRadius () const
+
+inline
+
+ +

Get radius of cylinder.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats CylinderShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
const ConvexShape::Support * CylinderShape::GetSupportFunction (ESupportMode inMode,
SupportBufferinBuffer,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Returns an object that provides the GetSupport function for this shape. inMode determines if this support function includes or excludes the convex radius. of the values returned by the GetSupport function. This improves numerical accuracy of the results. inScale scales this shape in local space.

+ +

Implements ConvexShape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CylinderShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 CylinderShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int CylinderShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+overridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void CylinderShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float CylinderShape::GetVolume () const
+
+inlineoverridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ IsValidScale()

+ +
+
+ + + + + +
+ + + + + + + + +
bool CylinderShape::IsValidScale (Vec3Arg inScale) const
+
+overridevirtual
+
+

Test if inScale is a valid scale for this shape. Some shapes can only be scaled uniformly, compound shapes cannot handle shapes being rotated and scaled (this would cause shearing), scale can never be zero. When the scale is invalid, the function will return false.

+

Here's a list of supported scales:

    +
  • SphereShape: Scale must be uniform (signs of scale are ignored).
  • +
  • BoxShape: Any scale supported (signs of scale are ignored).
  • +
  • TriangleShape: Any scale supported when convex radius is zero, otherwise only uniform scale supported.
  • +
  • CapsuleShape: Scale must be uniform (signs of scale are ignored).
  • +
  • TaperedCapsuleShape: Scale must be uniform (sign of Y scale can be used to flip the capsule).
  • +
  • CylinderShape: Scale must be uniform in XZ plane, Y can scale independently (signs of scale are ignored).
  • +
  • RotatedTranslatedShape: Scale must not cause shear in the child shape.
  • +
  • CompoundShape: Scale must not cause shear in any of the child shapes.
  • +
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ MakeScaleValid()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 CylinderShape::MakeScaleValid (Vec3Arg inScale) const
+
+overridevirtual
+
+

This function will make sure that if you wrap this shape in a ScaledShape that the scale is valid. Note that this involves discarding components of the scale that are invalid, so the resulting scaled shape may be different than the requested scale. Compare the return value of this function with the scale you passed in to detect major inconsistencies and possibly warn the user.

Parameters
+ + +
inScaleLocal space scale for this shape.
+
+
+
Returns
Scale that can be used to wrap this shape in a ScaledShape. IsValidScale will return true for this scale.
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void CylinderShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void CylinderShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void CylinderShape::sRegister ()
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_cylinder_shape.js b/class_cylinder_shape.js new file mode 100644 index 000000000..33426e72f --- /dev/null +++ b/class_cylinder_shape.js @@ -0,0 +1,30 @@ +var class_cylinder_shape = +[ + [ "Cylinder", "class_cylinder_shape_1_1_cylinder.html", "class_cylinder_shape_1_1_cylinder" ], + [ "CylinderShape", "class_cylinder_shape.html#ada372990ab7de7c92a34c81a01cd37d5", null ], + [ "CylinderShape", "class_cylinder_shape.html#a1079164769598081f54bd33700747b57", null ], + [ "CylinderShape", "class_cylinder_shape.html#afcb1b0ed67b7cfbfd8d85bdad5744808", null ], + [ "CastRay", "class_cylinder_shape.html#ae1a5536cb1e4855bdd86433e08496b3b", null ], + [ "CastRay", "class_cylinder_shape.html#af2943e795c49300d95d68950231de8a3", null ], + [ "CastRay", "class_cylinder_shape.html#a6685737b774a4fdbcc626aae25f27770", null ], + [ "CollidePoint", "class_cylinder_shape.html#ae24a72e2cc4218687cd7ab1bc1baaa4a", null ], + [ "CollideSoftBodyVertices", "class_cylinder_shape.html#a22b362194bf9ad37d323ac646bc271be", null ], + [ "Draw", "class_cylinder_shape.html#a216fefbc620f08d2e40a7c2ea4d5aa90", null ], + [ "GetConvexRadius", "class_cylinder_shape.html#a4c725b9796a592daafff0476543c4629", null ], + [ "GetHalfHeight", "class_cylinder_shape.html#a6ed4653b983e5e91e0a86f16b4186a25", null ], + [ "GetInnerRadius", "class_cylinder_shape.html#ad0434b32d80b3256e9ad76524604598c", null ], + [ "GetLocalBounds", "class_cylinder_shape.html#a2a80687423f2a189488cb20e3b8b0b18", null ], + [ "GetMassProperties", "class_cylinder_shape.html#ac3f61c0e5ec4913f57a7842fcd8569fe", null ], + [ "GetRadius", "class_cylinder_shape.html#aaff85dbcc24db20b60dc9e75363f1c04", null ], + [ "GetStats", "class_cylinder_shape.html#a30d8aeffc7430806287324f7f55eb5a5", null ], + [ "GetSupportFunction", "class_cylinder_shape.html#af7f045327fa7c9e506bd304bb78ba781", null ], + [ "GetSupportingFace", "class_cylinder_shape.html#aa2ef3b2d1a7889c6a55d868ac8549280", null ], + [ "GetSurfaceNormal", "class_cylinder_shape.html#a33a3dcb04ee6b0905b2992936acaa71c", null ], + [ "GetTrianglesNext", "class_cylinder_shape.html#a6cfbb512a0c4dc1a9f02d4a830829721", null ], + [ "GetTrianglesStart", "class_cylinder_shape.html#aabb7fa62446dd36b1d18f149cef8fb22", null ], + [ "GetVolume", "class_cylinder_shape.html#a85e3891076275d55c6274d3cfd480b18", null ], + [ "IsValidScale", "class_cylinder_shape.html#a588bfdea87ca78a28f2c02c4d9d05630", null ], + [ "MakeScaleValid", "class_cylinder_shape.html#ac0a0648f2d6fe2f16f5fc19cd028c7b4", null ], + [ "RestoreBinaryState", "class_cylinder_shape.html#a34b7524e8eeb624986b062a42c7af128", null ], + [ "SaveBinaryState", "class_cylinder_shape.html#ac729688b4dd3357fb1df7d4e445a25d9", null ] +]; \ No newline at end of file diff --git a/class_cylinder_shape.png b/class_cylinder_shape.png new file mode 100644 index 000000000..61ebb7467 Binary files /dev/null and b/class_cylinder_shape.png differ diff --git a/class_cylinder_shape_1_1_cylinder-members.html b/class_cylinder_shape_1_1_cylinder-members.html new file mode 100644 index 000000000..2f0811623 --- /dev/null +++ b/class_cylinder_shape_1_1_cylinder-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CylinderShape::Cylinder Member List
+
+
+ +

This is the complete list of members for CylinderShape::Cylinder, including all inherited members.

+ + + + + +
Cylinder(float inHalfHeight, float inRadius, float inConvexRadius)CylinderShape::Cylinderinline
GetConvexRadius() const overrideCylinderShape::Cylinderinlinevirtual
GetSupport(Vec3Arg inDirection) const overrideCylinderShape::Cylinderinlinevirtual
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_cylinder_shape_1_1_cylinder.html b/class_cylinder_shape_1_1_cylinder.html new file mode 100644 index 000000000..3502aeda1 --- /dev/null +++ b/class_cylinder_shape_1_1_cylinder.html @@ -0,0 +1,244 @@ + + + + + + + +Jolt Physics: CylinderShape::Cylinder Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CylinderShape::Cylinder Class Referencefinal
+
+
+
+Inheritance diagram for CylinderShape::Cylinder:
+
+
+ + +ConvexShape::Support + +
+ + + + + + + + + + + + +

+Public Member Functions

 Cylinder (float inHalfHeight, float inRadius, float inConvexRadius)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Constructor & Destructor Documentation

+ +

◆ Cylinder()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
CylinderShape::Cylinder::Cylinder (float inHalfHeight,
float inRadius,
float inConvexRadius 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float CylinderShape::Cylinder::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 CylinderShape::Cylinder::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_cylinder_shape_1_1_cylinder.js b/class_cylinder_shape_1_1_cylinder.js new file mode 100644 index 000000000..bfc37e45a --- /dev/null +++ b/class_cylinder_shape_1_1_cylinder.js @@ -0,0 +1,6 @@ +var class_cylinder_shape_1_1_cylinder = +[ + [ "Cylinder", "class_cylinder_shape_1_1_cylinder.html#a932e1101233f69024d2ba24094d3a7c2", null ], + [ "GetConvexRadius", "class_cylinder_shape_1_1_cylinder.html#a0427aea83069b39420bcc5d84e02e11a", null ], + [ "GetSupport", "class_cylinder_shape_1_1_cylinder.html#ac2fbf97f298eabff324fe1200d1e6974", null ] +]; \ No newline at end of file diff --git a/class_cylinder_shape_1_1_cylinder.png b/class_cylinder_shape_1_1_cylinder.png new file mode 100644 index 000000000..a1d8dbb3d Binary files /dev/null and b/class_cylinder_shape_1_1_cylinder.png differ diff --git a/class_cylinder_shape_settings-members.html b/class_cylinder_shape_settings-members.html new file mode 100644 index 000000000..e13b64233 --- /dev/null +++ b/class_cylinder_shape_settings-members.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
CylinderShapeSettings Member List
+
+
+ +

This is the complete list of members for CylinderShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
ConvexShapeSettings()=defaultConvexShapeSettings
ConvexShapeSettings(const PhysicsMaterial *inMaterial)ConvexShapeSettingsinlineexplicit
Create() const overrideCylinderShapeSettingsvirtual
CylinderShapeSettings()=defaultCylinderShapeSettings
CylinderShapeSettings(float inHalfHeight, float inRadius, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)CylinderShapeSettingsinline
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mConvexRadiusCylinderShapeSettings
mDensityConvexShapeSettings
mHalfHeightCylinderShapeSettings
mMaterialConvexShapeSettings
mRadiusCylinderShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetDensity(float inDensity)ConvexShapeSettingsinline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_cylinder_shape_settings.html b/class_cylinder_shape_settings.html new file mode 100644 index 000000000..517a33bce --- /dev/null +++ b/class_cylinder_shape_settings.html @@ -0,0 +1,390 @@ + + + + + + + +Jolt Physics: CylinderShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
CylinderShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a CylinderShape. + More...

+ +

#include <CylinderShape.h>

+
+Inheritance diagram for CylinderShapeSettings:
+
+
+ + +ConvexShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 CylinderShapeSettings ()=default
 Default constructor for deserialization.
 
 CylinderShapeSettings (float inHalfHeight, float inRadius, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)
 
virtual ShapeResult Create () const override
 Create a shape according to the settings specified by this object.
 
- Public Member Functions inherited from ConvexShapeSettings
 ConvexShapeSettings ()=default
 Constructor.
 
 ConvexShapeSettings (const PhysicsMaterial *inMaterial)
 
void SetDensity (float inDensity)
 Set the density of the object in kg / m^3.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

float mHalfHeight = 0.0f
 
float mRadius = 0.0f
 
float mConvexRadius = 0.0f
 
- Public Attributes inherited from ConvexShapeSettings
RefConst< PhysicsMaterialmMaterial
 Material assigned to this shape.
 
float mDensity = 1000.0f
 Uniform density of the interior of the convex object (kg / m^3)
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a CylinderShape.

+

Constructor & Destructor Documentation

+ +

◆ CylinderShapeSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
CylinderShapeSettings::CylinderShapeSettings ()
+
+default
+
+ +

Default constructor for deserialization.

+ +
+
+ +

◆ CylinderShapeSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CylinderShapeSettings::CylinderShapeSettings (float inHalfHeight,
float inRadius,
float inConvexRadius = cDefaultConvexRadius,
const PhysicsMaterialinMaterial = nullptr 
)
+
+inline
+
+

Create a shape centered around the origin with one top at (0, -inHalfHeight, 0) and the other at (0, inHalfHeight, 0) and radius inRadius. (internally the convex radius will be subtracted from the cylinder the total cylinder will not grow with the convex radius, but the edges of the cylinder will be rounded a bit).

+ +
+
+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + +
ShapeSettings::ShapeResult CylinderShapeSettings::Create () const
+
+overridevirtual
+
+ +

Create a shape according to the settings specified by this object.

+ +

Implements ShapeSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mConvexRadius

+ +
+
+ + + + +
float CylinderShapeSettings::mConvexRadius = 0.0f
+
+ +
+
+ +

◆ mHalfHeight

+ +
+
+ + + + +
float CylinderShapeSettings::mHalfHeight = 0.0f
+
+ +
+
+ +

◆ mRadius

+ +
+
+ + + + +
float CylinderShapeSettings::mRadius = 0.0f
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_cylinder_shape_settings.js b/class_cylinder_shape_settings.js new file mode 100644 index 000000000..1661ca3d6 --- /dev/null +++ b/class_cylinder_shape_settings.js @@ -0,0 +1,9 @@ +var class_cylinder_shape_settings = +[ + [ "CylinderShapeSettings", "class_cylinder_shape_settings.html#a4933a4e035e0f25e3c4bacbb3a6a355c", null ], + [ "CylinderShapeSettings", "class_cylinder_shape_settings.html#ab24905d9ebd23c56f21db0233bf606e9", null ], + [ "Create", "class_cylinder_shape_settings.html#a39406c7bd89e09425edf21b209a1519a", null ], + [ "mConvexRadius", "class_cylinder_shape_settings.html#a90e07951e230eb0c246043e3d4f452c2", null ], + [ "mHalfHeight", "class_cylinder_shape_settings.html#ad1e7c1388f75ba686cdedfb79b8effc8", null ], + [ "mRadius", "class_cylinder_shape_settings.html#a6fb07e86ae5972d56bbfd4be626d20b8", null ] +]; \ No newline at end of file diff --git a/class_cylinder_shape_settings.png b/class_cylinder_shape_settings.png new file mode 100644 index 000000000..3d5794926 Binary files /dev/null and b/class_cylinder_shape_settings.png differ diff --git a/class_d_mat44-members.html b/class_d_mat44-members.html new file mode 100644 index 000000000..370bb42b6 --- /dev/null +++ b/class_d_mat44-members.html @@ -0,0 +1,172 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DMat44 Member List
+
+
+ +

This is the complete list of members for DMat44, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArgType typedefDMat44
Decompose(Vec3 &outScale) constDMat44inline
DMat44()=defaultDMat44
DMat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, DVec3Arg inC4)DMat44
DMat44(const DMat44 &inM2)=defaultDMat44
DMat44(Mat44Arg inM)DMat44explicit
DMat44(Mat44Arg inRot, DVec3Arg inT)DMat44
DMat44(Type inC1, Type inC2, Type inC3, DTypeArg inC4)DMat44
DType typedefDMat44
DTypeArg typedefDMat44
GetAxisX() constDMat44inline
GetAxisY() constDMat44inline
GetAxisZ() constDMat44inline
GetColumn3(uint inCol) constDMat44inline
GetColumn4(uint inCol) constDMat44inline
GetDirectionPreservingMatrix() constDMat44inline
GetQuaternion() constDMat44inline
GetRotation() constDMat44inline
GetTranslation() constDMat44inline
Inversed() constDMat44
InversedRotationTranslation() constDMat44
IsClose(DMat44Arg inM2, float inMaxDistSq=1.0e-12f) constDMat44
Multiply3x3(Vec3Arg inV) constDMat44inline
Multiply3x3(DVec3Arg inV) constDMat44
Multiply3x3Transposed(Vec3Arg inV) constDMat44inline
operator!=(DMat44Arg inM2) constDMat44inline
operator*(Mat44Arg inM) constDMat44
operator*(DMat44Arg inM) constDMat44
operator*(Vec3Arg inV) constDMat44
operator*(DVec3Arg inV) constDMat44
operator<<DMat44friend
operator=(const DMat44 &inM2)=defaultDMat44
operator==(DMat44Arg inM2) constDMat44
PostScaled(Vec3Arg inScale) constDMat44
PostTranslated(Vec3Arg inTranslation) constDMat44
PostTranslated(DVec3Arg inTranslation) constDMat44
PreScaled(Vec3Arg inScale) constDMat44
PreTranslated(Vec3Arg inTranslation) constDMat44
PreTranslated(DVec3Arg inTranslation) constDMat44
SetAxisX(Vec3Arg inV)DMat44inline
SetAxisY(Vec3Arg inV)DMat44inline
SetAxisZ(Vec3Arg inV)DMat44inline
SetColumn3(uint inCol, Vec3Arg inV)DMat44inline
SetColumn4(uint inCol, Vec4Arg inV)DMat44inline
SetRotation(Mat44Arg inRotation)DMat44
SetTranslation(DVec3Arg inV)DMat44inline
sIdentity()DMat44static
sInverseRotationTranslation(QuatArg inR, DVec3Arg inT)DMat44static
sRotation(QuatArg inQuat)DMat44inlinestatic
sRotationTranslation(QuatArg inR, DVec3Arg inT)DMat44inlinestatic
sScale(Vec3Arg inV)DMat44inlinestatic
sTranslation(DVec3Arg inV)DMat44inlinestatic
sZero()DMat44static
ToMat44() constDMat44inline
Transposed3x3() constDMat44inline
Type typedefDMat44
+
+ + + + diff --git a/class_d_mat44.html b/class_d_mat44.html new file mode 100644 index 000000000..9b47abd28 --- /dev/null +++ b/class_d_mat44.html @@ -0,0 +1,1719 @@ + + + + + + + +Jolt Physics: DMat44 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DMat44 Class Reference
+
+
+ +

Holds a 4x4 matrix of floats with the last column consisting of doubles. + More...

+ +

#include <DMat44.h>

+ + + + + + + + + + +

+Public Types

using Type = Vec4::Type
 
using DType = DVec3::Type
 
using DTypeArg = DVec3::TypeArg
 
using ArgType = DMat44Arg
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 DMat44 ()=default
 Constructor.
 
JPH_INLINE DMat44 (Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, DVec3Arg inC4)
 
 DMat44 (const DMat44 &inM2)=default
 
DMat44operator= (const DMat44 &inM2)=default
 
JPH_INLINE DMat44 (Mat44Arg inM)
 
JPH_INLINE DMat44 (Mat44Arg inRot, DVec3Arg inT)
 
JPH_INLINE DMat44 (Type inC1, Type inC2, Type inC3, DTypeArg inC4)
 
JPH_INLINE Mat44 ToMat44 () const
 Convert to Mat44 rounding to nearest.
 
JPH_INLINE bool operator== (DMat44Arg inM2) const
 Comparison.
 
JPH_INLINE bool operator!= (DMat44Arg inM2) const
 
JPH_INLINE bool IsClose (DMat44Arg inM2, float inMaxDistSq=1.0e-12f) const
 Test if two matrices are close.
 
JPH_INLINE DMat44 operator* (Mat44Arg inM) const
 Multiply matrix by matrix.
 
JPH_INLINE DMat44 operator* (DMat44Arg inM) const
 Multiply matrix by matrix.
 
JPH_INLINE DVec3 operator* (Vec3Arg inV) const
 Multiply vector by matrix.
 
JPH_INLINE DVec3 operator* (DVec3Arg inV) const
 Multiply vector by matrix.
 
JPH_INLINE Vec3 Multiply3x3 (Vec3Arg inV) const
 Multiply vector by only 3x3 part of the matrix.
 
JPH_INLINE DVec3 Multiply3x3 (DVec3Arg inV) const
 Multiply vector by only 3x3 part of the matrix.
 
JPH_INLINE Vec3 Multiply3x3Transposed (Vec3Arg inV) const
 Multiply vector by only 3x3 part of the transpose of the matrix ( \(result = this^T \: inV\))
 
JPH_INLINE DMat44 PreScaled (Vec3Arg inScale) const
 Scale a matrix: result = this * Mat44::sScale(inScale)
 
JPH_INLINE DMat44 PostScaled (Vec3Arg inScale) const
 Scale a matrix: result = Mat44::sScale(inScale) * this.
 
JPH_INLINE DMat44 PreTranslated (Vec3Arg inTranslation) const
 Pre multiply by translation matrix: result = this * Mat44::sTranslation(inTranslation)
 
JPH_INLINE DMat44 PreTranslated (DVec3Arg inTranslation) const
 Pre multiply by translation matrix: result = this * Mat44::sTranslation(inTranslation)
 
JPH_INLINE DMat44 PostTranslated (Vec3Arg inTranslation) const
 Post multiply by translation matrix: result = Mat44::sTranslation(inTranslation) * this (i.e. add inTranslation to the 4-th column)
 
JPH_INLINE DMat44 PostTranslated (DVec3Arg inTranslation) const
 Post multiply by translation matrix: result = Mat44::sTranslation(inTranslation) * this (i.e. add inTranslation to the 4-th column)
 
JPH_INLINE Vec3 GetAxisX () const
 Access to the columns.
 
JPH_INLINE void SetAxisX (Vec3Arg inV)
 
JPH_INLINE Vec3 GetAxisY () const
 
JPH_INLINE void SetAxisY (Vec3Arg inV)
 
JPH_INLINE Vec3 GetAxisZ () const
 
JPH_INLINE void SetAxisZ (Vec3Arg inV)
 
JPH_INLINE DVec3 GetTranslation () const
 
JPH_INLINE void SetTranslation (DVec3Arg inV)
 
JPH_INLINE Vec3 GetColumn3 (uint inCol) const
 
JPH_INLINE void SetColumn3 (uint inCol, Vec3Arg inV)
 
JPH_INLINE Vec4 GetColumn4 (uint inCol) const
 
JPH_INLINE void SetColumn4 (uint inCol, Vec4Arg inV)
 
JPH_INLINE Mat44 Transposed3x3 () const
 Transpose 3x3 subpart of matrix.
 
JPH_INLINE DMat44 Inversed () const
 Inverse 4x4 matrix.
 
JPH_INLINE DMat44 InversedRotationTranslation () const
 Inverse 4x4 matrix when it only contains rotation and translation.
 
JPH_INLINE Mat44 GetRotation () const
 Get rotation part only (note: retains the first 3 values from the bottom row)
 
JPH_INLINE void SetRotation (Mat44Arg inRotation)
 Updates the rotation part of this matrix (the first 3 columns)
 
JPH_INLINE Quat GetQuaternion () const
 Convert to quaternion.
 
JPH_INLINE Mat44 GetDirectionPreservingMatrix () const
 Get matrix that transforms a direction with the same transform as this matrix (length is not preserved)
 
JPH_INLINE DMat44 Decompose (Vec3 &outScale) const
 Works identical to Mat44::Decompose.
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static JPH_INLINE DMat44 sZero ()
 Zero matrix.
 
static JPH_INLINE DMat44 sIdentity ()
 Identity matrix.
 
static JPH_INLINE DMat44 sRotation (QuatArg inQuat)
 Rotate from quaternion.
 
static JPH_INLINE DMat44 sTranslation (DVec3Arg inV)
 Get matrix that translates.
 
static JPH_INLINE DMat44 sRotationTranslation (QuatArg inR, DVec3Arg inT)
 Get matrix that rotates and translates.
 
static JPH_INLINE DMat44 sInverseRotationTranslation (QuatArg inR, DVec3Arg inT)
 Get inverse matrix of sRotationTranslation.
 
static JPH_INLINE DMat44 sScale (Vec3Arg inV)
 Get matrix that scales (produces a matrix with (inV, 1) on its diagonal)
 
+ + + + +

+Friends

ostream & operator<< (ostream &inStream, DMat44Arg inM)
 To String.
 
+

Detailed Description

+

Holds a 4x4 matrix of floats with the last column consisting of doubles.

+

Member Typedef Documentation

+ +

◆ ArgType

+ +
+
+ + + + +
using DMat44::ArgType = DMat44Arg
+
+ +
+
+ +

◆ DType

+ +
+
+ + + + +
using DMat44::DType = DVec3::Type
+
+ +
+
+ +

◆ DTypeArg

+ +
+
+ + + + +
using DMat44::DTypeArg = DVec3::TypeArg
+
+ +
+
+ +

◆ Type

+ +
+
+ + + + +
using DMat44::Type = Vec4::Type
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ DMat44() [1/6]

+ +
+
+ + + + + +
+ + + + + + + +
DMat44::DMat44 ()
+
+default
+
+ +

Constructor.

+

Intentionally not initialized for performance reasons

+ +
+
+ +

◆ DMat44() [2/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN DMat44::DMat44 (Vec4Arg inC1,
Vec4Arg inC2,
Vec4Arg inC3,
DVec3Arg inC4 
)
+
+ +
+
+ +

◆ DMat44() [3/6]

+ +
+
+ + + + + +
+ + + + + + + + +
DMat44::DMat44 (const DMat44inM2)
+
+default
+
+ +
+
+ +

◆ DMat44() [4/6]

+ +
+
+ + + + + +
+ + + + + + + + +
DMat44::DMat44 (Mat44Arg inM)
+
+explicit
+
+ +
+
+ +

◆ DMat44() [5/6]

+ +
+
+ + + + + + + + + + + + + + + + + + +
DMat44::DMat44 (Mat44Arg inRot,
DVec3Arg inT 
)
+
+ +
+
+ +

◆ DMat44() [6/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DMat44::DMat44 (Type inC1,
Type inC2,
Type inC3,
DTypeArg inC4 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ Decompose()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE DMat44 DMat44::Decompose (Vec3outScale) const
+
+inline
+
+ +

Works identical to Mat44::Decompose.

+ +
+
+ +

◆ GetAxisX()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec3 DMat44::GetAxisX () const
+
+inline
+
+ +

Access to the columns.

+ +
+
+ +

◆ GetAxisY()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec3 DMat44::GetAxisY () const
+
+inline
+
+ +
+
+ +

◆ GetAxisZ()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec3 DMat44::GetAxisZ () const
+
+inline
+
+ +
+
+ +

◆ GetColumn3()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec3 DMat44::GetColumn3 (uint inCol) const
+
+inline
+
+ +
+
+ +

◆ GetColumn4()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec4 DMat44::GetColumn4 (uint inCol) const
+
+inline
+
+ +
+
+ +

◆ GetDirectionPreservingMatrix()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Mat44 DMat44::GetDirectionPreservingMatrix () const
+
+inline
+
+ +

Get matrix that transforms a direction with the same transform as this matrix (length is not preserved)

+ +
+
+ +

◆ GetQuaternion()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Quat DMat44::GetQuaternion () const
+
+inline
+
+ +

Convert to quaternion.

+ +
+
+ +

◆ GetRotation()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Mat44 DMat44::GetRotation () const
+
+inline
+
+ +

Get rotation part only (note: retains the first 3 values from the bottom row)

+ +
+
+ +

◆ GetTranslation()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE DVec3 DMat44::GetTranslation () const
+
+inline
+
+ +
+
+ +

◆ Inversed()

+ +
+
+ + + + + + + +
DMat44 DMat44::Inversed () const
+
+ +

Inverse 4x4 matrix.

+ +
+
+ +

◆ InversedRotationTranslation()

+ +
+
+ + + + + + + +
DMat44 DMat44::InversedRotationTranslation () const
+
+ +

Inverse 4x4 matrix when it only contains rotation and translation.

+ +
+
+ +

◆ IsClose()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool DMat44::IsClose (DMat44Arg inM2,
float inMaxDistSq = 1.0e-12f 
) const
+
+ +

Test if two matrices are close.

+ +
+
+ +

◆ Multiply3x3() [1/2]

+ +
+
+ + + + + + + + +
DVec3 DMat44::Multiply3x3 (DVec3Arg inV) const
+
+ +

Multiply vector by only 3x3 part of the matrix.

+ +
+
+ +

◆ Multiply3x3() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec3 DMat44::Multiply3x3 (Vec3Arg inV) const
+
+inline
+
+ +

Multiply vector by only 3x3 part of the matrix.

+ +
+
+ +

◆ Multiply3x3Transposed()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec3 DMat44::Multiply3x3Transposed (Vec3Arg inV) const
+
+inline
+
+ +

Multiply vector by only 3x3 part of the transpose of the matrix ( \(result = this^T \: inV\))

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE bool DMat44::operator!= (DMat44Arg inM2) const
+
+inline
+
+ +
+
+ +

◆ operator*() [1/4]

+ +
+
+ + + + + + + + +
DMat44 DMat44::operator* (DMat44Arg inM) const
+
+ +

Multiply matrix by matrix.

+ +
+
+ +

◆ operator*() [2/4]

+ +
+
+ + + + + + + + +
DVec3 DMat44::operator* (DVec3Arg inV) const
+
+ +

Multiply vector by matrix.

+ +
+
+ +

◆ operator*() [3/4]

+ +
+
+ + + + + + + + +
DMat44 DMat44::operator* (Mat44Arg inM) const
+
+ +

Multiply matrix by matrix.

+ +
+
+ +

◆ operator*() [4/4]

+ +
+
+ + + + + + + + +
DVec3 DMat44::operator* (Vec3Arg inV) const
+
+ +

Multiply vector by matrix.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
DMat44 & DMat44::operator= (const DMat44inM2)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool DMat44::operator== (DMat44Arg inM2) const
+
+ +

Comparison.

+ +
+
+ +

◆ PostScaled()

+ +
+
+ + + + + + + + +
DMat44 DMat44::PostScaled (Vec3Arg inScale) const
+
+ +

Scale a matrix: result = Mat44::sScale(inScale) * this.

+ +
+
+ +

◆ PostTranslated() [1/2]

+ +
+
+ + + + + + + + +
DMat44 DMat44::PostTranslated (DVec3Arg inTranslation) const
+
+ +

Post multiply by translation matrix: result = Mat44::sTranslation(inTranslation) * this (i.e. add inTranslation to the 4-th column)

+ +
+
+ +

◆ PostTranslated() [2/2]

+ +
+
+ + + + + + + + +
DMat44 DMat44::PostTranslated (Vec3Arg inTranslation) const
+
+ +

Post multiply by translation matrix: result = Mat44::sTranslation(inTranslation) * this (i.e. add inTranslation to the 4-th column)

+ +
+
+ +

◆ PreScaled()

+ +
+
+ + + + + + + + +
DMat44 DMat44::PreScaled (Vec3Arg inScale) const
+
+ +

Scale a matrix: result = this * Mat44::sScale(inScale)

+ +
+
+ +

◆ PreTranslated() [1/2]

+ +
+
+ + + + + + + + +
DMat44 DMat44::PreTranslated (DVec3Arg inTranslation) const
+
+ +

Pre multiply by translation matrix: result = this * Mat44::sTranslation(inTranslation)

+ +
+
+ +

◆ PreTranslated() [2/2]

+ +
+
+ + + + + + + + +
DMat44 DMat44::PreTranslated (Vec3Arg inTranslation) const
+
+ +

Pre multiply by translation matrix: result = this * Mat44::sTranslation(inTranslation)

+ +
+
+ +

◆ SetAxisX()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void DMat44::SetAxisX (Vec3Arg inV)
+
+inline
+
+ +
+
+ +

◆ SetAxisY()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void DMat44::SetAxisY (Vec3Arg inV)
+
+inline
+
+ +
+
+ +

◆ SetAxisZ()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void DMat44::SetAxisZ (Vec3Arg inV)
+
+inline
+
+ +
+
+ +

◆ SetColumn3()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE void DMat44::SetColumn3 (uint inCol,
Vec3Arg inV 
)
+
+inline
+
+ +
+
+ +

◆ SetColumn4()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE void DMat44::SetColumn4 (uint inCol,
Vec4Arg inV 
)
+
+inline
+
+ +
+
+ +

◆ SetRotation()

+ +
+
+ + + + + + + + +
void DMat44::SetRotation (Mat44Arg inRotation)
+
+ +

Updates the rotation part of this matrix (the first 3 columns)

+ +
+
+ +

◆ SetTranslation()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void DMat44::SetTranslation (DVec3Arg inV)
+
+inline
+
+ +
+
+ +

◆ sIdentity()

+ +
+
+ + + + + +
+ + + + + + + +
DMat44 DMat44::sIdentity ()
+
+static
+
+ +

Identity matrix.

+ +
+
+ +

◆ sInverseRotationTranslation()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DMat44 DMat44::sInverseRotationTranslation (QuatArg inR,
DVec3Arg inT 
)
+
+static
+
+ +

Get inverse matrix of sRotationTranslation.

+ +
+
+ +

◆ sRotation()

+ +
+
+ + + + + +
+ + + + + + + + +
static JPH_INLINE DMat44 DMat44::sRotation (QuatArg inQuat)
+
+inlinestatic
+
+ +

Rotate from quaternion.

+ +
+
+ +

◆ sRotationTranslation()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static JPH_INLINE DMat44 DMat44::sRotationTranslation (QuatArg inR,
DVec3Arg inT 
)
+
+inlinestatic
+
+ +

Get matrix that rotates and translates.

+ +
+
+ +

◆ sScale()

+ +
+
+ + + + + +
+ + + + + + + + +
static JPH_INLINE DMat44 DMat44::sScale (Vec3Arg inV)
+
+inlinestatic
+
+ +

Get matrix that scales (produces a matrix with (inV, 1) on its diagonal)

+ +
+
+ +

◆ sTranslation()

+ +
+
+ + + + + +
+ + + + + + + + +
static JPH_INLINE DMat44 DMat44::sTranslation (DVec3Arg inV)
+
+inlinestatic
+
+ +

Get matrix that translates.

+ +
+
+ +

◆ sZero()

+ +
+
+ + + + + +
+ + + + + + + +
DMat44 DMat44::sZero ()
+
+static
+
+ +

Zero matrix.

+ +
+
+ +

◆ ToMat44()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Mat44 DMat44::ToMat44 () const
+
+inline
+
+ +

Convert to Mat44 rounding to nearest.

+ +
+
+ +

◆ Transposed3x3()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Mat44 DMat44::Transposed3x3 () const
+
+inline
+
+ +

Transpose 3x3 subpart of matrix.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ operator<<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ostream & operator<< (ostream & inStream,
DMat44Arg inM 
)
+
+friend
+
+ +

To String.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_d_mat44.js b/class_d_mat44.js new file mode 100644 index 000000000..480a4ffe8 --- /dev/null +++ b/class_d_mat44.js @@ -0,0 +1,52 @@ +var class_d_mat44 = +[ + [ "ArgType", "class_d_mat44.html#a235b5e953be54f540205706098809fcb", null ], + [ "DType", "class_d_mat44.html#a1559a40274c45f8e0f456e7fd53c2c25", null ], + [ "DTypeArg", "class_d_mat44.html#a1d9483a11578c2f22e1d2198f27c85fb", null ], + [ "Type", "class_d_mat44.html#ad8feb59fac486ac540e532367671442d", null ], + [ "DMat44", "class_d_mat44.html#a61262e4bb014f696551e9513fd19808e", null ], + [ "DMat44", "class_d_mat44.html#adf1f915521ba1e3409213613c6286a04", null ], + [ "DMat44", "class_d_mat44.html#ac36f72aa17f21f89ef16a9a419c2646e", null ], + [ "DMat44", "class_d_mat44.html#a5a0ebccf6fd317512f2be4ea790f29e9", null ], + [ "DMat44", "class_d_mat44.html#a60e1e9ecc98846282182af2d3e5f5f54", null ], + [ "DMat44", "class_d_mat44.html#a52a39db3b4bfe06308b9daecf707d72d", null ], + [ "Decompose", "class_d_mat44.html#ac179f093b7e89e2b71f9d5cea1c84d90", null ], + [ "GetAxisX", "class_d_mat44.html#ab5982c4a0d185632cb8a734741b74f69", null ], + [ "GetAxisY", "class_d_mat44.html#aea9981dbffac1c05f195bf1ad1391523", null ], + [ "GetAxisZ", "class_d_mat44.html#ae8a76e5a80b166da697b2581567ff5af", null ], + [ "GetColumn3", "class_d_mat44.html#ae81ea58eee1dbea2c92d11272b9e8f7b", null ], + [ "GetColumn4", "class_d_mat44.html#a2b3ddba8891381c2728bba83638a1003", null ], + [ "GetDirectionPreservingMatrix", "class_d_mat44.html#a276e9d5393c45b4dbba222c23db3a58c", null ], + [ "GetQuaternion", "class_d_mat44.html#a73d9f99570455f596fb3b7fcd1937b29", null ], + [ "GetRotation", "class_d_mat44.html#ad488caa68ce5121590b731778edac0d6", null ], + [ "GetTranslation", "class_d_mat44.html#ac47b990d006488e24ad4c0512cdaf9b1", null ], + [ "Inversed", "class_d_mat44.html#a9dd1f19d169fa56c3797b3160ec6e01e", null ], + [ "InversedRotationTranslation", "class_d_mat44.html#a99c3fff7120735262343accfb677cca0", null ], + [ "IsClose", "class_d_mat44.html#ad27b57cba8e9b24759bb4d6f83160da7", null ], + [ "Multiply3x3", "class_d_mat44.html#accf6a572b4d458e23a882db2e7bd8449", null ], + [ "Multiply3x3", "class_d_mat44.html#a7782f799086b0eabe8095a65475018b7", null ], + [ "Multiply3x3Transposed", "class_d_mat44.html#a3e74c4052e9dbbdc87f1d865d6679e74", null ], + [ "operator!=", "class_d_mat44.html#a5b8ba1f914bb4a7243be497c552d0992", null ], + [ "operator*", "class_d_mat44.html#a33dbadd50287afe81c339ee89ee9c7dc", null ], + [ "operator*", "class_d_mat44.html#a086981712295420afe35262a13989f06", null ], + [ "operator*", "class_d_mat44.html#aca2af5f8afaf528035bc5fd0791d9608", null ], + [ "operator*", "class_d_mat44.html#a1bfdf30fa6926f6f2076c90beeb588dc", null ], + [ "operator=", "class_d_mat44.html#a4c37a399a449603c4e611b81d58e004d", null ], + [ "operator==", "class_d_mat44.html#a016d3a8c02d9a88d1fca7e6d73fea3fc", null ], + [ "PostScaled", "class_d_mat44.html#a7d108f0330578e1274b9232c28a39326", null ], + [ "PostTranslated", "class_d_mat44.html#a14f62e1b746001ac1dac9af1ba432ad2", null ], + [ "PostTranslated", "class_d_mat44.html#a3288220df03214eb138fb4d312b82870", null ], + [ "PreScaled", "class_d_mat44.html#a998e1a8c9f387e16517c47f12eed4b3e", null ], + [ "PreTranslated", "class_d_mat44.html#a03d5f4994002026a1b89692eb044786f", null ], + [ "PreTranslated", "class_d_mat44.html#a3823b9cdfec0b409ea3964f31411b3af", null ], + [ "SetAxisX", "class_d_mat44.html#a2625f7239b7fd46e78686d1caa6dd49b", null ], + [ "SetAxisY", "class_d_mat44.html#a69b208af491fd37ab80b8652f24376b8", null ], + [ "SetAxisZ", "class_d_mat44.html#a22e3581a9433d7d96eb62824d78dac2c", null ], + [ "SetColumn3", "class_d_mat44.html#a1d996bd7e8890fd22829cdc6bfbc261b", null ], + [ "SetColumn4", "class_d_mat44.html#a05be364fe7c3a73e6aae032f3a570743", null ], + [ "SetRotation", "class_d_mat44.html#a896557b839b1a9126819a44a092f6bb6", null ], + [ "SetTranslation", "class_d_mat44.html#a22da3bc4aa09a7285b79d63930c58637", null ], + [ "ToMat44", "class_d_mat44.html#a358f19401d6b1d71fb10fbf2c1ff355e", null ], + [ "Transposed3x3", "class_d_mat44.html#a37bfd4712353f46ee35b3fe0717cbda8", null ], + [ "operator<<", "class_d_mat44.html#ac2c17e5dbdf97a76d8807d6662ac0ec2", null ] +]; \ No newline at end of file diff --git a/class_d_vec3-members.html b/class_d_vec3-members.html new file mode 100644 index 000000000..9de75d429 --- /dev/null +++ b/class_d_vec3-members.html @@ -0,0 +1,204 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DVec3 Member List
+
+
+ +

This is the complete list of members for DVec3, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Abs() constDVec3
ArgType typedefDVec3
cFalseDVec3inlinestatic
CheckW() constDVec3
Cross(DVec3Arg inV2) constDVec3
cTrueDVec3inlinestatic
Dot(DVec3Arg inV2) constDVec3
DVec3()=defaultDVec3
DVec3(const DVec3 &inRHS)=defaultDVec3
DVec3(Vec3Arg inRHS)DVec3explicit
DVec3(Vec4Arg inRHS)DVec3explicit
DVec3(TypeArg inRHS)DVec3inline
DVec3(double inX, double inY, double inZ)DVec3
DVec3(const Double3 &inV)DVec3explicit
GetSign() constDVec3
GetTrues() constDVec3
GetX() constDVec3inline
GetY() constDVec3inline
GetZ() constDVec3inline
IsClose(DVec3Arg inV2, double inMaxDistSq=1.0e-24) constDVec3
IsNaN() constDVec3
IsNearZero(double inMaxDistSq=1.0e-24) constDVec3
IsNormalized(double inTolerance=1.0e-12) constDVec3
Length() constDVec3
LengthSq() constDVec3
mF64DVec3
mValueDVec3
Normalized() constDVec3
operator Vec3() constDVec3explicit
operator!=(DVec3Arg inV2) constDVec3inline
operator*(DVec3Arg inV2) constDVec3
operator*(double inV2) constDVec3
operator*DVec3friend
operator*=(double inV2)DVec3
operator*=(DVec3Arg inV2)DVec3
operator+(Vec3Arg inV2) constDVec3
operator+(DVec3Arg inV2) constDVec3
operator+=(Vec3Arg inV2)DVec3
operator+=(DVec3Arg inV2)DVec3
operator-() constDVec3
operator-(Vec3Arg inV2) constDVec3
operator-(DVec3Arg inV2) constDVec3
operator-=(Vec3Arg inV2)DVec3
operator-=(DVec3Arg inV2)DVec3
operator/(double inV2) constDVec3
operator/(DVec3Arg inV2) constDVec3
operator/=(double inV2)DVec3
operator<<DVec3friend
operator=(const DVec3 &inRHS)=defaultDVec3
operator==(DVec3Arg inV2) constDVec3
operator[](uint inCoordinate) constDVec3inline
PrepareRoundToInf() constDVec3
PrepareRoundToZero() constDVec3
Reciprocal() constDVec3
sAnd(DVec3Arg inV1, DVec3Arg inV2)DVec3static
sAxisX()DVec3inlinestatic
sAxisY()DVec3inlinestatic
sAxisZ()DVec3inlinestatic
sClamp(DVec3Arg inV, DVec3Arg inMin, DVec3Arg inMax)DVec3static
sEquals(DVec3Arg inV1, DVec3Arg inV2)DVec3static
Set(double inX, double inY, double inZ)DVec3inline
SetComponent(uint inCoordinate, double inValue)DVec3inline
SetX(double inX)DVec3inline
SetY(double inY)DVec3inline
SetZ(double inZ)DVec3inline
sFixW(TypeArg inValue)DVec3static
sFusedMultiplyAdd(DVec3Arg inMul1, DVec3Arg inMul2, DVec3Arg inAdd)DVec3static
sGreater(DVec3Arg inV1, DVec3Arg inV2)DVec3static
sGreaterOrEqual(DVec3Arg inV1, DVec3Arg inV2)DVec3static
sLess(DVec3Arg inV1, DVec3Arg inV2)DVec3static
sLessOrEqual(DVec3Arg inV1, DVec3Arg inV2)DVec3static
sLoadDouble3Unsafe(const Double3 &inV)DVec3static
sMax(DVec3Arg inV1, DVec3Arg inV2)DVec3static
sMin(DVec3Arg inV1, DVec3Arg inV2)DVec3static
sNaN()DVec3static
sOr(DVec3Arg inV1, DVec3Arg inV2)DVec3static
Sqrt() constDVec3
sReplicate(double inV)DVec3static
sSelect(DVec3Arg inV1, DVec3Arg inV2, DVec3Arg inControl)DVec3static
StoreDouble3(Double3 *outV) constDVec3
sXor(DVec3Arg inV1, DVec3Arg inV2)DVec3static
sZero()DVec3static
TestAllTrue() constDVec3
TestAnyTrue() constDVec3
ToVec3RoundDown() constDVec3
ToVec3RoundUp() constDVec3
Type typedefDVec3
TypeArg typedefDVec3
+
+ + + + diff --git a/class_d_vec3.html b/class_d_vec3.html new file mode 100644 index 000000000..f8bec83cd --- /dev/null +++ b/class_d_vec3.html @@ -0,0 +1,2652 @@ + + + + + + + +Jolt Physics: DVec3 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DVec3 Class Reference
+
+
+ +

#include <DVec3.h>

+ + + + + + + + +

+Public Types

using Type = { double mData[4]
 
using TypeArg = const Type &
 
using ArgType = DVec3Arg
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 DVec3 ()=default
 Constructor.
 
 DVec3 (const DVec3 &inRHS)=default
 
DVec3operator= (const DVec3 &inRHS)=default
 
JPH_INLINE DVec3 (Vec3Arg inRHS)
 
JPH_INLINE DVec3 (Vec4Arg inRHS)
 
JPH_INLINE DVec3 (TypeArg inRHS)
 
JPH_INLINE DVec3 (double inX, double inY, double inZ)
 Create a vector from 3 components.
 
JPH_INLINE DVec3 (const Double3 &inV)
 Load 3 doubles from memory.
 
JPH_INLINE void StoreDouble3 (Double3 *outV) const
 Store 3 doubles to memory.
 
JPH_INLINE operator Vec3 () const
 Convert to float vector 3 rounding to nearest.
 
JPH_INLINE DVec3 PrepareRoundToZero () const
 Prepare to convert to float vector 3 rounding towards zero (returns DVec3 that can be converted to a Vec3 to get the rounding)
 
JPH_INLINE DVec3 PrepareRoundToInf () const
 Prepare to convert to float vector 3 rounding towards positive/negative inf (returns DVec3 that can be converted to a Vec3 to get the rounding)
 
JPH_INLINE Vec3 ToVec3RoundDown () const
 Convert to float vector 3 rounding down.
 
JPH_INLINE Vec3 ToVec3RoundUp () const
 Convert to float vector 3 rounding up.
 
JPH_INLINE int GetTrues () const
 Store if X is true in bit 0, Y in bit 1, Z in bit 2 and W in bit 3 (true is when highest bit of component is set)
 
JPH_INLINE bool TestAnyTrue () const
 Test if any of the components are true (true is when highest bit of component is set)
 
JPH_INLINE bool TestAllTrue () const
 Test if all components are true (true is when highest bit of component is set)
 
JPH_INLINE double GetX () const
 Get individual components.
 
JPH_INLINE double GetY () const
 
JPH_INLINE double GetZ () const
 
JPH_INLINE void SetX (double inX)
 Set individual components.
 
JPH_INLINE void SetY (double inY)
 
JPH_INLINE void SetZ (double inZ)
 
JPH_INLINE void Set (double inX, double inY, double inZ)
 Set all components.
 
JPH_INLINE double operator[] (uint inCoordinate) const
 Get double component by index.
 
JPH_INLINE void SetComponent (uint inCoordinate, double inValue)
 Set double component by index.
 
JPH_INLINE bool operator== (DVec3Arg inV2) const
 Comparison.
 
JPH_INLINE bool operator!= (DVec3Arg inV2) const
 
JPH_INLINE bool IsClose (DVec3Arg inV2, double inMaxDistSq=1.0e-24) const
 Test if two vectors are close.
 
JPH_INLINE bool IsNearZero (double inMaxDistSq=1.0e-24) const
 Test if vector is near zero.
 
JPH_INLINE bool IsNormalized (double inTolerance=1.0e-12) const
 Test if vector is normalized.
 
JPH_INLINE bool IsNaN () const
 Test if vector contains NaN elements.
 
JPH_INLINE DVec3 operator* (DVec3Arg inV2) const
 Multiply two double vectors (component wise)
 
JPH_INLINE DVec3 operator* (double inV2) const
 Multiply vector with double.
 
JPH_INLINE DVec3 operator/ (double inV2) const
 Divide vector by double.
 
JPH_INLINE DVec3operator*= (double inV2)
 Multiply vector with double.
 
JPH_INLINE DVec3operator*= (DVec3Arg inV2)
 Multiply vector with vector.
 
JPH_INLINE DVec3operator/= (double inV2)
 Divide vector by double.
 
JPH_INLINE DVec3 operator+ (Vec3Arg inV2) const
 Add two vectors (component wise)
 
JPH_INLINE DVec3 operator+ (DVec3Arg inV2) const
 Add two double vectors (component wise)
 
JPH_INLINE DVec3operator+= (Vec3Arg inV2)
 Add two vectors (component wise)
 
JPH_INLINE DVec3operator+= (DVec3Arg inV2)
 Add two double vectors (component wise)
 
JPH_INLINE DVec3 operator- () const
 Negate.
 
JPH_INLINE DVec3 operator- (Vec3Arg inV2) const
 Subtract two vectors (component wise)
 
JPH_INLINE DVec3 operator- (DVec3Arg inV2) const
 Subtract two double vectors (component wise)
 
JPH_INLINE DVec3operator-= (Vec3Arg inV2)
 Add two vectors (component wise)
 
JPH_INLINE DVec3operator-= (DVec3Arg inV2)
 Add two double vectors (component wise)
 
JPH_INLINE DVec3 operator/ (DVec3Arg inV2) const
 Divide (component wise)
 
JPH_INLINE DVec3 Abs () const
 Return the absolute value of each of the components.
 
JPH_INLINE DVec3 Reciprocal () const
 Reciprocal vector (1 / value) for each of the components.
 
JPH_INLINE DVec3 Cross (DVec3Arg inV2) const
 Cross product.
 
JPH_INLINE double Dot (DVec3Arg inV2) const
 Dot product.
 
JPH_INLINE double LengthSq () const
 Squared length of vector.
 
JPH_INLINE double Length () const
 Length of vector.
 
JPH_INLINE DVec3 Normalized () const
 Normalize vector.
 
JPH_INLINE DVec3 Sqrt () const
 Component wise square root.
 
JPH_INLINE DVec3 GetSign () const
 Get vector that contains the sign of each element (returns 1 if positive, -1 if negative)
 
JPH_INLINE void CheckW () const
 Internal helper function that checks that W is equal to Z, so e.g. dividing by it should not generate div by 0.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static JPH_INLINE DVec3 sZero ()
 Vector with all zeros.
 
static JPH_INLINE DVec3 sAxisX ()
 Vectors with the principal axis.
 
static JPH_INLINE DVec3 sAxisY ()
 
static JPH_INLINE DVec3 sAxisZ ()
 
static JPH_INLINE DVec3 sReplicate (double inV)
 Replicate inV across all components.
 
static JPH_INLINE DVec3 sNaN ()
 Vector with all NaN's.
 
static JPH_INLINE DVec3 sLoadDouble3Unsafe (const Double3 &inV)
 Load 3 doubles from memory (reads 64 bits extra which it doesn't use)
 
static JPH_INLINE DVec3 sMin (DVec3Arg inV1, DVec3Arg inV2)
 Return the minimum value of each of the components.
 
static JPH_INLINE DVec3 sMax (DVec3Arg inV1, DVec3Arg inV2)
 Return the maximum of each of the components.
 
static JPH_INLINE DVec3 sClamp (DVec3Arg inV, DVec3Arg inMin, DVec3Arg inMax)
 Clamp a vector between min and max (component wise)
 
static JPH_INLINE DVec3 sEquals (DVec3Arg inV1, DVec3Arg inV2)
 Equals (component wise)
 
static JPH_INLINE DVec3 sLess (DVec3Arg inV1, DVec3Arg inV2)
 Less than (component wise)
 
static JPH_INLINE DVec3 sLessOrEqual (DVec3Arg inV1, DVec3Arg inV2)
 Less than or equal (component wise)
 
static JPH_INLINE DVec3 sGreater (DVec3Arg inV1, DVec3Arg inV2)
 Greater than (component wise)
 
static JPH_INLINE DVec3 sGreaterOrEqual (DVec3Arg inV1, DVec3Arg inV2)
 Greater than or equal (component wise)
 
static JPH_INLINE DVec3 sFusedMultiplyAdd (DVec3Arg inMul1, DVec3Arg inMul2, DVec3Arg inAdd)
 Calculates inMul1 * inMul2 + inAdd.
 
static JPH_INLINE DVec3 sSelect (DVec3Arg inV1, DVec3Arg inV2, DVec3Arg inControl)
 Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.
 
static JPH_INLINE DVec3 sOr (DVec3Arg inV1, DVec3Arg inV2)
 Logical or (component wise)
 
static JPH_INLINE DVec3 sXor (DVec3Arg inV1, DVec3Arg inV2)
 Logical xor (component wise)
 
static JPH_INLINE DVec3 sAnd (DVec3Arg inV1, DVec3Arg inV2)
 Logical and (component wise)
 
static JPH_INLINE Type sFixW (TypeArg inValue)
 Internal helper function that ensures that the Z component is replicated to the W component to prevent divisions by zero.
 
+ + + + + + + + + +

+Public Attributes

union { 
 
   Type   mValue 
 
   double   mF64 [4] 
 
};  
 
+ + + + + + +

+Static Public Attributes

static const double cTrue = BitCast<double>(~uint64(0))
 Representations of true and false for boolean operations.
 
static const double cFalse = 0.0
 
+ + + + + + + +

+Friends

JPH_INLINE DVec3 operator* (double inV1, DVec3Arg inV2)
 Multiply vector with double.
 
ostream & operator<< (ostream &inStream, DVec3Arg inV)
 To String.
 
+

Detailed Description

+

3 component vector of doubles (stored as 4 vectors). Note that we keep the 4th component the same as the 3rd component to avoid divisions by zero when JPH_FLOATING_POINT_EXCEPTIONS_ENABLED defined

+

Member Typedef Documentation

+ +

◆ ArgType

+ +
+
+ + + + +
using DVec3::ArgType = DVec3Arg
+
+ +
+
+ +

◆ Type

+ +
+
+ + + + +
using DVec3::Type = { double mData[4]
+
+ +
+
+ +

◆ TypeArg

+ +
+
+ + + + +
using DVec3::TypeArg = const Type &
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ DVec3() [1/7]

+ +
+
+ + + + + +
+ + + + + + + +
DVec3::DVec3 ()
+
+default
+
+ +

Constructor.

+

Intentionally not initialized for performance reasons

+ +
+
+ +

◆ DVec3() [2/7]

+ +
+
+ + + + + +
+ + + + + + + + +
DVec3::DVec3 (const DVec3inRHS)
+
+default
+
+ +
+
+ +

◆ DVec3() [3/7]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE DVec3::DVec3 (Vec3Arg inRHS)
+
+explicit
+
+ +
+
+ +

◆ DVec3() [4/7]

+ +
+
+ + + + + +
+ + + + + + + + +
DVec3::DVec3 (Vec4Arg inRHS)
+
+explicit
+
+ +
+
+ +

◆ DVec3() [5/7]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE DVec3::DVec3 (TypeArg inRHS)
+
+inline
+
+ +
+
+ +

◆ DVec3() [6/7]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
DVec3::DVec3 (double inX,
double inY,
double inZ 
)
+
+ +

Create a vector from 3 components.

+ +
+
+ +

◆ DVec3() [7/7]

+ +
+
+ + + + + +
+ + + + + + + + +
DVec3::DVec3 (const Double3inV)
+
+explicit
+
+ +

Load 3 doubles from memory.

+ +
+
+

Member Function Documentation

+ +

◆ Abs()

+ +
+
+ + + + + + + +
DVec3 DVec3::Abs () const
+
+ +

Return the absolute value of each of the components.

+ +
+
+ +

◆ CheckW()

+ +
+
+ + + + + + + +
void DVec3::CheckW () const
+
+ +

Internal helper function that checks that W is equal to Z, so e.g. dividing by it should not generate div by 0.

+ +
+
+ +

◆ Cross()

+ +
+
+ + + + + + + + +
DVec3 DVec3::Cross (DVec3Arg inV2) const
+
+ +

Cross product.

+ +
+
+ +

◆ Dot()

+ +
+
+ + + + + + + + +
double DVec3::Dot (DVec3Arg inV2) const
+
+ +

Dot product.

+ +
+
+ +

◆ GetSign()

+ +
+
+ + + + + + + +
DVec3 DVec3::GetSign () const
+
+ +

Get vector that contains the sign of each element (returns 1 if positive, -1 if negative)

+ +
+
+ +

◆ GetTrues()

+ +
+
+ + + + + + + +
int DVec3::GetTrues () const
+
+ +

Store if X is true in bit 0, Y in bit 1, Z in bit 2 and W in bit 3 (true is when highest bit of component is set)

+ +
+
+ +

◆ GetX()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE double DVec3::GetX () const
+
+inline
+
+ +

Get individual components.

+ +
+
+ +

◆ GetY()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE double DVec3::GetY () const
+
+inline
+
+ +
+
+ +

◆ GetZ()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE double DVec3::GetZ () const
+
+inline
+
+ +
+
+ +

◆ IsClose()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool DVec3::IsClose (DVec3Arg inV2,
double inMaxDistSq = 1.0e-24 
) const
+
+ +

Test if two vectors are close.

+ +
+
+ +

◆ IsNaN()

+ +
+
+ + + + + + + +
bool DVec3::IsNaN () const
+
+ +

Test if vector contains NaN elements.

+ +
+
+ +

◆ IsNearZero()

+ +
+
+ + + + + + + + +
bool DVec3::IsNearZero (double inMaxDistSq = 1.0e-24) const
+
+ +

Test if vector is near zero.

+ +
+
+ +

◆ IsNormalized()

+ +
+
+ + + + + + + + +
bool DVec3::IsNormalized (double inTolerance = 1.0e-12) const
+
+ +

Test if vector is normalized.

+ +
+
+ +

◆ Length()

+ +
+
+ + + + + + + +
double DVec3::Length () const
+
+ +

Length of vector.

+ +
+
+ +

◆ LengthSq()

+ +
+
+ + + + + + + +
double DVec3::LengthSq () const
+
+ +

Squared length of vector.

+ +
+
+ +

◆ Normalized()

+ +
+
+ + + + + + + +
DVec3 DVec3::Normalized () const
+
+ +

Normalize vector.

+ +
+
+ +

◆ operator Vec3()

+ +
+
+ + + + + +
+ + + + + + + +
DVec3::operator Vec3 () const
+
+explicit
+
+ +

Convert to float vector 3 rounding to nearest.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE bool DVec3::operator!= (DVec3Arg inV2) const
+
+inline
+
+ +
+
+ +

◆ operator*() [1/2]

+ +
+
+ + + + + + + + +
DVec3 DVec3::operator* (double inV2) const
+
+ +

Multiply vector with double.

+ +
+
+ +

◆ operator*() [2/2]

+ +
+
+ + + + + + + + +
DVec3 DVec3::operator* (DVec3Arg inV2) const
+
+ +

Multiply two double vectors (component wise)

+ +
+
+ +

◆ operator*=() [1/2]

+ +
+
+ + + + + + + + +
DVec3 & DVec3::operator*= (double inV2)
+
+ +

Multiply vector with double.

+ +
+
+ +

◆ operator*=() [2/2]

+ +
+
+ + + + + + + + +
DVec3 & DVec3::operator*= (DVec3Arg inV2)
+
+ +

Multiply vector with vector.

+ +
+
+ +

◆ operator+() [1/2]

+ +
+
+ + + + + + + + +
DVec3 DVec3::operator+ (DVec3Arg inV2) const
+
+ +

Add two double vectors (component wise)

+ +
+
+ +

◆ operator+() [2/2]

+ +
+
+ + + + + + + + +
DVec3 DVec3::operator+ (Vec3Arg inV2) const
+
+ +

Add two vectors (component wise)

+ +
+
+ +

◆ operator+=() [1/2]

+ +
+
+ + + + + + + + +
DVec3 & DVec3::operator+= (DVec3Arg inV2)
+
+ +

Add two double vectors (component wise)

+ +
+
+ +

◆ operator+=() [2/2]

+ +
+
+ + + + + + + + +
DVec3 & DVec3::operator+= (Vec3Arg inV2)
+
+ +

Add two vectors (component wise)

+ +
+
+ +

◆ operator-() [1/3]

+ +
+
+ + + + + + + +
DVec3 DVec3::operator- () const
+
+ +

Negate.

+ +
+
+ +

◆ operator-() [2/3]

+ +
+
+ + + + + + + + +
DVec3 DVec3::operator- (DVec3Arg inV2) const
+
+ +

Subtract two double vectors (component wise)

+ +
+
+ +

◆ operator-() [3/3]

+ +
+
+ + + + + + + + +
DVec3 DVec3::operator- (Vec3Arg inV2) const
+
+ +

Subtract two vectors (component wise)

+ +
+
+ +

◆ operator-=() [1/2]

+ +
+
+ + + + + + + + +
DVec3 & DVec3::operator-= (DVec3Arg inV2)
+
+ +

Add two double vectors (component wise)

+ +
+
+ +

◆ operator-=() [2/2]

+ +
+
+ + + + + + + + +
DVec3 & DVec3::operator-= (Vec3Arg inV2)
+
+ +

Add two vectors (component wise)

+ +
+
+ +

◆ operator/() [1/2]

+ +
+
+ + + + + + + + +
DVec3 DVec3::operator/ (double inV2) const
+
+ +

Divide vector by double.

+ +
+
+ +

◆ operator/() [2/2]

+ +
+
+ + + + + + + + +
DVec3 DVec3::operator/ (DVec3Arg inV2) const
+
+ +

Divide (component wise)

+ +
+
+ +

◆ operator/=()

+ +
+
+ + + + + + + + +
DVec3 & DVec3::operator/= (double inV2)
+
+ +

Divide vector by double.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
DVec3 & DVec3::operator= (const DVec3inRHS)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool DVec3::operator== (DVec3Arg inV2) const
+
+ +

Comparison.

+ +
+
+ +

◆ operator[]()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE double DVec3::operator[] (uint inCoordinate) const
+
+inline
+
+ +

Get double component by index.

+ +
+
+ +

◆ PrepareRoundToInf()

+ +
+
+ + + + + + + +
DVec3 DVec3::PrepareRoundToInf () const
+
+ +

Prepare to convert to float vector 3 rounding towards positive/negative inf (returns DVec3 that can be converted to a Vec3 to get the rounding)

+ +
+
+ +

◆ PrepareRoundToZero()

+ +
+
+ + + + + + + +
DVec3 DVec3::PrepareRoundToZero () const
+
+ +

Prepare to convert to float vector 3 rounding towards zero (returns DVec3 that can be converted to a Vec3 to get the rounding)

+ +
+
+ +

◆ Reciprocal()

+ +
+
+ + + + + + + +
DVec3 DVec3::Reciprocal () const
+
+ +

Reciprocal vector (1 / value) for each of the components.

+ +
+
+ +

◆ sAnd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sAnd (DVec3Arg inV1,
DVec3Arg inV2 
)
+
+static
+
+ +

Logical and (component wise)

+ +
+
+ +

◆ sAxisX()

+ +
+
+ + + + + +
+ + + + + + + +
static JPH_INLINE DVec3 DVec3::sAxisX ()
+
+inlinestatic
+
+ +

Vectors with the principal axis.

+ +
+
+ +

◆ sAxisY()

+ +
+
+ + + + + +
+ + + + + + + +
static JPH_INLINE DVec3 DVec3::sAxisY ()
+
+inlinestatic
+
+ +
+
+ +

◆ sAxisZ()

+ +
+
+ + + + + +
+ + + + + + + +
static JPH_INLINE DVec3 DVec3::sAxisZ ()
+
+inlinestatic
+
+ +
+
+ +

◆ sClamp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sClamp (DVec3Arg inV,
DVec3Arg inMin,
DVec3Arg inMax 
)
+
+static
+
+ +

Clamp a vector between min and max (component wise)

+ +
+
+ +

◆ sEquals()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sEquals (DVec3Arg inV1,
DVec3Arg inV2 
)
+
+static
+
+ +

Equals (component wise)

+ +
+
+ +

◆ Set()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE void DVec3::Set (double inX,
double inY,
double inZ 
)
+
+inline
+
+ +

Set all components.

+ +
+
+ +

◆ SetComponent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE void DVec3::SetComponent (uint inCoordinate,
double inValue 
)
+
+inline
+
+ +

Set double component by index.

+ +
+
+ +

◆ SetX()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void DVec3::SetX (double inX)
+
+inline
+
+ +

Set individual components.

+ +
+
+ +

◆ SetY()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void DVec3::SetY (double inY)
+
+inline
+
+ +
+
+ +

◆ SetZ()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void DVec3::SetZ (double inZ)
+
+inline
+
+ +
+
+ +

◆ sFixW()

+ +
+
+ + + + + +
+ + + + + + + + +
DVec3::Type DVec3::sFixW (TypeArg inValue)
+
+static
+
+ +

Internal helper function that ensures that the Z component is replicated to the W component to prevent divisions by zero.

+ +
+
+ +

◆ sFusedMultiplyAdd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sFusedMultiplyAdd (DVec3Arg inMul1,
DVec3Arg inMul2,
DVec3Arg inAdd 
)
+
+static
+
+ +

Calculates inMul1 * inMul2 + inAdd.

+ +
+
+ +

◆ sGreater()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sGreater (DVec3Arg inV1,
DVec3Arg inV2 
)
+
+static
+
+ +

Greater than (component wise)

+ +
+
+ +

◆ sGreaterOrEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sGreaterOrEqual (DVec3Arg inV1,
DVec3Arg inV2 
)
+
+static
+
+ +

Greater than or equal (component wise)

+ +
+
+ +

◆ sLess()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sLess (DVec3Arg inV1,
DVec3Arg inV2 
)
+
+static
+
+ +

Less than (component wise)

+ +
+
+ +

◆ sLessOrEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sLessOrEqual (DVec3Arg inV1,
DVec3Arg inV2 
)
+
+static
+
+ +

Less than or equal (component wise)

+ +
+
+ +

◆ sLoadDouble3Unsafe()

+ +
+
+ + + + + +
+ + + + + + + + +
DVec3 DVec3::sLoadDouble3Unsafe (const Double3inV)
+
+static
+
+ +

Load 3 doubles from memory (reads 64 bits extra which it doesn't use)

+ +
+
+ +

◆ sMax()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sMax (DVec3Arg inV1,
DVec3Arg inV2 
)
+
+static
+
+ +

Return the maximum of each of the components.

+ +
+
+ +

◆ sMin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sMin (DVec3Arg inV1,
DVec3Arg inV2 
)
+
+static
+
+ +

Return the minimum value of each of the components.

+ +
+
+ +

◆ sNaN()

+ +
+
+ + + + + +
+ + + + + + + +
DVec3 DVec3::sNaN ()
+
+static
+
+ +

Vector with all NaN's.

+ +
+
+ +

◆ sOr()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sOr (DVec3Arg inV1,
DVec3Arg inV2 
)
+
+static
+
+ +

Logical or (component wise)

+ +
+
+ +

◆ Sqrt()

+ +
+
+ + + + + + + +
DVec3 DVec3::Sqrt () const
+
+ +

Component wise square root.

+ +
+
+ +

◆ sReplicate()

+ +
+
+ + + + + +
+ + + + + + + + +
DVec3 DVec3::sReplicate (double inV)
+
+static
+
+ +

Replicate inV across all components.

+ +
+
+ +

◆ sSelect()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sSelect (DVec3Arg inV1,
DVec3Arg inV2,
DVec3Arg inControl 
)
+
+static
+
+ +

Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.

+ +
+
+ +

◆ StoreDouble3()

+ +
+
+ + + + + + + + +
void DVec3::StoreDouble3 (Double3outV) const
+
+ +

Store 3 doubles to memory.

+ +
+
+ +

◆ sXor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DVec3 DVec3::sXor (DVec3Arg inV1,
DVec3Arg inV2 
)
+
+static
+
+ +

Logical xor (component wise)

+ +
+
+ +

◆ sZero()

+ +
+
+ + + + + +
+ + + + + + + +
DVec3 DVec3::sZero ()
+
+static
+
+ +

Vector with all zeros.

+ +
+
+ +

◆ TestAllTrue()

+ +
+
+ + + + + + + +
bool DVec3::TestAllTrue () const
+
+ +

Test if all components are true (true is when highest bit of component is set)

+ +
+
+ +

◆ TestAnyTrue()

+ +
+
+ + + + + + + +
bool DVec3::TestAnyTrue () const
+
+ +

Test if any of the components are true (true is when highest bit of component is set)

+ +
+
+ +

◆ ToVec3RoundDown()

+ +
+
+ + + + + + + +
Vec3 DVec3::ToVec3RoundDown () const
+
+ +

Convert to float vector 3 rounding down.

+ +
+
+ +

◆ ToVec3RoundUp()

+ +
+
+ + + + + + + +
Vec3 DVec3::ToVec3RoundUp () const
+
+ +

Convert to float vector 3 rounding up.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ operator*

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE DVec3 operator* (double inV1,
DVec3Arg inV2 
)
+
+friend
+
+ +

Multiply vector with double.

+ +
+
+ +

◆ operator<<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ostream & operator<< (ostream & inStream,
DVec3Arg inV 
)
+
+friend
+
+ +

To String.

+ +
+
+

Member Data Documentation

+ +

◆ [union]

+ +
+
+ + + + +
union { ... } DVec3
+
+ +
+
+ +

◆ cFalse

+ +
+
+ + + + + +
+ + + + +
const double DVec3::cFalse = 0.0
+
+inlinestatic
+
+ +
+
+ +

◆ cTrue

+ +
+
+ + + + + +
+ + + + +
const double DVec3::cTrue = BitCast<double>(~uint64(0))
+
+inlinestatic
+
+ +

Representations of true and false for boolean operations.

+ +
+
+ +

◆ mF64

+ +
+
+ + + + +
double DVec3::mF64[4]
+
+ +
+
+ +

◆ mValue

+ +
+
+ + + + +
Type DVec3::mValue
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_d_vec3.js b/class_d_vec3.js new file mode 100644 index 000000000..f814af79d --- /dev/null +++ b/class_d_vec3.js @@ -0,0 +1,68 @@ +var class_d_vec3 = +[ + [ "ArgType", "class_d_vec3.html#adb8357872b8bcac73ffb3c85bffa9f13", null ], + [ "Type", "class_d_vec3.html#a0a3ef3994c70fdfda40134a0a0c679cc", null ], + [ "TypeArg", "class_d_vec3.html#a534f0bd3a829454ca3f6c00d60068b27", null ], + [ "DVec3", "class_d_vec3.html#a8dee0ba62485a3b2fe924f1fa582c269", null ], + [ "DVec3", "class_d_vec3.html#ae4beefad0c345ffc3516f9f2dcb7abba", null ], + [ "DVec3", "class_d_vec3.html#aae9ec5d5349d1d8139cc4eb4943187f9", null ], + [ "DVec3", "class_d_vec3.html#aab5b5eca15f3f129ff6781cb0e2c27a7", null ], + [ "DVec3", "class_d_vec3.html#a286758dc45b39340db99639276d229a6", null ], + [ "DVec3", "class_d_vec3.html#ac908a3c045ea6d465602de318ccc2423", null ], + [ "DVec3", "class_d_vec3.html#a14bb3fa7ea76c4c32d2ff6066a8e0732", null ], + [ "Abs", "class_d_vec3.html#a1df9be6cc25048acd0c184f60535189b", null ], + [ "CheckW", "class_d_vec3.html#a95c9295adcf9cea2990be8d4c6b71891", null ], + [ "Cross", "class_d_vec3.html#adcd2e18b680e40bbd4ac71c6b0463bd3", null ], + [ "Dot", "class_d_vec3.html#aa0634b13605c6233650f7ccac571be75", null ], + [ "GetSign", "class_d_vec3.html#a298f2bc29cc4d55a9f9d30a9512cada3", null ], + [ "GetTrues", "class_d_vec3.html#a11971a6122b035009707efe51f5a1169", null ], + [ "GetX", "class_d_vec3.html#afb533f92f55c1e9dc3e7eece73e87dda", null ], + [ "GetY", "class_d_vec3.html#ad5aa83813d9db92bd0f04610ff6da1d4", null ], + [ "GetZ", "class_d_vec3.html#a829a6fd58f3d3bd2da8f4f56f09df728", null ], + [ "IsClose", "class_d_vec3.html#a4841bd14fcbce5a9a03edde10d9c6b30", null ], + [ "IsNaN", "class_d_vec3.html#a8215efb6695dc1ff3d1d3c6625bfb977", null ], + [ "IsNearZero", "class_d_vec3.html#aed8a5c005467d9089c5e2397529a1c53", null ], + [ "IsNormalized", "class_d_vec3.html#a4f71719e4f963c925c4981ea049c3f15", null ], + [ "Length", "class_d_vec3.html#a7d1feb75db248b954ef774ee33e46014", null ], + [ "LengthSq", "class_d_vec3.html#a95fe01b11cc216e8d718d1122392a018", null ], + [ "Normalized", "class_d_vec3.html#a98414033d7ebc2af3b1e950f378a77b7", null ], + [ "operator Vec3", "class_d_vec3.html#aea862e04fd4041a3d10035275fe995e0", null ], + [ "operator!=", "class_d_vec3.html#afcf4835749ee0cf9dffcb3d02822c198", null ], + [ "operator*", "class_d_vec3.html#af4b10fe57b6cb3e07ebd55c59054d213", null ], + [ "operator*", "class_d_vec3.html#a407ecd0e3be7e4f60cd02c4e47ef5adb", null ], + [ "operator*=", "class_d_vec3.html#a1dc42bd495d9c8b63a856a1d516e4365", null ], + [ "operator*=", "class_d_vec3.html#a9e5a82ae492dbea121d220ed21fbd503", null ], + [ "operator+", "class_d_vec3.html#ae931145b41d6b5db001e40bd014bb183", null ], + [ "operator+", "class_d_vec3.html#a40e55c7777c00682e04610c67101d659", null ], + [ "operator+=", "class_d_vec3.html#aebfafc1078630f38852907c0be0e4a76", null ], + [ "operator+=", "class_d_vec3.html#ac071add2c7d9a00bd3f4342198e5aca2", null ], + [ "operator-", "class_d_vec3.html#a7e0f61fe354f1886485f0814a8881cd0", null ], + [ "operator-", "class_d_vec3.html#a4a2fd5bf39a1cad1a63913ee8f54dc9c", null ], + [ "operator-", "class_d_vec3.html#a89b578e95bc0e6a1f97d28afc66256fd", null ], + [ "operator-=", "class_d_vec3.html#a9913eae45efd88f12df0d709d719e283", null ], + [ "operator-=", "class_d_vec3.html#adefdf792db358b7bc0f9259c3b685574", null ], + [ "operator/", "class_d_vec3.html#a98c87bc69aa4aaf5efff2f7371026213", null ], + [ "operator/", "class_d_vec3.html#a80844acdcc20d872097060f18a49dfae", null ], + [ "operator/=", "class_d_vec3.html#ac4311882ae51a22074b22caa012fb600", null ], + [ "operator=", "class_d_vec3.html#a90e7c899c1d5f2dddc3f332ba62c8de1", null ], + [ "operator==", "class_d_vec3.html#af9f3df26312b07df5e6ea770e250e5bf", null ], + [ "operator[]", "class_d_vec3.html#a6cdaec58545b032bd9c73e5da12cc50a", null ], + [ "PrepareRoundToInf", "class_d_vec3.html#ab9a393f086d70f1a5a42e20a28f6278b", null ], + [ "PrepareRoundToZero", "class_d_vec3.html#ae4f056668680a0741aeda962d0dc794c", null ], + [ "Reciprocal", "class_d_vec3.html#ae4f3e3231039ea4fb254150a32a2b679", null ], + [ "Set", "class_d_vec3.html#a6673601fc4d03869820519fa95cb5ed1", null ], + [ "SetComponent", "class_d_vec3.html#a5563e51b263bc4c08fcfbc2babd3a7a5", null ], + [ "SetX", "class_d_vec3.html#af2ffc0234f93a9ba535204d9b35ecb8f", null ], + [ "SetY", "class_d_vec3.html#a7a23eb2bdff0ab56356796bd6335d1a4", null ], + [ "SetZ", "class_d_vec3.html#ac180ba3a4c610e3ae77f3acfdff4139b", null ], + [ "Sqrt", "class_d_vec3.html#a286f436889f911c0fcf7f58692bb039d", null ], + [ "StoreDouble3", "class_d_vec3.html#a660cd286454202510b44fa18c2283d4d", null ], + [ "TestAllTrue", "class_d_vec3.html#a7c7ae9dc9ebecde0e653c872fd6aad58", null ], + [ "TestAnyTrue", "class_d_vec3.html#a0f06147fe78e9b54a1865579401fe97f", null ], + [ "ToVec3RoundDown", "class_d_vec3.html#a10a315fe487a61ec9fd93810a18477f5", null ], + [ "ToVec3RoundUp", "class_d_vec3.html#a825111b9afec36c79cfc63fa855f5cb1", null ], + [ "operator*", "class_d_vec3.html#a5eb373a1eec5f1e81d8523e6efeedcb3", null ], + [ "operator<<", "class_d_vec3.html#a68288c7a72386e912ef1372110da2b27", null ], + [ "mF64", "class_d_vec3.html#a02eda6f310f59ac7faf07b6b21de4fd5", null ], + [ "mValue", "class_d_vec3.html#a2b0ef89bdfb754e256a43a9505075060", null ] +]; \ No newline at end of file diff --git a/class_debug_renderer-members.html b/class_debug_renderer-members.html new file mode 100644 index 000000000..9a6a7d432 --- /dev/null +++ b/class_debug_renderer-members.html @@ -0,0 +1,165 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRenderer Member List
+
+
+ +

This is the complete list of members for DebugRenderer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Batch typedefDebugRenderer
CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount)=0DebugRendererpure virtual
CreateTriangleBatch(const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount)=0DebugRendererpure virtual
CreateTriangleBatch(const Array< Triangle > &inTriangles)DebugRendererinline
CreateTriangleBatch(const Array< Vertex > &inVertices, const Array< uint32 > &inIndices)DebugRendererinline
CreateTriangleBatch(const VertexList &inVertices, const IndexedTriangleNoMaterialList &inTriangles)DebugRenderer
CreateTriangleBatchForConvex(SupportFunction inGetSupport, int inLevel, AABox *outBounds=nullptr)DebugRenderer
CreateTriangleGeometryForConvex(SupportFunction inGetSupport)DebugRenderer
DebugRenderer()DebugRenderer
DrawArrow(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor, float inSize)DebugRenderer
DrawBox(const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawBox(RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawCapsule(RMat44Arg inMatrix, float inHalfHeightOfCylinder, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawCoordinateSystem(RMat44Arg inTransform, float inSize=1.0f)DebugRenderer
DrawCylinder(RMat44Arg inMatrix, float inHalfHeight, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawGeometry(RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)=0DebugRendererpure virtual
DrawGeometry(RMat44Arg inModelMatrix, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRendererinline
DrawLine(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor)=0DebugRendererpure virtual
DrawMarker(RVec3Arg inPosition, ColorArg inColor, float inSize)DebugRenderer
DrawOpenCone(RVec3Arg inTop, Vec3Arg inAxis, Vec3Arg inPerpendicular, float inHalfAngle, float inLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawPie(RVec3Arg inCenter, float inRadius, Vec3Arg inNormal, Vec3Arg inAxis, float inMinAngle, float inMaxAngle, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawPlane(RVec3Arg inPoint, Vec3Arg inNormal, ColorArg inColor, float inSize)DebugRenderer
DrawSphere(RVec3Arg inCenter, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawSwingConeLimits(RMat44Arg inMatrix, float inSwingYHalfAngle, float inSwingZHalfAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawSwingPyramidLimits(RMat44Arg inMatrix, float inMinSwingYAngle, float inMaxSwingYAngle, float inMinSwingZAngle, float inMaxSwingZAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawTaperedCylinder(RMat44Arg inMatrix, float inTop, float inBottom, float inTopRadius, float inBottomRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawText3D(RVec3Arg inPosition, const string_view &inString, ColorArg inColor=Color::sWhite, float inHeight=0.5f)=0DebugRendererpure virtual
DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::Off)=0DebugRendererpure virtual
DrawUnitSphere(RMat44Arg inMatrix, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawWireBox(const AABox &inBox, ColorArg inColor)DebugRenderer
DrawWireBox(const OrientedBox &inBox, ColorArg inColor)DebugRenderer
DrawWireBox(RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor)DebugRenderer
DrawWirePolygon(RMat44Arg inTransform, const VERTEX_ARRAY &inVertices, ColorArg inColor, float inArrowSize=0.0f)DebugRendererinline
DrawWireSphere(RVec3Arg inCenter, float inRadius, ColorArg inColor, int inLevel=3)DebugRenderer
DrawWireTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor)DebugRenderer
DrawWireUnitSphere(RMat44Arg inMatrix, ColorArg inColor, int inLevel=3)DebugRenderer
ECastShadow enum nameDebugRenderer
ECullMode enum nameDebugRenderer
EDrawMode enum nameDebugRenderer
GeometryRef typedefDebugRenderer
Initialize()DebugRendererprotected
NextFrame()DebugRenderer
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
sCalculateBounds(const Vertex *inVertices, int inVertexCount)DebugRendererstatic
sInstanceDebugRendererstatic
SupportFunction typedefDebugRenderer
~DebugRenderer()DebugRenderervirtual
+
+ + + + diff --git a/class_debug_renderer.html b/class_debug_renderer.html new file mode 100644 index 000000000..3111e763a --- /dev/null +++ b/class_debug_renderer.html @@ -0,0 +1,2233 @@ + + + + + + + +Jolt Physics: DebugRenderer Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DebugRenderer Class Referenceabstract
+
+
+ +

#include <DebugRenderer.h>

+
+Inheritance diagram for DebugRenderer:
+
+
+ + +NonCopyable +DebugRendererRecorder +DebugRendererSimple + +
+ + + + + + + + + + + + + + +

+Classes

class  Geometry
 A geometry primitive containing triangle batches for various lods. More...
 
class  LOD
 A single level of detail. More...
 
class  Triangle
 A single triangle. More...
 
class  Vertex
 Vertex format used by the triangle renderer. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Public Types

enum class  ECastShadow { On +, Off + }
 Enum that determines if a shadow should be cast or not. More...
 
enum class  EDrawMode { Solid +, Wireframe + }
 Determines how triangles are drawn. More...
 
enum class  ECullMode { CullBackFace +, CullFrontFace +, Off + }
 Determines which polygons are culled. More...
 
using Batch = Ref< RefTargetVirtual >
 Handle for a batch of triangles.
 
using GeometryRef = Ref< Geometry >
 Handle for a lodded triangle batch.
 
using SupportFunction = function< Vec3(Vec3Arg inDirection)>
 Create a primitive for a convex shape using its support function.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE DebugRenderer ()
 Constructor.
 
virtual ~DebugRenderer ()
 
void NextFrame ()
 Call once after frame is complete. Releases unused dynamically generated geometry assets.
 
virtual void DrawLine (RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor)=0
 Draw line.
 
void DrawWireBox (const AABox &inBox, ColorArg inColor)
 Draw wireframe box.
 
void DrawWireBox (const OrientedBox &inBox, ColorArg inColor)
 
void DrawWireBox (RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor)
 
void DrawMarker (RVec3Arg inPosition, ColorArg inColor, float inSize)
 Draw a marker on a position.
 
void DrawArrow (RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor, float inSize)
 Draw an arrow.
 
void DrawCoordinateSystem (RMat44Arg inTransform, float inSize=1.0f)
 Draw coordinate system (3 arrows, x = red, y = green, z = blue)
 
void DrawPlane (RVec3Arg inPoint, Vec3Arg inNormal, ColorArg inColor, float inSize)
 Draw a plane through inPoint with normal inNormal.
 
void DrawWireTriangle (RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor)
 Draw wireframe triangle.
 
template<class VERTEX_ARRAY >
void DrawWirePolygon (RMat44Arg inTransform, const VERTEX_ARRAY &inVertices, ColorArg inColor, float inArrowSize=0.0f)
 Draw a wireframe polygon.
 
void DrawWireSphere (RVec3Arg inCenter, float inRadius, ColorArg inColor, int inLevel=3)
 Draw wireframe sphere.
 
void DrawWireUnitSphere (RMat44Arg inMatrix, ColorArg inColor, int inLevel=3)
 
virtual void DrawTriangle (RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::Off)=0
 Draw a single back face culled triangle.
 
void DrawBox (const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 Draw a box.
 
void DrawBox (RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawSphere (RVec3Arg inCenter, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 Draw a sphere.
 
void DrawUnitSphere (RMat44Arg inMatrix, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawCapsule (RMat44Arg inMatrix, float inHalfHeightOfCylinder, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawCylinder (RMat44Arg inMatrix, float inHalfHeight, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawOpenCone (RVec3Arg inTop, Vec3Arg inAxis, Vec3Arg inPerpendicular, float inHalfAngle, float inLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawSwingConeLimits (RMat44Arg inMatrix, float inSwingYHalfAngle, float inSwingZHalfAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawSwingPyramidLimits (RMat44Arg inMatrix, float inMinSwingYAngle, float inMaxSwingYAngle, float inMinSwingZAngle, float inMaxSwingZAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawPie (RVec3Arg inCenter, float inRadius, Vec3Arg inNormal, Vec3Arg inAxis, float inMinAngle, float inMaxAngle, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawTaperedCylinder (RMat44Arg inMatrix, float inTop, float inBottom, float inTopRadius, float inBottomRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
virtual Batch CreateTriangleBatch (const Triangle *inTriangles, int inTriangleCount)=0
 Create a batch of triangles that can be drawn efficiently.
 
virtual Batch CreateTriangleBatch (const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount)=0
 
Batch CreateTriangleBatch (const Array< Triangle > &inTriangles)
 
Batch CreateTriangleBatch (const Array< Vertex > &inVertices, const Array< uint32 > &inIndices)
 
Batch CreateTriangleBatch (const VertexList &inVertices, const IndexedTriangleNoMaterialList &inTriangles)
 
Batch CreateTriangleBatchForConvex (SupportFunction inGetSupport, int inLevel, AABox *outBounds=nullptr)
 
GeometryRef CreateTriangleGeometryForConvex (SupportFunction inGetSupport)
 
virtual void DrawGeometry (RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)=0
 
void DrawGeometry (RMat44Arg inModelMatrix, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
virtual void DrawText3D (RVec3Arg inPosition, const string_view &inString, ColorArg inColor=Color::sWhite, float inHeight=0.5f)=0
 Draw text.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + +

+Static Public Member Functions

static AABox sCalculateBounds (const Vertex *inVertices, int inVertexCount)
 Calculate bounding box for a batch of triangles.
 
+ + + + +

+Static Public Attributes

static DebugRenderersInstance = nullptr
 Singleton instance.
 
+ + + + +

+Protected Member Functions

void Initialize ()
 Initialize the system, must be called from the constructor of the DebugRenderer implementation.
 
+

Detailed Description

+

Simple triangle renderer for debugging purposes.

+

Inherit from this class to provide your own implementation.

+

Implement the following virtual functions:

    +
  • DrawLine
  • +
  • DrawTriangle
  • +
  • DrawText3D
  • +
  • CreateTriangleBatch
  • +
  • DrawGeometry
  • +
+

Make sure you call Initialize() from the constructor of your implementation.

+

The CreateTriangleBatch is used to prepare a batch of triangles to be drawn by a single DrawGeometry call, which means that Jolt can render a complex scene much more efficiently than when each triangle in that scene would have been drawn through DrawTriangle.

+

Note that an implementation that implements CreateTriangleBatch and DrawGeometry is provided by DebugRendererSimple which can be used to start quickly.

+

Member Typedef Documentation

+ +

◆ Batch

+ +
+
+ +

Handle for a batch of triangles.

+ +
+
+ +

◆ GeometryRef

+ +
+
+ +

Handle for a lodded triangle batch.

+ +
+
+ +

◆ SupportFunction

+ +
+
+ + + + +
using DebugRenderer::SupportFunction = function<Vec3 (Vec3Arg inDirection)>
+
+ +

Create a primitive for a convex shape using its support function.

+ +
+
+

Member Enumeration Documentation

+ +

◆ ECastShadow

+ +
+
+ + + + + +
+ + + + +
enum class DebugRenderer::ECastShadow
+
+strong
+
+ +

Enum that determines if a shadow should be cast or not.

+ + + +
Enumerator
On 

This shape should cast a shadow.

+
Off 

This shape should not cast a shadow.

+
+ +
+
+ +

◆ ECullMode

+ +
+
+ + + + + +
+ + + + +
enum class DebugRenderer::ECullMode
+
+strong
+
+ +

Determines which polygons are culled.

+ + + + +
Enumerator
CullBackFace 

Don't draw backfacing polygons.

+
CullFrontFace 

Don't draw front facing polygons.

+
Off 

Don't do culling and draw both sides.

+
+ +
+
+ +

◆ EDrawMode

+ +
+
+ + + + + +
+ + + + +
enum class DebugRenderer::EDrawMode
+
+strong
+
+ +

Determines how triangles are drawn.

+ + + +
Enumerator
Solid 

Draw as a solid shape.

+
Wireframe 

Draw as wireframe.

+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ DebugRenderer()

+ +
+
+ + + + + + + +
DebugRenderer::DebugRenderer ()
+
+ +

Constructor.

+ +
+
+ +

◆ ~DebugRenderer()

+ +
+
+ + + + + +
+ + + + + + + +
DebugRenderer::~DebugRenderer ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ CreateTriangleBatch() [1/5]

+ +
+
+ + + + + +
+ + + + + + + + +
Batch DebugRenderer::CreateTriangleBatch (const Array< Triangle > & inTriangles)
+
+inline
+
+ +
+
+ +

◆ CreateTriangleBatch() [2/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Batch DebugRenderer::CreateTriangleBatch (const Array< Vertex > & inVertices,
const Array< uint32 > & inIndices 
)
+
+inline
+
+ +
+
+ +

◆ CreateTriangleBatch() [3/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Batch DebugRenderer::CreateTriangleBatch (const TriangleinTriangles,
int inTriangleCount 
)
+
+pure virtual
+
+ +

Create a batch of triangles that can be drawn efficiently.

+ +

Implemented in DebugRendererRecorder, and DebugRendererSimple.

+ +
+
+ +

◆ CreateTriangleBatch() [4/5]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual Batch DebugRenderer::CreateTriangleBatch (const VertexinVertices,
int inVertexCount,
const uint32inIndices,
int inIndexCount 
)
+
+pure virtual
+
+ +

Implemented in DebugRendererRecorder, and DebugRendererSimple.

+ +
+
+ +

◆ CreateTriangleBatch() [5/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
DebugRenderer::Batch DebugRenderer::CreateTriangleBatch (const VertexListinVertices,
const IndexedTriangleNoMaterialListinTriangles 
)
+
+ +
+
+ +

◆ CreateTriangleBatchForConvex()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
DebugRenderer::Batch DebugRenderer::CreateTriangleBatchForConvex (SupportFunction inGetSupport,
int inLevel,
AABoxoutBounds = nullptr 
)
+
+ +
+
+ +

◆ CreateTriangleGeometryForConvex()

+ +
+
+ + + + + + + + +
DebugRenderer::GeometryRef DebugRenderer::CreateTriangleGeometryForConvex (SupportFunction inGetSupport)
+
+ +
+
+ +

◆ DrawArrow()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawArrow (RVec3Arg inFrom,
RVec3Arg inTo,
ColorArg inColor,
float inSize 
)
+
+ +

Draw an arrow.

+ +
+
+ +

◆ DrawBox() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawBox (const AABoxinBox,
ColorArg inColor,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+ +

Draw a box.

+ +
+
+ +

◆ DrawBox() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawBox (RMat44Arg inMatrix,
const AABoxinBox,
ColorArg inColor,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+ +
+
+ +

◆ DrawCapsule()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawCapsule (RMat44Arg inMatrix,
float inHalfHeightOfCylinder,
float inRadius,
ColorArg inColor,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+

Draw a capsule with one half sphere at (0, -inHalfHeightOfCylinder, 0) and the other half sphere at (0, inHalfHeightOfCylinder, 0) and radius inRadius. The capsule will be transformed by inMatrix.

+ +
+
+ +

◆ DrawCoordinateSystem()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawCoordinateSystem (RMat44Arg inTransform,
float inSize = 1.0f 
)
+
+ +

Draw coordinate system (3 arrows, x = red, y = green, z = blue)

+ +
+
+ +

◆ DrawCylinder()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawCylinder (RMat44Arg inMatrix,
float inHalfHeight,
float inRadius,
ColorArg inColor,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+

Draw a cylinder with top (0, inHalfHeight, 0) and bottom (0, -inHalfHeight, 0) and radius inRadius. The cylinder will be transformed by inMatrix

+ +
+
+ +

◆ DrawGeometry() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawGeometry (RMat44Arg inModelMatrix,
ColorArg inModelColor,
const GeometryRefinGeometry,
ECullMode inCullMode = ECullMode::CullBackFace,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+inline
+
+ +
+
+ +

◆ DrawGeometry() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void DebugRenderer::DrawGeometry (RMat44Arg inModelMatrix,
const AABoxinWorldSpaceBounds,
float inLODScaleSq,
ColorArg inModelColor,
const GeometryRefinGeometry,
ECullMode inCullMode = ECullMode::CullBackFace,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+pure virtual
+
+

Draw some geometry

Parameters
+ + + + + + + + + +
inModelMatrixis the matrix that transforms the geometry to world space.
inWorldSpaceBoundsis the bounding box of the geometry after transforming it into world space.
inLODScaleSqis the squared scale of the model matrix, it is multiplied with the LOD distances in inGeometry to calculate the real LOD distance (so a number > 1 will force a higher LOD).
inModelColoris the color with which to multiply the vertex colors in inGeometry.
inGeometryThe geometry to draw.
inCullModedetermines which polygons are culled.
inCastShadowdetermines if this geometry should cast a shadow or not.
inDrawModedetermines if we draw the geometry solid or in wireframe.
+
+
+ +

Implemented in DebugRendererRecorder, and DebugRendererSimple.

+ +
+
+ +

◆ DrawLine()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void DebugRenderer::DrawLine (RVec3Arg inFrom,
RVec3Arg inTo,
ColorArg inColor 
)
+
+pure virtual
+
+ +

Draw line.

+ +

Implemented in DebugRendererRecorder.

+ +
+
+ +

◆ DrawMarker()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawMarker (RVec3Arg inPosition,
ColorArg inColor,
float inSize 
)
+
+ +

Draw a marker on a position.

+ +
+
+ +

◆ DrawOpenCone()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawOpenCone (RVec3Arg inTop,
Vec3Arg inAxis,
Vec3Arg inPerpendicular,
float inHalfAngle,
float inLength,
ColorArg inColor,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+

Draw a bottomless cone.

Parameters
+ + + + + + + + + +
inTopTop of cone, center of base is at inTop + inAxis.
inAxisHeight and direction of cone
inPerpendicularPerpendicular vector to inAxis.
inHalfAngleSpecifies the cone angle in radians (angle measured between inAxis and cone surface).
inLengthThe length of the cone.
inColorColor to use for drawing the cone.
inCastShadowdetermines if this geometry should cast a shadow or not.
inDrawModedetermines if we draw the geometry solid or in wireframe.
+
+
+ +
+
+ +

◆ DrawPie()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawPie (RVec3Arg inCenter,
float inRadius,
Vec3Arg inNormal,
Vec3Arg inAxis,
float inMinAngle,
float inMaxAngle,
ColorArg inColor,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+

Draw a pie (part of a circle).

Parameters
+ + + + + + + + + + +
inCenterThe center of the circle.
inRadiusRadius of the circle.
inNormalThe plane normal in which the pie resides.
inAxisThe axis that defines an angle of 0 radians.
inMinAngleThe pie will be drawn between [inMinAngle, inMaxAngle] (in radians).
inMaxAngleThe pie will be drawn between [inMinAngle, inMaxAngle] (in radians).
inColorColor to use for drawing the pie.
inCastShadowdetermines if this geometry should cast a shadow or not.
inDrawModedetermines if we draw the geometry solid or in wireframe.
+
+
+ +
+
+ +

◆ DrawPlane()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawPlane (RVec3Arg inPoint,
Vec3Arg inNormal,
ColorArg inColor,
float inSize 
)
+
+ +

Draw a plane through inPoint with normal inNormal.

+ +
+
+ +

◆ DrawSphere()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawSphere (RVec3Arg inCenter,
float inRadius,
ColorArg inColor,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+ +

Draw a sphere.

+ +
+
+ +

◆ DrawSwingConeLimits()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawSwingConeLimits (RMat44Arg inMatrix,
float inSwingYHalfAngle,
float inSwingZHalfAngle,
float inEdgeLength,
ColorArg inColor,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+

Draws cone rotation limits as used by the SwingTwistConstraintPart.

Parameters
+ + + + + + + + +
inMatrixMatrix that transforms from constraint space to world space
inSwingYHalfAngleSee SwingTwistConstraintPart
inSwingZHalfAngleSee SwingTwistConstraintPart
inEdgeLengthSize of the edge of the cone shape
inColorColor to use for drawing the cone.
inCastShadowdetermines if this geometry should cast a shadow or not.
inDrawModedetermines if we draw the geometry solid or in wireframe.
+
+
+ +
+
+ +

◆ DrawSwingPyramidLimits()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawSwingPyramidLimits (RMat44Arg inMatrix,
float inMinSwingYAngle,
float inMaxSwingYAngle,
float inMinSwingZAngle,
float inMaxSwingZAngle,
float inEdgeLength,
ColorArg inColor,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+

Draws rotation limits as used by the SwingTwistConstraintPart.

Parameters
+ + + + + + + + + + +
inMatrixMatrix that transforms from constraint space to world space
inMinSwingYAngleSee SwingTwistConstraintPart
inMaxSwingYAngleSee SwingTwistConstraintPart
inMinSwingZAngleSee SwingTwistConstraintPart
inMaxSwingZAngleSee SwingTwistConstraintPart
inEdgeLengthSize of the edge of the cone shape
inColorColor to use for drawing the cone.
inCastShadowdetermines if this geometry should cast a shadow or not.
inDrawModedetermines if we draw the geometry solid or in wireframe.
+
+
+ +
+
+ +

◆ DrawTaperedCylinder()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawTaperedCylinder (RMat44Arg inMatrix,
float inTop,
float inBottom,
float inTopRadius,
float inBottomRadius,
ColorArg inColor,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+

Draw a tapered cylinder

Parameters
+ + + + + + + + + +
inMatrixMatrix that transforms the cylinder to world space.
inTopTop of cylinder (along Y axis)
inBottomBottom of cylinder (along Y axis)
inTopRadiusRadius at the top
inBottomRadiusRadius at the bottom
inColorColor to use for drawing the pie.
inCastShadowdetermines if this geometry should cast a shadow or not.
inDrawModedetermines if we draw the geometry solid or in wireframe.
+
+
+ +
+
+ +

◆ DrawText3D()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void DebugRenderer::DrawText3D (RVec3Arg inPosition,
const string_view & inString,
ColorArg inColor = Color::sWhite,
float inHeight = 0.5f 
)
+
+pure virtual
+
+ +

Draw text.

+ +

Implemented in DebugRendererRecorder.

+ +
+
+ +

◆ DrawTriangle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void DebugRenderer::DrawTriangle (RVec3Arg inV1,
RVec3Arg inV2,
RVec3Arg inV3,
ColorArg inColor,
ECastShadow inCastShadow = ECastShadow::Off 
)
+
+pure virtual
+
+ +

Draw a single back face culled triangle.

+ +

Implemented in DebugRendererRecorder, and DebugRendererSimple.

+ +
+
+ +

◆ DrawUnitSphere()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawUnitSphere (RMat44Arg inMatrix,
ColorArg inColor,
ECastShadow inCastShadow = ECastShadow::On,
EDrawMode inDrawMode = EDrawMode::Solid 
)
+
+ +
+
+ +

◆ DrawWireBox() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawWireBox (const AABoxinBox,
ColorArg inColor 
)
+
+ +

Draw wireframe box.

+ +
+
+ +

◆ DrawWireBox() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawWireBox (const OrientedBoxinBox,
ColorArg inColor 
)
+
+ +
+
+ +

◆ DrawWireBox() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawWireBox (RMat44Arg inMatrix,
const AABoxinBox,
ColorArg inColor 
)
+
+ +
+
+ +

◆ DrawWirePolygon()

+ +
+
+
+template<class VERTEX_ARRAY >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawWirePolygon (RMat44Arg inTransform,
const VERTEX_ARRAY & inVertices,
ColorArg inColor,
float inArrowSize = 0.0f 
)
+
+inline
+
+ +

Draw a wireframe polygon.

+ +
+
+ +

◆ DrawWireSphere()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawWireSphere (RVec3Arg inCenter,
float inRadius,
ColorArg inColor,
int inLevel = 3 
)
+
+ +

Draw wireframe sphere.

+ +
+
+ +

◆ DrawWireTriangle()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawWireTriangle (RVec3Arg inV1,
RVec3Arg inV2,
RVec3Arg inV3,
ColorArg inColor 
)
+
+ +

Draw wireframe triangle.

+ +
+
+ +

◆ DrawWireUnitSphere()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRenderer::DrawWireUnitSphere (RMat44Arg inMatrix,
ColorArg inColor,
int inLevel = 3 
)
+
+ +
+
+ +

◆ Initialize()

+ +
+
+ + + + + +
+ + + + + + + +
void DebugRenderer::Initialize ()
+
+protected
+
+ +

Initialize the system, must be called from the constructor of the DebugRenderer implementation.

+ +
+
+ +

◆ NextFrame()

+ +
+
+ + + + + + + +
void DebugRenderer::NextFrame ()
+
+ +

Call once after frame is complete. Releases unused dynamically generated geometry assets.

+ +
+
+ +

◆ sCalculateBounds()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox DebugRenderer::sCalculateBounds (const VertexinVertices,
int inVertexCount 
)
+
+static
+
+ +

Calculate bounding box for a batch of triangles.

+ +
+
+

Member Data Documentation

+ +

◆ sInstance

+ +
+
+ + + + + +
+ + + + +
JPH_NAMESPACE_BEGIN DebugRenderer * DebugRenderer::sInstance = nullptr
+
+static
+
+ +

Singleton instance.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_debug_renderer.js b/class_debug_renderer.js new file mode 100644 index 000000000..1026b3d2b --- /dev/null +++ b/class_debug_renderer.js @@ -0,0 +1,61 @@ +var class_debug_renderer = +[ + [ "Geometry", "class_debug_renderer_1_1_geometry.html", "class_debug_renderer_1_1_geometry" ], + [ "LOD", "class_debug_renderer_1_1_l_o_d.html", "class_debug_renderer_1_1_l_o_d" ], + [ "Triangle", "class_debug_renderer_1_1_triangle.html", "class_debug_renderer_1_1_triangle" ], + [ "Vertex", "class_debug_renderer_1_1_vertex.html", "class_debug_renderer_1_1_vertex" ], + [ "Batch", "class_debug_renderer.html#a13e2a97f3432cf0ab57473c688d65a1c", null ], + [ "GeometryRef", "class_debug_renderer.html#a14f985628f2a9b8fe574ba2ba6e2c1bb", null ], + [ "SupportFunction", "class_debug_renderer.html#af1cf6a05ac6c0387b26aebe24fe0a0d9", null ], + [ "ECastShadow", "class_debug_renderer.html#aa24dcdedf792593f83eb1091d7e456b9", [ + [ "On", "class_debug_renderer.html#aa24dcdedf792593f83eb1091d7e456b9a521c36a31c2762741cf0f8890cbe05e3", null ], + [ "Off", "class_debug_renderer.html#aa24dcdedf792593f83eb1091d7e456b9ad15305d7a4e34e02489c74a5ef542f36", null ] + ] ], + [ "ECullMode", "class_debug_renderer.html#a54c5367f9b1f976cfe292dfa9ad2160a", [ + [ "CullBackFace", "class_debug_renderer.html#a54c5367f9b1f976cfe292dfa9ad2160aa770a11f4b59edd066dda0effd9752ce5", null ], + [ "CullFrontFace", "class_debug_renderer.html#a54c5367f9b1f976cfe292dfa9ad2160aac69988cb34d8fbd7f5678a95ac79e425", null ], + [ "Off", "class_debug_renderer.html#a54c5367f9b1f976cfe292dfa9ad2160aad15305d7a4e34e02489c74a5ef542f36", null ] + ] ], + [ "EDrawMode", "class_debug_renderer.html#ab9951f7e2a6dd10b4e8f3b40f01bba32", [ + [ "Solid", "class_debug_renderer.html#ab9951f7e2a6dd10b4e8f3b40f01bba32ae41480b6bbfbf7407974a88d3d34f4fa", null ], + [ "Wireframe", "class_debug_renderer.html#ab9951f7e2a6dd10b4e8f3b40f01bba32a33e42d0f3b166a4c405127e4412fbef2", null ] + ] ], + [ "DebugRenderer", "class_debug_renderer.html#a6e3bda3b06b01b6f8e4257ef02cb435f", null ], + [ "~DebugRenderer", "class_debug_renderer.html#a4374b7c1ce3ee04f86f6f910c82aff09", null ], + [ "CreateTriangleBatch", "class_debug_renderer.html#ab85edd30ad2f32371df796353b6ebdca", null ], + [ "CreateTriangleBatch", "class_debug_renderer.html#ac3bd1caeea7a7e42085927d729336d19", null ], + [ "CreateTriangleBatch", "class_debug_renderer.html#a9537e347fe16d3d0c55e8409299a1979", null ], + [ "CreateTriangleBatch", "class_debug_renderer.html#a8dcd601e14892e4d00a6fbb9c6781fc7", null ], + [ "CreateTriangleBatch", "class_debug_renderer.html#aaff229ea353f72b38b70771612de7ae2", null ], + [ "CreateTriangleBatchForConvex", "class_debug_renderer.html#a0bad1eb221a0bb765405b76a69de51d7", null ], + [ "CreateTriangleGeometryForConvex", "class_debug_renderer.html#a10539e59c9323113348a85744d1ca054", null ], + [ "DrawArrow", "class_debug_renderer.html#ad3208b1f011a70927082d734591c0e83", null ], + [ "DrawBox", "class_debug_renderer.html#a47b78c771e85a3d8931b911417737591", null ], + [ "DrawBox", "class_debug_renderer.html#acdb1f479a56884e8744f5f08104f556b", null ], + [ "DrawCapsule", "class_debug_renderer.html#a124eec53b294b9d6e2ef72cea8fb760f", null ], + [ "DrawCoordinateSystem", "class_debug_renderer.html#a7d64d230d835d560b34282b5402ae05e", null ], + [ "DrawCylinder", "class_debug_renderer.html#adf3acc6633c87d5dc00a4db27646586f", null ], + [ "DrawGeometry", "class_debug_renderer.html#ac548f9103671727c4f750f4d21fa0972", null ], + [ "DrawGeometry", "class_debug_renderer.html#a9542e23f59dcb2dbe19d5cc870e1efcf", null ], + [ "DrawLine", "class_debug_renderer.html#acea9470f13a1d50b677e2aaaeb9eeaed", null ], + [ "DrawMarker", "class_debug_renderer.html#a146eec1ac4bb44258fc748e66cd154ba", null ], + [ "DrawOpenCone", "class_debug_renderer.html#ac2121da7fd301d74c83d4dc3291101e6", null ], + [ "DrawPie", "class_debug_renderer.html#a9bb950c4d28eb5130df08b3050dd5db8", null ], + [ "DrawPlane", "class_debug_renderer.html#a1478418243e18bf7ce002e35ff6706b7", null ], + [ "DrawSphere", "class_debug_renderer.html#a582b69ddbe6fe2481716729b6330422d", null ], + [ "DrawSwingConeLimits", "class_debug_renderer.html#ae7f33744765068114b22875784511e6d", null ], + [ "DrawSwingPyramidLimits", "class_debug_renderer.html#ae56eecfee8d7539571edfe613c00b159", null ], + [ "DrawTaperedCylinder", "class_debug_renderer.html#a4ded1b55c66d08e643043680145d0dc8", null ], + [ "DrawText3D", "class_debug_renderer.html#a0caa614c01a9879eed46e55755884c75", null ], + [ "DrawTriangle", "class_debug_renderer.html#afc6b62590e5a26de8cbd98a29bf8b1a3", null ], + [ "DrawUnitSphere", "class_debug_renderer.html#af23920b42208da32b57c2de2c45de78f", null ], + [ "DrawWireBox", "class_debug_renderer.html#ab53b82d3cf818165e290e21691271de0", null ], + [ "DrawWireBox", "class_debug_renderer.html#abbb732acdeee7ae2bb597e3b7abe01de", null ], + [ "DrawWireBox", "class_debug_renderer.html#a00aa83bcc27424dde91b6ee53962cd41", null ], + [ "DrawWirePolygon", "class_debug_renderer.html#aca22a303524616a95259d7ab3df65eb9", null ], + [ "DrawWireSphere", "class_debug_renderer.html#aa2e758e772dd9b51ea778cb74265090e", null ], + [ "DrawWireTriangle", "class_debug_renderer.html#a54813e4e95f78cdfc22d938ba15bcb8d", null ], + [ "DrawWireUnitSphere", "class_debug_renderer.html#a08387fe20ef6b38d160f97ec902072ce", null ], + [ "Initialize", "class_debug_renderer.html#a1ca028ffb521cc342e2d34cfc03f5d46", null ], + [ "NextFrame", "class_debug_renderer.html#acc84d230ba90d923f47a651d53ce2489", null ] +]; \ No newline at end of file diff --git a/class_debug_renderer.png b/class_debug_renderer.png new file mode 100644 index 000000000..1eb7cbde1 Binary files /dev/null and b/class_debug_renderer.png differ diff --git a/class_debug_renderer_1_1_geometry-members.html b/class_debug_renderer_1_1_geometry-members.html new file mode 100644 index 000000000..18a383e98 --- /dev/null +++ b/class_debug_renderer_1_1_geometry-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRenderer::Geometry Member List
+
+
+ +

This is the complete list of members for DebugRenderer::Geometry, including all inherited members.

+ + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Geometry >inline
cEmbeddedRefTarget< Geometry >protectedstatic
Geometry(const AABox &inBounds)DebugRenderer::Geometryinline
Geometry(const Batch &inBatch, const AABox &inBounds)DebugRenderer::Geometryinline
GetLOD(Vec3Arg inCameraPosition, const AABox &inWorldSpaceBounds, float inLODScaleSq) constDebugRenderer::Geometryinline
GetRefCount() constRefTarget< Geometry >inline
mBoundsDebugRenderer::Geometry
mLODsDebugRenderer::Geometry
mRefCountRefTarget< Geometry >mutableprotected
operator=(const RefTarget &)RefTarget< Geometry >inline
RefTarget()=defaultRefTarget< Geometry >inline
RefTarget(const RefTarget &)RefTarget< Geometry >inline
Release() constRefTarget< Geometry >inline
SetEmbedded() constRefTarget< Geometry >inline
sInternalGetRefCountOffset()RefTarget< Geometry >inlinestatic
~RefTarget()RefTarget< Geometry >inline
+
+ + + + diff --git a/class_debug_renderer_1_1_geometry.html b/class_debug_renderer_1_1_geometry.html new file mode 100644 index 000000000..76905ca31 --- /dev/null +++ b/class_debug_renderer_1_1_geometry.html @@ -0,0 +1,344 @@ + + + + + + + +Jolt Physics: DebugRenderer::Geometry Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DebugRenderer::Geometry Class Reference
+
+
+ +

A geometry primitive containing triangle batches for various lods. + More...

+ +

#include <DebugRenderer.h>

+
+Inheritance diagram for DebugRenderer::Geometry:
+
+
+ + +RefTarget< Geometry > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Geometry (const AABox &inBounds)
 Constructor.
 
 Geometry (const Batch &inBatch, const AABox &inBounds)
 
const LODGetLOD (Vec3Arg inCameraPosition, const AABox &inWorldSpaceBounds, float inLODScaleSq) const
 
- Public Member Functions inherited from RefTarget< Geometry >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + +

+Public Attributes

Array< LODmLODs
 All level of details for this mesh.
 
AABox mBounds
 Bounding box that encapsulates all LODs.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Geometry >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< Geometry >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Geometry >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A geometry primitive containing triangle batches for various lods.

+

Constructor & Destructor Documentation

+ +

◆ Geometry() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE DebugRenderer::Geometry::Geometry (const AABoxinBounds)
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ Geometry() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DebugRenderer::Geometry::Geometry (const BatchinBatch,
const AABoxinBounds 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetLOD()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
const LOD & DebugRenderer::Geometry::GetLOD (Vec3Arg inCameraPosition,
const AABoxinWorldSpaceBounds,
float inLODScaleSq 
) const
+
+inline
+
+

Determine which LOD to render

Parameters
+ + + + +
inCameraPositionCurrent position of the camera
inWorldSpaceBoundsWorld space bounds for this geometry (transform mBounds by model space matrix)
inLODScaleSqis the squared scale of the model matrix, it is multiplied with the LOD distances in inGeometry to calculate the real LOD distance (so a number > 1 will force a higher LOD).
+
+
+
Returns
The selected LOD.
+ +
+
+

Member Data Documentation

+ +

◆ mBounds

+ +
+
+ + + + +
AABox DebugRenderer::Geometry::mBounds
+
+ +

Bounding box that encapsulates all LODs.

+ +
+
+ +

◆ mLODs

+ +
+
+ + + + +
Array<LOD> DebugRenderer::Geometry::mLODs
+
+ +

All level of details for this mesh.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_debug_renderer_1_1_geometry.js b/class_debug_renderer_1_1_geometry.js new file mode 100644 index 000000000..2f3ccf35e --- /dev/null +++ b/class_debug_renderer_1_1_geometry.js @@ -0,0 +1,8 @@ +var class_debug_renderer_1_1_geometry = +[ + [ "Geometry", "class_debug_renderer_1_1_geometry.html#ab8b592353d4dc5893906a109bfaf7a5c", null ], + [ "Geometry", "class_debug_renderer_1_1_geometry.html#adbeec8d400a76ce450aa03945fb3e68f", null ], + [ "GetLOD", "class_debug_renderer_1_1_geometry.html#a1e5eb47480d97915873308ba4fa97ed9", null ], + [ "mBounds", "class_debug_renderer_1_1_geometry.html#a165db66b8c806916e93a5dbdb149f051", null ], + [ "mLODs", "class_debug_renderer_1_1_geometry.html#a63ed4efbd477ef96056db9fb3b146fb6", null ] +]; \ No newline at end of file diff --git a/class_debug_renderer_1_1_geometry.png b/class_debug_renderer_1_1_geometry.png new file mode 100644 index 000000000..484f49600 Binary files /dev/null and b/class_debug_renderer_1_1_geometry.png differ diff --git a/class_debug_renderer_1_1_l_o_d-members.html b/class_debug_renderer_1_1_l_o_d-members.html new file mode 100644 index 000000000..7e45244ed --- /dev/null +++ b/class_debug_renderer_1_1_l_o_d-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRenderer::LOD Member List
+
+
+ +

This is the complete list of members for DebugRenderer::LOD, including all inherited members.

+ + + +
mDistanceDebugRenderer::LOD
mTriangleBatchDebugRenderer::LOD
+
+ + + + diff --git a/class_debug_renderer_1_1_l_o_d.html b/class_debug_renderer_1_1_l_o_d.html new file mode 100644 index 000000000..d2ad989ad --- /dev/null +++ b/class_debug_renderer_1_1_l_o_d.html @@ -0,0 +1,164 @@ + + + + + + + +Jolt Physics: DebugRenderer::LOD Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DebugRenderer::LOD Class Reference
+
+
+ +

A single level of detail. + More...

+ +

#include <DebugRenderer.h>

+ + + + + + +

+Public Attributes

Batch mTriangleBatch
 
float mDistance
 
+

Detailed Description

+

A single level of detail.

+

Member Data Documentation

+ +

◆ mDistance

+ +
+
+ + + + +
float DebugRenderer::LOD::mDistance
+
+ +
+
+ +

◆ mTriangleBatch

+ +
+
+ + + + +
Batch DebugRenderer::LOD::mTriangleBatch
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_debug_renderer_1_1_l_o_d.js b/class_debug_renderer_1_1_l_o_d.js new file mode 100644 index 000000000..fa44d19e0 --- /dev/null +++ b/class_debug_renderer_1_1_l_o_d.js @@ -0,0 +1,5 @@ +var class_debug_renderer_1_1_l_o_d = +[ + [ "mDistance", "class_debug_renderer_1_1_l_o_d.html#a492ece9b61c9ddb9fbee6e52a95e37a1", null ], + [ "mTriangleBatch", "class_debug_renderer_1_1_l_o_d.html#a1f3a7c8804db5cbb7ea672f971f675eb", null ] +]; \ No newline at end of file diff --git a/class_debug_renderer_1_1_triangle-members.html b/class_debug_renderer_1_1_triangle-members.html new file mode 100644 index 000000000..befd99349 --- /dev/null +++ b/class_debug_renderer_1_1_triangle-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRenderer::Triangle Member List
+
+
+ +

This is the complete list of members for DebugRenderer::Triangle, including all inherited members.

+ + + + + +
mVDebugRenderer::Triangle
Triangle()=defaultDebugRenderer::Triangle
Triangle(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, ColorArg inColor)DebugRenderer::Triangle
Triangle(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, ColorArg inColor, Vec3Arg inUVOrigin, Vec3Arg inUVDirection)DebugRenderer::Triangle
+
+ + + + diff --git a/class_debug_renderer_1_1_triangle.html b/class_debug_renderer_1_1_triangle.html new file mode 100644 index 000000000..97580da0d --- /dev/null +++ b/class_debug_renderer_1_1_triangle.html @@ -0,0 +1,277 @@ + + + + + + + +Jolt Physics: DebugRenderer::Triangle Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DebugRenderer::Triangle Class Reference
+
+
+ +

A single triangle. + More...

+ +

#include <DebugRenderer.h>

+ + + + + + + + +

+Public Member Functions

 Triangle ()=default
 
 Triangle (Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, ColorArg inColor)
 
 Triangle (Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, ColorArg inColor, Vec3Arg inUVOrigin, Vec3Arg inUVDirection)
 
+ + + +

+Public Attributes

Vertex mV [3]
 
+

Detailed Description

+

A single triangle.

+

Constructor & Destructor Documentation

+ +

◆ Triangle() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
DebugRenderer::Triangle::Triangle ()
+
+default
+
+ +
+
+ +

◆ Triangle() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DebugRenderer::Triangle::Triangle (Vec3Arg inV1,
Vec3Arg inV2,
Vec3Arg inV3,
ColorArg inColor 
)
+
+ +
+
+ +

◆ Triangle() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DebugRenderer::Triangle::Triangle (Vec3Arg inV1,
Vec3Arg inV2,
Vec3Arg inV3,
ColorArg inColor,
Vec3Arg inUVOrigin,
Vec3Arg inUVDirection 
)
+
+ +
+
+

Member Data Documentation

+ +

◆ mV

+ +
+
+ + + + +
Vertex DebugRenderer::Triangle::mV[3]
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_debug_renderer_1_1_triangle.js b/class_debug_renderer_1_1_triangle.js new file mode 100644 index 000000000..a13118167 --- /dev/null +++ b/class_debug_renderer_1_1_triangle.js @@ -0,0 +1,7 @@ +var class_debug_renderer_1_1_triangle = +[ + [ "Triangle", "class_debug_renderer_1_1_triangle.html#abb7298cfaf2d3cd85d5407969b626c36", null ], + [ "Triangle", "class_debug_renderer_1_1_triangle.html#ae6c997de70442ae4c2940f1a04a0fb9d", null ], + [ "Triangle", "class_debug_renderer_1_1_triangle.html#a6cf43c4aef393778a403a3f5659e3a97", null ], + [ "mV", "class_debug_renderer_1_1_triangle.html#a0f8cb8accc7c2d34c0ea04b41c39e2b7", null ] +]; \ No newline at end of file diff --git a/class_debug_renderer_1_1_vertex-members.html b/class_debug_renderer_1_1_vertex-members.html new file mode 100644 index 000000000..eb17f9d5b --- /dev/null +++ b/class_debug_renderer_1_1_vertex-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRenderer::Vertex Member List
+
+
+ +

This is the complete list of members for DebugRenderer::Vertex, including all inherited members.

+ + + + + +
mColorDebugRenderer::Vertex
mNormalDebugRenderer::Vertex
mPositionDebugRenderer::Vertex
mUVDebugRenderer::Vertex
+
+ + + + diff --git a/class_debug_renderer_1_1_vertex.html b/class_debug_renderer_1_1_vertex.html new file mode 100644 index 000000000..b49c9d8ad --- /dev/null +++ b/class_debug_renderer_1_1_vertex.html @@ -0,0 +1,196 @@ + + + + + + + +Jolt Physics: DebugRenderer::Vertex Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DebugRenderer::Vertex Class Reference
+
+
+ +

Vertex format used by the triangle renderer. + More...

+ +

#include <DebugRenderer.h>

+ + + + + + + + + + +

+Public Attributes

Float3 mPosition
 
Float3 mNormal
 
Float2 mUV
 
Color mColor
 
+

Detailed Description

+

Vertex format used by the triangle renderer.

+

Member Data Documentation

+ +

◆ mColor

+ +
+
+ + + + +
Color DebugRenderer::Vertex::mColor
+
+ +
+
+ +

◆ mNormal

+ +
+
+ + + + +
Float3 DebugRenderer::Vertex::mNormal
+
+ +
+
+ +

◆ mPosition

+ +
+
+ + + + +
Float3 DebugRenderer::Vertex::mPosition
+
+ +
+
+ +

◆ mUV

+ +
+
+ + + + +
Float2 DebugRenderer::Vertex::mUV
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_debug_renderer_1_1_vertex.js b/class_debug_renderer_1_1_vertex.js new file mode 100644 index 000000000..8a3640881 --- /dev/null +++ b/class_debug_renderer_1_1_vertex.js @@ -0,0 +1,7 @@ +var class_debug_renderer_1_1_vertex = +[ + [ "mColor", "class_debug_renderer_1_1_vertex.html#a8f0f691b5c2f1caeca86c04eeb13c3bc", null ], + [ "mNormal", "class_debug_renderer_1_1_vertex.html#acb594645b03b2ee03c8551fca61fddaa", null ], + [ "mPosition", "class_debug_renderer_1_1_vertex.html#a4cb40671496d950e8fc832f97771793b", null ], + [ "mUV", "class_debug_renderer_1_1_vertex.html#a8dd2a6d51a9370b7c7a2a09d482f1414", null ] +]; \ No newline at end of file diff --git a/class_debug_renderer_playback-members.html b/class_debug_renderer_playback-members.html new file mode 100644 index 000000000..3509dd44d --- /dev/null +++ b/class_debug_renderer_playback-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRendererPlayback Member List
+
+
+ +

This is the complete list of members for DebugRendererPlayback, including all inherited members.

+ + + + + +
DebugRendererPlayback(DebugRenderer &inRenderer)DebugRendererPlaybackinline
DrawFrame(uint inFrameNumber) constDebugRendererPlayback
GetNumFrames() constDebugRendererPlaybackinline
Parse(StreamIn &inStream)DebugRendererPlayback
+
+ + + + diff --git a/class_debug_renderer_playback.html b/class_debug_renderer_playback.html new file mode 100644 index 000000000..6e48dac78 --- /dev/null +++ b/class_debug_renderer_playback.html @@ -0,0 +1,241 @@ + + + + + + + +Jolt Physics: DebugRendererPlayback Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DebugRendererPlayback Class Reference
+
+
+ +

Class that can read a recorded stream from DebugRendererRecorder and plays it back trough a DebugRenderer. + More...

+ +

#include <DebugRendererPlayback.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

 DebugRendererPlayback (DebugRenderer &inRenderer)
 Constructor.
 
void Parse (StreamIn &inStream)
 Parse a stream of frames.
 
uint GetNumFrames () const
 Get the number of parsed frames.
 
void DrawFrame (uint inFrameNumber) const
 Draw a frame.
 
+

Detailed Description

+

Class that can read a recorded stream from DebugRendererRecorder and plays it back trough a DebugRenderer.

+

Constructor & Destructor Documentation

+ +

◆ DebugRendererPlayback()

+ +
+
+ + + + + +
+ + + + + + + + +
DebugRendererPlayback::DebugRendererPlayback (DebugRendererinRenderer)
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ DrawFrame()

+ +
+
+ + + + + + + + +
void DebugRendererPlayback::DrawFrame (uint inFrameNumber) const
+
+ +

Draw a frame.

+ +
+
+ +

◆ GetNumFrames()

+ +
+
+ + + + + +
+ + + + + + + +
uint DebugRendererPlayback::GetNumFrames () const
+
+inline
+
+ +

Get the number of parsed frames.

+ +
+
+ +

◆ Parse()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN void DebugRendererPlayback::Parse (StreamIninStream)
+
+ +

Parse a stream of frames.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_debug_renderer_playback.js b/class_debug_renderer_playback.js new file mode 100644 index 000000000..f8a41eebd --- /dev/null +++ b/class_debug_renderer_playback.js @@ -0,0 +1,7 @@ +var class_debug_renderer_playback = +[ + [ "DebugRendererPlayback", "class_debug_renderer_playback.html#a33c8fd5a6bbdf90c9710f5aa625ac6a4", null ], + [ "DrawFrame", "class_debug_renderer_playback.html#a7253cd6ee053738333ffada2a28c5d70", null ], + [ "GetNumFrames", "class_debug_renderer_playback.html#afd7aac14421906d07df334e1d3a8f31c", null ], + [ "Parse", "class_debug_renderer_playback.html#a3de254c045bb6f7f102480666f0a3046", null ] +]; \ No newline at end of file diff --git a/class_debug_renderer_recorder-members.html b/class_debug_renderer_recorder-members.html new file mode 100644 index 000000000..5c8be6de4 --- /dev/null +++ b/class_debug_renderer_recorder-members.html @@ -0,0 +1,168 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRendererRecorder Member List
+
+
+ +

This is the complete list of members for DebugRendererRecorder, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Batch typedefDebugRenderer
CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount) overrideDebugRendererRecordervirtual
CreateTriangleBatch(const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount) overrideDebugRendererRecordervirtual
DebugRenderer::CreateTriangleBatch(const Array< Triangle > &inTriangles)DebugRendererinline
DebugRenderer::CreateTriangleBatch(const Array< Vertex > &inVertices, const Array< uint32 > &inIndices)DebugRendererinline
DebugRenderer::CreateTriangleBatch(const VertexList &inVertices, const IndexedTriangleNoMaterialList &inTriangles)DebugRenderer
CreateTriangleBatchForConvex(SupportFunction inGetSupport, int inLevel, AABox *outBounds=nullptr)DebugRenderer
CreateTriangleGeometryForConvex(SupportFunction inGetSupport)DebugRenderer
DebugRenderer()DebugRenderer
DebugRendererRecorder(StreamOut &inStream)DebugRendererRecorderinline
DrawArrow(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor, float inSize)DebugRenderer
DrawBox(const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawBox(RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawCapsule(RMat44Arg inMatrix, float inHalfHeightOfCylinder, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawCoordinateSystem(RMat44Arg inTransform, float inSize=1.0f)DebugRenderer
DrawCylinder(RMat44Arg inMatrix, float inHalfHeight, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawGeometry(RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode, ECastShadow inCastShadow, EDrawMode inDrawMode) overrideDebugRendererRecordervirtual
DebugRenderer::DrawGeometry(RMat44Arg inModelMatrix, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRendererinline
DrawLine(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor) overrideDebugRendererRecordervirtual
DrawMarker(RVec3Arg inPosition, ColorArg inColor, float inSize)DebugRenderer
DrawOpenCone(RVec3Arg inTop, Vec3Arg inAxis, Vec3Arg inPerpendicular, float inHalfAngle, float inLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawPie(RVec3Arg inCenter, float inRadius, Vec3Arg inNormal, Vec3Arg inAxis, float inMinAngle, float inMaxAngle, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawPlane(RVec3Arg inPoint, Vec3Arg inNormal, ColorArg inColor, float inSize)DebugRenderer
DrawSphere(RVec3Arg inCenter, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawSwingConeLimits(RMat44Arg inMatrix, float inSwingYHalfAngle, float inSwingZHalfAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawSwingPyramidLimits(RMat44Arg inMatrix, float inMinSwingYAngle, float inMaxSwingYAngle, float inMinSwingZAngle, float inMaxSwingZAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawTaperedCylinder(RMat44Arg inMatrix, float inTop, float inBottom, float inTopRadius, float inBottomRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawText3D(RVec3Arg inPosition, const string_view &inString, ColorArg inColor, float inHeight) overrideDebugRendererRecordervirtual
DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow) overrideDebugRendererRecordervirtual
DrawUnitSphere(RMat44Arg inMatrix, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawWireBox(const AABox &inBox, ColorArg inColor)DebugRenderer
DrawWireBox(const OrientedBox &inBox, ColorArg inColor)DebugRenderer
DrawWireBox(RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor)DebugRenderer
DrawWirePolygon(RMat44Arg inTransform, const VERTEX_ARRAY &inVertices, ColorArg inColor, float inArrowSize=0.0f)DebugRendererinline
DrawWireSphere(RVec3Arg inCenter, float inRadius, ColorArg inColor, int inLevel=3)DebugRenderer
DrawWireTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor)DebugRenderer
DrawWireUnitSphere(RMat44Arg inMatrix, ColorArg inColor, int inLevel=3)DebugRenderer
ECastShadow enum nameDebugRenderer
ECommand enum nameDebugRendererRecorder
ECullMode enum nameDebugRenderer
EDrawMode enum nameDebugRenderer
EndFrame()DebugRendererRecorder
GeometryRef typedefDebugRenderer
Initialize()DebugRendererprotected
NextFrame()DebugRenderer
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
sCalculateBounds(const Vertex *inVertices, int inVertexCount)DebugRendererstatic
sInstanceDebugRendererstatic
SupportFunction typedefDebugRenderer
~DebugRenderer()DebugRenderervirtual
+
+ + + + diff --git a/class_debug_renderer_recorder.html b/class_debug_renderer_recorder.html new file mode 100644 index 000000000..980b3a4d1 --- /dev/null +++ b/class_debug_renderer_recorder.html @@ -0,0 +1,731 @@ + + + + + + + +Jolt Physics: DebugRendererRecorder Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DebugRendererRecorder Class Referencefinal
+
+
+ +

Implementation of DebugRenderer that records the API invocations to be played back later. + More...

+ +

#include <DebugRendererRecorder.h>

+
+Inheritance diagram for DebugRendererRecorder:
+
+
+ + +DebugRenderer +NonCopyable + +
+ + + + + + + + + + + + + + + + + +

+Classes

struct  Frame
 All information for a single frame. More...
 
struct  GeometryBlob
 Holds a single geometry draw call. More...
 
struct  LineBlob
 Holds a single line segment. More...
 
struct  TextBlob
 Holds a single text entry. More...
 
struct  TriangleBlob
 Holds a single triangle. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

enum class  ECommand : uint8 { CreateBatch +, CreateBatchIndexed +, CreateGeometry +, EndFrame + }
 Control commands written into the stream. More...
 
- Public Types inherited from DebugRenderer
enum class  ECastShadow { On +, Off + }
 Enum that determines if a shadow should be cast or not. More...
 
enum class  EDrawMode { Solid +, Wireframe + }
 Determines how triangles are drawn. More...
 
enum class  ECullMode { CullBackFace +, CullFrontFace +, Off + }
 Determines which polygons are culled. More...
 
using Batch = Ref< RefTargetVirtual >
 Handle for a batch of triangles.
 
using GeometryRef = Ref< Geometry >
 Handle for a lodded triangle batch.
 
using SupportFunction = function< Vec3(Vec3Arg inDirection)>
 Create a primitive for a convex shape using its support function.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE DebugRendererRecorder (StreamOut &inStream)
 Constructor.
 
virtual void DrawLine (RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor) override
 Implementation of DebugRenderer interface.
 
virtual void DrawTriangle (RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow) override
 Draw a single back face culled triangle.
 
virtual Batch CreateTriangleBatch (const Triangle *inTriangles, int inTriangleCount) override
 Create a batch of triangles that can be drawn efficiently.
 
virtual Batch CreateTriangleBatch (const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount) override
 
virtual void DrawGeometry (RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode, ECastShadow inCastShadow, EDrawMode inDrawMode) override
 
virtual void DrawText3D (RVec3Arg inPosition, const string_view &inString, ColorArg inColor, float inHeight) override
 Draw text.
 
void EndFrame ()
 Mark the end of a frame.
 
- Public Member Functions inherited from DebugRenderer
JPH_OVERRIDE_NEW_DELETE DebugRenderer ()
 Constructor.
 
virtual ~DebugRenderer ()
 
void NextFrame ()
 Call once after frame is complete. Releases unused dynamically generated geometry assets.
 
void DrawWireBox (const AABox &inBox, ColorArg inColor)
 Draw wireframe box.
 
void DrawWireBox (const OrientedBox &inBox, ColorArg inColor)
 
void DrawWireBox (RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor)
 
void DrawMarker (RVec3Arg inPosition, ColorArg inColor, float inSize)
 Draw a marker on a position.
 
void DrawArrow (RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor, float inSize)
 Draw an arrow.
 
void DrawCoordinateSystem (RMat44Arg inTransform, float inSize=1.0f)
 Draw coordinate system (3 arrows, x = red, y = green, z = blue)
 
void DrawPlane (RVec3Arg inPoint, Vec3Arg inNormal, ColorArg inColor, float inSize)
 Draw a plane through inPoint with normal inNormal.
 
void DrawWireTriangle (RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor)
 Draw wireframe triangle.
 
template<class VERTEX_ARRAY >
void DrawWirePolygon (RMat44Arg inTransform, const VERTEX_ARRAY &inVertices, ColorArg inColor, float inArrowSize=0.0f)
 Draw a wireframe polygon.
 
void DrawWireSphere (RVec3Arg inCenter, float inRadius, ColorArg inColor, int inLevel=3)
 Draw wireframe sphere.
 
void DrawWireUnitSphere (RMat44Arg inMatrix, ColorArg inColor, int inLevel=3)
 
void DrawBox (const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 Draw a box.
 
void DrawBox (RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawSphere (RVec3Arg inCenter, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 Draw a sphere.
 
void DrawUnitSphere (RMat44Arg inMatrix, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawCapsule (RMat44Arg inMatrix, float inHalfHeightOfCylinder, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawCylinder (RMat44Arg inMatrix, float inHalfHeight, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawOpenCone (RVec3Arg inTop, Vec3Arg inAxis, Vec3Arg inPerpendicular, float inHalfAngle, float inLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawSwingConeLimits (RMat44Arg inMatrix, float inSwingYHalfAngle, float inSwingZHalfAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawSwingPyramidLimits (RMat44Arg inMatrix, float inMinSwingYAngle, float inMaxSwingYAngle, float inMinSwingZAngle, float inMaxSwingZAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawPie (RVec3Arg inCenter, float inRadius, Vec3Arg inNormal, Vec3Arg inAxis, float inMinAngle, float inMaxAngle, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawTaperedCylinder (RMat44Arg inMatrix, float inTop, float inBottom, float inTopRadius, float inBottomRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
Batch CreateTriangleBatch (const Array< Triangle > &inTriangles)
 
Batch CreateTriangleBatch (const Array< Vertex > &inVertices, const Array< uint32 > &inIndices)
 
Batch CreateTriangleBatch (const VertexList &inVertices, const IndexedTriangleNoMaterialList &inTriangles)
 
Batch CreateTriangleBatchForConvex (SupportFunction inGetSupport, int inLevel, AABox *outBounds=nullptr)
 
GeometryRef CreateTriangleGeometryForConvex (SupportFunction inGetSupport)
 
void DrawGeometry (RMat44Arg inModelMatrix, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from DebugRenderer
static AABox sCalculateBounds (const Vertex *inVertices, int inVertexCount)
 Calculate bounding box for a batch of triangles.
 
- Static Public Attributes inherited from DebugRenderer
static DebugRenderersInstance = nullptr
 Singleton instance.
 
- Protected Member Functions inherited from DebugRenderer
void Initialize ()
 Initialize the system, must be called from the constructor of the DebugRenderer implementation.
 
+

Detailed Description

+

Implementation of DebugRenderer that records the API invocations to be played back later.

+

Member Enumeration Documentation

+ +

◆ ECommand

+ +
+
+ + + + + +
+ + + + +
enum class DebugRendererRecorder::ECommand : uint8
+
+strong
+
+ +

Control commands written into the stream.

+ + + + + +
Enumerator
CreateBatch 
CreateBatchIndexed 
CreateGeometry 
EndFrame 
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ DebugRendererRecorder()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE DebugRendererRecorder::DebugRendererRecorder (StreamOutinStream)
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ CreateTriangleBatch() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DebugRenderer::Batch DebugRendererRecorder::CreateTriangleBatch (const TriangleinTriangles,
int inTriangleCount 
)
+
+overridevirtual
+
+ +

Create a batch of triangles that can be drawn efficiently.

+ +

Implements DebugRenderer.

+ +
+
+ +

◆ CreateTriangleBatch() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DebugRenderer::Batch DebugRendererRecorder::CreateTriangleBatch (const VertexinVertices,
int inVertexCount,
const uint32inIndices,
int inIndexCount 
)
+
+overridevirtual
+
+ +

Implements DebugRenderer.

+ +
+
+ +

◆ DrawGeometry()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRendererRecorder::DrawGeometry (RMat44Arg inModelMatrix,
const AABoxinWorldSpaceBounds,
float inLODScaleSq,
ColorArg inModelColor,
const GeometryRefinGeometry,
ECullMode inCullMode,
ECastShadow inCastShadow,
EDrawMode inDrawMode 
)
+
+overridevirtual
+
+

Draw some geometry

Parameters
+ + + + + + + + + +
inModelMatrixis the matrix that transforms the geometry to world space.
inWorldSpaceBoundsis the bounding box of the geometry after transforming it into world space.
inLODScaleSqis the squared scale of the model matrix, it is multiplied with the LOD distances in inGeometry to calculate the real LOD distance (so a number > 1 will force a higher LOD).
inModelColoris the color with which to multiply the vertex colors in inGeometry.
inGeometryThe geometry to draw.
inCullModedetermines which polygons are culled.
inCastShadowdetermines if this geometry should cast a shadow or not.
inDrawModedetermines if we draw the geometry solid or in wireframe.
+
+
+ +

Implements DebugRenderer.

+ +
+
+ +

◆ DrawLine()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void DebugRendererRecorder::DrawLine (RVec3Arg inFrom,
RVec3Arg inTo,
ColorArg inColor 
)
+
+overridevirtual
+
+ +

Implementation of DebugRenderer interface.

+ +

Implements DebugRenderer.

+ +
+
+ +

◆ DrawText3D()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRendererRecorder::DrawText3D (RVec3Arg inPosition,
const string_view & inString,
ColorArg inColor,
float inHeight 
)
+
+overridevirtual
+
+ +

Draw text.

+ +

Implements DebugRenderer.

+ +
+
+ +

◆ DrawTriangle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRendererRecorder::DrawTriangle (RVec3Arg inV1,
RVec3Arg inV2,
RVec3Arg inV3,
ColorArg inColor,
ECastShadow inCastShadow 
)
+
+overridevirtual
+
+ +

Draw a single back face culled triangle.

+ +

Implements DebugRenderer.

+ +
+
+ +

◆ EndFrame()

+ +
+
+ + + + + + + +
void DebugRendererRecorder::EndFrame ()
+
+ +

Mark the end of a frame.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_debug_renderer_recorder.js b/class_debug_renderer_recorder.js new file mode 100644 index 000000000..864ebdc24 --- /dev/null +++ b/class_debug_renderer_recorder.js @@ -0,0 +1,22 @@ +var class_debug_renderer_recorder = +[ + [ "Frame", "struct_debug_renderer_recorder_1_1_frame.html", "struct_debug_renderer_recorder_1_1_frame" ], + [ "GeometryBlob", "struct_debug_renderer_recorder_1_1_geometry_blob.html", "struct_debug_renderer_recorder_1_1_geometry_blob" ], + [ "LineBlob", "struct_debug_renderer_recorder_1_1_line_blob.html", "struct_debug_renderer_recorder_1_1_line_blob" ], + [ "TextBlob", "struct_debug_renderer_recorder_1_1_text_blob.html", "struct_debug_renderer_recorder_1_1_text_blob" ], + [ "TriangleBlob", "struct_debug_renderer_recorder_1_1_triangle_blob.html", "struct_debug_renderer_recorder_1_1_triangle_blob" ], + [ "ECommand", "class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3e", [ + [ "CreateBatch", "class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3eab6c90a015802ce8024f5e6ce5b5f87d1", null ], + [ "CreateBatchIndexed", "class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3ea6e08a23df5a6495af4cfb4d55f9d83c4", null ], + [ "CreateGeometry", "class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3ea5df7e8a3875ba02c58449385c4caa956", null ], + [ "EndFrame", "class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3ea6c1645a468ccfce0975fc95587b97adf", null ] + ] ], + [ "DebugRendererRecorder", "class_debug_renderer_recorder.html#ae016c0c6e1951199b26be47d0e58e2e4", null ], + [ "CreateTriangleBatch", "class_debug_renderer_recorder.html#ad67f25e318187c3098011124ea5875a2", null ], + [ "CreateTriangleBatch", "class_debug_renderer_recorder.html#afa424a96fbae0b56050b27dffa2c4b02", null ], + [ "DrawGeometry", "class_debug_renderer_recorder.html#af551847dd6e112a52b7830acb7f639c6", null ], + [ "DrawLine", "class_debug_renderer_recorder.html#adac560af23095581dd49d670b7d608f5", null ], + [ "DrawText3D", "class_debug_renderer_recorder.html#a2956edbe34418b7546424c68e9dc6132", null ], + [ "DrawTriangle", "class_debug_renderer_recorder.html#a4b0a137f2f193e8ce732be37ff906fab", null ], + [ "EndFrame", "class_debug_renderer_recorder.html#a1beee4021111b00774e99dd134716b44", null ] +]; \ No newline at end of file diff --git a/class_debug_renderer_recorder.png b/class_debug_renderer_recorder.png new file mode 100644 index 000000000..50fa69a96 Binary files /dev/null and b/class_debug_renderer_recorder.png differ diff --git a/class_debug_renderer_simple-members.html b/class_debug_renderer_simple-members.html new file mode 100644 index 000000000..f3dc10100 --- /dev/null +++ b/class_debug_renderer_simple-members.html @@ -0,0 +1,167 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DebugRendererSimple Member List
+
+
+ +

This is the complete list of members for DebugRendererSimple, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Batch typedefDebugRenderer
CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount) overrideDebugRendererSimpleprotectedvirtual
CreateTriangleBatch(const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount) overrideDebugRendererSimpleprotectedvirtual
DebugRenderer::CreateTriangleBatch(const Array< Triangle > &inTriangles)DebugRendererinline
DebugRenderer::CreateTriangleBatch(const Array< Vertex > &inVertices, const Array< uint32 > &inIndices)DebugRendererinline
DebugRenderer::CreateTriangleBatch(const VertexList &inVertices, const IndexedTriangleNoMaterialList &inTriangles)DebugRenderer
CreateTriangleBatchForConvex(SupportFunction inGetSupport, int inLevel, AABox *outBounds=nullptr)DebugRenderer
CreateTriangleGeometryForConvex(SupportFunction inGetSupport)DebugRenderer
DebugRenderer()DebugRenderer
DebugRendererSimple()DebugRendererSimple
DrawArrow(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor, float inSize)DebugRenderer
DrawBox(const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawBox(RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawCapsule(RMat44Arg inMatrix, float inHalfHeightOfCylinder, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawCoordinateSystem(RMat44Arg inTransform, float inSize=1.0f)DebugRenderer
DrawCylinder(RMat44Arg inMatrix, float inHalfHeight, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawGeometry(RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode, ECastShadow inCastShadow, EDrawMode inDrawMode) overrideDebugRendererSimpleprotectedvirtual
DebugRenderer::DrawGeometry(RMat44Arg inModelMatrix, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRendererinline
DrawLine(RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor)=0DebugRendererpure virtual
DrawMarker(RVec3Arg inPosition, ColorArg inColor, float inSize)DebugRenderer
DrawOpenCone(RVec3Arg inTop, Vec3Arg inAxis, Vec3Arg inPerpendicular, float inHalfAngle, float inLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawPie(RVec3Arg inCenter, float inRadius, Vec3Arg inNormal, Vec3Arg inAxis, float inMinAngle, float inMaxAngle, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawPlane(RVec3Arg inPoint, Vec3Arg inNormal, ColorArg inColor, float inSize)DebugRenderer
DrawSphere(RVec3Arg inCenter, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawSwingConeLimits(RMat44Arg inMatrix, float inSwingYHalfAngle, float inSwingZHalfAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawSwingPyramidLimits(RMat44Arg inMatrix, float inMinSwingYAngle, float inMaxSwingYAngle, float inMinSwingZAngle, float inMaxSwingZAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawTaperedCylinder(RMat44Arg inMatrix, float inTop, float inBottom, float inTopRadius, float inBottomRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawText3D(RVec3Arg inPosition, const string_view &inString, ColorArg inColor=Color::sWhite, float inHeight=0.5f)=0DebugRendererpure virtual
DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow) overrideDebugRendererSimpleinlinevirtual
DrawUnitSphere(RMat44Arg inMatrix, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)DebugRenderer
DrawWireBox(const AABox &inBox, ColorArg inColor)DebugRenderer
DrawWireBox(const OrientedBox &inBox, ColorArg inColor)DebugRenderer
DrawWireBox(RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor)DebugRenderer
DrawWirePolygon(RMat44Arg inTransform, const VERTEX_ARRAY &inVertices, ColorArg inColor, float inArrowSize=0.0f)DebugRendererinline
DrawWireSphere(RVec3Arg inCenter, float inRadius, ColorArg inColor, int inLevel=3)DebugRenderer
DrawWireTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor)DebugRenderer
DrawWireUnitSphere(RMat44Arg inMatrix, ColorArg inColor, int inLevel=3)DebugRenderer
ECastShadow enum nameDebugRenderer
ECullMode enum nameDebugRenderer
EDrawMode enum nameDebugRenderer
GeometryRef typedefDebugRenderer
Initialize()DebugRendererprotected
NextFrame()DebugRenderer
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
sCalculateBounds(const Vertex *inVertices, int inVertexCount)DebugRendererstatic
SetCameraPos(RVec3Arg inCameraPos)DebugRendererSimpleinline
sInstanceDebugRendererstatic
SupportFunction typedefDebugRenderer
~DebugRenderer()DebugRenderervirtual
+
+ + + + diff --git a/class_debug_renderer_simple.html b/class_debug_renderer_simple.html new file mode 100644 index 000000000..7dc1f9263 --- /dev/null +++ b/class_debug_renderer_simple.html @@ -0,0 +1,590 @@ + + + + + + + +Jolt Physics: DebugRendererSimple Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DebugRendererSimple Class Reference
+
+
+ +

#include <DebugRendererSimple.h>

+
+Inheritance diagram for DebugRendererSimple:
+
+
+ + +DebugRenderer +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE DebugRendererSimple ()
 Constructor.
 
void SetCameraPos (RVec3Arg inCameraPos)
 
virtual void DrawTriangle (RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow) override
 Fallback implementation that uses DrawLine to draw a triangle (override this if you have a version that renders solid triangles)
 
- Public Member Functions inherited from DebugRenderer
JPH_OVERRIDE_NEW_DELETE DebugRenderer ()
 Constructor.
 
virtual ~DebugRenderer ()
 
void NextFrame ()
 Call once after frame is complete. Releases unused dynamically generated geometry assets.
 
virtual void DrawLine (RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor)=0
 Draw line.
 
void DrawWireBox (const AABox &inBox, ColorArg inColor)
 Draw wireframe box.
 
void DrawWireBox (const OrientedBox &inBox, ColorArg inColor)
 
void DrawWireBox (RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor)
 
void DrawMarker (RVec3Arg inPosition, ColorArg inColor, float inSize)
 Draw a marker on a position.
 
void DrawArrow (RVec3Arg inFrom, RVec3Arg inTo, ColorArg inColor, float inSize)
 Draw an arrow.
 
void DrawCoordinateSystem (RMat44Arg inTransform, float inSize=1.0f)
 Draw coordinate system (3 arrows, x = red, y = green, z = blue)
 
void DrawPlane (RVec3Arg inPoint, Vec3Arg inNormal, ColorArg inColor, float inSize)
 Draw a plane through inPoint with normal inNormal.
 
void DrawWireTriangle (RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor)
 Draw wireframe triangle.
 
template<class VERTEX_ARRAY >
void DrawWirePolygon (RMat44Arg inTransform, const VERTEX_ARRAY &inVertices, ColorArg inColor, float inArrowSize=0.0f)
 Draw a wireframe polygon.
 
void DrawWireSphere (RVec3Arg inCenter, float inRadius, ColorArg inColor, int inLevel=3)
 Draw wireframe sphere.
 
void DrawWireUnitSphere (RMat44Arg inMatrix, ColorArg inColor, int inLevel=3)
 
void DrawBox (const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 Draw a box.
 
void DrawBox (RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawSphere (RVec3Arg inCenter, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 Draw a sphere.
 
void DrawUnitSphere (RMat44Arg inMatrix, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawCapsule (RMat44Arg inMatrix, float inHalfHeightOfCylinder, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawCylinder (RMat44Arg inMatrix, float inHalfHeight, float inRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawOpenCone (RVec3Arg inTop, Vec3Arg inAxis, Vec3Arg inPerpendicular, float inHalfAngle, float inLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawSwingConeLimits (RMat44Arg inMatrix, float inSwingYHalfAngle, float inSwingZHalfAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawSwingPyramidLimits (RMat44Arg inMatrix, float inMinSwingYAngle, float inMaxSwingYAngle, float inMinSwingZAngle, float inMaxSwingZAngle, float inEdgeLength, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawPie (RVec3Arg inCenter, float inRadius, Vec3Arg inNormal, Vec3Arg inAxis, float inMinAngle, float inMaxAngle, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
void DrawTaperedCylinder (RMat44Arg inMatrix, float inTop, float inBottom, float inTopRadius, float inBottomRadius, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
Batch CreateTriangleBatch (const Array< Triangle > &inTriangles)
 
Batch CreateTriangleBatch (const Array< Vertex > &inVertices, const Array< uint32 > &inIndices)
 
Batch CreateTriangleBatch (const VertexList &inVertices, const IndexedTriangleNoMaterialList &inTriangles)
 
Batch CreateTriangleBatchForConvex (SupportFunction inGetSupport, int inLevel, AABox *outBounds=nullptr)
 
GeometryRef CreateTriangleGeometryForConvex (SupportFunction inGetSupport)
 
void DrawGeometry (RMat44Arg inModelMatrix, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)
 
virtual void DrawText3D (RVec3Arg inPosition, const string_view &inString, ColorArg inColor=Color::sWhite, float inHeight=0.5f)=0
 Draw text.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + +

+Protected Member Functions

virtual Batch CreateTriangleBatch (const Triangle *inTriangles, int inTriangleCount) override
 Implementation of DebugRenderer interface.
 
virtual Batch CreateTriangleBatch (const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount) override
 
virtual void DrawGeometry (RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode, ECastShadow inCastShadow, EDrawMode inDrawMode) override
 
- Protected Member Functions inherited from DebugRenderer
void Initialize ()
 Initialize the system, must be called from the constructor of the DebugRenderer implementation.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from DebugRenderer
enum class  ECastShadow { On +, Off + }
 Enum that determines if a shadow should be cast or not. More...
 
enum class  EDrawMode { Solid +, Wireframe + }
 Determines how triangles are drawn. More...
 
enum class  ECullMode { CullBackFace +, CullFrontFace +, Off + }
 Determines which polygons are culled. More...
 
using Batch = Ref< RefTargetVirtual >
 Handle for a batch of triangles.
 
using GeometryRef = Ref< Geometry >
 Handle for a lodded triangle batch.
 
using SupportFunction = function< Vec3(Vec3Arg inDirection)>
 Create a primitive for a convex shape using its support function.
 
- Static Public Member Functions inherited from DebugRenderer
static AABox sCalculateBounds (const Vertex *inVertices, int inVertexCount)
 Calculate bounding box for a batch of triangles.
 
- Static Public Attributes inherited from DebugRenderer
static DebugRenderersInstance = nullptr
 Singleton instance.
 
+

Detailed Description

+

Inherit from this class to simplify implementing a debug renderer, start with this implementation:

class MyDebugRenderer : public JPH::DebugRendererSimple
+{
+public:
+    virtual void DrawLine(JPH::RVec3Arg inFrom, JPH::RVec3Arg inTo, JPH::ColorArg inColor) override
+    {
+        // Implement
+    }
+
+    virtual void DrawTriangle(JPH::RVec3Arg inV1, JPH::RVec3Arg inV2, JPH::RVec3Arg inV3, JPH::ColorArg inColor, ECastShadow inCastShadow) override
+    {
+        // Implement
+    }
+
+    virtual void DrawText3D(JPH::RVec3Arg inPosition, const string_view &inString, JPH::ColorArg inColor, float inHeight) override
+    {
+        // Implement
+    }
+};
+

Note that this class is meant to be a quick start for implementing a debug renderer, it is not the most efficient way to implement a debug renderer.

+

Constructor & Destructor Documentation

+ +

◆ DebugRendererSimple()

+ +
+
+ + + + + + + +
JPH_NAMESPACE_BEGIN DebugRendererSimple::DebugRendererSimple ()
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ CreateTriangleBatch() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DebugRenderer::Batch DebugRendererSimple::CreateTriangleBatch (const TriangleinTriangles,
int inTriangleCount 
)
+
+overrideprotectedvirtual
+
+ +

Implementation of DebugRenderer interface.

+ +

Implements DebugRenderer.

+ +
+
+ +

◆ CreateTriangleBatch() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DebugRenderer::Batch DebugRendererSimple::CreateTriangleBatch (const VertexinVertices,
int inVertexCount,
const uint32inIndices,
int inIndexCount 
)
+
+overrideprotectedvirtual
+
+ +

Implements DebugRenderer.

+ +
+
+ +

◆ DrawGeometry()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DebugRendererSimple::DrawGeometry (RMat44Arg inModelMatrix,
const AABoxinWorldSpaceBounds,
float inLODScaleSq,
ColorArg inModelColor,
const GeometryRefinGeometry,
ECullMode inCullMode,
ECastShadow inCastShadow,
EDrawMode inDrawMode 
)
+
+overrideprotectedvirtual
+
+

Draw some geometry

Parameters
+ + + + + + + + + +
inModelMatrixis the matrix that transforms the geometry to world space.
inWorldSpaceBoundsis the bounding box of the geometry after transforming it into world space.
inLODScaleSqis the squared scale of the model matrix, it is multiplied with the LOD distances in inGeometry to calculate the real LOD distance (so a number > 1 will force a higher LOD).
inModelColoris the color with which to multiply the vertex colors in inGeometry.
inGeometryThe geometry to draw.
inCullModedetermines which polygons are culled.
inCastShadowdetermines if this geometry should cast a shadow or not.
inDrawModedetermines if we draw the geometry solid or in wireframe.
+
+
+ +

Implements DebugRenderer.

+ +
+
+ +

◆ DrawTriangle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void DebugRendererSimple::DrawTriangle (RVec3Arg inV1,
RVec3Arg inV2,
RVec3Arg inV3,
ColorArg inColor,
ECastShadow inCastShadow 
)
+
+inlineoverridevirtual
+
+ +

Fallback implementation that uses DrawLine to draw a triangle (override this if you have a version that renders solid triangles)

+ +

Implements DebugRenderer.

+ +
+
+ +

◆ SetCameraPos()

+ +
+
+ + + + + +
+ + + + + + + + +
void DebugRendererSimple::SetCameraPos (RVec3Arg inCameraPos)
+
+inline
+
+

Should be called every frame by the application to provide the camera position. This is used to determine the correct LOD for rendering.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_debug_renderer_simple.js b/class_debug_renderer_simple.js new file mode 100644 index 000000000..1df9b54a7 --- /dev/null +++ b/class_debug_renderer_simple.js @@ -0,0 +1,9 @@ +var class_debug_renderer_simple = +[ + [ "DebugRendererSimple", "class_debug_renderer_simple.html#a9af1945bf20facfc39310fff5b692d9b", null ], + [ "CreateTriangleBatch", "class_debug_renderer_simple.html#a159b563111495231a05b7c7143336954", null ], + [ "CreateTriangleBatch", "class_debug_renderer_simple.html#a7f93b6ccb5960002544ce00fc743dd87", null ], + [ "DrawGeometry", "class_debug_renderer_simple.html#a745b3cf4af4cf5e61c18945940dd5fa6", null ], + [ "DrawTriangle", "class_debug_renderer_simple.html#a8fd3084fc71d7e361d8744bf90db7a1d", null ], + [ "SetCameraPos", "class_debug_renderer_simple.html#a35eeca6a1fcebb6ec2392798b6b62358", null ] +]; \ No newline at end of file diff --git a/class_debug_renderer_simple.png b/class_debug_renderer_simple.png new file mode 100644 index 000000000..b17dbd1e4 Binary files /dev/null and b/class_debug_renderer_simple.png differ diff --git a/class_decorated_shape-members.html b/class_decorated_shape-members.html new file mode 100644 index 000000000..e4886d692 --- /dev/null +++ b/class_decorated_shape-members.html @@ -0,0 +1,193 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DecoratedShape Member List
+
+
+ +

This is the complete list of members for DecoratedShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const =0Shapepure virtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0Shapepure virtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0Shapepure virtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const =0Shapepure virtual
DecoratedShape(EShapeSubType inSubType)DecoratedShapeinlineexplicit
DecoratedShape(EShapeSubType inSubType, const Shape *inInnerShape)DecoratedShapeinline
DecoratedShape(EShapeSubType inSubType, const DecoratedShapeSettings &inSettings, ShapeResult &outResult)DecoratedShape
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const =0Shapepure virtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) constShapeinlinevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetCenterOfMass() const overrideDecoratedShapeinlinevirtual
GetInnerRadius() const =0Shapepure virtual
GetInnerShape() constDecoratedShapeinline
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const overrideDecoratedShapeinlinevirtual
GetLocalBounds() const =0Shapepure virtual
GetMassProperties() const =0Shapepure virtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideDecoratedShapevirtual
GetRefCount() constRefTarget< Shape >inline
GetStats() const =0Shapepure virtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) const overrideDecoratedShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideDecoratedShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) const overrideDecoratedShapevirtual
GetSubType() constShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideDecoratedShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const =0Shapepure virtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const =0Shapepure virtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const =0Shapepure virtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const =0Shapepure virtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) const overrideDecoratedShapeinlinevirtual
MakeScaleValid(Vec3Arg inScale) const overrideDecoratedShapeinlinevirtual
MaterialToIDMap typedefShape
mInnerShapeDecoratedShapeprotected
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() const overrideDecoratedShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream)Shapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)Shapeinlinevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes) overrideDecoratedShapevirtual
SaveBinaryState(StreamOut &inStream) constShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) const overrideDecoratedShapevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetEmbedded() constRefTarget< Shape >inline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_decorated_shape.html b/class_decorated_shape.html new file mode 100644 index 000000000..539a582e6 --- /dev/null +++ b/class_decorated_shape.html @@ -0,0 +1,955 @@ + + + + + + + +Jolt Physics: DecoratedShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DecoratedShape Class Reference
+
+
+ +

Base class for shapes that decorate another shape with extra functionality (e.g. scale, translation etc.) + More...

+ +

#include <DecoratedShape.h>

+
+Inheritance diagram for DecoratedShape:
+
+
+ + +Shape +RefTarget< Shape > +NonCopyable +OffsetCenterOfMassShape +RotatedTranslatedShape +ScaledShape + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE DecoratedShape (EShapeSubType inSubType)
 Constructor.
 
 DecoratedShape (EShapeSubType inSubType, const Shape *inInnerShape)
 
 DecoratedShape (EShapeSubType inSubType, const DecoratedShapeSettings &inSettings, ShapeResult &outResult)
 
const ShapeGetInnerShape () const
 Access to the decorated inner shape.
 
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.
 
virtual Vec3 GetCenterOfMass () const override
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const override
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const override
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const override
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes) override
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const override
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual AABox GetLocalBounds () const =0
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual float GetInnerRadius () const =0
 
virtual MassProperties GetMassProperties () const =0
 Calculate the mass and inertia of this shape.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const =0
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const =0
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const =0
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const =0
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const =0
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const =0
 
virtual Stats GetStats () const =0
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const =0
 
virtual void SaveBinaryState (StreamOut &inStream) const
 Saves the contents of the shape in binary form to inStream.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + +

+Protected Attributes

RefConst< ShapemInnerShape
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Protected Member Functions inherited from Shape
virtual void RestoreBinaryState (StreamIn &inStream)
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Base class for shapes that decorate another shape with extra functionality (e.g. scale, translation etc.)

+

Constructor & Destructor Documentation

+ +

◆ DecoratedShape() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE DecoratedShape::DecoratedShape (EShapeSubType inSubType)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+ +

◆ DecoratedShape() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DecoratedShape::DecoratedShape (EShapeSubType inSubType,
const ShapeinInnerShape 
)
+
+inline
+
+ +
+
+ +

◆ DecoratedShape() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
DecoratedShape::DecoratedShape (EShapeSubType inSubType,
const DecoratedShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ GetCenterOfMass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vec3 DecoratedShape::GetCenterOfMass () const
+
+inlineoverridevirtual
+
+ +

All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.

+ +

Reimplemented from Shape.

+ +

Reimplemented in OffsetCenterOfMassShape, RotatedTranslatedShape, and ScaledShape.

+ +
+
+ +

◆ GetInnerShape()

+ +
+
+ + + + + +
+ + + + + + + +
const Shape * DecoratedShape::GetInnerShape () const
+
+inline
+
+ +

Access to the decorated inner shape.

+ +
+
+ +

◆ GetLeafShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual const Shape * DecoratedShape::GetLeafShape (const SubShapeIDinSubShapeID,
SubShapeIDoutRemainder 
) const
+
+inlineoverridevirtual
+
+

Get the leaf shape for a particular sub shape ID.

Parameters
+ + + +
inSubShapeIDThe full sub shape ID that indicates the path to the leaf shape
outRemainderWhat remains of the sub shape ID after removing the path to the leaf shape (could e.g. refer to a triangle within a MeshShape)
+
+
+
Returns
The shape or null if the sub shape ID is invalid
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetMaterial()

+ +
+
+ + + + + +
+ + + + + + + + +
const PhysicsMaterial * DecoratedShape::GetMaterial (const SubShapeIDinSubShapeID) const
+
+overridevirtual
+
+ +

Get the material assigned to a particular sub shape ID.

+ +

Implements Shape.

+ +
+
+ +

◆ GetStatsRecursive()

+ +
+
+ + + + + +
+ + + + + + + + +
Shape::Stats DecoratedShape::GetStatsRecursive (VisitedShapesioVisitedShapes) const
+
+overridevirtual
+
+ +

Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.

+

Get the combined stats of this shape and its children.

Parameters
+ + +
ioVisitedShapesis used to track which shapes have already been visited, to avoid calculating the wrong memory size.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSubShapeIDBitsRecursive()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint DecoratedShape::GetSubShapeIDBitsRecursive () const
+
+inlineoverridevirtual
+
+ +

Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubShapeUserData()

+ +
+
+ + + + + +
+ + + + + + + + +
uint64 DecoratedShape::GetSubShapeUserData (const SubShapeIDinSubShapeID) const
+
+overridevirtual
+
+ +

Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DecoratedShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +

Reimplemented in OffsetCenterOfMassShape, RotatedTranslatedShape, and ScaledShape.

+ +
+
+ +

◆ IsValidScale()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool DecoratedShape::IsValidScale (Vec3Arg inScale) const
+
+inlineoverridevirtual
+
+

Test if inScale is a valid scale for this shape. Some shapes can only be scaled uniformly, compound shapes cannot handle shapes being rotated and scaled (this would cause shearing), scale can never be zero. When the scale is invalid, the function will return false.

+

Here's a list of supported scales:

    +
  • SphereShape: Scale must be uniform (signs of scale are ignored).
  • +
  • BoxShape: Any scale supported (signs of scale are ignored).
  • +
  • TriangleShape: Any scale supported when convex radius is zero, otherwise only uniform scale supported.
  • +
  • CapsuleShape: Scale must be uniform (signs of scale are ignored).
  • +
  • TaperedCapsuleShape: Scale must be uniform (sign of Y scale can be used to flip the capsule).
  • +
  • CylinderShape: Scale must be uniform in XZ plane, Y can scale independently (signs of scale are ignored).
  • +
  • RotatedTranslatedShape: Scale must not cause shear in the child shape.
  • +
  • CompoundShape: Scale must not cause shear in any of the child shapes.
  • +
+ +

Reimplemented from Shape.

+ +

Reimplemented in RotatedTranslatedShape, and ScaledShape.

+ +
+
+ +

◆ MakeScaleValid()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 DecoratedShape::MakeScaleValid (Vec3Arg inScale) const
+
+inlineoverridevirtual
+
+

This function will make sure that if you wrap this shape in a ScaledShape that the scale is valid. Note that this involves discarding components of the scale that are invalid, so the resulting scaled shape may be different than the requested scale. Compare the return value of this function with the scale you passed in to detect major inconsistencies and possibly warn the user.

Parameters
+ + +
inScaleLocal space scale for this shape.
+
+
+
Returns
Scale that can be used to wrap this shape in a ScaledShape. IsValidScale will return true for this scale.
+ +

Reimplemented from Shape.

+ +

Reimplemented in RotatedTranslatedShape, and ScaledShape.

+ +
+
+ +

◆ MustBeStatic()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool DecoratedShape::MustBeStatic () const
+
+inlineoverridevirtual
+
+ +

Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreSubShapeState()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void DecoratedShape::RestoreSubShapeState (const ShapeRefCinSubShapes,
uint inNumShapes 
)
+
+overridevirtual
+
+ +

Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SaveSubShapeState()

+ +
+
+ + + + + +
+ + + + + + + + +
void DecoratedShape::SaveSubShapeState (ShapeListoutSubShapes) const
+
+overridevirtual
+
+ +

Outputs the shape references that this shape has to outSubShapes.

+ +

Reimplemented from Shape.

+ +
+
+

Member Data Documentation

+ +

◆ mInnerShape

+ +
+
+ + + + + +
+ + + + +
RefConst<Shape> DecoratedShape::mInnerShape
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_decorated_shape.js b/class_decorated_shape.js new file mode 100644 index 000000000..2821b89c5 --- /dev/null +++ b/class_decorated_shape.js @@ -0,0 +1,20 @@ +var class_decorated_shape = +[ + [ "DecoratedShape", "class_decorated_shape.html#a9619e07b18da28f6c4cb04bf931e4c15", null ], + [ "DecoratedShape", "class_decorated_shape.html#abacdd80b00fe8afc00c50db7eac53a28", null ], + [ "DecoratedShape", "class_decorated_shape.html#a1c95daf857b7433b85e88da194e53147", null ], + [ "GetCenterOfMass", "class_decorated_shape.html#aa17a9fb29ce78eafc01cc8140d754dd6", null ], + [ "GetInnerShape", "class_decorated_shape.html#a23b4182bc69407c3c9f6e33419a8cbed", null ], + [ "GetLeafShape", "class_decorated_shape.html#a3b29a28fcd37ade91f30f6e85640c688", null ], + [ "GetMaterial", "class_decorated_shape.html#a14df32d1573050287d989ce5171a1a86", null ], + [ "GetStatsRecursive", "class_decorated_shape.html#a24a5fc486a279b6afaf2cada33f28272", null ], + [ "GetSubShapeIDBitsRecursive", "class_decorated_shape.html#a0369b0f4e52b29f3625022bfd98a6924", null ], + [ "GetSubShapeUserData", "class_decorated_shape.html#afdcd8fb7a79bc210ca792d2db1fdfe09", null ], + [ "GetSupportingFace", "class_decorated_shape.html#abda124dcb2cd84b591101a32544e1c94", null ], + [ "IsValidScale", "class_decorated_shape.html#a778d6bb612a571ba44001768efca994c", null ], + [ "MakeScaleValid", "class_decorated_shape.html#ab8608332a025b38ae101d50f31365187", null ], + [ "MustBeStatic", "class_decorated_shape.html#ae68d25802b5bbe3e86cb3cb71698b78b", null ], + [ "RestoreSubShapeState", "class_decorated_shape.html#a642be3c50a8c3b2891161aeb32f4b7df", null ], + [ "SaveSubShapeState", "class_decorated_shape.html#a73313accd26250780d6baa06c7098197", null ], + [ "mInnerShape", "class_decorated_shape.html#a776a5391c3d5f4a78f2e81934bc19110", null ] +]; \ No newline at end of file diff --git a/class_decorated_shape.png b/class_decorated_shape.png new file mode 100644 index 000000000..c482c49e5 Binary files /dev/null and b/class_decorated_shape.png differ diff --git a/class_decorated_shape_settings-members.html b/class_decorated_shape_settings-members.html new file mode 100644 index 000000000..6caec1e40 --- /dev/null +++ b/class_decorated_shape_settings-members.html @@ -0,0 +1,136 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DecoratedShapeSettings Member List
+
+
+ +

This is the complete list of members for DecoratedShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
Create() const =0ShapeSettingspure virtual
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_decorated_shape_settings.html b/class_decorated_shape_settings.html new file mode 100644 index 000000000..0f1f0c392 --- /dev/null +++ b/class_decorated_shape_settings.html @@ -0,0 +1,206 @@ + + + + + + + +Jolt Physics: DecoratedShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DecoratedShapeSettings Class Reference
+
+
+ +

Class that constructs a DecoratedShape. + More...

+ +

#include <DecoratedShape.h>

+
+Inheritance diagram for DecoratedShapeSettings:
+
+
+ + +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable +OffsetCenterOfMassShapeSettings +RotatedTranslatedShapeSettings +ScaledShapeSettings + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Public Member Functions inherited from ShapeSettings
virtual ShapeResult Create () const =0
 Create a shape according to the settings specified by this object.
 
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a DecoratedShape.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_decorated_shape_settings.png b/class_decorated_shape_settings.png new file mode 100644 index 000000000..c41f0e5fd Binary files /dev/null and b/class_decorated_shape_settings.png differ diff --git a/class_default_broad_phase_layer_filter-members.html b/class_default_broad_phase_layer_filter-members.html new file mode 100644 index 000000000..3a409907d --- /dev/null +++ b/class_default_broad_phase_layer_filter-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DefaultBroadPhaseLayerFilter Member List
+
+
+ +

This is the complete list of members for DefaultBroadPhaseLayerFilter, including all inherited members.

+ + + + + + + +
DefaultBroadPhaseLayerFilter(const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, ObjectLayer inLayer)DefaultBroadPhaseLayerFilterinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(BroadPhaseLayer inLayer) const overrideDefaultBroadPhaseLayerFilterinlinevirtual
~BroadPhaseLayerFilter()=defaultBroadPhaseLayerFiltervirtual
+
+ + + + diff --git a/class_default_broad_phase_layer_filter.html b/class_default_broad_phase_layer_filter.html new file mode 100644 index 000000000..d29812bbc --- /dev/null +++ b/class_default_broad_phase_layer_filter.html @@ -0,0 +1,228 @@ + + + + + + + +Jolt Physics: DefaultBroadPhaseLayerFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DefaultBroadPhaseLayerFilter Class Reference
+
+
+ +

Default filter class that uses the pair filter in combination with a specified layer to filter layers. + More...

+ +

#include <BroadPhaseLayer.h>

+
+Inheritance diagram for DefaultBroadPhaseLayerFilter:
+
+
+ + +BroadPhaseLayerFilter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 DefaultBroadPhaseLayerFilter (const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, ObjectLayer inLayer)
 Constructor.
 
virtual bool ShouldCollide (BroadPhaseLayer inLayer) const override
 Function to filter out broadphase layers when doing collision query test (return true to allow testing against objects with this layer)
 
- Public Member Functions inherited from BroadPhaseLayerFilter
virtual ~BroadPhaseLayerFilter ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Default filter class that uses the pair filter in combination with a specified layer to filter layers.

+

Constructor & Destructor Documentation

+ +

◆ DefaultBroadPhaseLayerFilter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DefaultBroadPhaseLayerFilter::DefaultBroadPhaseLayerFilter (const ObjectVsBroadPhaseLayerFilterinObjectVsBroadPhaseLayerFilter,
ObjectLayer inLayer 
)
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool DefaultBroadPhaseLayerFilter::ShouldCollide (BroadPhaseLayer inLayer) const
+
+inlineoverridevirtual
+
+ +

Function to filter out broadphase layers when doing collision query test (return true to allow testing against objects with this layer)

+ +

Reimplemented from BroadPhaseLayerFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_default_broad_phase_layer_filter.js b/class_default_broad_phase_layer_filter.js new file mode 100644 index 000000000..028c3ad6e --- /dev/null +++ b/class_default_broad_phase_layer_filter.js @@ -0,0 +1,5 @@ +var class_default_broad_phase_layer_filter = +[ + [ "DefaultBroadPhaseLayerFilter", "class_default_broad_phase_layer_filter.html#a6df10c5326c2190b934694510851d7b0", null ], + [ "ShouldCollide", "class_default_broad_phase_layer_filter.html#af08a7bc5141b24385c4fc1a731657cda", null ] +]; \ No newline at end of file diff --git a/class_default_broad_phase_layer_filter.png b/class_default_broad_phase_layer_filter.png new file mode 100644 index 000000000..46e36ebb6 Binary files /dev/null and b/class_default_broad_phase_layer_filter.png differ diff --git a/class_default_object_layer_filter-members.html b/class_default_object_layer_filter-members.html new file mode 100644 index 000000000..7092699af --- /dev/null +++ b/class_default_object_layer_filter-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DefaultObjectLayerFilter Member List
+
+
+ +

This is the complete list of members for DefaultObjectLayerFilter, including all inherited members.

+ + + + + + + + +
DefaultObjectLayerFilter(const ObjectLayerPairFilter &inObjectLayerPairFilter, ObjectLayer inLayer)DefaultObjectLayerFilterinline
DefaultObjectLayerFilter(const DefaultObjectLayerFilter &inRHS)DefaultObjectLayerFilterinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(ObjectLayer inLayer) const overrideDefaultObjectLayerFilterinlinevirtual
~ObjectLayerFilter()=defaultObjectLayerFiltervirtual
+
+ + + + diff --git a/class_default_object_layer_filter.html b/class_default_object_layer_filter.html new file mode 100644 index 000000000..b0dac98f5 --- /dev/null +++ b/class_default_object_layer_filter.html @@ -0,0 +1,259 @@ + + + + + + + +Jolt Physics: DefaultObjectLayerFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DefaultObjectLayerFilter Class Reference
+
+
+ +

Default filter class that uses the pair filter in combination with a specified layer to filter layers. + More...

+ +

#include <ObjectLayer.h>

+
+Inheritance diagram for DefaultObjectLayerFilter:
+
+
+ + +ObjectLayerFilter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 DefaultObjectLayerFilter (const ObjectLayerPairFilter &inObjectLayerPairFilter, ObjectLayer inLayer)
 Constructor.
 
 DefaultObjectLayerFilter (const DefaultObjectLayerFilter &inRHS)
 Copy constructor.
 
virtual bool ShouldCollide (ObjectLayer inLayer) const override
 Function to filter out object layers when doing collision query test (return true to allow testing against objects with this layer)
 
- Public Member Functions inherited from ObjectLayerFilter
virtual ~ObjectLayerFilter ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Default filter class that uses the pair filter in combination with a specified layer to filter layers.

+

Constructor & Destructor Documentation

+ +

◆ DefaultObjectLayerFilter() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DefaultObjectLayerFilter::DefaultObjectLayerFilter (const ObjectLayerPairFilterinObjectLayerPairFilter,
ObjectLayer inLayer 
)
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ DefaultObjectLayerFilter() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
DefaultObjectLayerFilter::DefaultObjectLayerFilter (const DefaultObjectLayerFilterinRHS)
+
+inline
+
+ +

Copy constructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool DefaultObjectLayerFilter::ShouldCollide (ObjectLayer inLayer) const
+
+inlineoverridevirtual
+
+ +

Function to filter out object layers when doing collision query test (return true to allow testing against objects with this layer)

+ +

Reimplemented from ObjectLayerFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_default_object_layer_filter.js b/class_default_object_layer_filter.js new file mode 100644 index 000000000..7381a0a33 --- /dev/null +++ b/class_default_object_layer_filter.js @@ -0,0 +1,6 @@ +var class_default_object_layer_filter = +[ + [ "DefaultObjectLayerFilter", "class_default_object_layer_filter.html#aadd5a15cd5f3f980b89a95a843155a51", null ], + [ "DefaultObjectLayerFilter", "class_default_object_layer_filter.html#abeeea7ecb8636d9c103ed66cf016fcbd", null ], + [ "ShouldCollide", "class_default_object_layer_filter.html#a454d7b668f25a6301eba8a0a17276b79", null ] +]; \ No newline at end of file diff --git a/class_default_object_layer_filter.png b/class_default_object_layer_filter.png new file mode 100644 index 000000000..735058263 Binary files /dev/null and b/class_default_object_layer_filter.png differ diff --git a/class_distance_constraint-members.html b/class_distance_constraint-members.html new file mode 100644 index 000000000..9a783ba43 --- /dev/null +++ b/class_distance_constraint-members.html @@ -0,0 +1,178 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DistanceConstraint Member List
+
+
+ +

This is the complete list of members for DistanceConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DistanceConstraint(Body &inBody1, Body &inBody2, const DistanceConstraintSettings &inSettings)DistanceConstraint
DrawConstraint(DebugRenderer *inRenderer) const overrideDistanceConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) constConstraintinlinevirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overrideDistanceConstraintvirtual
GetConstraintToBody1Matrix() const overrideDistanceConstraintinlinevirtual
GetConstraintToBody2Matrix() const overrideDistanceConstraintinlinevirtual
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetLimitsSpringSettings() constDistanceConstraintinline
GetLimitsSpringSettings()DistanceConstraintinline
GetMaxDistance() constDistanceConstraintinline
GetMinDistance() constDistanceConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const overrideDistanceConstraintinlinevirtual
GetTotalLambdaPosition() constDistanceConstraintinline
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
IsActive() const overrideTwoBodyConstraintinlinevirtual
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overrideDistanceConstraintvirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart() overrideDistanceConstraintvirtual
RestoreState(StateRecorder &inStream) overrideDistanceConstraintvirtual
SaveState(StateRecorder &inStream) const overrideDistanceConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDistance(float inMinDistance, float inMaxDistance)DistanceConstraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetLimitsSpringSettings(const SpringSettings &inLimitsSpringSettings)DistanceConstraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetupVelocityConstraint(float inDeltaTime) overrideDistanceConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overrideDistanceConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overrideDistanceConstraintvirtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overrideDistanceConstraintvirtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_distance_constraint.html b/class_distance_constraint.html new file mode 100644 index 000000000..fb2c3bbe8 --- /dev/null +++ b/class_distance_constraint.html @@ -0,0 +1,944 @@ + + + + + + + +Jolt Physics: DistanceConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DistanceConstraint Class Referencefinal
+
+
+ +

This constraint is a stiff spring that holds 2 points at a fixed distance from each other. + More...

+ +

#include <DistanceConstraint.h>

+
+Inheritance diagram for DistanceConstraint:
+
+
+ + +TwoBodyConstraint +Constraint +RefTarget< Constraint > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE DistanceConstraint (Body &inBody1, Body &inBody2, const DistanceConstraintSettings &inSettings)
 Construct distance constraint.
 
virtual EConstraintSubType GetSubType () const override
 Get the sub type of a constraint.
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
virtual Mat44 GetConstraintToBody1Matrix () const override
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const override
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
void SetDistance (float inMinDistance, float inMaxDistance)
 Update the minimum and maximum distance for the constraint.
 
float GetMinDistance () const
 
float GetMaxDistance () const
 
const SpringSettingsGetLimitsSpringSettings () const
 Update the limits spring settings.
 
SpringSettingsGetLimitsSpringSettings ()
 
void SetLimitsSpringSettings (const SpringSettings &inLimitsSpringSettings)
 
- Public Member Functions inherited from TwoBodyConstraint
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + +

Get Lagrange multiplier from last physics update (the linear impulse applied to satisfy the constraint)

float GetTotalLambdaPosition () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from TwoBodyConstraint
BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

This constraint is a stiff spring that holds 2 points at a fixed distance from each other.

+

Constructor & Destructor Documentation

+ +

◆ DistanceConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
DistanceConstraint::DistanceConstraint (BodyinBody1,
BodyinBody2,
const DistanceConstraintSettingsinSettings 
)
+
+ +

Construct distance constraint.

+ +
+
+

Member Function Documentation

+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void DistanceConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > DistanceConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 DistanceConstraint::GetConstraintToBody1Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 DistanceConstraint::GetConstraintToBody2Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetLimitsSpringSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SpringSettings & DistanceConstraint::GetLimitsSpringSettings ()
+
+inline
+
+ +
+
+ +

◆ GetLimitsSpringSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const SpringSettings & DistanceConstraint::GetLimitsSpringSettings () const
+
+inline
+
+ +

Update the limits spring settings.

+ +
+
+ +

◆ GetMaxDistance()

+ +
+
+ + + + + +
+ + + + + + + +
float DistanceConstraint::GetMaxDistance () const
+
+inline
+
+ +
+
+ +

◆ GetMinDistance()

+ +
+
+ + + + + +
+ + + + + + + +
float DistanceConstraint::GetMinDistance () const
+
+inline
+
+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType DistanceConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Get the sub type of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetTotalLambdaPosition()

+ +
+
+ + + + + +
+ + + + + + + +
float DistanceConstraint::GetTotalLambdaPosition () const
+
+inline
+
+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void DistanceConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+overridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void DistanceConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void DistanceConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void DistanceConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetDistance()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void DistanceConstraint::SetDistance (float inMinDistance,
float inMaxDistance 
)
+
+inline
+
+ +

Update the minimum and maximum distance for the constraint.

+ +
+
+ +

◆ SetLimitsSpringSettings()

+ +
+
+ + + + + +
+ + + + + + + + +
void DistanceConstraint::SetLimitsSpringSettings (const SpringSettingsinLimitsSpringSettings)
+
+inline
+
+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void DistanceConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool DistanceConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool DistanceConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void DistanceConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_distance_constraint.js b/class_distance_constraint.js new file mode 100644 index 000000000..460ee614e --- /dev/null +++ b/class_distance_constraint.js @@ -0,0 +1,24 @@ +var class_distance_constraint = +[ + [ "DistanceConstraint", "class_distance_constraint.html#a341078be34cb228a4ab7402c960aacb5", null ], + [ "DrawConstraint", "class_distance_constraint.html#a77a9f420d8b2e91f852af61cbcecceb0", null ], + [ "GetConstraintSettings", "class_distance_constraint.html#adaee116897c67e802f2c294c44df106d", null ], + [ "GetConstraintToBody1Matrix", "class_distance_constraint.html#affc0247d5a56e7448372aea456e0bd04", null ], + [ "GetConstraintToBody2Matrix", "class_distance_constraint.html#a32c46e7b4a137df6a68f9bd7752ee0cc", null ], + [ "GetLimitsSpringSettings", "class_distance_constraint.html#aff807f66dc7ea24c932ac32c94d37ec4", null ], + [ "GetLimitsSpringSettings", "class_distance_constraint.html#a1f191ffd4cf8e11747be8b483a71f298", null ], + [ "GetMaxDistance", "class_distance_constraint.html#a4ed1c3635f00b8f94624290bb7b11f4f", null ], + [ "GetMinDistance", "class_distance_constraint.html#a4417a1efabd5ff92a82b5657479eab93", null ], + [ "GetSubType", "class_distance_constraint.html#aca72385bb8b1dede13ca841681e37cae", null ], + [ "GetTotalLambdaPosition", "class_distance_constraint.html#a9c2f0f9859df29f33e5688f42e14471d", null ], + [ "NotifyShapeChanged", "class_distance_constraint.html#aa6ac58843c176b849972406a38f50c89", null ], + [ "ResetWarmStart", "class_distance_constraint.html#a4850e4925b8de521c4afe351e28d0b2d", null ], + [ "RestoreState", "class_distance_constraint.html#a748c652cfab4475e85d97ed4caf42c79", null ], + [ "SaveState", "class_distance_constraint.html#a8220e4b735572de4324c0cd1a181150f", null ], + [ "SetDistance", "class_distance_constraint.html#acac4686ff8fd7d2e412af5cfcaea8d2c", null ], + [ "SetLimitsSpringSettings", "class_distance_constraint.html#a19b91e04a929e9ffac559677087875fc", null ], + [ "SetupVelocityConstraint", "class_distance_constraint.html#a6783513d7658a4979f309be36a94f2d3", null ], + [ "SolvePositionConstraint", "class_distance_constraint.html#a31ec535ef21936a97b305508858f862b", null ], + [ "SolveVelocityConstraint", "class_distance_constraint.html#affedf1d2ef0d92264ffaeb579073d5b8", null ], + [ "WarmStartVelocityConstraint", "class_distance_constraint.html#a459aed04f96a767cb395b114bb1860bb", null ] +]; \ No newline at end of file diff --git a/class_distance_constraint.png b/class_distance_constraint.png new file mode 100644 index 000000000..9b37304ff Binary files /dev/null and b/class_distance_constraint.png differ diff --git a/class_distance_constraint_settings-members.html b/class_distance_constraint_settings-members.html new file mode 100644 index 000000000..3cf0eb5bb --- /dev/null +++ b/class_distance_constraint_settings-members.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DistanceConstraintSettings Member List
+
+
+ +

This is the complete list of members for DistanceConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const overrideDistanceConstraintSettingsvirtual
GetRefCount() constRefTarget< ConstraintSettings >inline
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mLimitsSpringSettingsDistanceConstraintSettings
mMaxDistanceDistanceConstraintSettings
mMinDistanceDistanceConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mPoint1DistanceConstraintSettings
mPoint2DistanceConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mSpaceDistanceConstraintSettings
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideDistanceConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overrideDistanceConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_distance_constraint_settings.html b/class_distance_constraint_settings.html new file mode 100644 index 000000000..93bdf0a44 --- /dev/null +++ b/class_distance_constraint_settings.html @@ -0,0 +1,446 @@ + + + + + + + +Jolt Physics: DistanceConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DistanceConstraintSettings Class Referencefinal
+
+
+ +

Distance constraint settings, used to create a distance constraint. + More...

+ +

#include <DistanceConstraint.h>

+
+Inheritance diagram for DistanceConstraintSettings:
+
+
+ + +TwoBodyConstraintSettings +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 Create an instance of this constraint.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EConstraintSpace mSpace = EConstraintSpace::WorldSpace
 This determines in which space the constraint is setup, all properties below should be in the specified space.
 
RVec3 mPoint1 = RVec3::sZero()
 
RVec3 mPoint2 = RVec3::sZero()
 Body 2 constraint reference frame (space determined by mSpace)
 
float mMinDistance = -1.0f
 Ability to override the distance range at which the two points are kept apart. If the value is negative, it will be replaced by the distance between mPoint1 and mPoint2 (works only if mSpace is world space).
 
float mMaxDistance = -1.0f
 
SpringSettings mLimitsSpringSettings
 When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will pull it back.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Distance constraint settings, used to create a distance constraint.

+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * DistanceConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+overridevirtual
+
+ +

Create an instance of this constraint.

+ +

Implements TwoBodyConstraintSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void DistanceConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void DistanceConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mLimitsSpringSettings

+ +
+
+ + + + +
SpringSettings DistanceConstraintSettings::mLimitsSpringSettings
+
+ +

When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will pull it back.

+ +
+
+ +

◆ mMaxDistance

+ +
+
+ + + + +
float DistanceConstraintSettings::mMaxDistance = -1.0f
+
+ +
+
+ +

◆ mMinDistance

+ +
+
+ + + + +
float DistanceConstraintSettings::mMinDistance = -1.0f
+
+ +

Ability to override the distance range at which the two points are kept apart. If the value is negative, it will be replaced by the distance between mPoint1 and mPoint2 (works only if mSpace is world space).

+ +
+
+ +

◆ mPoint1

+ +
+
+ + + + +
RVec3 DistanceConstraintSettings::mPoint1 = RVec3::sZero()
+
+

Body 1 constraint reference frame (space determined by mSpace). Constraint will keep mPoint1 (a point on body 1) and mPoint2 (a point on body 2) at the same distance. Note that this constraint can be used as a cheap PointConstraint by setting mPoint1 = mPoint2 (but this removes only 1 degree of freedom instead of 3).

+ +
+
+ +

◆ mPoint2

+ +
+
+ + + + +
RVec3 DistanceConstraintSettings::mPoint2 = RVec3::sZero()
+
+ +

Body 2 constraint reference frame (space determined by mSpace)

+ +
+
+ +

◆ mSpace

+ +
+
+ + + + +
EConstraintSpace DistanceConstraintSettings::mSpace = EConstraintSpace::WorldSpace
+
+ +

This determines in which space the constraint is setup, all properties below should be in the specified space.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_distance_constraint_settings.js b/class_distance_constraint_settings.js new file mode 100644 index 000000000..27b736059 --- /dev/null +++ b/class_distance_constraint_settings.js @@ -0,0 +1,12 @@ +var class_distance_constraint_settings = +[ + [ "Create", "class_distance_constraint_settings.html#aee6dc14294bbf16036e149724f01c6e8", null ], + [ "RestoreBinaryState", "class_distance_constraint_settings.html#ad20296ac7f200e6f5515d5026f243028", null ], + [ "SaveBinaryState", "class_distance_constraint_settings.html#a6ccc7f6a9630c0c6f818a82c37640943", null ], + [ "mLimitsSpringSettings", "class_distance_constraint_settings.html#a09758da3857c1883a7fcd1e128bdb175", null ], + [ "mMaxDistance", "class_distance_constraint_settings.html#a2535335c96322853cd8243a199ce54d1", null ], + [ "mMinDistance", "class_distance_constraint_settings.html#a7dd98fea4e812f9bc4168804c1bc4742", null ], + [ "mPoint1", "class_distance_constraint_settings.html#a8ca1134032fe38952fcf59be4329c939", null ], + [ "mPoint2", "class_distance_constraint_settings.html#a18e1fbea7cbb304ce9e86168c1845475", null ], + [ "mSpace", "class_distance_constraint_settings.html#a09098a011c7b8061c47260953e49e48b", null ] +]; \ No newline at end of file diff --git a/class_distance_constraint_settings.png b/class_distance_constraint_settings.png new file mode 100644 index 000000000..61baf413b Binary files /dev/null and b/class_distance_constraint_settings.png differ diff --git a/class_double3-members.html b/class_double3-members.html new file mode 100644 index 000000000..c10a39d95 --- /dev/null +++ b/class_double3-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Double3 Member List
+
+
+ +

This is the complete list of members for Double3, including all inherited members.

+ + + + + + + + + + + +
Double3()=defaultDouble3
Double3(const Double3 &inRHS)=defaultDouble3
Double3(double inX, double inY, double inZ)Double3inline
operator!=(const Double3 &inRHS) constDouble3inline
operator=(const Double3 &inRHS)=defaultDouble3
operator==(const Double3 &inRHS) constDouble3inline
operator[](int inCoordinate) constDouble3inline
xDouble3
yDouble3
zDouble3
+
+ + + + diff --git a/class_double3.html b/class_double3.html new file mode 100644 index 000000000..16b337c58 --- /dev/null +++ b/class_double3.html @@ -0,0 +1,400 @@ + + + + + + + +Jolt Physics: Double3 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Double3 Class Reference
+
+
+ +

Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations. + More...

+ +

#include <Double3.h>

+ + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Double3 ()=default
 Intentionally not initialized for performance reasons.
 
 Double3 (const Double3 &inRHS)=default
 
Double3operator= (const Double3 &inRHS)=default
 
 Double3 (double inX, double inY, double inZ)
 
double operator[] (int inCoordinate) const
 
bool operator== (const Double3 &inRHS) const
 
bool operator!= (const Double3 &inRHS) const
 
+ + + + + + + +

+Public Attributes

double x
 
double y
 
double z
 
+

Detailed Description

+

Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations.

+

Constructor & Destructor Documentation

+ +

◆ Double3() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE Double3::Double3 ()
+
+default
+
+ +

Intentionally not initialized for performance reasons.

+ +
+
+ +

◆ Double3() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
Double3::Double3 (const Double3inRHS)
+
+default
+
+ +
+
+ +

◆ Double3() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Double3::Double3 (double inX,
double inY,
double inZ 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Double3::operator!= (const Double3inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
Double3 & Double3::operator= (const Double3inRHS)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Double3::operator== (const Double3inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator[]()

+ +
+
+ + + + + +
+ + + + + + + + +
double Double3::operator[] (int inCoordinate) const
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ x

+ +
+
+ + + + +
double Double3::x
+
+ +
+
+ +

◆ y

+ +
+
+ + + + +
double Double3::y
+
+ +
+
+ +

◆ z

+ +
+
+ + + + +
double Double3::z
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_double3.js b/class_double3.js new file mode 100644 index 000000000..225e045cd --- /dev/null +++ b/class_double3.js @@ -0,0 +1,13 @@ +var class_double3 = +[ + [ "Double3", "class_double3.html#ab0081bc08f995dd22c3b96f48ae491d1", null ], + [ "Double3", "class_double3.html#ab5aa082b210fbdd05635916c0ae50be9", null ], + [ "Double3", "class_double3.html#acc10e82457b89d0ce6100ba58922735f", null ], + [ "operator!=", "class_double3.html#a1a82ae13009bf31cdb037cab5e4a1adf", null ], + [ "operator=", "class_double3.html#a5995277938a70289c78cbb95afef9bc0", null ], + [ "operator==", "class_double3.html#a00c600f37480ab7ce55073cc4bfb05d7", null ], + [ "operator[]", "class_double3.html#a6e5ecbdc4bec96b0a033ad090f0a38ba", null ], + [ "x", "class_double3.html#ab8e77991d31c9f90c05b78e70e1027f1", null ], + [ "y", "class_double3.html#a7cdca7980db4588511c4851369dd9f2c", null ], + [ "z", "class_double3.html#a06ddc2a509b14e50e6d69acbc07b0bd3", null ] +]; \ No newline at end of file diff --git a/class_dual_axis_constraint_part-members.html b/class_dual_axis_constraint_part-members.html new file mode 100644 index 000000000..346b9fbc1 --- /dev/null +++ b/class_dual_axis_constraint_part-members.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DualAxisConstraintPart Member List
+
+
+ +

This is the complete list of members for DualAxisConstraintPart, including all inherited members.

+ + + + + + + + + + + + + +
CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inR1PlusU, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inR2, Vec3Arg inN1, Vec3Arg inN2)DualAxisConstraintPartinline
Deactivate()DualAxisConstraintPartinline
GetTotalLambda() constDualAxisConstraintPartinline
IsActive() constDualAxisConstraintPartinline
Mat22 typedefDualAxisConstraintPart
RestoreState(StateRecorder &inStream)DualAxisConstraintPartinline
SaveState(StateRecorder &inStream) constDualAxisConstraintPartinline
SetTotalLambda(const Vec2 &inLambda)DualAxisConstraintPartinline
SolvePositionConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inU, Vec3Arg inN1, Vec3Arg inN2, float inBaumgarte) constDualAxisConstraintPartinline
SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2)DualAxisConstraintPartinline
Vec2 typedefDualAxisConstraintPart
WarmStart(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inWarmStartImpulseRatio)DualAxisConstraintPartinline
+
+ + + + diff --git a/class_dual_axis_constraint_part.html b/class_dual_axis_constraint_part.html new file mode 100644 index 000000000..b0b9b9d44 --- /dev/null +++ b/class_dual_axis_constraint_part.html @@ -0,0 +1,623 @@ + + + + + + + +Jolt Physics: DualAxisConstraintPart Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DualAxisConstraintPart Class Reference
+
+
+ +

#include <DualAxisConstraintPart.h>

+ + + + + + +

+Public Types

using Vec2 = Vector< 2 >
 
using Mat22 = Matrix< 2, 2 >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void CalculateConstraintProperties (const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inR1PlusU, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inR2, Vec3Arg inN1, Vec3Arg inN2)
 
void Deactivate ()
 Deactivate this constraint.
 
bool IsActive () const
 Check if constraint is active.
 
void WarmStart (Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inWarmStartImpulseRatio)
 
bool SolveVelocityConstraint (Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2)
 
bool SolvePositionConstraint (Body &ioBody1, Body &ioBody2, Vec3Arg inU, Vec3Arg inN1, Vec3Arg inN2, float inBaumgarte) const
 
void SetTotalLambda (const Vec2 &inLambda)
 Override total lagrange multiplier, can be used to set the initial value for warm starting.
 
const Vec2GetTotalLambda () const
 Return lagrange multiplier.
 
void SaveState (StateRecorder &inStream) const
 Save state of this constraint part.
 
void RestoreState (StateRecorder &inStream)
 Restore state of this constraint part.
 
+

Detailed Description

+

Constrains movement on 2 axis

+
See also
"Constraints Derivation for Rigid Body Simulation in 3D" - Daniel Chappuis, section 2.3.1
+

Constraint equation (eq 51):

+

+\[C = \begin{bmatrix} (p_2 - p_1) \cdot n_1 \\ (p_2 - p_1) \cdot n_2\end{bmatrix}\] +

+

Jacobian (transposed) (eq 55):

+

+\[J^T = \begin{bmatrix} +-n_1 & -n_2 \\ +-(r_1 + u) \times n_1 & -(r_1 + u) \times n_2 \\ +n_1 & n_2 \\ +r_2 \times n_1 & r_2 \times n_2 +\end{bmatrix}\] +

+

Used terms (here and below, everything in world space):
+n1, n2 = constraint axis (normalized).
+p1, p2 = constraint points.
+r1 = p1 - x1.
+r2 = p2 - x2.
+u = x2 + r2 - x1 - r1 = p2 - p1.
+x1, x2 = center of mass for the bodies.
+v = [v1, w1, v2, w2].
+v1, v2 = linear velocity of body 1 and 2.
+w1, w2 = angular velocity of body 1 and 2.
+M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].
+ \(K^{-1} = \left( J M^{-1} J^T \right)^{-1}\) = effective mass.
+b = velocity bias.
+ \(\beta\) = baumgarte constant.

+

Member Typedef Documentation

+ +

◆ Mat22

+ +
+
+ + + + +
using DualAxisConstraintPart::Mat22 = Matrix<2, 2>
+
+ +
+
+ +

◆ Vec2

+ +
+
+ + + + +
using DualAxisConstraintPart::Vec2 = Vector<2>
+
+ +
+
+

Member Function Documentation

+ +

◆ CalculateConstraintProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DualAxisConstraintPart::CalculateConstraintProperties (const BodyinBody1,
Mat44Arg inRotation1,
Vec3Arg inR1PlusU,
const BodyinBody2,
Mat44Arg inRotation2,
Vec3Arg inR2,
Vec3Arg inN1,
Vec3Arg inN2 
)
+
+inline
+
+

Calculate properties used during the functions below All input vectors are in world space

+ +
+
+ +

◆ Deactivate()

+ +
+
+ + + + + +
+ + + + + + + +
void DualAxisConstraintPart::Deactivate ()
+
+inline
+
+ +

Deactivate this constraint.

+ +
+
+ +

◆ GetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
const Vec2 & DualAxisConstraintPart::GetTotalLambda () const
+
+inline
+
+ +

Return lagrange multiplier.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool DualAxisConstraintPart::IsActive () const
+
+inline
+
+ +

Check if constraint is active.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void DualAxisConstraintPart::RestoreState (StateRecorderinStream)
+
+inline
+
+ +

Restore state of this constraint part.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void DualAxisConstraintPart::SaveState (StateRecorderinStream) const
+
+inline
+
+ +

Save state of this constraint part.

+ +
+
+ +

◆ SetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + + +
void DualAxisConstraintPart::SetTotalLambda (const Vec2inLambda)
+
+inline
+
+ +

Override total lagrange multiplier, can be used to set the initial value for warm starting.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool DualAxisConstraintPart::SolvePositionConstraint (BodyioBody1,
BodyioBody2,
Vec3Arg inU,
Vec3Arg inN1,
Vec3Arg inN2,
float inBaumgarte 
) const
+
+inline
+
+

Iteratively update the position constraint. Makes sure C(...) = 0. All input vectors are in world space

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool DualAxisConstraintPart::SolveVelocityConstraint (BodyioBody1,
BodyioBody2,
Vec3Arg inN1,
Vec3Arg inN2 
)
+
+inline
+
+

Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation. All input vectors are in world space

+ +
+
+ +

◆ WarmStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void DualAxisConstraintPart::WarmStart (BodyioBody1,
BodyioBody2,
Vec3Arg inN1,
Vec3Arg inN2,
float inWarmStartImpulseRatio 
)
+
+inline
+
+

Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses All input vectors are in world space

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_dual_axis_constraint_part.js b/class_dual_axis_constraint_part.js new file mode 100644 index 000000000..da0b7f9f4 --- /dev/null +++ b/class_dual_axis_constraint_part.js @@ -0,0 +1,15 @@ +var class_dual_axis_constraint_part = +[ + [ "Mat22", "class_dual_axis_constraint_part.html#a435800bba261861cda7de7879cfb7259", null ], + [ "Vec2", "class_dual_axis_constraint_part.html#a6eab2fd65edd7457de26d07cd77f4797", null ], + [ "CalculateConstraintProperties", "class_dual_axis_constraint_part.html#af13f5a570f5b9f26edf310cf4eab5f23", null ], + [ "Deactivate", "class_dual_axis_constraint_part.html#ad42c35a8c5bd8b609c1a3910a71194f6", null ], + [ "GetTotalLambda", "class_dual_axis_constraint_part.html#a89e53a1884747a98a2b2e8647f219c2c", null ], + [ "IsActive", "class_dual_axis_constraint_part.html#abb7c86b1b65526e284e71c3b126a53e1", null ], + [ "RestoreState", "class_dual_axis_constraint_part.html#a06562f096c62e631bb4e8571a731ffb0", null ], + [ "SaveState", "class_dual_axis_constraint_part.html#a88aa1c3d00a9b0bcdcbbb3fa964dd18f", null ], + [ "SetTotalLambda", "class_dual_axis_constraint_part.html#ab75b06acf448414fefc7001524167795", null ], + [ "SolvePositionConstraint", "class_dual_axis_constraint_part.html#a61414f76e664b04fc7b99b4a96cfe032", null ], + [ "SolveVelocityConstraint", "class_dual_axis_constraint_part.html#a05cd7b92a7bdf55e64e1e924fe941a29", null ], + [ "WarmStart", "class_dual_axis_constraint_part.html#a5eb24d0267626b638b94b33f09efa53b", null ] +]; \ No newline at end of file diff --git a/class_dummy_calculate_solver_steps-members.html b/class_dummy_calculate_solver_steps-members.html new file mode 100644 index 000000000..4da7bb862 --- /dev/null +++ b/class_dummy_calculate_solver_steps-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DummyCalculateSolverSteps Member List
+
+
+ +

This is the complete list of members for DummyCalculateSolverSteps, including all inherited members.

+ + +
operator()(const Type *) constDummyCalculateSolverStepsinline
+
+ + + + diff --git a/class_dummy_calculate_solver_steps.html b/class_dummy_calculate_solver_steps.html new file mode 100644 index 000000000..8f6e07ff6 --- /dev/null +++ b/class_dummy_calculate_solver_steps.html @@ -0,0 +1,163 @@ + + + + + + + +Jolt Physics: DummyCalculateSolverSteps Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DummyCalculateSolverSteps Class Reference
+
+
+ +

Dummy class to replace the steps calculator when we don't need the result. + More...

+ +

#include <CalculateSolverSteps.h>

+ + + + + +

+Public Member Functions

template<class Type >
JPH_INLINE void operator() (const Type *) const
 
+

Detailed Description

+

Dummy class to replace the steps calculator when we don't need the result.

+

Member Function Documentation

+ +

◆ operator()()

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
JPH_INLINE void DummyCalculateSolverSteps::operator() (const Type * ) const
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_dummy_calculate_solver_steps.js b/class_dummy_calculate_solver_steps.js new file mode 100644 index 000000000..6463fb97f --- /dev/null +++ b/class_dummy_calculate_solver_steps.js @@ -0,0 +1,4 @@ +var class_dummy_calculate_solver_steps = +[ + [ "operator()", "class_dummy_calculate_solver_steps.html#ab7e2c25f8cdd044fbba4942cc202081c", null ] +]; \ No newline at end of file diff --git a/class_dyn_matrix-members.html b/class_dyn_matrix-members.html new file mode 100644 index 000000000..b2c641b88 --- /dev/null +++ b/class_dyn_matrix-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
DynMatrix Member List
+
+
+ +

This is the complete list of members for DynMatrix, including all inherited members.

+ + + + + + + +
DynMatrix(const DynMatrix &)=defaultDynMatrix
DynMatrix(uint inRows, uint inCols)DynMatrixinline
GetCols() constDynMatrixinline
GetRows() constDynMatrixinline
operator()(uint inRow, uint inCol) constDynMatrixinline
operator()(uint inRow, uint inCol)DynMatrixinline
+
+ + + + diff --git a/class_dyn_matrix.html b/class_dyn_matrix.html new file mode 100644 index 000000000..7161beed3 --- /dev/null +++ b/class_dyn_matrix.html @@ -0,0 +1,338 @@ + + + + + + + +Jolt Physics: DynMatrix Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
DynMatrix Class Reference
+
+
+ +

Dynamic resizable matrix class. + More...

+ +

#include <DynMatrix.h>

+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 DynMatrix (const DynMatrix &)=default
 Constructor.
 
 DynMatrix (uint inRows, uint inCols)
 
float operator() (uint inRow, uint inCol) const
 Access an element.
 
float & operator() (uint inRow, uint inCol)
 
uint GetCols () const
 Get dimensions.
 
uint GetRows () const
 
+

Detailed Description

+

Dynamic resizable matrix class.

+

Constructor & Destructor Documentation

+ +

◆ DynMatrix() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
DynMatrix::DynMatrix (const DynMatrix)
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ DynMatrix() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
DynMatrix::DynMatrix (uint inRows,
uint inCols 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetCols()

+ +
+
+ + + + + +
+ + + + + + + +
uint DynMatrix::GetCols () const
+
+inline
+
+ +

Get dimensions.

+ +
+
+ +

◆ GetRows()

+ +
+
+ + + + + +
+ + + + + + + +
uint DynMatrix::GetRows () const
+
+inline
+
+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
float & DynMatrix::operator() (uint inRow,
uint inCol 
)
+
+inline
+
+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
float DynMatrix::operator() (uint inRow,
uint inCol 
) const
+
+inline
+
+ +

Access an element.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_dyn_matrix.js b/class_dyn_matrix.js new file mode 100644 index 000000000..22483fba1 --- /dev/null +++ b/class_dyn_matrix.js @@ -0,0 +1,9 @@ +var class_dyn_matrix = +[ + [ "DynMatrix", "class_dyn_matrix.html#a0cb3ea3a8ccc5abca8edbbe6b8d22031", null ], + [ "DynMatrix", "class_dyn_matrix.html#a765a9a91db4ca8fd8789a9529809c478", null ], + [ "GetCols", "class_dyn_matrix.html#a14b89bcd36316ecbf0fd94ea6a7d255e", null ], + [ "GetRows", "class_dyn_matrix.html#a6cacfcbd4295e7cb5a40a8a8dc51bd01", null ], + [ "operator()", "class_dyn_matrix.html#a24fa187bff17009ca0883b1fb01f134d", null ], + [ "operator()", "class_dyn_matrix.html#aa597ffabf9e1b50016a1a3144476676a", null ] +]; \ No newline at end of file diff --git a/class_e_p_a_convex_hull_builder-members.html b/class_e_p_a_convex_hull_builder-members.html new file mode 100644 index 000000000..548bae145 --- /dev/null +++ b/class_e_p_a_convex_hull_builder-members.html @@ -0,0 +1,136 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EPAConvexHullBuilder Member List
+
+
+ +

This is the complete list of members for EPAConvexHullBuilder, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
AddPoint(Triangle *inFacingTriangle, int inIdx, float inClosestDistSq, NewTriangles &outTriangles)EPAConvexHullBuilderinline
cBarycentricEpsilonEPAConvexHullBuilderstatic
cMaxEdgeLengthEPAConvexHullBuilderstatic
cMaxPointsEPAConvexHullBuilderstatic
cMaxTrianglesEPAConvexHullBuilderstatic
cMinTriangleAreaEPAConvexHullBuilderstatic
Edges typedefEPAConvexHullBuilder
EPAConvexHullBuilder(const Points &inPositions)EPAConvexHullBuilderinlineexplicit
FindFacingTriangle(Vec3Arg inPosition, float &outBestDistSq)EPAConvexHullBuilderinline
FreeTriangle(Triangle *inT)EPAConvexHullBuilderinline
HasNextTriangle() constEPAConvexHullBuilderinline
Initialize(int inIdx1, int inIdx2, int inIdx3)EPAConvexHullBuilderinline
NewTriangles typedefEPAConvexHullBuilder
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
PeekClosestTriangleInQueue()EPAConvexHullBuilderinline
PointsBase typedefEPAConvexHullBuilder
PopClosestTriangleFromQueue()EPAConvexHullBuilderinline
Triangles typedefEPAConvexHullBuilder
+
+ + + + diff --git a/class_e_p_a_convex_hull_builder.html b/class_e_p_a_convex_hull_builder.html new file mode 100644 index 000000000..155eeeafc --- /dev/null +++ b/class_e_p_a_convex_hull_builder.html @@ -0,0 +1,668 @@ + + + + + + + +Jolt Physics: EPAConvexHullBuilder Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EPAConvexHullBuilder Class Reference
+
+
+ +

A convex hull builder specifically made for the EPA penetration depth calculation. It trades accuracy for speed and will simply abort of the hull forms defects due to numerical precision problems. + More...

+ +

#include <EPAConvexHullBuilder.h>

+
+Inheritance diagram for EPAConvexHullBuilder:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + +

+Classes

class  Edge
 Class that holds the information of an edge. More...
 
class  Points
 Specialized points list that allows direct access to the size. More...
 
class  Triangle
 Class that holds the information of one triangle. More...
 
class  TriangleFactory
 Factory that creates triangles in a fixed size buffer. More...
 
class  TriangleQueue
 Specialized triangles list that keeps them sorted on closest distance to origin. More...
 
+ + + + + + + + + +

+Public Types

using Edges = StaticArray< Edge, cMaxEdgeLength >
 
using NewTriangles = StaticArray< Triangle *, cMaxEdgeLength >
 
using PointsBase = StaticArray< Vec3, cMaxPoints >
 
using Triangles = StaticArray< Triangle *, cMaxTriangles >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 EPAConvexHullBuilder (const Points &inPositions)
 Constructor.
 
void Initialize (int inIdx1, int inIdx2, int inIdx3)
 Initialize the hull with 3 points.
 
bool HasNextTriangle () const
 Check if there's another triangle to process from the queue.
 
TrianglePeekClosestTriangleInQueue ()
 Access to the next closest triangle to the origin (won't remove it from the queue).
 
TrianglePopClosestTriangleFromQueue ()
 Access to the next closest triangle to the origin and remove it from the queue.
 
TriangleFindFacingTriangle (Vec3Arg inPosition, float &outBestDistSq)
 
bool AddPoint (Triangle *inFacingTriangle, int inIdx, float inClosestDistSq, NewTriangles &outTriangles)
 Add a new point to the convex hull.
 
void FreeTriangle (Triangle *inT)
 Free a triangle.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + +

+Static Public Attributes

static constexpr int cMaxTriangles = 256
 Max triangles in hull.
 
static constexpr int cMaxPoints = cMaxTriangles / 2
 Max number of points in hull.
 
static constexpr int cMaxEdgeLength = 128
 Max number of edges in FindEdge.
 
static constexpr float cMinTriangleArea = 1.0e-10f
 Minimum area of a triangle before, if smaller than this it will not be added to the priority queue.
 
static constexpr float cBarycentricEpsilon = 1.0e-3f
 Epsilon value used to determine if a point is in the interior of a triangle.
 
+

Detailed Description

+

A convex hull builder specifically made for the EPA penetration depth calculation. It trades accuracy for speed and will simply abort of the hull forms defects due to numerical precision problems.

+

Member Typedef Documentation

+ +

◆ Edges

+ + + +

◆ NewTriangles

+ + + +

◆ PointsBase

+ + + +

◆ Triangles

+ + +

Constructor & Destructor Documentation

+ +

◆ EPAConvexHullBuilder()

+ +
+
+ + + + + +
+ + + + + + + + +
EPAConvexHullBuilder::EPAConvexHullBuilder (const PointsinPositions)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ AddPoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool EPAConvexHullBuilder::AddPoint (TriangleinFacingTriangle,
int inIdx,
float inClosestDistSq,
NewTrianglesoutTriangles 
)
+
+inline
+
+ +

Add a new point to the convex hull.

+ +
+
+ +

◆ FindFacingTriangle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Triangle * EPAConvexHullBuilder::FindFacingTriangle (Vec3Arg inPosition,
float & outBestDistSq 
)
+
+inline
+
+

Find the triangle on which inPosition is the furthest to the front Note this function works as long as all points added have been added with AddPoint(..., FLT_MAX).

+ +
+
+ +

◆ FreeTriangle()

+ +
+
+ + + + + +
+ + + + + + + + +
void EPAConvexHullBuilder::FreeTriangle (TriangleinT)
+
+inline
+
+ +

Free a triangle.

+ +
+
+ +

◆ HasNextTriangle()

+ +
+
+ + + + + +
+ + + + + + + +
bool EPAConvexHullBuilder::HasNextTriangle () const
+
+inline
+
+ +

Check if there's another triangle to process from the queue.

+ +
+
+ +

◆ Initialize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void EPAConvexHullBuilder::Initialize (int inIdx1,
int inIdx2,
int inIdx3 
)
+
+inline
+
+ +

Initialize the hull with 3 points.

+ +
+
+ +

◆ PeekClosestTriangleInQueue()

+ +
+
+ + + + + +
+ + + + + + + +
Triangle * EPAConvexHullBuilder::PeekClosestTriangleInQueue ()
+
+inline
+
+ +

Access to the next closest triangle to the origin (won't remove it from the queue).

+ +
+
+ +

◆ PopClosestTriangleFromQueue()

+ +
+
+ + + + + +
+ + + + + + + +
Triangle * EPAConvexHullBuilder::PopClosestTriangleFromQueue ()
+
+inline
+
+ +

Access to the next closest triangle to the origin and remove it from the queue.

+ +
+
+

Member Data Documentation

+ +

◆ cBarycentricEpsilon

+ +
+
+ + + + + +
+ + + + +
constexpr float EPAConvexHullBuilder::cBarycentricEpsilon = 1.0e-3f
+
+staticconstexpr
+
+ +

Epsilon value used to determine if a point is in the interior of a triangle.

+ +
+
+ +

◆ cMaxEdgeLength

+ +
+
+ + + + + +
+ + + + +
constexpr int EPAConvexHullBuilder::cMaxEdgeLength = 128
+
+staticconstexpr
+
+ +

Max number of edges in FindEdge.

+ +
+
+ +

◆ cMaxPoints

+ +
+
+ + + + + +
+ + + + +
constexpr int EPAConvexHullBuilder::cMaxPoints = cMaxTriangles / 2
+
+staticconstexpr
+
+ +

Max number of points in hull.

+ +
+
+ +

◆ cMaxTriangles

+ +
+
+ + + + + +
+ + + + +
constexpr int EPAConvexHullBuilder::cMaxTriangles = 256
+
+staticconstexpr
+
+ +

Max triangles in hull.

+ +
+
+ +

◆ cMinTriangleArea

+ +
+
+ + + + + +
+ + + + +
constexpr float EPAConvexHullBuilder::cMinTriangleArea = 1.0e-10f
+
+staticconstexpr
+
+ +

Minimum area of a triangle before, if smaller than this it will not be added to the priority queue.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_e_p_a_convex_hull_builder.js b/class_e_p_a_convex_hull_builder.js new file mode 100644 index 000000000..0e604e84d --- /dev/null +++ b/class_e_p_a_convex_hull_builder.js @@ -0,0 +1,20 @@ +var class_e_p_a_convex_hull_builder = +[ + [ "Edge", "class_e_p_a_convex_hull_builder_1_1_edge.html", "class_e_p_a_convex_hull_builder_1_1_edge" ], + [ "Points", "class_e_p_a_convex_hull_builder_1_1_points.html", "class_e_p_a_convex_hull_builder_1_1_points" ], + [ "Triangle", "class_e_p_a_convex_hull_builder_1_1_triangle.html", "class_e_p_a_convex_hull_builder_1_1_triangle" ], + [ "TriangleFactory", "class_e_p_a_convex_hull_builder_1_1_triangle_factory.html", "class_e_p_a_convex_hull_builder_1_1_triangle_factory" ], + [ "TriangleQueue", "class_e_p_a_convex_hull_builder_1_1_triangle_queue.html", "class_e_p_a_convex_hull_builder_1_1_triangle_queue" ], + [ "Edges", "class_e_p_a_convex_hull_builder.html#a469e8ddcebb3e76c06176c9580fc186e", null ], + [ "NewTriangles", "class_e_p_a_convex_hull_builder.html#a3fd1bd39cc8988421b7d756fc717ce82", null ], + [ "PointsBase", "class_e_p_a_convex_hull_builder.html#a68f076aa07f0793b45b88b34ebbf493f", null ], + [ "Triangles", "class_e_p_a_convex_hull_builder.html#aea0c331a90c44fd535337c5d0841103e", null ], + [ "EPAConvexHullBuilder", "class_e_p_a_convex_hull_builder.html#ae55b89fd27a0cab9a97a1475245dec9d", null ], + [ "AddPoint", "class_e_p_a_convex_hull_builder.html#ae1b6e6eb12d8723eeab4265f9510b7c2", null ], + [ "FindFacingTriangle", "class_e_p_a_convex_hull_builder.html#aba8a5ac94c67e4c96e5eb533dfca3a83", null ], + [ "FreeTriangle", "class_e_p_a_convex_hull_builder.html#a8a5be413b034888eeb3ccc384e1ca9ec", null ], + [ "HasNextTriangle", "class_e_p_a_convex_hull_builder.html#a233403c7274da823fb6b96b539dc5f95", null ], + [ "Initialize", "class_e_p_a_convex_hull_builder.html#ac6b69723ed9d2c1b815769f9953ef8e7", null ], + [ "PeekClosestTriangleInQueue", "class_e_p_a_convex_hull_builder.html#a0b52c132a7365cd272f3ca14a8f25145", null ], + [ "PopClosestTriangleFromQueue", "class_e_p_a_convex_hull_builder.html#a7095af90fda9266b9ae7258025623499", null ] +]; \ No newline at end of file diff --git a/class_e_p_a_convex_hull_builder.png b/class_e_p_a_convex_hull_builder.png new file mode 100644 index 000000000..6a9ea89de Binary files /dev/null and b/class_e_p_a_convex_hull_builder.png differ diff --git a/class_e_p_a_convex_hull_builder_1_1_edge-members.html b/class_e_p_a_convex_hull_builder_1_1_edge-members.html new file mode 100644 index 000000000..24195e6f0 --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_edge-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EPAConvexHullBuilder::Edge Member List
+
+
+ +

This is the complete list of members for EPAConvexHullBuilder::Edge, including all inherited members.

+ + + + +
mNeighbourEdgeEPAConvexHullBuilder::Edge
mNeighbourTriangleEPAConvexHullBuilder::Edge
mStartIdxEPAConvexHullBuilder::Edge
+
+ + + + diff --git a/class_e_p_a_convex_hull_builder_1_1_edge.html b/class_e_p_a_convex_hull_builder_1_1_edge.html new file mode 100644 index 000000000..d99eb1b54 --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_edge.html @@ -0,0 +1,190 @@ + + + + + + + +Jolt Physics: EPAConvexHullBuilder::Edge Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EPAConvexHullBuilder::Edge Class Reference
+
+
+ +

Class that holds the information of an edge. + More...

+ +

#include <EPAConvexHullBuilder.h>

+ + + + + + + + + + + +

+Public Attributes

TrianglemNeighbourTriangle
 Information about neighbouring triangle.
 
int mNeighbourEdge
 Index in mEdge that specifies edge that this Edge is connected to.
 
int mStartIdx
 Vertex index in mPositions that indicates the start vertex of this edge.
 
+

Detailed Description

+

Class that holds the information of an edge.

+

Member Data Documentation

+ +

◆ mNeighbourEdge

+ +
+
+ + + + +
int EPAConvexHullBuilder::Edge::mNeighbourEdge
+
+ +

Index in mEdge that specifies edge that this Edge is connected to.

+ +
+
+ +

◆ mNeighbourTriangle

+ +
+
+ + + + +
Triangle* EPAConvexHullBuilder::Edge::mNeighbourTriangle
+
+ +

Information about neighbouring triangle.

+

Triangle that neighbours this triangle

+ +
+
+ +

◆ mStartIdx

+ +
+
+ + + + +
int EPAConvexHullBuilder::Edge::mStartIdx
+
+ +

Vertex index in mPositions that indicates the start vertex of this edge.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_e_p_a_convex_hull_builder_1_1_edge.js b/class_e_p_a_convex_hull_builder_1_1_edge.js new file mode 100644 index 000000000..fac273832 --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_edge.js @@ -0,0 +1,6 @@ +var class_e_p_a_convex_hull_builder_1_1_edge = +[ + [ "mNeighbourEdge", "class_e_p_a_convex_hull_builder_1_1_edge.html#aebdd46a0c839c10261765f466b8fa00b", null ], + [ "mNeighbourTriangle", "class_e_p_a_convex_hull_builder_1_1_edge.html#a45f60a45dad1b7eb5e49d513a15229a5", null ], + [ "mStartIdx", "class_e_p_a_convex_hull_builder_1_1_edge.html#a3198dfe7323ed3f875dca4e00821a53c", null ] +]; \ No newline at end of file diff --git a/class_e_p_a_convex_hull_builder_1_1_points-members.html b/class_e_p_a_convex_hull_builder_1_1_points-members.html new file mode 100644 index 000000000..a744193ba --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_points-members.html @@ -0,0 +1,156 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EPAConvexHullBuilder::Points Member List
+
+
+ +

This is the complete list of members for EPAConvexHullBuilder::Points, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
at(size_type inIdx)StaticArray< T, N >inline
at(size_type inIdx) constStaticArray< T, N >inline
back() constStaticArray< T, N >inline
back()StaticArray< T, N >inline
begin() constStaticArray< T, N >inline
begin()StaticArray< T, N >inline
capacity() constStaticArray< T, N >inline
CapacityStaticArray< T, N >static
clear()StaticArray< T, N >inline
const_iterator typedefStaticArray< T, N >
data() constStaticArray< T, N >inline
data()StaticArray< T, N >inline
emplace_back(A &&... inElement)StaticArray< T, N >inline
empty() constStaticArray< T, N >inline
end() constStaticArray< T, N >inline
end()StaticArray< T, N >inline
erase(const_iterator inIter)StaticArray< T, N >inline
erase(const_iterator inBegin, const_iterator inEnd)StaticArray< T, N >inline
front() constStaticArray< T, N >inline
front()StaticArray< T, N >inline
GetSizeRef()EPAConvexHullBuilder::Pointsinline
iterator typedefStaticArray< T, N >
mElementsStaticArray< T, N >protected
mSizeStaticArray< T, N >protected
operator!=(const StaticArray< T, N > &inRHS) constStaticArray< T, N >inline
operator=(const StaticArray< T, N > &inRHS)StaticArray< T, N >inline
operator=(const StaticArray< T, M > &inRHS)StaticArray< T, N >inline
operator==(const StaticArray< T, N > &inRHS) constStaticArray< T, N >inline
operator[](size_type inIdx)StaticArray< T, N >inline
operator[](size_type inIdx) constStaticArray< T, N >inline
pop_back()StaticArray< T, N >inline
push_back(const T &inElement)StaticArray< T, N >inline
resize(size_type inNewSize)StaticArray< T, N >inline
size() constStaticArray< T, N >inline
size_type typedefStaticArray< T, N >
StaticArray()=defaultStaticArray< T, N >
StaticArray(std::initializer_list< T > inList)StaticArray< T, N >inlineexplicit
StaticArray(const StaticArray< T, N > &inRHS)StaticArray< T, N >inline
value_type typedefStaticArray< T, N >
~StaticArray()StaticArray< T, N >inline
+
+ + + + diff --git a/class_e_p_a_convex_hull_builder_1_1_points.html b/class_e_p_a_convex_hull_builder_1_1_points.html new file mode 100644 index 000000000..0cb8545e2 --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_points.html @@ -0,0 +1,277 @@ + + + + + + + +Jolt Physics: EPAConvexHullBuilder::Points Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EPAConvexHullBuilder::Points Class Reference
+
+
+ +

Specialized points list that allows direct access to the size. + More...

+ +

#include <EPAConvexHullBuilder.h>

+
+Inheritance diagram for EPAConvexHullBuilder::Points:
+
+
+ + +StaticArray< T, N > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

size_typeGetSizeRef ()
 
- Public Member Functions inherited from StaticArray< T, N >
 StaticArray ()=default
 Default constructor.
 
 StaticArray (std::initializer_list< T > inList)
 Constructor from initializer list.
 
 StaticArray (const StaticArray< T, N > &inRHS)
 Copy constructor.
 
 ~StaticArray ()
 Destruct all elements.
 
void clear ()
 Destruct all elements and set length to zero.
 
void push_back (const T &inElement)
 Add element to the back of the array.
 
template<class... A>
void emplace_back (A &&... inElement)
 Construct element at the back of the array.
 
void pop_back ()
 Remove element from the back of the array.
 
bool empty () const
 Returns true if there are no elements in the array.
 
size_type size () const
 Returns amount of elements in the array.
 
size_type capacity () const
 Returns maximum amount of elements the array can hold.
 
void resize (size_type inNewSize)
 Resize array to new length.
 
const_iterator begin () const
 Iterators.
 
const_iterator end () const
 
iterator begin ()
 
iterator end ()
 
const T * data () const
 
T * data ()
 
T & operator[] (size_type inIdx)
 Access element.
 
const T & operator[] (size_type inIdx) const
 
T & at (size_type inIdx)
 Access element.
 
const T & at (size_type inIdx) const
 
const T & front () const
 First element in the array.
 
T & front ()
 
const T & back () const
 Last element in the array.
 
T & back ()
 
void erase (const_iterator inIter)
 Remove one element from the array.
 
void erase (const_iterator inBegin, const_iterator inEnd)
 Remove multiple element from the array.
 
StaticArray< T, N > & operator= (const StaticArray< T, N > &inRHS)
 Assignment operator.
 
template<uint M>
StaticArray< T, N > & operator= (const StaticArray< T, M > &inRHS)
 Assignment operator with static array of different max length.
 
bool operator== (const StaticArray< T, N > &inRHS) const
 Comparing arrays.
 
bool operator!= (const StaticArray< T, N > &inRHS) const
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from StaticArray< T, N >
using value_type = T
 
using size_type = uint
 
using const_iterator = const T *
 
using iterator = T *
 
- Static Public Attributes inherited from StaticArray< T, N >
static constexpr uint Capacity = N
 
- Protected Attributes inherited from StaticArray< T, N >
size_type mSize = 0
 
Storage mElements [N]
 
+

Detailed Description

+

Specialized points list that allows direct access to the size.

+

Member Function Documentation

+ +

◆ GetSizeRef()

+ +
+
+ + + + + +
+ + + + + + + +
size_type & EPAConvexHullBuilder::Points::GetSizeRef ()
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_e_p_a_convex_hull_builder_1_1_points.js b/class_e_p_a_convex_hull_builder_1_1_points.js new file mode 100644 index 000000000..804d9ff00 --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_points.js @@ -0,0 +1,4 @@ +var class_e_p_a_convex_hull_builder_1_1_points = +[ + [ "GetSizeRef", "class_e_p_a_convex_hull_builder_1_1_points.html#a5b85570fd72e9b7e9575981fe7464383", null ] +]; \ No newline at end of file diff --git a/class_e_p_a_convex_hull_builder_1_1_points.png b/class_e_p_a_convex_hull_builder_1_1_points.png new file mode 100644 index 000000000..f12edb6ea Binary files /dev/null and b/class_e_p_a_convex_hull_builder_1_1_points.png differ diff --git a/class_e_p_a_convex_hull_builder_1_1_triangle-members.html b/class_e_p_a_convex_hull_builder_1_1_triangle-members.html new file mode 100644 index 000000000..254b4c676 --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_triangle-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EPAConvexHullBuilder::Triangle Member List
+
+
+ +

This is the complete list of members for EPAConvexHullBuilder::Triangle, including all inherited members.

+ + + + + + + + + + + + + + + + + +
GetNextEdge(int inIndex) constEPAConvexHullBuilder::Triangleinline
IsFacing(Vec3Arg inPosition) constEPAConvexHullBuilder::Triangleinline
IsFacingOrigin() constEPAConvexHullBuilder::Triangleinline
mCentroidEPAConvexHullBuilder::Triangle
mClosestLenSqEPAConvexHullBuilder::Triangle
mClosestPointInteriorEPAConvexHullBuilder::Triangle
mEdgeEPAConvexHullBuilder::Triangle
mInQueueEPAConvexHullBuilder::Triangle
mLambdaEPAConvexHullBuilder::Triangle
mLambdaRelativeTo0EPAConvexHullBuilder::Triangle
mNormalEPAConvexHullBuilder::Triangle
mRemovedEPAConvexHullBuilder::Triangle
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Triangle(int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions)EPAConvexHullBuilder::Triangleinline
+
+ + + + diff --git a/class_e_p_a_convex_hull_builder_1_1_triangle.html b/class_e_p_a_convex_hull_builder_1_1_triangle.html new file mode 100644 index 000000000..2b92d3ab9 --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_triangle.html @@ -0,0 +1,470 @@ + + + + + + + +Jolt Physics: EPAConvexHullBuilder::Triangle Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EPAConvexHullBuilder::Triangle Class Reference
+
+
+ +

Class that holds the information of one triangle. + More...

+ +

#include <EPAConvexHullBuilder.h>

+
+Inheritance diagram for EPAConvexHullBuilder::Triangle:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Triangle (int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions)
 Constructor.
 
bool IsFacing (Vec3Arg inPosition) const
 Check if triangle is facing inPosition.
 
bool IsFacingOrigin () const
 Check if triangle is facing the origin.
 
const EdgeGetNextEdge (int inIndex) const
 Get the next edge of edge inIndex.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Edge mEdge [3]
 3 edges of this triangle
 
Vec3 mNormal
 Normal of this triangle, length is 2 times area of triangle.
 
Vec3 mCentroid
 Center of the triangle.
 
float mClosestLenSq = FLT_MAX
 Closest distance^2 from origin to triangle.
 
float mLambda [2]
 Barycentric coordinates of closest point to origin on triangle.
 
bool mLambdaRelativeTo0
 How to calculate the closest point, true: y0 + l0 * (y1 - y0) + l1 * (y2 - y0), false: y1 + l0 * (y0 - y1) + l1 * (y2 - y1)
 
bool mClosestPointInterior = false
 Flag that indicates that the closest point from this triangle to the origin is an interior point.
 
bool mRemoved = false
 Flag that indicates that triangle has been removed.
 
bool mInQueue = false
 Flag that indicates that this triangle was placed in the sorted heap (stays true after it is popped because the triangle is freed by the main EPA algorithm loop)
 
+

Detailed Description

+

Class that holds the information of one triangle.

+

Constructor & Destructor Documentation

+ +

◆ Triangle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_PRECISE_MATH_ON EPAConvexHullBuilder::Triangle::Triangle (int inIdx0,
int inIdx1,
int inIdx2,
const Vec3inPositions 
)
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetNextEdge()

+ +
+
+ + + + + +
+ + + + + + + + +
const Edge & EPAConvexHullBuilder::Triangle::GetNextEdge (int inIndex) const
+
+inline
+
+ +

Get the next edge of edge inIndex.

+ +
+
+ +

◆ IsFacing()

+ +
+
+ + + + + +
+ + + + + + + + +
bool EPAConvexHullBuilder::Triangle::IsFacing (Vec3Arg inPosition) const
+
+inline
+
+ +

Check if triangle is facing inPosition.

+ +
+
+ +

◆ IsFacingOrigin()

+ +
+
+ + + + + +
+ + + + + + + +
bool EPAConvexHullBuilder::Triangle::IsFacingOrigin () const
+
+inline
+
+ +

Check if triangle is facing the origin.

+ +
+
+

Member Data Documentation

+ +

◆ mCentroid

+ +
+
+ + + + +
Vec3 EPAConvexHullBuilder::Triangle::mCentroid
+
+ +

Center of the triangle.

+ +
+
+ +

◆ mClosestLenSq

+ +
+
+ + + + +
float EPAConvexHullBuilder::Triangle::mClosestLenSq = FLT_MAX
+
+ +

Closest distance^2 from origin to triangle.

+ +
+
+ +

◆ mClosestPointInterior

+ +
+
+ + + + +
bool EPAConvexHullBuilder::Triangle::mClosestPointInterior = false
+
+ +

Flag that indicates that the closest point from this triangle to the origin is an interior point.

+ +
+
+ +

◆ mEdge

+ +
+
+ + + + +
Edge EPAConvexHullBuilder::Triangle::mEdge[3]
+
+ +

3 edges of this triangle

+ +
+
+ +

◆ mInQueue

+ +
+
+ + + + +
bool EPAConvexHullBuilder::Triangle::mInQueue = false
+
+ +

Flag that indicates that this triangle was placed in the sorted heap (stays true after it is popped because the triangle is freed by the main EPA algorithm loop)

+ +
+
+ +

◆ mLambda

+ +
+
+ + + + +
float EPAConvexHullBuilder::Triangle::mLambda[2]
+
+ +

Barycentric coordinates of closest point to origin on triangle.

+ +
+
+ +

◆ mLambdaRelativeTo0

+ +
+
+ + + + +
bool EPAConvexHullBuilder::Triangle::mLambdaRelativeTo0
+
+ +

How to calculate the closest point, true: y0 + l0 * (y1 - y0) + l1 * (y2 - y0), false: y1 + l0 * (y0 - y1) + l1 * (y2 - y1)

+ +
+
+ +

◆ mNormal

+ +
+
+ + + + +
Vec3 EPAConvexHullBuilder::Triangle::mNormal
+
+ +

Normal of this triangle, length is 2 times area of triangle.

+ +
+
+ +

◆ mRemoved

+ +
+
+ + + + +
bool EPAConvexHullBuilder::Triangle::mRemoved = false
+
+ +

Flag that indicates that triangle has been removed.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_e_p_a_convex_hull_builder_1_1_triangle.js b/class_e_p_a_convex_hull_builder_1_1_triangle.js new file mode 100644 index 000000000..b98ca9ab9 --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_triangle.js @@ -0,0 +1,16 @@ +var class_e_p_a_convex_hull_builder_1_1_triangle = +[ + [ "Triangle", "class_e_p_a_convex_hull_builder_1_1_triangle.html#a92c48e626fb4a9870c5aa18dd01cba3e", null ], + [ "GetNextEdge", "class_e_p_a_convex_hull_builder_1_1_triangle.html#a6a342146811919c9bdd18ee827e1ee87", null ], + [ "IsFacing", "class_e_p_a_convex_hull_builder_1_1_triangle.html#a60543dea65ee8e56fa77132610302412", null ], + [ "IsFacingOrigin", "class_e_p_a_convex_hull_builder_1_1_triangle.html#a7c793273642a25acaf54c8b2a63a5c3a", null ], + [ "mCentroid", "class_e_p_a_convex_hull_builder_1_1_triangle.html#a0452b1c401d15dcc561dad66766d45a9", null ], + [ "mClosestLenSq", "class_e_p_a_convex_hull_builder_1_1_triangle.html#a89216110b3cac04a274376acaf28d7ae", null ], + [ "mClosestPointInterior", "class_e_p_a_convex_hull_builder_1_1_triangle.html#a0b20e81cb148777b56012bbaf28fb18b", null ], + [ "mEdge", "class_e_p_a_convex_hull_builder_1_1_triangle.html#a73f39336e0cda2338ca31459de675f4f", null ], + [ "mInQueue", "class_e_p_a_convex_hull_builder_1_1_triangle.html#aba25cdfa6f65d1725a9138cc062e98ea", null ], + [ "mLambda", "class_e_p_a_convex_hull_builder_1_1_triangle.html#abf3e8715dbc37a34783e322dc2211074", null ], + [ "mLambdaRelativeTo0", "class_e_p_a_convex_hull_builder_1_1_triangle.html#ad717cb9534ef44896e91c33ab4d5ba0c", null ], + [ "mNormal", "class_e_p_a_convex_hull_builder_1_1_triangle.html#a72b60caa9b8ba3cc6380f23b4fe72a02", null ], + [ "mRemoved", "class_e_p_a_convex_hull_builder_1_1_triangle.html#aec2b4eeafa28ea5ea8a04789e944ae4d", null ] +]; \ No newline at end of file diff --git a/class_e_p_a_convex_hull_builder_1_1_triangle.png b/class_e_p_a_convex_hull_builder_1_1_triangle.png new file mode 100644 index 000000000..2c7116ab4 Binary files /dev/null and b/class_e_p_a_convex_hull_builder_1_1_triangle.png differ diff --git a/class_e_p_a_convex_hull_builder_1_1_triangle_factory-members.html b/class_e_p_a_convex_hull_builder_1_1_triangle_factory-members.html new file mode 100644 index 000000000..6ca90d55c --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_triangle_factory-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EPAConvexHullBuilder::TriangleFactory Member List
+
+
+ +

This is the complete list of members for EPAConvexHullBuilder::TriangleFactory, including all inherited members.

+ + + + + + + +
Clear()EPAConvexHullBuilder::TriangleFactoryinline
CreateTriangle(int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions)EPAConvexHullBuilder::TriangleFactoryinline
FreeTriangle(Triangle *inT)EPAConvexHullBuilder::TriangleFactoryinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
+
+ + + + diff --git a/class_e_p_a_convex_hull_builder_1_1_triangle_factory.html b/class_e_p_a_convex_hull_builder_1_1_triangle_factory.html new file mode 100644 index 000000000..db125e91d --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_triangle_factory.html @@ -0,0 +1,263 @@ + + + + + + + +Jolt Physics: EPAConvexHullBuilder::TriangleFactory Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EPAConvexHullBuilder::TriangleFactory Class Reference
+
+
+ +

Factory that creates triangles in a fixed size buffer. + More...

+ +

#include <EPAConvexHullBuilder.h>

+
+Inheritance diagram for EPAConvexHullBuilder::TriangleFactory:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

void Clear ()
 Return all triangles to the free pool.
 
TriangleCreateTriangle (int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions)
 Allocate a new triangle with 3 indexes.
 
void FreeTriangle (Triangle *inT)
 Free a triangle.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Factory that creates triangles in a fixed size buffer.

+

Member Function Documentation

+ +

◆ Clear()

+ +
+
+ + + + + +
+ + + + + + + +
void EPAConvexHullBuilder::TriangleFactory::Clear ()
+
+inline
+
+ +

Return all triangles to the free pool.

+ +
+
+ +

◆ CreateTriangle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Triangle * EPAConvexHullBuilder::TriangleFactory::CreateTriangle (int inIdx0,
int inIdx1,
int inIdx2,
const Vec3inPositions 
)
+
+inline
+
+ +

Allocate a new triangle with 3 indexes.

+ +
+
+ +

◆ FreeTriangle()

+ +
+
+ + + + + +
+ + + + + + + + +
void EPAConvexHullBuilder::TriangleFactory::FreeTriangle (TriangleinT)
+
+inline
+
+ +

Free a triangle.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_e_p_a_convex_hull_builder_1_1_triangle_factory.js b/class_e_p_a_convex_hull_builder_1_1_triangle_factory.js new file mode 100644 index 000000000..de2f5a1e0 --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_triangle_factory.js @@ -0,0 +1,6 @@ +var class_e_p_a_convex_hull_builder_1_1_triangle_factory = +[ + [ "Clear", "class_e_p_a_convex_hull_builder_1_1_triangle_factory.html#afbc2d65081b44d5574cdfa81e6b908ea", null ], + [ "CreateTriangle", "class_e_p_a_convex_hull_builder_1_1_triangle_factory.html#a10150659d6967c3da5444f42b257eda8", null ], + [ "FreeTriangle", "class_e_p_a_convex_hull_builder_1_1_triangle_factory.html#a9a830ace866a248b1238eed4157e8925", null ] +]; \ No newline at end of file diff --git a/class_e_p_a_convex_hull_builder_1_1_triangle_factory.png b/class_e_p_a_convex_hull_builder_1_1_triangle_factory.png new file mode 100644 index 000000000..1def32249 Binary files /dev/null and b/class_e_p_a_convex_hull_builder_1_1_triangle_factory.png differ diff --git a/class_e_p_a_convex_hull_builder_1_1_triangle_queue-members.html b/class_e_p_a_convex_hull_builder_1_1_triangle_queue-members.html new file mode 100644 index 000000000..ae67d3f0a --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_triangle_queue-members.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EPAConvexHullBuilder::TriangleQueue Member List
+
+
+ +

This is the complete list of members for EPAConvexHullBuilder::TriangleQueue, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
at(size_type inIdx)StaticArray< T, N >inline
at(size_type inIdx) constStaticArray< T, N >inline
back() constStaticArray< T, N >inline
back()StaticArray< T, N >inline
begin() constStaticArray< T, N >inline
begin()StaticArray< T, N >inline
capacity() constStaticArray< T, N >inline
CapacityStaticArray< T, N >static
clear()StaticArray< T, N >inline
const_iterator typedefStaticArray< T, N >
data() constStaticArray< T, N >inline
data()StaticArray< T, N >inline
emplace_back(A &&... inElement)StaticArray< T, N >inline
empty() constStaticArray< T, N >inline
end() constStaticArray< T, N >inline
end()StaticArray< T, N >inline
erase(const_iterator inIter)StaticArray< T, N >inline
erase(const_iterator inBegin, const_iterator inEnd)StaticArray< T, N >inline
front() constStaticArray< T, N >inline
front()StaticArray< T, N >inline
iterator typedefStaticArray< T, N >
mElementsStaticArray< T, N >protected
mSizeStaticArray< T, N >protected
operator!=(const StaticArray< T, N > &inRHS) constStaticArray< T, N >inline
operator=(const StaticArray< T, N > &inRHS)StaticArray< T, N >inline
operator=(const StaticArray< T, M > &inRHS)StaticArray< T, N >inline
operator==(const StaticArray< T, N > &inRHS) constStaticArray< T, N >inline
operator[](size_type inIdx)StaticArray< T, N >inline
operator[](size_type inIdx) constStaticArray< T, N >inline
PeekClosest()EPAConvexHullBuilder::TriangleQueueinline
pop_back()StaticArray< T, N >inline
PopClosest()EPAConvexHullBuilder::TriangleQueueinline
push_back(Triangle *inT)EPAConvexHullBuilder::TriangleQueueinline
StaticArray::push_back(const T &inElement)StaticArray< T, N >inline
resize(size_type inNewSize)StaticArray< T, N >inline
size() constStaticArray< T, N >inline
size_type typedefStaticArray< T, N >
StaticArray()=defaultStaticArray< T, N >
StaticArray(std::initializer_list< T > inList)StaticArray< T, N >inlineexplicit
StaticArray(const StaticArray< T, N > &inRHS)StaticArray< T, N >inline
sTriangleSorter(const Triangle *inT1, const Triangle *inT2)EPAConvexHullBuilder::TriangleQueueinlinestatic
value_type typedefStaticArray< T, N >
~StaticArray()StaticArray< T, N >inline
+
+ + + + diff --git a/class_e_p_a_convex_hull_builder_1_1_triangle_queue.html b/class_e_p_a_convex_hull_builder_1_1_triangle_queue.html new file mode 100644 index 000000000..5984117b9 --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_triangle_queue.html @@ -0,0 +1,386 @@ + + + + + + + +Jolt Physics: EPAConvexHullBuilder::TriangleQueue Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EPAConvexHullBuilder::TriangleQueue Class Reference
+
+
+ +

Specialized triangles list that keeps them sorted on closest distance to origin. + More...

+ +

#include <EPAConvexHullBuilder.h>

+
+Inheritance diagram for EPAConvexHullBuilder::TriangleQueue:
+
+
+ + +StaticArray< T, N > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void push_back (Triangle *inT)
 Add triangle to the list.
 
TrianglePeekClosest ()
 Peek the next closest triangle without removing it.
 
TrianglePopClosest ()
 Get next closest triangle.
 
- Public Member Functions inherited from StaticArray< T, N >
 StaticArray ()=default
 Default constructor.
 
 StaticArray (std::initializer_list< T > inList)
 Constructor from initializer list.
 
 StaticArray (const StaticArray< T, N > &inRHS)
 Copy constructor.
 
 ~StaticArray ()
 Destruct all elements.
 
void clear ()
 Destruct all elements and set length to zero.
 
void push_back (const T &inElement)
 Add element to the back of the array.
 
template<class... A>
void emplace_back (A &&... inElement)
 Construct element at the back of the array.
 
void pop_back ()
 Remove element from the back of the array.
 
bool empty () const
 Returns true if there are no elements in the array.
 
size_type size () const
 Returns amount of elements in the array.
 
size_type capacity () const
 Returns maximum amount of elements the array can hold.
 
void resize (size_type inNewSize)
 Resize array to new length.
 
const_iterator begin () const
 Iterators.
 
const_iterator end () const
 
iterator begin ()
 
iterator end ()
 
const T * data () const
 
T * data ()
 
T & operator[] (size_type inIdx)
 Access element.
 
const T & operator[] (size_type inIdx) const
 
T & at (size_type inIdx)
 Access element.
 
const T & at (size_type inIdx) const
 
const T & front () const
 First element in the array.
 
T & front ()
 
const T & back () const
 Last element in the array.
 
T & back ()
 
void erase (const_iterator inIter)
 Remove one element from the array.
 
void erase (const_iterator inBegin, const_iterator inEnd)
 Remove multiple element from the array.
 
StaticArray< T, N > & operator= (const StaticArray< T, N > &inRHS)
 Assignment operator.
 
template<uint M>
StaticArray< T, N > & operator= (const StaticArray< T, M > &inRHS)
 Assignment operator with static array of different max length.
 
bool operator== (const StaticArray< T, N > &inRHS) const
 Comparing arrays.
 
bool operator!= (const StaticArray< T, N > &inRHS) const
 
+ + + + +

+Static Public Member Functions

static bool sTriangleSorter (const Triangle *inT1, const Triangle *inT2)
 Function to sort triangles on closest distance to origin.
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from StaticArray< T, N >
using value_type = T
 
using size_type = uint
 
using const_iterator = const T *
 
using iterator = T *
 
- Static Public Attributes inherited from StaticArray< T, N >
static constexpr uint Capacity = N
 
- Protected Attributes inherited from StaticArray< T, N >
size_type mSize = 0
 
Storage mElements [N]
 
+

Detailed Description

+

Specialized triangles list that keeps them sorted on closest distance to origin.

+

Member Function Documentation

+ +

◆ PeekClosest()

+ +
+
+ + + + + +
+ + + + + + + +
Triangle * EPAConvexHullBuilder::TriangleQueue::PeekClosest ()
+
+inline
+
+ +

Peek the next closest triangle without removing it.

+ +
+
+ +

◆ PopClosest()

+ +
+
+ + + + + +
+ + + + + + + +
Triangle * EPAConvexHullBuilder::TriangleQueue::PopClosest ()
+
+inline
+
+ +

Get next closest triangle.

+ +
+
+ +

◆ push_back()

+ +
+
+ + + + + +
+ + + + + + + + +
void EPAConvexHullBuilder::TriangleQueue::push_back (TriangleinT)
+
+inline
+
+ +

Add triangle to the list.

+ +
+
+ +

◆ sTriangleSorter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static bool EPAConvexHullBuilder::TriangleQueue::sTriangleSorter (const TriangleinT1,
const TriangleinT2 
)
+
+inlinestatic
+
+ +

Function to sort triangles on closest distance to origin.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_e_p_a_convex_hull_builder_1_1_triangle_queue.js b/class_e_p_a_convex_hull_builder_1_1_triangle_queue.js new file mode 100644 index 000000000..262dea536 --- /dev/null +++ b/class_e_p_a_convex_hull_builder_1_1_triangle_queue.js @@ -0,0 +1,6 @@ +var class_e_p_a_convex_hull_builder_1_1_triangle_queue = +[ + [ "PeekClosest", "class_e_p_a_convex_hull_builder_1_1_triangle_queue.html#a13516948e75d7fd3dca02c1ec7b72504", null ], + [ "PopClosest", "class_e_p_a_convex_hull_builder_1_1_triangle_queue.html#a1d5149d9d7342650de71477538043991", null ], + [ "push_back", "class_e_p_a_convex_hull_builder_1_1_triangle_queue.html#a10ca88c6483424a3c1853759cde34cbd", null ] +]; \ No newline at end of file diff --git a/class_e_p_a_convex_hull_builder_1_1_triangle_queue.png b/class_e_p_a_convex_hull_builder_1_1_triangle_queue.png new file mode 100644 index 000000000..5de5d46b4 Binary files /dev/null and b/class_e_p_a_convex_hull_builder_1_1_triangle_queue.png differ diff --git a/class_e_p_a_penetration_depth-members.html b/class_e_p_a_penetration_depth-members.html new file mode 100644 index 000000000..ec3c58b84 --- /dev/null +++ b/class_e_p_a_penetration_depth-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
EPAPenetrationDepth Member List
+
+
+ +

This is the complete list of members for EPAPenetrationDepth, including all inherited members.

+ + + + + + +
CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inCollisionTolerance, float inPenetrationTolerance, const A &inA, const B &inB, float inConvexRadiusA, float inConvexRadiusB, bool inReturnDeepestPoint, float &ioLambda, Vec3 &outPointA, Vec3 &outPointB, Vec3 &outContactNormal)EPAPenetrationDepthinline
EStatus enum nameEPAPenetrationDepth
GetPenetrationDepth(const AE &inAExcludingConvexRadius, const AI &inAIncludingConvexRadius, float inConvexRadiusA, const BE &inBExcludingConvexRadius, const BI &inBIncludingConvexRadius, float inConvexRadiusB, float inCollisionToleranceSq, float inPenetrationTolerance, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)EPAPenetrationDepthinline
GetPenetrationDepthStepEPA(const AI &inAIncludingConvexRadius, const BI &inBIncludingConvexRadius, float inTolerance, Vec3 &outV, Vec3 &outPointA, Vec3 &outPointB)EPAPenetrationDepthinline
GetPenetrationDepthStepGJK(const AE &inAExcludingConvexRadius, float inConvexRadiusA, const BE &inBExcludingConvexRadius, float inConvexRadiusB, float inTolerance, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)EPAPenetrationDepthinline
+
+ + + + diff --git a/class_e_p_a_penetration_depth.html b/class_e_p_a_penetration_depth.html new file mode 100644 index 000000000..2b826b1d5 --- /dev/null +++ b/class_e_p_a_penetration_depth.html @@ -0,0 +1,579 @@ + + + + + + + +Jolt Physics: EPAPenetrationDepth Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
EPAPenetrationDepth Class Reference
+
+
+ +

#include <EPAPenetrationDepth.h>

+ + + + + +

+Public Types

enum class  EStatus { NotColliding +, Colliding +, Indeterminate + }
 Return code for GetPenetrationDepthStepGJK. More...
 
+ + + + + + + + + + + + + +

+Public Member Functions

template<typename AE , typename BE >
EStatus GetPenetrationDepthStepGJK (const AE &inAExcludingConvexRadius, float inConvexRadiusA, const BE &inBExcludingConvexRadius, float inConvexRadiusB, float inTolerance, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)
 
template<typename AI , typename BI >
bool GetPenetrationDepthStepEPA (const AI &inAIncludingConvexRadius, const BI &inBIncludingConvexRadius, float inTolerance, Vec3 &outV, Vec3 &outPointA, Vec3 &outPointB)
 
template<typename AE , typename AI , typename BE , typename BI >
bool GetPenetrationDepth (const AE &inAExcludingConvexRadius, const AI &inAIncludingConvexRadius, float inConvexRadiusA, const BE &inBExcludingConvexRadius, const BI &inBIncludingConvexRadius, float inConvexRadiusB, float inCollisionToleranceSq, float inPenetrationTolerance, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)
 
template<typename A , typename B >
bool CastShape (Mat44Arg inStart, Vec3Arg inDirection, float inCollisionTolerance, float inPenetrationTolerance, const A &inA, const B &inB, float inConvexRadiusA, float inConvexRadiusB, bool inReturnDeepestPoint, float &ioLambda, Vec3 &outPointA, Vec3 &outPointB, Vec3 &outContactNormal)
 
+

Detailed Description

+

Implementation of Expanding Polytope Algorithm as described in:

+

Proximity Queries and Penetration Depth Computation on 3D Game Objects - Gino van den Bergen

+

The implementation of this algorithm does not completely follow the article, instead of splitting triangles at each edge as in fig. 7 in the article, we build a convex hull (removing any triangles that are facing the new point, thereby avoiding the problem of getting really oblong triangles as mentioned in the article).

+

The algorithm roughly works like:

+
    +
  • Start with a simplex of the Minkowski sum (difference) of two objects that was calculated by GJK
  • +
  • This simplex should contain the origin (or else GJK would have reported: no collision)
  • +
  • In cases where the simplex consists of 1 - 3 points, find some extra support points (of the Minkowski sum) to get to at least 4 points
  • +
  • Convert this into a convex hull with non-zero volume (which includes the origin)
  • +
  • A: Calculate the closest point to the origin for all triangles of the hull and take the closest one
  • +
  • Calculate a new support point (of the Minkowski sum) in this direction and add this point to the convex hull
  • +
  • This will remove all faces that are facing the new point and will create new triangles to fill up the hole
  • +
  • Loop to A until no closer point found
  • +
  • The closest point indicates the position / direction of least penetration
  • +
+

Member Enumeration Documentation

+ +

◆ EStatus

+ +
+
+ + + + + +
+ + + + +
enum class EPAPenetrationDepth::EStatus
+
+strong
+
+ +

Return code for GetPenetrationDepthStepGJK.

+ + + + +
Enumerator
NotColliding 

Returned if the objects don't collide, in this case outPointA/outPointB are invalid.

+
Colliding 

Returned if the objects penetrate.

+
Indeterminate 

Returned if the objects penetrate further than the convex radius. In this case you need to call GetPenetrationDepthStepEPA to get the actual penetration depth.

+
+ +
+
+

Member Function Documentation

+ +

◆ CastShape()

+ +
+
+
+template<typename A , typename B >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool EPAPenetrationDepth::CastShape (Mat44Arg inStart,
Vec3Arg inDirection,
float inCollisionTolerance,
float inPenetrationTolerance,
const A & inA,
const B & inB,
float inConvexRadiusA,
float inConvexRadiusB,
bool inReturnDeepestPoint,
float & ioLambda,
Vec3outPointA,
Vec3outPointB,
Vec3outContactNormal 
)
+
+inline
+
+

Test if a cast shape inA moving from inStart to lambda * inStart.GetTranslation() + inDirection where lambda e [0, ioLambda> intersects inB

+
Parameters
+ + + + + + + + + + + + + + +
inStartStart position and orientation of the convex object
inDirectionDirection of the sweep (ioLambda * inDirection determines length)
inCollisionToleranceThe minimal distance between A and B before they are considered colliding
inPenetrationToleranceA factor that determines the accuracy of the result. If the change of the squared distance is less than inTolerance * current_penetration_depth^2 the algorithm will terminate. Should be bigger or equal to FLT_EPSILON.
inAThe convex object A, must support the GetSupport(Vec3) function.
inBThe convex object B, must support the GetSupport(Vec3) function.
inConvexRadiusAThe convex radius of A, this will be added on all sides to pad A.
inConvexRadiusBThe convex radius of B, this will be added on all sides to pad B.
inReturnDeepestPointIf the shapes are initially intersecting this determines if the EPA algorithm will run to find the deepest point
ioLambdaThe max fraction along the sweep, on output updated with the actual collision fraction.
outPointAis the contact point on A
outPointBis the contact point on B
outContactNormalis either the contact normal when the objects are touching or the penetration axis when the objects are penetrating at the start of the sweep (pointing from A to B, length will not be 1)
+
+
+
Returns
true if the a hit was found, in which case ioLambda, outPointA, outPointB and outSurfaceNormal are updated.
+ +
+
+ +

◆ GetPenetrationDepth()

+ +
+
+
+template<typename AE , typename AI , typename BE , typename BI >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool EPAPenetrationDepth::GetPenetrationDepth (const AE & inAExcludingConvexRadius,
const AI & inAIncludingConvexRadius,
float inConvexRadiusA,
const BE & inBExcludingConvexRadius,
const BI & inBIncludingConvexRadius,
float inConvexRadiusB,
float inCollisionToleranceSq,
float inPenetrationTolerance,
Vec3ioV,
Vec3outPointA,
Vec3outPointB 
)
+
+inline
+
+

This function combines the GJK and EPA steps and is provided as a convenience function. Note: less performant since you're providing all support functions in one go Note 2: You need to initialize ioV, see documentation at GetPenetrationDepthStepGJK!

+ +
+
+ +

◆ GetPenetrationDepthStepEPA()

+ +
+
+
+template<typename AI , typename BI >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool EPAPenetrationDepth::GetPenetrationDepthStepEPA (const AI & inAIncludingConvexRadius,
const BI & inBIncludingConvexRadius,
float inTolerance,
Vec3outV,
Vec3outPointA,
Vec3outPointB 
)
+
+inline
+
+

Calculates penetration depth between two objects, second step (the EPA step)

+
Parameters
+ + + + + + + +
inAIncludingConvexRadiusObject A with convex radius
inBIncludingConvexRadiusObject B with convex radius
inToleranceA factor that determines the accuracy of the result. If the change of the squared distance is less than inTolerance * current_penetration_depth^2 the algorithm will terminate. Should be bigger or equal to FLT_EPSILON.
outVDirection to move B out of collision along the shortest path (magnitude is meaningless)
outPointAPosition on A that has the least amount of penetration
outPointBPosition on B that has the least amount of penetration Use |outPointB - outPointA| to get the distance of penetration
+
+
+
Returns
False if the objects don't collide, in this case outPointA/outPointB are invalid. True if the objects penetrate
+ +
+
+ +

◆ GetPenetrationDepthStepGJK()

+ +
+
+
+template<typename AE , typename BE >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EStatus EPAPenetrationDepth::GetPenetrationDepthStepGJK (const AE & inAExcludingConvexRadius,
float inConvexRadiusA,
const BE & inBExcludingConvexRadius,
float inConvexRadiusB,
float inTolerance,
Vec3ioV,
Vec3outPointA,
Vec3outPointB 
)
+
+inline
+
+

Calculates penetration depth between two objects, first step of two (the GJK step)

+
Parameters
+ + + + + + + + + +
inAExcludingConvexRadiusObject A without convex radius.
inBExcludingConvexRadiusObject B without convex radius.
inConvexRadiusAConvex radius for A.
inConvexRadiusBConvex radius for B.
ioVPass in previously returned value or (1, 0, 0). On return this value is changed to direction to move B out of collision along the shortest path (magnitude is meaningless).
inToleranceMinimal distance before A and B are considered colliding.
outPointAPosition on A that has the least amount of penetration.
outPointBPosition on B that has the least amount of penetration. Use |outPointB - outPointA| to get the distance of penetration.
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_e_p_a_penetration_depth.js b/class_e_p_a_penetration_depth.js new file mode 100644 index 000000000..0ea3b453f --- /dev/null +++ b/class_e_p_a_penetration_depth.js @@ -0,0 +1,12 @@ +var class_e_p_a_penetration_depth = +[ + [ "EStatus", "class_e_p_a_penetration_depth.html#aab59ecfbbefc06c5ac96f9cdc24252d0", [ + [ "NotColliding", "class_e_p_a_penetration_depth.html#aab59ecfbbefc06c5ac96f9cdc24252d0a0497a652be066f6f966a97fa6c67c9c0", null ], + [ "Colliding", "class_e_p_a_penetration_depth.html#aab59ecfbbefc06c5ac96f9cdc24252d0ae0f4d0dafbcf08dd28d80154056ad0d8", null ], + [ "Indeterminate", "class_e_p_a_penetration_depth.html#aab59ecfbbefc06c5ac96f9cdc24252d0aa2d00c353d1f9a5f07852650030dbd53", null ] + ] ], + [ "CastShape", "class_e_p_a_penetration_depth.html#a37aeff94cc5402fd0a98bb299803f543", null ], + [ "GetPenetrationDepth", "class_e_p_a_penetration_depth.html#a8368ab4825b799eb57d6f6cf841087e2", null ], + [ "GetPenetrationDepthStepEPA", "class_e_p_a_penetration_depth.html#acff8a6121c0896e3aabbe3a18019f201", null ], + [ "GetPenetrationDepthStepGJK", "class_e_p_a_penetration_depth.html#a903dc39955aae9b4e9eced5a396eb5a7", null ] +]; \ No newline at end of file diff --git a/class_ellipse-members.html b/class_ellipse-members.html new file mode 100644 index 000000000..76d3563b3 --- /dev/null +++ b/class_ellipse-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Ellipse Member List
+
+
+ +

This is the complete list of members for Ellipse, including all inherited members.

+ + + + + +
Ellipse(float inA, float inB)Ellipseinline
GetClosestPoint(const Float2 &inPoint) constEllipseinline
GetNormal(const Float2 &inPoint) constEllipseinline
IsInside(const Float2 &inPoint) constEllipseinline
+
+ + + + diff --git a/class_ellipse.html b/class_ellipse.html new file mode 100644 index 000000000..a83fc2b86 --- /dev/null +++ b/class_ellipse.html @@ -0,0 +1,262 @@ + + + + + + + +Jolt Physics: Ellipse Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Ellipse Class Reference
+
+
+ +

#include <Ellipse.h>

+ + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Ellipse (float inA, float inB)
 Construct ellipse with radius A along the X-axis and B along the Y-axis.
 
bool IsInside (const Float2 &inPoint) const
 Check if inPoint is inside the ellipse.
 
Float2 GetClosestPoint (const Float2 &inPoint) const
 
Float2 GetNormal (const Float2 &inPoint) const
 Get normal at point inPoint (non-normalized vector)
 
+

Detailed Description

+

Ellipse centered around the origin

See also
https://en.wikipedia.org/wiki/Ellipse
+

Constructor & Destructor Documentation

+ +

◆ Ellipse()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_OVERRIDE_NEW_DELETE Ellipse::Ellipse (float inA,
float inB 
)
+
+inline
+
+ +

Construct ellipse with radius A along the X-axis and B along the Y-axis.

+ +
+
+

Member Function Documentation

+ +

◆ GetClosestPoint()

+ +
+
+ + + + + +
+ + + + + + + + +
Float2 Ellipse::GetClosestPoint (const Float2inPoint) const
+
+inline
+
+

Get the closest point on the ellipse to inPoint Assumes inPoint is outside the ellipse

See also
Rotation Joint Limits in Quaternion Space by Gino van den Bergen, section 10.1 in Game Engine Gems 3.
+ +
+
+ +

◆ GetNormal()

+ +
+
+ + + + + +
+ + + + + + + + +
Float2 Ellipse::GetNormal (const Float2inPoint) const
+
+inline
+
+ +

Get normal at point inPoint (non-normalized vector)

+ +
+
+ +

◆ IsInside()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Ellipse::IsInside (const Float2inPoint) const
+
+inline
+
+ +

Check if inPoint is inside the ellipse.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ellipse.js b/class_ellipse.js new file mode 100644 index 000000000..137228b0e --- /dev/null +++ b/class_ellipse.js @@ -0,0 +1,7 @@ +var class_ellipse = +[ + [ "Ellipse", "class_ellipse.html#a35e3c1cc223333a5e227ea0ff9b120de", null ], + [ "GetClosestPoint", "class_ellipse.html#a07b49662cd16799da0e0b1a1d67a8d84", null ], + [ "GetNormal", "class_ellipse.html#a827cce3196e44e983b0fb525eb9d52ac", null ], + [ "IsInside", "class_ellipse.html#a5592d2e8e6bb560567b3c9236babd545", null ] +]; \ No newline at end of file diff --git a/class_f_p_exception_disable_div_by_zero.html b/class_f_p_exception_disable_div_by_zero.html new file mode 100644 index 000000000..6116ff3b5 --- /dev/null +++ b/class_f_p_exception_disable_div_by_zero.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: FPExceptionDisableDivByZero Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FPExceptionDisableDivByZero Class Reference
+
+
+ +

#include <FPException.h>

+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_f_p_exception_disable_invalid.html b/class_f_p_exception_disable_invalid.html new file mode 100644 index 000000000..6f805c969 --- /dev/null +++ b/class_f_p_exception_disable_invalid.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: FPExceptionDisableInvalid Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FPExceptionDisableInvalid Class Reference
+
+
+ +

#include <FPException.h>

+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_f_p_exceptions_enable.html b/class_f_p_exceptions_enable.html new file mode 100644 index 000000000..51b552477 --- /dev/null +++ b/class_f_p_exceptions_enable.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: FPExceptionsEnable Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FPExceptionsEnable Class Reference
+
+
+ +

Dummy implementations. + More...

+ +

#include <FPException.h>

+

Detailed Description

+

Dummy implementations.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_factory-members.html b/class_factory-members.html new file mode 100644 index 000000000..839fd6076 --- /dev/null +++ b/class_factory-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Factory Member List
+
+
+ +

This is the complete list of members for Factory, including all inherited members.

+ + + + + + + + + +
Clear()Factory
CreateObject(const char *inName)Factory
Find(const char *inName)Factory
Find(uint32 inHash)Factory
GetAllClasses() constFactory
Register(const RTTI *inRTTI)Factory
Register(const RTTI **inRTTIs, uint inNumber)Factory
sInstanceFactorystatic
+
+ + + + diff --git a/class_factory.html b/class_factory.html new file mode 100644 index 000000000..17bbee34f --- /dev/null +++ b/class_factory.html @@ -0,0 +1,334 @@ + + + + + + + +Jolt Physics: Factory Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Factory Class Reference
+
+
+ +

This class is responsible for creating instances of classes based on their name or hash and is mainly used for deserialization of saved data. + More...

+ +

#include <Factory.h>

+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE void * CreateObject (const char *inName)
 Create an object.
 
const RTTIFind (const char *inName)
 Find type info for a specific class by name.
 
const RTTIFind (uint32 inHash)
 Find type info for a specific class by hash.
 
bool Register (const RTTI *inRTTI)
 Register an object with the factory. Returns false on failure.
 
bool Register (const RTTI **inRTTIs, uint inNumber)
 Register a list of objects with the factory. Returns false on failure.
 
void Clear ()
 Unregisters all types.
 
Array< const RTTI * > GetAllClasses () const
 Get all registered classes.
 
+ + + + +

+Static Public Attributes

static FactorysInstance = nullptr
 Singleton factory instance.
 
+

Detailed Description

+

This class is responsible for creating instances of classes based on their name or hash and is mainly used for deserialization of saved data.

+

Member Function Documentation

+ +

◆ Clear()

+ +
+
+ + + + + + + +
void Factory::Clear ()
+
+ +

Unregisters all types.

+ +
+
+ +

◆ CreateObject()

+ +
+
+ + + + + + + + +
void * Factory::CreateObject (const char * inName)
+
+ +

Create an object.

+ +
+
+ +

◆ Find() [1/2]

+ +
+
+ + + + + + + + +
const RTTI * Factory::Find (const char * inName)
+
+ +

Find type info for a specific class by name.

+ +
+
+ +

◆ Find() [2/2]

+ +
+
+ + + + + + + + +
const RTTI * Factory::Find (uint32 inHash)
+
+ +

Find type info for a specific class by hash.

+ +
+
+ +

◆ GetAllClasses()

+ +
+
+ + + + + + + +
Array< const RTTI * > Factory::GetAllClasses () const
+
+ +

Get all registered classes.

+ +
+
+ +

◆ Register() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool Factory::Register (const RTTI ** inRTTIs,
uint inNumber 
)
+
+ +

Register a list of objects with the factory. Returns false on failure.

+ +
+
+ +

◆ Register() [2/2]

+ +
+
+ + + + + + + + +
bool Factory::Register (const RTTIinRTTI)
+
+ +

Register an object with the factory. Returns false on failure.

+ +
+
+

Member Data Documentation

+ +

◆ sInstance

+ +
+
+ + + + + +
+ + + + +
JPH_NAMESPACE_BEGIN Factory * Factory::sInstance = nullptr
+
+static
+
+ +

Singleton factory instance.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_factory.js b/class_factory.js new file mode 100644 index 000000000..9e5448007 --- /dev/null +++ b/class_factory.js @@ -0,0 +1,10 @@ +var class_factory = +[ + [ "Clear", "class_factory.html#a8797d6707e3873ad2a3482d04782dc6a", null ], + [ "CreateObject", "class_factory.html#a8952fd138cc4a7625f009fda6d47f078", null ], + [ "Find", "class_factory.html#a87756d7feaaeabb5cf29b95266ea418b", null ], + [ "Find", "class_factory.html#a962c9d57a3bce85b649c3ebd1259b9a0", null ], + [ "GetAllClasses", "class_factory.html#aa67bdc2e09c649caf997ffbe9ce32fa5", null ], + [ "Register", "class_factory.html#ad0d9b51fede200c603359bc2ffc8bc8f", null ], + [ "Register", "class_factory.html#a2c5c5cba0d5101b5d33302cd102d8546", null ] +]; \ No newline at end of file diff --git a/class_fixed_constraint-members.html b/class_fixed_constraint-members.html new file mode 100644 index 000000000..9bc2fb70a --- /dev/null +++ b/class_fixed_constraint-members.html @@ -0,0 +1,173 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FixedConstraint Member List
+
+
+ +

This is the complete list of members for FixedConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const overrideFixedConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) constConstraintinlinevirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
FixedConstraint(Body &inBody1, Body &inBody2, const FixedConstraintSettings &inSettings)FixedConstraint
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overrideFixedConstraintvirtual
GetConstraintToBody1Matrix() const overrideFixedConstraintinlinevirtual
GetConstraintToBody2Matrix() const overrideFixedConstraintinlinevirtual
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const overrideFixedConstraintinlinevirtual
GetTotalLambdaPosition() constFixedConstraintinline
GetTotalLambdaRotation() constFixedConstraintinline
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
IsActive() const overrideTwoBodyConstraintinlinevirtual
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overrideFixedConstraintvirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart() overrideFixedConstraintvirtual
RestoreState(StateRecorder &inStream) overrideFixedConstraintvirtual
SaveState(StateRecorder &inStream) const overrideFixedConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetupVelocityConstraint(float inDeltaTime) overrideFixedConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overrideFixedConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overrideFixedConstraintvirtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overrideFixedConstraintvirtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_fixed_constraint.html b/class_fixed_constraint.html new file mode 100644 index 000000000..ffd5ada99 --- /dev/null +++ b/class_fixed_constraint.html @@ -0,0 +1,788 @@ + + + + + + + +Jolt Physics: FixedConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FixedConstraint Class Referencefinal
+
+
+ +

#include <FixedConstraint.h>

+
+Inheritance diagram for FixedConstraint:
+
+
+ + +TwoBodyConstraint +Constraint +RefTarget< Constraint > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE FixedConstraint (Body &inBody1, Body &inBody2, const FixedConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintSubType GetSubType () const override
 Get the sub type of a constraint.
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
virtual Mat44 GetConstraintToBody1Matrix () const override
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const override
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
- Public Member Functions inherited from TwoBodyConstraint
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + +

Get Lagrange multiplier from last physics update (the linear/angular impulse applied to satisfy the constraint)

Vec3 GetTotalLambdaPosition () const
 
Vec3 GetTotalLambdaRotation () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from TwoBodyConstraint
BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A fixed constraint welds two bodies together removing all degrees of freedom between them. This variant uses Euler angles for the rotation constraint.

+

Constructor & Destructor Documentation

+ +

◆ FixedConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
FixedConstraint::FixedConstraint (BodyinBody1,
BodyinBody2,
const FixedConstraintSettingsinSettings 
)
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void FixedConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > FixedConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 FixedConstraint::GetConstraintToBody1Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 FixedConstraint::GetConstraintToBody2Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType FixedConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Get the sub type of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetTotalLambdaPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 FixedConstraint::GetTotalLambdaPosition () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaRotation()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 FixedConstraint::GetTotalLambdaRotation () const
+
+inline
+
+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void FixedConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+overridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void FixedConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void FixedConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void FixedConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void FixedConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool FixedConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool FixedConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void FixedConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_fixed_constraint.js b/class_fixed_constraint.js new file mode 100644 index 000000000..1d83b16aa --- /dev/null +++ b/class_fixed_constraint.js @@ -0,0 +1,19 @@ +var class_fixed_constraint = +[ + [ "FixedConstraint", "class_fixed_constraint.html#a570a3365a0a9e3017075d5169cf3344c", null ], + [ "DrawConstraint", "class_fixed_constraint.html#afebbb16e9900672eebfcfa9d10e01b5b", null ], + [ "GetConstraintSettings", "class_fixed_constraint.html#a038968466ddd1ca74b02572145a7a7dc", null ], + [ "GetConstraintToBody1Matrix", "class_fixed_constraint.html#a852ac2a355651a1ba586554d1551bcbc", null ], + [ "GetConstraintToBody2Matrix", "class_fixed_constraint.html#a7782ad778c9f110835e6be7a299bfcc7", null ], + [ "GetSubType", "class_fixed_constraint.html#ae4a226e769a4bab140f41f72a2aff9b5", null ], + [ "GetTotalLambdaPosition", "class_fixed_constraint.html#a1f2e160cf0bac4e5a08a10a4db32fe27", null ], + [ "GetTotalLambdaRotation", "class_fixed_constraint.html#a28f17b6379474d45e29faebfef63e670", null ], + [ "NotifyShapeChanged", "class_fixed_constraint.html#a2c3cfcfafdde98e5cc2ef15e300edbce", null ], + [ "ResetWarmStart", "class_fixed_constraint.html#a4e7dbb8d017aefe0771a27bc9682e009", null ], + [ "RestoreState", "class_fixed_constraint.html#acf092e49dff8f3e45c4a315924ace105", null ], + [ "SaveState", "class_fixed_constraint.html#ae23ae7de219a75c7d80d0e9b8af6ea2c", null ], + [ "SetupVelocityConstraint", "class_fixed_constraint.html#a357bd20813fdf9b5d6d6730ea1cb5cb7", null ], + [ "SolvePositionConstraint", "class_fixed_constraint.html#a654022483ce0d0a4e0cd2574b0846cc1", null ], + [ "SolveVelocityConstraint", "class_fixed_constraint.html#afd06d88db92460bdf49fb4bf5c4e0e99", null ], + [ "WarmStartVelocityConstraint", "class_fixed_constraint.html#ac1bb8544bfebcf9b43d428c44b75809f", null ] +]; \ No newline at end of file diff --git a/class_fixed_constraint.png b/class_fixed_constraint.png new file mode 100644 index 000000000..c886b7651 Binary files /dev/null and b/class_fixed_constraint.png differ diff --git a/class_fixed_constraint_settings-members.html b/class_fixed_constraint_settings-members.html new file mode 100644 index 000000000..7621f066d --- /dev/null +++ b/class_fixed_constraint_settings-members.html @@ -0,0 +1,150 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FixedConstraintSettings Member List
+
+
+ +

This is the complete list of members for FixedConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const overrideFixedConstraintSettingsvirtual
GetRefCount() constRefTarget< ConstraintSettings >inline
mAutoDetectPointFixedConstraintSettings
mAxisX1FixedConstraintSettings
mAxisX2FixedConstraintSettings
mAxisY1FixedConstraintSettings
mAxisY2FixedConstraintSettings
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mPoint1FixedConstraintSettings
mPoint2FixedConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mSpaceFixedConstraintSettings
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideFixedConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overrideFixedConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_fixed_constraint_settings.html b/class_fixed_constraint_settings.html new file mode 100644 index 000000000..669131ede --- /dev/null +++ b/class_fixed_constraint_settings.html @@ -0,0 +1,477 @@ + + + + + + + +Jolt Physics: FixedConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FixedConstraintSettings Class Referencefinal
+
+
+ +

Fixed constraint settings, used to create a fixed constraint. + More...

+ +

#include <FixedConstraint.h>

+
+Inheritance diagram for FixedConstraintSettings:
+
+
+ + +TwoBodyConstraintSettings +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 Create an instance of this constraint.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EConstraintSpace mSpace = EConstraintSpace::WorldSpace
 This determines in which space the constraint is setup, all properties below should be in the specified space.
 
bool mAutoDetectPoint = false
 When mSpace is WorldSpace mPoint1 and mPoint2 can be automatically calculated based on the positions of the bodies when the constraint is created (they will be fixated in their current relative position/orientation). Set this to false if you want to supply the attachment points yourself.
 
RVec3 mPoint1 = RVec3::sZero()
 Body 1 constraint reference frame (space determined by mSpace)
 
Vec3 mAxisX1 = Vec3::sAxisX()
 
Vec3 mAxisY1 = Vec3::sAxisY()
 
RVec3 mPoint2 = RVec3::sZero()
 Body 2 constraint reference frame (space determined by mSpace)
 
Vec3 mAxisX2 = Vec3::sAxisX()
 
Vec3 mAxisY2 = Vec3::sAxisY()
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Fixed constraint settings, used to create a fixed constraint.

+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * FixedConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+overridevirtual
+
+ +

Create an instance of this constraint.

+ +

Implements TwoBodyConstraintSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void FixedConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void FixedConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mAutoDetectPoint

+ +
+
+ + + + +
bool FixedConstraintSettings::mAutoDetectPoint = false
+
+ +

When mSpace is WorldSpace mPoint1 and mPoint2 can be automatically calculated based on the positions of the bodies when the constraint is created (they will be fixated in their current relative position/orientation). Set this to false if you want to supply the attachment points yourself.

+ +
+
+ +

◆ mAxisX1

+ +
+
+ + + + +
Vec3 FixedConstraintSettings::mAxisX1 = Vec3::sAxisX()
+
+ +
+
+ +

◆ mAxisX2

+ +
+
+ + + + +
Vec3 FixedConstraintSettings::mAxisX2 = Vec3::sAxisX()
+
+ +
+
+ +

◆ mAxisY1

+ +
+
+ + + + +
Vec3 FixedConstraintSettings::mAxisY1 = Vec3::sAxisY()
+
+ +
+
+ +

◆ mAxisY2

+ +
+
+ + + + +
Vec3 FixedConstraintSettings::mAxisY2 = Vec3::sAxisY()
+
+ +
+
+ +

◆ mPoint1

+ +
+
+ + + + +
RVec3 FixedConstraintSettings::mPoint1 = RVec3::sZero()
+
+ +

Body 1 constraint reference frame (space determined by mSpace)

+ +
+
+ +

◆ mPoint2

+ +
+
+ + + + +
RVec3 FixedConstraintSettings::mPoint2 = RVec3::sZero()
+
+ +

Body 2 constraint reference frame (space determined by mSpace)

+ +
+
+ +

◆ mSpace

+ +
+
+ + + + +
EConstraintSpace FixedConstraintSettings::mSpace = EConstraintSpace::WorldSpace
+
+ +

This determines in which space the constraint is setup, all properties below should be in the specified space.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_fixed_constraint_settings.js b/class_fixed_constraint_settings.js new file mode 100644 index 000000000..197372512 --- /dev/null +++ b/class_fixed_constraint_settings.js @@ -0,0 +1,14 @@ +var class_fixed_constraint_settings = +[ + [ "Create", "class_fixed_constraint_settings.html#a5633cc7f7c00e518fe57a2623b725256", null ], + [ "RestoreBinaryState", "class_fixed_constraint_settings.html#a68029fead89e2efc72ddec38977086cf", null ], + [ "SaveBinaryState", "class_fixed_constraint_settings.html#a88c2bdb8ffe59b43f61165ab2b6b5909", null ], + [ "mAutoDetectPoint", "class_fixed_constraint_settings.html#a0e99692883e84c77f1f30de2b266ef6f", null ], + [ "mAxisX1", "class_fixed_constraint_settings.html#ae6bfde77eec2f9421c1af7670900bb70", null ], + [ "mAxisX2", "class_fixed_constraint_settings.html#a335f3fa823a9ce1f7a501a659e2764a3", null ], + [ "mAxisY1", "class_fixed_constraint_settings.html#accdfcbf32adb921cbb6e09afdcf94f64", null ], + [ "mAxisY2", "class_fixed_constraint_settings.html#a16437f93ded1ac0e3f7f2651c850950c", null ], + [ "mPoint1", "class_fixed_constraint_settings.html#a14be82859ede4faa881a35deb3b7c741", null ], + [ "mPoint2", "class_fixed_constraint_settings.html#a8226bd6f6ac595c055c22b0934ae8f36", null ], + [ "mSpace", "class_fixed_constraint_settings.html#a971cd8f2570d3236744b0d3a85e23422", null ] +]; \ No newline at end of file diff --git a/class_fixed_constraint_settings.png b/class_fixed_constraint_settings.png new file mode 100644 index 000000000..093c16b27 Binary files /dev/null and b/class_fixed_constraint_settings.png differ diff --git a/class_fixed_size_free_list-members.html b/class_fixed_size_free_list-members.html new file mode 100644 index 000000000..77f9b5c00 --- /dev/null +++ b/class_fixed_size_free_list-members.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
FixedSizeFreeList< Object > Member List
+
+
+ +

This is the complete list of members for FixedSizeFreeList< Object >, including all inherited members.

+ + + + + + + + + + + + + + + +
AddObjectToBatch(Batch &ioBatch, uint32 inObjectIndex)FixedSizeFreeList< Object >inline
cInvalidObjectIndexFixedSizeFreeList< Object >static
ConstructObject(Parameters &&... inParameters)FixedSizeFreeList< Object >inline
DestructObject(uint32 inObjectIndex)FixedSizeFreeList< Object >inline
DestructObject(Object *inObject)FixedSizeFreeList< Object >inline
DestructObjectBatch(Batch &ioBatch)FixedSizeFreeList< Object >inline
Get(uint32 inObjectIndex)FixedSizeFreeList< Object >inline
Get(uint32 inObjectIndex) constFixedSizeFreeList< Object >inline
Init(uint inMaxObjects, uint inPageSize)FixedSizeFreeList< Object >inline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
ObjectStorageSizeFixedSizeFreeList< Object >static
operator=(const NonCopyable &)=deleteNonCopyable
~FixedSizeFreeList()FixedSizeFreeList< Object >inline
+
+ + + + diff --git a/class_fixed_size_free_list.html b/class_fixed_size_free_list.html new file mode 100644 index 000000000..6d2db98c4 --- /dev/null +++ b/class_fixed_size_free_list.html @@ -0,0 +1,535 @@ + + + + + + + +Jolt Physics: FixedSizeFreeList< Object > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
FixedSizeFreeList< Object > Class Template Reference
+
+
+ +

#include <FixedSizeFreeList.h>

+
+Inheritance diagram for FixedSizeFreeList< Object >:
+
+
+ + +NonCopyable + +
+ + + + + +

+Classes

struct  Batch
 A batch of objects that can be destructed. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ~FixedSizeFreeList ()
 Destructor.
 
void Init (uint inMaxObjects, uint inPageSize)
 Initialize the free list, up to inMaxObjects can be allocated.
 
template<typename... Parameters>
uint32 ConstructObject (Parameters &&... inParameters)
 Lockless construct a new object, inParameters are passed on to the constructor.
 
void DestructObject (uint32 inObjectIndex)
 Lockless destruct an object and return it to the free pool.
 
void DestructObject (Object *inObject)
 Lockless destruct an object and return it to the free pool.
 
void AddObjectToBatch (Batch &ioBatch, uint32 inObjectIndex)
 
void DestructObjectBatch (Batch &ioBatch)
 Lockless destruct batch of objects.
 
ObjectGet (uint32 inObjectIndex)
 Access an object by index.
 
const ObjectGet (uint32 inObjectIndex) const
 Access an object by index.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + +

+Static Public Attributes

static const uint32 cInvalidObjectIndex = 0xffffffff
 Invalid index.
 
static const int ObjectStorageSize = sizeof(ObjectStorage)
 Size of an object + bookkeeping for the freelist.
 
+

Detailed Description

+
template<typename Object>
+class FixedSizeFreeList< Object >

Class that allows lock free creation / destruction of objects (unless a new page of objects needs to be allocated) It contains a fixed pool of objects and also allows batching up a lot of objects to be destroyed and doing the actual free in a single atomic operation

+

Constructor & Destructor Documentation

+ +

◆ ~FixedSizeFreeList()

+ +
+
+
+template<typename Object >
+ + + + + +
+ + + + + + + +
JPH_NAMESPACE_BEGIN FixedSizeFreeList< Object >::~FixedSizeFreeList ()
+
+inline
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ AddObjectToBatch()

+ +
+
+
+template<typename Object >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void FixedSizeFreeList< Object >::AddObjectToBatch (BatchioBatch,
uint32 inObjectIndex 
)
+
+inline
+
+

Add a object to an existing batch to be destructed. Adding objects to a batch does not destroy or modify the objects, this will merely link them so that the entire batch can be returned to the free list in a single atomic operation

+ +
+
+ +

◆ ConstructObject()

+ +
+
+
+template<typename Object >
+
+template<typename... Parameters>
+ + + + + +
+ + + + + + + + +
uint32 FixedSizeFreeList< Object >::ConstructObject (Parameters &&... inParameters)
+
+inline
+
+ +

Lockless construct a new object, inParameters are passed on to the constructor.

+ +
+
+ +

◆ DestructObject() [1/2]

+ +
+
+
+template<typename Object >
+ + + + + +
+ + + + + + + + +
void FixedSizeFreeList< Object >::DestructObject (ObjectinObject)
+
+inline
+
+ +

Lockless destruct an object and return it to the free pool.

+ +
+
+ +

◆ DestructObject() [2/2]

+ +
+
+
+template<typename Object >
+ + + + + +
+ + + + + + + + +
void FixedSizeFreeList< Object >::DestructObject (uint32 inObjectIndex)
+
+inline
+
+ +

Lockless destruct an object and return it to the free pool.

+ +
+
+ +

◆ DestructObjectBatch()

+ +
+
+
+template<typename Object >
+ + + + + +
+ + + + + + + + +
void FixedSizeFreeList< Object >::DestructObjectBatch (BatchioBatch)
+
+inline
+
+ +

Lockless destruct batch of objects.

+ +
+
+ +

◆ Get() [1/2]

+ +
+
+
+template<typename Object >
+ + + + + +
+ + + + + + + + +
Object & FixedSizeFreeList< Object >::Get (uint32 inObjectIndex)
+
+inline
+
+ +

Access an object by index.

+ +
+
+ +

◆ Get() [2/2]

+ +
+
+
+template<typename Object >
+ + + + + +
+ + + + + + + + +
const Object & FixedSizeFreeList< Object >::Get (uint32 inObjectIndex) const
+
+inline
+
+ +

Access an object by index.

+ +
+
+ +

◆ Init()

+ +
+
+
+template<typename Object >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void FixedSizeFreeList< Object >::Init (uint inMaxObjects,
uint inPageSize 
)
+
+inline
+
+ +

Initialize the free list, up to inMaxObjects can be allocated.

+ +
+
+

Member Data Documentation

+ +

◆ cInvalidObjectIndex

+ +
+
+
+template<typename Object >
+ + + + + +
+ + + + +
const uint32 FixedSizeFreeList< Object >::cInvalidObjectIndex = 0xffffffff
+
+static
+
+ +

Invalid index.

+ +
+
+ +

◆ ObjectStorageSize

+ +
+
+
+template<typename Object >
+ + + + + +
+ + + + +
const int FixedSizeFreeList< Object >::ObjectStorageSize = sizeof(ObjectStorage)
+
+static
+
+ +

Size of an object + bookkeeping for the freelist.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_fixed_size_free_list.js b/class_fixed_size_free_list.js new file mode 100644 index 000000000..7275f80f5 --- /dev/null +++ b/class_fixed_size_free_list.js @@ -0,0 +1,13 @@ +var class_fixed_size_free_list = +[ + [ "Batch", "struct_fixed_size_free_list_1_1_batch.html", "struct_fixed_size_free_list_1_1_batch" ], + [ "~FixedSizeFreeList", "class_fixed_size_free_list.html#a71571a26f9bc002d714f0178e46177ba", null ], + [ "AddObjectToBatch", "class_fixed_size_free_list.html#afed6e2529117da02be0ddbcc41a509a9", null ], + [ "ConstructObject", "class_fixed_size_free_list.html#a54bb676ae1632d32f3f07dea3e5b4ba8", null ], + [ "DestructObject", "class_fixed_size_free_list.html#a80ff23d54800cfa02da08d6e77171397", null ], + [ "DestructObject", "class_fixed_size_free_list.html#a7446e6f32dac053462c14dfefcb467a0", null ], + [ "DestructObjectBatch", "class_fixed_size_free_list.html#a0bf25bd9e2c35e584e0bc14d40054bc2", null ], + [ "Get", "class_fixed_size_free_list.html#accd9130a85781885d0d5f669ce0a86f1", null ], + [ "Get", "class_fixed_size_free_list.html#afcfce9ec76b8df6291beac70ab699080", null ], + [ "Init", "class_fixed_size_free_list.html#a083084370fcf7fde019f6d4d8b99378e", null ] +]; \ No newline at end of file diff --git a/class_fixed_size_free_list.png b/class_fixed_size_free_list.png new file mode 100644 index 000000000..54b8aa19a Binary files /dev/null and b/class_fixed_size_free_list.png differ diff --git a/class_float2-members.html b/class_float2-members.html new file mode 100644 index 000000000..135854380 --- /dev/null +++ b/class_float2-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Float2 Member List
+
+
+ +

This is the complete list of members for Float2, including all inherited members.

+ + + + + + + + + + +
Float2()=defaultFloat2
Float2(const Float2 &inRHS)=defaultFloat2
Float2(float inX, float inY)Float2inline
operator!=(const Float2 &inRHS) constFloat2inline
operator<<Float2friend
operator=(const Float2 &inRHS)=defaultFloat2
operator==(const Float2 &inRHS) constFloat2inline
xFloat2
yFloat2
+
+ + + + diff --git a/class_float2.html b/class_float2.html new file mode 100644 index 000000000..380204707 --- /dev/null +++ b/class_float2.html @@ -0,0 +1,396 @@ + + + + + + + +Jolt Physics: Float2 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Float2 Class Reference
+
+
+ +

Class that holds 2 floats, used as a storage class mainly. + More...

+ +

#include <Float2.h>

+ + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Float2 ()=default
 Intentionally not initialized for performance reasons.
 
 Float2 (const Float2 &inRHS)=default
 
Float2operator= (const Float2 &inRHS)=default
 
 Float2 (float inX, float inY)
 
bool operator== (const Float2 &inRHS) const
 
bool operator!= (const Float2 &inRHS) const
 
+ + + + + +

+Public Attributes

float x
 
float y
 
+ + + + +

+Friends

ostream & operator<< (ostream &inStream, const Float2 &inV)
 To String.
 
+

Detailed Description

+

Class that holds 2 floats, used as a storage class mainly.

+

Constructor & Destructor Documentation

+ +

◆ Float2() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE Float2::Float2 ()
+
+default
+
+ +

Intentionally not initialized for performance reasons.

+ +
+
+ +

◆ Float2() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
Float2::Float2 (const Float2inRHS)
+
+default
+
+ +
+
+ +

◆ Float2() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Float2::Float2 (float inX,
float inY 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Float2::operator!= (const Float2inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
Float2 & Float2::operator= (const Float2inRHS)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Float2::operator== (const Float2inRHS) const
+
+inline
+
+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ operator<<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ostream & operator<< (ostream & inStream,
const Float2inV 
)
+
+friend
+
+ +

To String.

+ +
+
+

Member Data Documentation

+ +

◆ x

+ +
+
+ + + + +
float Float2::x
+
+ +
+
+ +

◆ y

+ +
+
+ + + + +
float Float2::y
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_float2.js b/class_float2.js new file mode 100644 index 000000000..08fa013d2 --- /dev/null +++ b/class_float2.js @@ -0,0 +1,12 @@ +var class_float2 = +[ + [ "Float2", "class_float2.html#a31453e22a3a71b53b16f33c8ea050fa3", null ], + [ "Float2", "class_float2.html#a242b0c3c7ee3f270ad64a0a3ee6e0286", null ], + [ "Float2", "class_float2.html#abb998c59ebedddb6fe8742b7e7f8e990", null ], + [ "operator!=", "class_float2.html#a96fca2374dcba65591ea81c7d16b9aa9", null ], + [ "operator=", "class_float2.html#ae430c9638f1d2c59dff1a3ef1367709c", null ], + [ "operator==", "class_float2.html#a7ac3a21d32590f4e2fb7d5d12800175d", null ], + [ "operator<<", "class_float2.html#af71f1835f0b82c7faac9d7c3d27558e8", null ], + [ "x", "class_float2.html#a9f4577102bc9a7bdf9355b5776301485", null ], + [ "y", "class_float2.html#a53deb463e8335f53a8f5454c9c3c0503", null ] +]; \ No newline at end of file diff --git a/class_float3-members.html b/class_float3-members.html new file mode 100644 index 000000000..2eafdb17c --- /dev/null +++ b/class_float3-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Float3 Member List
+
+
+ +

This is the complete list of members for Float3, including all inherited members.

+ + + + + + + + + + + +
Float3()=defaultFloat3
Float3(const Float3 &inRHS)=defaultFloat3
Float3(float inX, float inY, float inZ)Float3inline
operator!=(const Float3 &inRHS) constFloat3inline
operator=(const Float3 &inRHS)=defaultFloat3
operator==(const Float3 &inRHS) constFloat3inline
operator[](int inCoordinate) constFloat3inline
xFloat3
yFloat3
zFloat3
+
+ + + + diff --git a/class_float3.html b/class_float3.html new file mode 100644 index 000000000..c45bfe343 --- /dev/null +++ b/class_float3.html @@ -0,0 +1,400 @@ + + + + + + + +Jolt Physics: Float3 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Float3 Class Reference
+
+
+ +

Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations. + More...

+ +

#include <Float3.h>

+ + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Float3 ()=default
 Intentionally not initialized for performance reasons.
 
 Float3 (const Float3 &inRHS)=default
 
Float3operator= (const Float3 &inRHS)=default
 
constexpr Float3 (float inX, float inY, float inZ)
 
float operator[] (int inCoordinate) const
 
bool operator== (const Float3 &inRHS) const
 
bool operator!= (const Float3 &inRHS) const
 
+ + + + + + + +

+Public Attributes

float x
 
float y
 
float z
 
+

Detailed Description

+

Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations.

+

Constructor & Destructor Documentation

+ +

◆ Float3() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE Float3::Float3 ()
+
+default
+
+ +

Intentionally not initialized for performance reasons.

+ +
+
+ +

◆ Float3() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
Float3::Float3 (const Float3inRHS)
+
+default
+
+ +
+
+ +

◆ Float3() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
constexpr Float3::Float3 (float inX,
float inY,
float inZ 
)
+
+inlineconstexpr
+
+ +
+
+

Member Function Documentation

+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Float3::operator!= (const Float3inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
Float3 & Float3::operator= (const Float3inRHS)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Float3::operator== (const Float3inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator[]()

+ +
+
+ + + + + +
+ + + + + + + + +
float Float3::operator[] (int inCoordinate) const
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ x

+ +
+
+ + + + +
float Float3::x
+
+ +
+
+ +

◆ y

+ +
+
+ + + + +
float Float3::y
+
+ +
+
+ +

◆ z

+ +
+
+ + + + +
float Float3::z
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_float3.js b/class_float3.js new file mode 100644 index 000000000..070ea9fee --- /dev/null +++ b/class_float3.js @@ -0,0 +1,13 @@ +var class_float3 = +[ + [ "Float3", "class_float3.html#aba5b9d056afa088269bfe243c44380b7", null ], + [ "Float3", "class_float3.html#ae71f5544521095ffdeed2109dbf54d96", null ], + [ "Float3", "class_float3.html#a4d2277dc1efc95eb284c72c1313809fc", null ], + [ "operator!=", "class_float3.html#acc6115cac5c0209c110e319de7a5f01a", null ], + [ "operator=", "class_float3.html#aaafccfdb546279ec28fcabc6c3dda3e8", null ], + [ "operator==", "class_float3.html#a6fdec8037d0ca21ee14cca74ddd00a71", null ], + [ "operator[]", "class_float3.html#a89ad9c4781e5a529fd150e72b1e234ee", null ], + [ "x", "class_float3.html#ac596e0cf37e992db116ebe169ec6cd2d", null ], + [ "y", "class_float3.html#a86c923e4acaf36c9d325bca554b3f3a9", null ], + [ "z", "class_float3.html#a921399d2713f5b390fcf6060d7ccac00", null ] +]; \ No newline at end of file diff --git a/class_float4-members.html b/class_float4-members.html new file mode 100644 index 000000000..dc68b3f7d --- /dev/null +++ b/class_float4-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Float4 Member List
+
+
+ +

This is the complete list of members for Float4, including all inherited members.

+ + + + + + + + + +
Float4()=defaultFloat4
Float4(const Float4 &inRHS)=defaultFloat4
Float4(float inX, float inY, float inZ, float inW)Float4inline
operator[](int inCoordinate) constFloat4inline
wFloat4
xFloat4
yFloat4
zFloat4
+
+ + + + diff --git a/class_float4.html b/class_float4.html new file mode 100644 index 000000000..a2875d874 --- /dev/null +++ b/class_float4.html @@ -0,0 +1,338 @@ + + + + + + + +Jolt Physics: Float4 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Float4 Class Reference
+
+
+ +

Class that holds 4 float values. Convert to Vec4 to perform calculations. + More...

+ +

#include <Float4.h>

+ + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Float4 ()=default
 Intentionally not initialized for performance reasons.
 
 Float4 (const Float4 &inRHS)=default
 
 Float4 (float inX, float inY, float inZ, float inW)
 
float operator[] (int inCoordinate) const
 
+ + + + + + + + + +

+Public Attributes

float x
 
float y
 
float z
 
float w
 
+

Detailed Description

+

Class that holds 4 float values. Convert to Vec4 to perform calculations.

+

Constructor & Destructor Documentation

+ +

◆ Float4() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE Float4::Float4 ()
+
+default
+
+ +

Intentionally not initialized for performance reasons.

+ +
+
+ +

◆ Float4() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
Float4::Float4 (const Float4inRHS)
+
+default
+
+ +
+
+ +

◆ Float4() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Float4::Float4 (float inX,
float inY,
float inZ,
float inW 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ operator[]()

+ +
+
+ + + + + +
+ + + + + + + + +
float Float4::operator[] (int inCoordinate) const
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ w

+ +
+
+ + + + +
float Float4::w
+
+ +
+
+ +

◆ x

+ +
+
+ + + + +
float Float4::x
+
+ +
+
+ +

◆ y

+ +
+
+ + + + +
float Float4::y
+
+ +
+
+ +

◆ z

+ +
+
+ + + + +
float Float4::z
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_float4.js b/class_float4.js new file mode 100644 index 000000000..717b68164 --- /dev/null +++ b/class_float4.js @@ -0,0 +1,11 @@ +var class_float4 = +[ + [ "Float4", "class_float4.html#ad5656578ebf1056a5763c1d5c33dd75c", null ], + [ "Float4", "class_float4.html#a541c6d53368a661afb71418ce24776e4", null ], + [ "Float4", "class_float4.html#a767b3a966085ef9e5a0909df91cee272", null ], + [ "operator[]", "class_float4.html#a20f4a71de6acfa030da5f1e3ec5e2577", null ], + [ "w", "class_float4.html#a6d5d9754a656360d126abe8eb5cd2f52", null ], + [ "x", "class_float4.html#a1d8d54947f537668f63257dabc353ee9", null ], + [ "y", "class_float4.html#a1dd630bc54c845b6513791b7b43de1c0", null ], + [ "z", "class_float4.html#a67246a6a476dc5966564d861ed637d56", null ] +]; \ No newline at end of file diff --git a/class_g_j_k_closest_point-members.html b/class_g_j_k_closest_point-members.html new file mode 100644 index 000000000..15c45511a --- /dev/null +++ b/class_g_j_k_closest_point-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GJKClosestPoint Member List
+
+
+ +

This is the complete list of members for GJKClosestPoint, including all inherited members.

+ + + + + + + + + + +
CastRay(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inTolerance, const A &inA, float &ioLambda)GJKClosestPointinline
CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float &ioLambda)GJKClosestPointinline
CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float inConvexRadiusA, float inConvexRadiusB, float &ioLambda, Vec3 &outPointA, Vec3 &outPointB, Vec3 &outSeparatingAxis)GJKClosestPointinline
GetClosestPoints(const A &inA, const B &inB, float inTolerance, float inMaxDistSq, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)GJKClosestPointinline
GetClosestPointsSimplex(Vec3 *outY, Vec3 *outP, Vec3 *outQ, uint &outNumPoints) constGJKClosestPointinline
Intersects(const A &inA, const B &inB, float inTolerance, Vec3 &ioV)GJKClosestPointinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
+
+ + + + diff --git a/class_g_j_k_closest_point.html b/class_g_j_k_closest_point.html new file mode 100644 index 000000000..6bbe1a86c --- /dev/null +++ b/class_g_j_k_closest_point.html @@ -0,0 +1,607 @@ + + + + + + + +Jolt Physics: GJKClosestPoint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GJKClosestPoint Class Reference
+
+
+ +

#include <GJKClosestPoint.h>

+
+Inheritance diagram for GJKClosestPoint:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

template<typename A , typename B >
bool Intersects (const A &inA, const B &inB, float inTolerance, Vec3 &ioV)
 
template<typename A , typename B >
float GetClosestPoints (const A &inA, const B &inB, float inTolerance, float inMaxDistSq, Vec3 &ioV, Vec3 &outPointA, Vec3 &outPointB)
 
void GetClosestPointsSimplex (Vec3 *outY, Vec3 *outP, Vec3 *outQ, uint &outNumPoints) const
 
template<typename A >
bool CastRay (Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inTolerance, const A &inA, float &ioLambda)
 
template<typename A , typename B >
bool CastShape (Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float &ioLambda)
 
template<typename A , typename B >
bool CastShape (Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float inConvexRadiusA, float inConvexRadiusB, float &ioLambda, Vec3 &outPointA, Vec3 &outPointB, Vec3 &outSeparatingAxis)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Convex vs convex collision detection Based on: A Fast and Robust GJK Implementation for Collision Detection of Convex Objects - Gino van den Bergen

+

Member Function Documentation

+ +

◆ CastRay()

+ +
+
+
+template<typename A >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool GJKClosestPoint::CastRay (Vec3Arg inRayOrigin,
Vec3Arg inRayDirection,
float inTolerance,
const A & inA,
float & ioLambda 
)
+
+inline
+
+

Test if a ray inRayOrigin + lambda * inRayDirection for lambda e [0, ioLambda> intersects inA

+

Code based upon: Ray Casting against General Convex Objects with Application to Continuous Collision Detection - Gino van den Bergen

+
Parameters
+ + + + + + +
inRayOriginOrigin of the ray
inRayDirectionDirection of the ray (ioLambda * inDirection determines length)
inToleranceThe minimal distance between the ray and A before it is considered colliding
inAA convex object that has the GetSupport(Vec3) function
ioLambdaThe max fraction along the ray, on output updated with the actual collision fraction.
+
+
+
Returns
true if a hit was found, ioLambda is the solution for lambda.
+ +
+
+ +

◆ CastShape() [1/2]

+ +
+
+
+template<typename A , typename B >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool GJKClosestPoint::CastShape (Mat44Arg inStart,
Vec3Arg inDirection,
float inTolerance,
const A & inA,
const B & inB,
float & ioLambda 
)
+
+inline
+
+

Test if a cast shape inA moving from inStart to lambda * inStart.GetTranslation() + inDirection where lambda e [0, ioLambda> intersects inB

+
Parameters
+ + + + + + + +
inStartStart position and orientation of the convex object
inDirectionDirection of the sweep (ioLambda * inDirection determines length)
inToleranceThe minimal distance between A and B before they are considered colliding
inAThe convex object A, must support the GetSupport(Vec3) function.
inBThe convex object B, must support the GetSupport(Vec3) function.
ioLambdaThe max fraction along the sweep, on output updated with the actual collision fraction.
+
+
+
Returns
true if a hit was found, ioLambda is the solution for lambda.
+ +
+
+ +

◆ CastShape() [2/2]

+ +
+
+
+template<typename A , typename B >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool GJKClosestPoint::CastShape (Mat44Arg inStart,
Vec3Arg inDirection,
float inTolerance,
const A & inA,
const B & inB,
float inConvexRadiusA,
float inConvexRadiusB,
float & ioLambda,
Vec3outPointA,
Vec3outPointB,
Vec3outSeparatingAxis 
)
+
+inline
+
+

Test if a cast shape inA moving from inStart to lambda * inStart.GetTranslation() + inDirection where lambda e [0, ioLambda> intersects inB

+
Parameters
+ + + + + + + + + + + + +
inStartStart position and orientation of the convex object
inDirectionDirection of the sweep (ioLambda * inDirection determines length)
inToleranceThe minimal distance between A and B before they are considered colliding
inAThe convex object A, must support the GetSupport(Vec3) function.
inBThe convex object B, must support the GetSupport(Vec3) function.
inConvexRadiusAThe convex radius of A, this will be added on all sides to pad A.
inConvexRadiusBThe convex radius of B, this will be added on all sides to pad B.
ioLambdaThe max fraction along the sweep, on output updated with the actual collision fraction.
outPointAis the contact point on A (if outSeparatingAxis is near zero, this may not be not the deepest point)
outPointBis the contact point on B (if outSeparatingAxis is near zero, this may not be not the deepest point)
outSeparatingAxisOn return this will contain a vector that points from A to B along the smallest distance of separation. The length of this vector indicates the separation of A and B without their convex radius. If it is near zero, the direction may not be accurate as the bodies may overlap when lambda = 0.
+
+
+
Returns
true if a hit was found, ioLambda is the solution for lambda and outPoint and outSeparatingAxis are valid.
+ +
+
+ +

◆ GetClosestPoints()

+ +
+
+
+template<typename A , typename B >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
float GJKClosestPoint::GetClosestPoints (const A & inA,
const B & inB,
float inTolerance,
float inMaxDistSq,
Vec3ioV,
Vec3outPointA,
Vec3outPointB 
)
+
+inline
+
+

Get closest points between inA and inB

+
Parameters
+ + + + + + + +
inAThe convex object A, must support the GetSupport(Vec3) function.
inBThe convex object B, must support the GetSupport(Vec3) function.
inToleranceThe minimal distance between A and B before the objects are considered colliding and processing is terminated.
inMaxDistSqThe maximum squared distance between A and B before the objects are considered infinitely far away and processing is terminated.
ioVInitial guess for the separating axis. Start with any non-zero vector if you don't know. If return value is 0, ioV = (0, 0, 0). If the return value is bigger than 0 but smaller than FLT_MAX, ioV will be the separating axis in the direction from A to B and its length the squared distance between A and B. If the return value is FLT_MAX, ioV will be the separating axis in the direction from A to B and the magnitude of the vector is meaningless.
outPointA,outPointBIf the return value is 0 the points are invalid. If the return value is bigger than 0 but smaller than FLT_MAX these will contain the closest point on A and B. If the return value is FLT_MAX the points are invalid.
+
+
+
Returns
The squared distance between A and B or FLT_MAX when they are further away than inMaxDistSq.
+ +
+
+ +

◆ GetClosestPointsSimplex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void GJKClosestPoint::GetClosestPointsSimplex (Vec3outY,
Vec3outP,
Vec3outQ,
uintoutNumPoints 
) const
+
+inline
+
+

Get the resulting simplex after the GetClosestPoints algorithm finishes. If it returned a squared distance of 0, the origin will be contained in the simplex.

+ +
+
+ +

◆ Intersects()

+ +
+
+
+template<typename A , typename B >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool GJKClosestPoint::Intersects (const A & inA,
const B & inB,
float inTolerance,
Vec3ioV 
)
+
+inline
+
+

Test if inA and inB intersect

+
Parameters
+ + + + + +
inAThe convex object A, must support the GetSupport(Vec3) function.
inBThe convex object B, must support the GetSupport(Vec3) function.
inToleranceMinimal distance between objects when the objects are considered to be colliding
ioVis used as initial separating axis (provide a zero vector if you don't know yet)
+
+
+
Returns
True if they intersect (in which case ioV = (0, 0, 0)). False if they don't intersect in which case ioV is a separating axis in the direction from A to B (magnitude is meaningless)
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_g_j_k_closest_point.js b/class_g_j_k_closest_point.js new file mode 100644 index 000000000..c65965dce --- /dev/null +++ b/class_g_j_k_closest_point.js @@ -0,0 +1,9 @@ +var class_g_j_k_closest_point = +[ + [ "CastRay", "class_g_j_k_closest_point.html#ade3cde48252b6f77f749f9ac29685ec7", null ], + [ "CastShape", "class_g_j_k_closest_point.html#a66d20557ad6d34a1c1f29b6df058b523", null ], + [ "CastShape", "class_g_j_k_closest_point.html#aa5b19da7e23744cb5c1af8fe2fee2940", null ], + [ "GetClosestPoints", "class_g_j_k_closest_point.html#abb7cfdd49d708007d75b4c2e9b90ebb9", null ], + [ "GetClosestPointsSimplex", "class_g_j_k_closest_point.html#a73d6f276fb275026a0126ca7361fb2bf", null ], + [ "Intersects", "class_g_j_k_closest_point.html#a20ab4d36efcf62ceae244ec75eb4bc23", null ] +]; \ No newline at end of file diff --git a/class_g_j_k_closest_point.png b/class_g_j_k_closest_point.png new file mode 100644 index 000000000..6ff4719fd Binary files /dev/null and b/class_g_j_k_closest_point.png differ diff --git a/class_gear_constraint-members.html b/class_gear_constraint-members.html new file mode 100644 index 000000000..20bd47a02 --- /dev/null +++ b/class_gear_constraint-members.html @@ -0,0 +1,173 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GearConstraint Member List
+
+
+ +

This is the complete list of members for GearConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const overrideGearConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) constConstraintinlinevirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
GearConstraint(Body &inBody1, Body &inBody2, const GearConstraintSettings &inSettings)GearConstraint
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overrideGearConstraintvirtual
GetConstraintToBody1Matrix() const overrideGearConstraintvirtual
GetConstraintToBody2Matrix() const overrideGearConstraintvirtual
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const overrideGearConstraintinlinevirtual
GetTotalLambda() constGearConstraintinline
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
IsActive() const overrideTwoBodyConstraintinlinevirtual
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overrideGearConstraintinlinevirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart() overrideGearConstraintvirtual
RestoreState(StateRecorder &inStream) overrideGearConstraintvirtual
SaveState(StateRecorder &inStream) const overrideGearConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetConstraints(const Constraint *inGear1, const Constraint *inGear2)GearConstraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetupVelocityConstraint(float inDeltaTime) overrideGearConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overrideGearConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overrideGearConstraintvirtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overrideGearConstraintvirtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_gear_constraint.html b/class_gear_constraint.html new file mode 100644 index 000000000..a4582c7b7 --- /dev/null +++ b/class_gear_constraint.html @@ -0,0 +1,802 @@ + + + + + + + +Jolt Physics: GearConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GearConstraint Class Referencefinal
+
+
+ +

#include <GearConstraint.h>

+
+Inheritance diagram for GearConstraint:
+
+
+ + +TwoBodyConstraint +Constraint +RefTarget< Constraint > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE GearConstraint (Body &inBody1, Body &inBody2, const GearConstraintSettings &inSettings)
 Construct gear constraint.
 
virtual EConstraintSubType GetSubType () const override
 Get the sub type of a constraint.
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
virtual Mat44 GetConstraintToBody1Matrix () const override
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const override
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
void SetConstraints (const Constraint *inGear1, const Constraint *inGear2)
 The constraints that constrain both gears (2 hinges), optional and used to calculate the rotation error and fix numerical drift.
 
- Public Member Functions inherited from TwoBodyConstraint
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + +

Get Lagrange multiplier from last physics update (the angular impulse applied to satisfy the constraint)

float GetTotalLambda () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from TwoBodyConstraint
BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A gear constraint constrains the rotation of body1 to the rotation of body 2 using a gear. Note that this constraint needs to be used in conjunction with a two hinge constraints.

+

Constructor & Destructor Documentation

+ +

◆ GearConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GearConstraint::GearConstraint (BodyinBody1,
BodyinBody2,
const GearConstraintSettingsinSettings 
)
+
+ +

Construct gear constraint.

+ +
+
+

Member Function Documentation

+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void GearConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > GearConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 GearConstraint::GetConstraintToBody1Matrix () const
+
+overridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 GearConstraint::GetConstraintToBody2Matrix () const
+
+overridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType GearConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Get the sub type of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float GearConstraint::GetTotalLambda () const
+
+inline
+
+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void GearConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+inlineoverridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void GearConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void GearConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void GearConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetConstraints()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void GearConstraint::SetConstraints (const ConstraintinGear1,
const ConstraintinGear2 
)
+
+inline
+
+ +

The constraints that constrain both gears (2 hinges), optional and used to calculate the rotation error and fix numerical drift.

+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void GearConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool GearConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool GearConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void GearConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_gear_constraint.js b/class_gear_constraint.js new file mode 100644 index 000000000..8b5719362 --- /dev/null +++ b/class_gear_constraint.js @@ -0,0 +1,19 @@ +var class_gear_constraint = +[ + [ "GearConstraint", "class_gear_constraint.html#a0eedf414f9aa01e1ceab2a400c2b2a02", null ], + [ "DrawConstraint", "class_gear_constraint.html#a235385454fa5996217ddd2f7085f47d5", null ], + [ "GetConstraintSettings", "class_gear_constraint.html#a43c6cb408e182a507528fc2397480a62", null ], + [ "GetConstraintToBody1Matrix", "class_gear_constraint.html#a6e107e42ffd882394b0affda86ef6008", null ], + [ "GetConstraintToBody2Matrix", "class_gear_constraint.html#a100fdd22b7dc94df36529b4be8c27b60", null ], + [ "GetSubType", "class_gear_constraint.html#ad760c5afd1f0a52d595b4788247d892c", null ], + [ "GetTotalLambda", "class_gear_constraint.html#a0e2ee073695aedec977446582365ed3b", null ], + [ "NotifyShapeChanged", "class_gear_constraint.html#a16af2cebb97b81fb5d7061a810f22bd7", null ], + [ "ResetWarmStart", "class_gear_constraint.html#afac138625fdede0bd0c4775edc103878", null ], + [ "RestoreState", "class_gear_constraint.html#acdb35bebda74e178f96d516277dda140", null ], + [ "SaveState", "class_gear_constraint.html#a31f12343d049e8c9a48136bb1a103b73", null ], + [ "SetConstraints", "class_gear_constraint.html#a7464b55c817e3ca115ea18537245ccee", null ], + [ "SetupVelocityConstraint", "class_gear_constraint.html#aa9f34d205ecc9897c658025438c8a411", null ], + [ "SolvePositionConstraint", "class_gear_constraint.html#a4c71050abebf55fe2a8f1c5ad7d0e4ee", null ], + [ "SolveVelocityConstraint", "class_gear_constraint.html#ad15d60113726c103c9971694c47ef58b", null ], + [ "WarmStartVelocityConstraint", "class_gear_constraint.html#a17abbcffc7110afc9caa7c169733ff60", null ] +]; \ No newline at end of file diff --git a/class_gear_constraint.png b/class_gear_constraint.png new file mode 100644 index 000000000..f37855d5f Binary files /dev/null and b/class_gear_constraint.png differ diff --git a/class_gear_constraint_part-members.html b/class_gear_constraint_part-members.html new file mode 100644 index 000000000..4b3cbe4db --- /dev/null +++ b/class_gear_constraint_part-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GearConstraintPart Member List
+
+
+ +

This is the complete list of members for GearConstraintPart, including all inherited members.

+ + + + + + + + + + +
CalculateConstraintProperties(const Body &inBody1, Vec3Arg inWorldSpaceHingeAxis1, const Body &inBody2, Vec3Arg inWorldSpaceHingeAxis2, float inRatio)GearConstraintPartinline
Deactivate()GearConstraintPartinline
GetTotalLambda() constGearConstraintPartinline
IsActive() constGearConstraintPartinline
RestoreState(StateRecorder &inStream)GearConstraintPartinline
SaveState(StateRecorder &inStream) constGearConstraintPartinline
SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) constGearConstraintPartinline
SolveVelocityConstraint(Body &ioBody1, Vec3Arg inWorldSpaceHingeAxis1, Body &ioBody2, Vec3Arg inWorldSpaceHingeAxis2, float inRatio)GearConstraintPartinline
WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)GearConstraintPartinline
+
+ + + + diff --git a/class_gear_constraint_part.html b/class_gear_constraint_part.html new file mode 100644 index 000000000..82c9824a7 --- /dev/null +++ b/class_gear_constraint_part.html @@ -0,0 +1,544 @@ + + + + + + + +Jolt Physics: GearConstraintPart Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GearConstraintPart Class Reference
+
+
+ +

#include <GearConstraintPart.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void CalculateConstraintProperties (const Body &inBody1, Vec3Arg inWorldSpaceHingeAxis1, const Body &inBody2, Vec3Arg inWorldSpaceHingeAxis2, float inRatio)
 
void Deactivate ()
 Deactivate this constraint.
 
bool IsActive () const
 Check if constraint is active.
 
void WarmStart (Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
 
bool SolveVelocityConstraint (Body &ioBody1, Vec3Arg inWorldSpaceHingeAxis1, Body &ioBody2, Vec3Arg inWorldSpaceHingeAxis2, float inRatio)
 
float GetTotalLambda () const
 Return lagrange multiplier.
 
bool SolvePositionConstraint (Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) const
 
void SaveState (StateRecorder &inStream) const
 Save state of this constraint part.
 
void RestoreState (StateRecorder &inStream)
 Restore state of this constraint part.
 
+

Detailed Description

+

Constraint that constrains two rotations using a gear (rotating in opposite direction)

+

Constraint equation:

+

C = Rotation1(t) + r Rotation2(t)

+

Derivative:

+

d/dt C = 0 <=> w1 . a + r w2 . b = 0

+

Jacobian:

+

+\[J = \begin{bmatrix}0 & a^T & 0 & r b^T\end{bmatrix}\] +

+

Used terms (here and below, everything in world space):
+a = axis around which body 1 rotates (normalized).
+b = axis along which body 2 slides (normalized).
+Rotation1(t) = rotation around a of body 1.
+Rotation2(t) = rotation around b of body 2.
+r = ratio between rotation for body 1 and 2.
+v = [v1, w1, v2, w2].
+v1, v2 = linear velocity of body 1 and 2.
+w1, w2 = angular velocity of body 1 and 2.
+M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].
+ \(K^{-1} = \left( J M^{-1} J^T \right)^{-1}\) = effective mass.
+ \(\beta\) = baumgarte constant.

+

Member Function Documentation

+ +

◆ CalculateConstraintProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void GearConstraintPart::CalculateConstraintProperties (const BodyinBody1,
Vec3Arg inWorldSpaceHingeAxis1,
const BodyinBody2,
Vec3Arg inWorldSpaceHingeAxis2,
float inRatio 
)
+
+inline
+
+

Calculate properties used during the functions below

Parameters
+ + + + + + +
inBody1The first body that this constraint is attached to
inBody2The second body that this constraint is attached to
inWorldSpaceHingeAxis1The axis around which body 1 rotates
inWorldSpaceHingeAxis2The axis around which body 2 rotates
inRatioThe ratio between rotation and translation
+
+
+ +
+
+ +

◆ Deactivate()

+ +
+
+ + + + + +
+ + + + + + + +
void GearConstraintPart::Deactivate ()
+
+inline
+
+ +

Deactivate this constraint.

+ +
+
+ +

◆ GetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float GearConstraintPart::GetTotalLambda () const
+
+inline
+
+ +

Return lagrange multiplier.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool GearConstraintPart::IsActive () const
+
+inline
+
+ +

Check if constraint is active.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void GearConstraintPart::RestoreState (StateRecorderinStream)
+
+inline
+
+ +

Restore state of this constraint part.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void GearConstraintPart::SaveState (StateRecorderinStream) const
+
+inline
+
+ +

Save state of this constraint part.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool GearConstraintPart::SolvePositionConstraint (BodyioBody1,
BodyioBody2,
float inC,
float inBaumgarte 
) const
+
+inline
+
+

Iteratively update the position constraint. Makes sure C(...) == 0.

Parameters
+ + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inCValue of the constraint equation (C)
inBaumgarteBaumgarte constant (fraction of the error to correct)
+
+
+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool GearConstraintPart::SolveVelocityConstraint (BodyioBody1,
Vec3Arg inWorldSpaceHingeAxis1,
BodyioBody2,
Vec3Arg inWorldSpaceHingeAxis2,
float inRatio 
)
+
+inline
+
+

Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.

Parameters
+ + + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inWorldSpaceHingeAxis1The axis around which body 1 rotates
inWorldSpaceHingeAxis2The axis around which body 2 rotates
inRatioThe ratio between rotation and translation
+
+
+ +
+
+ +

◆ WarmStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void GearConstraintPart::WarmStart (BodyioBody1,
BodyioBody2,
float inWarmStartImpulseRatio 
)
+
+inline
+
+

Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses

Parameters
+ + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inWarmStartImpulseRatioRatio of new step to old time step (dt_new / dt_old) for scaling the lagrange multiplier of the previous frame
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_gear_constraint_part.js b/class_gear_constraint_part.js new file mode 100644 index 000000000..9ed17b934 --- /dev/null +++ b/class_gear_constraint_part.js @@ -0,0 +1,12 @@ +var class_gear_constraint_part = +[ + [ "CalculateConstraintProperties", "class_gear_constraint_part.html#aa3a9c219aa2baf19edc577265ae2404f", null ], + [ "Deactivate", "class_gear_constraint_part.html#ab05807faf3573b42a9a7a0a280aed05c", null ], + [ "GetTotalLambda", "class_gear_constraint_part.html#a0884cffe567c6cfe93e555996ba8bad9", null ], + [ "IsActive", "class_gear_constraint_part.html#a5e5f8097c8a062b98d9bedcfa37859c5", null ], + [ "RestoreState", "class_gear_constraint_part.html#ad3fc3cde9a29f5bbbba7db738f5715a3", null ], + [ "SaveState", "class_gear_constraint_part.html#afa8089c72687df9833186a2078cd1aa5", null ], + [ "SolvePositionConstraint", "class_gear_constraint_part.html#ad9da946340f02066a9031124bec183af", null ], + [ "SolveVelocityConstraint", "class_gear_constraint_part.html#a59066c4f97a31d73d74dc5ec277ca43e", null ], + [ "WarmStart", "class_gear_constraint_part.html#a3886e068476d7e0d700dcec934ac6250", null ] +]; \ No newline at end of file diff --git a/class_gear_constraint_settings-members.html b/class_gear_constraint_settings-members.html new file mode 100644 index 000000000..a5dfc3737 --- /dev/null +++ b/class_gear_constraint_settings-members.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GearConstraintSettings Member List
+
+
+ +

This is the complete list of members for GearConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const overrideGearConstraintSettingsvirtual
GetRefCount() constRefTarget< ConstraintSettings >inline
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mHingeAxis1GearConstraintSettings
mHingeAxis2GearConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mRatioGearConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mSpaceGearConstraintSettings
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideGearConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overrideGearConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
SetRatio(int inNumTeethGear1, int inNumTeethGear2)GearConstraintSettingsinline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_gear_constraint_settings.html b/class_gear_constraint_settings.html new file mode 100644 index 000000000..f137d655c --- /dev/null +++ b/class_gear_constraint_settings.html @@ -0,0 +1,458 @@ + + + + + + + +Jolt Physics: GearConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GearConstraintSettings Class Referencefinal
+
+
+ +

Gear constraint settings. + More...

+ +

#include <GearConstraint.h>

+
+Inheritance diagram for GearConstraintSettings:
+
+
+ + +TwoBodyConstraintSettings +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 Create an instance of this constraint.
 
void SetRatio (int inNumTeethGear1, int inNumTeethGear2)
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EConstraintSpace mSpace = EConstraintSpace::WorldSpace
 This determines in which space the constraint is setup, all properties below should be in the specified space.
 
Vec3 mHingeAxis1 = Vec3::sAxisX()
 Body 1 constraint reference frame (space determined by mSpace).
 
Vec3 mHingeAxis2 = Vec3::sAxisX()
 Body 2 constraint reference frame (space determined by mSpace)
 
float mRatio = 1.0f
 Ratio between both gears, see SetRatio.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Gear constraint settings.

+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * GearConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+overridevirtual
+
+ +

Create an instance of this constraint.

+ +

Implements TwoBodyConstraintSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void GearConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void GearConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SetRatio()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void GearConstraintSettings::SetRatio (int inNumTeethGear1,
int inNumTeethGear2 
)
+
+inline
+
+

Defines the ratio between the rotation of both gears The ratio is defined as: Gear1Rotation(t) = -ratio * Gear2Rotation(t)

Parameters
+ + + +
inNumTeethGear1Number of teeth that body 1 has
inNumTeethGear2Number of teeth that body 2 has
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mHingeAxis1

+ +
+
+ + + + +
Vec3 GearConstraintSettings::mHingeAxis1 = Vec3::sAxisX()
+
+ +

Body 1 constraint reference frame (space determined by mSpace).

+ +
+
+ +

◆ mHingeAxis2

+ +
+
+ + + + +
Vec3 GearConstraintSettings::mHingeAxis2 = Vec3::sAxisX()
+
+ +

Body 2 constraint reference frame (space determined by mSpace)

+ +
+
+ +

◆ mRatio

+ +
+
+ + + + +
float GearConstraintSettings::mRatio = 1.0f
+
+ +

Ratio between both gears, see SetRatio.

+ +
+
+ +

◆ mSpace

+ +
+
+ + + + +
EConstraintSpace GearConstraintSettings::mSpace = EConstraintSpace::WorldSpace
+
+ +

This determines in which space the constraint is setup, all properties below should be in the specified space.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_gear_constraint_settings.js b/class_gear_constraint_settings.js new file mode 100644 index 000000000..813d14feb --- /dev/null +++ b/class_gear_constraint_settings.js @@ -0,0 +1,11 @@ +var class_gear_constraint_settings = +[ + [ "Create", "class_gear_constraint_settings.html#a798d52ae206f83abe6a8ec362348a4a0", null ], + [ "RestoreBinaryState", "class_gear_constraint_settings.html#a19e829338afbd3f7b7bd50614f1dadd7", null ], + [ "SaveBinaryState", "class_gear_constraint_settings.html#acfd729d2e49300f557a029ad14598b60", null ], + [ "SetRatio", "class_gear_constraint_settings.html#a739f3d8c130d47170adb958626978b5a", null ], + [ "mHingeAxis1", "class_gear_constraint_settings.html#a5fb2af5b7aacc6b5d9c093b20fcabfe9", null ], + [ "mHingeAxis2", "class_gear_constraint_settings.html#a7064ccff3e5ee1826b469487e56abe94", null ], + [ "mRatio", "class_gear_constraint_settings.html#a81c6ec84001d897ae53d900a2cf11d33", null ], + [ "mSpace", "class_gear_constraint_settings.html#a0cc02f07332e14d49c7e280639cde9d8", null ] +]; \ No newline at end of file diff --git a/class_gear_constraint_settings.png b/class_gear_constraint_settings.png new file mode 100644 index 000000000..15bb96e9d Binary files /dev/null and b/class_gear_constraint_settings.png differ diff --git a/class_get_triangles_context_multi_vertex_list-members.html b/class_get_triangles_context_multi_vertex_list-members.html new file mode 100644 index 000000000..600beaee4 --- /dev/null +++ b/class_get_triangles_context_multi_vertex_list-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GetTrianglesContextMultiVertexList Member List
+
+
+ +

This is the complete list of members for GetTrianglesContextMultiVertexList, including all inherited members.

+ + + + +
AddPart(Mat44Arg inLocalToWorld, const Vec3 *inTriangleVertices, size_t inNumTriangleVertices)GetTrianglesContextMultiVertexListinline
GetTrianglesContextMultiVertexList(bool inIsInsideOut, const PhysicsMaterial *inMaterial)GetTrianglesContextMultiVertexListinline
GetTrianglesNext(int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials)GetTrianglesContextMultiVertexListinline
+
+ + + + diff --git a/class_get_triangles_context_multi_vertex_list.html b/class_get_triangles_context_multi_vertex_list.html new file mode 100644 index 000000000..06d53fb2d --- /dev/null +++ b/class_get_triangles_context_multi_vertex_list.html @@ -0,0 +1,267 @@ + + + + + + + +Jolt Physics: GetTrianglesContextMultiVertexList Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GetTrianglesContextMultiVertexList Class Reference
+
+
+ +

Implementation of GetTrianglesStart/Next that uses a multiple fixed lists of vertices for the triangles. These are transformed into world space when getting the triangles. + More...

+ +

#include <GetTrianglesContext.h>

+ + + + + + + + + + +

+Public Member Functions

 GetTrianglesContextMultiVertexList (bool inIsInsideOut, const PhysicsMaterial *inMaterial)
 Constructor, to be called in GetTrianglesStart.
 
void AddPart (Mat44Arg inLocalToWorld, const Vec3 *inTriangleVertices, size_t inNumTriangleVertices)
 Add a mesh part and its transform.
 
int GetTrianglesNext (int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials)
 
+

Detailed Description

+

Implementation of GetTrianglesStart/Next that uses a multiple fixed lists of vertices for the triangles. These are transformed into world space when getting the triangles.

+

Constructor & Destructor Documentation

+ +

◆ GetTrianglesContextMultiVertexList()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
GetTrianglesContextMultiVertexList::GetTrianglesContextMultiVertexList (bool inIsInsideOut,
const PhysicsMaterialinMaterial 
)
+
+inline
+
+ +

Constructor, to be called in GetTrianglesStart.

+ +
+
+

Member Function Documentation

+ +

◆ AddPart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void GetTrianglesContextMultiVertexList::AddPart (Mat44Arg inLocalToWorld,
const Vec3inTriangleVertices,
size_t inNumTriangleVertices 
)
+
+inline
+
+ +

Add a mesh part and its transform.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int GetTrianglesContextMultiVertexList::GetTrianglesNext (int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials 
)
+
+inline
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_get_triangles_context_multi_vertex_list.js b/class_get_triangles_context_multi_vertex_list.js new file mode 100644 index 000000000..18761f694 --- /dev/null +++ b/class_get_triangles_context_multi_vertex_list.js @@ -0,0 +1,6 @@ +var class_get_triangles_context_multi_vertex_list = +[ + [ "GetTrianglesContextMultiVertexList", "class_get_triangles_context_multi_vertex_list.html#aa9cd165a98d96373c2d112a9c8ec258f", null ], + [ "AddPart", "class_get_triangles_context_multi_vertex_list.html#a9cdb357887665b8efc68598c949fbd90", null ], + [ "GetTrianglesNext", "class_get_triangles_context_multi_vertex_list.html#adb9476df77af2728b5054c8c1ec6c0bb", null ] +]; \ No newline at end of file diff --git a/class_get_triangles_context_vertex_list-members.html b/class_get_triangles_context_vertex_list-members.html new file mode 100644 index 000000000..13ea2f3c2 --- /dev/null +++ b/class_get_triangles_context_vertex_list-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GetTrianglesContextVertexList Member List
+
+
+ +

This is the complete list of members for GetTrianglesContextVertexList, including all inherited members.

+ + + + + + +
GetTrianglesContextVertexList(Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, Mat44Arg inLocalTransform, const Vec3 *inTriangleVertices, size_t inNumTriangleVertices, const PhysicsMaterial *inMaterial)GetTrianglesContextVertexListinline
GetTrianglesNext(int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials)GetTrianglesContextVertexListinline
sCreateHalfUnitSphereBottom(A &ioVertices, int inDetailLevel)GetTrianglesContextVertexListinlinestatic
sCreateHalfUnitSphereTop(A &ioVertices, int inDetailLevel)GetTrianglesContextVertexListinlinestatic
sCreateUnitOpenCylinder(A &ioVertices, int inDetailLevel)GetTrianglesContextVertexListinlinestatic
+
+ + + + diff --git a/class_get_triangles_context_vertex_list.html b/class_get_triangles_context_vertex_list.html new file mode 100644 index 000000000..c34b512cf --- /dev/null +++ b/class_get_triangles_context_vertex_list.html @@ -0,0 +1,385 @@ + + + + + + + +Jolt Physics: GetTrianglesContextVertexList Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GetTrianglesContextVertexList Class Reference
+
+
+ +

Implementation of GetTrianglesStart/Next that uses a fixed list of vertices for the triangles. These are transformed into world space when getting the triangles. + More...

+ +

#include <GetTrianglesContext.h>

+ + + + + + + +

+Public Member Functions

 GetTrianglesContextVertexList (Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, Mat44Arg inLocalTransform, const Vec3 *inTriangleVertices, size_t inNumTriangleVertices, const PhysicsMaterial *inMaterial)
 Constructor, to be called in GetTrianglesStart.
 
int GetTrianglesNext (int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials)
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

template<class A >
static void sCreateHalfUnitSphereTop (A &ioVertices, int inDetailLevel)
 Helper function that creates a vertex list of a half unit sphere (top part)
 
template<class A >
static void sCreateHalfUnitSphereBottom (A &ioVertices, int inDetailLevel)
 Helper function that creates a vertex list of a half unit sphere (bottom part)
 
template<class A >
static void sCreateUnitOpenCylinder (A &ioVertices, int inDetailLevel)
 Helper function that creates an open cylinder of half height 1 and radius 1.
 
+

Detailed Description

+

Implementation of GetTrianglesStart/Next that uses a fixed list of vertices for the triangles. These are transformed into world space when getting the triangles.

+

Constructor & Destructor Documentation

+ +

◆ GetTrianglesContextVertexList()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GetTrianglesContextVertexList::GetTrianglesContextVertexList (Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale,
Mat44Arg inLocalTransform,
const Vec3inTriangleVertices,
size_t inNumTriangleVertices,
const PhysicsMaterialinMaterial 
)
+
+inline
+
+ +

Constructor, to be called in GetTrianglesStart.

+ +
+
+

Member Function Documentation

+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int GetTrianglesContextVertexList::GetTrianglesNext (int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials 
)
+
+inline
+
+
+ +

◆ sCreateHalfUnitSphereBottom()

+ +
+
+
+template<class A >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void GetTrianglesContextVertexList::sCreateHalfUnitSphereBottom (A & ioVertices,
int inDetailLevel 
)
+
+inlinestatic
+
+ +

Helper function that creates a vertex list of a half unit sphere (bottom part)

+ +
+
+ +

◆ sCreateHalfUnitSphereTop()

+ +
+
+
+template<class A >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void GetTrianglesContextVertexList::sCreateHalfUnitSphereTop (A & ioVertices,
int inDetailLevel 
)
+
+inlinestatic
+
+ +

Helper function that creates a vertex list of a half unit sphere (top part)

+ +
+
+ +

◆ sCreateUnitOpenCylinder()

+ +
+
+
+template<class A >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void GetTrianglesContextVertexList::sCreateUnitOpenCylinder (A & ioVertices,
int inDetailLevel 
)
+
+inlinestatic
+
+ +

Helper function that creates an open cylinder of half height 1 and radius 1.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_get_triangles_context_vertex_list.js b/class_get_triangles_context_vertex_list.js new file mode 100644 index 000000000..5bf6e9221 --- /dev/null +++ b/class_get_triangles_context_vertex_list.js @@ -0,0 +1,5 @@ +var class_get_triangles_context_vertex_list = +[ + [ "GetTrianglesContextVertexList", "class_get_triangles_context_vertex_list.html#ad42b38dbd910b48adc48cbeb2e7d3eee", null ], + [ "GetTrianglesNext", "class_get_triangles_context_vertex_list.html#ac42ac006966e5e9819b97f3764be4fc4", null ] +]; \ No newline at end of file diff --git a/class_group_filter-members.html b/class_group_filter-members.html new file mode 100644 index 000000000..a6c604724 --- /dev/null +++ b/class_group_filter-members.html @@ -0,0 +1,137 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GroupFilter Member List
+
+
+ +

This is the complete list of members for GroupFilter, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< GroupFilter >inline
CanCollide(const CollisionGroup &inGroup1, const CollisionGroup &inGroup2) const =0GroupFilterpure virtual
cEmbeddedRefTarget< GroupFilter >protectedstatic
GetRefCount() constRefTarget< GroupFilter >inline
GroupFilterResult typedefGroupFilter
mRefCountRefTarget< GroupFilter >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< GroupFilter >::operator=(const RefTarget &)RefTarget< GroupFilter >inline
RefTarget()=defaultRefTarget< GroupFilter >inline
RefTarget(const RefTarget &)RefTarget< GroupFilter >inline
Release() constRefTarget< GroupFilter >inline
RestoreBinaryState(StreamIn &inStream)GroupFilterprotectedvirtual
SaveBinaryState(StreamOut &inStream) constGroupFiltervirtual
SetEmbedded() constRefTarget< GroupFilter >inline
sInternalGetRefCountOffset()RefTarget< GroupFilter >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)GroupFilterstatic
~GroupFilter() override=defaultGroupFiltervirtual
~RefTarget()RefTarget< GroupFilter >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_group_filter.html b/class_group_filter.html new file mode 100644 index 000000000..45fea4512 --- /dev/null +++ b/class_group_filter.html @@ -0,0 +1,393 @@ + + + + + + + +Jolt Physics: GroupFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GroupFilter Class Referenceabstract
+
+
+ +

Abstract class that checks if two CollisionGroups collide. + More...

+ +

#include <GroupFilter.h>

+
+Inheritance diagram for GroupFilter:
+
+
+ + +SerializableObject +RefTarget< GroupFilter > +NonCopyable +GroupFilterTable + +
+ + + + +

+Public Types

using GroupFilterResult = Result< Ref< GroupFilter > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~GroupFilter () override=default
 Virtual destructor.
 
virtual bool CanCollide (const CollisionGroup &inGroup1, const CollisionGroup &inGroup2) const =0
 Check if two groups collide.
 
virtual void SaveBinaryState (StreamOut &inStream) const
 Saves the contents of the group filter in binary form to inStream.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< GroupFilter >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + +

+Static Public Member Functions

static GroupFilterResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a GroupFilter of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< GroupFilter >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream)
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from RefTarget< GroupFilter >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< GroupFilter >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Abstract class that checks if two CollisionGroups collide.

+

Member Typedef Documentation

+ +

◆ GroupFilterResult

+ +
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~GroupFilter()

+ +
+
+ + + + + +
+ + + + + + + +
virtual GroupFilter::~GroupFilter ()
+
+overridevirtualdefault
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ CanCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool GroupFilter::CanCollide (const CollisionGroupinGroup1,
const CollisionGroupinGroup2 
) const
+
+pure virtual
+
+ +

Check if two groups collide.

+ +

Implemented in GroupFilterTable.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void GroupFilter::RestoreBinaryState (StreamIninStream)
+
+protectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented in GroupFilterTable.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void GroupFilter::SaveBinaryState (StreamOutinStream) const
+
+virtual
+
+ +

Saves the contents of the group filter in binary form to inStream.

+ +

Reimplemented in GroupFilterTable.

+ +
+
+ +

◆ sRestoreFromBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
GroupFilter::GroupFilterResult GroupFilter::sRestoreFromBinaryState (StreamIninStream)
+
+static
+
+ +

Creates a GroupFilter of the correct type and restores its contents from the binary stream inStream.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_group_filter.js b/class_group_filter.js new file mode 100644 index 000000000..84963964e --- /dev/null +++ b/class_group_filter.js @@ -0,0 +1,8 @@ +var class_group_filter = +[ + [ "GroupFilterResult", "class_group_filter.html#aeb0b5a6c4c4c4d2d08c8df62942a7525", null ], + [ "~GroupFilter", "class_group_filter.html#aa8329399534ab5ced6cd41bac0fc511a", null ], + [ "CanCollide", "class_group_filter.html#a92d09279f5e311f401635dcb868ba838", null ], + [ "RestoreBinaryState", "class_group_filter.html#a76f2d434cbc50b6eae5aab84b87b81d5", null ], + [ "SaveBinaryState", "class_group_filter.html#a6f3b0c5ed9ee49737c5f40b63aaac8f1", null ] +]; \ No newline at end of file diff --git a/class_group_filter.png b/class_group_filter.png new file mode 100644 index 000000000..4bb943dcf Binary files /dev/null and b/class_group_filter.png differ diff --git a/class_group_filter_table-members.html b/class_group_filter_table-members.html new file mode 100644 index 000000000..8e8b7e385 --- /dev/null +++ b/class_group_filter_table-members.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
GroupFilterTable Member List
+
+
+ +

This is the complete list of members for GroupFilterTable, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< GroupFilter >inline
CanCollide(const CollisionGroup &inGroup1, const CollisionGroup &inGroup2) const overrideGroupFilterTableinlinevirtual
cEmbeddedRefTarget< GroupFilter >protectedstatic
DisableCollision(SubGroupID inSubGroup1, SubGroupID inSubGroup2)GroupFilterTableinline
EnableCollision(SubGroupID inSubGroup1, SubGroupID inSubGroup2)GroupFilterTableinline
GetRefCount() constRefTarget< GroupFilter >inline
GroupFilterResult typedefGroupFilter
GroupFilterTable(uint inNumSubGroups=0)GroupFilterTableinlineexplicit
GroupFilterTable(const GroupFilterTable &inRHS)GroupFilterTableinline
IsCollisionEnabled(SubGroupID inSubGroup1, SubGroupID inSubGroup2) constGroupFilterTableinline
mRefCountRefTarget< GroupFilter >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< GroupFilter >::operator=(const RefTarget &)RefTarget< GroupFilter >inline
RefTarget()=defaultRefTarget< GroupFilter >inline
RefTarget(const RefTarget &)RefTarget< GroupFilter >inline
Release() constRefTarget< GroupFilter >inline
RestoreBinaryState(StreamIn &inStream) overrideGroupFilterTableprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overrideGroupFilterTablevirtual
SetEmbedded() constRefTarget< GroupFilter >inline
sInternalGetRefCountOffset()RefTarget< GroupFilter >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)GroupFilterstatic
~GroupFilter() override=defaultGroupFiltervirtual
~RefTarget()RefTarget< GroupFilter >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_group_filter_table.html b/class_group_filter_table.html new file mode 100644 index 000000000..c52c36bd2 --- /dev/null +++ b/class_group_filter_table.html @@ -0,0 +1,519 @@ + + + + + + + +Jolt Physics: GroupFilterTable Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
GroupFilterTable Class Referencefinal
+
+
+ +

#include <GroupFilterTable.h>

+
+Inheritance diagram for GroupFilterTable:
+
+
+ + +GroupFilter +SerializableObject +RefTarget< GroupFilter > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 GroupFilterTable (uint inNumSubGroups=0)
 Constructs the table with inNumSubGroups subgroups, initially all collision pairs are enabled except when the sub group ID is the same.
 
 GroupFilterTable (const GroupFilterTable &inRHS)
 Copy constructor.
 
void DisableCollision (SubGroupID inSubGroup1, SubGroupID inSubGroup2)
 Disable collision between two sub groups.
 
void EnableCollision (SubGroupID inSubGroup1, SubGroupID inSubGroup2)
 Enable collision between two sub groups.
 
bool IsCollisionEnabled (SubGroupID inSubGroup1, SubGroupID inSubGroup2) const
 Check if the collision between two subgroups is enabled.
 
virtual bool CanCollide (const CollisionGroup &inGroup1, const CollisionGroup &inGroup2) const override
 Checks if two CollisionGroups collide.
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the group filter in binary form to inStream.
 
- Public Member Functions inherited from GroupFilter
virtual ~GroupFilter () override=default
 Virtual destructor.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< GroupFilter >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from GroupFilter
using GroupFilterResult = Result< Ref< GroupFilter > >
 
- Static Public Member Functions inherited from GroupFilter
static GroupFilterResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a GroupFilter of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< GroupFilter >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< GroupFilter >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< GroupFilter >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Implementation of GroupFilter that stores a bit table with one bit per sub shape ID pair to determine if they collide or not

+

The collision rules:

    +
  • If one of the objects is in the cInvalidGroup the objects will collide.
  • +
  • If the objects are in different groups they will collide.
  • +
  • If they're in the same group but their collision filter is different they will not collide.
  • +
  • If they're in the same group and their collision filters match, we'll use the SubGroupID and the table below.
  • +
+

For N = 6 sub groups the table will look like:

            sub group 1 --->
+sub group 2 x.....
+     |      ox....
+     |      oox...
+     V      ooox..
+            oooox.
+            ooooox
+
    +
  • 'x' means sub group 1 == sub group 2 and we define this to never collide.
  • +
  • 'o' is a bit that we have to store that defines if the sub groups collide or not.
  • +
  • '.' is a bit we don't need to store because the table is symmetric, we take care that group 2 > group 1 by swapping sub group 1 and sub group 2 if needed.
  • +
+

The total number of bits we need to store is (N * (N - 1)) / 2

+

Constructor & Destructor Documentation

+ +

◆ GroupFilterTable() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
GroupFilterTable::GroupFilterTable (uint inNumSubGroups = 0)
+
+inlineexplicit
+
+ +

Constructs the table with inNumSubGroups subgroups, initially all collision pairs are enabled except when the sub group ID is the same.

+ +
+
+ +

◆ GroupFilterTable() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
GroupFilterTable::GroupFilterTable (const GroupFilterTableinRHS)
+
+inline
+
+ +

Copy constructor.

+ +
+
+

Member Function Documentation

+ +

◆ CanCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool GroupFilterTable::CanCollide (const CollisionGroupinGroup1,
const CollisionGroupinGroup2 
) const
+
+inlineoverridevirtual
+
+ +

Checks if two CollisionGroups collide.

+ +

Implements GroupFilter.

+ +
+
+ +

◆ DisableCollision()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void GroupFilterTable::DisableCollision (SubGroupID inSubGroup1,
SubGroupID inSubGroup2 
)
+
+inline
+
+ +

Disable collision between two sub groups.

+ +
+
+ +

◆ EnableCollision()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void GroupFilterTable::EnableCollision (SubGroupID inSubGroup1,
SubGroupID inSubGroup2 
)
+
+inline
+
+ +

Enable collision between two sub groups.

+ +
+
+ +

◆ IsCollisionEnabled()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool GroupFilterTable::IsCollisionEnabled (SubGroupID inSubGroup1,
SubGroupID inSubGroup2 
) const
+
+inline
+
+ +

Check if the collision between two subgroups is enabled.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void GroupFilterTable::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from GroupFilter.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void GroupFilterTable::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the group filter in binary form to inStream.

+ +

Reimplemented from GroupFilter.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_group_filter_table.js b/class_group_filter_table.js new file mode 100644 index 000000000..2e1e642d7 --- /dev/null +++ b/class_group_filter_table.js @@ -0,0 +1,11 @@ +var class_group_filter_table = +[ + [ "GroupFilterTable", "class_group_filter_table.html#ace82879585ebeb7f322700733349fa37", null ], + [ "GroupFilterTable", "class_group_filter_table.html#a91ed666a7043cd932da78adce8e8920e", null ], + [ "CanCollide", "class_group_filter_table.html#a9a654e5e8db25dc647563a10a47d3ab4", null ], + [ "DisableCollision", "class_group_filter_table.html#a21f49a18fb98bbd35151022505fe275f", null ], + [ "EnableCollision", "class_group_filter_table.html#a6b25689191afbfdb272feb4e57df4035", null ], + [ "IsCollisionEnabled", "class_group_filter_table.html#acfa23ff8483cdeec0926623ebb9dd8f3", null ], + [ "RestoreBinaryState", "class_group_filter_table.html#ade5ec053f8ed440ebdbd516f31797ee3", null ], + [ "SaveBinaryState", "class_group_filter_table.html#a0e3db9e4ef6cf71323126e6ce48fa4dc", null ] +]; \ No newline at end of file diff --git a/class_group_filter_table.png b/class_group_filter_table.png new file mode 100644 index 000000000..c33b72136 Binary files /dev/null and b/class_group_filter_table.png differ diff --git a/class_height_field_shape-members.html b/class_height_field_shape-members.html new file mode 100644 index 000000000..529615075 --- /dev/null +++ b/class_height_field_shape-members.html @@ -0,0 +1,210 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HeightFieldShape Member List
+
+
+ +

This is the complete list of members for HeightFieldShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideHeightFieldShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideHeightFieldShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
Clone() constHeightFieldShape
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideHeightFieldShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideHeightFieldShapevirtual
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideHeightFieldShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) constShapeinlinevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetBlockSize() constHeightFieldShapeinline
GetCenterOfMass() constShapeinlinevirtual
GetHeights(uint inX, uint inY, uint inSizeX, uint inSizeY, float *outHeights, intptr_t inHeightsStride) constHeightFieldShape
GetInnerRadius() const overrideHeightFieldShapeinlinevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const overrideHeightFieldShapevirtual
GetMassProperties() const overrideHeightFieldShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideHeightFieldShapevirtual
GetMaterial(uint inX, uint inY) constHeightFieldShape
GetMaterialList() constHeightFieldShapeinline
GetMaterials(uint inX, uint inY, uint inSizeX, uint inSizeY, uint8 *outMaterials, intptr_t inMaterialsStride) constHeightFieldShape
GetMaxHeightValue() constHeightFieldShapeinline
GetMinHeightValue() constHeightFieldShapeinline
GetPosition(uint inX, uint inY) constHeightFieldShape
GetRefCount() constRefTarget< Shape >inline
GetSampleCount() constHeightFieldShapeinline
GetStats() const overrideHeightFieldShapevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideHeightFieldShapeinlinevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeCoordinates(const SubShapeID &inSubShapeID, uint &outX, uint &outY, uint &outTriangleIndex) constHeightFieldShape
GetSubShapeIDBitsRecursive() const overrideHeightFieldShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideHeightFieldShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideHeightFieldShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideHeightFieldShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideHeightFieldShapevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideHeightFieldShapeinlinevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinline
HeightFieldShape()HeightFieldShapeinline
HeightFieldShape(const HeightFieldShapeSettings &inSettings, ShapeResult &outResult)HeightFieldShape
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsNoCollision(uint inX, uint inY) constHeightFieldShape
IsValidScale(Vec3Arg inScale) constShapevirtual
MakeScaleValid(Vec3Arg inScale) constShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() const overrideHeightFieldShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
ProjectOntoSurface(Vec3Arg inLocalPosition, Vec3 &outSurfacePosition, SubShapeID &outSubShapeID) constHeightFieldShape
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideHeightFieldShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) overrideHeightFieldShapevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) const overrideHeightFieldShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) const overrideHeightFieldShapevirtual
Shape::SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
sDrawTriangleOutlinesHeightFieldShapestatic
SetEmbedded() constRefTarget< Shape >inline
SetHeights(uint inX, uint inY, uint inSizeX, uint inSizeY, const float *inHeights, intptr_t inHeightsStride, TempAllocator &inAllocator, float inActiveEdgeCosThresholdAngle=0.996195f)HeightFieldShape
SetMaterials(uint inX, uint inY, uint inSizeX, uint inSizeY, const uint8 *inMaterials, intptr_t inMaterialsStride, const PhysicsMaterialList *inMaterialList, TempAllocator &inAllocator)HeightFieldShape
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()HeightFieldShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~HeightFieldShape() overrideHeightFieldShapevirtual
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_height_field_shape.html b/class_height_field_shape.html new file mode 100644 index 000000000..695e66bff --- /dev/null +++ b/class_height_field_shape.html @@ -0,0 +1,2070 @@ + + + + + + + +Jolt Physics: HeightFieldShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HeightFieldShape Class Referencefinal
+
+
+ +

#include <HeightFieldShape.h>

+
+Inheritance diagram for HeightFieldShape:
+
+
+ + +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + + + +

+Classes

class  DecodingContext
 
struct  HSGetTrianglesContext
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE HeightFieldShape ()
 Constructor.
 
 HeightFieldShape (const HeightFieldShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~HeightFieldShape () override
 
Ref< HeightFieldShapeClone () const
 Clone this shape. Can be used to avoid race conditions. See the documentation of this class for more information.
 
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.
 
uint GetSampleCount () const
 Get the size of the height field. Note that this will always be rounded up to the nearest multiple of GetBlockSize().
 
uint GetBlockSize () const
 Get the size of a block.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
const PhysicsMaterialGetMaterial (uint inX, uint inY) const
 Overload to get the material at a particular location.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
Vec3 GetPosition (uint inX, uint inY) const
 
bool IsNoCollision (uint inX, uint inY) const
 Check if height field at sampled location (inX, inY) has collision (has a hole or not)
 
bool ProjectOntoSurface (Vec3Arg inLocalPosition, Vec3 &outSurfacePosition, SubShapeID &outSubShapeID) const
 
void GetSubShapeCoordinates (const SubShapeID &inSubShapeID, uint &outX, uint &outY, uint &outTriangleIndex) const
 
float GetMinHeightValue () const
 Get the range of height values that this height field can encode. Can be used to determine the allowed range when setting the height values with SetHeights.
 
float GetMaxHeightValue () const
 
void GetHeights (uint inX, uint inY, uint inSizeX, uint inSizeY, float *outHeights, intptr_t inHeightsStride) const
 
void SetHeights (uint inX, uint inY, uint inSizeX, uint inSizeY, const float *inHeights, intptr_t inHeightsStride, TempAllocator &inAllocator, float inActiveEdgeCosThresholdAngle=0.996195f)
 
const PhysicsMaterialListGetMaterialList () const
 Get the current list of materials, the indices returned by GetMaterials() will index into this list.
 
void GetMaterials (uint inX, uint inY, uint inSizeX, uint inSizeY, uint8 *outMaterials, intptr_t inMaterialsStride) const
 
bool SetMaterials (uint inX, uint inY, uint inSizeX, uint inSizeY, const uint8 *inMaterials, intptr_t inMaterialsStride, const PhysicsMaterialList *inMaterialList, TempAllocator &inAllocator)
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const override
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual Vec3 GetCenterOfMass () const
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual bool IsValidScale (Vec3Arg inScale) const
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + + + + + + + +

+Static Public Attributes

static bool sDrawTriangleOutlines = false
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A height field shape. Cannot be used as a dynamic object.

+

Note: If you're using HeightFieldShape and are querying data while modifying the shape you'll have a race condition. In this case it is best to create a new HeightFieldShape using the Clone function. You replace the shape on a body using BodyInterface::SetShape. If a query is still working on the old shape, it will have taken a reference and keep the old shape alive until the query finishes.

+

Constructor & Destructor Documentation

+ +

◆ HeightFieldShape() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE HeightFieldShape::HeightFieldShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ HeightFieldShape() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
HeightFieldShape::HeightFieldShape (const HeightFieldShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+ +

◆ ~HeightFieldShape()

+ +
+
+ + + + + +
+ + + + + + + +
HeightFieldShape::~HeightFieldShape ()
+
+overridevirtual
+
+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void HeightFieldShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool HeightFieldShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Implements Shape.

+ +
+
+ +

◆ Clone()

+ +
+
+ + + + + + + +
Ref< HeightFieldShape > HeightFieldShape::Clone () const
+
+ +

Clone this shape. Can be used to avoid race conditions. See the documentation of this class for more information.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void HeightFieldShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Implements Shape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void HeightFieldShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void HeightFieldShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ GetBlockSize()

+ +
+
+ + + + + +
+ + + + + + + +
uint HeightFieldShape::GetBlockSize () const
+
+inline
+
+ +

Get the size of a block.

+ +
+
+ +

◆ GetHeights()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void HeightFieldShape::GetHeights (uint inX,
uint inY,
uint inSizeX,
uint inSizeY,
float * outHeights,
intptr_t inHeightsStride 
) const
+
+

Get the height values of a block of data. Note that the height values are decompressed so will be slightly different from what the shape was originally created with.

Parameters
+ + + + + + + +
inXStart X position, must be a multiple of mBlockSize and in the range [0, mSampleCount - 1]
inYStart Y position, must be a multiple of mBlockSize and in the range [0, mSampleCount - 1]
inSizeXNumber of samples in X direction, must be a multiple of mBlockSize and in the range [0, mSampleCount - inX]
inSizeYNumber of samples in Y direction, must be a multiple of mBlockSize and in the range [0, mSampleCount - inX]
outHeightsReturned height values, must be at least inSizeX * inSizeY floats. Values are returned in x-major order and can be cNoCollisionValue.
inHeightsStrideStride in floats between two consecutive rows of outHeights (can be negative if the data is upside down).
+
+
+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float HeightFieldShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox HeightFieldShape::GetLocalBounds () const
+
+overridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties HeightFieldShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMaterial() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
const PhysicsMaterial * HeightFieldShape::GetMaterial (const SubShapeIDinSubShapeID) const
+
+overridevirtual
+
+ +

Get the material assigned to a particular sub shape ID.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMaterial() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
const PhysicsMaterial * HeightFieldShape::GetMaterial (uint inX,
uint inY 
) const
+
+ +

Overload to get the material at a particular location.

+ +
+
+ +

◆ GetMaterialList()

+ +
+
+ + + + + +
+ + + + + + + +
const PhysicsMaterialList & HeightFieldShape::GetMaterialList () const
+
+inline
+
+ +

Get the current list of materials, the indices returned by GetMaterials() will index into this list.

+ +
+
+ +

◆ GetMaterials()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void HeightFieldShape::GetMaterials (uint inX,
uint inY,
uint inSizeX,
uint inSizeY,
uint8outMaterials,
intptr_t inMaterialsStride 
) const
+
+

Get the material indices of a block of data.

Parameters
+ + + + + + + +
inXStart X position, must in the range [0, mSampleCount - 1]
inYStart Y position, must in the range [0, mSampleCount - 1]
inSizeXNumber of samples in X direction
inSizeYNumber of samples in Y direction
outMaterialsReturned material indices, must be at least inSizeX * inSizeY uint8s. Values are returned in x-major order.
inMaterialsStrideStride in uint8s between two consecutive rows of outMaterials (can be negative if the data is upside down).
+
+
+ +
+
+ +

◆ GetMaxHeightValue()

+ +
+
+ + + + + +
+ + + + + + + +
float HeightFieldShape::GetMaxHeightValue () const
+
+inline
+
+ +
+
+ +

◆ GetMinHeightValue()

+ +
+
+ + + + + +
+ + + + + + + +
float HeightFieldShape::GetMinHeightValue () const
+
+inline
+
+ +

Get the range of height values that this height field can encode. Can be used to determine the allowed range when setting the height values with SetHeights.

+ +
+
+ +

◆ GetPosition()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Vec3 HeightFieldShape::GetPosition (uint inX,
uint inY 
) const
+
+

Get height field position at sampled location (inX, inY). where inX and inY are integers in the range inX e [0, mSampleCount - 1] and inY e [0, mSampleCount - 1].

+ +
+
+ +

◆ GetSampleCount()

+ +
+
+ + + + + +
+ + + + + + + +
uint HeightFieldShape::GetSampleCount () const
+
+inline
+
+ +

Get the size of the height field. Note that this will always be rounded up to the nearest multiple of GetBlockSize().

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
Shape::Stats HeightFieldShape::GetStats () const
+
+overridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void HeightFieldShape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3 &outCenterOfBuoyancy  JPH_IF_DEBUG_RENDERER, RVec3Arg inBaseOffset 
) const
+
+inlineoverridevirtual
+
+ +
+
+ +

◆ GetSubShapeCoordinates()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void HeightFieldShape::GetSubShapeCoordinates (const SubShapeIDinSubShapeID,
uintoutX,
uintoutY,
uintoutTriangleIndex 
) const
+
+

Returns the coordinates of the triangle that a sub shape ID represents

Parameters
+ + + + + +
inSubShapeIDThe sub shape ID to decode
outXX coordinate of the triangle (in the range [0, mSampleCount - 2])
outYY coordinate of the triangle (in the range [0, mSampleCount - 2])
outTriangleIndexTriangle within the quad (0 = lower triangle or 1 = upper triangle)
+
+
+ +
+
+ +

◆ GetSubShapeIDBitsRecursive()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint HeightFieldShape::GetSubShapeIDBitsRecursive () const
+
+inlineoverridevirtual
+
+ +

Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void HeightFieldShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 HeightFieldShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int HeightFieldShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+overridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void HeightFieldShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Implements Shape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float HeightFieldShape::GetVolume () const
+
+inlineoverridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ IsNoCollision()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool HeightFieldShape::IsNoCollision (uint inX,
uint inY 
) const
+
+ +

Check if height field at sampled location (inX, inY) has collision (has a hole or not)

+ +
+
+ +

◆ MustBeStatic()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool HeightFieldShape::MustBeStatic () const
+
+inlineoverridevirtual
+
+ +

Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ ProjectOntoSurface()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool HeightFieldShape::ProjectOntoSurface (Vec3Arg inLocalPosition,
Vec3outSurfacePosition,
SubShapeIDoutSubShapeID 
) const
+
+

Projects inLocalPosition (a point in the space of the shape) along the Y axis onto the surface and returns it in outSurfacePosition. When there is no surface position (because of a hole or because the point is outside the heightfield) the function will return false.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void HeightFieldShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreMaterialState()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void HeightFieldShape::RestoreMaterialState (const PhysicsMaterialRefCinMaterials,
uint inNumMaterials 
)
+
+overridevirtual
+
+ +

Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void HeightFieldShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SaveMaterialState()

+ +
+
+ + + + + +
+ + + + + + + + +
void HeightFieldShape::SaveMaterialState (PhysicsMaterialListoutMaterials) const
+
+overridevirtual
+
+ +
+
+ +

◆ SetHeights()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void HeightFieldShape::SetHeights (uint inX,
uint inY,
uint inSizeX,
uint inSizeY,
const float * inHeights,
intptr_t inHeightsStride,
TempAllocatorinAllocator,
float inActiveEdgeCosThresholdAngle = 0.996195f 
)
+
+

Set the height values of a block of data. Note that this requires decompressing and recompressing a border of size mBlockSize in the negative x/y direction so will cause some precision loss. Beware this can create a race condition if you're running collision queries in parallel. See class documentation for more information.

Parameters
+ + + + + + + + + +
inXStart X position, must be a multiple of mBlockSize and in the range [0, mSampleCount - 1]
inYStart Y position, must be a multiple of mBlockSize and in the range [0, mSampleCount - 1]
inSizeXNumber of samples in X direction, must be a multiple of mBlockSize and in the range [0, mSampleCount - inX]
inSizeYNumber of samples in Y direction, must be a multiple of mBlockSize and in the range [0, mSampleCount - inX]
inHeightsThe new height values to set, must be an array of inSizeX * inSizeY floats, can be cNoCollisionValue. Values outside of the range [GetMinHeightValue(), GetMaxHeightValue()] will be clamped.
inHeightsStrideStride in floats between two consecutive rows of inHeights (can be negative if the data is upside down).
inAllocatorAllocator to use for temporary memory
inActiveEdgeCosThresholdAngleCosine of the threshold angle (if the angle between the two triangles is bigger than this, the edge is active, note that a concave edge is always inactive).
+
+
+ +
+
+ +

◆ SetMaterials()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool HeightFieldShape::SetMaterials (uint inX,
uint inY,
uint inSizeX,
uint inSizeY,
const uint8inMaterials,
intptr_t inMaterialsStride,
const PhysicsMaterialListinMaterialList,
TempAllocatorinAllocator 
)
+
+

Set the material indices of a block of data. Beware this can create a race condition if you're running collision queries in parallel. See class documentation for more information.

Parameters
+ + + + + + + + + +
inXStart X position, must in the range [0, mSampleCount - 1]
inYStart Y position, must in the range [0, mSampleCount - 1]
inSizeXNumber of samples in X direction
inSizeYNumber of samples in Y direction
inMaterialsThe new material indices, must be at least inSizeX * inSizeY uint8s. Values are returned in x-major order.
inMaterialsStrideStride in uint8s between two consecutive rows of inMaterials (can be negative if the data is upside down).
inMaterialListThe material list to use for the new material indices or nullptr if the material list should not be updated
inAllocatorAllocator to use for temporary memory
+
+
+
Returns
True if the material indices were set, false if the total number of materials exceeded 256
+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void HeightFieldShape::sRegister ()
+
+static
+
+ +
+
+

Member Data Documentation

+ +

◆ sDrawTriangleOutlines

+ +
+
+ + + + + +
+ + + + +
JPH_NAMESPACE_BEGIN bool HeightFieldShape::sDrawTriangleOutlines = false
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_height_field_shape.js b/class_height_field_shape.js new file mode 100644 index 000000000..bad092757 --- /dev/null +++ b/class_height_field_shape.js @@ -0,0 +1,45 @@ +var class_height_field_shape = +[ + [ "DecodingContext", "class_height_field_shape_1_1_decoding_context.html", "class_height_field_shape_1_1_decoding_context" ], + [ "HSGetTrianglesContext", "struct_height_field_shape_1_1_h_s_get_triangles_context.html", "struct_height_field_shape_1_1_h_s_get_triangles_context" ], + [ "HeightFieldShape", "class_height_field_shape.html#aa3defa4f1ee1a3e606a4dbe41cd6f515", null ], + [ "HeightFieldShape", "class_height_field_shape.html#a1f6a09590e095c6950e7afff423aa0a7", null ], + [ "~HeightFieldShape", "class_height_field_shape.html#aa0ea34b1e8028766f96bdacebe06d62c", null ], + [ "CastRay", "class_height_field_shape.html#a64c5d6f9050de88be123f9d35512f7a7", null ], + [ "CastRay", "class_height_field_shape.html#a370b1fb907c0e7e7a5b4e03eeea4a220", null ], + [ "Clone", "class_height_field_shape.html#a545611b0c6e3538e9dd1948ebf0af5f6", null ], + [ "CollidePoint", "class_height_field_shape.html#a3dd607a4ac0f540c51a60e49cf84e224", null ], + [ "CollideSoftBodyVertices", "class_height_field_shape.html#aa521e6c10159a6cd54075b45ac0e2371", null ], + [ "Draw", "class_height_field_shape.html#a996a3f59d7ad00c4df53f817254f5ae1", null ], + [ "GetBlockSize", "class_height_field_shape.html#ad67c93d5bb0e12774afb528509767a7e", null ], + [ "GetHeights", "class_height_field_shape.html#ad7197b2f27b98899bc5b4b66b0fd9a27", null ], + [ "GetInnerRadius", "class_height_field_shape.html#a6546d622ca1ff86ea3c3cf7dc39753d3", null ], + [ "GetLocalBounds", "class_height_field_shape.html#aee35a24a90e88fd6858a648fcc3e8928", null ], + [ "GetMassProperties", "class_height_field_shape.html#ae44d36f0e2b925556c4f6f2f30803b62", null ], + [ "GetMaterial", "class_height_field_shape.html#a0a17b135a1676e5588f012978824316b", null ], + [ "GetMaterial", "class_height_field_shape.html#aceccce9f2e21821c5e4f34c6f1e556b1", null ], + [ "GetMaterialList", "class_height_field_shape.html#a22b4896fe8cc6cce3f0553dc7d81922b", null ], + [ "GetMaterials", "class_height_field_shape.html#aa9f1b2b52ce3e1475c70d79f4befd5d8", null ], + [ "GetMaxHeightValue", "class_height_field_shape.html#a802b254c4c64f55ddfe84b399dae0a1b", null ], + [ "GetMinHeightValue", "class_height_field_shape.html#a9111226dd889b546f466da2b53d1a01b", null ], + [ "GetPosition", "class_height_field_shape.html#a402509e2c2280d728b9e0a1290e680ba", null ], + [ "GetSampleCount", "class_height_field_shape.html#a574a78817c0d2bfe1b46dc7e1ca2c9a5", null ], + [ "GetStats", "class_height_field_shape.html#a9d3783be079e3d425bf049abf2c6a9e4", null ], + [ "GetSubmergedVolume", "class_height_field_shape.html#ab7cc33f5afd734cf43238fe8550cc069", null ], + [ "GetSubShapeCoordinates", "class_height_field_shape.html#aa98bc099a0466ff6e4284d5942b738ce", null ], + [ "GetSubShapeIDBitsRecursive", "class_height_field_shape.html#ab7c2e6fc0f60fa4290474d758473b3ab", null ], + [ "GetSupportingFace", "class_height_field_shape.html#a39e1a2fa721479131b1fefe0b2ea98a7", null ], + [ "GetSurfaceNormal", "class_height_field_shape.html#ad652d9d9e8fc9a987722d222077b111a", null ], + [ "GetTrianglesNext", "class_height_field_shape.html#a08fee5448036495db2d6154bb4632a65", null ], + [ "GetTrianglesStart", "class_height_field_shape.html#a03ddda27200f07afc08f6439ce36d491", null ], + [ "GetVolume", "class_height_field_shape.html#aefe0c0c9d3017a94ac8835e84e698e9a", null ], + [ "IsNoCollision", "class_height_field_shape.html#abc679be9c4d45bd5217dc7ef9a1b1511", null ], + [ "MustBeStatic", "class_height_field_shape.html#ab850b5af741a24d3abc431d4b73d7caf", null ], + [ "ProjectOntoSurface", "class_height_field_shape.html#a177f33234760b2fcf48a9b23e8a17fec", null ], + [ "RestoreBinaryState", "class_height_field_shape.html#a9b2126b83b4ff79815efd7403ddb0c4d", null ], + [ "RestoreMaterialState", "class_height_field_shape.html#a60a76ec2d43e2f91967bee14723ba270", null ], + [ "SaveBinaryState", "class_height_field_shape.html#acc3c82df54796217822e188dd39bd87b", null ], + [ "SaveMaterialState", "class_height_field_shape.html#acef4504a65c6f299d457b072dbe3789b", null ], + [ "SetHeights", "class_height_field_shape.html#a2513680991c5082396e8226ab15deb44", null ], + [ "SetMaterials", "class_height_field_shape.html#adbd4df5017efbafc07c4187c8c6faf36", null ] +]; \ No newline at end of file diff --git a/class_height_field_shape.png b/class_height_field_shape.png new file mode 100644 index 000000000..74f22babf Binary files /dev/null and b/class_height_field_shape.png differ diff --git a/class_height_field_shape_1_1_decoding_context-members.html b/class_height_field_shape_1_1_decoding_context-members.html new file mode 100644 index 000000000..81a38b62c --- /dev/null +++ b/class_height_field_shape_1_1_decoding_context-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HeightFieldShape::DecodingContext Member List
+
+
+ +

This is the complete list of members for HeightFieldShape::DecodingContext, including all inherited members.

+ + + + +
DecodingContext(const HeightFieldShape *inShape)HeightFieldShape::DecodingContextinlineexplicit
IsDoneWalking() constHeightFieldShape::DecodingContextinline
WalkHeightField(Visitor &ioVisitor)HeightFieldShape::DecodingContextinline
+
+ + + + diff --git a/class_height_field_shape_1_1_decoding_context.html b/class_height_field_shape_1_1_decoding_context.html new file mode 100644 index 000000000..7567797d4 --- /dev/null +++ b/class_height_field_shape_1_1_decoding_context.html @@ -0,0 +1,212 @@ + + + + + + + +Jolt Physics: HeightFieldShape::DecodingContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HeightFieldShape::DecodingContext Class Reference
+
+
+ + + + + + + + + +

+Public Member Functions

JPH_INLINE DecodingContext (const HeightFieldShape *inShape)
 
template<class Visitor >
JPH_INLINE void WalkHeightField (Visitor &ioVisitor)
 
JPH_INLINE bool IsDoneWalking () const
 
+

Constructor & Destructor Documentation

+ +

◆ DecodingContext()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE HeightFieldShape::DecodingContext::DecodingContext (const HeightFieldShapeinShape)
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ IsDoneWalking()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE bool HeightFieldShape::DecodingContext::IsDoneWalking () const
+
+inline
+
+ +
+
+ +

◆ WalkHeightField()

+ +
+
+
+template<class Visitor >
+ + + + + +
+ + + + + + + + +
JPH_INLINE void HeightFieldShape::DecodingContext::WalkHeightField (Visitor & ioVisitor)
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_height_field_shape_1_1_decoding_context.js b/class_height_field_shape_1_1_decoding_context.js new file mode 100644 index 000000000..e704dc76b --- /dev/null +++ b/class_height_field_shape_1_1_decoding_context.js @@ -0,0 +1,6 @@ +var class_height_field_shape_1_1_decoding_context = +[ + [ "DecodingContext", "class_height_field_shape_1_1_decoding_context.html#a7622cbd7f7338a38654def62a270dd34", null ], + [ "IsDoneWalking", "class_height_field_shape_1_1_decoding_context.html#a07f0c967d33e29768081ff5eded07452", null ], + [ "WalkHeightField", "class_height_field_shape_1_1_decoding_context.html#ada72d7edafb747b4b35afedb29670f1b", null ] +]; \ No newline at end of file diff --git a/class_height_field_shape_settings-members.html b/class_height_field_shape_settings-members.html new file mode 100644 index 000000000..bdd1ed65e --- /dev/null +++ b/class_height_field_shape_settings-members.html @@ -0,0 +1,152 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HeightFieldShapeSettings Member List
+
+
+ +

This is the complete list of members for HeightFieldShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
CalculateBitsPerSampleForError(float inMaxError) constHeightFieldShapeSettings
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
Create() const overrideHeightFieldShapeSettingsvirtual
DetermineMinAndMaxSample(float &outMinValue, float &outMaxValue, float &outQuantizationScale) constHeightFieldShapeSettings
GetRefCount() constRefTarget< ShapeSettings >inline
HeightFieldShapeSettings()=defaultHeightFieldShapeSettings
HeightFieldShapeSettings(const float *inSamples, Vec3Arg inOffset, Vec3Arg inScale, uint32 inSampleCount, const uint8 *inMaterialIndices=nullptr, const PhysicsMaterialList &inMaterialList=PhysicsMaterialList())HeightFieldShapeSettings
mActiveEdgeCosThresholdAngleHeightFieldShapeSettings
mBitsPerSampleHeightFieldShapeSettings
mBlockSizeHeightFieldShapeSettings
mCachedResultShapeSettingsmutableprotected
mHeightSamplesHeightFieldShapeSettings
mMaterialIndicesHeightFieldShapeSettings
mMaterialsHeightFieldShapeSettings
mMaterialsCapacityHeightFieldShapeSettings
mMaxHeightValueHeightFieldShapeSettings
mMinHeightValueHeightFieldShapeSettings
mOffsetHeightFieldShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mSampleCountHeightFieldShapeSettings
mScaleHeightFieldShapeSettings
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_height_field_shape_settings.html b/class_height_field_shape_settings.html new file mode 100644 index 000000000..88a7e75f5 --- /dev/null +++ b/class_height_field_shape_settings.html @@ -0,0 +1,612 @@ + + + + + + + +Jolt Physics: HeightFieldShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HeightFieldShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a HeightFieldShape. + More...

+ +

#include <HeightFieldShape.h>

+
+Inheritance diagram for HeightFieldShapeSettings:
+
+
+ + +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 HeightFieldShapeSettings ()=default
 Default constructor for deserialization.
 
 HeightFieldShapeSettings (const float *inSamples, Vec3Arg inOffset, Vec3Arg inScale, uint32 inSampleCount, const uint8 *inMaterialIndices=nullptr, const PhysicsMaterialList &inMaterialList=PhysicsMaterialList())
 
virtual ShapeResult Create () const override
 Create a shape according to the settings specified by this object.
 
void DetermineMinAndMaxSample (float &outMinValue, float &outMaxValue, float &outQuantizationScale) const
 
uint32 CalculateBitsPerSampleForError (float inMaxError) const
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Vec3 mOffset = Vec3::sZero()
 
Vec3 mScale = Vec3::sReplicate(1.0f)
 
uint32 mSampleCount = 0
 
float mMinHeightValue = FLT_MAX
 Artificial minimal value of mHeightSamples, used for compression and can be used to update the terrain after creating with lower height values. If there are any lower values in mHeightSamples, this value will be ignored.
 
float mMaxHeightValue = -FLT_MAX
 Artificial maximum value of mHeightSamples, used for compression and can be used to update the terrain after creating with higher height values. If there are any higher values in mHeightSamples, this value will be ignored.
 
uint32 mMaterialsCapacity = 0
 
uint32 mBlockSize = 2
 
uint32 mBitsPerSample = 8
 
Array< float > mHeightSamples
 An array of mSampleCount^2 height samples. Samples are stored in row major order, so the sample at (x, y) is at index y * mSampleCount + x.
 
Array< uint8mMaterialIndices
 An array of (mSampleCount - 1)^2 material indices.
 
PhysicsMaterialList mMaterials
 The materials of square at (x, y) is: mMaterials[mMaterialIndices[x + y * (mSampleCount - 1)]].
 
float mActiveEdgeCosThresholdAngle = 0.996195f
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a HeightFieldShape.

+

Constructor & Destructor Documentation

+ +

◆ HeightFieldShapeSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
HeightFieldShapeSettings::HeightFieldShapeSettings ()
+
+default
+
+ +

Default constructor for deserialization.

+ +
+
+ +

◆ HeightFieldShapeSettings() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HeightFieldShapeSettings::HeightFieldShapeSettings (const float * inSamples,
Vec3Arg inOffset,
Vec3Arg inScale,
uint32 inSampleCount,
const uint8inMaterialIndices = nullptr,
const PhysicsMaterialListinMaterialList = PhysicsMaterialList() 
)
+
+

Create a height field shape of inSampleCount * inSampleCount vertices. The height field is a surface defined by: inOffset + inScale * (x, inSamples[y * inSampleCount + x], y). where x and y are integers in the range x and y e [0, inSampleCount - 1]. inSampleCount: inSampleCount / mBlockSize must be minimally 2 and a power of 2 is the most efficient in terms of performance and storage. inSamples: inSampleCount^2 vertices. inMaterialIndices: (inSampleCount - 1)^2 indices that index into inMaterialList.

+ +
+
+

Member Function Documentation

+ +

◆ CalculateBitsPerSampleForError()

+ +
+
+ + + + + + + + +
uint32 HeightFieldShapeSettings::CalculateBitsPerSampleForError (float inMaxError) const
+
+

Given mBlockSize, mSampleCount and mHeightSamples, calculate the amount of bits needed to stay below absolute error inMaxError

Parameters
+ + +
inMaxErrorMaximum allowed error in mHeightSamples after compression (note that this does not take mScale.Y into account)
+
+
+
Returns
Needed bits per sample in the range [1, 8].
+ +
+
+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + +
ShapeSettings::ShapeResult HeightFieldShapeSettings::Create () const
+
+overridevirtual
+
+ +

Create a shape according to the settings specified by this object.

+ +

Implements ShapeSettings.

+ +
+
+ +

◆ DetermineMinAndMaxSample()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void HeightFieldShapeSettings::DetermineMinAndMaxSample (float & outMinValue,
float & outMaxValue,
float & outQuantizationScale 
) const
+
+

Determine the minimal and maximal value of mHeightSamples (will ignore cNoCollisionValue)

Parameters
+ + + + +
outMinValueThe minimal value of mHeightSamples or FLT_MAX if no samples have collision
outMaxValueThe maximal value of mHeightSamples or -FLT_MAX if no samples have collision
outQuantizationScale(value - outMinValue) * outQuantizationScale quantizes a height sample to 16 bits
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mActiveEdgeCosThresholdAngle

+ +
+
+ + + + +
float HeightFieldShapeSettings::mActiveEdgeCosThresholdAngle = 0.996195f
+
+

Cosine of the threshold angle (if the angle between the two triangles is bigger than this, the edge is active, note that a concave edge is always inactive). Setting this value too small can cause ghost collisions with edges, setting it too big can cause depenetration artifacts (objects not depenetrating quickly). Valid ranges are between cos(0 degrees) and cos(90 degrees). The default value is cos(5 degrees).

+ +
+
+ +

◆ mBitsPerSample

+ +
+
+ + + + +
uint32 HeightFieldShapeSettings::mBitsPerSample = 8
+
+

How many bits per sample to use to compress the height field. Can be in the range [1, 8]. Note that each sample is compressed relative to the min/max value of its block of mBlockSize * mBlockSize pixels so the effective precision is higher. Also note that increasing mBlockSize saves more memory than reducing the amount of bits per sample.

+ +
+
+ +

◆ mBlockSize

+ +
+
+ + + + +
uint32 HeightFieldShapeSettings::mBlockSize = 2
+
+

The heightfield is divided in blocks of mBlockSize * mBlockSize * 2 triangles and the acceleration structure culls blocks only, bigger block sizes reduce memory consumption but also reduce query performance. Sensible values are [2, 8], does not need to be a power of 2. Note that at run-time we'll perform one more grid subdivision, so the effective block size is half of what is provided here.

+ +
+
+ +

◆ mHeightSamples

+ +
+
+ + + + +
Array<float> HeightFieldShapeSettings::mHeightSamples
+
+ +

An array of mSampleCount^2 height samples. Samples are stored in row major order, so the sample at (x, y) is at index y * mSampleCount + x.

+ +
+
+ +

◆ mMaterialIndices

+ +
+
+ + + + +
Array<uint8> HeightFieldShapeSettings::mMaterialIndices
+
+ +

An array of (mSampleCount - 1)^2 material indices.

+ +
+
+ +

◆ mMaterials

+ +
+
+ + + + +
PhysicsMaterialList HeightFieldShapeSettings::mMaterials
+
+ +

The materials of square at (x, y) is: mMaterials[mMaterialIndices[x + y * (mSampleCount - 1)]].

+ +
+
+ +

◆ mMaterialsCapacity

+ +
+
+ + + + +
uint32 HeightFieldShapeSettings::mMaterialsCapacity = 0
+
+

When bigger than mMaterials.size() the internal material list will be preallocated to support this number of materials. This avoids reallocations when calling HeightFieldShape::SetMaterials with new materials later.

+ +
+
+ +

◆ mMaxHeightValue

+ +
+
+ + + + +
float HeightFieldShapeSettings::mMaxHeightValue = -FLT_MAX
+
+ +

Artificial maximum value of mHeightSamples, used for compression and can be used to update the terrain after creating with higher height values. If there are any higher values in mHeightSamples, this value will be ignored.

+ +
+
+ +

◆ mMinHeightValue

+ +
+
+ + + + +
float HeightFieldShapeSettings::mMinHeightValue = FLT_MAX
+
+ +

Artificial minimal value of mHeightSamples, used for compression and can be used to update the terrain after creating with lower height values. If there are any lower values in mHeightSamples, this value will be ignored.

+ +
+
+ +

◆ mOffset

+ +
+
+ + + + +
Vec3 HeightFieldShapeSettings::mOffset = Vec3::sZero()
+
+

The height field is a surface defined by: mOffset + mScale * (x, mHeightSamples[y * mSampleCount + x], y). where x and y are integers in the range x and y e [0, mSampleCount - 1].

+ +
+
+ +

◆ mSampleCount

+ +
+
+ + + + +
uint32 HeightFieldShapeSettings::mSampleCount = 0
+
+ +
+
+ +

◆ mScale

+ +
+
+ + + + +
Vec3 HeightFieldShapeSettings::mScale = Vec3::sReplicate(1.0f)
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_height_field_shape_settings.js b/class_height_field_shape_settings.js new file mode 100644 index 000000000..2ffef5613 --- /dev/null +++ b/class_height_field_shape_settings.js @@ -0,0 +1,20 @@ +var class_height_field_shape_settings = +[ + [ "HeightFieldShapeSettings", "class_height_field_shape_settings.html#a3bd65c794f1651b192e95a4fc7c60576", null ], + [ "HeightFieldShapeSettings", "class_height_field_shape_settings.html#adf01e409660816defec790e752348cc0", null ], + [ "CalculateBitsPerSampleForError", "class_height_field_shape_settings.html#afa8076803d2d512fbe625d0eb9c90811", null ], + [ "Create", "class_height_field_shape_settings.html#aba3ca652ae38def1bcdc999738eb7b61", null ], + [ "DetermineMinAndMaxSample", "class_height_field_shape_settings.html#a461c9c2289620877314186af163ebf73", null ], + [ "mActiveEdgeCosThresholdAngle", "class_height_field_shape_settings.html#ac600befce41089e57309054090c889c8", null ], + [ "mBitsPerSample", "class_height_field_shape_settings.html#a7f87d207da7948e2a36a22be55143ad0", null ], + [ "mBlockSize", "class_height_field_shape_settings.html#a8e99fb8a4d1444569a307ac2b9712e31", null ], + [ "mHeightSamples", "class_height_field_shape_settings.html#a7e55509101c2c09001a431825ca0c82a", null ], + [ "mMaterialIndices", "class_height_field_shape_settings.html#aea730c5a9dc0ebbc614448d5b6187d00", null ], + [ "mMaterials", "class_height_field_shape_settings.html#af9c4d464234b38f19df16faab06c6f38", null ], + [ "mMaterialsCapacity", "class_height_field_shape_settings.html#a356d9e6fda2e3fca23239b77dd86d273", null ], + [ "mMaxHeightValue", "class_height_field_shape_settings.html#a8851f44e1c36e194a1fa033c463fedb7", null ], + [ "mMinHeightValue", "class_height_field_shape_settings.html#a5a5666c8a5c77d89b4fd1f7fb555a96e", null ], + [ "mOffset", "class_height_field_shape_settings.html#a7b2cbd09f2cd2d0c5d5381ab244a1d6a", null ], + [ "mSampleCount", "class_height_field_shape_settings.html#a8028cb21d400d589b670f0a88d25e4b8", null ], + [ "mScale", "class_height_field_shape_settings.html#abdaa8bfc9ee9392b6813519a989f089e", null ] +]; \ No newline at end of file diff --git a/class_height_field_shape_settings.png b/class_height_field_shape_settings.png new file mode 100644 index 000000000..25aa9f03e Binary files /dev/null and b/class_height_field_shape_settings.png differ diff --git a/class_hinge_constraint-members.html b/class_hinge_constraint-members.html new file mode 100644 index 000000000..adca1bbf1 --- /dev/null +++ b/class_hinge_constraint-members.html @@ -0,0 +1,199 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HingeConstraint Member List
+
+
+ +

This is the complete list of members for HingeConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const overrideHingeConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) const overrideHingeConstraintvirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overrideHingeConstraintvirtual
GetConstraintToBody1Matrix() const overrideHingeConstraintvirtual
GetConstraintToBody2Matrix() const overrideHingeConstraintvirtual
GetCurrentAngle() constHingeConstraint
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetLimitsMax() constHingeConstraintinline
GetLimitsMin() constHingeConstraintinline
GetLimitsSpringSettings() constHingeConstraintinline
GetLimitsSpringSettings()HingeConstraintinline
GetLocalSpaceHingeAxis1() constHingeConstraintinline
GetLocalSpaceHingeAxis2() constHingeConstraintinline
GetLocalSpaceNormalAxis1() constHingeConstraintinline
GetLocalSpaceNormalAxis2() constHingeConstraintinline
GetLocalSpacePoint1() constHingeConstraintinline
GetLocalSpacePoint2() constHingeConstraintinline
GetMaxFrictionTorque() constHingeConstraintinline
GetMotorSettings()HingeConstraintinline
GetMotorSettings() constHingeConstraintinline
GetMotorState() constHingeConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const overrideHingeConstraintinlinevirtual
GetTargetAngle() constHingeConstraintinline
GetTargetAngularVelocity() constHingeConstraintinline
GetTotalLambdaMotor() constHingeConstraintinline
GetTotalLambdaPosition() constHingeConstraintinline
GetTotalLambdaRotation() constHingeConstraintinline
GetTotalLambdaRotationLimits() constHingeConstraintinline
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
HasLimits() constHingeConstraintinline
HingeConstraint(Body &inBody1, Body &inBody2, const HingeConstraintSettings &inSettings)HingeConstraint
IsActive() const overrideTwoBodyConstraintinlinevirtual
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overrideHingeConstraintvirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart() overrideHingeConstraintvirtual
RestoreState(StateRecorder &inStream) overrideHingeConstraintvirtual
SaveState(StateRecorder &inStream) const overrideHingeConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetLimits(float inLimitsMin, float inLimitsMax)HingeConstraint
SetLimitsSpringSettings(const SpringSettings &inLimitsSpringSettings)HingeConstraintinline
SetMaxFrictionTorque(float inFrictionTorque)HingeConstraintinline
SetMotorState(EMotorState inState)HingeConstraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetTargetAngle(float inAngle)HingeConstraintinline
SetTargetAngularVelocity(float inAngularVelocity)HingeConstraintinline
SetupVelocityConstraint(float inDeltaTime) overrideHingeConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overrideHingeConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overrideHingeConstraintvirtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overrideHingeConstraintvirtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_hinge_constraint.html b/class_hinge_constraint.html new file mode 100644 index 000000000..4eed13be8 --- /dev/null +++ b/class_hinge_constraint.html @@ -0,0 +1,1542 @@ + + + + + + + +Jolt Physics: HingeConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HingeConstraint Class Referencefinal
+
+
+ +

A hinge constraint constrains 2 bodies on a single point and allows only a single axis of rotation. + More...

+ +

#include <HingeConstraint.h>

+
+Inheritance diagram for HingeConstraint:
+
+
+ + +TwoBodyConstraint +Constraint +RefTarget< Constraint > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE HingeConstraint (Body &inBody1, Body &inBody2, const HingeConstraintSettings &inSettings)
 Construct hinge constraint.
 
virtual EConstraintSubType GetSubType () const override
 Get the sub type of a constraint.
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
virtual Mat44 GetConstraintToBody1Matrix () const override
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const override
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
Vec3 GetLocalSpacePoint1 () const
 Get the attachment point for body 1 relative to body 1 COM (transform by Body::GetCenterOfMassTransform to take to world space)
 
Vec3 GetLocalSpacePoint2 () const
 Get the attachment point for body 2 relative to body 2 COM (transform by Body::GetCenterOfMassTransform to take to world space)
 
Vec3 GetLocalSpaceHingeAxis1 () const
 
Vec3 GetLocalSpaceHingeAxis2 () const
 
Vec3 GetLocalSpaceNormalAxis1 () const
 
Vec3 GetLocalSpaceNormalAxis2 () const
 
float GetCurrentAngle () const
 Get the current rotation angle from the rest position.
 
void SetMaxFrictionTorque (float inFrictionTorque)
 
float GetMaxFrictionTorque () const
 
MotorSettingsGetMotorSettings ()
 
const MotorSettingsGetMotorSettings () const
 
void SetMotorState (EMotorState inState)
 
EMotorState GetMotorState () const
 
void SetTargetAngularVelocity (float inAngularVelocity)
 rad/s
 
float GetTargetAngularVelocity () const
 
void SetTargetAngle (float inAngle)
 rad
 
float GetTargetAngle () const
 
void SetLimits (float inLimitsMin, float inLimitsMax)
 Update the rotation limits of the hinge, value in radians (see HingeConstraintSettings)
 
float GetLimitsMin () const
 
float GetLimitsMax () const
 
bool HasLimits () const
 
const SpringSettingsGetLimitsSpringSettings () const
 Update the limits spring settings.
 
SpringSettingsGetLimitsSpringSettings ()
 
void SetLimitsSpringSettings (const SpringSettings &inLimitsSpringSettings)
 
- Public Member Functions inherited from TwoBodyConstraint
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + +

Get Lagrange multiplier from last physics update (the linear/angular impulse applied to satisfy the constraint)

Vec3 GetTotalLambdaPosition () const
 
Vector< 2 > GetTotalLambdaRotation () const
 
float GetTotalLambdaRotationLimits () const
 
float GetTotalLambdaMotor () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from TwoBodyConstraint
BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A hinge constraint constrains 2 bodies on a single point and allows only a single axis of rotation.

+

Constructor & Destructor Documentation

+ +

◆ HingeConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
HingeConstraint::HingeConstraint (BodyinBody1,
BodyinBody2,
const HingeConstraintSettingsinSettings 
)
+
+ +

Construct hinge constraint.

+ +
+
+

Member Function Documentation

+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ DrawConstraintLimits()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraint::DrawConstraintLimits (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > HingeConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 HingeConstraint::GetConstraintToBody1Matrix () const
+
+overridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 HingeConstraint::GetConstraintToBody2Matrix () const
+
+overridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetCurrentAngle()

+ +
+
+ + + + + + + +
float HingeConstraint::GetCurrentAngle () const
+
+ +

Get the current rotation angle from the rest position.

+ +
+
+ +

◆ GetLimitsMax()

+ +
+
+ + + + + +
+ + + + + + + +
float HingeConstraint::GetLimitsMax () const
+
+inline
+
+ +
+
+ +

◆ GetLimitsMin()

+ +
+
+ + + + + +
+ + + + + + + +
float HingeConstraint::GetLimitsMin () const
+
+inline
+
+ +
+
+ +

◆ GetLimitsSpringSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SpringSettings & HingeConstraint::GetLimitsSpringSettings ()
+
+inline
+
+ +
+
+ +

◆ GetLimitsSpringSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const SpringSettings & HingeConstraint::GetLimitsSpringSettings () const
+
+inline
+
+ +

Update the limits spring settings.

+ +
+
+ +

◆ GetLocalSpaceHingeAxis1()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 HingeConstraint::GetLocalSpaceHingeAxis1 () const
+
+inline
+
+ +
+
+ +

◆ GetLocalSpaceHingeAxis2()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 HingeConstraint::GetLocalSpaceHingeAxis2 () const
+
+inline
+
+ +
+
+ +

◆ GetLocalSpaceNormalAxis1()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 HingeConstraint::GetLocalSpaceNormalAxis1 () const
+
+inline
+
+ +
+
+ +

◆ GetLocalSpaceNormalAxis2()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 HingeConstraint::GetLocalSpaceNormalAxis2 () const
+
+inline
+
+ +
+
+ +

◆ GetLocalSpacePoint1()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 HingeConstraint::GetLocalSpacePoint1 () const
+
+inline
+
+ +

Get the attachment point for body 1 relative to body 1 COM (transform by Body::GetCenterOfMassTransform to take to world space)

+ +
+
+ +

◆ GetLocalSpacePoint2()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 HingeConstraint::GetLocalSpacePoint2 () const
+
+inline
+
+ +

Get the attachment point for body 2 relative to body 2 COM (transform by Body::GetCenterOfMassTransform to take to world space)

+ +
+
+ +

◆ GetMaxFrictionTorque()

+ +
+
+ + + + + +
+ + + + + + + +
float HingeConstraint::GetMaxFrictionTorque () const
+
+inline
+
+ +
+
+ +

◆ GetMotorSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
MotorSettings & HingeConstraint::GetMotorSettings ()
+
+inline
+
+ +
+
+ +

◆ GetMotorSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const MotorSettings & HingeConstraint::GetMotorSettings () const
+
+inline
+
+ +
+
+ +

◆ GetMotorState()

+ +
+
+ + + + + +
+ + + + + + + +
EMotorState HingeConstraint::GetMotorState () const
+
+inline
+
+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType HingeConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Get the sub type of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetTargetAngle()

+ +
+
+ + + + + +
+ + + + + + + +
float HingeConstraint::GetTargetAngle () const
+
+inline
+
+ +
+
+ +

◆ GetTargetAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
float HingeConstraint::GetTargetAngularVelocity () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaMotor()

+ +
+
+ + + + + +
+ + + + + + + +
float HingeConstraint::GetTotalLambdaMotor () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 HingeConstraint::GetTotalLambdaPosition () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaRotation()

+ +
+
+ + + + + +
+ + + + + + + +
Vector< 2 > HingeConstraint::GetTotalLambdaRotation () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaRotationLimits()

+ +
+
+ + + + + +
+ + + + + + + +
float HingeConstraint::GetTotalLambdaRotationLimits () const
+
+inline
+
+ +
+
+ +

◆ HasLimits()

+ +
+
+ + + + + +
+ + + + + + + +
bool HingeConstraint::HasLimits () const
+
+inline
+
+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void HingeConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+overridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void HingeConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetLimits()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void HingeConstraint::SetLimits (float inLimitsMin,
float inLimitsMax 
)
+
+ +

Update the rotation limits of the hinge, value in radians (see HingeConstraintSettings)

+ +
+
+ +

◆ SetLimitsSpringSettings()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraint::SetLimitsSpringSettings (const SpringSettingsinLimitsSpringSettings)
+
+inline
+
+ +
+
+ +

◆ SetMaxFrictionTorque()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraint::SetMaxFrictionTorque (float inFrictionTorque)
+
+inline
+
+ +
+
+ +

◆ SetMotorState()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraint::SetMotorState (EMotorState inState)
+
+inline
+
+ +
+
+ +

◆ SetTargetAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraint::SetTargetAngle (float inAngle)
+
+inline
+
+ +

rad

+ +
+
+ +

◆ SetTargetAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraint::SetTargetAngularVelocity (float inAngularVelocity)
+
+inline
+
+ +

rad/s

+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool HingeConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool HingeConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_hinge_constraint.js b/class_hinge_constraint.js new file mode 100644 index 000000000..48cc6b83d --- /dev/null +++ b/class_hinge_constraint.js @@ -0,0 +1,46 @@ +var class_hinge_constraint = +[ + [ "HingeConstraint", "class_hinge_constraint.html#a7337c51b877bbc1c3848d3de7b3dae8f", null ], + [ "DrawConstraint", "class_hinge_constraint.html#ab73c3ac05525ab37e8dd8875ce74ac74", null ], + [ "DrawConstraintLimits", "class_hinge_constraint.html#a7fbe9f4f52961a1fa196122c735249d7", null ], + [ "GetConstraintSettings", "class_hinge_constraint.html#aba9c90a3d3565e738758d6ee5b17dcba", null ], + [ "GetConstraintToBody1Matrix", "class_hinge_constraint.html#a2b528317cc292b5538af7df466934016", null ], + [ "GetConstraintToBody2Matrix", "class_hinge_constraint.html#aae6aa9af08443b65a7ea85323876dde4", null ], + [ "GetCurrentAngle", "class_hinge_constraint.html#a7184e290eab00d8b27ad6366adb131f3", null ], + [ "GetLimitsMax", "class_hinge_constraint.html#a519d665c4924aa96430f28b082f0075f", null ], + [ "GetLimitsMin", "class_hinge_constraint.html#a88442c3ae9fa433d4aed1484704d3b6a", null ], + [ "GetLimitsSpringSettings", "class_hinge_constraint.html#a4291ba13c80bfe5a166c5125d541c796", null ], + [ "GetLimitsSpringSettings", "class_hinge_constraint.html#a24ef12595b64ec30ec2a49470b83b55f", null ], + [ "GetLocalSpaceHingeAxis1", "class_hinge_constraint.html#ac42523160446c880453eacb77d0453fa", null ], + [ "GetLocalSpaceHingeAxis2", "class_hinge_constraint.html#aa3feb036294982548963aa7351b14981", null ], + [ "GetLocalSpaceNormalAxis1", "class_hinge_constraint.html#a9dc2dd124efb401c50169f67c0958b81", null ], + [ "GetLocalSpaceNormalAxis2", "class_hinge_constraint.html#a4c3ac4ceae329cf7910f28d2bcf9c8bf", null ], + [ "GetLocalSpacePoint1", "class_hinge_constraint.html#af0cd2640d5ea0e2c8fecd6af90d90a0a", null ], + [ "GetLocalSpacePoint2", "class_hinge_constraint.html#a86cca7ab010c4fe5ef29c514a2b3e651", null ], + [ "GetMaxFrictionTorque", "class_hinge_constraint.html#a9695f177868118de9520091ac2eb8585", null ], + [ "GetMotorSettings", "class_hinge_constraint.html#a7fe69abe4b705d335b485eaa97b13ef1", null ], + [ "GetMotorSettings", "class_hinge_constraint.html#a41dac9c0b4fcaf494aea48d3347203fd", null ], + [ "GetMotorState", "class_hinge_constraint.html#a1dd81b1a4fa3416340a80680124dce2a", null ], + [ "GetSubType", "class_hinge_constraint.html#ac6c68736fa26f85a973b0aa95daa7674", null ], + [ "GetTargetAngle", "class_hinge_constraint.html#a952152a6165614d7e000cc61e8820edf", null ], + [ "GetTargetAngularVelocity", "class_hinge_constraint.html#ad05474eff39452c49ee10c70b780f687", null ], + [ "GetTotalLambdaMotor", "class_hinge_constraint.html#ac9320fb87c8a7de22bc822f0f9cf2f74", null ], + [ "GetTotalLambdaPosition", "class_hinge_constraint.html#af03b0287d856815e5a9cff82588d2578", null ], + [ "GetTotalLambdaRotation", "class_hinge_constraint.html#a69121251820ce4c305f3275b15242f7a", null ], + [ "GetTotalLambdaRotationLimits", "class_hinge_constraint.html#a689cbcabdb90d98b59fcdffc5417a3e7", null ], + [ "HasLimits", "class_hinge_constraint.html#af1934023ab6d537ecc04cb605c6fada3", null ], + [ "NotifyShapeChanged", "class_hinge_constraint.html#ab9dd0d5de72165fcb15b85d02308213a", null ], + [ "ResetWarmStart", "class_hinge_constraint.html#aa6308f0b4983d8bfb2e835fea7cc28b7", null ], + [ "RestoreState", "class_hinge_constraint.html#ab511231f1d1c0ea20d9d7e9a3d996091", null ], + [ "SaveState", "class_hinge_constraint.html#a5a0a5235be47dfd889f89a4651f36993", null ], + [ "SetLimits", "class_hinge_constraint.html#a7ca6ee7cd4daf818ce62fd868f0b0fdc", null ], + [ "SetLimitsSpringSettings", "class_hinge_constraint.html#a2944e53bdf5d783718b5d40dbd03b85d", null ], + [ "SetMaxFrictionTorque", "class_hinge_constraint.html#ad693d37205991f105a85897e6bfe5732", null ], + [ "SetMotorState", "class_hinge_constraint.html#ab4edc1ef87211c5b093f9690835bd2c1", null ], + [ "SetTargetAngle", "class_hinge_constraint.html#ac2efec9945040fae41af37498ba5f357", null ], + [ "SetTargetAngularVelocity", "class_hinge_constraint.html#a8f17d0facd91bdaba60f9ac473db1b2f", null ], + [ "SetupVelocityConstraint", "class_hinge_constraint.html#a4544b739d29da7059c04dd3ff87ac04f", null ], + [ "SolvePositionConstraint", "class_hinge_constraint.html#a3ca88c214e95ffdd5b8725d456c23eee", null ], + [ "SolveVelocityConstraint", "class_hinge_constraint.html#ab4b3e0e2e12a3c79f7c7dfd4b01be004", null ], + [ "WarmStartVelocityConstraint", "class_hinge_constraint.html#a3c1c14996144a0a8dacaed226a6278f8", null ] +]; \ No newline at end of file diff --git a/class_hinge_constraint.png b/class_hinge_constraint.png new file mode 100644 index 000000000..8b48eabda Binary files /dev/null and b/class_hinge_constraint.png differ diff --git a/class_hinge_constraint_settings-members.html b/class_hinge_constraint_settings-members.html new file mode 100644 index 000000000..5b3e5c4b7 --- /dev/null +++ b/class_hinge_constraint_settings-members.html @@ -0,0 +1,154 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HingeConstraintSettings Member List
+
+
+ +

This is the complete list of members for HingeConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const overrideHingeConstraintSettingsvirtual
GetRefCount() constRefTarget< ConstraintSettings >inline
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mHingeAxis1HingeConstraintSettings
mHingeAxis2HingeConstraintSettings
mLimitsMaxHingeConstraintSettings
mLimitsMinHingeConstraintSettings
mLimitsSpringSettingsHingeConstraintSettings
mMaxFrictionTorqueHingeConstraintSettings
mMotorSettingsHingeConstraintSettings
mNormalAxis1HingeConstraintSettings
mNormalAxis2HingeConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mPoint1HingeConstraintSettings
mPoint2HingeConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mSpaceHingeConstraintSettings
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideHingeConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overrideHingeConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_hinge_constraint_settings.html b/class_hinge_constraint_settings.html new file mode 100644 index 000000000..f25fc60f2 --- /dev/null +++ b/class_hinge_constraint_settings.html @@ -0,0 +1,546 @@ + + + + + + + +Jolt Physics: HingeConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HingeConstraintSettings Class Referencefinal
+
+
+ +

Hinge constraint settings, used to create a hinge constraint. + More...

+ +

#include <HingeConstraint.h>

+
+Inheritance diagram for HingeConstraintSettings:
+
+
+ + +TwoBodyConstraintSettings +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 Create an instance of this constraint.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EConstraintSpace mSpace = EConstraintSpace::WorldSpace
 This determines in which space the constraint is setup, all properties below should be in the specified space.
 
RVec3 mPoint1 = RVec3::sZero()
 
Vec3 mHingeAxis1 = Vec3::sAxisY()
 
Vec3 mNormalAxis1 = Vec3::sAxisX()
 
RVec3 mPoint2 = RVec3::sZero()
 Body 2 constraint reference frame (space determined by mSpace)
 
Vec3 mHingeAxis2 = Vec3::sAxisY()
 
Vec3 mNormalAxis2 = Vec3::sAxisX()
 
float mLimitsMin = -JPH_PI
 
float mLimitsMax = JPH_PI
 
SpringSettings mLimitsSpringSettings
 When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will pull it back.
 
float mMaxFrictionTorque = 0.0f
 Maximum amount of torque (N m) to apply as friction when the constraint is not powered by a motor.
 
MotorSettings mMotorSettings
 In case the constraint is powered, this determines the motor settings around the hinge axis.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Hinge constraint settings, used to create a hinge constraint.

+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * HingeConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+overridevirtual
+
+ +

Create an instance of this constraint.

+ +

Implements TwoBodyConstraintSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mHingeAxis1

+ +
+
+ + + + +
Vec3 HingeConstraintSettings::mHingeAxis1 = Vec3::sAxisY()
+
+ +
+
+ +

◆ mHingeAxis2

+ +
+
+ + + + +
Vec3 HingeConstraintSettings::mHingeAxis2 = Vec3::sAxisY()
+
+ +
+
+ +

◆ mLimitsMax

+ +
+
+ + + + +
float HingeConstraintSettings::mLimitsMax = JPH_PI
+
+ +
+
+ +

◆ mLimitsMin

+ +
+
+ + + + +
float HingeConstraintSettings::mLimitsMin = -JPH_PI
+
+

Rotation around the hinge axis will be limited between [mLimitsMin, mLimitsMax] where mLimitsMin e [-pi, 0] and mLimitsMax e [0, pi]. Both angles are in radians.

+ +
+
+ +

◆ mLimitsSpringSettings

+ +
+
+ + + + +
SpringSettings HingeConstraintSettings::mLimitsSpringSettings
+
+ +

When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will pull it back.

+ +
+
+ +

◆ mMaxFrictionTorque

+ +
+
+ + + + +
float HingeConstraintSettings::mMaxFrictionTorque = 0.0f
+
+ +

Maximum amount of torque (N m) to apply as friction when the constraint is not powered by a motor.

+ +
+
+ +

◆ mMotorSettings

+ +
+
+ + + + +
MotorSettings HingeConstraintSettings::mMotorSettings
+
+ +

In case the constraint is powered, this determines the motor settings around the hinge axis.

+ +
+
+ +

◆ mNormalAxis1

+ +
+
+ + + + +
Vec3 HingeConstraintSettings::mNormalAxis1 = Vec3::sAxisX()
+
+ +
+
+ +

◆ mNormalAxis2

+ +
+
+ + + + +
Vec3 HingeConstraintSettings::mNormalAxis2 = Vec3::sAxisX()
+
+ +
+
+ +

◆ mPoint1

+ +
+
+ + + + +
RVec3 HingeConstraintSettings::mPoint1 = RVec3::sZero()
+
+

Body 1 constraint reference frame (space determined by mSpace). Hinge axis is the axis where rotation is allowed. When the normal axis of both bodies align in world space, the hinge angle is defined to be 0. mHingeAxis1 and mNormalAxis1 should be perpendicular. mHingeAxis2 and mNormalAxis2 should also be perpendicular. If you configure the joint in world space and create both bodies with a relative rotation you want to be defined as zero, you can simply set mHingeAxis1 = mHingeAxis2 and mNormalAxis1 = mNormalAxis2.

+ +
+
+ +

◆ mPoint2

+ +
+
+ + + + +
RVec3 HingeConstraintSettings::mPoint2 = RVec3::sZero()
+
+ +

Body 2 constraint reference frame (space determined by mSpace)

+ +
+
+ +

◆ mSpace

+ +
+
+ + + + +
EConstraintSpace HingeConstraintSettings::mSpace = EConstraintSpace::WorldSpace
+
+ +

This determines in which space the constraint is setup, all properties below should be in the specified space.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_hinge_constraint_settings.js b/class_hinge_constraint_settings.js new file mode 100644 index 000000000..66671e63a --- /dev/null +++ b/class_hinge_constraint_settings.js @@ -0,0 +1,18 @@ +var class_hinge_constraint_settings = +[ + [ "Create", "class_hinge_constraint_settings.html#a9c33cc4f73d2d92dac9b270e1e15a216", null ], + [ "RestoreBinaryState", "class_hinge_constraint_settings.html#ab9e2ce19ee6cde2921df8d3fba49d02e", null ], + [ "SaveBinaryState", "class_hinge_constraint_settings.html#ad1949141d8e31c72cd3eb6dcd8e82d28", null ], + [ "mHingeAxis1", "class_hinge_constraint_settings.html#a745bb6b35b86180af4a193dba23f07ef", null ], + [ "mHingeAxis2", "class_hinge_constraint_settings.html#a4069dacb8fa8c749be023b0817592b3c", null ], + [ "mLimitsMax", "class_hinge_constraint_settings.html#a9611cf15f448a12d21191490b9628316", null ], + [ "mLimitsMin", "class_hinge_constraint_settings.html#a269eb742fd612f668946d21161a182ac", null ], + [ "mLimitsSpringSettings", "class_hinge_constraint_settings.html#aefad4492ec92f4998a466087b5a89c8c", null ], + [ "mMaxFrictionTorque", "class_hinge_constraint_settings.html#a2f046631caa15b87030e4edfb568f248", null ], + [ "mMotorSettings", "class_hinge_constraint_settings.html#ada7a75c71a3f4fc0c2bf643160406971", null ], + [ "mNormalAxis1", "class_hinge_constraint_settings.html#ac470570dce09cb9de0d81194e023145c", null ], + [ "mNormalAxis2", "class_hinge_constraint_settings.html#a5e9d05db3bf6b0403fd4151fdc0f34c5", null ], + [ "mPoint1", "class_hinge_constraint_settings.html#aa69e0fef137c3134ff9326f02766d978", null ], + [ "mPoint2", "class_hinge_constraint_settings.html#abef028fb756f8113e9b342ce2f102467", null ], + [ "mSpace", "class_hinge_constraint_settings.html#a725ff18567624814960e708b5e3729ce", null ] +]; \ No newline at end of file diff --git a/class_hinge_constraint_settings.png b/class_hinge_constraint_settings.png new file mode 100644 index 000000000..78231ab79 Binary files /dev/null and b/class_hinge_constraint_settings.png differ diff --git a/class_hinge_rotation_constraint_part-members.html b/class_hinge_rotation_constraint_part-members.html new file mode 100644 index 000000000..a340ba59a --- /dev/null +++ b/class_hinge_rotation_constraint_part-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
HingeRotationConstraintPart Member List
+
+
+ +

This is the complete list of members for HingeRotationConstraintPart, including all inherited members.

+ + + + + + + + + + + +
CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inWorldSpaceHingeAxis1, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inWorldSpaceHingeAxis2)HingeRotationConstraintPartinline
Deactivate()HingeRotationConstraintPartinline
GetTotalLambda() constHingeRotationConstraintPartinline
Mat22 typedefHingeRotationConstraintPart
RestoreState(StateRecorder &inStream)HingeRotationConstraintPartinline
SaveState(StateRecorder &inStream) constHingeRotationConstraintPartinline
SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inBaumgarte) constHingeRotationConstraintPartinline
SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)HingeRotationConstraintPartinline
Vec2 typedefHingeRotationConstraintPart
WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)HingeRotationConstraintPartinline
+
+ + + + diff --git a/class_hinge_rotation_constraint_part.html b/class_hinge_rotation_constraint_part.html new file mode 100644 index 000000000..6b2962b4a --- /dev/null +++ b/class_hinge_rotation_constraint_part.html @@ -0,0 +1,512 @@ + + + + + + + +Jolt Physics: HingeRotationConstraintPart Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
HingeRotationConstraintPart Class Reference
+
+
+ +

#include <HingeRotationConstraintPart.h>

+ + + + + + +

+Public Types

using Vec2 = Vector< 2 >
 
using Mat22 = Matrix< 2, 2 >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void CalculateConstraintProperties (const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inWorldSpaceHingeAxis1, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inWorldSpaceHingeAxis2)
 Calculate properties used during the functions below.
 
void Deactivate ()
 Deactivate this constraint.
 
void WarmStart (Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
 Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses.
 
bool SolveVelocityConstraint (Body &ioBody1, Body &ioBody2)
 Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.
 
bool SolvePositionConstraint (Body &ioBody1, Body &ioBody2, float inBaumgarte) const
 Iteratively update the position constraint. Makes sure C(...) = 0.
 
const Vec2GetTotalLambda () const
 Return lagrange multiplier.
 
void SaveState (StateRecorder &inStream) const
 Save state of this constraint part.
 
void RestoreState (StateRecorder &inStream)
 Restore state of this constraint part.
 
+

Detailed Description

+

Constrains rotation around 2 axis so that it only allows rotation around 1 axis

+

Based on: "Constraints Derivation for Rigid Body Simulation in 3D" - Daniel Chappuis, section 2.4.1

+

Constraint equation (eq 87):

+

+\[C = \begin{bmatrix}a_1 \cdot b_2 \\ a_1 \cdot c_2\end{bmatrix}\] +

+

Jacobian (eq 90):

+

+\[J = \begin{bmatrix} +0 & -b_2 \times a_1 & 0 & b_2 \times a_1 \\ +0 & -c_2 \times a_1 & 0 & c2 \times a_1 +\end{bmatrix}\] +

+

Used terms (here and below, everything in world space):
+a1 = hinge axis on body 1.
+b2, c2 = axis perpendicular to hinge axis on body 2.
+x1, x2 = center of mass for the bodies.
+v = [v1, w1, v2, w2].
+v1, v2 = linear velocity of body 1 and 2.
+w1, w2 = angular velocity of body 1 and 2.
+M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].
+ \(K^{-1} = \left( J M^{-1} J^T \right)^{-1}\) = effective mass.
+b = velocity bias.
+ \(\beta\) = baumgarte constant.
+E = identity matrix.

+

Member Typedef Documentation

+ +

◆ Mat22

+ +
+
+ + + + +
using HingeRotationConstraintPart::Mat22 = Matrix<2, 2>
+
+ +
+
+ +

◆ Vec2

+ +
+
+ +
+
+

Member Function Documentation

+ +

◆ CalculateConstraintProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void HingeRotationConstraintPart::CalculateConstraintProperties (const BodyinBody1,
Mat44Arg inRotation1,
Vec3Arg inWorldSpaceHingeAxis1,
const BodyinBody2,
Mat44Arg inRotation2,
Vec3Arg inWorldSpaceHingeAxis2 
)
+
+inline
+
+ +

Calculate properties used during the functions below.

+ +
+
+ +

◆ Deactivate()

+ +
+
+ + + + + +
+ + + + + + + +
void HingeRotationConstraintPart::Deactivate ()
+
+inline
+
+ +

Deactivate this constraint.

+ +
+
+ +

◆ GetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
const Vec2 & HingeRotationConstraintPart::GetTotalLambda () const
+
+inline
+
+ +

Return lagrange multiplier.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeRotationConstraintPart::RestoreState (StateRecorderinStream)
+
+inline
+
+ +

Restore state of this constraint part.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void HingeRotationConstraintPart::SaveState (StateRecorderinStream) const
+
+inline
+
+ +

Save state of this constraint part.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool HingeRotationConstraintPart::SolvePositionConstraint (BodyioBody1,
BodyioBody2,
float inBaumgarte 
) const
+
+inline
+
+ +

Iteratively update the position constraint. Makes sure C(...) = 0.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool HingeRotationConstraintPart::SolveVelocityConstraint (BodyioBody1,
BodyioBody2 
)
+
+inline
+
+ +

Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.

+ +
+
+ +

◆ WarmStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void HingeRotationConstraintPart::WarmStart (BodyioBody1,
BodyioBody2,
float inWarmStartImpulseRatio 
)
+
+inline
+
+ +

Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_hinge_rotation_constraint_part.js b/class_hinge_rotation_constraint_part.js new file mode 100644 index 000000000..b9deb7940 --- /dev/null +++ b/class_hinge_rotation_constraint_part.js @@ -0,0 +1,13 @@ +var class_hinge_rotation_constraint_part = +[ + [ "Mat22", "class_hinge_rotation_constraint_part.html#ab1f18a0c76566111d337d6d175b8bbc6", null ], + [ "Vec2", "class_hinge_rotation_constraint_part.html#ac0464fe586004502d840466631aaa7b0", null ], + [ "CalculateConstraintProperties", "class_hinge_rotation_constraint_part.html#a41471ce4cbe4f3b915ba40f883a3f924", null ], + [ "Deactivate", "class_hinge_rotation_constraint_part.html#a4ae072cae1beb84f1e87eafff60f0022", null ], + [ "GetTotalLambda", "class_hinge_rotation_constraint_part.html#aa99c7f68df35ac1e3bef098c7e20225b", null ], + [ "RestoreState", "class_hinge_rotation_constraint_part.html#abf5e533e782c69c89481e4bf6e3a0a28", null ], + [ "SaveState", "class_hinge_rotation_constraint_part.html#aa35cc45b0e9cfbb7063508e24c677879", null ], + [ "SolvePositionConstraint", "class_hinge_rotation_constraint_part.html#a0f4c769c027f4efb2511d74f9658d8eb", null ], + [ "SolveVelocityConstraint", "class_hinge_rotation_constraint_part.html#aabd46260672295ed6df506bf81a2f326", null ], + [ "WarmStart", "class_hinge_rotation_constraint_part.html#aa71c15ea49da0d82a70d8edf787f612b", null ] +]; \ No newline at end of file diff --git a/class_i_object_stream_in-members.html b/class_i_object_stream_in-members.html new file mode 100644 index 000000000..79208f32b --- /dev/null +++ b/class_i_object_stream_in-members.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IObjectStreamIn Member List
+
+
+ +

This is the complete list of members for IObjectStreamIn, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EStreamType enum nameObjectStream
Identifier typedefObjectStreamprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ReadClassData(const char *inClassName, void *inInstance)=0IObjectStreamInpure virtual
ReadCount(uint32 &outCount)=0IObjectStreamInpure virtual
ReadDataType(EOSDataType &outType)=0IObjectStreamInpure virtual
ReadIdentifier(Identifier &outIdentifier)=0IObjectStreamInpure virtual
ReadName(String &outName)=0IObjectStreamInpure virtual
ReadPointerData(const RTTI *inRTTI, void **inPointer, int inRefCountOffset=-1)=0IObjectStreamInpure virtual
ReadPrimitiveData(uint8 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(uint16 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(int &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(uint32 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(uint64 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(float &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(double &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(bool &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(String &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(Float3 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(Double3 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(Vec3 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(DVec3 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(Vec4 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(Quat &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(Mat44 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(DMat44 &outPrimitive)=0IObjectStreamInpure virtual
sNullIdentifierObjectStreamprotectedstatic
sRevisionObjectStreamprotectedstatic
sVersionObjectStreamprotectedstatic
~ObjectStream()=defaultObjectStreamprotectedvirtual
+
+ + + + diff --git a/class_i_object_stream_in.html b/class_i_object_stream_in.html new file mode 100644 index 000000000..0197d86fa --- /dev/null +++ b/class_i_object_stream_in.html @@ -0,0 +1,894 @@ + + + + + + + +Jolt Physics: IObjectStreamIn Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IObjectStreamIn Class Referenceabstract
+
+
+ +

Interface class for reading from an object stream. + More...

+ +

#include <ObjectStream.h>

+
+Inheritance diagram for IObjectStreamIn:
+
+
+ + +ObjectStream +NonCopyable +ObjectStreamIn +ObjectStreamBinaryIn +ObjectStreamTextIn + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Input type specific operations
virtual bool ReadDataType (EOSDataType &outType)=0
 
virtual bool ReadName (String &outName)=0
 
virtual bool ReadIdentifier (Identifier &outIdentifier)=0
 
virtual bool ReadCount (uint32 &outCount)=0
 
Read primitives
virtual bool ReadPrimitiveData (uint8 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (uint16 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (int &outPrimitive)=0
 
virtual bool ReadPrimitiveData (uint32 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (uint64 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (float &outPrimitive)=0
 
virtual bool ReadPrimitiveData (double &outPrimitive)=0
 
virtual bool ReadPrimitiveData (bool &outPrimitive)=0
 
virtual bool ReadPrimitiveData (String &outPrimitive)=0
 
virtual bool ReadPrimitiveData (Float3 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (Double3 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (Vec3 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (DVec3 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (Vec4 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (Quat &outPrimitive)=0
 
virtual bool ReadPrimitiveData (Mat44 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (DMat44 &outPrimitive)=0
 
Read compounds
virtual bool ReadClassData (const char *inClassName, void *inInstance)=0
 
virtual bool ReadPointerData (const RTTI *inRTTI, void **inPointer, int inRefCountOffset=-1)=0
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ObjectStream
enum class  EStreamType { Text +, Binary + }
 Stream type. More...
 
- Protected Types inherited from ObjectStream
using Identifier = uint32
 Identifier for objects.
 
- Protected Member Functions inherited from ObjectStream
virtual ~ObjectStream ()=default
 Destructor.
 
- Static Protected Attributes inherited from ObjectStream
static constexpr int sVersion = 1
 
static constexpr int sRevision = 0
 
static constexpr Identifier sNullIdentifier = 0
 
+

Detailed Description

+

Interface class for reading from an object stream.

+

Member Function Documentation

+ +

◆ ReadClassData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool IObjectStreamIn::ReadClassData (const char * inClassName,
void * inInstance 
)
+
+pure virtual
+
+ +

Implemented in ObjectStreamIn.

+ +
+
+ +

◆ ReadCount()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadCount (uint32outCount)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadDataType()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadDataType (EOSDataTypeoutType)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadIdentifier()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadIdentifier (IdentifieroutIdentifier)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadName()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadName (StringoutName)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPointerData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool IObjectStreamIn::ReadPointerData (const RTTIinRTTI,
void ** inPointer,
int inRefCountOffset = -1 
)
+
+pure virtual
+
+ +

Implemented in ObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [1/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (bool & outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [2/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (DMat44outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [3/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (double & outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [4/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (Double3outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [5/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (DVec3outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [6/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (float & outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [7/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (Float3outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [8/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (int & outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [9/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (Mat44outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [10/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (QuatoutPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [11/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (StringoutPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [12/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (uint16outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [13/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (uint32outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [14/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (uint64outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [15/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (uint8outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [16/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (Vec3outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+ +

◆ ReadPrimitiveData() [17/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IObjectStreamIn::ReadPrimitiveData (Vec4outPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryIn, and ObjectStreamTextIn.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_i_object_stream_in.js b/class_i_object_stream_in.js new file mode 100644 index 000000000..b63fbef8e --- /dev/null +++ b/class_i_object_stream_in.js @@ -0,0 +1,26 @@ +var class_i_object_stream_in = +[ + [ "ReadClassData", "class_i_object_stream_in.html#ac5a63b973dfde6d1834c27ec81fa2b45", null ], + [ "ReadCount", "class_i_object_stream_in.html#abb5a026cb41f9d12c7960fe9d3a5882c", null ], + [ "ReadDataType", "class_i_object_stream_in.html#a289dedcf7a3ae7f67d61dcde32b6282a", null ], + [ "ReadIdentifier", "class_i_object_stream_in.html#a6f31050b3f59099b313c2560e76d18cb", null ], + [ "ReadName", "class_i_object_stream_in.html#aa8fd4340d4de56a5dd91fcd6ca793339", null ], + [ "ReadPointerData", "class_i_object_stream_in.html#a548f1fbba63c0b47d2b8776075bc36fc", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#aff7f339ee88684c62fdc0d3c4842b994", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#a92921a2d611a4c8fba065ae7ba36c161", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#a2e0b8a75b0347fa8e015c62c2ff9f937", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#ad4e124e1a7df0b66a3b525181cde8660", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#abb1d9fe3614810e4ed6bf7169dd5c0c9", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#a8f2857838aa606be6fc63022f0956cd3", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#a781398987e2c86e99bfc4d03d99c2914", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#aa1c304d18b225329573b6480ecd3592f", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#aaad93855bb8f16a3a6f58047c166e0ad", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#a06eea8e1426386cba91596bad580c453", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#a58fb610ec8db85895bb31010ced4eec4", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#ac40f7f79e36b23a9eceec318d5807541", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#a83e75c9bd735481d1abfffd4606e3357", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#a617133ce899879a93e5274b18bef9038", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#adcc4f2c5ca7449d1fca513cf6beba298", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#a55b583284b1fd954240fa72511261c35", null ], + [ "ReadPrimitiveData", "class_i_object_stream_in.html#af5648e8c3063f2241764871d244256f8", null ] +]; \ No newline at end of file diff --git a/class_i_object_stream_in.png b/class_i_object_stream_in.png new file mode 100644 index 000000000..92b6999e2 Binary files /dev/null and b/class_i_object_stream_in.png differ diff --git a/class_i_object_stream_out-members.html b/class_i_object_stream_out-members.html new file mode 100644 index 000000000..d37e03e84 --- /dev/null +++ b/class_i_object_stream_out-members.html @@ -0,0 +1,151 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IObjectStreamOut Member List
+
+
+ +

This is the complete list of members for IObjectStreamOut, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EStreamType enum nameObjectStream
HintIndentDown()IObjectStreamOutinlinevirtual
HintIndentUp()IObjectStreamOutinlinevirtual
HintNextItem()IObjectStreamOutinlinevirtual
Identifier typedefObjectStreamprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
sNullIdentifierObjectStreamprotectedstatic
sRevisionObjectStreamprotectedstatic
sVersionObjectStreamprotectedstatic
WriteClassData(const RTTI *inRTTI, const void *inInstance)=0IObjectStreamOutpure virtual
WriteCount(uint32 inCount)=0IObjectStreamOutpure virtual
WriteDataType(EOSDataType inType)=0IObjectStreamOutpure virtual
WriteIdentifier(Identifier inIdentifier)=0IObjectStreamOutpure virtual
WriteName(const char *inName)=0IObjectStreamOutpure virtual
WritePointerData(const RTTI *inRTTI, const void *inPointer)=0IObjectStreamOutpure virtual
WritePrimitiveData(const uint8 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const uint16 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const int &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const uint32 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const uint64 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const float &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const double &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const bool &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const String &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const Float3 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const Double3 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const Vec3 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const DVec3 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const Vec4 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const Quat &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const Mat44 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const DMat44 &inPrimitive)=0IObjectStreamOutpure virtual
~ObjectStream()=defaultObjectStreamprotectedvirtual
+
+ + + + diff --git a/class_i_object_stream_out.html b/class_i_object_stream_out.html new file mode 100644 index 000000000..b96adf19f --- /dev/null +++ b/class_i_object_stream_out.html @@ -0,0 +1,976 @@ + + + + + + + +Jolt Physics: IObjectStreamOut Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IObjectStreamOut Class Referenceabstract
+
+
+ +

Interface class for writing to an object stream. + More...

+ +

#include <ObjectStream.h>

+
+Inheritance diagram for IObjectStreamOut:
+
+
+ + +ObjectStream +NonCopyable +ObjectStreamOut +ObjectStreamBinaryOut +ObjectStreamTextOut + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Output type specific operations
virtual void WriteDataType (EOSDataType inType)=0
 
virtual void WriteName (const char *inName)=0
 
virtual void WriteIdentifier (Identifier inIdentifier)=0
 
virtual void WriteCount (uint32 inCount)=0
 
Write primitives
virtual void WritePrimitiveData (const uint8 &inPrimitive)=0
 
virtual void WritePrimitiveData (const uint16 &inPrimitive)=0
 
virtual void WritePrimitiveData (const int &inPrimitive)=0
 
virtual void WritePrimitiveData (const uint32 &inPrimitive)=0
 
virtual void WritePrimitiveData (const uint64 &inPrimitive)=0
 
virtual void WritePrimitiveData (const float &inPrimitive)=0
 
virtual void WritePrimitiveData (const double &inPrimitive)=0
 
virtual void WritePrimitiveData (const bool &inPrimitive)=0
 
virtual void WritePrimitiveData (const String &inPrimitive)=0
 
virtual void WritePrimitiveData (const Float3 &inPrimitive)=0
 
virtual void WritePrimitiveData (const Double3 &inPrimitive)=0
 
virtual void WritePrimitiveData (const Vec3 &inPrimitive)=0
 
virtual void WritePrimitiveData (const DVec3 &inPrimitive)=0
 
virtual void WritePrimitiveData (const Vec4 &inPrimitive)=0
 
virtual void WritePrimitiveData (const Quat &inPrimitive)=0
 
virtual void WritePrimitiveData (const Mat44 &inPrimitive)=0
 
virtual void WritePrimitiveData (const DMat44 &inPrimitive)=0
 
Write compounds
virtual void WritePointerData (const RTTI *inRTTI, const void *inPointer)=0
 
virtual void WriteClassData (const RTTI *inRTTI, const void *inInstance)=0
 
Layout hints (for text output)
virtual void HintNextItem ()
 
virtual void HintIndentUp ()
 
virtual void HintIndentDown ()
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ObjectStream
enum class  EStreamType { Text +, Binary + }
 Stream type. More...
 
- Protected Types inherited from ObjectStream
using Identifier = uint32
 Identifier for objects.
 
- Protected Member Functions inherited from ObjectStream
virtual ~ObjectStream ()=default
 Destructor.
 
- Static Protected Attributes inherited from ObjectStream
static constexpr int sVersion = 1
 
static constexpr int sRevision = 0
 
static constexpr Identifier sNullIdentifier = 0
 
+

Detailed Description

+

Interface class for writing to an object stream.

+

Member Function Documentation

+ +

◆ HintIndentDown()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void IObjectStreamOut::HintIndentDown ()
+
+inlinevirtual
+
+ +

Reimplemented in ObjectStreamTextOut.

+ +
+
+ +

◆ HintIndentUp()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void IObjectStreamOut::HintIndentUp ()
+
+inlinevirtual
+
+ +

Reimplemented in ObjectStreamTextOut.

+ +
+
+ +

◆ HintNextItem()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void IObjectStreamOut::HintNextItem ()
+
+inlinevirtual
+
+ +

Reimplemented in ObjectStreamTextOut.

+ +
+
+ +

◆ WriteClassData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void IObjectStreamOut::WriteClassData (const RTTIinRTTI,
const void * inInstance 
)
+
+pure virtual
+
+ +

Implemented in ObjectStreamOut.

+ +
+
+ +

◆ WriteCount()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WriteCount (uint32 inCount)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WriteDataType()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WriteDataType (EOSDataType inType)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WriteIdentifier()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WriteIdentifier (Identifier inIdentifier)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WriteName()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WriteName (const char * inName)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePointerData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void IObjectStreamOut::WritePointerData (const RTTIinRTTI,
const void * inPointer 
)
+
+pure virtual
+
+ +

Implemented in ObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [1/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const bool & inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [2/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const DMat44inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [3/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const double & inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [4/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const Double3inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [5/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const DVec3inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [6/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const float & inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [7/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const Float3inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [8/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const int & inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [9/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const Mat44inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [10/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const QuatinPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [11/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const StringinPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [12/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const uint16inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [13/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const uint32inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [14/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const uint64inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [15/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const uint8inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [16/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const Vec3inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+ +

◆ WritePrimitiveData() [17/17]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void IObjectStreamOut::WritePrimitiveData (const Vec4inPrimitive)
+
+pure virtual
+
+ +

Implemented in ObjectStreamBinaryOut, and ObjectStreamTextOut.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_i_object_stream_out.js b/class_i_object_stream_out.js new file mode 100644 index 000000000..dd42c080d --- /dev/null +++ b/class_i_object_stream_out.js @@ -0,0 +1,29 @@ +var class_i_object_stream_out = +[ + [ "HintIndentDown", "class_i_object_stream_out.html#ad8f41874c06223db415f29a57f72caa1", null ], + [ "HintIndentUp", "class_i_object_stream_out.html#ac24c86e1d5fba43f2dcfdd3557269a3d", null ], + [ "HintNextItem", "class_i_object_stream_out.html#aa414a76c2459d6346da50c61b279f6f3", null ], + [ "WriteClassData", "class_i_object_stream_out.html#a671047916b3ab1dad2565d482437af88", null ], + [ "WriteCount", "class_i_object_stream_out.html#a8610a84161fd3f60736b3403f972ee8f", null ], + [ "WriteDataType", "class_i_object_stream_out.html#a6ff7df2bcd8b3a6808f14aea3250a09d", null ], + [ "WriteIdentifier", "class_i_object_stream_out.html#a687b981cf61a2004438e534b87e3e91d", null ], + [ "WriteName", "class_i_object_stream_out.html#a96c7eeb4771f2a811aa36c6fd42cd781", null ], + [ "WritePointerData", "class_i_object_stream_out.html#a176de45169c84baf875bee08790745c3", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#ac5d377beb07d9dfacf1d4e0700bb8c0d", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#a5f9f86a460a4591dde4be795ad8259ef", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#ad1b81ff8b55799d95a6a9d8476b5e64a", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#af0a7dc3485d1567a452bba37303d9976", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#a24e68fa892ff29e52c4e71e137da272e", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#a04ca1de7c6bd48ffab508b1db889ec09", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#a4b0132cf1e5ee6662efcbae07f39274c", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#a01c3723b59d67ad5e75a3dc56f7737cb", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#a5b5c4763d26fbda8fc7649e30fe99ea0", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#a397870b50706aeb7f390dd96e08dac3c", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#a38350c40a7079608bdc92e4a1df7725c", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#ab17016faad9181b3d6dfbda9a48bd335", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#a66b6becb60ad5aec76867394d52e6cfd", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#aecfe9968add8789f6e26723b6e9e651d", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#a45d8dc1ea62d053e6e48cb2e44395968", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#a053365595f486c12414c3e41532494e7", null ], + [ "WritePrimitiveData", "class_i_object_stream_out.html#a6b47c5c4e89dd367b09a1de57c21bdbc", null ] +]; \ No newline at end of file diff --git a/class_i_object_stream_out.png b/class_i_object_stream_out.png new file mode 100644 index 000000000..cc575a04a Binary files /dev/null and b/class_i_object_stream_out.png differ diff --git a/class_ignore_multiple_bodies_filter-members.html b/class_ignore_multiple_bodies_filter-members.html new file mode 100644 index 000000000..9c6bfb4c8 --- /dev/null +++ b/class_ignore_multiple_bodies_filter-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IgnoreMultipleBodiesFilter Member List
+
+
+ +

This is the complete list of members for IgnoreMultipleBodiesFilter, including all inherited members.

+ + + + + + + + + + +
Clear()IgnoreMultipleBodiesFilterinline
IgnoreBody(const BodyID &inBodyID)IgnoreMultipleBodiesFilterinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Reserve(uint inSize)IgnoreMultipleBodiesFilterinline
ShouldCollide(const BodyID &inBodyID) const overrideIgnoreMultipleBodiesFilterinlinevirtual
ShouldCollideLocked(const Body &inBody) constBodyFilterinlinevirtual
~BodyFilter()=defaultBodyFiltervirtual
+
+ + + + diff --git a/class_ignore_multiple_bodies_filter.html b/class_ignore_multiple_bodies_filter.html new file mode 100644 index 000000000..5fb302af3 --- /dev/null +++ b/class_ignore_multiple_bodies_filter.html @@ -0,0 +1,281 @@ + + + + + + + +Jolt Physics: IgnoreMultipleBodiesFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IgnoreMultipleBodiesFilter Class Reference
+
+
+ +

A simple body filter implementation that ignores multiple, specified bodies. + More...

+ +

#include <BodyFilter.h>

+
+Inheritance diagram for IgnoreMultipleBodiesFilter:
+
+
+ + +BodyFilter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void Clear ()
 Remove all bodies from the filter.
 
void Reserve (uint inSize)
 Reserve space for inSize body ID's.
 
void IgnoreBody (const BodyID &inBodyID)
 Add a body to be ignored.
 
virtual bool ShouldCollide (const BodyID &inBodyID) const override
 Filter function. Returns true if we should collide with inBodyID.
 
- Public Member Functions inherited from BodyFilter
virtual ~BodyFilter ()=default
 Destructor.
 
virtual bool ShouldCollideLocked (const Body &inBody) const
 Filter function. Returns true if we should collide with inBody (this is called after the body is locked and makes it possible to filter based on body members)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

A simple body filter implementation that ignores multiple, specified bodies.

+

Member Function Documentation

+ +

◆ Clear()

+ +
+
+ + + + + +
+ + + + + + + +
void IgnoreMultipleBodiesFilter::Clear ()
+
+inline
+
+ +

Remove all bodies from the filter.

+ +
+
+ +

◆ IgnoreBody()

+ +
+
+ + + + + +
+ + + + + + + + +
void IgnoreMultipleBodiesFilter::IgnoreBody (const BodyIDinBodyID)
+
+inline
+
+ +

Add a body to be ignored.

+ +
+
+ +

◆ Reserve()

+ +
+
+ + + + + +
+ + + + + + + + +
void IgnoreMultipleBodiesFilter::Reserve (uint inSize)
+
+inline
+
+ +

Reserve space for inSize body ID's.

+ +
+
+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IgnoreMultipleBodiesFilter::ShouldCollide (const BodyIDinBodyID) const
+
+inlineoverridevirtual
+
+ +

Filter function. Returns true if we should collide with inBodyID.

+ +

Reimplemented from BodyFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ignore_multiple_bodies_filter.js b/class_ignore_multiple_bodies_filter.js new file mode 100644 index 000000000..248657029 --- /dev/null +++ b/class_ignore_multiple_bodies_filter.js @@ -0,0 +1,7 @@ +var class_ignore_multiple_bodies_filter = +[ + [ "Clear", "class_ignore_multiple_bodies_filter.html#afc300f42ae1b503867a2c2da86cecc4a", null ], + [ "IgnoreBody", "class_ignore_multiple_bodies_filter.html#ad3bfab720ac4fcd05cef194b6ec0106a", null ], + [ "Reserve", "class_ignore_multiple_bodies_filter.html#a4151dd0e414f86279940306d664a6042", null ], + [ "ShouldCollide", "class_ignore_multiple_bodies_filter.html#a137d43d99694c431af49bcf1e1398b79", null ] +]; \ No newline at end of file diff --git a/class_ignore_multiple_bodies_filter.png b/class_ignore_multiple_bodies_filter.png new file mode 100644 index 000000000..5420a98ec Binary files /dev/null and b/class_ignore_multiple_bodies_filter.png differ diff --git a/class_ignore_single_body_filter-members.html b/class_ignore_single_body_filter-members.html new file mode 100644 index 000000000..2a0bbd81c --- /dev/null +++ b/class_ignore_single_body_filter-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IgnoreSingleBodyFilter Member List
+
+
+ +

This is the complete list of members for IgnoreSingleBodyFilter, including all inherited members.

+ + + + + + + + +
IgnoreSingleBodyFilter(const BodyID &inBodyID)IgnoreSingleBodyFilterinlineexplicit
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(const BodyID &inBodyID) const overrideIgnoreSingleBodyFilterinlinevirtual
ShouldCollideLocked(const Body &inBody) constBodyFilterinlinevirtual
~BodyFilter()=defaultBodyFiltervirtual
+
+ + + + diff --git a/class_ignore_single_body_filter.html b/class_ignore_single_body_filter.html new file mode 100644 index 000000000..949210d75 --- /dev/null +++ b/class_ignore_single_body_filter.html @@ -0,0 +1,221 @@ + + + + + + + +Jolt Physics: IgnoreSingleBodyFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IgnoreSingleBodyFilter Class Reference
+
+
+ +

A simple body filter implementation that ignores a single, specified body. + More...

+ +

#include <BodyFilter.h>

+
+Inheritance diagram for IgnoreSingleBodyFilter:
+
+
+ + +BodyFilter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IgnoreSingleBodyFilter (const BodyID &inBodyID)
 Constructor, pass the body you want to ignore.
 
virtual bool ShouldCollide (const BodyID &inBodyID) const override
 Filter function. Returns true if we should collide with inBodyID.
 
- Public Member Functions inherited from BodyFilter
virtual ~BodyFilter ()=default
 Destructor.
 
virtual bool ShouldCollideLocked (const Body &inBody) const
 Filter function. Returns true if we should collide with inBody (this is called after the body is locked and makes it possible to filter based on body members)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

A simple body filter implementation that ignores a single, specified body.

+

Constructor & Destructor Documentation

+ +

◆ IgnoreSingleBodyFilter()

+ +
+
+ + + + + +
+ + + + + + + + +
IgnoreSingleBodyFilter::IgnoreSingleBodyFilter (const BodyIDinBodyID)
+
+inlineexplicit
+
+ +

Constructor, pass the body you want to ignore.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IgnoreSingleBodyFilter::ShouldCollide (const BodyIDinBodyID) const
+
+inlineoverridevirtual
+
+ +

Filter function. Returns true if we should collide with inBodyID.

+ +

Reimplemented from BodyFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ignore_single_body_filter.js b/class_ignore_single_body_filter.js new file mode 100644 index 000000000..7b747a856 --- /dev/null +++ b/class_ignore_single_body_filter.js @@ -0,0 +1,5 @@ +var class_ignore_single_body_filter = +[ + [ "IgnoreSingleBodyFilter", "class_ignore_single_body_filter.html#adcc8cbdc3b3cd657ce832f13b6b4bf68", null ], + [ "ShouldCollide", "class_ignore_single_body_filter.html#a7b0ecbbf0eb0826fbee8e3e4d346a5c0", null ] +]; \ No newline at end of file diff --git a/class_ignore_single_body_filter.png b/class_ignore_single_body_filter.png new file mode 100644 index 000000000..97dc96f62 Binary files /dev/null and b/class_ignore_single_body_filter.png differ diff --git a/class_ignore_single_body_filter_chained-members.html b/class_ignore_single_body_filter_chained-members.html new file mode 100644 index 000000000..4d2f282e4 --- /dev/null +++ b/class_ignore_single_body_filter_chained-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IgnoreSingleBodyFilterChained Member List
+
+
+ +

This is the complete list of members for IgnoreSingleBodyFilterChained, including all inherited members.

+ + + + + + + + +
IgnoreSingleBodyFilterChained(const BodyID inBodyID, const BodyFilter &inFilter)IgnoreSingleBodyFilterChainedinlineexplicit
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(const BodyID &inBodyID) const overrideIgnoreSingleBodyFilterChainedinlinevirtual
ShouldCollideLocked(const Body &inBody) const overrideIgnoreSingleBodyFilterChainedinlinevirtual
~BodyFilter()=defaultBodyFiltervirtual
+
+ + + + diff --git a/class_ignore_single_body_filter_chained.html b/class_ignore_single_body_filter_chained.html new file mode 100644 index 000000000..c7895a885 --- /dev/null +++ b/class_ignore_single_body_filter_chained.html @@ -0,0 +1,261 @@ + + + + + + + +Jolt Physics: IgnoreSingleBodyFilterChained Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IgnoreSingleBodyFilterChained Class Reference
+
+
+ +

Ignores a single body and chains the filter to another filter. + More...

+ +

#include <BodyFilter.h>

+
+Inheritance diagram for IgnoreSingleBodyFilterChained:
+
+
+ + +BodyFilter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IgnoreSingleBodyFilterChained (const BodyID inBodyID, const BodyFilter &inFilter)
 Constructor.
 
virtual bool ShouldCollide (const BodyID &inBodyID) const override
 Filter function. Returns true if we should collide with inBodyID.
 
virtual bool ShouldCollideLocked (const Body &inBody) const override
 Filter function. Returns true if we should collide with inBody (this is called after the body is locked and makes it possible to filter based on body members)
 
- Public Member Functions inherited from BodyFilter
virtual ~BodyFilter ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Ignores a single body and chains the filter to another filter.

+

Constructor & Destructor Documentation

+ +

◆ IgnoreSingleBodyFilterChained()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
IgnoreSingleBodyFilterChained::IgnoreSingleBodyFilterChained (const BodyID inBodyID,
const BodyFilterinFilter 
)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IgnoreSingleBodyFilterChained::ShouldCollide (const BodyIDinBodyID) const
+
+inlineoverridevirtual
+
+ +

Filter function. Returns true if we should collide with inBodyID.

+ +

Reimplemented from BodyFilter.

+ +
+
+ +

◆ ShouldCollideLocked()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool IgnoreSingleBodyFilterChained::ShouldCollideLocked (const BodyinBody) const
+
+inlineoverridevirtual
+
+ +

Filter function. Returns true if we should collide with inBody (this is called after the body is locked and makes it possible to filter based on body members)

+ +

Reimplemented from BodyFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ignore_single_body_filter_chained.js b/class_ignore_single_body_filter_chained.js new file mode 100644 index 000000000..e796e0247 --- /dev/null +++ b/class_ignore_single_body_filter_chained.js @@ -0,0 +1,6 @@ +var class_ignore_single_body_filter_chained = +[ + [ "IgnoreSingleBodyFilterChained", "class_ignore_single_body_filter_chained.html#a92bbf17cd704ae6e64c4d7c86bfcf7fc", null ], + [ "ShouldCollide", "class_ignore_single_body_filter_chained.html#ad94457a47665f2ef204f382f2812393d", null ], + [ "ShouldCollideLocked", "class_ignore_single_body_filter_chained.html#ae841943960b45091f0fb253f086c6a12", null ] +]; \ No newline at end of file diff --git a/class_ignore_single_body_filter_chained.png b/class_ignore_single_body_filter_chained.png new file mode 100644 index 000000000..3d96f4641 Binary files /dev/null and b/class_ignore_single_body_filter_chained.png differ diff --git a/class_independent_axis_constraint_part-members.html b/class_independent_axis_constraint_part-members.html new file mode 100644 index 000000000..55f778033 --- /dev/null +++ b/class_independent_axis_constraint_part-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IndependentAxisConstraintPart Member List
+
+
+ +

This is the complete list of members for IndependentAxisConstraintPart, including all inherited members.

+ + + + + + + + + + +
CalculateConstraintProperties(const Body &inBody1, const Body &inBody2, Vec3Arg inR1, Vec3Arg inN1, Vec3Arg inR2, Vec3Arg inN2, float inRatio)IndependentAxisConstraintPartinline
Deactivate()IndependentAxisConstraintPartinline
GetTotalLambda() constIndependentAxisConstraintPartinline
IsActive() constIndependentAxisConstraintPartinline
RestoreState(StateRecorder &inStream)IndependentAxisConstraintPartinline
SaveState(StateRecorder &inStream) constIndependentAxisConstraintPartinline
SolvePositionConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inC, float inBaumgarte) constIndependentAxisConstraintPartinline
SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inMinLambda, float inMaxLambda)IndependentAxisConstraintPartinline
WarmStart(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inWarmStartImpulseRatio)IndependentAxisConstraintPartinline
+
+ + + + diff --git a/class_independent_axis_constraint_part.html b/class_independent_axis_constraint_part.html new file mode 100644 index 000000000..b3deba664 --- /dev/null +++ b/class_independent_axis_constraint_part.html @@ -0,0 +1,629 @@ + + + + + + + +Jolt Physics: IndependentAxisConstraintPart Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IndependentAxisConstraintPart Class Reference
+
+
+ +

#include <IndependentAxisConstraintPart.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void CalculateConstraintProperties (const Body &inBody1, const Body &inBody2, Vec3Arg inR1, Vec3Arg inN1, Vec3Arg inR2, Vec3Arg inN2, float inRatio)
 
void Deactivate ()
 Deactivate this constraint.
 
bool IsActive () const
 Check if constraint is active.
 
void WarmStart (Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inWarmStartImpulseRatio)
 
bool SolveVelocityConstraint (Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inMinLambda, float inMaxLambda)
 
float GetTotalLambda () const
 Return lagrange multiplier.
 
bool SolvePositionConstraint (Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inRatio, float inC, float inBaumgarte) const
 
void SaveState (StateRecorder &inStream) const
 Save state of this constraint part.
 
void RestoreState (StateRecorder &inStream)
 Restore state of this constraint part.
 
+

Detailed Description

+

Constraint part to an AxisConstraintPart but both bodies have an independent axis on which the force is applied.

+

Constraint equation:

+

+\[C = (x_1 + r_1 - f_1) . n_1 + r (x_2 + r_2 - f_2) \cdot n_2\] +

+

Calculating the Jacobian:

+

+\[dC/dt = (v_1 + w_1 \times r_1) \cdot n_1 + (x_1 + r_1 - f_1) \cdot d n_1/dt + r (v_2 + w_2 \times r_2) \cdot n_2 + r (x_2 + r_2 - f_2) \cdot d n_2/dt\] +

+

Assuming that d n1/dt and d n2/dt are small this becomes:

+

+\[(v_1 + w_1 \times r_1) \cdot n_1 + r (v_2 + w_2 \times r_2) \cdot n_2\] +

+

+\[= v_1 \cdot n_1 + r_1 \times n_1 \cdot w_1 + r v_2 \cdot n_2 + r r_2 \times n_2 \cdot w_2\] +

+

Jacobian:

+

+\[J = \begin{bmatrix}n_1 & r_1 \times n_1 & r n_2 & r r_2 \times n_2\end{bmatrix}\] +

+

Effective mass:

+

+\[K = m_1^{-1} + r_1 \times n_1 I_1^{-1} r_1 \times n_1 + r^2 m_2^{-1} + r^2 r_2 \times n_2 I_2^{-1} r_2 \times n_2\] +

+

Used terms (here and below, everything in world space):
+n1 = (x1 + r1 - f1) / |x1 + r1 - f1|, axis along which the force is applied for body 1
+n2 = (x2 + r2 - f2) / |x2 + r2 - f2|, axis along which the force is applied for body 2
+r = ratio how forces are applied between bodies.
+x1, x2 = center of mass for the bodies.
+v = [v1, w1, v2, w2].
+v1, v2 = linear velocity of body 1 and 2.
+w1, w2 = angular velocity of body 1 and 2.
+M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].
+ \(K^{-1} = \left( J M^{-1} J^T \right)^{-1}\) = effective mass.
+b = velocity bias.
+ \(\beta\) = baumgarte constant.

+

Member Function Documentation

+ +

◆ CalculateConstraintProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IndependentAxisConstraintPart::CalculateConstraintProperties (const BodyinBody1,
const BodyinBody2,
Vec3Arg inR1,
Vec3Arg inN1,
Vec3Arg inR2,
Vec3Arg inN2,
float inRatio 
)
+
+inline
+
+

Calculate properties used during the functions below

Parameters
+ + + + + + + + +
inBody1The first body that this constraint is attached to
inBody2The second body that this constraint is attached to
inR1The position on which the constraint operates on body 1 relative to COM
inN1The world space normal in which the constraint operates for body 1
inR2The position on which the constraint operates on body 1 relative to COM
inN2The world space normal in which the constraint operates for body 2
inRatioThe ratio how forces are applied between bodies
+
+
+ +
+
+ +

◆ Deactivate()

+ +
+
+ + + + + +
+ + + + + + + +
void IndependentAxisConstraintPart::Deactivate ()
+
+inline
+
+ +

Deactivate this constraint.

+ +
+
+ +

◆ GetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float IndependentAxisConstraintPart::GetTotalLambda () const
+
+inline
+
+ +

Return lagrange multiplier.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool IndependentAxisConstraintPart::IsActive () const
+
+inline
+
+ +

Check if constraint is active.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void IndependentAxisConstraintPart::RestoreState (StateRecorderinStream)
+
+inline
+
+ +

Restore state of this constraint part.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void IndependentAxisConstraintPart::SaveState (StateRecorderinStream) const
+
+inline
+
+ +

Save state of this constraint part.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IndependentAxisConstraintPart::SolvePositionConstraint (BodyioBody1,
BodyioBody2,
Vec3Arg inN1,
Vec3Arg inN2,
float inRatio,
float inC,
float inBaumgarte 
) const
+
+inline
+
+

Iteratively update the position constraint. Makes sure C(...) == 0.

Parameters
+ + + + + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inN1The world space normal in which the constraint operates for body 1
inN2The world space normal in which the constraint operates for body 2
inRatioThe ratio how forces are applied between bodies
inCValue of the constraint equation (C)
inBaumgarteBaumgarte constant (fraction of the error to correct)
+
+
+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool IndependentAxisConstraintPart::SolveVelocityConstraint (BodyioBody1,
BodyioBody2,
Vec3Arg inN1,
Vec3Arg inN2,
float inRatio,
float inMinLambda,
float inMaxLambda 
)
+
+inline
+
+

Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.

Parameters
+ + + + + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inN1The world space normal in which the constraint operates for body 1
inN2The world space normal in which the constraint operates for body 2
inRatioThe ratio how forces are applied between bodies
inMinLambdaMinimum angular impulse to apply (N m s)
inMaxLambdaMaximum angular impulse to apply (N m s)
+
+
+ +
+
+ +

◆ WarmStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IndependentAxisConstraintPart::WarmStart (BodyioBody1,
BodyioBody2,
Vec3Arg inN1,
Vec3Arg inN2,
float inRatio,
float inWarmStartImpulseRatio 
)
+
+inline
+
+

Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses

Parameters
+ + + + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inN1The world space normal in which the constraint operates for body 1
inN2The world space normal in which the constraint operates for body 2
inRatioThe ratio how forces are applied between bodies
inWarmStartImpulseRatioRatio of new step to old time step (dt_new / dt_old) for scaling the lagrange multiplier of the previous frame
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_independent_axis_constraint_part.js b/class_independent_axis_constraint_part.js new file mode 100644 index 000000000..6eca73d54 --- /dev/null +++ b/class_independent_axis_constraint_part.js @@ -0,0 +1,12 @@ +var class_independent_axis_constraint_part = +[ + [ "CalculateConstraintProperties", "class_independent_axis_constraint_part.html#a0b42c35e39bcfe122954e5a2052dfafd", null ], + [ "Deactivate", "class_independent_axis_constraint_part.html#a75a0e94426831c24d9a05022788a33a0", null ], + [ "GetTotalLambda", "class_independent_axis_constraint_part.html#a14a6dfff54b12cacff9f4794c5fa4fa8", null ], + [ "IsActive", "class_independent_axis_constraint_part.html#a564752c8c4a381de55000c66debc8b0f", null ], + [ "RestoreState", "class_independent_axis_constraint_part.html#a1b5d7adfe5abea0da836a725b91d4f85", null ], + [ "SaveState", "class_independent_axis_constraint_part.html#a8982c9bb0de919245c5a463880877a32", null ], + [ "SolvePositionConstraint", "class_independent_axis_constraint_part.html#a75f7e8a6d760c806d8aadc911965ecce", null ], + [ "SolveVelocityConstraint", "class_independent_axis_constraint_part.html#a715a99f78d1e0f0cb03752d4279b4d05", null ], + [ "WarmStart", "class_independent_axis_constraint_part.html#a6ec13ff5361ad148d405ee79bbaedc6c", null ] +]; \ No newline at end of file diff --git a/class_indexed_triangle-members.html b/class_indexed_triangle-members.html new file mode 100644 index 000000000..741d603fe --- /dev/null +++ b/class_indexed_triangle-members.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IndexedTriangle Member List
+
+
+ +

This is the complete list of members for IndexedTriangle, including all inherited members.

+ + + + + + + + + + + + + + + +
GetCentroid(const VertexList &inVertices) constIndexedTriangleNoMaterialinline
GetLowestIndexFirst() constIndexedTriangleinline
IndexedTriangle(uint32 inI1, uint32 inI2, uint32 inI3, uint32 inMaterialIndex, uint inUserData=0)IndexedTriangleinline
IndexedTriangleNoMaterial()=defaultIndexedTriangle
IndexedTriangleNoMaterial(uint32 inI1, uint32 inI2, uint32 inI3)IndexedTriangleinline
IsDegenerate(const VertexList &inVertices) constIndexedTriangleNoMaterialinline
IsEquivalent(const IndexedTriangleNoMaterial &inRHS) constIndexedTriangleNoMaterialinline
IsOpposite(const IndexedTriangleNoMaterial &inRHS) constIndexedTriangleNoMaterialinline
mIdxIndexedTriangleNoMaterial
mMaterialIndexIndexedTriangle
mUserDataIndexedTriangle
operator==(const IndexedTriangle &inRHS) constIndexedTriangleinline
IndexedTriangleNoMaterial::operator==(const IndexedTriangleNoMaterial &inRHS) constIndexedTriangleNoMaterialinline
Rotate()IndexedTriangleNoMaterialinline
+
+ + + + diff --git a/class_indexed_triangle.html b/class_indexed_triangle.html new file mode 100644 index 000000000..fdbf99038 --- /dev/null +++ b/class_indexed_triangle.html @@ -0,0 +1,403 @@ + + + + + + + +Jolt Physics: IndexedTriangle Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IndexedTriangle Class Reference
+
+
+ +

Triangle with 32-bit indices and material index. + More...

+ +

#include <IndexedTriangle.h>

+
+Inheritance diagram for IndexedTriangle:
+
+
+ + +IndexedTriangleNoMaterial + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

constexpr IndexedTriangle (uint32 inI1, uint32 inI2, uint32 inI3, uint32 inMaterialIndex, uint inUserData=0)
 Constructor.
 
bool operator== (const IndexedTriangle &inRHS) const
 Check if two triangles are identical.
 
IndexedTriangle GetLowestIndexFirst () const
 Rotate the vertices so that the lowest vertex becomes the first. This does not change the represented triangle.
 
JPH_OVERRIDE_NEW_DELETE IndexedTriangleNoMaterial ()=default
 Constructor.
 
constexpr IndexedTriangleNoMaterial (uint32 inI1, uint32 inI2, uint32 inI3)
 
- Public Member Functions inherited from IndexedTriangleNoMaterial
JPH_OVERRIDE_NEW_DELETE IndexedTriangleNoMaterial ()=default
 Constructor.
 
constexpr IndexedTriangleNoMaterial (uint32 inI1, uint32 inI2, uint32 inI3)
 
bool operator== (const IndexedTriangleNoMaterial &inRHS) const
 Check if two triangles are identical.
 
bool IsEquivalent (const IndexedTriangleNoMaterial &inRHS) const
 Check if two triangles are equivalent (using the same vertices)
 
bool IsOpposite (const IndexedTriangleNoMaterial &inRHS) const
 Check if two triangles are opposite (using the same vertices but in opposing order)
 
bool IsDegenerate (const VertexList &inVertices) const
 Check if triangle is degenerate.
 
void Rotate ()
 Rotate the vertices so that the second vertex becomes first etc. This does not change the represented triangle.
 
Vec3 GetCentroid (const VertexList &inVertices) const
 Get center of triangle.
 
+ + + + + + + + + +

+Public Attributes

uint32 mMaterialIndex = 0
 
uint32 mUserData = 0
 User data that can be used for anything by the application, e.g. for tracking the original index of the triangle.
 
- Public Attributes inherited from IndexedTriangleNoMaterial
uint32 mIdx [3]
 
+

Detailed Description

+

Triangle with 32-bit indices and material index.

+

Constructor & Destructor Documentation

+ +

◆ IndexedTriangle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
constexpr IndexedTriangle::IndexedTriangle (uint32 inI1,
uint32 inI2,
uint32 inI3,
uint32 inMaterialIndex,
uint inUserData = 0 
)
+
+inlineconstexpr
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetLowestIndexFirst()

+ +
+
+ + + + + +
+ + + + + + + +
IndexedTriangle IndexedTriangle::GetLowestIndexFirst () const
+
+inline
+
+ +

Rotate the vertices so that the lowest vertex becomes the first. This does not change the represented triangle.

+ +
+
+ +

◆ IndexedTriangleNoMaterial() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE IndexedTriangleNoMaterial::IndexedTriangleNoMaterial ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ IndexedTriangleNoMaterial() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
constexpr IndexedTriangleNoMaterial::IndexedTriangleNoMaterial (uint32 inI1,
uint32 inI2,
uint32 inI3 
)
+
+inlineconstexpr
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IndexedTriangle::operator== (const IndexedTriangleinRHS) const
+
+inline
+
+ +

Check if two triangles are identical.

+ +
+
+

Member Data Documentation

+ +

◆ mMaterialIndex

+ +
+
+ + + + +
uint32 IndexedTriangle::mMaterialIndex = 0
+
+ +
+
+ +

◆ mUserData

+ +
+
+ + + + +
uint32 IndexedTriangle::mUserData = 0
+
+ +

User data that can be used for anything by the application, e.g. for tracking the original index of the triangle.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_indexed_triangle.js b/class_indexed_triangle.js new file mode 100644 index 000000000..d89fb4ff9 --- /dev/null +++ b/class_indexed_triangle.js @@ -0,0 +1,10 @@ +var class_indexed_triangle = +[ + [ "IndexedTriangle", "class_indexed_triangle.html#afa13a5b9104c4fe6f17c848a786f66b6", null ], + [ "GetLowestIndexFirst", "class_indexed_triangle.html#ab22b9836ef1955232fd0ec1099d69965", null ], + [ "IndexedTriangleNoMaterial", "class_indexed_triangle.html#a23f00d353bda9289c5a686975d443a81", null ], + [ "IndexedTriangleNoMaterial", "class_indexed_triangle.html#aa602ab6944f42f9103f36ce13b47d7cd", null ], + [ "operator==", "class_indexed_triangle.html#a8c2db62a600bd2f296c8473fc0ee44dc", null ], + [ "mMaterialIndex", "class_indexed_triangle.html#a6f74ac8b93d784fa3ed36ebb616f2f4a", null ], + [ "mUserData", "class_indexed_triangle.html#a67837ce659824271f923fe5432ff6361", null ] +]; \ No newline at end of file diff --git a/class_indexed_triangle.png b/class_indexed_triangle.png new file mode 100644 index 000000000..f42b2968f Binary files /dev/null and b/class_indexed_triangle.png differ diff --git a/class_indexed_triangle_no_material-members.html b/class_indexed_triangle_no_material-members.html new file mode 100644 index 000000000..d52864344 --- /dev/null +++ b/class_indexed_triangle_no_material-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IndexedTriangleNoMaterial Member List
+
+
+ +

This is the complete list of members for IndexedTriangleNoMaterial, including all inherited members.

+ + + + + + + + + + +
GetCentroid(const VertexList &inVertices) constIndexedTriangleNoMaterialinline
IndexedTriangleNoMaterial()=defaultIndexedTriangleNoMaterial
IndexedTriangleNoMaterial(uint32 inI1, uint32 inI2, uint32 inI3)IndexedTriangleNoMaterialinline
IsDegenerate(const VertexList &inVertices) constIndexedTriangleNoMaterialinline
IsEquivalent(const IndexedTriangleNoMaterial &inRHS) constIndexedTriangleNoMaterialinline
IsOpposite(const IndexedTriangleNoMaterial &inRHS) constIndexedTriangleNoMaterialinline
mIdxIndexedTriangleNoMaterial
operator==(const IndexedTriangleNoMaterial &inRHS) constIndexedTriangleNoMaterialinline
Rotate()IndexedTriangleNoMaterialinline
+
+ + + + diff --git a/class_indexed_triangle_no_material.html b/class_indexed_triangle_no_material.html new file mode 100644 index 000000000..9c0f6a46f --- /dev/null +++ b/class_indexed_triangle_no_material.html @@ -0,0 +1,422 @@ + + + + + + + +Jolt Physics: IndexedTriangleNoMaterial Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IndexedTriangleNoMaterial Class Reference
+
+
+ +

Triangle with 32-bit indices. + More...

+ +

#include <IndexedTriangle.h>

+
+Inheritance diagram for IndexedTriangleNoMaterial:
+
+
+ + +IndexedTriangle + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE IndexedTriangleNoMaterial ()=default
 Constructor.
 
constexpr IndexedTriangleNoMaterial (uint32 inI1, uint32 inI2, uint32 inI3)
 
bool operator== (const IndexedTriangleNoMaterial &inRHS) const
 Check if two triangles are identical.
 
bool IsEquivalent (const IndexedTriangleNoMaterial &inRHS) const
 Check if two triangles are equivalent (using the same vertices)
 
bool IsOpposite (const IndexedTriangleNoMaterial &inRHS) const
 Check if two triangles are opposite (using the same vertices but in opposing order)
 
bool IsDegenerate (const VertexList &inVertices) const
 Check if triangle is degenerate.
 
void Rotate ()
 Rotate the vertices so that the second vertex becomes first etc. This does not change the represented triangle.
 
Vec3 GetCentroid (const VertexList &inVertices) const
 Get center of triangle.
 
+ + + +

+Public Attributes

uint32 mIdx [3]
 
+

Detailed Description

+

Triangle with 32-bit indices.

+

Constructor & Destructor Documentation

+ +

◆ IndexedTriangleNoMaterial() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE IndexedTriangleNoMaterial::IndexedTriangleNoMaterial ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ IndexedTriangleNoMaterial() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
constexpr IndexedTriangleNoMaterial::IndexedTriangleNoMaterial (uint32 inI1,
uint32 inI2,
uint32 inI3 
)
+
+inlineconstexpr
+
+ +
+
+

Member Function Documentation

+ +

◆ GetCentroid()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 IndexedTriangleNoMaterial::GetCentroid (const VertexListinVertices) const
+
+inline
+
+ +

Get center of triangle.

+ +
+
+ +

◆ IsDegenerate()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IndexedTriangleNoMaterial::IsDegenerate (const VertexListinVertices) const
+
+inline
+
+ +

Check if triangle is degenerate.

+ +
+
+ +

◆ IsEquivalent()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IndexedTriangleNoMaterial::IsEquivalent (const IndexedTriangleNoMaterialinRHS) const
+
+inline
+
+ +

Check if two triangles are equivalent (using the same vertices)

+ +
+
+ +

◆ IsOpposite()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IndexedTriangleNoMaterial::IsOpposite (const IndexedTriangleNoMaterialinRHS) const
+
+inline
+
+ +

Check if two triangles are opposite (using the same vertices but in opposing order)

+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool IndexedTriangleNoMaterial::operator== (const IndexedTriangleNoMaterialinRHS) const
+
+inline
+
+ +

Check if two triangles are identical.

+ +
+
+ +

◆ Rotate()

+ +
+
+ + + + + +
+ + + + + + + +
void IndexedTriangleNoMaterial::Rotate ()
+
+inline
+
+ +

Rotate the vertices so that the second vertex becomes first etc. This does not change the represented triangle.

+ +
+
+

Member Data Documentation

+ +

◆ mIdx

+ +
+
+ + + + +
uint32 IndexedTriangleNoMaterial::mIdx[3]
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_indexed_triangle_no_material.js b/class_indexed_triangle_no_material.js new file mode 100644 index 000000000..18008b1b1 --- /dev/null +++ b/class_indexed_triangle_no_material.js @@ -0,0 +1,12 @@ +var class_indexed_triangle_no_material = +[ + [ "IndexedTriangleNoMaterial", "class_indexed_triangle_no_material.html#a23f00d353bda9289c5a686975d443a81", null ], + [ "IndexedTriangleNoMaterial", "class_indexed_triangle_no_material.html#aa602ab6944f42f9103f36ce13b47d7cd", null ], + [ "GetCentroid", "class_indexed_triangle_no_material.html#a279fe96ec89d38fe6eaafa515ff27cb1", null ], + [ "IsDegenerate", "class_indexed_triangle_no_material.html#a439540e1770cfdda6ef0a663ef5eff3c", null ], + [ "IsEquivalent", "class_indexed_triangle_no_material.html#ac0ae1c29594b849761b0db20c1f84fb9", null ], + [ "IsOpposite", "class_indexed_triangle_no_material.html#ac117960e5b26bec04ed736d18b99219d", null ], + [ "operator==", "class_indexed_triangle_no_material.html#ae51f167ef9a45334dad213a2f46cf79e", null ], + [ "Rotate", "class_indexed_triangle_no_material.html#a69f086f68d6d6231ffc90033c9c1acb9", null ], + [ "mIdx", "class_indexed_triangle_no_material.html#a2d7f4d72033977f2f5de6a540dbe1faf", null ] +]; \ No newline at end of file diff --git a/class_indexed_triangle_no_material.png b/class_indexed_triangle_no_material.png new file mode 100644 index 000000000..836c48655 Binary files /dev/null and b/class_indexed_triangle_no_material.png differ diff --git a/class_internal_edge_removing_collector-members.html b/class_internal_edge_removing_collector-members.html new file mode 100644 index 000000000..13b9cffd3 --- /dev/null +++ b/class_internal_edge_removing_collector-members.html @@ -0,0 +1,137 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
InternalEdgeRemovingCollector Member List
+
+
+ +

This is the complete list of members for InternalEdgeRemovingCollector, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + +
AddHit(const CollideShapeResult &inResult) overrideInternalEdgeRemovingCollectorinlinevirtual
CollisionCollector::AddHit(const ResultType &inResult)=0CollisionCollector< ResultTypeArg, TraitsType >pure virtual
CollisionCollector()=defaultCollisionCollector< ResultTypeArg, TraitsType >
CollisionCollector(const CollisionCollector< ResultTypeArg2, TraitsType > &inRHS)CollisionCollector< ResultTypeArg, TraitsType >inlineexplicit
CollisionCollector(const CollisionCollector< ResultTypeArg, TraitsType > &inRHS)=defaultCollisionCollector< ResultTypeArg, TraitsType >
Flush()InternalEdgeRemovingCollectorinline
ForceEarlyOut()CollisionCollector< ResultTypeArg, TraitsType >inline
GetContext() constCollisionCollector< ResultTypeArg, TraitsType >inline
GetEarlyOutFraction() constCollisionCollector< ResultTypeArg, TraitsType >inline
GetPositiveEarlyOutFraction() constCollisionCollector< ResultTypeArg, TraitsType >inline
InternalEdgeRemovingCollector(CollideShapeCollector &inChainedCollector)InternalEdgeRemovingCollectorinlineexplicit
OnBody(const Body &inBody) overrideInternalEdgeRemovingCollectorinlinevirtual
Reset() overrideInternalEdgeRemovingCollectorinlinevirtual
ResetEarlyOutFraction(float inFraction=TraitsType::InitialEarlyOutFraction)CollisionCollector< ResultTypeArg, TraitsType >inline
ResultType typedefCollisionCollector< ResultTypeArg, TraitsType >
sCollideShapeVsShape(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={ })InternalEdgeRemovingCollectorinlinestatic
SetContext(const TransformedShape *inContext)CollisionCollector< ResultTypeArg, TraitsType >inline
SetUserData(uint64 inUserData)CollisionCollector< ResultTypeArg, TraitsType >inlinevirtual
ShouldEarlyOut() constCollisionCollector< ResultTypeArg, TraitsType >inline
UpdateEarlyOutFraction(float inFraction)CollisionCollector< ResultTypeArg, TraitsType >inline
~CollisionCollector()=defaultCollisionCollector< ResultTypeArg, TraitsType >virtual
+
+ + + + diff --git a/class_internal_edge_removing_collector.html b/class_internal_edge_removing_collector.html new file mode 100644 index 000000000..752505ea6 --- /dev/null +++ b/class_internal_edge_removing_collector.html @@ -0,0 +1,440 @@ + + + + + + + +Jolt Physics: InternalEdgeRemovingCollector Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
InternalEdgeRemovingCollector Class Reference
+
+
+ +

#include <InternalEdgeRemovingCollector.h>

+
+Inheritance diagram for InternalEdgeRemovingCollector:
+
+
+ + +CollisionCollector< ResultTypeArg, TraitsType > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 InternalEdgeRemovingCollector (CollideShapeCollector &inChainedCollector)
 Constructor, configures a collector to be called with all the results that do not hit internal edges.
 
virtual void Reset () override
 If you want to reuse this collector, call Reset()
 
virtual void OnBody (const Body &inBody) override
 
virtual void AddHit (const CollideShapeResult &inResult) override
 
void Flush ()
 After all hits have been added, call this function to process the delayed results.
 
- Public Member Functions inherited from CollisionCollector< ResultTypeArg, TraitsType >
 CollisionCollector ()=default
 Default constructor.
 
template<class ResultTypeArg2 >
 CollisionCollector (const CollisionCollector< ResultTypeArg2, TraitsType > &inRHS)
 Constructor to initialize from another collector.
 
 CollisionCollector (const CollisionCollector< ResultTypeArg, TraitsType > &inRHS)=default
 
virtual ~CollisionCollector ()=default
 Destructor.
 
void SetContext (const TransformedShape *inContext)
 Set by the collision detection functions to the current TransformedShape that we're colliding against before calling the AddHit function.
 
const TransformedShapeGetContext () const
 
virtual void SetUserData (uint64 inUserData)
 This function can be used to set some user data on the collision collector.
 
virtual void AddHit (const ResultType &inResult)=0
 This function will be called for every hit found, it's up to the application to decide how to store the hit.
 
void UpdateEarlyOutFraction (float inFraction)
 Update the early out fraction (should be lower than before)
 
void ResetEarlyOutFraction (float inFraction=TraitsType::InitialEarlyOutFraction)
 Reset the early out fraction to a specific value.
 
void ForceEarlyOut ()
 Force the collision detection algorithm to terminate as soon as possible. Call this from the AddHit function when a satisfying hit is found.
 
bool ShouldEarlyOut () const
 When true, the collector will no longer accept any additional hits and the collision detection routine should early out as soon as possible.
 
float GetEarlyOutFraction () const
 Get the current early out value.
 
float GetPositiveEarlyOutFraction () const
 Get the current early out value but make sure it's bigger than zero, this is used for shape casting as negative values are used for penetration.
 
+ + + + +

+Static Public Member Functions

static void sCollideShapeVsShape (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={ })
 Version of CollisionDispatch::sCollideShapeVsShape that removes internal edges.
 
+ + + + + +

+Additional Inherited Members

- Public Types inherited from CollisionCollector< ResultTypeArg, TraitsType >
using ResultType = ResultTypeArg
 Declare ResultType so that derived classes can use it.
 
+

Detailed Description

+

Removes internal edges from collision results. Can be used to filter out 'ghost collisions'. Based on: Contact generation for meshes - Pierre Terdiman (https://www.codercorner.com/MeshContacts.pdf)

+

Constructor & Destructor Documentation

+ +

◆ InternalEdgeRemovingCollector()

+ +
+
+ + + + + +
+ + + + + + + + +
InternalEdgeRemovingCollector::InternalEdgeRemovingCollector (CollideShapeCollectorinChainedCollector)
+
+inlineexplicit
+
+ +

Constructor, configures a collector to be called with all the results that do not hit internal edges.

+ +
+
+

Member Function Documentation

+ +

◆ AddHit()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void InternalEdgeRemovingCollector::AddHit (const CollideShapeResultinResult)
+
+inlineoverridevirtual
+
+ +
+
+ +

◆ Flush()

+ +
+
+ + + + + +
+ + + + + + + +
void InternalEdgeRemovingCollector::Flush ()
+
+inline
+
+ +

After all hits have been added, call this function to process the delayed results.

+ +
+
+ +

◆ OnBody()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void InternalEdgeRemovingCollector::OnBody (const BodyinBody)
+
+inlineoverridevirtual
+
+

When running a query through the NarrowPhaseQuery class, this will be called for every body that is potentially colliding. It allows collecting additional information needed by the collision collector implementation from the body under lock protection before AddHit is called (e.g. the user data pointer or the velocity of the body).

+ +

Reimplemented from CollisionCollector< ResultTypeArg, TraitsType >.

+ +
+
+ +

◆ Reset()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void InternalEdgeRemovingCollector::Reset ()
+
+inlineoverridevirtual
+
+ +

If you want to reuse this collector, call Reset()

+ +

Reimplemented from CollisionCollector< ResultTypeArg, TraitsType >.

+ +
+
+ +

◆ sCollideShapeVsShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void InternalEdgeRemovingCollector::sCollideShapeVsShape (const ShapeinShape1,
const ShapeinShape2,
Vec3Arg inScale1,
Vec3Arg inScale2,
Mat44Arg inCenterOfMassTransform1,
Mat44Arg inCenterOfMassTransform2,
const SubShapeIDCreatorinSubShapeIDCreator1,
const SubShapeIDCreatorinSubShapeIDCreator2,
const CollideShapeSettingsinCollideShapeSettings,
CollideShapeCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
)
+
+inlinestatic
+
+ +

Version of CollisionDispatch::sCollideShapeVsShape that removes internal edges.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_internal_edge_removing_collector.js b/class_internal_edge_removing_collector.js new file mode 100644 index 000000000..98447f4c8 --- /dev/null +++ b/class_internal_edge_removing_collector.js @@ -0,0 +1,8 @@ +var class_internal_edge_removing_collector = +[ + [ "InternalEdgeRemovingCollector", "class_internal_edge_removing_collector.html#a871712a392dc701428cd3da7e872cd6d", null ], + [ "AddHit", "class_internal_edge_removing_collector.html#ad489b749cb2bacbf1596c1da229ff1a1", null ], + [ "Flush", "class_internal_edge_removing_collector.html#a33af5c7be55c31c27215b2bffd7d1428", null ], + [ "OnBody", "class_internal_edge_removing_collector.html#a266df30d8625b5deb67257e5d10a0f24", null ], + [ "Reset", "class_internal_edge_removing_collector.html#acd02ac01ebc1abbedbcaa57b73426d86", null ] +]; \ No newline at end of file diff --git a/class_internal_edge_removing_collector.png b/class_internal_edge_removing_collector.png new file mode 100644 index 000000000..9785e930b Binary files /dev/null and b/class_internal_edge_removing_collector.png differ diff --git a/class_island_builder-members.html b/class_island_builder-members.html new file mode 100644 index 000000000..57df60274 --- /dev/null +++ b/class_island_builder-members.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
IslandBuilder Member List
+
+
+ +

This is the complete list of members for IslandBuilder, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
Finalize(const BodyID *inActiveBodies, uint32 inNumActiveBodies, uint32 inNumContacts, TempAllocator *inTempAllocator)IslandBuilder
GetBodiesInIsland(uint32 inIslandIndex, BodyID *&outBodiesBegin, BodyID *&outBodiesEnd) constIslandBuilder
GetConstraintsInIsland(uint32 inIslandIndex, uint32 *&outConstraintsBegin, uint32 *&outConstraintsEnd) constIslandBuilder
GetContactsInIsland(uint32 inIslandIndex, uint32 *&outContactsBegin, uint32 *&outContactsEnd) constIslandBuilder
GetNumIslands() constIslandBuilderinline
GetNumPositionSteps(uint32 inIslandIndex) constIslandBuilderinline
Init(uint32 inMaxActiveBodies)IslandBuilder
LinkBodies(uint32 inFirst, uint32 inSecond)IslandBuilder
LinkConstraint(uint32 inConstraintIndex, uint32 inFirst, uint32 inSecond)IslandBuilder
LinkContact(uint32 inContactIndex, uint32 inFirst, uint32 inSecond)IslandBuilder
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
PrepareContactConstraints(uint32 inMaxContactConstraints, TempAllocator *inTempAllocator)IslandBuilder
PrepareNonContactConstraints(uint32 inNumConstraints, TempAllocator *inTempAllocator)IslandBuilder
ResetIslands(TempAllocator *inTempAllocator)IslandBuilder
SetNumPositionSteps(uint32 inIslandIndex, uint inNumPositionSteps)IslandBuilderinline
~IslandBuilder()IslandBuilder
+
+ + + + diff --git a/class_island_builder.html b/class_island_builder.html new file mode 100644 index 000000000..4dc48d2a5 --- /dev/null +++ b/class_island_builder.html @@ -0,0 +1,651 @@ + + + + + + + +Jolt Physics: IslandBuilder Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
IslandBuilder Class Reference
+
+
+ +

Keeps track of connected bodies and builds islands for multithreaded velocity/position update. + More...

+ +

#include <IslandBuilder.h>

+
+Inheritance diagram for IslandBuilder:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ~IslandBuilder ()
 Destructor.
 
void Init (uint32 inMaxActiveBodies)
 Initialize the island builder with the maximum amount of bodies that could be active.
 
void PrepareContactConstraints (uint32 inMaxContactConstraints, TempAllocator *inTempAllocator)
 Prepare for simulation step by allocating space for the contact constraints.
 
void PrepareNonContactConstraints (uint32 inNumConstraints, TempAllocator *inTempAllocator)
 Prepare for simulation step by allocating space for the non-contact constraints.
 
void LinkBodies (uint32 inFirst, uint32 inSecond)
 Link two bodies by their index in the BodyManager::mActiveBodies list to form islands.
 
void LinkConstraint (uint32 inConstraintIndex, uint32 inFirst, uint32 inSecond)
 Link a constraint to a body by their index in the BodyManager::mActiveBodies.
 
void LinkContact (uint32 inContactIndex, uint32 inFirst, uint32 inSecond)
 Link a contact to a body by their index in the BodyManager::mActiveBodies.
 
void Finalize (const BodyID *inActiveBodies, uint32 inNumActiveBodies, uint32 inNumContacts, TempAllocator *inTempAllocator)
 Finalize the islands after all bodies have been Link()-ed.
 
uint32 GetNumIslands () const
 Get the amount of islands formed.
 
void GetBodiesInIsland (uint32 inIslandIndex, BodyID *&outBodiesBegin, BodyID *&outBodiesEnd) const
 Get iterator for a particular island, return false if there are no constraints.
 
bool GetConstraintsInIsland (uint32 inIslandIndex, uint32 *&outConstraintsBegin, uint32 *&outConstraintsEnd) const
 
bool GetContactsInIsland (uint32 inIslandIndex, uint32 *&outContactsBegin, uint32 *&outContactsEnd) const
 
void SetNumPositionSteps (uint32 inIslandIndex, uint inNumPositionSteps)
 The number of position iterations for each island.
 
uint GetNumPositionSteps (uint32 inIslandIndex) const
 
void ResetIslands (TempAllocator *inTempAllocator)
 After you're done calling the three functions above, call this function to free associated data.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Keeps track of connected bodies and builds islands for multithreaded velocity/position update.

+

Constructor & Destructor Documentation

+ +

◆ ~IslandBuilder()

+ +
+
+ + + + + + + +
JPH_NAMESPACE_BEGIN IslandBuilder::~IslandBuilder ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Finalize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void IslandBuilder::Finalize (const BodyIDinActiveBodies,
uint32 inNumActiveBodies,
uint32 inNumContacts,
TempAllocatorinTempAllocator 
)
+
+ +

Finalize the islands after all bodies have been Link()-ed.

+ +
+
+ +

◆ GetBodiesInIsland()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IslandBuilder::GetBodiesInIsland (uint32 inIslandIndex,
BodyID *& outBodiesBegin,
BodyID *& outBodiesEnd 
) const
+
+ +

Get iterator for a particular island, return false if there are no constraints.

+ +
+
+ +

◆ GetConstraintsInIsland()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool IslandBuilder::GetConstraintsInIsland (uint32 inIslandIndex,
uint32 *& outConstraintsBegin,
uint32 *& outConstraintsEnd 
) const
+
+ +
+
+ +

◆ GetContactsInIsland()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool IslandBuilder::GetContactsInIsland (uint32 inIslandIndex,
uint32 *& outContactsBegin,
uint32 *& outContactsEnd 
) const
+
+ +
+
+ +

◆ GetNumIslands()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 IslandBuilder::GetNumIslands () const
+
+inline
+
+ +

Get the amount of islands formed.

+ +
+
+ +

◆ GetNumPositionSteps()

+ +
+
+ + + + + +
+ + + + + + + + +
uint IslandBuilder::GetNumPositionSteps (uint32 inIslandIndex) const
+
+inline
+
+ +
+
+ +

◆ Init()

+ +
+
+ + + + + + + + +
void IslandBuilder::Init (uint32 inMaxActiveBodies)
+
+ +

Initialize the island builder with the maximum amount of bodies that could be active.

+ +
+
+ +

◆ LinkBodies()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IslandBuilder::LinkBodies (uint32 inFirst,
uint32 inSecond 
)
+
+ +

Link two bodies by their index in the BodyManager::mActiveBodies list to form islands.

+ +
+
+ +

◆ LinkConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IslandBuilder::LinkConstraint (uint32 inConstraintIndex,
uint32 inFirst,
uint32 inSecond 
)
+
+ +

Link a constraint to a body by their index in the BodyManager::mActiveBodies.

+ +
+
+ +

◆ LinkContact()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void IslandBuilder::LinkContact (uint32 inContactIndex,
uint32 inFirst,
uint32 inSecond 
)
+
+ +

Link a contact to a body by their index in the BodyManager::mActiveBodies.

+ +
+
+ +

◆ PrepareContactConstraints()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IslandBuilder::PrepareContactConstraints (uint32 inMaxContactConstraints,
TempAllocatorinTempAllocator 
)
+
+ +

Prepare for simulation step by allocating space for the contact constraints.

+ +
+
+ +

◆ PrepareNonContactConstraints()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void IslandBuilder::PrepareNonContactConstraints (uint32 inNumConstraints,
TempAllocatorinTempAllocator 
)
+
+ +

Prepare for simulation step by allocating space for the non-contact constraints.

+ +
+
+ +

◆ ResetIslands()

+ +
+
+ + + + + + + + +
void IslandBuilder::ResetIslands (TempAllocatorinTempAllocator)
+
+ +

After you're done calling the three functions above, call this function to free associated data.

+ +
+
+ +

◆ SetNumPositionSteps()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void IslandBuilder::SetNumPositionSteps (uint32 inIslandIndex,
uint inNumPositionSteps 
)
+
+inline
+
+ +

The number of position iterations for each island.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_island_builder.js b/class_island_builder.js new file mode 100644 index 000000000..1d7604308 --- /dev/null +++ b/class_island_builder.js @@ -0,0 +1,18 @@ +var class_island_builder = +[ + [ "~IslandBuilder", "class_island_builder.html#a88fd7d9e6a6982dc394fd7d647df41cb", null ], + [ "Finalize", "class_island_builder.html#af8e0ac69b3e021ab24317116ded1c622", null ], + [ "GetBodiesInIsland", "class_island_builder.html#ace0201e247b5fcb9639bba23b385e718", null ], + [ "GetConstraintsInIsland", "class_island_builder.html#abb0ec0d343289ee4294fa3abbde16a82", null ], + [ "GetContactsInIsland", "class_island_builder.html#a39454ff17c3dc0d7b133c79ac2d0d7e0", null ], + [ "GetNumIslands", "class_island_builder.html#a6f0d6d67425a9d02cf561a06784431f4", null ], + [ "GetNumPositionSteps", "class_island_builder.html#a213561deca43cb4c9bde6560bed5a0e1", null ], + [ "Init", "class_island_builder.html#a060b323839a30c3096ec581b4684290d", null ], + [ "LinkBodies", "class_island_builder.html#ad3c6e43cef523989bab88ed8cc11575f", null ], + [ "LinkConstraint", "class_island_builder.html#a323b5204fe8c9fdb7a15791469780259", null ], + [ "LinkContact", "class_island_builder.html#a32b2a16b2eca88110ad2604e2b129132", null ], + [ "PrepareContactConstraints", "class_island_builder.html#aaf615d7e17f6b82156eef5932a4bc9d6", null ], + [ "PrepareNonContactConstraints", "class_island_builder.html#ac70b90cc284ac3999e18b865724392da", null ], + [ "ResetIslands", "class_island_builder.html#a3a23a4981c11d55933cc2533504eb38a", null ], + [ "SetNumPositionSteps", "class_island_builder.html#a576814bc0405702b74174635e0b44d6d", null ] +]; \ No newline at end of file diff --git a/class_island_builder.png b/class_island_builder.png new file mode 100644 index 000000000..1c177120b Binary files /dev/null and b/class_island_builder.png differ diff --git a/class_job_system-members.html b/class_job_system-members.html new file mode 100644 index 000000000..30be2430d --- /dev/null +++ b/class_job_system-members.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystem Member List
+
+
+ +

This is the complete list of members for JobSystem, including all inherited members.

+ + + + + + + + + + + + + + +
CreateBarrier()=0JobSystempure virtual
CreateJob(const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies=0)=0JobSystempure virtual
DestroyBarrier(Barrier *inBarrier)=0JobSystempure virtual
FreeJob(Job *inJob)=0JobSystemprotectedpure virtual
GetMaxConcurrency() const =0JobSystempure virtual
JobFunction typedefJobSystem
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
QueueJob(Job *inJob)=0JobSystemprotectedpure virtual
QueueJobs(Job **inJobs, uint inNumJobs)=0JobSystemprotectedpure virtual
WaitForJobs(Barrier *inBarrier)=0JobSystempure virtual
~JobSystem()=defaultJobSystemvirtual
+
+ + + + diff --git a/class_job_system.html b/class_job_system.html new file mode 100644 index 000000000..b9575414e --- /dev/null +++ b/class_job_system.html @@ -0,0 +1,549 @@ + + + + + + + +Jolt Physics: JobSystem Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
JobSystem Class Referenceabstract
+
+
+ +

#include <JobSystem.h>

+
+Inheritance diagram for JobSystem:
+
+
+ + +NonCopyable +JobSystemSingleThreaded +JobSystemWithBarrier +JobSystemThreadPool + +
+ + + + + + + + + + +

+Classes

class  Barrier
 A job barrier keeps track of a number of jobs and allows waiting until they are all completed. More...
 
class  Job
 A class that contains information for a single unit of work. More...
 
class  JobHandle
 
+ + + + +

+Public Types

using JobFunction = function< void()>
 Main function of the job.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~JobSystem ()=default
 Destructor.
 
virtual int GetMaxConcurrency () const =0
 Get maximum number of concurrently executing jobs.
 
virtual JobHandle CreateJob (const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies=0)=0
 
virtual BarrierCreateBarrier ()=0
 Create a new barrier, used to wait on jobs.
 
virtual void DestroyBarrier (Barrier *inBarrier)=0
 Destroy a barrier when it is no longer used. The barrier should be empty at this point.
 
virtual void WaitForJobs (Barrier *inBarrier)=0
 Wait for a set of jobs to be finished, note that only 1 thread can be waiting on a barrier at a time.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + +

+Protected Member Functions

virtual void QueueJob (Job *inJob)=0
 Adds a job to the job queue.
 
virtual void QueueJobs (Job **inJobs, uint inNumJobs)=0
 Adds a number of jobs at once to the job queue.
 
virtual void FreeJob (Job *inJob)=0
 Frees a job.
 
+

Detailed Description

+

A class that allows units of work (Jobs) to be scheduled across multiple threads. It allows dependencies between the jobs so that the jobs form a graph.

+

The pattern for using this class is:

// Create job system
+JobSystem *job_system = new JobSystemThreadPool(...);
+
+// Create some jobs
+JobHandle second_job = job_system->CreateJob("SecondJob", Color::sRed, []() { ... }, 1); // Create a job with 1 dependency
+JobHandle first_job = job_system->CreateJob("FirstJob", Color::sGreen, [second_job]() { ....; second_job.RemoveDependency(); }, 0); // Job can start immediately, will start second job when it's done
+JobHandle third_job = job_system->CreateJob("ThirdJob", Color::sBlue, []() { ... }, 0); // This job can run immediately as well and can run in parallel to job 1 and 2
+
+// Add the jobs to the barrier so that we can execute them while we're waiting
+Barrier *barrier = job_system->CreateBarrier();
+barrier->AddJob(first_job);
+barrier->AddJob(second_job);
+barrier->AddJob(third_job);
+job_system->WaitForJobs(barrier);
+
+// Clean up
+job_system->DestroyBarrier(barrier);
+delete job_system;
+

Jobs are guaranteed to be started in the order that their dependency counter becomes zero (in case they're scheduled on a background thread) or in the order they're added to the barrier (when dependency count is zero and when executing on the thread that calls WaitForJobs).

+

If you want to implement your own job system, inherit from JobSystem and implement:

+
    +
  • JobSystem::GetMaxConcurrency - This should return the maximum number of jobs that can run in parallel.
  • +
  • JobSystem::CreateJob - This should create a Job object and return it to the caller.
  • +
  • JobSystem::FreeJob - This should free the memory associated with the job object. It is called by the Job destructor when it is Release()-ed for the last time.
  • +
  • JobSystem::QueueJob/QueueJobs - These should store the job pointer in an internal queue to run immediately (dependencies are tracked internally, this function is called when the job can run). The Job objects are reference counted and are guaranteed to stay alive during the QueueJob(s) call. If you store the job in your own data structure you need to call AddRef() to take a reference. After the job has been executed you need to call Release() to release the reference. Make sure you no longer dereference the job pointer after calling Release().
  • +
+

JobSystem::Barrier is used to track the completion of a set of jobs. Jobs will be created by other jobs and added to the barrier while it is being waited on. This means that you cannot create a dependency graph beforehand as the graph changes while jobs are running. Implement the following functions:

+
    +
  • Barrier::AddJob/AddJobs - Add a job to the barrier, any call to WaitForJobs will now also wait for this job to complete. If you store the job in a data structure in the Barrier you need to call AddRef() on the job to keep it alive and Release() after you're done with it.
  • +
  • Barrier::OnJobFinished - This function is called when a job has finished executing, you can use this to track completion and remove the job from the list of jobs to wait on.
  • +
+

The functions on JobSystem that need to be implemented to support barriers are:

+
    +
  • JobSystem::CreateBarrier - Create a new barrier.
  • +
  • JobSystem::DestroyBarrier - Destroy a barrier.
  • +
  • JobSystem::WaitForJobs - This is the main function that is used to wait for all jobs that have been added to a Barrier. WaitForJobs can execute jobs that have been added to the barrier while waiting. It is not wise to execute other jobs that touch physics structures as this can cause race conditions and deadlocks. Please keep in mind that the barrier is only intended to wait on the completion of the Jolt jobs added to it, if you scheduled any jobs in your engine's job system to execute the Jolt jobs as part of QueueJob/QueueJobs, you might still need to wait for these in this function after the barrier is finished waiting.
  • +
+

An example implementation is JobSystemThreadPool. If you don't want to write the Barrier class you can also inherit from JobSystemWithBarrier.

+

Member Typedef Documentation

+ +

◆ JobFunction

+ +
+
+ + + + +
using JobSystem::JobFunction = function<void()>
+
+ +

Main function of the job.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~JobSystem()

+ +
+
+ + + + + +
+ + + + + + + +
virtual JobSystem::~JobSystem ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ CreateBarrier()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Barrier * JobSystem::CreateBarrier ()
+
+pure virtual
+
+ +

Create a new barrier, used to wait on jobs.

+ +

Implemented in JobSystemSingleThreaded, and JobSystemWithBarrier.

+ +
+
+ +

◆ CreateJob()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual JobHandle JobSystem::CreateJob (const char * inName,
ColorArg inColor,
const JobFunctioninJobFunction,
uint32 inNumDependencies = 0 
)
+
+pure virtual
+
+

Create a new job, the job is started immediately if inNumDependencies == 0 otherwise it starts when RemoveDependency causes the dependency counter to reach 0.

+ +

Implemented in JobSystemSingleThreaded, and JobSystemThreadPool.

+ +
+
+ +

◆ DestroyBarrier()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void JobSystem::DestroyBarrier (BarrierinBarrier)
+
+pure virtual
+
+ +

Destroy a barrier when it is no longer used. The barrier should be empty at this point.

+ +

Implemented in JobSystemSingleThreaded, and JobSystemWithBarrier.

+ +
+
+ +

◆ FreeJob()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void JobSystem::FreeJob (JobinJob)
+
+protectedpure virtual
+
+ +

Frees a job.

+ +

Implemented in JobSystemSingleThreaded, and JobSystemThreadPool.

+ +
+
+ +

◆ GetMaxConcurrency()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int JobSystem::GetMaxConcurrency () const
+
+pure virtual
+
+ +

Get maximum number of concurrently executing jobs.

+ +

Implemented in JobSystemSingleThreaded, and JobSystemThreadPool.

+ +
+
+ +

◆ QueueJob()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void JobSystem::QueueJob (JobinJob)
+
+protectedpure virtual
+
+ +

Adds a job to the job queue.

+ +

Implemented in JobSystemSingleThreaded, and JobSystemThreadPool.

+ +
+
+ +

◆ QueueJobs()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void JobSystem::QueueJobs (Job ** inJobs,
uint inNumJobs 
)
+
+protectedpure virtual
+
+ +

Adds a number of jobs at once to the job queue.

+ +

Implemented in JobSystemSingleThreaded, and JobSystemThreadPool.

+ +
+
+ +

◆ WaitForJobs()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void JobSystem::WaitForJobs (BarrierinBarrier)
+
+pure virtual
+
+ +

Wait for a set of jobs to be finished, note that only 1 thread can be waiting on a barrier at a time.

+ +

Implemented in JobSystemSingleThreaded, and JobSystemWithBarrier.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_job_system.js b/class_job_system.js new file mode 100644 index 000000000..b284f8b47 --- /dev/null +++ b/class_job_system.js @@ -0,0 +1,16 @@ +var class_job_system = +[ + [ "Barrier", "class_job_system_1_1_barrier.html", "class_job_system_1_1_barrier" ], + [ "Job", "class_job_system_1_1_job.html", "class_job_system_1_1_job" ], + [ "JobHandle", "class_job_system_1_1_job_handle.html", "class_job_system_1_1_job_handle" ], + [ "JobFunction", "class_job_system.html#ae31ef61a509934f03d4705aec19c61f5", null ], + [ "~JobSystem", "class_job_system.html#aaaf28c0a93f2d52eb2c936807f9e8ec9", null ], + [ "CreateBarrier", "class_job_system.html#a2bd7c3efdc8f934b728ee1787e0bd58e", null ], + [ "CreateJob", "class_job_system.html#a0766c8acd5ed9ef0e6baf1c2b8f3c38b", null ], + [ "DestroyBarrier", "class_job_system.html#a51c615924cf4f8eefb8e3fbe72041373", null ], + [ "FreeJob", "class_job_system.html#aa74329d956a01e3f2f219ea22bdc5097", null ], + [ "GetMaxConcurrency", "class_job_system.html#a5953ad34be5c47e7896b87ac7409b7d7", null ], + [ "QueueJob", "class_job_system.html#ae6bae9c5725c2009c8e9a2d79f60cb40", null ], + [ "QueueJobs", "class_job_system.html#a5820eef46d040e6ae17e51a828201118", null ], + [ "WaitForJobs", "class_job_system.html#a32e93cf0a95e8893978cf1ee92eb41d7", null ] +]; \ No newline at end of file diff --git a/class_job_system.png b/class_job_system.png new file mode 100644 index 000000000..42ef2b591 Binary files /dev/null and b/class_job_system.png differ diff --git a/class_job_system_1_1_barrier-members.html b/class_job_system_1_1_barrier-members.html new file mode 100644 index 000000000..6a0790909 --- /dev/null +++ b/class_job_system_1_1_barrier-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystem::Barrier Member List
+
+
+ +

This is the complete list of members for JobSystem::Barrier, including all inherited members.

+ + + + + + + + + +
AddJob(const JobHandle &inJob)=0JobSystem::Barrierpure virtual
AddJobs(const JobHandle *inHandles, uint inNumHandles)=0JobSystem::Barrierpure virtual
JobJobSystem::Barrierfriend
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
OnJobFinished(Job *inJob)=0JobSystem::Barrierprotectedpure virtual
operator=(const NonCopyable &)=deleteNonCopyable
~Barrier()=defaultJobSystem::Barrierprotectedvirtual
+
+ + + + diff --git a/class_job_system_1_1_barrier.html b/class_job_system_1_1_barrier.html new file mode 100644 index 000000000..77a88e0cf --- /dev/null +++ b/class_job_system_1_1_barrier.html @@ -0,0 +1,321 @@ + + + + + + + +Jolt Physics: JobSystem::Barrier Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
JobSystem::Barrier Class Referenceabstract
+
+
+ +

A job barrier keeps track of a number of jobs and allows waiting until they are all completed. + More...

+ +

#include <JobSystem.h>

+
+Inheritance diagram for JobSystem::Barrier:
+
+
+ + +NonCopyable +JobSystemSingleThreaded::BarrierImpl + +
+ + + + + + + + + + + + + +

+Public Member Functions

virtual JPH_OVERRIDE_NEW_DELETE void AddJob (const JobHandle &inJob)=0
 
virtual void AddJobs (const JobHandle *inHandles, uint inNumHandles)=0
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + +

+Protected Member Functions

virtual ~Barrier ()=default
 Destructor, you should call JobSystem::DestroyBarrier instead of destructing this object directly.
 
virtual void OnJobFinished (Job *inJob)=0
 Called by a Job to mark that it is finished.
 
+ + + + +

+Friends

class Job
 Job needs to be able to call OnJobFinished.
 
+

Detailed Description

+

A job barrier keeps track of a number of jobs and allows waiting until they are all completed.

+

Constructor & Destructor Documentation

+ +

◆ ~Barrier()

+ +
+
+ + + + + +
+ + + + + + + +
virtual JobSystem::Barrier::~Barrier ()
+
+protectedvirtualdefault
+
+ +

Destructor, you should call JobSystem::DestroyBarrier instead of destructing this object directly.

+ +
+
+

Member Function Documentation

+ +

◆ AddJob()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual JPH_OVERRIDE_NEW_DELETE void JobSystem::Barrier::AddJob (const JobHandleinJob)
+
+pure virtual
+
+

Add a job to this barrier Note that jobs can keep being added to the barrier while waiting for the barrier

+ +

Implemented in JobSystemSingleThreaded::BarrierImpl.

+ +
+
+ +

◆ AddJobs()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void JobSystem::Barrier::AddJobs (const JobHandleinHandles,
uint inNumHandles 
)
+
+pure virtual
+
+

Add multiple jobs to this barrier Note that jobs can keep being added to the barrier while waiting for the barrier

+ +

Implemented in JobSystemSingleThreaded::BarrierImpl.

+ +
+
+ +

◆ OnJobFinished()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void JobSystem::Barrier::OnJobFinished (JobinJob)
+
+protectedpure virtual
+
+ +

Called by a Job to mark that it is finished.

+ +

Implemented in JobSystemSingleThreaded::BarrierImpl.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ Job

+ +
+
+ + + + + +
+ + + + +
friend class Job
+
+friend
+
+ +

Job needs to be able to call OnJobFinished.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_job_system_1_1_barrier.js b/class_job_system_1_1_barrier.js new file mode 100644 index 000000000..7b3111d1f --- /dev/null +++ b/class_job_system_1_1_barrier.js @@ -0,0 +1,8 @@ +var class_job_system_1_1_barrier = +[ + [ "~Barrier", "class_job_system_1_1_barrier.html#aa7553c8c987ca8bb810c2715ef8ffbbd", null ], + [ "AddJob", "class_job_system_1_1_barrier.html#afcf8f345a7a19e1399c4899942ed49c4", null ], + [ "AddJobs", "class_job_system_1_1_barrier.html#ad62875b2d5b89282bfaae824cac1a476", null ], + [ "OnJobFinished", "class_job_system_1_1_barrier.html#ab76635eef3bb293a2bceb429192adb2a", null ], + [ "Job", "class_job_system_1_1_barrier.html#a965d805cf4fa6e7ef721cfad15d99bcd", null ] +]; \ No newline at end of file diff --git a/class_job_system_1_1_barrier.png b/class_job_system_1_1_barrier.png new file mode 100644 index 000000000..16d84f92e Binary files /dev/null and b/class_job_system_1_1_barrier.png differ diff --git a/class_job_system_1_1_job-members.html b/class_job_system_1_1_job-members.html new file mode 100644 index 000000000..468ce66ec --- /dev/null +++ b/class_job_system_1_1_job-members.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystem::Job Member List
+
+
+ +

This is the complete list of members for JobSystem::Job, including all inherited members.

+ + + + + + + + + + + + + + + + +
AddDependency(int inCount)JobSystem::Jobinline
AddRef()JobSystem::Jobinline
CanBeExecuted() constJobSystem::Jobinline
cBarrierDoneStateJobSystem::Jobstatic
cDoneStateJobSystem::Jobstatic
cExecutingStateJobSystem::Jobstatic
Execute()JobSystem::Jobinline
GetJobSystem()JobSystem::Jobinline
GetName() constJobSystem::Jobinline
IsDone() constJobSystem::Jobinline
Job(const char *inJobName, ColorArg inColor, JobSystem *inJobSystem, const JobFunction &inJobFunction, uint32 inNumDependencies)JobSystem::Jobinline
Release()JobSystem::Jobinline
RemoveDependency(int inCount)JobSystem::Jobinline
RemoveDependencyAndQueue(int inCount)JobSystem::Jobinline
SetBarrier(Barrier *inBarrier)JobSystem::Jobinline
+
+ + + + diff --git a/class_job_system_1_1_job.html b/class_job_system_1_1_job.html new file mode 100644 index 000000000..bd74325c7 --- /dev/null +++ b/class_job_system_1_1_job.html @@ -0,0 +1,606 @@ + + + + + + + +Jolt Physics: JobSystem::Job Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
JobSystem::Job Class Reference
+
+
+ +

A class that contains information for a single unit of work. + More...

+ +

#include <JobSystem.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Job (const char *inJobName, ColorArg inColor, JobSystem *inJobSystem, const JobFunction &inJobFunction, uint32 inNumDependencies)
 Constructor.
 
JobSystemGetJobSystem ()
 Get the jobs system to which this job belongs.
 
void AddRef ()
 Add or release a reference to this object.
 
void Release ()
 
void AddDependency (int inCount)
 Add to the dependency counter.
 
bool RemoveDependency (int inCount)
 
void RemoveDependencyAndQueue (int inCount)
 
bool SetBarrier (Barrier *inBarrier)
 Set the job barrier that this job belongs to and returns false if this was not possible because the job already finished.
 
uint32 Execute ()
 Run the job function, returns the number of dependencies that this job still has or cExecutingState or cDoneState.
 
bool CanBeExecuted () const
 Test if the job can be executed.
 
bool IsDone () const
 Test if the job finished executing.
 
const char * GetName () const
 Get the name of the job.
 
+ + + + + + + + + + +

+Static Public Attributes

static constexpr uint32 cExecutingState = 0xe0e0e0e0
 Value of mNumDependencies when job is executing.
 
static constexpr uint32 cDoneState = 0xd0d0d0d0
 Value of mNumDependencies when job is done executing.
 
static constexpr intptr_t cBarrierDoneState = ~intptr_t(0)
 Value to use when the barrier has been triggered.
 
+

Detailed Description

+

A class that contains information for a single unit of work.

+

Constructor & Destructor Documentation

+ +

◆ Job()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_OVERRIDE_NEW_DELETE JobSystem::Job::Job (const char * inJobName,
ColorArg inColor,
JobSysteminJobSystem,
const JobFunctioninJobFunction,
uint32 inNumDependencies 
)
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ AddDependency()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_NAMESPACE_BEGIN void JobSystem::Job::AddDependency (int inCount)
+
+inline
+
+ +

Add to the dependency counter.

+ +
+
+ +

◆ AddRef()

+ +
+
+ + + + + +
+ + + + + + + +
void JobSystem::Job::AddRef ()
+
+inline
+
+ +

Add or release a reference to this object.

+ +
+
+ +

◆ CanBeExecuted()

+ +
+
+ + + + + +
+ + + + + + + +
bool JobSystem::Job::CanBeExecuted () const
+
+inline
+
+ +

Test if the job can be executed.

+ +
+
+ +

◆ Execute()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 JobSystem::Job::Execute ()
+
+inline
+
+ +

Run the job function, returns the number of dependencies that this job still has or cExecutingState or cDoneState.

+ +
+
+ +

◆ GetJobSystem()

+ +
+
+ + + + + +
+ + + + + + + +
JobSystem * JobSystem::Job::GetJobSystem ()
+
+inline
+
+ +

Get the jobs system to which this job belongs.

+ +
+
+ +

◆ GetName()

+ +
+
+ + + + + +
+ + + + + + + +
const char * JobSystem::Job::GetName () const
+
+inline
+
+ +

Get the name of the job.

+ +
+
+ +

◆ IsDone()

+ +
+
+ + + + + +
+ + + + + + + +
bool JobSystem::Job::IsDone () const
+
+inline
+
+ +

Test if the job finished executing.

+ +
+
+ +

◆ Release()

+ +
+
+ + + + + +
+ + + + + + + +
void JobSystem::Job::Release ()
+
+inline
+
+ +
+
+ +

◆ RemoveDependency()

+ +
+
+ + + + + +
+ + + + + + + + +
bool JobSystem::Job::RemoveDependency (int inCount)
+
+inline
+
+

Remove from the dependency counter. Returns true whenever the dependency counter reaches zero and if it does it is no longer valid to call the AddDependency/RemoveDependency functions.

+ +
+
+ +

◆ RemoveDependencyAndQueue()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystem::Job::RemoveDependencyAndQueue (int inCount)
+
+inline
+
+

Remove from the dependency counter. Job will be queued whenever the dependency counter reaches zero and if it does it is no longer valid to call the AddDependency/RemoveDependency functions.

+ +
+
+ +

◆ SetBarrier()

+ +
+
+ + + + + +
+ + + + + + + + +
bool JobSystem::Job::SetBarrier (BarrierinBarrier)
+
+inline
+
+ +

Set the job barrier that this job belongs to and returns false if this was not possible because the job already finished.

+ +
+
+

Member Data Documentation

+ +

◆ cBarrierDoneState

+ +
+
+ + + + + +
+ + + + +
constexpr intptr_t JobSystem::Job::cBarrierDoneState = ~intptr_t(0)
+
+staticconstexpr
+
+ +

Value to use when the barrier has been triggered.

+ +
+
+ +

◆ cDoneState

+ +
+
+ + + + + +
+ + + + +
constexpr uint32 JobSystem::Job::cDoneState = 0xd0d0d0d0
+
+staticconstexpr
+
+ +

Value of mNumDependencies when job is done executing.

+ +
+
+ +

◆ cExecutingState

+ +
+
+ + + + + +
+ + + + +
constexpr uint32 JobSystem::Job::cExecutingState = 0xe0e0e0e0
+
+staticconstexpr
+
+ +

Value of mNumDependencies when job is executing.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_job_system_1_1_job.js b/class_job_system_1_1_job.js new file mode 100644 index 000000000..6fa7f5832 --- /dev/null +++ b/class_job_system_1_1_job.js @@ -0,0 +1,15 @@ +var class_job_system_1_1_job = +[ + [ "Job", "class_job_system_1_1_job.html#a50f9de63538bb632101548fef86258e1", null ], + [ "AddDependency", "class_job_system_1_1_job.html#a7686a4762d0dfe746f0b46edfcae3d6d", null ], + [ "AddRef", "class_job_system_1_1_job.html#ac6b5861562063d42cfa3c68f45c12b2d", null ], + [ "CanBeExecuted", "class_job_system_1_1_job.html#aaa223bb40f3b9a54e69440ae309a661f", null ], + [ "Execute", "class_job_system_1_1_job.html#a51718f809ac43edfcd1a3ae87acc2bd4", null ], + [ "GetJobSystem", "class_job_system_1_1_job.html#aa3922bb7442e7e778cec6a8ea984f454", null ], + [ "GetName", "class_job_system_1_1_job.html#a426bcf2faa48d1ba4cf7874a32910f83", null ], + [ "IsDone", "class_job_system_1_1_job.html#abd9fad54e1b18a2a0c9795e86e222875", null ], + [ "Release", "class_job_system_1_1_job.html#a46cad8e24ec8ff788b41e8aea53a2e27", null ], + [ "RemoveDependency", "class_job_system_1_1_job.html#a59a4638f7edcbfd30f47f096f0f984f1", null ], + [ "RemoveDependencyAndQueue", "class_job_system_1_1_job.html#ae4411bbad4af5361b85db233bd0adb43", null ], + [ "SetBarrier", "class_job_system_1_1_job.html#a83a4dee7e40f01cab6eafbafa53a4efc", null ] +]; \ No newline at end of file diff --git a/class_job_system_1_1_job_handle-members.html b/class_job_system_1_1_job_handle-members.html new file mode 100644 index 000000000..69b5ca15c --- /dev/null +++ b/class_job_system_1_1_job_handle-members.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystem::JobHandle Member List
+
+
+ +

This is the complete list of members for JobSystem::JobHandle, including all inherited members.

+ + + + + + + + + + + + + + + + +
AddDependency(int inCount=1) constJobSystem::JobHandleinline
IsDone() constJobSystem::JobHandleinline
IsValid() constJobSystem::JobHandleinline
JobHandle()=defaultJobSystem::JobHandleinline
JobHandle(const JobHandle &inHandle)=defaultJobSystem::JobHandleinline
JobHandle(JobHandle &&inHandle) noexceptJobSystem::JobHandleinline
JobHandle(Job *inJob)JobSystem::JobHandleinlineexplicit
operator=(const JobHandle &inHandle)=defaultJobSystem::JobHandleinline
operator=(JobHandle &&inHandle) noexcept=defaultJobSystem::JobHandleinline
Ref< Job >::operator=(Job *inRHS)Ref< Job >inlineprivate
Ref< Job >::operator=(const Ref< Job > &inRHS)Ref< Job >inlineprivate
Ref< Job >::operator=(Ref< Job > &&inRHS) noexceptRef< Job >inlineprivate
RemoveDependency(int inCount=1) constJobSystem::JobHandleinline
sRemoveDependencies(const JobHandle *inHandles, uint inNumHandles, int inCount=1)JobSystem::JobHandleinlinestatic
sRemoveDependencies(StaticArray< JobHandle, N > &inHandles, int inCount=1)JobSystem::JobHandleinlinestatic
+
+ + + + diff --git a/class_job_system_1_1_job_handle.html b/class_job_system_1_1_job_handle.html new file mode 100644 index 000000000..d87b265c7 --- /dev/null +++ b/class_job_system_1_1_job_handle.html @@ -0,0 +1,531 @@ + + + + + + + +Jolt Physics: JobSystem::JobHandle Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
JobSystem::JobHandle Class Reference
+
+
+ +

#include <JobSystem.h>

+
+Inheritance diagram for JobSystem::JobHandle:
+
+
+ + +Ref< Job > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 JobHandle ()=default
 Constructor.
 
 JobHandle (const JobHandle &inHandle)=default
 
 JobHandle (JobHandle &&inHandle) noexcept
 
 JobHandle (Job *inJob)
 Constructor, only to be used by JobSystem.
 
JobHandleoperator= (const JobHandle &inHandle)=default
 Assignment.
 
JobHandleoperator= (JobHandle &&inHandle) noexcept=default
 
bool IsValid () const
 Check if this handle contains a job.
 
bool IsDone () const
 Check if this job has finished executing.
 
void AddDependency (int inCount=1) const
 Add to the dependency counter.
 
void RemoveDependency (int inCount=1) const
 
+ + + + + + + + +

+Static Public Member Functions

static void sRemoveDependencies (const JobHandle *inHandles, uint inNumHandles, int inCount=1)
 Remove a dependency from a batch of jobs at once, this can be more efficient than removing them one by one as it requires less locking.
 
template<uint N>
static void sRemoveDependencies (StaticArray< JobHandle, N > &inHandles, int inCount=1)
 Helper function to remove dependencies on a static array of job handles.
 
+

Detailed Description

+

A job handle contains a reference to a job. The job will be deleted as soon as there are no JobHandles. referring to the job and when it is not in the job queue / being processed.

+

Constructor & Destructor Documentation

+ +

◆ JobHandle() [1/4]

+ +
+
+ + + + + +
+ + + + + + + +
JobSystem::JobHandle::JobHandle ()
+
+inlinedefault
+
+ +

Constructor.

+ +
+
+ +

◆ JobHandle() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + +
JobSystem::JobHandle::JobHandle (const JobHandleinHandle)
+
+inlinedefault
+
+ +
+
+ +

◆ JobHandle() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + +
JobSystem::JobHandle::JobHandle (JobHandle && inHandle)
+
+inlinenoexcept
+
+ +
+
+ +

◆ JobHandle() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + +
JobSystem::JobHandle::JobHandle (JobinJob)
+
+inlineexplicit
+
+ +

Constructor, only to be used by JobSystem.

+ +
+
+

Member Function Documentation

+ +

◆ AddDependency()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystem::JobHandle::AddDependency (int inCount = 1) const
+
+inline
+
+ +

Add to the dependency counter.

+ +
+
+ +

◆ IsDone()

+ +
+
+ + + + + +
+ + + + + + + +
bool JobSystem::JobHandle::IsDone () const
+
+inline
+
+ +

Check if this job has finished executing.

+ +
+
+ +

◆ IsValid()

+ +
+
+ + + + + +
+ + + + + + + +
bool JobSystem::JobHandle::IsValid () const
+
+inline
+
+ +

Check if this handle contains a job.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JobHandle & JobSystem::JobHandle::operator= (const JobHandleinHandle)
+
+inlinedefault
+
+ +

Assignment.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JobHandle & JobSystem::JobHandle::operator= (JobHandle && inHandle)
+
+inlinedefaultnoexcept
+
+ +
+
+ +

◆ RemoveDependency()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystem::JobHandle::RemoveDependency (int inCount = 1) const
+
+inline
+
+

Remove from the dependency counter. Job will start whenever the dependency counter reaches zero and if it does it is no longer valid to call the AddDependency/RemoveDependency functions.

+ +
+
+ +

◆ sRemoveDependencies() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void JobSystem::JobHandle::sRemoveDependencies (const JobHandleinHandles,
uint inNumHandles,
int inCount = 1 
)
+
+inlinestatic
+
+ +

Remove a dependency from a batch of jobs at once, this can be more efficient than removing them one by one as it requires less locking.

+ +
+
+ +

◆ sRemoveDependencies() [2/2]

+ +
+
+
+template<uint N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void JobSystem::JobHandle::sRemoveDependencies (StaticArray< JobHandle, N > & inHandles,
int inCount = 1 
)
+
+inlinestatic
+
+ +

Helper function to remove dependencies on a static array of job handles.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_job_system_1_1_job_handle.js b/class_job_system_1_1_job_handle.js new file mode 100644 index 000000000..e9426dd6c --- /dev/null +++ b/class_job_system_1_1_job_handle.js @@ -0,0 +1,13 @@ +var class_job_system_1_1_job_handle = +[ + [ "JobHandle", "class_job_system_1_1_job_handle.html#a07f9178968f17e7bcb8b876f46ee916d", null ], + [ "JobHandle", "class_job_system_1_1_job_handle.html#a968f1e7b128e82c864214452ad9ae168", null ], + [ "JobHandle", "class_job_system_1_1_job_handle.html#a5324a68c829e11b6f9cfbcb27ec6451d", null ], + [ "JobHandle", "class_job_system_1_1_job_handle.html#a08f33876c4c56f09acc8447c68af002a", null ], + [ "AddDependency", "class_job_system_1_1_job_handle.html#af0a10c0398474dbf0ffe9b5866775abb", null ], + [ "IsDone", "class_job_system_1_1_job_handle.html#a787e04af05eea5f3eda568956cca9f10", null ], + [ "IsValid", "class_job_system_1_1_job_handle.html#a8f060c8caed0f0d1a5cfa45490790529", null ], + [ "operator=", "class_job_system_1_1_job_handle.html#adfe0bc1784be03e007aedfc86a8a0b99", null ], + [ "operator=", "class_job_system_1_1_job_handle.html#a434a0bf97c5ade28fcf116de7bd1c0e1", null ], + [ "RemoveDependency", "class_job_system_1_1_job_handle.html#a25f723a35202461e725cc3ad6cc166bb", null ] +]; \ No newline at end of file diff --git a/class_job_system_1_1_job_handle.png b/class_job_system_1_1_job_handle.png new file mode 100644 index 000000000..77bd4ef43 Binary files /dev/null and b/class_job_system_1_1_job_handle.png differ diff --git a/class_job_system_single_threaded-members.html b/class_job_system_single_threaded-members.html new file mode 100644 index 000000000..8ef45b6d6 --- /dev/null +++ b/class_job_system_single_threaded-members.html @@ -0,0 +1,135 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystemSingleThreaded Member List
+
+
+ +

This is the complete list of members for JobSystemSingleThreaded, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
AvailableJobs typedefJobSystemSingleThreadedprotected
CreateBarrier() overrideJobSystemSingleThreadedvirtual
CreateJob(const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies=0) overrideJobSystemSingleThreadedvirtual
DestroyBarrier(Barrier *inBarrier) overrideJobSystemSingleThreadedvirtual
FreeJob(Job *inJob) overrideJobSystemSingleThreadedprotectedvirtual
GetMaxConcurrency() const overrideJobSystemSingleThreadedinlinevirtual
Init(uint inMaxJobs)JobSystemSingleThreaded
JobFunction typedefJobSystem
JobSystemSingleThreaded()=defaultJobSystemSingleThreaded
JobSystemSingleThreaded(uint inMaxJobs)JobSystemSingleThreadedinlineexplicit
mDummyBarrierJobSystemSingleThreadedprotected
mJobsJobSystemSingleThreadedprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
QueueJob(Job *inJob) overrideJobSystemSingleThreadedprotectedvirtual
QueueJobs(Job **inJobs, uint inNumJobs) overrideJobSystemSingleThreadedprotectedvirtual
WaitForJobs(Barrier *inBarrier) overrideJobSystemSingleThreadedvirtual
~JobSystem()=defaultJobSystemvirtual
+
+ + + + diff --git a/class_job_system_single_threaded.html b/class_job_system_single_threaded.html new file mode 100644 index 000000000..c09c4d117 --- /dev/null +++ b/class_job_system_single_threaded.html @@ -0,0 +1,636 @@ + + + + + + + +Jolt Physics: JobSystemSingleThreaded Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
JobSystemSingleThreaded Class Referencefinal
+
+
+ +

Implementation of a JobSystem without threads, runs jobs as soon as they are added. + More...

+ +

#include <JobSystemSingleThreaded.h>

+
+Inheritance diagram for JobSystemSingleThreaded:
+
+
+ + +JobSystem +NonCopyable + +
+ + + + +

+Classes

class  BarrierImpl
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE JobSystemSingleThreaded ()=default
 Constructor.
 
 JobSystemSingleThreaded (uint inMaxJobs)
 
void Init (uint inMaxJobs)
 
virtual int GetMaxConcurrency () const override
 Get maximum number of concurrently executing jobs.
 
virtual JobHandle CreateJob (const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies=0) override
 
virtual BarrierCreateBarrier () override
 Create a new barrier, used to wait on jobs.
 
virtual void DestroyBarrier (Barrier *inBarrier) override
 Destroy a barrier when it is no longer used. The barrier should be empty at this point.
 
virtual void WaitForJobs (Barrier *inBarrier) override
 Wait for a set of jobs to be finished, note that only 1 thread can be waiting on a barrier at a time.
 
- Public Member Functions inherited from JobSystem
virtual ~JobSystem ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + +

+Protected Types

using AvailableJobs = FixedSizeFreeList< Job >
 Array of jobs (fixed size)
 
+ + + + + + + + + + +

+Protected Member Functions

virtual void QueueJob (Job *inJob) override
 Adds a job to the job queue.
 
virtual void QueueJobs (Job **inJobs, uint inNumJobs) override
 Adds a number of jobs at once to the job queue.
 
virtual void FreeJob (Job *inJob) override
 Frees a job.
 
+ + + + + + +

+Protected Attributes

BarrierImpl mDummyBarrier
 Shared barrier since the barrier implementation does nothing.
 
AvailableJobs mJobs
 
+ + + + + +

+Additional Inherited Members

- Public Types inherited from JobSystem
using JobFunction = function< void()>
 Main function of the job.
 
+

Detailed Description

+

Implementation of a JobSystem without threads, runs jobs as soon as they are added.

+

Member Typedef Documentation

+ +

◆ AvailableJobs

+ +
+
+ + + + + +
+ + + + +
using JobSystemSingleThreaded::AvailableJobs = FixedSizeFreeList<Job>
+
+protected
+
+ +

Array of jobs (fixed size)

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ JobSystemSingleThreaded() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE JobSystemSingleThreaded::JobSystemSingleThreaded ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ JobSystemSingleThreaded() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JobSystemSingleThreaded::JobSystemSingleThreaded (uint inMaxJobs)
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ CreateBarrier()

+ +
+
+ + + + + +
+ + + + + + + +
JobSystem::Barrier * JobSystemSingleThreaded::CreateBarrier ()
+
+overridevirtual
+
+ +

Create a new barrier, used to wait on jobs.

+ +

Implements JobSystem.

+ +
+
+ +

◆ CreateJob()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JobHandle JobSystemSingleThreaded::CreateJob (const char * inName,
ColorArg inColor,
const JobFunctioninJobFunction,
uint32 inNumDependencies = 0 
)
+
+overridevirtual
+
+

Create a new job, the job is started immediately if inNumDependencies == 0 otherwise it starts when RemoveDependency causes the dependency counter to reach 0.

+ +

Implements JobSystem.

+ +
+
+ +

◆ DestroyBarrier()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystemSingleThreaded::DestroyBarrier (BarrierinBarrier)
+
+overridevirtual
+
+ +

Destroy a barrier when it is no longer used. The barrier should be empty at this point.

+ +

Implements JobSystem.

+ +
+
+ +

◆ FreeJob()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystemSingleThreaded::FreeJob (JobinJob)
+
+overrideprotectedvirtual
+
+ +

Frees a job.

+ +

Implements JobSystem.

+ +
+
+ +

◆ GetMaxConcurrency()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int JobSystemSingleThreaded::GetMaxConcurrency () const
+
+inlineoverridevirtual
+
+ +

Get maximum number of concurrently executing jobs.

+ +

Implements JobSystem.

+ +
+
+ +

◆ Init()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN void JobSystemSingleThreaded::Init (uint inMaxJobs)
+
+

Initialize the job system

Parameters
+ + +
inMaxJobsMax number of jobs that can be allocated at any time
+
+
+ +
+
+ +

◆ QueueJob()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystemSingleThreaded::QueueJob (JobinJob)
+
+overrideprotectedvirtual
+
+ +

Adds a job to the job queue.

+ +

Implements JobSystem.

+ +
+
+ +

◆ QueueJobs()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void JobSystemSingleThreaded::QueueJobs (Job ** inJobs,
uint inNumJobs 
)
+
+overrideprotectedvirtual
+
+ +

Adds a number of jobs at once to the job queue.

+ +

Implements JobSystem.

+ +
+
+ +

◆ WaitForJobs()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystemSingleThreaded::WaitForJobs (BarrierinBarrier)
+
+overridevirtual
+
+ +

Wait for a set of jobs to be finished, note that only 1 thread can be waiting on a barrier at a time.

+ +

Implements JobSystem.

+ +
+
+

Member Data Documentation

+ +

◆ mDummyBarrier

+ +
+
+ + + + + +
+ + + + +
BarrierImpl JobSystemSingleThreaded::mDummyBarrier
+
+protected
+
+ +

Shared barrier since the barrier implementation does nothing.

+ +
+
+ +

◆ mJobs

+ +
+
+ + + + + +
+ + + + +
AvailableJobs JobSystemSingleThreaded::mJobs
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_job_system_single_threaded.js b/class_job_system_single_threaded.js new file mode 100644 index 000000000..bfd157498 --- /dev/null +++ b/class_job_system_single_threaded.js @@ -0,0 +1,18 @@ +var class_job_system_single_threaded = +[ + [ "BarrierImpl", "class_job_system_single_threaded_1_1_barrier_impl.html", "class_job_system_single_threaded_1_1_barrier_impl" ], + [ "AvailableJobs", "class_job_system_single_threaded.html#ae327b71ac563cfe1d2c5623511291450", null ], + [ "JobSystemSingleThreaded", "class_job_system_single_threaded.html#ac04954b37964301fdc8c569fff04a6eb", null ], + [ "JobSystemSingleThreaded", "class_job_system_single_threaded.html#a9c9d96208c3ff6d3fc601da994b56198", null ], + [ "CreateBarrier", "class_job_system_single_threaded.html#ade901f3e457e5f60b071388bc6557778", null ], + [ "CreateJob", "class_job_system_single_threaded.html#ac183b901c9be0f04f21ff493cb5b2ec7", null ], + [ "DestroyBarrier", "class_job_system_single_threaded.html#a9333b0d4cb69ade4b4045b518c77a120", null ], + [ "FreeJob", "class_job_system_single_threaded.html#abb23fc08db8c653059c7ab32e44fd7fd", null ], + [ "GetMaxConcurrency", "class_job_system_single_threaded.html#a4e99aebfb2308cf3c4bdd8e54bb71799", null ], + [ "Init", "class_job_system_single_threaded.html#a9a7a97646eaa417b4860df72739a64d9", null ], + [ "QueueJob", "class_job_system_single_threaded.html#ac3eead674dbe8a93398dcbc13b324da5", null ], + [ "QueueJobs", "class_job_system_single_threaded.html#a1581f359dde3922b6b3f973ec78c73df", null ], + [ "WaitForJobs", "class_job_system_single_threaded.html#aa491ca6999f7f2285a79b114b696e6ac", null ], + [ "mDummyBarrier", "class_job_system_single_threaded.html#a0ef030c1327f4ebf4eb7c5ef383003d1", null ], + [ "mJobs", "class_job_system_single_threaded.html#a46ee269e0b3c8933cade0f12dbd47d88", null ] +]; \ No newline at end of file diff --git a/class_job_system_single_threaded.png b/class_job_system_single_threaded.png new file mode 100644 index 000000000..d50e89da0 Binary files /dev/null and b/class_job_system_single_threaded.png differ diff --git a/class_job_system_single_threaded_1_1_barrier_impl-members.html b/class_job_system_single_threaded_1_1_barrier_impl-members.html new file mode 100644 index 000000000..ef3437259 --- /dev/null +++ b/class_job_system_single_threaded_1_1_barrier_impl-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystemSingleThreaded::BarrierImpl Member List
+
+
+ +

This is the complete list of members for JobSystemSingleThreaded::BarrierImpl, including all inherited members.

+ + + + + + + + +
AddJob(const JobHandle &inJob) overrideJobSystemSingleThreaded::BarrierImplinlinevirtual
AddJobs(const JobHandle *inHandles, uint inNumHandles) overrideJobSystemSingleThreaded::BarrierImplinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
OnJobFinished(Job *inJob) overrideJobSystemSingleThreaded::BarrierImplinlineprotectedvirtual
operator=(const NonCopyable &)=deleteNonCopyable
~Barrier()=defaultJobSystem::Barrierprotectedvirtual
+
+ + + + diff --git a/class_job_system_single_threaded_1_1_barrier_impl.html b/class_job_system_single_threaded_1_1_barrier_impl.html new file mode 100644 index 000000000..fdd777897 --- /dev/null +++ b/class_job_system_single_threaded_1_1_barrier_impl.html @@ -0,0 +1,257 @@ + + + + + + + +Jolt Physics: JobSystemSingleThreaded::BarrierImpl Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
JobSystemSingleThreaded::BarrierImpl Class Reference
+
+
+ +

#include <JobSystemSingleThreaded.h>

+
+Inheritance diagram for JobSystemSingleThreaded::BarrierImpl:
+
+
+ + +JobSystem::Barrier +NonCopyable + +
+ + + + + + + + + + + + + +

+Public Member Functions

virtual JPH_OVERRIDE_NEW_DELETE void AddJob (const JobHandle &inJob) override
 
virtual void AddJobs (const JobHandle *inHandles, uint inNumHandles) override
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + +

+Protected Member Functions

virtual void OnJobFinished (Job *inJob) override
 Called by a Job to mark that it is finished.
 
- Protected Member Functions inherited from JobSystem::Barrier
virtual ~Barrier ()=default
 Destructor, you should call JobSystem::DestroyBarrier instead of destructing this object directly.
 
+

Member Function Documentation

+ +

◆ AddJob()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual JPH_OVERRIDE_NEW_DELETE void JobSystemSingleThreaded::BarrierImpl::AddJob (const JobHandleinJob)
+
+inlineoverridevirtual
+
+

Add a job to this barrier Note that jobs can keep being added to the barrier while waiting for the barrier

+ +

Implements JobSystem::Barrier.

+ +
+
+ +

◆ AddJobs()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void JobSystemSingleThreaded::BarrierImpl::AddJobs (const JobHandleinHandles,
uint inNumHandles 
)
+
+inlineoverridevirtual
+
+

Add multiple jobs to this barrier Note that jobs can keep being added to the barrier while waiting for the barrier

+ +

Implements JobSystem::Barrier.

+ +
+
+ +

◆ OnJobFinished()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void JobSystemSingleThreaded::BarrierImpl::OnJobFinished (JobinJob)
+
+inlineoverrideprotectedvirtual
+
+ +

Called by a Job to mark that it is finished.

+ +

Implements JobSystem::Barrier.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_job_system_single_threaded_1_1_barrier_impl.js b/class_job_system_single_threaded_1_1_barrier_impl.js new file mode 100644 index 000000000..9f2339ce3 --- /dev/null +++ b/class_job_system_single_threaded_1_1_barrier_impl.js @@ -0,0 +1,6 @@ +var class_job_system_single_threaded_1_1_barrier_impl = +[ + [ "AddJob", "class_job_system_single_threaded_1_1_barrier_impl.html#a777f9190686403c3a8d0796c0fe56077", null ], + [ "AddJobs", "class_job_system_single_threaded_1_1_barrier_impl.html#a124bc867efebec305deb57931370dc28", null ], + [ "OnJobFinished", "class_job_system_single_threaded_1_1_barrier_impl.html#ad13990ca369c5cb94826dd026a447733", null ] +]; \ No newline at end of file diff --git a/class_job_system_single_threaded_1_1_barrier_impl.png b/class_job_system_single_threaded_1_1_barrier_impl.png new file mode 100644 index 000000000..5a8208d43 Binary files /dev/null and b/class_job_system_single_threaded_1_1_barrier_impl.png differ diff --git a/class_job_system_thread_pool-members.html b/class_job_system_thread_pool-members.html new file mode 100644 index 000000000..beeec88ac --- /dev/null +++ b/class_job_system_thread_pool-members.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystemThreadPool Member List
+
+
+ +

This is the complete list of members for JobSystemThreadPool, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
CreateBarrier() overrideJobSystemWithBarriervirtual
CreateJob(const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies=0) overrideJobSystemThreadPoolvirtual
DestroyBarrier(Barrier *inBarrier) overrideJobSystemWithBarriervirtual
FreeJob(Job *inJob) overrideJobSystemThreadPoolprotectedvirtual
GetMaxConcurrency() const overrideJobSystemThreadPoolinlinevirtual
Init(uint inMaxJobs, uint inMaxBarriers, int inNumThreads=-1)JobSystemThreadPool
JobSystemWithBarrier::Init(uint inMaxBarriers)JobSystemWithBarrier
InitExitFunction typedefJobSystemThreadPool
JobFunction typedefJobSystem
JobSystemThreadPool(uint inMaxJobs, uint inMaxBarriers, int inNumThreads=-1)JobSystemThreadPool
JobSystemThreadPool()=defaultJobSystemThreadPool
JobSystemWithBarrier(uint inMaxBarriers)JobSystemWithBarrierexplicit
JobSystemWithBarrier()=defaultJobSystemWithBarrier
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
QueueJob(Job *inJob) overrideJobSystemThreadPoolprotectedvirtual
QueueJobs(Job **inJobs, uint inNumJobs) overrideJobSystemThreadPoolprotectedvirtual
SetNumThreads(int inNumThreads)JobSystemThreadPoolinline
SetThreadExitFunction(const InitExitFunction &inExitFunction)JobSystemThreadPoolinline
SetThreadInitFunction(const InitExitFunction &inInitFunction)JobSystemThreadPoolinline
WaitForJobs(Barrier *inBarrier) overrideJobSystemWithBarriervirtual
~JobSystem()=defaultJobSystemvirtual
~JobSystemThreadPool() overrideJobSystemThreadPoolvirtual
~JobSystemWithBarrier() overrideJobSystemWithBarriervirtual
+
+ + + + diff --git a/class_job_system_thread_pool.html b/class_job_system_thread_pool.html new file mode 100644 index 000000000..8c2912f4b --- /dev/null +++ b/class_job_system_thread_pool.html @@ -0,0 +1,620 @@ + + + + + + + +Jolt Physics: JobSystemThreadPool Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
JobSystemThreadPool Class Referencefinal
+
+
+ +

#include <JobSystemThreadPool.h>

+
+Inheritance diagram for JobSystemThreadPool:
+
+
+ + +JobSystemWithBarrier +JobSystem +NonCopyable + +
+ + + + + + + + + +

+Public Types

using InitExitFunction = function< void(int)>
 Functions to call when a thread is initialized or exits, must be set before calling Init()
 
- Public Types inherited from JobSystem
using JobFunction = function< void()>
 Main function of the job.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE JobSystemThreadPool (uint inMaxJobs, uint inMaxBarriers, int inNumThreads=-1)
 
 JobSystemThreadPool ()=default
 
virtual ~JobSystemThreadPool () override
 
void SetThreadInitFunction (const InitExitFunction &inInitFunction)
 
void SetThreadExitFunction (const InitExitFunction &inExitFunction)
 
void Init (uint inMaxJobs, uint inMaxBarriers, int inNumThreads=-1)
 
virtual int GetMaxConcurrency () const override
 Get maximum number of concurrently executing jobs.
 
virtual JobHandle CreateJob (const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies=0) override
 
void SetNumThreads (int inNumThreads)
 Change the max concurrency after initialization.
 
- Public Member Functions inherited from JobSystemWithBarrier
JPH_OVERRIDE_NEW_DELETE JobSystemWithBarrier (uint inMaxBarriers)
 
 JobSystemWithBarrier ()=default
 
virtual ~JobSystemWithBarrier () override
 
void Init (uint inMaxBarriers)
 
virtual BarrierCreateBarrier () override
 Create a new barrier, used to wait on jobs.
 
virtual void DestroyBarrier (Barrier *inBarrier) override
 Destroy a barrier when it is no longer used. The barrier should be empty at this point.
 
virtual void WaitForJobs (Barrier *inBarrier) override
 Wait for a set of jobs to be finished, note that only 1 thread can be waiting on a barrier at a time.
 
- Public Member Functions inherited from JobSystem
virtual ~JobSystem ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + +

+Protected Member Functions

virtual void QueueJob (Job *inJob) override
 Adds a job to the job queue.
 
virtual void QueueJobs (Job **inJobs, uint inNumJobs) override
 Adds a number of jobs at once to the job queue.
 
virtual void FreeJob (Job *inJob) override
 Frees a job.
 
+

Detailed Description

+

Implementation of a JobSystem using a thread pool

+

Note that this is considered an example implementation. It is expected that when you integrate the physics engine into your own project that you'll provide your own implementation of the JobSystem built on top of whatever job system your project uses.

+

Member Typedef Documentation

+ +

◆ InitExitFunction

+ +
+
+ + + + +
using JobSystemThreadPool::InitExitFunction = function<void(int)>
+
+ +

Functions to call when a thread is initialized or exits, must be set before calling Init()

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ JobSystemThreadPool() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
JobSystemThreadPool::JobSystemThreadPool (uint inMaxJobs,
uint inMaxBarriers,
int inNumThreads = -1 
)
+
+

Creates a thread pool.

See also
JobSystemThreadPool::Init
+ +
+
+ +

◆ JobSystemThreadPool() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
JobSystemThreadPool::JobSystemThreadPool ()
+
+default
+
+ +
+
+ +

◆ ~JobSystemThreadPool()

+ +
+
+ + + + + +
+ + + + + + + +
JobSystemThreadPool::~JobSystemThreadPool ()
+
+overridevirtual
+
+ +
+
+

Member Function Documentation

+ +

◆ CreateJob()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JobHandle JobSystemThreadPool::CreateJob (const char * inName,
ColorArg inColor,
const JobFunctioninJobFunction,
uint32 inNumDependencies = 0 
)
+
+overridevirtual
+
+

Create a new job, the job is started immediately if inNumDependencies == 0 otherwise it starts when RemoveDependency causes the dependency counter to reach 0.

+ +

Implements JobSystem.

+ +
+
+ +

◆ FreeJob()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystemThreadPool::FreeJob (JobinJob)
+
+overrideprotectedvirtual
+
+ +

Frees a job.

+ +

Implements JobSystem.

+ +
+
+ +

◆ GetMaxConcurrency()

+ +
+
+ + + + + +
+ + + + + + + +
virtual int JobSystemThreadPool::GetMaxConcurrency () const
+
+inlineoverridevirtual
+
+ +

Get maximum number of concurrently executing jobs.

+ +

Implements JobSystem.

+ +
+
+ +

◆ Init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void JobSystemThreadPool::Init (uint inMaxJobs,
uint inMaxBarriers,
int inNumThreads = -1 
)
+
+

Initialize the thread pool

Parameters
+ + + + +
inMaxJobsMax number of jobs that can be allocated at any time
inMaxBarriersMax number of barriers that can be allocated at any time
inNumThreadsNumber of threads to start (the number of concurrent jobs is 1 more because the main thread will also run jobs while waiting for a barrier to complete). Use -1 to auto detect the amount of CPU's.
+
+
+ +
+
+ +

◆ QueueJob()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystemThreadPool::QueueJob (JobinJob)
+
+overrideprotectedvirtual
+
+ +

Adds a job to the job queue.

+ +

Implements JobSystem.

+ +
+
+ +

◆ QueueJobs()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void JobSystemThreadPool::QueueJobs (Job ** inJobs,
uint inNumJobs 
)
+
+overrideprotectedvirtual
+
+ +

Adds a number of jobs at once to the job queue.

+ +

Implements JobSystem.

+ +
+
+ +

◆ SetNumThreads()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystemThreadPool::SetNumThreads (int inNumThreads)
+
+inline
+
+ +

Change the max concurrency after initialization.

+ +
+
+ +

◆ SetThreadExitFunction()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystemThreadPool::SetThreadExitFunction (const InitExitFunctioninExitFunction)
+
+inline
+
+ +
+
+ +

◆ SetThreadInitFunction()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystemThreadPool::SetThreadInitFunction (const InitExitFunctioninInitFunction)
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_job_system_thread_pool.js b/class_job_system_thread_pool.js new file mode 100644 index 000000000..2b49b1e17 --- /dev/null +++ b/class_job_system_thread_pool.js @@ -0,0 +1,16 @@ +var class_job_system_thread_pool = +[ + [ "InitExitFunction", "class_job_system_thread_pool.html#a380fb336206bb8188b5a68979ac432ab", null ], + [ "JobSystemThreadPool", "class_job_system_thread_pool.html#adaccd4fc1faa23f3883c2d16e32d0382", null ], + [ "JobSystemThreadPool", "class_job_system_thread_pool.html#acf4a8888977261556ec87fea4ceb64aa", null ], + [ "~JobSystemThreadPool", "class_job_system_thread_pool.html#a56f9475443e5598d7176d9b94da6bdff", null ], + [ "CreateJob", "class_job_system_thread_pool.html#aa345080efb7aec00011c102b37988fa3", null ], + [ "FreeJob", "class_job_system_thread_pool.html#af916eac26591613c671484a3b60ab047", null ], + [ "GetMaxConcurrency", "class_job_system_thread_pool.html#ad9d1ead2ffc5ab1ec9aa6e06948c98ac", null ], + [ "Init", "class_job_system_thread_pool.html#ad8d40e63f28b99fcffdbb2e237864482", null ], + [ "QueueJob", "class_job_system_thread_pool.html#ab915a93f53fed71c48afb2fdf0d40910", null ], + [ "QueueJobs", "class_job_system_thread_pool.html#a60fe80b85a7711b87c51983d5fb5eb4a", null ], + [ "SetNumThreads", "class_job_system_thread_pool.html#a4b7f3271d9bd98562563d4dfcaa40c9d", null ], + [ "SetThreadExitFunction", "class_job_system_thread_pool.html#a2b29fcac624eeac4e5219158ef0c4912", null ], + [ "SetThreadInitFunction", "class_job_system_thread_pool.html#a7c1157b283998781be0e2164e5639ba3", null ] +]; \ No newline at end of file diff --git a/class_job_system_thread_pool.png b/class_job_system_thread_pool.png new file mode 100644 index 000000000..e5bf6c0be Binary files /dev/null and b/class_job_system_thread_pool.png differ diff --git a/class_job_system_with_barrier-members.html b/class_job_system_with_barrier-members.html new file mode 100644 index 000000000..ee6337298 --- /dev/null +++ b/class_job_system_with_barrier-members.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
JobSystemWithBarrier Member List
+
+
+ +

This is the complete list of members for JobSystemWithBarrier, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
CreateBarrier() overrideJobSystemWithBarriervirtual
CreateJob(const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies=0)=0JobSystempure virtual
DestroyBarrier(Barrier *inBarrier) overrideJobSystemWithBarriervirtual
FreeJob(Job *inJob)=0JobSystemprotectedpure virtual
GetMaxConcurrency() const =0JobSystempure virtual
Init(uint inMaxBarriers)JobSystemWithBarrier
JobFunction typedefJobSystem
JobSystemWithBarrier(uint inMaxBarriers)JobSystemWithBarrierexplicit
JobSystemWithBarrier()=defaultJobSystemWithBarrier
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
QueueJob(Job *inJob)=0JobSystemprotectedpure virtual
QueueJobs(Job **inJobs, uint inNumJobs)=0JobSystemprotectedpure virtual
WaitForJobs(Barrier *inBarrier) overrideJobSystemWithBarriervirtual
~JobSystem()=defaultJobSystemvirtual
~JobSystemWithBarrier() overrideJobSystemWithBarriervirtual
+
+ + + + diff --git a/class_job_system_with_barrier.html b/class_job_system_with_barrier.html new file mode 100644 index 000000000..9df038838 --- /dev/null +++ b/class_job_system_with_barrier.html @@ -0,0 +1,391 @@ + + + + + + + +Jolt Physics: JobSystemWithBarrier Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
JobSystemWithBarrier Class Reference
+
+
+ +

#include <JobSystemWithBarrier.h>

+
+Inheritance diagram for JobSystemWithBarrier:
+
+
+ + +JobSystem +NonCopyable +JobSystemThreadPool + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE JobSystemWithBarrier (uint inMaxBarriers)
 
 JobSystemWithBarrier ()=default
 
virtual ~JobSystemWithBarrier () override
 
void Init (uint inMaxBarriers)
 
virtual BarrierCreateBarrier () override
 Create a new barrier, used to wait on jobs.
 
virtual void DestroyBarrier (Barrier *inBarrier) override
 Destroy a barrier when it is no longer used. The barrier should be empty at this point.
 
virtual void WaitForJobs (Barrier *inBarrier) override
 Wait for a set of jobs to be finished, note that only 1 thread can be waiting on a barrier at a time.
 
- Public Member Functions inherited from JobSystem
virtual ~JobSystem ()=default
 Destructor.
 
virtual int GetMaxConcurrency () const =0
 Get maximum number of concurrently executing jobs.
 
virtual JobHandle CreateJob (const char *inName, ColorArg inColor, const JobFunction &inJobFunction, uint32 inNumDependencies=0)=0
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from JobSystem
using JobFunction = function< void()>
 Main function of the job.
 
- Protected Member Functions inherited from JobSystem
virtual void QueueJob (Job *inJob)=0
 Adds a job to the job queue.
 
virtual void QueueJobs (Job **inJobs, uint inNumJobs)=0
 Adds a number of jobs at once to the job queue.
 
virtual void FreeJob (Job *inJob)=0
 Frees a job.
 
+

Detailed Description

+

Implementation of the Barrier class for a JobSystem

+

This class can be used to make it easier to create a new JobSystem implementation that integrates with your own job system. It will implement all functionality relating to barriers, so the only functions that are left to be implemented are:

+ +

See instructions in JobSystem for more information on how to implement these.

+

Constructor & Destructor Documentation

+ +

◆ JobSystemWithBarrier() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JobSystemWithBarrier::JobSystemWithBarrier (uint inMaxBarriers)
+
+explicit
+
+

Constructs barriers

See also
JobSystemWithBarrier::Init
+ +
+
+ +

◆ JobSystemWithBarrier() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
JobSystemWithBarrier::JobSystemWithBarrier ()
+
+default
+
+ +
+
+ +

◆ ~JobSystemWithBarrier()

+ +
+
+ + + + + +
+ + + + + + + +
JobSystemWithBarrier::~JobSystemWithBarrier ()
+
+overridevirtual
+
+ +
+
+

Member Function Documentation

+ +

◆ CreateBarrier()

+ +
+
+ + + + + +
+ + + + + + + +
JobSystem::Barrier * JobSystemWithBarrier::CreateBarrier ()
+
+overridevirtual
+
+ +

Create a new barrier, used to wait on jobs.

+ +

Implements JobSystem.

+ +
+
+ +

◆ DestroyBarrier()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystemWithBarrier::DestroyBarrier (BarrierinBarrier)
+
+overridevirtual
+
+ +

Destroy a barrier when it is no longer used. The barrier should be empty at this point.

+ +

Implements JobSystem.

+ +
+
+ +

◆ Init()

+ +
+
+ + + + + + + + +
void JobSystemWithBarrier::Init (uint inMaxBarriers)
+
+

Initialize the barriers

Parameters
+ + +
inMaxBarriersMax number of barriers that can be allocated at any time
+
+
+ +
+
+ +

◆ WaitForJobs()

+ +
+
+ + + + + +
+ + + + + + + + +
void JobSystemWithBarrier::WaitForJobs (BarrierinBarrier)
+
+overridevirtual
+
+ +

Wait for a set of jobs to be finished, note that only 1 thread can be waiting on a barrier at a time.

+ +

Implements JobSystem.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_job_system_with_barrier.js b/class_job_system_with_barrier.js new file mode 100644 index 000000000..acb987426 --- /dev/null +++ b/class_job_system_with_barrier.js @@ -0,0 +1,10 @@ +var class_job_system_with_barrier = +[ + [ "JobSystemWithBarrier", "class_job_system_with_barrier.html#a8bb3d115433cfb6bb59eea3105e1c8e1", null ], + [ "JobSystemWithBarrier", "class_job_system_with_barrier.html#aaf97f3f021e97a501e5383f55c3625e6", null ], + [ "~JobSystemWithBarrier", "class_job_system_with_barrier.html#a7d3ef17ce10d2556e776375bef948b75", null ], + [ "CreateBarrier", "class_job_system_with_barrier.html#a19401113c3246594dd83bc4563823ec5", null ], + [ "DestroyBarrier", "class_job_system_with_barrier.html#a4827161974dbd03dff9c84424d75107e", null ], + [ "Init", "class_job_system_with_barrier.html#a07c53b2eecf2984531affd3867815214", null ], + [ "WaitForJobs", "class_job_system_with_barrier.html#af33b27708e9ab2b343a0658cf14efe56", null ] +]; \ No newline at end of file diff --git a/class_job_system_with_barrier.png b/class_job_system_with_barrier.png new file mode 100644 index 000000000..849b6c4fb Binary files /dev/null and b/class_job_system_with_barrier.png differ diff --git a/class_l_f_h_m_allocator-members.html b/class_l_f_h_m_allocator-members.html new file mode 100644 index 000000000..a49f14c2b --- /dev/null +++ b/class_l_f_h_m_allocator-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LFHMAllocator Member List
+
+
+ +

This is the complete list of members for LFHMAllocator, including all inherited members.

+ + + + + + + + + + +
Allocate(uint32 inBlockSize, uint32 &ioBegin, uint32 &ioEnd)LFHMAllocatorinline
Clear()LFHMAllocatorinline
FromOffset(uint32 inOffset) constLFHMAllocatorinline
Init(uint inObjectStoreSizeBytes)LFHMAllocatorinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ToOffset(const T *inData) constLFHMAllocatorinline
~LFHMAllocator()LFHMAllocatorinline
+
+ + + + diff --git a/class_l_f_h_m_allocator.html b/class_l_f_h_m_allocator.html new file mode 100644 index 000000000..f32c11e09 --- /dev/null +++ b/class_l_f_h_m_allocator.html @@ -0,0 +1,364 @@ + + + + + + + +Jolt Physics: LFHMAllocator Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LFHMAllocator Class Reference
+
+
+ +

Allocator for a lock free hash map. + More...

+ +

#include <LockFreeHashMap.h>

+
+Inheritance diagram for LFHMAllocator:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ~LFHMAllocator ()
 Destructor.
 
void Init (uint inObjectStoreSizeBytes)
 
void Clear ()
 Clear all allocations.
 
void Allocate (uint32 inBlockSize, uint32 &ioBegin, uint32 &ioEnd)
 
template<class T >
uint32 ToOffset (const T *inData) const
 Convert a pointer to an offset.
 
template<class T >
T * FromOffset (uint32 inOffset) const
 Convert an offset to a pointer.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Allocator for a lock free hash map.

+

Constructor & Destructor Documentation

+ +

◆ ~LFHMAllocator()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_NAMESPACE_BEGIN LFHMAllocator::~LFHMAllocator ()
+
+inline
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Allocate()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void LFHMAllocator::Allocate (uint32 inBlockSize,
uint32ioBegin,
uint32ioEnd 
)
+
+inline
+
+

Allocate a new block of data

Parameters
+ + + + +
inBlockSizeSize of block to allocate (will potentially return a smaller block if memory is full).
ioBeginShould be the start of the first free byte in current memory block on input, will contain the start of the first free byte in allocated block on return.
ioEndShould be the byte beyond the current memory block on input, will contain the byte beyond the allocated block on return.
+
+
+ +
+
+ +

◆ Clear()

+ +
+
+ + + + + +
+ + + + + + + +
void LFHMAllocator::Clear ()
+
+inline
+
+ +

Clear all allocations.

+ +
+
+ +

◆ FromOffset()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
T * LFHMAllocator::FromOffset (uint32 inOffset) const
+
+inline
+
+ +

Convert an offset to a pointer.

+ +
+
+ +

◆ Init()

+ +
+
+ + + + + +
+ + + + + + + + +
void LFHMAllocator::Init (uint inObjectStoreSizeBytes)
+
+inline
+
+

Initialize the allocator

Parameters
+ + +
inObjectStoreSizeBytesNumber of bytes to reserve for all key value pairs
+
+
+ +
+
+ +

◆ ToOffset()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
uint32 LFHMAllocator::ToOffset (const T * inData) const
+
+inline
+
+ +

Convert a pointer to an offset.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_l_f_h_m_allocator.js b/class_l_f_h_m_allocator.js new file mode 100644 index 000000000..1f8ee11a5 --- /dev/null +++ b/class_l_f_h_m_allocator.js @@ -0,0 +1,9 @@ +var class_l_f_h_m_allocator = +[ + [ "~LFHMAllocator", "class_l_f_h_m_allocator.html#a97034c25b38fd7a1c3e3cf59b818afbb", null ], + [ "Allocate", "class_l_f_h_m_allocator.html#aca5503a8c5d7c9ac25b4f1baa89c5317", null ], + [ "Clear", "class_l_f_h_m_allocator.html#add8458530312383491f936a7147a8ce3", null ], + [ "FromOffset", "class_l_f_h_m_allocator.html#abcf9394d71567a53088ce79cf96ed0e1", null ], + [ "Init", "class_l_f_h_m_allocator.html#a9eda23a0f8dd6fac54adab81b97e7c60", null ], + [ "ToOffset", "class_l_f_h_m_allocator.html#a5b71c811049f9598a499cc58a1f2e8c0", null ] +]; \ No newline at end of file diff --git a/class_l_f_h_m_allocator.png b/class_l_f_h_m_allocator.png new file mode 100644 index 000000000..78f8f6c44 Binary files /dev/null and b/class_l_f_h_m_allocator.png differ diff --git a/class_l_f_h_m_allocator_context-members.html b/class_l_f_h_m_allocator_context-members.html new file mode 100644 index 000000000..ce59417d0 --- /dev/null +++ b/class_l_f_h_m_allocator_context-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LFHMAllocatorContext Member List
+
+
+ +

This is the complete list of members for LFHMAllocatorContext, including all inherited members.

+ + + + + + +
Allocate(uint32 inSize, uint32 inAlignment, uint32 &outWriteOffset)LFHMAllocatorContextinline
LFHMAllocatorContext(LFHMAllocator &inAllocator, uint32 inBlockSize)LFHMAllocatorContextinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
+
+ + + + diff --git a/class_l_f_h_m_allocator_context.html b/class_l_f_h_m_allocator_context.html new file mode 100644 index 000000000..c2f6727c6 --- /dev/null +++ b/class_l_f_h_m_allocator_context.html @@ -0,0 +1,245 @@ + + + + + + + +Jolt Physics: LFHMAllocatorContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LFHMAllocatorContext Class Reference
+
+
+ +

#include <LockFreeHashMap.h>

+
+Inheritance diagram for LFHMAllocatorContext:
+
+
+ + +NonCopyable +ContactConstraintManager::ContactAllocator + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

 LFHMAllocatorContext (LFHMAllocator &inAllocator, uint32 inBlockSize)
 Construct a new allocator context.
 
bool Allocate (uint32 inSize, uint32 inAlignment, uint32 &outWriteOffset)
 Allocate data block.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Allocator context object for a lock free hash map that allocates a larger memory block at once and hands it out in smaller portions. This avoids contention on the atomic LFHMAllocator::mWriteOffset.

+

Constructor & Destructor Documentation

+ +

◆ LFHMAllocatorContext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
LFHMAllocatorContext::LFHMAllocatorContext (LFHMAllocatorinAllocator,
uint32 inBlockSize 
)
+
+inline
+
+ +

Construct a new allocator context.

+ +
+
+

Member Function Documentation

+ +

◆ Allocate()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool LFHMAllocatorContext::Allocate (uint32 inSize,
uint32 inAlignment,
uint32outWriteOffset 
)
+
+inline
+
+ +

Allocate data block.

+
Parameters
+ + + + +
inSizeSize of block to allocate.
inAlignmentAlignment of block to allocate.
outWriteOffsetOffset in buffer where block is located
+
+
+
Returns
True if allocation succeeded
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_l_f_h_m_allocator_context.js b/class_l_f_h_m_allocator_context.js new file mode 100644 index 000000000..d20ea732b --- /dev/null +++ b/class_l_f_h_m_allocator_context.js @@ -0,0 +1,5 @@ +var class_l_f_h_m_allocator_context = +[ + [ "LFHMAllocatorContext", "class_l_f_h_m_allocator_context.html#a4937e72fe7c08c45687b9deb3c3dba32", null ], + [ "Allocate", "class_l_f_h_m_allocator_context.html#afc85e525f6ca72b286aea4cdf693ac7f", null ] +]; \ No newline at end of file diff --git a/class_l_f_h_m_allocator_context.png b/class_l_f_h_m_allocator_context.png new file mode 100644 index 000000000..836bbaa70 Binary files /dev/null and b/class_l_f_h_m_allocator_context.png differ diff --git a/class_large_island_splitter-members.html b/class_large_island_splitter-members.html new file mode 100644 index 000000000..01c7558da --- /dev/null +++ b/class_large_island_splitter-members.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LargeIslandSplitter Member List
+
+
+ +

This is the complete list of members for LargeIslandSplitter, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
AssignSplit(const Body *inBody1, const Body *inBody2)LargeIslandSplitter
AssignToNonParallelSplit(const Body *inBody)LargeIslandSplitter
cLargeIslandTresholdLargeIslandSplitterstatic
cNonParallelSplitIdxLargeIslandSplitterstatic
cNumSplitsLargeIslandSplitterstatic
EStatus enum nameLargeIslandSplitter
FetchNextBatch(uint &outSplitIslandIndex, uint32 *&outConstraintsBegin, uint32 *&outConstraintsEnd, uint32 *&outContactsBegin, uint32 *&outContactsEnd, bool &outFirstIteration)LargeIslandSplitter
GetIslandIndex(uint inSplitIslandIndex) constLargeIslandSplitterinline
MarkBatchProcessed(uint inSplitIslandIndex, const uint32 *inConstraintsBegin, const uint32 *inConstraintsEnd, const uint32 *inContactsBegin, const uint32 *inContactsEnd, bool &outLastIteration, bool &outFinalBatch)LargeIslandSplitter
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Prepare(const IslandBuilder &inIslandBuilder, uint32 inNumActiveBodies, TempAllocator *inTempAllocator)LargeIslandSplitter
PrepareForSolvePositions()LargeIslandSplitter
Reset(TempAllocator *inTempAllocator)LargeIslandSplitter
SplitIsland(uint32 inIslandIndex, const IslandBuilder &inIslandBuilder, const BodyManager &inBodyManager, const ContactConstraintManager &inContactManager, Constraint **inActiveConstraints, CalculateSolverSteps &ioStepsCalculator)LargeIslandSplitter
~LargeIslandSplitter()LargeIslandSplitter
+
+ + + + diff --git a/class_large_island_splitter.html b/class_large_island_splitter.html new file mode 100644 index 000000000..d2a4e908f --- /dev/null +++ b/class_large_island_splitter.html @@ -0,0 +1,651 @@ + + + + + + + +Jolt Physics: LargeIslandSplitter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LargeIslandSplitter Class Reference
+
+
+ +

#include <LargeIslandSplitter.h>

+
+Inheritance diagram for LargeIslandSplitter:
+
+
+ + +NonCopyable + +
+ + + + + + + + +

+Classes

struct  Split
 Describes a split of constraints and contacts. More...
 
class  Splits
 Structure that describes the resulting splits from the large island splitter. More...
 
+ + + + +

+Public Types

enum class  EStatus { WaitingForBatch +, BatchRetrieved +, AllBatchesDone + }
 Status code for retrieving a batch. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ~LargeIslandSplitter ()
 Destructor.
 
void Prepare (const IslandBuilder &inIslandBuilder, uint32 inNumActiveBodies, TempAllocator *inTempAllocator)
 Prepare the island splitter by allocating memory.
 
uint AssignSplit (const Body *inBody1, const Body *inBody2)
 Assign two bodies to a split. Returns the split index.
 
uint AssignToNonParallelSplit (const Body *inBody)
 Force a body to be in a non parallel split. Returns the split index.
 
bool SplitIsland (uint32 inIslandIndex, const IslandBuilder &inIslandBuilder, const BodyManager &inBodyManager, const ContactConstraintManager &inContactManager, Constraint **inActiveConstraints, CalculateSolverSteps &ioStepsCalculator)
 Splits up an island, the created splits will be added to the list of batches and can be fetched with FetchNextBatch. Returns false if the island did not need splitting.
 
EStatus FetchNextBatch (uint &outSplitIslandIndex, uint32 *&outConstraintsBegin, uint32 *&outConstraintsEnd, uint32 *&outContactsBegin, uint32 *&outContactsEnd, bool &outFirstIteration)
 Fetch the next batch to process, returns a handle in outSplitIslandIndex that must be provided to MarkBatchProcessed when complete.
 
void MarkBatchProcessed (uint inSplitIslandIndex, const uint32 *inConstraintsBegin, const uint32 *inConstraintsEnd, const uint32 *inContactsBegin, const uint32 *inContactsEnd, bool &outLastIteration, bool &outFinalBatch)
 Mark a batch as processed.
 
uint32 GetIslandIndex (uint inSplitIslandIndex) const
 Get the island index of the island that was split for a particular split island index.
 
void PrepareForSolvePositions ()
 Prepare the island splitter for iterating over the split islands again for position solving. Marks all batches as startable.
 
void Reset (TempAllocator *inTempAllocator)
 Reset the island splitter.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + +

+Static Public Attributes

static constexpr uint cNumSplits = sizeof(SplitMask) * 8
 
static constexpr uint cNonParallelSplitIdx = cNumSplits - 1
 
static constexpr uint cLargeIslandTreshold = 128
 If the number of constraints + contacts in an island is larger than this, we will try to split the island.
 
+

Detailed Description

+

Assigns bodies in large islands to multiple groups that can run in parallel

+

This basically implements what is described in: High-Performance Physical Simulations on Next-Generation Architecture with Many Cores by Chen et al. See: http://web.eecs.umich.edu/~msmelyan/papers/physsim_onmanycore_itj.pdf section "PARALLELIZATION METHODOLOGY"

+

Member Enumeration Documentation

+ +

◆ EStatus

+ +
+
+ + + + + +
+ + + + +
enum class LargeIslandSplitter::EStatus
+
+strong
+
+ +

Status code for retrieving a batch.

+ + + + +
Enumerator
WaitingForBatch 

Work is expected to be available later.

+
BatchRetrieved 

Work is being returned.

+
AllBatchesDone 

No further work is expected from this.

+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~LargeIslandSplitter()

+ +
+
+ + + + + + + +
LargeIslandSplitter::~LargeIslandSplitter ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ AssignSplit()

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint LargeIslandSplitter::AssignSplit (const BodyinBody1,
const BodyinBody2 
)
+
+ +

Assign two bodies to a split. Returns the split index.

+ +
+
+ +

◆ AssignToNonParallelSplit()

+ +
+
+ + + + + + + + +
uint LargeIslandSplitter::AssignToNonParallelSplit (const BodyinBody)
+
+ +

Force a body to be in a non parallel split. Returns the split index.

+ +
+
+ +

◆ FetchNextBatch()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LargeIslandSplitter::EStatus LargeIslandSplitter::FetchNextBatch (uintoutSplitIslandIndex,
uint32 *& outConstraintsBegin,
uint32 *& outConstraintsEnd,
uint32 *& outContactsBegin,
uint32 *& outContactsEnd,
bool & outFirstIteration 
)
+
+ +

Fetch the next batch to process, returns a handle in outSplitIslandIndex that must be provided to MarkBatchProcessed when complete.

+ +
+
+ +

◆ GetIslandIndex()

+ +
+
+ + + + + +
+ + + + + + + + +
uint32 LargeIslandSplitter::GetIslandIndex (uint inSplitIslandIndex) const
+
+inline
+
+ +

Get the island index of the island that was split for a particular split island index.

+ +
+
+ +

◆ MarkBatchProcessed()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void LargeIslandSplitter::MarkBatchProcessed (uint inSplitIslandIndex,
const uint32inConstraintsBegin,
const uint32inConstraintsEnd,
const uint32inContactsBegin,
const uint32inContactsEnd,
bool & outLastIteration,
bool & outFinalBatch 
)
+
+ +

Mark a batch as processed.

+ +
+
+ +

◆ Prepare()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void LargeIslandSplitter::Prepare (const IslandBuilderinIslandBuilder,
uint32 inNumActiveBodies,
TempAllocatorinTempAllocator 
)
+
+ +

Prepare the island splitter by allocating memory.

+ +
+
+ +

◆ PrepareForSolvePositions()

+ +
+
+ + + + + + + +
void LargeIslandSplitter::PrepareForSolvePositions ()
+
+ +

Prepare the island splitter for iterating over the split islands again for position solving. Marks all batches as startable.

+ +
+
+ +

◆ Reset()

+ +
+
+ + + + + + + + +
void LargeIslandSplitter::Reset (TempAllocatorinTempAllocator)
+
+ +

Reset the island splitter.

+ +
+
+ +

◆ SplitIsland()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool LargeIslandSplitter::SplitIsland (uint32 inIslandIndex,
const IslandBuilderinIslandBuilder,
const BodyManagerinBodyManager,
const ContactConstraintManagerinContactManager,
Constraint ** inActiveConstraints,
CalculateSolverStepsioStepsCalculator 
)
+
+ +

Splits up an island, the created splits will be added to the list of batches and can be fetched with FetchNextBatch. Returns false if the island did not need splitting.

+ +
+
+

Member Data Documentation

+ +

◆ cLargeIslandTreshold

+ +
+
+ + + + + +
+ + + + +
constexpr uint LargeIslandSplitter::cLargeIslandTreshold = 128
+
+staticconstexpr
+
+ +

If the number of constraints + contacts in an island is larger than this, we will try to split the island.

+ +
+
+ +

◆ cNonParallelSplitIdx

+ +
+
+ + + + + +
+ + + + +
constexpr uint LargeIslandSplitter::cNonParallelSplitIdx = cNumSplits - 1
+
+staticconstexpr
+
+ +
+
+ +

◆ cNumSplits

+ +
+
+ + + + + +
+ + + + +
constexpr uint LargeIslandSplitter::cNumSplits = sizeof(SplitMask) * 8
+
+staticconstexpr
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_large_island_splitter.js b/class_large_island_splitter.js new file mode 100644 index 000000000..36eb797fa --- /dev/null +++ b/class_large_island_splitter.js @@ -0,0 +1,20 @@ +var class_large_island_splitter = +[ + [ "Split", "struct_large_island_splitter_1_1_split.html", "struct_large_island_splitter_1_1_split" ], + [ "Splits", "class_large_island_splitter_1_1_splits.html", "class_large_island_splitter_1_1_splits" ], + [ "EStatus", "class_large_island_splitter.html#aa7b284b561bd630d6d288bb706439f68", [ + [ "WaitingForBatch", "class_large_island_splitter.html#aa7b284b561bd630d6d288bb706439f68a01811fa00be6bc53249ea970efb0cc9f", null ], + [ "BatchRetrieved", "class_large_island_splitter.html#aa7b284b561bd630d6d288bb706439f68a39b684c3a6067a4e201699e906bd4af1", null ], + [ "AllBatchesDone", "class_large_island_splitter.html#aa7b284b561bd630d6d288bb706439f68a6d9a123e6f06ce621f7ad5f18f9392c4", null ] + ] ], + [ "~LargeIslandSplitter", "class_large_island_splitter.html#a6453331c5fb852bb201b04f14dc9a281", null ], + [ "AssignSplit", "class_large_island_splitter.html#abdd73c85801b06752d297cf36df1b44f", null ], + [ "AssignToNonParallelSplit", "class_large_island_splitter.html#a1b2ef7ebff94911ee008f25f6c0c741b", null ], + [ "FetchNextBatch", "class_large_island_splitter.html#a3f35114156b5519b85f82988fe3944b9", null ], + [ "GetIslandIndex", "class_large_island_splitter.html#a9c0c434f77d1e58d2fce4fbe9247236e", null ], + [ "MarkBatchProcessed", "class_large_island_splitter.html#a2934ec09e8492356eab6360ba6091fb4", null ], + [ "Prepare", "class_large_island_splitter.html#a6423724ea978d94f3faff78bb5a5965d", null ], + [ "PrepareForSolvePositions", "class_large_island_splitter.html#acf4099c9cd655a77a1c7331724608d22", null ], + [ "Reset", "class_large_island_splitter.html#ac5d0857609c5c1375dd9cd78a5f6148a", null ], + [ "SplitIsland", "class_large_island_splitter.html#a0e0435f6f000b574ec4e9649400f38cd", null ] +]; \ No newline at end of file diff --git a/class_large_island_splitter.png b/class_large_island_splitter.png new file mode 100644 index 000000000..abee82cae Binary files /dev/null and b/class_large_island_splitter.png differ diff --git a/class_large_island_splitter_1_1_splits-members.html b/class_large_island_splitter_1_1_splits-members.html new file mode 100644 index 000000000..108517640 --- /dev/null +++ b/class_large_island_splitter_1_1_splits-members.html @@ -0,0 +1,140 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LargeIslandSplitter::Splits Member List
+
+
+ +

This is the complete list of members for LargeIslandSplitter::Splits, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
EIterationStatus enum nameLargeIslandSplitter::Splits
FetchNextBatch(uint32 &outConstraintsBegin, uint32 &outConstraintsEnd, uint32 &outContactsBegin, uint32 &outContactsEnd, bool &outFirstIteration)LargeIslandSplitter::Splits
GetConstraintsInSplit(uint inSplitIndex, uint32 &outConstraintsBegin, uint32 &outConstraintsEnd) constLargeIslandSplitter::Splitsinline
GetContactsInSplit(uint inSplitIndex, uint32 &outContactsBegin, uint32 &outContactsEnd) constLargeIslandSplitter::Splitsinline
GetNumSplits() constLargeIslandSplitter::Splitsinline
MarkBatchProcessed(uint inNumProcessed, bool &outLastIteration, bool &outFinalBatch)LargeIslandSplitter::Splits
mIslandIndexLargeIslandSplitter::Splits
mItemsProcessedLargeIslandSplitter::Splits
mNumIterationsLargeIslandSplitter::Splits
mNumPositionStepsLargeIslandSplitter::Splits
mNumSplitsLargeIslandSplitter::Splits
mNumVelocityStepsLargeIslandSplitter::Splits
mSplitsLargeIslandSplitter::Splits
mStatusLargeIslandSplitter::Splits
ResetStatus()LargeIslandSplitter::Splitsinline
sGetItem(uint64 inStatus)LargeIslandSplitter::Splitsinlinestatic
sGetIteration(uint64 inStatus)LargeIslandSplitter::Splitsinlinestatic
sGetSplit(uint64 inStatus)LargeIslandSplitter::Splitsinlinestatic
StartFirstBatch()LargeIslandSplitter::Splitsinline
StatusItemMask enum valueLargeIslandSplitter::Splits
StatusIterationMask enum valueLargeIslandSplitter::Splits
StatusIterationShift enum valueLargeIslandSplitter::Splits
StatusSplitMask enum valueLargeIslandSplitter::Splits
StatusSplitShift enum valueLargeIslandSplitter::Splits
+
+ + + + diff --git a/class_large_island_splitter_1_1_splits.html b/class_large_island_splitter_1_1_splits.html new file mode 100644 index 000000000..3a4aa1546 --- /dev/null +++ b/class_large_island_splitter_1_1_splits.html @@ -0,0 +1,679 @@ + + + + + + + +Jolt Physics: LargeIslandSplitter::Splits Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LargeIslandSplitter::Splits Class Reference
+
+
+ +

Structure that describes the resulting splits from the large island splitter. + More...

+ +

#include <LargeIslandSplitter.h>

+ + + + +

+Public Types

enum  EIterationStatus : uint64 {
+  StatusIterationMask = 0xffff000000000000 +, StatusIterationShift = 48 +, StatusSplitMask = 0x0000ffff00000000 +, StatusSplitShift = 32 +,
+  StatusItemMask = 0x00000000ffffffff +
+ }
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

uint GetNumSplits () const
 
void GetConstraintsInSplit (uint inSplitIndex, uint32 &outConstraintsBegin, uint32 &outConstraintsEnd) const
 
void GetContactsInSplit (uint inSplitIndex, uint32 &outContactsBegin, uint32 &outContactsEnd) const
 
void ResetStatus ()
 Reset current status so that no work can be picked up from this split.
 
void StartFirstBatch ()
 Make the first batch available to other threads.
 
EStatus FetchNextBatch (uint32 &outConstraintsBegin, uint32 &outConstraintsEnd, uint32 &outContactsBegin, uint32 &outContactsEnd, bool &outFirstIteration)
 Fetch the next batch to process.
 
void MarkBatchProcessed (uint inNumProcessed, bool &outLastIteration, bool &outFinalBatch)
 Mark a batch as processed.
 
+ + + + + + + +

+Static Public Member Functions

static int sGetIteration (uint64 inStatus)
 
static uint sGetSplit (uint64 inStatus)
 
static uint sGetItem (uint64 inStatus)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Split mSplits [cNumSplits]
 Data per split.
 
uint32 mIslandIndex
 Index of the island that was split.
 
uint mNumSplits
 Number of splits that were created (excluding the non-parallel split)
 
int mNumIterations
 Number of iterations to do.
 
int mNumVelocitySteps
 Number of velocity steps to do (cached for 2nd sub step)
 
int mNumPositionSteps
 Number of position steps to do.
 
atomic< uint64mStatus
 Status of the split, see EIterationStatus.
 
atomic< uintmItemsProcessed
 Number of items that have been marked as processed.
 
+

Detailed Description

+

Structure that describes the resulting splits from the large island splitter.

+

Member Enumeration Documentation

+ +

◆ EIterationStatus

+ +
+
+ + + + + + +
Enumerator
StatusIterationMask 
StatusIterationShift 
StatusSplitMask 
StatusSplitShift 
StatusItemMask 
+ +
+
+

Member Function Documentation

+ +

◆ FetchNextBatch()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN LargeIslandSplitter::EStatus LargeIslandSplitter::Splits::FetchNextBatch (uint32outConstraintsBegin,
uint32outConstraintsEnd,
uint32outContactsBegin,
uint32outContactsEnd,
bool & outFirstIteration 
)
+
+ +

Fetch the next batch to process.

+ +
+
+ +

◆ GetConstraintsInSplit()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void LargeIslandSplitter::Splits::GetConstraintsInSplit (uint inSplitIndex,
uint32outConstraintsBegin,
uint32outConstraintsEnd 
) const
+
+inline
+
+ +
+
+ +

◆ GetContactsInSplit()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void LargeIslandSplitter::Splits::GetContactsInSplit (uint inSplitIndex,
uint32outContactsBegin,
uint32outContactsEnd 
) const
+
+inline
+
+ +
+
+ +

◆ GetNumSplits()

+ +
+
+ + + + + +
+ + + + + + + +
uint LargeIslandSplitter::Splits::GetNumSplits () const
+
+inline
+
+ +
+
+ +

◆ MarkBatchProcessed()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void LargeIslandSplitter::Splits::MarkBatchProcessed (uint inNumProcessed,
bool & outLastIteration,
bool & outFinalBatch 
)
+
+ +

Mark a batch as processed.

+ +
+
+ +

◆ ResetStatus()

+ +
+
+ + + + + +
+ + + + + + + +
void LargeIslandSplitter::Splits::ResetStatus ()
+
+inline
+
+ +

Reset current status so that no work can be picked up from this split.

+ +
+
+ +

◆ sGetItem()

+ +
+
+ + + + + +
+ + + + + + + + +
static uint LargeIslandSplitter::Splits::sGetItem (uint64 inStatus)
+
+inlinestatic
+
+ +
+
+ +

◆ sGetIteration()

+ +
+
+ + + + + +
+ + + + + + + + +
static int LargeIslandSplitter::Splits::sGetIteration (uint64 inStatus)
+
+inlinestatic
+
+ +
+
+ +

◆ sGetSplit()

+ +
+
+ + + + + +
+ + + + + + + + +
static uint LargeIslandSplitter::Splits::sGetSplit (uint64 inStatus)
+
+inlinestatic
+
+ +
+
+ +

◆ StartFirstBatch()

+ +
+
+ + + + + +
+ + + + + + + +
void LargeIslandSplitter::Splits::StartFirstBatch ()
+
+inline
+
+ +

Make the first batch available to other threads.

+ +
+
+

Member Data Documentation

+ +

◆ mIslandIndex

+ +
+
+ + + + +
uint32 LargeIslandSplitter::Splits::mIslandIndex
+
+ +

Index of the island that was split.

+ +
+
+ +

◆ mItemsProcessed

+ +
+
+ + + + +
atomic<uint> LargeIslandSplitter::Splits::mItemsProcessed
+
+ +

Number of items that have been marked as processed.

+ +
+
+ +

◆ mNumIterations

+ +
+
+ + + + +
int LargeIslandSplitter::Splits::mNumIterations
+
+ +

Number of iterations to do.

+ +
+
+ +

◆ mNumPositionSteps

+ +
+
+ + + + +
int LargeIslandSplitter::Splits::mNumPositionSteps
+
+ +

Number of position steps to do.

+ +
+
+ +

◆ mNumSplits

+ +
+
+ + + + +
uint LargeIslandSplitter::Splits::mNumSplits
+
+ +

Number of splits that were created (excluding the non-parallel split)

+ +
+
+ +

◆ mNumVelocitySteps

+ +
+
+ + + + +
int LargeIslandSplitter::Splits::mNumVelocitySteps
+
+ +

Number of velocity steps to do (cached for 2nd sub step)

+ +
+
+ +

◆ mSplits

+ +
+
+ + + + +
Split LargeIslandSplitter::Splits::mSplits[cNumSplits]
+
+ +

Data per split.

+ +
+
+ +

◆ mStatus

+ +
+
+ + + + +
atomic<uint64> LargeIslandSplitter::Splits::mStatus
+
+ +

Status of the split, see EIterationStatus.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_large_island_splitter_1_1_splits.js b/class_large_island_splitter_1_1_splits.js new file mode 100644 index 000000000..249df2e76 --- /dev/null +++ b/class_large_island_splitter_1_1_splits.js @@ -0,0 +1,25 @@ +var class_large_island_splitter_1_1_splits = +[ + [ "EIterationStatus", "class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005cc", [ + [ "StatusIterationMask", "class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005ccaca28e7abb484f9fb2cba5125cde7b3b4", null ], + [ "StatusIterationShift", "class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005ccacb5adee1be4eaa632656d84c84327343", null ], + [ "StatusSplitMask", "class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005cca5f10b6f1afc0952ac2cda6048d1ef685", null ], + [ "StatusSplitShift", "class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005ccaa6e1ccf30b354c5c1accdf92a42009f9", null ], + [ "StatusItemMask", "class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005cca6ebc6cfc716ad231b90225fd44b41a42", null ] + ] ], + [ "FetchNextBatch", "class_large_island_splitter_1_1_splits.html#a6757c784f684e5fb2ac4ce79f3c0a2f0", null ], + [ "GetConstraintsInSplit", "class_large_island_splitter_1_1_splits.html#a45545f0a9f20090f2992a09b015c494c", null ], + [ "GetContactsInSplit", "class_large_island_splitter_1_1_splits.html#a9cc12d58718a4c7da7f6ea2508e8b8fc", null ], + [ "GetNumSplits", "class_large_island_splitter_1_1_splits.html#a9a7977a12a99fe498e1ca8445eb73409", null ], + [ "MarkBatchProcessed", "class_large_island_splitter_1_1_splits.html#a44bf9c63b7a2e97e385d4fb5160735ae", null ], + [ "ResetStatus", "class_large_island_splitter_1_1_splits.html#a0acc44089e5c254ca53a07d6aa80ffc8", null ], + [ "StartFirstBatch", "class_large_island_splitter_1_1_splits.html#a42483726c98f92ac6b1c915da0fa8868", null ], + [ "mIslandIndex", "class_large_island_splitter_1_1_splits.html#a7ba0459819cd7fefc065ed06d30086ae", null ], + [ "mItemsProcessed", "class_large_island_splitter_1_1_splits.html#a39339a4cb247742be9ae64489c2758e7", null ], + [ "mNumIterations", "class_large_island_splitter_1_1_splits.html#a451c0785aed49009ee33316d5269495d", null ], + [ "mNumPositionSteps", "class_large_island_splitter_1_1_splits.html#a3da2470ccef44323ffb4fc2cf90efbf4", null ], + [ "mNumSplits", "class_large_island_splitter_1_1_splits.html#aaa044adfe3331a9c96f75921e35f44be", null ], + [ "mNumVelocitySteps", "class_large_island_splitter_1_1_splits.html#ac4a0f32e15cb93e1c6c9e6570885664b", null ], + [ "mSplits", "class_large_island_splitter_1_1_splits.html#aa3d8218f5eefc7a12e3d884f8a52034f", null ], + [ "mStatus", "class_large_island_splitter_1_1_splits.html#ab22709004602365875473ce64ee5cd22", null ] +]; \ No newline at end of file diff --git a/class_linear_curve-members.html b/class_linear_curve-members.html new file mode 100644 index 000000000..226652a0c --- /dev/null +++ b/class_linear_curve-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LinearCurve Member List
+
+
+ +

This is the complete list of members for LinearCurve, including all inherited members.

+ + + + + + + + + + + + +
AddPoint(float inX, float inY)LinearCurveinline
Clear()LinearCurveinline
GetMaxX() constLinearCurveinline
GetMinX() constLinearCurveinline
GetValue(float inX) constLinearCurve
mPointsLinearCurve
Points typedefLinearCurve
Reserve(uint inNumPoints)LinearCurveinline
RestoreBinaryState(StreamIn &inStream)LinearCurve
SaveBinaryState(StreamOut &inStream) constLinearCurve
Sort()LinearCurveinline
+
+ + + + diff --git a/class_linear_curve.html b/class_linear_curve.html new file mode 100644 index 000000000..0c3265621 --- /dev/null +++ b/class_linear_curve.html @@ -0,0 +1,449 @@ + + + + + + + +Jolt Physics: LinearCurve Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LinearCurve Class Reference
+
+
+ +

#include <LinearCurve.h>

+ + + + + +

+Classes

class  Point
 A point on the curve. More...
 
+ + + + +

+Public Types

using Points = Array< Point >
 The points on the curve, should be sorted ascending by x.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void Clear ()
 Remove all points.
 
void Reserve (uint inNumPoints)
 Reserve memory for inNumPoints points.
 
void AddPoint (float inX, float inY)
 
void Sort ()
 Sort the points on X ascending.
 
float GetMinX () const
 Get the lowest X value.
 
float GetMaxX () const
 Get the highest X value.
 
float GetValue (float inX) const
 
void SaveBinaryState (StreamOut &inStream) const
 Saves the state of this object in binary form to inStream.
 
void RestoreBinaryState (StreamIn &inStream)
 Restore the state of this object from inStream.
 
+ + + +

+Public Attributes

Points mPoints
 
+

Member Typedef Documentation

+ +

◆ Points

+ +
+
+ + + + +
using LinearCurve::Points = Array<Point>
+
+ +

The points on the curve, should be sorted ascending by x.

+ +
+
+

Member Function Documentation

+ +

◆ AddPoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void LinearCurve::AddPoint (float inX,
float inY 
)
+
+inline
+
+

Add a point to the curve. Points must be inserted in ascending X or Sort() needs to be called when all points have been added.

Parameters
+ + + +
inXX value
inYY value
+
+
+ +
+
+ +

◆ Clear()

+ +
+
+ + + + + +
+ + + + + + + +
void LinearCurve::Clear ()
+
+inline
+
+ +

Remove all points.

+ +
+
+ +

◆ GetMaxX()

+ +
+
+ + + + + +
+ + + + + + + +
float LinearCurve::GetMaxX () const
+
+inline
+
+ +

Get the highest X value.

+ +
+
+ +

◆ GetMinX()

+ +
+
+ + + + + +
+ + + + + + + +
float LinearCurve::GetMinX () const
+
+inline
+
+ +

Get the lowest X value.

+ +
+
+ +

◆ GetValue()

+ +
+
+ + + + + + + + +
float LinearCurve::GetValue (float inX) const
+
+

Sample value on the curve

Parameters
+ + +
inXX value to sample at
+
+
+
Returns
Interpolated Y value
+ +
+
+ +

◆ Reserve()

+ +
+
+ + + + + +
+ + + + + + + + +
void LinearCurve::Reserve (uint inNumPoints)
+
+inline
+
+ +

Reserve memory for inNumPoints points.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void LinearCurve::RestoreBinaryState (StreamIninStream)
+
+ +

Restore the state of this object from inStream.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void LinearCurve::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the state of this object in binary form to inStream.

+ +
+
+ +

◆ Sort()

+ +
+
+ + + + + +
+ + + + + + + +
void LinearCurve::Sort ()
+
+inline
+
+ +

Sort the points on X ascending.

+ +
+
+

Member Data Documentation

+ +

◆ mPoints

+ +
+
+ + + + +
Points LinearCurve::mPoints
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_linear_curve.js b/class_linear_curve.js new file mode 100644 index 000000000..00af8a41b --- /dev/null +++ b/class_linear_curve.js @@ -0,0 +1,15 @@ +var class_linear_curve = +[ + [ "Point", "class_linear_curve_1_1_point.html", "class_linear_curve_1_1_point" ], + [ "Points", "class_linear_curve.html#ac5e86231b54adb339250de6c06a77cbc", null ], + [ "AddPoint", "class_linear_curve.html#aa5b4a499837cb2a3a0c3b9b5eb618a53", null ], + [ "Clear", "class_linear_curve.html#aff2fa573a7368134091a91bd01274fca", null ], + [ "GetMaxX", "class_linear_curve.html#aa92a24bc4fff522ea56c5a0dadbf6ff4", null ], + [ "GetMinX", "class_linear_curve.html#ac23b16f88bf858f9ff79e9a94500b549", null ], + [ "GetValue", "class_linear_curve.html#a24eda4be408b24e5dfeba9bf94edb295", null ], + [ "Reserve", "class_linear_curve.html#a97a229bd7bbda997fab1f22649afcd9c", null ], + [ "RestoreBinaryState", "class_linear_curve.html#a1b1dc52c995b9c5ac2d890f01d2af11d", null ], + [ "SaveBinaryState", "class_linear_curve.html#a7e8f85b447ccb50d077a1fd61da102e0", null ], + [ "Sort", "class_linear_curve.html#ad78f856bc64b3249ffd1982a29e0178c", null ], + [ "mPoints", "class_linear_curve.html#a2d5721b04dfe7c3cb67ce8ae87ff3fe3", null ] +]; \ No newline at end of file diff --git a/class_linear_curve_1_1_point-members.html b/class_linear_curve_1_1_point-members.html new file mode 100644 index 000000000..c7d41c89d --- /dev/null +++ b/class_linear_curve_1_1_point-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LinearCurve::Point Member List
+
+
+ +

This is the complete list of members for LinearCurve::Point, including all inherited members.

+ + + +
mXLinearCurve::Point
mYLinearCurve::Point
+
+ + + + diff --git a/class_linear_curve_1_1_point.html b/class_linear_curve_1_1_point.html new file mode 100644 index 000000000..d211cdfcd --- /dev/null +++ b/class_linear_curve_1_1_point.html @@ -0,0 +1,164 @@ + + + + + + + +Jolt Physics: LinearCurve::Point Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LinearCurve::Point Class Reference
+
+
+ +

A point on the curve. + More...

+ +

#include <LinearCurve.h>

+ + + + + + +

+Public Attributes

float mX = 0.0f
 
float mY = 0.0f
 
+

Detailed Description

+

A point on the curve.

+

Member Data Documentation

+ +

◆ mX

+ +
+
+ + + + +
float LinearCurve::Point::mX = 0.0f
+
+ +
+
+ +

◆ mY

+ +
+
+ + + + +
float LinearCurve::Point::mY = 0.0f
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_linear_curve_1_1_point.js b/class_linear_curve_1_1_point.js new file mode 100644 index 000000000..61b0b66f5 --- /dev/null +++ b/class_linear_curve_1_1_point.js @@ -0,0 +1,5 @@ +var class_linear_curve_1_1_point = +[ + [ "mX", "class_linear_curve_1_1_point.html#a77d490988ee3376130ca5baa86bb1669", null ], + [ "mY", "class_linear_curve_1_1_point.html#a25487f72780ffd1b6984c8e6e5547f0c", null ] +]; \ No newline at end of file diff --git a/class_lock_free_hash_map-members.html b/class_lock_free_hash_map-members.html new file mode 100644 index 000000000..a6bfa301d --- /dev/null +++ b/class_lock_free_hash_map-members.html @@ -0,0 +1,135 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LockFreeHashMap< Key, Value > Member List
+
+
+ +

This is the complete list of members for LockFreeHashMap< Key, Value >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
begin()LockFreeHashMap< Key, Value >
cInvalidHandleLockFreeHashMap< Key, Value >static
Clear()LockFreeHashMap< Key, Value >
Create(LFHMAllocatorContext &ioContext, const Key &inKey, uint64 inKeyHash, int inExtraBytes, Params &&... inConstructorParams)LockFreeHashMap< Key, Value >inline
end()LockFreeHashMap< Key, Value >
Find(const Key &inKey, uint64 inKeyHash) constLockFreeHashMap< Key, Value >inline
FromHandle(uint32 inHandle) constLockFreeHashMap< Key, Value >inline
GetAllKeyValues(Array< const KeyValue * > &outAll) constLockFreeHashMap< Key, Value >inline
GetMaxBuckets() constLockFreeHashMap< Key, Value >inline
GetNumBuckets() constLockFreeHashMap< Key, Value >inline
Init(uint32 inMaxBuckets)LockFreeHashMap< Key, Value >
LockFreeHashMap(LFHMAllocator &inAllocator)LockFreeHashMap< Key, Value >inlineexplicit
MapType typedefLockFreeHashMap< Key, Value >
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
SetNumBuckets(uint32 inNumBuckets)LockFreeHashMap< Key, Value >
ToHandle(const KeyValue *inKeyValue) constLockFreeHashMap< Key, Value >inline
~LockFreeHashMap()LockFreeHashMap< Key, Value >
+
+ + + + diff --git a/class_lock_free_hash_map.html b/class_lock_free_hash_map.html new file mode 100644 index 000000000..95c619de4 --- /dev/null +++ b/class_lock_free_hash_map.html @@ -0,0 +1,653 @@ + + + + + + + +Jolt Physics: LockFreeHashMap< Key, Value > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LockFreeHashMap< Key, Value > Class Template Reference
+
+
+ +

#include <LockFreeHashMap.h>

+
+Inheritance diagram for LockFreeHashMap< Key, Value >:
+
+
+ + +NonCopyable + +
+ + + + + + + + +

+Classes

struct  Iterator
 Non-const iterator. More...
 
class  KeyValue
 A key / value pair that is inserted in the map. More...
 
+ + + +

+Public Types

using MapType = LockFreeHashMap< Key, Value >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 LockFreeHashMap (LFHMAllocator &inAllocator)
 Destructor.
 
 ~LockFreeHashMap ()
 
void Init (uint32 inMaxBuckets)
 
void Clear ()
 
uint32 GetNumBuckets () const
 Get the current amount of buckets that the map is using.
 
uint32 GetMaxBuckets () const
 Get the maximum amount of buckets that this map supports.
 
void SetNumBuckets (uint32 inNumBuckets)
 
template<class... Params>
KeyValueCreate (LFHMAllocatorContext &ioContext, const Key &inKey, uint64 inKeyHash, int inExtraBytes, Params &&... inConstructorParams)
 
const KeyValueFind (const Key &inKey, uint64 inKeyHash) const
 Find an element, returns null if not found.
 
uint32 ToHandle (const KeyValue *inKeyValue) const
 Get convert key value pair to uint32 handle.
 
const KeyValueFromHandle (uint32 inHandle) const
 Convert uint32 handle back to key and value.
 
void GetAllKeyValues (Array< const KeyValue * > &outAll) const
 Get all key/value pairs.
 
Iterator begin ()
 
Iterator end ()
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + +

+Static Public Attributes

static const uint32 cInvalidHandle = uint32(-1)
 Value of an invalid handle.
 
+

Detailed Description

+
template<class Key, class Value>
+class LockFreeHashMap< Key, Value >

Very simple lock free hash map that only allows insertion, retrieval and provides a fixed amount of buckets and fixed storage. Note: This class currently assumes key and value are simple types that need no calls to the destructor.

+

Member Typedef Documentation

+ +

◆ MapType

+ +
+
+
+template<class Key , class Value >
+ + + + +
using LockFreeHashMap< Key, Value >::MapType = LockFreeHashMap<Key, Value>
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ LockFreeHashMap()

+ +
+
+
+template<class Key , class Value >
+ + + + + +
+ + + + + + + + +
LockFreeHashMap< Key, Value >::LockFreeHashMap (LFHMAllocatorinAllocator)
+
+inlineexplicit
+
+ +

Destructor.

+ +
+
+ +

◆ ~LockFreeHashMap()

+ +
+
+
+template<class Key , class Value >
+ + + + + + + +
LockFreeHashMap< Key, Value >::~LockFreeHashMap ()
+
+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+
+template<class Key , class Value >
+ + + + + + + +
LockFreeHashMap< Key, Value >::Iterator LockFreeHashMap< Key, Value >::begin ()
+
+

Iterate over the map, note that it is not safe to do this in parallel to Clear(). It is safe to do this while adding elements to the map, but newly added elements may or may not be returned by the iterator.

+ +
+
+ +

◆ Clear()

+ +
+
+
+template<class Key , class Value >
+ + + + + + + +
void LockFreeHashMap< Key, Value >::Clear ()
+
+

Remove all elements. Note that this cannot happen simultaneously with adding new elements.

+ +
+
+ +

◆ Create()

+ +
+
+
+template<class Key , class Value >
+
+template<class... Params>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LockFreeHashMap< Key, Value >::KeyValue * LockFreeHashMap< Key, Value >::Create (LFHMAllocatorContextioContext,
const Key & inKey,
uint64 inKeyHash,
int inExtraBytes,
Params &&... inConstructorParams 
)
+
+inline
+
+

Insert a new element, returns null if map full. Multiple threads can be inserting in the map at the same time.

+ +
+
+ +

◆ end()

+ +
+
+
+template<class Key , class Value >
+ + + + + + + +
LockFreeHashMap< Key, Value >::Iterator LockFreeHashMap< Key, Value >::end ()
+
+ +
+
+ +

◆ Find()

+ +
+
+
+template<class Key , class Value >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
const LockFreeHashMap< Key, Value >::KeyValue * LockFreeHashMap< Key, Value >::Find (const Key & inKey,
uint64 inKeyHash 
) const
+
+inline
+
+ +

Find an element, returns null if not found.

+ +
+
+ +

◆ FromHandle()

+ +
+
+
+template<class Key , class Value >
+ + + + + +
+ + + + + + + + +
const LockFreeHashMap< Key, Value >::KeyValue * LockFreeHashMap< Key, Value >::FromHandle (uint32 inHandle) const
+
+inline
+
+ +

Convert uint32 handle back to key and value.

+ +
+
+ +

◆ GetAllKeyValues()

+ +
+
+
+template<class Key , class Value >
+ + + + + +
+ + + + + + + + +
void LockFreeHashMap< Key, Value >::GetAllKeyValues (Array< const KeyValue * > & outAll) const
+
+inline
+
+ +

Get all key/value pairs.

+ +
+
+ +

◆ GetMaxBuckets()

+ +
+
+
+template<class Key , class Value >
+ + + + + +
+ + + + + + + +
uint32 LockFreeHashMap< Key, Value >::GetMaxBuckets () const
+
+inline
+
+ +

Get the maximum amount of buckets that this map supports.

+ +
+
+ +

◆ GetNumBuckets()

+ +
+
+
+template<class Key , class Value >
+ + + + + +
+ + + + + + + +
uint32 LockFreeHashMap< Key, Value >::GetNumBuckets () const
+
+inline
+
+ +

Get the current amount of buckets that the map is using.

+ +
+
+ +

◆ Init()

+ +
+
+
+template<class Key , class Value >
+ + + + + + + + +
void LockFreeHashMap< Key, Value >::Init (uint32 inMaxBuckets)
+
+

Initialization

Parameters
+ + +
inMaxBucketsMax amount of buckets to use in the hashmap. Must be power of 2.
+
+
+ +
+
+ +

◆ SetNumBuckets()

+ +
+
+
+template<class Key , class Value >
+ + + + + + + + +
void LockFreeHashMap< Key, Value >::SetNumBuckets (uint32 inNumBuckets)
+
+

Update the number of buckets. This must be done after clearing the map and cannot be done concurrently with any other operations on the map. Note that the number of buckets can never become bigger than the specified max buckets during initialization and that it must be a power of 2.

+ +
+
+ +

◆ ToHandle()

+ +
+
+
+template<class Key , class Value >
+ + + + + +
+ + + + + + + + +
uint32 LockFreeHashMap< Key, Value >::ToHandle (const KeyValueinKeyValue) const
+
+inline
+
+ +

Get convert key value pair to uint32 handle.

+ +
+
+

Member Data Documentation

+ +

◆ cInvalidHandle

+ +
+
+
+template<class Key , class Value >
+ + + + + +
+ + + + +
const uint32 LockFreeHashMap< Key, Value >::cInvalidHandle = uint32(-1)
+
+static
+
+ +

Value of an invalid handle.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_lock_free_hash_map.js b/class_lock_free_hash_map.js new file mode 100644 index 000000000..78a794f7c --- /dev/null +++ b/class_lock_free_hash_map.js @@ -0,0 +1,20 @@ +var class_lock_free_hash_map = +[ + [ "Iterator", "struct_lock_free_hash_map_1_1_iterator.html", "struct_lock_free_hash_map_1_1_iterator" ], + [ "KeyValue", "class_lock_free_hash_map_1_1_key_value.html", "class_lock_free_hash_map_1_1_key_value" ], + [ "MapType", "class_lock_free_hash_map.html#a638496ae9d7758bfb0f12b6e477647dc", null ], + [ "LockFreeHashMap", "class_lock_free_hash_map.html#a99cc8576eb24e276e64a720f51516d62", null ], + [ "~LockFreeHashMap", "class_lock_free_hash_map.html#a9b01ab8548173830e9a1652cd7c16172", null ], + [ "begin", "class_lock_free_hash_map.html#a0ecc7b5f560d02210a707b1099f8b99e", null ], + [ "Clear", "class_lock_free_hash_map.html#afe0dc35025cb64372c9aef71ee997a0d", null ], + [ "Create", "class_lock_free_hash_map.html#a9a758f6a4dbf7bb4e25bac764a948266", null ], + [ "end", "class_lock_free_hash_map.html#af90c81d993eb139aded4c89bff98998d", null ], + [ "Find", "class_lock_free_hash_map.html#abf0f1e866eba5975400db74cc3da6913", null ], + [ "FromHandle", "class_lock_free_hash_map.html#a0705a68e432c61be72d5f6fdfffb2d85", null ], + [ "GetAllKeyValues", "class_lock_free_hash_map.html#a483d330f8722f8ad6f6398b1d4d81653", null ], + [ "GetMaxBuckets", "class_lock_free_hash_map.html#a99097bb01c8c980e4fe1be3bc63c8415", null ], + [ "GetNumBuckets", "class_lock_free_hash_map.html#ab0b1ca4bac3c00813a024ed4b462e44d", null ], + [ "Init", "class_lock_free_hash_map.html#a64add1094aa66c55413b2488e8ae8d16", null ], + [ "SetNumBuckets", "class_lock_free_hash_map.html#a7c6ead3c7440e19213eac4119236964d", null ], + [ "ToHandle", "class_lock_free_hash_map.html#ae1a2bd3a51575e8353470750d0ea9f4b", null ] +]; \ No newline at end of file diff --git a/class_lock_free_hash_map.png b/class_lock_free_hash_map.png new file mode 100644 index 000000000..239c1469d Binary files /dev/null and b/class_lock_free_hash_map.png differ diff --git a/class_lock_free_hash_map_1_1_key_value-members.html b/class_lock_free_hash_map_1_1_key_value-members.html new file mode 100644 index 000000000..e37e90d19 --- /dev/null +++ b/class_lock_free_hash_map_1_1_key_value-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
LockFreeHashMap< Key, Value >::KeyValue Member List
+
+
+ +

This is the complete list of members for LockFreeHashMap< Key, Value >::KeyValue, including all inherited members.

+ + + + + +
GetKey() constLockFreeHashMap< Key, Value >::KeyValueinline
GetValue()LockFreeHashMap< Key, Value >::KeyValueinline
GetValue() constLockFreeHashMap< Key, Value >::KeyValueinline
LockFreeHashMapLockFreeHashMap< Key, Value >::KeyValuefriend
+
+ + + + diff --git a/class_lock_free_hash_map_1_1_key_value.html b/class_lock_free_hash_map_1_1_key_value.html new file mode 100644 index 000000000..cf2e044aa --- /dev/null +++ b/class_lock_free_hash_map_1_1_key_value.html @@ -0,0 +1,254 @@ + + + + + + + +Jolt Physics: LockFreeHashMap< Key, Value >::KeyValue Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
LockFreeHashMap< Key, Value >::KeyValue Class Reference
+
+
+ +

A key / value pair that is inserted in the map. + More...

+ +

#include <LockFreeHashMap.h>

+ + + + + + + + +

+Public Member Functions

const Key & GetKey () const
 
Value & GetValue ()
 
const Value & GetValue () const
 
+ + + + +

+Friends

template<class K , class V >
class LockFreeHashMap
 
+

Detailed Description

+
template<class Key, class Value>
+class LockFreeHashMap< Key, Value >::KeyValue

A key / value pair that is inserted in the map.

+

Member Function Documentation

+ +

◆ GetKey()

+ +
+
+
+template<class Key , class Value >
+ + + + + +
+ + + + + + + +
const Key & LockFreeHashMap< Key, Value >::KeyValue::GetKey () const
+
+inline
+
+ +
+
+ +

◆ GetValue() [1/2]

+ +
+
+
+template<class Key , class Value >
+ + + + + +
+ + + + + + + +
Value & LockFreeHashMap< Key, Value >::KeyValue::GetValue ()
+
+inline
+
+ +
+
+ +

◆ GetValue() [2/2]

+ +
+
+
+template<class Key , class Value >
+ + + + + +
+ + + + + + + +
const Value & LockFreeHashMap< Key, Value >::KeyValue::GetValue () const
+
+inline
+
+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ LockFreeHashMap

+ +
+
+
+template<class Key , class Value >
+
+template<class K , class V >
+ + + + + +
+ + + + +
friend class LockFreeHashMap
+
+friend
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_lock_free_hash_map_1_1_key_value.js b/class_lock_free_hash_map_1_1_key_value.js new file mode 100644 index 000000000..80db553e9 --- /dev/null +++ b/class_lock_free_hash_map_1_1_key_value.js @@ -0,0 +1,7 @@ +var class_lock_free_hash_map_1_1_key_value = +[ + [ "GetKey", "class_lock_free_hash_map_1_1_key_value.html#a0f063445f1fc087c20061ecf8ad157cb", null ], + [ "GetValue", "class_lock_free_hash_map_1_1_key_value.html#a7998c182167f381dcb2bfe6d1932bad8", null ], + [ "GetValue", "class_lock_free_hash_map_1_1_key_value.html#ae392d930ad47864c4121fbdf4444044e", null ], + [ "LockFreeHashMap", "class_lock_free_hash_map_1_1_key_value.html#a5652d2eccd527298f2252a27fbd3b489", null ] +]; \ No newline at end of file diff --git a/class_mass_properties-members.html b/class_mass_properties-members.html new file mode 100644 index 000000000..4d96e21dd --- /dev/null +++ b/class_mass_properties-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MassProperties Member List
+
+
+ +

This is the complete list of members for MassProperties, including all inherited members.

+ + + + + + + + + + + + +
DecomposePrincipalMomentsOfInertia(Mat44 &outRotation, Vec3 &outDiagonal) constMassProperties
mInertiaMassProperties
mMassMassProperties
RestoreBinaryState(StreamIn &inStream)MassProperties
Rotate(Mat44Arg inRotation)MassProperties
SaveBinaryState(StreamOut &inStream) constMassProperties
Scale(Vec3Arg inScale)MassProperties
ScaleToMass(float inMass)MassProperties
SetMassAndInertiaOfSolidBox(Vec3Arg inBoxSize, float inDensity)MassProperties
sGetEquivalentSolidBoxSize(float inMass, Vec3Arg inInertiaDiagonal)MassPropertiesstatic
Translate(Vec3Arg inTranslation)MassProperties
+
+ + + + diff --git a/class_mass_properties.html b/class_mass_properties.html new file mode 100644 index 000000000..dd6366a33 --- /dev/null +++ b/class_mass_properties.html @@ -0,0 +1,431 @@ + + + + + + + +Jolt Physics: MassProperties Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MassProperties Class Reference
+
+
+ +

Describes the mass and inertia properties of a body. Used during body construction only. + More...

+ +

#include <MassProperties.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool DecomposePrincipalMomentsOfInertia (Mat44 &outRotation, Vec3 &outDiagonal) const
 
void SetMassAndInertiaOfSolidBox (Vec3Arg inBoxSize, float inDensity)
 Set the mass and inertia of a box with edge size inBoxSize and density inDensity.
 
void ScaleToMass (float inMass)
 Set the mass and scale the inertia tensor to match the mass.
 
void Rotate (Mat44Arg inRotation)
 Rotate the inertia by 3x3 matrix inRotation.
 
void Translate (Vec3Arg inTranslation)
 Translate the inertia by a vector inTranslation.
 
void Scale (Vec3Arg inScale)
 Scale the mass and inertia by inScale, note that elements can be < 0 to flip the shape.
 
void SaveBinaryState (StreamOut &inStream) const
 Saves the state of this object in binary form to inStream.
 
void RestoreBinaryState (StreamIn &inStream)
 Restore the state of this object from inStream.
 
+ + + + +

+Static Public Member Functions

static Vec3 sGetEquivalentSolidBoxSize (float inMass, Vec3Arg inInertiaDiagonal)
 Calculates the size of the solid box that has an inertia tensor diagonal inInertiaDiagonal.
 
+ + + + + + + +

+Public Attributes

float mMass = 0.0f
 Mass of the shape (kg)
 
Mat44 mInertia = Mat44::sZero()
 Inertia tensor of the shape (kg m^2)
 
+

Detailed Description

+

Describes the mass and inertia properties of a body. Used during body construction only.

+

Member Function Documentation

+ +

◆ DecomposePrincipalMomentsOfInertia()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool MassProperties::DecomposePrincipalMomentsOfInertia (Mat44outRotation,
Vec3outDiagonal 
) const
+
+

Using eigendecomposition, decompose the inertia tensor into a diagonal matrix D and a right-handed rotation matrix R so that the inertia tensor is \(R \: D \: R^{-1}\).

See also
https://en.wikipedia.org/wiki/Moment_of_inertia section 'Principal axes'
+
Parameters
+ + + +
outRotationThe rotation matrix R
outDiagonalThe diagonal of the diagonal matrix D
+
+
+
Returns
True if successful, false if failed
+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void MassProperties::RestoreBinaryState (StreamIninStream)
+
+ +

Restore the state of this object from inStream.

+ +
+
+ +

◆ Rotate()

+ +
+
+ + + + + + + + +
void MassProperties::Rotate (Mat44Arg inRotation)
+
+ +

Rotate the inertia by 3x3 matrix inRotation.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void MassProperties::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the state of this object in binary form to inStream.

+ +
+
+ +

◆ Scale()

+ +
+
+ + + + + + + + +
void MassProperties::Scale (Vec3Arg inScale)
+
+ +

Scale the mass and inertia by inScale, note that elements can be < 0 to flip the shape.

+ +
+
+ +

◆ ScaleToMass()

+ +
+
+ + + + + + + + +
void MassProperties::ScaleToMass (float inMass)
+
+ +

Set the mass and scale the inertia tensor to match the mass.

+ +
+
+ +

◆ SetMassAndInertiaOfSolidBox()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void MassProperties::SetMassAndInertiaOfSolidBox (Vec3Arg inBoxSize,
float inDensity 
)
+
+ +

Set the mass and inertia of a box with edge size inBoxSize and density inDensity.

+ +
+
+ +

◆ sGetEquivalentSolidBoxSize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 MassProperties::sGetEquivalentSolidBoxSize (float inMass,
Vec3Arg inInertiaDiagonal 
)
+
+static
+
+ +

Calculates the size of the solid box that has an inertia tensor diagonal inInertiaDiagonal.

+ +
+
+ +

◆ Translate()

+ +
+
+ + + + + + + + +
void MassProperties::Translate (Vec3Arg inTranslation)
+
+ +

Translate the inertia by a vector inTranslation.

+ +
+
+

Member Data Documentation

+ +

◆ mInertia

+ +
+
+ + + + +
Mat44 MassProperties::mInertia = Mat44::sZero()
+
+ +

Inertia tensor of the shape (kg m^2)

+ +
+
+ +

◆ mMass

+ +
+
+ + + + +
float MassProperties::mMass = 0.0f
+
+ +

Mass of the shape (kg)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_mass_properties.js b/class_mass_properties.js new file mode 100644 index 000000000..0e2f99ca8 --- /dev/null +++ b/class_mass_properties.js @@ -0,0 +1,13 @@ +var class_mass_properties = +[ + [ "DecomposePrincipalMomentsOfInertia", "class_mass_properties.html#a37bb3a2b21209e7da35c5fbc4102d8de", null ], + [ "RestoreBinaryState", "class_mass_properties.html#ac46696a6d40a5e0b96898bb38f66e904", null ], + [ "Rotate", "class_mass_properties.html#a305b372015465387eed7b337ce84a398", null ], + [ "SaveBinaryState", "class_mass_properties.html#a31b51417175f6cd0d840d2c6bce22815", null ], + [ "Scale", "class_mass_properties.html#ada0108c75189e3eb85b7aef5de1d07d8", null ], + [ "ScaleToMass", "class_mass_properties.html#aff72522796c853cdd8b250082e15a2cf", null ], + [ "SetMassAndInertiaOfSolidBox", "class_mass_properties.html#a8e7cacca84047cc12cf6aaf9f5bf2d95", null ], + [ "Translate", "class_mass_properties.html#aaa1db421f180e9955103953b822ad22c", null ], + [ "mInertia", "class_mass_properties.html#a4772a70dff90b8dc68ff137e2590e3ef", null ], + [ "mMass", "class_mass_properties.html#adebd439d6c8df005a64cbcced1d5ec36", null ] +]; \ No newline at end of file diff --git a/class_mat44-members.html b/class_mat44-members.html new file mode 100644 index 000000000..a41beb7b2 --- /dev/null +++ b/class_mat44-members.html @@ -0,0 +1,202 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Mat44 Member List
+
+
+ +

This is the complete list of members for Mat44, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Adjointed3x3() constMat44
ArgType typedefMat44
Decompose(Vec3 &outScale) constMat44
GetAxisX() constMat44inline
GetAxisY() constMat44inline
GetAxisZ() constMat44inline
GetColumn3(uint inCol) constMat44inline
GetColumn4(uint inCol) constMat44inline
GetDeterminant3x3() constMat44
GetDiagonal3() constMat44inline
GetDiagonal4() constMat44inline
GetDirectionPreservingMatrix() constMat44inline
GetQuaternion() constMat44
GetRotation() constMat44
GetRotationSafe() constMat44
GetTranslation() constMat44inline
Inversed() constMat44
Inversed3x3() constMat44
InversedRotationTranslation() constMat44
IsClose(Mat44Arg inM2, float inMaxDistSq=1.0e-12f) constMat44
Mat44()=defaultMat44
Mat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec4Arg inC4)Mat44
Mat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec3Arg inC4)Mat44
Mat44(const Mat44 &inM2)=defaultMat44
Mat44(Type inC1, Type inC2, Type inC3, Type inC4)Mat44
Multiply3x3(Vec3Arg inV) constMat44
Multiply3x3(Mat44Arg inM) constMat44
Multiply3x3LeftTransposed(Mat44Arg inM) constMat44
Multiply3x3RightTransposed(Mat44Arg inM) constMat44
Multiply3x3Transposed(Vec3Arg inV) constMat44
operator!=(Mat44Arg inM2) constMat44inline
operator()(uint inRow, uint inColumn) constMat44inline
operator()(uint inRow, uint inColumn)Mat44inline
operator*(Mat44Arg inM) constMat44
operator*(Vec3Arg inV) constMat44
operator*(Vec4Arg inV) constMat44
operator*(float inV) constMat44
operator*Mat44friend
operator*=(float inV)Mat44
operator+(Mat44Arg inM) constMat44
operator+=(Mat44Arg inM)Mat44
operator-() constMat44
operator-(Mat44Arg inM) constMat44
operator<<Mat44friend
operator=(const Mat44 &inM2)=defaultMat44
operator==(Mat44Arg inM2) constMat44
PostScaled(Vec3Arg inScale) constMat44
PostTranslated(Vec3Arg inTranslation) constMat44
PreScaled(Vec3Arg inScale) constMat44
PreTranslated(Vec3Arg inTranslation) constMat44
sCrossProduct(Vec3Arg inV)Mat44static
SetAxisX(Vec3Arg inV)Mat44inline
SetAxisY(Vec3Arg inV)Mat44inline
SetAxisZ(Vec3Arg inV)Mat44inline
SetColumn3(uint inCol, Vec3Arg inV)Mat44inline
SetColumn4(uint inCol, Vec4Arg inV)Mat44inline
SetDiagonal3(Vec3Arg inV)Mat44inline
SetDiagonal4(Vec4Arg inV)Mat44inline
SetInversed3x3(Mat44Arg inM)Mat44
SetRotation(Mat44Arg inRotation)Mat44
SetTranslation(Vec3Arg inV)Mat44inline
sIdentity()Mat44static
sInverseRotationTranslation(QuatArg inR, Vec3Arg inT)Mat44static
sLoadFloat4x4(const Float4 *inV)Mat44static
sLoadFloat4x4Aligned(const Float4 *inV)Mat44static
sLookAt(Vec3Arg inPos, Vec3Arg inTarget, Vec3Arg inUp)Mat44static
sNaN()Mat44static
sOuterProduct(Vec3Arg inV1, Vec3Arg inV2)Mat44static
sPerspective(float inFovY, float inAspect, float inNear, float inFar)Mat44static
sQuatLeftMultiply(QuatArg inQ)Mat44static
sQuatRightMultiply(QuatArg inQ)Mat44static
sRotation(Vec3Arg inAxis, float inAngle)Mat44static
sRotation(QuatArg inQuat)Mat44static
sRotationTranslation(QuatArg inR, Vec3Arg inT)Mat44static
sRotationX(float inX)Mat44static
sRotationY(float inY)Mat44static
sRotationZ(float inZ)Mat44static
sScale(float inScale)Mat44static
sScale(Vec3Arg inV)Mat44static
StoreFloat4x4(Float4 *outV) constMat44
sTranslation(Vec3Arg inV)Mat44static
sZero()Mat44static
ToMat44() constMat44inline
Transposed() constMat44
Transposed3x3() constMat44
Type typedefMat44
+
+ + + + diff --git a/class_mat44.html b/class_mat44.html new file mode 100644 index 000000000..7260b39db --- /dev/null +++ b/class_mat44.html @@ -0,0 +1,2605 @@ + + + + + + + +Jolt Physics: Mat44 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Mat44 Class Reference
+
+
+ +

Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix. + More...

+ +

#include <Mat44.h>

+ + + + + + +

+Public Types

using Type = Vec4::Type
 
using ArgType = Mat44Arg
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Mat44 ()=default
 Constructor.
 
JPH_INLINE Mat44 (Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec4Arg inC4)
 
JPH_INLINE Mat44 (Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec3Arg inC4)
 
 Mat44 (const Mat44 &inM2)=default
 
Mat44operator= (const Mat44 &inM2)=default
 
JPH_INLINE Mat44 (Type inC1, Type inC2, Type inC3, Type inC4)
 
JPH_INLINE float operator() (uint inRow, uint inColumn) const
 Get float component by element index.
 
JPH_INLINE float & operator() (uint inRow, uint inColumn)
 
JPH_INLINE bool operator== (Mat44Arg inM2) const
 Comparison.
 
JPH_INLINE bool operator!= (Mat44Arg inM2) const
 
JPH_INLINE bool IsClose (Mat44Arg inM2, float inMaxDistSq=1.0e-12f) const
 Test if two matrices are close.
 
JPH_INLINE Mat44 operator* (Mat44Arg inM) const
 Multiply matrix by matrix.
 
JPH_INLINE Vec3 operator* (Vec3Arg inV) const
 Multiply vector by matrix.
 
JPH_INLINE Vec4 operator* (Vec4Arg inV) const
 
JPH_INLINE Vec3 Multiply3x3 (Vec3Arg inV) const
 Multiply vector by only 3x3 part of the matrix.
 
JPH_INLINE Vec3 Multiply3x3Transposed (Vec3Arg inV) const
 Multiply vector by only 3x3 part of the transpose of the matrix ( \(result = this^T \: inV\))
 
JPH_INLINE Mat44 Multiply3x3 (Mat44Arg inM) const
 Multiply 3x3 matrix by 3x3 matrix.
 
JPH_INLINE Mat44 Multiply3x3LeftTransposed (Mat44Arg inM) const
 Multiply transpose of 3x3 matrix by 3x3 matrix ( \(result = this^T \: inM\))
 
JPH_INLINE Mat44 Multiply3x3RightTransposed (Mat44Arg inM) const
 Multiply 3x3 matrix by the transpose of a 3x3 matrix ( \(result = this \: inM^T\))
 
JPH_INLINE Mat44 operator* (float inV) const
 Multiply matrix with float.
 
JPH_INLINE Mat44operator*= (float inV)
 Multiply matrix with float.
 
JPH_INLINE Mat44 operator+ (Mat44Arg inM) const
 Per element addition of matrix.
 
JPH_INLINE Mat44 operator- () const
 Negate.
 
JPH_INLINE Mat44 operator- (Mat44Arg inM) const
 Per element subtraction of matrix.
 
JPH_INLINE Mat44operator+= (Mat44Arg inM)
 Per element addition of matrix.
 
JPH_INLINE Vec3 GetAxisX () const
 Access to the columns.
 
JPH_INLINE void SetAxisX (Vec3Arg inV)
 
JPH_INLINE Vec3 GetAxisY () const
 
JPH_INLINE void SetAxisY (Vec3Arg inV)
 
JPH_INLINE Vec3 GetAxisZ () const
 
JPH_INLINE void SetAxisZ (Vec3Arg inV)
 
JPH_INLINE Vec3 GetTranslation () const
 
JPH_INLINE void SetTranslation (Vec3Arg inV)
 
JPH_INLINE Vec3 GetDiagonal3 () const
 
JPH_INLINE void SetDiagonal3 (Vec3Arg inV)
 
JPH_INLINE Vec4 GetDiagonal4 () const
 
JPH_INLINE void SetDiagonal4 (Vec4Arg inV)
 
JPH_INLINE Vec3 GetColumn3 (uint inCol) const
 
JPH_INLINE void SetColumn3 (uint inCol, Vec3Arg inV)
 
JPH_INLINE Vec4 GetColumn4 (uint inCol) const
 
JPH_INLINE void SetColumn4 (uint inCol, Vec4Arg inV)
 
JPH_INLINE void StoreFloat4x4 (Float4 *outV) const
 Store matrix to memory.
 
JPH_INLINE Mat44 Transposed () const
 Transpose matrix.
 
JPH_INLINE Mat44 Transposed3x3 () const
 Transpose 3x3 subpart of matrix.
 
JPH_INLINE Mat44 Inversed () const
 Inverse 4x4 matrix.
 
JPH_INLINE Mat44 InversedRotationTranslation () const
 Inverse 4x4 matrix when it only contains rotation and translation.
 
JPH_INLINE float GetDeterminant3x3 () const
 Get the determinant of a 3x3 matrix.
 
JPH_INLINE Mat44 Adjointed3x3 () const
 Get the adjoint of a 3x3 matrix.
 
JPH_INLINE Mat44 Inversed3x3 () const
 Inverse 3x3 matrix.
 
JPH_INLINE bool SetInversed3x3 (Mat44Arg inM)
 *this = inM.Inversed3x3(), returns false if the matrix is singular in which case *this is unchanged
 
JPH_INLINE Mat44 GetRotation () const
 Get rotation part only (note: retains the first 3 values from the bottom row)
 
JPH_INLINE Mat44 GetRotationSafe () const
 Get rotation part only (note: also clears the bottom row)
 
JPH_INLINE void SetRotation (Mat44Arg inRotation)
 Updates the rotation part of this matrix (the first 3 columns)
 
JPH_INLINE Quat GetQuaternion () const
 Convert to quaternion.
 
JPH_INLINE Mat44 GetDirectionPreservingMatrix () const
 Get matrix that transforms a direction with the same transform as this matrix (length is not preserved)
 
JPH_INLINE Mat44 PreTranslated (Vec3Arg inTranslation) const
 Pre multiply by translation matrix: result = this * Mat44::sTranslation(inTranslation)
 
JPH_INLINE Mat44 PostTranslated (Vec3Arg inTranslation) const
 Post multiply by translation matrix: result = Mat44::sTranslation(inTranslation) * this (i.e. add inTranslation to the 4-th column)
 
JPH_INLINE Mat44 PreScaled (Vec3Arg inScale) const
 Scale a matrix: result = this * Mat44::sScale(inScale)
 
JPH_INLINE Mat44 PostScaled (Vec3Arg inScale) const
 Scale a matrix: result = Mat44::sScale(inScale) * this.
 
JPH_INLINE Mat44 Decompose (Vec3 &outScale) const
 
JPH_INLINE Mat44 ToMat44 () const
 In single precision mode just return the matrix itself.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static JPH_INLINE Mat44 sZero ()
 Zero matrix.
 
static JPH_INLINE Mat44 sIdentity ()
 Identity matrix.
 
static JPH_INLINE Mat44 sNaN ()
 Matrix filled with NaN's.
 
static JPH_INLINE Mat44 sLoadFloat4x4 (const Float4 *inV)
 Load 16 floats from memory.
 
static JPH_INLINE Mat44 sLoadFloat4x4Aligned (const Float4 *inV)
 Load 16 floats from memory, 16 bytes aligned.
 
static JPH_INLINE Mat44 sRotationX (float inX)
 Rotate around X, Y or Z axis (angle in radians)
 
static JPH_INLINE Mat44 sRotationY (float inY)
 
static JPH_INLINE Mat44 sRotationZ (float inZ)
 
static JPH_INLINE Mat44 sRotation (Vec3Arg inAxis, float inAngle)
 Rotate around arbitrary axis.
 
static JPH_INLINE Mat44 sRotation (QuatArg inQuat)
 Rotate from quaternion.
 
static JPH_INLINE Mat44 sTranslation (Vec3Arg inV)
 Get matrix that translates.
 
static JPH_INLINE Mat44 sRotationTranslation (QuatArg inR, Vec3Arg inT)
 Get matrix that rotates and translates.
 
static JPH_INLINE Mat44 sInverseRotationTranslation (QuatArg inR, Vec3Arg inT)
 Get inverse matrix of sRotationTranslation.
 
static JPH_INLINE Mat44 sScale (float inScale)
 Get matrix that scales uniformly.
 
static JPH_INLINE Mat44 sScale (Vec3Arg inV)
 Get matrix that scales (produces a matrix with (inV, 1) on its diagonal)
 
static JPH_INLINE Mat44 sOuterProduct (Vec3Arg inV1, Vec3Arg inV2)
 Get outer product of inV and inV2 (equivalent to \(inV1 \otimes inV2\))
 
static JPH_INLINE Mat44 sCrossProduct (Vec3Arg inV)
 Get matrix that represents a cross product \(A \times B = \text{sCrossProduct}(A) \: B\).
 
static JPH_INLINE Mat44 sQuatLeftMultiply (QuatArg inQ)
 Returns matrix ML so that \(ML(q) \: p = q \: p\) (where p and q are quaternions)
 
static JPH_INLINE Mat44 sQuatRightMultiply (QuatArg inQ)
 Returns matrix MR so that \(MR(q) \: p = p \: q\) (where p and q are quaternions)
 
static JPH_INLINE Mat44 sLookAt (Vec3Arg inPos, Vec3Arg inTarget, Vec3Arg inUp)
 
static JPH_INLINE Mat44 sPerspective (float inFovY, float inAspect, float inNear, float inFar)
 Returns a right-handed perspective projection matrix.
 
+ + + + + + +

+Friends

JPH_INLINE Mat44 operator* (float inV, Mat44Arg inM)
 
ostream & operator<< (ostream &inStream, Mat44Arg inM)
 To String.
 
+

Detailed Description

+

Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix.

+

Member Typedef Documentation

+ +

◆ ArgType

+ +
+
+ + + + +
using Mat44::ArgType = Mat44Arg
+
+ +
+
+ +

◆ Type

+ +
+
+ + + + +
using Mat44::Type = Vec4::Type
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Mat44() [1/5]

+ +
+
+ + + + + +
+ + + + + + + +
Mat44::Mat44 ()
+
+default
+
+ +

Constructor.

+

Intentionally not initialized for performance reasons

+ +
+
+ +

◆ Mat44() [2/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Mat44::Mat44 (Vec4Arg inC1,
Vec4Arg inC2,
Vec4Arg inC3,
Vec4Arg inC4 
)
+
+ +
+
+ +

◆ Mat44() [3/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Mat44::Mat44 (Vec4Arg inC1,
Vec4Arg inC2,
Vec4Arg inC3,
Vec3Arg inC4 
)
+
+ +
+
+ +

◆ Mat44() [4/5]

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44::Mat44 (const Mat44inM2)
+
+default
+
+ +
+
+ +

◆ Mat44() [5/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Mat44::Mat44 (Type inC1,
Type inC2,
Type inC3,
Type inC4 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ Adjointed3x3()

+ +
+
+ + + + + + + +
Mat44 Mat44::Adjointed3x3 () const
+
+ +

Get the adjoint of a 3x3 matrix.

+ +
+
+ +

◆ Decompose()

+ +
+
+ + + + + + + + +
Mat44 Mat44::Decompose (Vec3outScale) const
+
+

Decompose a matrix into a rotation & translation part and into a scale part so that: this = return_value * Mat44::sScale(outScale). This equation only holds when the matrix is orthogonal, if it is not the returned matrix will be made orthogonal using the modified Gram-Schmidt algorithm (see: https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process)

+ +
+
+ +

◆ GetAxisX()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec3 Mat44::GetAxisX () const
+
+inline
+
+ +

Access to the columns.

+ +
+
+ +

◆ GetAxisY()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec3 Mat44::GetAxisY () const
+
+inline
+
+ +
+
+ +

◆ GetAxisZ()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec3 Mat44::GetAxisZ () const
+
+inline
+
+ +
+
+ +

◆ GetColumn3()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec3 Mat44::GetColumn3 (uint inCol) const
+
+inline
+
+ +
+
+ +

◆ GetColumn4()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec4 Mat44::GetColumn4 (uint inCol) const
+
+inline
+
+ +
+
+ +

◆ GetDeterminant3x3()

+ +
+
+ + + + + + + +
float Mat44::GetDeterminant3x3 () const
+
+ +

Get the determinant of a 3x3 matrix.

+ +
+
+ +

◆ GetDiagonal3()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec3 Mat44::GetDiagonal3 () const
+
+inline
+
+ +
+
+ +

◆ GetDiagonal4()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec4 Mat44::GetDiagonal4 () const
+
+inline
+
+ +
+
+ +

◆ GetDirectionPreservingMatrix()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Mat44 Mat44::GetDirectionPreservingMatrix () const
+
+inline
+
+ +

Get matrix that transforms a direction with the same transform as this matrix (length is not preserved)

+ +
+
+ +

◆ GetQuaternion()

+ +
+
+ + + + + + + +
Quat Mat44::GetQuaternion () const
+
+ +

Convert to quaternion.

+ +
+
+ +

◆ GetRotation()

+ +
+
+ + + + + + + +
Mat44 Mat44::GetRotation () const
+
+ +

Get rotation part only (note: retains the first 3 values from the bottom row)

+ +
+
+ +

◆ GetRotationSafe()

+ +
+
+ + + + + + + +
Mat44 Mat44::GetRotationSafe () const
+
+ +

Get rotation part only (note: also clears the bottom row)

+ +
+
+ +

◆ GetTranslation()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec3 Mat44::GetTranslation () const
+
+inline
+
+ +
+
+ +

◆ Inversed()

+ +
+
+ + + + + + + +
Mat44 Mat44::Inversed () const
+
+ +

Inverse 4x4 matrix.

+ +
+
+ +

◆ Inversed3x3()

+ +
+
+ + + + + + + +
Mat44 Mat44::Inversed3x3 () const
+
+ +

Inverse 3x3 matrix.

+ +
+
+ +

◆ InversedRotationTranslation()

+ +
+
+ + + + + + + +
Mat44 Mat44::InversedRotationTranslation () const
+
+ +

Inverse 4x4 matrix when it only contains rotation and translation.

+ +
+
+ +

◆ IsClose()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool Mat44::IsClose (Mat44Arg inM2,
float inMaxDistSq = 1.0e-12f 
) const
+
+ +

Test if two matrices are close.

+ +
+
+ +

◆ Multiply3x3() [1/2]

+ +
+
+ + + + + + + + +
Mat44 Mat44::Multiply3x3 (Mat44Arg inM) const
+
+ +

Multiply 3x3 matrix by 3x3 matrix.

+ +
+
+ +

◆ Multiply3x3() [2/2]

+ +
+
+ + + + + + + + +
Vec3 Mat44::Multiply3x3 (Vec3Arg inV) const
+
+ +

Multiply vector by only 3x3 part of the matrix.

+ +
+
+ +

◆ Multiply3x3LeftTransposed()

+ +
+
+ + + + + + + + +
Mat44 Mat44::Multiply3x3LeftTransposed (Mat44Arg inM) const
+
+ +

Multiply transpose of 3x3 matrix by 3x3 matrix ( \(result = this^T \: inM\))

+ +
+
+ +

◆ Multiply3x3RightTransposed()

+ +
+
+ + + + + + + + +
Mat44 Mat44::Multiply3x3RightTransposed (Mat44Arg inM) const
+
+ +

Multiply 3x3 matrix by the transpose of a 3x3 matrix ( \(result = this \: inM^T\))

+ +
+
+ +

◆ Multiply3x3Transposed()

+ +
+
+ + + + + + + + +
Vec3 Mat44::Multiply3x3Transposed (Vec3Arg inV) const
+
+ +

Multiply vector by only 3x3 part of the transpose of the matrix ( \(result = this^T \: inV\))

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE bool Mat44::operator!= (Mat44Arg inM2) const
+
+inline
+
+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE float & Mat44::operator() (uint inRow,
uint inColumn 
)
+
+inline
+
+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE float Mat44::operator() (uint inRow,
uint inColumn 
) const
+
+inline
+
+ +

Get float component by element index.

+ +
+
+ +

◆ operator*() [1/4]

+ +
+
+ + + + + + + + +
Mat44 Mat44::operator* (float inV) const
+
+ +

Multiply matrix with float.

+ +
+
+ +

◆ operator*() [2/4]

+ +
+
+ + + + + + + + +
Mat44 Mat44::operator* (Mat44Arg inM) const
+
+ +

Multiply matrix by matrix.

+ +
+
+ +

◆ operator*() [3/4]

+ +
+
+ + + + + + + + +
Vec3 Mat44::operator* (Vec3Arg inV) const
+
+ +

Multiply vector by matrix.

+ +
+
+ +

◆ operator*() [4/4]

+ +
+
+ + + + + + + + +
Vec4 Mat44::operator* (Vec4Arg inV) const
+
+ +
+
+ +

◆ operator*=()

+ +
+
+ + + + + + + + +
Mat44 & Mat44::operator*= (float inV)
+
+ +

Multiply matrix with float.

+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + + + + +
Mat44 Mat44::operator+ (Mat44Arg inM) const
+
+ +

Per element addition of matrix.

+ +
+
+ +

◆ operator+=()

+ +
+
+ + + + + + + + +
Mat44 & Mat44::operator+= (Mat44Arg inM)
+
+ +

Per element addition of matrix.

+ +
+
+ +

◆ operator-() [1/2]

+ +
+
+ + + + + + + +
Mat44 Mat44::operator- () const
+
+ +

Negate.

+ +
+
+ +

◆ operator-() [2/2]

+ +
+
+ + + + + + + + +
Mat44 Mat44::operator- (Mat44Arg inM) const
+
+ +

Per element subtraction of matrix.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 & Mat44::operator= (const Mat44inM2)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool Mat44::operator== (Mat44Arg inM2) const
+
+ +

Comparison.

+ +
+
+ +

◆ PostScaled()

+ +
+
+ + + + + + + + +
Mat44 Mat44::PostScaled (Vec3Arg inScale) const
+
+ +

Scale a matrix: result = Mat44::sScale(inScale) * this.

+ +
+
+ +

◆ PostTranslated()

+ +
+
+ + + + + + + + +
Mat44 Mat44::PostTranslated (Vec3Arg inTranslation) const
+
+ +

Post multiply by translation matrix: result = Mat44::sTranslation(inTranslation) * this (i.e. add inTranslation to the 4-th column)

+ +
+
+ +

◆ PreScaled()

+ +
+
+ + + + + + + + +
Mat44 Mat44::PreScaled (Vec3Arg inScale) const
+
+ +

Scale a matrix: result = this * Mat44::sScale(inScale)

+ +
+
+ +

◆ PreTranslated()

+ +
+
+ + + + + + + + +
Mat44 Mat44::PreTranslated (Vec3Arg inTranslation) const
+
+ +

Pre multiply by translation matrix: result = this * Mat44::sTranslation(inTranslation)

+ +
+
+ +

◆ sCrossProduct()

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 Mat44::sCrossProduct (Vec3Arg inV)
+
+static
+
+ +

Get matrix that represents a cross product \(A \times B = \text{sCrossProduct}(A) \: B\).

+ +
+
+ +

◆ SetAxisX()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Mat44::SetAxisX (Vec3Arg inV)
+
+inline
+
+ +
+
+ +

◆ SetAxisY()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Mat44::SetAxisY (Vec3Arg inV)
+
+inline
+
+ +
+
+ +

◆ SetAxisZ()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Mat44::SetAxisZ (Vec3Arg inV)
+
+inline
+
+ +
+
+ +

◆ SetColumn3()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE void Mat44::SetColumn3 (uint inCol,
Vec3Arg inV 
)
+
+inline
+
+ +
+
+ +

◆ SetColumn4()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE void Mat44::SetColumn4 (uint inCol,
Vec4Arg inV 
)
+
+inline
+
+ +
+
+ +

◆ SetDiagonal3()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Mat44::SetDiagonal3 (Vec3Arg inV)
+
+inline
+
+ +
+
+ +

◆ SetDiagonal4()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Mat44::SetDiagonal4 (Vec4Arg inV)
+
+inline
+
+ +
+
+ +

◆ SetInversed3x3()

+ +
+
+ + + + + + + + +
bool Mat44::SetInversed3x3 (Mat44Arg inM)
+
+ +

*this = inM.Inversed3x3(), returns false if the matrix is singular in which case *this is unchanged

+ +
+
+ +

◆ SetRotation()

+ +
+
+ + + + + + + + +
void Mat44::SetRotation (Mat44Arg inRotation)
+
+ +

Updates the rotation part of this matrix (the first 3 columns)

+ +
+
+ +

◆ SetTranslation()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Mat44::SetTranslation (Vec3Arg inV)
+
+inline
+
+ +
+
+ +

◆ sIdentity()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 Mat44::sIdentity ()
+
+static
+
+ +

Identity matrix.

+ +
+
+ +

◆ sInverseRotationTranslation()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Mat44 Mat44::sInverseRotationTranslation (QuatArg inR,
Vec3Arg inT 
)
+
+static
+
+ +

Get inverse matrix of sRotationTranslation.

+ +
+
+ +

◆ sLoadFloat4x4()

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 Mat44::sLoadFloat4x4 (const Float4inV)
+
+static
+
+ +

Load 16 floats from memory.

+ +
+
+ +

◆ sLoadFloat4x4Aligned()

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 Mat44::sLoadFloat4x4Aligned (const Float4inV)
+
+static
+
+ +

Load 16 floats from memory, 16 bytes aligned.

+ +
+
+ +

◆ sLookAt()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Mat44 Mat44::sLookAt (Vec3Arg inPos,
Vec3Arg inTarget,
Vec3Arg inUp 
)
+
+static
+
+

Returns a look at matrix that transforms from world space to view space

Parameters
+ + + + +
inPosPosition of the camera
inTargetTarget of the camera
inUpUp vector
+
+
+ +
+
+ +

◆ sNaN()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 Mat44::sNaN ()
+
+static
+
+ +

Matrix filled with NaN's.

+ +
+
+ +

◆ sOuterProduct()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Mat44 Mat44::sOuterProduct (Vec3Arg inV1,
Vec3Arg inV2 
)
+
+static
+
+ +

Get outer product of inV and inV2 (equivalent to \(inV1 \otimes inV2\))

+ +
+
+ +

◆ sPerspective()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Mat44 Mat44::sPerspective (float inFovY,
float inAspect,
float inNear,
float inFar 
)
+
+static
+
+ +

Returns a right-handed perspective projection matrix.

+ +
+
+ +

◆ sQuatLeftMultiply()

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 Mat44::sQuatLeftMultiply (QuatArg inQ)
+
+static
+
+ +

Returns matrix ML so that \(ML(q) \: p = q \: p\) (where p and q are quaternions)

+ +
+
+ +

◆ sQuatRightMultiply()

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 Mat44::sQuatRightMultiply (QuatArg inQ)
+
+static
+
+ +

Returns matrix MR so that \(MR(q) \: p = p \: q\) (where p and q are quaternions)

+ +
+
+ +

◆ sRotation() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 Mat44::sRotation (QuatArg inQuat)
+
+static
+
+ +

Rotate from quaternion.

+ +
+
+ +

◆ sRotation() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Mat44 Mat44::sRotation (Vec3Arg inAxis,
float inAngle 
)
+
+static
+
+ +

Rotate around arbitrary axis.

+ +
+
+ +

◆ sRotationTranslation()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Mat44 Mat44::sRotationTranslation (QuatArg inR,
Vec3Arg inT 
)
+
+static
+
+ +

Get matrix that rotates and translates.

+ +
+
+ +

◆ sRotationX()

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 Mat44::sRotationX (float inX)
+
+static
+
+ +

Rotate around X, Y or Z axis (angle in radians)

+ +
+
+ +

◆ sRotationY()

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 Mat44::sRotationY (float inY)
+
+static
+
+ +
+
+ +

◆ sRotationZ()

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 Mat44::sRotationZ (float inZ)
+
+static
+
+ +
+
+ +

◆ sScale() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 Mat44::sScale (float inScale)
+
+static
+
+ +

Get matrix that scales uniformly.

+ +
+
+ +

◆ sScale() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 Mat44::sScale (Vec3Arg inV)
+
+static
+
+ +

Get matrix that scales (produces a matrix with (inV, 1) on its diagonal)

+ +
+
+ +

◆ StoreFloat4x4()

+ +
+
+ + + + + + + + +
void Mat44::StoreFloat4x4 (Float4outV) const
+
+ +

Store matrix to memory.

+ +
+
+ +

◆ sTranslation()

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 Mat44::sTranslation (Vec3Arg inV)
+
+static
+
+ +

Get matrix that translates.

+ +
+
+ +

◆ sZero()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 Mat44::sZero ()
+
+static
+
+ +

Zero matrix.

+ +
+
+ +

◆ ToMat44()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Mat44 Mat44::ToMat44 () const
+
+inline
+
+ +

In single precision mode just return the matrix itself.

+ +
+
+ +

◆ Transposed()

+ +
+
+ + + + + + + +
Mat44 Mat44::Transposed () const
+
+ +

Transpose matrix.

+ +
+
+ +

◆ Transposed3x3()

+ +
+
+ + + + + + + +
Mat44 Mat44::Transposed3x3 () const
+
+ +

Transpose 3x3 subpart of matrix.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ operator*

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE Mat44 operator* (float inV,
Mat44Arg inM 
)
+
+friend
+
+ +
+
+ +

◆ operator<<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ostream & operator<< (ostream & inStream,
Mat44Arg inM 
)
+
+friend
+
+ +

To String.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_mat44.js b/class_mat44.js new file mode 100644 index 000000000..3a9991221 --- /dev/null +++ b/class_mat44.js @@ -0,0 +1,68 @@ +var class_mat44 = +[ + [ "ArgType", "class_mat44.html#af683e408c0736cfaeabba6c87f6308ea", null ], + [ "Type", "class_mat44.html#a3aa8910fb3ed0cba6463518fe7d52328", null ], + [ "Mat44", "class_mat44.html#ad95a3b3f36bf3216574383e3dfb927ed", null ], + [ "Mat44", "class_mat44.html#a9e544288786bacea509de796f7a2a224", null ], + [ "Mat44", "class_mat44.html#a5448dda46fe8a36d0ae9b6168607e3cb", null ], + [ "Mat44", "class_mat44.html#ab804bcb6a2583f7bf966d3d5a3a24161", null ], + [ "Mat44", "class_mat44.html#af8719f405d2de3e6310ba091f79aa518", null ], + [ "Adjointed3x3", "class_mat44.html#a3b9c1e6d186b9ad59e81255c64049f22", null ], + [ "Decompose", "class_mat44.html#aa11f571efdce00289f87a65317fbdd58", null ], + [ "GetAxisX", "class_mat44.html#aa71942f9a684cf2e0e55f8c9ba8f5b99", null ], + [ "GetAxisY", "class_mat44.html#a03967bba6efbe4a03e6f1b888e1436a7", null ], + [ "GetAxisZ", "class_mat44.html#a19fc28cb3d425e8b4f462c939bc595fa", null ], + [ "GetColumn3", "class_mat44.html#a4d34298d2040673cfd9b86c5cb83a5b9", null ], + [ "GetColumn4", "class_mat44.html#a97c469ed78611039f85415381a67f312", null ], + [ "GetDeterminant3x3", "class_mat44.html#a2b5ba5e6c68b059ae61a1bbc1b7fbb87", null ], + [ "GetDiagonal3", "class_mat44.html#a6eb3cbc676f2ce57f63bcee9d0b40171", null ], + [ "GetDiagonal4", "class_mat44.html#aefb86266992d843e5de8e53cdbc5bdc6", null ], + [ "GetDirectionPreservingMatrix", "class_mat44.html#a2bb16051fdd324325ac9be5e5e7619b7", null ], + [ "GetQuaternion", "class_mat44.html#a1e977c53b5f6a0c03f8da33ebef2c05a", null ], + [ "GetRotation", "class_mat44.html#a4cc37dcc7b9be4ab8f8e94bf49e06204", null ], + [ "GetRotationSafe", "class_mat44.html#a564ee35616cca9a01624760e58bfb9ca", null ], + [ "GetTranslation", "class_mat44.html#abd89da8ac7b4e4c5b87c02caabbf10b8", null ], + [ "Inversed", "class_mat44.html#aae48032b0b6d27778617b8546135b057", null ], + [ "Inversed3x3", "class_mat44.html#ad9f5df546296a7bdc816e6be5627926b", null ], + [ "InversedRotationTranslation", "class_mat44.html#af962ad0ed20cb6112f8249cb9573c233", null ], + [ "IsClose", "class_mat44.html#a69e383afe2897a0179fdeb7a418d961d", null ], + [ "Multiply3x3", "class_mat44.html#a03490bf0526b79cc14125d9e6500576e", null ], + [ "Multiply3x3", "class_mat44.html#ab599aaeab3e4b832f7f4097816650b14", null ], + [ "Multiply3x3LeftTransposed", "class_mat44.html#a1c302e1f10c6c5a233aed4a540e0f598", null ], + [ "Multiply3x3RightTransposed", "class_mat44.html#a595ae3cf26d9fb87761e20b6b35d3d10", null ], + [ "Multiply3x3Transposed", "class_mat44.html#a3ed66bc4c5e8e010657bd5bb109f1406", null ], + [ "operator!=", "class_mat44.html#a13b1fe0d8085ba8cf9845394c1433d89", null ], + [ "operator()", "class_mat44.html#a608a5ec6255c02bfdfa11f4b9d66d438", null ], + [ "operator()", "class_mat44.html#a7a74f3bb8a8ee63470c5b73e9fbfd5e9", null ], + [ "operator*", "class_mat44.html#adde2d0df064c3457190cdc6fb0da5dc3", null ], + [ "operator*", "class_mat44.html#ae64ca2f2b40571def45845fecd505c64", null ], + [ "operator*", "class_mat44.html#a8bbaea1aac790dd55a59b25a9ef7cd16", null ], + [ "operator*", "class_mat44.html#a087d4151cced62fdce757c1895d2d834", null ], + [ "operator*=", "class_mat44.html#a2a3d5b10d49ac1eed4eae855a0fd25d9", null ], + [ "operator+", "class_mat44.html#ac0c3181759450b3498b5dc53967f803d", null ], + [ "operator+=", "class_mat44.html#a60273e38c2e5071066f14905698ef994", null ], + [ "operator-", "class_mat44.html#a22b266ee0c8cb215e96edaebc50d2cbf", null ], + [ "operator-", "class_mat44.html#acb281c6516de9bfd045aa029f95ba0d0", null ], + [ "operator=", "class_mat44.html#a84bfaec450f946db0a29c1a6036f4043", null ], + [ "operator==", "class_mat44.html#a3be30e0ae2ded68ebb5ceea9afbfe5c1", null ], + [ "PostScaled", "class_mat44.html#a6503ccd1384b6681d191c327961fbb6d", null ], + [ "PostTranslated", "class_mat44.html#a16b90363d2e120bd570c4200e29f5ba6", null ], + [ "PreScaled", "class_mat44.html#af9c9948eced621a54424f05c397824dd", null ], + [ "PreTranslated", "class_mat44.html#a16f19b423139db52503bb8d6526d947f", null ], + [ "SetAxisX", "class_mat44.html#a04aad46839683a6d3d82a400c3bbe576", null ], + [ "SetAxisY", "class_mat44.html#ada218e0e59422cb1b0b38a534b7379b8", null ], + [ "SetAxisZ", "class_mat44.html#a469e83f0fb0c2975b4506c682721c3e3", null ], + [ "SetColumn3", "class_mat44.html#a1659c59725a85b2bb991e333381c87fe", null ], + [ "SetColumn4", "class_mat44.html#ace29aeaafa5bbff8a159105fee78e2d2", null ], + [ "SetDiagonal3", "class_mat44.html#ab385ba1f663f9de2137d816c0fc4fb3f", null ], + [ "SetDiagonal4", "class_mat44.html#a335f4cec86c172f07bd0667909a54a7e", null ], + [ "SetInversed3x3", "class_mat44.html#a814c04077820ea83f444ccc5ae48299f", null ], + [ "SetRotation", "class_mat44.html#abd5dc78238403195cbd0cde87f40af49", null ], + [ "SetTranslation", "class_mat44.html#ae89e485f03d9a5dbaf317c057f4eac30", null ], + [ "StoreFloat4x4", "class_mat44.html#a1f51050b35215131c7da9a7de78a3e1e", null ], + [ "ToMat44", "class_mat44.html#a3445a728646fe8ad80381a0e55ea2289", null ], + [ "Transposed", "class_mat44.html#a388723db2d35de31efcee6ff0cfb711d", null ], + [ "Transposed3x3", "class_mat44.html#a29830ba9d80d31e00d30abcc0c099e7c", null ], + [ "operator*", "class_mat44.html#afe860f899612b75ff8be07c018614c5b", null ], + [ "operator<<", "class_mat44.html#abc0855ee1ce37289515c5b55dfeac1a6", null ] +]; \ No newline at end of file diff --git a/class_matrix-members.html b/class_matrix-members.html new file mode 100644 index 000000000..2c5bc156c --- /dev/null +++ b/class_matrix-members.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Matrix< Rows, Cols > Member List
+
+
+ +

This is the complete list of members for Matrix< Rows, Cols >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CopyPart(const OtherMatrix &inM, uint inSourceRow, uint inSourceCol, uint inNumRows, uint inNumCols, uint inDestRow, uint inDestCol)Matrix< Rows, Cols >inline
GetCols() constMatrix< Rows, Cols >inline
GetColumn(int inIdx) constMatrix< Rows, Cols >inline
GetColumn(int inIdx)Matrix< Rows, Cols >inline
GetRows() constMatrix< Rows, Cols >inline
Inversed() constMatrix< Rows, Cols >inline
IsIdentity() constMatrix< Rows, Cols >inline
IsZero() constMatrix< Rows, Cols >inline
Matrix()=defaultMatrix< Rows, Cols >inline
Matrix(const Matrix &inM2)Matrix< Rows, Cols >inline
mColMatrix< Rows, Cols >
operator!=(const Matrix &inM2) constMatrix< Rows, Cols >inline
operator()(uint inRow, uint inColumn) constMatrix< Rows, Cols >inline
operator()(uint inRow, uint inColumn)Matrix< Rows, Cols >inline
operator*(const Matrix< Cols, OtherCols > &inM) constMatrix< Rows, Cols >inline
operator*(const Vector< Cols > &inV) constMatrix< Rows, Cols >inline
operator*(float inV) constMatrix< Rows, Cols >inline
operator*Matrix< Rows, Cols >friend
operator+(const Matrix &inM) constMatrix< Rows, Cols >inline
operator-(const Matrix &inM) constMatrix< Rows, Cols >inline
operator<<Matrix< Rows, Cols >friend
operator=(const Matrix &inM2)Matrix< Rows, Cols >inline
operator==(const Matrix &inM2) constMatrix< Rows, Cols >inline
sDiagonal(const Vector< Rows< Cols? Rows :Cols > &inV)Matrix< Rows, Cols >inlinestatic
SetDiagonal(const Vector< Rows< Cols? Rows :Cols > &inV)Matrix< Rows, Cols >inline
SetIdentity()Matrix< Rows, Cols >inline
SetInversed(const Matrix &inM)Matrix< Rows, Cols >inline
SetZero()Matrix< Rows, Cols >inline
sIdentity()Matrix< Rows, Cols >inlinestatic
sZero()Matrix< Rows, Cols >inlinestatic
Transposed() constMatrix< Rows, Cols >inline
+
+ + + + diff --git a/class_matrix.html b/class_matrix.html new file mode 100644 index 000000000..a1eefe514 --- /dev/null +++ b/class_matrix.html @@ -0,0 +1,1202 @@ + + + + + + + +Jolt Physics: Matrix< Rows, Cols > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Matrix< Rows, Cols > Class Template Reference
+
+
+ +

Templatized matrix class. + More...

+ +

#include <Matrix.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Matrix ()=default
 Constructor.
 
 Matrix (const Matrix &inM2)
 
uint GetRows () const
 Dimensions.
 
uint GetCols () const
 
void SetZero ()
 Zero matrix.
 
bool IsZero () const
 Check if this matrix consists of all zeros.
 
void SetIdentity ()
 Identity matrix.
 
bool IsIdentity () const
 Check if this matrix is identity.
 
void SetDiagonal (const Vector< Rows< Cols? Rows :Cols > &inV)
 Diagonal matrix.
 
template<class OtherMatrix >
void CopyPart (const OtherMatrix &inM, uint inSourceRow, uint inSourceCol, uint inNumRows, uint inNumCols, uint inDestRow, uint inDestCol)
 Copy a (part) of another matrix into this matrix.
 
float operator() (uint inRow, uint inColumn) const
 Get float component by element index.
 
float & operator() (uint inRow, uint inColumn)
 
bool operator== (const Matrix &inM2) const
 Comparison.
 
bool operator!= (const Matrix &inM2) const
 
Matrixoperator= (const Matrix &inM2)
 Assignment.
 
template<uint OtherCols>
Matrix< Rows, OtherCols > operator* (const Matrix< Cols, OtherCols > &inM) const
 Multiply matrix by matrix.
 
Vector< Rows > operator* (const Vector< Cols > &inV) const
 Multiply vector by matrix.
 
Matrix operator* (float inV) const
 Multiply matrix with float.
 
Matrix operator+ (const Matrix &inM) const
 Per element addition of matrix.
 
Matrix operator- (const Matrix &inM) const
 Per element subtraction of matrix.
 
Matrix< Cols, Rows > Transposed () const
 Transpose matrix.
 
bool SetInversed (const Matrix &inM)
 Inverse matrix.
 
Matrix Inversed () const
 
const Vector< Rows > & GetColumn (int inIdx) const
 Column access.
 
Vector< Rows > & GetColumn (int inIdx)
 
+ + + + + + + +

+Static Public Member Functions

static Matrix sZero ()
 
static Matrix sIdentity ()
 
static Matrix sDiagonal (const Vector< Rows< Cols? Rows :Cols > &inV)
 
+ + + + +

+Public Attributes

Vector< Rows > mCol [Cols]
 Column.
 
+ + + + + + +

+Friends

Matrix operator* (float inV, const Matrix &inM)
 
ostream & operator<< (ostream &inStream, const Matrix &inM)
 To String.
 
+

Detailed Description

+
template<uint Rows, uint Cols>
+class Matrix< Rows, Cols >

Templatized matrix class.

+

Constructor & Destructor Documentation

+ +

◆ Matrix() [1/2]

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
Matrix< Rows, Cols >::Matrix ()
+
+inlinedefault
+
+ +

Constructor.

+ +
+
+ +

◆ Matrix() [2/2]

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + +
Matrix< Rows, Cols >::Matrix (const Matrix< Rows, Cols > & inM2)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ CopyPart()

+ +
+
+
+template<uint Rows, uint Cols>
+
+template<class OtherMatrix >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void Matrix< Rows, Cols >::CopyPart (const OtherMatrix< Rows, Cols > & inM,
uint inSourceRow,
uint inSourceCol,
uint inNumRows,
uint inNumCols,
uint inDestRow,
uint inDestCol 
)
+
+inline
+
+ +

Copy a (part) of another matrix into this matrix.

+ +
+
+ +

◆ GetCols()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
uint Matrix< Rows, Cols >::GetCols () const
+
+inline
+
+ +
+
+ +

◆ GetColumn() [1/2]

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + +
Vector< Rows > & Matrix< Rows, Cols >::GetColumn (int inIdx)
+
+inline
+
+ +
+
+ +

◆ GetColumn() [2/2]

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + +
const Vector< Rows > & Matrix< Rows, Cols >::GetColumn (int inIdx) const
+
+inline
+
+ +

Column access.

+ +
+
+ +

◆ GetRows()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
uint Matrix< Rows, Cols >::GetRows () const
+
+inline
+
+ +

Dimensions.

+ +
+
+ +

◆ Inversed()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
Matrix Matrix< Rows, Cols >::Inversed () const
+
+inline
+
+ +
+
+ +

◆ IsIdentity()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
bool Matrix< Rows, Cols >::IsIdentity () const
+
+inline
+
+ +

Check if this matrix is identity.

+ +
+
+ +

◆ IsZero()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
bool Matrix< Rows, Cols >::IsZero () const
+
+inline
+
+ +

Check if this matrix consists of all zeros.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + +
bool Matrix< Rows, Cols >::operator!= (const Matrix< Rows, Cols > & inM2) const
+
+inline
+
+ +
+
+ +

◆ operator()() [1/2]

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
float & Matrix< Rows, Cols >::operator() (uint inRow,
uint inColumn 
)
+
+inline
+
+ +
+
+ +

◆ operator()() [2/2]

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
float Matrix< Rows, Cols >::operator() (uint inRow,
uint inColumn 
) const
+
+inline
+
+ +

Get float component by element index.

+ +
+
+ +

◆ operator*() [1/3]

+ +
+
+
+template<uint Rows, uint Cols>
+
+template<uint OtherCols>
+ + + + + +
+ + + + + + + + +
Matrix< Rows, OtherCols > Matrix< Rows, Cols >::operator* (const Matrix< Cols, OtherCols > & inM) const
+
+inline
+
+ +

Multiply matrix by matrix.

+ +
+
+ +

◆ operator*() [2/3]

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + +
Vector< Rows > Matrix< Rows, Cols >::operator* (const Vector< Cols > & inV) const
+
+inline
+
+ +

Multiply vector by matrix.

+ +
+
+ +

◆ operator*() [3/3]

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + +
Matrix Matrix< Rows, Cols >::operator* (float inV) const
+
+inline
+
+ +

Multiply matrix with float.

+ +
+
+ +

◆ operator+()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + +
Matrix Matrix< Rows, Cols >::operator+ (const Matrix< Rows, Cols > & inM) const
+
+inline
+
+ +

Per element addition of matrix.

+ +
+
+ +

◆ operator-()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + +
Matrix Matrix< Rows, Cols >::operator- (const Matrix< Rows, Cols > & inM) const
+
+inline
+
+ +

Per element subtraction of matrix.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + +
Matrix & Matrix< Rows, Cols >::operator= (const Matrix< Rows, Cols > & inM2)
+
+inline
+
+ +

Assignment.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + +
bool Matrix< Rows, Cols >::operator== (const Matrix< Rows, Cols > & inM2) const
+
+inline
+
+ +

Comparison.

+ +
+
+ +

◆ sDiagonal()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
static Matrix Matrix< Rows, Cols >::sDiagonal ()
+
+inlinestatic
+
+ +
+
+ +

◆ SetDiagonal()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
void Matrix< Rows, Cols >::SetDiagonal ()
+
+inline
+
+ +

Diagonal matrix.

+ +
+
+ +

◆ SetIdentity()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
void Matrix< Rows, Cols >::SetIdentity ()
+
+inline
+
+ +

Identity matrix.

+ +
+
+ +

◆ SetInversed()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + +
bool Matrix< Rows, Cols >::SetInversed (const Matrix< Rows, Cols > & inM)
+
+inline
+
+ +

Inverse matrix.

+ +
+
+ +

◆ SetZero()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
void Matrix< Rows, Cols >::SetZero ()
+
+inline
+
+ +

Zero matrix.

+ +
+
+ +

◆ sIdentity()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
static Matrix Matrix< Rows, Cols >::sIdentity ()
+
+inlinestatic
+
+ +
+
+ +

◆ sZero()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
static Matrix Matrix< Rows, Cols >::sZero ()
+
+inlinestatic
+
+ +
+
+ +

◆ Transposed()

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + +
Matrix< Cols, Rows > Matrix< Rows, Cols >::Transposed () const
+
+inline
+
+ +

Transpose matrix.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ operator*

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Matrix operator* (float inV,
const Matrix< Rows, Cols > & inM 
)
+
+friend
+
+ +
+
+ +

◆ operator<<

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ostream & operator<< (ostream & inStream,
const Matrix< Rows, Cols > & inM 
)
+
+friend
+
+ +

To String.

+ +
+
+

Member Data Documentation

+ +

◆ mCol

+ +
+
+
+template<uint Rows, uint Cols>
+ + + + +
Vector<Rows> Matrix< Rows, Cols >::mCol[Cols]
+
+ +

Column.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_matrix.js b/class_matrix.js new file mode 100644 index 000000000..918fcff58 --- /dev/null +++ b/class_matrix.js @@ -0,0 +1,31 @@ +var class_matrix = +[ + [ "Matrix", "class_matrix.html#a70866296048d7f18cf1cf92d480f5023", null ], + [ "Matrix", "class_matrix.html#a90d5c7ad748e454acb4391cd1686ed36", null ], + [ "CopyPart", "class_matrix.html#a5e445d50e6137117917385b43e3bbe42", null ], + [ "GetCols", "class_matrix.html#a45bd49a18dec51ca82c58aa5d12572be", null ], + [ "GetColumn", "class_matrix.html#a82a128d3923926e678aa6acc94f2f05d", null ], + [ "GetColumn", "class_matrix.html#a92a370676cc7e0788bc217a358170b4a", null ], + [ "GetRows", "class_matrix.html#a295baf4af956351b6bf05548e16887ee", null ], + [ "Inversed", "class_matrix.html#ad36508b39c6773cc40fdd6a27f14b4eb", null ], + [ "IsIdentity", "class_matrix.html#a35353d8c2a5a249e5368e654bca5fc79", null ], + [ "IsZero", "class_matrix.html#a8d6bed263967c53112cafe858e32eb9e", null ], + [ "operator!=", "class_matrix.html#ad83804c5ac0ed0ad487b2c60a0815344", null ], + [ "operator()", "class_matrix.html#a67cd0d0e04d64a43b570bba1ac87110f", null ], + [ "operator()", "class_matrix.html#aa2c6fb4dd5793351db17038cb563a56e", null ], + [ "operator*", "class_matrix.html#afd8729a9684ca684a16e95dac59b9499", null ], + [ "operator*", "class_matrix.html#a08c8beaf4e7332332cf1ca3e08a4e736", null ], + [ "operator*", "class_matrix.html#a9daf57728f2ba01747ef258a12aec758", null ], + [ "operator+", "class_matrix.html#ab11023ceac2685bb1d103620c348cdd2", null ], + [ "operator-", "class_matrix.html#a863621d29437a8ef7c38b3e214ca1f9c", null ], + [ "operator=", "class_matrix.html#abf9e34f58c34dbb9790a82ab0e892f9a", null ], + [ "operator==", "class_matrix.html#ad5017409ae677eedd5e05ecf4cc41557", null ], + [ "SetDiagonal", "class_matrix.html#abf7221c00ea5a8e8bdcbac0c9082d38e", null ], + [ "SetIdentity", "class_matrix.html#aa38198e13dcdd62e61e60cb9b0e93337", null ], + [ "SetInversed", "class_matrix.html#a1e2531318f995ae102d4428c3bdba738", null ], + [ "SetZero", "class_matrix.html#a7b98e3c672cc83e50b0cb6cf33b1ec65", null ], + [ "Transposed", "class_matrix.html#aeb5a5dc25f6b890a27af8f0dbe55cf6d", null ], + [ "operator*", "class_matrix.html#a9d56aa1cdf39b7267b15c3f839bcce43", null ], + [ "operator<<", "class_matrix.html#a1d555eff0c64dbcd766b74b86a160269", null ], + [ "mCol", "class_matrix.html#a536e1df6f18300e3ad1a5b2af3663e22", null ] +]; \ No newline at end of file diff --git a/class_mesh_shape-members.html b/class_mesh_shape-members.html new file mode 100644 index 000000000..064caa5c4 --- /dev/null +++ b/class_mesh_shape-members.html @@ -0,0 +1,200 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshShape Member List
+
+
+ +

This is the complete list of members for MeshShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideMeshShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideMeshShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideMeshShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideMeshShapevirtual
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideMeshShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) constShapeinlinevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetCenterOfMass() constShapeinlinevirtual
GetInnerRadius() const overrideMeshShapeinlinevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const overrideMeshShapevirtual
GetMassProperties() const overrideMeshShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideMeshShapevirtual
GetMaterialIndex(const SubShapeID &inSubShapeID) constMeshShape
GetMaterialList() constMeshShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideMeshShapevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideMeshShapeinlinevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideMeshShapevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideMeshShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideMeshShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideMeshShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideMeshShapevirtual
GetTriangleUserData(const SubShapeID &inSubShapeID) constMeshShape
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideMeshShapeinlinevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) constShapevirtual
MakeScaleValid(Vec3Arg inScale) constShapevirtual
MaterialToIDMap typedefShape
MeshShape()MeshShapeinline
MeshShape(const MeshShapeSettings &inSettings, ShapeResult &outResult)MeshShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() const overrideMeshShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideMeshShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) overrideMeshShapevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) const overrideMeshShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) const overrideMeshShapevirtual
Shape::SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
sDrawTriangleGroupsMeshShapestatic
sDrawTriangleOutlinesMeshShapestatic
SetEmbedded() constRefTarget< Shape >inline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()MeshShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
WalkTree(Visitor &ioVisitor) constMeshShape
WalkTreePerTriangle(const SubShapeIDCreator &inSubShapeIDCreator2, Visitor &ioVisitor) constMeshShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_mesh_shape.html b/class_mesh_shape.html new file mode 100644 index 000000000..c17557e74 --- /dev/null +++ b/class_mesh_shape.html @@ -0,0 +1,1548 @@ + + + + + + + +Jolt Physics: MeshShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MeshShape Class Referencefinal
+
+
+ +

#include <MeshShape.h>

+
+Inheritance diagram for MeshShape:
+
+
+ + +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + +

+Classes

struct  MSGetTrianglesContext
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE MeshShape ()
 Constructor.
 
 MeshShape (const MeshShapeSettings &inSettings, ShapeResult &outResult)
 
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.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
const PhysicsMaterialListGetMaterialList () const
 Get the list of all materials.
 
uint GetMaterialIndex (const SubShapeID &inSubShapeID) const
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const override
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
uint32 GetTriangleUserData (const SubShapeID &inSubShapeID) const
 
template<class Visitor >
JPH_INLINE void WalkTree (Visitor &ioVisitor) const
 
template<class Visitor >
JPH_INLINE void WalkTreePerTriangle (const SubShapeIDCreator &inSubShapeIDCreator2, Visitor &ioVisitor) const
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual Vec3 GetCenterOfMass () const
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual bool IsValidScale (Vec3Arg inScale) const
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + + + + + + + + + +

+Static Public Attributes

static bool sDrawTriangleGroups = false
 
static bool sDrawTriangleOutlines = false
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A mesh shape, consisting of triangles. Mesh shapes are mostly used for static geometry. They can be used by dynamic or kinematic objects but only if they don't collide with other mesh or heightfield shapes as those collisions are currently not supported. Note that if you make a mesh shape a dynamic or kinematic object, you need to provide a mass yourself as mesh shapes don't need to form a closed hull so don't have a well defined volume from which the mass can be calculated.

+

Constructor & Destructor Documentation

+ +

◆ MeshShape() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE MeshShape::MeshShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ MeshShape() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
MeshShape::MeshShape (const MeshShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void MeshShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool MeshShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void MeshShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

See: Shape::CollidePoint Note that for CollidePoint to work for a mesh shape, the mesh needs to be closed (a manifold) or multiple non-intersecting manifolds. Triangles may be facing the interior of the manifold. Insideness is tested by counting the amount of triangles encountered when casting an infinite ray from inPoint. If the number of hits is odd we're inside, if it's even we're outside.

+ +

Implements Shape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void MeshShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void MeshShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float MeshShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox MeshShape::GetLocalBounds () const
+
+overridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties MeshShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMaterial()

+ +
+
+ + + + + +
+ + + + + + + + +
const PhysicsMaterial * MeshShape::GetMaterial (const SubShapeIDinSubShapeID) const
+
+overridevirtual
+
+ +

Get the material assigned to a particular sub shape ID.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMaterialIndex()

+ +
+
+ + + + + + + + +
uint MeshShape::GetMaterialIndex (const SubShapeIDinSubShapeID) const
+
+

Determine which material index a particular sub shape uses (note that if there are no materials this function will return 0 so check the array size) Note: This could for example be used to create a decorator shape around a mesh shape that overrides the GetMaterial call to replace a material with another material.

+ +
+
+ +

◆ GetMaterialList()

+ +
+
+ + + + + +
+ + + + + + + +
const PhysicsMaterialList & MeshShape::GetMaterialList () const
+
+inline
+
+ +

Get the list of all materials.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
Shape::Stats MeshShape::GetStats () const
+
+overridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void MeshShape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3 &outCenterOfBuoyancy  JPH_IF_DEBUG_RENDERER, RVec3Arg inBaseOffset 
) const
+
+inlineoverridevirtual
+
+ +
+
+ +

◆ GetSubShapeIDBitsRecursive()

+ +
+
+ + + + + +
+ + + + + + + +
uint MeshShape::GetSubShapeIDBitsRecursive () const
+
+overridevirtual
+
+ +

Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void MeshShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 MeshShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int MeshShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+overridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void MeshShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Implements Shape.

+ +
+
+ +

◆ GetTriangleUserData()

+ +
+
+ + + + + + + + +
uint32 MeshShape::GetTriangleUserData (const SubShapeIDinSubShapeID) const
+
+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float MeshShape::GetVolume () const
+
+inlineoverridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ MustBeStatic()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool MeshShape::MustBeStatic () const
+
+inlineoverridevirtual
+
+ +

Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void MeshShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreMaterialState()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void MeshShape::RestoreMaterialState (const PhysicsMaterialRefCinMaterials,
uint inNumMaterials 
)
+
+overridevirtual
+
+ +

Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void MeshShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SaveMaterialState()

+ +
+
+ + + + + +
+ + + + + + + + +
void MeshShape::SaveMaterialState (PhysicsMaterialListoutMaterials) const
+
+overridevirtual
+
+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void MeshShape::sRegister ()
+
+static
+
+ +
+
+ +

◆ WalkTree()

+ +
+
+
+template<class Visitor >
+ + + + + + + + +
JPH_INLINE void MeshShape::WalkTree (Visitor & ioVisitor) const
+
+ +
+
+ +

◆ WalkTreePerTriangle()

+ +
+
+
+template<class Visitor >
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE void MeshShape::WalkTreePerTriangle (const SubShapeIDCreatorinSubShapeIDCreator2,
Visitor & ioVisitor 
) const
+
+ +
+
+

Member Data Documentation

+ +

◆ sDrawTriangleGroups

+ +
+
+ + + + + +
+ + + + +
JPH_NAMESPACE_BEGIN bool MeshShape::sDrawTriangleGroups = false
+
+static
+
+ +
+
+ +

◆ sDrawTriangleOutlines

+ +
+
+ + + + + +
+ + + + +
bool MeshShape::sDrawTriangleOutlines = false
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_mesh_shape.js b/class_mesh_shape.js new file mode 100644 index 000000000..d41ee7bf7 --- /dev/null +++ b/class_mesh_shape.js @@ -0,0 +1,33 @@ +var class_mesh_shape = +[ + [ "MSGetTrianglesContext", "struct_mesh_shape_1_1_m_s_get_triangles_context.html", "struct_mesh_shape_1_1_m_s_get_triangles_context" ], + [ "MeshShape", "class_mesh_shape.html#a1a765e94540451cae2d8d01e44f3cf14", null ], + [ "MeshShape", "class_mesh_shape.html#abf6a6e3387b360337377a77659e9e24d", null ], + [ "CastRay", "class_mesh_shape.html#a6a7068bc26b41c75a7ccee0f4bf71cf2", null ], + [ "CastRay", "class_mesh_shape.html#a70a6a50967decae2c6bbb3b435857893", null ], + [ "CollidePoint", "class_mesh_shape.html#a9f8a2bd04e4f014f21cf5da738909fa1", null ], + [ "CollideSoftBodyVertices", "class_mesh_shape.html#aa27e85bf5246ff4d4456b42164eb8c62", null ], + [ "Draw", "class_mesh_shape.html#afb09372cb71fdbe4cca9718557e144d0", null ], + [ "GetInnerRadius", "class_mesh_shape.html#a7c2e775c8d2691c71de1243732dc702a", null ], + [ "GetLocalBounds", "class_mesh_shape.html#a81ce8f3c413f4a72f2a5a5fb00fcc256", null ], + [ "GetMassProperties", "class_mesh_shape.html#aeb665b7fb7702d516f965441b421f997", null ], + [ "GetMaterial", "class_mesh_shape.html#a78ab194a4c2f30c0e0f22160ba06fd37", null ], + [ "GetMaterialIndex", "class_mesh_shape.html#affe7babd3e7126cb8cb089b7a33d3410", null ], + [ "GetMaterialList", "class_mesh_shape.html#abc932809f3332fac2caafb8cb9ff6daf", null ], + [ "GetStats", "class_mesh_shape.html#a9996003623615ba708c420e90e86349e", null ], + [ "GetSubmergedVolume", "class_mesh_shape.html#a08a4d8b005fedbf05db4082bdb39b1aa", null ], + [ "GetSubShapeIDBitsRecursive", "class_mesh_shape.html#a7e26f8abf395dc62026f5c4789e3c378", null ], + [ "GetSupportingFace", "class_mesh_shape.html#ac15cb5e42c9123d08b5dfd7d5928bcad", null ], + [ "GetSurfaceNormal", "class_mesh_shape.html#aad9c34de931c5c15d19cfc7ac200583a", null ], + [ "GetTrianglesNext", "class_mesh_shape.html#a9c170a3cbeccfbfa9349038d0aa5f10c", null ], + [ "GetTrianglesStart", "class_mesh_shape.html#a409b6ac0a7548e275d6f1f2a9b57a19d", null ], + [ "GetTriangleUserData", "class_mesh_shape.html#a3f4c544b5cab768beeefe4d8c8639cff", null ], + [ "GetVolume", "class_mesh_shape.html#a69ed9404f75cceb172a608c746994c09", null ], + [ "MustBeStatic", "class_mesh_shape.html#a99a0706d71a876e3fd589a09a438f84f", null ], + [ "RestoreBinaryState", "class_mesh_shape.html#af84c2f1f9f50380d94a63a1649dd9023", null ], + [ "RestoreMaterialState", "class_mesh_shape.html#ab15580fc2fa9b0e6372cfc7c48f2105f", null ], + [ "SaveBinaryState", "class_mesh_shape.html#a2c264f02bc4379a0b28e90a6aa2985ea", null ], + [ "SaveMaterialState", "class_mesh_shape.html#a8ee3f73b71810e75590dc6bf31f0a072", null ], + [ "WalkTree", "class_mesh_shape.html#ac4c96f9f280e727af47d95a0acccd61f", null ], + [ "WalkTreePerTriangle", "class_mesh_shape.html#aa5e17d589f629cee9660984f03adf2ad", null ] +]; \ No newline at end of file diff --git a/class_mesh_shape.png b/class_mesh_shape.png new file mode 100644 index 000000000..40fa9482e Binary files /dev/null and b/class_mesh_shape.png differ diff --git a/class_mesh_shape_settings-members.html b/class_mesh_shape_settings-members.html new file mode 100644 index 000000000..6300d513a --- /dev/null +++ b/class_mesh_shape_settings-members.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MeshShapeSettings Member List
+
+
+ +

This is the complete list of members for MeshShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
Create() const overrideMeshShapeSettingsvirtual
GetRefCount() constRefTarget< ShapeSettings >inline
mActiveEdgeCosThresholdAngleMeshShapeSettings
mCachedResultShapeSettingsmutableprotected
MeshShapeSettings()=defaultMeshShapeSettings
MeshShapeSettings(const TriangleList &inTriangles, PhysicsMaterialList inMaterials=PhysicsMaterialList())MeshShapeSettings
MeshShapeSettings(VertexList inVertices, IndexedTriangleList inTriangles, PhysicsMaterialList inMaterials=PhysicsMaterialList())MeshShapeSettings
mIndexedTrianglesMeshShapeSettings
mMaterialsMeshShapeSettings
mMaxTrianglesPerLeafMeshShapeSettings
mPerTriangleUserDataMeshShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mTriangleVerticesMeshShapeSettings
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
Sanitize()MeshShapeSettings
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_mesh_shape_settings.html b/class_mesh_shape_settings.html new file mode 100644 index 000000000..4e104536f --- /dev/null +++ b/class_mesh_shape_settings.html @@ -0,0 +1,471 @@ + + + + + + + +Jolt Physics: MeshShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MeshShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a MeshShape. + More...

+ +

#include <MeshShape.h>

+
+Inheritance diagram for MeshShapeSettings:
+
+
+ + +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MeshShapeSettings ()=default
 Default constructor for deserialization.
 
 MeshShapeSettings (const TriangleList &inTriangles, PhysicsMaterialList inMaterials=PhysicsMaterialList())
 Create a mesh shape.
 
 MeshShapeSettings (VertexList inVertices, IndexedTriangleList inTriangles, PhysicsMaterialList inMaterials=PhysicsMaterialList())
 
void Sanitize ()
 Sanitize the mesh data. Remove duplicate and degenerate triangles. This is called automatically when constructing the MeshShapeSettings with a list of (indexed-) triangles.
 
virtual ShapeResult Create () const override
 Create a shape according to the settings specified by this object.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

VertexList mTriangleVertices
 Vertices belonging to mIndexedTriangles.
 
IndexedTriangleList mIndexedTriangles
 
PhysicsMaterialList mMaterials
 Materials assigned to the triangles. Each triangle specifies which material it uses through its mMaterialIndex.
 
uint mMaxTrianglesPerLeaf = 8
 
float mActiveEdgeCosThresholdAngle = 0.996195f
 
bool mPerTriangleUserData = false
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a MeshShape.

+

Constructor & Destructor Documentation

+ +

◆ MeshShapeSettings() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
MeshShapeSettings::MeshShapeSettings ()
+
+default
+
+ +

Default constructor for deserialization.

+ +
+
+ +

◆ MeshShapeSettings() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
MeshShapeSettings::MeshShapeSettings (const TriangleListinTriangles,
PhysicsMaterialList inMaterials = PhysicsMaterialList() 
)
+
+ +

Create a mesh shape.

+ +
+
+ +

◆ MeshShapeSettings() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
MeshShapeSettings::MeshShapeSettings (VertexList inVertices,
IndexedTriangleList inTriangles,
PhysicsMaterialList inMaterials = PhysicsMaterialList() 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + +
ShapeSettings::ShapeResult MeshShapeSettings::Create () const
+
+overridevirtual
+
+ +

Create a shape according to the settings specified by this object.

+ +

Implements ShapeSettings.

+ +
+
+ +

◆ Sanitize()

+ +
+
+ + + + + + + +
void MeshShapeSettings::Sanitize ()
+
+ +

Sanitize the mesh data. Remove duplicate and degenerate triangles. This is called automatically when constructing the MeshShapeSettings with a list of (indexed-) triangles.

+ +
+
+

Member Data Documentation

+ +

◆ mActiveEdgeCosThresholdAngle

+ +
+
+ + + + +
float MeshShapeSettings::mActiveEdgeCosThresholdAngle = 0.996195f
+
+

Cosine of the threshold angle (if the angle between the two triangles is bigger than this, the edge is active, note that a concave edge is always inactive). Setting this value too small can cause ghost collisions with edges, setting it too big can cause depenetration artifacts (objects not depenetrating quickly). Valid ranges are between cos(0 degrees) and cos(90 degrees). The default value is cos(5 degrees).

+ +
+
+ +

◆ mIndexedTriangles

+ +
+
+ + + + +
IndexedTriangleList MeshShapeSettings::mIndexedTriangles
+
+

Original list of indexed triangles (triangles will be reordered internally in the mesh shape). Triangles must be provided in counter clockwise order. Degenerate triangles will automatically be removed during mesh creation but no other mesh simplifications are performed, use an external library if this is desired. For simulation, the triangles are considered to be single sided. For ray casts you can choose to make triangles double sided by setting RayCastSettings::mBackFaceMode to EBackFaceMode::CollideWithBackFaces. For collide shape tests you can use CollideShapeSettings::mBackFaceMode and for shape casts you can use ShapeCastSettings::mBackFaceModeTriangles.

+ +
+
+ +

◆ mMaterials

+ +
+
+ + + + +
PhysicsMaterialList MeshShapeSettings::mMaterials
+
+ +

Materials assigned to the triangles. Each triangle specifies which material it uses through its mMaterialIndex.

+ +
+
+ +

◆ mMaxTrianglesPerLeaf

+ +
+
+ + + + +
uint MeshShapeSettings::mMaxTrianglesPerLeaf = 8
+
+

Maximum number of triangles in each leaf of the axis aligned box tree. This is a balance between memory and performance. Can be in the range [1, MeshShape::MaxTrianglesPerLeaf]. Sensible values are between 4 (for better performance) and 8 (for less memory usage).

+ +
+
+ +

◆ mPerTriangleUserData

+ +
+
+ + + + +
bool MeshShapeSettings::mPerTriangleUserData = false
+
+

When true, we store the user data coming from Triangle::mUserData or IndexedTriangle::mUserData in the mesh shape. This can be used to store additional data like the original index of the triangle in the mesh. Can be retrieved using MeshShape::GetTriangleUserData. Turning this on increases the memory used by the MeshShape by roughly 25%.

+ +
+
+ +

◆ mTriangleVertices

+ +
+
+ + + + +
VertexList MeshShapeSettings::mTriangleVertices
+
+ +

Vertices belonging to mIndexedTriangles.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_mesh_shape_settings.js b/class_mesh_shape_settings.js new file mode 100644 index 000000000..073eb58fc --- /dev/null +++ b/class_mesh_shape_settings.js @@ -0,0 +1,14 @@ +var class_mesh_shape_settings = +[ + [ "MeshShapeSettings", "class_mesh_shape_settings.html#a53088eb2ee555b196c0e50cd5972e07b", null ], + [ "MeshShapeSettings", "class_mesh_shape_settings.html#a4349489150b22e58ecaf7047ea1f71ef", null ], + [ "MeshShapeSettings", "class_mesh_shape_settings.html#a1d3907cc9968cdaff1b6b02dd82a1440", null ], + [ "Create", "class_mesh_shape_settings.html#a637b6c63fe4144952b553754b2463a58", null ], + [ "Sanitize", "class_mesh_shape_settings.html#a34521f76c7a01d659260902de5191553", null ], + [ "mActiveEdgeCosThresholdAngle", "class_mesh_shape_settings.html#ae9cfeaf937adb172ad5fff81997beede", null ], + [ "mIndexedTriangles", "class_mesh_shape_settings.html#a0a95e9bfa23d0743cfb4960874eae5f6", null ], + [ "mMaterials", "class_mesh_shape_settings.html#ac9156bca05e60c7664d540d318dfd361", null ], + [ "mMaxTrianglesPerLeaf", "class_mesh_shape_settings.html#ae20856df51f55d782a3130333ae33a1d", null ], + [ "mPerTriangleUserData", "class_mesh_shape_settings.html#a972eb1eff546f1475d5941e68f54db76", null ], + [ "mTriangleVertices", "class_mesh_shape_settings.html#a53fa50eb7385917c8b1e68e44d746a35", null ] +]; \ No newline at end of file diff --git a/class_mesh_shape_settings.png b/class_mesh_shape_settings.png new file mode 100644 index 000000000..e005aea8b Binary files /dev/null and b/class_mesh_shape_settings.png differ diff --git a/class_morton_code-members.html b/class_morton_code-members.html new file mode 100644 index 000000000..e6739e62a --- /dev/null +++ b/class_morton_code-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MortonCode Member List
+
+
+ +

This is the complete list of members for MortonCode, including all inherited members.

+ + + +
sExpandBits(float inV)MortonCodeinlinestatic
sGetMortonCode(Vec3Arg inVector, const AABox &inVectorBounds)MortonCodeinlinestatic
+
+ + + + diff --git a/class_morton_code.html b/class_morton_code.html new file mode 100644 index 000000000..6402b0b4e --- /dev/null +++ b/class_morton_code.html @@ -0,0 +1,197 @@ + + + + + + + +Jolt Physics: MortonCode Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MortonCode Class Reference
+
+
+ +

#include <MortonCode.h>

+ + + + + + + +

+Static Public Member Functions

static uint32 sExpandBits (float inV)
 
static uint32 sGetMortonCode (Vec3Arg inVector, const AABox &inVectorBounds)
 Calculate the morton code for inVector, given that all vectors lie in inVectorBounds.
 
+

Member Function Documentation

+ +

◆ sExpandBits()

+ +
+
+ + + + + +
+ + + + + + + + +
static uint32 MortonCode::sExpandBits (float inV)
+
+inlinestatic
+
+

First converts a floating point value in the range [0, 1] to a 10 bit fixed point integer. Then expands a 10-bit integer into 30 bits by inserting 2 zeros after each bit.

+ +
+
+ +

◆ sGetMortonCode()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static uint32 MortonCode::sGetMortonCode (Vec3Arg inVector,
const AABoxinVectorBounds 
)
+
+inlinestatic
+
+ +

Calculate the morton code for inVector, given that all vectors lie in inVectorBounds.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_motion_properties-members.html b/class_motion_properties-members.html new file mode 100644 index 000000000..c29a9ec10 --- /dev/null +++ b/class_motion_properties-members.html @@ -0,0 +1,180 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotionProperties Member List
+
+
+ +

This is the complete list of members for MotionProperties, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AccumulateSleepTime(float inDeltaTime, float inTimeBeforeSleep)MotionPropertiesinline
AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)MotionPropertiesinline
AddLinearVelocityStep(Vec3Arg inLinearVelocityChange)MotionPropertiesinline
ApplyForceTorqueAndDragInternal(QuatArg inBodyRotation, Vec3Arg inGravity, float inDeltaTime)MotionPropertiesinline
ApplyGyroscopicForceInternal(QuatArg inBodyRotation, float inDeltaTime)MotionPropertiesinline
BodyMotionPropertiesfriend
BodyManagerMotionPropertiesfriend
cInactiveIndexMotionPropertiesstatic
ClampAngularVelocity()MotionPropertiesinline
ClampLinearVelocity()MotionPropertiesinline
GetAccumulatedForce() constMotionPropertiesinline
GetAccumulatedTorque() constMotionPropertiesinline
GetAllowedDOFs() constMotionPropertiesinline
GetAllowSleeping() constMotionPropertiesinline
GetAngularDamping() constMotionPropertiesinline
GetAngularDOFsMask() constMotionPropertiesinline
GetAngularVelocity() constMotionPropertiesinline
GetGravityFactor() constMotionPropertiesinline
GetIndexInActiveBodiesInternal() constMotionPropertiesinline
GetInertiaRotation() constMotionPropertiesinline
GetInverseInertiaDiagonal() constMotionPropertiesinline
GetInverseInertiaForRotation(Mat44Arg inRotation) constMotionPropertiesinline
GetInverseMass() constMotionPropertiesinline
GetInverseMassUnchecked() constMotionPropertiesinline
GetIslandIndexInternal() constMotionPropertiesinline
GetLinearDamping() constMotionPropertiesinline
GetLinearDOFsMask() constMotionPropertiesinline
GetLinearVelocity() constMotionPropertiesinline
GetLocalSpaceInverseInertia() constMotionPropertiesinline
GetLocalSpaceInverseInertiaUnchecked() constMotionPropertiesinline
GetMaxAngularVelocity() constMotionPropertiesinline
GetMaxLinearVelocity() constMotionPropertiesinline
GetMotionQuality() constMotionPropertiesinline
GetNumPositionStepsOverride() constMotionPropertiesinline
GetNumVelocityStepsOverride() constMotionPropertiesinline
GetPointVelocityCOM(Vec3Arg inPointRelativeToCOM) constMotionPropertiesinline
LockAngular(Vec3Arg inV) constMotionPropertiesinline
LockTranslation(Vec3Arg inV) constMotionPropertiesinline
MoveKinematic(Vec3Arg inDeltaPosition, QuatArg inDeltaRotation, float inDeltaTime)MotionPropertiesinline
MultiplyWorldSpaceInverseInertiaByVector(QuatArg inBodyRotation, Vec3Arg inV) constMotionProperties
ResetForce()MotionPropertiesinline
ResetMotion()MotionPropertiesinline
ResetSleepTestSpheres(const RVec3 *inPoints)MotionPropertiesinline
ResetSleepTestTimer()MotionPropertiesinline
ResetTorque()MotionPropertiesinline
RestoreState(StateRecorder &inStream)MotionProperties
SaveState(StateRecorder &inStream) constMotionProperties
SetAngularDamping(float inAngularDamping)MotionPropertiesinline
SetAngularVelocity(Vec3Arg inAngularVelocity)MotionPropertiesinline
SetAngularVelocityClamped(Vec3Arg inAngularVelocity)MotionPropertiesinline
SetGravityFactor(float inGravityFactor)MotionPropertiesinline
SetInverseInertia(Vec3Arg inDiagonal, QuatArg inRot)MotionPropertiesinline
SetInverseMass(float inInverseMass)MotionPropertiesinline
SetIslandIndexInternal(uint32 inIndex)MotionPropertiesinline
SetLinearDamping(float inLinearDamping)MotionPropertiesinline
SetLinearVelocity(Vec3Arg inLinearVelocity)MotionPropertiesinline
SetLinearVelocityClamped(Vec3Arg inLinearVelocity)MotionPropertiesinline
SetMassProperties(EAllowedDOFs inAllowedDOFs, const MassProperties &inMassProperties)MotionProperties
SetMaxAngularVelocity(float inAngularVelocity)MotionPropertiesinline
SetMaxLinearVelocity(float inLinearVelocity)MotionPropertiesinline
SetNumPositionStepsOverride(uint inN)MotionPropertiesinline
SetNumVelocityStepsOverride(uint inN)MotionPropertiesinline
SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)MotionPropertiesinline
SubLinearVelocityStep(Vec3Arg inLinearVelocityChange)MotionPropertiesinline
+
+ + + + diff --git a/class_motion_properties.html b/class_motion_properties.html new file mode 100644 index 000000000..69f634aa3 --- /dev/null +++ b/class_motion_properties.html @@ -0,0 +1,2080 @@ + + + + + + + +Jolt Physics: MotionProperties Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MotionProperties Class Reference
+
+
+ +

The Body class only keeps track of state for static bodies, the MotionProperties class keeps the additional state needed for a moving Body. It has a 1-on-1 relationship with the body. + More...

+ +

#include <MotionProperties.h>

+
+Inheritance diagram for MotionProperties:
+
+
+ + +SoftBodyMotionProperties + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE EMotionQuality GetMotionQuality () const
 Motion quality, or how well it detects collisions when it has a high velocity.
 
EAllowedDOFs GetAllowedDOFs () const
 Get the allowed degrees of freedom that this body has (this can be changed by calling SetMassProperties)
 
bool GetAllowSleeping () const
 If this body can go to sleep.
 
Vec3 GetLinearVelocity () const
 Get world space linear velocity of the center of mass.
 
void SetLinearVelocity (Vec3Arg inLinearVelocity)
 Set world space linear velocity of the center of mass.
 
void SetLinearVelocityClamped (Vec3Arg inLinearVelocity)
 Set world space linear velocity of the center of mass, will make sure the value is clamped against the maximum linear velocity.
 
Vec3 GetAngularVelocity () const
 Get world space angular velocity of the center of mass.
 
void SetAngularVelocity (Vec3Arg inAngularVelocity)
 Set world space angular velocity of the center of mass.
 
void SetAngularVelocityClamped (Vec3Arg inAngularVelocity)
 Set world space angular velocity of the center of mass, will make sure the value is clamped against the maximum angular velocity.
 
void MoveKinematic (Vec3Arg inDeltaPosition, QuatArg inDeltaRotation, float inDeltaTime)
 Set velocity of body such that it will be rotate/translate by inDeltaPosition/Rotation in inDeltaTime seconds.
 
void ClampLinearVelocity ()
 Clamp velocity according to limit.
 
void ClampAngularVelocity ()
 
float GetLinearDamping () const
 Get linear damping: dv/dt = -c * v. c must be between 0 and 1 but is usually close to 0.
 
void SetLinearDamping (float inLinearDamping)
 
float GetAngularDamping () const
 Get angular damping: dw/dt = -c * w. c must be between 0 and 1 but is usually close to 0.
 
void SetAngularDamping (float inAngularDamping)
 
float GetGravityFactor () const
 Get gravity factor (1 = normal gravity, 0 = no gravity)
 
void SetGravityFactor (float inGravityFactor)
 
void SetMassProperties (EAllowedDOFs inAllowedDOFs, const MassProperties &inMassProperties)
 Set the mass and inertia tensor.
 
float GetInverseMass () const
 Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies have infinite mass so should be treated as 1 / mass = 0)
 
float GetInverseMassUnchecked () const
 
void SetInverseMass (float inInverseMass)
 
Vec3 GetInverseInertiaDiagonal () const
 Diagonal of inverse inertia matrix: D. Should only be called on a dynamic object (static or kinematic bodies have infinite mass so should be treated as D = 0)
 
Quat GetInertiaRotation () const
 Rotation (R) that takes inverse inertia diagonal to local space: \(I_{body}^{-1} = R \: D \: R^{-1}\).
 
void SetInverseInertia (Vec3Arg inDiagonal, QuatArg inRot)
 
Mat44 GetLocalSpaceInverseInertia () const
 Get inverse inertia matrix ( \(I_{body}^{-1}\)). Will be a matrix of zeros for a static or kinematic object.
 
Mat44 GetLocalSpaceInverseInertiaUnchecked () const
 Same as GetLocalSpaceInverseInertia() but doesn't check if the body is dynamic.
 
Mat44 GetInverseInertiaForRotation (Mat44Arg inRotation) const
 Get inverse inertia matrix ( \(I^{-1}\)) for a given object rotation (translation will be ignored). Zero if object is static or kinematic.
 
JPH_INLINE Vec3 MultiplyWorldSpaceInverseInertiaByVector (QuatArg inBodyRotation, Vec3Arg inV) const
 Multiply a vector with the inverse world space inertia tensor ( \(I_{world}^{-1}\)). Zero if object is static or kinematic.
 
JPH_INLINE Vec3 GetPointVelocityCOM (Vec3Arg inPointRelativeToCOM) const
 Velocity of point inPoint (in center of mass space, e.g. on the surface of the body) of the body (unit: m/s)
 
JPH_INLINE Vec3 GetAccumulatedForce () const
 
JPH_INLINE Vec3 GetAccumulatedTorque () const
 
JPH_INLINE void ResetForce ()
 
JPH_INLINE void ResetTorque ()
 
JPH_INLINE void ResetMotion ()
 
JPH_INLINE UVec4 GetLinearDOFsMask () const
 Returns a vector where the linear components that are not allowed by mAllowedDOFs are set to 0 and the rest to 0xffffffff.
 
JPH_INLINE Vec3 LockTranslation (Vec3Arg inV) const
 Takes a translation vector inV and returns a vector where the components that are not allowed by mAllowedDOFs are set to 0.
 
JPH_INLINE UVec4 GetAngularDOFsMask () const
 Returns a vector where the angular components that are not allowed by mAllowedDOFs are set to 0 and the rest to 0xffffffff.
 
JPH_INLINE Vec3 LockAngular (Vec3Arg inV) const
 Takes an angular velocity / torque vector inV and returns a vector where the components that are not allowed by mAllowedDOFs are set to 0.
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when this body is dynamic and colliding. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when this body is dynamic and colliding. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void ApplyGyroscopicForceInternal (QuatArg inBodyRotation, float inDeltaTime)
 Apply the gyroscopic force (aka Dzhanibekov effect, see https://en.wikipedia.org/wiki/Tennis_racket_theorem)
 
void ApplyForceTorqueAndDragInternal (QuatArg inBodyRotation, Vec3Arg inGravity, float inDeltaTime)
 Apply all accumulated forces, torques and drag (should only be called by the PhysicsSystem)
 
uint32 GetIslandIndexInternal () const
 Access to the island index.
 
void SetIslandIndexInternal (uint32 inIndex)
 
uint32 GetIndexInActiveBodiesInternal () const
 Access to the index in the active bodies array.
 
void ResetSleepTestSpheres (const RVec3 *inPoints)
 Reset spheres to center around inPoints with radius 0.
 
void ResetSleepTestTimer ()
 Reset the sleep test timer without resetting the sleep test spheres.
 
ECanSleep AccumulateSleepTime (float inDeltaTime, float inTimeBeforeSleep)
 Accumulate sleep time and return if a body can go to sleep.
 
void SaveState (StateRecorder &inStream) const
 Saving state for replay.
 
void RestoreState (StateRecorder &inStream)
 Restoring state for replay.
 
Velocity limits
float GetMaxLinearVelocity () const
 Maximum linear velocity that a body can achieve. Used to prevent the system from exploding.
 
void SetMaxLinearVelocity (float inLinearVelocity)
 
float GetMaxAngularVelocity () const
 Maximum angular velocity that a body can achieve. Used to prevent the system from exploding.
 
void SetMaxAngularVelocity (float inAngularVelocity)
 
Update linear and angular velocity (used during constraint solving)
void AddLinearVelocityStep (Vec3Arg inLinearVelocityChange)
 
void SubLinearVelocityStep (Vec3Arg inLinearVelocityChange)
 
void AddAngularVelocityStep (Vec3Arg inAngularVelocityChange)
 
void SubAngularVelocityStep (Vec3Arg inAngularVelocityChange)
 
+ + + + +

+Static Public Attributes

static constexpr uint32 cInactiveIndex = uint32(-1)
 Constant indicating that body is not active.
 
+ + + + + +

+Friends

class BodyManager
 
class Body
 
+

Detailed Description

+

The Body class only keeps track of state for static bodies, the MotionProperties class keeps the additional state needed for a moving Body. It has a 1-on-1 relationship with the body.

+

Member Function Documentation

+ +

◆ AccumulateSleepTime()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ECanSleep MotionProperties::AccumulateSleepTime (float inDeltaTime,
float inTimeBeforeSleep 
)
+
+inline
+
+ +

Accumulate sleep time and return if a body can go to sleep.

+ +
+
+ +

◆ AddAngularVelocityStep()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::AddAngularVelocityStep (Vec3Arg inAngularVelocityChange)
+
+inline
+
+ +
+
+ +

◆ AddLinearVelocityStep()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::AddLinearVelocityStep (Vec3Arg inLinearVelocityChange)
+
+inline
+
+ +
+
+ +

◆ ApplyForceTorqueAndDragInternal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void MotionProperties::ApplyForceTorqueAndDragInternal (QuatArg inBodyRotation,
Vec3Arg inGravity,
float inDeltaTime 
)
+
+inline
+
+ +

Apply all accumulated forces, torques and drag (should only be called by the PhysicsSystem)

+ +
+
+ +

◆ ApplyGyroscopicForceInternal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void MotionProperties::ApplyGyroscopicForceInternal (QuatArg inBodyRotation,
float inDeltaTime 
)
+
+inline
+
+ +

Apply the gyroscopic force (aka Dzhanibekov effect, see https://en.wikipedia.org/wiki/Tennis_racket_theorem)

+ +
+
+ +

◆ ClampAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
void MotionProperties::ClampAngularVelocity ()
+
+inline
+
+ +
+
+ +

◆ ClampLinearVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
void MotionProperties::ClampLinearVelocity ()
+
+inline
+
+ +

Clamp velocity according to limit.

+ +
+
+ +

◆ GetAccumulatedForce()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec3 MotionProperties::GetAccumulatedForce () const
+
+inline
+
+ +
+
+ +

◆ GetAccumulatedTorque()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec3 MotionProperties::GetAccumulatedTorque () const
+
+inline
+
+ +
+
+ +

◆ GetAllowedDOFs()

+ +
+
+ + + + + +
+ + + + + + + +
EAllowedDOFs MotionProperties::GetAllowedDOFs () const
+
+inline
+
+ +

Get the allowed degrees of freedom that this body has (this can be changed by calling SetMassProperties)

+ +
+
+ +

◆ GetAllowSleeping()

+ +
+
+ + + + + +
+ + + + + + + +
bool MotionProperties::GetAllowSleeping () const
+
+inline
+
+ +

If this body can go to sleep.

+ +
+
+ +

◆ GetAngularDamping()

+ +
+
+ + + + + +
+ + + + + + + +
float MotionProperties::GetAngularDamping () const
+
+inline
+
+ +

Get angular damping: dw/dt = -c * w. c must be between 0 and 1 but is usually close to 0.

+ +
+
+ +

◆ GetAngularDOFsMask()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE UVec4 MotionProperties::GetAngularDOFsMask () const
+
+inline
+
+ +

Returns a vector where the angular components that are not allowed by mAllowedDOFs are set to 0 and the rest to 0xffffffff.

+ +
+
+ +

◆ GetAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 MotionProperties::GetAngularVelocity () const
+
+inline
+
+ +

Get world space angular velocity of the center of mass.

+ +
+
+ +

◆ GetGravityFactor()

+ +
+
+ + + + + +
+ + + + + + + +
float MotionProperties::GetGravityFactor () const
+
+inline
+
+ +

Get gravity factor (1 = normal gravity, 0 = no gravity)

+ +
+
+ +

◆ GetIndexInActiveBodiesInternal()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 MotionProperties::GetIndexInActiveBodiesInternal () const
+
+inline
+
+ +

Access to the index in the active bodies array.

+ +
+
+ +

◆ GetInertiaRotation()

+ +
+
+ + + + + +
+ + + + + + + +
Quat MotionProperties::GetInertiaRotation () const
+
+inline
+
+ +

Rotation (R) that takes inverse inertia diagonal to local space: \(I_{body}^{-1} = R \: D \: R^{-1}\).

+ +
+
+ +

◆ GetInverseInertiaDiagonal()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 MotionProperties::GetInverseInertiaDiagonal () const
+
+inline
+
+ +

Diagonal of inverse inertia matrix: D. Should only be called on a dynamic object (static or kinematic bodies have infinite mass so should be treated as D = 0)

+ +
+
+ +

◆ GetInverseInertiaForRotation()

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 MotionProperties::GetInverseInertiaForRotation (Mat44Arg inRotation) const
+
+inline
+
+ +

Get inverse inertia matrix ( \(I^{-1}\)) for a given object rotation (translation will be ignored). Zero if object is static or kinematic.

+ +
+
+ +

◆ GetInverseMass()

+ +
+
+ + + + + +
+ + + + + + + +
float MotionProperties::GetInverseMass () const
+
+inline
+
+ +

Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies have infinite mass so should be treated as 1 / mass = 0)

+ +
+
+ +

◆ GetInverseMassUnchecked()

+ +
+
+ + + + + +
+ + + + + + + +
float MotionProperties::GetInverseMassUnchecked () const
+
+inline
+
+ +
+
+ +

◆ GetIslandIndexInternal()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 MotionProperties::GetIslandIndexInternal () const
+
+inline
+
+ +

Access to the island index.

+ +
+
+ +

◆ GetLinearDamping()

+ +
+
+ + + + + +
+ + + + + + + +
float MotionProperties::GetLinearDamping () const
+
+inline
+
+ +

Get linear damping: dv/dt = -c * v. c must be between 0 and 1 but is usually close to 0.

+ +
+
+ +

◆ GetLinearDOFsMask()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE UVec4 MotionProperties::GetLinearDOFsMask () const
+
+inline
+
+ +

Returns a vector where the linear components that are not allowed by mAllowedDOFs are set to 0 and the rest to 0xffffffff.

+ +
+
+ +

◆ GetLinearVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 MotionProperties::GetLinearVelocity () const
+
+inline
+
+ +

Get world space linear velocity of the center of mass.

+ +
+
+ +

◆ GetLocalSpaceInverseInertia()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 MotionProperties::GetLocalSpaceInverseInertia () const
+
+inline
+
+ +

Get inverse inertia matrix ( \(I_{body}^{-1}\)). Will be a matrix of zeros for a static or kinematic object.

+ +
+
+ +

◆ GetLocalSpaceInverseInertiaUnchecked()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 MotionProperties::GetLocalSpaceInverseInertiaUnchecked () const
+
+inline
+
+ +

Same as GetLocalSpaceInverseInertia() but doesn't check if the body is dynamic.

+ +
+
+ +

◆ GetMaxAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
float MotionProperties::GetMaxAngularVelocity () const
+
+inline
+
+ +

Maximum angular velocity that a body can achieve. Used to prevent the system from exploding.

+ +
+
+ +

◆ GetMaxLinearVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
float MotionProperties::GetMaxLinearVelocity () const
+
+inline
+
+ +

Maximum linear velocity that a body can achieve. Used to prevent the system from exploding.

+ +
+
+ +

◆ GetMotionQuality()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE EMotionQuality MotionProperties::GetMotionQuality () const
+
+inline
+
+ +

Motion quality, or how well it detects collisions when it has a high velocity.

+ +
+
+ +

◆ GetNumPositionStepsOverride()

+ +
+
+ + + + + +
+ + + + + + + +
uint MotionProperties::GetNumPositionStepsOverride () const
+
+inline
+
+ +
+
+ +

◆ GetNumVelocityStepsOverride()

+ +
+
+ + + + + +
+ + + + + + + +
uint MotionProperties::GetNumVelocityStepsOverride () const
+
+inline
+
+ +
+
+ +

◆ GetPointVelocityCOM()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec3 MotionProperties::GetPointVelocityCOM (Vec3Arg inPointRelativeToCOM) const
+
+inline
+
+ +

Velocity of point inPoint (in center of mass space, e.g. on the surface of the body) of the body (unit: m/s)

+ +
+
+ +

◆ LockAngular()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec3 MotionProperties::LockAngular (Vec3Arg inV) const
+
+inline
+
+ +

Takes an angular velocity / torque vector inV and returns a vector where the components that are not allowed by mAllowedDOFs are set to 0.

+ +
+
+ +

◆ LockTranslation()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec3 MotionProperties::LockTranslation (Vec3Arg inV) const
+
+inline
+
+ +

Takes a translation vector inV and returns a vector where the components that are not allowed by mAllowedDOFs are set to 0.

+ +
+
+ +

◆ MoveKinematic()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void MotionProperties::MoveKinematic (Vec3Arg inDeltaPosition,
QuatArg inDeltaRotation,
float inDeltaTime 
)
+
+inline
+
+ +

Set velocity of body such that it will be rotate/translate by inDeltaPosition/Rotation in inDeltaTime seconds.

+ +
+
+ +

◆ MultiplyWorldSpaceInverseInertiaByVector()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Vec3 MotionProperties::MultiplyWorldSpaceInverseInertiaByVector (QuatArg inBodyRotation,
Vec3Arg inV 
) const
+
+ +

Multiply a vector with the inverse world space inertia tensor ( \(I_{world}^{-1}\)). Zero if object is static or kinematic.

+ +
+
+ +

◆ ResetForce()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE void MotionProperties::ResetForce ()
+
+inline
+
+ +
+
+ +

◆ ResetMotion()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE void MotionProperties::ResetMotion ()
+
+inline
+
+ +
+
+ +

◆ ResetSleepTestSpheres()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::ResetSleepTestSpheres (const RVec3inPoints)
+
+inline
+
+ +

Reset spheres to center around inPoints with radius 0.

+ +
+
+ +

◆ ResetSleepTestTimer()

+ +
+
+ + + + + +
+ + + + + + + +
void MotionProperties::ResetSleepTestTimer ()
+
+inline
+
+ +

Reset the sleep test timer without resetting the sleep test spheres.

+ +
+
+ +

◆ ResetTorque()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE void MotionProperties::ResetTorque ()
+
+inline
+
+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + + + + +
void MotionProperties::RestoreState (StateRecorderinStream)
+
+ +

Restoring state for replay.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + + + + +
void MotionProperties::SaveState (StateRecorderinStream) const
+
+ +

Saving state for replay.

+ +
+
+ +

◆ SetAngularDamping()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetAngularDamping (float inAngularDamping)
+
+inline
+
+ +
+
+ +

◆ SetAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetAngularVelocity (Vec3Arg inAngularVelocity)
+
+inline
+
+ +

Set world space angular velocity of the center of mass.

+ +
+
+ +

◆ SetAngularVelocityClamped()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetAngularVelocityClamped (Vec3Arg inAngularVelocity)
+
+inline
+
+ +

Set world space angular velocity of the center of mass, will make sure the value is clamped against the maximum angular velocity.

+ +
+
+ +

◆ SetGravityFactor()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetGravityFactor (float inGravityFactor)
+
+inline
+
+ +
+
+ +

◆ SetInverseInertia()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void MotionProperties::SetInverseInertia (Vec3Arg inDiagonal,
QuatArg inRot 
)
+
+inline
+
+

Set the inverse inertia tensor in local space by setting the diagonal and the rotation: \(I_{body}^{-1} = R \: D \: R^{-1}\). Note that mass and inertia are linearly related (e.g. inertia of a sphere with mass m and radius r is \(2/5 \: m \: r^2\)). If you change inertia, mass should probably change as well. See MassProperties::ScaleToMass. If all your rotation degrees of freedom are restricted, make sure this is zero (see EAllowedDOFs).

+ +
+
+ +

◆ SetInverseMass()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetInverseMass (float inInverseMass)
+
+inline
+
+

Set the inverse mass (1 / mass). Note that mass and inertia are linearly related (e.g. inertia of a sphere with mass m and radius r is \(2/5 \: m \: r^2\)). If you change mass, inertia should probably change as well. See MassProperties::ScaleToMass. If all your translation degrees of freedom are restricted, make sure this is zero (see EAllowedDOFs).

+ +
+
+ +

◆ SetIslandIndexInternal()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetIslandIndexInternal (uint32 inIndex)
+
+inline
+
+ +
+
+ +

◆ SetLinearDamping()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetLinearDamping (float inLinearDamping)
+
+inline
+
+ +
+
+ +

◆ SetLinearVelocity()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetLinearVelocity (Vec3Arg inLinearVelocity)
+
+inline
+
+ +

Set world space linear velocity of the center of mass.

+ +
+
+ +

◆ SetLinearVelocityClamped()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetLinearVelocityClamped (Vec3Arg inLinearVelocity)
+
+inline
+
+ +

Set world space linear velocity of the center of mass, will make sure the value is clamped against the maximum linear velocity.

+ +
+
+ +

◆ SetMassProperties()

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void MotionProperties::SetMassProperties (EAllowedDOFs inAllowedDOFs,
const MassPropertiesinMassProperties 
)
+
+ +

Set the mass and inertia tensor.

+ +
+
+ +

◆ SetMaxAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetMaxAngularVelocity (float inAngularVelocity)
+
+inline
+
+ +
+
+ +

◆ SetMaxLinearVelocity()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetMaxLinearVelocity (float inLinearVelocity)
+
+inline
+
+ +
+
+ +

◆ SetNumPositionStepsOverride()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetNumPositionStepsOverride (uint inN)
+
+inline
+
+ +

Used only when this body is dynamic and colliding. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.

+ +
+
+ +

◆ SetNumVelocityStepsOverride()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SetNumVelocityStepsOverride (uint inN)
+
+inline
+
+ +

Used only when this body is dynamic and colliding. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.

+ +
+
+ +

◆ SubAngularVelocityStep()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SubAngularVelocityStep (Vec3Arg inAngularVelocityChange)
+
+inline
+
+ +
+
+ +

◆ SubLinearVelocityStep()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotionProperties::SubLinearVelocityStep (Vec3Arg inLinearVelocityChange)
+
+inline
+
+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ Body

+ +
+
+ + + + + +
+ + + + +
friend class Body
+
+friend
+
+ +
+
+ +

◆ BodyManager

+ +
+
+ + + + + +
+ + + + +
friend class BodyManager
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ cInactiveIndex

+ +
+
+ + + + + +
+ + + + +
constexpr uint32 MotionProperties::cInactiveIndex = uint32(-1)
+
+staticconstexpr
+
+ +

Constant indicating that body is not active.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_motion_properties.js b/class_motion_properties.js new file mode 100644 index 000000000..e948a7b6e --- /dev/null +++ b/class_motion_properties.js @@ -0,0 +1,66 @@ +var class_motion_properties = +[ + [ "AccumulateSleepTime", "class_motion_properties.html#a1342087f5bae51bc6d46542ae29bca66", null ], + [ "AddAngularVelocityStep", "class_motion_properties.html#afb12aa823a651145b46b271570a7af59", null ], + [ "AddLinearVelocityStep", "class_motion_properties.html#a5b570eb5488b3ca5f0c1b48ef0cf6dbe", null ], + [ "ApplyForceTorqueAndDragInternal", "class_motion_properties.html#ae1d0e7670106211909852cd6844286d9", null ], + [ "ApplyGyroscopicForceInternal", "class_motion_properties.html#a78c58cb27772068a0aa3cbe286ddaf0b", null ], + [ "ClampAngularVelocity", "class_motion_properties.html#a098c27b3679ec968b9400a64c53f90c9", null ], + [ "ClampLinearVelocity", "class_motion_properties.html#a2cc70977a90ef8a3bed8a60902f3c2db", null ], + [ "GetAccumulatedForce", "class_motion_properties.html#ab2db20476c9ab24b796a9f5877caaea5", null ], + [ "GetAccumulatedTorque", "class_motion_properties.html#a73cef0ab26c9bc15a2908e632c953bc2", null ], + [ "GetAllowedDOFs", "class_motion_properties.html#ae2bc5e1e111514783c9df29987815516", null ], + [ "GetAllowSleeping", "class_motion_properties.html#ae85a09814d25c0550eb408d3798e7f08", null ], + [ "GetAngularDamping", "class_motion_properties.html#a778022ed795539ac55eb26f7bd4080e6", null ], + [ "GetAngularDOFsMask", "class_motion_properties.html#ae0c08282aaf3b1a38cd958c32840e329", null ], + [ "GetAngularVelocity", "class_motion_properties.html#a66348339a05a43b730e1591273aace18", null ], + [ "GetGravityFactor", "class_motion_properties.html#a512531eb6b5f90a69deca6a0d0889243", null ], + [ "GetIndexInActiveBodiesInternal", "class_motion_properties.html#a8f27aeee8dec3e0e94479bd233ca9d2f", null ], + [ "GetInertiaRotation", "class_motion_properties.html#a300d1a36925946850e301155c70b7bef", null ], + [ "GetInverseInertiaDiagonal", "class_motion_properties.html#a4a60f30bee17d06efaa9fa368f70e260", null ], + [ "GetInverseInertiaForRotation", "class_motion_properties.html#ab95f2b1c9b6bd9b6082f8cee8a7e1858", null ], + [ "GetInverseMass", "class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8", null ], + [ "GetInverseMassUnchecked", "class_motion_properties.html#a5f3ae7ce5fe716cf9dc83f05553164b0", null ], + [ "GetIslandIndexInternal", "class_motion_properties.html#a0907c71717fa56d6af7dfc642bc56e2b", null ], + [ "GetLinearDamping", "class_motion_properties.html#a8f94e1d248e0ff62aa7496e2092924a8", null ], + [ "GetLinearDOFsMask", "class_motion_properties.html#a8da4f3c3b9d4afe28293492923f1dee0", null ], + [ "GetLinearVelocity", "class_motion_properties.html#a6478c1ccabfc23ee9ce98faa0643c080", null ], + [ "GetLocalSpaceInverseInertia", "class_motion_properties.html#ad52e9ac8d614918a8dc9c80f22b4847e", null ], + [ "GetLocalSpaceInverseInertiaUnchecked", "class_motion_properties.html#a994dad1b2bf71b0f0394bec77fcb9b8e", null ], + [ "GetMaxAngularVelocity", "class_motion_properties.html#a5c7901aaa430061775c7c39af08168db", null ], + [ "GetMaxLinearVelocity", "class_motion_properties.html#a322397545544a5b330d68fa894e021cf", null ], + [ "GetMotionQuality", "class_motion_properties.html#acd43aa954cec19be744724fd633f892a", null ], + [ "GetNumPositionStepsOverride", "class_motion_properties.html#a4e7820bc189da3db3f2135686bfa0e9d", null ], + [ "GetNumVelocityStepsOverride", "class_motion_properties.html#a5f3564a6a505e92239eea4ba544fc119", null ], + [ "GetPointVelocityCOM", "class_motion_properties.html#a3b3277de19d5dc081a6e15111f7dc14c", null ], + [ "LockAngular", "class_motion_properties.html#a6bfec52a7ff3345d6fefd3f84faf6be7", null ], + [ "LockTranslation", "class_motion_properties.html#ab7168117a82829c137798ff843900104", null ], + [ "MoveKinematic", "class_motion_properties.html#afc2471d63f11da6c88141a1adedf6149", null ], + [ "MultiplyWorldSpaceInverseInertiaByVector", "class_motion_properties.html#aa8a73ea7940a316151262ed9a28c4fbb", null ], + [ "ResetForce", "class_motion_properties.html#a98ccf77045902a10f5665ba7208b67f4", null ], + [ "ResetMotion", "class_motion_properties.html#a6e4c20984b986f7f3e474eee9d54a612", null ], + [ "ResetSleepTestSpheres", "class_motion_properties.html#aad3b333b7af3e3b39be95edf9b69d133", null ], + [ "ResetSleepTestTimer", "class_motion_properties.html#a9cbe62f9eebdc6f63c82d9e52ef352fe", null ], + [ "ResetTorque", "class_motion_properties.html#afed5a48ab2a5e703c00e2e9ef2e0c68a", null ], + [ "RestoreState", "class_motion_properties.html#a09a1e9e46776c7d15cdd2b19c4a146f6", null ], + [ "SaveState", "class_motion_properties.html#a9e308e4fb4cbb6c7dad8fe6b65d71aca", null ], + [ "SetAngularDamping", "class_motion_properties.html#ae036052c7d094e459a17cdc6c9b8a0ce", null ], + [ "SetAngularVelocity", "class_motion_properties.html#aa647afa51bbc165ebfa4f791fbb1f71f", null ], + [ "SetAngularVelocityClamped", "class_motion_properties.html#a2b76b04c1ab039a881788d8a4ae7c115", null ], + [ "SetGravityFactor", "class_motion_properties.html#a8cc6486eb03942da485948ba1cadb78c", null ], + [ "SetInverseInertia", "class_motion_properties.html#a509aafb031d301cbef7e2efdd16ee3dd", null ], + [ "SetInverseMass", "class_motion_properties.html#a9bf9425aab99ea920b73577819e579b1", null ], + [ "SetIslandIndexInternal", "class_motion_properties.html#a7609b8a4460b1fb13fa4079beff33e92", null ], + [ "SetLinearDamping", "class_motion_properties.html#acebdeeddc6f51f570414a094cf668992", null ], + [ "SetLinearVelocity", "class_motion_properties.html#a083c86092c13479288dcc63c02e11f30", null ], + [ "SetLinearVelocityClamped", "class_motion_properties.html#a5e9dad9b92aa67163bed3200709be901", null ], + [ "SetMassProperties", "class_motion_properties.html#ae935a749f1bb737668ba853c4b1d54df", null ], + [ "SetMaxAngularVelocity", "class_motion_properties.html#a6665e01c407036815ac084edcf28d53f", null ], + [ "SetMaxLinearVelocity", "class_motion_properties.html#ac452632a71e6ba6de822339be8c3ee80", null ], + [ "SetNumPositionStepsOverride", "class_motion_properties.html#ae261a122f450a34d6a9d06e66d21e7f0", null ], + [ "SetNumVelocityStepsOverride", "class_motion_properties.html#a167bd8cbbb918e630e2b297841165234", null ], + [ "SubAngularVelocityStep", "class_motion_properties.html#a98672fc0c6884643944e570e1d78ac07", null ], + [ "SubLinearVelocityStep", "class_motion_properties.html#a81a597bd1f9f40f3fbf36991203a5280", null ], + [ "Body", "class_motion_properties.html#a8858f397a273114ddc1443880bb5540e", null ], + [ "BodyManager", "class_motion_properties.html#a58dc89a83d8c4dc28bd5f6e8c0ed35c8", null ] +]; \ No newline at end of file diff --git a/class_motion_properties.png b/class_motion_properties.png new file mode 100644 index 000000000..2e4d256c2 Binary files /dev/null and b/class_motion_properties.png differ diff --git a/class_motor_settings-members.html b/class_motor_settings-members.html new file mode 100644 index 000000000..687296685 --- /dev/null +++ b/class_motor_settings-members.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotorSettings Member List
+
+
+ +

This is the complete list of members for MotorSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
IsValid() constMotorSettingsinline
mMaxForceLimitMotorSettings
mMaxTorqueLimitMotorSettings
mMinForceLimitMotorSettings
mMinTorqueLimitMotorSettings
MotorSettings()=defaultMotorSettings
MotorSettings(const MotorSettings &)=defaultMotorSettings
MotorSettings(float inFrequency, float inDamping)MotorSettingsinline
MotorSettings(float inFrequency, float inDamping, float inForceLimit, float inTorqueLimit)MotorSettingsinline
mSpringSettingsMotorSettings
operator=(const MotorSettings &)=defaultMotorSettings
RestoreBinaryState(StreamIn &inStream)MotorSettings
SaveBinaryState(StreamOut &inStream) constMotorSettings
SetForceLimit(float inLimit)MotorSettingsinline
SetForceLimits(float inMin, float inMax)MotorSettingsinline
SetTorqueLimit(float inLimit)MotorSettingsinline
SetTorqueLimits(float inMin, float inMax)MotorSettingsinline
+
+ + + + diff --git a/class_motor_settings.html b/class_motor_settings.html new file mode 100644 index 000000000..5dea1560d --- /dev/null +++ b/class_motor_settings.html @@ -0,0 +1,625 @@ + + + + + + + +Jolt Physics: MotorSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MotorSettings Class Reference
+
+
+ +

#include <MotorSettings.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MotorSettings ()=default
 Constructor.
 
 MotorSettings (const MotorSettings &)=default
 
MotorSettingsoperator= (const MotorSettings &)=default
 
 MotorSettings (float inFrequency, float inDamping)
 
 MotorSettings (float inFrequency, float inDamping, float inForceLimit, float inTorqueLimit)
 
void SetForceLimits (float inMin, float inMax)
 Set asymmetric force limits.
 
void SetTorqueLimits (float inMin, float inMax)
 Set asymmetric torque limits.
 
void SetForceLimit (float inLimit)
 Set symmetric force limits.
 
void SetTorqueLimit (float inLimit)
 Set symmetric torque limits.
 
bool IsValid () const
 Check if settings are valid.
 
void SaveBinaryState (StreamOut &inStream) const
 Saves the contents of the motor settings in binary form to inStream.
 
void RestoreBinaryState (StreamIn &inStream)
 Restores contents from the binary stream inStream.
 
+ + + + + + + + + + + + + + + + +

+Public Attributes

SpringSettings mSpringSettings { ESpringMode::FrequencyAndDamping, 2.0f, 1.0f }
 Settings for the spring that is used to drive to the position target (not used when motor is a velocity motor).
 
float mMinForceLimit = -FLT_MAX
 Minimum force to apply in case of a linear constraint (N). Usually this is -mMaxForceLimit unless you want a motor that can e.g. push but not pull. Not used when motor is an angular motor.
 
float mMaxForceLimit = FLT_MAX
 Maximum force to apply in case of a linear constraint (N). Not used when motor is an angular motor.
 
float mMinTorqueLimit = -FLT_MAX
 Minimum torque to apply in case of a angular constraint (N m). Usually this is -mMaxTorqueLimit unless you want a motor that can e.g. push but not pull. Not used when motor is a position motor.
 
float mMaxTorqueLimit = FLT_MAX
 Maximum torque to apply in case of a angular constraint (N m). Not used when motor is a position motor.
 
+

Detailed Description

+

Class that contains the settings for a constraint motor. See the main page of the API documentation for more information on how to configure a motor.

+

Constructor & Destructor Documentation

+ +

◆ MotorSettings() [1/4]

+ +
+
+ + + + + +
+ + + + + + + +
MotorSettings::MotorSettings ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ MotorSettings() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + +
MotorSettings::MotorSettings (const MotorSettings)
+
+default
+
+ +
+
+ +

◆ MotorSettings() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
MotorSettings::MotorSettings (float inFrequency,
float inDamping 
)
+
+inline
+
+ +
+
+ +

◆ MotorSettings() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MotorSettings::MotorSettings (float inFrequency,
float inDamping,
float inForceLimit,
float inTorqueLimit 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ IsValid()

+ +
+
+ + + + + +
+ + + + + + + +
bool MotorSettings::IsValid () const
+
+inline
+
+ +

Check if settings are valid.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
MotorSettings & MotorSettings::operator= (const MotorSettings)
+
+default
+
+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void MotorSettings::RestoreBinaryState (StreamIninStream)
+
+ +

Restores contents from the binary stream inStream.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void MotorSettings::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the contents of the motor settings in binary form to inStream.

+ +
+
+ +

◆ SetForceLimit()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorSettings::SetForceLimit (float inLimit)
+
+inline
+
+ +

Set symmetric force limits.

+ +
+
+ +

◆ SetForceLimits()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void MotorSettings::SetForceLimits (float inMin,
float inMax 
)
+
+inline
+
+ +

Set asymmetric force limits.

+ +
+
+ +

◆ SetTorqueLimit()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorSettings::SetTorqueLimit (float inLimit)
+
+inline
+
+ +

Set symmetric torque limits.

+ +
+
+ +

◆ SetTorqueLimits()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void MotorSettings::SetTorqueLimits (float inMin,
float inMax 
)
+
+inline
+
+ +

Set asymmetric torque limits.

+ +
+
+

Member Data Documentation

+ +

◆ mMaxForceLimit

+ +
+
+ + + + +
float MotorSettings::mMaxForceLimit = FLT_MAX
+
+ +

Maximum force to apply in case of a linear constraint (N). Not used when motor is an angular motor.

+ +
+
+ +

◆ mMaxTorqueLimit

+ +
+
+ + + + +
float MotorSettings::mMaxTorqueLimit = FLT_MAX
+
+ +

Maximum torque to apply in case of a angular constraint (N m). Not used when motor is a position motor.

+ +
+
+ +

◆ mMinForceLimit

+ +
+
+ + + + +
float MotorSettings::mMinForceLimit = -FLT_MAX
+
+ +

Minimum force to apply in case of a linear constraint (N). Usually this is -mMaxForceLimit unless you want a motor that can e.g. push but not pull. Not used when motor is an angular motor.

+ +
+
+ +

◆ mMinTorqueLimit

+ +
+
+ + + + +
float MotorSettings::mMinTorqueLimit = -FLT_MAX
+
+ +

Minimum torque to apply in case of a angular constraint (N m). Usually this is -mMaxTorqueLimit unless you want a motor that can e.g. push but not pull. Not used when motor is a position motor.

+ +
+
+ +

◆ mSpringSettings

+ +
+
+ + + + +
SpringSettings MotorSettings::mSpringSettings { ESpringMode::FrequencyAndDamping, 2.0f, 1.0f }
+
+ +

Settings for the spring that is used to drive to the position target (not used when motor is a velocity motor).

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_motor_settings.js b/class_motor_settings.js new file mode 100644 index 000000000..40f781c9e --- /dev/null +++ b/class_motor_settings.js @@ -0,0 +1,20 @@ +var class_motor_settings = +[ + [ "MotorSettings", "class_motor_settings.html#a9931c598c884e6be4baea88a612ef59e", null ], + [ "MotorSettings", "class_motor_settings.html#a3da51e1a3f8feb8e6a2b056c7e26d24b", null ], + [ "MotorSettings", "class_motor_settings.html#a81a42488fb27a4e36f3f2802bca0bdcc", null ], + [ "MotorSettings", "class_motor_settings.html#a280a8c958af57873bd500de0104ef574", null ], + [ "IsValid", "class_motor_settings.html#a86075f9a0d21b35897e7f6f7e9c50fbc", null ], + [ "operator=", "class_motor_settings.html#a33d51a2bb5a231a689a1620577aed53a", null ], + [ "RestoreBinaryState", "class_motor_settings.html#a0d171537fc44218d3c3a6159a95aab74", null ], + [ "SaveBinaryState", "class_motor_settings.html#ac0a3de2c2c2545e381d5c00014bef682", null ], + [ "SetForceLimit", "class_motor_settings.html#a7dbbf359da6a861e6876f702650dd5ea", null ], + [ "SetForceLimits", "class_motor_settings.html#a35ce9e0a888fed7059694121e7d8e66f", null ], + [ "SetTorqueLimit", "class_motor_settings.html#a8eeaad102049c8586b180f516119ddeb", null ], + [ "SetTorqueLimits", "class_motor_settings.html#a3953c02a21926f36d415e805ffce289c", null ], + [ "mMaxForceLimit", "class_motor_settings.html#aacf73d5d1dc3d729ed505b01f2b91425", null ], + [ "mMaxTorqueLimit", "class_motor_settings.html#a53921d266a57d01aa6833ca3fe09c3a7", null ], + [ "mMinForceLimit", "class_motor_settings.html#ac8b066324ceb0052a8ff637e77d4e9c1", null ], + [ "mMinTorqueLimit", "class_motor_settings.html#a7073ab453c838bef080a3386da6927bd", null ], + [ "mSpringSettings", "class_motor_settings.html#a5a51d3f04aa12947eb85d08a1f01dab6", null ] +]; \ No newline at end of file diff --git a/class_motorcycle_controller-members.html b/class_motorcycle_controller-members.html new file mode 100644 index 000000000..71df8c2c4 --- /dev/null +++ b/class_motorcycle_controller-members.html @@ -0,0 +1,204 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotorcycleController Member List
+
+
+ +

This is the complete list of members for MotorcycleController, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< VehicleController >inline
AllowSleep() const overrideWheeledVehicleControllerprotectedvirtual
cEmbeddedRefTarget< VehicleController >protectedstatic
ConstructWheel(const WheelSettings &inWheel) const overrideWheeledVehicleControllerinlineprotectedvirtual
Differentials typedefWheeledVehicleController
Draw(DebugRenderer *inRenderer) const overrideMotorcycleControllerprotectedvirtual
EnableLeanController(bool inEnable)MotorcycleControllerinline
EnableLeanSteeringLimit(bool inEnable)MotorcycleControllerinline
GetBrakeInput() constWheeledVehicleControllerinline
GetDifferentialLimitedSlipRatio() constWheeledVehicleControllerinline
GetDifferentials() constWheeledVehicleControllerinline
GetDifferentials()WheeledVehicleControllerinline
GetEngine() constWheeledVehicleControllerinline
GetEngine()WheeledVehicleControllerinline
GetForwardInput() constWheeledVehicleControllerinline
GetHandBrakeInput() constWheeledVehicleControllerinline
GetLeanSmoothingFactor() constMotorcycleControllerinline
GetLeanSpringConstant() constMotorcycleControllerinline
GetLeanSpringDamping() constMotorcycleControllerinline
GetLeanSpringIntegrationCoefficient() constMotorcycleControllerinline
GetLeanSpringIntegrationCoefficientDecay() constMotorcycleControllerinline
GetRefCount() constRefTarget< VehicleController >inline
GetRightInput() constWheeledVehicleControllerinline
GetTireMaxImpulseCallback() constWheeledVehicleControllerinline
GetTransmission() constWheeledVehicleControllerinline
GetTransmission()WheeledVehicleControllerinline
GetWheelBase() constMotorcycleController
GetWheelSpeedAtClutch() constWheeledVehicleController
IsLeanControllerEnabled() constMotorcycleControllerinline
IsLeanSteeringLimitEnabled() constMotorcycleControllerinline
mAppliedImpulseMotorcycleControllerprotected
mBrakeInputWheeledVehicleControllerprotected
mConstraintVehicleControllerprotected
mDifferentialLimitedSlipRatioWheeledVehicleControllerprotected
mDifferentialsWheeledVehicleControllerprotected
mEnableLeanControllerMotorcycleControllerprotected
mEnableLeanSteeringLimitMotorcycleControllerprotected
mEngineWheeledVehicleControllerprotected
mForwardInputWheeledVehicleControllerprotected
mHandBrakeInputWheeledVehicleControllerprotected
mLeanSmoothingFactorMotorcycleControllerprotected
mLeanSpringConstantMotorcycleControllerprotected
mLeanSpringDampingMotorcycleControllerprotected
mLeanSpringIntegratedDeltaAngleMotorcycleControllerprotected
mLeanSpringIntegrationCoefficientMotorcycleControllerprotected
mLeanSpringIntegrationCoefficientDecayMotorcycleControllerprotected
mMaxLeanAngleMotorcycleControllerprotected
MotorcycleController(const MotorcycleControllerSettings &inSettings, VehicleConstraint &inConstraint)MotorcycleController
mPreviousDeltaTimeWheeledVehicleControllerprotected
mRefCountRefTarget< VehicleController >mutableprotected
mRightInputWheeledVehicleControllerprotected
mRPMMeterPositionWheeledVehicleControllerprotected
mRPMMeterSizeWheeledVehicleControllerprotected
mTargetLeanMotorcycleControllerprotected
mTireMaxImpulseCallbackWheeledVehicleControllerprotected
mTransmissionWheeledVehicleControllerprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< VehicleController >::operator=(const RefTarget &)RefTarget< VehicleController >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PostCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) overrideWheeledVehicleControllerprotectedvirtual
PreCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) overrideMotorcycleControllerprotectedvirtual
RefTarget()=defaultRefTarget< VehicleController >inline
RefTarget(const RefTarget &)RefTarget< VehicleController >inline
Release() constRefTarget< VehicleController >inline
RestoreState(StateRecorder &inStream) overrideMotorcycleControllerprotectedvirtual
SaveState(StateRecorder &inStream) const overrideMotorcycleControllerprotectedvirtual
SetBrakeInput(float inBrake)WheeledVehicleControllerinline
SetDifferentialLimitedSlipRatio(float inV)WheeledVehicleControllerinline
SetDriverInput(float inForward, float inRight, float inBrake, float inHandBrake)WheeledVehicleControllerinline
SetEmbedded() constRefTarget< VehicleController >inline
SetForwardInput(float inForward)WheeledVehicleControllerinline
SetHandBrakeInput(float inHandBrake)WheeledVehicleControllerinline
SetLeanSmoothingFactor(float inFactor)MotorcycleControllerinline
SetLeanSpringConstant(float inConstant)MotorcycleControllerinline
SetLeanSpringDamping(float inDamping)MotorcycleControllerinline
SetLeanSpringIntegrationCoefficient(float inCoefficient)MotorcycleControllerinline
SetLeanSpringIntegrationCoefficientDecay(float inDecay)MotorcycleControllerinline
SetRightInput(float inRight)WheeledVehicleControllerinline
SetRPMMeter(Vec3Arg inPosition, float inSize)WheeledVehicleControllerinline
SetTireMaxImpulseCallback(const TireMaxImpulseCallback &inTireMaxImpulseCallback)WheeledVehicleControllerinline
sInternalGetRefCountOffset()RefTarget< VehicleController >inlinestatic
SolveLongitudinalAndLateralConstraints(float inDeltaTime) overrideMotorcycleControllerprotectedvirtual
TireMaxImpulseCallback typedefWheeledVehicleController
VehicleController(VehicleConstraint &inConstraint)VehicleControllerinlineexplicit
WheeledVehicleController(const WheeledVehicleControllerSettings &inSettings, VehicleConstraint &inConstraint)WheeledVehicleController
~RefTarget()RefTarget< VehicleController >inline
~VehicleController()=defaultVehicleControllervirtual
+
+ + + + diff --git a/class_motorcycle_controller.html b/class_motorcycle_controller.html new file mode 100644 index 000000000..d9041c796 --- /dev/null +++ b/class_motorcycle_controller.html @@ -0,0 +1,1204 @@ + + + + + + + +Jolt Physics: MotorcycleController Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MotorcycleController Class Reference
+
+
+ +

Runtime controller class. + More...

+ +

#include <MotorcycleController.h>

+
+Inheritance diagram for MotorcycleController:
+
+
+ + +WheeledVehicleController +VehicleController +RefTarget< VehicleController > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE MotorcycleController (const MotorcycleControllerSettings &inSettings, VehicleConstraint &inConstraint)
 Constructor.
 
float GetWheelBase () const
 Get the distance between the front and back wheels.
 
void EnableLeanController (bool inEnable)
 Enable or disable the lean spring. This allows you to temporarily disable the lean spring to allow the motorcycle to fall over.
 
bool IsLeanControllerEnabled () const
 Check if the lean spring is enabled.
 
void EnableLeanSteeringLimit (bool inEnable)
 Enable or disable the lean steering limit. When enabled (default) the steering angle is limited based on the vehicle speed to prevent steering that would cause an inertial force that causes the motorcycle to topple over.
 
bool IsLeanSteeringLimitEnabled () const
 
void SetLeanSpringConstant (float inConstant)
 Spring constant for the lean spring.
 
float GetLeanSpringConstant () const
 
void SetLeanSpringDamping (float inDamping)
 Spring damping constant for the lean spring.
 
float GetLeanSpringDamping () const
 
void SetLeanSpringIntegrationCoefficient (float inCoefficient)
 The lean spring applies an additional force equal to this coefficient * Integral(delta angle, 0, t), this effectively makes the lean spring a PID controller.
 
float GetLeanSpringIntegrationCoefficient () const
 
void SetLeanSpringIntegrationCoefficientDecay (float inDecay)
 How much to decay the angle integral when the wheels are not touching the floor: new_value = e^(-decay * t) * initial_value.
 
float GetLeanSpringIntegrationCoefficientDecay () const
 
void SetLeanSmoothingFactor (float inFactor)
 
float GetLeanSmoothingFactor () const
 
- Public Member Functions inherited from WheeledVehicleController
JPH_OVERRIDE_NEW_DELETE WheeledVehicleController (const WheeledVehicleControllerSettings &inSettings, VehicleConstraint &inConstraint)
 Constructor.
 
void SetDriverInput (float inForward, float inRight, float inBrake, float inHandBrake)
 
void SetForwardInput (float inForward)
 Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed.
 
float GetForwardInput () const
 
void SetRightInput (float inRight)
 Value between -1 and 1 indicating desired steering angle (1 = right)
 
float GetRightInput () const
 
void SetBrakeInput (float inBrake)
 Value between 0 and 1 indicating how strong the brake pedal is pressed.
 
float GetBrakeInput () const
 
void SetHandBrakeInput (float inHandBrake)
 Value between 0 and 1 indicating how strong the hand brake is pulled.
 
float GetHandBrakeInput () const
 
const VehicleEngineGetEngine () const
 Get current engine state.
 
VehicleEngineGetEngine ()
 Get current engine state (writable interface, allows you to make changes to the configuration which will take effect the next time step)
 
const VehicleTransmissionGetTransmission () const
 Get current transmission state.
 
VehicleTransmissionGetTransmission ()
 Get current transmission state (writable interface, allows you to make changes to the configuration which will take effect the next time step)
 
const DifferentialsGetDifferentials () const
 Get the differentials this vehicle has.
 
DifferentialsGetDifferentials ()
 Get the differentials this vehicle has (writable interface, allows you to make changes to the configuration which will take effect the next time step)
 
float GetDifferentialLimitedSlipRatio () const
 Ratio max / min average wheel speed of each differential (measured at the clutch).
 
void SetDifferentialLimitedSlipRatio (float inV)
 
float GetWheelSpeedAtClutch () const
 Get the average wheel speed of all driven wheels (measured at the clutch)
 
const TireMaxImpulseCallbackGetTireMaxImpulseCallback () const
 
void SetTireMaxImpulseCallback (const TireMaxImpulseCallback &inTireMaxImpulseCallback)
 
void SetRPMMeter (Vec3Arg inPosition, float inSize)
 Debug drawing of RPM meter.
 
- Public Member Functions inherited from VehicleController
JPH_OVERRIDE_NEW_DELETE VehicleController (VehicleConstraint &inConstraint)
 Constructor / destructor.
 
virtual ~VehicleController ()=default
 
- Public Member Functions inherited from RefTarget< VehicleController >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual void PreCollide (float inDeltaTime, PhysicsSystem &inPhysicsSystem) override
 
virtual bool SolveLongitudinalAndLateralConstraints (float inDeltaTime) override
 
virtual void SaveState (StateRecorder &inStream) const override
 
virtual void RestoreState (StateRecorder &inStream) override
 
virtual void Draw (DebugRenderer *inRenderer) const override
 
- Protected Member Functions inherited from WheeledVehicleController
virtual WheelConstructWheel (const WheelSettings &inWheel) const override
 
virtual bool AllowSleep () const override
 
virtual void PostCollide (float inDeltaTime, PhysicsSystem &inPhysicsSystem) override
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

bool mEnableLeanController = true
 
bool mEnableLeanSteeringLimit = true
 
float mMaxLeanAngle
 
float mLeanSpringConstant
 
float mLeanSpringDamping
 
float mLeanSpringIntegrationCoefficient
 
float mLeanSpringIntegrationCoefficientDecay
 
float mLeanSmoothingFactor
 
Vec3 mTargetLean = Vec3::sZero()
 
float mLeanSpringIntegratedDeltaAngle = 0.0f
 
float mAppliedImpulse = 0.0f
 
- Protected Attributes inherited from WheeledVehicleController
float mForwardInput = 0.0f
 Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed.
 
float mRightInput = 0.0f
 Value between -1 and 1 indicating desired steering angle.
 
float mBrakeInput = 0.0f
 Value between 0 and 1 indicating how strong the brake pedal is pressed.
 
float mHandBrakeInput = 0.0f
 Value between 0 and 1 indicating how strong the hand brake is pulled.
 
VehicleEngine mEngine
 Engine state of the vehicle.
 
VehicleTransmission mTransmission
 Transmission state of the vehicle.
 
Differentials mDifferentials
 Differential states of the vehicle.
 
float mDifferentialLimitedSlipRatio
 Ratio max / min average wheel speed of each differential (measured at the clutch).
 
float mPreviousDeltaTime = 0.0f
 Delta time of the last step.
 
TireMaxImpulseCallback mTireMaxImpulseCallback
 
Vec3 mRPMMeterPosition { 0, 1, 0 }
 Position (in local space of the body) of the RPM meter when drawing the constraint.
 
float mRPMMeterSize = 0.5f
 Size of the RPM meter when drawing the constraint.
 
- Protected Attributes inherited from VehicleController
VehicleConstraintmConstraint
 The vehicle constraint we belong to.
 
- Protected Attributes inherited from RefTarget< VehicleController >
atomic< uint32mRefCount
 Current reference count.
 
+ + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from WheeledVehicleController
using Differentials = Array< VehicleDifferentialSettings >
 Typedefs.
 
using TireMaxImpulseCallback = function< void(uint inWheelIndex, float &outLongitudinalImpulse, float &outLateralImpulse, float inSuspensionImpulse, float inLongitudinalFriction, float inLateralFriction, float inLongitudinalSlip, float inLateralSlip, float inDeltaTime)>
 Calculate max tire impulses by combining friction, slip, and suspension impulse. Note that the actual applied impulse may be lower (e.g. when the vehicle is stationary on a horizontal surface the actual impulse applied will be 0).
 
- Static Public Member Functions inherited from RefTarget< VehicleController >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Static Protected Attributes inherited from RefTarget< VehicleController >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Runtime controller class.

+

Constructor & Destructor Documentation

+ +

◆ MotorcycleController()

+ +
+
+ + + + + + + + + + + + + + + + + + +
MotorcycleController::MotorcycleController (const MotorcycleControllerSettingsinSettings,
VehicleConstraintinConstraint 
)
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorcycleController::Draw (DebugRendererinRenderer) const
+
+overrideprotectedvirtual
+
+ +

Reimplemented from WheeledVehicleController.

+ +
+
+ +

◆ EnableLeanController()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorcycleController::EnableLeanController (bool inEnable)
+
+inline
+
+ +

Enable or disable the lean spring. This allows you to temporarily disable the lean spring to allow the motorcycle to fall over.

+ +
+
+ +

◆ EnableLeanSteeringLimit()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorcycleController::EnableLeanSteeringLimit (bool inEnable)
+
+inline
+
+ +

Enable or disable the lean steering limit. When enabled (default) the steering angle is limited based on the vehicle speed to prevent steering that would cause an inertial force that causes the motorcycle to topple over.

+ +
+
+ +

◆ GetLeanSmoothingFactor()

+ +
+
+ + + + + +
+ + + + + + + +
float MotorcycleController::GetLeanSmoothingFactor () const
+
+inline
+
+ +
+
+ +

◆ GetLeanSpringConstant()

+ +
+
+ + + + + +
+ + + + + + + +
float MotorcycleController::GetLeanSpringConstant () const
+
+inline
+
+ +
+
+ +

◆ GetLeanSpringDamping()

+ +
+
+ + + + + +
+ + + + + + + +
float MotorcycleController::GetLeanSpringDamping () const
+
+inline
+
+ +
+
+ +

◆ GetLeanSpringIntegrationCoefficient()

+ +
+
+ + + + + +
+ + + + + + + +
float MotorcycleController::GetLeanSpringIntegrationCoefficient () const
+
+inline
+
+ +
+
+ +

◆ GetLeanSpringIntegrationCoefficientDecay()

+ +
+
+ + + + + +
+ + + + + + + +
float MotorcycleController::GetLeanSpringIntegrationCoefficientDecay () const
+
+inline
+
+ +
+
+ +

◆ GetWheelBase()

+ +
+
+ + + + + + + +
float MotorcycleController::GetWheelBase () const
+
+ +

Get the distance between the front and back wheels.

+ +
+
+ +

◆ IsLeanControllerEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
bool MotorcycleController::IsLeanControllerEnabled () const
+
+inline
+
+ +

Check if the lean spring is enabled.

+ +
+
+ +

◆ IsLeanSteeringLimitEnabled()

+ +
+
+ + + + + +
+ + + + + + + +
bool MotorcycleController::IsLeanSteeringLimitEnabled () const
+
+inline
+
+ +
+
+ +

◆ PreCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void MotorcycleController::PreCollide (float inDeltaTime,
PhysicsSysteminPhysicsSystem 
)
+
+overrideprotectedvirtual
+
+ +

Reimplemented from WheeledVehicleController.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorcycleController::RestoreState (StateRecorderinStream)
+
+overrideprotectedvirtual
+
+ +

Reimplemented from WheeledVehicleController.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorcycleController::SaveState (StateRecorderinStream) const
+
+overrideprotectedvirtual
+
+ +

Reimplemented from WheeledVehicleController.

+ +
+
+ +

◆ SetLeanSmoothingFactor()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorcycleController::SetLeanSmoothingFactor (float inFactor)
+
+inline
+
+

How much to smooth the lean angle (0 = no smoothing, 1 = lean angle never changes) Note that this is frame rate dependent because the formula is: smoothing_factor * previous + (1 - smoothing_factor) * current

+ +
+
+ +

◆ SetLeanSpringConstant()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorcycleController::SetLeanSpringConstant (float inConstant)
+
+inline
+
+ +

Spring constant for the lean spring.

+ +
+
+ +

◆ SetLeanSpringDamping()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorcycleController::SetLeanSpringDamping (float inDamping)
+
+inline
+
+ +

Spring damping constant for the lean spring.

+ +
+
+ +

◆ SetLeanSpringIntegrationCoefficient()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorcycleController::SetLeanSpringIntegrationCoefficient (float inCoefficient)
+
+inline
+
+ +

The lean spring applies an additional force equal to this coefficient * Integral(delta angle, 0, t), this effectively makes the lean spring a PID controller.

+ +
+
+ +

◆ SetLeanSpringIntegrationCoefficientDecay()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorcycleController::SetLeanSpringIntegrationCoefficientDecay (float inDecay)
+
+inline
+
+ +

How much to decay the angle integral when the wheels are not touching the floor: new_value = e^(-decay * t) * initial_value.

+ +
+
+ +

◆ SolveLongitudinalAndLateralConstraints()

+ +
+
+ + + + + +
+ + + + + + + + +
bool MotorcycleController::SolveLongitudinalAndLateralConstraints (float inDeltaTime)
+
+overrideprotectedvirtual
+
+ +

Reimplemented from WheeledVehicleController.

+ +
+
+

Member Data Documentation

+ +

◆ mAppliedImpulse

+ +
+
+ + + + + +
+ + + + +
float MotorcycleController::mAppliedImpulse = 0.0f
+
+protected
+
+ +
+
+ +

◆ mEnableLeanController

+ +
+
+ + + + + +
+ + + + +
bool MotorcycleController::mEnableLeanController = true
+
+protected
+
+ +
+
+ +

◆ mEnableLeanSteeringLimit

+ +
+
+ + + + + +
+ + + + +
bool MotorcycleController::mEnableLeanSteeringLimit = true
+
+protected
+
+ +
+
+ +

◆ mLeanSmoothingFactor

+ +
+
+ + + + + +
+ + + + +
float MotorcycleController::mLeanSmoothingFactor
+
+protected
+
+ +
+
+ +

◆ mLeanSpringConstant

+ +
+
+ + + + + +
+ + + + +
float MotorcycleController::mLeanSpringConstant
+
+protected
+
+ +
+
+ +

◆ mLeanSpringDamping

+ +
+
+ + + + + +
+ + + + +
float MotorcycleController::mLeanSpringDamping
+
+protected
+
+ +
+
+ +

◆ mLeanSpringIntegratedDeltaAngle

+ +
+
+ + + + + +
+ + + + +
float MotorcycleController::mLeanSpringIntegratedDeltaAngle = 0.0f
+
+protected
+
+ +
+
+ +

◆ mLeanSpringIntegrationCoefficient

+ +
+
+ + + + + +
+ + + + +
float MotorcycleController::mLeanSpringIntegrationCoefficient
+
+protected
+
+ +
+
+ +

◆ mLeanSpringIntegrationCoefficientDecay

+ +
+
+ + + + + +
+ + + + +
float MotorcycleController::mLeanSpringIntegrationCoefficientDecay
+
+protected
+
+ +
+
+ +

◆ mMaxLeanAngle

+ +
+
+ + + + + +
+ + + + +
float MotorcycleController::mMaxLeanAngle
+
+protected
+
+ +
+
+ +

◆ mTargetLean

+ +
+
+ + + + + +
+ + + + +
Vec3 MotorcycleController::mTargetLean = Vec3::sZero()
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_motorcycle_controller.js b/class_motorcycle_controller.js new file mode 100644 index 000000000..0fcf69b81 --- /dev/null +++ b/class_motorcycle_controller.js @@ -0,0 +1,35 @@ +var class_motorcycle_controller = +[ + [ "MotorcycleController", "class_motorcycle_controller.html#aed5939c4ba195b16de315229faa5d64f", null ], + [ "Draw", "class_motorcycle_controller.html#ad6cec4ca1b528d91c5ff6e5d6f225b2b", null ], + [ "EnableLeanController", "class_motorcycle_controller.html#ac0d6c78cc5ee2dd850f535a972875df8", null ], + [ "EnableLeanSteeringLimit", "class_motorcycle_controller.html#a70f9325f8dde2c3ef76148f45332fc1a", null ], + [ "GetLeanSmoothingFactor", "class_motorcycle_controller.html#a9d7a05e2d9311d373f33354e4d75e543", null ], + [ "GetLeanSpringConstant", "class_motorcycle_controller.html#a7e63f90a4b0c4a787374c1724d3999d6", null ], + [ "GetLeanSpringDamping", "class_motorcycle_controller.html#adfe9afcb3c52f6f6012f61e55cb9fc1d", null ], + [ "GetLeanSpringIntegrationCoefficient", "class_motorcycle_controller.html#ad4a48da07b7959ee53165b149d82c7e9", null ], + [ "GetLeanSpringIntegrationCoefficientDecay", "class_motorcycle_controller.html#a52a7c8e605868fe0905235c8baa598b0", null ], + [ "GetWheelBase", "class_motorcycle_controller.html#ab3fdaf44396f6325dccb7cc1e8aab6a7", null ], + [ "IsLeanControllerEnabled", "class_motorcycle_controller.html#a45023171410fa8b5abcdce36068dd10c", null ], + [ "IsLeanSteeringLimitEnabled", "class_motorcycle_controller.html#ab992be424860c4da8e88968ca7cbe45b", null ], + [ "PreCollide", "class_motorcycle_controller.html#a8ef4e6dc7edda1ad1d6219b38c4a8e66", null ], + [ "RestoreState", "class_motorcycle_controller.html#a6487c412c79e33f47863ab08f2b63935", null ], + [ "SaveState", "class_motorcycle_controller.html#aaf36cea2087933532624f37c78052a93", null ], + [ "SetLeanSmoothingFactor", "class_motorcycle_controller.html#a209159d85e6c261382551e7fe12afd18", null ], + [ "SetLeanSpringConstant", "class_motorcycle_controller.html#aaa1568ff36c906b58c45ea69724bb67a", null ], + [ "SetLeanSpringDamping", "class_motorcycle_controller.html#aaf88f2fed53bad1a7fa94521097b68a5", null ], + [ "SetLeanSpringIntegrationCoefficient", "class_motorcycle_controller.html#af2c273bd46e6a59e6b818949d294d4ef", null ], + [ "SetLeanSpringIntegrationCoefficientDecay", "class_motorcycle_controller.html#adc5db8e0b1290ccf6ea77676d129cb1a", null ], + [ "SolveLongitudinalAndLateralConstraints", "class_motorcycle_controller.html#a2cbe39aef2e451e60fb0a021e8d31d92", null ], + [ "mAppliedImpulse", "class_motorcycle_controller.html#ad9e7a708da11a8da6e91bbb4c56b08d7", null ], + [ "mEnableLeanController", "class_motorcycle_controller.html#a2d5d508db4203835f4b683a1eea97615", null ], + [ "mEnableLeanSteeringLimit", "class_motorcycle_controller.html#ad3494edd19039ec352b2454a9fc883e3", null ], + [ "mLeanSmoothingFactor", "class_motorcycle_controller.html#a7196a7d0932e3e537e39514385e7184c", null ], + [ "mLeanSpringConstant", "class_motorcycle_controller.html#a688718567a63ba567e52c13dab088373", null ], + [ "mLeanSpringDamping", "class_motorcycle_controller.html#a97fa55bb4283d82101118a7cb3c789b8", null ], + [ "mLeanSpringIntegratedDeltaAngle", "class_motorcycle_controller.html#a0fef8cc24d8f3afa9ec59a015fbd0639", null ], + [ "mLeanSpringIntegrationCoefficient", "class_motorcycle_controller.html#a159abc09d514573ce94519c424244a11", null ], + [ "mLeanSpringIntegrationCoefficientDecay", "class_motorcycle_controller.html#a745a8a1838cf92a9bf7a993dc105e541", null ], + [ "mMaxLeanAngle", "class_motorcycle_controller.html#a55d13eac40efa2eef9a7d87f23c39405", null ], + [ "mTargetLean", "class_motorcycle_controller.html#a9b83a81c63978a8048d781e9dc4ceddb", null ] +]; \ No newline at end of file diff --git a/class_motorcycle_controller.png b/class_motorcycle_controller.png new file mode 100644 index 000000000..728639a02 Binary files /dev/null and b/class_motorcycle_controller.png differ diff --git a/class_motorcycle_controller_settings-members.html b/class_motorcycle_controller_settings-members.html new file mode 100644 index 000000000..259dc3124 --- /dev/null +++ b/class_motorcycle_controller_settings-members.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MotorcycleControllerSettings Member List
+
+
+ +

This is the complete list of members for MotorcycleControllerSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< VehicleControllerSettings >inline
cEmbeddedRefTarget< VehicleControllerSettings >protectedstatic
ConstructController(VehicleConstraint &inConstraint) const overrideMotorcycleControllerSettingsvirtual
GetRefCount() constRefTarget< VehicleControllerSettings >inline
mDifferentialLimitedSlipRatioWheeledVehicleControllerSettings
mDifferentialsWheeledVehicleControllerSettings
mEngineWheeledVehicleControllerSettings
mLeanSmoothingFactorMotorcycleControllerSettings
mLeanSpringConstantMotorcycleControllerSettings
mLeanSpringDampingMotorcycleControllerSettings
mLeanSpringIntegrationCoefficientMotorcycleControllerSettings
mLeanSpringIntegrationCoefficientDecayMotorcycleControllerSettings
mMaxLeanAngleMotorcycleControllerSettings
mRefCountRefTarget< VehicleControllerSettings >mutableprotected
mTransmissionWheeledVehicleControllerSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< VehicleControllerSettings >::operator=(const RefTarget &)RefTarget< VehicleControllerSettings >inline
RefTarget()=defaultRefTarget< VehicleControllerSettings >inline
RefTarget(const RefTarget &)RefTarget< VehicleControllerSettings >inline
Release() constRefTarget< VehicleControllerSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideMotorcycleControllerSettingsvirtual
SaveBinaryState(StreamOut &inStream) const overrideMotorcycleControllerSettingsvirtual
SetEmbedded() constRefTarget< VehicleControllerSettings >inline
sInternalGetRefCountOffset()RefTarget< VehicleControllerSettings >inlinestatic
~RefTarget()RefTarget< VehicleControllerSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_motorcycle_controller_settings.html b/class_motorcycle_controller_settings.html new file mode 100644 index 000000000..4f054dbf9 --- /dev/null +++ b/class_motorcycle_controller_settings.html @@ -0,0 +1,420 @@ + + + + + + + +Jolt Physics: MotorcycleControllerSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MotorcycleControllerSettings Class Reference
+
+
+ +

#include <MotorcycleController.h>

+
+Inheritance diagram for MotorcycleControllerSettings:
+
+
+ + +WheeledVehicleControllerSettings +VehicleControllerSettings +SerializableObject +RefTarget< VehicleControllerSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual VehicleControllerConstructController (VehicleConstraint &inConstraint) const override
 Create an instance of the vehicle controller class.
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the controller settings in binary form to inStream.
 
virtual void RestoreBinaryState (StreamIn &inStream) override
 Restore the contents of the controller settings in binary form from inStream.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< VehicleControllerSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

float mMaxLeanAngle = DegreesToRadians(45.0f)
 How far we're willing to make the bike lean over in turns (in radians)
 
float mLeanSpringConstant = 5000.0f
 Spring constant for the lean spring.
 
float mLeanSpringDamping = 1000.0f
 Spring damping constant for the lean spring.
 
float mLeanSpringIntegrationCoefficient = 0.0f
 The lean spring applies an additional force equal to this coefficient * Integral(delta angle, 0, t), this effectively makes the lean spring a PID controller.
 
float mLeanSpringIntegrationCoefficientDecay = 4.0f
 How much to decay the angle integral when the wheels are not touching the floor: new_value = e^(-decay * t) * initial_value.
 
float mLeanSmoothingFactor = 0.8f
 
- Public Attributes inherited from WheeledVehicleControllerSettings
VehicleEngineSettings mEngine
 The properties of the engine.
 
VehicleTransmissionSettings mTransmission
 The properties of the transmission (aka gear box)
 
Array< VehicleDifferentialSettingsmDifferentials
 List of differentials and their properties.
 
float mDifferentialLimitedSlipRatio = 1.4f
 Ratio max / min average wheel speed of each differential (measured at the clutch). When the ratio is exceeded all torque gets distributed to the differential with the minimal average velocity. This allows implementing a limited slip differential between differentials. Set to FLT_MAX for an open differential. Value should be > 1.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< VehicleControllerSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< VehicleControllerSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< VehicleControllerSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Settings of a two wheeled motorcycle (adds a spring to balance the motorcycle) Note: The motor cycle controller is still in development and may need a lot of tweaks/hacks to work properly!

+

Member Function Documentation

+ +

◆ ConstructController()

+ +
+
+ + + + + +
+ + + + + + + + +
VehicleController * MotorcycleControllerSettings::ConstructController (VehicleConstraintinConstraint) const
+
+overridevirtual
+
+ +

Create an instance of the vehicle controller class.

+ +

Reimplemented from WheeledVehicleControllerSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorcycleControllerSettings::RestoreBinaryState (StreamIninStream)
+
+overridevirtual
+
+ +

Restore the contents of the controller settings in binary form from inStream.

+ +

Reimplemented from WheeledVehicleControllerSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void MotorcycleControllerSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the controller settings in binary form to inStream.

+ +

Reimplemented from WheeledVehicleControllerSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mLeanSmoothingFactor

+ +
+
+ + + + +
float MotorcycleControllerSettings::mLeanSmoothingFactor = 0.8f
+
+

How much to smooth the lean angle (0 = no smoothing, 1 = lean angle never changes) Note that this is frame rate dependent because the formula is: smoothing_factor * previous + (1 - smoothing_factor) * current

+ +
+
+ +

◆ mLeanSpringConstant

+ +
+
+ + + + +
float MotorcycleControllerSettings::mLeanSpringConstant = 5000.0f
+
+ +

Spring constant for the lean spring.

+ +
+
+ +

◆ mLeanSpringDamping

+ +
+
+ + + + +
float MotorcycleControllerSettings::mLeanSpringDamping = 1000.0f
+
+ +

Spring damping constant for the lean spring.

+ +
+
+ +

◆ mLeanSpringIntegrationCoefficient

+ +
+
+ + + + +
float MotorcycleControllerSettings::mLeanSpringIntegrationCoefficient = 0.0f
+
+ +

The lean spring applies an additional force equal to this coefficient * Integral(delta angle, 0, t), this effectively makes the lean spring a PID controller.

+ +
+
+ +

◆ mLeanSpringIntegrationCoefficientDecay

+ +
+
+ + + + +
float MotorcycleControllerSettings::mLeanSpringIntegrationCoefficientDecay = 4.0f
+
+ +

How much to decay the angle integral when the wheels are not touching the floor: new_value = e^(-decay * t) * initial_value.

+ +
+
+ +

◆ mMaxLeanAngle

+ +
+
+ + + + +
float MotorcycleControllerSettings::mMaxLeanAngle = DegreesToRadians(45.0f)
+
+ +

How far we're willing to make the bike lean over in turns (in radians)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_motorcycle_controller_settings.js b/class_motorcycle_controller_settings.js new file mode 100644 index 000000000..b151a41fc --- /dev/null +++ b/class_motorcycle_controller_settings.js @@ -0,0 +1,12 @@ +var class_motorcycle_controller_settings = +[ + [ "ConstructController", "class_motorcycle_controller_settings.html#a182ceaeed3e3c7f76d507ecf9ef5a4ef", null ], + [ "RestoreBinaryState", "class_motorcycle_controller_settings.html#aecb6c2070fcb21e83a14dfa4e3157f6d", null ], + [ "SaveBinaryState", "class_motorcycle_controller_settings.html#a715ebed22f63c05036175346dd7aa508", null ], + [ "mLeanSmoothingFactor", "class_motorcycle_controller_settings.html#ab432e48f3f8bf7836d0b6c2ea9745a8f", null ], + [ "mLeanSpringConstant", "class_motorcycle_controller_settings.html#a89d4563cd7e9659a4fcdc2c7b34832d9", null ], + [ "mLeanSpringDamping", "class_motorcycle_controller_settings.html#a1b4a9d49c0305c91955ce074881d46b0", null ], + [ "mLeanSpringIntegrationCoefficient", "class_motorcycle_controller_settings.html#a1dbe2b657773dabc46548a4b14a09446", null ], + [ "mLeanSpringIntegrationCoefficientDecay", "class_motorcycle_controller_settings.html#ab0a0e9d685c79d159bfab4736a578273", null ], + [ "mMaxLeanAngle", "class_motorcycle_controller_settings.html#a0dac3fbd774847fa6fa66631b7cc2e91", null ] +]; \ No newline at end of file diff --git a/class_motorcycle_controller_settings.png b/class_motorcycle_controller_settings.png new file mode 100644 index 000000000..db20e9a89 Binary files /dev/null and b/class_motorcycle_controller_settings.png differ diff --git a/class_mutable_compound_shape-members.html b/class_mutable_compound_shape-members.html new file mode 100644 index 000000000..0e9eda686 --- /dev/null +++ b/class_mutable_compound_shape-members.html @@ -0,0 +1,220 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MutableCompoundShape Member List
+
+
+ +

This is the complete list of members for MutableCompoundShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
AddShape(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape, uint32 inUserData=0)MutableCompoundShape
AdjustCenterOfMass()MutableCompoundShape
CalculateInnerRadius()CompoundShapeinlineprotected
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideMutableCompoundShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideMutableCompoundShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
Clone() constMutableCompoundShape
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const overrideMutableCompoundShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideMutableCompoundShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideCompoundShapevirtual
CompoundShape(EShapeSubType inSubType)CompoundShapeinlineexplicit
CompoundShape(EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)CompoundShapeinline
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideCompoundShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideCompoundShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideCompoundShapevirtual
GetCenterOfMass() const overrideCompoundShapeinlinevirtual
GetCompoundUserData(uint inIdx) constCompoundShapeinline
GetInnerRadius() const overrideCompoundShapeinlinevirtual
GetIntersectingSubShapes(const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const overrideMutableCompoundShapevirtual
GetIntersectingSubShapes(const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const overrideMutableCompoundShapevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const overrideCompoundShapevirtual
GetLocalBounds() const overrideCompoundShapeinlinevirtual
GetMassProperties() const overrideCompoundShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideCompoundShapevirtual
GetNumSubShapes() constCompoundShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideMutableCompoundShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) const overrideCompoundShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideCompoundShapevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShape(uint inIdx) constCompoundShapeinline
GetSubShapeIDBits() constCompoundShapeinlineprotected
GetSubShapeIDBitsRecursive() const overrideCompoundShapevirtual
GetSubShapeIDFromIndex(int inIdx, const SubShapeIDCreator &inParentSubShapeID) constCompoundShapeinline
GetSubShapeIndexFromID(SubShapeID inSubShapeID, SubShapeID &outRemainder) constCompoundShapeinline
GetSubShapes() constCompoundShapeinline
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const overrideCompoundShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) const overrideCompoundShapevirtual
GetSubType() constShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideCompoundShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideCompoundShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideCompoundShapeinlinevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideCompoundShapeinlinevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideCompoundShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideCompoundShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constCompoundShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constCompoundShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsSubShapeIDValid(SubShapeID inSubShapeID) constCompoundShapeinline
IsValidScale(Vec3Arg inScale) const overrideCompoundShapevirtual
MakeScaleValid(Vec3Arg inScale) const overrideCompoundShapevirtual
MaterialToIDMap typedefShape
mCenterOfMassCompoundShapeprotected
mInnerRadiusCompoundShapeprotected
mLocalBoundsCompoundShapeprotected
ModifyShape(uint inIndex, Vec3Arg inPosition, QuatArg inRotation)MutableCompoundShape
ModifyShape(uint inIndex, Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)MutableCompoundShape
ModifyShapes(uint inStartIndex, uint inNumber, const Vec3 *inPositions, const Quat *inRotations, uint inPositionStride=sizeof(Vec3), uint inRotationStride=sizeof(Quat))MutableCompoundShape
mRefCountRefTarget< Shape >mutableprotected
mSubShapesCompoundShapeprotected
MustBeStatic() const overrideCompoundShapevirtual
MutableCompoundShape()MutableCompoundShapeinline
MutableCompoundShape(const MutableCompoundShapeSettings &inSettings, ShapeResult &outResult)MutableCompoundShape
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RemoveShape(uint inIndex)MutableCompoundShape
RestoreBinaryState(StreamIn &inStream) overrideMutableCompoundShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)Shapeinlinevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes) overrideCompoundShapevirtual
SaveBinaryState(StreamOut &inStream) const overrideMutableCompoundShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) const overrideCompoundShapevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetCompoundUserData(uint inIdx, uint32 inUserData)CompoundShapeinline
SetEmbedded() constRefTarget< Shape >inline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()MutableCompoundShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
SubShapes typedefCompoundShape
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const overrideCompoundShapevirtual
VisitedShapes typedefShape
WalkSubShapes(Visitor &ioVisitor) constMutableCompoundShapeinline
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_mutable_compound_shape.html b/class_mutable_compound_shape.html new file mode 100644 index 000000000..3de000120 --- /dev/null +++ b/class_mutable_compound_shape.html @@ -0,0 +1,1201 @@ + + + + + + + +Jolt Physics: MutableCompoundShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MutableCompoundShape Class Referencefinal
+
+
+ +

#include <MutableCompoundShape.h>

+
+Inheritance diagram for MutableCompoundShape:
+
+
+ + +CompoundShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE MutableCompoundShape ()
 Constructor.
 
 MutableCompoundShape (const MutableCompoundShapeSettings &inSettings, ShapeResult &outResult)
 
Ref< MutableCompoundShapeClone () const
 Clone this shape. Can be used to avoid race conditions. See the documentation of this class for more information.
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const override
 
virtual int GetIntersectingSubShapes (const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override
 
virtual int GetIntersectingSubShapes (const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
template<class Visitor >
void WalkSubShapes (Visitor &ioVisitor) const
 
Mutating shapes. Note that this is not thread safe, so you need to ensure that any bodies that use this shape are locked at the time of modification using BodyLockWrite. After modification you need to call BodyInterface::NotifyShapeChanged to update the broadphase and collision caches.
uint AddShape (Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape, uint32 inUserData=0)
 
void RemoveShape (uint inIndex)
 
void ModifyShape (uint inIndex, Vec3Arg inPosition, QuatArg inRotation)
 
void ModifyShape (uint inIndex, Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)
 
void ModifyShapes (uint inStartIndex, uint inNumber, const Vec3 *inPositions, const Quat *inRotations, uint inPositionStride=sizeof(Vec3), uint inRotationStride=sizeof(Quat))
 Batch set positions / orientations, this avoids duplicate work due to bounding box calculation. Beware this can create a race condition if you're running collision queries in parallel. See class documentation for more information.
 
void AdjustCenterOfMass ()
 
- Public Member Functions inherited from CompoundShape
JPH_OVERRIDE_NEW_DELETE CompoundShape (EShapeSubType inSubType)
 Constructor.
 
 CompoundShape (EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual Vec3 GetCenterOfMass () const override
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
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.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const override
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const override
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const override
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
const SubShapesGetSubShapes () const
 Access to the sub shapes of this compound.
 
uint GetNumSubShapes () const
 Get the total number of sub shapes.
 
const SubShapeGetSubShape (uint inIdx) const
 Access to a particular sub shape.
 
uint32 GetCompoundUserData (uint inIdx) const
 Get the user data associated with a shape in this compound.
 
void SetCompoundUserData (uint inIdx, uint32 inUserData)
 Set the user data associated with a shape in this compound.
 
bool IsSubShapeIDValid (SubShapeID inSubShapeID) const
 
uint32 GetSubShapeIndexFromID (SubShapeID inSubShapeID, SubShapeID &outRemainder) const
 
SubShapeIDCreator GetSubShapeIDFromIndex (int inIdx, const SubShapeIDCreator &inParentSubShapeID) const
 Convert a sub shape index to a sub shape ID.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const override
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes) override
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const override
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual float GetVolume () const override
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from CompoundShape
static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + + + + + + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
- Protected Member Functions inherited from CompoundShape
uint GetSubShapeIDBits () const
 Determine amount of bits needed to encode sub shape id.
 
void CalculateInnerRadius ()
 Determine the inner radius of this shape.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from CompoundShape
using SubShapes = Array< SubShape >
 
- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from CompoundShape
Vec3 mCenterOfMass { Vec3::sZero() }
 Center of mass of the compound.
 
AABox mLocalBounds
 
SubShapes mSubShapes
 
float mInnerRadius = FLT_MAX
 Smallest radius of GetInnerRadius() of child shapes.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A compound shape, sub shapes can be rotated and translated. This shape is optimized for adding / removing and changing the rotation / translation of sub shapes but is less efficient in querying. Shifts all child objects so that they're centered around the center of mass (which needs to be kept up to date by calling AdjustCenterOfMass).

+

Note: If you're using MutableCompoundShape and are querying data while modifying the shape you'll have a race condition. In this case it is best to create a new MutableCompoundShape using the Clone function. You replace the shape on a body using BodyInterface::SetShape. If a query is still working on the old shape, it will have taken a reference and keep the old shape alive until the query finishes.

+

Constructor & Destructor Documentation

+ +

◆ MutableCompoundShape() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE MutableCompoundShape::MutableCompoundShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ MutableCompoundShape() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
MutableCompoundShape::MutableCompoundShape (const MutableCompoundShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ AddShape()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint MutableCompoundShape::AddShape (Vec3Arg inPosition,
QuatArg inRotation,
const ShapeinShape,
uint32 inUserData = 0 
)
+
+

Adding a new shape. Beware this can create a race condition if you're running collision queries in parallel. See class documentation for more information.

Returns
The index of the newly added shape
+ +
+
+ +

◆ AdjustCenterOfMass()

+ +
+
+ + + + + + + +
void MutableCompoundShape::AdjustCenterOfMass ()
+
+

Recalculate the center of mass and shift all objects so they're centered around it (this needs to be done of dynamic bodies and if the center of mass changes significantly due to adding / removing / repositioning sub shapes or else the simulation will look unnatural) Note that after adjusting the center of mass of an object you need to call BodyInterface::NotifyShapeChanged and Constraint::NotifyShapeChanged on the relevant bodies / constraints. Beware this can create a race condition if you're running collision queries in parallel. See class documentation for more information.

+ +
+
+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void MutableCompoundShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool MutableCompoundShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Implements Shape.

+ +
+
+ +

◆ Clone()

+ +
+
+ + + + + + + +
Ref< MutableCompoundShape > MutableCompoundShape::Clone () const
+
+ +

Clone this shape. Can be used to avoid race conditions. See the documentation of this class for more information.

+ +
+
+ +

◆ CollectTransformedShapes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void MutableCompoundShape::CollectTransformedShapes (const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale,
const SubShapeIDCreatorinSubShapeIDCreator,
TransformedShapeCollectorioCollector,
const ShapeFilterinShapeFilter 
) const
+
+overridevirtual
+
+

Collect the leaf transformed shapes of all leaf shapes of this shape. inBox is the world space axis aligned box which leaf shapes should collide with. inPositionCOM/inRotation/inScale describes the transform of this shape. inSubShapeIDCeator represents the current sub shape ID of this shape.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void MutableCompoundShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Implements Shape.

+ +
+
+ +

◆ GetIntersectingSubShapes() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int MutableCompoundShape::GetIntersectingSubShapes (const AABoxinBox,
uintoutSubShapeIndices,
int inMaxSubShapeIndices 
) const
+
+overridevirtual
+
+

Get which sub shape's bounding boxes overlap with an axis aligned box

Parameters
+ + + + +
inBoxThe axis aligned box to test against (relative to the center of mass of this shape)
outSubShapeIndicesBuffer where to place the indices of the sub shapes that intersect
inMaxSubShapeIndicesHow many indices will fit in the buffer (normally you'd provide a buffer of GetNumSubShapes() indices)
+
+
+
Returns
How many indices were placed in outSubShapeIndices
+ +

Implements CompoundShape.

+ +
+
+ +

◆ GetIntersectingSubShapes() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int MutableCompoundShape::GetIntersectingSubShapes (const OrientedBoxinBox,
uintoutSubShapeIndices,
int inMaxSubShapeIndices 
) const
+
+overridevirtual
+
+

Get which sub shape's bounding boxes overlap with an axis aligned box

Parameters
+ + + + +
inBoxThe axis aligned box to test against (relative to the center of mass of this shape)
outSubShapeIndicesBuffer where to place the indices of the sub shapes that intersect
inMaxSubShapeIndicesHow many indices will fit in the buffer (normally you'd provide a buffer of GetNumSubShapes() indices)
+
+
+
Returns
How many indices were placed in outSubShapeIndices
+ +

Implements CompoundShape.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats MutableCompoundShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ ModifyShape() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void MutableCompoundShape::ModifyShape (uint inIndex,
Vec3Arg inPosition,
QuatArg inRotation 
)
+
+

Modify the position / orientation of a shape. Beware this can create a race condition if you're running collision queries in parallel. See class documentation for more information.

+ +
+
+ +

◆ ModifyShape() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void MutableCompoundShape::ModifyShape (uint inIndex,
Vec3Arg inPosition,
QuatArg inRotation,
const ShapeinShape 
)
+
+

Modify the position / orientation and shape at the same time. Beware this can create a race condition if you're running collision queries in parallel. See class documentation for more information.

+ +
+
+ +

◆ ModifyShapes()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void MutableCompoundShape::ModifyShapes (uint inStartIndex,
uint inNumber,
const Vec3inPositions,
const QuatinRotations,
uint inPositionStride = sizeof(Vec3),
uint inRotationStride = sizeof(Quat) 
)
+
+ +

Batch set positions / orientations, this avoids duplicate work due to bounding box calculation. Beware this can create a race condition if you're running collision queries in parallel. See class documentation for more information.

+
Parameters
+ + + + + + + +
inStartIndexIndex of first shape to update
inNumberNumber of shapes to update
inPositionsA list of positions with arbitrary stride
inRotationsA list of orientations with arbitrary stride
inPositionStrideThe position stride (the number of bytes between the first and second element)
inRotationStrideThe orientation stride (the number of bytes between the first and second element)
+
+
+ +
+
+ +

◆ RemoveShape()

+ +
+
+ + + + + + + + +
void MutableCompoundShape::RemoveShape (uint inIndex)
+
+

Remove a shape by index. Beware this can create a race condition if you're running collision queries in parallel. See class documentation for more information.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void MutableCompoundShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from CompoundShape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void MutableCompoundShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from CompoundShape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void MutableCompoundShape::sRegister ()
+
+static
+
+ +
+
+ +

◆ WalkSubShapes()

+ +
+
+
+template<class Visitor >
+ + + + + +
+ + + + + + + + +
void MutableCompoundShape::WalkSubShapes (Visitor & ioVisitor) const
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_mutable_compound_shape.js b/class_mutable_compound_shape.js new file mode 100644 index 000000000..e9c6fea19 --- /dev/null +++ b/class_mutable_compound_shape.js @@ -0,0 +1,22 @@ +var class_mutable_compound_shape = +[ + [ "MutableCompoundShape", "class_mutable_compound_shape.html#a661ed40beb5af222c420b5746c16f431", null ], + [ "MutableCompoundShape", "class_mutable_compound_shape.html#aa1412a6fbb245ef5476d7c72597f7aa9", null ], + [ "AddShape", "class_mutable_compound_shape.html#a66c4e1e058a06ddb1718604254d15c4d", null ], + [ "AdjustCenterOfMass", "class_mutable_compound_shape.html#aadb711e8d328adc04397be0cf44d4f4c", null ], + [ "CastRay", "class_mutable_compound_shape.html#ab09749afef2d856a1a9b8834857ee5fa", null ], + [ "CastRay", "class_mutable_compound_shape.html#afd8f121a563bf40c32b8169765636a2b", null ], + [ "Clone", "class_mutable_compound_shape.html#a00b71825b8bf3d4b4dfb577b061a2576", null ], + [ "CollectTransformedShapes", "class_mutable_compound_shape.html#a1d0db8584b022b03077a13f3d632e22c", null ], + [ "CollidePoint", "class_mutable_compound_shape.html#aa145b08202a26df921533b5f2db9f55f", null ], + [ "GetIntersectingSubShapes", "class_mutable_compound_shape.html#a384f4371999246795c2e3f84ad75eca0", null ], + [ "GetIntersectingSubShapes", "class_mutable_compound_shape.html#ad254423b72d228ee50b548c9d4b52696", null ], + [ "GetStats", "class_mutable_compound_shape.html#aabd799e121f048e83a6ef43490422fbe", null ], + [ "ModifyShape", "class_mutable_compound_shape.html#a3992cb7a984307a08139812e44da14ae", null ], + [ "ModifyShape", "class_mutable_compound_shape.html#a6b947de024a9a91039f4b472072efdba", null ], + [ "ModifyShapes", "class_mutable_compound_shape.html#a48172d558ec67cb67e4a4d0ec7b48133", null ], + [ "RemoveShape", "class_mutable_compound_shape.html#ab91b4cd767b396eca6a341e98501daea", null ], + [ "RestoreBinaryState", "class_mutable_compound_shape.html#ad787fdba1914f3550e2cf3c4036e99b8", null ], + [ "SaveBinaryState", "class_mutable_compound_shape.html#a07aa65e4960f1ad78764007a209c13eb", null ], + [ "WalkSubShapes", "class_mutable_compound_shape.html#a3fc3b41a717b952d323ea9062e917693", null ] +]; \ No newline at end of file diff --git a/class_mutable_compound_shape.png b/class_mutable_compound_shape.png new file mode 100644 index 000000000..0b8ad2d2e Binary files /dev/null and b/class_mutable_compound_shape.png differ diff --git a/class_mutable_compound_shape_settings-members.html b/class_mutable_compound_shape_settings-members.html new file mode 100644 index 000000000..5fd13dbb3 --- /dev/null +++ b/class_mutable_compound_shape_settings-members.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MutableCompoundShapeSettings Member List
+
+
+ +

This is the complete list of members for MutableCompoundShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
AddShape(Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape, uint32 inUserData=0)CompoundShapeSettings
AddShape(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape, uint32 inUserData=0)CompoundShapeSettings
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
CompoundShapeSettings()=defaultCompoundShapeSettings
Create() const overrideMutableCompoundShapeSettingsvirtual
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mRefCountRefTarget< ShapeSettings >mutableprotected
mSubShapesCompoundShapeSettings
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
SubShapes typedefCompoundShapeSettings
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_mutable_compound_shape_settings.html b/class_mutable_compound_shape_settings.html new file mode 100644 index 000000000..77f216c07 --- /dev/null +++ b/class_mutable_compound_shape_settings.html @@ -0,0 +1,255 @@ + + + + + + + +Jolt Physics: MutableCompoundShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MutableCompoundShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a MutableCompoundShape. + More...

+ +

#include <MutableCompoundShape.h>

+
+Inheritance diagram for MutableCompoundShapeSettings:
+
+
+ + +CompoundShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ShapeResult Create () const override
 Create a shape according to the settings specified by this object.
 
- Public Member Functions inherited from CompoundShapeSettings
 CompoundShapeSettings ()=default
 Constructor. Use AddShape to add the parts.
 
void AddShape (Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape, uint32 inUserData=0)
 Add a shape to the compound.
 
void AddShape (Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape, uint32 inUserData=0)
 Add a shape to the compound. Variant that uses a concrete shape, which means this object cannot be serialized.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from CompoundShapeSettings
using SubShapes = Array< SubShapeSettings >
 
- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Public Attributes inherited from CompoundShapeSettings
SubShapes mSubShapes
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a MutableCompoundShape.

+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + +
ShapeSettings::ShapeResult MutableCompoundShapeSettings::Create () const
+
+overridevirtual
+
+ +

Create a shape according to the settings specified by this object.

+ +

Implements ShapeSettings.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_mutable_compound_shape_settings.js b/class_mutable_compound_shape_settings.js new file mode 100644 index 000000000..12af55eb3 --- /dev/null +++ b/class_mutable_compound_shape_settings.js @@ -0,0 +1,4 @@ +var class_mutable_compound_shape_settings = +[ + [ "Create", "class_mutable_compound_shape_settings.html#a3f60b9fb32be86347adb1bfafb5bfd77", null ] +]; \ No newline at end of file diff --git a/class_mutable_compound_shape_settings.png b/class_mutable_compound_shape_settings.png new file mode 100644 index 000000000..6210a3d42 Binary files /dev/null and b/class_mutable_compound_shape_settings.png differ diff --git a/class_mutex-members.html b/class_mutex-members.html new file mode 100644 index 000000000..335de6b1d --- /dev/null +++ b/class_mutex-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Mutex Member List
+
+
+ +

This is the complete list of members for Mutex, including all inherited members.

+ + + + +
lock()Mutexinline
try_lock()Mutexinline
unlock()Mutexinline
+
+ + + + diff --git a/class_mutex.html b/class_mutex.html new file mode 100644 index 000000000..390ecd7bc --- /dev/null +++ b/class_mutex.html @@ -0,0 +1,216 @@ + + + + + + + +Jolt Physics: Mutex Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Mutex Class Reference
+
+
+ +

#include <Mutex.h>

+
+Inheritance diagram for Mutex:
+
+
+ +
+ + + + + + + + +

+Public Member Functions

bool try_lock ()
 
void lock ()
 
void unlock ()
 
+

Detailed Description

+

Very simple wrapper around MutexBase which tracks lock contention in the profiler and asserts that locks/unlocks take place on the same thread

+

Member Function Documentation

+ +

◆ lock()

+ +
+
+ + + + + +
+ + + + + + + +
void Mutex::lock ()
+
+inline
+
+ +
+
+ +

◆ try_lock()

+ +
+
+ + + + + +
+ + + + + + + +
bool Mutex::try_lock ()
+
+inline
+
+ +
+
+ +

◆ unlock()

+ +
+
+ + + + + +
+ + + + + + + +
void Mutex::unlock ()
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_mutex.js b/class_mutex.js new file mode 100644 index 000000000..e961bee44 --- /dev/null +++ b/class_mutex.js @@ -0,0 +1,6 @@ +var class_mutex = +[ + [ "lock", "class_mutex.html#ad91be808bf0a60a16f10b897ec246d3a", null ], + [ "try_lock", "class_mutex.html#a85bdf2b7c3d9ce789c61f8bc2a127c8a", null ], + [ "unlock", "class_mutex.html#a546a5b797ba29959357586aa2b3740a8", null ] +]; \ No newline at end of file diff --git a/class_mutex.png b/class_mutex.png new file mode 100644 index 000000000..bf3a2579b Binary files /dev/null and b/class_mutex.png differ diff --git a/class_mutex_array-members.html b/class_mutex_array-members.html new file mode 100644 index 000000000..e1517bc61 --- /dev/null +++ b/class_mutex_array-members.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
MutexArray< MutexType > Member List
+
+
+ +

This is the complete list of members for MutexArray< MutexType >, including all inherited members.

+ + + + + + + + + + + + + + +
GetMutexByIndex(uint32 inMutexIndex)MutexArray< MutexType >inline
GetMutexByObjectIndex(uint32 inObjectIndex)MutexArray< MutexType >inline
GetMutexIndex(uint32 inObjectIndex) constMutexArray< MutexType >inline
GetNumMutexes() constMutexArray< MutexType >inline
Init(uint inNumMutexes)MutexArray< MutexType >inline
LockAll()MutexArray< MutexType >inline
MutexArray()=defaultMutexArray< MutexType >
MutexArray(uint inNumMutexes)MutexArray< MutexType >inlineexplicit
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
UnlockAll()MutexArray< MutexType >inline
~MutexArray()MutexArray< MutexType >inline
+
+ + + + diff --git a/class_mutex_array.html b/class_mutex_array.html new file mode 100644 index 000000000..ab9473461 --- /dev/null +++ b/class_mutex_array.html @@ -0,0 +1,476 @@ + + + + + + + +Jolt Physics: MutexArray< MutexType > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
MutexArray< MutexType > Class Template Reference
+
+
+ +

#include <MutexArray.h>

+
+Inheritance diagram for MutexArray< MutexType >:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MutexArray ()=default
 Constructor, constructs an empty mutex array that you need to initialize with Init()
 
 MutexArray (uint inNumMutexes)
 Constructor, constructs an array with inNumMutexes entries.
 
 ~MutexArray ()
 Destructor.
 
void Init (uint inNumMutexes)
 
uint GetNumMutexes () const
 Get the number of mutexes that were allocated.
 
uint32 GetMutexIndex (uint32 inObjectIndex) const
 Convert an object index to a mutex index.
 
MutexType & GetMutexByObjectIndex (uint32 inObjectIndex)
 Get the mutex belonging to a certain object by index.
 
MutexType & GetMutexByIndex (uint32 inMutexIndex)
 Get a mutex by index in the array.
 
void LockAll ()
 Lock all mutexes.
 
void UnlockAll ()
 Unlock all mutexes.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+
template<class MutexType>
+class MutexArray< MutexType >

A mutex array protects a number of resources with a limited amount of mutexes. It uses hashing to find the mutex of a particular object. The idea is that if the amount of threads is much smaller than the amount of mutexes that there is a relatively small chance that two different objects map to the same mutex.

+

Constructor & Destructor Documentation

+ +

◆ MutexArray() [1/2]

+ +
+
+
+template<class MutexType >
+ + + + + +
+ + + + + + + +
MutexArray< MutexType >::MutexArray ()
+
+default
+
+ +

Constructor, constructs an empty mutex array that you need to initialize with Init()

+ +
+
+ +

◆ MutexArray() [2/2]

+ +
+
+
+template<class MutexType >
+ + + + + +
+ + + + + + + + +
MutexArray< MutexType >::MutexArray (uint inNumMutexes)
+
+inlineexplicit
+
+ +

Constructor, constructs an array with inNumMutexes entries.

+ +
+
+ +

◆ ~MutexArray()

+ +
+
+
+template<class MutexType >
+ + + + + +
+ + + + + + + +
MutexArray< MutexType >::~MutexArray ()
+
+inline
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetMutexByIndex()

+ +
+
+
+template<class MutexType >
+ + + + + +
+ + + + + + + + +
MutexType & MutexArray< MutexType >::GetMutexByIndex (uint32 inMutexIndex)
+
+inline
+
+ +

Get a mutex by index in the array.

+ +
+
+ +

◆ GetMutexByObjectIndex()

+ +
+
+
+template<class MutexType >
+ + + + + +
+ + + + + + + + +
MutexType & MutexArray< MutexType >::GetMutexByObjectIndex (uint32 inObjectIndex)
+
+inline
+
+ +

Get the mutex belonging to a certain object by index.

+ +
+
+ +

◆ GetMutexIndex()

+ +
+
+
+template<class MutexType >
+ + + + + +
+ + + + + + + + +
uint32 MutexArray< MutexType >::GetMutexIndex (uint32 inObjectIndex) const
+
+inline
+
+ +

Convert an object index to a mutex index.

+ +
+
+ +

◆ GetNumMutexes()

+ +
+
+
+template<class MutexType >
+ + + + + +
+ + + + + + + +
uint MutexArray< MutexType >::GetNumMutexes () const
+
+inline
+
+ +

Get the number of mutexes that were allocated.

+ +
+
+ +

◆ Init()

+ +
+
+
+template<class MutexType >
+ + + + + +
+ + + + + + + + +
void MutexArray< MutexType >::Init (uint inNumMutexes)
+
+inline
+
+

Initialization

Parameters
+ + +
inNumMutexesThe amount of mutexes to allocate
+
+
+ +
+
+ +

◆ LockAll()

+ +
+
+
+template<class MutexType >
+ + + + + +
+ + + + + + + +
void MutexArray< MutexType >::LockAll ()
+
+inline
+
+ +

Lock all mutexes.

+ +
+
+ +

◆ UnlockAll()

+ +
+
+
+template<class MutexType >
+ + + + + +
+ + + + + + + +
void MutexArray< MutexType >::UnlockAll ()
+
+inline
+
+ +

Unlock all mutexes.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_mutex_array.js b/class_mutex_array.js new file mode 100644 index 000000000..f7034a1a9 --- /dev/null +++ b/class_mutex_array.js @@ -0,0 +1,13 @@ +var class_mutex_array = +[ + [ "MutexArray", "class_mutex_array.html#a7440b62f6b4d1a8bfd608f88a26299e8", null ], + [ "MutexArray", "class_mutex_array.html#a04bd4348871aea46fe2d567e5fa83861", null ], + [ "~MutexArray", "class_mutex_array.html#a15da55df0a388b4cbdabdedefb425af0", null ], + [ "GetMutexByIndex", "class_mutex_array.html#ab1837f7f0a9b0ce63ccbf6d34ca26058", null ], + [ "GetMutexByObjectIndex", "class_mutex_array.html#a39bf8c118d368c256e5a5c09b39a42be", null ], + [ "GetMutexIndex", "class_mutex_array.html#a149c27328334bbe38b64230f2a5251f8", null ], + [ "GetNumMutexes", "class_mutex_array.html#afa901f85cfe3dff0c32edc0d8a852813", null ], + [ "Init", "class_mutex_array.html#a882ec12f80ee295c78857d266cb69340", null ], + [ "LockAll", "class_mutex_array.html#a6b7192bee3d37aa5fcc12074081a66a6", null ], + [ "UnlockAll", "class_mutex_array.html#a454120af29f8004e1dd3a81ea110d5b1", null ] +]; \ No newline at end of file diff --git a/class_mutex_array.png b/class_mutex_array.png new file mode 100644 index 000000000..a3383f2ae Binary files /dev/null and b/class_mutex_array.png differ diff --git a/class_narrow_phase_query-members.html b/class_narrow_phase_query-members.html new file mode 100644 index 000000000..7fcada6a9 --- /dev/null +++ b/class_narrow_phase_query-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NarrowPhaseQuery Member List
+
+
+ +

This is the complete list of members for NarrowPhaseQuery, including all inherited members.

+ + + + + + + + + + + +
CastRay(const RRayCast &inRay, RayCastResult &ioHit, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }) constNarrowPhaseQuery
CastRay(const RRayCast &inRay, const RayCastSettings &inRayCastSettings, CastRayCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }, const ShapeFilter &inShapeFilter={ }) constNarrowPhaseQuery
CastShape(const RShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }, const ShapeFilter &inShapeFilter={ }) constNarrowPhaseQuery
CollectTransformedShapes(const AABox &inBox, TransformedShapeCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }, const ShapeFilter &inShapeFilter={ }) constNarrowPhaseQuery
CollidePoint(RVec3Arg inPoint, CollidePointCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }, const ShapeFilter &inShapeFilter={ }) constNarrowPhaseQuery
CollideShape(const Shape *inShape, Vec3Arg inShapeScale, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }, const ShapeFilter &inShapeFilter={ }) constNarrowPhaseQuery
Init(BodyLockInterface &inBodyLockInterface, BroadPhaseQuery &inBroadPhaseQuery)NarrowPhaseQueryinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
+
+ + + + diff --git a/class_narrow_phase_query.html b/class_narrow_phase_query.html new file mode 100644 index 000000000..280ea9fd0 --- /dev/null +++ b/class_narrow_phase_query.html @@ -0,0 +1,581 @@ + + + + + + + +Jolt Physics: NarrowPhaseQuery Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
NarrowPhaseQuery Class Reference
+
+
+ +

#include <NarrowPhaseQuery.h>

+
+Inheritance diagram for NarrowPhaseQuery:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void Init (BodyLockInterface &inBodyLockInterface, BroadPhaseQuery &inBroadPhaseQuery)
 Initialize the interface (should only be called by PhysicsSystem)
 
bool CastRay (const RRayCast &inRay, RayCastResult &ioHit, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }) const
 
void CastRay (const RRayCast &inRay, const RayCastSettings &inRayCastSettings, CastRayCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }, const ShapeFilter &inShapeFilter={ }) const
 
void CollidePoint (RVec3Arg inPoint, CollidePointCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }, const ShapeFilter &inShapeFilter={ }) const
 
void CollideShape (const Shape *inShape, Vec3Arg inShapeScale, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }, const ShapeFilter &inShapeFilter={ }) const
 
void CastShape (const RShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }, const ShapeFilter &inShapeFilter={ }) const
 
void CollectTransformedShapes (const AABox &inBox, TransformedShapeCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }, const ShapeFilter &inShapeFilter={ }) const
 Collect all leaf transformed shapes that fall inside world space box inBox.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Class that provides an interface for doing precise collision detection against the broad and then the narrow phase. Unlike a BroadPhaseQuery, the NarrowPhaseQuery will test against shapes and will return collision information against triangles, spheres etc.

+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void NarrowPhaseQuery::CastRay (const RRayCastinRay,
const RayCastSettingsinRayCastSettings,
CastRayCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter = { },
const ObjectLayerFilterinObjectLayerFilter = { },
const BodyFilterinBodyFilter = { },
const ShapeFilterinShapeFilter = { } 
) const
+
+

Cast a ray, allows collecting multiple hits. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use Body::GetWorldSpaceSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected fraction)) on body with collected body ID.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN bool NarrowPhaseQuery::CastRay (const RRayCastinRay,
RayCastResultioHit,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter = { },
const ObjectLayerFilterinObjectLayerFilter = { },
const BodyFilterinBodyFilter = { } 
) const
+
+

Cast a ray and find the closest hit. Returns true if it finds a hit. Hits further than ioHit.mFraction will not be considered and in this case ioHit will remain unmodified (and the function will return false). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use Body::GetWorldSpaceSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)) on body with ID ioHit.mBodyID.

+ +
+
+ +

◆ CastShape()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void NarrowPhaseQuery::CastShape (const RShapeCastinShapeCast,
const ShapeCastSettingsinShapeCastSettings,
RVec3Arg inBaseOffset,
CastShapeCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter = { },
const ObjectLayerFilterinObjectLayerFilter = { },
const BodyFilterinBodyFilter = { },
const ShapeFilterinShapeFilter = { } 
) const
+
+

Cast a shape and report any hits to ioCollector

Parameters
+ + + + + + + + + +
inShapeCastThe shape cast and its position and direction
inShapeCastSettingsSettings for the shape cast
inBaseOffsetAll hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. inShapeCast.mCenterOfMassStart.GetTranslation() since floats are most accurate near the origin
ioCollectorCollector that receives the hits
inBroadPhaseLayerFilterFilter that filters at broadphase level
inObjectLayerFilterFilter that filters at layer level
inBodyFilterFilter that filters at body level
inShapeFilterFilter that filters at shape level
+
+
+ +
+
+ +

◆ CollectTransformedShapes()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void NarrowPhaseQuery::CollectTransformedShapes (const AABoxinBox,
TransformedShapeCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter = { },
const ObjectLayerFilterinObjectLayerFilter = { },
const BodyFilterinBodyFilter = { },
const ShapeFilterinShapeFilter = { } 
) const
+
+ +

Collect all leaf transformed shapes that fall inside world space box inBox.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void NarrowPhaseQuery::CollidePoint (RVec3Arg inPoint,
CollidePointCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter = { },
const ObjectLayerFilterinObjectLayerFilter = { },
const BodyFilterinBodyFilter = { },
const ShapeFilterinShapeFilter = { } 
) const
+
+

Check if inPoint is inside any shapes. For this tests all shapes are treated as if they were solid. For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit

+ +
+
+ +

◆ CollideShape()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void NarrowPhaseQuery::CollideShape (const ShapeinShape,
Vec3Arg inShapeScale,
RMat44Arg inCenterOfMassTransform,
const CollideShapeSettingsinCollideShapeSettings,
RVec3Arg inBaseOffset,
CollideShapeCollectorioCollector,
const BroadPhaseLayerFilterinBroadPhaseLayerFilter = { },
const ObjectLayerFilterinObjectLayerFilter = { },
const BodyFilterinBodyFilter = { },
const ShapeFilterinShapeFilter = { } 
) const
+
+

Collide a shape with the system

Parameters
+ + + + + + + + + + + +
inShapeShape to test
inShapeScaleScale in local space of shape
inCenterOfMassTransformCenter of mass transform for the shape
inCollideShapeSettingsSettings
inBaseOffsetAll hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. inCenterOfMassTransform.GetTranslation() since floats are most accurate near the origin
ioCollectorCollector that receives the hits
inBroadPhaseLayerFilterFilter that filters at broadphase level
inObjectLayerFilterFilter that filters at layer level
inBodyFilterFilter that filters at body level
inShapeFilterFilter that filters at shape level
+
+
+ +
+
+ +

◆ Init()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void NarrowPhaseQuery::Init (BodyLockInterfaceinBodyLockInterface,
BroadPhaseQueryinBroadPhaseQuery 
)
+
+inline
+
+ +

Initialize the interface (should only be called by PhysicsSystem)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_narrow_phase_query.js b/class_narrow_phase_query.js new file mode 100644 index 000000000..dcc61b6fc --- /dev/null +++ b/class_narrow_phase_query.js @@ -0,0 +1,10 @@ +var class_narrow_phase_query = +[ + [ "CastRay", "class_narrow_phase_query.html#a6ef59f16467096fbb0ab9f476e15c8f3", null ], + [ "CastRay", "class_narrow_phase_query.html#a820937ebfc2c8ab46daade8e007f2269", null ], + [ "CastShape", "class_narrow_phase_query.html#a5d9ab53431ed38e7d143d5cab9df08cb", null ], + [ "CollectTransformedShapes", "class_narrow_phase_query.html#a9cb6ed9faecacb191cb15088e6c0de1e", null ], + [ "CollidePoint", "class_narrow_phase_query.html#afcfabe1320517d1bdc956cded95f0f8a", null ], + [ "CollideShape", "class_narrow_phase_query.html#a6874ff06a6884c2706a1bbf8ed2590a8", null ], + [ "Init", "class_narrow_phase_query.html#a85be5810a9b3d96dcb527767f499c852", null ] +]; \ No newline at end of file diff --git a/class_narrow_phase_query.png b/class_narrow_phase_query.png new file mode 100644 index 000000000..e475b4beb Binary files /dev/null and b/class_narrow_phase_query.png differ diff --git a/class_node_codec_quad_tree_half_float-members.html b/class_node_codec_quad_tree_half_float-members.html new file mode 100644 index 000000000..44c2d11a8 --- /dev/null +++ b/class_node_codec_quad_tree_half_float-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NodeCodecQuadTreeHalfFloat< Alignment > Member List
+
+
+ +

This is the complete list of members for NodeCodecQuadTreeHalfFloat< Alignment >, including all inherited members.

+ + + + + + + + + + + +
HeaderSizeNodeCodecQuadTreeHalfFloat< Alignment >static
NumChildrenPerNodeNodeCodecQuadTreeHalfFloat< Alignment >static
OFFSET_BITS enum valueNodeCodecQuadTreeHalfFloat< Alignment >
OFFSET_MASK enum valueNodeCodecQuadTreeHalfFloat< Alignment >
OFFSET_NON_SIGNIFICANT_BITS enum valueNodeCodecQuadTreeHalfFloat< Alignment >
OFFSET_NON_SIGNIFICANT_MASK enum valueNodeCodecQuadTreeHalfFloat< Alignment >
StackSizeNodeCodecQuadTreeHalfFloat< Alignment >static
TRIANGLE_COUNT_BITS enum valueNodeCodecQuadTreeHalfFloat< Alignment >
TRIANGLE_COUNT_MASK enum valueNodeCodecQuadTreeHalfFloat< Alignment >
TRIANGLE_COUNT_SHIFT enum valueNodeCodecQuadTreeHalfFloat< Alignment >
+
+ + + + diff --git a/class_node_codec_quad_tree_half_float.html b/class_node_codec_quad_tree_half_float.html new file mode 100644 index 000000000..b85cfac67 --- /dev/null +++ b/class_node_codec_quad_tree_half_float.html @@ -0,0 +1,275 @@ + + + + + + + +Jolt Physics: NodeCodecQuadTreeHalfFloat< Alignment > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
NodeCodecQuadTreeHalfFloat< Alignment > Class Template Reference
+
+
+ +

#include <NodeCodecQuadTreeHalfFloat.h>

+ + + + + + + + + + + + + + +

+Classes

class  DecodingContext
 This class decodes and decompresses quad tree nodes. More...
 
class  EncodingContext
 This class encodes and compresses quad tree nodes. More...
 
struct  Header
 Header for the tree. More...
 
struct  Node
 Node structure. More...
 
+ + + + +

+Public Types

enum  : uint32 {
+  TRIANGLE_COUNT_BITS = 4 +, TRIANGLE_COUNT_SHIFT = 28 +, TRIANGLE_COUNT_MASK = (1 << TRIANGLE_COUNT_BITS) - 1 +, OFFSET_BITS = 28 +,
+  OFFSET_MASK = (1 << OFFSET_BITS) - 1 +, OFFSET_NON_SIGNIFICANT_BITS = 2 +, OFFSET_NON_SIGNIFICANT_MASK = (1 << OFFSET_NON_SIGNIFICANT_BITS) - 1 +
+ }
 Node properties. More...
 
+ + + + + + + + + + +

+Static Public Attributes

static constexpr int NumChildrenPerNode = 4
 Number of child nodes of this node.
 
static constexpr int HeaderSize = sizeof(Header)
 Size of the header (an empty struct is always > 0 bytes so this needs a separate variable)
 
static constexpr int StackSize = 128
 Stack size to use during DecodingContext::sWalkTree.
 
+

Member Enumeration Documentation

+ +

◆ anonymous enum

+ +
+
+
+template<int Alignment>
+ + + + +
anonymous enum : uint32
+
+ +

Node properties.

+ + + + + + + + +
Enumerator
TRIANGLE_COUNT_BITS 
TRIANGLE_COUNT_SHIFT 
TRIANGLE_COUNT_MASK 
OFFSET_BITS 
OFFSET_MASK 
OFFSET_NON_SIGNIFICANT_BITS 
OFFSET_NON_SIGNIFICANT_MASK 
+ +
+
+

Member Data Documentation

+ +

◆ HeaderSize

+ +
+
+
+template<int Alignment>
+ + + + + +
+ + + + +
constexpr int NodeCodecQuadTreeHalfFloat< Alignment >::HeaderSize = sizeof(Header)
+
+staticconstexpr
+
+ +

Size of the header (an empty struct is always > 0 bytes so this needs a separate variable)

+ +
+
+ +

◆ NumChildrenPerNode

+ +
+
+
+template<int Alignment>
+ + + + + +
+ + + + +
constexpr int NodeCodecQuadTreeHalfFloat< Alignment >::NumChildrenPerNode = 4
+
+staticconstexpr
+
+ +

Number of child nodes of this node.

+ +
+
+ +

◆ StackSize

+ +
+
+
+template<int Alignment>
+ + + + + +
+ + + + +
constexpr int NodeCodecQuadTreeHalfFloat< Alignment >::StackSize = 128
+
+staticconstexpr
+
+ +

Stack size to use during DecodingContext::sWalkTree.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_node_codec_quad_tree_half_float.js b/class_node_codec_quad_tree_half_float.js new file mode 100644 index 000000000..de6bf36d9 --- /dev/null +++ b/class_node_codec_quad_tree_half_float.js @@ -0,0 +1,7 @@ +var class_node_codec_quad_tree_half_float = +[ + [ "DecodingContext", "class_node_codec_quad_tree_half_float_1_1_decoding_context.html", "class_node_codec_quad_tree_half_float_1_1_decoding_context" ], + [ "EncodingContext", "class_node_codec_quad_tree_half_float_1_1_encoding_context.html", "class_node_codec_quad_tree_half_float_1_1_encoding_context" ], + [ "Header", "struct_node_codec_quad_tree_half_float_1_1_header.html", "struct_node_codec_quad_tree_half_float_1_1_header" ], + [ "Node", "struct_node_codec_quad_tree_half_float_1_1_node.html", "struct_node_codec_quad_tree_half_float_1_1_node" ] +]; \ No newline at end of file diff --git a/class_node_codec_quad_tree_half_float_1_1_decoding_context-members.html b/class_node_codec_quad_tree_half_float_1_1_decoding_context-members.html new file mode 100644 index 000000000..04bf18414 --- /dev/null +++ b/class_node_codec_quad_tree_half_float_1_1_decoding_context-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext Member List
+
+
+ +

This is the complete list of members for NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext, including all inherited members.

+ + + + + + +
DecodingContext(const Header *inHeader)NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContextinlineexplicit
IsDoneWalking() constNodeCodecQuadTreeHalfFloat< Alignment >::DecodingContextinline
sGetTriangleBlockStart(const uint8 *inBufferStart, uint inTriangleBlockID)NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContextinlinestatic
sTriangleBlockIDBits(const ByteBuffer &inTree)NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContextinlinestatic
WalkTree(const uint8 *inBufferStart, const TriangleContext &inTriangleContext, Visitor &ioVisitor)NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContextinline
+
+ + + + diff --git a/class_node_codec_quad_tree_half_float_1_1_decoding_context.html b/class_node_codec_quad_tree_half_float_1_1_decoding_context.html new file mode 100644 index 000000000..34022ebd1 --- /dev/null +++ b/class_node_codec_quad_tree_half_float_1_1_decoding_context.html @@ -0,0 +1,331 @@ + + + + + + + +Jolt Physics: NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext Class Reference
+
+
+ +

This class decodes and decompresses quad tree nodes. + More...

+ +

#include <NodeCodecQuadTreeHalfFloat.h>

+ + + + + + + + + + + + +

+Public Member Functions

JPH_INLINE DecodingContext (const Header *inHeader)
 Constructor.
 
template<class TriangleContext , class Visitor >
JPH_INLINE void WalkTree (const uint8 *inBufferStart, const TriangleContext &inTriangleContext, Visitor &ioVisitor)
 Walk the node tree calling the Visitor::VisitNodes for each node encountered and Visitor::VisitTriangles for each triangle encountered.
 
bool IsDoneWalking () const
 This can be used to have the visitor early out (ioVisitor.ShouldAbort() returns true) and later continue again (call WalkTree() again)
 
+ + + + + + + +

+Static Public Member Functions

static uint sTriangleBlockIDBits (const ByteBuffer &inTree)
 Get the amount of bits needed to store an ID to a triangle block.
 
static const void * sGetTriangleBlockStart (const uint8 *inBufferStart, uint inTriangleBlockID)
 Convert a triangle block ID to the start of the triangle buffer.
 
+

Detailed Description

+
template<int Alignment>
+class NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext

This class decodes and decompresses quad tree nodes.

+

Constructor & Destructor Documentation

+ +

◆ DecodingContext()

+ +
+
+
+template<int Alignment>
+ + + + + +
+ + + + + + + + +
JPH_INLINE NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext::DecodingContext (const HeaderinHeader)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ IsDoneWalking()

+ +
+
+
+template<int Alignment>
+ + + + + +
+ + + + + + + +
bool NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext::IsDoneWalking () const
+
+inline
+
+ +

This can be used to have the visitor early out (ioVisitor.ShouldAbort() returns true) and later continue again (call WalkTree() again)

+ +
+
+ +

◆ sGetTriangleBlockStart()

+ +
+
+
+template<int Alignment>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static const void * NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext::sGetTriangleBlockStart (const uint8inBufferStart,
uint inTriangleBlockID 
)
+
+inlinestatic
+
+ +

Convert a triangle block ID to the start of the triangle buffer.

+ +
+
+ +

◆ sTriangleBlockIDBits()

+ +
+
+
+template<int Alignment>
+ + + + + +
+ + + + + + + + +
static uint NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext::sTriangleBlockIDBits (const ByteBufferinTree)
+
+inlinestatic
+
+ +

Get the amount of bits needed to store an ID to a triangle block.

+ +
+
+ +

◆ WalkTree()

+ +
+
+
+template<int Alignment>
+
+template<class TriangleContext , class Visitor >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE void NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext::WalkTree (const uint8inBufferStart,
const TriangleContext & inTriangleContext,
Visitor & ioVisitor 
)
+
+inline
+
+ +

Walk the node tree calling the Visitor::VisitNodes for each node encountered and Visitor::VisitTriangles for each triangle encountered.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_node_codec_quad_tree_half_float_1_1_decoding_context.js b/class_node_codec_quad_tree_half_float_1_1_decoding_context.js new file mode 100644 index 000000000..4eb9c4794 --- /dev/null +++ b/class_node_codec_quad_tree_half_float_1_1_decoding_context.js @@ -0,0 +1,6 @@ +var class_node_codec_quad_tree_half_float_1_1_decoding_context = +[ + [ "DecodingContext", "class_node_codec_quad_tree_half_float_1_1_decoding_context.html#aa3ed16d2ad735587cc31672b2db9c6f4", null ], + [ "IsDoneWalking", "class_node_codec_quad_tree_half_float_1_1_decoding_context.html#a497beb4af569cc217d1b6d8b311f89ae", null ], + [ "WalkTree", "class_node_codec_quad_tree_half_float_1_1_decoding_context.html#a084241df274ee41e4bb4908b8bd5c943", null ] +]; \ No newline at end of file diff --git a/class_node_codec_quad_tree_half_float_1_1_encoding_context-members.html b/class_node_codec_quad_tree_half_float_1_1_encoding_context-members.html new file mode 100644 index 000000000..dd53b1739 --- /dev/null +++ b/class_node_codec_quad_tree_half_float_1_1_encoding_context-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext Member List
+
+
+ +

This is the complete list of members for NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext, including all inherited members.

+ + + + + +
Finalize(Header *outHeader, const AABBTreeBuilder::Node *inRoot, uint inRootNodeStart, uint inRootTrianglesStart, const char *&outError) constNodeCodecQuadTreeHalfFloat< Alignment >::EncodingContextinline
GetPessimisticMemoryEstimate(uint inNodeCount) constNodeCodecQuadTreeHalfFloat< Alignment >::EncodingContextinline
NodeAllocate(const AABBTreeBuilder::Node *inNode, Vec3Arg inNodeBoundsMin, Vec3Arg inNodeBoundsMax, Array< const AABBTreeBuilder::Node * > &ioChildren, Vec3 outChildBoundsMin[NumChildrenPerNode], Vec3 outChildBoundsMax[NumChildrenPerNode], ByteBuffer &ioBuffer, const char *&outError) constNodeCodecQuadTreeHalfFloat< Alignment >::EncodingContextinline
NodeFinalize(const AABBTreeBuilder::Node *inNode, uint inNodeStart, uint inNumChildren, const uint *inChildrenNodeStart, const uint *inChildrenTrianglesStart, ByteBuffer &ioBuffer, const char *&outError) constNodeCodecQuadTreeHalfFloat< Alignment >::EncodingContextinline
+
+ + + + diff --git a/class_node_codec_quad_tree_half_float_1_1_encoding_context.html b/class_node_codec_quad_tree_half_float_1_1_encoding_context.html new file mode 100644 index 000000000..6a46664f5 --- /dev/null +++ b/class_node_codec_quad_tree_half_float_1_1_encoding_context.html @@ -0,0 +1,377 @@ + + + + + + + +Jolt Physics: NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext Class Reference
+
+
+ +

This class encodes and compresses quad tree nodes. + More...

+ +

#include <NodeCodecQuadTreeHalfFloat.h>

+ + + + + + + + + + + + + +

+Public Member Functions

uint GetPessimisticMemoryEstimate (uint inNodeCount) const
 Get an upper bound on the amount of bytes needed for a node tree with inNodeCount nodes.
 
uint NodeAllocate (const AABBTreeBuilder::Node *inNode, Vec3Arg inNodeBoundsMin, Vec3Arg inNodeBoundsMax, Array< const AABBTreeBuilder::Node * > &ioChildren, Vec3 outChildBoundsMin[NumChildrenPerNode], Vec3 outChildBoundsMax[NumChildrenPerNode], ByteBuffer &ioBuffer, const char *&outError) const
 
bool NodeFinalize (const AABBTreeBuilder::Node *inNode, uint inNodeStart, uint inNumChildren, const uint *inChildrenNodeStart, const uint *inChildrenTrianglesStart, ByteBuffer &ioBuffer, const char *&outError) const
 Once all nodes have been added, this call finalizes all nodes by patching in the offsets of the child nodes (that were added after the node itself was added)
 
bool Finalize (Header *outHeader, const AABBTreeBuilder::Node *inRoot, uint inRootNodeStart, uint inRootTrianglesStart, const char *&outError) const
 Once all nodes have been finalized, this will finalize the header of the nodes.
 
+

Detailed Description

+
template<int Alignment>
+class NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext

This class encodes and compresses quad tree nodes.

+

Member Function Documentation

+ +

◆ Finalize()

+ +
+
+
+template<int Alignment>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext::Finalize (HeaderoutHeader,
const AABBTreeBuilder::NodeinRoot,
uint inRootNodeStart,
uint inRootTrianglesStart,
const char *& outError 
) const
+
+inline
+
+ +

Once all nodes have been finalized, this will finalize the header of the nodes.

+ +
+
+ +

◆ GetPessimisticMemoryEstimate()

+ +
+
+
+template<int Alignment>
+ + + + + +
+ + + + + + + + +
uint NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext::GetPessimisticMemoryEstimate (uint inNodeCount) const
+
+inline
+
+ +

Get an upper bound on the amount of bytes needed for a node tree with inNodeCount nodes.

+ +
+
+ +

◆ NodeAllocate()

+ +
+
+
+template<int Alignment>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext::NodeAllocate (const AABBTreeBuilder::NodeinNode,
Vec3Arg inNodeBoundsMin,
Vec3Arg inNodeBoundsMax,
Array< const AABBTreeBuilder::Node * > & ioChildren,
Vec3 outChildBoundsMin[NumChildrenPerNode],
Vec3 outChildBoundsMax[NumChildrenPerNode],
ByteBufferioBuffer,
const char *& outError 
) const
+
+inline
+
+

Allocate a new node for inNode. Algorithm can modify the order of ioChildren to indicate in which order children should be compressed Algorithm can enlarge the bounding boxes of the children during compression and returns these in outChildBoundsMin, outChildBoundsMax inNodeBoundsMin, inNodeBoundsMax is the bounding box if inNode possibly widened by compressing the parent node Returns uint(-1) on error and reports the error in outError

+ +
+
+ +

◆ NodeFinalize()

+ +
+
+
+template<int Alignment>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext::NodeFinalize (const AABBTreeBuilder::NodeinNode,
uint inNodeStart,
uint inNumChildren,
const uintinChildrenNodeStart,
const uintinChildrenTrianglesStart,
ByteBufferioBuffer,
const char *& outError 
) const
+
+inline
+
+ +

Once all nodes have been added, this call finalizes all nodes by patching in the offsets of the child nodes (that were added after the node itself was added)

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_node_codec_quad_tree_half_float_1_1_encoding_context.js b/class_node_codec_quad_tree_half_float_1_1_encoding_context.js new file mode 100644 index 000000000..1529538b1 --- /dev/null +++ b/class_node_codec_quad_tree_half_float_1_1_encoding_context.js @@ -0,0 +1,7 @@ +var class_node_codec_quad_tree_half_float_1_1_encoding_context = +[ + [ "Finalize", "class_node_codec_quad_tree_half_float_1_1_encoding_context.html#a744d6e02ea549980927d888129f8fc79", null ], + [ "GetPessimisticMemoryEstimate", "class_node_codec_quad_tree_half_float_1_1_encoding_context.html#a743407baa5c478e69bb3f36dcd4b0e5e", null ], + [ "NodeAllocate", "class_node_codec_quad_tree_half_float_1_1_encoding_context.html#ac621a13ec8689e7cc9ff1fb995115874", null ], + [ "NodeFinalize", "class_node_codec_quad_tree_half_float_1_1_encoding_context.html#a500c6a27c04555f154c00b5ad85654d3", null ] +]; \ No newline at end of file diff --git a/class_non_copyable-members.html b/class_non_copyable-members.html new file mode 100644 index 000000000..46841fe3c --- /dev/null +++ b/class_non_copyable-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NonCopyable Member List
+
+
+ +

This is the complete list of members for NonCopyable, including all inherited members.

+ + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
+
+ + + + diff --git a/class_non_copyable.html b/class_non_copyable.html new file mode 100644 index 000000000..83a7ffbdf --- /dev/null +++ b/class_non_copyable.html @@ -0,0 +1,297 @@ + + + + + + + +Jolt Physics: NonCopyable Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
NonCopyable Class Reference
+
+
+ +

Class that makes another class non-copyable. Usage: Inherit from NonCopyable. + More...

+ +

#include <NonCopyable.h>

+
+Inheritance diagram for NonCopyable:
+
+
+ + +BodyLockBase< false, const Body > +BodyLockBase< true, Body > +BodyLockMultiBase< false, const Body > +BodyLockMultiBase< true, Body > +FixedSizeFreeList< Node > +FixedSizeFreeList< Job > +LockFreeHashMap< SubShapeIDPair, CachedManifold > +LockFreeHashMap< BodyPair, CachedBodyPair > +MutexArray< SharedMutex > +AABBTreeBuilder::Node +Body +BodyDrawFilter +BodyFilter +BodyInterface +BodyLockBase< Write, BodyType > +BodyLockInterface +BodyLockMultiBase< Write, BodyType > +BodyManager +BroadPhaseLayerFilter +BroadPhaseLayerInterface +BroadPhaseQuery +CharacterBase +CharacterVsCharacterCollision +Constraint +ConstraintManager +ContactConstraintManager +ConvexHullBuilder +ConvexHullBuilder2D +ConvexHullBuilder::Edge +ConvexHullBuilder::Face +DebugRenderer +EPAConvexHullBuilder +EPAConvexHullBuilder::Triangle +EPAConvexHullBuilder::TriangleFactory +FixedSizeFreeList< Object > +GJKClosestPoint +IslandBuilder +JobSystem +JobSystem::Barrier +LFHMAllocator +LFHMAllocatorContext +LargeIslandSplitter +LockFreeHashMap< Key, Value > +MutexArray< MutexType > +NarrowPhaseQuery +ObjectLayerFilter +ObjectLayerPairFilter +ObjectStream +ObjectVsBroadPhaseLayerFilter +PhysicsSystem +PhysicsSystem::BodiesToSleep +PhysicsUpdateContext +ProfileMeasurement +ProfileSample +ProfileThread +Profiler +QuadTree +Ragdoll +ScopeExit< F > +SerializableObject +Shape +ShapeFilter +SharedLock< LockType > +SoftBodyUpdateContext +StreamIn +StreamOut +TempAllocator +TriangleGrouper +TriangleSplitter +UniqueLock< LockType > +VehicleCollisionTester +VehicleController +Wheel + +
+ + + + + + + + +

+Public Member Functions

 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Class that makes another class non-copyable. Usage: Inherit from NonCopyable.

+

Constructor & Destructor Documentation

+ +

◆ NonCopyable() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
NonCopyable::NonCopyable ()
+
+default
+
+ +
+
+ +

◆ NonCopyable() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
NonCopyable::NonCopyable (const NonCopyable)
+
+delete
+
+ +
+
+

Member Function Documentation

+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
void NonCopyable::operator= (const NonCopyable)
+
+delete
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_non_copyable.js b/class_non_copyable.js new file mode 100644 index 000000000..108c0b4c2 --- /dev/null +++ b/class_non_copyable.js @@ -0,0 +1,6 @@ +var class_non_copyable = +[ + [ "NonCopyable", "class_non_copyable.html#a809b6e4ade7ae32f6d248f2a3b783d45", null ], + [ "NonCopyable", "class_non_copyable.html#a501d34ffcc34b30de6d541887a901057", null ], + [ "operator=", "class_non_copyable.html#aaf9b12dcaae80c9d304df7a941d4e21f", null ] +]; \ No newline at end of file diff --git a/class_non_copyable.png b/class_non_copyable.png new file mode 100644 index 000000000..e81727ea7 Binary files /dev/null and b/class_non_copyable.png differ diff --git a/class_object_layer_filter-members.html b/class_object_layer_filter-members.html new file mode 100644 index 000000000..ea5cbab0f --- /dev/null +++ b/class_object_layer_filter-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectLayerFilter Member List
+
+
+ +

This is the complete list of members for ObjectLayerFilter, including all inherited members.

+ + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(ObjectLayer inLayer) constObjectLayerFilterinlinevirtual
~ObjectLayerFilter()=defaultObjectLayerFiltervirtual
+
+ + + + diff --git a/class_object_layer_filter.html b/class_object_layer_filter.html new file mode 100644 index 000000000..c8916cb35 --- /dev/null +++ b/class_object_layer_filter.html @@ -0,0 +1,214 @@ + + + + + + + +Jolt Physics: ObjectLayerFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectLayerFilter Class Reference
+
+
+ +

Filter class for object layers. + More...

+ +

#include <ObjectLayer.h>

+
+Inheritance diagram for ObjectLayerFilter:
+
+
+ + +NonCopyable +DefaultObjectLayerFilter +SpecifiedObjectLayerFilter + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~ObjectLayerFilter ()=default
 Destructor.
 
virtual bool ShouldCollide (ObjectLayer inLayer) const
 Function to filter out object layers when doing collision query test (return true to allow testing against objects with this layer)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Filter class for object layers.

+

Constructor & Destructor Documentation

+ +

◆ ~ObjectLayerFilter()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ObjectLayerFilter::~ObjectLayerFilter ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool ObjectLayerFilter::ShouldCollide (ObjectLayer inLayer) const
+
+inlinevirtual
+
+ +

Function to filter out object layers when doing collision query test (return true to allow testing against objects with this layer)

+ +

Reimplemented in DefaultObjectLayerFilter, and SpecifiedObjectLayerFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_object_layer_filter.js b/class_object_layer_filter.js new file mode 100644 index 000000000..f110b080b --- /dev/null +++ b/class_object_layer_filter.js @@ -0,0 +1,5 @@ +var class_object_layer_filter = +[ + [ "~ObjectLayerFilter", "class_object_layer_filter.html#ac0a280c2c4c6d44714282f517899b6ef", null ], + [ "ShouldCollide", "class_object_layer_filter.html#aa5d1889ba4f6adf8f7f4c46e57cd166b", null ] +]; \ No newline at end of file diff --git a/class_object_layer_filter.png b/class_object_layer_filter.png new file mode 100644 index 000000000..77d3a694d Binary files /dev/null and b/class_object_layer_filter.png differ diff --git a/class_object_layer_pair_filter-members.html b/class_object_layer_pair_filter-members.html new file mode 100644 index 000000000..5a6577187 --- /dev/null +++ b/class_object_layer_pair_filter-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectLayerPairFilter Member List
+
+
+ +

This is the complete list of members for ObjectLayerPairFilter, including all inherited members.

+ + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(ObjectLayer inLayer1, ObjectLayer inLayer2) constObjectLayerPairFilterinlinevirtual
~ObjectLayerPairFilter()=defaultObjectLayerPairFiltervirtual
+
+ + + + diff --git a/class_object_layer_pair_filter.html b/class_object_layer_pair_filter.html new file mode 100644 index 000000000..ba16b414b --- /dev/null +++ b/class_object_layer_pair_filter.html @@ -0,0 +1,224 @@ + + + + + + + +Jolt Physics: ObjectLayerPairFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectLayerPairFilter Class Reference
+
+
+ +

Filter class to test if two objects can collide based on their object layer. Used while finding collision pairs. + More...

+ +

#include <ObjectLayer.h>

+
+Inheritance diagram for ObjectLayerPairFilter:
+
+
+ + +NonCopyable +ObjectLayerPairFilterMask +ObjectLayerPairFilterTable + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~ObjectLayerPairFilter ()=default
 Destructor.
 
virtual bool ShouldCollide (ObjectLayer inLayer1, ObjectLayer inLayer2) const
 Returns true if two layers can collide.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Filter class to test if two objects can collide based on their object layer. Used while finding collision pairs.

+

Constructor & Destructor Documentation

+ +

◆ ~ObjectLayerPairFilter()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ObjectLayerPairFilter::~ObjectLayerPairFilter ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ObjectLayerPairFilter::ShouldCollide (ObjectLayer inLayer1,
ObjectLayer inLayer2 
) const
+
+inlinevirtual
+
+ +

Returns true if two layers can collide.

+ +

Reimplemented in ObjectLayerPairFilterMask, and ObjectLayerPairFilterTable.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_object_layer_pair_filter.js b/class_object_layer_pair_filter.js new file mode 100644 index 000000000..67287a3ab --- /dev/null +++ b/class_object_layer_pair_filter.js @@ -0,0 +1,5 @@ +var class_object_layer_pair_filter = +[ + [ "~ObjectLayerPairFilter", "class_object_layer_pair_filter.html#aa5eb712c7da546d32b812ed018c714bb", null ], + [ "ShouldCollide", "class_object_layer_pair_filter.html#a81cbe75cceb74bc262199206ac129c88", null ] +]; \ No newline at end of file diff --git a/class_object_layer_pair_filter.png b/class_object_layer_pair_filter.png new file mode 100644 index 000000000..6cfd578b7 Binary files /dev/null and b/class_object_layer_pair_filter.png differ diff --git a/class_object_layer_pair_filter_mask-members.html b/class_object_layer_pair_filter_mask-members.html new file mode 100644 index 000000000..c0c40bcf7 --- /dev/null +++ b/class_object_layer_pair_filter_mask-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectLayerPairFilterMask Member List
+
+
+ +

This is the complete list of members for ObjectLayerPairFilterMask, including all inherited members.

+ + + + + + + + + + + +
cMaskObjectLayerPairFilterMaskstatic
cNumBitsObjectLayerPairFilterMaskstatic
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
sGetGroup(ObjectLayer inObjectLayer)ObjectLayerPairFilterMaskinlinestatic
sGetMask(ObjectLayer inObjectLayer)ObjectLayerPairFilterMaskinlinestatic
sGetObjectLayer(uint32 inGroup, uint32 inMask=cMask)ObjectLayerPairFilterMaskinlinestatic
ShouldCollide(ObjectLayer inObject1, ObjectLayer inObject2) const overrideObjectLayerPairFilterMaskinlinevirtual
~ObjectLayerPairFilter()=defaultObjectLayerPairFiltervirtual
+
+ + + + diff --git a/class_object_layer_pair_filter_mask.html b/class_object_layer_pair_filter_mask.html new file mode 100644 index 000000000..b27a41a64 --- /dev/null +++ b/class_object_layer_pair_filter_mask.html @@ -0,0 +1,356 @@ + + + + + + + +Jolt Physics: ObjectLayerPairFilterMask Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectLayerPairFilterMask Class Reference
+
+
+ +

#include <ObjectLayerPairFilterMask.h>

+
+Inheritance diagram for ObjectLayerPairFilterMask:
+
+
+ + +ObjectLayerPairFilter +NonCopyable + +
+ + + + + + + + + + + + + + + + +

+Public Member Functions

virtual bool ShouldCollide (ObjectLayer inObject1, ObjectLayer inObject2) const override
 Returns true if two layers can collide.
 
- Public Member Functions inherited from ObjectLayerPairFilter
virtual ~ObjectLayerPairFilter ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + +

+Static Public Member Functions

static ObjectLayer sGetObjectLayer (uint32 inGroup, uint32 inMask=cMask)
 Construct an ObjectLayer from a group and mask bits.
 
static uint32 sGetGroup (ObjectLayer inObjectLayer)
 Get the group bits from an ObjectLayer.
 
static uint32 sGetMask (ObjectLayer inObjectLayer)
 Get the mask bits from an ObjectLayer.
 
+ + + + + + +

+Static Public Attributes

static JPH_OVERRIDE_NEW_DELETE constexpr uint32 cNumBits = JPH_OBJECT_LAYER_BITS / 2
 Number of bits for the group and mask bits.
 
static constexpr uint32 cMask = (1 << cNumBits) - 1
 
+

Detailed Description

+

Filter class to test if two objects can collide based on their object layer. Used while finding collision pairs. Uses group bits and mask bits. Two layers can collide if Object1.Group & Object2.Mask is non-zero and Object2.Group & Object1.Mask is non-zero. The behavior is similar to that in e.g. Bullet. This implementation works together with BroadPhaseLayerInterfaceMask and ObjectVsBroadPhaseLayerFilterMask

+

Member Function Documentation

+ +

◆ sGetGroup()

+ +
+
+ + + + + +
+ + + + + + + + +
static uint32 ObjectLayerPairFilterMask::sGetGroup (ObjectLayer inObjectLayer)
+
+inlinestatic
+
+ +

Get the group bits from an ObjectLayer.

+ +
+
+ +

◆ sGetMask()

+ +
+
+ + + + + +
+ + + + + + + + +
static uint32 ObjectLayerPairFilterMask::sGetMask (ObjectLayer inObjectLayer)
+
+inlinestatic
+
+ +

Get the mask bits from an ObjectLayer.

+ +
+
+ +

◆ sGetObjectLayer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static ObjectLayer ObjectLayerPairFilterMask::sGetObjectLayer (uint32 inGroup,
uint32 inMask = cMask 
)
+
+inlinestatic
+
+ +

Construct an ObjectLayer from a group and mask bits.

+ +
+
+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ObjectLayerPairFilterMask::ShouldCollide (ObjectLayer inObject1,
ObjectLayer inObject2 
) const
+
+inlineoverridevirtual
+
+ +

Returns true if two layers can collide.

+ +

Reimplemented from ObjectLayerPairFilter.

+ +
+
+

Member Data Documentation

+ +

◆ cMask

+ +
+
+ + + + + +
+ + + + +
constexpr uint32 ObjectLayerPairFilterMask::cMask = (1 << cNumBits) - 1
+
+staticconstexpr
+
+ +
+
+ +

◆ cNumBits

+ +
+
+ + + + + +
+ + + + +
JPH_OVERRIDE_NEW_DELETE constexpr uint32 ObjectLayerPairFilterMask::cNumBits = JPH_OBJECT_LAYER_BITS / 2
+
+staticconstexpr
+
+ +

Number of bits for the group and mask bits.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_object_layer_pair_filter_mask.js b/class_object_layer_pair_filter_mask.js new file mode 100644 index 000000000..9a554c3fc --- /dev/null +++ b/class_object_layer_pair_filter_mask.js @@ -0,0 +1,4 @@ +var class_object_layer_pair_filter_mask = +[ + [ "ShouldCollide", "class_object_layer_pair_filter_mask.html#a23e66d271d3cfa3977432941f767e994", null ] +]; \ No newline at end of file diff --git a/class_object_layer_pair_filter_mask.png b/class_object_layer_pair_filter_mask.png new file mode 100644 index 000000000..c975c03a8 Binary files /dev/null and b/class_object_layer_pair_filter_mask.png differ diff --git a/class_object_layer_pair_filter_table-members.html b/class_object_layer_pair_filter_table-members.html new file mode 100644 index 000000000..c0a7d5eac --- /dev/null +++ b/class_object_layer_pair_filter_table-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectLayerPairFilterTable Member List
+
+
+ +

This is the complete list of members for ObjectLayerPairFilterTable, including all inherited members.

+ + + + + + + + + + +
DisableCollision(ObjectLayer inLayer1, ObjectLayer inLayer2)ObjectLayerPairFilterTableinline
EnableCollision(ObjectLayer inLayer1, ObjectLayer inLayer2)ObjectLayerPairFilterTableinline
GetNumObjectLayers() constObjectLayerPairFilterTableinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
ObjectLayerPairFilterTable(uint inNumObjectLayers)ObjectLayerPairFilterTableinlineexplicit
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(ObjectLayer inObject1, ObjectLayer inObject2) const overrideObjectLayerPairFilterTableinlinevirtual
~ObjectLayerPairFilter()=defaultObjectLayerPairFiltervirtual
+
+ + + + diff --git a/class_object_layer_pair_filter_table.html b/class_object_layer_pair_filter_table.html new file mode 100644 index 000000000..ad21104d7 --- /dev/null +++ b/class_object_layer_pair_filter_table.html @@ -0,0 +1,337 @@ + + + + + + + +Jolt Physics: ObjectLayerPairFilterTable Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectLayerPairFilterTable Class Reference
+
+
+ +

#include <ObjectLayerPairFilterTable.h>

+
+Inheritance diagram for ObjectLayerPairFilterTable:
+
+
+ + +ObjectLayerPairFilter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ObjectLayerPairFilterTable (uint inNumObjectLayers)
 Constructs the table with inNumObjectLayers Layers, initially all layer pairs are disabled.
 
uint GetNumObjectLayers () const
 Get the number of object layers.
 
void DisableCollision (ObjectLayer inLayer1, ObjectLayer inLayer2)
 Disable collision between two object layers.
 
void EnableCollision (ObjectLayer inLayer1, ObjectLayer inLayer2)
 Enable collision between two object layers.
 
virtual bool ShouldCollide (ObjectLayer inObject1, ObjectLayer inObject2) const override
 Returns true if two layers can collide.
 
- Public Member Functions inherited from ObjectLayerPairFilter
virtual ~ObjectLayerPairFilter ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Filter class to test if two objects can collide based on their object layer. Used while finding collision pairs. This implementation uses a table to determine if two layers can collide.

+

Constructor & Destructor Documentation

+ +

◆ ObjectLayerPairFilterTable()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE ObjectLayerPairFilterTable::ObjectLayerPairFilterTable (uint inNumObjectLayers)
+
+inlineexplicit
+
+ +

Constructs the table with inNumObjectLayers Layers, initially all layer pairs are disabled.

+ +
+
+

Member Function Documentation

+ +

◆ DisableCollision()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ObjectLayerPairFilterTable::DisableCollision (ObjectLayer inLayer1,
ObjectLayer inLayer2 
)
+
+inline
+
+ +

Disable collision between two object layers.

+ +
+
+ +

◆ EnableCollision()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ObjectLayerPairFilterTable::EnableCollision (ObjectLayer inLayer1,
ObjectLayer inLayer2 
)
+
+inline
+
+ +

Enable collision between two object layers.

+ +
+
+ +

◆ GetNumObjectLayers()

+ +
+
+ + + + + +
+ + + + + + + +
uint ObjectLayerPairFilterTable::GetNumObjectLayers () const
+
+inline
+
+ +

Get the number of object layers.

+ +
+
+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ObjectLayerPairFilterTable::ShouldCollide (ObjectLayer inObject1,
ObjectLayer inObject2 
) const
+
+inlineoverridevirtual
+
+ +

Returns true if two layers can collide.

+ +

Reimplemented from ObjectLayerPairFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_object_layer_pair_filter_table.js b/class_object_layer_pair_filter_table.js new file mode 100644 index 000000000..685f8718f --- /dev/null +++ b/class_object_layer_pair_filter_table.js @@ -0,0 +1,8 @@ +var class_object_layer_pair_filter_table = +[ + [ "ObjectLayerPairFilterTable", "class_object_layer_pair_filter_table.html#a374488a93f35824127860cab6452136b", null ], + [ "DisableCollision", "class_object_layer_pair_filter_table.html#a24646de71a6a06550b0db5addf81b78e", null ], + [ "EnableCollision", "class_object_layer_pair_filter_table.html#a92530da6280163ab73c27304dd911167", null ], + [ "GetNumObjectLayers", "class_object_layer_pair_filter_table.html#a1f1540757a584e5409d8dd8f6d8c64b4", null ], + [ "ShouldCollide", "class_object_layer_pair_filter_table.html#a77261471bc7057de4c292e22c645d718", null ] +]; \ No newline at end of file diff --git a/class_object_layer_pair_filter_table.png b/class_object_layer_pair_filter_table.png new file mode 100644 index 000000000..0ba7a52d1 Binary files /dev/null and b/class_object_layer_pair_filter_table.png differ diff --git a/class_object_stream-members.html b/class_object_stream-members.html new file mode 100644 index 000000000..01d26faa6 --- /dev/null +++ b/class_object_stream-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStream Member List
+
+
+ +

This is the complete list of members for ObjectStream, including all inherited members.

+ + + + + + + + + + +
EStreamType enum nameObjectStream
Identifier typedefObjectStreamprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
sNullIdentifierObjectStreamprotectedstatic
sRevisionObjectStreamprotectedstatic
sVersionObjectStreamprotectedstatic
~ObjectStream()=defaultObjectStreamprotectedvirtual
+
+ + + + diff --git a/class_object_stream.html b/class_object_stream.html new file mode 100644 index 000000000..e1666706b --- /dev/null +++ b/class_object_stream.html @@ -0,0 +1,336 @@ + + + + + + + +Jolt Physics: ObjectStream Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStream Class Reference
+
+
+ +

Base class for object stream input and output streams. + More...

+ +

#include <ObjectStream.h>

+
+Inheritance diagram for ObjectStream:
+
+
+ + +NonCopyable +IObjectStreamIn +IObjectStreamOut +ObjectStreamIn +ObjectStreamOut +ObjectStreamBinaryIn +ObjectStreamTextIn +ObjectStreamBinaryOut +ObjectStreamTextOut + +
+ + + + + +

+Public Types

enum class  EStreamType { Text +, Binary + }
 Stream type. More...
 
+ + + + +

+Protected Types

using Identifier = uint32
 Identifier for objects.
 
+ + + + +

+Protected Member Functions

virtual ~ObjectStream ()=default
 Destructor.
 
+ + + + + + + +

+Static Protected Attributes

static constexpr int sVersion = 1
 
static constexpr int sRevision = 0
 
static constexpr Identifier sNullIdentifier = 0
 
+ + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Base class for object stream input and output streams.

+

Member Typedef Documentation

+ +

◆ Identifier

+ +
+
+ + + + + +
+ + + + +
using ObjectStream::Identifier = uint32
+
+protected
+
+ +

Identifier for objects.

+ +
+
+

Member Enumeration Documentation

+ +

◆ EStreamType

+ +
+
+ + + + + +
+ + + + +
enum class ObjectStream::EStreamType
+
+strong
+
+ +

Stream type.

+ + + +
Enumerator
Text 
Binary 
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~ObjectStream()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ObjectStream::~ObjectStream ()
+
+protectedvirtualdefault
+
+ +

Destructor.

+ +
+
+

Member Data Documentation

+ +

◆ sNullIdentifier

+ +
+
+ + + + + +
+ + + + +
constexpr Identifier ObjectStream::sNullIdentifier = 0
+
+staticconstexprprotected
+
+ +
+
+ +

◆ sRevision

+ +
+
+ + + + + +
+ + + + +
constexpr int ObjectStream::sRevision = 0
+
+staticconstexprprotected
+
+ +
+
+ +

◆ sVersion

+ +
+
+ + + + + +
+ + + + +
constexpr int ObjectStream::sVersion = 1
+
+staticconstexprprotected
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_object_stream.js b/class_object_stream.js new file mode 100644 index 000000000..6098c539a --- /dev/null +++ b/class_object_stream.js @@ -0,0 +1,9 @@ +var class_object_stream = +[ + [ "Identifier", "class_object_stream.html#a03085cd2aa375ca2c773579947434455", null ], + [ "EStreamType", "class_object_stream.html#a5feef3b87da292623ebf2a04c7c3482e", [ + [ "Text", "class_object_stream.html#a5feef3b87da292623ebf2a04c7c3482ea9dffbf69ffba8bc38bc4e01abf4b1675", null ], + [ "Binary", "class_object_stream.html#a5feef3b87da292623ebf2a04c7c3482ea6ce976e8f061b2b5cfe4d0c50c3405dd", null ] + ] ], + [ "~ObjectStream", "class_object_stream.html#a0a01e88706acdcadf4b7cc7af99a008e", null ] +]; \ No newline at end of file diff --git a/class_object_stream.png b/class_object_stream.png new file mode 100644 index 000000000..978bbfe74 Binary files /dev/null and b/class_object_stream.png differ diff --git a/class_object_stream_binary_in-members.html b/class_object_stream_binary_in-members.html new file mode 100644 index 000000000..5a8cd7bb2 --- /dev/null +++ b/class_object_stream_binary_in-members.html @@ -0,0 +1,162 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamBinaryIn Member List
+
+
+ +

This is the complete list of members for ObjectStreamBinaryIn, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EStreamType enum nameObjectStream
GetInfo(istream &inStream, EStreamType &outType, int &outVersion, int &outRevision)ObjectStreamInprotectedstatic
Identifier typedefObjectStreamprotected
mStreamObjectStreamInprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
ObjectStreamBinaryIn(istream &inStream)ObjectStreamBinaryInexplicit
ObjectStreamIn(istream &inStream)ObjectStreamInexplicitprotected
Open(istream &inStream)ObjectStreamInprotectedstatic
operator=(const NonCopyable &)=deleteNonCopyable
Read(const RTTI *inRTTI)ObjectStreamIn
ReadClassData(const char *inClassName, void *inInstance) overrideObjectStreamInvirtual
ReadClassData(const ClassDescription &inClassDesc, void *inInstance)ObjectStreamIn
ReadCount(uint32 &outCount) overrideObjectStreamBinaryInvirtual
ReadDataType(EOSDataType &outType) overrideObjectStreamBinaryInvirtual
ReadIdentifier(Identifier &outIdentifier) overrideObjectStreamBinaryInvirtual
ReadName(String &outName) overrideObjectStreamBinaryInvirtual
ReadObject(const RTTI *&outRTTI)ObjectStreamIn
ReadPointerData(const RTTI *inRTTI, void **inPointer, int inRefCountOffset=-1) overrideObjectStreamInvirtual
ReadPrimitiveData(uint8 &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(uint16 &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(int &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(uint32 &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(uint64 &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(float &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(double &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(bool &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(String &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(Float3 &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(Double3 &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(Vec3 &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(DVec3 &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(Vec4 &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(Quat &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(Mat44 &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadPrimitiveData(DMat44 &outPrimitive) overrideObjectStreamBinaryInvirtual
ReadRTTI()ObjectStreamIn
SkipAttributeData(int inArrayDepth, EOSDataType inDataType, const char *inClassName)ObjectStreamIn
sNullIdentifierObjectStreamprotectedstatic
sReadObject(istream &inStream, T *&outObject)ObjectStreamIninlinestatic
sReadObject(istream &inStream, Ref< T > &outObject)ObjectStreamIninlinestatic
sReadObject(const char *inFileName, T *&outObject)ObjectStreamIninlinestatic
sReadObject(const char *inFileName, Ref< T > &outObject)ObjectStreamIninlinestatic
sRevisionObjectStreamprotectedstatic
sVersionObjectStreamprotectedstatic
~ObjectStream()=defaultObjectStreamprotectedvirtual
+
+ + + + diff --git a/class_object_stream_binary_in.html b/class_object_stream_binary_in.html new file mode 100644 index 000000000..82fa1af4c --- /dev/null +++ b/class_object_stream_binary_in.html @@ -0,0 +1,889 @@ + + + + + + + +Jolt Physics: ObjectStreamBinaryIn Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamBinaryIn Class Reference
+
+
+ +

Implementation of ObjectStream binary input stream. + More...

+ +

#include <ObjectStreamBinaryIn.h>

+
+Inheritance diagram for ObjectStreamBinaryIn:
+
+
+ + +ObjectStreamIn +IObjectStreamIn +ObjectStream +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ObjectStreamBinaryIn (istream &inStream)
 Constructor.
 
- Public Member Functions inherited from ObjectStreamIn
void * Read (const RTTI *inRTTI)
 
void * ReadObject (const RTTI *&outRTTI)
 
bool ReadRTTI ()
 
virtual bool ReadClassData (const char *inClassName, void *inInstance) override
 
bool ReadClassData (const ClassDescription &inClassDesc, void *inInstance)
 
virtual bool ReadPointerData (const RTTI *inRTTI, void **inPointer, int inRefCountOffset=-1) override
 
bool SkipAttributeData (int inArrayDepth, EOSDataType inDataType, const char *inClassName)
 
Input type specific operations
Read primitives
Read compounds
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Input type specific operations

virtual bool ReadDataType (EOSDataType &outType) override
 
virtual bool ReadName (String &outName) override
 
virtual bool ReadIdentifier (Identifier &outIdentifier) override
 
virtual bool ReadCount (uint32 &outCount) override
 
virtual bool ReadPrimitiveData (uint8 &outPrimitive) override
 
virtual bool ReadPrimitiveData (uint16 &outPrimitive) override
 
virtual bool ReadPrimitiveData (int &outPrimitive) override
 
virtual bool ReadPrimitiveData (uint32 &outPrimitive) override
 
virtual bool ReadPrimitiveData (uint64 &outPrimitive) override
 
virtual bool ReadPrimitiveData (float &outPrimitive) override
 
virtual bool ReadPrimitiveData (double &outPrimitive) override
 
virtual bool ReadPrimitiveData (bool &outPrimitive) override
 
virtual bool ReadPrimitiveData (String &outPrimitive) override
 
virtual bool ReadPrimitiveData (Float3 &outPrimitive) override
 
virtual bool ReadPrimitiveData (Double3 &outPrimitive) override
 
virtual bool ReadPrimitiveData (Vec3 &outPrimitive) override
 
virtual bool ReadPrimitiveData (DVec3 &outPrimitive) override
 
virtual bool ReadPrimitiveData (Vec4 &outPrimitive) override
 
virtual bool ReadPrimitiveData (Quat &outPrimitive) override
 
virtual bool ReadPrimitiveData (Mat44 &outPrimitive) override
 
virtual bool ReadPrimitiveData (DMat44 &outPrimitive) override
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ObjectStream
enum class  EStreamType { Text +, Binary + }
 Stream type. More...
 
- Static Public Member Functions inherited from ObjectStreamIn
template<class T >
static bool sReadObject (istream &inStream, T *&outObject)
 Main function to read an object from a stream.
 
template<class T >
static bool sReadObject (istream &inStream, Ref< T > &outObject)
 Main function to read an object from a stream (reference counting pointer version)
 
template<class T >
static bool sReadObject (const char *inFileName, T *&outObject)
 Main function to read an object from a file.
 
template<class T >
static bool sReadObject (const char *inFileName, Ref< T > &outObject)
 Main function to read an object from a file (reference counting pointer version)
 
- Protected Types inherited from ObjectStream
using Identifier = uint32
 Identifier for objects.
 
- Protected Member Functions inherited from ObjectStreamIn
 ObjectStreamIn (istream &inStream)
 Constructor.
 
- Protected Member Functions inherited from ObjectStream
virtual ~ObjectStream ()=default
 Destructor.
 
- Static Protected Member Functions inherited from ObjectStreamIn
static bool GetInfo (istream &inStream, EStreamType &outType, int &outVersion, int &outRevision)
 Determine the type and version of an object stream.
 
static ObjectStreamInOpen (istream &inStream)
 Static constructor.
 
- Protected Attributes inherited from ObjectStreamIn
istream & mStream
 
- Static Protected Attributes inherited from ObjectStream
static constexpr int sVersion = 1
 
static constexpr int sRevision = 0
 
static constexpr Identifier sNullIdentifier = 0
 
+

Detailed Description

+

Implementation of ObjectStream binary input stream.

+

Constructor & Destructor Documentation

+ +

◆ ObjectStreamBinaryIn()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_NAMESPACE_BEGIN ObjectStreamBinaryIn::ObjectStreamBinaryIn (istream & inStream)
+
+explicit
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ ReadCount()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadCount (uint32outCount)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadDataType()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadDataType (EOSDataTypeoutType)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadIdentifier()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadIdentifier (IdentifieroutIdentifier)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadName()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadName (StringoutName)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [1/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (bool & outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [2/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (DMat44outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [3/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (double & outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [4/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (Double3outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [5/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (DVec3outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [6/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (float & outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [7/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (Float3outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [8/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (int & outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [9/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (Mat44outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [10/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (QuatoutPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [11/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (StringoutPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [12/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (uint16outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [13/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (uint32outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [14/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (uint64outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [15/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (uint8outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [16/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (Vec3outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [17/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamBinaryIn::ReadPrimitiveData (Vec4outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_object_stream_binary_in.js b/class_object_stream_binary_in.js new file mode 100644 index 000000000..445435513 --- /dev/null +++ b/class_object_stream_binary_in.js @@ -0,0 +1,25 @@ +var class_object_stream_binary_in = +[ + [ "ObjectStreamBinaryIn", "class_object_stream_binary_in.html#a5b06493c2d5b32cbe534183d2452e48b", null ], + [ "ReadCount", "class_object_stream_binary_in.html#af7e2608beec6934dd8a83fe5602a2568", null ], + [ "ReadDataType", "class_object_stream_binary_in.html#a530608ffb7d8b12b9bc58afd9169d8f6", null ], + [ "ReadIdentifier", "class_object_stream_binary_in.html#aef0b7299dfe253b7824e116edd9d3257", null ], + [ "ReadName", "class_object_stream_binary_in.html#ad25681831f4d017a97df409286eb36e3", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#aa74809f20beb6f9621abc3e2333c614e", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#a3efe657ff31934894cf986ddd9404c5b", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#adf70a4becf6d0e5e4655666d4b4db196", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#add5a059681d27ff452da004a20c54c97", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#a411fe818db26d5ada7802e96e87a1823", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#ad454f1413f0c7a081d6de616336fda86", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#a0c83fd72a9271ee7dc014146c35ad9d1", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#a132a50e88261fde7a29acad207cacd0f", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#ac51f9af154643a4e5f46954245c10185", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#a5cd4343446658834caf6e471a0b5e1c8", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#a770a1734839488af9f34a325a5ba1874", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#a1bad705f6f3c3eec20c45c451385ed28", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#ac62f780ab97ca88d2068fb0b278e4b57", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#a02dd635b3049ccdd83b77de1796b8a61", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#a5b6728fc02d126c2a25235c769d56d82", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#aaf2b6afb5aa25ca74c4505973c0a48f7", null ], + [ "ReadPrimitiveData", "class_object_stream_binary_in.html#a55590dd27adde78a04cef4d6ff511e17", null ] +]; \ No newline at end of file diff --git a/class_object_stream_binary_in.png b/class_object_stream_binary_in.png new file mode 100644 index 000000000..e92312107 Binary files /dev/null and b/class_object_stream_binary_in.png differ diff --git a/class_object_stream_binary_out-members.html b/class_object_stream_binary_out-members.html new file mode 100644 index 000000000..f32df4409 --- /dev/null +++ b/class_object_stream_binary_out-members.html @@ -0,0 +1,161 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamBinaryOut Member List
+
+
+ +

This is the complete list of members for ObjectStreamBinaryOut, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EStreamType enum nameObjectStream
HintIndentDown()IObjectStreamOutinlinevirtual
HintIndentUp()IObjectStreamOutinlinevirtual
HintNextItem()IObjectStreamOutinlinevirtual
Identifier typedefObjectStreamprotected
mStreamObjectStreamOutprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
ObjectStreamBinaryOut(ostream &inStream)ObjectStreamBinaryOutexplicit
ObjectStreamOut(ostream &inStream)ObjectStreamOutexplicitprotected
Open(EStreamType inType, ostream &inStream)ObjectStreamOutprotectedstatic
operator=(const NonCopyable &)=deleteNonCopyable
QueueRTTI(const RTTI *inRTTI)ObjectStreamOut
sNullIdentifierObjectStreamprotectedstatic
sRevisionObjectStreamprotectedstatic
sVersionObjectStreamprotectedstatic
sWriteObject(ostream &inStream, ObjectStream::EStreamType inType, const T &inObject)ObjectStreamOutinlinestatic
sWriteObject(const char *inFileName, ObjectStream::EStreamType inType, const T &inObject)ObjectStreamOutinlinestatic
Write(const void *inObject, const RTTI *inRTTI)ObjectStreamOut
WriteClassData(const RTTI *inRTTI, const void *inInstance) overrideObjectStreamOutvirtual
WriteCount(uint32 inCount) overrideObjectStreamBinaryOutvirtual
WriteDataType(EOSDataType inType) overrideObjectStreamBinaryOutvirtual
WriteIdentifier(Identifier inIdentifier) overrideObjectStreamBinaryOutvirtual
WriteName(const char *inName) overrideObjectStreamBinaryOutvirtual
WriteObject(const void *inObject)ObjectStreamOut
WritePointerData(const RTTI *inRTTI, const void *inPointer) overrideObjectStreamOutvirtual
WritePrimitiveData(const uint8 &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const uint16 &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const int &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const uint32 &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const uint64 &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const float &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const double &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const bool &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const String &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const Float3 &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const Double3 &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const Vec3 &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const DVec3 &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const Vec4 &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const Quat &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const Mat44 &inPrimitive) overrideObjectStreamBinaryOutvirtual
WritePrimitiveData(const DMat44 &inPrimitive) overrideObjectStreamBinaryOutvirtual
WriteRTTI(const RTTI *inRTTI)ObjectStreamOut
~ObjectStream()=defaultObjectStreamprotectedvirtual
+
+ + + + diff --git a/class_object_stream_binary_out.html b/class_object_stream_binary_out.html new file mode 100644 index 000000000..2e3212e33 --- /dev/null +++ b/class_object_stream_binary_out.html @@ -0,0 +1,880 @@ + + + + + + + +Jolt Physics: ObjectStreamBinaryOut Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamBinaryOut Class Reference
+
+
+ +

Implementation of ObjectStream binary output stream. + More...

+ +

#include <ObjectStreamBinaryOut.h>

+
+Inheritance diagram for ObjectStreamBinaryOut:
+
+
+ + +ObjectStreamOut +IObjectStreamOut +ObjectStream +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ObjectStreamBinaryOut (ostream &inStream)
 Constructor and destructor.
 
- Public Member Functions inherited from ObjectStreamOut
bool Write (const void *inObject, const RTTI *inRTTI)
 
void WriteObject (const void *inObject)
 
void QueueRTTI (const RTTI *inRTTI)
 
void WriteRTTI (const RTTI *inRTTI)
 
virtual void WriteClassData (const RTTI *inRTTI, const void *inInstance) override
 
virtual void WritePointerData (const RTTI *inRTTI, const void *inPointer) override
 
- Public Member Functions inherited from IObjectStreamOut
virtual void HintNextItem ()
 
virtual void HintIndentUp ()
 
virtual void HintIndentDown ()
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Output type specific operations

virtual void WriteDataType (EOSDataType inType) override
 
virtual void WriteName (const char *inName) override
 
virtual void WriteIdentifier (Identifier inIdentifier) override
 
virtual void WriteCount (uint32 inCount) override
 
virtual void WritePrimitiveData (const uint8 &inPrimitive) override
 
virtual void WritePrimitiveData (const uint16 &inPrimitive) override
 
virtual void WritePrimitiveData (const int &inPrimitive) override
 
virtual void WritePrimitiveData (const uint32 &inPrimitive) override
 
virtual void WritePrimitiveData (const uint64 &inPrimitive) override
 
virtual void WritePrimitiveData (const float &inPrimitive) override
 
virtual void WritePrimitiveData (const double &inPrimitive) override
 
virtual void WritePrimitiveData (const bool &inPrimitive) override
 
virtual void WritePrimitiveData (const String &inPrimitive) override
 
virtual void WritePrimitiveData (const Float3 &inPrimitive) override
 
virtual void WritePrimitiveData (const Double3 &inPrimitive) override
 
virtual void WritePrimitiveData (const Vec3 &inPrimitive) override
 
virtual void WritePrimitiveData (const DVec3 &inPrimitive) override
 
virtual void WritePrimitiveData (const Vec4 &inPrimitive) override
 
virtual void WritePrimitiveData (const Quat &inPrimitive) override
 
virtual void WritePrimitiveData (const Mat44 &inPrimitive) override
 
virtual void WritePrimitiveData (const DMat44 &inPrimitive) override
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ObjectStream
enum class  EStreamType { Text +, Binary + }
 Stream type. More...
 
- Static Public Member Functions inherited from ObjectStreamOut
template<class T >
static bool sWriteObject (ostream &inStream, ObjectStream::EStreamType inType, const T &inObject)
 Main function to write an object to a stream.
 
template<class T >
static bool sWriteObject (const char *inFileName, ObjectStream::EStreamType inType, const T &inObject)
 Main function to write an object to a file.
 
- Protected Types inherited from ObjectStream
using Identifier = uint32
 Identifier for objects.
 
- Protected Member Functions inherited from ObjectStreamOut
 ObjectStreamOut (ostream &inStream)
 Constructor.
 
- Protected Member Functions inherited from ObjectStream
virtual ~ObjectStream ()=default
 Destructor.
 
- Static Protected Member Functions inherited from ObjectStreamOut
static ObjectStreamOutOpen (EStreamType inType, ostream &inStream)
 Static constructor.
 
- Protected Attributes inherited from ObjectStreamOut
ostream & mStream
 
- Static Protected Attributes inherited from ObjectStream
static constexpr int sVersion = 1
 
static constexpr int sRevision = 0
 
static constexpr Identifier sNullIdentifier = 0
 
+

Detailed Description

+

Implementation of ObjectStream binary output stream.

+

Constructor & Destructor Documentation

+ +

◆ ObjectStreamBinaryOut()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_NAMESPACE_BEGIN ObjectStreamBinaryOut::ObjectStreamBinaryOut (ostream & inStream)
+
+explicit
+
+ +

Constructor and destructor.

+ +
+
+

Member Function Documentation

+ +

◆ WriteCount()

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WriteCount (uint32 inCount)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WriteDataType()

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WriteDataType (EOSDataType inType)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WriteIdentifier()

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WriteIdentifier (Identifier inIdentifier)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WriteName()

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WriteName (const char * inName)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [1/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const bool & inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [2/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const DMat44inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [3/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const double & inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [4/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const Double3inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [5/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const DVec3inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [6/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const float & inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [7/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const Float3inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [8/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const int & inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [9/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const Mat44inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [10/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const QuatinPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [11/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const StringinPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [12/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const uint16inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [13/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const uint32inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [14/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const uint64inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [15/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const uint8inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [16/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const Vec3inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [17/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamBinaryOut::WritePrimitiveData (const Vec4inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_object_stream_binary_out.js b/class_object_stream_binary_out.js new file mode 100644 index 000000000..a085b7397 --- /dev/null +++ b/class_object_stream_binary_out.js @@ -0,0 +1,25 @@ +var class_object_stream_binary_out = +[ + [ "ObjectStreamBinaryOut", "class_object_stream_binary_out.html#a95c257e2db19513f1222b8b8a7e96bc7", null ], + [ "WriteCount", "class_object_stream_binary_out.html#a9a8860b8189ef78d0ed13b4d06bb2086", null ], + [ "WriteDataType", "class_object_stream_binary_out.html#a3e4c46b7af4d61764078ce1f0910e1e1", null ], + [ "WriteIdentifier", "class_object_stream_binary_out.html#afc5f227a73e002dbf0e7fd61e6bfa041", null ], + [ "WriteName", "class_object_stream_binary_out.html#a49bb92e7db5bc0206b8784456b20a34e", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#a61fa64a09b0a198016555a219a3cea19", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#ae9fa7ac7be4c0b5bdbb24e6166a50784", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#ae62c55f8ae870ffa024555ba8248f6a1", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#acf7a62f3df473c6b9f48ee7e86c9123f", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#a7826f066654d0ac41a72f1695c07dc75", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#a2f1235bff136e028485875babbddde82", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#a2d229729283be8d8eee6b58468bfee65", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#aa719c9bf4e43173378e68477ff585f20", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#a7de7aaffbb11f6e6fc0a08812e0eef42", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#ae06af7cf0a39921c7dc8088037ee41d4", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#a9ea4d57d098b29425e9b4385157e1802", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#a92b6ddd19e11fc94fced9470def2b1f1", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#a948818cfda871440e31731647328e9ed", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#a26f4c299ed2d5bdeb5dc3c8e182707df", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#a3f2f8e67717d77df91eaee0f98655665", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#a342eeda59cdc448a0ecf28efd8e80aee", null ], + [ "WritePrimitiveData", "class_object_stream_binary_out.html#a87116604bea691da09f99454b324e85c", null ] +]; \ No newline at end of file diff --git a/class_object_stream_binary_out.png b/class_object_stream_binary_out.png new file mode 100644 index 000000000..fbfd9d15a Binary files /dev/null and b/class_object_stream_binary_out.png differ diff --git a/class_object_stream_in-members.html b/class_object_stream_in-members.html new file mode 100644 index 000000000..46561b49d --- /dev/null +++ b/class_object_stream_in-members.html @@ -0,0 +1,161 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamIn Member List
+
+
+ +

This is the complete list of members for ObjectStreamIn, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EStreamType enum nameObjectStream
GetInfo(istream &inStream, EStreamType &outType, int &outVersion, int &outRevision)ObjectStreamInprotectedstatic
Identifier typedefObjectStreamprotected
mStreamObjectStreamInprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
ObjectStreamIn(istream &inStream)ObjectStreamInexplicitprotected
Open(istream &inStream)ObjectStreamInprotectedstatic
operator=(const NonCopyable &)=deleteNonCopyable
Read(const RTTI *inRTTI)ObjectStreamIn
ReadClassData(const char *inClassName, void *inInstance) overrideObjectStreamInvirtual
ReadClassData(const ClassDescription &inClassDesc, void *inInstance)ObjectStreamIn
ReadCount(uint32 &outCount)=0IObjectStreamInpure virtual
ReadDataType(EOSDataType &outType)=0IObjectStreamInpure virtual
ReadIdentifier(Identifier &outIdentifier)=0IObjectStreamInpure virtual
ReadName(String &outName)=0IObjectStreamInpure virtual
ReadObject(const RTTI *&outRTTI)ObjectStreamIn
ReadPointerData(const RTTI *inRTTI, void **inPointer, int inRefCountOffset=-1) overrideObjectStreamInvirtual
ReadPrimitiveData(uint8 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(uint16 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(int &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(uint32 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(uint64 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(float &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(double &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(bool &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(String &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(Float3 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(Double3 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(Vec3 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(DVec3 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(Vec4 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(Quat &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(Mat44 &outPrimitive)=0IObjectStreamInpure virtual
ReadPrimitiveData(DMat44 &outPrimitive)=0IObjectStreamInpure virtual
ReadRTTI()ObjectStreamIn
SkipAttributeData(int inArrayDepth, EOSDataType inDataType, const char *inClassName)ObjectStreamIn
sNullIdentifierObjectStreamprotectedstatic
sReadObject(istream &inStream, T *&outObject)ObjectStreamIninlinestatic
sReadObject(istream &inStream, Ref< T > &outObject)ObjectStreamIninlinestatic
sReadObject(const char *inFileName, T *&outObject)ObjectStreamIninlinestatic
sReadObject(const char *inFileName, Ref< T > &outObject)ObjectStreamIninlinestatic
sRevisionObjectStreamprotectedstatic
sVersionObjectStreamprotectedstatic
~ObjectStream()=defaultObjectStreamprotectedvirtual
+
+ + + + diff --git a/class_object_stream_in.html b/class_object_stream_in.html new file mode 100644 index 000000000..332e167dd --- /dev/null +++ b/class_object_stream_in.html @@ -0,0 +1,748 @@ + + + + + + + +Jolt Physics: ObjectStreamIn Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamIn Class Reference
+
+
+ +

#include <ObjectStreamIn.h>

+
+Inheritance diagram for ObjectStreamIn:
+
+
+ + +IObjectStreamIn +ObjectStream +NonCopyable +ObjectStreamBinaryIn +ObjectStreamTextIn + +
+ + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

template<class T >
static bool sReadObject (istream &inStream, T *&outObject)
 Main function to read an object from a stream.
 
template<class T >
static bool sReadObject (istream &inStream, Ref< T > &outObject)
 Main function to read an object from a stream (reference counting pointer version)
 
template<class T >
static bool sReadObject (const char *inFileName, T *&outObject)
 Main function to read an object from a file.
 
template<class T >
static bool sReadObject (const char *inFileName, Ref< T > &outObject)
 Main function to read an object from a file (reference counting pointer version)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

Serialization operations

istream & mStream
 
void * Read (const RTTI *inRTTI)
 
void * ReadObject (const RTTI *&outRTTI)
 
bool ReadRTTI ()
 
virtual bool ReadClassData (const char *inClassName, void *inInstance) override
 
bool ReadClassData (const ClassDescription &inClassDesc, void *inInstance)
 
virtual bool ReadPointerData (const RTTI *inRTTI, void **inPointer, int inRefCountOffset=-1) override
 
bool SkipAttributeData (int inArrayDepth, EOSDataType inDataType, const char *inClassName)
 
 ObjectStreamIn (istream &inStream)
 Constructor.
 
static bool GetInfo (istream &inStream, EStreamType &outType, int &outVersion, int &outRevision)
 Determine the type and version of an object stream.
 
static ObjectStreamInOpen (istream &inStream)
 Static constructor.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ObjectStream
enum class  EStreamType { Text +, Binary + }
 Stream type. More...
 
- Public Member Functions inherited from IObjectStreamIn
virtual bool ReadDataType (EOSDataType &outType)=0
 
virtual bool ReadName (String &outName)=0
 
virtual bool ReadIdentifier (Identifier &outIdentifier)=0
 
virtual bool ReadCount (uint32 &outCount)=0
 
virtual bool ReadPrimitiveData (uint8 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (uint16 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (int &outPrimitive)=0
 
virtual bool ReadPrimitiveData (uint32 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (uint64 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (float &outPrimitive)=0
 
virtual bool ReadPrimitiveData (double &outPrimitive)=0
 
virtual bool ReadPrimitiveData (bool &outPrimitive)=0
 
virtual bool ReadPrimitiveData (String &outPrimitive)=0
 
virtual bool ReadPrimitiveData (Float3 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (Double3 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (Vec3 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (DVec3 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (Vec4 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (Quat &outPrimitive)=0
 
virtual bool ReadPrimitiveData (Mat44 &outPrimitive)=0
 
virtual bool ReadPrimitiveData (DMat44 &outPrimitive)=0
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Protected Types inherited from ObjectStream
using Identifier = uint32
 Identifier for objects.
 
- Protected Member Functions inherited from ObjectStream
virtual ~ObjectStream ()=default
 Destructor.
 
- Static Protected Attributes inherited from ObjectStream
static constexpr int sVersion = 1
 
static constexpr int sRevision = 0
 
static constexpr Identifier sNullIdentifier = 0
 
+

Detailed Description

+

ObjectStreamIn contains all logic for reading an object from disk. It is the base class for the text and binary input streams (ObjectStreamTextIn and ObjectStreamBinaryIn).

+

Constructor & Destructor Documentation

+ +

◆ ObjectStreamIn()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_NAMESPACE_BEGIN ObjectStreamIn::ObjectStreamIn (istream & inStream)
+
+explicitprotected
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetInfo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool ObjectStreamIn::GetInfo (istream & inStream,
EStreamTypeoutType,
int & outVersion,
int & outRevision 
)
+
+staticprotected
+
+ +

Determine the type and version of an object stream.

+ +
+
+ +

◆ Open()

+ +
+
+ + + + + +
+ + + + + + + + +
ObjectStreamIn * ObjectStreamIn::Open (istream & inStream)
+
+staticprotected
+
+ +

Static constructor.

+ +
+
+ +

◆ Read()

+ +
+
+ + + + + + + + +
void * ObjectStreamIn::Read (const RTTIinRTTI)
+
+ +
+
+ +

◆ ReadClassData() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ObjectStreamIn::ReadClassData (const char * inClassName,
void * inInstance 
)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadClassData() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool ObjectStreamIn::ReadClassData (const ClassDescription & inClassDesc,
void * inInstance 
)
+
+ +
+
+ +

◆ ReadObject()

+ +
+
+ + + + + + + + +
void * ObjectStreamIn::ReadObject (const RTTI *& outRTTI)
+
+ +
+
+ +

◆ ReadPointerData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool ObjectStreamIn::ReadPointerData (const RTTIinRTTI,
void ** inPointer,
int inRefCountOffset = -1 
)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadRTTI()

+ +
+
+ + + + + + + +
bool ObjectStreamIn::ReadRTTI ()
+
+ +
+
+ +

◆ SkipAttributeData()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool ObjectStreamIn::SkipAttributeData (int inArrayDepth,
EOSDataType inDataType,
const char * inClassName 
)
+
+ +
+
+ +

◆ sReadObject() [1/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static bool ObjectStreamIn::sReadObject (const char * inFileName,
Ref< T > & outObject 
)
+
+inlinestatic
+
+ +

Main function to read an object from a file (reference counting pointer version)

+ +
+
+ +

◆ sReadObject() [2/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static bool ObjectStreamIn::sReadObject (const char * inFileName,
T *& outObject 
)
+
+inlinestatic
+
+ +

Main function to read an object from a file.

+ +
+
+ +

◆ sReadObject() [3/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static bool ObjectStreamIn::sReadObject (istream & inStream,
Ref< T > & outObject 
)
+
+inlinestatic
+
+ +

Main function to read an object from a stream (reference counting pointer version)

+ +
+
+ +

◆ sReadObject() [4/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static bool ObjectStreamIn::sReadObject (istream & inStream,
T *& outObject 
)
+
+inlinestatic
+
+ +

Main function to read an object from a stream.

+ +
+
+

Member Data Documentation

+ +

◆ mStream

+ +
+
+ + + + + +
+ + + + +
istream& ObjectStreamIn::mStream
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_object_stream_in.js b/class_object_stream_in.js new file mode 100644 index 000000000..3e9d0746f --- /dev/null +++ b/class_object_stream_in.js @@ -0,0 +1,12 @@ +var class_object_stream_in = +[ + [ "ObjectStreamIn", "class_object_stream_in.html#ad45c7ba064bf63506d6d53d295b67d77", null ], + [ "Read", "class_object_stream_in.html#a25483a52f49c350e7d439f7965180558", null ], + [ "ReadClassData", "class_object_stream_in.html#aa2e0d94864596b86c7c9df2befa84e14", null ], + [ "ReadClassData", "class_object_stream_in.html#a9918789956492451260e1af1fa1c2db8", null ], + [ "ReadObject", "class_object_stream_in.html#a27fa5f9b8e00504d57a6440c81b3f6ff", null ], + [ "ReadPointerData", "class_object_stream_in.html#a771b7fa72a91f8141c74425c593723de", null ], + [ "ReadRTTI", "class_object_stream_in.html#aba38d15deacd14fb875da3b6d4a8f2d3", null ], + [ "SkipAttributeData", "class_object_stream_in.html#af6fad54cdc53d20f00a438c2b41af54b", null ], + [ "mStream", "class_object_stream_in.html#af192dd2e7103ba17cf40d13bed1ee123", null ] +]; \ No newline at end of file diff --git a/class_object_stream_in.png b/class_object_stream_in.png new file mode 100644 index 000000000..4fe36ed1b Binary files /dev/null and b/class_object_stream_in.png differ diff --git a/class_object_stream_out-members.html b/class_object_stream_out-members.html new file mode 100644 index 000000000..3010239c9 --- /dev/null +++ b/class_object_stream_out-members.html @@ -0,0 +1,160 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamOut Member List
+
+
+ +

This is the complete list of members for ObjectStreamOut, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EStreamType enum nameObjectStream
HintIndentDown()IObjectStreamOutinlinevirtual
HintIndentUp()IObjectStreamOutinlinevirtual
HintNextItem()IObjectStreamOutinlinevirtual
Identifier typedefObjectStreamprotected
mStreamObjectStreamOutprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
ObjectStreamOut(ostream &inStream)ObjectStreamOutexplicitprotected
Open(EStreamType inType, ostream &inStream)ObjectStreamOutprotectedstatic
operator=(const NonCopyable &)=deleteNonCopyable
QueueRTTI(const RTTI *inRTTI)ObjectStreamOut
sNullIdentifierObjectStreamprotectedstatic
sRevisionObjectStreamprotectedstatic
sVersionObjectStreamprotectedstatic
sWriteObject(ostream &inStream, ObjectStream::EStreamType inType, const T &inObject)ObjectStreamOutinlinestatic
sWriteObject(const char *inFileName, ObjectStream::EStreamType inType, const T &inObject)ObjectStreamOutinlinestatic
Write(const void *inObject, const RTTI *inRTTI)ObjectStreamOut
WriteClassData(const RTTI *inRTTI, const void *inInstance) overrideObjectStreamOutvirtual
WriteCount(uint32 inCount)=0IObjectStreamOutpure virtual
WriteDataType(EOSDataType inType)=0IObjectStreamOutpure virtual
WriteIdentifier(Identifier inIdentifier)=0IObjectStreamOutpure virtual
WriteName(const char *inName)=0IObjectStreamOutpure virtual
WriteObject(const void *inObject)ObjectStreamOut
WritePointerData(const RTTI *inRTTI, const void *inPointer) overrideObjectStreamOutvirtual
WritePrimitiveData(const uint8 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const uint16 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const int &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const uint32 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const uint64 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const float &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const double &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const bool &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const String &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const Float3 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const Double3 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const Vec3 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const DVec3 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const Vec4 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const Quat &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const Mat44 &inPrimitive)=0IObjectStreamOutpure virtual
WritePrimitiveData(const DMat44 &inPrimitive)=0IObjectStreamOutpure virtual
WriteRTTI(const RTTI *inRTTI)ObjectStreamOut
~ObjectStream()=defaultObjectStreamprotectedvirtual
+
+ + + + diff --git a/class_object_stream_out.html b/class_object_stream_out.html new file mode 100644 index 000000000..b7a215dbc --- /dev/null +++ b/class_object_stream_out.html @@ -0,0 +1,594 @@ + + + + + + + +Jolt Physics: ObjectStreamOut Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamOut Class Reference
+
+
+ +

#include <ObjectStreamOut.h>

+
+Inheritance diagram for ObjectStreamOut:
+
+
+ + +IObjectStreamOut +ObjectStream +NonCopyable +ObjectStreamBinaryOut +ObjectStreamTextOut + +
+ + + + + + + + + + +

+Static Public Member Functions

template<class T >
static bool sWriteObject (ostream &inStream, ObjectStream::EStreamType inType, const T &inObject)
 Main function to write an object to a stream.
 
template<class T >
static bool sWriteObject (const char *inFileName, ObjectStream::EStreamType inType, const T &inObject)
 Main function to write an object to a file.
 
+ + + + + + + + + + + + + + + + + + + + + +

Serialization operations

ostream & mStream
 
bool Write (const void *inObject, const RTTI *inRTTI)
 
void WriteObject (const void *inObject)
 
void QueueRTTI (const RTTI *inRTTI)
 
void WriteRTTI (const RTTI *inRTTI)
 
virtual void WriteClassData (const RTTI *inRTTI, const void *inInstance) override
 
virtual void WritePointerData (const RTTI *inRTTI, const void *inPointer) override
 
static ObjectStreamOutOpen (EStreamType inType, ostream &inStream)
 Static constructor.
 
 ObjectStreamOut (ostream &inStream)
 Constructor.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ObjectStream
enum class  EStreamType { Text +, Binary + }
 Stream type. More...
 
- Public Member Functions inherited from IObjectStreamOut
virtual void WriteDataType (EOSDataType inType)=0
 
virtual void WriteName (const char *inName)=0
 
virtual void WriteIdentifier (Identifier inIdentifier)=0
 
virtual void WriteCount (uint32 inCount)=0
 
virtual void WritePrimitiveData (const uint8 &inPrimitive)=0
 
virtual void WritePrimitiveData (const uint16 &inPrimitive)=0
 
virtual void WritePrimitiveData (const int &inPrimitive)=0
 
virtual void WritePrimitiveData (const uint32 &inPrimitive)=0
 
virtual void WritePrimitiveData (const uint64 &inPrimitive)=0
 
virtual void WritePrimitiveData (const float &inPrimitive)=0
 
virtual void WritePrimitiveData (const double &inPrimitive)=0
 
virtual void WritePrimitiveData (const bool &inPrimitive)=0
 
virtual void WritePrimitiveData (const String &inPrimitive)=0
 
virtual void WritePrimitiveData (const Float3 &inPrimitive)=0
 
virtual void WritePrimitiveData (const Double3 &inPrimitive)=0
 
virtual void WritePrimitiveData (const Vec3 &inPrimitive)=0
 
virtual void WritePrimitiveData (const DVec3 &inPrimitive)=0
 
virtual void WritePrimitiveData (const Vec4 &inPrimitive)=0
 
virtual void WritePrimitiveData (const Quat &inPrimitive)=0
 
virtual void WritePrimitiveData (const Mat44 &inPrimitive)=0
 
virtual void WritePrimitiveData (const DMat44 &inPrimitive)=0
 
virtual void HintNextItem ()
 
virtual void HintIndentUp ()
 
virtual void HintIndentDown ()
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Protected Types inherited from ObjectStream
using Identifier = uint32
 Identifier for objects.
 
- Protected Member Functions inherited from ObjectStream
virtual ~ObjectStream ()=default
 Destructor.
 
- Static Protected Attributes inherited from ObjectStream
static constexpr int sVersion = 1
 
static constexpr int sRevision = 0
 
static constexpr Identifier sNullIdentifier = 0
 
+

Detailed Description

+

ObjectStreamOut contains all logic for writing an object to disk. It is the base class for the text and binary output streams (ObjectStreamTextOut and ObjectStreamBinaryOut).

+

Constructor & Destructor Documentation

+ +

◆ ObjectStreamOut()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_NAMESPACE_BEGIN ObjectStreamOut::ObjectStreamOut (ostream & inStream)
+
+explicitprotected
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ Open()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ObjectStreamOut * ObjectStreamOut::Open (EStreamType inType,
ostream & inStream 
)
+
+staticprotected
+
+ +

Static constructor.

+ +
+
+ +

◆ QueueRTTI()

+ +
+
+ + + + + + + + +
void ObjectStreamOut::QueueRTTI (const RTTIinRTTI)
+
+ +
+
+ +

◆ sWriteObject() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static bool ObjectStreamOut::sWriteObject (const char * inFileName,
ObjectStream::EStreamType inType,
const T & inObject 
)
+
+inlinestatic
+
+ +

Main function to write an object to a file.

+ +
+
+ +

◆ sWriteObject() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static bool ObjectStreamOut::sWriteObject (ostream & inStream,
ObjectStream::EStreamType inType,
const T & inObject 
)
+
+inlinestatic
+
+ +

Main function to write an object to a stream.

+ +
+
+ +

◆ Write()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool ObjectStreamOut::Write (const void * inObject,
const RTTIinRTTI 
)
+
+ +
+
+ +

◆ WriteClassData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ObjectStreamOut::WriteClassData (const RTTIinRTTI,
const void * inInstance 
)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WriteObject()

+ +
+
+ + + + + + + + +
void ObjectStreamOut::WriteObject (const void * inObject)
+
+ +
+
+ +

◆ WritePointerData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ObjectStreamOut::WritePointerData (const RTTIinRTTI,
const void * inPointer 
)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WriteRTTI()

+ +
+
+ + + + + + + + +
void ObjectStreamOut::WriteRTTI (const RTTIinRTTI)
+
+ +
+
+

Member Data Documentation

+ +

◆ mStream

+ +
+
+ + + + + +
+ + + + +
ostream& ObjectStreamOut::mStream
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_object_stream_out.js b/class_object_stream_out.js new file mode 100644 index 000000000..501b6e1a1 --- /dev/null +++ b/class_object_stream_out.js @@ -0,0 +1,11 @@ +var class_object_stream_out = +[ + [ "ObjectStreamOut", "class_object_stream_out.html#abadcecd0476fc4bba8b9df42f36de777", null ], + [ "QueueRTTI", "class_object_stream_out.html#ae90b49dd2e05f23afc92697282dc0bc2", null ], + [ "Write", "class_object_stream_out.html#a00ac10a63cae82e5aa420739d243bb5e", null ], + [ "WriteClassData", "class_object_stream_out.html#a3b57667e92d4f96bff979fb7a3d4f971", null ], + [ "WriteObject", "class_object_stream_out.html#a9277b8858ca05bb673daefecab467901", null ], + [ "WritePointerData", "class_object_stream_out.html#a66b354aaac147096b7e213d5f32a3ea3", null ], + [ "WriteRTTI", "class_object_stream_out.html#a959db81abfcbd73830c56f52cc953a41", null ], + [ "mStream", "class_object_stream_out.html#ae8ab7835a47259ec7fc0d8bbeb2c3e8f", null ] +]; \ No newline at end of file diff --git a/class_object_stream_out.png b/class_object_stream_out.png new file mode 100644 index 000000000..c127c898d Binary files /dev/null and b/class_object_stream_out.png differ diff --git a/class_object_stream_text_in-members.html b/class_object_stream_text_in-members.html new file mode 100644 index 000000000..8a1598196 --- /dev/null +++ b/class_object_stream_text_in-members.html @@ -0,0 +1,162 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamTextIn Member List
+
+
+ +

This is the complete list of members for ObjectStreamTextIn, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EStreamType enum nameObjectStream
GetInfo(istream &inStream, EStreamType &outType, int &outVersion, int &outRevision)ObjectStreamInprotectedstatic
Identifier typedefObjectStreamprotected
mStreamObjectStreamInprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
ObjectStreamIn(istream &inStream)ObjectStreamInexplicitprotected
ObjectStreamTextIn(istream &inStream)ObjectStreamTextInexplicit
Open(istream &inStream)ObjectStreamInprotectedstatic
operator=(const NonCopyable &)=deleteNonCopyable
Read(const RTTI *inRTTI)ObjectStreamIn
ReadClassData(const char *inClassName, void *inInstance) overrideObjectStreamInvirtual
ReadClassData(const ClassDescription &inClassDesc, void *inInstance)ObjectStreamIn
ReadCount(uint32 &outCount) overrideObjectStreamTextInvirtual
ReadDataType(EOSDataType &outType) overrideObjectStreamTextInvirtual
ReadIdentifier(Identifier &outIdentifier) overrideObjectStreamTextInvirtual
ReadName(String &outName) overrideObjectStreamTextInvirtual
ReadObject(const RTTI *&outRTTI)ObjectStreamIn
ReadPointerData(const RTTI *inRTTI, void **inPointer, int inRefCountOffset=-1) overrideObjectStreamInvirtual
ReadPrimitiveData(uint8 &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(uint16 &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(int &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(uint32 &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(uint64 &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(float &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(double &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(bool &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(String &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(Float3 &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(Double3 &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(Vec3 &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(DVec3 &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(Vec4 &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(Quat &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(Mat44 &outPrimitive) overrideObjectStreamTextInvirtual
ReadPrimitiveData(DMat44 &outPrimitive) overrideObjectStreamTextInvirtual
ReadRTTI()ObjectStreamIn
SkipAttributeData(int inArrayDepth, EOSDataType inDataType, const char *inClassName)ObjectStreamIn
sNullIdentifierObjectStreamprotectedstatic
sReadObject(istream &inStream, T *&outObject)ObjectStreamIninlinestatic
sReadObject(istream &inStream, Ref< T > &outObject)ObjectStreamIninlinestatic
sReadObject(const char *inFileName, T *&outObject)ObjectStreamIninlinestatic
sReadObject(const char *inFileName, Ref< T > &outObject)ObjectStreamIninlinestatic
sRevisionObjectStreamprotectedstatic
sVersionObjectStreamprotectedstatic
~ObjectStream()=defaultObjectStreamprotectedvirtual
+
+ + + + diff --git a/class_object_stream_text_in.html b/class_object_stream_text_in.html new file mode 100644 index 000000000..2183e7d55 --- /dev/null +++ b/class_object_stream_text_in.html @@ -0,0 +1,889 @@ + + + + + + + +Jolt Physics: ObjectStreamTextIn Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamTextIn Class Reference
+
+
+ +

Implementation of ObjectStream text input stream. + More...

+ +

#include <ObjectStreamTextIn.h>

+
+Inheritance diagram for ObjectStreamTextIn:
+
+
+ + +ObjectStreamIn +IObjectStreamIn +ObjectStream +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ObjectStreamTextIn (istream &inStream)
 Constructor.
 
- Public Member Functions inherited from ObjectStreamIn
void * Read (const RTTI *inRTTI)
 
void * ReadObject (const RTTI *&outRTTI)
 
bool ReadRTTI ()
 
virtual bool ReadClassData (const char *inClassName, void *inInstance) override
 
bool ReadClassData (const ClassDescription &inClassDesc, void *inInstance)
 
virtual bool ReadPointerData (const RTTI *inRTTI, void **inPointer, int inRefCountOffset=-1) override
 
bool SkipAttributeData (int inArrayDepth, EOSDataType inDataType, const char *inClassName)
 
Input type specific operations
Read primitives
Read compounds
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Input type specific operations

virtual bool ReadDataType (EOSDataType &outType) override
 
virtual bool ReadName (String &outName) override
 
virtual bool ReadIdentifier (Identifier &outIdentifier) override
 
virtual bool ReadCount (uint32 &outCount) override
 
virtual bool ReadPrimitiveData (uint8 &outPrimitive) override
 
virtual bool ReadPrimitiveData (uint16 &outPrimitive) override
 
virtual bool ReadPrimitiveData (int &outPrimitive) override
 
virtual bool ReadPrimitiveData (uint32 &outPrimitive) override
 
virtual bool ReadPrimitiveData (uint64 &outPrimitive) override
 
virtual bool ReadPrimitiveData (float &outPrimitive) override
 
virtual bool ReadPrimitiveData (double &outPrimitive) override
 
virtual bool ReadPrimitiveData (bool &outPrimitive) override
 
virtual bool ReadPrimitiveData (String &outPrimitive) override
 
virtual bool ReadPrimitiveData (Float3 &outPrimitive) override
 
virtual bool ReadPrimitiveData (Double3 &outPrimitive) override
 
virtual bool ReadPrimitiveData (Vec3 &outPrimitive) override
 
virtual bool ReadPrimitiveData (DVec3 &outPrimitive) override
 
virtual bool ReadPrimitiveData (Vec4 &outPrimitive) override
 
virtual bool ReadPrimitiveData (Quat &outPrimitive) override
 
virtual bool ReadPrimitiveData (Mat44 &outPrimitive) override
 
virtual bool ReadPrimitiveData (DMat44 &outPrimitive) override
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ObjectStream
enum class  EStreamType { Text +, Binary + }
 Stream type. More...
 
- Static Public Member Functions inherited from ObjectStreamIn
template<class T >
static bool sReadObject (istream &inStream, T *&outObject)
 Main function to read an object from a stream.
 
template<class T >
static bool sReadObject (istream &inStream, Ref< T > &outObject)
 Main function to read an object from a stream (reference counting pointer version)
 
template<class T >
static bool sReadObject (const char *inFileName, T *&outObject)
 Main function to read an object from a file.
 
template<class T >
static bool sReadObject (const char *inFileName, Ref< T > &outObject)
 Main function to read an object from a file (reference counting pointer version)
 
- Protected Types inherited from ObjectStream
using Identifier = uint32
 Identifier for objects.
 
- Protected Member Functions inherited from ObjectStreamIn
 ObjectStreamIn (istream &inStream)
 Constructor.
 
- Protected Member Functions inherited from ObjectStream
virtual ~ObjectStream ()=default
 Destructor.
 
- Static Protected Member Functions inherited from ObjectStreamIn
static bool GetInfo (istream &inStream, EStreamType &outType, int &outVersion, int &outRevision)
 Determine the type and version of an object stream.
 
static ObjectStreamInOpen (istream &inStream)
 Static constructor.
 
- Protected Attributes inherited from ObjectStreamIn
istream & mStream
 
- Static Protected Attributes inherited from ObjectStream
static constexpr int sVersion = 1
 
static constexpr int sRevision = 0
 
static constexpr Identifier sNullIdentifier = 0
 
+

Detailed Description

+

Implementation of ObjectStream text input stream.

+

Constructor & Destructor Documentation

+ +

◆ ObjectStreamTextIn()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_NAMESPACE_BEGIN ObjectStreamTextIn::ObjectStreamTextIn (istream & inStream)
+
+explicit
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ ReadCount()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadCount (uint32outCount)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadDataType()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadDataType (EOSDataTypeoutType)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadIdentifier()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadIdentifier (IdentifieroutIdentifier)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadName()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadName (StringoutName)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [1/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (bool & outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [2/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (DMat44outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [3/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (double & outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [4/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (Double3outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [5/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (DVec3outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [6/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (float & outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [7/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (Float3outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [8/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (int & outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [9/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (Mat44outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [10/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (QuatoutPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [11/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (StringoutPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [12/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (uint16outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [13/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (uint32outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [14/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (uint64outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [15/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (uint8outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [16/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (Vec3outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+ +

◆ ReadPrimitiveData() [17/17]

+ +
+
+ + + + + +
+ + + + + + + + +
bool ObjectStreamTextIn::ReadPrimitiveData (Vec4outPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamIn.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_object_stream_text_in.js b/class_object_stream_text_in.js new file mode 100644 index 000000000..6bd7c5599 --- /dev/null +++ b/class_object_stream_text_in.js @@ -0,0 +1,25 @@ +var class_object_stream_text_in = +[ + [ "ObjectStreamTextIn", "class_object_stream_text_in.html#af134b8a2a22f563c4b550f48aff21741", null ], + [ "ReadCount", "class_object_stream_text_in.html#acaef815639a4298f6a576140de8cb6a8", null ], + [ "ReadDataType", "class_object_stream_text_in.html#adc4196beb9e42a5b479b5cf7c9fbd736", null ], + [ "ReadIdentifier", "class_object_stream_text_in.html#a92609c6794b05cee7bf47018ade56136", null ], + [ "ReadName", "class_object_stream_text_in.html#a79116e71f7cc0373156904e3d9a74ac6", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#af69f711f9957bacae5aebfdac9d60b56", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#aa53bdd6294f7c0ead2e977e91d5c108f", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#ac9b5883bbe2ef7b8bba215fa2fecf042", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#addcd289d1d73738db0d48f8a0f8992fd", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#aa9713b3c0ccaf7ea3c569e84021651f2", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#abee43bfb201ecee249daef30070b42b1", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#a23b4394afd8cb0aaba9a91f6adfa34ce", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#adb602b716adef6cb25d1a2393adc25b9", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#a66f3b34ded6e7856aab86ee49eb88ac0", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#a26c738ce8e470bdf9e98108ead591c8a", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#afb0ef76d9a22441970eec9a347bbb66a", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#ad407eb47eed065b9f39745535715de21", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#ae795d421fc37ecbfc8b38acfcfbeb872", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#a5b6bbd4b188c814bc0008e1a8730c00f", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#ab7c8919080f8614b28e097fd11324dae", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#ac5db7ff153f5b4efcd5760a21fb6723f", null ], + [ "ReadPrimitiveData", "class_object_stream_text_in.html#ab52271c6de1325d7d302095812d588bf", null ] +]; \ No newline at end of file diff --git a/class_object_stream_text_in.png b/class_object_stream_text_in.png new file mode 100644 index 000000000..9631c3187 Binary files /dev/null and b/class_object_stream_text_in.png differ diff --git a/class_object_stream_text_out-members.html b/class_object_stream_text_out-members.html new file mode 100644 index 000000000..b8963014b --- /dev/null +++ b/class_object_stream_text_out-members.html @@ -0,0 +1,161 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStreamTextOut Member List
+
+
+ +

This is the complete list of members for ObjectStreamTextOut, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EStreamType enum nameObjectStream
HintIndentDown() overrideObjectStreamTextOutvirtual
HintIndentUp() overrideObjectStreamTextOutvirtual
HintNextItem() overrideObjectStreamTextOutvirtual
Identifier typedefObjectStreamprotected
mStreamObjectStreamOutprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
ObjectStreamOut(ostream &inStream)ObjectStreamOutexplicitprotected
ObjectStreamTextOut(ostream &inStream)ObjectStreamTextOutexplicit
Open(EStreamType inType, ostream &inStream)ObjectStreamOutprotectedstatic
operator=(const NonCopyable &)=deleteNonCopyable
QueueRTTI(const RTTI *inRTTI)ObjectStreamOut
sNullIdentifierObjectStreamprotectedstatic
sRevisionObjectStreamprotectedstatic
sVersionObjectStreamprotectedstatic
sWriteObject(ostream &inStream, ObjectStream::EStreamType inType, const T &inObject)ObjectStreamOutinlinestatic
sWriteObject(const char *inFileName, ObjectStream::EStreamType inType, const T &inObject)ObjectStreamOutinlinestatic
Write(const void *inObject, const RTTI *inRTTI)ObjectStreamOut
WriteClassData(const RTTI *inRTTI, const void *inInstance) overrideObjectStreamOutvirtual
WriteCount(uint32 inCount) overrideObjectStreamTextOutvirtual
WriteDataType(EOSDataType inType) overrideObjectStreamTextOutvirtual
WriteIdentifier(Identifier inIdentifier) overrideObjectStreamTextOutvirtual
WriteName(const char *inName) overrideObjectStreamTextOutvirtual
WriteObject(const void *inObject)ObjectStreamOut
WritePointerData(const RTTI *inRTTI, const void *inPointer) overrideObjectStreamOutvirtual
WritePrimitiveData(const uint8 &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const uint16 &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const int &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const uint32 &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const uint64 &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const float &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const double &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const bool &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const String &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const Float3 &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const Double3 &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const Vec3 &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const DVec3 &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const Vec4 &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const Quat &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const Mat44 &inPrimitive) overrideObjectStreamTextOutvirtual
WritePrimitiveData(const DMat44 &inPrimitive) overrideObjectStreamTextOutvirtual
WriteRTTI(const RTTI *inRTTI)ObjectStreamOut
~ObjectStream()=defaultObjectStreamprotectedvirtual
+
+ + + + diff --git a/class_object_stream_text_out.html b/class_object_stream_text_out.html new file mode 100644 index 000000000..b49e9078a --- /dev/null +++ b/class_object_stream_text_out.html @@ -0,0 +1,965 @@ + + + + + + + +Jolt Physics: ObjectStreamTextOut Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectStreamTextOut Class Reference
+
+
+ +

Implementation of ObjectStream text output stream. + More...

+ +

#include <ObjectStreamTextOut.h>

+
+Inheritance diagram for ObjectStreamTextOut:
+
+
+ + +ObjectStreamOut +IObjectStreamOut +ObjectStream +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ObjectStreamTextOut (ostream &inStream)
 Constructor and destructor.
 
Output type specific operations
virtual void WriteDataType (EOSDataType inType) override
 
virtual void WriteName (const char *inName) override
 
virtual void WriteIdentifier (Identifier inIdentifier) override
 
virtual void WriteCount (uint32 inCount) override
 
virtual void WritePrimitiveData (const uint8 &inPrimitive) override
 
virtual void WritePrimitiveData (const uint16 &inPrimitive) override
 
virtual void WritePrimitiveData (const int &inPrimitive) override
 
virtual void WritePrimitiveData (const uint32 &inPrimitive) override
 
virtual void WritePrimitiveData (const uint64 &inPrimitive) override
 
virtual void WritePrimitiveData (const float &inPrimitive) override
 
virtual void WritePrimitiveData (const double &inPrimitive) override
 
virtual void WritePrimitiveData (const bool &inPrimitive) override
 
virtual void WritePrimitiveData (const String &inPrimitive) override
 
virtual void WritePrimitiveData (const Float3 &inPrimitive) override
 
virtual void WritePrimitiveData (const Double3 &inPrimitive) override
 
virtual void WritePrimitiveData (const Vec3 &inPrimitive) override
 
virtual void WritePrimitiveData (const DVec3 &inPrimitive) override
 
virtual void WritePrimitiveData (const Vec4 &inPrimitive) override
 
virtual void WritePrimitiveData (const Quat &inPrimitive) override
 
virtual void WritePrimitiveData (const Mat44 &inPrimitive) override
 
virtual void WritePrimitiveData (const DMat44 &inPrimitive) override
 
- Public Member Functions inherited from ObjectStreamOut
bool Write (const void *inObject, const RTTI *inRTTI)
 
void WriteObject (const void *inObject)
 
void QueueRTTI (const RTTI *inRTTI)
 
void WriteRTTI (const RTTI *inRTTI)
 
virtual void WriteClassData (const RTTI *inRTTI, const void *inInstance) override
 
virtual void WritePointerData (const RTTI *inRTTI, const void *inPointer) override
 
Output type specific operations
Write primitives
Write compounds
Layout hints (for text output)
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + +

Layout hints (for text output)

virtual void HintNextItem () override
 
virtual void HintIndentUp () override
 
virtual void HintIndentDown () override
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ObjectStream
enum class  EStreamType { Text +, Binary + }
 Stream type. More...
 
- Static Public Member Functions inherited from ObjectStreamOut
template<class T >
static bool sWriteObject (ostream &inStream, ObjectStream::EStreamType inType, const T &inObject)
 Main function to write an object to a stream.
 
template<class T >
static bool sWriteObject (const char *inFileName, ObjectStream::EStreamType inType, const T &inObject)
 Main function to write an object to a file.
 
- Protected Types inherited from ObjectStream
using Identifier = uint32
 Identifier for objects.
 
- Protected Member Functions inherited from ObjectStreamOut
 ObjectStreamOut (ostream &inStream)
 Constructor.
 
- Protected Member Functions inherited from ObjectStream
virtual ~ObjectStream ()=default
 Destructor.
 
- Static Protected Member Functions inherited from ObjectStreamOut
static ObjectStreamOutOpen (EStreamType inType, ostream &inStream)
 Static constructor.
 
- Protected Attributes inherited from ObjectStreamOut
ostream & mStream
 
- Static Protected Attributes inherited from ObjectStream
static constexpr int sVersion = 1
 
static constexpr int sRevision = 0
 
static constexpr Identifier sNullIdentifier = 0
 
+

Detailed Description

+

Implementation of ObjectStream text output stream.

+

Constructor & Destructor Documentation

+ +

◆ ObjectStreamTextOut()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_NAMESPACE_BEGIN ObjectStreamTextOut::ObjectStreamTextOut (ostream & inStream)
+
+explicit
+
+ +

Constructor and destructor.

+ +
+
+

Member Function Documentation

+ +

◆ HintIndentDown()

+ +
+
+ + + + + +
+ + + + + + + +
void ObjectStreamTextOut::HintIndentDown ()
+
+overridevirtual
+
+ +

Reimplemented from IObjectStreamOut.

+ +
+
+ +

◆ HintIndentUp()

+ +
+
+ + + + + +
+ + + + + + + +
void ObjectStreamTextOut::HintIndentUp ()
+
+overridevirtual
+
+ +

Reimplemented from IObjectStreamOut.

+ +
+
+ +

◆ HintNextItem()

+ +
+
+ + + + + +
+ + + + + + + +
void ObjectStreamTextOut::HintNextItem ()
+
+overridevirtual
+
+ +

Reimplemented from IObjectStreamOut.

+ +
+
+ +

◆ WriteCount()

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WriteCount (uint32 inCount)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WriteDataType()

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WriteDataType (EOSDataType inType)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WriteIdentifier()

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WriteIdentifier (Identifier inIdentifier)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WriteName()

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WriteName (const char * inName)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [1/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const bool & inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [2/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const DMat44inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [3/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const double & inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [4/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const Double3inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [5/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const DVec3inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [6/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const float & inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [7/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const Float3inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [8/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const int & inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [9/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const Mat44inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [10/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const QuatinPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [11/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const StringinPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [12/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const uint16inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [13/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const uint32inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [14/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const uint64inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [15/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const uint8inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [16/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const Vec3inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+ +

◆ WritePrimitiveData() [17/17]

+ +
+
+ + + + + +
+ + + + + + + + +
void ObjectStreamTextOut::WritePrimitiveData (const Vec4inPrimitive)
+
+overridevirtual
+
+ +

Implements IObjectStreamOut.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_object_stream_text_out.js b/class_object_stream_text_out.js new file mode 100644 index 000000000..9ac9caa02 --- /dev/null +++ b/class_object_stream_text_out.js @@ -0,0 +1,28 @@ +var class_object_stream_text_out = +[ + [ "ObjectStreamTextOut", "class_object_stream_text_out.html#a26dd20490fddafd53c66bf6b0bae4e18", null ], + [ "HintIndentDown", "class_object_stream_text_out.html#abb8c8ed67d0c0093551de3e8e35f1602", null ], + [ "HintIndentUp", "class_object_stream_text_out.html#a9fc1cac8ca74e8897ec19b2df8de1eb9", null ], + [ "HintNextItem", "class_object_stream_text_out.html#acc5aff4eec5365eaf3b43070cd893485", null ], + [ "WriteCount", "class_object_stream_text_out.html#ae879ce81e2b436adc60a15dfd60ce6f7", null ], + [ "WriteDataType", "class_object_stream_text_out.html#a27ba41722490a37f58523464135861eb", null ], + [ "WriteIdentifier", "class_object_stream_text_out.html#a7825ca05bdb8a4af27f109ede048d761", null ], + [ "WriteName", "class_object_stream_text_out.html#a9aa76251bab9b55c4d341da5193c3bff", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#ab2ca6f858d4f8f4101407705879a9d0d", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#a91250a7c43130df76420d0646dd9b27d", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#ae565ad15b730b986a4502a3bb8f98f7e", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#a0b5b19e45beaded140033d1cb9a5959d", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#ad4b59875d5fe76496c323922967438e6", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#ae89da6b62649f9e90a14e9c36ea05549", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#a22b16b26d56a883b07fac755cdc8aaeb", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#ab60c8760dfdb5bc2234ea78c7bbeec7f", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#aa108e6984ae10e3df0f26aae50103e1a", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#abcd26a7be4af7a8c2e5240d173bb8622", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#a4b039dd07dfc79c9af1aaa680f5c9e7d", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#a27dc6c86eae3dfea32f2510372929eb4", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#ab64ddb49218167cc914987fc158f052c", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#a10331f7980083d8c57d404091df88922", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#a89ab9b82784f3d5effaa0271d1908859", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#ae9e5c7c394023611aeb2913c1747424f", null ], + [ "WritePrimitiveData", "class_object_stream_text_out.html#ab709b722d2a2b7ea2b5f867ae387849d", null ] +]; \ No newline at end of file diff --git a/class_object_stream_text_out.png b/class_object_stream_text_out.png new file mode 100644 index 000000000..cfde8e6dd Binary files /dev/null and b/class_object_stream_text_out.png differ diff --git a/class_object_vs_broad_phase_layer_filter-members.html b/class_object_vs_broad_phase_layer_filter-members.html new file mode 100644 index 000000000..529eb3728 --- /dev/null +++ b/class_object_vs_broad_phase_layer_filter-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectVsBroadPhaseLayerFilter Member List
+
+
+ +

This is the complete list of members for ObjectVsBroadPhaseLayerFilter, including all inherited members.

+ + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) constObjectVsBroadPhaseLayerFilterinlinevirtual
~ObjectVsBroadPhaseLayerFilter()=defaultObjectVsBroadPhaseLayerFiltervirtual
+
+ + + + diff --git a/class_object_vs_broad_phase_layer_filter.html b/class_object_vs_broad_phase_layer_filter.html new file mode 100644 index 000000000..4695fec84 --- /dev/null +++ b/class_object_vs_broad_phase_layer_filter.html @@ -0,0 +1,224 @@ + + + + + + + +Jolt Physics: ObjectVsBroadPhaseLayerFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectVsBroadPhaseLayerFilter Class Reference
+
+
+ +

Class to test if an object can collide with a broadphase layer. Used while finding collision pairs. + More...

+ +

#include <BroadPhaseLayer.h>

+
+Inheritance diagram for ObjectVsBroadPhaseLayerFilter:
+
+
+ + +NonCopyable +ObjectVsBroadPhaseLayerFilterMask +ObjectVsBroadPhaseLayerFilterTable + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~ObjectVsBroadPhaseLayerFilter ()=default
 Destructor.
 
virtual bool ShouldCollide (ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const
 Returns true if an object layer should collide with a broadphase layer.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Class to test if an object can collide with a broadphase layer. Used while finding collision pairs.

+

Constructor & Destructor Documentation

+ +

◆ ~ObjectVsBroadPhaseLayerFilter()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ObjectVsBroadPhaseLayerFilter::~ObjectVsBroadPhaseLayerFilter ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ObjectVsBroadPhaseLayerFilter::ShouldCollide (ObjectLayer inLayer1,
BroadPhaseLayer inLayer2 
) const
+
+inlinevirtual
+
+ +

Returns true if an object layer should collide with a broadphase layer.

+ +

Reimplemented in ObjectVsBroadPhaseLayerFilterMask, and ObjectVsBroadPhaseLayerFilterTable.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_object_vs_broad_phase_layer_filter.js b/class_object_vs_broad_phase_layer_filter.js new file mode 100644 index 000000000..999a000f7 --- /dev/null +++ b/class_object_vs_broad_phase_layer_filter.js @@ -0,0 +1,5 @@ +var class_object_vs_broad_phase_layer_filter = +[ + [ "~ObjectVsBroadPhaseLayerFilter", "class_object_vs_broad_phase_layer_filter.html#a8da487435d0000d4106f63ba40ab4090", null ], + [ "ShouldCollide", "class_object_vs_broad_phase_layer_filter.html#a6004607941fda1b8c6a88471440e0e86", null ] +]; \ No newline at end of file diff --git a/class_object_vs_broad_phase_layer_filter.png b/class_object_vs_broad_phase_layer_filter.png new file mode 100644 index 000000000..d2064c320 Binary files /dev/null and b/class_object_vs_broad_phase_layer_filter.png differ diff --git a/class_object_vs_broad_phase_layer_filter_mask-members.html b/class_object_vs_broad_phase_layer_filter_mask-members.html new file mode 100644 index 000000000..6600c420f --- /dev/null +++ b/class_object_vs_broad_phase_layer_filter_mask-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectVsBroadPhaseLayerFilterMask Member List
+
+
+ +

This is the complete list of members for ObjectVsBroadPhaseLayerFilterMask, including all inherited members.

+ + + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
ObjectVsBroadPhaseLayerFilterMask(const BroadPhaseLayerInterfaceMask &inBroadPhaseLayerInterface)ObjectVsBroadPhaseLayerFilterMaskinline
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const overrideObjectVsBroadPhaseLayerFilterMaskinlinevirtual
~ObjectVsBroadPhaseLayerFilter()=defaultObjectVsBroadPhaseLayerFiltervirtual
+
+ + + + diff --git a/class_object_vs_broad_phase_layer_filter_mask.html b/class_object_vs_broad_phase_layer_filter_mask.html new file mode 100644 index 000000000..7a732d82f --- /dev/null +++ b/class_object_vs_broad_phase_layer_filter_mask.html @@ -0,0 +1,225 @@ + + + + + + + +Jolt Physics: ObjectVsBroadPhaseLayerFilterMask Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectVsBroadPhaseLayerFilterMask Class Reference
+
+
+ +

#include <ObjectVsBroadPhaseLayerFilterMask.h>

+
+Inheritance diagram for ObjectVsBroadPhaseLayerFilterMask:
+
+
+ + +ObjectVsBroadPhaseLayerFilter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ObjectVsBroadPhaseLayerFilterMask (const BroadPhaseLayerInterfaceMask &inBroadPhaseLayerInterface)
 Constructor.
 
virtual bool ShouldCollide (ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const override
 Returns true if an object layer should collide with a broadphase layer.
 
- Public Member Functions inherited from ObjectVsBroadPhaseLayerFilter
virtual ~ObjectVsBroadPhaseLayerFilter ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Class that determines if an object layer can collide with a broadphase layer. This implementation works together with BroadPhaseLayerInterfaceMask and ObjectLayerPairFilterMask

+

Constructor & Destructor Documentation

+ +

◆ ObjectVsBroadPhaseLayerFilterMask()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE ObjectVsBroadPhaseLayerFilterMask::ObjectVsBroadPhaseLayerFilterMask (const BroadPhaseLayerInterfaceMaskinBroadPhaseLayerInterface)
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ObjectVsBroadPhaseLayerFilterMask::ShouldCollide (ObjectLayer inLayer1,
BroadPhaseLayer inLayer2 
) const
+
+inlineoverridevirtual
+
+ +

Returns true if an object layer should collide with a broadphase layer.

+ +

Reimplemented from ObjectVsBroadPhaseLayerFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_object_vs_broad_phase_layer_filter_mask.js b/class_object_vs_broad_phase_layer_filter_mask.js new file mode 100644 index 000000000..9cad45a78 --- /dev/null +++ b/class_object_vs_broad_phase_layer_filter_mask.js @@ -0,0 +1,5 @@ +var class_object_vs_broad_phase_layer_filter_mask = +[ + [ "ObjectVsBroadPhaseLayerFilterMask", "class_object_vs_broad_phase_layer_filter_mask.html#a91030107a0decb550875823bf5f7dd25", null ], + [ "ShouldCollide", "class_object_vs_broad_phase_layer_filter_mask.html#ab6ba91976c330c45c088aa4fb1a5414e", null ] +]; \ No newline at end of file diff --git a/class_object_vs_broad_phase_layer_filter_mask.png b/class_object_vs_broad_phase_layer_filter_mask.png new file mode 100644 index 000000000..0ab839eab Binary files /dev/null and b/class_object_vs_broad_phase_layer_filter_mask.png differ diff --git a/class_object_vs_broad_phase_layer_filter_table-members.html b/class_object_vs_broad_phase_layer_filter_table-members.html new file mode 100644 index 000000000..016bc9652 --- /dev/null +++ b/class_object_vs_broad_phase_layer_filter_table-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectVsBroadPhaseLayerFilterTable Member List
+
+
+ +

This is the complete list of members for ObjectVsBroadPhaseLayerFilterTable, including all inherited members.

+ + + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
ObjectVsBroadPhaseLayerFilterTable(const BroadPhaseLayerInterface &inBroadPhaseLayerInterface, uint inNumBroadPhaseLayers, const ObjectLayerPairFilter &inObjectLayerPairFilter, uint inNumObjectLayers)ObjectVsBroadPhaseLayerFilterTableinline
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const overrideObjectVsBroadPhaseLayerFilterTableinlinevirtual
~ObjectVsBroadPhaseLayerFilter()=defaultObjectVsBroadPhaseLayerFiltervirtual
+
+ + + + diff --git a/class_object_vs_broad_phase_layer_filter_table.html b/class_object_vs_broad_phase_layer_filter_table.html new file mode 100644 index 000000000..ad119cfea --- /dev/null +++ b/class_object_vs_broad_phase_layer_filter_table.html @@ -0,0 +1,253 @@ + + + + + + + +Jolt Physics: ObjectVsBroadPhaseLayerFilterTable Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ObjectVsBroadPhaseLayerFilterTable Class Reference
+
+
+ +

#include <ObjectVsBroadPhaseLayerFilterTable.h>

+
+Inheritance diagram for ObjectVsBroadPhaseLayerFilterTable:
+
+
+ + +ObjectVsBroadPhaseLayerFilter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ObjectVsBroadPhaseLayerFilterTable (const BroadPhaseLayerInterface &inBroadPhaseLayerInterface, uint inNumBroadPhaseLayers, const ObjectLayerPairFilter &inObjectLayerPairFilter, uint inNumObjectLayers)
 
virtual bool ShouldCollide (ObjectLayer inLayer1, BroadPhaseLayer inLayer2) const override
 Returns true if an object layer should collide with a broadphase layer.
 
- Public Member Functions inherited from ObjectVsBroadPhaseLayerFilter
virtual ~ObjectVsBroadPhaseLayerFilter ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Class that determines if an object layer can collide with a broadphase layer. This implementation uses a table and constructs itself from an ObjectLayerPairFilter and a BroadPhaseLayerInterface.

+

Constructor & Destructor Documentation

+ +

◆ ObjectVsBroadPhaseLayerFilterTable()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_OVERRIDE_NEW_DELETE ObjectVsBroadPhaseLayerFilterTable::ObjectVsBroadPhaseLayerFilterTable (const BroadPhaseLayerInterfaceinBroadPhaseLayerInterface,
uint inNumBroadPhaseLayers,
const ObjectLayerPairFilterinObjectLayerPairFilter,
uint inNumObjectLayers 
)
+
+inline
+
+

Construct the table

Parameters
+ + + + + +
inBroadPhaseLayerInterfaceThe broad phase layer interface that maps object layers to broad phase layers
inNumBroadPhaseLayersNumber of broad phase layers
inObjectLayerPairFilterThe object layer pair filter that determines which object layers can collide
inNumObjectLayersNumber of object layers
+
+
+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ObjectVsBroadPhaseLayerFilterTable::ShouldCollide (ObjectLayer inLayer1,
BroadPhaseLayer inLayer2 
) const
+
+inlineoverridevirtual
+
+ +

Returns true if an object layer should collide with a broadphase layer.

+ +

Reimplemented from ObjectVsBroadPhaseLayerFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_object_vs_broad_phase_layer_filter_table.js b/class_object_vs_broad_phase_layer_filter_table.js new file mode 100644 index 000000000..0fa753a2a --- /dev/null +++ b/class_object_vs_broad_phase_layer_filter_table.js @@ -0,0 +1,5 @@ +var class_object_vs_broad_phase_layer_filter_table = +[ + [ "ObjectVsBroadPhaseLayerFilterTable", "class_object_vs_broad_phase_layer_filter_table.html#afc97e0c90982e30a48f249562d2b8886", null ], + [ "ShouldCollide", "class_object_vs_broad_phase_layer_filter_table.html#afe9699576b8dc801762a73e7d5244ff6", null ] +]; \ No newline at end of file diff --git a/class_object_vs_broad_phase_layer_filter_table.png b/class_object_vs_broad_phase_layer_filter_table.png new file mode 100644 index 000000000..409682b10 Binary files /dev/null and b/class_object_vs_broad_phase_layer_filter_table.png differ diff --git a/class_offset_center_of_mass_shape-members.html b/class_offset_center_of_mass_shape-members.html new file mode 100644 index 000000000..c0218cf14 --- /dev/null +++ b/class_offset_center_of_mass_shape-members.html @@ -0,0 +1,200 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OffsetCenterOfMassShape Member List
+
+
+ +

This is the complete list of members for OffsetCenterOfMassShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideOffsetCenterOfMassShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideOffsetCenterOfMassShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const overrideOffsetCenterOfMassShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideOffsetCenterOfMassShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideOffsetCenterOfMassShapevirtual
DecoratedShape(EShapeSubType inSubType)DecoratedShapeinlineexplicit
DecoratedShape(EShapeSubType inSubType, const Shape *inInnerShape)DecoratedShapeinline
DecoratedShape(EShapeSubType inSubType, const DecoratedShapeSettings &inSettings, ShapeResult &outResult)DecoratedShape
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideOffsetCenterOfMassShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideOffsetCenterOfMassShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideOffsetCenterOfMassShapevirtual
GetCenterOfMass() const overrideOffsetCenterOfMassShapeinlinevirtual
GetInnerRadius() const overrideOffsetCenterOfMassShapeinlinevirtual
GetInnerShape() constDecoratedShapeinline
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const overrideDecoratedShapeinlinevirtual
GetLocalBounds() const overrideOffsetCenterOfMassShapevirtual
GetMassProperties() const overrideOffsetCenterOfMassShapeinlinevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideDecoratedShapevirtual
GetOffset() constOffsetCenterOfMassShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideOffsetCenterOfMassShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) const overrideDecoratedShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideOffsetCenterOfMassShapevirtual
DecoratedShape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideDecoratedShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const overrideOffsetCenterOfMassShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) const overrideDecoratedShapevirtual
GetSubType() constShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideOffsetCenterOfMassShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideOffsetCenterOfMassShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideOffsetCenterOfMassShapeinlinevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideOffsetCenterOfMassShapeinlinevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideOffsetCenterOfMassShapeinlinevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideOffsetCenterOfMassShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constOffsetCenterOfMassShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constOffsetCenterOfMassShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) const overrideDecoratedShapeinlinevirtual
MakeScaleValid(Vec3Arg inScale) const overrideDecoratedShapeinlinevirtual
MaterialToIDMap typedefShape
mInnerShapeDecoratedShapeprotected
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() const overrideDecoratedShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
OffsetCenterOfMassShape()OffsetCenterOfMassShapeinline
OffsetCenterOfMassShape(const OffsetCenterOfMassShapeSettings &inSettings, ShapeResult &outResult)OffsetCenterOfMassShape
OffsetCenterOfMassShape(const Shape *inShape, Vec3Arg inOffset)OffsetCenterOfMassShapeinline
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideOffsetCenterOfMassShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)Shapeinlinevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes) overrideDecoratedShapevirtual
SaveBinaryState(StreamOut &inStream) const overrideOffsetCenterOfMassShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) const overrideDecoratedShapevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetEmbedded() constRefTarget< Shape >inline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()OffsetCenterOfMassShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const overrideOffsetCenterOfMassShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_offset_center_of_mass_shape.html b/class_offset_center_of_mass_shape.html new file mode 100644 index 000000000..5fd39c15e --- /dev/null +++ b/class_offset_center_of_mass_shape.html @@ -0,0 +1,1727 @@ + + + + + + + +Jolt Physics: OffsetCenterOfMassShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
OffsetCenterOfMassShape Class Referencefinal
+
+
+ +

This shape will shift the center of mass of a child shape, it can e.g. be used to lower the center of mass of an unstable object like a boat to make it stable. + More...

+ +

#include <OffsetCenterOfMassShape.h>

+
+Inheritance diagram for OffsetCenterOfMassShape:
+
+
+ + +DecoratedShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE OffsetCenterOfMassShape ()
 Constructor.
 
 OffsetCenterOfMassShape (const OffsetCenterOfMassShapeSettings &inSettings, ShapeResult &outResult)
 
 OffsetCenterOfMassShape (const Shape *inShape, Vec3Arg inOffset)
 
Vec3 GetOffset () const
 Access the offset that is applied to the center of mass.
 
virtual Vec3 GetCenterOfMass () const override
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const override
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const override
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
- Public Member Functions inherited from DecoratedShape
JPH_OVERRIDE_NEW_DELETE DecoratedShape (EShapeSubType inSubType)
 Constructor.
 
 DecoratedShape (EShapeSubType inSubType, const Shape *inInnerShape)
 
 DecoratedShape (EShapeSubType inSubType, const DecoratedShapeSettings &inSettings, ShapeResult &outResult)
 
const ShapeGetInnerShape () const
 Access to the decorated inner shape.
 
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.
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const override
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const override
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const override
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes) override
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const override
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from DecoratedShape
RefConst< ShapemInnerShape
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

This shape will shift the center of mass of a child shape, it can e.g. be used to lower the center of mass of an unstable object like a boat to make it stable.

+

Constructor & Destructor Documentation

+ +

◆ OffsetCenterOfMassShape() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE OffsetCenterOfMassShape::OffsetCenterOfMassShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ OffsetCenterOfMassShape() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
OffsetCenterOfMassShape::OffsetCenterOfMassShape (const OffsetCenterOfMassShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+ +

◆ OffsetCenterOfMassShape() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
OffsetCenterOfMassShape::OffsetCenterOfMassShape (const ShapeinShape,
Vec3Arg inOffset 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void OffsetCenterOfMassShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool OffsetCenterOfMassShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CollectTransformedShapes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void OffsetCenterOfMassShape::CollectTransformedShapes (const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale,
const SubShapeIDCreatorinSubShapeIDCreator,
TransformedShapeCollectorioCollector,
const ShapeFilterinShapeFilter 
) const
+
+overridevirtual
+
+

Collect the leaf transformed shapes of all leaf shapes of this shape. inBox is the world space axis aligned box which leaf shapes should collide with. inPositionCOM/inRotation/inScale describes the transform of this shape. inSubShapeIDCeator represents the current sub shape ID of this shape.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void OffsetCenterOfMassShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Implements Shape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void OffsetCenterOfMassShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void OffsetCenterOfMassShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ DrawGetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void OffsetCenterOfMassShape::DrawGetSupportFunction (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inDrawSupportDirection 
) const
+
+overridevirtual
+
+ +

Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ DrawGetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void OffsetCenterOfMassShape::DrawGetSupportingFace (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+ +

Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetCenterOfMass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vec3 OffsetCenterOfMassShape::GetCenterOfMass () const
+
+inlineoverridevirtual
+
+ +

All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.

+ +

Reimplemented from DecoratedShape.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float OffsetCenterOfMassShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox OffsetCenterOfMassShape::GetLocalBounds () const
+
+overridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
virtual MassProperties OffsetCenterOfMassShape::GetMassProperties () const
+
+inlineoverridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetOffset()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 OffsetCenterOfMassShape::GetOffset () const
+
+inline
+
+ +

Access the offset that is applied to the center of mass.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats OffsetCenterOfMassShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void OffsetCenterOfMassShape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3 &outCenterOfBuoyancy  JPH_IF_DEBUG_RENDERER, RVec3Arg inBaseOffset 
) const
+
+overridevirtual
+
+ +
+
+ +

◆ GetSubShapeTransformedShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TransformedShape OffsetCenterOfMassShape::GetSubShapeTransformedShape (const SubShapeIDinSubShapeID,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale,
SubShapeIDoutRemainder 
) const
+
+overridevirtual
+
+

Get the direct child sub shape and its transform for a sub shape ID.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID that indicates the path to the leaf shape
inPositionCOMThe position of the center of mass of this shape
inRotationThe orientation of this shape
inScaleScale in local space of the shape (scales relative to its center of mass)
outRemainderThe remainder of the sub shape ID after removing the sub shape
+
+
+
Returns
Direct child sub shape and its transform, note that the body ID and sub shape ID will be invalid
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void OffsetCenterOfMassShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from DecoratedShape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 OffsetCenterOfMassShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual int OffsetCenterOfMassShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+inlineoverridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void OffsetCenterOfMassShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+inlineoverridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Implements Shape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float OffsetCenterOfMassShape::GetVolume () const
+
+inlineoverridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox Shape::GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inline
+
+ +

Get world space bounds including convex radius.

+ +
+
+ +

◆ GetWorldSpaceBounds() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual AABox Shape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inlinevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox OffsetCenterOfMassShape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void OffsetCenterOfMassShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void OffsetCenterOfMassShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void OffsetCenterOfMassShape::sRegister ()
+
+static
+
+ +
+
+ +

◆ TransformShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void OffsetCenterOfMassShape::TransformShape (Mat44Arg inCenterOfMassTransform,
TransformedShapeCollectorioCollector 
) const
+
+overridevirtual
+
+

Transforms this shape and all of its children with inTransform, resulting shape(s) are passed to ioCollector. Note that not all shapes support all transforms (especially true for scaling), the resulting shape will try to match the transform as accurately as possible.

Parameters
+ + + +
inCenterOfMassTransformThe transform (rotation, translation, scale) that the center of mass of the shape should get
ioCollectorThe transformed shapes will be passed to this collector
+
+
+ +

Reimplemented from Shape.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_offset_center_of_mass_shape.js b/class_offset_center_of_mass_shape.js new file mode 100644 index 000000000..b56b0635a --- /dev/null +++ b/class_offset_center_of_mass_shape.js @@ -0,0 +1,33 @@ +var class_offset_center_of_mass_shape = +[ + [ "OffsetCenterOfMassShape", "class_offset_center_of_mass_shape.html#a4066cbb4b851269605cd5ad0a31694ef", null ], + [ "OffsetCenterOfMassShape", "class_offset_center_of_mass_shape.html#a8e82168a95eb463f51e2c109b789c22b", null ], + [ "OffsetCenterOfMassShape", "class_offset_center_of_mass_shape.html#a5ea993204b5ccaad71e55e4d0bfed76b", null ], + [ "CastRay", "class_offset_center_of_mass_shape.html#a624b715dc926521f7865d86e932cce7d", null ], + [ "CastRay", "class_offset_center_of_mass_shape.html#a5d0b1db48c88428b7be626d822e0599b", null ], + [ "CollectTransformedShapes", "class_offset_center_of_mass_shape.html#a188ffe92a93f632954f03730fc1f1aed", null ], + [ "CollidePoint", "class_offset_center_of_mass_shape.html#a2acee14056b7beb439004b66f9f76c13", null ], + [ "CollideSoftBodyVertices", "class_offset_center_of_mass_shape.html#aea5299762988ab387c53e4a071342477", null ], + [ "Draw", "class_offset_center_of_mass_shape.html#a24398fdf876a5577fc6261429af7e66a", null ], + [ "DrawGetSupportFunction", "class_offset_center_of_mass_shape.html#a76d792b27cb24f5e39358c58cbb8d92e", null ], + [ "DrawGetSupportingFace", "class_offset_center_of_mass_shape.html#a3bf3f16aa5100aa0a9e63c74e570b6dd", null ], + [ "GetCenterOfMass", "class_offset_center_of_mass_shape.html#a9479ac77a9f53c5664f85b7a93135d95", null ], + [ "GetInnerRadius", "class_offset_center_of_mass_shape.html#a032a8fc143be25c8194a28c3a491c702", null ], + [ "GetLocalBounds", "class_offset_center_of_mass_shape.html#a68d4124fd359bd6f37718080371617f0", null ], + [ "GetMassProperties", "class_offset_center_of_mass_shape.html#ac1699a722db6d84580b59a3058af572c", null ], + [ "GetOffset", "class_offset_center_of_mass_shape.html#a39dd403b80dac228ece27bae9f03cf90", null ], + [ "GetStats", "class_offset_center_of_mass_shape.html#a656e5b4eee8f07b32ef59fb20858771b", null ], + [ "GetSubmergedVolume", "class_offset_center_of_mass_shape.html#a5f9a701d7ec907aaf816abf05ec25805", null ], + [ "GetSubShapeTransformedShape", "class_offset_center_of_mass_shape.html#adcef4fa526642a2cdd565352f278c9f5", null ], + [ "GetSupportingFace", "class_offset_center_of_mass_shape.html#aa18209657783f704b64fa02351c29fca", null ], + [ "GetSurfaceNormal", "class_offset_center_of_mass_shape.html#a0af1704c7f1a2109f9b55343c4a6db7d", null ], + [ "GetTrianglesNext", "class_offset_center_of_mass_shape.html#a5a7033c9950e7ec7253047e8a257c360", null ], + [ "GetTrianglesStart", "class_offset_center_of_mass_shape.html#a928422bd2dd3f8a9ac2107bdf503446e", null ], + [ "GetVolume", "class_offset_center_of_mass_shape.html#a92a8fbf01df9c36b9176c18889b92f58", null ], + [ "GetWorldSpaceBounds", "class_offset_center_of_mass_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b", null ], + [ "GetWorldSpaceBounds", "class_offset_center_of_mass_shape.html#a9f8379fa338802436700b86a07fab3be", null ], + [ "GetWorldSpaceBounds", "class_offset_center_of_mass_shape.html#aa7cf35aee4a9d6b6e1afaf4e0a67a457", null ], + [ "RestoreBinaryState", "class_offset_center_of_mass_shape.html#a642db1f164f7c122227d033f07785323", null ], + [ "SaveBinaryState", "class_offset_center_of_mass_shape.html#a2ee29aa558cfbc8a0f3b04258b4d5c73", null ], + [ "TransformShape", "class_offset_center_of_mass_shape.html#a9d00bab2ce478091ebef5d20168988ac", null ] +]; \ No newline at end of file diff --git a/class_offset_center_of_mass_shape.png b/class_offset_center_of_mass_shape.png new file mode 100644 index 000000000..f56d9bb19 Binary files /dev/null and b/class_offset_center_of_mass_shape.png differ diff --git a/class_offset_center_of_mass_shape_settings-members.html b/class_offset_center_of_mass_shape_settings-members.html new file mode 100644 index 000000000..acaf1dffb --- /dev/null +++ b/class_offset_center_of_mass_shape_settings-members.html @@ -0,0 +1,140 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OffsetCenterOfMassShapeSettings Member List
+
+
+ +

This is the complete list of members for OffsetCenterOfMassShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
Create() const overrideOffsetCenterOfMassShapeSettingsvirtual
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mOffsetOffsetCenterOfMassShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
OffsetCenterOfMassShapeSettings()=defaultOffsetCenterOfMassShapeSettings
OffsetCenterOfMassShapeSettings(Vec3Arg inOffset, const ShapeSettings *inShape)OffsetCenterOfMassShapeSettingsinline
OffsetCenterOfMassShapeSettings(Vec3Arg inOffset, const Shape *inShape)OffsetCenterOfMassShapeSettingsinline
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_offset_center_of_mass_shape_settings.html b/class_offset_center_of_mass_shape_settings.html new file mode 100644 index 000000000..798887196 --- /dev/null +++ b/class_offset_center_of_mass_shape_settings.html @@ -0,0 +1,376 @@ + + + + + + + +Jolt Physics: OffsetCenterOfMassShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
OffsetCenterOfMassShapeSettings Class Referencefinal
+
+
+ +

Class that constructs an OffsetCenterOfMassShape. + More...

+ +

#include <OffsetCenterOfMassShape.h>

+
+Inheritance diagram for OffsetCenterOfMassShapeSettings:
+
+
+ + +DecoratedShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 OffsetCenterOfMassShapeSettings ()=default
 Constructor.
 
 OffsetCenterOfMassShapeSettings (Vec3Arg inOffset, const ShapeSettings *inShape)
 Construct with shape settings, can be serialized.
 
 OffsetCenterOfMassShapeSettings (Vec3Arg inOffset, const Shape *inShape)
 Variant that uses a concrete shape, which means this object cannot be serialized.
 
virtual ShapeResult Create () const override
 Create a shape according to the settings specified by this object.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + +

+Public Attributes

Vec3 mOffset
 Offset to be applied to the center of mass of the child shape.
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs an OffsetCenterOfMassShape.

+

Constructor & Destructor Documentation

+ +

◆ OffsetCenterOfMassShapeSettings() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
OffsetCenterOfMassShapeSettings::OffsetCenterOfMassShapeSettings ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ OffsetCenterOfMassShapeSettings() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
OffsetCenterOfMassShapeSettings::OffsetCenterOfMassShapeSettings (Vec3Arg inOffset,
const ShapeSettingsinShape 
)
+
+inline
+
+ +

Construct with shape settings, can be serialized.

+ +
+
+ +

◆ OffsetCenterOfMassShapeSettings() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
OffsetCenterOfMassShapeSettings::OffsetCenterOfMassShapeSettings (Vec3Arg inOffset,
const ShapeinShape 
)
+
+inline
+
+ +

Variant that uses a concrete shape, which means this object cannot be serialized.

+ +
+
+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + +
ShapeSettings::ShapeResult OffsetCenterOfMassShapeSettings::Create () const
+
+overridevirtual
+
+ +

Create a shape according to the settings specified by this object.

+ +

Implements ShapeSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mOffset

+ +
+
+ + + + +
Vec3 OffsetCenterOfMassShapeSettings::mOffset
+
+ +

Offset to be applied to the center of mass of the child shape.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_offset_center_of_mass_shape_settings.js b/class_offset_center_of_mass_shape_settings.js new file mode 100644 index 000000000..57a7499e3 --- /dev/null +++ b/class_offset_center_of_mass_shape_settings.js @@ -0,0 +1,8 @@ +var class_offset_center_of_mass_shape_settings = +[ + [ "OffsetCenterOfMassShapeSettings", "class_offset_center_of_mass_shape_settings.html#a656e0a7d3d016abc387ffff34c2baed7", null ], + [ "OffsetCenterOfMassShapeSettings", "class_offset_center_of_mass_shape_settings.html#a068e37b92d684a38ba5cd5ab58425d53", null ], + [ "OffsetCenterOfMassShapeSettings", "class_offset_center_of_mass_shape_settings.html#ae797f24e598e1cc5ff88343858dfe8cd", null ], + [ "Create", "class_offset_center_of_mass_shape_settings.html#a641fb6993b220f935bed063a509acf38", null ], + [ "mOffset", "class_offset_center_of_mass_shape_settings.html#ae5c2406922fc128679d1282a2c4b96db", null ] +]; \ No newline at end of file diff --git a/class_offset_center_of_mass_shape_settings.png b/class_offset_center_of_mass_shape_settings.png new file mode 100644 index 000000000..9af16ed98 Binary files /dev/null and b/class_offset_center_of_mass_shape_settings.png differ diff --git a/class_oriented_box-members.html b/class_oriented_box-members.html new file mode 100644 index 000000000..81682e66b --- /dev/null +++ b/class_oriented_box-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
OrientedBox Member List
+
+
+ +

This is the complete list of members for OrientedBox, including all inherited members.

+ + + + + + + + +
mHalfExtentsOrientedBox
mOrientationOrientedBox
OrientedBox()=defaultOrientedBox
OrientedBox(Mat44Arg inOrientation, Vec3Arg inHalfExtents)OrientedBoxinline
OrientedBox(Mat44Arg inOrientation, const AABox &inBox)OrientedBoxinline
Overlaps(const AABox &inBox, float inEpsilon=1.0e-6f) constOrientedBox
Overlaps(const OrientedBox &inBox, float inEpsilon=1.0e-6f) constOrientedBox
+
+ + + + diff --git a/class_oriented_box.html b/class_oriented_box.html new file mode 100644 index 000000000..d511ad3ac --- /dev/null +++ b/class_oriented_box.html @@ -0,0 +1,352 @@ + + + + + + + +Jolt Physics: OrientedBox Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
OrientedBox Class Reference
+
+
+ +

Oriented box. + More...

+ +

#include <OrientedBox.h>

+ + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE OrientedBox ()=default
 Constructor.
 
 OrientedBox (Mat44Arg inOrientation, Vec3Arg inHalfExtents)
 
 OrientedBox (Mat44Arg inOrientation, const AABox &inBox)
 Construct from axis aligned box and transform. Only works for rotation/translation matrix (no scaling / shearing).
 
bool Overlaps (const AABox &inBox, float inEpsilon=1.0e-6f) const
 Test if oriented box overlaps with axis aligned box each other.
 
bool Overlaps (const OrientedBox &inBox, float inEpsilon=1.0e-6f) const
 Test if two oriented boxes overlap each other.
 
+ + + + + + + +

+Public Attributes

Mat44 mOrientation
 Transform that positions and rotates the local space axis aligned box into world space.
 
Vec3 mHalfExtents
 Half extents (half the size of the edge) of the local space axis aligned box.
 
+

Detailed Description

+

Oriented box.

+

Constructor & Destructor Documentation

+ +

◆ OrientedBox() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE OrientedBox::OrientedBox ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ OrientedBox() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
OrientedBox::OrientedBox (Mat44Arg inOrientation,
Vec3Arg inHalfExtents 
)
+
+inline
+
+ +
+
+ +

◆ OrientedBox() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
OrientedBox::OrientedBox (Mat44Arg inOrientation,
const AABoxinBox 
)
+
+inline
+
+ +

Construct from axis aligned box and transform. Only works for rotation/translation matrix (no scaling / shearing).

+ +
+
+

Member Function Documentation

+ +

◆ Overlaps() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN bool OrientedBox::Overlaps (const AABoxinBox,
float inEpsilon = 1.0e-6f 
) const
+
+ +

Test if oriented box overlaps with axis aligned box each other.

+ +
+
+ +

◆ Overlaps() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool OrientedBox::Overlaps (const OrientedBoxinBox,
float inEpsilon = 1.0e-6f 
) const
+
+ +

Test if two oriented boxes overlap each other.

+ +
+
+

Member Data Documentation

+ +

◆ mHalfExtents

+ +
+
+ + + + +
Vec3 OrientedBox::mHalfExtents
+
+ +

Half extents (half the size of the edge) of the local space axis aligned box.

+ +
+
+ +

◆ mOrientation

+ +
+
+ + + + +
Mat44 OrientedBox::mOrientation
+
+ +

Transform that positions and rotates the local space axis aligned box into world space.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_oriented_box.js b/class_oriented_box.js new file mode 100644 index 000000000..c1303ac96 --- /dev/null +++ b/class_oriented_box.js @@ -0,0 +1,10 @@ +var class_oriented_box = +[ + [ "OrientedBox", "class_oriented_box.html#ac9d787ceb1d5ce11d768e463901dc8f8", null ], + [ "OrientedBox", "class_oriented_box.html#a79f2a5a1c1a93d269c19062895c5708e", null ], + [ "OrientedBox", "class_oriented_box.html#aa452a08a66dacf55bdfb5d8d0cff7c8c", null ], + [ "Overlaps", "class_oriented_box.html#aac962fad97b4c7dd85d4a430a7e2f2ca", null ], + [ "Overlaps", "class_oriented_box.html#a2829c629a9c5565d2aabae1f53a51c97", null ], + [ "mHalfExtents", "class_oriented_box.html#aea20adbf3c48427f78ea4c6dfa61fb60", null ], + [ "mOrientation", "class_oriented_box.html#a05fc57c2033ce0e75ef2bd9dbe0e0636", null ] +]; \ No newline at end of file diff --git a/class_path_constraint-members.html b/class_path_constraint-members.html new file mode 100644 index 000000000..a1db1ecd6 --- /dev/null +++ b/class_path_constraint-members.html @@ -0,0 +1,189 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PathConstraint Member List
+
+
+ +

This is the complete list of members for PathConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const overridePathConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) constConstraintinlinevirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overridePathConstraintvirtual
GetConstraintToBody1Matrix() const overridePathConstraintinlinevirtual
GetConstraintToBody2Matrix() const overridePathConstraintinlinevirtual
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetMaxFrictionForce() constPathConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetPath() constPathConstraintinline
GetPathFraction() constPathConstraintinline
GetPositionMotorSettings()PathConstraintinline
GetPositionMotorSettings() constPathConstraintinline
GetPositionMotorState() constPathConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const overridePathConstraintinlinevirtual
GetTargetPathFraction() constPathConstraintinline
GetTargetVelocity() constPathConstraintinline
GetTotalLambdaMotor() constPathConstraintinline
GetTotalLambdaPosition() constPathConstraintinline
GetTotalLambdaPositionLimits() constPathConstraintinline
GetTotalLambdaRotation() constPathConstraintinline
GetTotalLambdaRotationHinge() constPathConstraintinline
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
IsActive() const overridePathConstraintinlinevirtual
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overridePathConstraintvirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PathConstraint(Body &inBody1, Body &inBody2, const PathConstraintSettings &inSettings)PathConstraint
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart() overridePathConstraintvirtual
RestoreState(StateRecorder &inStream) overridePathConstraintvirtual
SaveState(StateRecorder &inStream) const overridePathConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetMaxFrictionForce(float inFrictionForce)PathConstraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetPath(const PathConstraintPath *inPath, float inPathFraction)PathConstraint
SetPositionMotorState(EMotorState inState)PathConstraintinline
SetTargetPathFraction(float inFraction)PathConstraintinline
SetTargetVelocity(float inVelocity)PathConstraintinline
SetupVelocityConstraint(float inDeltaTime) overridePathConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overridePathConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overridePathConstraintvirtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overridePathConstraintvirtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_path_constraint.html b/class_path_constraint.html new file mode 100644 index 000000000..9ee6a49a7 --- /dev/null +++ b/class_path_constraint.html @@ -0,0 +1,1274 @@ + + + + + + + +Jolt Physics: PathConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PathConstraint Class Referencefinal
+
+
+ +

Path constraint, used to constrain the degrees of freedom between two bodies to a path. + More...

+ +

#include <PathConstraint.h>

+
+Inheritance diagram for PathConstraint:
+
+
+ + +TwoBodyConstraint +Constraint +RefTarget< Constraint > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE PathConstraint (Body &inBody1, Body &inBody2, const PathConstraintSettings &inSettings)
 Construct point constraint.
 
virtual EConstraintSubType GetSubType () const override
 Get the sub type of a constraint.
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
virtual Mat44 GetConstraintToBody1Matrix () const override
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const override
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
void SetPath (const PathConstraintPath *inPath, float inPathFraction)
 Update the path for this constraint.
 
const PathConstraintPathGetPath () const
 Access to the current path.
 
float GetPathFraction () const
 Access to the current fraction along the path e [0, GetPath()->GetMaxPathFraction()].
 
void SetMaxFrictionForce (float inFrictionForce)
 Friction control.
 
float GetMaxFrictionForce () const
 
MotorSettingsGetPositionMotorSettings ()
 Position motor settings.
 
const MotorSettingsGetPositionMotorSettings () const
 
void SetPositionMotorState (EMotorState inState)
 
EMotorState GetPositionMotorState () const
 
void SetTargetVelocity (float inVelocity)
 
float GetTargetVelocity () const
 
void SetTargetPathFraction (float inFraction)
 
float GetTargetPathFraction () const
 
- Public Member Functions inherited from TwoBodyConstraint
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + +

Get Lagrange multiplier from last physics update (the linear/angular impulse applied to satisfy the constraint)

Vector< 2 > GetTotalLambdaPosition () const
 
float GetTotalLambdaPositionLimits () const
 
float GetTotalLambdaMotor () const
 
Vector< 2 > GetTotalLambdaRotationHinge () const
 
Vec3 GetTotalLambdaRotation () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from TwoBodyConstraint
BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Path constraint, used to constrain the degrees of freedom between two bodies to a path.

+

Constructor & Destructor Documentation

+ +

◆ PathConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PathConstraint::PathConstraint (BodyinBody1,
BodyinBody2,
const PathConstraintSettingsinSettings 
)
+
+ +

Construct point constraint.

+ +
+
+

Member Function Documentation

+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > PathConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 PathConstraint::GetConstraintToBody1Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 PathConstraint::GetConstraintToBody2Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetMaxFrictionForce()

+ +
+
+ + + + + +
+ + + + + + + +
float PathConstraint::GetMaxFrictionForce () const
+
+inline
+
+ +
+
+ +

◆ GetPath()

+ +
+
+ + + + + +
+ + + + + + + +
const PathConstraintPath * PathConstraint::GetPath () const
+
+inline
+
+ +

Access to the current path.

+ +
+
+ +

◆ GetPathFraction()

+ +
+
+ + + + + +
+ + + + + + + +
float PathConstraint::GetPathFraction () const
+
+inline
+
+ +

Access to the current fraction along the path e [0, GetPath()->GetMaxPathFraction()].

+ +
+
+ +

◆ GetPositionMotorSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
MotorSettings & PathConstraint::GetPositionMotorSettings ()
+
+inline
+
+ +

Position motor settings.

+ +
+
+ +

◆ GetPositionMotorSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const MotorSettings & PathConstraint::GetPositionMotorSettings () const
+
+inline
+
+ +
+
+ +

◆ GetPositionMotorState()

+ +
+
+ + + + + +
+ + + + + + + +
EMotorState PathConstraint::GetPositionMotorState () const
+
+inline
+
+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType PathConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Get the sub type of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetTargetPathFraction()

+ +
+
+ + + + + +
+ + + + + + + +
float PathConstraint::GetTargetPathFraction () const
+
+inline
+
+ +
+
+ +

◆ GetTargetVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
float PathConstraint::GetTargetVelocity () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaMotor()

+ +
+
+ + + + + +
+ + + + + + + +
float PathConstraint::GetTotalLambdaMotor () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vector< 2 > PathConstraint::GetTotalLambdaPosition () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaPositionLimits()

+ +
+
+ + + + + +
+ + + + + + + +
float PathConstraint::GetTotalLambdaPositionLimits () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaRotation()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 PathConstraint::GetTotalLambdaRotation () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaRotationHinge()

+ +
+
+ + + + + +
+ + + + + + + +
Vector< 2 > PathConstraint::GetTotalLambdaRotationHinge () const
+
+inline
+
+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool PathConstraint::IsActive () const
+
+inlineoverridevirtual
+
+ +

Solver interface.

+ +

Reimplemented from TwoBodyConstraint.

+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void PathConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+overridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void PathConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetMaxFrictionForce()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraint::SetMaxFrictionForce (float inFrictionForce)
+
+inline
+
+ +

Friction control.

+ +
+
+ +

◆ SetPath()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PathConstraint::SetPath (const PathConstraintPathinPath,
float inPathFraction 
)
+
+ +

Update the path for this constraint.

+ +
+
+ +

◆ SetPositionMotorState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraint::SetPositionMotorState (EMotorState inState)
+
+inline
+
+ +
+
+ +

◆ SetTargetPathFraction()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraint::SetTargetPathFraction (float inFraction)
+
+inline
+
+ +
+
+ +

◆ SetTargetVelocity()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraint::SetTargetVelocity (float inVelocity)
+
+inline
+
+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool PathConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool PathConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_path_constraint.js b/class_path_constraint.js new file mode 100644 index 000000000..186f10eca --- /dev/null +++ b/class_path_constraint.js @@ -0,0 +1,36 @@ +var class_path_constraint = +[ + [ "PathConstraint", "class_path_constraint.html#a6a5b13762673f613fd49d5b0d3873853", null ], + [ "DrawConstraint", "class_path_constraint.html#a538c03ec9bda5767332e77595d1dab9c", null ], + [ "GetConstraintSettings", "class_path_constraint.html#a88bfac1b3c744a15f78dbce0d31a4b08", null ], + [ "GetConstraintToBody1Matrix", "class_path_constraint.html#a7fd4ca9762f295af3146258606a6e22a", null ], + [ "GetConstraintToBody2Matrix", "class_path_constraint.html#aefa354c9926217e88db8741736121f20", null ], + [ "GetMaxFrictionForce", "class_path_constraint.html#a0de4a86654e7757baf2e0715aae9e221", null ], + [ "GetPath", "class_path_constraint.html#ab2fd78b89e5df020c5ed865c900326d4", null ], + [ "GetPathFraction", "class_path_constraint.html#af0f434b2bb5e416a6efc402aaa5eba22", null ], + [ "GetPositionMotorSettings", "class_path_constraint.html#aae30cd39beec4628b22295eec9fdb66b", null ], + [ "GetPositionMotorSettings", "class_path_constraint.html#afe1f87898534471bb7dc888dd9676262", null ], + [ "GetPositionMotorState", "class_path_constraint.html#a2d073636288d7a79e0453fff543c0660", null ], + [ "GetSubType", "class_path_constraint.html#a73052367b302ac8b30a9505aa1901795", null ], + [ "GetTargetPathFraction", "class_path_constraint.html#a48f8818d18d5c46c27a6ba69d91c36b3", null ], + [ "GetTargetVelocity", "class_path_constraint.html#a9c6d88045a77cb4f442e3ef239b20d84", null ], + [ "GetTotalLambdaMotor", "class_path_constraint.html#ad9f21a4ed20007ceb8181db0bf999ce3", null ], + [ "GetTotalLambdaPosition", "class_path_constraint.html#aad8272de843a287e26bf320fdf2755a3", null ], + [ "GetTotalLambdaPositionLimits", "class_path_constraint.html#afef42c01cab96ed8cb32c607a6a0baf8", null ], + [ "GetTotalLambdaRotation", "class_path_constraint.html#a7dc7086987fb9a1761fc9fab81ceadb3", null ], + [ "GetTotalLambdaRotationHinge", "class_path_constraint.html#abb7f43813e7aa47c1719550303e8b768", null ], + [ "IsActive", "class_path_constraint.html#a5f6d3c7d860ee5c715f8fef818fd4f1f", null ], + [ "NotifyShapeChanged", "class_path_constraint.html#ae10bed0a11582fbe738f8339aa1257d5", null ], + [ "ResetWarmStart", "class_path_constraint.html#a2c947e294a99cdf061c2dc30447dcfba", null ], + [ "RestoreState", "class_path_constraint.html#ae404de8c3ac283d010ca1e0f637873f1", null ], + [ "SaveState", "class_path_constraint.html#a488ab67aba069c0fa0c81194afc74bd1", null ], + [ "SetMaxFrictionForce", "class_path_constraint.html#ad6901dcd63274ede819db76d1e68607e", null ], + [ "SetPath", "class_path_constraint.html#abd2aea13b507f29abea6a5b3d8e0d6da", null ], + [ "SetPositionMotorState", "class_path_constraint.html#a668c00d9305747b19511d13f4947ca33", null ], + [ "SetTargetPathFraction", "class_path_constraint.html#a22196b6a304d015a58ceb2b08923583d", null ], + [ "SetTargetVelocity", "class_path_constraint.html#a1b6ed041ae2c5ca2e0622cc866ff10ce", null ], + [ "SetupVelocityConstraint", "class_path_constraint.html#a334e81d911ed028bb007514d7dab7ed8", null ], + [ "SolvePositionConstraint", "class_path_constraint.html#a9041487754a378e24a54414325f214ef", null ], + [ "SolveVelocityConstraint", "class_path_constraint.html#a4a217906d4d990d4222d2dfbd3e3de5b", null ], + [ "WarmStartVelocityConstraint", "class_path_constraint.html#a827e48452a23237e05665d3eeb668255", null ] +]; \ No newline at end of file diff --git a/class_path_constraint.png b/class_path_constraint.png new file mode 100644 index 000000000..d6055d438 Binary files /dev/null and b/class_path_constraint.png differ diff --git a/class_path_constraint_path-members.html b/class_path_constraint_path-members.html new file mode 100644 index 000000000..f49bd290b --- /dev/null +++ b/class_path_constraint_path-members.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PathConstraintPath Member List
+
+
+ +

This is the complete list of members for PathConstraintPath, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< PathConstraintPath >inline
cEmbeddedRefTarget< PathConstraintPath >protectedstatic
DrawPath(DebugRenderer *inRenderer, RMat44Arg inBaseTransform) constPathConstraintPath
GetClosestPoint(Vec3Arg inPosition, float inFractionHint) const =0PathConstraintPathpure virtual
GetPathMaxFraction() const =0PathConstraintPathpure virtual
GetPointOnPath(float inFraction, Vec3 &outPathPosition, Vec3 &outPathTangent, Vec3 &outPathNormal, Vec3 &outPathBinormal) const =0PathConstraintPathpure virtual
GetRefCount() constRefTarget< PathConstraintPath >inline
IsLooping() constPathConstraintPathinline
mRefCountRefTarget< PathConstraintPath >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< PathConstraintPath >::operator=(const RefTarget &)RefTarget< PathConstraintPath >inline
PathResult typedefPathConstraintPath
RefTarget()=defaultRefTarget< PathConstraintPath >inline
RefTarget(const RefTarget &)RefTarget< PathConstraintPath >inline
Release() constRefTarget< PathConstraintPath >inline
RestoreBinaryState(StreamIn &inStream)PathConstraintPathprotectedvirtual
SaveBinaryState(StreamOut &inStream) constPathConstraintPathvirtual
SetEmbedded() constRefTarget< PathConstraintPath >inline
SetIsLooping(bool inIsLooping)PathConstraintPathinline
sInternalGetRefCountOffset()RefTarget< PathConstraintPath >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)PathConstraintPathstatic
~PathConstraintPath() override=defaultPathConstraintPathvirtual
~RefTarget()RefTarget< PathConstraintPath >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_path_constraint_path.html b/class_path_constraint_path.html new file mode 100644 index 000000000..513493ec3 --- /dev/null +++ b/class_path_constraint_path.html @@ -0,0 +1,589 @@ + + + + + + + +Jolt Physics: PathConstraintPath Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PathConstraintPath Class Referenceabstract
+
+
+ +

The path for a path constraint. It allows attaching two bodies to each other while giving the second body the freedom to move along a path relative to the first. + More...

+ +

#include <PathConstraintPath.h>

+
+Inheritance diagram for PathConstraintPath:
+
+
+ + +SerializableObject +RefTarget< PathConstraintPath > +NonCopyable +PathConstraintPathHermite + +
+ + + + +

+Public Types

using PathResult = Result< Ref< PathConstraintPath > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~PathConstraintPath () override=default
 Virtual destructor to ensure that derived types get their destructors called.
 
virtual float GetPathMaxFraction () const =0
 Gets the max fraction along the path. I.e. sort of the length of the path.
 
virtual float GetClosestPoint (Vec3Arg inPosition, float inFractionHint) const =0
 
virtual void GetPointOnPath (float inFraction, Vec3 &outPathPosition, Vec3 &outPathTangent, Vec3 &outPathNormal, Vec3 &outPathBinormal) const =0
 
void SetIsLooping (bool inIsLooping)
 If the path is looping or not. If a path is looping, the first and last point are automatically connected to each other. They should not be the same points.
 
bool IsLooping () const
 
void DrawPath (DebugRenderer *inRenderer, RMat44Arg inBaseTransform) const
 Draw the path relative to inBaseTransform. Used for debug purposes.
 
virtual void SaveBinaryState (StreamOut &inStream) const
 Saves the contents of the path in binary form to inStream.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< PathConstraintPath >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + +

+Static Public Member Functions

static PathResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< PathConstraintPath >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream)
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from RefTarget< PathConstraintPath >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< PathConstraintPath >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

The path for a path constraint. It allows attaching two bodies to each other while giving the second body the freedom to move along a path relative to the first.

+

Member Typedef Documentation

+ +

◆ PathResult

+ + +

Constructor & Destructor Documentation

+ +

◆ ~PathConstraintPath()

+ +
+
+ + + + + +
+ + + + + + + +
virtual PathConstraintPath::~PathConstraintPath ()
+
+overridevirtualdefault
+
+ +

Virtual destructor to ensure that derived types get their destructors called.

+ +
+
+

Member Function Documentation

+ +

◆ DrawPath()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PathConstraintPath::DrawPath (DebugRendererinRenderer,
RMat44Arg inBaseTransform 
) const
+
+ +

Draw the path relative to inBaseTransform. Used for debug purposes.

+ +
+
+ +

◆ GetClosestPoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual float PathConstraintPath::GetClosestPoint (Vec3Arg inPosition,
float inFractionHint 
) const
+
+pure virtual
+
+

Get the globally closest point on the curve (Could be slow!)

Parameters
+ + + +
inPositionPosition to find closest point for
inFractionHintLast known fraction along the path (can be used to speed up the search)
+
+
+
Returns
Fraction of closest point along the path
+ +

Implemented in PathConstraintPathHermite.

+ +
+
+ +

◆ GetPathMaxFraction()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float PathConstraintPath::GetPathMaxFraction () const
+
+pure virtual
+
+ +

Gets the max fraction along the path. I.e. sort of the length of the path.

+ +

Implemented in PathConstraintPathHermite.

+ +
+
+ +

◆ GetPointOnPath()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void PathConstraintPath::GetPointOnPath (float inFraction,
Vec3outPathPosition,
Vec3outPathTangent,
Vec3outPathNormal,
Vec3outPathBinormal 
) const
+
+pure virtual
+
+

Given the fraction along the path, get the point, tangent and normal.

Parameters
+ + + + + + +
inFractionFraction along the path [0, GetPathMaxFraction()].
outPathPositionReturns the closest position to inSearchPosition on the path.
outPathTangentReturns the tangent to the path at outPathPosition (the vector that follows the direction of the path)
outPathNormalReturn the normal to the path at outPathPosition (a vector that's perpendicular to outPathTangent)
outPathBinormalReturns the binormal to the path at outPathPosition (a vector so that normal cross tangent = binormal)
+
+
+ +

Implemented in PathConstraintPathHermite.

+ +
+
+ +

◆ IsLooping()

+ +
+
+ + + + + +
+ + + + + + + +
bool PathConstraintPath::IsLooping () const
+
+inline
+
+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraintPath::RestoreBinaryState (StreamIninStream)
+
+protectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented in PathConstraintPathHermite.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraintPath::SaveBinaryState (StreamOutinStream) const
+
+virtual
+
+ +

Saves the contents of the path in binary form to inStream.

+ +

Reimplemented in PathConstraintPathHermite.

+ +
+
+ +

◆ SetIsLooping()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraintPath::SetIsLooping (bool inIsLooping)
+
+inline
+
+ +

If the path is looping or not. If a path is looping, the first and last point are automatically connected to each other. They should not be the same points.

+ +
+
+ +

◆ sRestoreFromBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
PathConstraintPath::PathResult PathConstraintPath::sRestoreFromBinaryState (StreamIninStream)
+
+static
+
+ +

Creates a Shape of the correct type and restores its contents from the binary stream inStream.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_path_constraint_path.js b/class_path_constraint_path.js new file mode 100644 index 000000000..a4a7bbfa9 --- /dev/null +++ b/class_path_constraint_path.js @@ -0,0 +1,13 @@ +var class_path_constraint_path = +[ + [ "PathResult", "class_path_constraint_path.html#ade0a2c8ce722ae7ff573b04690250e21", null ], + [ "~PathConstraintPath", "class_path_constraint_path.html#aff085b5af851482956c8696d0e87f73d", null ], + [ "DrawPath", "class_path_constraint_path.html#a666c1696bf4a1f468efb89a87ca7461b", null ], + [ "GetClosestPoint", "class_path_constraint_path.html#aa84329614fd89561c555e2af0d4381a2", null ], + [ "GetPathMaxFraction", "class_path_constraint_path.html#aae9ea1aede3ece72c5620bf88776757d", null ], + [ "GetPointOnPath", "class_path_constraint_path.html#aa0dc6d3e2b57196ca90da9c10d37f9ea", null ], + [ "IsLooping", "class_path_constraint_path.html#a8ec3b671b2e5abaa571a24baa0fae9fa", null ], + [ "RestoreBinaryState", "class_path_constraint_path.html#a98e97ad6b58e3467c014a524c1062ad7", null ], + [ "SaveBinaryState", "class_path_constraint_path.html#a5e969d5cd0b3bede01788cb898445d36", null ], + [ "SetIsLooping", "class_path_constraint_path.html#aae13b9ca0a67ed16657f15c1d9b28d4b", null ] +]; \ No newline at end of file diff --git a/class_path_constraint_path.png b/class_path_constraint_path.png new file mode 100644 index 000000000..272dad2e9 Binary files /dev/null and b/class_path_constraint_path.png differ diff --git a/class_path_constraint_path_hermite-members.html b/class_path_constraint_path_hermite-members.html new file mode 100644 index 000000000..846ed2ff6 --- /dev/null +++ b/class_path_constraint_path_hermite-members.html @@ -0,0 +1,143 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PathConstraintPathHermite Member List
+
+
+ +

This is the complete list of members for PathConstraintPathHermite, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddPoint(Vec3Arg inPosition, Vec3Arg inTangent, Vec3Arg inNormal)PathConstraintPathHermiteinline
AddRef() constRefTarget< PathConstraintPath >inline
cEmbeddedRefTarget< PathConstraintPath >protectedstatic
DrawPath(DebugRenderer *inRenderer, RMat44Arg inBaseTransform) constPathConstraintPath
GetClosestPoint(Vec3Arg inPosition, float inFractionHint) const overridePathConstraintPathHermitevirtual
GetPathMaxFraction() const overridePathConstraintPathHermiteinlinevirtual
GetPointOnPath(float inFraction, Vec3 &outPathPosition, Vec3 &outPathTangent, Vec3 &outPathNormal, Vec3 &outPathBinormal) const overridePathConstraintPathHermitevirtual
GetRefCount() constRefTarget< PathConstraintPath >inline
IsLooping() constPathConstraintPathinline
mRefCountRefTarget< PathConstraintPath >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< PathConstraintPath >::operator=(const RefTarget &)RefTarget< PathConstraintPath >inline
PathResult typedefPathConstraintPath
RefTarget()=defaultRefTarget< PathConstraintPath >inline
RefTarget(const RefTarget &)RefTarget< PathConstraintPath >inline
Release() constRefTarget< PathConstraintPath >inline
RestoreBinaryState(StreamIn &inStream) overridePathConstraintPathHermiteprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overridePathConstraintPathHermitevirtual
SetEmbedded() constRefTarget< PathConstraintPath >inline
SetIsLooping(bool inIsLooping)PathConstraintPathinline
sInternalGetRefCountOffset()RefTarget< PathConstraintPath >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)PathConstraintPathstatic
~PathConstraintPath() override=defaultPathConstraintPathvirtual
~RefTarget()RefTarget< PathConstraintPath >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_path_constraint_path_hermite.html b/class_path_constraint_path_hermite.html new file mode 100644 index 000000000..bf6863e16 --- /dev/null +++ b/class_path_constraint_path_hermite.html @@ -0,0 +1,483 @@ + + + + + + + +Jolt Physics: PathConstraintPathHermite Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PathConstraintPathHermite Class Referencefinal
+
+
+ +

A path that follows a Hermite spline. + More...

+ +

#include <PathConstraintPathHermite.h>

+
+Inheritance diagram for PathConstraintPathHermite:
+
+
+ + +PathConstraintPath +SerializableObject +RefTarget< PathConstraintPath > +NonCopyable + +
+ + + + +

+Classes

struct  Point
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual float GetPathMaxFraction () const override
 Gets the max fraction along the path. I.e. sort of the length of the path.
 
virtual float GetClosestPoint (Vec3Arg inPosition, float inFractionHint) const override
 
virtual void GetPointOnPath (float inFraction, Vec3 &outPathPosition, Vec3 &outPathTangent, Vec3 &outPathNormal, Vec3 &outPathBinormal) const override
 
void AddPoint (Vec3Arg inPosition, Vec3Arg inTangent, Vec3Arg inNormal)
 Adds a point to the path.
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the path in binary form to inStream.
 
- Public Member Functions inherited from PathConstraintPath
virtual ~PathConstraintPath () override=default
 Virtual destructor to ensure that derived types get their destructors called.
 
void SetIsLooping (bool inIsLooping)
 If the path is looping or not. If a path is looping, the first and last point are automatically connected to each other. They should not be the same points.
 
bool IsLooping () const
 
void DrawPath (DebugRenderer *inRenderer, RMat44Arg inBaseTransform) const
 Draw the path relative to inBaseTransform. Used for debug purposes.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< PathConstraintPath >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from PathConstraintPath
using PathResult = Result< Ref< PathConstraintPath > >
 
- Static Public Member Functions inherited from PathConstraintPath
static PathResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< PathConstraintPath >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< PathConstraintPath >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< PathConstraintPath >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A path that follows a Hermite spline.

+

Member Function Documentation

+ +

◆ AddPoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void PathConstraintPathHermite::AddPoint (Vec3Arg inPosition,
Vec3Arg inTangent,
Vec3Arg inNormal 
)
+
+inline
+
+ +

Adds a point to the path.

+ +
+
+ +

◆ GetClosestPoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
float PathConstraintPathHermite::GetClosestPoint (Vec3Arg inPosition,
float inFractionHint 
) const
+
+overridevirtual
+
+

Get the globally closest point on the curve (Could be slow!)

Parameters
+ + + +
inPositionPosition to find closest point for
inFractionHintLast known fraction along the path (can be used to speed up the search)
+
+
+
Returns
Fraction of closest point along the path
+ +

Implements PathConstraintPath.

+ +
+
+ +

◆ GetPathMaxFraction()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float PathConstraintPathHermite::GetPathMaxFraction () const
+
+inlineoverridevirtual
+
+ +

Gets the max fraction along the path. I.e. sort of the length of the path.

+ +

Implements PathConstraintPath.

+ +
+
+ +

◆ GetPointOnPath()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PathConstraintPathHermite::GetPointOnPath (float inFraction,
Vec3outPathPosition,
Vec3outPathTangent,
Vec3outPathNormal,
Vec3outPathBinormal 
) const
+
+overridevirtual
+
+

Given the fraction along the path, get the point, tangent and normal.

Parameters
+ + + + + + +
inFractionFraction along the path [0, GetPathMaxFraction()].
outPathPositionReturns the closest position to inSearchPosition on the path.
outPathTangentReturns the tangent to the path at outPathPosition (the vector that follows the direction of the path)
outPathNormalReturn the normal to the path at outPathPosition (a vector that's perpendicular to outPathTangent)
outPathBinormalReturns the binormal to the path at outPathPosition (a vector so that normal cross tangent = binormal)
+
+
+ +

Implements PathConstraintPath.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraintPathHermite::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from PathConstraintPath.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraintPathHermite::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the path in binary form to inStream.

+ +

Reimplemented from PathConstraintPath.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_path_constraint_path_hermite.js b/class_path_constraint_path_hermite.js new file mode 100644 index 000000000..73c3553c2 --- /dev/null +++ b/class_path_constraint_path_hermite.js @@ -0,0 +1,10 @@ +var class_path_constraint_path_hermite = +[ + [ "Point", "struct_path_constraint_path_hermite_1_1_point.html", "struct_path_constraint_path_hermite_1_1_point" ], + [ "AddPoint", "class_path_constraint_path_hermite.html#a66a08dc34277969fc1f4dc3cbbca9682", null ], + [ "GetClosestPoint", "class_path_constraint_path_hermite.html#a9675ad7e14e9cc9f7b07b9df0d6cfffc", null ], + [ "GetPathMaxFraction", "class_path_constraint_path_hermite.html#aafea15f5e08786a10baea9f92e01426c", null ], + [ "GetPointOnPath", "class_path_constraint_path_hermite.html#a5645f67f35fd20fe9a966a40a19d0eb8", null ], + [ "RestoreBinaryState", "class_path_constraint_path_hermite.html#a4d0c669b370d78bccdd0fa40f6861fca", null ], + [ "SaveBinaryState", "class_path_constraint_path_hermite.html#a5ebfbd249290a134915daf8f451ad050", null ] +]; \ No newline at end of file diff --git a/class_path_constraint_path_hermite.png b/class_path_constraint_path_hermite.png new file mode 100644 index 000000000..928293ca5 Binary files /dev/null and b/class_path_constraint_path_hermite.png differ diff --git a/class_path_constraint_settings-members.html b/class_path_constraint_settings-members.html new file mode 100644 index 000000000..0ac60438b --- /dev/null +++ b/class_path_constraint_settings-members.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PathConstraintSettings Member List
+
+
+ +

This is the complete list of members for PathConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const overridePathConstraintSettingsvirtual
GetRefCount() constRefTarget< ConstraintSettings >inline
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mMaxFrictionForcePathConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mPathPathConstraintSettings
mPathFractionPathConstraintSettings
mPathPositionPathConstraintSettings
mPathRotationPathConstraintSettings
mPositionMotorSettingsPathConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mRotationConstraintTypePathConstraintSettings
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overridePathConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overridePathConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_path_constraint_settings.html b/class_path_constraint_settings.html new file mode 100644 index 000000000..82d96f07b --- /dev/null +++ b/class_path_constraint_settings.html @@ -0,0 +1,473 @@ + + + + + + + +Jolt Physics: PathConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PathConstraintSettings Class Referencefinal
+
+
+ +

#include <PathConstraint.h>

+
+Inheritance diagram for PathConstraintSettings:
+
+
+ + +TwoBodyConstraintSettings +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 Create an instance of this constraint.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

RefConst< PathConstraintPathmPath
 The path that constrains the two bodies.
 
Vec3 mPathPosition = Vec3::sZero()
 The position of the path start relative to world transform of body 1.
 
Quat mPathRotation = Quat::sIdentity()
 The rotation of the path start relative to world transform of body 1.
 
float mPathFraction = 0.0f
 The fraction along the path that corresponds to the initial position of body 2. Usually this is 0, the beginning of the path. But if you want to start an object halfway the path you can calculate this with mPath->GetClosestPoint(point on path to attach body to).
 
float mMaxFrictionForce = 0.0f
 Maximum amount of friction force to apply (N) when not driven by a motor.
 
MotorSettings mPositionMotorSettings
 In case the constraint is powered, this determines the motor settings along the path.
 
EPathRotationConstraintType mRotationConstraintType = EPathRotationConstraintType::Free
 How to constrain the rotation of the body to the path.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Path constraint settings, used to constrain the degrees of freedom between two bodies to a path

+

The requirements of the path are that:

    +
  • Tangent, normal and bi-normal form an orthonormal basis with: tangent cross bi-normal = normal
  • +
  • The path points along the tangent vector
  • +
  • The path is continuous so doesn't contain any sharp corners
  • +
+

The reason for all this is that the constraint acts like a slider constraint with the sliding axis being the tangent vector (the assumption here is that delta time will be small enough so that the path is linear for that delta time).

+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * PathConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+overridevirtual
+
+ +

Create an instance of this constraint.

+ +

Implements TwoBodyConstraintSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PathConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mMaxFrictionForce

+ +
+
+ + + + +
float PathConstraintSettings::mMaxFrictionForce = 0.0f
+
+ +

Maximum amount of friction force to apply (N) when not driven by a motor.

+ +
+
+ +

◆ mPath

+ +
+
+ + + + +
RefConst<PathConstraintPath> PathConstraintSettings::mPath
+
+ +

The path that constrains the two bodies.

+ +
+
+ +

◆ mPathFraction

+ +
+
+ + + + +
float PathConstraintSettings::mPathFraction = 0.0f
+
+ +

The fraction along the path that corresponds to the initial position of body 2. Usually this is 0, the beginning of the path. But if you want to start an object halfway the path you can calculate this with mPath->GetClosestPoint(point on path to attach body to).

+ +
+
+ +

◆ mPathPosition

+ +
+
+ + + + +
Vec3 PathConstraintSettings::mPathPosition = Vec3::sZero()
+
+ +

The position of the path start relative to world transform of body 1.

+ +
+
+ +

◆ mPathRotation

+ +
+
+ + + + +
Quat PathConstraintSettings::mPathRotation = Quat::sIdentity()
+
+ +

The rotation of the path start relative to world transform of body 1.

+ +
+
+ +

◆ mPositionMotorSettings

+ +
+
+ + + + +
MotorSettings PathConstraintSettings::mPositionMotorSettings
+
+ +

In case the constraint is powered, this determines the motor settings along the path.

+ +
+
+ +

◆ mRotationConstraintType

+ +
+
+ + + + +
EPathRotationConstraintType PathConstraintSettings::mRotationConstraintType = EPathRotationConstraintType::Free
+
+ +

How to constrain the rotation of the body to the path.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_path_constraint_settings.js b/class_path_constraint_settings.js new file mode 100644 index 000000000..07f74b018 --- /dev/null +++ b/class_path_constraint_settings.js @@ -0,0 +1,13 @@ +var class_path_constraint_settings = +[ + [ "Create", "class_path_constraint_settings.html#ab49bfcf55710c49a87f060e7b4593fad", null ], + [ "RestoreBinaryState", "class_path_constraint_settings.html#a5a69dc6588941a9699e3a80755716444", null ], + [ "SaveBinaryState", "class_path_constraint_settings.html#a9c56f9bc1b35f6df6b7aa520a4128fdf", null ], + [ "mMaxFrictionForce", "class_path_constraint_settings.html#ada5d4e5611d226800461d69120122538", null ], + [ "mPath", "class_path_constraint_settings.html#a6069d97c30057ec55fbce2b0a4058748", null ], + [ "mPathFraction", "class_path_constraint_settings.html#ae13a68ddfe0a452f9814993c622c3995", null ], + [ "mPathPosition", "class_path_constraint_settings.html#ac7dada42ac3bf1276e3b970b2cc4406c", null ], + [ "mPathRotation", "class_path_constraint_settings.html#a74a9207faa30912010e4e1a4acd49745", null ], + [ "mPositionMotorSettings", "class_path_constraint_settings.html#a634e294d5b4b5f82a40cb8c2bf2cf776", null ], + [ "mRotationConstraintType", "class_path_constraint_settings.html#afe6bb172faac97fcd47d8c9282ca1a19", null ] +]; \ No newline at end of file diff --git a/class_path_constraint_settings.png b/class_path_constraint_settings.png new file mode 100644 index 000000000..b8e42d09d Binary files /dev/null and b/class_path_constraint_settings.png differ diff --git a/class_physics_lock-members.html b/class_physics_lock-members.html new file mode 100644 index 000000000..d29985759 --- /dev/null +++ b/class_physics_lock-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsLock Member List
+
+
+ +

This is the complete list of members for PhysicsLock, including all inherited members.

+ + + + + +
sLock(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))PhysicsLockinlinestatic
sLockShared(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))PhysicsLockinlinestatic
sUnlock(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))PhysicsLockinlinestatic
sUnlockShared(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))PhysicsLockinlinestatic
+
+ + + + diff --git a/class_physics_lock.html b/class_physics_lock.html new file mode 100644 index 000000000..3f62d626a --- /dev/null +++ b/class_physics_lock.html @@ -0,0 +1,253 @@ + + + + + + + +Jolt Physics: PhysicsLock Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsLock Class Reference
+
+
+ +

#include <PhysicsLock.h>

+ + + + + + + + + + + + + + +

+Static Public Member Functions

template<class LockType >
static void sLock (LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
 
template<class LockType >
static void sUnlock (LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
 
template<class LockType >
static void sLockShared (LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
 
template<class LockType >
static void sUnlockShared (LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
 
+

Detailed Description

+

Helpers to safely lock the different mutexes that are part of the physics system while preventing deadlock Class that keeps track per thread which lock are taken and if the order of locking is correct

+

Member Function Documentation

+ +

◆ sLock()

+ +
+
+
+template<class LockType >
+ + + + + +
+ + + + + + + + +
static void PhysicsLock::sLock (LockType &inMutex  JPH_IF_ENABLE_ASSERTS, PhysicsLockContext inContext, EPhysicsLockTypes inType)
+
+inlinestatic
+
+ +
+
+ +

◆ sLockShared()

+ +
+
+
+template<class LockType >
+ + + + + +
+ + + + + + + + +
static void PhysicsLock::sLockShared (LockType &inMutex  JPH_IF_ENABLE_ASSERTS, PhysicsLockContext inContext, EPhysicsLockTypes inType)
+
+inlinestatic
+
+ +
+
+ +

◆ sUnlock()

+ +
+
+
+template<class LockType >
+ + + + + +
+ + + + + + + + +
static void PhysicsLock::sUnlock (LockType &inMutex  JPH_IF_ENABLE_ASSERTS, PhysicsLockContext inContext, EPhysicsLockTypes inType)
+
+inlinestatic
+
+ +
+
+ +

◆ sUnlockShared()

+ +
+
+
+template<class LockType >
+ + + + + +
+ + + + + + + + +
static void PhysicsLock::sUnlockShared (LockType &inMutex  JPH_IF_ENABLE_ASSERTS, PhysicsLockContext inContext, EPhysicsLockTypes inType)
+
+inlinestatic
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_physics_material-members.html b/class_physics_material-members.html new file mode 100644 index 000000000..8c304302f --- /dev/null +++ b/class_physics_material-members.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsMaterial Member List
+
+
+ +

This is the complete list of members for PhysicsMaterial, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< PhysicsMaterial >inline
cEmbeddedRefTarget< PhysicsMaterial >protectedstatic
GetDebugColor() constPhysicsMaterialinlinevirtual
GetDebugName() constPhysicsMaterialinlinevirtual
GetRefCount() constRefTarget< PhysicsMaterial >inline
mRefCountRefTarget< PhysicsMaterial >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< PhysicsMaterial >::operator=(const RefTarget &)RefTarget< PhysicsMaterial >inline
PhysicsMaterialResult typedefPhysicsMaterial
RefTarget()=defaultRefTarget< PhysicsMaterial >inline
RefTarget(const RefTarget &)RefTarget< PhysicsMaterial >inline
Release() constRefTarget< PhysicsMaterial >inline
RestoreBinaryState(StreamIn &inStream)PhysicsMaterialprotectedvirtual
SaveBinaryState(StreamOut &inStream) constPhysicsMaterialvirtual
sDefaultPhysicsMaterialstatic
SetEmbedded() constRefTarget< PhysicsMaterial >inline
sInternalGetRefCountOffset()RefTarget< PhysicsMaterial >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)PhysicsMaterialstatic
~PhysicsMaterial() override=defaultPhysicsMaterialvirtual
~RefTarget()RefTarget< PhysicsMaterial >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_physics_material.html b/class_physics_material.html new file mode 100644 index 000000000..962f68581 --- /dev/null +++ b/class_physics_material.html @@ -0,0 +1,438 @@ + + + + + + + +Jolt Physics: PhysicsMaterial Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsMaterial Class Reference
+
+
+ +

#include <PhysicsMaterial.h>

+
+Inheritance diagram for PhysicsMaterial:
+
+
+ + +SerializableObject +RefTarget< PhysicsMaterial > +NonCopyable +PhysicsMaterialSimple + +
+ + + + +

+Public Types

using PhysicsMaterialResult = Result< Ref< PhysicsMaterial > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~PhysicsMaterial () override=default
 Virtual destructor.
 
virtual const char * GetDebugName () const
 
virtual Color GetDebugColor () const
 
virtual void SaveBinaryState (StreamOut &inStream) const
 Saves the contents of the material in binary form to inStream.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< PhysicsMaterial >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + +

+Static Public Member Functions

static PhysicsMaterialResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a PhysicsMaterial of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< PhysicsMaterial >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Static Public Attributes

static RefConst< PhysicsMaterialsDefault
 Default material that is used when a shape has no materials defined.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream)
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from RefTarget< PhysicsMaterial >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< PhysicsMaterial >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

This structure describes the surface of (part of) a shape. You should inherit from it to define additional information that is interesting for the simulation. The 2 materials involved in a contact could be used to decide which sound or particle effects to play.

+

If you inherit from this material, don't forget to create a suitable default material in sDefault

+

Member Typedef Documentation

+ +

◆ PhysicsMaterialResult

+ + +

Constructor & Destructor Documentation

+ +

◆ ~PhysicsMaterial()

+ +
+
+ + + + + +
+ + + + + + + +
virtual PhysicsMaterial::~PhysicsMaterial ()
+
+overridevirtualdefault
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetDebugColor()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Color PhysicsMaterial::GetDebugColor () const
+
+inlinevirtual
+
+ +

Reimplemented in PhysicsMaterialSimple.

+ +
+
+ +

◆ GetDebugName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const char * PhysicsMaterial::GetDebugName () const
+
+inlinevirtual
+
+ +

Reimplemented in PhysicsMaterialSimple.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsMaterial::RestoreBinaryState (StreamIninStream)
+
+protectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented in PhysicsMaterialSimple.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsMaterial::SaveBinaryState (StreamOutinStream) const
+
+virtual
+
+ +

Saves the contents of the material in binary form to inStream.

+ +

Reimplemented in PhysicsMaterialSimple.

+ +
+
+ +

◆ sRestoreFromBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
PhysicsMaterial::PhysicsMaterialResult PhysicsMaterial::sRestoreFromBinaryState (StreamIninStream)
+
+static
+
+ +

Creates a PhysicsMaterial of the correct type and restores its contents from the binary stream inStream.

+ +
+
+

Member Data Documentation

+ +

◆ sDefault

+ +
+
+ + + + + +
+ + + + +
JPH_NAMESPACE_BEGIN RefConst< PhysicsMaterial > PhysicsMaterial::sDefault
+
+static
+
+ +

Default material that is used when a shape has no materials defined.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_physics_material.js b/class_physics_material.js new file mode 100644 index 000000000..744a257d9 --- /dev/null +++ b/class_physics_material.js @@ -0,0 +1,9 @@ +var class_physics_material = +[ + [ "PhysicsMaterialResult", "class_physics_material.html#ac6d51eb48cdffbe4bc52c1ea54a988ef", null ], + [ "~PhysicsMaterial", "class_physics_material.html#af9a5ad5383917d85f97bc81db9786948", null ], + [ "GetDebugColor", "class_physics_material.html#af8673b7c2cefec46b38fd90fb8fe7784", null ], + [ "GetDebugName", "class_physics_material.html#a1ace7fb4d595955c50f02bd67a108446", null ], + [ "RestoreBinaryState", "class_physics_material.html#a51ea4ae0673771947b5052c9062cf267", null ], + [ "SaveBinaryState", "class_physics_material.html#a7e57e5082b30e978c7ddd6a8e77c983e", null ] +]; \ No newline at end of file diff --git a/class_physics_material.png b/class_physics_material.png new file mode 100644 index 000000000..2a1cd37d3 Binary files /dev/null and b/class_physics_material.png differ diff --git a/class_physics_material_simple-members.html b/class_physics_material_simple-members.html new file mode 100644 index 000000000..5eba20093 --- /dev/null +++ b/class_physics_material_simple-members.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsMaterialSimple Member List
+
+
+ +

This is the complete list of members for PhysicsMaterialSimple, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< PhysicsMaterial >inline
cEmbeddedRefTarget< PhysicsMaterial >protectedstatic
GetDebugColor() const overridePhysicsMaterialSimpleinlinevirtual
GetDebugName() const overridePhysicsMaterialSimpleinlinevirtual
GetRefCount() constRefTarget< PhysicsMaterial >inline
mRefCountRefTarget< PhysicsMaterial >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< PhysicsMaterial >::operator=(const RefTarget &)RefTarget< PhysicsMaterial >inline
PhysicsMaterialResult typedefPhysicsMaterial
PhysicsMaterialSimple()=defaultPhysicsMaterialSimple
PhysicsMaterialSimple(const string_view &inName, ColorArg inColor)PhysicsMaterialSimpleinline
RefTarget()=defaultRefTarget< PhysicsMaterial >inline
RefTarget(const RefTarget &)RefTarget< PhysicsMaterial >inline
Release() constRefTarget< PhysicsMaterial >inline
RestoreBinaryState(StreamIn &inStream) overridePhysicsMaterialSimpleprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overridePhysicsMaterialSimplevirtual
sDefaultPhysicsMaterialstatic
SetEmbedded() constRefTarget< PhysicsMaterial >inline
sInternalGetRefCountOffset()RefTarget< PhysicsMaterial >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)PhysicsMaterialstatic
~PhysicsMaterial() override=defaultPhysicsMaterialvirtual
~RefTarget()RefTarget< PhysicsMaterial >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_physics_material_simple.html b/class_physics_material_simple.html new file mode 100644 index 000000000..62e20570d --- /dev/null +++ b/class_physics_material_simple.html @@ -0,0 +1,405 @@ + + + + + + + +Jolt Physics: PhysicsMaterialSimple Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsMaterialSimple Class Reference
+
+
+ +

Sample implementation of PhysicsMaterial that just holds the needed properties directly. + More...

+ +

#include <PhysicsMaterialSimple.h>

+
+Inheritance diagram for PhysicsMaterialSimple:
+
+
+ + +PhysicsMaterial +SerializableObject +RefTarget< PhysicsMaterial > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PhysicsMaterialSimple ()=default
 Constructor.
 
 PhysicsMaterialSimple (const string_view &inName, ColorArg inColor)
 
virtual const char * GetDebugName () const override
 
virtual Color GetDebugColor () const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the material in binary form to inStream.
 
- Public Member Functions inherited from PhysicsMaterial
virtual ~PhysicsMaterial () override=default
 Virtual destructor.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< PhysicsMaterial >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from PhysicsMaterial
using PhysicsMaterialResult = Result< Ref< PhysicsMaterial > >
 
- Static Public Member Functions inherited from PhysicsMaterial
static PhysicsMaterialResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a PhysicsMaterial of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< PhysicsMaterial >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Static Public Attributes inherited from PhysicsMaterial
static RefConst< PhysicsMaterialsDefault
 Default material that is used when a shape has no materials defined.
 
- Protected Attributes inherited from RefTarget< PhysicsMaterial >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< PhysicsMaterial >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Sample implementation of PhysicsMaterial that just holds the needed properties directly.

+

Constructor & Destructor Documentation

+ +

◆ PhysicsMaterialSimple() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
PhysicsMaterialSimple::PhysicsMaterialSimple ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ PhysicsMaterialSimple() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
PhysicsMaterialSimple::PhysicsMaterialSimple (const string_view & inName,
ColorArg inColor 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetDebugColor()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Color PhysicsMaterialSimple::GetDebugColor () const
+
+inlineoverridevirtual
+
+ +

Reimplemented from PhysicsMaterial.

+ +
+
+ +

◆ GetDebugName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const char * PhysicsMaterialSimple::GetDebugName () const
+
+inlineoverridevirtual
+
+ +

Reimplemented from PhysicsMaterial.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsMaterialSimple::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from PhysicsMaterial.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsMaterialSimple::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the material in binary form to inStream.

+ +

Reimplemented from PhysicsMaterial.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_physics_material_simple.js b/class_physics_material_simple.js new file mode 100644 index 000000000..e4b0f1db8 --- /dev/null +++ b/class_physics_material_simple.js @@ -0,0 +1,9 @@ +var class_physics_material_simple = +[ + [ "PhysicsMaterialSimple", "class_physics_material_simple.html#afd4cf9d7b19fb00dba26cbfb7a8ed80d", null ], + [ "PhysicsMaterialSimple", "class_physics_material_simple.html#a3760b4ee0fd7ab82f3767709de168b73", null ], + [ "GetDebugColor", "class_physics_material_simple.html#a753a983d027c83d1758d8f89e79d3c7e", null ], + [ "GetDebugName", "class_physics_material_simple.html#ae6e3111c1feb14e0494a168ed783c43e", null ], + [ "RestoreBinaryState", "class_physics_material_simple.html#a65bc6aff8e8f375058986d85ec70f611", null ], + [ "SaveBinaryState", "class_physics_material_simple.html#a686edc9c7407485b239d51e634dccd77", null ] +]; \ No newline at end of file diff --git a/class_physics_material_simple.png b/class_physics_material_simple.png new file mode 100644 index 000000000..806554157 Binary files /dev/null and b/class_physics_material_simple.png differ diff --git a/class_physics_scene-members.html b/class_physics_scene-members.html new file mode 100644 index 000000000..e49b64518 --- /dev/null +++ b/class_physics_scene-members.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsScene Member List
+
+
+ +

This is the complete list of members for PhysicsScene, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddBody(const BodyCreationSettings &inBody)PhysicsScene
AddConstraint(const TwoBodyConstraintSettings *inConstraint, uint32 inBody1, uint32 inBody2)PhysicsScene
AddRef() constRefTarget< PhysicsScene >inline
AddSoftBody(const SoftBodyCreationSettings &inSoftBody)PhysicsScene
cEmbeddedRefTarget< PhysicsScene >protectedstatic
cFixedToWorldPhysicsScenestatic
CreateBodies(PhysicsSystem *inSystem) constPhysicsScene
FixInvalidScales()PhysicsScene
FromPhysicsSystem(const PhysicsSystem *inSystem)PhysicsScene
GetBodies() constPhysicsSceneinline
GetBodies()PhysicsSceneinline
GetConstraints() constPhysicsSceneinline
GetConstraints()PhysicsSceneinline
GetNumBodies() constPhysicsSceneinline
GetNumConstraints() constPhysicsSceneinline
GetNumSoftBodies() constPhysicsSceneinline
GetRefCount() constRefTarget< PhysicsScene >inline
GetSoftBodies() constPhysicsSceneinline
GetSoftBodies()PhysicsSceneinline
mRefCountRefTarget< PhysicsScene >mutableprotected
operator=(const RefTarget &)RefTarget< PhysicsScene >inline
PhysicsSceneResult typedefPhysicsScene
RefTarget()=defaultRefTarget< PhysicsScene >inline
RefTarget(const RefTarget &)RefTarget< PhysicsScene >inline
Release() constRefTarget< PhysicsScene >inline
SaveBinaryState(StreamOut &inStream, bool inSaveShapes, bool inSaveGroupFilter) constPhysicsScene
SetEmbedded() constRefTarget< PhysicsScene >inline
sInternalGetRefCountOffset()RefTarget< PhysicsScene >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)PhysicsScenestatic
~RefTarget()RefTarget< PhysicsScene >inline
+
+ + + + diff --git a/class_physics_scene.html b/class_physics_scene.html new file mode 100644 index 000000000..0a0cc8a80 --- /dev/null +++ b/class_physics_scene.html @@ -0,0 +1,735 @@ + + + + + + + +Jolt Physics: PhysicsScene Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsScene Class Reference
+
+
+ +

Contains the creation settings of a set of bodies. + More...

+ +

#include <PhysicsScene.h>

+
+Inheritance diagram for PhysicsScene:
+
+
+ + +RefTarget< PhysicsScene > + +
+ + + + + +

+Classes

class  ConnectedConstraint
 A constraint and how it is connected to the bodies in the scene. More...
 
+ + + +

+Public Types

using PhysicsSceneResult = Result< Ref< PhysicsScene > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void AddBody (const BodyCreationSettings &inBody)
 Add a body to the scene.
 
void AddConstraint (const TwoBodyConstraintSettings *inConstraint, uint32 inBody1, uint32 inBody2)
 
void AddSoftBody (const SoftBodyCreationSettings &inSoftBody)
 Add a soft body to the scene.
 
size_t GetNumBodies () const
 Get number of bodies in this scene.
 
const Array< BodyCreationSettings > & GetBodies () const
 Access to the body settings for this scene.
 
Array< BodyCreationSettings > & GetBodies ()
 
size_t GetNumConstraints () const
 Get number of constraints in this scene.
 
const Array< ConnectedConstraint > & GetConstraints () const
 Access to the constraints for this scene.
 
Array< ConnectedConstraint > & GetConstraints ()
 
size_t GetNumSoftBodies () const
 Get number of bodies in this scene.
 
const Array< SoftBodyCreationSettings > & GetSoftBodies () const
 Access to the soft body settings for this scene.
 
Array< SoftBodyCreationSettings > & GetSoftBodies ()
 
bool CreateBodies (PhysicsSystem *inSystem) const
 Instantiate all bodies, returns false if not all bodies could be created.
 
bool FixInvalidScales ()
 
void SaveBinaryState (StreamOut &inStream, bool inSaveShapes, bool inSaveGroupFilter) const
 
void FromPhysicsSystem (const PhysicsSystem *inSystem)
 For debugging purposes: Construct a scene from the current state of the physics system.
 
- Public Member Functions inherited from RefTarget< PhysicsScene >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + +

+Static Public Member Functions

static PhysicsSceneResult sRestoreFromBinaryState (StreamIn &inStream)
 Restore a saved scene from inStream.
 
- Static Public Member Functions inherited from RefTarget< PhysicsScene >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Static Public Attributes

static constexpr uint32 cFixedToWorld = 0xffffffff
 Body constant to use to indicate that the constraint is attached to the fixed world.
 
+ + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from RefTarget< PhysicsScene >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< PhysicsScene >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Contains the creation settings of a set of bodies.

+

Member Typedef Documentation

+ +

◆ PhysicsSceneResult

+ + +

Member Function Documentation

+ +

◆ AddBody()

+ +
+
+ + + + + + + + +
void PhysicsScene::AddBody (const BodyCreationSettingsinBody)
+
+ +

Add a body to the scene.

+ +
+
+ +

◆ AddConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void PhysicsScene::AddConstraint (const TwoBodyConstraintSettingsinConstraint,
uint32 inBody1,
uint32 inBody2 
)
+
+

Add a constraint to the scene

Parameters
+ + + + +
inConstraintConstraint settings
inBody1Index in the bodies list of first body to attach constraint to
inBody2Index in the bodies list of the second body to attach constraint to
+
+
+ +
+
+ +

◆ AddSoftBody()

+ +
+
+ + + + + + + + +
void PhysicsScene::AddSoftBody (const SoftBodyCreationSettingsinSoftBody)
+
+ +

Add a soft body to the scene.

+ +
+
+ +

◆ CreateBodies()

+ +
+
+ + + + + + + + +
bool PhysicsScene::CreateBodies (PhysicsSysteminSystem) const
+
+ +

Instantiate all bodies, returns false if not all bodies could be created.

+ +
+
+ +

◆ FixInvalidScales()

+ +
+
+ + + + + + + +
bool PhysicsScene::FixInvalidScales ()
+
+

Go through all body creation settings and fix shapes that are scaled incorrectly (note this will change the scene a bit).

Returns
False when not all scales could be fixed.
+ +
+
+ +

◆ FromPhysicsSystem()

+ +
+
+ + + + + + + + +
void PhysicsScene::FromPhysicsSystem (const PhysicsSysteminSystem)
+
+ +

For debugging purposes: Construct a scene from the current state of the physics system.

+ +
+
+ +

◆ GetBodies() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
Array< BodyCreationSettings > & PhysicsScene::GetBodies ()
+
+inline
+
+ +
+
+ +

◆ GetBodies() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const Array< BodyCreationSettings > & PhysicsScene::GetBodies () const
+
+inline
+
+ +

Access to the body settings for this scene.

+ +
+
+ +

◆ GetConstraints() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
Array< ConnectedConstraint > & PhysicsScene::GetConstraints ()
+
+inline
+
+ +
+
+ +

◆ GetConstraints() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const Array< ConnectedConstraint > & PhysicsScene::GetConstraints () const
+
+inline
+
+ +

Access to the constraints for this scene.

+ +
+
+ +

◆ GetNumBodies()

+ +
+
+ + + + + +
+ + + + + + + +
size_t PhysicsScene::GetNumBodies () const
+
+inline
+
+ +

Get number of bodies in this scene.

+ +
+
+ +

◆ GetNumConstraints()

+ +
+
+ + + + + +
+ + + + + + + +
size_t PhysicsScene::GetNumConstraints () const
+
+inline
+
+ +

Get number of constraints in this scene.

+ +
+
+ +

◆ GetNumSoftBodies()

+ +
+
+ + + + + +
+ + + + + + + +
size_t PhysicsScene::GetNumSoftBodies () const
+
+inline
+
+ +

Get number of bodies in this scene.

+ +
+
+ +

◆ GetSoftBodies() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
Array< SoftBodyCreationSettings > & PhysicsScene::GetSoftBodies ()
+
+inline
+
+ +
+
+ +

◆ GetSoftBodies() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const Array< SoftBodyCreationSettings > & PhysicsScene::GetSoftBodies () const
+
+inline
+
+ +

Access to the soft body settings for this scene.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void PhysicsScene::SaveBinaryState (StreamOutinStream,
bool inSaveShapes,
bool inSaveGroupFilter 
) const
+
+

Saves the state of this object in binary form to inStream.

Parameters
+ + + + +
inStreamThe stream to save the state to
inSaveShapesIf the shapes should be saved as well (these could be shared between physics scenes, in which case the calling application may want to write custom code to restore them)
inSaveGroupFilterIf the group filter should be saved as well (these could be shared)
+
+
+ +
+
+ +

◆ sRestoreFromBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
PhysicsScene::PhysicsSceneResult PhysicsScene::sRestoreFromBinaryState (StreamIninStream)
+
+static
+
+ +

Restore a saved scene from inStream.

+ +
+
+

Member Data Documentation

+ +

◆ cFixedToWorld

+ +
+
+ + + + + +
+ + + + +
constexpr uint32 PhysicsScene::cFixedToWorld = 0xffffffff
+
+staticconstexpr
+
+ +

Body constant to use to indicate that the constraint is attached to the fixed world.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_physics_scene.js b/class_physics_scene.js new file mode 100644 index 000000000..2da6b0a30 --- /dev/null +++ b/class_physics_scene.js @@ -0,0 +1,21 @@ +var class_physics_scene = +[ + [ "ConnectedConstraint", "class_physics_scene_1_1_connected_constraint.html", "class_physics_scene_1_1_connected_constraint" ], + [ "PhysicsSceneResult", "class_physics_scene.html#aa54fc9a3796f57c864606a38c9124265", null ], + [ "AddBody", "class_physics_scene.html#ae93df4adcf5c772085936c03137e169f", null ], + [ "AddConstraint", "class_physics_scene.html#a87a55664598b0e1130b9b90ea0cd87fb", null ], + [ "AddSoftBody", "class_physics_scene.html#af857154af1abd73338e4d3fbf277fae5", null ], + [ "CreateBodies", "class_physics_scene.html#a279e3c7758abc7691ab0ecf067083f1e", null ], + [ "FixInvalidScales", "class_physics_scene.html#a5d76aa6b4a1c9166bc905b13f99faabe", null ], + [ "FromPhysicsSystem", "class_physics_scene.html#a1d9c48d1813a7109550be1b5f8d94c20", null ], + [ "GetBodies", "class_physics_scene.html#a181babf1dcea362ab2077564b0f98b97", null ], + [ "GetBodies", "class_physics_scene.html#aeceb248f05ae64111f2d05f223cfbeed", null ], + [ "GetConstraints", "class_physics_scene.html#ad728df0dcebeab7a8796f6e0bb44a97f", null ], + [ "GetConstraints", "class_physics_scene.html#ab95da1c01a9f35cc651d383308cc9de1", null ], + [ "GetNumBodies", "class_physics_scene.html#acfb0a143a8984c6ca97f010c9ea94a08", null ], + [ "GetNumConstraints", "class_physics_scene.html#a62a1ad6dbbb7d6ef95f3556608be1717", null ], + [ "GetNumSoftBodies", "class_physics_scene.html#a53902e4b6f7f482fb490bb9f4219ed78", null ], + [ "GetSoftBodies", "class_physics_scene.html#abcb7d9317c3e8d91d3e9b0799a7596f8", null ], + [ "GetSoftBodies", "class_physics_scene.html#afe41447c0b307d2844a16e288fd412af", null ], + [ "SaveBinaryState", "class_physics_scene.html#a92a0fecb9380ce4a7ac7ebe75cba8c47", null ] +]; \ No newline at end of file diff --git a/class_physics_scene.png b/class_physics_scene.png new file mode 100644 index 000000000..dd7299437 Binary files /dev/null and b/class_physics_scene.png differ diff --git a/class_physics_scene_1_1_connected_constraint-members.html b/class_physics_scene_1_1_connected_constraint-members.html new file mode 100644 index 000000000..38cb69dd0 --- /dev/null +++ b/class_physics_scene_1_1_connected_constraint-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsScene::ConnectedConstraint Member List
+
+
+ +

This is the complete list of members for PhysicsScene::ConnectedConstraint, including all inherited members.

+ + + + + + +
ConnectedConstraint()=defaultPhysicsScene::ConnectedConstraint
ConnectedConstraint(const TwoBodyConstraintSettings *inSettings, uint inBody1, uint inBody2)PhysicsScene::ConnectedConstraintinline
mBody1PhysicsScene::ConnectedConstraint
mBody2PhysicsScene::ConnectedConstraint
mSettingsPhysicsScene::ConnectedConstraint
+
+ + + + diff --git a/class_physics_scene_1_1_connected_constraint.html b/class_physics_scene_1_1_connected_constraint.html new file mode 100644 index 000000000..8584c8fc4 --- /dev/null +++ b/class_physics_scene_1_1_connected_constraint.html @@ -0,0 +1,265 @@ + + + + + + + +Jolt Physics: PhysicsScene::ConnectedConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsScene::ConnectedConstraint Class Reference
+
+
+ +

A constraint and how it is connected to the bodies in the scene. + More...

+ +

#include <PhysicsScene.h>

+ + + + + + +

+Public Member Functions

 ConnectedConstraint ()=default
 
 ConnectedConstraint (const TwoBodyConstraintSettings *inSettings, uint inBody1, uint inBody2)
 
+ + + + + + + + + + +

+Public Attributes

RefConst< TwoBodyConstraintSettingsmSettings
 Constraint settings.
 
uint32 mBody1
 Index of first body (in mBodies)
 
uint32 mBody2
 Index of second body (in mBodies)
 
+

Detailed Description

+

A constraint and how it is connected to the bodies in the scene.

+

Constructor & Destructor Documentation

+ +

◆ ConnectedConstraint() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
PhysicsScene::ConnectedConstraint::ConnectedConstraint ()
+
+default
+
+ +
+
+ +

◆ ConnectedConstraint() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
PhysicsScene::ConnectedConstraint::ConnectedConstraint (const TwoBodyConstraintSettingsinSettings,
uint inBody1,
uint inBody2 
)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mBody1

+ +
+
+ + + + +
uint32 PhysicsScene::ConnectedConstraint::mBody1
+
+ +

Index of first body (in mBodies)

+ +
+
+ +

◆ mBody2

+ +
+
+ + + + +
uint32 PhysicsScene::ConnectedConstraint::mBody2
+
+ +

Index of second body (in mBodies)

+ +
+
+ +

◆ mSettings

+ +
+
+ + + + +
RefConst<TwoBodyConstraintSettings> PhysicsScene::ConnectedConstraint::mSettings
+
+ +

Constraint settings.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_physics_scene_1_1_connected_constraint.js b/class_physics_scene_1_1_connected_constraint.js new file mode 100644 index 000000000..1c7c9e20f --- /dev/null +++ b/class_physics_scene_1_1_connected_constraint.js @@ -0,0 +1,8 @@ +var class_physics_scene_1_1_connected_constraint = +[ + [ "ConnectedConstraint", "class_physics_scene_1_1_connected_constraint.html#a8bfeb5b065806f40ace0e0a28e054a0a", null ], + [ "ConnectedConstraint", "class_physics_scene_1_1_connected_constraint.html#abc1ce879afcaa745d1a73d4e6a793f84", null ], + [ "mBody1", "class_physics_scene_1_1_connected_constraint.html#a2ff2b062c06abb5e821961e88d898eef", null ], + [ "mBody2", "class_physics_scene_1_1_connected_constraint.html#ae99295ba06234ebb109d000f4dd771d3", null ], + [ "mSettings", "class_physics_scene_1_1_connected_constraint.html#a4789e195999b6df47c152bd239e09b4e", null ] +]; \ No newline at end of file diff --git a/class_physics_step_listener-members.html b/class_physics_step_listener-members.html new file mode 100644 index 000000000..25d0892d4 --- /dev/null +++ b/class_physics_step_listener-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsStepListener Member List
+
+
+ +

This is the complete list of members for PhysicsStepListener, including all inherited members.

+ + + +
OnStep(float inDeltaTime, PhysicsSystem &inPhysicsSystem)=0PhysicsStepListenerpure virtual
~PhysicsStepListener()=defaultPhysicsStepListenervirtual
+
+ + + + diff --git a/class_physics_step_listener.html b/class_physics_step_listener.html new file mode 100644 index 000000000..45e6a5e4e --- /dev/null +++ b/class_physics_step_listener.html @@ -0,0 +1,211 @@ + + + + + + + +Jolt Physics: PhysicsStepListener Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsStepListener Class Referenceabstract
+
+
+ +

A listener class that receives a callback before every physics simulation step. + More...

+ +

#include <PhysicsStepListener.h>

+
+Inheritance diagram for PhysicsStepListener:
+
+
+ + +VehicleConstraint + +
+ + + + + + + +

+Public Member Functions

virtual ~PhysicsStepListener ()=default
 Ensure virtual destructor.
 
virtual void OnStep (float inDeltaTime, PhysicsSystem &inPhysicsSystem)=0
 
+

Detailed Description

+

A listener class that receives a callback before every physics simulation step.

+

Constructor & Destructor Documentation

+ +

◆ ~PhysicsStepListener()

+ +
+
+ + + + + +
+ + + + + + + +
virtual PhysicsStepListener::~PhysicsStepListener ()
+
+virtualdefault
+
+ +

Ensure virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ OnStep()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void PhysicsStepListener::OnStep (float inDeltaTime,
PhysicsSysteminPhysicsSystem 
)
+
+pure virtual
+
+

Called before every simulation step (received inCollisionSteps times for every PhysicsSystem::Update(...) call) This is called while all body and constraint mutexes are locked. You can read/write bodies and constraints but not add/remove them. Multiple listeners can be executed in parallel and it is the responsibility of the listener to avoid race conditions. The best way to do this is to have each step listener operate on a subset of the bodies and constraints and making sure that these bodies and constraints are not touched by any other step listener. Note that this function is not called if there aren't any active bodies or when the physics system is updated with 0 delta time.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_physics_step_listener.js b/class_physics_step_listener.js new file mode 100644 index 000000000..747da044b --- /dev/null +++ b/class_physics_step_listener.js @@ -0,0 +1,5 @@ +var class_physics_step_listener = +[ + [ "~PhysicsStepListener", "class_physics_step_listener.html#ad977d0eae86ac63814eb9742f896ad4b", null ], + [ "OnStep", "class_physics_step_listener.html#af2180e766b5fc038b7ce5ab2799c0230", null ] +]; \ No newline at end of file diff --git a/class_physics_step_listener.png b/class_physics_step_listener.png new file mode 100644 index 000000000..feed63be4 Binary files /dev/null and b/class_physics_step_listener.png differ diff --git a/class_physics_system-members.html b/class_physics_system-members.html new file mode 100644 index 000000000..a7c117aed --- /dev/null +++ b/class_physics_system-members.html @@ -0,0 +1,175 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsSystem Member List
+
+
+ +

This is the complete list of members for PhysicsSystem, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddConstraint(Constraint *inConstraint)PhysicsSysteminline
AddConstraints(Constraint **inConstraints, int inNumber)PhysicsSysteminline
AddStepListener(PhysicsStepListener *inListener)PhysicsSystem
BodyStats typedefPhysicsSystem
DrawBodies(const BodyManager::DrawSettings &inSettings, DebugRenderer *inRenderer, const BodyDrawFilter *inBodyFilter=nullptr)PhysicsSysteminline
DrawConstraintLimits(DebugRenderer *inRenderer)PhysicsSysteminline
DrawConstraintReferenceFrame(DebugRenderer *inRenderer)PhysicsSysteminline
DrawConstraints(DebugRenderer *inRenderer)PhysicsSysteminline
GetActiveBodies(EBodyType inType, BodyIDVector &outBodyIDs) constPhysicsSysteminline
GetActiveBodiesUnsafe(EBodyType inType) constPhysicsSysteminline
GetBodies(BodyIDVector &outBodyIDs) constPhysicsSysteminline
GetBodyActivationListener() constPhysicsSysteminline
GetBodyInterface() constPhysicsSysteminline
GetBodyInterface()PhysicsSysteminline
GetBodyInterfaceNoLock() constPhysicsSysteminline
GetBodyInterfaceNoLock()PhysicsSysteminline
GetBodyLockInterface() constPhysicsSysteminline
GetBodyLockInterfaceNoLock() constPhysicsSysteminline
GetBodyStats() constPhysicsSysteminline
GetBounds() constPhysicsSysteminline
GetBroadPhaseQuery() constPhysicsSysteminline
GetCombineFriction() constPhysicsSysteminline
GetCombineRestitution() constPhysicsSysteminline
GetConstraints() constPhysicsSysteminline
GetContactListener() constPhysicsSysteminline
GetDefaultBroadPhaseLayerFilter(ObjectLayer inLayer) constPhysicsSysteminline
GetDefaultLayerFilter(ObjectLayer inLayer) constPhysicsSysteminline
GetGravity() constPhysicsSysteminline
GetMaxBodies() constPhysicsSysteminline
GetNarrowPhaseQuery() constPhysicsSysteminline
GetNarrowPhaseQueryNoLock() constPhysicsSysteminline
GetNumActiveBodies(EBodyType inType) constPhysicsSysteminline
GetNumBodies() constPhysicsSysteminline
GetPhysicsSettings() constPhysicsSysteminline
GetSoftBodyContactListener() constPhysicsSysteminline
Init(uint inMaxBodies, uint inNumBodyMutexes, uint inMaxBodyPairs, uint inMaxContactConstraints, const BroadPhaseLayerInterface &inBroadPhaseLayerInterface, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter)PhysicsSystem
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
OptimizeBroadPhase()PhysicsSystem
PhysicsSystem()PhysicsSysteminline
RemoveConstraint(Constraint *inConstraint)PhysicsSysteminline
RemoveConstraints(Constraint **inConstraints, int inNumber)PhysicsSysteminline
RemoveStepListener(PhysicsStepListener *inListener)PhysicsSystem
RestoreBodyState(Body &ioBody, StateRecorder &inStream)PhysicsSystem
RestoreState(StateRecorder &inStream)PhysicsSystem
SaveBodyState(const Body &inBody, StateRecorder &inStream) constPhysicsSystem
SaveState(StateRecorder &inStream, EStateRecorderState inState=EStateRecorderState::All, const StateRecorderFilter *inFilter=nullptr) constPhysicsSystem
sDrawMotionQualityLinearCastPhysicsSystemstatic
SetBodyActivationListener(BodyActivationListener *inListener)PhysicsSysteminline
SetCombineFriction(ContactConstraintManager::CombineFunction inCombineFriction)PhysicsSysteminline
SetCombineRestitution(ContactConstraintManager::CombineFunction inCombineRestition)PhysicsSysteminline
SetContactListener(ContactListener *inListener)PhysicsSysteminline
SetGravity(Vec3Arg inGravity)PhysicsSysteminline
SetPhysicsSettings(const PhysicsSettings &inSettings)PhysicsSysteminline
SetSoftBodyContactListener(SoftBodyContactListener *inListener)PhysicsSysteminline
Update(float inDeltaTime, int inCollisionSteps, TempAllocator *inTempAllocator, JobSystem *inJobSystem)PhysicsSystem
WereBodiesInContact(const BodyID &inBody1ID, const BodyID &inBody2ID) constPhysicsSysteminline
~PhysicsSystem()PhysicsSystem
+
+ + + + diff --git a/class_physics_system.html b/class_physics_system.html new file mode 100644 index 000000000..2ca544b14 --- /dev/null +++ b/class_physics_system.html @@ -0,0 +1,1912 @@ + + + + + + + +Jolt Physics: PhysicsSystem Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsSystem Class Reference
+
+
+ +

#include <PhysicsSystem.h>

+
+Inheritance diagram for PhysicsSystem:
+
+
+ + +NonCopyable + +
+ + + + +

+Classes

class  BodiesToSleep
 
+ + + + +

+Public Types

using BodyStats = BodyManager::BodyStats
 Helper struct that counts the number of bodies of each type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE PhysicsSystem ()
 Constructor / Destructor.
 
 ~PhysicsSystem ()
 
void Init (uint inMaxBodies, uint inNumBodyMutexes, uint inMaxBodyPairs, uint inMaxContactConstraints, const BroadPhaseLayerInterface &inBroadPhaseLayerInterface, const ObjectVsBroadPhaseLayerFilter &inObjectVsBroadPhaseLayerFilter, const ObjectLayerPairFilter &inObjectLayerPairFilter)
 
void SetBodyActivationListener (BodyActivationListener *inListener)
 Listener that is notified whenever a body is activated/deactivated.
 
BodyActivationListenerGetBodyActivationListener () const
 
void SetContactListener (ContactListener *inListener)
 
ContactListenerGetContactListener () const
 
void SetSoftBodyContactListener (SoftBodyContactListener *inListener)
 Listener that is notified whenever a contact point between a soft body and another body.
 
SoftBodyContactListenerGetSoftBodyContactListener () const
 
void SetCombineFriction (ContactConstraintManager::CombineFunction inCombineFriction)
 
ContactConstraintManager::CombineFunction GetCombineFriction () const
 
void SetCombineRestitution (ContactConstraintManager::CombineFunction inCombineRestition)
 
ContactConstraintManager::CombineFunction GetCombineRestitution () const
 
void SetPhysicsSettings (const PhysicsSettings &inSettings)
 Control the main constants of the physics simulation.
 
const PhysicsSettingsGetPhysicsSettings () const
 
const BodyInterfaceGetBodyInterface () const
 Access to the body interface. This interface allows to to create / remove bodies and to change their properties.
 
BodyInterfaceGetBodyInterface ()
 
const BodyInterfaceGetBodyInterfaceNoLock () const
 Version that does not lock the bodies, use with great care!
 
BodyInterfaceGetBodyInterfaceNoLock ()
 Version that does not lock the bodies, use with great care!
 
const BroadPhaseQueryGetBroadPhaseQuery () const
 Access to the broadphase interface that allows coarse collision queries.
 
const NarrowPhaseQueryGetNarrowPhaseQuery () const
 Interface that allows fine collision queries against first the broad phase and then the narrow phase.
 
const NarrowPhaseQueryGetNarrowPhaseQueryNoLock () const
 Version that does not lock the bodies, use with great care!
 
void AddConstraint (Constraint *inConstraint)
 Add constraint to the world.
 
void RemoveConstraint (Constraint *inConstraint)
 Remove constraint from the world.
 
void AddConstraints (Constraint **inConstraints, int inNumber)
 Batch add constraints. Note that the inConstraints array is allowed to have nullptrs, these will be ignored.
 
void RemoveConstraints (Constraint **inConstraints, int inNumber)
 Batch remove constraints. Note that the inConstraints array is allowed to have nullptrs, these will be ignored.
 
Constraints GetConstraints () const
 Get a list of all constraints.
 
void OptimizeBroadPhase ()
 
void AddStepListener (PhysicsStepListener *inListener)
 Adds a new step listener.
 
void RemoveStepListener (PhysicsStepListener *inListener)
 Removes a step listener.
 
EPhysicsUpdateError Update (float inDeltaTime, int inCollisionSteps, TempAllocator *inTempAllocator, JobSystem *inJobSystem)
 
void SaveState (StateRecorder &inStream, EStateRecorderState inState=EStateRecorderState::All, const StateRecorderFilter *inFilter=nullptr) const
 Saving state for replay.
 
bool RestoreState (StateRecorder &inStream)
 Restoring state for replay. Returns false if failed.
 
void SaveBodyState (const Body &inBody, StateRecorder &inStream) const
 Saving state of a single body.
 
void RestoreBodyState (Body &ioBody, StateRecorder &inStream)
 Restoring state of a single body.
 
void DrawBodies (const BodyManager::DrawSettings &inSettings, DebugRenderer *inRenderer, const BodyDrawFilter *inBodyFilter=nullptr)
 Draw the state of the bodies (debugging purposes)
 
void DrawConstraints (DebugRenderer *inRenderer)
 Draw the constraints only (debugging purposes)
 
void DrawConstraintLimits (DebugRenderer *inRenderer)
 Draw the constraint limits only (debugging purposes)
 
void DrawConstraintReferenceFrame (DebugRenderer *inRenderer)
 Draw the constraint reference frames only (debugging purposes)
 
void SetGravity (Vec3Arg inGravity)
 Set gravity value.
 
Vec3 GetGravity () const
 
const BodyLockInterfaceNoLockGetBodyLockInterfaceNoLock () const
 Returns a locking interface that won't actually lock the body. Use with great care!
 
const BodyLockInterfaceLockingGetBodyLockInterface () const
 Returns a locking interface that locks the body so other threads cannot modify it.
 
DefaultBroadPhaseLayerFilter GetDefaultBroadPhaseLayerFilter (ObjectLayer inLayer) const
 Get an broadphase layer filter that uses the default pair filter and a specified object layer to determine if broadphase layers collide.
 
DefaultObjectLayerFilter GetDefaultLayerFilter (ObjectLayer inLayer) const
 Get an object layer filter that uses the default pair filter and a specified layer to determine if layers collide.
 
uint GetNumBodies () const
 Gets the current amount of bodies that are in the body manager.
 
uint32 GetNumActiveBodies (EBodyType inType) const
 Gets the current amount of active bodies that are in the body manager.
 
uint GetMaxBodies () const
 Get the maximum amount of bodies that this physics system supports.
 
BodyStats GetBodyStats () const
 Get stats about the bodies in the body manager (slow, iterates through all bodies)
 
void GetBodies (BodyIDVector &outBodyIDs) const
 
void GetActiveBodies (EBodyType inType, BodyIDVector &outBodyIDs) const
 
const BodyIDGetActiveBodiesUnsafe (EBodyType inType) const
 
bool WereBodiesInContact (const BodyID &inBody1ID, const BodyID &inBody2ID) const
 
AABox GetBounds () const
 Get the bounding box of all bodies in the physics system.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + +

+Static Public Attributes

static bool sDrawMotionQualityLinearCast = false
 Draw debug info for objects that perform continuous collision detection through the linear cast motion quality.
 
+

Detailed Description

+

The main class for the physics system. It contains all rigid bodies and simulates them.

+

The main simulation is performed by the Update() call on multiple threads (if the JobSystem is configured to use them). Please refer to the general architecture overview in the Docs folder for more information.

+

Member Typedef Documentation

+ +

◆ BodyStats

+ +
+
+ +

Helper struct that counts the number of bodies of each type.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ PhysicsSystem()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE PhysicsSystem::PhysicsSystem ()
+
+inline
+
+ +

Constructor / Destructor.

+ +
+
+ +

◆ ~PhysicsSystem()

+ +
+
+ + + + + + + +
PhysicsSystem::~PhysicsSystem ()
+
+ +
+
+

Member Function Documentation

+ +

◆ AddConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::AddConstraint (ConstraintinConstraint)
+
+inline
+
+ +

Add constraint to the world.

+ +
+
+ +

◆ AddConstraints()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void PhysicsSystem::AddConstraints (Constraint ** inConstraints,
int inNumber 
)
+
+inline
+
+ +

Batch add constraints. Note that the inConstraints array is allowed to have nullptrs, these will be ignored.

+ +
+
+ +

◆ AddStepListener()

+ +
+
+ + + + + + + + +
void PhysicsSystem::AddStepListener (PhysicsStepListenerinListener)
+
+ +

Adds a new step listener.

+ +
+
+ +

◆ DrawBodies()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void PhysicsSystem::DrawBodies (const BodyManager::DrawSettingsinSettings,
DebugRendererinRenderer,
const BodyDrawFilterinBodyFilter = nullptr 
)
+
+inline
+
+ +

Draw the state of the bodies (debugging purposes)

+ +
+
+ +

◆ DrawConstraintLimits()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::DrawConstraintLimits (DebugRendererinRenderer)
+
+inline
+
+ +

Draw the constraint limits only (debugging purposes)

+ +
+
+ +

◆ DrawConstraintReferenceFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::DrawConstraintReferenceFrame (DebugRendererinRenderer)
+
+inline
+
+ +

Draw the constraint reference frames only (debugging purposes)

+ +
+
+ +

◆ DrawConstraints()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::DrawConstraints (DebugRendererinRenderer)
+
+inline
+
+ +

Draw the constraints only (debugging purposes)

+ +
+
+ +

◆ GetActiveBodies()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void PhysicsSystem::GetActiveBodies (EBodyType inType,
BodyIDVectoroutBodyIDs 
) const
+
+inline
+
+

Get copy of the list of active bodies under protection of a lock.

Parameters
+ + + +
inTypeThe type of bodies to get
outBodyIDsOn return, this will contain the list of BodyIDs
+
+
+ +
+
+ +

◆ GetActiveBodiesUnsafe()

+ +
+
+ + + + + +
+ + + + + + + + +
const BodyID * PhysicsSystem::GetActiveBodiesUnsafe (EBodyType inType) const
+
+inline
+
+

Get the list of active bodies, use GetNumActiveBodies() to find out how long the list is. Note: Not thread safe. The active bodies list can change at any moment when other threads are doing work. Use GetActiveBodies() if you need a thread safe version.

+ +
+
+ +

◆ GetBodies()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::GetBodies (BodyIDVectoroutBodyIDs) const
+
+inline
+
+

Get copy of the list of all bodies under protection of a lock.

Parameters
+ + +
outBodyIDsOn return, this will contain the list of BodyIDs
+
+
+ +
+
+ +

◆ GetBodyActivationListener()

+ +
+
+ + + + + +
+ + + + + + + +
BodyActivationListener * PhysicsSystem::GetBodyActivationListener () const
+
+inline
+
+ +
+
+ +

◆ GetBodyInterface() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
BodyInterface & PhysicsSystem::GetBodyInterface ()
+
+inline
+
+ +
+
+ +

◆ GetBodyInterface() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const BodyInterface & PhysicsSystem::GetBodyInterface () const
+
+inline
+
+ +

Access to the body interface. This interface allows to to create / remove bodies and to change their properties.

+ +
+
+ +

◆ GetBodyInterfaceNoLock() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
BodyInterface & PhysicsSystem::GetBodyInterfaceNoLock ()
+
+inline
+
+ +

Version that does not lock the bodies, use with great care!

+ +
+
+ +

◆ GetBodyInterfaceNoLock() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const BodyInterface & PhysicsSystem::GetBodyInterfaceNoLock () const
+
+inline
+
+ +

Version that does not lock the bodies, use with great care!

+ +
+
+ +

◆ GetBodyLockInterface()

+ +
+
+ + + + + +
+ + + + + + + +
const BodyLockInterfaceLocking & PhysicsSystem::GetBodyLockInterface () const
+
+inline
+
+ +

Returns a locking interface that locks the body so other threads cannot modify it.

+ +
+
+ +

◆ GetBodyLockInterfaceNoLock()

+ +
+
+ + + + + +
+ + + + + + + +
const BodyLockInterfaceNoLock & PhysicsSystem::GetBodyLockInterfaceNoLock () const
+
+inline
+
+ +

Returns a locking interface that won't actually lock the body. Use with great care!

+ +
+
+ +

◆ GetBodyStats()

+ +
+
+ + + + + +
+ + + + + + + +
BodyStats PhysicsSystem::GetBodyStats () const
+
+inline
+
+ +

Get stats about the bodies in the body manager (slow, iterates through all bodies)

+ +
+
+ +

◆ GetBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox PhysicsSystem::GetBounds () const
+
+inline
+
+ +

Get the bounding box of all bodies in the physics system.

+ +
+
+ +

◆ GetBroadPhaseQuery()

+ +
+
+ + + + + +
+ + + + + + + +
const BroadPhaseQuery & PhysicsSystem::GetBroadPhaseQuery () const
+
+inline
+
+ +

Access to the broadphase interface that allows coarse collision queries.

+ +
+
+ +

◆ GetCombineFriction()

+ +
+
+ + + + + +
+ + + + + + + +
ContactConstraintManager::CombineFunction PhysicsSystem::GetCombineFriction () const
+
+inline
+
+ +
+
+ +

◆ GetCombineRestitution()

+ +
+
+ + + + + +
+ + + + + + + +
ContactConstraintManager::CombineFunction PhysicsSystem::GetCombineRestitution () const
+
+inline
+
+ +
+
+ +

◆ GetConstraints()

+ +
+
+ + + + + +
+ + + + + + + +
Constraints PhysicsSystem::GetConstraints () const
+
+inline
+
+ +

Get a list of all constraints.

+ +
+
+ +

◆ GetContactListener()

+ +
+
+ + + + + +
+ + + + + + + +
ContactListener * PhysicsSystem::GetContactListener () const
+
+inline
+
+ +
+
+ +

◆ GetDefaultBroadPhaseLayerFilter()

+ +
+
+ + + + + +
+ + + + + + + + +
DefaultBroadPhaseLayerFilter PhysicsSystem::GetDefaultBroadPhaseLayerFilter (ObjectLayer inLayer) const
+
+inline
+
+ +

Get an broadphase layer filter that uses the default pair filter and a specified object layer to determine if broadphase layers collide.

+ +
+
+ +

◆ GetDefaultLayerFilter()

+ +
+
+ + + + + +
+ + + + + + + + +
DefaultObjectLayerFilter PhysicsSystem::GetDefaultLayerFilter (ObjectLayer inLayer) const
+
+inline
+
+ +

Get an object layer filter that uses the default pair filter and a specified layer to determine if layers collide.

+ +
+
+ +

◆ GetGravity()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 PhysicsSystem::GetGravity () const
+
+inline
+
+ +
+
+ +

◆ GetMaxBodies()

+ +
+
+ + + + + +
+ + + + + + + +
uint PhysicsSystem::GetMaxBodies () const
+
+inline
+
+ +

Get the maximum amount of bodies that this physics system supports.

+ +
+
+ +

◆ GetNarrowPhaseQuery()

+ +
+
+ + + + + +
+ + + + + + + +
const NarrowPhaseQuery & PhysicsSystem::GetNarrowPhaseQuery () const
+
+inline
+
+ +

Interface that allows fine collision queries against first the broad phase and then the narrow phase.

+ +
+
+ +

◆ GetNarrowPhaseQueryNoLock()

+ +
+
+ + + + + +
+ + + + + + + +
const NarrowPhaseQuery & PhysicsSystem::GetNarrowPhaseQueryNoLock () const
+
+inline
+
+ +

Version that does not lock the bodies, use with great care!

+ +
+
+ +

◆ GetNumActiveBodies()

+ +
+
+ + + + + +
+ + + + + + + + +
uint32 PhysicsSystem::GetNumActiveBodies (EBodyType inType) const
+
+inline
+
+ +

Gets the current amount of active bodies that are in the body manager.

+ +
+
+ +

◆ GetNumBodies()

+ +
+
+ + + + + +
+ + + + + + + +
uint PhysicsSystem::GetNumBodies () const
+
+inline
+
+ +

Gets the current amount of bodies that are in the body manager.

+ +
+
+ +

◆ GetPhysicsSettings()

+ +
+
+ + + + + +
+ + + + + + + +
const PhysicsSettings & PhysicsSystem::GetPhysicsSettings () const
+
+inline
+
+ +
+
+ +

◆ GetSoftBodyContactListener()

+ +
+
+ + + + + +
+ + + + + + + +
SoftBodyContactListener * PhysicsSystem::GetSoftBodyContactListener () const
+
+inline
+
+ +
+
+ +

◆ Init()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PhysicsSystem::Init (uint inMaxBodies,
uint inNumBodyMutexes,
uint inMaxBodyPairs,
uint inMaxContactConstraints,
const BroadPhaseLayerInterfaceinBroadPhaseLayerInterface,
const ObjectVsBroadPhaseLayerFilterinObjectVsBroadPhaseLayerFilter,
const ObjectLayerPairFilterinObjectLayerPairFilter 
)
+
+

Initialize the system.

Parameters
+ + + + + + + + +
inMaxBodiesMaximum number of bodies to support.
inNumBodyMutexesNumber of body mutexes to use. Should be a power of 2 in the range [1, 64], use 0 to auto detect.
inMaxBodyPairsMaximum amount of body pairs to process (anything else will fall through the world), this number should generally be much higher than the max amount of contact points as there will be lots of bodies close that are not actually touching.
inMaxContactConstraintsMaximum amount of contact constraints to process (anything else will fall through the world).
inBroadPhaseLayerInterfaceInformation on the mapping of object layers to broad phase layers. Since this is a virtual interface, the instance needs to stay alive during the lifetime of the PhysicsSystem.
inObjectVsBroadPhaseLayerFilterFilter callback function that is used to determine if an object layer collides with a broad phase layer. Since this is a virtual interface, the instance needs to stay alive during the lifetime of the PhysicsSystem.
inObjectLayerPairFilterFilter callback function that is used to determine if two object layers collide. Since this is a virtual interface, the instance needs to stay alive during the lifetime of the PhysicsSystem.
+
+
+ +
+
+ +

◆ OptimizeBroadPhase()

+ +
+
+ + + + + + + +
void PhysicsSystem::OptimizeBroadPhase ()
+
+

Optimize the broadphase, needed only if you've added many bodies prior to calling Update() for the first time. Don't call this every frame as PhysicsSystem::Update spreads out the same work over multiple frames. If you add many bodies through BodyInterface::AddBodiesPrepare/AddBodiesFinalize and if the bodies in a batch are in a roughly unoccupied space (e.g. a new level section) then a call to OptimizeBroadPhase is also not needed as batch adding creates an efficient bounding volume hierarchy. Don't call this function while bodies are being modified from another thread or use the locking BodyInterface to modify bodies.

+ +
+
+ +

◆ RemoveConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::RemoveConstraint (ConstraintinConstraint)
+
+inline
+
+ +

Remove constraint from the world.

+ +
+
+ +

◆ RemoveConstraints()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void PhysicsSystem::RemoveConstraints (Constraint ** inConstraints,
int inNumber 
)
+
+inline
+
+ +

Batch remove constraints. Note that the inConstraints array is allowed to have nullptrs, these will be ignored.

+ +
+
+ +

◆ RemoveStepListener()

+ +
+
+ + + + + + + + +
void PhysicsSystem::RemoveStepListener (PhysicsStepListenerinListener)
+
+ +

Removes a step listener.

+ +
+
+ +

◆ RestoreBodyState()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PhysicsSystem::RestoreBodyState (BodyioBody,
StateRecorderinStream 
)
+
+ +

Restoring state of a single body.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + + + + +
bool PhysicsSystem::RestoreState (StateRecorderinStream)
+
+ +

Restoring state for replay. Returns false if failed.

+ +
+
+ +

◆ SaveBodyState()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PhysicsSystem::SaveBodyState (const BodyinBody,
StateRecorderinStream 
) const
+
+ +

Saving state of a single body.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void PhysicsSystem::SaveState (StateRecorderinStream,
EStateRecorderState inState = EStateRecorderState::All,
const StateRecorderFilterinFilter = nullptr 
) const
+
+ +

Saving state for replay.

+ +
+
+ +

◆ SetBodyActivationListener()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::SetBodyActivationListener (BodyActivationListenerinListener)
+
+inline
+
+ +

Listener that is notified whenever a body is activated/deactivated.

+ +
+
+ +

◆ SetCombineFriction()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::SetCombineFriction (ContactConstraintManager::CombineFunction inCombineFriction)
+
+inline
+
+

Set the function that combines the friction of two bodies and returns it Default method is the geometric mean: sqrt(friction1 * friction2).

+ +
+
+ +

◆ SetCombineRestitution()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::SetCombineRestitution (ContactConstraintManager::CombineFunction inCombineRestition)
+
+inline
+
+

Set the function that combines the restitution of two bodies and returns it Default method is max(restitution1, restitution1)

+ +
+
+ +

◆ SetContactListener()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::SetContactListener (ContactListenerinListener)
+
+inline
+
+

Listener that is notified whenever a contact point between two bodies is added/updated/removed. You can't change contact listener during PhysicsSystem::Update but it can be changed at any other time.

+ +
+
+ +

◆ SetGravity()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::SetGravity (Vec3Arg inGravity)
+
+inline
+
+ +

Set gravity value.

+ +
+
+ +

◆ SetPhysicsSettings()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::SetPhysicsSettings (const PhysicsSettingsinSettings)
+
+inline
+
+ +

Control the main constants of the physics simulation.

+ +
+
+ +

◆ SetSoftBodyContactListener()

+ +
+
+ + + + + +
+ + + + + + + + +
void PhysicsSystem::SetSoftBodyContactListener (SoftBodyContactListenerinListener)
+
+inline
+
+ +

Listener that is notified whenever a contact point between a soft body and another body.

+ +
+
+ +

◆ Update()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EPhysicsUpdateError PhysicsSystem::Update (float inDeltaTime,
int inCollisionSteps,
TempAllocatorinTempAllocator,
JobSysteminJobSystem 
)
+
+

Simulate the system. The world steps for a total of inDeltaTime seconds. This is divided in inCollisionSteps iterations. Each iteration consists of collision detection followed by an integration step. This function internally spawns jobs using inJobSystem and waits for them to complete, so no jobs will be running when this function returns.

+ +
+
+ +

◆ WereBodiesInContact()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool PhysicsSystem::WereBodiesInContact (const BodyIDinBody1ID,
const BodyIDinBody2ID 
) const
+
+inline
+
+

Check if 2 bodies were in contact during the last simulation step. Since contacts are only detected between active bodies, so at least one of the bodies must be active in order for this function to work. It queries the state at the time of the last PhysicsSystem::Update and will return true if the bodies were in contact, even if one of the bodies was moved / removed afterwards. This function can be called from any thread when the PhysicsSystem::Update is not running. During PhysicsSystem::Update this function is only valid during contact callbacks:

    +
  • During the ContactListener::OnContactAdded callback this function can be used to determine if a different contact pair between the bodies was active in the previous simulation step (function returns true) or if this is the first step that the bodies are touching (function returns false).
  • +
  • During the ContactListener::OnContactRemoved callback this function can be used to determine if this is the last contact pair between the bodies (function returns false) or if there are other contacts still present (function returns true).
  • +
+ +
+
+

Member Data Documentation

+ +

◆ sDrawMotionQualityLinearCast

+ +
+
+ + + + + +
+ + + + +
JPH_NAMESPACE_BEGIN bool PhysicsSystem::sDrawMotionQualityLinearCast = false
+
+static
+
+ +

Draw debug info for objects that perform continuous collision detection through the linear cast motion quality.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_physics_system.js b/class_physics_system.js new file mode 100644 index 000000000..b9dfb1f50 --- /dev/null +++ b/class_physics_system.js @@ -0,0 +1,59 @@ +var class_physics_system = +[ + [ "BodiesToSleep", "class_physics_system_1_1_bodies_to_sleep.html", "class_physics_system_1_1_bodies_to_sleep" ], + [ "BodyStats", "class_physics_system.html#a8298f68e3a5a5990ea4c5391750b3d90", null ], + [ "PhysicsSystem", "class_physics_system.html#aaefedca1b6619cf11f5c45f7f2176148", null ], + [ "~PhysicsSystem", "class_physics_system.html#a2f13afc2b367634112f155934af9227e", null ], + [ "AddConstraint", "class_physics_system.html#a6a1378c13080b5ad3af2c61be87ca40c", null ], + [ "AddConstraints", "class_physics_system.html#ad83534f99aa4e7fc78e6ede84576b59c", null ], + [ "AddStepListener", "class_physics_system.html#a0964d49514b7447981dcc7438876e988", null ], + [ "DrawBodies", "class_physics_system.html#a8d4eda1c25d2c2e57a6964167870fe93", null ], + [ "DrawConstraintLimits", "class_physics_system.html#a58612f2c07412ae75580710d0b0047d9", null ], + [ "DrawConstraintReferenceFrame", "class_physics_system.html#a0535d433ffd7c3d00595ba784ada4f91", null ], + [ "DrawConstraints", "class_physics_system.html#a4fa500f710dcc423062fd1514fe07780", null ], + [ "GetActiveBodies", "class_physics_system.html#aac0c682798c1fc5c78977b0dc4b24b7d", null ], + [ "GetActiveBodiesUnsafe", "class_physics_system.html#ae3f5ce308a831074e1e0fff453862584", null ], + [ "GetBodies", "class_physics_system.html#a01018de422e55bc7e23a17f318ecdd1f", null ], + [ "GetBodyActivationListener", "class_physics_system.html#a8fd2362a6a9377d74902653f42e83170", null ], + [ "GetBodyInterface", "class_physics_system.html#a579bc839c332cf3523c3eb2b03c98e3e", null ], + [ "GetBodyInterface", "class_physics_system.html#a35474557b977d2a03e7b5e7c920bf2ee", null ], + [ "GetBodyInterfaceNoLock", "class_physics_system.html#a9da48916fec4a9b9af533a84785aa455", null ], + [ "GetBodyInterfaceNoLock", "class_physics_system.html#a55216f4cfc718d052548baac4ba098d7", null ], + [ "GetBodyLockInterface", "class_physics_system.html#a3ec396058f674026726e59dc7ad20609", null ], + [ "GetBodyLockInterfaceNoLock", "class_physics_system.html#ad381ea5bd5568b20ae05c1229dbff49e", null ], + [ "GetBodyStats", "class_physics_system.html#ad826f67ef4fd3a1457cf9d8d6892d5cb", null ], + [ "GetBounds", "class_physics_system.html#a7f87f05d94f62054d6f3e975b613d2f0", null ], + [ "GetBroadPhaseQuery", "class_physics_system.html#a3d621cc72c69b73cdcc13bdb3b0dddc4", null ], + [ "GetCombineFriction", "class_physics_system.html#ae19842257ae5c36c88dd4dbead21e55f", null ], + [ "GetCombineRestitution", "class_physics_system.html#aad39e9dd77faf9b578460b66451334e7", null ], + [ "GetConstraints", "class_physics_system.html#a69c9f67351312d43f8e1c1f5d23fdf99", null ], + [ "GetContactListener", "class_physics_system.html#ae7f5894935da5a4652a6d7ac60ad82e0", null ], + [ "GetDefaultBroadPhaseLayerFilter", "class_physics_system.html#a9473bc5d3e3cd861b58b0db3240b4f1d", null ], + [ "GetDefaultLayerFilter", "class_physics_system.html#adaf3b2dbc230ee329461e47f096ef467", null ], + [ "GetGravity", "class_physics_system.html#a73776df14d1f0f10ba9a5fa033eefafd", null ], + [ "GetMaxBodies", "class_physics_system.html#a77646a1768d1cfc892b6238bf614ed9f", null ], + [ "GetNarrowPhaseQuery", "class_physics_system.html#a1ced58861f3fbb7cfea901128bb7a84d", null ], + [ "GetNarrowPhaseQueryNoLock", "class_physics_system.html#a472f122c70806d1a2b88fbb441be42e0", null ], + [ "GetNumActiveBodies", "class_physics_system.html#a294887e565856fe5305419aa4432e33e", null ], + [ "GetNumBodies", "class_physics_system.html#a25eb1c752bffdd53c2c7cd610f2708f7", null ], + [ "GetPhysicsSettings", "class_physics_system.html#a54b6d93365bca8fda1edf68997c29b9e", null ], + [ "GetSoftBodyContactListener", "class_physics_system.html#ae0014dc0eb3cf650db692bb24e0c3f75", null ], + [ "Init", "class_physics_system.html#ae578fcd0c58f678156b7cd8b44f811a6", null ], + [ "OptimizeBroadPhase", "class_physics_system.html#ab3cd9f2562f0f051c032b3bc298d9604", null ], + [ "RemoveConstraint", "class_physics_system.html#a7cdf5d375a54ab6d6b29e3944d8e4266", null ], + [ "RemoveConstraints", "class_physics_system.html#a220ed391139f4ffdb384fe83b44d6439", null ], + [ "RemoveStepListener", "class_physics_system.html#a00aeeff60505f9baa3dd1ffdfe73c2b3", null ], + [ "RestoreBodyState", "class_physics_system.html#a5865e977575ab65a41ce98e098b897cc", null ], + [ "RestoreState", "class_physics_system.html#a5c0936f0d1e9cc6f05a100e48a687bb6", null ], + [ "SaveBodyState", "class_physics_system.html#a29255e6d9124402e08319bfbf81b8509", null ], + [ "SaveState", "class_physics_system.html#ae13975e609ff125fa02b922795777824", null ], + [ "SetBodyActivationListener", "class_physics_system.html#ae7c05e21f93638e9b9eb2c52dd6d850f", null ], + [ "SetCombineFriction", "class_physics_system.html#ae1cc3e726b7e186f642c7da5f6c6a2c2", null ], + [ "SetCombineRestitution", "class_physics_system.html#aadad532dfda2006fd3b699116e9fed08", null ], + [ "SetContactListener", "class_physics_system.html#ade7967ad5ff4a67d255cc6fb956943c8", null ], + [ "SetGravity", "class_physics_system.html#ad09c12009bbcb0d0e6dbfd9582593be4", null ], + [ "SetPhysicsSettings", "class_physics_system.html#a2f81c29dfb88dd7e0711caffcd2ebc22", null ], + [ "SetSoftBodyContactListener", "class_physics_system.html#a3077d0538cb694338f8e466b9d36563c", null ], + [ "Update", "class_physics_system.html#a4cdc76b2486dfaecfc9319d040e5e5f3", null ], + [ "WereBodiesInContact", "class_physics_system.html#ad8f5849a90549504d9f1705c324a9a83", null ] +]; \ No newline at end of file diff --git a/class_physics_system.png b/class_physics_system.png new file mode 100644 index 000000000..f8b6cb8dd Binary files /dev/null and b/class_physics_system.png differ diff --git a/class_physics_system_1_1_bodies_to_sleep-members.html b/class_physics_system_1_1_bodies_to_sleep-members.html new file mode 100644 index 000000000..e43efc6f3 --- /dev/null +++ b/class_physics_system_1_1_bodies_to_sleep-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsSystem::BodiesToSleep Member List
+
+
+ +

This is the complete list of members for PhysicsSystem::BodiesToSleep, including all inherited members.

+ + + + + + + + + +
BodiesToSleep(BodyManager &inBodyManager, BodyID *inBodiesToSleepBuffer)PhysicsSystem::BodiesToSleepinline
cBodiesToSleepSizePhysicsSystem::BodiesToSleepstatic
cMaxBodiesToPutInBufferPhysicsSystem::BodiesToSleepstatic
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
PutToSleep(const BodyID *inBegin, const BodyID *inEnd)PhysicsSystem::BodiesToSleepinline
~BodiesToSleep()PhysicsSystem::BodiesToSleepinline
+
+ + + + diff --git a/class_physics_system_1_1_bodies_to_sleep.html b/class_physics_system_1_1_bodies_to_sleep.html new file mode 100644 index 000000000..f6d424906 --- /dev/null +++ b/class_physics_system_1_1_bodies_to_sleep.html @@ -0,0 +1,298 @@ + + + + + + + +Jolt Physics: PhysicsSystem::BodiesToSleep Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsSystem::BodiesToSleep Class Reference
+
+
+
+Inheritance diagram for PhysicsSystem::BodiesToSleep:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

 BodiesToSleep (BodyManager &inBodyManager, BodyID *inBodiesToSleepBuffer)
 
 ~BodiesToSleep ()
 
void PutToSleep (const BodyID *inBegin, const BodyID *inEnd)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + +

+Static Public Attributes

static constexpr int cBodiesToSleepSize = 512
 
static constexpr int cMaxBodiesToPutInBuffer = 128
 
+

Constructor & Destructor Documentation

+ +

◆ BodiesToSleep()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
PhysicsSystem::BodiesToSleep::BodiesToSleep (BodyManagerinBodyManager,
BodyIDinBodiesToSleepBuffer 
)
+
+inline
+
+ +
+
+ +

◆ ~BodiesToSleep()

+ +
+
+ + + + + +
+ + + + + + + +
PhysicsSystem::BodiesToSleep::~BodiesToSleep ()
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ PutToSleep()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void PhysicsSystem::BodiesToSleep::PutToSleep (const BodyIDinBegin,
const BodyIDinEnd 
)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ cBodiesToSleepSize

+ +
+
+ + + + + +
+ + + + +
constexpr int PhysicsSystem::BodiesToSleep::cBodiesToSleepSize = 512
+
+staticconstexpr
+
+ +
+
+ +

◆ cMaxBodiesToPutInBuffer

+ +
+
+ + + + + +
+ + + + +
constexpr int PhysicsSystem::BodiesToSleep::cMaxBodiesToPutInBuffer = 128
+
+staticconstexpr
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_physics_system_1_1_bodies_to_sleep.js b/class_physics_system_1_1_bodies_to_sleep.js new file mode 100644 index 000000000..f3ad7437d --- /dev/null +++ b/class_physics_system_1_1_bodies_to_sleep.js @@ -0,0 +1,6 @@ +var class_physics_system_1_1_bodies_to_sleep = +[ + [ "BodiesToSleep", "class_physics_system_1_1_bodies_to_sleep.html#af3da3598afb660ad1a21de8ba2467a5e", null ], + [ "~BodiesToSleep", "class_physics_system_1_1_bodies_to_sleep.html#a6bd0148a631571a8996661f4246a5c42", null ], + [ "PutToSleep", "class_physics_system_1_1_bodies_to_sleep.html#afe53f6626002783f517ee62f61160ba8", null ] +]; \ No newline at end of file diff --git a/class_physics_system_1_1_bodies_to_sleep.png b/class_physics_system_1_1_bodies_to_sleep.png new file mode 100644 index 000000000..273926c84 Binary files /dev/null and b/class_physics_system_1_1_bodies_to_sleep.png differ diff --git a/class_physics_update_context-members.html b/class_physics_update_context-members.html new file mode 100644 index 000000000..7b5d26b3a --- /dev/null +++ b/class_physics_update_context-members.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PhysicsUpdateContext Member List
+
+
+ +

This is the complete list of members for PhysicsUpdateContext, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
BodyPairQueues typedefPhysicsUpdateContext
cMaxConcurrencyPhysicsUpdateContextstatic
GetMaxConcurrency() constPhysicsUpdateContextinline
JobHandleArray typedefPhysicsUpdateContext
JobMask typedefPhysicsUpdateContext
mActiveConstraintsPhysicsUpdateContext
mBarrierPhysicsUpdateContext
mBodyPairsPhysicsUpdateContext
mErrorsPhysicsUpdateContext
mIslandBuilderPhysicsUpdateContext
mJobSystemPhysicsUpdateContext
mNumSoftBodiesPhysicsUpdateContext
mPhysicsSystemPhysicsUpdateContext
mSoftBodyToCollidePhysicsUpdateContext
mSoftBodyUpdateContextsPhysicsUpdateContext
mStepDeltaTimePhysicsUpdateContext
mStepsPhysicsUpdateContext
mTempAllocatorPhysicsUpdateContext
mWarmStartImpulseRatioPhysicsUpdateContext
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
PhysicsUpdateContext(TempAllocator &inTempAllocator)PhysicsUpdateContextexplicit
Steps typedefPhysicsUpdateContext
~PhysicsUpdateContext()PhysicsUpdateContext
+
+ + + + diff --git a/class_physics_update_context.html b/class_physics_update_context.html new file mode 100644 index 000000000..a588e5db4 --- /dev/null +++ b/class_physics_update_context.html @@ -0,0 +1,611 @@ + + + + + + + +Jolt Physics: PhysicsUpdateContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PhysicsUpdateContext Class Reference
+
+
+ +

Information used during the Update call. + More...

+ +

#include <PhysicsUpdateContext.h>

+
+Inheritance diagram for PhysicsUpdateContext:
+
+
+ + +NonCopyable + +
+ + + + + + + +

+Classes

struct  BodyPairQueue
 
struct  Step
 Structure that contains data needed for each collision step. More...
 
+ + + + + + + + + + +

+Public Types

using JobHandleArray = StaticArray< JobHandle, cMaxConcurrency >
 
using BodyPairQueues = StaticArray< BodyPairQueue, cMaxConcurrency >
 
using JobMask = uint32
 A mask that has as many bits as we can have concurrent jobs.
 
using Steps = Array< Step, STLTempAllocator< Step > >
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

 PhysicsUpdateContext (TempAllocator &inTempAllocator)
 Destructor.
 
 ~PhysicsUpdateContext ()
 
int GetMaxConcurrency () const
 Maximum amount of concurrent jobs on this machine.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

PhysicsSystemmPhysicsSystem
 The physics system we belong to.
 
TempAllocatormTempAllocator
 Temporary allocator used during the update.
 
JobSystemmJobSystem
 Job system that processes jobs.
 
JobSystem::BarriermBarrier
 Barrier used to wait for all physics jobs to complete.
 
float mStepDeltaTime
 Delta time for a simulation step (collision step)
 
float mWarmStartImpulseRatio
 Ratio of this step delta time vs last step.
 
atomic< uint32mErrors { 0 }
 Errors that occurred during the update, actual type is EPhysicsUpdateError.
 
Constraint ** mActiveConstraints = nullptr
 Constraints that were active at the start of the physics update step (activating bodies can activate constraints and we need a consistent snapshot). Only these constraints will be resolved.
 
BodyPairmBodyPairs = nullptr
 A list of body pairs found by the broadphase.
 
IslandBuildermIslandBuilder
 Keeps track of connected bodies and builds islands for multithreaded velocity/position update.
 
Steps mSteps
 
uint mNumSoftBodies
 Number of active soft bodies in the simulation.
 
SoftBodyUpdateContextmSoftBodyUpdateContexts = nullptr
 Contexts for updating soft bodies.
 
atomic< uintmSoftBodyToCollide { 0 }
 Next soft body to take when running SoftBodyCollide jobs.
 
+ + + + +

+Static Public Attributes

static constexpr int cMaxConcurrency = 32
 Maximum supported amount of concurrent jobs.
 
+

Detailed Description

+

Information used during the Update call.

+

Member Typedef Documentation

+ +

◆ BodyPairQueues

+ + + +

◆ JobHandleArray

+ + + +

◆ JobMask

+ +
+
+ +

A mask that has as many bits as we can have concurrent jobs.

+ +
+
+ +

◆ Steps

+ + +

Constructor & Destructor Documentation

+ +

◆ PhysicsUpdateContext()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_NAMESPACE_BEGIN PhysicsUpdateContext::PhysicsUpdateContext (TempAllocatorinTempAllocator)
+
+explicit
+
+ +

Destructor.

+ +
+
+ +

◆ ~PhysicsUpdateContext()

+ +
+
+ + + + + + + +
PhysicsUpdateContext::~PhysicsUpdateContext ()
+
+ +
+
+

Member Function Documentation

+ +

◆ GetMaxConcurrency()

+ +
+
+ + + + + +
+ + + + + + + +
int PhysicsUpdateContext::GetMaxConcurrency () const
+
+inline
+
+ +

Maximum amount of concurrent jobs on this machine.

+

Need to put max concurrency in temp var as min requires a reference

+ +
+
+

Member Data Documentation

+ +

◆ cMaxConcurrency

+ +
+
+ + + + + +
+ + + + +
constexpr int PhysicsUpdateContext::cMaxConcurrency = 32
+
+staticconstexpr
+
+ +

Maximum supported amount of concurrent jobs.

+ +
+
+ +

◆ mActiveConstraints

+ +
+
+ + + + +
Constraint** PhysicsUpdateContext::mActiveConstraints = nullptr
+
+ +

Constraints that were active at the start of the physics update step (activating bodies can activate constraints and we need a consistent snapshot). Only these constraints will be resolved.

+ +
+
+ +

◆ mBarrier

+ +
+
+ + + + +
JobSystem::Barrier* PhysicsUpdateContext::mBarrier
+
+ +

Barrier used to wait for all physics jobs to complete.

+ +
+
+ +

◆ mBodyPairs

+ +
+
+ + + + +
BodyPair* PhysicsUpdateContext::mBodyPairs = nullptr
+
+ +

A list of body pairs found by the broadphase.

+ +
+
+ +

◆ mErrors

+ +
+
+ + + + +
atomic<uint32> PhysicsUpdateContext::mErrors { 0 }
+
+ +

Errors that occurred during the update, actual type is EPhysicsUpdateError.

+ +
+
+ +

◆ mIslandBuilder

+ +
+
+ + + + +
IslandBuilder* PhysicsUpdateContext::mIslandBuilder
+
+ +

Keeps track of connected bodies and builds islands for multithreaded velocity/position update.

+ +
+
+ +

◆ mJobSystem

+ +
+
+ + + + +
JobSystem* PhysicsUpdateContext::mJobSystem
+
+ +

Job system that processes jobs.

+ +
+
+ +

◆ mNumSoftBodies

+ +
+
+ + + + +
uint PhysicsUpdateContext::mNumSoftBodies
+
+ +

Number of active soft bodies in the simulation.

+ +
+
+ +

◆ mPhysicsSystem

+ +
+
+ + + + +
PhysicsSystem* PhysicsUpdateContext::mPhysicsSystem
+
+ +

The physics system we belong to.

+ +
+
+ +

◆ mSoftBodyToCollide

+ +
+
+ + + + +
atomic<uint> PhysicsUpdateContext::mSoftBodyToCollide { 0 }
+
+ +

Next soft body to take when running SoftBodyCollide jobs.

+ +
+
+ +

◆ mSoftBodyUpdateContexts

+ +
+
+ + + + +
SoftBodyUpdateContext* PhysicsUpdateContext::mSoftBodyUpdateContexts = nullptr
+
+ +

Contexts for updating soft bodies.

+ +
+
+ +

◆ mStepDeltaTime

+ +
+
+ + + + +
float PhysicsUpdateContext::mStepDeltaTime
+
+ +

Delta time for a simulation step (collision step)

+ +
+
+ +

◆ mSteps

+ +
+
+ + + + +
Steps PhysicsUpdateContext::mSteps
+
+ +
+
+ +

◆ mTempAllocator

+ +
+
+ + + + +
TempAllocator* PhysicsUpdateContext::mTempAllocator
+
+ +

Temporary allocator used during the update.

+ +
+
+ +

◆ mWarmStartImpulseRatio

+ +
+
+ + + + +
float PhysicsUpdateContext::mWarmStartImpulseRatio
+
+ +

Ratio of this step delta time vs last step.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_physics_update_context.js b/class_physics_update_context.js new file mode 100644 index 000000000..cf57cff3d --- /dev/null +++ b/class_physics_update_context.js @@ -0,0 +1,26 @@ +var class_physics_update_context = +[ + [ "BodyPairQueue", "struct_physics_update_context_1_1_body_pair_queue.html", "struct_physics_update_context_1_1_body_pair_queue" ], + [ "Step", "struct_physics_update_context_1_1_step.html", "struct_physics_update_context_1_1_step" ], + [ "BodyPairQueues", "class_physics_update_context.html#a1a8cbbf5b9b0f8bf54cdd936b2a6516e", null ], + [ "JobHandleArray", "class_physics_update_context.html#abfb8bdd22591660d9452affe8a51ff43", null ], + [ "JobMask", "class_physics_update_context.html#a57722f8a1c879b71ae19337e61600b3d", null ], + [ "Steps", "class_physics_update_context.html#aa97b7e6fa45894cb5849705b921f03da", null ], + [ "PhysicsUpdateContext", "class_physics_update_context.html#a8214e323d04690550bc2380d827e4e36", null ], + [ "~PhysicsUpdateContext", "class_physics_update_context.html#a05bed2dc4226ffbf55b962da48ec1749", null ], + [ "GetMaxConcurrency", "class_physics_update_context.html#a26f629d14c71383b17923a0544158680", null ], + [ "mActiveConstraints", "class_physics_update_context.html#a06f3d5772169584520a19f7d85820206", null ], + [ "mBarrier", "class_physics_update_context.html#a26472dbbba0458cc803a6adda1d71b5f", null ], + [ "mBodyPairs", "class_physics_update_context.html#a8b9c15a6ef1a5072d539c18a45ae457f", null ], + [ "mErrors", "class_physics_update_context.html#a57bb8d85178c1a1082cfabed7334fa75", null ], + [ "mIslandBuilder", "class_physics_update_context.html#afa015c9ca2db6ffc71181cb809cdb30a", null ], + [ "mJobSystem", "class_physics_update_context.html#a736edcba88a4a7bd3bc37d417e317ed7", null ], + [ "mNumSoftBodies", "class_physics_update_context.html#adb6496db121f7c5e1248ae9688965f49", null ], + [ "mPhysicsSystem", "class_physics_update_context.html#a081d18872fcf446aa811f95c0d66b05c", null ], + [ "mSoftBodyToCollide", "class_physics_update_context.html#aafa3f183df8ebb23b0ac564402a383c0", null ], + [ "mSoftBodyUpdateContexts", "class_physics_update_context.html#a06ba290db66584bb880ebe95a26b67bf", null ], + [ "mStepDeltaTime", "class_physics_update_context.html#a2f93d5ea4f409db1b4fcb5e353093276", null ], + [ "mSteps", "class_physics_update_context.html#a28312d2f14f0c11540c28f7162f927ce", null ], + [ "mTempAllocator", "class_physics_update_context.html#a849d877684ec2ecc251defcfe8c62e91", null ], + [ "mWarmStartImpulseRatio", "class_physics_update_context.html#a52d38e3dd5e6fbe7beb3a90b4ea27e1f", null ] +]; \ No newline at end of file diff --git a/class_physics_update_context.png b/class_physics_update_context.png new file mode 100644 index 000000000..c482fef27 Binary files /dev/null and b/class_physics_update_context.png differ diff --git a/class_plane-members.html b/class_plane-members.html new file mode 100644 index 000000000..5648b3a44 --- /dev/null +++ b/class_plane-members.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Plane Member List
+
+
+ +

This is the complete list of members for Plane, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
CreateRTTIPlanePlanefriend
GetConstant() constPlaneinline
GetNormal() constPlaneinline
GetTransformed(Mat44Arg inTransform) constPlaneinline
Offset(float inDistance) constPlaneinline
Plane()=defaultPlane
Plane(Vec4Arg inNormalAndConstant)Planeinlineexplicit
Plane(Vec3Arg inNormal, float inConstant)Planeinline
ProjectPointOnPlane(Vec3Arg inPoint) constPlaneinline
Scaled(Vec3Arg inScale) constPlaneinline
SetConstant(float inConstant)Planeinline
SetNormal(Vec3Arg inNormal)Planeinline
sFromPointAndNormal(Vec3Arg inPoint, Vec3Arg inNormal)Planeinlinestatic
sFromPointAndNormal(DVec3Arg inPoint, Vec3Arg inNormal)Planeinlinestatic
sFromPointsCCW(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3)Planeinlinestatic
SignedDistance(Vec3Arg inPoint) constPlaneinline
sIntersectPlanes(const Plane &inP1, const Plane &inP2, const Plane &inP3, Vec3 &outPoint)Planeinlinestatic
+
+ + + + diff --git a/class_plane.html b/class_plane.html new file mode 100644 index 000000000..685a2db5a --- /dev/null +++ b/class_plane.html @@ -0,0 +1,713 @@ + + + + + + + +Jolt Physics: Plane Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Plane Class Reference
+
+
+ +

An infinite plane described by the formula X . Normal + Constant = 0. + More...

+ +

#include <Plane.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Plane ()=default
 Constructor.
 
 Plane (Vec4Arg inNormalAndConstant)
 
 Plane (Vec3Arg inNormal, float inConstant)
 
Vec3 GetNormal () const
 
void SetNormal (Vec3Arg inNormal)
 
float GetConstant () const
 
void SetConstant (float inConstant)
 
Plane Offset (float inDistance) const
 Offset the plane (positive value means move it in the direction of the plane normal)
 
Plane GetTransformed (Mat44Arg inTransform) const
 Transform the plane by a matrix.
 
Plane Scaled (Vec3Arg inScale) const
 Scale the plane, can handle non-uniform and negative scaling.
 
float SignedDistance (Vec3Arg inPoint) const
 Distance point to plane.
 
Vec3 ProjectPointOnPlane (Vec3Arg inPoint) const
 Project inPoint onto the plane.
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

static Plane sFromPointAndNormal (Vec3Arg inPoint, Vec3Arg inNormal)
 Create from point and normal.
 
static Plane sFromPointAndNormal (DVec3Arg inPoint, Vec3Arg inNormal)
 Create from point and normal, double precision version that more accurately calculates the plane constant.
 
static Plane sFromPointsCCW (Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3)
 Create from 3 counter clockwise points.
 
static bool sIntersectPlanes (const Plane &inP1, const Plane &inP2, const Plane &inP3, Vec3 &outPoint)
 Returns intersection point between 3 planes.
 
+ + + +

+Friends

void CreateRTTIPlane (class RTTI &)
 
+

Detailed Description

+

An infinite plane described by the formula X . Normal + Constant = 0.

+

Constructor & Destructor Documentation

+ +

◆ Plane() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE Plane::Plane ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ Plane() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
Plane::Plane (Vec4Arg inNormalAndConstant)
+
+inlineexplicit
+
+ +
+
+ +

◆ Plane() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Plane::Plane (Vec3Arg inNormal,
float inConstant 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConstant()

+ +
+
+ + + + + +
+ + + + + + + +
float Plane::GetConstant () const
+
+inline
+
+ +
+
+ +

◆ GetNormal()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Plane::GetNormal () const
+
+inline
+
+ +
+
+ +

◆ GetTransformed()

+ +
+
+ + + + + +
+ + + + + + + + +
Plane Plane::GetTransformed (Mat44Arg inTransform) const
+
+inline
+
+ +

Transform the plane by a matrix.

+ +
+
+ +

◆ Offset()

+ +
+
+ + + + + +
+ + + + + + + + +
Plane Plane::Offset (float inDistance) const
+
+inline
+
+ +

Offset the plane (positive value means move it in the direction of the plane normal)

+ +
+
+ +

◆ ProjectPointOnPlane()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 Plane::ProjectPointOnPlane (Vec3Arg inPoint) const
+
+inline
+
+ +

Project inPoint onto the plane.

+ +
+
+ +

◆ Scaled()

+ +
+
+ + + + + +
+ + + + + + + + +
Plane Plane::Scaled (Vec3Arg inScale) const
+
+inline
+
+ +

Scale the plane, can handle non-uniform and negative scaling.

+ +
+
+ +

◆ SetConstant()

+ +
+
+ + + + + +
+ + + + + + + + +
void Plane::SetConstant (float inConstant)
+
+inline
+
+ +
+
+ +

◆ SetNormal()

+ +
+
+ + + + + +
+ + + + + + + + +
void Plane::SetNormal (Vec3Arg inNormal)
+
+inline
+
+ +
+
+ +

◆ sFromPointAndNormal() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Plane Plane::sFromPointAndNormal (DVec3Arg inPoint,
Vec3Arg inNormal 
)
+
+inlinestatic
+
+ +

Create from point and normal, double precision version that more accurately calculates the plane constant.

+ +
+
+ +

◆ sFromPointAndNormal() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Plane Plane::sFromPointAndNormal (Vec3Arg inPoint,
Vec3Arg inNormal 
)
+
+inlinestatic
+
+ +

Create from point and normal.

+ +
+
+ +

◆ sFromPointsCCW()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static Plane Plane::sFromPointsCCW (Vec3Arg inV1,
Vec3Arg inV2,
Vec3Arg inV3 
)
+
+inlinestatic
+
+ +

Create from 3 counter clockwise points.

+ +
+
+ +

◆ SignedDistance()

+ +
+
+ + + + + +
+ + + + + + + + +
float Plane::SignedDistance (Vec3Arg inPoint) const
+
+inline
+
+ +

Distance point to plane.

+ +
+
+ +

◆ sIntersectPlanes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static bool Plane::sIntersectPlanes (const PlaneinP1,
const PlaneinP2,
const PlaneinP3,
Vec3outPoint 
)
+
+inlinestatic
+
+ +

Returns intersection point between 3 planes.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ CreateRTTIPlane

+ +
+
+ + + + + +
+ + + + + + + + +
void CreateRTTIPlane (class RTTI)
+
+friend
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_plane.js b/class_plane.js new file mode 100644 index 000000000..da4659131 --- /dev/null +++ b/class_plane.js @@ -0,0 +1,16 @@ +var class_plane = +[ + [ "Plane", "class_plane.html#ac7a2eaef6e334fba41a0ac6ab7a97a6e", null ], + [ "Plane", "class_plane.html#a71ec3665a225eda8f201e30fa2ee5544", null ], + [ "Plane", "class_plane.html#a06bce37f1586abd31ea5c2863f5ff2a3", null ], + [ "GetConstant", "class_plane.html#a3510818ed64a5d821041da28102fc4d1", null ], + [ "GetNormal", "class_plane.html#a70e66a46d4eb8b334c929ad71c48ba42", null ], + [ "GetTransformed", "class_plane.html#a23c3f6c2eaf6344447cb5e0a8a52d63d", null ], + [ "Offset", "class_plane.html#adce0e2bf9f6e85a2788ede7adfbe031d", null ], + [ "ProjectPointOnPlane", "class_plane.html#af35d1f676dc5be67464deaed71c883f0", null ], + [ "Scaled", "class_plane.html#ac4f910a7761fd54f014a193b4d53dfb6", null ], + [ "SetConstant", "class_plane.html#a25c2359dcb8d679f5730ff10119cba45", null ], + [ "SetNormal", "class_plane.html#aa792e95ef15c14271bdf9c1d43c85d90", null ], + [ "SignedDistance", "class_plane.html#a96f5ba7b329fcccd22eaa63a7e282605", null ], + [ "CreateRTTIPlane", "class_plane.html#a20fe6b1c13e76385b9ea63d022cc1c89", null ] +]; \ No newline at end of file diff --git a/class_plane_shape-members.html b/class_plane_shape-members.html new file mode 100644 index 000000000..99e99d0a7 --- /dev/null +++ b/class_plane_shape-members.html @@ -0,0 +1,196 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PlaneShape Member List
+
+
+ +

This is the complete list of members for PlaneShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overridePlaneShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overridePlaneShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overridePlaneShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overridePlaneShapevirtual
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overridePlaneShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) constShapeinlinevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetCenterOfMass() constShapeinlinevirtual
GetHalfExtent() constPlaneShapeinline
GetInnerRadius() const overridePlaneShapeinlinevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const overridePlaneShapeinlinevirtual
GetMassProperties() const overridePlaneShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overridePlaneShapeinlinevirtual
GetPlane() constPlaneShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overridePlaneShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overridePlaneShapeinlinevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overridePlaneShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overridePlaneShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overridePlaneShapeinlinevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overridePlaneShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overridePlaneShapevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overridePlaneShapeinlinevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) constShapevirtual
MakeScaleValid(Vec3Arg inScale) constShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() const overridePlaneShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PlaneShape()PlaneShapeinline
PlaneShape(const Plane &inPlane, const PhysicsMaterial *inMaterial=nullptr, float inHalfExtent=PlaneShapeSettings::cDefaultHalfExtent)PlaneShapeinline
PlaneShape(const PlaneShapeSettings &inSettings, ShapeResult &outResult)PlaneShape
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overridePlaneShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) overridePlaneShapevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) const overridePlaneShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) const overridePlaneShapevirtual
Shape::SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetEmbedded() constRefTarget< Shape >inline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()PlaneShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_plane_shape.html b/class_plane_shape.html new file mode 100644 index 000000000..c943cbfcb --- /dev/null +++ b/class_plane_shape.html @@ -0,0 +1,1472 @@ + + + + + + + +Jolt Physics: PlaneShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PlaneShape Class Referencefinal
+
+
+ +

#include <PlaneShape.h>

+
+Inheritance diagram for PlaneShape:
+
+
+ + +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + +

+Classes

struct  PSGetTrianglesContext
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE PlaneShape ()
 Constructor.
 
 PlaneShape (const Plane &inPlane, const PhysicsMaterial *inMaterial=nullptr, float inHalfExtent=PlaneShapeSettings::cDefaultHalfExtent)
 
 PlaneShape (const PlaneShapeSettings &inSettings, ShapeResult &outResult)
 
const PlaneGetPlane () const
 Get the plane.
 
float GetHalfExtent () const
 Get the half-extent of the bounding box of the plane.
 
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.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const override
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual Vec3 GetCenterOfMass () const
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual bool IsValidScale (Vec3Arg inScale) const
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A plane shape. The negative half space is considered solid. Planes cannot be dynamic objects, only static or kinematic. The plane is considered an infinite shape, but testing collision outside of its bounding box (defined by the half-extent parameter) will not return a collision result. At the edge of the bounding box collision with the plane will be inconsistent. If you need something of a well defined size, a box shape may be better.

+

Constructor & Destructor Documentation

+ +

◆ PlaneShape() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE PlaneShape::PlaneShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ PlaneShape() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
PlaneShape::PlaneShape (const PlaneinPlane,
const PhysicsMaterialinMaterial = nullptr,
float inHalfExtent = PlaneShapeSettings::cDefaultHalfExtent 
)
+
+inline
+
+ +
+
+ +

◆ PlaneShape() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
PlaneShape::PlaneShape (const PlaneShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PlaneShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PlaneShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PlaneShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Implements Shape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PlaneShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PlaneShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ GetHalfExtent()

+ +
+
+ + + + + +
+ + + + + + + +
float PlaneShape::GetHalfExtent () const
+
+inline
+
+ +

Get the half-extent of the bounding box of the plane.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float PlaneShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
virtual AABox PlaneShape::GetLocalBounds () const
+
+inlineoverridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties PlaneShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMaterial()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual const PhysicsMaterial * PlaneShape::GetMaterial (const SubShapeIDinSubShapeID) const
+
+inlineoverridevirtual
+
+ +

Get the material assigned to a particular sub shape ID.

+ +

Implements Shape.

+ +
+
+ +

◆ GetPlane()

+ +
+
+ + + + + +
+ + + + + + + +
const Plane & PlaneShape::GetPlane () const
+
+inline
+
+ +

Get the plane.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats PlaneShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void PlaneShape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3 &outCenterOfBuoyancy  JPH_IF_DEBUG_RENDERER, RVec3Arg inBaseOffset 
) const
+
+inlineoverridevirtual
+
+ +
+
+ +

◆ GetSubShapeIDBitsRecursive()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint PlaneShape::GetSubShapeIDBitsRecursive () const
+
+inlineoverridevirtual
+
+ +

Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PlaneShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Vec3 PlaneShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+inlineoverridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int PlaneShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+overridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PlaneShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Implements Shape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float PlaneShape::GetVolume () const
+
+inlineoverridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ MustBeStatic()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool PlaneShape::MustBeStatic () const
+
+inlineoverridevirtual
+
+ +

Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PlaneShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreMaterialState()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void PlaneShape::RestoreMaterialState (const PhysicsMaterialRefCinMaterials,
uint inNumMaterials 
)
+
+overridevirtual
+
+ +

Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PlaneShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SaveMaterialState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PlaneShape::SaveMaterialState (PhysicsMaterialListoutMaterials) const
+
+overridevirtual
+
+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void PlaneShape::sRegister ()
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_plane_shape.js b/class_plane_shape.js new file mode 100644 index 000000000..d59442aa6 --- /dev/null +++ b/class_plane_shape.js @@ -0,0 +1,31 @@ +var class_plane_shape = +[ + [ "PSGetTrianglesContext", "struct_plane_shape_1_1_p_s_get_triangles_context.html", "struct_plane_shape_1_1_p_s_get_triangles_context" ], + [ "PlaneShape", "class_plane_shape.html#a99f8e798035cc6a1c119da0b4dee7593", null ], + [ "PlaneShape", "class_plane_shape.html#a51e5e0eeb6bfa3df2b63bd44589b3ad5", null ], + [ "PlaneShape", "class_plane_shape.html#ace32775da4269f016475372eef4e7e21", null ], + [ "CastRay", "class_plane_shape.html#aa1ba28d2a8910ea410a5bc0a27762179", null ], + [ "CastRay", "class_plane_shape.html#a3bab1a182a2fcf42c0e76a2f3842c208", null ], + [ "CollidePoint", "class_plane_shape.html#a1c5ada52854f738733c1820abd848888", null ], + [ "CollideSoftBodyVertices", "class_plane_shape.html#a87873f0ba100b55cd2f53e4edd4873ae", null ], + [ "Draw", "class_plane_shape.html#a22d45c2285a901e1334383ea4ee3a19b", null ], + [ "GetHalfExtent", "class_plane_shape.html#a964fc4a57ddf2bea8c52ea18e4b4e7f0", null ], + [ "GetInnerRadius", "class_plane_shape.html#acf2b5b3f2bf76cb25f19cfd254992c6f", null ], + [ "GetLocalBounds", "class_plane_shape.html#a6e50ca0c9466229d8a15275bde03c2e0", null ], + [ "GetMassProperties", "class_plane_shape.html#a079aa97d19c887ae416439fcbd55388d", null ], + [ "GetMaterial", "class_plane_shape.html#ab0b17f6459d40f97980bcf004eff5cdb", null ], + [ "GetPlane", "class_plane_shape.html#a036800bdcab80d0612d530a1fef3de7e", null ], + [ "GetStats", "class_plane_shape.html#a8a1251dffea8135e57a8863160d49828", null ], + [ "GetSubmergedVolume", "class_plane_shape.html#a270b08b26cc533e7cfb04ca85f5abaff", null ], + [ "GetSubShapeIDBitsRecursive", "class_plane_shape.html#af2df250d4d28fd2efe1f432126b15d2d", null ], + [ "GetSupportingFace", "class_plane_shape.html#acb01f52337cecc64b73cff24348b0b47", null ], + [ "GetSurfaceNormal", "class_plane_shape.html#a5a720f71f09b5c2cecb0c45b3cb0d571", null ], + [ "GetTrianglesNext", "class_plane_shape.html#a87e30ad80dcbb0987323b236e85d02a6", null ], + [ "GetTrianglesStart", "class_plane_shape.html#a1f75622c86ebecaf63bde5430b00eb55", null ], + [ "GetVolume", "class_plane_shape.html#a401cd22b9f6fbc2f79d565f4e8eb33ba", null ], + [ "MustBeStatic", "class_plane_shape.html#ad42d77da7871ee1b6658faffeae0b93a", null ], + [ "RestoreBinaryState", "class_plane_shape.html#aeb64b45f1ef04065f2e41cfed2f0d662", null ], + [ "RestoreMaterialState", "class_plane_shape.html#a50ce02e27f33e0632a2f63c3fb56fbb2", null ], + [ "SaveBinaryState", "class_plane_shape.html#aa43b150c8cb52005c60a2a2f3c97dffe", null ], + [ "SaveMaterialState", "class_plane_shape.html#a6da289fe4c65f80b912ff843493a0c31", null ] +]; \ No newline at end of file diff --git a/class_plane_shape.png b/class_plane_shape.png new file mode 100644 index 000000000..1e6d0d7c7 Binary files /dev/null and b/class_plane_shape.png differ diff --git a/class_plane_shape_settings-members.html b/class_plane_shape_settings-members.html new file mode 100644 index 000000000..0a12f48a7 --- /dev/null +++ b/class_plane_shape_settings-members.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PlaneShapeSettings Member List
+
+
+ +

This is the complete list of members for PlaneShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cDefaultHalfExtentPlaneShapeSettingsstatic
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
Create() const overridePlaneShapeSettingsvirtual
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mHalfExtentPlaneShapeSettings
mMaterialPlaneShapeSettings
mPlanePlaneShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
PlaneShapeSettings()=defaultPlaneShapeSettings
PlaneShapeSettings(const Plane &inPlane, const PhysicsMaterial *inMaterial=nullptr, float inHalfExtent=cDefaultHalfExtent)PlaneShapeSettingsinline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_plane_shape_settings.html b/class_plane_shape_settings.html new file mode 100644 index 000000000..6aa360add --- /dev/null +++ b/class_plane_shape_settings.html @@ -0,0 +1,409 @@ + + + + + + + +Jolt Physics: PlaneShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PlaneShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a PlaneShape. + More...

+ +

#include <PlaneShape.h>

+
+Inheritance diagram for PlaneShapeSettings:
+
+
+ + +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PlaneShapeSettings ()=default
 Default constructor for deserialization.
 
 PlaneShapeSettings (const Plane &inPlane, const PhysicsMaterial *inMaterial=nullptr, float inHalfExtent=cDefaultHalfExtent)
 Create a plane shape.
 
virtual ShapeResult Create () const override
 Create a shape according to the settings specified by this object.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + +

+Public Attributes

Plane mPlane
 Plane that describes the shape. The negative half space is considered solid.
 
RefConst< PhysicsMaterialmMaterial
 Surface material of the plane.
 
float mHalfExtent = cDefaultHalfExtent
 The bounding box of this plane will run from [-half_extent, half_extent]. Keep this as low as possible for better broad phase performance.
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + +

+Static Public Attributes

static constexpr float cDefaultHalfExtent = 1000.0f
 Default half-extent of the plane (total size along 1 axis will be 2 * half-extent)
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a PlaneShape.

+

Constructor & Destructor Documentation

+ +

◆ PlaneShapeSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
PlaneShapeSettings::PlaneShapeSettings ()
+
+default
+
+ +

Default constructor for deserialization.

+ +
+
+ +

◆ PlaneShapeSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
PlaneShapeSettings::PlaneShapeSettings (const PlaneinPlane,
const PhysicsMaterialinMaterial = nullptr,
float inHalfExtent = cDefaultHalfExtent 
)
+
+inline
+
+ +

Create a plane shape.

+ +
+
+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + +
ShapeSettings::ShapeResult PlaneShapeSettings::Create () const
+
+overridevirtual
+
+ +

Create a shape according to the settings specified by this object.

+ +

Implements ShapeSettings.

+ +
+
+

Member Data Documentation

+ +

◆ cDefaultHalfExtent

+ +
+
+ + + + + +
+ + + + +
constexpr float PlaneShapeSettings::cDefaultHalfExtent = 1000.0f
+
+staticconstexpr
+
+ +

Default half-extent of the plane (total size along 1 axis will be 2 * half-extent)

+ +
+
+ +

◆ mHalfExtent

+ +
+
+ + + + +
float PlaneShapeSettings::mHalfExtent = cDefaultHalfExtent
+
+ +

The bounding box of this plane will run from [-half_extent, half_extent]. Keep this as low as possible for better broad phase performance.

+ +
+
+ +

◆ mMaterial

+ +
+
+ + + + +
RefConst<PhysicsMaterial> PlaneShapeSettings::mMaterial
+
+ +

Surface material of the plane.

+ +
+
+ +

◆ mPlane

+ +
+
+ + + + +
Plane PlaneShapeSettings::mPlane
+
+ +

Plane that describes the shape. The negative half space is considered solid.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_plane_shape_settings.js b/class_plane_shape_settings.js new file mode 100644 index 000000000..b1f46acbc --- /dev/null +++ b/class_plane_shape_settings.js @@ -0,0 +1,9 @@ +var class_plane_shape_settings = +[ + [ "PlaneShapeSettings", "class_plane_shape_settings.html#a666082ced89b84d2f8dcf2a3df7de6de", null ], + [ "PlaneShapeSettings", "class_plane_shape_settings.html#a33dae2d759e796b2d454711b37da6730", null ], + [ "Create", "class_plane_shape_settings.html#a988344346e7e5bf5253ea56c7b79ee59", null ], + [ "mHalfExtent", "class_plane_shape_settings.html#a3a23d6998fdb06983bfeb395a366c88c", null ], + [ "mMaterial", "class_plane_shape_settings.html#a40e64ab3f0d0a8079c57af69298873e8", null ], + [ "mPlane", "class_plane_shape_settings.html#a0eb3d51eb7d3aaf41d1156f138f3cfb6", null ] +]; \ No newline at end of file diff --git a/class_plane_shape_settings.png b/class_plane_shape_settings.png new file mode 100644 index 000000000..06dfe7a77 Binary files /dev/null and b/class_plane_shape_settings.png differ diff --git a/class_point_constraint-members.html b/class_point_constraint-members.html new file mode 100644 index 000000000..0f356719d --- /dev/null +++ b/class_point_constraint-members.html @@ -0,0 +1,176 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PointConstraint Member List
+
+
+ +

This is the complete list of members for PointConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const overridePointConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) constConstraintinlinevirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overridePointConstraintvirtual
GetConstraintToBody1Matrix() const overridePointConstraintinlinevirtual
GetConstraintToBody2Matrix() const overridePointConstraintinlinevirtual
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetLocalSpacePoint1() constPointConstraintinline
GetLocalSpacePoint2() constPointConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const overridePointConstraintinlinevirtual
GetTotalLambdaPosition() constPointConstraintinline
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
IsActive() const overrideTwoBodyConstraintinlinevirtual
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overridePointConstraintvirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PointConstraint(Body &inBody1, Body &inBody2, const PointConstraintSettings &inSettings)PointConstraint
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart() overridePointConstraintvirtual
RestoreState(StateRecorder &inStream) overridePointConstraintvirtual
SaveState(StateRecorder &inStream) const overridePointConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetPoint1(EConstraintSpace inSpace, RVec3Arg inPoint1)PointConstraint
SetPoint2(EConstraintSpace inSpace, RVec3Arg inPoint2)PointConstraint
SetupVelocityConstraint(float inDeltaTime) overridePointConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overridePointConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overridePointConstraintvirtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overridePointConstraintvirtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_point_constraint.html b/class_point_constraint.html new file mode 100644 index 000000000..ccef5efc4 --- /dev/null +++ b/class_point_constraint.html @@ -0,0 +1,890 @@ + + + + + + + +Jolt Physics: PointConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PointConstraint Class Referencefinal
+
+
+ +

A point constraint constrains 2 bodies on a single point (removing 3 degrees of freedom) + More...

+ +

#include <PointConstraint.h>

+
+Inheritance diagram for PointConstraint:
+
+
+ + +TwoBodyConstraint +Constraint +RefTarget< Constraint > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE PointConstraint (Body &inBody1, Body &inBody2, const PointConstraintSettings &inSettings)
 Construct point constraint.
 
virtual EConstraintSubType GetSubType () const override
 Get the sub type of a constraint.
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
void SetPoint1 (EConstraintSpace inSpace, RVec3Arg inPoint1)
 Update the attachment point for body 1.
 
void SetPoint2 (EConstraintSpace inSpace, RVec3Arg inPoint2)
 Update the attachment point for body 2.
 
Vec3 GetLocalSpacePoint1 () const
 Get the attachment point for body 1 relative to body 1 COM (transform by Body::GetCenterOfMassTransform to take to world space)
 
Vec3 GetLocalSpacePoint2 () const
 Get the attachment point for body 2 relative to body 2 COM (transform by Body::GetCenterOfMassTransform to take to world space)
 
virtual Mat44 GetConstraintToBody1Matrix () const override
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const override
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
- Public Member Functions inherited from TwoBodyConstraint
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + +

Get Lagrange multiplier from last physics update (the linear impulse applied to satisfy the constraint)

Vec3 GetTotalLambdaPosition () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from TwoBodyConstraint
BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A point constraint constrains 2 bodies on a single point (removing 3 degrees of freedom)

+

Constructor & Destructor Documentation

+ +

◆ PointConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PointConstraint::PointConstraint (BodyinBody1,
BodyinBody2,
const PointConstraintSettingsinSettings 
)
+
+ +

Construct point constraint.

+ +
+
+

Member Function Documentation

+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void PointConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > PointConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 PointConstraint::GetConstraintToBody1Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 PointConstraint::GetConstraintToBody2Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetLocalSpacePoint1()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 PointConstraint::GetLocalSpacePoint1 () const
+
+inline
+
+ +

Get the attachment point for body 1 relative to body 1 COM (transform by Body::GetCenterOfMassTransform to take to world space)

+ +
+
+ +

◆ GetLocalSpacePoint2()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 PointConstraint::GetLocalSpacePoint2 () const
+
+inline
+
+ +

Get the attachment point for body 2 relative to body 2 COM (transform by Body::GetCenterOfMassTransform to take to world space)

+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType PointConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Get the sub type of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetTotalLambdaPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 PointConstraint::GetTotalLambdaPosition () const
+
+inline
+
+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void PointConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+overridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void PointConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PointConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PointConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetPoint1()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PointConstraint::SetPoint1 (EConstraintSpace inSpace,
RVec3Arg inPoint1 
)
+
+ +

Update the attachment point for body 1.

+ +
+
+ +

◆ SetPoint2()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PointConstraint::SetPoint2 (EConstraintSpace inSpace,
RVec3Arg inPoint2 
)
+
+ +

Update the attachment point for body 2.

+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void PointConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool PointConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool PointConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void PointConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_point_constraint.js b/class_point_constraint.js new file mode 100644 index 000000000..eaa499395 --- /dev/null +++ b/class_point_constraint.js @@ -0,0 +1,22 @@ +var class_point_constraint = +[ + [ "PointConstraint", "class_point_constraint.html#ad9271852e82f6d2e67648c51a6e7c9ee", null ], + [ "DrawConstraint", "class_point_constraint.html#ab49bd368d3d5042348299f4bf76dd6d7", null ], + [ "GetConstraintSettings", "class_point_constraint.html#a8214c8380eabc71845572309a3f49f53", null ], + [ "GetConstraintToBody1Matrix", "class_point_constraint.html#a11b6acce9456cc5d0c2f34ecaf224f30", null ], + [ "GetConstraintToBody2Matrix", "class_point_constraint.html#a03ec92ce018cfae4900a11ac65032988", null ], + [ "GetLocalSpacePoint1", "class_point_constraint.html#a8fcc860c0b8ee43e08d599d8c3aaa3cd", null ], + [ "GetLocalSpacePoint2", "class_point_constraint.html#aec29f6eef0cbafd0b0f9a97caa50b83a", null ], + [ "GetSubType", "class_point_constraint.html#a0993bfa066a32b159d45cf54b346163f", null ], + [ "GetTotalLambdaPosition", "class_point_constraint.html#a393464647f68f5dbfcdb034b00d4b1d1", null ], + [ "NotifyShapeChanged", "class_point_constraint.html#a988ec795ba7e071d1cd256afc5edd6cf", null ], + [ "ResetWarmStart", "class_point_constraint.html#acca5a66c0b39fad225a1fb938e96a4e5", null ], + [ "RestoreState", "class_point_constraint.html#a69f08d8239b0202d27429f0ca15de580", null ], + [ "SaveState", "class_point_constraint.html#aa6743d4f861f34b303b5bddadb3157d9", null ], + [ "SetPoint1", "class_point_constraint.html#aa6ac6b94199f9b28b59a0e2c1a07c85d", null ], + [ "SetPoint2", "class_point_constraint.html#a2f6aa496e61f2bf9e6cc4a11cde0159b", null ], + [ "SetupVelocityConstraint", "class_point_constraint.html#a0c951929290c4069a5489beaf3b11c3c", null ], + [ "SolvePositionConstraint", "class_point_constraint.html#aac96ad33ba2e2218f72333a54580ab70", null ], + [ "SolveVelocityConstraint", "class_point_constraint.html#a341bc9c8983b9988ec60e166caed0afe", null ], + [ "WarmStartVelocityConstraint", "class_point_constraint.html#a51737835feb28bf1f774976ba3fabf5d", null ] +]; \ No newline at end of file diff --git a/class_point_constraint.png b/class_point_constraint.png new file mode 100644 index 000000000..39244be27 Binary files /dev/null and b/class_point_constraint.png differ diff --git a/class_point_constraint_part-members.html b/class_point_constraint_part-members.html new file mode 100644 index 000000000..d9f37fd8c --- /dev/null +++ b/class_point_constraint_part-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PointConstraintPart Member List
+
+
+ +

This is the complete list of members for PointConstraintPart, including all inherited members.

+ + + + + + + + + + +
CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inR1, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inR2)PointConstraintPartinline
Deactivate()PointConstraintPartinline
GetTotalLambda() constPointConstraintPartinline
IsActive() constPointConstraintPartinline
RestoreState(StateRecorder &inStream)PointConstraintPartinline
SaveState(StateRecorder &inStream) constPointConstraintPartinline
SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inBaumgarte) constPointConstraintPartinline
SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)PointConstraintPartinline
WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)PointConstraintPartinline
+
+ + + + diff --git a/class_point_constraint_part.html b/class_point_constraint_part.html new file mode 100644 index 000000000..4a1bf4fe7 --- /dev/null +++ b/class_point_constraint_part.html @@ -0,0 +1,528 @@ + + + + + + + +Jolt Physics: PointConstraintPart Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PointConstraintPart Class Reference
+
+
+ +

#include <PointConstraintPart.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void CalculateConstraintProperties (const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inR1, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inR2)
 
void Deactivate ()
 Deactivate this constraint.
 
bool IsActive () const
 Check if constraint is active.
 
void WarmStart (Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
 
bool SolveVelocityConstraint (Body &ioBody1, Body &ioBody2)
 
bool SolvePositionConstraint (Body &ioBody1, Body &ioBody2, float inBaumgarte) const
 
Vec3 GetTotalLambda () const
 Return lagrange multiplier.
 
void SaveState (StateRecorder &inStream) const
 Save state of this constraint part.
 
void RestoreState (StateRecorder &inStream)
 Restore state of this constraint part.
 
+

Detailed Description

+

Constrains movement along 3 axis

+
See also
"Constraints Derivation for Rigid Body Simulation in 3D" - Daniel Chappuis, section 2.2.1
+

Constraint equation (eq 45):

+

+\[C = p_2 - p_1\] +

+

Jacobian (transposed) (eq 47):

+

+\[J^T = \begin{bmatrix}-E & r1x & E & -r2x^T\end{bmatrix} += \begin{bmatrix}-E^T \\ r1x^T \\ E^T \\ -r2x^T\end{bmatrix} += \begin{bmatrix}-E \\ -r1x \\ E \\ r2x\end{bmatrix}\] +

+

Used terms (here and below, everything in world space):
+p1, p2 = constraint points.
+r1 = p1 - x1.
+r2 = p2 - x2.
+r1x = 3x3 matrix for which r1x v = r1 x v (cross product).
+x1, x2 = center of mass for the bodies.
+v = [v1, w1, v2, w2].
+v1, v2 = linear velocity of body 1 and 2.
+w1, w2 = angular velocity of body 1 and 2.
+M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].
+ \(K^{-1} = \left( J M^{-1} J^T \right)^{-1}\) = effective mass.
+b = velocity bias.
+ \(\beta\) = baumgarte constant.
+E = identity matrix.

+

Member Function Documentation

+ +

◆ CalculateConstraintProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void PointConstraintPart::CalculateConstraintProperties (const BodyinBody1,
Mat44Arg inRotation1,
Vec3Arg inR1,
const BodyinBody2,
Mat44Arg inRotation2,
Vec3Arg inR2 
)
+
+inline
+
+

Calculate properties used during the functions below

Parameters
+ + + + + + + +
inBody1The first body that this constraint is attached to
inBody2The second body that this constraint is attached to
inRotation1The 3x3 rotation matrix for body 1 (translation part is ignored)
inRotation2The 3x3 rotation matrix for body 2 (translation part is ignored)
inR1Local space vector from center of mass to constraint point for body 1
inR2Local space vector from center of mass to constraint point for body 2
+
+
+ +
+
+ +

◆ Deactivate()

+ +
+
+ + + + + +
+ + + + + + + +
void PointConstraintPart::Deactivate ()
+
+inline
+
+ +

Deactivate this constraint.

+ +
+
+ +

◆ GetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 PointConstraintPart::GetTotalLambda () const
+
+inline
+
+ +

Return lagrange multiplier.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool PointConstraintPart::IsActive () const
+
+inline
+
+ +

Check if constraint is active.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PointConstraintPart::RestoreState (StateRecorderinStream)
+
+inline
+
+ +

Restore state of this constraint part.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PointConstraintPart::SaveState (StateRecorderinStream) const
+
+inline
+
+ +

Save state of this constraint part.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool PointConstraintPart::SolvePositionConstraint (BodyioBody1,
BodyioBody2,
float inBaumgarte 
) const
+
+inline
+
+

Iteratively update the position constraint. Makes sure C(...) = 0.

Parameters
+ + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inBaumgarteBaumgarte constant (fraction of the error to correct)
+
+
+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool PointConstraintPart::SolveVelocityConstraint (BodyioBody1,
BodyioBody2 
)
+
+inline
+
+

Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.

Parameters
+ + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
+
+
+ +
+
+ +

◆ WarmStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void PointConstraintPart::WarmStart (BodyioBody1,
BodyioBody2,
float inWarmStartImpulseRatio 
)
+
+inline
+
+

Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses

Parameters
+ + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inWarmStartImpulseRatioRatio of new step to old time step (dt_new / dt_old) for scaling the lagrange multiplier of the previous frame
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_point_constraint_part.js b/class_point_constraint_part.js new file mode 100644 index 000000000..c12688d60 --- /dev/null +++ b/class_point_constraint_part.js @@ -0,0 +1,12 @@ +var class_point_constraint_part = +[ + [ "CalculateConstraintProperties", "class_point_constraint_part.html#abd3afc9ccf62aea6e07029b35d718a75", null ], + [ "Deactivate", "class_point_constraint_part.html#a79eddd21eea247c5560ab8208a627019", null ], + [ "GetTotalLambda", "class_point_constraint_part.html#a268ba07c6a229a0b8d2c3504566c355d", null ], + [ "IsActive", "class_point_constraint_part.html#a9b183e233b8fc258ab72f447499c5ad8", null ], + [ "RestoreState", "class_point_constraint_part.html#a019489117b367decab440da408e316b8", null ], + [ "SaveState", "class_point_constraint_part.html#ae6cd6fa33d18b3f7123a2a093a976257", null ], + [ "SolvePositionConstraint", "class_point_constraint_part.html#a123b2fd3e83ea307dfd8a946f6b7a449", null ], + [ "SolveVelocityConstraint", "class_point_constraint_part.html#a217800970665e456d24664aad0b860a6", null ], + [ "WarmStart", "class_point_constraint_part.html#a5d4d5fcf514dd0d2ea3b26e2071ee75e", null ] +]; \ No newline at end of file diff --git a/class_point_constraint_settings-members.html b/class_point_constraint_settings-members.html new file mode 100644 index 000000000..c412c7530 --- /dev/null +++ b/class_point_constraint_settings-members.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PointConstraintSettings Member List
+
+
+ +

This is the complete list of members for PointConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const overridePointConstraintSettingsvirtual
GetRefCount() constRefTarget< ConstraintSettings >inline
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mPoint1PointConstraintSettings
mPoint2PointConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mSpacePointConstraintSettings
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overridePointConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overridePointConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_point_constraint_settings.html b/class_point_constraint_settings.html new file mode 100644 index 000000000..2d47fffcf --- /dev/null +++ b/class_point_constraint_settings.html @@ -0,0 +1,392 @@ + + + + + + + +Jolt Physics: PointConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PointConstraintSettings Class Referencefinal
+
+
+ +

Point constraint settings, used to create a point constraint. + More...

+ +

#include <PointConstraint.h>

+
+Inheritance diagram for PointConstraintSettings:
+
+
+ + +TwoBodyConstraintSettings +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 Create an instance of this constraint.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EConstraintSpace mSpace = EConstraintSpace::WorldSpace
 This determines in which space the constraint is setup, all properties below should be in the specified space.
 
RVec3 mPoint1 = RVec3::sZero()
 Body 1 constraint position (space determined by mSpace).
 
RVec3 mPoint2 = RVec3::sZero()
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Point constraint settings, used to create a point constraint.

+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * PointConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+overridevirtual
+
+ +

Create an instance of this constraint.

+ +

Implements TwoBodyConstraintSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PointConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PointConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mPoint1

+ +
+
+ + + + +
RVec3 PointConstraintSettings::mPoint1 = RVec3::sZero()
+
+ +

Body 1 constraint position (space determined by mSpace).

+ +
+
+ +

◆ mPoint2

+ +
+
+ + + + +
RVec3 PointConstraintSettings::mPoint2 = RVec3::sZero()
+
+

Body 2 constraint position (space determined by mSpace). Note: Normally you would set mPoint1 = mPoint2 if the bodies are already placed how you want to constrain them (if mSpace = world space).

+ +
+
+ +

◆ mSpace

+ +
+
+ + + + +
EConstraintSpace PointConstraintSettings::mSpace = EConstraintSpace::WorldSpace
+
+ +

This determines in which space the constraint is setup, all properties below should be in the specified space.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_point_constraint_settings.js b/class_point_constraint_settings.js new file mode 100644 index 000000000..8de8eace3 --- /dev/null +++ b/class_point_constraint_settings.js @@ -0,0 +1,9 @@ +var class_point_constraint_settings = +[ + [ "Create", "class_point_constraint_settings.html#ae907012c2cecdd8df49afe781b66c1a3", null ], + [ "RestoreBinaryState", "class_point_constraint_settings.html#a280c2307c3b0dc13ee399c5a5100c020", null ], + [ "SaveBinaryState", "class_point_constraint_settings.html#a40d21e7ac18cc0d8a922a2d7398cd7a1", null ], + [ "mPoint1", "class_point_constraint_settings.html#a75e5165cface9c64e3edb866b0de9b11", null ], + [ "mPoint2", "class_point_constraint_settings.html#aa7b0100193fa0754bcfa7011e2900195", null ], + [ "mSpace", "class_point_constraint_settings.html#abebac3d7da7808a7430f01398a1d817a", null ] +]; \ No newline at end of file diff --git a/class_point_constraint_settings.png b/class_point_constraint_settings.png new file mode 100644 index 000000000..6fdb9f2b1 Binary files /dev/null and b/class_point_constraint_settings.png differ diff --git a/class_polyhedron_submerged_volume_calculator-members.html b/class_polyhedron_submerged_volume_calculator-members.html new file mode 100644 index 000000000..981e7f2ca --- /dev/null +++ b/class_polyhedron_submerged_volume_calculator-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PolyhedronSubmergedVolumeCalculator Member List
+
+
+ +

This is the complete list of members for PolyhedronSubmergedVolumeCalculator, including all inherited members.

+ + + + + + + +
AddFace(int inIdx1, int inIdx2, int inIdx3)PolyhedronSubmergedVolumeCalculatorinline
AreAllAbove() constPolyhedronSubmergedVolumeCalculatorinline
AreAllBelow() constPolyhedronSubmergedVolumeCalculatorinline
GetReferencePointIdx() constPolyhedronSubmergedVolumeCalculatorinline
GetResult(float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy) constPolyhedronSubmergedVolumeCalculatorinline
PolyhedronSubmergedVolumeCalculator(const Mat44 &inTransform, const Vec3 *inPoints, int inPointStride, int inNumPoints, const Plane &inSurface, Point *ioBuffer, RVec3 inBaseOffset)PolyhedronSubmergedVolumeCalculatorinline
+
+ + + + diff --git a/class_polyhedron_submerged_volume_calculator.html b/class_polyhedron_submerged_volume_calculator.html new file mode 100644 index 000000000..a5fe04df3 --- /dev/null +++ b/class_polyhedron_submerged_volume_calculator.html @@ -0,0 +1,395 @@ + + + + + + + +Jolt Physics: PolyhedronSubmergedVolumeCalculator Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PolyhedronSubmergedVolumeCalculator Class Reference
+
+
+ +

#include <PolyhedronSubmergedVolumeCalculator.h>

+ + + + + +

+Classes

class  Point
 A helper class that contains cached information about a polyhedron vertex. More...
 
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PolyhedronSubmergedVolumeCalculator (const Mat44 &inTransform, const Vec3 *inPoints, int inPointStride, int inNumPoints, const Plane &inSurface, Point *ioBuffer, RVec3 inBaseOffset)
 
bool AreAllAbove () const
 Check if all points are above the surface. Should be used as early out.
 
bool AreAllBelow () const
 Check if all points are below the surface. Should be used as early out.
 
int GetReferencePointIdx () const
 Get the lowest point of the polyhedron. Used to form the 4th vertex to make a tetrahedron out of a polyhedron face.
 
void AddFace (int inIdx1, int inIdx2, int inIdx3)
 Add a polyhedron face. Supply the indices of the points that form the face (in counter clockwise order).
 
void GetResult (float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy) const
 Call after all faces have been added. Returns the submerged volume and the center of buoyancy for the submerged volume.
 
+

Detailed Description

+

This class calculates the intersection between a fluid surface and a polyhedron and returns the submerged volume and its center of buoyancy Construct this class and then one by one add all faces of the polyhedron using the AddFace function. After all faces have been added the result can be gotten through GetResult.

+

Constructor & Destructor Documentation

+ +

◆ PolyhedronSubmergedVolumeCalculator()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PolyhedronSubmergedVolumeCalculator::PolyhedronSubmergedVolumeCalculator (const Mat44inTransform,
const Vec3inPoints,
int inPointStride,
int inNumPoints,
const PlaneinSurface,
PointioBuffer,
RVec3 inBaseOffset 
)
+
+inline
+
+

Constructor

Parameters
+ + + + + + + + +
inTransformTransform to transform all incoming points with
inPointsArray of points that are part of the polyhedron
inPointStrideAmount of bytes between each point (should usually be sizeof(Vec3))
inNumPointsThe amount of points
inSurfaceThe plane that forms the fluid surface (normal should point up)
ioBufferA temporary buffer of Point's that should have inNumPoints entries and should stay alive while this class is alive
inBaseOffsetThe offset to transform inTransform to world space (in double precision mode this can be used to shift the whole operation closer to the origin). Only used for debug drawing.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ AddFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void PolyhedronSubmergedVolumeCalculator::AddFace (int inIdx1,
int inIdx2,
int inIdx3 
)
+
+inline
+
+ +

Add a polyhedron face. Supply the indices of the points that form the face (in counter clockwise order).

+ +
+
+ +

◆ AreAllAbove()

+ +
+
+ + + + + +
+ + + + + + + +
bool PolyhedronSubmergedVolumeCalculator::AreAllAbove () const
+
+inline
+
+ +

Check if all points are above the surface. Should be used as early out.

+ +
+
+ +

◆ AreAllBelow()

+ +
+
+ + + + + +
+ + + + + + + +
bool PolyhedronSubmergedVolumeCalculator::AreAllBelow () const
+
+inline
+
+ +

Check if all points are below the surface. Should be used as early out.

+ +
+
+ +

◆ GetReferencePointIdx()

+ +
+
+ + + + + +
+ + + + + + + +
int PolyhedronSubmergedVolumeCalculator::GetReferencePointIdx () const
+
+inline
+
+ +

Get the lowest point of the polyhedron. Used to form the 4th vertex to make a tetrahedron out of a polyhedron face.

+ +
+
+ +

◆ GetResult()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void PolyhedronSubmergedVolumeCalculator::GetResult (float & outSubmergedVolume,
Vec3outCenterOfBuoyancy 
) const
+
+inline
+
+ +

Call after all faces have been added. Returns the submerged volume and the center of buoyancy for the submerged volume.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_polyhedron_submerged_volume_calculator.js b/class_polyhedron_submerged_volume_calculator.js new file mode 100644 index 000000000..1f67b625c --- /dev/null +++ b/class_polyhedron_submerged_volume_calculator.js @@ -0,0 +1,10 @@ +var class_polyhedron_submerged_volume_calculator = +[ + [ "Point", "class_polyhedron_submerged_volume_calculator_1_1_point.html", "class_polyhedron_submerged_volume_calculator_1_1_point" ], + [ "PolyhedronSubmergedVolumeCalculator", "class_polyhedron_submerged_volume_calculator.html#a4c0ac9f1d2eb133112745844ec770512", null ], + [ "AddFace", "class_polyhedron_submerged_volume_calculator.html#a2174180424e99b757f2eb63969557afc", null ], + [ "AreAllAbove", "class_polyhedron_submerged_volume_calculator.html#afd8348d65dfed4f7eb40ee92eb74742a", null ], + [ "AreAllBelow", "class_polyhedron_submerged_volume_calculator.html#aac9438428e9b0508fbac276161acae83", null ], + [ "GetReferencePointIdx", "class_polyhedron_submerged_volume_calculator.html#af52627bf533a56d1b951f32030010eeb", null ], + [ "GetResult", "class_polyhedron_submerged_volume_calculator.html#a5a1c107b68d02c02bde9493400549faf", null ] +]; \ No newline at end of file diff --git a/class_polyhedron_submerged_volume_calculator_1_1_point-members.html b/class_polyhedron_submerged_volume_calculator_1_1_point-members.html new file mode 100644 index 000000000..9477e42ad --- /dev/null +++ b/class_polyhedron_submerged_volume_calculator_1_1_point-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PolyhedronSubmergedVolumeCalculator::Point Member List
+
+
+ +

This is the complete list of members for PolyhedronSubmergedVolumeCalculator::Point, including all inherited members.

+ + + + +
mAboveSurfacePolyhedronSubmergedVolumeCalculator::Point
mDistanceToSurfacePolyhedronSubmergedVolumeCalculator::Point
mPositionPolyhedronSubmergedVolumeCalculator::Point
+
+ + + + diff --git a/class_polyhedron_submerged_volume_calculator_1_1_point.html b/class_polyhedron_submerged_volume_calculator_1_1_point.html new file mode 100644 index 000000000..f650af97a --- /dev/null +++ b/class_polyhedron_submerged_volume_calculator_1_1_point.html @@ -0,0 +1,189 @@ + + + + + + + +Jolt Physics: PolyhedronSubmergedVolumeCalculator::Point Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PolyhedronSubmergedVolumeCalculator::Point Class Reference
+
+
+ +

A helper class that contains cached information about a polyhedron vertex. + More...

+ +

#include <PolyhedronSubmergedVolumeCalculator.h>

+ + + + + + + + + + + +

+Public Attributes

Vec3 mPosition
 World space position of vertex.
 
float mDistanceToSurface
 Signed distance to the surface (> 0 is above, < 0 is below)
 
bool mAboveSurface
 If the point is above the surface (mDistanceToSurface > 0)
 
+

Detailed Description

+

A helper class that contains cached information about a polyhedron vertex.

+

Member Data Documentation

+ +

◆ mAboveSurface

+ +
+
+ + + + +
bool PolyhedronSubmergedVolumeCalculator::Point::mAboveSurface
+
+ +

If the point is above the surface (mDistanceToSurface > 0)

+ +
+
+ +

◆ mDistanceToSurface

+ +
+
+ + + + +
float PolyhedronSubmergedVolumeCalculator::Point::mDistanceToSurface
+
+ +

Signed distance to the surface (> 0 is above, < 0 is below)

+ +
+
+ +

◆ mPosition

+ +
+
+ + + + +
Vec3 PolyhedronSubmergedVolumeCalculator::Point::mPosition
+
+ +

World space position of vertex.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_polyhedron_submerged_volume_calculator_1_1_point.js b/class_polyhedron_submerged_volume_calculator_1_1_point.js new file mode 100644 index 000000000..21caaaba4 --- /dev/null +++ b/class_polyhedron_submerged_volume_calculator_1_1_point.js @@ -0,0 +1,6 @@ +var class_polyhedron_submerged_volume_calculator_1_1_point = +[ + [ "mAboveSurface", "class_polyhedron_submerged_volume_calculator_1_1_point.html#aec79909846ca6d2021c468a724fa872a", null ], + [ "mDistanceToSurface", "class_polyhedron_submerged_volume_calculator_1_1_point.html#ae11b26a886ee27b6f818cf1685d151d2", null ], + [ "mPosition", "class_polyhedron_submerged_volume_calculator_1_1_point.html#a7d4332e216b4c207019734c00663b754", null ] +]; \ No newline at end of file diff --git a/class_profile_measurement-members.html b/class_profile_measurement-members.html new file mode 100644 index 000000000..22f0d7392 --- /dev/null +++ b/class_profile_measurement-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ProfileMeasurement Member List
+
+
+ +

This is the complete list of members for ProfileMeasurement, including all inherited members.

+ + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ProfileMeasurement(const char *inName, uint32 inColor=0)ProfileMeasurementinline
~ProfileMeasurement()ProfileMeasurementinline
+
+ + + + diff --git a/class_profile_measurement.html b/class_profile_measurement.html new file mode 100644 index 000000000..9ba54282b --- /dev/null +++ b/class_profile_measurement.html @@ -0,0 +1,218 @@ + + + + + + + +Jolt Physics: ProfileMeasurement Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ProfileMeasurement Class Reference
+
+
+ +

Create this class on the stack to start sampling timing information of a particular scope. + More...

+ +

#include <Profiler.h>

+
+Inheritance diagram for ProfileMeasurement:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + +

+Public Member Functions

 ProfileMeasurement (const char *inName, uint32 inColor=0)
 Constructor.
 
 ~ProfileMeasurement ()
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Create this class on the stack to start sampling timing information of a particular scope.

+

Constructor & Destructor Documentation

+ +

◆ ProfileMeasurement()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ProfileMeasurement::ProfileMeasurement (const char * inName,
uint32 inColor = 0 
)
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ ~ProfileMeasurement()

+ +
+
+ + + + + +
+ + + + + + + +
ProfileMeasurement::~ProfileMeasurement ()
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_profile_measurement.js b/class_profile_measurement.js new file mode 100644 index 000000000..319fc6bca --- /dev/null +++ b/class_profile_measurement.js @@ -0,0 +1,5 @@ +var class_profile_measurement = +[ + [ "ProfileMeasurement", "class_profile_measurement.html#a174b63f72966b5d0ebf090a7f56f50d7", null ], + [ "~ProfileMeasurement", "class_profile_measurement.html#a7c37dee2ce575e7324bdd1531ab6a3c6", null ] +]; \ No newline at end of file diff --git a/class_profile_measurement.png b/class_profile_measurement.png new file mode 100644 index 000000000..f1c25932b Binary files /dev/null and b/class_profile_measurement.png differ diff --git a/class_profile_sample-members.html b/class_profile_sample-members.html new file mode 100644 index 000000000..825af10fe --- /dev/null +++ b/class_profile_sample-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ProfileSample Member List
+
+
+ +

This is the complete list of members for ProfileSample, including all inherited members.

+ + + + + + + + + + +
mColorProfileSample
mDepthProfileSample
mEndCycleProfileSample
mNameProfileSample
mStartCycleProfileSample
mUnusedProfileSample
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
+
+ + + + diff --git a/class_profile_sample.html b/class_profile_sample.html new file mode 100644 index 000000000..84ced232f --- /dev/null +++ b/class_profile_sample.html @@ -0,0 +1,257 @@ + + + + + + + +Jolt Physics: ProfileSample Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ProfileSample Class Reference
+
+
+ +

#include <Profiler.h>

+
+Inheritance diagram for ProfileSample:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

JPH_OVERRIDE_NEW_DELETE const char * mName
 User defined name of this item.
 
uint32 mColor
 Color to use for this sample.
 
uint8 mDepth
 Calculated depth.
 
uint8 mUnused [3]
 
uint64 mStartCycle
 Cycle counter at start of measurement.
 
uint64 mEndCycle
 Cycle counter at end of measurement.
 
+ + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Member Data Documentation

+ +

◆ mColor

+ +
+
+ + + + +
uint32 ProfileSample::mColor
+
+ +

Color to use for this sample.

+ +
+
+ +

◆ mDepth

+ +
+
+ + + + +
uint8 ProfileSample::mDepth
+
+ +

Calculated depth.

+ +
+
+ +

◆ mEndCycle

+ +
+
+ + + + +
uint64 ProfileSample::mEndCycle
+
+ +

Cycle counter at end of measurement.

+ +
+
+ +

◆ mName

+ +
+
+ + + + +
JPH_OVERRIDE_NEW_DELETE const char* ProfileSample::mName
+
+ +

User defined name of this item.

+ +
+
+ +

◆ mStartCycle

+ +
+
+ + + + +
uint64 ProfileSample::mStartCycle
+
+ +

Cycle counter at start of measurement.

+ +
+
+ +

◆ mUnused

+ +
+
+ + + + +
uint8 ProfileSample::mUnused[3]
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_profile_sample.js b/class_profile_sample.js new file mode 100644 index 000000000..a89028cfc --- /dev/null +++ b/class_profile_sample.js @@ -0,0 +1,9 @@ +var class_profile_sample = +[ + [ "mColor", "class_profile_sample.html#a02343312f37163bd02faf4f9751fe4a9", null ], + [ "mDepth", "class_profile_sample.html#add124282af00ea60608ac83c683787e2", null ], + [ "mEndCycle", "class_profile_sample.html#a49970a1931c5764ce97d388ac4516113", null ], + [ "mName", "class_profile_sample.html#abdc79744926fda6484f18e8bee225d1b", null ], + [ "mStartCycle", "class_profile_sample.html#ae91dc9a0769eb9f97e061682021adcc0", null ], + [ "mUnused", "class_profile_sample.html#a1be9087e2cefdd32f178ce64ea46c349", null ] +]; \ No newline at end of file diff --git a/class_profile_sample.png b/class_profile_sample.png new file mode 100644 index 000000000..7dbbb7ce5 Binary files /dev/null and b/class_profile_sample.png differ diff --git a/class_profile_thread-members.html b/class_profile_thread-members.html new file mode 100644 index 000000000..455b109d0 --- /dev/null +++ b/class_profile_thread-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ProfileThread Member List
+
+
+ +

This is the complete list of members for ProfileThread, including all inherited members.

+ + + + + + + + + + + + +
cMaxSamplesProfileThreadstatic
mCurrentSampleProfileThread
mSamplesProfileThread
mThreadNameProfileThread
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ProfileThread(const string_view &inThreadName)ProfileThreadinline
sGetInstance()ProfileThreadinlinestatic
sSetInstance(ProfileThread *inInstance)ProfileThreadinlinestatic
~ProfileThread()ProfileThreadinline
+
+ + + + diff --git a/class_profile_thread.html b/class_profile_thread.html new file mode 100644 index 000000000..402d9a026 --- /dev/null +++ b/class_profile_thread.html @@ -0,0 +1,358 @@ + + + + + + + +Jolt Physics: ProfileThread Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ProfileThread Class Reference
+
+
+ +

Collects all samples of a single thread. + More...

+ +

#include <Profiler.h>

+
+Inheritance diagram for ProfileThread:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ProfileThread (const string_view &inThreadName)
 Constructor.
 
 ~ProfileThread ()
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + +

+Static Public Member Functions

static void sSetInstance (ProfileThread *inInstance)
 
static ProfileThreadsGetInstance ()
 
+ + + + + + + + + + +

+Public Attributes

String mThreadName
 Name of the thread that we're collecting information for.
 
ProfileSample mSamples [cMaxSamples]
 Buffer of samples.
 
uint mCurrentSample = 0
 Next position to write a sample to.
 
+ + + +

+Static Public Attributes

static const uint cMaxSamples = 65536
 
+

Detailed Description

+

Collects all samples of a single thread.

+

Constructor & Destructor Documentation

+ +

◆ ProfileThread()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_NAMESPACE_BEGIN ProfileThread::ProfileThread (const string_view & inThreadName)
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ ~ProfileThread()

+ +
+
+ + + + + +
+ + + + + + + +
ProfileThread::~ProfileThread ()
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ sGetInstance()

+ +
+
+ + + + + +
+ + + + + + + +
static ProfileThread * ProfileThread::sGetInstance ()
+
+inlinestatic
+
+ +
+
+ +

◆ sSetInstance()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ProfileThread::sSetInstance (ProfileThreadinInstance)
+
+inlinestatic
+
+ +
+
+

Member Data Documentation

+ +

◆ cMaxSamples

+ +
+
+ + + + + +
+ + + + +
const uint ProfileThread::cMaxSamples = 65536
+
+static
+
+ +
+
+ +

◆ mCurrentSample

+ +
+
+ + + + +
uint ProfileThread::mCurrentSample = 0
+
+ +

Next position to write a sample to.

+ +
+
+ +

◆ mSamples

+ +
+
+ + + + +
ProfileSample ProfileThread::mSamples[cMaxSamples]
+
+ +

Buffer of samples.

+ +
+
+ +

◆ mThreadName

+ +
+
+ + + + +
String ProfileThread::mThreadName
+
+ +

Name of the thread that we're collecting information for.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_profile_thread.js b/class_profile_thread.js new file mode 100644 index 000000000..a4ea292f8 --- /dev/null +++ b/class_profile_thread.js @@ -0,0 +1,8 @@ +var class_profile_thread = +[ + [ "ProfileThread", "class_profile_thread.html#a8c68606dc2529e513bae6809fa85d47b", null ], + [ "~ProfileThread", "class_profile_thread.html#a6d9ed54e26b6b8e37967a8dce6226e66", null ], + [ "mCurrentSample", "class_profile_thread.html#a6afefb40b099dcc6db1170655ac90295", null ], + [ "mSamples", "class_profile_thread.html#a083636a930ffaea9862ef59d28a98395", null ], + [ "mThreadName", "class_profile_thread.html#aa442ddaa639a059c3a99f40186ffe676", null ] +]; \ No newline at end of file diff --git a/class_profile_thread.png b/class_profile_thread.png new file mode 100644 index 000000000..cf024cf67 Binary files /dev/null and b/class_profile_thread.png differ diff --git a/class_profiler-members.html b/class_profiler-members.html new file mode 100644 index 000000000..da5e002f2 --- /dev/null +++ b/class_profiler-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Profiler Member List
+
+
+ +

This is the complete list of members for Profiler, including all inherited members.

+ + + + + + + + + + +
AddThread(ProfileThread *inThread)Profiler
Dump(const string_view &inTag=string_view())Profiler
NextFrame()Profiler
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Profiler()Profilerinline
RemoveThread(ProfileThread *inThread)Profiler
sInstanceProfilerstatic
+
+ + + + diff --git a/class_profiler.html b/class_profiler.html new file mode 100644 index 000000000..dc21126d6 --- /dev/null +++ b/class_profiler.html @@ -0,0 +1,307 @@ + + + + + + + +Jolt Physics: Profiler Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Profiler Class Reference
+
+
+ +

Singleton class for managing profiling information. + More...

+ +

#include <Profiler.h>

+
+Inheritance diagram for Profiler:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Profiler ()
 Constructor.
 
void NextFrame ()
 Increments the frame counter to provide statistics per frame.
 
void Dump (const string_view &inTag=string_view())
 
void AddThread (ProfileThread *inThread)
 Add a thread to be instrumented.
 
void RemoveThread (ProfileThread *inThread)
 Remove a thread from being instrumented.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + +

+Static Public Attributes

static ProfilersInstance = nullptr
 Singleton instance.
 
+

Detailed Description

+

Singleton class for managing profiling information.

+

Constructor & Destructor Documentation

+ +

◆ Profiler()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE Profiler::Profiler ()
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ AddThread()

+ +
+
+ + + + + + + + +
void Profiler::AddThread (ProfileThreadinThread)
+
+ +

Add a thread to be instrumented.

+ +
+
+ +

◆ Dump()

+ +
+
+ + + + + + + + +
void Profiler::Dump (const string_view & inTag = string_view())
+
+

Dump profiling statistics at the start of the next frame

Parameters
+ + +
inTagIf not empty, this overrides the auto incrementing number in the filename of the dump file
+
+
+ +
+
+ +

◆ NextFrame()

+ +
+
+ + + + + + + +
void Profiler::NextFrame ()
+
+ +

Increments the frame counter to provide statistics per frame.

+ +
+
+ +

◆ RemoveThread()

+ +
+
+ + + + + + + + +
void Profiler::RemoveThread (ProfileThreadinThread)
+
+ +

Remove a thread from being instrumented.

+ +
+
+

Member Data Documentation

+ +

◆ sInstance

+ +
+
+ + + + + +
+ + + + +
JPH_SUPPRESS_WARNINGS_STD_BEGIN JPH_SUPPRESS_WARNINGS_STD_END JPH_NAMESPACE_BEGIN Profiler * Profiler::sInstance = nullptr
+
+static
+
+ +

Singleton instance.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_profiler.js b/class_profiler.js new file mode 100644 index 000000000..0ed3985c5 --- /dev/null +++ b/class_profiler.js @@ -0,0 +1,8 @@ +var class_profiler = +[ + [ "Profiler", "class_profiler.html#a3cc0eb01aa7df555747074f3ccf1ab34", null ], + [ "AddThread", "class_profiler.html#a72d49949a95f3bad23a8c288bd54d0f4", null ], + [ "Dump", "class_profiler.html#a4a8f82d68bd5c67cf7ad8259487bb821", null ], + [ "NextFrame", "class_profiler.html#afc3cc44c232d261765b9a305846354cb", null ], + [ "RemoveThread", "class_profiler.html#a647ca7e4e3b803986733583e2ba1fb3e", null ] +]; \ No newline at end of file diff --git a/class_profiler.png b/class_profiler.png new file mode 100644 index 000000000..94fb796e1 Binary files /dev/null and b/class_profiler.png differ diff --git a/class_pulley_constraint-members.html b/class_pulley_constraint-members.html new file mode 100644 index 000000000..99dbac551 --- /dev/null +++ b/class_pulley_constraint-members.html @@ -0,0 +1,176 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PulleyConstraint Member List
+
+
+ +

This is the complete list of members for PulleyConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const overridePulleyConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) constConstraintinlinevirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overridePulleyConstraintvirtual
GetConstraintToBody1Matrix() const overridePulleyConstraintinlinevirtual
GetConstraintToBody2Matrix() const overridePulleyConstraintinlinevirtual
GetCurrentLength() constPulleyConstraintinline
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetMaxLength() constPulleyConstraintinline
GetMinLength() constPulleyConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const overridePulleyConstraintinlinevirtual
GetTotalLambdaPosition() constPulleyConstraintinline
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
IsActive() const overrideTwoBodyConstraintinlinevirtual
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overridePulleyConstraintvirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PulleyConstraint(Body &inBody1, Body &inBody2, const PulleyConstraintSettings &inSettings)PulleyConstraint
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart() overridePulleyConstraintvirtual
RestoreState(StateRecorder &inStream) overridePulleyConstraintvirtual
SaveState(StateRecorder &inStream) const overridePulleyConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetLength(float inMinLength, float inMaxLength)PulleyConstraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetupVelocityConstraint(float inDeltaTime) overridePulleyConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overridePulleyConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overridePulleyConstraintvirtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overridePulleyConstraintvirtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_pulley_constraint.html b/class_pulley_constraint.html new file mode 100644 index 000000000..7323e15a3 --- /dev/null +++ b/class_pulley_constraint.html @@ -0,0 +1,889 @@ + + + + + + + +Jolt Physics: PulleyConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PulleyConstraint Class Referencefinal
+
+
+ +

A pulley constraint. + More...

+ +

#include <PulleyConstraint.h>

+
+Inheritance diagram for PulleyConstraint:
+
+
+ + +TwoBodyConstraint +Constraint +RefTarget< Constraint > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE PulleyConstraint (Body &inBody1, Body &inBody2, const PulleyConstraintSettings &inSettings)
 Construct distance constraint.
 
virtual EConstraintSubType GetSubType () const override
 Get the sub type of a constraint.
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
virtual Mat44 GetConstraintToBody1Matrix () const override
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const override
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
void SetLength (float inMinLength, float inMaxLength)
 Update the minimum and maximum length for the constraint.
 
float GetMinLength () const
 
float GetMaxLength () const
 
float GetCurrentLength () const
 Get the current length of both segments (multiplied by the ratio for segment 2)
 
- Public Member Functions inherited from TwoBodyConstraint
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + +

Get Lagrange multiplier from last physics update (the linear impulse applied to satisfy the constraint)

float GetTotalLambdaPosition () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from TwoBodyConstraint
BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A pulley constraint.

+

Constructor & Destructor Documentation

+ +

◆ PulleyConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
PulleyConstraint::PulleyConstraint (BodyinBody1,
BodyinBody2,
const PulleyConstraintSettingsinSettings 
)
+
+ +

Construct distance constraint.

+ +
+
+

Member Function Documentation

+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void PulleyConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > PulleyConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 PulleyConstraint::GetConstraintToBody1Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 PulleyConstraint::GetConstraintToBody2Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetCurrentLength()

+ +
+
+ + + + + +
+ + + + + + + +
float PulleyConstraint::GetCurrentLength () const
+
+inline
+
+ +

Get the current length of both segments (multiplied by the ratio for segment 2)

+ +
+
+ +

◆ GetMaxLength()

+ +
+
+ + + + + +
+ + + + + + + +
float PulleyConstraint::GetMaxLength () const
+
+inline
+
+ +
+
+ +

◆ GetMinLength()

+ +
+
+ + + + + +
+ + + + + + + +
float PulleyConstraint::GetMinLength () const
+
+inline
+
+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType PulleyConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Get the sub type of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetTotalLambdaPosition()

+ +
+
+ + + + + +
+ + + + + + + +
float PulleyConstraint::GetTotalLambdaPosition () const
+
+inline
+
+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void PulleyConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+overridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void PulleyConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PulleyConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PulleyConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetLength()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void PulleyConstraint::SetLength (float inMinLength,
float inMaxLength 
)
+
+inline
+
+ +

Update the minimum and maximum length for the constraint.

+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void PulleyConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool PulleyConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool PulleyConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void PulleyConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_pulley_constraint.js b/class_pulley_constraint.js new file mode 100644 index 000000000..3c6156510 --- /dev/null +++ b/class_pulley_constraint.js @@ -0,0 +1,22 @@ +var class_pulley_constraint = +[ + [ "PulleyConstraint", "class_pulley_constraint.html#ac6fed08a3d543db628a269cca927fb63", null ], + [ "DrawConstraint", "class_pulley_constraint.html#a7ae0d37c406ebdf990d0596028945409", null ], + [ "GetConstraintSettings", "class_pulley_constraint.html#a56ea0bb8295e74fff225c54325df0bb4", null ], + [ "GetConstraintToBody1Matrix", "class_pulley_constraint.html#a8afedbd3de6a5484fda155337ee04b64", null ], + [ "GetConstraintToBody2Matrix", "class_pulley_constraint.html#aab9c03ae617d8c20d3844f499b33463f", null ], + [ "GetCurrentLength", "class_pulley_constraint.html#a2e6fd4f7a548c5fe09497fd31a27af02", null ], + [ "GetMaxLength", "class_pulley_constraint.html#aabb79ec76059c338d98d5ca9b2cd2d98", null ], + [ "GetMinLength", "class_pulley_constraint.html#a7736c362467fcdcc9e1922b6847cd77a", null ], + [ "GetSubType", "class_pulley_constraint.html#a175acacfe8fcc7518a90d7b29e0ad8eb", null ], + [ "GetTotalLambdaPosition", "class_pulley_constraint.html#adac156b26e519ea9f183609b731b81b5", null ], + [ "NotifyShapeChanged", "class_pulley_constraint.html#abf1f2d838a54008edca4ee2a907ac0f6", null ], + [ "ResetWarmStart", "class_pulley_constraint.html#aca6c3e82e979de7352e26afd14f5e277", null ], + [ "RestoreState", "class_pulley_constraint.html#a292df1ddeb2b9ec1ff7c96f3742c81f7", null ], + [ "SaveState", "class_pulley_constraint.html#ac37299bf924b5d34e41c8a51c621906a", null ], + [ "SetLength", "class_pulley_constraint.html#a3c250975bff80256a8d79f04bed8aeaa", null ], + [ "SetupVelocityConstraint", "class_pulley_constraint.html#a577d6bca6063a4fe0bbbfb63fc6c1096", null ], + [ "SolvePositionConstraint", "class_pulley_constraint.html#a87b18f6a3e5e289beb7967227bd11e16", null ], + [ "SolveVelocityConstraint", "class_pulley_constraint.html#a66e0ee2a47361e24d981cb27e5791bbe", null ], + [ "WarmStartVelocityConstraint", "class_pulley_constraint.html#aef2753289be51db340b80fe44fbfb87f", null ] +]; \ No newline at end of file diff --git a/class_pulley_constraint.png b/class_pulley_constraint.png new file mode 100644 index 000000000..5b597d390 Binary files /dev/null and b/class_pulley_constraint.png differ diff --git a/class_pulley_constraint_settings-members.html b/class_pulley_constraint_settings-members.html new file mode 100644 index 000000000..bb5041e6f --- /dev/null +++ b/class_pulley_constraint_settings-members.html @@ -0,0 +1,150 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
PulleyConstraintSettings Member List
+
+
+ +

This is the complete list of members for PulleyConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const overridePulleyConstraintSettingsvirtual
GetRefCount() constRefTarget< ConstraintSettings >inline
mBodyPoint1PulleyConstraintSettings
mBodyPoint2PulleyConstraintSettings
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mFixedPoint1PulleyConstraintSettings
mFixedPoint2PulleyConstraintSettings
mMaxLengthPulleyConstraintSettings
mMinLengthPulleyConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mRatioPulleyConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mSpacePulleyConstraintSettings
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overridePulleyConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overridePulleyConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_pulley_constraint_settings.html b/class_pulley_constraint_settings.html new file mode 100644 index 000000000..b4dafe890 --- /dev/null +++ b/class_pulley_constraint_settings.html @@ -0,0 +1,486 @@ + + + + + + + +Jolt Physics: PulleyConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
PulleyConstraintSettings Class Referencefinal
+
+
+ +

#include <PulleyConstraint.h>

+
+Inheritance diagram for PulleyConstraintSettings:
+
+
+ + +TwoBodyConstraintSettings +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 Create an instance of this constraint.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EConstraintSpace mSpace = EConstraintSpace::WorldSpace
 This determines in which space the constraint is setup, specified properties below should be in the specified space.
 
RVec3 mBodyPoint1 = RVec3::sZero()
 Body 1 constraint attachment point (space determined by mSpace).
 
RVec3 mFixedPoint1 = RVec3::sZero()
 Fixed world point to which body 1 is connected (always world space)
 
RVec3 mBodyPoint2 = RVec3::sZero()
 Body 2 constraint attachment point (space determined by mSpace)
 
RVec3 mFixedPoint2 = RVec3::sZero()
 Fixed world point to which body 2 is connected (always world space)
 
float mRatio = 1.0f
 Ratio between the two line segments (see formula above), can be used to create a block and tackle.
 
float mMinLength = 0.0f
 The minimum length of the line segments (see formula above), use -1 to calculate the length based on the positions of the objects when the constraint is created.
 
float mMaxLength = -1.0f
 The maximum length of the line segments (see formula above), use -1 to calculate the length based on the positions of the objects when the constraint is created.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Pulley constraint settings, used to create a pulley constraint. A pulley connects two bodies via two fixed world points to each other similar to a distance constraint. We define Length1 = |BodyPoint1 - FixedPoint1| where Body1 is a point on body 1 in world space and FixedPoint1 a fixed point in world space Length2 = |BodyPoint2 - FixedPoint2| The constraint keeps the two line segments constrained so that MinDistance <= Length1 + Ratio * Length2 <= MaxDistance

+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * PulleyConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+overridevirtual
+
+ +

Create an instance of this constraint.

+ +

Implements TwoBodyConstraintSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PulleyConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void PulleyConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mBodyPoint1

+ +
+
+ + + + +
RVec3 PulleyConstraintSettings::mBodyPoint1 = RVec3::sZero()
+
+ +

Body 1 constraint attachment point (space determined by mSpace).

+ +
+
+ +

◆ mBodyPoint2

+ +
+
+ + + + +
RVec3 PulleyConstraintSettings::mBodyPoint2 = RVec3::sZero()
+
+ +

Body 2 constraint attachment point (space determined by mSpace)

+ +
+
+ +

◆ mFixedPoint1

+ +
+
+ + + + +
RVec3 PulleyConstraintSettings::mFixedPoint1 = RVec3::sZero()
+
+ +

Fixed world point to which body 1 is connected (always world space)

+ +
+
+ +

◆ mFixedPoint2

+ +
+
+ + + + +
RVec3 PulleyConstraintSettings::mFixedPoint2 = RVec3::sZero()
+
+ +

Fixed world point to which body 2 is connected (always world space)

+ +
+
+ +

◆ mMaxLength

+ +
+
+ + + + +
float PulleyConstraintSettings::mMaxLength = -1.0f
+
+ +

The maximum length of the line segments (see formula above), use -1 to calculate the length based on the positions of the objects when the constraint is created.

+ +
+
+ +

◆ mMinLength

+ +
+
+ + + + +
float PulleyConstraintSettings::mMinLength = 0.0f
+
+ +

The minimum length of the line segments (see formula above), use -1 to calculate the length based on the positions of the objects when the constraint is created.

+ +
+
+ +

◆ mRatio

+ +
+
+ + + + +
float PulleyConstraintSettings::mRatio = 1.0f
+
+ +

Ratio between the two line segments (see formula above), can be used to create a block and tackle.

+ +
+
+ +

◆ mSpace

+ +
+
+ + + + +
EConstraintSpace PulleyConstraintSettings::mSpace = EConstraintSpace::WorldSpace
+
+ +

This determines in which space the constraint is setup, specified properties below should be in the specified space.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_pulley_constraint_settings.js b/class_pulley_constraint_settings.js new file mode 100644 index 000000000..c03e6fedc --- /dev/null +++ b/class_pulley_constraint_settings.js @@ -0,0 +1,14 @@ +var class_pulley_constraint_settings = +[ + [ "Create", "class_pulley_constraint_settings.html#a803fa3c6f15331888d3189918deb52f8", null ], + [ "RestoreBinaryState", "class_pulley_constraint_settings.html#a386c539940f18601f78f5bebd85550ac", null ], + [ "SaveBinaryState", "class_pulley_constraint_settings.html#ab8b9eea11b3adb23d825581a821c4a8f", null ], + [ "mBodyPoint1", "class_pulley_constraint_settings.html#ad2c59a16803fd25fd268d73c96f2d018", null ], + [ "mBodyPoint2", "class_pulley_constraint_settings.html#aa87b3d01226cbad269a41eb603ca2324", null ], + [ "mFixedPoint1", "class_pulley_constraint_settings.html#a5d17666f846c10f4673814444a5da2b4", null ], + [ "mFixedPoint2", "class_pulley_constraint_settings.html#a196fe3b35ce1efccbc5169755973b51b", null ], + [ "mMaxLength", "class_pulley_constraint_settings.html#a708a1e9d3a6408bf8db17b495a2bb9a9", null ], + [ "mMinLength", "class_pulley_constraint_settings.html#afdec90c88fa61b375bae4454fc31b689", null ], + [ "mRatio", "class_pulley_constraint_settings.html#a5bbc85b1e7cde7416b3f2d1649b383af", null ], + [ "mSpace", "class_pulley_constraint_settings.html#ab784f151989a5ae138261a415654290f", null ] +]; \ No newline at end of file diff --git a/class_pulley_constraint_settings.png b/class_pulley_constraint_settings.png new file mode 100644 index 000000000..65c638c37 Binary files /dev/null and b/class_pulley_constraint_settings.png differ diff --git a/class_quad_tree-members.html b/class_quad_tree-members.html new file mode 100644 index 000000000..349874616 --- /dev/null +++ b/class_quad_tree-members.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
QuadTree Member List
+
+
+ +

This is the complete list of members for QuadTree, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddBodiesAbort(TrackingVector &ioTracking, const AddState &inState)QuadTree
AddBodiesFinalize(TrackingVector &ioTracking, int inNumberBodies, const AddState &inState)QuadTree
AddBodiesPrepare(const BodyVector &inBodies, TrackingVector &ioTracking, BodyID *ioBodyIDs, int inNumber, AddState &outState)QuadTree
Allocator typedefQuadTree
CanBeUpdated() constQuadTreeinline
CastAABox(const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) constQuadTree
CastRay(const RayCast &inRay, RayCastBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) constQuadTree
CollideAABox(const AABox &inBox, CollideShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) constQuadTree
CollideOrientedBox(const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) constQuadTree
CollidePoint(Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) constQuadTree
CollideSphere(Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) constQuadTree
DiscardOldTree()QuadTree
FindCollidingPairs(const BodyVector &inBodies, const BodyID *inActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, BodyPairCollector &ioPairCollector, const ObjectLayerPairFilter &inObjectLayerPairFilter) constQuadTree
GetBounds() constQuadTree
GetName() constQuadTreeinline
HasBodies() constQuadTreeinline
Init(Allocator &inAllocator)QuadTree
IsDirty() constQuadTreeinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyBodiesAABBChanged(const BodyVector &inBodies, const TrackingVector &inTracking, const BodyID *ioBodyIDs, int inNumber)QuadTree
operator=(const NonCopyable &)=deleteNonCopyable
RemoveBodies(const BodyVector &inBodies, TrackingVector &ioTracking, const BodyID *ioBodyIDs, int inNumber)QuadTree
SetName(const char *inName)QuadTreeinline
TrackingVector typedefQuadTree
UpdateFinalize(const BodyVector &inBodies, const TrackingVector &inTracking, const UpdateState &inUpdateState)QuadTree
UpdatePrepare(const BodyVector &inBodies, TrackingVector &ioTracking, UpdateState &outUpdateState, bool inFullRebuild)QuadTree
~QuadTree()QuadTree
+
+ + + + diff --git a/class_quad_tree.html b/class_quad_tree.html new file mode 100644 index 000000000..db0bda1e7 --- /dev/null +++ b/class_quad_tree.html @@ -0,0 +1,1087 @@ + + + + + + + +Jolt Physics: QuadTree Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
QuadTree Class Reference
+
+
+ +

#include <QuadTree.h>

+
+Inheritance diagram for QuadTree:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + +

+Classes

struct  AddState
 Temporary data structure to pass information between AddBodiesPrepare and AddBodiesFinalize/Abort. More...
 
struct  Tracking
 Data to track location of a Body in the tree. More...
 
struct  UpdateState
 
+ + + + + + +

+Public Types

using Allocator = FixedSizeFreeList< Node >
 Class that allocates tree nodes, can be shared between multiple trees.
 
using TrackingVector = Array< Tracking >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ~QuadTree ()
 Destructor.
 
void SetName (const char *inName)
 Name of the tree for debugging purposes.
 
const char * GetName () const
 
bool HasBodies () const
 Check if there is anything in the tree.
 
bool IsDirty () const
 Check if the tree needs an UpdatePrepare/Finalize()
 
bool CanBeUpdated () const
 Check if this tree can get an UpdatePrepare/Finalize() or if it needs a DiscardOldTree() first.
 
void Init (Allocator &inAllocator)
 Initialization.
 
void DiscardOldTree ()
 Will throw away the previous frame's nodes so that we can start building a new tree in the background.
 
AABox GetBounds () const
 Get the bounding box for this tree.
 
void UpdatePrepare (const BodyVector &inBodies, TrackingVector &ioTracking, UpdateState &outUpdateState, bool inFullRebuild)
 
void UpdateFinalize (const BodyVector &inBodies, const TrackingVector &inTracking, const UpdateState &inUpdateState)
 
void AddBodiesPrepare (const BodyVector &inBodies, TrackingVector &ioTracking, BodyID *ioBodyIDs, int inNumber, AddState &outState)
 
void AddBodiesFinalize (TrackingVector &ioTracking, int inNumberBodies, const AddState &inState)
 Finalize adding bodies to the quadtree, supply the same number of bodies as in AddBodiesPrepare.
 
void AddBodiesAbort (TrackingVector &ioTracking, const AddState &inState)
 
void RemoveBodies (const BodyVector &inBodies, TrackingVector &ioTracking, const BodyID *ioBodyIDs, int inNumber)
 Remove inNumber bodies in ioBodyIDs from the quadtree.
 
void NotifyBodiesAABBChanged (const BodyVector &inBodies, const TrackingVector &inTracking, const BodyID *ioBodyIDs, int inNumber)
 Call whenever the aabb of a body changes.
 
void CastRay (const RayCast &inRay, RayCastBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) const
 Cast a ray and get the intersecting bodies in ioCollector.
 
void CollideAABox (const AABox &inBox, CollideShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) const
 Get bodies intersecting with inBox in ioCollector.
 
void CollideSphere (Vec3Arg inCenter, float inRadius, CollideShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) const
 Get bodies intersecting with a sphere in ioCollector.
 
void CollidePoint (Vec3Arg inPoint, CollideShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) const
 Get bodies intersecting with a point and any hits to ioCollector.
 
void CollideOrientedBox (const OrientedBox &inBox, CollideShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) const
 Get bodies intersecting with an oriented box and any hits to ioCollector.
 
void CastAABox (const AABoxCast &inBox, CastShapeBodyCollector &ioCollector, const ObjectLayerFilter &inObjectLayerFilter, const TrackingVector &inTracking) const
 Cast a box and get intersecting bodies in ioCollector.
 
void FindCollidingPairs (const BodyVector &inBodies, const BodyID *inActiveBodies, int inNumActiveBodies, float inSpeculativeContactDistance, BodyPairCollector &ioPairCollector, const ObjectLayerPairFilter &inObjectLayerPairFilter) const
 Find all colliding pairs between dynamic bodies, calls ioPairCollector for every pair found.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Internal tree structure in broadphase, is essentially a quad AABB tree. Tree is lockless (except for UpdatePrepare/Finalize() function), modifying objects in the tree will widen the aabbs of parent nodes to make the node fit. During the UpdatePrepare/Finalize() call the tree is rebuilt to achieve a tight fit again.

+

Member Typedef Documentation

+ +

◆ Allocator

+ +
+
+ + + + +
using QuadTree::Allocator = FixedSizeFreeList<Node>
+
+ +

Class that allocates tree nodes, can be shared between multiple trees.

+ +
+
+ +

◆ TrackingVector

+ +
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~QuadTree()

+ +
+
+ + + + + + + +
QuadTree::~QuadTree ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ AddBodiesAbort()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void QuadTree::AddBodiesAbort (TrackingVectorioTracking,
const AddStateinState 
)
+
+

Abort adding bodies to the quadtree, supply the same bodies and state as in AddBodiesPrepare. This can be done on a background thread without influencing the broadphase.

+ +
+
+ +

◆ AddBodiesFinalize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::AddBodiesFinalize (TrackingVectorioTracking,
int inNumberBodies,
const AddStateinState 
)
+
+ +

Finalize adding bodies to the quadtree, supply the same number of bodies as in AddBodiesPrepare.

+ +
+
+ +

◆ AddBodiesPrepare()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::AddBodiesPrepare (const BodyVectorinBodies,
TrackingVectorioTracking,
BodyIDioBodyIDs,
int inNumber,
AddStateoutState 
)
+
+

Prepare adding inNumber bodies at ioBodyIDs to the quad tree, returns the state in outState that should be used in AddBodiesFinalize. This can be done on a background thread without influencing the broadphase. ioBodyIDs may be shuffled around by this function.

+ +
+
+ +

◆ CanBeUpdated()

+ +
+
+ + + + + +
+ + + + + + + +
bool QuadTree::CanBeUpdated () const
+
+inline
+
+ +

Check if this tree can get an UpdatePrepare/Finalize() or if it needs a DiscardOldTree() first.

+ +
+
+ +

◆ CastAABox()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::CastAABox (const AABoxCastinBox,
CastShapeBodyCollectorioCollector,
const ObjectLayerFilterinObjectLayerFilter,
const TrackingVectorinTracking 
) const
+
+ +

Cast a box and get intersecting bodies in ioCollector.

+

Constructor

+

Returns true if further processing of the tree should be aborted

+

Returns true if this node / body should be visited, false if no hit can be generated

+

Visit nodes, returns number of hits found and sorts ioChildNodeIDs so that they are at the beginning of the vector.

+

Visit a body, returns false if the algorithm should terminate because no hits can be generated anymore

+ +
+
+ +

◆ CastRay()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::CastRay (const RayCastinRay,
RayCastBodyCollectorioCollector,
const ObjectLayerFilterinObjectLayerFilter,
const TrackingVectorinTracking 
) const
+
+ +

Cast a ray and get the intersecting bodies in ioCollector.

+

Constructor

+

Returns true if further processing of the tree should be aborted

+

Returns true if this node / body should be visited, false if no hit can be generated

+

Visit nodes, returns number of hits found and sorts ioChildNodeIDs so that they are at the beginning of the vector.

+

Visit a body, returns false if the algorithm should terminate because no hits can be generated anymore

+ +
+
+ +

◆ CollideAABox()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::CollideAABox (const AABoxinBox,
CollideShapeBodyCollectorioCollector,
const ObjectLayerFilterinObjectLayerFilter,
const TrackingVectorinTracking 
) const
+
+ +

Get bodies intersecting with inBox in ioCollector.

+

Constructor

+

Returns true if further processing of the tree should be aborted

+

Returns true if this node / body should be visited, false if no hit can be generated

+

Visit nodes, returns number of hits found and sorts ioChildNodeIDs so that they are at the beginning of the vector.

+

Visit a body, returns false if the algorithm should terminate because no hits can be generated anymore

+ +
+
+ +

◆ CollideOrientedBox()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::CollideOrientedBox (const OrientedBoxinBox,
CollideShapeBodyCollectorioCollector,
const ObjectLayerFilterinObjectLayerFilter,
const TrackingVectorinTracking 
) const
+
+ +

Get bodies intersecting with an oriented box and any hits to ioCollector.

+

Constructor

+

Returns true if further processing of the tree should be aborted

+

Returns true if this node / body should be visited, false if no hit can be generated

+

Visit nodes, returns number of hits found and sorts ioChildNodeIDs so that they are at the beginning of the vector.

+

Visit a body, returns false if the algorithm should terminate because no hits can be generated anymore

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::CollidePoint (Vec3Arg inPoint,
CollideShapeBodyCollectorioCollector,
const ObjectLayerFilterinObjectLayerFilter,
const TrackingVectorinTracking 
) const
+
+ +

Get bodies intersecting with a point and any hits to ioCollector.

+

Constructor

+

Returns true if further processing of the tree should be aborted

+

Returns true if this node / body should be visited, false if no hit can be generated

+

Visit nodes, returns number of hits found and sorts ioChildNodeIDs so that they are at the beginning of the vector.

+

Visit a body, returns false if the algorithm should terminate because no hits can be generated anymore

+ +
+
+ +

◆ CollideSphere()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::CollideSphere (Vec3Arg inCenter,
float inRadius,
CollideShapeBodyCollectorioCollector,
const ObjectLayerFilterinObjectLayerFilter,
const TrackingVectorinTracking 
) const
+
+ +

Get bodies intersecting with a sphere in ioCollector.

+

Constructor

+

Returns true if further processing of the tree should be aborted

+

Returns true if this node / body should be visited, false if no hit can be generated

+

Visit nodes, returns number of hits found and sorts ioChildNodeIDs so that they are at the beginning of the vector.

+

Visit a body, returns false if the algorithm should terminate because no hits can be generated anymore

+ +
+
+ +

◆ DiscardOldTree()

+ +
+
+ + + + + + + +
void QuadTree::DiscardOldTree ()
+
+ +

Will throw away the previous frame's nodes so that we can start building a new tree in the background.

+ +
+
+ +

◆ FindCollidingPairs()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::FindCollidingPairs (const BodyVectorinBodies,
const BodyIDinActiveBodies,
int inNumActiveBodies,
float inSpeculativeContactDistance,
BodyPairCollectorioPairCollector,
const ObjectLayerPairFilterinObjectLayerPairFilter 
) const
+
+ +

Find all colliding pairs between dynamic bodies, calls ioPairCollector for every pair found.

+ +
+
+ +

◆ GetBounds()

+ +
+
+ + + + + + + +
AABox QuadTree::GetBounds () const
+
+ +

Get the bounding box for this tree.

+ +
+
+ +

◆ GetName()

+ +
+
+ + + + + +
+ + + + + + + +
const char * QuadTree::GetName () const
+
+inline
+
+ +
+
+ +

◆ HasBodies()

+ +
+
+ + + + + +
+ + + + + + + +
bool QuadTree::HasBodies () const
+
+inline
+
+ +

Check if there is anything in the tree.

+ +
+
+ +

◆ Init()

+ +
+
+ + + + + + + + +
void QuadTree::Init (AllocatorinAllocator)
+
+ +

Initialization.

+ +
+
+ +

◆ IsDirty()

+ +
+
+ + + + + +
+ + + + + + + +
bool QuadTree::IsDirty () const
+
+inline
+
+ +

Check if the tree needs an UpdatePrepare/Finalize()

+ +
+
+ +

◆ NotifyBodiesAABBChanged()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::NotifyBodiesAABBChanged (const BodyVectorinBodies,
const TrackingVectorinTracking,
const BodyIDioBodyIDs,
int inNumber 
)
+
+ +

Call whenever the aabb of a body changes.

+ +
+
+ +

◆ RemoveBodies()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::RemoveBodies (const BodyVectorinBodies,
TrackingVectorioTracking,
const BodyIDioBodyIDs,
int inNumber 
)
+
+ +

Remove inNumber bodies in ioBodyIDs from the quadtree.

+ +
+
+ +

◆ SetName()

+ +
+
+ + + + + +
+ + + + + + + + +
void QuadTree::SetName (const char * inName)
+
+inline
+
+ +

Name of the tree for debugging purposes.

+ +
+
+ +

◆ UpdateFinalize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::UpdateFinalize (const BodyVectorinBodies,
const TrackingVectorinTracking,
const UpdateStateinUpdateState 
)
+
+ +
+
+ +

◆ UpdatePrepare()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void QuadTree::UpdatePrepare (const BodyVectorinBodies,
TrackingVectorioTracking,
UpdateStateoutUpdateState,
bool inFullRebuild 
)
+
+

Update the broadphase, needs to be called regularly to achieve a tight fit of the tree when bodies have been modified. UpdatePrepare() will build the tree, UpdateFinalize() will lock the root of the tree shortly and swap the trees and afterwards clean up temporary data structures.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_quad_tree.js b/class_quad_tree.js new file mode 100644 index 000000000..8291932cf --- /dev/null +++ b/class_quad_tree.js @@ -0,0 +1,31 @@ +var class_quad_tree = +[ + [ "AddState", "struct_quad_tree_1_1_add_state.html", "struct_quad_tree_1_1_add_state" ], + [ "Tracking", "struct_quad_tree_1_1_tracking.html", "struct_quad_tree_1_1_tracking" ], + [ "UpdateState", "struct_quad_tree_1_1_update_state.html", "struct_quad_tree_1_1_update_state" ], + [ "Allocator", "class_quad_tree.html#aec53c63c36f1185bd75623cbc27830d6", null ], + [ "TrackingVector", "class_quad_tree.html#ad70bd0403f84927b007159eeaebf85c1", null ], + [ "~QuadTree", "class_quad_tree.html#a236dde2058a3ccf2babbe4a289327b30", null ], + [ "AddBodiesAbort", "class_quad_tree.html#a3f04fc0ab8ec76c39e7e4ac4679e6ffa", null ], + [ "AddBodiesFinalize", "class_quad_tree.html#aaf165671ff225afec0336dca906f9219", null ], + [ "AddBodiesPrepare", "class_quad_tree.html#a79ce6a7e423da6a09ff4be8e7f6d453c", null ], + [ "CanBeUpdated", "class_quad_tree.html#aa88f08218784b62ffdf8596c74f690d6", null ], + [ "CastAABox", "class_quad_tree.html#aa28951f663c136f9b3faee823393cc1b", null ], + [ "CastRay", "class_quad_tree.html#a0f4c8a4eaa9c665153582c4a1e974457", null ], + [ "CollideAABox", "class_quad_tree.html#a894acaffc70d6ef992626359b3c65284", null ], + [ "CollideOrientedBox", "class_quad_tree.html#a3bcf63c8fc180d29f75794e979399756", null ], + [ "CollidePoint", "class_quad_tree.html#ab5538217d4a9a42986da28d64b65740d", null ], + [ "CollideSphere", "class_quad_tree.html#ab83e557e1224ba241789ce7d7da982de", null ], + [ "DiscardOldTree", "class_quad_tree.html#a6e7b9e3242b2af8c7ba11d9b6eeb0d64", null ], + [ "FindCollidingPairs", "class_quad_tree.html#a1752afb7a82b6ca130cfbad4f4f02c4e", null ], + [ "GetBounds", "class_quad_tree.html#a809502262f3bd9d11318763758ae6e7e", null ], + [ "GetName", "class_quad_tree.html#a06027549b2942685a32f433f9c304d03", null ], + [ "HasBodies", "class_quad_tree.html#a0f40b5da772779a14a6d6aedd28ae8a0", null ], + [ "Init", "class_quad_tree.html#a61023e566be172a288dfcd728118ec46", null ], + [ "IsDirty", "class_quad_tree.html#a92ac4f8879ce137be588d0c9f1d0582c", null ], + [ "NotifyBodiesAABBChanged", "class_quad_tree.html#a903406946b47220890c1a2091a5c38ad", null ], + [ "RemoveBodies", "class_quad_tree.html#ae87cda722c454860d1566a6c5f4b11dc", null ], + [ "SetName", "class_quad_tree.html#adf7d2b7bd81dd1d8a533bfa5df4a239c", null ], + [ "UpdateFinalize", "class_quad_tree.html#a95788f7c5352a8b053be1ac426d5536d", null ], + [ "UpdatePrepare", "class_quad_tree.html#ad819632f6a3b9912462c731eb017cd4f", null ] +]; \ No newline at end of file diff --git a/class_quad_tree.png b/class_quad_tree.png new file mode 100644 index 000000000..e455bc7e9 Binary files /dev/null and b/class_quad_tree.png differ diff --git a/class_quat-members.html b/class_quat-members.html new file mode 100644 index 000000000..b533d7a79 --- /dev/null +++ b/class_quat-members.html @@ -0,0 +1,178 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Quat Member List
+
+
+ +

This is the complete list of members for Quat, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Conjugated() constQuatinline
Dot(QuatArg inRHS) constQuatinline
EnsureWPositive() constQuatinline
GetAxisAngle(Vec3 &outAxis, float &outAngle) constQuat
GetEulerAngles() constQuatinline
GetPerpendicular() constQuatinline
GetRotationAngle(Vec3Arg inAxis) constQuatinline
GetSwingTwist(Quat &outSwing, Quat &outTwist) constQuat
GetTwist(Vec3Arg inAxis) constQuat
GetW() constQuatinline
GetX() constQuatinline
GetXYZ() constQuatinline
GetXYZW() constQuatinline
GetY() constQuatinline
GetZ() constQuatinline
Inversed() constQuatinline
InverseRotate(Vec3Arg inValue) constQuat
IsClose(QuatArg inRHS, float inMaxDistSq=1.0e-12f) constQuatinline
IsNaN() constQuatinline
IsNormalized(float inTolerance=1.0e-5f) constQuatinline
Length() constQuatinline
LengthSq() constQuatinline
LERP(QuatArg inDestination, float inFraction) constQuat
mValueQuat
Normalized() constQuatinline
operator!=(QuatArg inRHS) constQuatinline
operator*(QuatArg inRHS) constQuat
operator*(float inValue) constQuatinline
operator*Quatfriend
operator*(Vec3Arg inValue) constQuat
operator*=(float inValue)Quatinline
operator+(QuatArg inRHS) constQuatinline
operator+=(QuatArg inRHS)Quatinline
operator-() constQuatinline
operator-(QuatArg inRHS) constQuatinline
operator-=(QuatArg inRHS)Quatinline
operator/(float inValue) constQuatinline
operator/=(float inValue)Quatinline
operator<<Quatfriend
operator=(const Quat &inRHS)=defaultQuat
operator==(QuatArg inRHS) constQuatinline
Quat()=defaultQuatinline
Quat(const Quat &inRHS)=defaultQuat
Quat(float inX, float inY, float inZ, float inW)Quatinline
Quat(Vec4Arg inV)Quatinlineexplicit
RotateAxisX() constQuat
RotateAxisY() constQuat
RotateAxisZ() constQuat
Set(float inX, float inY, float inZ, float inW)Quatinline
SetW(float inW)Quatinline
SetX(float inX)Quatinline
SetY(float inY)Quatinline
SetZ(float inZ)Quatinline
sEulerAngles(Vec3Arg inAngles)Quatinlinestatic
sFromTo(Vec3Arg inFrom, Vec3Arg inTo)Quatstatic
sIdentity()Quatinlinestatic
SLERP(QuatArg inDestination, float inFraction) constQuat
sLoadFloat3Unsafe(const Float3 &inV)Quatstatic
sRandom(Random &inRandom)Quatinlinestatic
sRotation(Vec3Arg inAxis, float inAngle)Quatstatic
StoreFloat3(Float3 *outV) constQuat
sZero()Quatinlinestatic
+
+ + + + diff --git a/class_quat.html b/class_quat.html new file mode 100644 index 000000000..21e02c607 --- /dev/null +++ b/class_quat.html @@ -0,0 +1,2053 @@ + + + + + + + +Jolt Physics: Quat Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Quat Class Reference
+
+
+ +

#include <Quat.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_INLINE void GetAxisAngle (Vec3 &outAxis, float &outAngle) const
 Get axis and angle that represents this quaternion, outAngle will always be in the range \([0, \pi]\).
 
Vec3 GetEulerAngles () const
 Conversion to Euler angles. Rotation order is X then Y then Z (RotZ * RotY * RotX). Angles in radians.
 
JPH_INLINE Vec3 operator* (Vec3Arg inValue) const
 Rotate a vector by this quaternion.
 
JPH_INLINE Vec3 InverseRotate (Vec3Arg inValue) const
 Rotate a vector by the inverse of this quaternion.
 
JPH_INLINE Vec3 RotateAxisX () const
 Rotate a the vector (1, 0, 0) with this quaternion.
 
JPH_INLINE Vec3 RotateAxisY () const
 Rotate a the vector (0, 1, 0) with this quaternion.
 
JPH_INLINE Vec3 RotateAxisZ () const
 Rotate a the vector (0, 0, 1) with this quaternion.
 
JPH_INLINE float Dot (QuatArg inRHS) const
 Dot product.
 
JPH_INLINE Quat Conjugated () const
 The conjugate [w, -x, -y, -z] is the same as the inverse for unit quaternions.
 
JPH_INLINE Quat Inversed () const
 Get inverse quaternion.
 
JPH_INLINE Quat EnsureWPositive () const
 Ensures that the W component is positive by negating the entire quaternion if it is not. This is useful when you want to store a quaternion as a 3 vector by discarding W and reconstructing it as sqrt(1 - x^2 - y^2 - z^2).
 
JPH_INLINE Quat GetPerpendicular () const
 Get a quaternion that is perpendicular to this quaternion.
 
JPH_INLINE float GetRotationAngle (Vec3Arg inAxis) const
 Get rotation angle around inAxis (uses Swing Twist Decomposition to get the twist quaternion and uses q(axis, angle) = [cos(angle / 2), axis * sin(angle / 2)])
 
JPH_INLINE Quat GetTwist (Vec3Arg inAxis) const
 
JPH_INLINE void GetSwingTwist (Quat &outSwing, Quat &outTwist) const
 
JPH_INLINE Quat LERP (QuatArg inDestination, float inFraction) const
 
JPH_INLINE Quat SLERP (QuatArg inDestination, float inFraction) const
 
JPH_INLINE void StoreFloat3 (Float3 *outV) const
 Store 3 as floats to memory (X, Y and Z component)
 
Constructors
 Quat ()=default
 Intentionally not initialized for performance reasons.
 
 Quat (const Quat &inRHS)=default
 
Quatoperator= (const Quat &inRHS)=default
 
 Quat (float inX, float inY, float inZ, float inW)
 
 Quat (Vec4Arg inV)
 
Tests
bool operator== (QuatArg inRHS) const
 Check if two quaternions are exactly equal.
 
bool operator!= (QuatArg inRHS) const
 Check if two quaternions are different.
 
bool IsClose (QuatArg inRHS, float inMaxDistSq=1.0e-12f) const
 If this quaternion is close to inRHS. Note that q and -q represent the same rotation, this is not checked here.
 
bool IsNormalized (float inTolerance=1.0e-5f) const
 If the length of this quaternion is 1 +/- inTolerance.
 
bool IsNaN () const
 If any component of this quaternion is a NaN (not a number)
 
Get components
JPH_INLINE float GetX () const
 Get X component (imaginary part i)
 
JPH_INLINE float GetY () const
 Get Y component (imaginary part j)
 
JPH_INLINE float GetZ () const
 Get Z component (imaginary part k)
 
JPH_INLINE float GetW () const
 Get W component (real part)
 
JPH_INLINE Vec3 GetXYZ () const
 Get the imaginary part of the quaternion.
 
JPH_INLINE Vec4 GetXYZW () const
 Get the quaternion as a Vec4.
 
JPH_INLINE void SetX (float inX)
 Set individual components.
 
JPH_INLINE void SetY (float inY)
 
JPH_INLINE void SetZ (float inZ)
 
JPH_INLINE void SetW (float inW)
 
JPH_INLINE void Set (float inX, float inY, float inZ, float inW)
 Set all components.
 
Length / normalization operations
JPH_INLINE float LengthSq () const
 
JPH_INLINE float Length () const
 
JPH_INLINE Quat Normalized () const
 Normalize the quaternion (make it length 1)
 
+ + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static JPH_INLINE Quat sRotation (Vec3Arg inAxis, float inAngle)
 Rotation from axis and angle.
 
static JPH_INLINE Quat sFromTo (Vec3Arg inFrom, Vec3Arg inTo)
 
template<class Random >
static Quat sRandom (Random &inRandom)
 Random unit quaternion.
 
static Quat sEulerAngles (Vec3Arg inAngles)
 Conversion from Euler angles. Rotation order is X then Y then Z (RotZ * RotY * RotX). Angles in radians.
 
static JPH_INLINE Quat sLoadFloat3Unsafe (const Float3 &inV)
 Load 3 floats from memory (X, Y and Z component and then calculates W) reads 32 bits extra which it doesn't use.
 
Default quaternions
static JPH_INLINE Quat sZero ()
 
static JPH_INLINE Quat sIdentity ()
 
+ + + + +

+Public Attributes

Vec4 mValue
 4 vector that stores [x, y, z, w] parts of the quaternion
 
+ + + + +

+Friends

ostream & operator<< (ostream &inStream, QuatArg inQ)
 To String.
 
+ + + + + + + + + + + + + + + + + + + + + + + +

Additions / multiplications

JPH_INLINE void operator+= (QuatArg inRHS)
 
JPH_INLINE void operator-= (QuatArg inRHS)
 
JPH_INLINE void operator*= (float inValue)
 
JPH_INLINE void operator/= (float inValue)
 
JPH_INLINE Quat operator- () const
 
JPH_INLINE Quat operator+ (QuatArg inRHS) const
 
JPH_INLINE Quat operator- (QuatArg inRHS) const
 
JPH_INLINE Quat operator* (QuatArg inRHS) const
 
JPH_INLINE Quat operator* (float inValue) const
 
JPH_INLINE Quat operator/ (float inValue) const
 
Quat operator* (float inValue, QuatArg inRHS)
 
+

Detailed Description

+

Quaternion class, quaternions are 4 dimensional vectors which can describe rotations in 3 dimensional space if their length is 1.

+

They are written as:

+

\(q = w + x \: i + y \: j + z \: k\)

+

or in vector notation:

+

\(q = [w, v] = [w, x, y, z]\)

+

Where:

+

w = the real part v = the imaginary part, (x, y, z)

+

Note that we store the quaternion in a Vec4 as [x, y, z, w] because that makes it easy to extract the rotation axis of the quaternion:

+

q = [cos(angle / 2), sin(angle / 2) * rotation_axis]

+

Constructor & Destructor Documentation

+ +

◆ Quat() [1/4]

+ +
+
+ + + + + +
+ + + + + + + +
Quat::Quat ()
+
+inlinedefault
+
+ +

Intentionally not initialized for performance reasons.

+ +
+
+ +

◆ Quat() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + +
Quat::Quat (const QuatinRHS)
+
+default
+
+ +
+
+ +

◆ Quat() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Quat::Quat (float inX,
float inY,
float inZ,
float inW 
)
+
+inline
+
+ +
+
+ +

◆ Quat() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + +
Quat::Quat (Vec4Arg inV)
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ Conjugated()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Quat Quat::Conjugated () const
+
+inline
+
+ +

The conjugate [w, -x, -y, -z] is the same as the inverse for unit quaternions.

+ +
+
+ +

◆ Dot()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE float Quat::Dot (QuatArg inRHS) const
+
+inline
+
+ +

Dot product.

+ +
+
+ +

◆ EnsureWPositive()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Quat Quat::EnsureWPositive () const
+
+inline
+
+ +

Ensures that the W component is positive by negating the entire quaternion if it is not. This is useful when you want to store a quaternion as a 3 vector by discarding W and reconstructing it as sqrt(1 - x^2 - y^2 - z^2).

+ +
+
+ +

◆ GetAxisAngle()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Quat::GetAxisAngle (Vec3outAxis,
float & outAngle 
) const
+
+ +

Get axis and angle that represents this quaternion, outAngle will always be in the range \([0, \pi]\).

+ +
+
+ +

◆ GetEulerAngles()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Quat::GetEulerAngles () const
+
+inline
+
+ +

Conversion to Euler angles. Rotation order is X then Y then Z (RotZ * RotY * RotX). Angles in radians.

+ +
+
+ +

◆ GetPerpendicular()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Quat Quat::GetPerpendicular () const
+
+inline
+
+ +

Get a quaternion that is perpendicular to this quaternion.

+ +
+
+ +

◆ GetRotationAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE float Quat::GetRotationAngle (Vec3Arg inAxis) const
+
+inline
+
+ +

Get rotation angle around inAxis (uses Swing Twist Decomposition to get the twist quaternion and uses q(axis, angle) = [cos(angle / 2), axis * sin(angle / 2)])

+ +
+
+ +

◆ GetSwingTwist()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Quat::GetSwingTwist (QuatoutSwing,
QuatoutTwist 
) const
+
+

Decomposes quaternion into swing and twist component:

+

\(q = q_{swing} \: q_{twist}\)

+

where \(q_{swing} \: \hat{x} = q_{twist} \: \hat{y} = q_{twist} \: \hat{z} = 0\)

+

In other words:

+
    +
  • \(q_{twist}\) only rotates around the X-axis.
  • +
  • \(q_{swing}\) only rotates around the Y and Z-axis.
  • +
+
See also
Gino van den Bergen - Rotational Joint Limits in Quaternion Space - GDC 2016
+ +
+
+ +

◆ GetTwist()

+ +
+
+ + + + + + + + +
Quat Quat::GetTwist (Vec3Arg inAxis) const
+
+

Swing Twist Decomposition: any quaternion can be split up as:

+

+\[q = q_{swing} \: q_{twist}\] +

+

where \(q_{twist}\) rotates only around axis v.

+

\(q_{twist}\) is:

+

+\[q_{twist} = \frac{[q_w, q_{ijk} \cdot v \: v]}{\left|[q_w, q_{ijk} \cdot v \: v]\right|}\] +

+

where q_w is the real part of the quaternion and q_i the imaginary part (a 3 vector).

+

The swing can then be calculated as:

+

+\[q_{swing} = q \: q_{twist}^* \] +

+

Where \(q_{twist}^*\) = complex conjugate of \(q_{twist}\)

+ +
+
+ +

◆ GetW()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Quat::GetW () const
+
+inline
+
+ +

Get W component (real part)

+ +
+
+ +

◆ GetX()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Quat::GetX () const
+
+inline
+
+ +

Get X component (imaginary part i)

+ +
+
+ +

◆ GetXYZ()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec3 Quat::GetXYZ () const
+
+inline
+
+ +

Get the imaginary part of the quaternion.

+ +
+
+ +

◆ GetXYZW()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Vec4 Quat::GetXYZW () const
+
+inline
+
+ +

Get the quaternion as a Vec4.

+ +
+
+ +

◆ GetY()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Quat::GetY () const
+
+inline
+
+ +

Get Y component (imaginary part j)

+ +
+
+ +

◆ GetZ()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Quat::GetZ () const
+
+inline
+
+ +

Get Z component (imaginary part k)

+ +
+
+ +

◆ Inversed()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Quat Quat::Inversed () const
+
+inline
+
+ +

Get inverse quaternion.

+ +
+
+ +

◆ InverseRotate()

+ +
+
+ + + + + + + + +
Vec3 Quat::InverseRotate (Vec3Arg inValue) const
+
+ +

Rotate a vector by the inverse of this quaternion.

+ +
+
+ +

◆ IsClose()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool Quat::IsClose (QuatArg inRHS,
float inMaxDistSq = 1.0e-12f 
) const
+
+inline
+
+ +

If this quaternion is close to inRHS. Note that q and -q represent the same rotation, this is not checked here.

+ +
+
+ +

◆ IsNaN()

+ +
+
+ + + + + +
+ + + + + + + +
bool Quat::IsNaN () const
+
+inline
+
+ +

If any component of this quaternion is a NaN (not a number)

+ +
+
+ +

◆ IsNormalized()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Quat::IsNormalized (float inTolerance = 1.0e-5f) const
+
+inline
+
+ +

If the length of this quaternion is 1 +/- inTolerance.

+ +
+
+ +

◆ Length()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Quat::Length () const
+
+inline
+
+

Length of quaternion.

Returns
Length of quaternion ( \(|v|\))
+ +
+
+ +

◆ LengthSq()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Quat::LengthSq () const
+
+inline
+
+

Squared length of quaternion.

Returns
Squared length of quaternion ( \(|v|^2\))
+ +
+
+ +

◆ LERP()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Quat Quat::LERP (QuatArg inDestination,
float inFraction 
) const
+
+

Linear interpolation between two quaternions (for small steps).

Parameters
+ + + +
inFractionis in the range [0, 1]
inDestinationThe destination quaternion
+
+
+
Returns
(1 - inFraction) * this + fraction * inDestination
+ +
+
+ +

◆ Normalized()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Quat Quat::Normalized () const
+
+inline
+
+ +

Normalize the quaternion (make it length 1)

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Quat::operator!= (QuatArg inRHS) const
+
+inline
+
+ +

Check if two quaternions are different.

+ +
+
+ +

◆ operator*() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Quat Quat::operator* (float inValue) const
+
+inline
+
+ +
+
+ +

◆ operator*() [2/3]

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN Quat Quat::operator* (QuatArg inRHS) const
+
+ +
+
+ +

◆ operator*() [3/3]

+ +
+
+ + + + + + + + +
Vec3 Quat::operator* (Vec3Arg inValue) const
+
+ +

Rotate a vector by this quaternion.

+ +
+
+ +

◆ operator*=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Quat::operator*= (float inValue)
+
+inline
+
+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Quat Quat::operator+ (QuatArg inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator+=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Quat::operator+= (QuatArg inRHS)
+
+inline
+
+ +
+
+ +

◆ operator-() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE Quat Quat::operator- () const
+
+inline
+
+ +
+
+ +

◆ operator-() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Quat Quat::operator- (QuatArg inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator-=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Quat::operator-= (QuatArg inRHS)
+
+inline
+
+ +
+
+ +

◆ operator/()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Quat Quat::operator/ (float inValue) const
+
+inline
+
+ +
+
+ +

◆ operator/=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Quat::operator/= (float inValue)
+
+inline
+
+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
Quat & Quat::operator= (const QuatinRHS)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Quat::operator== (QuatArg inRHS) const
+
+inline
+
+ +

Check if two quaternions are exactly equal.

+ +
+
+ +

◆ RotateAxisX()

+ +
+
+ + + + + + + +
Vec3 Quat::RotateAxisX () const
+
+ +

Rotate a the vector (1, 0, 0) with this quaternion.

+ +
+
+ +

◆ RotateAxisY()

+ +
+
+ + + + + + + +
Vec3 Quat::RotateAxisY () const
+
+ +

Rotate a the vector (0, 1, 0) with this quaternion.

+ +
+
+ +

◆ RotateAxisZ()

+ +
+
+ + + + + + + +
Vec3 Quat::RotateAxisZ () const
+
+ +

Rotate a the vector (0, 0, 1) with this quaternion.

+ +
+
+ +

◆ Set()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE void Quat::Set (float inX,
float inY,
float inZ,
float inW 
)
+
+inline
+
+ +

Set all components.

+ +
+
+ +

◆ SetW()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Quat::SetW (float inW)
+
+inline
+
+ +
+
+ +

◆ SetX()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Quat::SetX (float inX)
+
+inline
+
+ +

Set individual components.

+ +
+
+ +

◆ SetY()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Quat::SetY (float inY)
+
+inline
+
+ +
+
+ +

◆ SetZ()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Quat::SetZ (float inZ)
+
+inline
+
+ +
+
+ +

◆ sEulerAngles()

+ +
+
+ + + + + +
+ + + + + + + + +
Quat Quat::sEulerAngles (Vec3Arg inAngles)
+
+inlinestatic
+
+ +

Conversion from Euler angles. Rotation order is X then Y then Z (RotZ * RotY * RotX). Angles in radians.

+ +
+
+ +

◆ sFromTo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Quat Quat::sFromTo (Vec3Arg inFrom,
Vec3Arg inTo 
)
+
+static
+
+

Create quaternion that rotates a vector from the direction of inFrom to the direction of inTo along the shortest path

See also
https://www.euclideanspace.com/maths/algebra/vectors/angleBetween/index.htm
+ +
+
+ +

◆ sIdentity()

+ +
+
+ + + + + +
+ + + + + + + +
static JPH_INLINE Quat Quat::sIdentity ()
+
+inlinestatic
+
+
Returns
[1, 0, 0, 0] (or in storage format Quat(0, 0, 0, 1))
+ +
+
+ +

◆ SLERP()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Quat Quat::SLERP (QuatArg inDestination,
float inFraction 
) const
+
+

Spherical linear interpolation between two quaternions.

Parameters
+ + + +
inFractionis in the range [0, 1]
inDestinationThe destination quaternion
+
+
+
Returns
When fraction is zero this quaternion is returned, when fraction is 1 inDestination is returned. When fraction is between 0 and 1 an interpolation along the shortest path is returned.
+ +
+
+ +

◆ sLoadFloat3Unsafe()

+ +
+
+ + + + + +
+ + + + + + + + +
Quat Quat::sLoadFloat3Unsafe (const Float3inV)
+
+static
+
+ +

Load 3 floats from memory (X, Y and Z component and then calculates W) reads 32 bits extra which it doesn't use.

+ +
+
+ +

◆ sRandom()

+ +
+
+
+template<class Random >
+ + + + + +
+ + + + + + + + +
Quat Quat::sRandom (Random & inRandom)
+
+inlinestatic
+
+ +

Random unit quaternion.

+ +
+
+ +

◆ sRotation()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Quat Quat::sRotation (Vec3Arg inAxis,
float inAngle 
)
+
+static
+
+ +

Rotation from axis and angle.

+ +
+
+ +

◆ StoreFloat3()

+ +
+
+ + + + + + + + +
void Quat::StoreFloat3 (Float3outV) const
+
+ +

Store 3 as floats to memory (X, Y and Z component)

+ +
+
+ +

◆ sZero()

+ +
+
+ + + + + +
+ + + + + + + +
static JPH_INLINE Quat Quat::sZero ()
+
+inlinestatic
+
+
Returns
[0, 0, 0, 0]
+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ operator*

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Quat operator* (float inValue,
QuatArg inRHS 
)
+
+friend
+
+ +
+
+ +

◆ operator<<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ostream & operator<< (ostream & inStream,
QuatArg inQ 
)
+
+friend
+
+ +

To String.

+ +
+
+

Member Data Documentation

+ +

◆ mValue

+ +
+
+ + + + +
Vec4 Quat::mValue
+
+ +

4 vector that stores [x, y, z, w] parts of the quaternion

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_quat.js b/class_quat.js new file mode 100644 index 000000000..ca9e52cf3 --- /dev/null +++ b/class_quat.js @@ -0,0 +1,58 @@ +var class_quat = +[ + [ "Quat", "class_quat.html#aab09b7638f6936a9ad7a1e4ffce606e8", null ], + [ "Quat", "class_quat.html#a0657861b58c5638d657b9232d0872789", null ], + [ "Quat", "class_quat.html#add07307f26b40e8ad4dc1bad89e837b9", null ], + [ "Quat", "class_quat.html#aa27e46b0f37c06e419e552ec8473abd1", null ], + [ "Conjugated", "class_quat.html#ac69dfd8cdf79a19b8c3f385125ff5ddc", null ], + [ "Dot", "class_quat.html#aa95ff0fd4a249749b023c32a5be3a44f", null ], + [ "EnsureWPositive", "class_quat.html#a9f563ca8c8a8b71a0aa340d12080c2ef", null ], + [ "GetAxisAngle", "class_quat.html#a618a8eb64122263b8c64109f03ac47b5", null ], + [ "GetEulerAngles", "class_quat.html#ae0e71415ee746c38c27b04e7dbc9b4ed", null ], + [ "GetPerpendicular", "class_quat.html#abba5ae611cba89b67e967945ffe32c8f", null ], + [ "GetRotationAngle", "class_quat.html#ac72ff53fa4780399aa0755e2ca31b450", null ], + [ "GetSwingTwist", "class_quat.html#a7bb8b016622e5ad8f361c52f9037f1aa", null ], + [ "GetTwist", "class_quat.html#aa30f29eff5df0de717de979bf3aae295", null ], + [ "GetW", "class_quat.html#a13d0159a54a94e6a90dc5952f454b09e", null ], + [ "GetX", "class_quat.html#a3fb43a7bca4b20ce7573030fd826aa96", null ], + [ "GetXYZ", "class_quat.html#afa7fe10bf8a457fb2d524791ccd79ec4", null ], + [ "GetXYZW", "class_quat.html#a7800c0c4cb017273d86793d8a09bf136", null ], + [ "GetY", "class_quat.html#a21f44684684b475d9f5d02ed9c580def", null ], + [ "GetZ", "class_quat.html#a38dfc20f7628eee4492125a41ad91764", null ], + [ "Inversed", "class_quat.html#ac04a00570e1a5e96d49398d40d493bf3", null ], + [ "InverseRotate", "class_quat.html#a108350bfce9aa53b1af87fbe2698f6f4", null ], + [ "IsClose", "class_quat.html#a9c0afa78ae80b13a6c8adf1240a7c95e", null ], + [ "IsNaN", "class_quat.html#a62b95b1c1d36ecbd6f9732ca4789a7bf", null ], + [ "IsNormalized", "class_quat.html#ae628a9685f0be008f18752ea9302b4e4", null ], + [ "Length", "class_quat.html#ab93ff288ad62172d343e11ce4fbf07d0", null ], + [ "LengthSq", "class_quat.html#a60f30c650e027a892e699c156c7eca67", null ], + [ "LERP", "class_quat.html#a54dc8061046dd6ba3fb3a1965cf7319c", null ], + [ "Normalized", "class_quat.html#a9d4b1ee8c4685a4589766e1c8cacc268", null ], + [ "operator!=", "class_quat.html#a23c4e00d9d6905c284c728cf3e184934", null ], + [ "operator*", "class_quat.html#ae6b513e0018c4191b92eee8fb4594a5e", null ], + [ "operator*", "class_quat.html#a4e344b30517b4411443b17078e5bb218", null ], + [ "operator*", "class_quat.html#a646b3edebee182d86159eed987ba91a0", null ], + [ "operator*=", "class_quat.html#ada769d2a82345ec6a2abd706216d46e2", null ], + [ "operator+", "class_quat.html#a05bb92518353f7309399282af7e906e3", null ], + [ "operator+=", "class_quat.html#a581ca135acfa86ebf00bb6e1636aef29", null ], + [ "operator-", "class_quat.html#abdb3a55008ba319143df69f97b94d7e5", null ], + [ "operator-", "class_quat.html#a7c2cc189b41905f2d02154a2d4863e19", null ], + [ "operator-=", "class_quat.html#a8297012460ea2f4851ed1f0f80eeddb9", null ], + [ "operator/", "class_quat.html#a022e859768c59cdbdef45cdacada80d2", null ], + [ "operator/=", "class_quat.html#afc3765d179c478cf2c08d76bd9391bfa", null ], + [ "operator=", "class_quat.html#a4a0da4e3fde81586973da99956f7d51c", null ], + [ "operator==", "class_quat.html#a55ec695a492daa028921cca4740db11b", null ], + [ "RotateAxisX", "class_quat.html#ad591c3ca827733b3be275ffaf808e838", null ], + [ "RotateAxisY", "class_quat.html#adb1d1a70ed64c0a6fadc849126306706", null ], + [ "RotateAxisZ", "class_quat.html#ab226b2147a748e53008556bcf1a3cd76", null ], + [ "Set", "class_quat.html#a9fb5be70301ba85a3292119d71a5e9c4", null ], + [ "SetW", "class_quat.html#ae32d59954e6b05258af7123c00141654", null ], + [ "SetX", "class_quat.html#ae53457812ce9ffa5fb7b6b8a3c5c97e5", null ], + [ "SetY", "class_quat.html#a4a4db6760750a34c25199455c07b6bb9", null ], + [ "SetZ", "class_quat.html#a3f494dde1e2e0bc50dbc2abd13210b23", null ], + [ "SLERP", "class_quat.html#afc3276d69ac8713afddf3cf970c27371", null ], + [ "StoreFloat3", "class_quat.html#ae95e7b6c9f4167b91b674a696c681c6e", null ], + [ "operator*", "class_quat.html#a889abe46c8a28cfafa2a20492ecb9b3a", null ], + [ "operator<<", "class_quat.html#add2e8fbe3d49728e6cd82834f0f2ef3c", null ], + [ "mValue", "class_quat.html#afad087a5997d1318f544b5c9819c4d9b", null ] +]; \ No newline at end of file diff --git a/class_r_t_t_i-members.html b/class_r_t_t_i-members.html new file mode 100644 index 000000000..ede024f15 --- /dev/null +++ b/class_r_t_t_i-members.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RTTI Member List
+
+
+ +

This is the complete list of members for RTTI, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddAttribute(const SerializableAttribute &inAttribute)RTTI
AddBaseClass(const RTTI *inRTTI, int inOffset)RTTI
CastTo(const void *inObject, const RTTI *inRTTI) constRTTI
CreateObject() constRTTI
DestructObject(void *inObject) constRTTI
GetAttribute(int inIdx) constRTTI
GetAttributeCount() constRTTI
GetBaseClass(int inIdx) constRTTI
GetBaseClassCount() constRTTI
GetHash() constRTTI
GetName() constRTTIinline
GetSize() constRTTIinline
IsAbstract() constRTTIinline
IsKindOf(const RTTI *inRTTI) constRTTI
mAttributesRTTIprotected
mBaseClassesRTTIprotected
mCreateRTTIprotected
mDestructRTTIprotected
mNameRTTIprotected
mSizeRTTIprotected
operator!=(const RTTI &inRHS) constRTTIinline
operator==(const RTTI &inRHS) constRTTI
pCreateObjectFunction typedefRTTI
pCreateRTTIFunction typedefRTTI
pDestructObjectFunction typedefRTTI
RTTI(const char *inName, int inSize, pCreateObjectFunction inCreateObject, pDestructObjectFunction inDestructObject)RTTI
RTTI(const char *inName, int inSize, pCreateObjectFunction inCreateObject, pDestructObjectFunction inDestructObject, pCreateRTTIFunction inCreateRTTI)RTTI
SetName(const char *inName)RTTIinline
+
+ + + + diff --git a/class_r_t_t_i.html b/class_r_t_t_i.html new file mode 100644 index 000000000..45cc93dda --- /dev/null +++ b/class_r_t_t_i.html @@ -0,0 +1,944 @@ + + + + + + + +Jolt Physics: RTTI Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RTTI Class Reference
+
+
+ +

#include <RTTI.h>

+ + + + + +

+Classes

struct  BaseClass
 Base class information. More...
 
+ + + + + + + + + + +

+Public Types

using pCreateObjectFunction = void *(*)()
 Function to create an object.
 
using pDestructObjectFunction = void(*)(void *inObject)
 Function to destroy an object.
 
using pCreateRTTIFunction = void(*)(RTTI &inRTTI)
 Function to initialize the runtime type info structure.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RTTI (const char *inName, int inSize, pCreateObjectFunction inCreateObject, pDestructObjectFunction inDestructObject)
 Constructor.
 
 RTTI (const char *inName, int inSize, pCreateObjectFunction inCreateObject, pDestructObjectFunction inDestructObject, pCreateRTTIFunction inCreateRTTI)
 
const char * GetName () const
 
void SetName (const char *inName)
 
int GetSize () const
 
bool IsAbstract () const
 
int GetBaseClassCount () const
 
const RTTIGetBaseClass (int inIdx) const
 
uint32 GetHash () const
 
void * CreateObject () const
 Create an object of this type (returns nullptr if the object is abstract)
 
void DestructObject (void *inObject) const
 Destruct object of this type (does nothing if the object is abstract)
 
void AddBaseClass (const RTTI *inRTTI, int inOffset)
 Add base class.
 
bool operator== (const RTTI &inRHS) const
 Equality operators.
 
bool operator!= (const RTTI &inRHS) const
 
bool IsKindOf (const RTTI *inRTTI) const
 Test if this class is derived from class of type inRTTI.
 
const void * CastTo (const void *inObject, const RTTI *inRTTI) const
 Cast inObject of this type to object of type inRTTI, returns nullptr if the cast is unsuccessful.
 
void AddAttribute (const SerializableAttribute &inAttribute)
 Attribute access.
 
int GetAttributeCount () const
 
const SerializableAttributeGetAttribute (int inIdx) const
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Attributes

const char * mName
 Class name.
 
int mSize
 Class size.
 
StaticArray< BaseClass, 4 > mBaseClasses
 Names of base classes.
 
pCreateObjectFunction mCreate
 Pointer to a function that will create a new instance of this class.
 
pDestructObjectFunction mDestruct
 Pointer to a function that will destruct an object of this class.
 
StaticArray< SerializableAttribute, 32 > mAttributes
 All attributes of this class.
 
+

Detailed Description

+

Light weight runtime type information system. This way we don't need to turn on the default RTTI system of the compiler (introducing a possible overhead for every class)

+

Notes:

    +
  • An extra virtual member function is added. This adds 8 bytes to the size of an instance of the class (unless you are already using virtual functions).
  • +
+

To use RTTI on a specific class use:

+

Header file:

class Foo
+{
+    JPH_DECLARE_RTTI_VIRTUAL_BASE(Foo)
+}
+
+class Bar : public Foo
+{
+    JPH_DECLARE_RTTI_VIRTUAL(Bar)
+};
+

Implementation file:

JPH_IMPLEMENT_RTTI_VIRTUAL_BASE(Foo)
+{
+}
+
+JPH_IMPLEMENT_RTTI_VIRTUAL(Bar)
+{
+    JPH_ADD_BASE_CLASS(Bar, Foo) // Multiple inheritance is allowed, just do JPH_ADD_BASE_CLASS for every base class
+}
+

For abstract classes use:

+

Header file:

class Foo
+{
+    JPH_DECLARE_RTTI_ABSTRACT_BASE(Foo)
+
+public:
+    virtual void AbstractFunction() = 0;
+}
+
+class Bar : public Foo
+{
+    JPH_DECLARE_RTTI_VIRTUAL(Bar)
+
+public:
+    virtual void AbstractFunction() { } // Function is now implemented so this class is no longer abstract
+};
+

Implementation file:

JPH_IMPLEMENT_RTTI_ABSTRACT_BASE(Foo)
+{
+}
+
+JPH_IMPLEMENT_RTTI_VIRTUAL(Bar)
+{
+    JPH_ADD_BASE_CLASS(Bar, Foo)
+}
+

Example of usage in a program:

Foo *foo_ptr = new Foo;
+Foo *bar_ptr = new Bar;
+
+IsType(foo_ptr, RTTI(Bar)) returns false
+IsType(bar_ptr, RTTI(Bar)) returns true
+
+IsKindOf(foo_ptr, RTTI(Bar)) returns false
+IsKindOf(bar_ptr, RTTI(Foo)) returns true
+IsKindOf(bar_ptr, RTTI(Bar)) returns true
+
+StaticCast<Bar>(foo_ptr) asserts and returns foo_ptr casted to pBar
+StaticCast<Bar>(bar_ptr) returns bar_ptr casted to pBar
+
+DynamicCast<Bar>(foo_ptr) returns nullptr
+DynamicCast<Bar>(bar_ptr) returns bar_ptr casted to pBar
+

Other feature of DynamicCast:

class A { int data[5]; };
+class B { int data[7]; };
+class C : public A, public B { int data[9]; };
+
+C *c = new C;
+A *a = c;
+

Note that:

B *b = (B *)a;
+

generates an invalid pointer,

B *b = StaticCast<B>(a);
+

doesn't compile, and

B *b = DynamicCast<B>(a);
+

does the correct cast

+

Member Typedef Documentation

+ +

◆ pCreateObjectFunction

+ +
+
+ + + + +
using RTTI::pCreateObjectFunction = void *(*)()
+
+ +

Function to create an object.

+ +
+
+ +

◆ pCreateRTTIFunction

+ +
+
+ + + + +
using RTTI::pCreateRTTIFunction = void (*)(RTTI &inRTTI)
+
+ +

Function to initialize the runtime type info structure.

+ +
+
+ +

◆ pDestructObjectFunction

+ +
+
+ + + + +
using RTTI::pDestructObjectFunction = void (*)(void *inObject)
+
+ +

Function to destroy an object.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ RTTI() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN RTTI::RTTI (const char * inName,
int inSize,
pCreateObjectFunction inCreateObject,
pDestructObjectFunction inDestructObject 
)
+
+ +

Constructor.

+ +
+
+ +

◆ RTTI() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RTTI::RTTI (const char * inName,
int inSize,
pCreateObjectFunction inCreateObject,
pDestructObjectFunction inDestructObject,
pCreateRTTIFunction inCreateRTTI 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ AddAttribute()

+ +
+
+ + + + + + + + +
void RTTI::AddAttribute (const SerializableAttributeinAttribute)
+
+ +

Attribute access.

+ +
+
+ +

◆ AddBaseClass()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void RTTI::AddBaseClass (const RTTIinRTTI,
int inOffset 
)
+
+ +

Add base class.

+ +
+
+ +

◆ CastTo()

+ +
+
+ + + + + + + + + + + + + + + + + + +
const void * RTTI::CastTo (const void * inObject,
const RTTIinRTTI 
) const
+
+ +

Cast inObject of this type to object of type inRTTI, returns nullptr if the cast is unsuccessful.

+ +
+
+ +

◆ CreateObject()

+ +
+
+ + + + + + + +
void * RTTI::CreateObject () const
+
+ +

Create an object of this type (returns nullptr if the object is abstract)

+ +
+
+ +

◆ DestructObject()

+ +
+
+ + + + + + + + +
void RTTI::DestructObject (void * inObject) const
+
+ +

Destruct object of this type (does nothing if the object is abstract)

+ +
+
+ +

◆ GetAttribute()

+ +
+
+ + + + + + + + +
const SerializableAttribute & RTTI::GetAttribute (int inIdx) const
+
+ +
+
+ +

◆ GetAttributeCount()

+ +
+
+ + + + + + + +
int RTTI::GetAttributeCount () const
+
+ +
+
+ +

◆ GetBaseClass()

+ +
+
+ + + + + + + + +
const RTTI * RTTI::GetBaseClass (int inIdx) const
+
+ +
+
+ +

◆ GetBaseClassCount()

+ +
+
+ + + + + + + +
int RTTI::GetBaseClassCount () const
+
+ +
+
+ +

◆ GetHash()

+ +
+
+ + + + + + + +
uint32 RTTI::GetHash () const
+
+ +
+
+ +

◆ GetName()

+ +
+
+ + + + + +
+ + + + + + + +
const char * RTTI::GetName () const
+
+inline
+
+ +
+
+ +

◆ GetSize()

+ +
+
+ + + + + +
+ + + + + + + +
int RTTI::GetSize () const
+
+inline
+
+ +
+
+ +

◆ IsAbstract()

+ +
+
+ + + + + +
+ + + + + + + +
bool RTTI::IsAbstract () const
+
+inline
+
+ +
+
+ +

◆ IsKindOf()

+ +
+
+ + + + + + + + +
bool RTTI::IsKindOf (const RTTIinRTTI) const
+
+ +

Test if this class is derived from class of type inRTTI.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool RTTI::operator!= (const RTTIinRHS) const
+
+inline
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool RTTI::operator== (const RTTIinRHS) const
+
+ +

Equality operators.

+ +
+
+ +

◆ SetName()

+ +
+
+ + + + + +
+ + + + + + + + +
void RTTI::SetName (const char * inName)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mAttributes

+ +
+
+ + + + + +
+ + + + +
StaticArray<SerializableAttribute, 32> RTTI::mAttributes
+
+protected
+
+ +

All attributes of this class.

+ +
+
+ +

◆ mBaseClasses

+ +
+
+ + + + + +
+ + + + +
StaticArray<BaseClass, 4> RTTI::mBaseClasses
+
+protected
+
+ +

Names of base classes.

+ +
+
+ +

◆ mCreate

+ +
+
+ + + + + +
+ + + + +
pCreateObjectFunction RTTI::mCreate
+
+protected
+
+ +

Pointer to a function that will create a new instance of this class.

+ +
+
+ +

◆ mDestruct

+ +
+
+ + + + + +
+ + + + +
pDestructObjectFunction RTTI::mDestruct
+
+protected
+
+ +

Pointer to a function that will destruct an object of this class.

+ +
+
+ +

◆ mName

+ +
+
+ + + + + +
+ + + + +
const char* RTTI::mName
+
+protected
+
+ +

Class name.

+ +
+
+ +

◆ mSize

+ +
+
+ + + + + +
+ + + + +
int RTTI::mSize
+
+protected
+
+ +

Class size.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_r_t_t_i.js b/class_r_t_t_i.js new file mode 100644 index 000000000..6a8a40a3a --- /dev/null +++ b/class_r_t_t_i.js @@ -0,0 +1,32 @@ +var class_r_t_t_i = +[ + [ "BaseClass", "struct_r_t_t_i_1_1_base_class.html", "struct_r_t_t_i_1_1_base_class" ], + [ "pCreateObjectFunction", "class_r_t_t_i.html#a2be115b9638514344f6f0958ca695348", null ], + [ "pCreateRTTIFunction", "class_r_t_t_i.html#aad22110bc8834223a912a906cd710990", null ], + [ "pDestructObjectFunction", "class_r_t_t_i.html#aaf310985dd3df418f3ac0ca410ded276", null ], + [ "RTTI", "class_r_t_t_i.html#aea79f36f0cf2786b1d64a46a179a009f", null ], + [ "RTTI", "class_r_t_t_i.html#a200b9e466fc9653a73e2a4f7cc5c8d11", null ], + [ "AddAttribute", "class_r_t_t_i.html#a5672a76cf4f12f280889d711341b2b32", null ], + [ "AddBaseClass", "class_r_t_t_i.html#ae4671375bc88cf535f4de98414c84405", null ], + [ "CastTo", "class_r_t_t_i.html#a762f7b979423d8cbbc5aa6796611f190", null ], + [ "CreateObject", "class_r_t_t_i.html#a97cb905567f96a8e766aa8f769394ee0", null ], + [ "DestructObject", "class_r_t_t_i.html#a224cbb3037f84324f9604ecd4218674e", null ], + [ "GetAttribute", "class_r_t_t_i.html#af400a619d0e542926dba2f0a557bcd4b", null ], + [ "GetAttributeCount", "class_r_t_t_i.html#a0fbba51204c3fbdef9a3ca57ed1951e7", null ], + [ "GetBaseClass", "class_r_t_t_i.html#a381b52d75fb6242d201da76ff685412c", null ], + [ "GetBaseClassCount", "class_r_t_t_i.html#a99d67628c5549e56c77ba1ef5294d64f", null ], + [ "GetHash", "class_r_t_t_i.html#ad5a67a7623941aeb6a7a75fc89082a92", null ], + [ "GetName", "class_r_t_t_i.html#a0d8d743280e7d661ef74c26b8b45e3a9", null ], + [ "GetSize", "class_r_t_t_i.html#a84f77151d163bb24c230c0af4a5c2682", null ], + [ "IsAbstract", "class_r_t_t_i.html#a8d9df5eaf6fce27b44ccc4c2bb728fd7", null ], + [ "IsKindOf", "class_r_t_t_i.html#a91cf4ad4740ffd16fe63e945ef288315", null ], + [ "operator!=", "class_r_t_t_i.html#a11f57b37456ad4373bb3ca03e9a5cacd", null ], + [ "operator==", "class_r_t_t_i.html#ae19fcaadd5a43ddb52e689920920b0b2", null ], + [ "SetName", "class_r_t_t_i.html#ab6e03f58fa10480bf87c2f91b5f374e8", null ], + [ "mAttributes", "class_r_t_t_i.html#a20a73c736f31ff30735518525af8b8f8", null ], + [ "mBaseClasses", "class_r_t_t_i.html#a65f6d7c79be320fd28dd08784682bb78", null ], + [ "mCreate", "class_r_t_t_i.html#a0bc70d14c290f62bb071ce8c3439d09b", null ], + [ "mDestruct", "class_r_t_t_i.html#a05e1a68c508992c39107dcdde015138b", null ], + [ "mName", "class_r_t_t_i.html#ac6c1ba7841379194df1ebbd9f7a7fba3", null ], + [ "mSize", "class_r_t_t_i.html#ae1bedbd6bc7047937339f32647aa624c", null ] +]; \ No newline at end of file diff --git a/class_rack_and_pinion_constraint-members.html b/class_rack_and_pinion_constraint-members.html new file mode 100644 index 000000000..0daba28c0 --- /dev/null +++ b/class_rack_and_pinion_constraint-members.html @@ -0,0 +1,173 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RackAndPinionConstraint Member List
+
+
+ +

This is the complete list of members for RackAndPinionConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const overrideRackAndPinionConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) constConstraintinlinevirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overrideRackAndPinionConstraintvirtual
GetConstraintToBody1Matrix() const overrideRackAndPinionConstraintvirtual
GetConstraintToBody2Matrix() const overrideRackAndPinionConstraintvirtual
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const overrideRackAndPinionConstraintinlinevirtual
GetTotalLambda() constRackAndPinionConstraintinline
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
IsActive() const overrideTwoBodyConstraintinlinevirtual
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overrideRackAndPinionConstraintinlinevirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RackAndPinionConstraint(Body &inBody1, Body &inBody2, const RackAndPinionConstraintSettings &inSettings)RackAndPinionConstraint
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart() overrideRackAndPinionConstraintvirtual
RestoreState(StateRecorder &inStream) overrideRackAndPinionConstraintvirtual
SaveState(StateRecorder &inStream) const overrideRackAndPinionConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetConstraints(const Constraint *inPinion, const Constraint *inRack)RackAndPinionConstraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetupVelocityConstraint(float inDeltaTime) overrideRackAndPinionConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overrideRackAndPinionConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overrideRackAndPinionConstraintvirtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overrideRackAndPinionConstraintvirtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_rack_and_pinion_constraint.html b/class_rack_and_pinion_constraint.html new file mode 100644 index 000000000..b162a1dde --- /dev/null +++ b/class_rack_and_pinion_constraint.html @@ -0,0 +1,802 @@ + + + + + + + +Jolt Physics: RackAndPinionConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RackAndPinionConstraint Class Referencefinal
+
+
+ +

#include <RackAndPinionConstraint.h>

+
+Inheritance diagram for RackAndPinionConstraint:
+
+
+ + +TwoBodyConstraint +Constraint +RefTarget< Constraint > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE RackAndPinionConstraint (Body &inBody1, Body &inBody2, const RackAndPinionConstraintSettings &inSettings)
 Construct gear constraint.
 
virtual EConstraintSubType GetSubType () const override
 Get the sub type of a constraint.
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
virtual Mat44 GetConstraintToBody1Matrix () const override
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const override
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
void SetConstraints (const Constraint *inPinion, const Constraint *inRack)
 The constraints that constrain the rack and pinion (a slider and a hinge), optional and used to calculate the position error and fix numerical drift.
 
- Public Member Functions inherited from TwoBodyConstraint
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + +

Get Lagrange multiplier from last physics update (the linear/angular impulse applied to satisfy the constraint)

float GetTotalLambda () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from TwoBodyConstraint
BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A rack and pinion constraint constrains the rotation of body1 to the translation of body 2. Note that this constraint needs to be used in conjunction with a hinge constraint for body 1 and a slider constraint for body 2.

+

Constructor & Destructor Documentation

+ +

◆ RackAndPinionConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
RackAndPinionConstraint::RackAndPinionConstraint (BodyinBody1,
BodyinBody2,
const RackAndPinionConstraintSettingsinSettings 
)
+
+ +

Construct gear constraint.

+ +
+
+

Member Function Documentation

+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void RackAndPinionConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > RackAndPinionConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 RackAndPinionConstraint::GetConstraintToBody1Matrix () const
+
+overridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 RackAndPinionConstraint::GetConstraintToBody2Matrix () const
+
+overridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType RackAndPinionConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Get the sub type of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float RackAndPinionConstraint::GetTotalLambda () const
+
+inline
+
+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void RackAndPinionConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+inlineoverridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void RackAndPinionConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void RackAndPinionConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void RackAndPinionConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetConstraints()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void RackAndPinionConstraint::SetConstraints (const ConstraintinPinion,
const ConstraintinRack 
)
+
+inline
+
+ +

The constraints that constrain the rack and pinion (a slider and a hinge), optional and used to calculate the position error and fix numerical drift.

+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void RackAndPinionConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool RackAndPinionConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool RackAndPinionConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void RackAndPinionConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_rack_and_pinion_constraint.js b/class_rack_and_pinion_constraint.js new file mode 100644 index 000000000..87f8b5f3f --- /dev/null +++ b/class_rack_and_pinion_constraint.js @@ -0,0 +1,19 @@ +var class_rack_and_pinion_constraint = +[ + [ "RackAndPinionConstraint", "class_rack_and_pinion_constraint.html#ad207aecc0e885cc3ddffe123194ce903", null ], + [ "DrawConstraint", "class_rack_and_pinion_constraint.html#a69a8d281fdc1f250625d718dabbc18ed", null ], + [ "GetConstraintSettings", "class_rack_and_pinion_constraint.html#ade013a7ea7be65d4d9001e852ff4782d", null ], + [ "GetConstraintToBody1Matrix", "class_rack_and_pinion_constraint.html#a0f1f6f27b197ba607c5c4d8d20e7c193", null ], + [ "GetConstraintToBody2Matrix", "class_rack_and_pinion_constraint.html#a06a84a89bfdc1be4679f60e56defe18a", null ], + [ "GetSubType", "class_rack_and_pinion_constraint.html#ae8c15998c1efe563c3153b27c58ab87a", null ], + [ "GetTotalLambda", "class_rack_and_pinion_constraint.html#a10684549bb08d47150e26754db83179d", null ], + [ "NotifyShapeChanged", "class_rack_and_pinion_constraint.html#ae5158af0c72fb1b412c1b17a2f8389aa", null ], + [ "ResetWarmStart", "class_rack_and_pinion_constraint.html#a5c14ca07f19abd4066e7b49d8be0f5b5", null ], + [ "RestoreState", "class_rack_and_pinion_constraint.html#a466997d9cdcd2cae27eca964faa5ebd3", null ], + [ "SaveState", "class_rack_and_pinion_constraint.html#a7af920eb7de9a8e52f80b2ca386fb8a5", null ], + [ "SetConstraints", "class_rack_and_pinion_constraint.html#a988486107b258cdec71cd2bff44c8080", null ], + [ "SetupVelocityConstraint", "class_rack_and_pinion_constraint.html#a46f28ec31eb4f5068c20843ec28d9c8f", null ], + [ "SolvePositionConstraint", "class_rack_and_pinion_constraint.html#af9a89e5738bd0b01041dd67f57dcdb75", null ], + [ "SolveVelocityConstraint", "class_rack_and_pinion_constraint.html#a1e19ef61ebcf132ce1dd056e8c3bfe92", null ], + [ "WarmStartVelocityConstraint", "class_rack_and_pinion_constraint.html#a68595c6143a8c238780ee6327cd77a01", null ] +]; \ No newline at end of file diff --git a/class_rack_and_pinion_constraint.png b/class_rack_and_pinion_constraint.png new file mode 100644 index 000000000..c0f95b111 Binary files /dev/null and b/class_rack_and_pinion_constraint.png differ diff --git a/class_rack_and_pinion_constraint_part-members.html b/class_rack_and_pinion_constraint_part-members.html new file mode 100644 index 000000000..451277c33 --- /dev/null +++ b/class_rack_and_pinion_constraint_part-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RackAndPinionConstraintPart Member List
+
+
+ +

This is the complete list of members for RackAndPinionConstraintPart, including all inherited members.

+ + + + + + + + + + +
CalculateConstraintProperties(const Body &inBody1, Vec3Arg inWorldSpaceHingeAxis, const Body &inBody2, Vec3Arg inWorldSpaceSliderAxis, float inRatio)RackAndPinionConstraintPartinline
Deactivate()RackAndPinionConstraintPartinline
GetTotalLambda() constRackAndPinionConstraintPartinline
IsActive() constRackAndPinionConstraintPartinline
RestoreState(StateRecorder &inStream)RackAndPinionConstraintPartinline
SaveState(StateRecorder &inStream) constRackAndPinionConstraintPartinline
SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) constRackAndPinionConstraintPartinline
SolveVelocityConstraint(Body &ioBody1, Vec3Arg inWorldSpaceHingeAxis, Body &ioBody2, Vec3Arg inWorldSpaceSliderAxis, float inRatio)RackAndPinionConstraintPartinline
WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)RackAndPinionConstraintPartinline
+
+ + + + diff --git a/class_rack_and_pinion_constraint_part.html b/class_rack_and_pinion_constraint_part.html new file mode 100644 index 000000000..35800d97d --- /dev/null +++ b/class_rack_and_pinion_constraint_part.html @@ -0,0 +1,544 @@ + + + + + + + +Jolt Physics: RackAndPinionConstraintPart Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RackAndPinionConstraintPart Class Reference
+
+
+ +

#include <RackAndPinionConstraintPart.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void CalculateConstraintProperties (const Body &inBody1, Vec3Arg inWorldSpaceHingeAxis, const Body &inBody2, Vec3Arg inWorldSpaceSliderAxis, float inRatio)
 
void Deactivate ()
 Deactivate this constraint.
 
bool IsActive () const
 Check if constraint is active.
 
void WarmStart (Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
 
bool SolveVelocityConstraint (Body &ioBody1, Vec3Arg inWorldSpaceHingeAxis, Body &ioBody2, Vec3Arg inWorldSpaceSliderAxis, float inRatio)
 
float GetTotalLambda () const
 Return lagrange multiplier.
 
bool SolvePositionConstraint (Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) const
 
void SaveState (StateRecorder &inStream) const
 Save state of this constraint part.
 
void RestoreState (StateRecorder &inStream)
 Restore state of this constraint part.
 
+

Detailed Description

+

Constraint that constrains a rotation to a translation

+

Constraint equation:

+

C = Theta(t) - r d(t)

+

Derivative:

+

d/dt C = 0 <=> w1 . a - r v2 . b = 0

+

Jacobian:

+

+\[J = \begin{bmatrix}0 & a^T & -r b^T & 0\end{bmatrix}\] +

+

Used terms (here and below, everything in world space):
+a = axis around which body 1 rotates (normalized).
+b = axis along which body 2 slides (normalized).
+Theta(t) = rotation around a of body 1.
+d(t) = distance body 2 slides.
+r = ratio between rotation and translation.
+v = [v1, w1, v2, w2].
+v1, v2 = linear velocity of body 1 and 2.
+w1, w2 = angular velocity of body 1 and 2.
+M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].
+ \(K^{-1} = \left( J M^{-1} J^T \right)^{-1}\) = effective mass.
+ \(\beta\) = baumgarte constant.

+

Member Function Documentation

+ +

◆ CalculateConstraintProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void RackAndPinionConstraintPart::CalculateConstraintProperties (const BodyinBody1,
Vec3Arg inWorldSpaceHingeAxis,
const BodyinBody2,
Vec3Arg inWorldSpaceSliderAxis,
float inRatio 
)
+
+inline
+
+

Calculate properties used during the functions below

Parameters
+ + + + + + +
inBody1The first body that this constraint is attached to
inBody2The second body that this constraint is attached to
inWorldSpaceHingeAxisThe axis around which body 1 rotates
inWorldSpaceSliderAxisThe axis along which body 2 slides
inRatioThe ratio between rotation and translation
+
+
+ +
+
+ +

◆ Deactivate()

+ +
+
+ + + + + +
+ + + + + + + +
void RackAndPinionConstraintPart::Deactivate ()
+
+inline
+
+ +

Deactivate this constraint.

+ +
+
+ +

◆ GetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float RackAndPinionConstraintPart::GetTotalLambda () const
+
+inline
+
+ +

Return lagrange multiplier.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool RackAndPinionConstraintPart::IsActive () const
+
+inline
+
+ +

Check if constraint is active.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void RackAndPinionConstraintPart::RestoreState (StateRecorderinStream)
+
+inline
+
+ +

Restore state of this constraint part.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void RackAndPinionConstraintPart::SaveState (StateRecorderinStream) const
+
+inline
+
+ +

Save state of this constraint part.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool RackAndPinionConstraintPart::SolvePositionConstraint (BodyioBody1,
BodyioBody2,
float inC,
float inBaumgarte 
) const
+
+inline
+
+

Iteratively update the position constraint. Makes sure C(...) == 0.

Parameters
+ + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inCValue of the constraint equation (C)
inBaumgarteBaumgarte constant (fraction of the error to correct)
+
+
+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool RackAndPinionConstraintPart::SolveVelocityConstraint (BodyioBody1,
Vec3Arg inWorldSpaceHingeAxis,
BodyioBody2,
Vec3Arg inWorldSpaceSliderAxis,
float inRatio 
)
+
+inline
+
+

Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.

Parameters
+ + + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inWorldSpaceHingeAxisThe axis around which body 1 rotates
inWorldSpaceSliderAxisThe axis along which body 2 slides
inRatioThe ratio between rotation and translation
+
+
+ +
+
+ +

◆ WarmStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void RackAndPinionConstraintPart::WarmStart (BodyioBody1,
BodyioBody2,
float inWarmStartImpulseRatio 
)
+
+inline
+
+

Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses

Parameters
+ + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inWarmStartImpulseRatioRatio of new step to old time step (dt_new / dt_old) for scaling the lagrange multiplier of the previous frame
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_rack_and_pinion_constraint_part.js b/class_rack_and_pinion_constraint_part.js new file mode 100644 index 000000000..6052e530f --- /dev/null +++ b/class_rack_and_pinion_constraint_part.js @@ -0,0 +1,12 @@ +var class_rack_and_pinion_constraint_part = +[ + [ "CalculateConstraintProperties", "class_rack_and_pinion_constraint_part.html#a02dfafdb136417f096927cc6cca34b3c", null ], + [ "Deactivate", "class_rack_and_pinion_constraint_part.html#ae283f92c8107a3ce86212c2885f4ea5f", null ], + [ "GetTotalLambda", "class_rack_and_pinion_constraint_part.html#a87e64ffdc1897211336d35bc8077ebcc", null ], + [ "IsActive", "class_rack_and_pinion_constraint_part.html#aecf166daf465d11438885115f506d1b6", null ], + [ "RestoreState", "class_rack_and_pinion_constraint_part.html#ad761890faa43dd0c459e5a6869b10f7f", null ], + [ "SaveState", "class_rack_and_pinion_constraint_part.html#ac4c35753b0bb3f976c7fdf4ec88f3ffe", null ], + [ "SolvePositionConstraint", "class_rack_and_pinion_constraint_part.html#acbff5e3cb39103c349d9a2a3866a8475", null ], + [ "SolveVelocityConstraint", "class_rack_and_pinion_constraint_part.html#a34c658b3b5b4a4fd6e2072e48f625f6f", null ], + [ "WarmStart", "class_rack_and_pinion_constraint_part.html#a8dbe4e1891bffacf4575ddabd1df9699", null ] +]; \ No newline at end of file diff --git a/class_rack_and_pinion_constraint_settings-members.html b/class_rack_and_pinion_constraint_settings-members.html new file mode 100644 index 000000000..82a8ab4c7 --- /dev/null +++ b/class_rack_and_pinion_constraint_settings-members.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RackAndPinionConstraintSettings Member List
+
+
+ +

This is the complete list of members for RackAndPinionConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const overrideRackAndPinionConstraintSettingsvirtual
GetRefCount() constRefTarget< ConstraintSettings >inline
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mHingeAxisRackAndPinionConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mRatioRackAndPinionConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mSliderAxisRackAndPinionConstraintSettings
mSpaceRackAndPinionConstraintSettings
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideRackAndPinionConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overrideRackAndPinionConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
SetRatio(int inNumTeethRack, float inRackLength, int inNumTeethPinion)RackAndPinionConstraintSettingsinline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_rack_and_pinion_constraint_settings.html b/class_rack_and_pinion_constraint_settings.html new file mode 100644 index 000000000..4ca7b2209 --- /dev/null +++ b/class_rack_and_pinion_constraint_settings.html @@ -0,0 +1,463 @@ + + + + + + + +Jolt Physics: RackAndPinionConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RackAndPinionConstraintSettings Class Referencefinal
+
+
+ +

Rack and pinion constraint (slider & gear) settings. + More...

+ +

#include <RackAndPinionConstraint.h>

+
+Inheritance diagram for RackAndPinionConstraintSettings:
+
+
+ + +TwoBodyConstraintSettings +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 
void SetRatio (int inNumTeethRack, float inRackLength, int inNumTeethPinion)
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EConstraintSpace mSpace = EConstraintSpace::WorldSpace
 This determines in which space the constraint is setup, all properties below should be in the specified space.
 
Vec3 mHingeAxis = Vec3::sAxisX()
 Body 1 (pinion) constraint reference frame (space determined by mSpace).
 
Vec3 mSliderAxis = Vec3::sAxisX()
 Body 2 (rack) constraint reference frame (space determined by mSpace)
 
float mRatio = 1.0f
 Ratio between the rack and pinion, see SetRatio.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Rack and pinion constraint (slider & gear) settings.

+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * RackAndPinionConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+overridevirtual
+
+

Create an instance of this constraint. Body1 should be the pinion (gear) and body 2 the rack (slider).

+ +

Implements TwoBodyConstraintSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void RackAndPinionConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void RackAndPinionConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SetRatio()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void RackAndPinionConstraintSettings::SetRatio (int inNumTeethRack,
float inRackLength,
int inNumTeethPinion 
)
+
+inline
+
+

Defines the ratio between the rotation of the pinion and the translation of the rack. The ratio is defined as: PinionRotation(t) = ratio * RackTranslation(t)

Parameters
+ + + + +
inNumTeethRackNumber of teeth that the rack has
inRackLengthLength of the rack
inNumTeethPinionNumber of teeth the pinion has
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mHingeAxis

+ +
+
+ + + + +
Vec3 RackAndPinionConstraintSettings::mHingeAxis = Vec3::sAxisX()
+
+ +

Body 1 (pinion) constraint reference frame (space determined by mSpace).

+ +
+
+ +

◆ mRatio

+ +
+
+ + + + +
float RackAndPinionConstraintSettings::mRatio = 1.0f
+
+ +

Ratio between the rack and pinion, see SetRatio.

+ +
+
+ +

◆ mSliderAxis

+ +
+
+ + + + +
Vec3 RackAndPinionConstraintSettings::mSliderAxis = Vec3::sAxisX()
+
+ +

Body 2 (rack) constraint reference frame (space determined by mSpace)

+ +
+
+ +

◆ mSpace

+ +
+
+ + + + +
EConstraintSpace RackAndPinionConstraintSettings::mSpace = EConstraintSpace::WorldSpace
+
+ +

This determines in which space the constraint is setup, all properties below should be in the specified space.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_rack_and_pinion_constraint_settings.js b/class_rack_and_pinion_constraint_settings.js new file mode 100644 index 000000000..d070f419f --- /dev/null +++ b/class_rack_and_pinion_constraint_settings.js @@ -0,0 +1,11 @@ +var class_rack_and_pinion_constraint_settings = +[ + [ "Create", "class_rack_and_pinion_constraint_settings.html#a7d110449eb5677dff23aa5199ab97929", null ], + [ "RestoreBinaryState", "class_rack_and_pinion_constraint_settings.html#a84da5f10be9658a7652391b0d699911f", null ], + [ "SaveBinaryState", "class_rack_and_pinion_constraint_settings.html#a92be9cdd89c5a465323f2a770c13fef6", null ], + [ "SetRatio", "class_rack_and_pinion_constraint_settings.html#a90d5633a453c1921fa1f24480bba7944", null ], + [ "mHingeAxis", "class_rack_and_pinion_constraint_settings.html#a7cde5d26bc397387ca93ed5de06dcadb", null ], + [ "mRatio", "class_rack_and_pinion_constraint_settings.html#ae46a8191711ca7476217c52f651c4da5", null ], + [ "mSliderAxis", "class_rack_and_pinion_constraint_settings.html#abab8a200eefd72f3518611ad2c80cbab", null ], + [ "mSpace", "class_rack_and_pinion_constraint_settings.html#a13d28a9be1de9f098094d5b06d2b21a6", null ] +]; \ No newline at end of file diff --git a/class_rack_and_pinion_constraint_settings.png b/class_rack_and_pinion_constraint_settings.png new file mode 100644 index 000000000..50276cac3 Binary files /dev/null and b/class_rack_and_pinion_constraint_settings.png differ diff --git a/class_ragdoll-members.html b/class_ragdoll-members.html new file mode 100644 index 000000000..23a9c8140 --- /dev/null +++ b/class_ragdoll-members.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Ragdoll Member List
+
+
+ +

This is the complete list of members for Ragdoll, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Activate(bool inLockBodies=true)Ragdoll
AddImpulse(Vec3Arg inImpulse, bool inLockBodies=true)Ragdoll
AddLinearVelocity(Vec3Arg inLinearVelocity, bool inLockBodies=true)Ragdoll
AddRef() constRefTarget< Ragdoll >inline
AddToPhysicsSystem(EActivation inActivationMode, bool inLockBodies=true)Ragdoll
cEmbeddedRefTarget< Ragdoll >protectedstatic
DriveToPoseUsingKinematics(const SkeletonPose &inPose, float inDeltaTime, bool inLockBodies=true)Ragdoll
DriveToPoseUsingKinematics(RVec3Arg inRootOffset, const Mat44 *inJointMatrices, float inDeltaTime, bool inLockBodies=true)Ragdoll
DriveToPoseUsingMotors(const SkeletonPose &inPose)Ragdoll
GetBodyCount() constRagdollinline
GetBodyID(int inBodyIndex) constRagdollinline
GetBodyIDs() constRagdollinline
GetConstraint(int inConstraintIndex)Ragdollinline
GetConstraint(int inConstraintIndex) constRagdollinline
GetConstraintCount() constRagdollinline
GetPose(SkeletonPose &outPose, bool inLockBodies=true)Ragdoll
GetPose(RVec3 &outRootOffset, Mat44 *outJointMatrices, bool inLockBodies=true)Ragdoll
GetRagdollSettings() constRagdollinline
GetRefCount() constRefTarget< Ragdoll >inline
GetRootTransform(RVec3 &outPosition, Quat &outRotation, bool inLockBodies=true) constRagdoll
GetWorldSpaceBounds(bool inLockBodies=true) constRagdoll
IsActive(bool inLockBodies=true) constRagdoll
mRefCountRefTarget< Ragdoll >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Ragdoll >::operator=(const RefTarget &)RefTarget< Ragdoll >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
Ragdoll(PhysicsSystem *inSystem)Ragdollinlineexplicit
RagdollSettingsRagdollfriend
RefTarget()=defaultRefTarget< Ragdoll >inline
RefTarget(const RefTarget &)RefTarget< Ragdoll >inline
Release() constRefTarget< Ragdoll >inline
RemoveFromPhysicsSystem(bool inLockBodies=true)Ragdoll
ResetWarmStart()Ragdoll
SetEmbedded() constRefTarget< Ragdoll >inline
SetGroupID(CollisionGroup::GroupID inGroupID, bool inLockBodies=true)Ragdoll
SetLinearAndAngularVelocity(Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity, bool inLockBodies=true)Ragdoll
SetLinearVelocity(Vec3Arg inLinearVelocity, bool inLockBodies=true)Ragdoll
SetPose(const SkeletonPose &inPose, bool inLockBodies=true)Ragdoll
SetPose(RVec3Arg inRootOffset, const Mat44 *inJointMatrices, bool inLockBodies=true)Ragdoll
sInternalGetRefCountOffset()RefTarget< Ragdoll >inlinestatic
~Ragdoll()Ragdoll
~RefTarget()RefTarget< Ragdoll >inline
+
+ + + + diff --git a/class_ragdoll.html b/class_ragdoll.html new file mode 100644 index 000000000..2037700f2 --- /dev/null +++ b/class_ragdoll.html @@ -0,0 +1,1092 @@ + + + + + + + +Jolt Physics: Ragdoll Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Ragdoll Class Reference
+
+
+ +

Runtime ragdoll information. + More...

+ +

#include <Ragdoll.h>

+
+Inheritance diagram for Ragdoll:
+
+
+ + +RefTarget< Ragdoll > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Ragdoll (PhysicsSystem *inSystem)
 Constructor.
 
 ~Ragdoll ()
 Destructor.
 
void AddToPhysicsSystem (EActivation inActivationMode, bool inLockBodies=true)
 Add bodies and constraints to the system and optionally activate the bodies.
 
void RemoveFromPhysicsSystem (bool inLockBodies=true)
 Remove bodies and constraints from the system.
 
void Activate (bool inLockBodies=true)
 Wake up all bodies in the ragdoll.
 
bool IsActive (bool inLockBodies=true) const
 
void SetGroupID (CollisionGroup::GroupID inGroupID, bool inLockBodies=true)
 Set the group ID on all bodies in the ragdoll.
 
void SetPose (const SkeletonPose &inPose, bool inLockBodies=true)
 Set the ragdoll to a pose (calls BodyInterface::SetPositionAndRotation to instantly move the ragdoll)
 
void SetPose (RVec3Arg inRootOffset, const Mat44 *inJointMatrices, bool inLockBodies=true)
 Lower level version of SetPose that directly takes the world space joint matrices.
 
void GetPose (SkeletonPose &outPose, bool inLockBodies=true)
 Get the ragdoll pose (uses the world transform of the bodies to calculate the pose)
 
void GetPose (RVec3 &outRootOffset, Mat44 *outJointMatrices, bool inLockBodies=true)
 Lower level version of GetPose that directly returns the world space joint matrices.
 
void ResetWarmStart ()
 This function calls ResetWarmStart on all constraints. It can be used after calling SetPose to reset previous frames impulses. See: Constraint::ResetWarmStart.
 
void DriveToPoseUsingKinematics (const SkeletonPose &inPose, float inDeltaTime, bool inLockBodies=true)
 Drive the ragdoll to a specific pose by setting velocities on each of the bodies so that it will reach inPose in inDeltaTime.
 
void DriveToPoseUsingKinematics (RVec3Arg inRootOffset, const Mat44 *inJointMatrices, float inDeltaTime, bool inLockBodies=true)
 Lower level version of DriveToPoseUsingKinematics that directly takes the world space joint matrices.
 
void DriveToPoseUsingMotors (const SkeletonPose &inPose)
 Drive the ragdoll to a specific pose by activating the motors on each constraint.
 
void SetLinearAndAngularVelocity (Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity, bool inLockBodies=true)
 Control the linear and velocity of all bodies in the ragdoll.
 
void SetLinearVelocity (Vec3Arg inLinearVelocity, bool inLockBodies=true)
 Set the world space linear velocity of all bodies in the ragdoll.
 
void AddLinearVelocity (Vec3Arg inLinearVelocity, bool inLockBodies=true)
 Add a world space velocity (in m/s) to all bodies in the ragdoll.
 
void AddImpulse (Vec3Arg inImpulse, bool inLockBodies=true)
 Add impulse to all bodies of the ragdoll (center of mass of each of them)
 
void GetRootTransform (RVec3 &outPosition, Quat &outRotation, bool inLockBodies=true) const
 Get the position and orientation of the root of the ragdoll.
 
size_t GetBodyCount () const
 Get number of bodies in the ragdoll.
 
BodyID GetBodyID (int inBodyIndex) const
 Access a body ID.
 
const Array< BodyID > & GetBodyIDs () const
 Access to the array of body IDs.
 
size_t GetConstraintCount () const
 Get number of constraints in the ragdoll.
 
TwoBodyConstraintGetConstraint (int inConstraintIndex)
 Access a constraint by index.
 
const TwoBodyConstraintGetConstraint (int inConstraintIndex) const
 Access a constraint by index.
 
AABox GetWorldSpaceBounds (bool inLockBodies=true) const
 Get world space bounding box for all bodies of the ragdoll.
 
const RagdollSettingsGetRagdollSettings () const
 Get the settings object that created this ragdoll.
 
- Public Member Functions inherited from RefTarget< Ragdoll >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + +

+Friends

class RagdollSettings
 For RagdollSettings::CreateRagdoll function.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Ragdoll >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< Ragdoll >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Ragdoll >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Runtime ragdoll information.

+

Constructor & Destructor Documentation

+ +

◆ Ragdoll()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE Ragdoll::Ragdoll (PhysicsSysteminSystem)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+ +

◆ ~Ragdoll()

+ +
+
+ + + + + + + +
Ragdoll::~Ragdoll ()
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Activate()

+ +
+
+ + + + + + + + +
void Ragdoll::Activate (bool inLockBodies = true)
+
+ +

Wake up all bodies in the ragdoll.

+ +
+
+ +

◆ AddImpulse()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Ragdoll::AddImpulse (Vec3Arg inImpulse,
bool inLockBodies = true 
)
+
+ +

Add impulse to all bodies of the ragdoll (center of mass of each of them)

+ +
+
+ +

◆ AddLinearVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Ragdoll::AddLinearVelocity (Vec3Arg inLinearVelocity,
bool inLockBodies = true 
)
+
+ +

Add a world space velocity (in m/s) to all bodies in the ragdoll.

+ +
+
+ +

◆ AddToPhysicsSystem()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Ragdoll::AddToPhysicsSystem (EActivation inActivationMode,
bool inLockBodies = true 
)
+
+ +

Add bodies and constraints to the system and optionally activate the bodies.

+ +
+
+ +

◆ DriveToPoseUsingKinematics() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Ragdoll::DriveToPoseUsingKinematics (const SkeletonPoseinPose,
float inDeltaTime,
bool inLockBodies = true 
)
+
+ +

Drive the ragdoll to a specific pose by setting velocities on each of the bodies so that it will reach inPose in inDeltaTime.

+ +
+
+ +

◆ DriveToPoseUsingKinematics() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void Ragdoll::DriveToPoseUsingKinematics (RVec3Arg inRootOffset,
const Mat44inJointMatrices,
float inDeltaTime,
bool inLockBodies = true 
)
+
+ +

Lower level version of DriveToPoseUsingKinematics that directly takes the world space joint matrices.

+ +
+
+ +

◆ DriveToPoseUsingMotors()

+ +
+
+ + + + + + + + +
void Ragdoll::DriveToPoseUsingMotors (const SkeletonPoseinPose)
+
+ +

Drive the ragdoll to a specific pose by activating the motors on each constraint.

+ +
+
+ +

◆ GetBodyCount()

+ +
+
+ + + + + +
+ + + + + + + +
size_t Ragdoll::GetBodyCount () const
+
+inline
+
+ +

Get number of bodies in the ragdoll.

+ +
+
+ +

◆ GetBodyID()

+ +
+
+ + + + + +
+ + + + + + + + +
BodyID Ragdoll::GetBodyID (int inBodyIndex) const
+
+inline
+
+ +

Access a body ID.

+ +
+
+ +

◆ GetBodyIDs()

+ +
+
+ + + + + +
+ + + + + + + +
const Array< BodyID > & Ragdoll::GetBodyIDs () const
+
+inline
+
+ +

Access to the array of body IDs.

+ +
+
+ +

◆ GetConstraint() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
TwoBodyConstraint * Ragdoll::GetConstraint (int inConstraintIndex)
+
+inline
+
+ +

Access a constraint by index.

+ +
+
+ +

◆ GetConstraint() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
const TwoBodyConstraint * Ragdoll::GetConstraint (int inConstraintIndex) const
+
+inline
+
+ +

Access a constraint by index.

+ +
+
+ +

◆ GetConstraintCount()

+ +
+
+ + + + + +
+ + + + + + + +
size_t Ragdoll::GetConstraintCount () const
+
+inline
+
+ +

Get number of constraints in the ragdoll.

+ +
+
+ +

◆ GetPose() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Ragdoll::GetPose (RVec3outRootOffset,
Mat44outJointMatrices,
bool inLockBodies = true 
)
+
+ +

Lower level version of GetPose that directly returns the world space joint matrices.

+ +
+
+ +

◆ GetPose() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Ragdoll::GetPose (SkeletonPoseoutPose,
bool inLockBodies = true 
)
+
+ +

Get the ragdoll pose (uses the world transform of the bodies to calculate the pose)

+ +
+
+ +

◆ GetRagdollSettings()

+ +
+
+ + + + + +
+ + + + + + + +
const RagdollSettings * Ragdoll::GetRagdollSettings () const
+
+inline
+
+ +

Get the settings object that created this ragdoll.

+ +
+
+ +

◆ GetRootTransform()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Ragdoll::GetRootTransform (RVec3outPosition,
QuatoutRotation,
bool inLockBodies = true 
) const
+
+ +

Get the position and orientation of the root of the ragdoll.

+ +
+
+ +

◆ GetWorldSpaceBounds()

+ +
+
+ + + + + + + + +
AABox Ragdoll::GetWorldSpaceBounds (bool inLockBodies = true) const
+
+ +

Get world space bounding box for all bodies of the ragdoll.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + + + + +
bool Ragdoll::IsActive (bool inLockBodies = true) const
+
+

Check if one or more of the bodies in the ragdoll are active. Note that this involves locking the bodies (if inLockBodies is true) and looping over them. An alternative and possibly faster way could be to install a BodyActivationListener and count the number of active bodies of a ragdoll as they're activated / deactivated (basically check if the body that activates / deactivates is in GetBodyIDs() and increment / decrement a counter).

+ +
+
+ +

◆ RemoveFromPhysicsSystem()

+ +
+
+ + + + + + + + +
void Ragdoll::RemoveFromPhysicsSystem (bool inLockBodies = true)
+
+ +

Remove bodies and constraints from the system.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + + + +
void Ragdoll::ResetWarmStart ()
+
+ +

This function calls ResetWarmStart on all constraints. It can be used after calling SetPose to reset previous frames impulses. See: Constraint::ResetWarmStart.

+ +
+
+ +

◆ SetGroupID()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Ragdoll::SetGroupID (CollisionGroup::GroupID inGroupID,
bool inLockBodies = true 
)
+
+ +

Set the group ID on all bodies in the ragdoll.

+ +
+
+ +

◆ SetLinearAndAngularVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Ragdoll::SetLinearAndAngularVelocity (Vec3Arg inLinearVelocity,
Vec3Arg inAngularVelocity,
bool inLockBodies = true 
)
+
+ +

Control the linear and velocity of all bodies in the ragdoll.

+ +
+
+ +

◆ SetLinearVelocity()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Ragdoll::SetLinearVelocity (Vec3Arg inLinearVelocity,
bool inLockBodies = true 
)
+
+ +

Set the world space linear velocity of all bodies in the ragdoll.

+ +
+
+ +

◆ SetPose() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Ragdoll::SetPose (const SkeletonPoseinPose,
bool inLockBodies = true 
)
+
+ +

Set the ragdoll to a pose (calls BodyInterface::SetPositionAndRotation to instantly move the ragdoll)

+ +
+
+ +

◆ SetPose() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Ragdoll::SetPose (RVec3Arg inRootOffset,
const Mat44inJointMatrices,
bool inLockBodies = true 
)
+
+ +

Lower level version of SetPose that directly takes the world space joint matrices.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ RagdollSettings

+ +
+
+ + + + + +
+ + + + +
friend class RagdollSettings
+
+friend
+
+ +

For RagdollSettings::CreateRagdoll function.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_ragdoll.js b/class_ragdoll.js new file mode 100644 index 000000000..cd9ef1b41 --- /dev/null +++ b/class_ragdoll.js @@ -0,0 +1,32 @@ +var class_ragdoll = +[ + [ "Ragdoll", "class_ragdoll.html#abf6b6eb34e63af813cc4e394b536208e", null ], + [ "~Ragdoll", "class_ragdoll.html#afbd932bcd7ceae5811204c5c1219d5ac", null ], + [ "Activate", "class_ragdoll.html#a584d5a41fd6118589b420ed96272827b", null ], + [ "AddImpulse", "class_ragdoll.html#a5ea2bcad36c7346ffd9a81dee6ab03d1", null ], + [ "AddLinearVelocity", "class_ragdoll.html#abcf8c32f6b7cbdf98bc29e2bf7075ba7", null ], + [ "AddToPhysicsSystem", "class_ragdoll.html#a3c419f92dd96329ba429ed6f8fe9a74e", null ], + [ "DriveToPoseUsingKinematics", "class_ragdoll.html#a5708fad69260914b0fdfd6d80a834d23", null ], + [ "DriveToPoseUsingKinematics", "class_ragdoll.html#a1a25f99af9c3a3d8eb7a069143db34e6", null ], + [ "DriveToPoseUsingMotors", "class_ragdoll.html#a367f16f5385eb377e5419d12457c22c6", null ], + [ "GetBodyCount", "class_ragdoll.html#a6395143c1655e5272eccdf0895d57c53", null ], + [ "GetBodyID", "class_ragdoll.html#ac57cdfcd77dc9dce4679fcb45012083a", null ], + [ "GetBodyIDs", "class_ragdoll.html#a98603396696b276256ffe74283a26fca", null ], + [ "GetConstraint", "class_ragdoll.html#a86b347f11599361d0cf8bddcacad4295", null ], + [ "GetConstraint", "class_ragdoll.html#a001b9a360f16a8a24d7cc547c763bbd8", null ], + [ "GetConstraintCount", "class_ragdoll.html#a4aed9348c613c386d5cf32c25e3931f2", null ], + [ "GetPose", "class_ragdoll.html#a9c9a6d0791b776f4360d0cd9ddfc6f84", null ], + [ "GetPose", "class_ragdoll.html#aeb6b26fdc0eefbb815af1d06c9e5da69", null ], + [ "GetRagdollSettings", "class_ragdoll.html#adf2f2237288c30779260c4b1e744a76d", null ], + [ "GetRootTransform", "class_ragdoll.html#ab6ccff7d0aee7c9931a308c722614fff", null ], + [ "GetWorldSpaceBounds", "class_ragdoll.html#a8ab1cc3715aafa05d4b04647c54282a3", null ], + [ "IsActive", "class_ragdoll.html#aa86e5cf49f753abc4ad077440d08faa0", null ], + [ "RemoveFromPhysicsSystem", "class_ragdoll.html#a76f2d87e4f41cc22ff280b9c962698cf", null ], + [ "ResetWarmStart", "class_ragdoll.html#ab311adf5d4b6bd72199e6d46d04886f8", null ], + [ "SetGroupID", "class_ragdoll.html#add1a811191c5e75e489598594123e85b", null ], + [ "SetLinearAndAngularVelocity", "class_ragdoll.html#a8ba64ad182563d9110980155b86538bc", null ], + [ "SetLinearVelocity", "class_ragdoll.html#ac0b96e2a568868b67792889d26137ec8", null ], + [ "SetPose", "class_ragdoll.html#a535e76f7fb7bfee484d82570a3066ae7", null ], + [ "SetPose", "class_ragdoll.html#a789ec3bece447ec849e7ecb109c15a9c", null ], + [ "RagdollSettings", "class_ragdoll.html#af287d5dd184fd0349ba44a279f6cacdf", null ] +]; \ No newline at end of file diff --git a/class_ragdoll.png b/class_ragdoll.png new file mode 100644 index 000000000..51bac4deb Binary files /dev/null and b/class_ragdoll.png differ diff --git a/class_ragdoll_settings-members.html b/class_ragdoll_settings-members.html new file mode 100644 index 000000000..9f0025416 --- /dev/null +++ b/class_ragdoll_settings-members.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RagdollSettings Member List
+
+
+ +

This is the complete list of members for RagdollSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AdditionalConstraintVector typedefRagdollSettings
AddRef() constRefTarget< RagdollSettings >inline
BodyIdxPair typedefRagdollSettings
CalculateBodyIndexToConstraintIndex()RagdollSettings
CalculateConstraintIndexToBodyIdxPair()RagdollSettings
cEmbeddedRefTarget< RagdollSettings >protectedstatic
CreateRagdoll(CollisionGroup::GroupID inCollisionGroup, uint64 inUserData, PhysicsSystem *inSystem) constRagdollSettings
DisableParentChildCollisions(const Mat44 *inJointMatrices=nullptr, float inMinSeparationDistance=0.0f)RagdollSettings
GetBodyIndexToConstraintIndex() constRagdollSettingsinline
GetBodyIndicesForConstraintIndex(int inConstraintIndex) constRagdollSettingsinline
GetConstraintIndexForBodyIndex(int inBodyIndex) constRagdollSettingsinline
GetConstraintIndexToBodyIdxPair() constRagdollSettingsinline
GetRefCount() constRefTarget< RagdollSettings >inline
GetSkeleton() constRagdollSettingsinline
GetSkeleton()RagdollSettingsinline
mAdditionalConstraintsRagdollSettings
mPartsRagdollSettings
mRefCountRefTarget< RagdollSettings >mutableprotected
mSkeletonRagdollSettings
operator=(const RefTarget &)RefTarget< RagdollSettings >inline
PartVector typedefRagdollSettings
RagdollResult typedefRagdollSettings
RefTarget()=defaultRefTarget< RagdollSettings >inline
RefTarget(const RefTarget &)RefTarget< RagdollSettings >inline
Release() constRefTarget< RagdollSettings >inline
SaveBinaryState(StreamOut &inStream, bool inSaveShapes, bool inSaveGroupFilter) constRagdollSettings
SetEmbedded() constRefTarget< RagdollSettings >inline
sInternalGetRefCountOffset()RefTarget< RagdollSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)RagdollSettingsstatic
Stabilize()RagdollSettings
~RefTarget()RefTarget< RagdollSettings >inline
+
+ + + + diff --git a/class_ragdoll_settings.html b/class_ragdoll_settings.html new file mode 100644 index 000000000..935297736 --- /dev/null +++ b/class_ragdoll_settings.html @@ -0,0 +1,721 @@ + + + + + + + +Jolt Physics: RagdollSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RagdollSettings Class Reference
+
+
+ +

Contains the structure of a ragdoll. + More...

+ +

#include <Ragdoll.h>

+
+Inheritance diagram for RagdollSettings:
+
+
+ + +RefTarget< RagdollSettings > + +
+ + + + + + + + +

+Classes

class  AdditionalConstraint
 A constraint that connects two bodies in a ragdoll (for non parent child related constraints) More...
 
class  Part
 A single rigid body sub part of the ragdoll. More...
 
+ + + + + + + + + + + +

+Public Types

using RagdollResult = Result< Ref< RagdollSettings > >
 
using BodyIdxPair = pair< int, int >
 
using PartVector = Array< Part >
 The constraint that connects this part to its parent part (should be null for the root)
 
using AdditionalConstraintVector = Array< AdditionalConstraint >
 List of additional constraints.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool Stabilize ()
 
void DisableParentChildCollisions (const Mat44 *inJointMatrices=nullptr, float inMinSeparationDistance=0.0f)
 
void SaveBinaryState (StreamOut &inStream, bool inSaveShapes, bool inSaveGroupFilter) const
 
RagdollCreateRagdoll (CollisionGroup::GroupID inCollisionGroup, uint64 inUserData, PhysicsSystem *inSystem) const
 
const SkeletonGetSkeleton () const
 Access to the skeleton of this ragdoll.
 
SkeletonGetSkeleton ()
 
void CalculateBodyIndexToConstraintIndex ()
 Calculate the map needed for GetBodyIndexToConstraintIndex()
 
const Array< int > & GetBodyIndexToConstraintIndex () const
 
int GetConstraintIndexForBodyIndex (int inBodyIndex) const
 Map a single body index to a constraint index.
 
void CalculateConstraintIndexToBodyIdxPair ()
 Calculate the map needed for GetConstraintIndexToBodyIdxPair()
 
const Array< BodyIdxPair > & GetConstraintIndexToBodyIdxPair () const
 Table that maps a constraint index (index in mConstraints) to the indices of the bodies that the constraint is connected to (index in mBodyIDs)
 
BodyIdxPair GetBodyIndicesForConstraintIndex (int inConstraintIndex) const
 Map a single constraint index (index in mConstraints) to the indices of the bodies that the constraint is connected to (index in mBodyIDs)
 
- Public Member Functions inherited from RefTarget< RagdollSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + +

+Static Public Member Functions

static RagdollResult sRestoreFromBinaryState (StreamIn &inStream)
 Restore a saved ragdoll from inStream.
 
- Static Public Member Functions inherited from RefTarget< RagdollSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + + + + + + + +

+Public Attributes

Ref< SkeletonmSkeleton
 The skeleton for this ragdoll.
 
PartVector mParts
 For each of the joints, the body and constraint attaching it to its parent body (1-on-1 with mSkeleton.GetJoints())
 
AdditionalConstraintVector mAdditionalConstraints
 A list of constraints that connects two bodies in a ragdoll (for non parent child related constraints)
 
+ + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from RefTarget< RagdollSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< RagdollSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Contains the structure of a ragdoll.

+

Member Typedef Documentation

+ +

◆ AdditionalConstraintVector

+ +
+
+ +

List of additional constraints.

+ +
+
+ +

◆ BodyIdxPair

+ +
+
+ + + + +
using RagdollSettings::BodyIdxPair = pair<int, int>
+
+ +
+
+ +

◆ PartVector

+ +
+
+ + + + +
using RagdollSettings::PartVector = Array<Part>
+
+ +

The constraint that connects this part to its parent part (should be null for the root)

+ +
+
+ +

◆ RagdollResult

+ + +

Member Function Documentation

+ +

◆ CalculateBodyIndexToConstraintIndex()

+ +
+
+ + + + + + + +
void RagdollSettings::CalculateBodyIndexToConstraintIndex ()
+
+ +

Calculate the map needed for GetBodyIndexToConstraintIndex()

+ +
+
+ +

◆ CalculateConstraintIndexToBodyIdxPair()

+ +
+
+ + + + + + + +
void RagdollSettings::CalculateConstraintIndexToBodyIdxPair ()
+
+ +

Calculate the map needed for GetConstraintIndexToBodyIdxPair()

+ +
+
+ +

◆ CreateRagdoll()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Ragdoll * RagdollSettings::CreateRagdoll (CollisionGroup::GroupID inCollisionGroup,
uint64 inUserData,
PhysicsSysteminSystem 
) const
+
+

Create ragdoll instance from these settings

Returns
Newly created ragdoll or null when out of bodies
+ +
+
+ +

◆ DisableParentChildCollisions()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void RagdollSettings::DisableParentChildCollisions (const Mat44inJointMatrices = nullptr,
float inMinSeparationDistance = 0.0f 
)
+
+

After the ragdoll has been fully configured, call this function to automatically create and add a GroupFilterTable collision filter to all bodies and configure them so that parent and children don't collide.

+

This will:

    +
  • Create a GroupFilterTable and assign it to all of the bodies in a ragdoll.
  • +
  • Each body in your ragdoll will get a SubGroupID that is equal to the joint index in the Skeleton that it is attached to.
  • +
  • Loop over all joints in the Skeleton and call GroupFilterTable::DisableCollision(joint index, parent joint index).
  • +
  • When a pose is provided through inJointMatrices the function will detect collisions between joints (they must be separated by more than inMinSeparationDistance to be treated as not colliding) and automatically disable collisions.
  • +
+

When you create an instance using Ragdoll::CreateRagdoll pass in a unique GroupID for each ragdoll (e.g. a simple counter), note that this number should be unique throughout the PhysicsSystem, so if you have different types of ragdolls they should not share the same GroupID.

+ +
+
+ +

◆ GetBodyIndexToConstraintIndex()

+ +
+
+ + + + + +
+ + + + + + + +
const Array< int > & RagdollSettings::GetBodyIndexToConstraintIndex () const
+
+inline
+
+

Get table that maps a body index to the constraint index with which it is connected to its parent. -1 if there is no constraint associated with the body. Note that this will only tell you which constraint connects the body to its parent, it will not look in the additional constraint list.

+ +
+
+ +

◆ GetBodyIndicesForConstraintIndex()

+ +
+
+ + + + + +
+ + + + + + + + +
BodyIdxPair RagdollSettings::GetBodyIndicesForConstraintIndex (int inConstraintIndex) const
+
+inline
+
+ +

Map a single constraint index (index in mConstraints) to the indices of the bodies that the constraint is connected to (index in mBodyIDs)

+ +
+
+ +

◆ GetConstraintIndexForBodyIndex()

+ +
+
+ + + + + +
+ + + + + + + + +
int RagdollSettings::GetConstraintIndexForBodyIndex (int inBodyIndex) const
+
+inline
+
+ +

Map a single body index to a constraint index.

+ +
+
+ +

◆ GetConstraintIndexToBodyIdxPair()

+ +
+
+ + + + + +
+ + + + + + + +
const Array< BodyIdxPair > & RagdollSettings::GetConstraintIndexToBodyIdxPair () const
+
+inline
+
+ +

Table that maps a constraint index (index in mConstraints) to the indices of the bodies that the constraint is connected to (index in mBodyIDs)

+ +
+
+ +

◆ GetSkeleton() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
Skeleton * RagdollSettings::GetSkeleton ()
+
+inline
+
+ +
+
+ +

◆ GetSkeleton() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const Skeleton * RagdollSettings::GetSkeleton () const
+
+inline
+
+ +

Access to the skeleton of this ragdoll.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void RagdollSettings::SaveBinaryState (StreamOutinStream,
bool inSaveShapes,
bool inSaveGroupFilter 
) const
+
+

Saves the state of this object in binary form to inStream.

Parameters
+ + + + +
inStreamThe stream to save the state to
inSaveShapesIf the shapes should be saved as well (these could be shared between ragdolls, in which case the calling application may want to write custom code to restore them)
inSaveGroupFilterIf the group filter should be saved as well (these could be shared)
+
+
+ +
+
+ +

◆ sRestoreFromBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
RagdollSettings::RagdollResult RagdollSettings::sRestoreFromBinaryState (StreamIninStream)
+
+static
+
+ +

Restore a saved ragdoll from inStream.

+ +
+
+ +

◆ Stabilize()

+ +
+
+ + + + + + + +
bool RagdollSettings::Stabilize ()
+
+

Stabilize the constraints of the ragdoll

Returns
True on success, false on failure.
+ +
+
+

Member Data Documentation

+ +

◆ mAdditionalConstraints

+ +
+
+ + + + +
AdditionalConstraintVector RagdollSettings::mAdditionalConstraints
+
+ +

A list of constraints that connects two bodies in a ragdoll (for non parent child related constraints)

+ +
+
+ +

◆ mParts

+ +
+
+ + + + +
PartVector RagdollSettings::mParts
+
+ +

For each of the joints, the body and constraint attaching it to its parent body (1-on-1 with mSkeleton.GetJoints())

+ +
+
+ +

◆ mSkeleton

+ +
+
+ + + + +
Ref<Skeleton> RagdollSettings::mSkeleton
+
+ +

The skeleton for this ragdoll.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_ragdoll_settings.js b/class_ragdoll_settings.js new file mode 100644 index 000000000..f43cf64cc --- /dev/null +++ b/class_ragdoll_settings.js @@ -0,0 +1,24 @@ +var class_ragdoll_settings = +[ + [ "AdditionalConstraint", "class_ragdoll_settings_1_1_additional_constraint.html", "class_ragdoll_settings_1_1_additional_constraint" ], + [ "Part", "class_ragdoll_settings_1_1_part.html", "class_ragdoll_settings_1_1_part" ], + [ "AdditionalConstraintVector", "class_ragdoll_settings.html#a9b2cdf3b1dc8ca01105aed3e626dce7f", null ], + [ "BodyIdxPair", "class_ragdoll_settings.html#a36195b8e16b3bc71bcace6dc5ab207e8", null ], + [ "PartVector", "class_ragdoll_settings.html#afe45741614c7194437ffcafdd2552b7d", null ], + [ "RagdollResult", "class_ragdoll_settings.html#a496ff56b454d0833f27c9894313d1228", null ], + [ "CalculateBodyIndexToConstraintIndex", "class_ragdoll_settings.html#a1e23b51741e51dd17319254ab2314e8f", null ], + [ "CalculateConstraintIndexToBodyIdxPair", "class_ragdoll_settings.html#a549e9e4d95b8bb57fa1feb91fa142002", null ], + [ "CreateRagdoll", "class_ragdoll_settings.html#a6f5c2dd947c77b071431f91a1f1b6251", null ], + [ "DisableParentChildCollisions", "class_ragdoll_settings.html#a4fa33727be725de16620f446fbb420f6", null ], + [ "GetBodyIndexToConstraintIndex", "class_ragdoll_settings.html#a0d32abac6067ec311bb89c65f1fd6e3e", null ], + [ "GetBodyIndicesForConstraintIndex", "class_ragdoll_settings.html#abf5abd1cf5ac17cd649c7ad69366b63e", null ], + [ "GetConstraintIndexForBodyIndex", "class_ragdoll_settings.html#a1749cda0e9b21d71951d950561eed206", null ], + [ "GetConstraintIndexToBodyIdxPair", "class_ragdoll_settings.html#a7e1760aeb58718b818dc1c30f7049678", null ], + [ "GetSkeleton", "class_ragdoll_settings.html#a10ee1dfde20a1031ba99268be5b60157", null ], + [ "GetSkeleton", "class_ragdoll_settings.html#a5f7c10c07d5cdaa2800bda61897f8852", null ], + [ "SaveBinaryState", "class_ragdoll_settings.html#a5ac758eeeb02faf2d90dbf70c874fda5", null ], + [ "Stabilize", "class_ragdoll_settings.html#ab47bfb4b4c4c9dc780307449f9907bae", null ], + [ "mAdditionalConstraints", "class_ragdoll_settings.html#aa5b99482d05587d747351f962780f91f", null ], + [ "mParts", "class_ragdoll_settings.html#acf5a663278bc571eb621e180abc67a3b", null ], + [ "mSkeleton", "class_ragdoll_settings.html#ad4fed891ce9688ea6e65b84d913be3b8", null ] +]; \ No newline at end of file diff --git a/class_ragdoll_settings.png b/class_ragdoll_settings.png new file mode 100644 index 000000000..0a6ba5df1 Binary files /dev/null and b/class_ragdoll_settings.png differ diff --git a/class_ragdoll_settings_1_1_additional_constraint-members.html b/class_ragdoll_settings_1_1_additional_constraint-members.html new file mode 100644 index 000000000..6e2f4d2a3 --- /dev/null +++ b/class_ragdoll_settings_1_1_additional_constraint-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RagdollSettings::AdditionalConstraint Member List
+
+
+ +

This is the complete list of members for RagdollSettings::AdditionalConstraint, including all inherited members.

+ + + + + +
AdditionalConstraint()=defaultRagdollSettings::AdditionalConstraint
AdditionalConstraint(int inBodyIdx1, int inBodyIdx2, TwoBodyConstraintSettings *inConstraint)RagdollSettings::AdditionalConstraintinline
mBodyIdxRagdollSettings::AdditionalConstraint
mConstraintRagdollSettings::AdditionalConstraint
+
+ + + + diff --git a/class_ragdoll_settings_1_1_additional_constraint.html b/class_ragdoll_settings_1_1_additional_constraint.html new file mode 100644 index 000000000..4d2b1f9a8 --- /dev/null +++ b/class_ragdoll_settings_1_1_additional_constraint.html @@ -0,0 +1,249 @@ + + + + + + + +Jolt Physics: RagdollSettings::AdditionalConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RagdollSettings::AdditionalConstraint Class Reference
+
+
+ +

A constraint that connects two bodies in a ragdoll (for non parent child related constraints) + More...

+ +

#include <Ragdoll.h>

+ + + + + + + +

+Public Member Functions

 AdditionalConstraint ()=default
 Constructors.
 
 AdditionalConstraint (int inBodyIdx1, int inBodyIdx2, TwoBodyConstraintSettings *inConstraint)
 
+ + + + + + + +

+Public Attributes

int mBodyIdx [2]
 Indices of the bodies that this constraint connects.
 
Ref< TwoBodyConstraintSettingsmConstraint
 The constraint that connects these bodies.
 
+

Detailed Description

+

A constraint that connects two bodies in a ragdoll (for non parent child related constraints)

+

Constructor & Destructor Documentation

+ +

◆ AdditionalConstraint() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
RagdollSettings::AdditionalConstraint::AdditionalConstraint ()
+
+default
+
+ +

Constructors.

+ +
+
+ +

◆ AdditionalConstraint() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
RagdollSettings::AdditionalConstraint::AdditionalConstraint (int inBodyIdx1,
int inBodyIdx2,
TwoBodyConstraintSettingsinConstraint 
)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mBodyIdx

+ +
+
+ + + + +
int RagdollSettings::AdditionalConstraint::mBodyIdx[2]
+
+ +

Indices of the bodies that this constraint connects.

+ +
+
+ +

◆ mConstraint

+ +
+
+ + + + +
Ref<TwoBodyConstraintSettings> RagdollSettings::AdditionalConstraint::mConstraint
+
+ +

The constraint that connects these bodies.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ragdoll_settings_1_1_additional_constraint.js b/class_ragdoll_settings_1_1_additional_constraint.js new file mode 100644 index 000000000..750c251bb --- /dev/null +++ b/class_ragdoll_settings_1_1_additional_constraint.js @@ -0,0 +1,7 @@ +var class_ragdoll_settings_1_1_additional_constraint = +[ + [ "AdditionalConstraint", "class_ragdoll_settings_1_1_additional_constraint.html#a4edf70ad4617e7f369fafa7da3e4194a", null ], + [ "AdditionalConstraint", "class_ragdoll_settings_1_1_additional_constraint.html#ad853912a3308a5439261bc80ff4f12c7", null ], + [ "mBodyIdx", "class_ragdoll_settings_1_1_additional_constraint.html#ade1f373302098cee84000e7fb9253561", null ], + [ "mConstraint", "class_ragdoll_settings_1_1_additional_constraint.html#a6939cc6d84304810abc9adfce5cc70e4", null ] +]; \ No newline at end of file diff --git a/class_ragdoll_settings_1_1_part-members.html b/class_ragdoll_settings_1_1_part-members.html new file mode 100644 index 000000000..587f19542 --- /dev/null +++ b/class_ragdoll_settings_1_1_part-members.html @@ -0,0 +1,167 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RagdollSettings::Part Member List
+
+
+ +

This is the complete list of members for RagdollSettings::Part, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BCSResult typedefBodyCreationSettings
BodyCreationSettings()=defaultBodyCreationSettings
BodyCreationSettings(const ShapeSettings *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)BodyCreationSettingsinline
BodyCreationSettings(const Shape *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)BodyCreationSettingsinline
ConvertShapeSettings()BodyCreationSettings
GetMassProperties() constBodyCreationSettings
GetShape() constBodyCreationSettings
GetShapeSettings() constBodyCreationSettingsinline
GroupFilterToIDMap typedefBodyCreationSettings
HasMassProperties() constBodyCreationSettingsinline
IDToGroupFilterMap typedefBodyCreationSettings
IDToMaterialMap typedefBodyCreationSettings
IDToShapeMap typedefBodyCreationSettings
mAllowDynamicOrKinematicBodyCreationSettings
mAllowedDOFsBodyCreationSettings
mAllowSleepingBodyCreationSettings
mAngularDampingBodyCreationSettings
mAngularVelocityBodyCreationSettings
mApplyGyroscopicForceBodyCreationSettings
MaterialToIDMap typedefBodyCreationSettings
mCollideKinematicVsNonDynamicBodyCreationSettings
mCollisionGroupBodyCreationSettings
mEnhancedInternalEdgeRemovalBodyCreationSettings
mFrictionBodyCreationSettings
mGravityFactorBodyCreationSettings
mInertiaMultiplierBodyCreationSettings
mIsSensorBodyCreationSettings
mLinearDampingBodyCreationSettings
mLinearVelocityBodyCreationSettings
mMassPropertiesOverrideBodyCreationSettings
mMaxAngularVelocityBodyCreationSettings
mMaxLinearVelocityBodyCreationSettings
mMotionQualityBodyCreationSettings
mMotionTypeBodyCreationSettings
mNumPositionStepsOverrideBodyCreationSettings
mNumVelocityStepsOverrideBodyCreationSettings
mObjectLayerBodyCreationSettings
mOverrideMassPropertiesBodyCreationSettings
mPositionBodyCreationSettings
mRestitutionBodyCreationSettings
mRotationBodyCreationSettings
mToParentRagdollSettings::Part
mUseManifoldReductionBodyCreationSettings
mUserDataBodyCreationSettings
RestoreBinaryState(StreamIn &inStream)BodyCreationSettings
SaveBinaryState(StreamOut &inStream) constBodyCreationSettings
SaveWithChildren(StreamOut &inStream, ShapeToIDMap *ioShapeMap, MaterialToIDMap *ioMaterialMap, GroupFilterToIDMap *ioGroupFilterMap) constBodyCreationSettings
SetShape(const Shape *inShape)BodyCreationSettingsinline
SetShapeSettings(const ShapeSettings *inShape)BodyCreationSettingsinline
ShapeToIDMap typedefBodyCreationSettings
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap, IDToGroupFilterMap &ioGroupFilterMap)BodyCreationSettingsstatic
+
+ + + + diff --git a/class_ragdoll_settings_1_1_part.html b/class_ragdoll_settings_1_1_part.html new file mode 100644 index 000000000..9b7709a6d --- /dev/null +++ b/class_ragdoll_settings_1_1_part.html @@ -0,0 +1,302 @@ + + + + + + + +Jolt Physics: RagdollSettings::Part Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RagdollSettings::Part Class Reference
+
+
+ +

A single rigid body sub part of the ragdoll. + More...

+ +

#include <Ragdoll.h>

+
+Inheritance diagram for RagdollSettings::Part:
+
+
+ + +BodyCreationSettings + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Ref< TwoBodyConstraintSettingsmToParent
 
- Public Attributes inherited from BodyCreationSettings
RVec3 mPosition = RVec3::sZero()
 Position of the body (not of the center of mass)
 
Quat mRotation = Quat::sIdentity()
 Rotation of the body.
 
Vec3 mLinearVelocity = Vec3::sZero()
 World space linear velocity of the center of mass (m/s)
 
Vec3 mAngularVelocity = Vec3::sZero()
 World space angular velocity (rad/s)
 
uint64 mUserData = 0
 User data value (can be used by application)
 
ObjectLayer mObjectLayer = 0
 The collision layer this body belongs to (determines if two objects can collide)
 
CollisionGroup mCollisionGroup
 The collision group this body belongs to (determines if two objects can collide)
 
EMotionType mMotionType = EMotionType::Dynamic
 Motion type, determines if the object is static, dynamic or kinematic.
 
EAllowedDOFs mAllowedDOFs = EAllowedDOFs::All
 Which degrees of freedom this body has (can be used to limit simulation to 2D)
 
bool mAllowDynamicOrKinematic = false
 When this body is created as static, this setting tells the system to create a MotionProperties object so that the object can be switched to kinematic or dynamic.
 
bool mIsSensor = false
 If this body is a sensor. A sensor will receive collision callbacks, but will not cause any collision responses and can be used as a trigger volume. See description at Body::SetIsSensor.
 
bool mCollideKinematicVsNonDynamic = false
 If kinematic objects can generate contact points against other kinematic or static objects. See description at Body::SetCollideKinematicVsNonDynamic.
 
bool mUseManifoldReduction = true
 If this body should use manifold reduction (see description at Body::SetUseManifoldReduction)
 
bool mApplyGyroscopicForce = false
 Set to indicate that the gyroscopic force should be applied to this body (aka Dzhanibekov effect, see https://en.wikipedia.org/wiki/Tennis_racket_theorem)
 
EMotionQuality mMotionQuality = EMotionQuality::Discrete
 Motion quality, or how well it detects collisions when it has a high velocity.
 
bool mEnhancedInternalEdgeRemoval = false
 Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.
 
bool mAllowSleeping = true
 If this body can go to sleep or not.
 
float mFriction = 0.2f
 Friction of the body (dimensionless number, usually between 0 and 1, 0 = no friction, 1 = friction force equals force that presses the two bodies together). Note that bodies can have negative friction but the combined friction (see PhysicsSystem::SetCombineFriction) should never go below zero.
 
float mRestitution = 0.0f
 Restitution of body (dimensionless number, usually between 0 and 1, 0 = completely inelastic collision response, 1 = completely elastic collision response). Note that bodies can have negative restitution but the combined restitution (see PhysicsSystem::SetCombineRestitution) should never go below zero.
 
float mLinearDamping = 0.05f
 Linear damping: dv/dt = -c * v. c must be between 0 and 1 but is usually close to 0.
 
float mAngularDamping = 0.05f
 Angular damping: dw/dt = -c * w. c must be between 0 and 1 but is usually close to 0.
 
float mMaxLinearVelocity = 500.0f
 Maximum linear velocity that this body can reach (m/s)
 
float mMaxAngularVelocity = 0.25f * JPH_PI * 60.0f
 Maximum angular velocity that this body can reach (rad/s)
 
float mGravityFactor = 1.0f
 Value to multiply gravity with for this body.
 
uint mNumVelocityStepsOverride = 0
 Used only when this body is dynamic and colliding. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when this body is dynamic and colliding. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
EOverrideMassProperties mOverrideMassProperties = EOverrideMassProperties::CalculateMassAndInertia
 Determines how mMassPropertiesOverride will be used.
 
float mInertiaMultiplier = 1.0f
 When calculating the inertia (not when it is provided) the calculated inertia will be multiplied by this value.
 
MassProperties mMassPropertiesOverride
 Contains replacement mass settings which override the automatically calculated values.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BodyCreationSettings
using GroupFilterToIDMap = StreamUtils::ObjectToIDMap< GroupFilter >
 
using IDToGroupFilterMap = StreamUtils::IDToObjectMap< GroupFilter >
 
using ShapeToIDMap = Shape::ShapeToIDMap
 
using IDToShapeMap = Shape::IDToShapeMap
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
using BCSResult = Result< BodyCreationSettings >
 
- Public Member Functions inherited from BodyCreationSettings
 BodyCreationSettings ()=default
 Constructor.
 
 BodyCreationSettings (const ShapeSettings *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)
 
 BodyCreationSettings (const Shape *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)
 
const ShapeSettingsGetShapeSettings () const
 Access to the shape settings object. This contains serializable (non-runtime optimized) information about the Shape.
 
void SetShapeSettings (const ShapeSettings *inShape)
 
Shape::ShapeResult ConvertShapeSettings ()
 Convert ShapeSettings object into a Shape object. This will free the ShapeSettings object and make the object ready for runtime. Serialization is no longer possible after this.
 
const ShapeGetShape () const
 Access to the run-time shape object. Will convert from ShapeSettings object if needed.
 
void SetShape (const Shape *inShape)
 
bool HasMassProperties () const
 Check if the mass properties of this body will be calculated (only relevant for kinematic or dynamic objects that need a MotionProperties object)
 
MassProperties GetMassProperties () const
 Calculate (or return when overridden) the mass and inertia for this body.
 
void SaveBinaryState (StreamOut &inStream) const
 Saves the state of this object in binary form to inStream. Doesn't store the shape nor the group filter.
 
void RestoreBinaryState (StreamIn &inStream)
 Restore the state of this object from inStream. Doesn't restore the shape nor the group filter.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap *ioShapeMap, MaterialToIDMap *ioMaterialMap, GroupFilterToIDMap *ioGroupFilterMap) const
 
- Static Public Member Functions inherited from BodyCreationSettings
static BCSResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap, IDToGroupFilterMap &ioGroupFilterMap)
 Restore body creation settings, its shape, materials and group filter. Pass in an empty map in ioShapeMap / ioMaterialMap / ioGroupFilterMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
+

Detailed Description

+

A single rigid body sub part of the ragdoll.

+

Member Data Documentation

+ +

◆ mToParent

+ +
+
+ + + + +
Ref<TwoBodyConstraintSettings> RagdollSettings::Part::mToParent
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ragdoll_settings_1_1_part.js b/class_ragdoll_settings_1_1_part.js new file mode 100644 index 000000000..8433938d7 --- /dev/null +++ b/class_ragdoll_settings_1_1_part.js @@ -0,0 +1,4 @@ +var class_ragdoll_settings_1_1_part = +[ + [ "mToParent", "class_ragdoll_settings_1_1_part.html#afb73a8b66a2623b865346823710b68c1", null ] +]; \ No newline at end of file diff --git a/class_ragdoll_settings_1_1_part.png b/class_ragdoll_settings_1_1_part.png new file mode 100644 index 000000000..d8c131cad Binary files /dev/null and b/class_ragdoll_settings_1_1_part.png differ diff --git a/class_ray_cast_result-members.html b/class_ray_cast_result-members.html new file mode 100644 index 000000000..ecafb8c04 --- /dev/null +++ b/class_ray_cast_result-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RayCastResult Member List
+
+
+ +

This is the complete list of members for RayCastResult, including all inherited members.

+ + + + + + +
GetEarlyOutFraction() constBroadPhaseCastResultinline
mBodyIDBroadPhaseCastResult
mFractionBroadPhaseCastResult
mSubShapeID2RayCastResult
Reset()BroadPhaseCastResultinline
+
+ + + + diff --git a/class_ray_cast_result.html b/class_ray_cast_result.html new file mode 100644 index 000000000..c904946b4 --- /dev/null +++ b/class_ray_cast_result.html @@ -0,0 +1,177 @@ + + + + + + + +Jolt Physics: RayCastResult Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RayCastResult Class Reference
+
+
+ +

Specialization of cast result against a shape. + More...

+ +

#include <CastResult.h>

+
+Inheritance diagram for RayCastResult:
+
+
+ + +BroadPhaseCastResult + +
+ + + + + + + + + + + + +

+Public Attributes

JPH_OVERRIDE_NEW_DELETE SubShapeID mSubShapeID2
 Sub shape ID of shape that we collided against.
 
- Public Attributes inherited from BroadPhaseCastResult
BodyID mBodyID
 Body that was hit.
 
float mFraction = 1.0f + FLT_EPSILON
 Hit fraction of the ray/object [0, 1], HitPoint = Start + mFraction * (End - Start)
 
+ + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from BroadPhaseCastResult
JPH_OVERRIDE_NEW_DELETE float GetEarlyOutFraction () const
 Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'. For rays/cast shapes we can just use the collision fraction.
 
void Reset ()
 Reset this result so it can be reused for a new cast.
 
+

Detailed Description

+

Specialization of cast result against a shape.

+

Member Data Documentation

+ +

◆ mSubShapeID2

+ +
+
+ + + + +
JPH_OVERRIDE_NEW_DELETE SubShapeID RayCastResult::mSubShapeID2
+
+ +

Sub shape ID of shape that we collided against.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ray_cast_result.js b/class_ray_cast_result.js new file mode 100644 index 000000000..3d295943f --- /dev/null +++ b/class_ray_cast_result.js @@ -0,0 +1,4 @@ +var class_ray_cast_result = +[ + [ "mSubShapeID2", "class_ray_cast_result.html#ab40012f9ad5377a0d517fa51b23b385e", null ] +]; \ No newline at end of file diff --git a/class_ray_cast_result.png b/class_ray_cast_result.png new file mode 100644 index 000000000..9a1c001dd Binary files /dev/null and b/class_ray_cast_result.png differ diff --git a/class_ray_cast_settings-members.html b/class_ray_cast_settings-members.html new file mode 100644 index 000000000..c17795ce9 --- /dev/null +++ b/class_ray_cast_settings-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RayCastSettings Member List
+
+
+ +

This is the complete list of members for RayCastSettings, including all inherited members.

+ + + + + +
mBackFaceModeConvexRayCastSettings
mBackFaceModeTrianglesRayCastSettings
mTreatConvexAsSolidRayCastSettings
SetBackFaceMode(EBackFaceMode inMode)RayCastSettingsinline
+
+ + + + diff --git a/class_ray_cast_settings.html b/class_ray_cast_settings.html new file mode 100644 index 000000000..b0013abb2 --- /dev/null +++ b/class_ray_cast_settings.html @@ -0,0 +1,225 @@ + + + + + + + +Jolt Physics: RayCastSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RayCastSettings Class Reference
+
+
+ +

Settings to be passed with a ray cast. + More...

+ +

#include <RayCast.h>

+ + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE void SetBackFaceMode (EBackFaceMode inMode)
 Set the backfacing mode for all shapes.
 
+ + + + + + + + + + +

+Public Attributes

EBackFaceMode mBackFaceModeTriangles = EBackFaceMode::IgnoreBackFaces
 How backfacing triangles should be treated (should we report back facing hits for triangle based shapes, e.g. MeshShape/HeightFieldShape?)
 
EBackFaceMode mBackFaceModeConvex = EBackFaceMode::IgnoreBackFaces
 How backfacing convex objects should be treated (should we report back facing hits for convex shapes?)
 
bool mTreatConvexAsSolid = true
 If convex shapes should be treated as solid. When true, a ray starting inside a convex shape will generate a hit at fraction 0.
 
+

Detailed Description

+

Settings to be passed with a ray cast.

+

Member Function Documentation

+ +

◆ SetBackFaceMode()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE void RayCastSettings::SetBackFaceMode (EBackFaceMode inMode)
+
+inline
+
+ +

Set the backfacing mode for all shapes.

+ +
+
+

Member Data Documentation

+ +

◆ mBackFaceModeConvex

+ +
+
+ + + + +
EBackFaceMode RayCastSettings::mBackFaceModeConvex = EBackFaceMode::IgnoreBackFaces
+
+ +

How backfacing convex objects should be treated (should we report back facing hits for convex shapes?)

+ +
+
+ +

◆ mBackFaceModeTriangles

+ +
+
+ + + + +
EBackFaceMode RayCastSettings::mBackFaceModeTriangles = EBackFaceMode::IgnoreBackFaces
+
+ +

How backfacing triangles should be treated (should we report back facing hits for triangle based shapes, e.g. MeshShape/HeightFieldShape?)

+ +
+
+ +

◆ mTreatConvexAsSolid

+ +
+
+ + + + +
bool RayCastSettings::mTreatConvexAsSolid = true
+
+ +

If convex shapes should be treated as solid. When true, a ray starting inside a convex shape will generate a hit at fraction 0.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ray_cast_settings.js b/class_ray_cast_settings.js new file mode 100644 index 000000000..349c228f9 --- /dev/null +++ b/class_ray_cast_settings.js @@ -0,0 +1,7 @@ +var class_ray_cast_settings = +[ + [ "SetBackFaceMode", "class_ray_cast_settings.html#a639a4c728fbe093ed715399053bf53ae", null ], + [ "mBackFaceModeConvex", "class_ray_cast_settings.html#adfbe37689112850a164f7fd3c1517924", null ], + [ "mBackFaceModeTriangles", "class_ray_cast_settings.html#a6dc75db6a7e9eab529fe2691f40c43ec", null ], + [ "mTreatConvexAsSolid", "class_ray_cast_settings.html#ad275ebcd622dc43bc695426c55fb02f7", null ] +]; \ No newline at end of file diff --git a/class_ray_inv_direction-members.html b/class_ray_inv_direction-members.html new file mode 100644 index 000000000..f4f1f65e0 --- /dev/null +++ b/class_ray_inv_direction-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RayInvDirection Member List
+
+
+ +

This is the complete list of members for RayInvDirection, including all inherited members.

+ + + + + + +
mInvDirectionRayInvDirection
mIsParallelRayInvDirection
RayInvDirection()=defaultRayInvDirectioninline
RayInvDirection(Vec3Arg inDirection)RayInvDirectioninlineexplicit
Set(Vec3Arg inDirection)RayInvDirectioninline
+
+ + + + diff --git a/class_ray_inv_direction.html b/class_ray_inv_direction.html new file mode 100644 index 000000000..4226a7535 --- /dev/null +++ b/class_ray_inv_direction.html @@ -0,0 +1,265 @@ + + + + + + + +Jolt Physics: RayInvDirection Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RayInvDirection Class Reference
+
+
+ +

Helper structure holding the reciprocal of a ray for Ray vs AABox testing. + More...

+ +

#include <RayAABox.h>

+ + + + + + + + + + +

+Public Member Functions

 RayInvDirection ()=default
 Constructors.
 
 RayInvDirection (Vec3Arg inDirection)
 
void Set (Vec3Arg inDirection)
 Set reciprocal from ray direction.
 
+ + + + + + + +

+Public Attributes

Vec3 mInvDirection
 1 / ray direction
 
UVec4 mIsParallel
 for each component if it is parallel to the coordinate axis
 
+

Detailed Description

+

Helper structure holding the reciprocal of a ray for Ray vs AABox testing.

+

Constructor & Destructor Documentation

+ +

◆ RayInvDirection() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
RayInvDirection::RayInvDirection ()
+
+inlinedefault
+
+ +

Constructors.

+ +
+
+ +

◆ RayInvDirection() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
RayInvDirection::RayInvDirection (Vec3Arg inDirection)
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ Set()

+ +
+
+ + + + + +
+ + + + + + + + +
void RayInvDirection::Set (Vec3Arg inDirection)
+
+inline
+
+ +

Set reciprocal from ray direction.

+ +
+
+

Member Data Documentation

+ +

◆ mInvDirection

+ +
+
+ + + + +
Vec3 RayInvDirection::mInvDirection
+
+ +

1 / ray direction

+ +
+
+ +

◆ mIsParallel

+ +
+
+ + + + +
UVec4 RayInvDirection::mIsParallel
+
+ +

for each component if it is parallel to the coordinate axis

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ray_inv_direction.js b/class_ray_inv_direction.js new file mode 100644 index 000000000..4fb39ee55 --- /dev/null +++ b/class_ray_inv_direction.js @@ -0,0 +1,8 @@ +var class_ray_inv_direction = +[ + [ "RayInvDirection", "class_ray_inv_direction.html#a5609464debfaa939e4c947f083a84556", null ], + [ "RayInvDirection", "class_ray_inv_direction.html#a33b00fe0da252d7b5aa1801ffb7e5c56", null ], + [ "Set", "class_ray_inv_direction.html#ac9569874f14ade61e966744af2abdc79", null ], + [ "mInvDirection", "class_ray_inv_direction.html#a093897689117556a3a61eaaf15b543c2", null ], + [ "mIsParallel", "class_ray_inv_direction.html#a0188d384cbde315c79e1986a67efd7ce", null ] +]; \ No newline at end of file diff --git a/class_ref-members.html b/class_ref-members.html new file mode 100644 index 000000000..73a1f7092 --- /dev/null +++ b/class_ref-members.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Ref< T > Member List
+
+
+ +

This is the complete list of members for Ref< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
GetPtr() constRef< T >inline
InternalGetPointer()Ref< T >inline
operator T*() constRef< T >inline
operator!=(const T *inRHS) constRef< T >inline
operator!=(const Ref< T > &inRHS) constRef< T >inline
operator*() constRef< T >inline
operator->() constRef< T >inline
operator=(T *inRHS)Ref< T >inline
operator=(const Ref< T > &inRHS)Ref< T >inline
operator=(Ref< T > &&inRHS) noexceptRef< T >inline
operator==(const T *inRHS) constRef< T >inline
operator==(const Ref< T > &inRHS) constRef< T >inline
Ref()Ref< T >inline
Ref(T *inRHS)Ref< T >inline
Ref(const Ref< T > &inRHS)Ref< T >inline
Ref(Ref< T > &&inRHS) noexceptRef< T >inline
RefConstRef< T >friend
~Ref()Ref< T >inline
+
+ + + + diff --git a/class_ref.html b/class_ref.html new file mode 100644 index 000000000..6410044b4 --- /dev/null +++ b/class_ref.html @@ -0,0 +1,689 @@ + + + + + + + +Jolt Physics: Ref< T > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Ref< T > Class Template Reference
+
+
+ +

#include <Reference.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Ref ()
 Constructor.
 
 Ref (T *inRHS)
 
 Ref (const Ref< T > &inRHS)
 
 Ref (Ref< T > &&inRHS) noexcept
 
 ~Ref ()
 
Ref< T > & operator= (T *inRHS)
 Assignment operators.
 
Ref< T > & operator= (const Ref< T > &inRHS)
 
Ref< T > & operator= (Ref< T > &&inRHS) noexcept
 
 operator T* () const
 Casting operators.
 
T * operator-> () const
 Access like a normal pointer.
 
T & operator* () const
 
bool operator== (const T *inRHS) const
 Comparison.
 
bool operator== (const Ref< T > &inRHS) const
 
bool operator!= (const T *inRHS) const
 
bool operator!= (const Ref< T > &inRHS) const
 
T * GetPtr () const
 Get pointer.
 
void ** InternalGetPointer ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Friends

template<class T2 >
class RefConst
 
+

Detailed Description

+
template<class T>
+class Ref< T >

Class for automatic referencing, this is the equivalent of a pointer to type T if you assign a value to this class it will increment the reference count by one of this object, and if you assign something else it will decrease the reference count of the first object again. If it reaches a reference count of zero it will be deleted

+

Constructor & Destructor Documentation

+ +

◆ Ref() [1/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
Ref< T >::Ref ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ Ref() [2/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
Ref< T >::Ref (T * inRHS)
+
+inline
+
+ +
+
+ +

◆ Ref() [3/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
Ref< T >::Ref (const Ref< T > & inRHS)
+
+inline
+
+ +
+
+ +

◆ Ref() [4/4]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
Ref< T >::Ref (Ref< T > && inRHS)
+
+inlinenoexcept
+
+ +
+
+ +

◆ ~Ref()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
Ref< T >::~Ref ()
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetPtr()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
T * Ref< T >::GetPtr () const
+
+inline
+
+ +

Get pointer.

+ +
+
+ +

◆ InternalGetPointer()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
void ** Ref< T >::InternalGetPointer ()
+
+inline
+
+ +

INTERNAL HELPER FUNCTION USED BY SERIALIZATION.

+ +
+
+ +

◆ operator T*()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
Ref< T >::operator T* () const
+
+inline
+
+ +

Casting operators.

+ +
+
+ +

◆ operator!=() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool Ref< T >::operator!= (const Ref< T > & inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator!=() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool Ref< T >::operator!= (const T * inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator*()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
T & Ref< T >::operator* () const
+
+inline
+
+ +
+
+ +

◆ operator->()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
T * Ref< T >::operator-> () const
+
+inline
+
+ +

Access like a normal pointer.

+ +
+
+ +

◆ operator=() [1/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
Ref< T > & Ref< T >::operator= (const Ref< T > & inRHS)
+
+inline
+
+ +
+
+ +

◆ operator=() [2/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
Ref< T > & Ref< T >::operator= (Ref< T > && inRHS)
+
+inlinenoexcept
+
+ +
+
+ +

◆ operator=() [3/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
Ref< T > & Ref< T >::operator= (T * inRHS)
+
+inline
+
+ +

Assignment operators.

+ +
+
+ +

◆ operator==() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool Ref< T >::operator== (const Ref< T > & inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator==() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool Ref< T >::operator== (const T * inRHS) const
+
+inline
+
+ +

Comparison.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ RefConst

+ +
+
+
+template<class T >
+
+template<class T2 >
+ + + + + +
+ + + + +
friend class RefConst
+
+friend
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ref.js b/class_ref.js new file mode 100644 index 000000000..cbbb4d17f --- /dev/null +++ b/class_ref.js @@ -0,0 +1,21 @@ +var class_ref = +[ + [ "Ref", "class_ref.html#a41cec5ec3f778e24fc24ec8d2f2cfc4e", null ], + [ "Ref", "class_ref.html#ac2f49c59614fcf3cc90a4b4bb1d4ee61", null ], + [ "Ref", "class_ref.html#a058eb96b88278fcd99ff5ce1fef30bb8", null ], + [ "Ref", "class_ref.html#ab9c96a7f35ee47259673d12a921f7cfb", null ], + [ "~Ref", "class_ref.html#a607d75703495e2c67a6aa33b6d943ab5", null ], + [ "GetPtr", "class_ref.html#a11ddc0decf3451568dc47178bed5e2aa", null ], + [ "InternalGetPointer", "class_ref.html#a77d70f3060879921e889cb1bb14c676f", null ], + [ "operator T*", "class_ref.html#a7815a268701499cc6516ea180c1e7761", null ], + [ "operator!=", "class_ref.html#abbc5455c642ef5997c3abc91d47b3119", null ], + [ "operator!=", "class_ref.html#a35e7936167af8457b141f0fe817f4b61", null ], + [ "operator*", "class_ref.html#af541f814b9fe7fbe7c353c6280606b37", null ], + [ "operator->", "class_ref.html#a67057f06ec2a5e7ee2be030c03f028a9", null ], + [ "operator=", "class_ref.html#a29d3889d6c706c3ebdc43c81e7aa06dd", null ], + [ "operator=", "class_ref.html#a998bf794d80e6235b98d1fd7f795cfaf", null ], + [ "operator=", "class_ref.html#a98da0b0d44b287129cf18f34f4f0eaea", null ], + [ "operator==", "class_ref.html#a888c6dc5198e4d5012fcdab607ebe46e", null ], + [ "operator==", "class_ref.html#ae00dda1e64272c9ba178d6ace26f68a9", null ], + [ "RefConst", "class_ref.html#aa53661c4e37b268c10c4a2a7cdcbfeba", null ] +]; \ No newline at end of file diff --git a/class_ref_const-members.html b/class_ref_const-members.html new file mode 100644 index 000000000..c74a17d95 --- /dev/null +++ b/class_ref_const-members.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RefConst< T > Member List
+
+
+ +

This is the complete list of members for RefConst< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
GetPtr() constRefConst< T >inline
InternalGetPointer()RefConst< T >inline
operator const T *() constRefConst< T >inline
operator!=(const T *inRHS) constRefConst< T >inline
operator!=(const RefConst< T > &inRHS) constRefConst< T >inline
operator!=(const Ref< T > &inRHS) constRefConst< T >inline
operator*() constRefConst< T >inline
operator->() constRefConst< T >inline
operator=(const T *inRHS)RefConst< T >inline
operator=(const RefConst< T > &inRHS)RefConst< T >inline
operator=(RefConst< T > &&inRHS) noexceptRefConst< T >inline
operator=(const Ref< T > &inRHS)RefConst< T >inline
operator=(Ref< T > &&inRHS) noexceptRefConst< T >inline
operator==(const T *inRHS) constRefConst< T >inline
operator==(const RefConst< T > &inRHS) constRefConst< T >inline
operator==(const Ref< T > &inRHS) constRefConst< T >inline
RefConst()RefConst< T >inline
RefConst(const T *inRHS)RefConst< T >inline
RefConst(const RefConst< T > &inRHS)RefConst< T >inline
RefConst(RefConst< T > &&inRHS) noexceptRefConst< T >inline
RefConst(const Ref< T > &inRHS)RefConst< T >inline
RefConst(Ref< T > &&inRHS) noexceptRefConst< T >inline
~RefConst()RefConst< T >inline
+
+ + + + diff --git a/class_ref_const.html b/class_ref_const.html new file mode 100644 index 000000000..851d0e54b --- /dev/null +++ b/class_ref_const.html @@ -0,0 +1,835 @@ + + + + + + + +Jolt Physics: RefConst< T > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RefConst< T > Class Template Reference
+
+
+ +

#include <Reference.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RefConst ()
 Constructor.
 
 RefConst (const T *inRHS)
 
 RefConst (const RefConst< T > &inRHS)
 
 RefConst (RefConst< T > &&inRHS) noexcept
 
 RefConst (const Ref< T > &inRHS)
 
 RefConst (Ref< T > &&inRHS) noexcept
 
 ~RefConst ()
 
RefConst< T > & operator= (const T *inRHS)
 Assignment operators.
 
RefConst< T > & operator= (const RefConst< T > &inRHS)
 
RefConst< T > & operator= (RefConst< T > &&inRHS) noexcept
 
RefConst< T > & operator= (const Ref< T > &inRHS)
 
RefConst< T > & operator= (Ref< T > &&inRHS) noexcept
 
 operator const T * () const
 Casting operators.
 
const T * operator-> () const
 Access like a normal pointer.
 
const T & operator* () const
 
bool operator== (const T *inRHS) const
 Comparison.
 
bool operator== (const RefConst< T > &inRHS) const
 
bool operator== (const Ref< T > &inRHS) const
 
bool operator!= (const T *inRHS) const
 
bool operator!= (const RefConst< T > &inRHS) const
 
bool operator!= (const Ref< T > &inRHS) const
 
const T * GetPtr () const
 Get pointer.
 
void ** InternalGetPointer ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+

Detailed Description

+
template<class T>
+class RefConst< T >

Class for automatic referencing, this is the equivalent of a CONST pointer to type T if you assign a value to this class it will increment the reference count by one of this object, and if you assign something else it will decrease the reference count of the first object again. If it reaches a reference count of zero it will be deleted

+

Constructor & Destructor Documentation

+ +

◆ RefConst() [1/6]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
RefConst< T >::RefConst ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ RefConst() [2/6]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
RefConst< T >::RefConst (const T * inRHS)
+
+inline
+
+ +
+
+ +

◆ RefConst() [3/6]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
RefConst< T >::RefConst (const RefConst< T > & inRHS)
+
+inline
+
+ +
+
+ +

◆ RefConst() [4/6]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
RefConst< T >::RefConst (RefConst< T > && inRHS)
+
+inlinenoexcept
+
+ +
+
+ +

◆ RefConst() [5/6]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
RefConst< T >::RefConst (const Ref< T > & inRHS)
+
+inline
+
+ +
+
+ +

◆ RefConst() [6/6]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
RefConst< T >::RefConst (Ref< T > && inRHS)
+
+inlinenoexcept
+
+ +
+
+ +

◆ ~RefConst()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
RefConst< T >::~RefConst ()
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetPtr()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
const T * RefConst< T >::GetPtr () const
+
+inline
+
+ +

Get pointer.

+ +
+
+ +

◆ InternalGetPointer()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
void ** RefConst< T >::InternalGetPointer ()
+
+inline
+
+ +

INTERNAL HELPER FUNCTION USED BY SERIALIZATION.

+ +
+
+ +

◆ operator const T *()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
RefConst< T >::operator const T * () const
+
+inline
+
+ +

Casting operators.

+ +
+
+ +

◆ operator!=() [1/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool RefConst< T >::operator!= (const Ref< T > & inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator!=() [2/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool RefConst< T >::operator!= (const RefConst< T > & inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator!=() [3/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool RefConst< T >::operator!= (const T * inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator*()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
const T & RefConst< T >::operator* () const
+
+inline
+
+ +
+
+ +

◆ operator->()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
const T * RefConst< T >::operator-> () const
+
+inline
+
+ +

Access like a normal pointer.

+ +
+
+ +

◆ operator=() [1/5]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
RefConst< T > & RefConst< T >::operator= (const Ref< T > & inRHS)
+
+inline
+
+ +
+
+ +

◆ operator=() [2/5]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
RefConst< T > & RefConst< T >::operator= (const RefConst< T > & inRHS)
+
+inline
+
+ +
+
+ +

◆ operator=() [3/5]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
RefConst< T > & RefConst< T >::operator= (const T * inRHS)
+
+inline
+
+ +

Assignment operators.

+ +
+
+ +

◆ operator=() [4/5]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
RefConst< T > & RefConst< T >::operator= (Ref< T > && inRHS)
+
+inlinenoexcept
+
+ +
+
+ +

◆ operator=() [5/5]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
RefConst< T > & RefConst< T >::operator= (RefConst< T > && inRHS)
+
+inlinenoexcept
+
+ +
+
+ +

◆ operator==() [1/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool RefConst< T >::operator== (const Ref< T > & inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator==() [2/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool RefConst< T >::operator== (const RefConst< T > & inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator==() [3/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool RefConst< T >::operator== (const T * inRHS) const
+
+inline
+
+ +

Comparison.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ref_const.js b/class_ref_const.js new file mode 100644 index 000000000..f86535bcb --- /dev/null +++ b/class_ref_const.js @@ -0,0 +1,26 @@ +var class_ref_const = +[ + [ "RefConst", "class_ref_const.html#a310f87cc5720b10d0059a1128b851d46", null ], + [ "RefConst", "class_ref_const.html#a423ea3dc5a5d83bf4a5e3fbcca36acf4", null ], + [ "RefConst", "class_ref_const.html#ab7be009ab78269524aa5ac6387b5ad35", null ], + [ "RefConst", "class_ref_const.html#ab35b0b13bff8349d4e910b56b73cf115", null ], + [ "RefConst", "class_ref_const.html#a5bac911b6794527e7ae3016773f2a506", null ], + [ "RefConst", "class_ref_const.html#ad331b640eec29970a066ff44f988ccab", null ], + [ "~RefConst", "class_ref_const.html#a3961f15d3f64693477de9f91684916a8", null ], + [ "GetPtr", "class_ref_const.html#a1dcd19b921fc3022e10cbde1c5ac36e2", null ], + [ "InternalGetPointer", "class_ref_const.html#a87a9a9c835eaabab406c8015c8ef2033", null ], + [ "operator const T *", "class_ref_const.html#abb26c088acecc5b04ee18402ab8aed00", null ], + [ "operator!=", "class_ref_const.html#a4bf0ce88b38379fb6aab094530391080", null ], + [ "operator!=", "class_ref_const.html#af7109de8d546a1bcf49c87ffcdcf443e", null ], + [ "operator!=", "class_ref_const.html#a23fa7e171fc7404b20e23eb826b3f10a", null ], + [ "operator*", "class_ref_const.html#a468e29d26ab1621fc62a18020e181fd9", null ], + [ "operator->", "class_ref_const.html#a9d1007543402ab4cf1bde9945763d202", null ], + [ "operator=", "class_ref_const.html#a89fe348876fdbfcb951c4363f49b7dff", null ], + [ "operator=", "class_ref_const.html#a18cb3711847569eee946938afa1e7e36", null ], + [ "operator=", "class_ref_const.html#a48180be53b5fa9cd49d2ce05c7fbe006", null ], + [ "operator=", "class_ref_const.html#a3b97e739b76a3c026046a81343188d62", null ], + [ "operator=", "class_ref_const.html#ac67ad88f734b452b19d653e032168fc5", null ], + [ "operator==", "class_ref_const.html#a1237c1b7b36e3c2bbccaeccf34cb0570", null ], + [ "operator==", "class_ref_const.html#a1609b10cb02f2138130396f4862df7f5", null ], + [ "operator==", "class_ref_const.html#acc0653f6d7ae2556d1a97230e87ccf2a", null ] +]; \ No newline at end of file diff --git a/class_ref_target-members.html b/class_ref_target-members.html new file mode 100644 index 000000000..cdf70541f --- /dev/null +++ b/class_ref_target-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RefTarget< T > Member List
+
+
+ +

This is the complete list of members for RefTarget< T >, including all inherited members.

+ + + + + + + + + + + + +
AddRef() constRefTarget< T >inline
cEmbeddedRefTarget< T >protectedstatic
GetRefCount() constRefTarget< T >inline
mRefCountRefTarget< T >mutableprotected
operator=(const RefTarget &)RefTarget< T >inline
RefTarget()=defaultRefTarget< T >inline
RefTarget(const RefTarget &)RefTarget< T >inline
Release() constRefTarget< T >inline
SetEmbedded() constRefTarget< T >inline
sInternalGetRefCountOffset()RefTarget< T >inlinestatic
~RefTarget()RefTarget< T >inline
+
+ + + + diff --git a/class_ref_target.html b/class_ref_target.html new file mode 100644 index 000000000..d21d30f8d --- /dev/null +++ b/class_ref_target.html @@ -0,0 +1,486 @@ + + + + + + + +Jolt Physics: RefTarget< T > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RefTarget< T > Class Template Reference
+
+
+ +

#include <Reference.h>

+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + +

+Static Public Member Functions

static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Attributes

atomic< uint32mRefCount = 0
 Current reference count.
 
+ + + + +

+Static Protected Attributes

static constexpr uint32 cEmbedded = 0x0ebedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+
template<class T>
+class RefTarget< T >

Simple class to facilitate reference counting / releasing Derive your class from RefTarget and you can reference it by using Ref<classname> or RefConst<classname>

+

Reference counting classes keep an integer which indicates how many references to the object are active. Reference counting objects are derived from RefTarget and staT & their life with a reference count of zero. They can then be assigned to equivalents of pointers (Ref) which will increase the reference count immediately. If the destructor of Ref is called or another object is assigned to the reference counting pointer it will decrease the reference count of the object again. If this reference count becomes zero, the object is destroyed.

+

This provides a very powerful mechanism to prevent memory leaks, but also gives some responsibility to the programmer. The most notable point is that you cannot have one object reference another and have the other reference the first one back, because this way the reference count of both objects will never become lower than 1, resulting in a memory leak. By carefully designing your classes (and particularly identifying who owns who in the class hierarchy) you can avoid these problems.

+

Constructor & Destructor Documentation

+ +

◆ RefTarget() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
RefTarget< T >::RefTarget ()
+
+inlinedefault
+
+ +

Constructor.

+ +
+
+ +

◆ RefTarget() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
RefTarget< T >::RefTarget (const RefTarget< T > & )
+
+inline
+
+ +
+
+ +

◆ ~RefTarget()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
RefTarget< T >::~RefTarget ()
+
+inline
+
+ +

assert no one is referencing us

+ +
+
+

Member Function Documentation

+ +

◆ AddRef()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
void RefTarget< T >::AddRef () const
+
+inline
+
+ +

Add or release a reference to this object.

+ +
+
+ +

◆ GetRefCount()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
uint32 RefTarget< T >::GetRefCount () const
+
+inline
+
+ +

Get current refcount of this object.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
RefTarget & RefTarget< T >::operator= (const RefTarget< T > & )
+
+inline
+
+ +

Assignment operator.

+ +
+
+ +

◆ Release()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
void RefTarget< T >::Release () const
+
+inline
+
+ +
+
+ +

◆ SetEmbedded()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
void RefTarget< T >::SetEmbedded () const
+
+inline
+
+

Mark this class as embedded, this means the type can be used in a compound or constructed on the stack. The Release function will never destruct the object, it is assumed the destructor will be called by whoever allocated the object and at that point in time it is checked that no references are left to the structure.

+ +
+
+ +

◆ sInternalGetRefCountOffset()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
static int RefTarget< T >::sInternalGetRefCountOffset ()
+
+inlinestatic
+
+ +

INTERNAL HELPER FUNCTION USED BY SERIALIZATION.

+ +
+
+

Member Data Documentation

+ +

◆ cEmbedded

+ +
+
+
+template<class T >
+ + + + + +
+ + + + +
constexpr uint32 RefTarget< T >::cEmbedded = 0x0ebedded
+
+staticconstexprprotected
+
+ +

A large value that gets added to the refcount to mark the object as embedded.

+ +
+
+ +

◆ mRefCount

+ +
+
+
+template<class T >
+ + + + + +
+ + + + +
atomic<uint32> RefTarget< T >::mRefCount = 0
+
+mutableprotected
+
+ +

Current reference count.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ref_target.js b/class_ref_target.js new file mode 100644 index 000000000..b26ca23fe --- /dev/null +++ b/class_ref_target.js @@ -0,0 +1,12 @@ +var class_ref_target = +[ + [ "RefTarget", "class_ref_target.html#a4c8a23738e2e1dd6369520a30e250b17", null ], + [ "RefTarget", "class_ref_target.html#a50444e3b659c6f93c64aee224a93f6ab", null ], + [ "~RefTarget", "class_ref_target.html#ac3110b9f511287f881d7afaf26871e1b", null ], + [ "AddRef", "class_ref_target.html#acf02c18a343bc9de9d6afb7c966f0363", null ], + [ "GetRefCount", "class_ref_target.html#acaf07366183c51cd8460c7d3dcd07c2d", null ], + [ "operator=", "class_ref_target.html#a1fc15bfe979bc43a7fa71c7c34f87ed0", null ], + [ "Release", "class_ref_target.html#a0451661dd5d85b01f969319e767993eb", null ], + [ "SetEmbedded", "class_ref_target.html#a3befa746ea517453572f6f4f5fc3b099", null ], + [ "mRefCount", "class_ref_target.html#a12afba0bdae7706a0afd4d96ac128231", null ] +]; \ No newline at end of file diff --git a/class_ref_target_virtual-members.html b/class_ref_target_virtual-members.html new file mode 100644 index 000000000..e8216ad3f --- /dev/null +++ b/class_ref_target_virtual-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RefTargetVirtual Member List
+
+
+ +

This is the complete list of members for RefTargetVirtual, including all inherited members.

+ + + + +
AddRef()=0RefTargetVirtualpure virtual
Release()=0RefTargetVirtualpure virtual
~RefTargetVirtual()=defaultRefTargetVirtualvirtual
+
+ + + + diff --git a/class_ref_target_virtual.html b/class_ref_target_virtual.html new file mode 100644 index 000000000..23faebf8c --- /dev/null +++ b/class_ref_target_virtual.html @@ -0,0 +1,223 @@ + + + + + + + +Jolt Physics: RefTargetVirtual Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RefTargetVirtual Class Referenceabstract
+
+
+ +

Pure virtual version of RefTarget. + More...

+ +

#include <Reference.h>

+ + + + + + + + + + + +

+Public Member Functions

virtual ~RefTargetVirtual ()=default
 Virtual destructor.
 
virtual void AddRef ()=0
 Virtual add reference.
 
virtual void Release ()=0
 Virtual release reference.
 
+

Detailed Description

+

Pure virtual version of RefTarget.

+

Constructor & Destructor Documentation

+ +

◆ ~RefTargetVirtual()

+ +
+
+ + + + + +
+ + + + + + + +
virtual RefTargetVirtual::~RefTargetVirtual ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ AddRef()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void RefTargetVirtual::AddRef ()
+
+pure virtual
+
+ +

Virtual add reference.

+ +
+
+ +

◆ Release()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void RefTargetVirtual::Release ()
+
+pure virtual
+
+ +

Virtual release reference.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_ref_target_virtual.js b/class_ref_target_virtual.js new file mode 100644 index 000000000..044f5aca3 --- /dev/null +++ b/class_ref_target_virtual.js @@ -0,0 +1,6 @@ +var class_ref_target_virtual = +[ + [ "~RefTargetVirtual", "class_ref_target_virtual.html#a716938dd06b8a5be71588e501c8c2b7d", null ], + [ "AddRef", "class_ref_target_virtual.html#ac09162a129dc035c18ea99c7450aa94d", null ], + [ "Release", "class_ref_target_virtual.html#a7f4d994acaa1d389f768fd9b75bca506", null ] +]; \ No newline at end of file diff --git a/class_result-members.html b/class_result-members.html new file mode 100644 index 000000000..bca3c6c1b --- /dev/null +++ b/class_result-members.html @@ -0,0 +1,135 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Result< Type > Member List
+
+
+ +

This is the complete list of members for Result< Type >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
Clear()Result< Type >inline
Get() constResult< Type >inline
GetError() constResult< Type >inline
HasError() constResult< Type >inline
IsEmpty() constResult< Type >inline
IsValid() constResult< Type >inline
mErrorResult< Type >
mResultResult< Type >
operator=(const Result< Type > &inRHS)Result< Type >inline
operator=(Result< Type > &&inRHS) noexceptResult< Type >inline
Result()Result< Type >inline
Result(const Result< Type > &inRHS)Result< Type >inline
Result(Result< Type > &&inRHS) noexceptResult< Type >inline
Set(const Type &inResult)Result< Type >inline
Set(Type &&inResult)Result< Type >inline
SetError(const char *inError)Result< Type >inline
SetError(const string_view &inError)Result< Type >inline
SetError(String &&inError)Result< Type >inline
~Result()Result< Type >inline
+
+ + + + diff --git a/class_result.html b/class_result.html new file mode 100644 index 000000000..99838bde7 --- /dev/null +++ b/class_result.html @@ -0,0 +1,718 @@ + + + + + + + +Jolt Physics: Result< Type > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Result< Type > Class Template Reference
+
+
+ +

Helper class that either contains a valid result or an error. + More...

+ +

#include <Result.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Result ()
 Default constructor.
 
 Result (const Result< Type > &inRHS)
 Copy constructor.
 
 Result (Result< Type > &&inRHS) noexcept
 Move constructor.
 
 ~Result ()
 Destructor.
 
Result< Type > & operator= (const Result< Type > &inRHS)
 Copy assignment.
 
Result< Type > & operator= (Result< Type > &&inRHS) noexcept
 Move assignment.
 
void Clear ()
 Clear result or error.
 
bool IsEmpty () const
 Checks if the result is still uninitialized.
 
bool IsValid () const
 Checks if the result is valid.
 
const Type & Get () const
 Get the result value.
 
void Set (const Type &inResult)
 Set the result value.
 
void Set (Type &&inResult)
 Set the result value (move value)
 
bool HasError () const
 Check if we had an error.
 
const StringGetError () const
 Get the error value.
 
void SetError (const char *inError)
 Set an error value.
 
void SetError (const string_view &inError)
 
void SetError (String &&inError)
 
+

Detailed Description

+
template<class Type>
+class Result< Type >

Helper class that either contains a valid result or an error.

+

Constructor & Destructor Documentation

+ +

◆ Result() [1/3]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + +
Result< Type >::Result ()
+
+inline
+
+ +

Default constructor.

+ +
+
+ +

◆ Result() [2/3]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
Result< Type >::Result (const Result< Type > & inRHS)
+
+inline
+
+ +

Copy constructor.

+ +
+
+ +

◆ Result() [3/3]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
Result< Type >::Result (Result< Type > && inRHS)
+
+inlinenoexcept
+
+ +

Move constructor.

+ +
+
+ +

◆ ~Result()

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + +
Result< Type >::~Result ()
+
+inline
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Clear()

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + +
void Result< Type >::Clear ()
+
+inline
+
+ +

Clear result or error.

+ +
+
+ +

◆ Get()

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + +
const Type & Result< Type >::Get () const
+
+inline
+
+ +

Get the result value.

+ +
+
+ +

◆ GetError()

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + +
const String & Result< Type >::GetError () const
+
+inline
+
+ +

Get the error value.

+ +
+
+ +

◆ HasError()

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + +
bool Result< Type >::HasError () const
+
+inline
+
+ +

Check if we had an error.

+ +
+
+ +

◆ IsEmpty()

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + +
bool Result< Type >::IsEmpty () const
+
+inline
+
+ +

Checks if the result is still uninitialized.

+ +
+
+ +

◆ IsValid()

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + +
bool Result< Type >::IsValid () const
+
+inline
+
+ +

Checks if the result is valid.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
Result< Type > & Result< Type >::operator= (const Result< Type > & inRHS)
+
+inline
+
+ +

Copy assignment.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
Result< Type > & Result< Type >::operator= (Result< Type > && inRHS)
+
+inlinenoexcept
+
+ +

Move assignment.

+ +
+
+ +

◆ Set() [1/2]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
void Result< Type >::Set (const Type & inResult)
+
+inline
+
+ +

Set the result value.

+ +
+
+ +

◆ Set() [2/2]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
void Result< Type >::Set (Type && inResult)
+
+inline
+
+ +

Set the result value (move value)

+ +
+
+ +

◆ SetError() [1/3]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
void Result< Type >::SetError (const char * inError)
+
+inline
+
+ +

Set an error value.

+ +
+
+ +

◆ SetError() [2/3]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
void Result< Type >::SetError (const string_view & inError)
+
+inline
+
+ +
+
+ +

◆ SetError() [3/3]

+ +
+
+
+template<class Type >
+ + + + + +
+ + + + + + + + +
void Result< Type >::SetError (String && inError)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mError

+ +
+
+
+template<class Type >
+ + + + +
String Result< Type >::mError
+
+ +

The error description if the result failed.

+ +
+
+ +

◆ mResult

+ +
+
+
+template<class Type >
+ + + + +
Type Result< Type >::mResult
+
+ +

The actual result object.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_result.js b/class_result.js new file mode 100644 index 000000000..13e8696b6 --- /dev/null +++ b/class_result.js @@ -0,0 +1,22 @@ +var class_result = +[ + [ "Result", "class_result.html#a48ea3c542aca44533bbe0467ce7edb32", null ], + [ "Result", "class_result.html#a0cb5b79fcbc7a428276cec91bfc794cb", null ], + [ "Result", "class_result.html#ad9e9e7780434af5bdfe5652c0b621862", null ], + [ "~Result", "class_result.html#ace4aa7515162bb6ca532d3be78150328", null ], + [ "Clear", "class_result.html#a14eed4aba60f359e04f44980adcf6125", null ], + [ "Get", "class_result.html#ab3d845db638a6a51467760867bfc472a", null ], + [ "GetError", "class_result.html#a3d0fc76c48e6db9cf5918dcc248ee4cb", null ], + [ "HasError", "class_result.html#a2de3e8315a673e4fc3e627eafad42586", null ], + [ "IsEmpty", "class_result.html#a596c71aec4992abce2ecda10cf827573", null ], + [ "IsValid", "class_result.html#a06b7e3b8ea77cb4b1fc5ecfa45494167", null ], + [ "operator=", "class_result.html#acc819aa9c4d980d9a06b48cce8bc2d9a", null ], + [ "operator=", "class_result.html#acc2f80e7cd0157e8428e1039bea3be9c", null ], + [ "Set", "class_result.html#a2d4677e046c9d429f9a512342bdd479b", null ], + [ "Set", "class_result.html#a2e5e698448fcf24d455121278715015e", null ], + [ "SetError", "class_result.html#a22ac380ffc00f33d49466729d22241b0", null ], + [ "SetError", "class_result.html#ad71493b9c42c291fed54ffd80f9b75ab", null ], + [ "SetError", "class_result.html#a07ab82eb7f68bae977f6d50dde14dc1f", null ], + [ "mError", "class_result.html#ada2c3d37778adbf318df78b5bd427e17", null ], + [ "mResult", "class_result.html#a2540c24a649431bd9bdc679737c7df1d", null ] +]; \ No newline at end of file diff --git a/class_reversed_shape_filter-members.html b/class_reversed_shape_filter-members.html new file mode 100644 index 000000000..a25e1be3d --- /dev/null +++ b/class_reversed_shape_filter-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ReversedShapeFilter Member List
+
+
+ +

This is the complete list of members for ReversedShapeFilter, including all inherited members.

+ + + + + + + + + +
mBodyID2ShapeFiltermutable
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ReversedShapeFilter(const ShapeFilter &inFilter)ReversedShapeFilterinlineexplicit
ShouldCollide(const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const overrideReversedShapeFilterinlinevirtual
ShouldCollide(const Shape *inShape1, const SubShapeID &inSubShapeIDOfShape1, const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const overrideReversedShapeFilterinlinevirtual
~ShapeFilter()=defaultShapeFiltervirtual
+
+ + + + diff --git a/class_reversed_shape_filter.html b/class_reversed_shape_filter.html new file mode 100644 index 000000000..119a01a40 --- /dev/null +++ b/class_reversed_shape_filter.html @@ -0,0 +1,300 @@ + + + + + + + +Jolt Physics: ReversedShapeFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ReversedShapeFilter Class Reference
+
+
+ +

Helper class to reverse the order of the shapes in the ShouldCollide function. + More...

+ +

#include <ShapeFilter.h>

+
+Inheritance diagram for ReversedShapeFilter:
+
+
+ + +ShapeFilter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ReversedShapeFilter (const ShapeFilter &inFilter)
 Constructor.
 
virtual bool ShouldCollide (const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const override
 
virtual bool ShouldCollide (const Shape *inShape1, const SubShapeID &inSubShapeIDOfShape1, const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const override
 
- Public Member Functions inherited from ShapeFilter
virtual ~ShapeFilter ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + +

+Additional Inherited Members

- Public Attributes inherited from ShapeFilter
BodyID mBodyID2
 Set by the collision detection functions to the body ID of the body that we're colliding against before calling the ShouldCollide function.
 
+

Detailed Description

+

Helper class to reverse the order of the shapes in the ShouldCollide function.

+

Constructor & Destructor Documentation

+ +

◆ ReversedShapeFilter()

+ +
+
+ + + + + +
+ + + + + + + + +
ReversedShapeFilter::ReversedShapeFilter (const ShapeFilterinFilter)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool ReversedShapeFilter::ShouldCollide (const ShapeinShape1,
const SubShapeIDinSubShapeIDOfShape1,
const ShapeinShape2,
const SubShapeIDinSubShapeIDOfShape2 
) const
+
+inlineoverridevirtual
+
+

Filter function to determine if two shapes should collide. Returns true if the filter passes. This overload is called when querying a shape vs a shape (e.g. collide object / cast object). It is called at each level of the shape hierarchy, so if you have a compound shape with a box, this function will be called twice. It will not be called on triangles that are part of another shape, i.e a mesh shape will not trigger a callback per triangle. You can filter out individual triangles in the CollisionCollector::AddHit function by their sub shape ID.

Parameters
+ + + + + +
inShape11st shape that is colliding
inSubShapeIDOfShape1The sub shape ID that will lead from the root shape to inShape1 (i.e. the shape that is used to collide or cast against shape 2)
inShape22nd shape that is colliding
inSubShapeIDOfShape2The sub shape ID that will lead from the root shape to inShape2 (i.e. the shape of mBodyID2)
+
+
+ +

Reimplemented from ShapeFilter.

+ +
+
+ +

◆ ShouldCollide() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ReversedShapeFilter::ShouldCollide (const ShapeinShape2,
const SubShapeIDinSubShapeIDOfShape2 
) const
+
+inlineoverridevirtual
+
+

Filter function to determine if we should collide with a shape. Returns true if the filter passes. This overload is called when the query doesn't have a source shape (e.g. ray cast / collide point)

Parameters
+ + + +
inShape2Shape we're colliding against
inSubShapeIDOfShape2The sub shape ID that will lead from the root shape to inShape2 (i.e. the shape of mBodyID2)
+
+
+ +

Reimplemented from ShapeFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_reversed_shape_filter.js b/class_reversed_shape_filter.js new file mode 100644 index 000000000..0b609ba39 --- /dev/null +++ b/class_reversed_shape_filter.js @@ -0,0 +1,6 @@ +var class_reversed_shape_filter = +[ + [ "ReversedShapeFilter", "class_reversed_shape_filter.html#aa0287d910b05b97b4cdc4fed9851e0a0", null ], + [ "ShouldCollide", "class_reversed_shape_filter.html#a78f5767dd29b71003df33a9743b3bb73", null ], + [ "ShouldCollide", "class_reversed_shape_filter.html#a0da8f32256715a06181081750a1d6229", null ] +]; \ No newline at end of file diff --git a/class_reversed_shape_filter.png b/class_reversed_shape_filter.png new file mode 100644 index 000000000..df408a8ba Binary files /dev/null and b/class_reversed_shape_filter.png differ diff --git a/class_rotated_translated_shape-members.html b/class_rotated_translated_shape-members.html new file mode 100644 index 000000000..1fe1eabeb --- /dev/null +++ b/class_rotated_translated_shape-members.html @@ -0,0 +1,201 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RotatedTranslatedShape Member List
+
+
+ +

This is the complete list of members for RotatedTranslatedShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideRotatedTranslatedShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideRotatedTranslatedShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const overrideRotatedTranslatedShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideRotatedTranslatedShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideRotatedTranslatedShapevirtual
DecoratedShape(EShapeSubType inSubType)DecoratedShapeinlineexplicit
DecoratedShape(EShapeSubType inSubType, const Shape *inInnerShape)DecoratedShapeinline
DecoratedShape(EShapeSubType inSubType, const DecoratedShapeSettings &inSettings, ShapeResult &outResult)DecoratedShape
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideRotatedTranslatedShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideRotatedTranslatedShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideRotatedTranslatedShapevirtual
GetCenterOfMass() const overrideRotatedTranslatedShapeinlinevirtual
GetInnerRadius() const overrideRotatedTranslatedShapeinlinevirtual
GetInnerShape() constDecoratedShapeinline
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const overrideDecoratedShapeinlinevirtual
GetLocalBounds() const overrideRotatedTranslatedShapevirtual
GetMassProperties() const overrideRotatedTranslatedShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideDecoratedShapevirtual
GetPosition() constRotatedTranslatedShapeinline
GetRefCount() constRefTarget< Shape >inline
GetRotation() constRotatedTranslatedShapeinline
GetStats() const overrideRotatedTranslatedShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) const overrideDecoratedShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideRotatedTranslatedShapevirtual
DecoratedShape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideDecoratedShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const overrideRotatedTranslatedShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) const overrideDecoratedShapevirtual
GetSubType() constShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideRotatedTranslatedShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideRotatedTranslatedShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideRotatedTranslatedShapeinlinevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideRotatedTranslatedShapeinlinevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideRotatedTranslatedShapeinlinevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideRotatedTranslatedShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constRotatedTranslatedShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constRotatedTranslatedShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) const overrideRotatedTranslatedShapevirtual
MakeScaleValid(Vec3Arg inScale) const overrideRotatedTranslatedShapevirtual
MaterialToIDMap typedefShape
mInnerShapeDecoratedShapeprotected
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() const overrideDecoratedShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideRotatedTranslatedShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)Shapeinlinevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes) overrideDecoratedShapevirtual
RotatedTranslatedShape()RotatedTranslatedShapeinline
RotatedTranslatedShape(const RotatedTranslatedShapeSettings &inSettings, ShapeResult &outResult)RotatedTranslatedShape
RotatedTranslatedShape(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)RotatedTranslatedShape
SaveBinaryState(StreamOut &inStream) const overrideRotatedTranslatedShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) const overrideDecoratedShapevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetEmbedded() constRefTarget< Shape >inline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()RotatedTranslatedShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const overrideRotatedTranslatedShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_rotated_translated_shape.html b/class_rotated_translated_shape.html new file mode 100644 index 000000000..993450fa9 --- /dev/null +++ b/class_rotated_translated_shape.html @@ -0,0 +1,1826 @@ + + + + + + + +Jolt Physics: RotatedTranslatedShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RotatedTranslatedShape Class Referencefinal
+
+
+ +

#include <RotatedTranslatedShape.h>

+
+Inheritance diagram for RotatedTranslatedShape:
+
+
+ + +DecoratedShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE RotatedTranslatedShape ()
 Constructor.
 
 RotatedTranslatedShape (const RotatedTranslatedShapeSettings &inSettings, ShapeResult &outResult)
 
 RotatedTranslatedShape (Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)
 
Quat GetRotation () const
 Access the rotation that is applied to the inner shape.
 
Vec3 GetPosition () const
 Access the translation that has been applied to the inner shape.
 
virtual Vec3 GetCenterOfMass () const override
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const override
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const override
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
- Public Member Functions inherited from DecoratedShape
JPH_OVERRIDE_NEW_DELETE DecoratedShape (EShapeSubType inSubType)
 Constructor.
 
 DecoratedShape (EShapeSubType inSubType, const Shape *inInnerShape)
 
 DecoratedShape (EShapeSubType inSubType, const DecoratedShapeSettings &inSettings, ShapeResult &outResult)
 
const ShapeGetInnerShape () const
 Access to the decorated inner shape.
 
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.
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const override
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const override
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const override
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes) override
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const override
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from DecoratedShape
RefConst< ShapemInnerShape
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A rotated translated shape will rotate and translate a child shape. Shifts the child object so that it is centered around the center of mass.

+

Constructor & Destructor Documentation

+ +

◆ RotatedTranslatedShape() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE RotatedTranslatedShape::RotatedTranslatedShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ RotatedTranslatedShape() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
RotatedTranslatedShape::RotatedTranslatedShape (const RotatedTranslatedShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+ +

◆ RotatedTranslatedShape() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
RotatedTranslatedShape::RotatedTranslatedShape (Vec3Arg inPosition,
QuatArg inRotation,
const ShapeinShape 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void RotatedTranslatedShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool RotatedTranslatedShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CollectTransformedShapes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void RotatedTranslatedShape::CollectTransformedShapes (const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale,
const SubShapeIDCreatorinSubShapeIDCreator,
TransformedShapeCollectorioCollector,
const ShapeFilterinShapeFilter 
) const
+
+overridevirtual
+
+

Collect the leaf transformed shapes of all leaf shapes of this shape. inBox is the world space axis aligned box which leaf shapes should collide with. inPositionCOM/inRotation/inScale describes the transform of this shape. inSubShapeIDCeator represents the current sub shape ID of this shape.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void RotatedTranslatedShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Implements Shape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void RotatedTranslatedShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void RotatedTranslatedShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ DrawGetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void RotatedTranslatedShape::DrawGetSupportFunction (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inDrawSupportDirection 
) const
+
+overridevirtual
+
+ +

Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ DrawGetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void RotatedTranslatedShape::DrawGetSupportingFace (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+ +

Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetCenterOfMass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vec3 RotatedTranslatedShape::GetCenterOfMass () const
+
+inlineoverridevirtual
+
+ +

All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.

+ +

Reimplemented from DecoratedShape.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float RotatedTranslatedShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox RotatedTranslatedShape::GetLocalBounds () const
+
+overridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties RotatedTranslatedShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 RotatedTranslatedShape::GetPosition () const
+
+inline
+
+ +

Access the translation that has been applied to the inner shape.

+ +
+
+ +

◆ GetRotation()

+ +
+
+ + + + + +
+ + + + + + + +
Quat RotatedTranslatedShape::GetRotation () const
+
+inline
+
+ +

Access the rotation that is applied to the inner shape.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats RotatedTranslatedShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void RotatedTranslatedShape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3 &outCenterOfBuoyancy  JPH_IF_DEBUG_RENDERER, RVec3Arg inBaseOffset 
) const
+
+overridevirtual
+
+ +
+
+ +

◆ GetSubShapeTransformedShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TransformedShape RotatedTranslatedShape::GetSubShapeTransformedShape (const SubShapeIDinSubShapeID,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale,
SubShapeIDoutRemainder 
) const
+
+overridevirtual
+
+

Get the direct child sub shape and its transform for a sub shape ID.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID that indicates the path to the leaf shape
inPositionCOMThe position of the center of mass of this shape
inRotationThe orientation of this shape
inScaleScale in local space of the shape (scales relative to its center of mass)
outRemainderThe remainder of the sub shape ID after removing the sub shape
+
+
+
Returns
Direct child sub shape and its transform, note that the body ID and sub shape ID will be invalid
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void RotatedTranslatedShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from DecoratedShape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 RotatedTranslatedShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual int RotatedTranslatedShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+inlineoverridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void RotatedTranslatedShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+inlineoverridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Implements Shape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float RotatedTranslatedShape::GetVolume () const
+
+inlineoverridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox Shape::GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inline
+
+ +

Get world space bounds including convex radius.

+ +
+
+ +

◆ GetWorldSpaceBounds() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual AABox Shape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inlinevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox RotatedTranslatedShape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ IsValidScale()

+ +
+
+ + + + + +
+ + + + + + + + +
bool RotatedTranslatedShape::IsValidScale (Vec3Arg inScale) const
+
+overridevirtual
+
+

Test if inScale is a valid scale for this shape. Some shapes can only be scaled uniformly, compound shapes cannot handle shapes being rotated and scaled (this would cause shearing), scale can never be zero. When the scale is invalid, the function will return false.

+

Here's a list of supported scales:

    +
  • SphereShape: Scale must be uniform (signs of scale are ignored).
  • +
  • BoxShape: Any scale supported (signs of scale are ignored).
  • +
  • TriangleShape: Any scale supported when convex radius is zero, otherwise only uniform scale supported.
  • +
  • CapsuleShape: Scale must be uniform (signs of scale are ignored).
  • +
  • TaperedCapsuleShape: Scale must be uniform (sign of Y scale can be used to flip the capsule).
  • +
  • CylinderShape: Scale must be uniform in XZ plane, Y can scale independently (signs of scale are ignored).
  • +
  • RotatedTranslatedShape: Scale must not cause shear in the child shape.
  • +
  • CompoundShape: Scale must not cause shear in any of the child shapes.
  • +
+ +

Reimplemented from DecoratedShape.

+ +
+
+ +

◆ MakeScaleValid()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 RotatedTranslatedShape::MakeScaleValid (Vec3Arg inScale) const
+
+overridevirtual
+
+

This function will make sure that if you wrap this shape in a ScaledShape that the scale is valid. Note that this involves discarding components of the scale that are invalid, so the resulting scaled shape may be different than the requested scale. Compare the return value of this function with the scale you passed in to detect major inconsistencies and possibly warn the user.

Parameters
+ + +
inScaleLocal space scale for this shape.
+
+
+
Returns
Scale that can be used to wrap this shape in a ScaledShape. IsValidScale will return true for this scale.
+ +

Reimplemented from DecoratedShape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void RotatedTranslatedShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void RotatedTranslatedShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void RotatedTranslatedShape::sRegister ()
+
+static
+
+ +
+
+ +

◆ TransformShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void RotatedTranslatedShape::TransformShape (Mat44Arg inCenterOfMassTransform,
TransformedShapeCollectorioCollector 
) const
+
+overridevirtual
+
+

Transforms this shape and all of its children with inTransform, resulting shape(s) are passed to ioCollector. Note that not all shapes support all transforms (especially true for scaling), the resulting shape will try to match the transform as accurately as possible.

Parameters
+ + + +
inCenterOfMassTransformThe transform (rotation, translation, scale) that the center of mass of the shape should get
ioCollectorThe transformed shapes will be passed to this collector
+
+
+ +

Reimplemented from Shape.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_rotated_translated_shape.js b/class_rotated_translated_shape.js new file mode 100644 index 000000000..4e8a88f7d --- /dev/null +++ b/class_rotated_translated_shape.js @@ -0,0 +1,36 @@ +var class_rotated_translated_shape = +[ + [ "RotatedTranslatedShape", "class_rotated_translated_shape.html#a2d80aa08a7ae24694dff0721c3e5cd5c", null ], + [ "RotatedTranslatedShape", "class_rotated_translated_shape.html#adb464f1e2b1cc92b8842b8b9c799711f", null ], + [ "RotatedTranslatedShape", "class_rotated_translated_shape.html#a404c0c0433b1c4a0779d5b58ad4f9fb3", null ], + [ "CastRay", "class_rotated_translated_shape.html#a397f3571c6e9f7f027b1acd2abaaac35", null ], + [ "CastRay", "class_rotated_translated_shape.html#ac9ed2a8c195640f6b0b65a06749b3f33", null ], + [ "CollectTransformedShapes", "class_rotated_translated_shape.html#a99bfa78dc0fc1967212e73dd3894f648", null ], + [ "CollidePoint", "class_rotated_translated_shape.html#ae878ff562cc8dbd769853db0b1fa7271", null ], + [ "CollideSoftBodyVertices", "class_rotated_translated_shape.html#ace49d7035c03331da9999356bbc5b574", null ], + [ "Draw", "class_rotated_translated_shape.html#a896a8828b726e57a15b696e85ce7f1c7", null ], + [ "DrawGetSupportFunction", "class_rotated_translated_shape.html#aa38b6b32591db13a3848b2eb4bbdfbe6", null ], + [ "DrawGetSupportingFace", "class_rotated_translated_shape.html#a111ac2a8df9ae1a243f1eceda27a8d76", null ], + [ "GetCenterOfMass", "class_rotated_translated_shape.html#a7d7b6b0edc6dd89125cab13d77eb3585", null ], + [ "GetInnerRadius", "class_rotated_translated_shape.html#a2d4eb8d7ec3b1b8e68fccd31bd6ffda9", null ], + [ "GetLocalBounds", "class_rotated_translated_shape.html#adaffc4cb4b4ecb75c984b4dd655f8e53", null ], + [ "GetMassProperties", "class_rotated_translated_shape.html#a05206d318c8849d711695b1ae36c98b2", null ], + [ "GetPosition", "class_rotated_translated_shape.html#ab7cda756537d468e9260ed98a9ddb523", null ], + [ "GetRotation", "class_rotated_translated_shape.html#a6d164a126cd4dea6185b8fb4ec918199", null ], + [ "GetStats", "class_rotated_translated_shape.html#a33919b6a211cae9bd392914c25923111", null ], + [ "GetSubmergedVolume", "class_rotated_translated_shape.html#a6c89e34ea8f2407b0821aa5e340a1d3e", null ], + [ "GetSubShapeTransformedShape", "class_rotated_translated_shape.html#a28982c9e515052eed5e3e6663b020cb8", null ], + [ "GetSupportingFace", "class_rotated_translated_shape.html#abab2852c1625584a5849d7a9ef96efcb", null ], + [ "GetSurfaceNormal", "class_rotated_translated_shape.html#afb856f2a26b063d3f6d4aff131ce1a31", null ], + [ "GetTrianglesNext", "class_rotated_translated_shape.html#a2ecf8af0d2d44459c7fbce83d6323eb3", null ], + [ "GetTrianglesStart", "class_rotated_translated_shape.html#a801257f7a7ea6c26a728170cbd7ba55f", null ], + [ "GetVolume", "class_rotated_translated_shape.html#a551123649d86e6cef5a8499c4318aa6d", null ], + [ "GetWorldSpaceBounds", "class_rotated_translated_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b", null ], + [ "GetWorldSpaceBounds", "class_rotated_translated_shape.html#a9f8379fa338802436700b86a07fab3be", null ], + [ "GetWorldSpaceBounds", "class_rotated_translated_shape.html#af35a0921b0454466b5a24882acba7ddb", null ], + [ "IsValidScale", "class_rotated_translated_shape.html#ab85aaba12f9b0080fb7eee3a49530efe", null ], + [ "MakeScaleValid", "class_rotated_translated_shape.html#a01f12883df324277825192ce1a1e121e", null ], + [ "RestoreBinaryState", "class_rotated_translated_shape.html#a09096c325e0e1e06111058436c710a25", null ], + [ "SaveBinaryState", "class_rotated_translated_shape.html#ad474354b85d68912f80ce757e0e9713f", null ], + [ "TransformShape", "class_rotated_translated_shape.html#a6d9ccc84cd701f0a90703f634a3aa09a", null ] +]; \ No newline at end of file diff --git a/class_rotated_translated_shape.png b/class_rotated_translated_shape.png new file mode 100644 index 000000000..ffe245bd3 Binary files /dev/null and b/class_rotated_translated_shape.png differ diff --git a/class_rotated_translated_shape_settings-members.html b/class_rotated_translated_shape_settings-members.html new file mode 100644 index 000000000..3d3320b60 --- /dev/null +++ b/class_rotated_translated_shape_settings-members.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RotatedTranslatedShapeSettings Member List
+
+
+ +

This is the complete list of members for RotatedTranslatedShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
Create() const overrideRotatedTranslatedShapeSettingsvirtual
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mPositionRotatedTranslatedShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mRotationRotatedTranslatedShapeSettings
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
RotatedTranslatedShapeSettings()=defaultRotatedTranslatedShapeSettings
RotatedTranslatedShapeSettings(Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape)RotatedTranslatedShapeSettingsinline
RotatedTranslatedShapeSettings(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)RotatedTranslatedShapeSettingsinline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_rotated_translated_shape_settings.html b/class_rotated_translated_shape_settings.html new file mode 100644 index 000000000..35e82c4d4 --- /dev/null +++ b/class_rotated_translated_shape_settings.html @@ -0,0 +1,407 @@ + + + + + + + +Jolt Physics: RotatedTranslatedShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RotatedTranslatedShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a RotatedTranslatedShape. + More...

+ +

#include <RotatedTranslatedShape.h>

+
+Inheritance diagram for RotatedTranslatedShapeSettings:
+
+
+ + +DecoratedShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 RotatedTranslatedShapeSettings ()=default
 Constructor.
 
 RotatedTranslatedShapeSettings (Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape)
 Construct with shape settings, can be serialized.
 
 RotatedTranslatedShapeSettings (Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)
 Variant that uses a concrete shape, which means this object cannot be serialized.
 
virtual ShapeResult Create () const override
 Create a shape according to the settings specified by this object.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + +

+Public Attributes

Vec3 mPosition
 Position of the sub shape.
 
Quat mRotation
 Rotation of the sub shape.
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a RotatedTranslatedShape.

+

Constructor & Destructor Documentation

+ +

◆ RotatedTranslatedShapeSettings() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
RotatedTranslatedShapeSettings::RotatedTranslatedShapeSettings ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ RotatedTranslatedShapeSettings() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
RotatedTranslatedShapeSettings::RotatedTranslatedShapeSettings (Vec3Arg inPosition,
QuatArg inRotation,
const ShapeSettingsinShape 
)
+
+inline
+
+ +

Construct with shape settings, can be serialized.

+ +
+
+ +

◆ RotatedTranslatedShapeSettings() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
RotatedTranslatedShapeSettings::RotatedTranslatedShapeSettings (Vec3Arg inPosition,
QuatArg inRotation,
const ShapeinShape 
)
+
+inline
+
+ +

Variant that uses a concrete shape, which means this object cannot be serialized.

+ +
+
+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + +
ShapeSettings::ShapeResult RotatedTranslatedShapeSettings::Create () const
+
+overridevirtual
+
+ +

Create a shape according to the settings specified by this object.

+ +

Implements ShapeSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mPosition

+ +
+
+ + + + +
Vec3 RotatedTranslatedShapeSettings::mPosition
+
+ +

Position of the sub shape.

+ +
+
+ +

◆ mRotation

+ +
+
+ + + + +
Quat RotatedTranslatedShapeSettings::mRotation
+
+ +

Rotation of the sub shape.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_rotated_translated_shape_settings.js b/class_rotated_translated_shape_settings.js new file mode 100644 index 000000000..4d9e1ee59 --- /dev/null +++ b/class_rotated_translated_shape_settings.js @@ -0,0 +1,9 @@ +var class_rotated_translated_shape_settings = +[ + [ "RotatedTranslatedShapeSettings", "class_rotated_translated_shape_settings.html#ad5285a469a3df9bfd11c8fd83dc074b9", null ], + [ "RotatedTranslatedShapeSettings", "class_rotated_translated_shape_settings.html#aca284712649bfd71718d9d761fc3039f", null ], + [ "RotatedTranslatedShapeSettings", "class_rotated_translated_shape_settings.html#a4b1d4bb9af26dc7b4839e5613be1d7e3", null ], + [ "Create", "class_rotated_translated_shape_settings.html#ada2d2b814d70fe2935f1cc2b6bba2382", null ], + [ "mPosition", "class_rotated_translated_shape_settings.html#a6b478d387b165be23ab557798ea6f113", null ], + [ "mRotation", "class_rotated_translated_shape_settings.html#a3e1fba24e7b35c08a2fe248882a31e14", null ] +]; \ No newline at end of file diff --git a/class_rotated_translated_shape_settings.png b/class_rotated_translated_shape_settings.png new file mode 100644 index 000000000..c2f0e8414 Binary files /dev/null and b/class_rotated_translated_shape_settings.png differ diff --git a/class_rotation_euler_constraint_part-members.html b/class_rotation_euler_constraint_part-members.html new file mode 100644 index 000000000..cd79f4257 --- /dev/null +++ b/class_rotation_euler_constraint_part-members.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RotationEulerConstraintPart Member List
+
+
+ +

This is the complete list of members for RotationEulerConstraintPart, including all inherited members.

+ + + + + + + + + + + + + +
CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, const Body &inBody2, Mat44Arg inRotation2)RotationEulerConstraintPartinline
Deactivate()RotationEulerConstraintPartinline
GetTotalLambda() constRotationEulerConstraintPartinline
IsActive() constRotationEulerConstraintPartinline
RestoreState(StateRecorder &inStream)RotationEulerConstraintPartinline
SaveState(StateRecorder &inStream) constRotationEulerConstraintPartinline
sGetInvInitialOrientation(const Body &inBody1, const Body &inBody2)RotationEulerConstraintPartinlinestatic
sGetInvInitialOrientationXY(Vec3Arg inAxisX1, Vec3Arg inAxisY1, Vec3Arg inAxisX2, Vec3Arg inAxisY2)RotationEulerConstraintPartinlinestatic
sGetInvInitialOrientationXZ(Vec3Arg inAxisX1, Vec3Arg inAxisZ1, Vec3Arg inAxisX2, Vec3Arg inAxisZ2)RotationEulerConstraintPartinlinestatic
SolvePositionConstraint(Body &ioBody1, Body &ioBody2, QuatArg inInvInitialOrientation, float inBaumgarte) constRotationEulerConstraintPartinline
SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)RotationEulerConstraintPartinline
WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)RotationEulerConstraintPartinline
+
+ + + + diff --git a/class_rotation_euler_constraint_part.html b/class_rotation_euler_constraint_part.html new file mode 100644 index 000000000..954ea94e9 --- /dev/null +++ b/class_rotation_euler_constraint_part.html @@ -0,0 +1,665 @@ + + + + + + + +Jolt Physics: RotationEulerConstraintPart Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RotationEulerConstraintPart Class Reference
+
+
+ +

#include <RotationEulerConstraintPart.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void CalculateConstraintProperties (const Body &inBody1, Mat44Arg inRotation1, const Body &inBody2, Mat44Arg inRotation2)
 Calculate properties used during the functions below.
 
void Deactivate ()
 Deactivate this constraint.
 
bool IsActive () const
 Check if constraint is active.
 
void WarmStart (Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
 Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses.
 
bool SolveVelocityConstraint (Body &ioBody1, Body &ioBody2)
 Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.
 
bool SolvePositionConstraint (Body &ioBody1, Body &ioBody2, QuatArg inInvInitialOrientation, float inBaumgarte) const
 Iteratively update the position constraint. Makes sure C(...) = 0.
 
Vec3 GetTotalLambda () const
 Return lagrange multiplier.
 
void SaveState (StateRecorder &inStream) const
 Save state of this constraint part.
 
void RestoreState (StateRecorder &inStream)
 Restore state of this constraint part.
 
+ + + + + + + + + + +

+Static Public Member Functions

static Quat sGetInvInitialOrientation (const Body &inBody1, const Body &inBody2)
 Return inverse of initial rotation from body 1 to body 2 in body 1 space.
 
static Quat sGetInvInitialOrientationXY (Vec3Arg inAxisX1, Vec3Arg inAxisY1, Vec3Arg inAxisX2, Vec3Arg inAxisY2)
 Return inverse of initial rotation from body 1 to body 2 in body 1 space.
 
static Quat sGetInvInitialOrientationXZ (Vec3Arg inAxisX1, Vec3Arg inAxisZ1, Vec3Arg inAxisX2, Vec3Arg inAxisZ2)
 Return inverse of initial rotation from body 1 to body 2 in body 1 space.
 
+

Detailed Description

+

Constrains rotation around all axis so that only translation is allowed

+

Based on: "Constraints Derivation for Rigid Body Simulation in 3D" - Daniel Chappuis, section 2.5.1

+

Constraint equation (eq 129):

+

+\[C = \begin{bmatrix}\Delta\theta_x, \Delta\theta_y, \Delta\theta_z\end{bmatrix}\] +

+

Jacobian (eq 131):

+

+\[J = \begin{bmatrix}0 & -E & 0 & E\end{bmatrix}\] +

+

Used terms (here and below, everything in world space):
+delta_theta_* = difference in rotation between initial rotation of bodies 1 and 2.
+x1, x2 = center of mass for the bodies.
+v = [v1, w1, v2, w2].
+v1, v2 = linear velocity of body 1 and 2.
+w1, w2 = angular velocity of body 1 and 2.
+M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].
+ \(K^{-1} = \left( J M^{-1} J^T \right)^{-1}\) = effective mass.
+b = velocity bias.
+ \(\beta\) = baumgarte constant.
+E = identity matrix.
+

+

Member Function Documentation

+ +

◆ CalculateConstraintProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void RotationEulerConstraintPart::CalculateConstraintProperties (const BodyinBody1,
Mat44Arg inRotation1,
const BodyinBody2,
Mat44Arg inRotation2 
)
+
+inline
+
+ +

Calculate properties used during the functions below.

+ +
+
+ +

◆ Deactivate()

+ +
+
+ + + + + +
+ + + + + + + +
void RotationEulerConstraintPart::Deactivate ()
+
+inline
+
+ +

Deactivate this constraint.

+ +
+
+ +

◆ GetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 RotationEulerConstraintPart::GetTotalLambda () const
+
+inline
+
+ +

Return lagrange multiplier.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool RotationEulerConstraintPart::IsActive () const
+
+inline
+
+ +

Check if constraint is active.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void RotationEulerConstraintPart::RestoreState (StateRecorderinStream)
+
+inline
+
+ +

Restore state of this constraint part.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void RotationEulerConstraintPart::SaveState (StateRecorderinStream) const
+
+inline
+
+ +

Save state of this constraint part.

+ +
+
+ +

◆ sGetInvInitialOrientation()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Quat RotationEulerConstraintPart::sGetInvInitialOrientation (const BodyinBody1,
const BodyinBody2 
)
+
+inlinestatic
+
+ +

Return inverse of initial rotation from body 1 to body 2 in body 1 space.

+ +
+
+ +

◆ sGetInvInitialOrientationXY()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Quat RotationEulerConstraintPart::sGetInvInitialOrientationXY (Vec3Arg inAxisX1,
Vec3Arg inAxisY1,
Vec3Arg inAxisX2,
Vec3Arg inAxisY2 
)
+
+inlinestatic
+
+ +

Return inverse of initial rotation from body 1 to body 2 in body 1 space.

+
Parameters
+ + + + + +
inAxisX1Reference axis X for body 1
inAxisY1Reference axis Y for body 1
inAxisX2Reference axis X for body 2
inAxisY2Reference axis Y for body 2
+
+
+ +
+
+ +

◆ sGetInvInitialOrientationXZ()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static Quat RotationEulerConstraintPart::sGetInvInitialOrientationXZ (Vec3Arg inAxisX1,
Vec3Arg inAxisZ1,
Vec3Arg inAxisX2,
Vec3Arg inAxisZ2 
)
+
+inlinestatic
+
+ +

Return inverse of initial rotation from body 1 to body 2 in body 1 space.

+
Parameters
+ + + + + +
inAxisX1Reference axis X for body 1
inAxisZ1Reference axis Z for body 1
inAxisX2Reference axis X for body 2
inAxisZ2Reference axis Z for body 2
+
+
+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool RotationEulerConstraintPart::SolvePositionConstraint (BodyioBody1,
BodyioBody2,
QuatArg inInvInitialOrientation,
float inBaumgarte 
) const
+
+inline
+
+ +

Iteratively update the position constraint. Makes sure C(...) = 0.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool RotationEulerConstraintPart::SolveVelocityConstraint (BodyioBody1,
BodyioBody2 
)
+
+inline
+
+ +

Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.

+ +
+
+ +

◆ WarmStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void RotationEulerConstraintPart::WarmStart (BodyioBody1,
BodyioBody2,
float inWarmStartImpulseRatio 
)
+
+inline
+
+ +

Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_rotation_euler_constraint_part.js b/class_rotation_euler_constraint_part.js new file mode 100644 index 000000000..221fb160e --- /dev/null +++ b/class_rotation_euler_constraint_part.js @@ -0,0 +1,12 @@ +var class_rotation_euler_constraint_part = +[ + [ "CalculateConstraintProperties", "class_rotation_euler_constraint_part.html#af37f613895af10af42c71f644fe3f2f5", null ], + [ "Deactivate", "class_rotation_euler_constraint_part.html#ab5ff022582eb45db942a196a32795661", null ], + [ "GetTotalLambda", "class_rotation_euler_constraint_part.html#aada1e7c8fcf62c1674aa5080cd70687e", null ], + [ "IsActive", "class_rotation_euler_constraint_part.html#a5580f01673bcbbde31fd75108d2866b4", null ], + [ "RestoreState", "class_rotation_euler_constraint_part.html#aba8f2a3ca2aa7ab982b16499cf938ee3", null ], + [ "SaveState", "class_rotation_euler_constraint_part.html#afda34f355272d02e5daf8103639b22bf", null ], + [ "SolvePositionConstraint", "class_rotation_euler_constraint_part.html#ab2276b37dd0f8eaf4229469def2627b6", null ], + [ "SolveVelocityConstraint", "class_rotation_euler_constraint_part.html#af9a7e556643d4162eb300045d9a40df1", null ], + [ "WarmStart", "class_rotation_euler_constraint_part.html#a492a0801dd2881d0ab58f9c8b0abfec8", null ] +]; \ No newline at end of file diff --git a/class_rotation_quat_constraint_part-members.html b/class_rotation_quat_constraint_part-members.html new file mode 100644 index 000000000..228c7c7f4 --- /dev/null +++ b/class_rotation_quat_constraint_part-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
RotationQuatConstraintPart Member List
+
+
+ +

This is the complete list of members for RotationQuatConstraintPart, including all inherited members.

+ + + + + + + + + + + +
CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, const Body &inBody2, Mat44Arg inRotation2, QuatArg inInvInitialOrientation)RotationQuatConstraintPartinline
Deactivate()RotationQuatConstraintPartinline
GetTotalLambda() constRotationQuatConstraintPartinline
IsActive() constRotationQuatConstraintPartinline
RestoreState(StateRecorder &inStream)RotationQuatConstraintPartinline
SaveState(StateRecorder &inStream) constRotationQuatConstraintPartinline
sGetInvInitialOrientation(const Body &inBody1, const Body &inBody2)RotationQuatConstraintPartinlinestatic
SolvePositionConstraint(Body &ioBody1, Body &ioBody2, QuatArg inInvInitialOrientation, float inBaumgarte) constRotationQuatConstraintPartinline
SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)RotationQuatConstraintPartinline
WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)RotationQuatConstraintPartinline
+
+ + + + diff --git a/class_rotation_quat_constraint_part.html b/class_rotation_quat_constraint_part.html new file mode 100644 index 000000000..5c4d51dc0 --- /dev/null +++ b/class_rotation_quat_constraint_part.html @@ -0,0 +1,553 @@ + + + + + + + +Jolt Physics: RotationQuatConstraintPart Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
RotationQuatConstraintPart Class Reference
+
+
+ +

#include <RotationQuatConstraintPart.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void CalculateConstraintProperties (const Body &inBody1, Mat44Arg inRotation1, const Body &inBody2, Mat44Arg inRotation2, QuatArg inInvInitialOrientation)
 Calculate properties used during the functions below.
 
void Deactivate ()
 Deactivate this constraint.
 
bool IsActive () const
 Check if constraint is active.
 
void WarmStart (Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
 Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses.
 
bool SolveVelocityConstraint (Body &ioBody1, Body &ioBody2)
 Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.
 
bool SolvePositionConstraint (Body &ioBody1, Body &ioBody2, QuatArg inInvInitialOrientation, float inBaumgarte) const
 Iteratively update the position constraint. Makes sure C(...) = 0.
 
Vec3 GetTotalLambda () const
 Return lagrange multiplier.
 
void SaveState (StateRecorder &inStream) const
 Save state of this constraint part.
 
void RestoreState (StateRecorder &inStream)
 Restore state of this constraint part.
 
+ + + + +

+Static Public Member Functions

static Quat sGetInvInitialOrientation (const Body &inBody1, const Body &inBody2)
 Return inverse of initial rotation from body 1 to body 2 in body 1 space.
 
+

Detailed Description

+

Quaternion based constraint that constrains rotation around all axis so that only translation is allowed.

+

NOTE: This constraint part is more expensive than the RotationEulerConstraintPart and slightly more correct since RotationEulerConstraintPart::SolvePositionConstraint contains an approximation. In practice the difference is small, so the RotationEulerConstraintPart is probably the better choice.

+

Rotation is fixed between bodies like this:

+

q2 = q1 r0

+

Where: q1, q2 = world space quaternions representing rotation of body 1 and 2. r0 = initial rotation between bodies in local space of body 1, this can be calculated by:

+

q20 = q10 r0 <=> r0 = q10^* q20

+

Where: q10, q20 = initial world space rotations of body 1 and 2. q10^* = conjugate of quaternion q10 (which is the same as the inverse for a unit quaternion)

+

We exclusively use the conjugate below:

+

r0^* = q20^* q10

+

The error in the rotation is (in local space of body 1):

+

q2 = q1 error r0 <=> error = q1^* q2 r0^*

+

The imaginary part of the quaternion represents the rotation axis * sin(angle / 2). The real part of the quaternion does not add any additional information (we know the quaternion in normalized) and we're removing 3 degrees of freedom so we want 3 parameters. Therefore we define the constraint equation like:

+

C = A q1^* q2 r0^* = 0

+

Where (if you write a quaternion as [real-part, i-part, j-part, k-part]):

    [0, 1, 0, 0]
+A = [0, 0, 1, 0]
+    [0, 0, 0, 1]
+

or in our case since we store a quaternion like [i-part, j-part, k-part, real-part]:

    [1, 0, 0, 0]
+A = [0, 1, 0, 0]
+    [0, 0, 1, 0]
+

Time derivative:

+

d/dt C = A (q1^* d/dt(q2) + d/dt(q1^*) q2) r0^* = A (q1^* (1/2 W2 q2) + (1/2 W1 q1)^* q2) r0^* = 1/2 A (q1^* W2 q2 + q1^* W1^* q2) r0^* = 1/2 A (q1^* W2 q2 - q1^* W1 * q2) r0^* = 1/2 A ML(q1^*) MR(q2 r0^*) (W2 - W1) = 1/2 A ML(q1^*) MR(q2 r0^*) A^T (w2 - w1)

+

Where: W1 = [0, w1], W2 = [0, w2] (converting angular velocity to imaginary part of quaternion). w1, w2 = angular velocity of body 1 and 2. d/dt(q) = 1/2 W q (time derivative of a quaternion). W^* = -W (conjugate negates angular velocity as quaternion). ML(q): 4x4 matrix so that q * p = ML(q) * p, where q and p are quaternions. MR(p): 4x4 matrix so that q * p = MR(p) * q, where q and p are quaternions. A^T: Transpose of A.

+

Jacobian:

+

J = [0, -1/2 A ML(q1^*) MR(q2 r0^*) A^T, 0, 1/2 A ML(q1^*) MR(q2 r0^*) A^T] = [0, -JP, 0, JP]

+

Suggested reading:

    +
  • 3D Constraint Derivations for Impulse Solvers - Marijn Tamis
  • +
  • Game Physics Pearls - Section 9 - Quaternion Based Constraints - Claude Lacoursiere
  • +
+

Member Function Documentation

+ +

◆ CalculateConstraintProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void RotationQuatConstraintPart::CalculateConstraintProperties (const BodyinBody1,
Mat44Arg inRotation1,
const BodyinBody2,
Mat44Arg inRotation2,
QuatArg inInvInitialOrientation 
)
+
+inline
+
+ +

Calculate properties used during the functions below.

+ +
+
+ +

◆ Deactivate()

+ +
+
+ + + + + +
+ + + + + + + +
void RotationQuatConstraintPart::Deactivate ()
+
+inline
+
+ +

Deactivate this constraint.

+ +
+
+ +

◆ GetTotalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 RotationQuatConstraintPart::GetTotalLambda () const
+
+inline
+
+ +

Return lagrange multiplier.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool RotationQuatConstraintPart::IsActive () const
+
+inline
+
+ +

Check if constraint is active.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void RotationQuatConstraintPart::RestoreState (StateRecorderinStream)
+
+inline
+
+ +

Restore state of this constraint part.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void RotationQuatConstraintPart::SaveState (StateRecorderinStream) const
+
+inline
+
+ +

Save state of this constraint part.

+ +
+
+ +

◆ sGetInvInitialOrientation()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static Quat RotationQuatConstraintPart::sGetInvInitialOrientation (const BodyinBody1,
const BodyinBody2 
)
+
+inlinestatic
+
+ +

Return inverse of initial rotation from body 1 to body 2 in body 1 space.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool RotationQuatConstraintPart::SolvePositionConstraint (BodyioBody1,
BodyioBody2,
QuatArg inInvInitialOrientation,
float inBaumgarte 
) const
+
+inline
+
+ +

Iteratively update the position constraint. Makes sure C(...) = 0.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool RotationQuatConstraintPart::SolveVelocityConstraint (BodyioBody1,
BodyioBody2 
)
+
+inline
+
+ +

Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.

+ +
+
+ +

◆ WarmStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void RotationQuatConstraintPart::WarmStart (BodyioBody1,
BodyioBody2,
float inWarmStartImpulseRatio 
)
+
+inline
+
+ +

Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_rotation_quat_constraint_part.js b/class_rotation_quat_constraint_part.js new file mode 100644 index 000000000..0bb37f991 --- /dev/null +++ b/class_rotation_quat_constraint_part.js @@ -0,0 +1,12 @@ +var class_rotation_quat_constraint_part = +[ + [ "CalculateConstraintProperties", "class_rotation_quat_constraint_part.html#a0c752c045f216b2d9c0570faf3f71c44", null ], + [ "Deactivate", "class_rotation_quat_constraint_part.html#a6fbaaa5c64ed9b01753780cbad3efb8b", null ], + [ "GetTotalLambda", "class_rotation_quat_constraint_part.html#a4aaed47e0905087e32e5dc82f6c4dca5", null ], + [ "IsActive", "class_rotation_quat_constraint_part.html#ab38b8a217a4dc990ed58e9dc7210e2fc", null ], + [ "RestoreState", "class_rotation_quat_constraint_part.html#a95e793a001df59cd2e8ea7e92c4f6263", null ], + [ "SaveState", "class_rotation_quat_constraint_part.html#a9ca6e071472fdc3e1ce31b115bfee6e4", null ], + [ "SolvePositionConstraint", "class_rotation_quat_constraint_part.html#a598d2320bf1b6d19985a183d06183f13", null ], + [ "SolveVelocityConstraint", "class_rotation_quat_constraint_part.html#ad464b428f6994ee02ac203b29c561324", null ], + [ "WarmStart", "class_rotation_quat_constraint_part.html#a05fa3097154059e8d7814370182a7aa5", null ] +]; \ No newline at end of file diff --git a/class_s_t_l_aligned_allocator-members.html b/class_s_t_l_aligned_allocator-members.html new file mode 100644 index 000000000..78c827aed --- /dev/null +++ b/class_s_t_l_aligned_allocator-members.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
STLAlignedAllocator< T, N > Member List
+
+
+ +

This is the complete list of members for STLAlignedAllocator< T, N >, including all inherited members.

+ + + + + + + + + + + + + + + + +
allocate(size_type inN)STLAlignedAllocator< T, N >inline
const_pointer typedefSTLAlignedAllocator< T, N >
const_reference typedefSTLAlignedAllocator< T, N >
deallocate(pointer inPointer, size_type)STLAlignedAllocator< T, N >inline
difference_type typedefSTLAlignedAllocator< T, N >
is_always_equal typedefSTLAlignedAllocator< T, N >
operator!=(const STLAlignedAllocator< T, N > &) constSTLAlignedAllocator< T, N >inline
operator==(const STLAlignedAllocator< T, N > &) constSTLAlignedAllocator< T, N >inline
pointer typedefSTLAlignedAllocator< T, N >
propagate_on_container_move_assignment typedefSTLAlignedAllocator< T, N >
reference typedefSTLAlignedAllocator< T, N >
size_type typedefSTLAlignedAllocator< T, N >
STLAlignedAllocator()=defaultSTLAlignedAllocator< T, N >inline
STLAlignedAllocator(const STLAlignedAllocator< T2, N > &)STLAlignedAllocator< T, N >inlineexplicit
value_type typedefSTLAlignedAllocator< T, N >
+
+ + + + diff --git a/class_s_t_l_aligned_allocator.html b/class_s_t_l_aligned_allocator.html new file mode 100644 index 000000000..620ff0f18 --- /dev/null +++ b/class_s_t_l_aligned_allocator.html @@ -0,0 +1,525 @@ + + + + + + + +Jolt Physics: STLAlignedAllocator< T, N > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
STLAlignedAllocator< T, N > Class Template Reference
+
+
+ +

STL allocator that takes care that memory is aligned to N bytes. + More...

+ +

#include <STLAlignedAllocator.h>

+ + + + + +

+Classes

struct  rebind
 Converting to allocator for other type. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using value_type = T
 
using pointer = T *
 Pointer to type.
 
using const_pointer = const T *
 
using reference = T &
 
using const_reference = const T &
 
using size_type = size_t
 
using difference_type = ptrdiff_t
 
using is_always_equal = std::true_type
 The allocator is stateless.
 
using propagate_on_container_move_assignment = std::true_type
 Allocator supports moving.
 
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 STLAlignedAllocator ()=default
 Constructor.
 
template<typename T2 >
 STLAlignedAllocator (const STLAlignedAllocator< T2, N > &)
 Constructor from other allocator.
 
pointer allocate (size_type inN)
 Allocate memory.
 
void deallocate (pointer inPointer, size_type)
 Free memory.
 
bool operator== (const STLAlignedAllocator< T, N > &) const
 Allocators are stateless so assumed to be equal.
 
bool operator!= (const STLAlignedAllocator< T, N > &) const
 
+

Detailed Description

+
template<typename T, size_t N>
+class STLAlignedAllocator< T, N >

STL allocator that takes care that memory is aligned to N bytes.

+

Member Typedef Documentation

+ +

◆ const_pointer

+ +
+
+
+template<typename T , size_t N>
+ + + + +
using STLAlignedAllocator< T, N >::const_pointer = const T *
+
+ +
+
+ +

◆ const_reference

+ +
+
+
+template<typename T , size_t N>
+ + + + +
using STLAlignedAllocator< T, N >::const_reference = const T &
+
+ +
+
+ +

◆ difference_type

+ +
+
+
+template<typename T , size_t N>
+ + + + +
using STLAlignedAllocator< T, N >::difference_type = ptrdiff_t
+
+ +
+
+ +

◆ is_always_equal

+ +
+
+
+template<typename T , size_t N>
+ + + + +
using STLAlignedAllocator< T, N >::is_always_equal = std::true_type
+
+ +

The allocator is stateless.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<typename T , size_t N>
+ + + + +
using STLAlignedAllocator< T, N >::pointer = T *
+
+ +

Pointer to type.

+ +
+
+ +

◆ propagate_on_container_move_assignment

+ +
+
+
+template<typename T , size_t N>
+ + + + +
using STLAlignedAllocator< T, N >::propagate_on_container_move_assignment = std::true_type
+
+ +

Allocator supports moving.

+ +
+
+ +

◆ reference

+ +
+
+
+template<typename T , size_t N>
+ + + + +
using STLAlignedAllocator< T, N >::reference = T &
+
+

Reference to type. Can be removed in C++20.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<typename T , size_t N>
+ + + + +
using STLAlignedAllocator< T, N >::size_type = size_t
+
+ +
+
+ +

◆ value_type

+ +
+
+
+template<typename T , size_t N>
+ + + + +
using STLAlignedAllocator< T, N >::value_type = T
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ STLAlignedAllocator() [1/2]

+ +
+
+
+template<typename T , size_t N>
+ + + + + +
+ + + + + + + +
STLAlignedAllocator< T, N >::STLAlignedAllocator ()
+
+inlinedefault
+
+ +

Constructor.

+ +
+
+ +

◆ STLAlignedAllocator() [2/2]

+ +
+
+
+template<typename T , size_t N>
+
+template<typename T2 >
+ + + + + +
+ + + + + + + + +
STLAlignedAllocator< T, N >::STLAlignedAllocator (const STLAlignedAllocator< T2, N > & )
+
+inlineexplicit
+
+ +

Constructor from other allocator.

+ +
+
+

Member Function Documentation

+ +

◆ allocate()

+ +
+
+
+template<typename T , size_t N>
+ + + + + +
+ + + + + + + + +
pointer STLAlignedAllocator< T, N >::allocate (size_type inN)
+
+inline
+
+ +

Allocate memory.

+ +
+
+ +

◆ deallocate()

+ +
+
+
+template<typename T , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void STLAlignedAllocator< T, N >::deallocate (pointer inPointer,
size_type  
)
+
+inline
+
+ +

Free memory.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<typename T , size_t N>
+ + + + + +
+ + + + + + + + +
bool STLAlignedAllocator< T, N >::operator!= (const STLAlignedAllocator< T, N > & ) const
+
+inline
+
+ +
+
+ +

◆ operator==()

+ +
+
+
+template<typename T , size_t N>
+ + + + + +
+ + + + + + + + +
bool STLAlignedAllocator< T, N >::operator== (const STLAlignedAllocator< T, N > & ) const
+
+inline
+
+ +

Allocators are stateless so assumed to be equal.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_s_t_l_aligned_allocator.js b/class_s_t_l_aligned_allocator.js new file mode 100644 index 000000000..040a96d23 --- /dev/null +++ b/class_s_t_l_aligned_allocator.js @@ -0,0 +1,19 @@ +var class_s_t_l_aligned_allocator = +[ + [ "rebind", "struct_s_t_l_aligned_allocator_1_1rebind.html", "struct_s_t_l_aligned_allocator_1_1rebind" ], + [ "const_pointer", "class_s_t_l_aligned_allocator.html#aebb20b18116799083cdb1c21bd5bd298", null ], + [ "const_reference", "class_s_t_l_aligned_allocator.html#af511fc1b1dddec672d902e3ef16d0f39", null ], + [ "difference_type", "class_s_t_l_aligned_allocator.html#a2a9287cbd8ce3d27c67aeb33a20ff9ba", null ], + [ "is_always_equal", "class_s_t_l_aligned_allocator.html#af538a14e83578101a7d7cdcc8bb0ccbd", null ], + [ "pointer", "class_s_t_l_aligned_allocator.html#a00f960ad0c626b48190ed45c3a9f4f93", null ], + [ "propagate_on_container_move_assignment", "class_s_t_l_aligned_allocator.html#a19ac9547e054a16d7cc86a365fcbde35", null ], + [ "reference", "class_s_t_l_aligned_allocator.html#a56b7aed0a19cfcdb3265edd1b2f128c9", null ], + [ "size_type", "class_s_t_l_aligned_allocator.html#a0004fb3a233bcaa84924f839156d06b3", null ], + [ "value_type", "class_s_t_l_aligned_allocator.html#a4457facc139621863361195814d170df", null ], + [ "STLAlignedAllocator", "class_s_t_l_aligned_allocator.html#a490bc5212d1eaa558cd629b920f7ab4f", null ], + [ "STLAlignedAllocator", "class_s_t_l_aligned_allocator.html#adcbf21beef1553bd11174da4a4a4a274", null ], + [ "allocate", "class_s_t_l_aligned_allocator.html#a3e191bdbfbb57772ab22df9ec23a6996", null ], + [ "deallocate", "class_s_t_l_aligned_allocator.html#a7ee785ea3499d6b21ce7872cb66988eb", null ], + [ "operator!=", "class_s_t_l_aligned_allocator.html#a07e008a7bc893d0386c0e98f2f2d485e", null ], + [ "operator==", "class_s_t_l_aligned_allocator.html#a187d266d7db5bbd12a876eb83641602e", null ] +]; \ No newline at end of file diff --git a/class_s_t_l_allocator-members.html b/class_s_t_l_allocator-members.html new file mode 100644 index 000000000..26e5fbec1 --- /dev/null +++ b/class_s_t_l_allocator-members.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
STLAllocator< T > Member List
+
+
+ +

This is the complete list of members for STLAllocator< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
allocate(size_type inN)STLAllocator< T >inline
const_pointer typedefSTLAllocator< T >
const_reference typedefSTLAllocator< T >
deallocate(pointer inPointer, size_type)STLAllocator< T >inline
difference_type typedefSTLAllocator< T >
has_reallocateSTLAllocator< T >static
is_always_equal typedefSTLAllocator< T >
needs_aligned_allocateSTLAllocator< T >static
operator!=(const STLAllocator< T > &) constSTLAllocator< T >inline
operator==(const STLAllocator< T > &) constSTLAllocator< T >inline
pointer typedefSTLAllocator< T >
propagate_on_container_move_assignment typedefSTLAllocator< T >
reallocate(pointer inOldPointer, size_type inOldSize, size_type inNewSize)STLAllocator< T >inline
reference typedefSTLAllocator< T >
size_type typedefSTLAllocator< T >
STLAllocator()=defaultSTLAllocator< T >inline
STLAllocator(const STLAllocator< T2 > &)STLAllocator< T >inline
value_type typedefSTLAllocator< T >
+
+ + + + diff --git a/class_s_t_l_allocator.html b/class_s_t_l_allocator.html new file mode 100644 index 000000000..a90fd7f7d --- /dev/null +++ b/class_s_t_l_allocator.html @@ -0,0 +1,722 @@ + + + + + + + +Jolt Physics: STLAllocator< T > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
STLAllocator< T > Class Template Reference
+
+
+ +

STL allocator that forwards to our allocation functions. + More...

+ +

#include <STLAllocator.h>

+
+Inheritance diagram for STLAllocator< T >:
+
+
+ + +Array< IndexedTriangle > +Array< ResultType > +Array< Body * > +Array< uint8 > +Array< BodyID > +Array< Mapping > +Array< const char * > +Array< BroadPhaseLayer > +Array< Contact > +Array< CharacterVirtual * > +Array< SubShape > +Array< SubShapeSettings > +Array< Ref< Constraint > > +Array< Face * > +Array< Coplanar > +Array< int > +Array< Point > +Array< Face > +Array< Plane > +Array< Vec3 > +Array< DebugRenderer::LOD > +Array< DebugRendererRecorder::Frame > +Array< DebugRendererRecorder::LineBlob > +Array< DebugRendererRecorder::TriangleBlob > +Array< DebugRendererRecorder::TextBlob > +Array< DebugRendererRecorder::GeometryBlob > +Array< Triangle > +Array< float > +Array< RefConst< PhysicsMaterial > > +Array< Ref > +Array< thread > +Array< Float3 > +Array< Bounds > +Array< Link > +Array< AttributeDescription > +Array< BodyCreationSettings > +Array< PhysicsScene::ConnectedConstraint > +Array< SoftBodyCreationSettings > +Array< PhysicsStepListener * > +Array< ProfileThread * > +Array< Ref< TwoBodyConstraint > > +Array< Part > +Array< AdditionalConstraint > +Array< BodyIdxPair > +Array< AnimatedJoint > +Array< Keyframe > +Array< Joint > +Array< Chain > +Array< Unmapped > +Array< Locked > +Array< JointState > +Array< Mat44 > +Array< SoftBodyVertex > +Array< CollidingShape > +Array< SkinState > +Array< SoftBodySharedSettings::Vertex > +Array< SoftBodySharedSettings::Face > +Array< SoftBodySharedSettings::Edge > +Array< SoftBodySharedSettings::DihedralBend > +Array< SoftBodySharedSettings::Volume > +Array< SoftBodySharedSettings::Skinned > +Array< SoftBodySharedSettings::InvBind > +Array< SoftBodySharedSettings::LRA > +Array< ClosestKinematic > +Array< UpdateGroup > +Array< uint32 > +Array< uint > +Array< Node > +Array< Bin > +Array< Wheel * > +Array< VehicleAntiRollBar > +Array< Ref< WheelSettings > > +Array< VehicleDifferentialSettings > +Array< T, Allocator > + +
+ + + + + +

+Classes

struct  rebind
 Converting to allocator for other type. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Types

using value_type = T
 
using pointer = T *
 Pointer to type.
 
using const_pointer = const T *
 
using reference = T &
 
using const_reference = const T &
 
using size_type = size_t
 
using difference_type = ptrdiff_t
 
using is_always_equal = std::true_type
 The allocator is stateless.
 
using propagate_on_container_move_assignment = std::true_type
 Allocator supports moving.
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 STLAllocator ()=default
 Constructor.
 
template<typename T2 >
 STLAllocator (const STLAllocator< T2 > &)
 Constructor from other allocator.
 
pointer allocate (size_type inN)
 Allocate memory.
 
template<bool has_reallocate_v = has_reallocate, typename = std::enable_if_t<has_reallocate_v>>
pointer reallocate (pointer inOldPointer, size_type inOldSize, size_type inNewSize)
 Reallocate memory.
 
void deallocate (pointer inPointer, size_type)
 Free memory.
 
bool operator== (const STLAllocator< T > &) const
 Allocators are stateless so assumed to be equal.
 
bool operator!= (const STLAllocator< T > &) const
 
+ + + + + + + +

+Static Public Attributes

static constexpr bool needs_aligned_allocate = alignof(T) > (JPH_CPU_ADDRESS_BITS == 32? 8 : 16)
 If this allocator needs to fall back to aligned allocations because the type requires it.
 
static constexpr bool has_reallocate = std::is_trivially_copyable<T>() && !needs_aligned_allocate
 Should we expose a reallocate function?
 
+

Detailed Description

+
template<typename T>
+class STLAllocator< T >

STL allocator that forwards to our allocation functions.

+

Member Typedef Documentation

+ +

◆ const_pointer

+ +
+
+
+template<typename T >
+ + + + +
using STLAllocator< T >::const_pointer = const T *
+
+ +
+
+ +

◆ const_reference

+ +
+
+
+template<typename T >
+ + + + +
using STLAllocator< T >::const_reference = const T &
+
+ +
+
+ +

◆ difference_type

+ +
+
+
+template<typename T >
+ + + + +
using STLAllocator< T >::difference_type = ptrdiff_t
+
+ +
+
+ +

◆ is_always_equal

+ +
+
+
+template<typename T >
+ + + + +
using STLAllocator< T >::is_always_equal = std::true_type
+
+ +

The allocator is stateless.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<typename T >
+ + + + +
using STLAllocator< T >::pointer = T *
+
+ +

Pointer to type.

+ +
+
+ +

◆ propagate_on_container_move_assignment

+ +
+
+
+template<typename T >
+ + + + +
using STLAllocator< T >::propagate_on_container_move_assignment = std::true_type
+
+ +

Allocator supports moving.

+ +
+
+ +

◆ reference

+ +
+
+
+template<typename T >
+ + + + +
using STLAllocator< T >::reference = T &
+
+

Reference to type. Can be removed in C++20.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<typename T >
+ + + + +
using STLAllocator< T >::size_type = size_t
+
+ +
+
+ +

◆ value_type

+ +
+
+
+template<typename T >
+ + + + +
using STLAllocator< T >::value_type = T
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ STLAllocator() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
STLAllocator< T >::STLAllocator ()
+
+inlinedefault
+
+ +

Constructor.

+ +
+
+ +

◆ STLAllocator() [2/2]

+ +
+
+
+template<typename T >
+
+template<typename T2 >
+ + + + + +
+ + + + + + + + +
STLAllocator< T >::STLAllocator (const STLAllocator< T2 > & )
+
+inline
+
+ +

Constructor from other allocator.

+ +
+
+

Member Function Documentation

+ +

◆ allocate()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
pointer STLAllocator< T >::allocate (size_type inN)
+
+inline
+
+ +

Allocate memory.

+ +
+
+ +

◆ deallocate()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void STLAllocator< T >::deallocate (pointer inPointer,
size_type  
)
+
+inline
+
+ +

Free memory.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
bool STLAllocator< T >::operator!= (const STLAllocator< T > & ) const
+
+inline
+
+ +
+
+ +

◆ operator==()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
bool STLAllocator< T >::operator== (const STLAllocator< T > & ) const
+
+inline
+
+ +

Allocators are stateless so assumed to be equal.

+ +
+
+ +

◆ reallocate()

+ +
+
+
+template<typename T >
+
+template<bool has_reallocate_v = has_reallocate, typename = std::enable_if_t<has_reallocate_v>>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
pointer STLAllocator< T >::reallocate (pointer inOldPointer,
size_type inOldSize,
size_type inNewSize 
)
+
+inline
+
+ +

Reallocate memory.

+ +
+
+

Member Data Documentation

+ +

◆ has_reallocate

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + +
constexpr bool STLAllocator< T >::has_reallocate = std::is_trivially_copyable<T>() && !needs_aligned_allocate
+
+staticconstexpr
+
+ +

Should we expose a reallocate function?

+ +
+
+ +

◆ needs_aligned_allocate

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + +
constexpr bool STLAllocator< T >::needs_aligned_allocate = alignof(T) > (JPH_CPU_ADDRESS_BITS == 32? 8 : 16)
+
+staticconstexpr
+
+ +

If this allocator needs to fall back to aligned allocations because the type requires it.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_s_t_l_allocator.js b/class_s_t_l_allocator.js new file mode 100644 index 000000000..5bc2f80a1 --- /dev/null +++ b/class_s_t_l_allocator.js @@ -0,0 +1,20 @@ +var class_s_t_l_allocator = +[ + [ "rebind", "struct_s_t_l_allocator_1_1rebind.html", "struct_s_t_l_allocator_1_1rebind" ], + [ "const_pointer", "class_s_t_l_allocator.html#af20979f6a464bc75ff11d09063e97ab7", null ], + [ "const_reference", "class_s_t_l_allocator.html#a76d224a25fd13aab0e650c27fa0a667f", null ], + [ "difference_type", "class_s_t_l_allocator.html#af1e0065d57c697896991790b3bc0b507", null ], + [ "is_always_equal", "class_s_t_l_allocator.html#aa4525a121f902e3456ee4d4c58aedf0e", null ], + [ "pointer", "class_s_t_l_allocator.html#a6695227ea3840456beb77a4d6ad82e2a", null ], + [ "propagate_on_container_move_assignment", "class_s_t_l_allocator.html#a0d7b95a4beebe23ffc1dccce06aad884", null ], + [ "reference", "class_s_t_l_allocator.html#affd8ec6c0ff2ea46a895cd9a6ca5ab7e", null ], + [ "size_type", "class_s_t_l_allocator.html#aac44f3272ab922012ffbc4f79b5916f1", null ], + [ "value_type", "class_s_t_l_allocator.html#aa77f889273432238722b3cb6ee8d54e3", null ], + [ "STLAllocator", "class_s_t_l_allocator.html#a0971631bbfb181b844ee4f1f6cf987d8", null ], + [ "STLAllocator", "class_s_t_l_allocator.html#aca939c9a9e8a37dbc3ace546d3c843a5", null ], + [ "allocate", "class_s_t_l_allocator.html#a186cb0b0dae1eda7cf0436e4bc8a964b", null ], + [ "deallocate", "class_s_t_l_allocator.html#aabc649e7365a3815c5f7fdd9f9d2b2df", null ], + [ "operator!=", "class_s_t_l_allocator.html#a9fc4be52711444b202331eca017b5e40", null ], + [ "operator==", "class_s_t_l_allocator.html#a851d3b50a4ebb59404de83b8da468df5", null ], + [ "reallocate", "class_s_t_l_allocator.html#aa023ac42875d9d843380abb6986888f1", null ] +]; \ No newline at end of file diff --git a/class_s_t_l_allocator.png b/class_s_t_l_allocator.png new file mode 100644 index 000000000..ddc88036c Binary files /dev/null and b/class_s_t_l_allocator.png differ diff --git a/class_s_t_l_temp_allocator-members.html b/class_s_t_l_temp_allocator-members.html new file mode 100644 index 000000000..8fa0edd4a --- /dev/null +++ b/class_s_t_l_temp_allocator-members.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
STLTempAllocator< T > Member List
+
+
+ +

This is the complete list of members for STLTempAllocator< T >, including all inherited members.

+ + + + + + + + + + + + + + + + +
allocate(size_type inN)STLTempAllocator< T >inline
const_pointer typedefSTLTempAllocator< T >
const_reference typedefSTLTempAllocator< T >
deallocate(pointer inPointer, size_type inN)STLTempAllocator< T >inline
difference_type typedefSTLTempAllocator< T >
GetAllocator() constSTLTempAllocator< T >inline
is_always_equal typedefSTLTempAllocator< T >
operator!=(const STLTempAllocator< T > &inRHS) constSTLTempAllocator< T >inline
operator==(const STLTempAllocator< T > &inRHS) constSTLTempAllocator< T >inline
pointer typedefSTLTempAllocator< T >
reference typedefSTLTempAllocator< T >
size_type typedefSTLTempAllocator< T >
STLTempAllocator(TempAllocator &inAllocator)STLTempAllocator< T >inline
STLTempAllocator(const STLTempAllocator< T2 > &inRHS)STLTempAllocator< T >inlineexplicit
value_type typedefSTLTempAllocator< T >
+
+ + + + diff --git a/class_s_t_l_temp_allocator.html b/class_s_t_l_temp_allocator.html new file mode 100644 index 000000000..44db647b9 --- /dev/null +++ b/class_s_t_l_temp_allocator.html @@ -0,0 +1,537 @@ + + + + + + + +Jolt Physics: STLTempAllocator< T > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
STLTempAllocator< T > Class Template Reference
+
+
+ +

STL allocator that wraps around TempAllocator. + More...

+ +

#include <STLTempAllocator.h>

+ + + + + +

+Classes

struct  rebind
 Converting to allocator for other type. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Public Types

using value_type = T
 
using pointer = T *
 Pointer to type.
 
using const_pointer = const T *
 
using reference = T &
 
using const_reference = const T &
 
using size_type = size_t
 
using difference_type = ptrdiff_t
 
using is_always_equal = std::false_type
 The allocator is not stateless (depends on the temp allocator)
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 STLTempAllocator (TempAllocator &inAllocator)
 Constructor.
 
template<typename T2 >
 STLTempAllocator (const STLTempAllocator< T2 > &inRHS)
 Constructor from other allocator.
 
pointer allocate (size_type inN)
 Allocate memory.
 
void deallocate (pointer inPointer, size_type inN)
 Free memory.
 
bool operator== (const STLTempAllocator< T > &inRHS) const
 Allocators are not-stateless, assume if allocator address matches that the allocators are the same.
 
bool operator!= (const STLTempAllocator< T > &inRHS) const
 
TempAllocatorGetAllocator () const
 Get our temp allocator.
 
+

Detailed Description

+
template<typename T>
+class STLTempAllocator< T >

STL allocator that wraps around TempAllocator.

+

Member Typedef Documentation

+ +

◆ const_pointer

+ +
+
+
+template<typename T >
+ + + + +
using STLTempAllocator< T >::const_pointer = const T *
+
+ +
+
+ +

◆ const_reference

+ +
+
+
+template<typename T >
+ + + + +
using STLTempAllocator< T >::const_reference = const T &
+
+ +
+
+ +

◆ difference_type

+ +
+
+
+template<typename T >
+ + + + +
using STLTempAllocator< T >::difference_type = ptrdiff_t
+
+ +
+
+ +

◆ is_always_equal

+ +
+
+
+template<typename T >
+ + + + +
using STLTempAllocator< T >::is_always_equal = std::false_type
+
+ +

The allocator is not stateless (depends on the temp allocator)

+ +
+
+ +

◆ pointer

+ +
+
+
+template<typename T >
+ + + + +
using STLTempAllocator< T >::pointer = T *
+
+ +

Pointer to type.

+ +
+
+ +

◆ reference

+ +
+
+
+template<typename T >
+ + + + +
using STLTempAllocator< T >::reference = T &
+
+

Reference to type. Can be removed in C++20.

+ +
+
+ +

◆ size_type

+ +
+
+
+template<typename T >
+ + + + +
using STLTempAllocator< T >::size_type = size_t
+
+ +
+
+ +

◆ value_type

+ +
+
+
+template<typename T >
+ + + + +
using STLTempAllocator< T >::value_type = T
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ STLTempAllocator() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
STLTempAllocator< T >::STLTempAllocator (TempAllocatorinAllocator)
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ STLTempAllocator() [2/2]

+ +
+
+
+template<typename T >
+
+template<typename T2 >
+ + + + + +
+ + + + + + + + +
STLTempAllocator< T >::STLTempAllocator (const STLTempAllocator< T2 > & inRHS)
+
+inlineexplicit
+
+ +

Constructor from other allocator.

+ +
+
+

Member Function Documentation

+ +

◆ allocate()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
pointer STLTempAllocator< T >::allocate (size_type inN)
+
+inline
+
+ +

Allocate memory.

+ +
+
+ +

◆ deallocate()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void STLTempAllocator< T >::deallocate (pointer inPointer,
size_type inN 
)
+
+inline
+
+ +

Free memory.

+ +
+
+ +

◆ GetAllocator()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
TempAllocator & STLTempAllocator< T >::GetAllocator () const
+
+inline
+
+ +

Get our temp allocator.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
bool STLTempAllocator< T >::operator!= (const STLTempAllocator< T > & inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator==()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
bool STLTempAllocator< T >::operator== (const STLTempAllocator< T > & inRHS) const
+
+inline
+
+ +

Allocators are not-stateless, assume if allocator address matches that the allocators are the same.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_s_t_l_temp_allocator.js b/class_s_t_l_temp_allocator.js new file mode 100644 index 000000000..cc2bd01c7 --- /dev/null +++ b/class_s_t_l_temp_allocator.js @@ -0,0 +1,19 @@ +var class_s_t_l_temp_allocator = +[ + [ "rebind", "struct_s_t_l_temp_allocator_1_1rebind.html", "struct_s_t_l_temp_allocator_1_1rebind" ], + [ "const_pointer", "class_s_t_l_temp_allocator.html#abdc3ba35d2c24ea49e434a22eb3473da", null ], + [ "const_reference", "class_s_t_l_temp_allocator.html#ab5efc1d80f0e3c255c1a916474a0920d", null ], + [ "difference_type", "class_s_t_l_temp_allocator.html#a53ff9f68e553b59d0a80e9115d3d8205", null ], + [ "is_always_equal", "class_s_t_l_temp_allocator.html#a130ebd28aed525b631e26371c7e851bb", null ], + [ "pointer", "class_s_t_l_temp_allocator.html#a1768c0cbf15081f1ce4a9108e482c564", null ], + [ "reference", "class_s_t_l_temp_allocator.html#a3f90b804920b11315e04932909db7b76", null ], + [ "size_type", "class_s_t_l_temp_allocator.html#adffaee1b8b044dae6b8390cf013eced8", null ], + [ "value_type", "class_s_t_l_temp_allocator.html#af1444dc5e5d16500e2e638e41f44e72f", null ], + [ "STLTempAllocator", "class_s_t_l_temp_allocator.html#a96f2c3cf503f75f1deb7b97ce2d677e2", null ], + [ "STLTempAllocator", "class_s_t_l_temp_allocator.html#a584223fe52d48aafd4ab2b9f3d30ecd8", null ], + [ "allocate", "class_s_t_l_temp_allocator.html#a5e6754289f3e5c92f7d3a94aaf4d9488", null ], + [ "deallocate", "class_s_t_l_temp_allocator.html#ac9000fbc979ae4fc5f7bd9f978781128", null ], + [ "GetAllocator", "class_s_t_l_temp_allocator.html#ae25b34d6dc7cb58c9108f4ba197353f2", null ], + [ "operator!=", "class_s_t_l_temp_allocator.html#a523ba43212ea2640c688da9b14366742", null ], + [ "operator==", "class_s_t_l_temp_allocator.html#afe0ff9b69805be725b54c35f238f8c6f", null ] +]; \ No newline at end of file diff --git a/class_scaled_shape-members.html b/class_scaled_shape-members.html new file mode 100644 index 000000000..fba4c2dc5 --- /dev/null +++ b/class_scaled_shape-members.html @@ -0,0 +1,200 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ScaledShape Member List
+
+
+ +

This is the complete list of members for ScaledShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideScaledShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideScaledShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const overrideScaledShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideScaledShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideScaledShapevirtual
DecoratedShape(EShapeSubType inSubType)DecoratedShapeinlineexplicit
DecoratedShape(EShapeSubType inSubType, const Shape *inInnerShape)DecoratedShapeinline
DecoratedShape(EShapeSubType inSubType, const DecoratedShapeSettings &inSettings, ShapeResult &outResult)DecoratedShape
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideScaledShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideScaledShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideScaledShapevirtual
GetCenterOfMass() const overrideScaledShapeinlinevirtual
GetInnerRadius() const overrideScaledShapeinlinevirtual
GetInnerShape() constDecoratedShapeinline
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const overrideDecoratedShapeinlinevirtual
GetLocalBounds() const overrideScaledShapevirtual
GetMassProperties() const overrideScaledShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideDecoratedShapevirtual
GetRefCount() constRefTarget< Shape >inline
GetScale() constScaledShapeinline
GetStats() const overrideScaledShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) const overrideDecoratedShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideScaledShapevirtual
DecoratedShape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideDecoratedShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const overrideScaledShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) const overrideDecoratedShapevirtual
GetSubType() constShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideScaledShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideScaledShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideScaledShapeinlinevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideScaledShapeinlinevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideScaledShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideScaledShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constScaledShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constScaledShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) const overrideScaledShapevirtual
MakeScaleValid(Vec3Arg inScale) const overrideScaledShapevirtual
MaterialToIDMap typedefShape
mInnerShapeDecoratedShapeprotected
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() const overrideDecoratedShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideScaledShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)Shapeinlinevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes) overrideDecoratedShapevirtual
SaveBinaryState(StreamOut &inStream) const overrideScaledShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) const overrideDecoratedShapevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaledShape()ScaledShapeinline
ScaledShape(const ScaledShapeSettings &inSettings, ShapeResult &outResult)ScaledShape
ScaledShape(const Shape *inShape, Vec3Arg inScale)ScaledShapeinline
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetEmbedded() constRefTarget< Shape >inline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()ScaledShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const overrideScaledShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_scaled_shape.html b/class_scaled_shape.html new file mode 100644 index 000000000..4e4e96e9f --- /dev/null +++ b/class_scaled_shape.html @@ -0,0 +1,1804 @@ + + + + + + + +Jolt Physics: ScaledShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ScaledShape Class Referencefinal
+
+
+ +

A shape that scales a child shape in local space of that shape. The scale can be non-uniform and can even turn it inside out when one or three components of the scale are negative. + More...

+ +

#include <ScaledShape.h>

+
+Inheritance diagram for ScaledShape:
+
+
+ + +DecoratedShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ScaledShape ()
 Constructor.
 
 ScaledShape (const ScaledShapeSettings &inSettings, ShapeResult &outResult)
 
 ScaledShape (const Shape *inShape, Vec3Arg inScale)
 Constructor that decorates another shape with a scale.
 
Vec3 GetScale () const
 Get the scale.
 
virtual Vec3 GetCenterOfMass () const override
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const override
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const override
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
- Public Member Functions inherited from DecoratedShape
JPH_OVERRIDE_NEW_DELETE DecoratedShape (EShapeSubType inSubType)
 Constructor.
 
 DecoratedShape (EShapeSubType inSubType, const Shape *inInnerShape)
 
 DecoratedShape (EShapeSubType inSubType, const DecoratedShapeSettings &inSettings, ShapeResult &outResult)
 
const ShapeGetInnerShape () const
 Access to the decorated inner shape.
 
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.
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const override
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const override
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const override
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes) override
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const override
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from DecoratedShape
RefConst< ShapemInnerShape
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A shape that scales a child shape in local space of that shape. The scale can be non-uniform and can even turn it inside out when one or three components of the scale are negative.

+

Constructor & Destructor Documentation

+ +

◆ ScaledShape() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE ScaledShape::ScaledShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ ScaledShape() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
ScaledShape::ScaledShape (const ScaledShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+ +

◆ ScaledShape() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ScaledShape::ScaledShape (const ShapeinShape,
Vec3Arg inScale 
)
+
+inline
+
+ +

Constructor that decorates another shape with a scale.

+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ScaledShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool ScaledShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CollectTransformedShapes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ScaledShape::CollectTransformedShapes (const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale,
const SubShapeIDCreatorinSubShapeIDCreator,
TransformedShapeCollectorioCollector,
const ShapeFilterinShapeFilter 
) const
+
+overridevirtual
+
+

Collect the leaf transformed shapes of all leaf shapes of this shape. inBox is the world space axis aligned box which leaf shapes should collide with. inPositionCOM/inRotation/inScale describes the transform of this shape. inSubShapeIDCeator represents the current sub shape ID of this shape.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ScaledShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Implements Shape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ScaledShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ScaledShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ DrawGetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ScaledShape::DrawGetSupportFunction (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inDrawSupportDirection 
) const
+
+overridevirtual
+
+ +

Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ DrawGetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ScaledShape::DrawGetSupportingFace (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+ +

Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetCenterOfMass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vec3 ScaledShape::GetCenterOfMass () const
+
+inlineoverridevirtual
+
+ +

All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.

+ +

Reimplemented from DecoratedShape.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float ScaledShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox ScaledShape::GetLocalBounds () const
+
+overridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties ScaledShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetScale()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 ScaledShape::GetScale () const
+
+inline
+
+ +

Get the scale.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats ScaledShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ScaledShape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3 &outCenterOfBuoyancy  JPH_IF_DEBUG_RENDERER, RVec3Arg inBaseOffset 
) const
+
+overridevirtual
+
+ +
+
+ +

◆ GetSubShapeTransformedShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TransformedShape ScaledShape::GetSubShapeTransformedShape (const SubShapeIDinSubShapeID,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale,
SubShapeIDoutRemainder 
) const
+
+overridevirtual
+
+

Get the direct child sub shape and its transform for a sub shape ID.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID that indicates the path to the leaf shape
inPositionCOMThe position of the center of mass of this shape
inRotationThe orientation of this shape
inScaleScale in local space of the shape (scales relative to its center of mass)
outRemainderThe remainder of the sub shape ID after removing the sub shape
+
+
+
Returns
Direct child sub shape and its transform, note that the body ID and sub shape ID will be invalid
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ScaledShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from DecoratedShape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 ScaledShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual int ScaledShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+inlineoverridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void ScaledShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+inlineoverridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Implements Shape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
float ScaledShape::GetVolume () const
+
+overridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox Shape::GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inline
+
+ +

Get world space bounds including convex radius.

+ +
+
+ +

◆ GetWorldSpaceBounds() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual AABox Shape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inlinevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox ScaledShape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ IsValidScale()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ScaledShape::IsValidScale (Vec3Arg inScale) const
+
+overridevirtual
+
+

Test if inScale is a valid scale for this shape. Some shapes can only be scaled uniformly, compound shapes cannot handle shapes being rotated and scaled (this would cause shearing), scale can never be zero. When the scale is invalid, the function will return false.

+

Here's a list of supported scales:

    +
  • SphereShape: Scale must be uniform (signs of scale are ignored).
  • +
  • BoxShape: Any scale supported (signs of scale are ignored).
  • +
  • TriangleShape: Any scale supported when convex radius is zero, otherwise only uniform scale supported.
  • +
  • CapsuleShape: Scale must be uniform (signs of scale are ignored).
  • +
  • TaperedCapsuleShape: Scale must be uniform (sign of Y scale can be used to flip the capsule).
  • +
  • CylinderShape: Scale must be uniform in XZ plane, Y can scale independently (signs of scale are ignored).
  • +
  • RotatedTranslatedShape: Scale must not cause shear in the child shape.
  • +
  • CompoundShape: Scale must not cause shear in any of the child shapes.
  • +
+ +

Reimplemented from DecoratedShape.

+ +
+
+ +

◆ MakeScaleValid()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 ScaledShape::MakeScaleValid (Vec3Arg inScale) const
+
+overridevirtual
+
+

This function will make sure that if you wrap this shape in a ScaledShape that the scale is valid. Note that this involves discarding components of the scale that are invalid, so the resulting scaled shape may be different than the requested scale. Compare the return value of this function with the scale you passed in to detect major inconsistencies and possibly warn the user.

Parameters
+ + +
inScaleLocal space scale for this shape.
+
+
+
Returns
Scale that can be used to wrap this shape in a ScaledShape. IsValidScale will return true for this scale.
+ +

Reimplemented from DecoratedShape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ScaledShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void ScaledShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void ScaledShape::sRegister ()
+
+static
+
+ +
+
+ +

◆ TransformShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ScaledShape::TransformShape (Mat44Arg inCenterOfMassTransform,
TransformedShapeCollectorioCollector 
) const
+
+overridevirtual
+
+

Transforms this shape and all of its children with inTransform, resulting shape(s) are passed to ioCollector. Note that not all shapes support all transforms (especially true for scaling), the resulting shape will try to match the transform as accurately as possible.

Parameters
+ + + +
inCenterOfMassTransformThe transform (rotation, translation, scale) that the center of mass of the shape should get
ioCollectorThe transformed shapes will be passed to this collector
+
+
+ +

Reimplemented from Shape.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_scaled_shape.js b/class_scaled_shape.js new file mode 100644 index 000000000..ab1fb7467 --- /dev/null +++ b/class_scaled_shape.js @@ -0,0 +1,35 @@ +var class_scaled_shape = +[ + [ "ScaledShape", "class_scaled_shape.html#aa5ad2391b58581e0d1a12388ecf9b187", null ], + [ "ScaledShape", "class_scaled_shape.html#a38fd4d63da779ec4e15c459e9564a1dd", null ], + [ "ScaledShape", "class_scaled_shape.html#acbf4859938f121f2defeca164a97f851", null ], + [ "CastRay", "class_scaled_shape.html#a4687967e5d1fdceabfd3bae64584eca8", null ], + [ "CastRay", "class_scaled_shape.html#add12e8276eda4a003e528e1646836bec", null ], + [ "CollectTransformedShapes", "class_scaled_shape.html#a1a005f193965690c37b87fc7365f962a", null ], + [ "CollidePoint", "class_scaled_shape.html#ae5cef908731fb835103a01b2089aa361", null ], + [ "CollideSoftBodyVertices", "class_scaled_shape.html#a53065cdbb98b72f751b2a7349172a1eb", null ], + [ "Draw", "class_scaled_shape.html#aef8f4170bcd5d01f62862f08c3af3ce0", null ], + [ "DrawGetSupportFunction", "class_scaled_shape.html#a5150fdb5370cf6aeb27d975cc1ef5c6f", null ], + [ "DrawGetSupportingFace", "class_scaled_shape.html#a4768be2571bafce12be7fc759bb666af", null ], + [ "GetCenterOfMass", "class_scaled_shape.html#af9e8b8bdbc341d1b0f0caa497505d0f7", null ], + [ "GetInnerRadius", "class_scaled_shape.html#ac7caaa3409a215d6b7dd97ef08c1309b", null ], + [ "GetLocalBounds", "class_scaled_shape.html#a98bf01077d911fb1ece20a2c11aa6d8c", null ], + [ "GetMassProperties", "class_scaled_shape.html#a8e96fae113643ee75eb5f6355abd5425", null ], + [ "GetScale", "class_scaled_shape.html#a7324baba8e06fe9ed476bd5644f8f34e", null ], + [ "GetStats", "class_scaled_shape.html#a1d1237076dc542497e7ca6b917cc7d68", null ], + [ "GetSubmergedVolume", "class_scaled_shape.html#aca3913c54c796de4014330c508484005", null ], + [ "GetSubShapeTransformedShape", "class_scaled_shape.html#adc6c23ae1479cd048a6b6c87b8b0aa2a", null ], + [ "GetSupportingFace", "class_scaled_shape.html#aacf906339a566563005b35af3a474385", null ], + [ "GetSurfaceNormal", "class_scaled_shape.html#a8d44329b0d06995572b38bbe3f23879f", null ], + [ "GetTrianglesNext", "class_scaled_shape.html#ad222933cc81e3136f2b02cc70db545d9", null ], + [ "GetTrianglesStart", "class_scaled_shape.html#af3c0586193bee5223c9a94556ee019de", null ], + [ "GetVolume", "class_scaled_shape.html#ae0c292389243763cf6abd92048200cf3", null ], + [ "GetWorldSpaceBounds", "class_scaled_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b", null ], + [ "GetWorldSpaceBounds", "class_scaled_shape.html#a9f8379fa338802436700b86a07fab3be", null ], + [ "GetWorldSpaceBounds", "class_scaled_shape.html#a1873be9425e42d2af4aece1ddd24cf35", null ], + [ "IsValidScale", "class_scaled_shape.html#aaa13e40988ae29754e637e5baa31a868", null ], + [ "MakeScaleValid", "class_scaled_shape.html#abc64b66c45b52bd4248ffee1823c3c2d", null ], + [ "RestoreBinaryState", "class_scaled_shape.html#ac5d58ba4d9241234ece710053012a18f", null ], + [ "SaveBinaryState", "class_scaled_shape.html#a44da6adb8f71a4d68041605fd0250f1b", null ], + [ "TransformShape", "class_scaled_shape.html#a9da292ba3e1f73783abacc9918f47607", null ] +]; \ No newline at end of file diff --git a/class_scaled_shape.png b/class_scaled_shape.png new file mode 100644 index 000000000..b89f30809 Binary files /dev/null and b/class_scaled_shape.png differ diff --git a/class_scaled_shape_settings-members.html b/class_scaled_shape_settings-members.html new file mode 100644 index 000000000..d7377c418 --- /dev/null +++ b/class_scaled_shape_settings-members.html @@ -0,0 +1,135 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ScaledShapeSettings Member List
+
+
+ +

This is the complete list of members for ScaledShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_scaled_shape_settings.html b/class_scaled_shape_settings.html new file mode 100644 index 000000000..1082d08af --- /dev/null +++ b/class_scaled_shape_settings.html @@ -0,0 +1,202 @@ + + + + + + + +Jolt Physics: ScaledShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ScaledShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a ScaledShape. + More...

+ +

#include <ScaledShape.h>

+
+Inheritance diagram for ScaledShapeSettings:
+
+
+ + +DecoratedShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a ScaledShape.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_scaled_shape_settings.png b/class_scaled_shape_settings.png new file mode 100644 index 000000000..b935c60dc Binary files /dev/null and b/class_scaled_shape_settings.png differ diff --git a/class_scope_exit-members.html b/class_scope_exit-members.html new file mode 100644 index 000000000..e99d2f43f --- /dev/null +++ b/class_scope_exit-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ScopeExit< F > Member List
+
+
+ +

This is the complete list of members for ScopeExit< F >, including all inherited members.

+ + + + + + + + +
Invoke()ScopeExit< F >inline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Release()ScopeExit< F >inline
ScopeExit(F &&inFunction)ScopeExit< F >inlineexplicit
~ScopeExit()ScopeExit< F >inline
+
+ + + + diff --git a/class_scope_exit.html b/class_scope_exit.html new file mode 100644 index 000000000..277b7dbfc --- /dev/null +++ b/class_scope_exit.html @@ -0,0 +1,279 @@ + + + + + + + +Jolt Physics: ScopeExit< F > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ScopeExit< F > Class Template Reference
+
+
+ +

Class that calls a function when it goes out of scope. + More...

+ +

#include <ScopeExit.h>

+
+Inheritance diagram for ScopeExit< F >:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_INLINE ScopeExit (F &&inFunction)
 Constructor specifies the exit function.
 
JPH_INLINE ~ScopeExit ()
 Destructor calls the exit function.
 
JPH_INLINE void Invoke ()
 Call the exit function now instead of when going out of scope.
 
JPH_INLINE void Release ()
 No longer call the exit function when going out of scope.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+
template<class F>
+class ScopeExit< F >

Class that calls a function when it goes out of scope.

+

Constructor & Destructor Documentation

+ +

◆ ScopeExit()

+ +
+
+
+template<class F >
+ + + + + +
+ + + + + + + + +
JPH_INLINE ScopeExit< F >::ScopeExit (F && inFunction)
+
+inlineexplicit
+
+ +

Constructor specifies the exit function.

+ +
+
+ +

◆ ~ScopeExit()

+ +
+
+
+template<class F >
+ + + + + +
+ + + + + + + +
JPH_INLINE ScopeExit< F >::~ScopeExit ()
+
+inline
+
+ +

Destructor calls the exit function.

+ +
+
+

Member Function Documentation

+ +

◆ Invoke()

+ +
+
+
+template<class F >
+ + + + + +
+ + + + + + + +
JPH_INLINE void ScopeExit< F >::Invoke ()
+
+inline
+
+ +

Call the exit function now instead of when going out of scope.

+ +
+
+ +

◆ Release()

+ +
+
+
+template<class F >
+ + + + + +
+ + + + + + + +
JPH_INLINE void ScopeExit< F >::Release ()
+
+inline
+
+ +

No longer call the exit function when going out of scope.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_scope_exit.js b/class_scope_exit.js new file mode 100644 index 000000000..145ec46ec --- /dev/null +++ b/class_scope_exit.js @@ -0,0 +1,7 @@ +var class_scope_exit = +[ + [ "ScopeExit", "class_scope_exit.html#afee48c54d249f64f1301b085c343141d", null ], + [ "~ScopeExit", "class_scope_exit.html#a02f185effcec724a51fc0c6d5b073340", null ], + [ "Invoke", "class_scope_exit.html#a634992233a59f3f178d921cf141584d8", null ], + [ "Release", "class_scope_exit.html#a0fd8970c70da23c66060320c833e6934", null ] +]; \ No newline at end of file diff --git a/class_scope_exit.png b/class_scope_exit.png new file mode 100644 index 000000000..77be637cc Binary files /dev/null and b/class_scope_exit.png differ diff --git a/class_semaphore-members.html b/class_semaphore-members.html new file mode 100644 index 000000000..f49559949 --- /dev/null +++ b/class_semaphore-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Semaphore Member List
+
+
+ +

This is the complete list of members for Semaphore, including all inherited members.

+ + + + + + +
Acquire(uint inNumber=1)Semaphore
GetValue() constSemaphoreinline
Release(uint inNumber=1)Semaphore
Semaphore()Semaphore
~Semaphore()Semaphore
+
+ + + + diff --git a/class_semaphore.html b/class_semaphore.html new file mode 100644 index 000000000..5b3d562cc --- /dev/null +++ b/class_semaphore.html @@ -0,0 +1,248 @@ + + + + + + + +Jolt Physics: Semaphore Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Semaphore Class Reference
+
+
+ +

#include <Semaphore.h>

+ + + + + + + + + + + + + + + + +

+Public Member Functions

 Semaphore ()
 Constructor.
 
 ~Semaphore ()
 
void Release (uint inNumber=1)
 Release the semaphore, signaling the thread waiting on the barrier that there may be work.
 
void Acquire (uint inNumber=1)
 Acquire the semaphore inNumber times.
 
int GetValue () const
 Get the current value of the semaphore.
 
+

Detailed Description

+

Implements a semaphore When we switch to C++20 we can use counting_semaphore to unify this

+

Constructor & Destructor Documentation

+ +

◆ Semaphore()

+ +
+
+ + + + + + + +
JPH_NAMESPACE_BEGIN Semaphore::Semaphore ()
+
+ +

Constructor.

+ +
+
+ +

◆ ~Semaphore()

+ +
+
+ + + + + + + +
Semaphore::~Semaphore ()
+
+ +
+
+

Member Function Documentation

+ +

◆ Acquire()

+ +
+
+ + + + + + + + +
void Semaphore::Acquire (uint inNumber = 1)
+
+ +

Acquire the semaphore inNumber times.

+ +
+
+ +

◆ GetValue()

+ +
+
+ + + + + +
+ + + + + + + +
int Semaphore::GetValue () const
+
+inline
+
+ +

Get the current value of the semaphore.

+ +
+
+ +

◆ Release()

+ +
+
+ + + + + + + + +
void Semaphore::Release (uint inNumber = 1)
+
+ +

Release the semaphore, signaling the thread waiting on the barrier that there may be work.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_semaphore.js b/class_semaphore.js new file mode 100644 index 000000000..e95770a41 --- /dev/null +++ b/class_semaphore.js @@ -0,0 +1,8 @@ +var class_semaphore = +[ + [ "Semaphore", "class_semaphore.html#a2bfd704fcdf7d949c23a05fd3eb74582", null ], + [ "~Semaphore", "class_semaphore.html#a633658a6fde276bffc912028725c6ade", null ], + [ "Acquire", "class_semaphore.html#a81c1cbdab78310c8b13e7052572e599d", null ], + [ "GetValue", "class_semaphore.html#a8e4d787c14be5d3191ba1353594267e4", null ], + [ "Release", "class_semaphore.html#aad2d5e92add4088a741869d88fd2fc37", null ] +]; \ No newline at end of file diff --git a/class_serializable_attribute-members.html b/class_serializable_attribute-members.html new file mode 100644 index 000000000..411ea6519 --- /dev/null +++ b/class_serializable_attribute-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SerializableAttribute Member List
+
+
+ +

This is the complete list of members for SerializableAttribute, including all inherited members.

+ + + + + + + + + + + + + + + + + +
GetMemberPointer(void *inObject) constSerializableAttributeinline
GetMemberPointer(const void *inObject) constSerializableAttributeinline
GetMemberPrimitiveType() constSerializableAttributeinline
GetName() constSerializableAttributeinline
IsType(int inArrayDepth, EOSDataType inDataType, const char *inClassName) constSerializableAttributeinline
pGetMemberPrimitiveType typedefSerializableAttribute
pIsType typedefSerializableAttribute
pReadData typedefSerializableAttribute
pWriteData typedefSerializableAttribute
pWriteDataType typedefSerializableAttribute
ReadData(IObjectStreamIn &ioStream, void *inObject) constSerializableAttributeinline
SerializableAttribute(const char *inName, uint inMemberOffset, pGetMemberPrimitiveType inGetMemberPrimitiveType, pIsType inIsType, pReadData inReadData, pWriteData inWriteData, pWriteDataType inWriteDataType)SerializableAttributeinline
SerializableAttribute(const SerializableAttribute &inOther, int inBaseOffset)SerializableAttributeinline
SetName(const char *inName)SerializableAttributeinline
WriteData(IObjectStreamOut &ioStream, const void *inObject) constSerializableAttributeinline
WriteDataType(IObjectStreamOut &ioStream) constSerializableAttributeinline
+
+ + + + diff --git a/class_serializable_attribute.html b/class_serializable_attribute.html new file mode 100644 index 000000000..61682424d --- /dev/null +++ b/class_serializable_attribute.html @@ -0,0 +1,646 @@ + + + + + + + +Jolt Physics: SerializableAttribute Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SerializableAttribute Class Reference
+
+
+ +

Attributes are members of classes that need to be serialized. + More...

+ +

#include <SerializableAttribute.h>

+ + + + + + + + + + + + + +

+Public Types

using pGetMemberPrimitiveType = const RTTI *(*)()
 @ Serialization functions
 
using pIsType = bool(*)(int inArrayDepth, EOSDataType inDataType, const char *inClassName)
 
using pReadData = bool(*)(IObjectStreamIn &ioStream, void *inObject)
 
using pWriteData = void(*)(IObjectStreamOut &ioStream, const void *inObject)
 
using pWriteDataType = void(*)(IObjectStreamOut &ioStream)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SerializableAttribute (const char *inName, uint inMemberOffset, pGetMemberPrimitiveType inGetMemberPrimitiveType, pIsType inIsType, pReadData inReadData, pWriteData inWriteData, pWriteDataType inWriteDataType)
 Constructor.
 
 SerializableAttribute (const SerializableAttribute &inOther, int inBaseOffset)
 Construct from other attribute with base class offset.
 
void SetName (const char *inName)
 Name of the attribute.
 
const char * GetName () const
 
template<class T >
T * GetMemberPointer (void *inObject) const
 Access to the memory location that contains the member.
 
template<class T >
const T * GetMemberPointer (const void *inObject) const
 
const RTTIGetMemberPrimitiveType () const
 In case this attribute contains an RTTI type, return it (note that a Array<sometype> will return the rtti of sometype)
 
bool IsType (int inArrayDepth, EOSDataType inDataType, const char *inClassName) const
 Check if this attribute is of a specific type.
 
bool ReadData (IObjectStreamIn &ioStream, void *inObject) const
 Read the data for this attribute into attribute containing class inObject.
 
void WriteData (IObjectStreamOut &ioStream, const void *inObject) const
 Write the data for this attribute from attribute containing class inObject.
 
void WriteDataType (IObjectStreamOut &ioStream) const
 Write the data type of this attribute to a stream.
 
+

Detailed Description

+

Attributes are members of classes that need to be serialized.

+

Member Typedef Documentation

+ +

◆ pGetMemberPrimitiveType

+ +
+
+ + + + +
using SerializableAttribute::pGetMemberPrimitiveType = const RTTI * (*)()
+
+ +

@ Serialization functions

+ +
+
+ +

◆ pIsType

+ +
+
+ + + + +
using SerializableAttribute::pIsType = bool (*)(int inArrayDepth, EOSDataType inDataType, const char *inClassName)
+
+ +
+
+ +

◆ pReadData

+ +
+
+ + + + +
using SerializableAttribute::pReadData = bool (*)(IObjectStreamIn &ioStream, void *inObject)
+
+ +
+
+ +

◆ pWriteData

+ +
+
+ + + + +
using SerializableAttribute::pWriteData = void (*)(IObjectStreamOut &ioStream, const void *inObject)
+
+ +
+
+ +

◆ pWriteDataType

+ +
+
+ + + + +
using SerializableAttribute::pWriteDataType = void (*)(IObjectStreamOut &ioStream)
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ SerializableAttribute() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SerializableAttribute::SerializableAttribute (const char * inName,
uint inMemberOffset,
pGetMemberPrimitiveType inGetMemberPrimitiveType,
pIsType inIsType,
pReadData inReadData,
pWriteData inWriteData,
pWriteDataType inWriteDataType 
)
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ SerializableAttribute() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
SerializableAttribute::SerializableAttribute (const SerializableAttributeinOther,
int inBaseOffset 
)
+
+inline
+
+ +

Construct from other attribute with base class offset.

+ +
+
+

Member Function Documentation

+ +

◆ GetMemberPointer() [1/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
const T * SerializableAttribute::GetMemberPointer (const void * inObject) const
+
+inline
+
+ +
+
+ +

◆ GetMemberPointer() [2/2]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
T * SerializableAttribute::GetMemberPointer (void * inObject) const
+
+inline
+
+ +

Access to the memory location that contains the member.

+ +
+
+ +

◆ GetMemberPrimitiveType()

+ +
+
+ + + + + +
+ + + + + + + +
const RTTI * SerializableAttribute::GetMemberPrimitiveType () const
+
+inline
+
+ +

In case this attribute contains an RTTI type, return it (note that a Array<sometype> will return the rtti of sometype)

+ +
+
+ +

◆ GetName()

+ +
+
+ + + + + +
+ + + + + + + +
const char * SerializableAttribute::GetName () const
+
+inline
+
+ +
+
+ +

◆ IsType()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool SerializableAttribute::IsType (int inArrayDepth,
EOSDataType inDataType,
const char * inClassName 
) const
+
+inline
+
+ +

Check if this attribute is of a specific type.

+ +
+
+ +

◆ ReadData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool SerializableAttribute::ReadData (IObjectStreamInioStream,
void * inObject 
) const
+
+inline
+
+ +

Read the data for this attribute into attribute containing class inObject.

+ +
+
+ +

◆ SetName()

+ +
+
+ + + + + +
+ + + + + + + + +
void SerializableAttribute::SetName (const char * inName)
+
+inline
+
+ +

Name of the attribute.

+ +
+
+ +

◆ WriteData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SerializableAttribute::WriteData (IObjectStreamOutioStream,
const void * inObject 
) const
+
+inline
+
+ +

Write the data for this attribute from attribute containing class inObject.

+ +
+
+ +

◆ WriteDataType()

+ +
+
+ + + + + +
+ + + + + + + + +
void SerializableAttribute::WriteDataType (IObjectStreamOutioStream) const
+
+inline
+
+ +

Write the data type of this attribute to a stream.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_serializable_attribute.js b/class_serializable_attribute.js new file mode 100644 index 000000000..93df31452 --- /dev/null +++ b/class_serializable_attribute.js @@ -0,0 +1,19 @@ +var class_serializable_attribute = +[ + [ "pGetMemberPrimitiveType", "class_serializable_attribute.html#af7f01caef8726c642aaeb8ce7016c97a", null ], + [ "pIsType", "class_serializable_attribute.html#a35e667b9f50f27293b7dd1abf0753305", null ], + [ "pReadData", "class_serializable_attribute.html#ac5151d0f316587c6baaac9a7f731861b", null ], + [ "pWriteData", "class_serializable_attribute.html#aff266618effe94c6ea33145d783337a4", null ], + [ "pWriteDataType", "class_serializable_attribute.html#a0709b27ded07a2d1baab744a317d576e", null ], + [ "SerializableAttribute", "class_serializable_attribute.html#ab8ee3ad5a95fdf86aec0422cac3b7a42", null ], + [ "SerializableAttribute", "class_serializable_attribute.html#ae8a205bb6313394469d97affd2964046", null ], + [ "GetMemberPointer", "class_serializable_attribute.html#a72008d94009acc09cec81d10486783eb", null ], + [ "GetMemberPointer", "class_serializable_attribute.html#a835cd7db4edd6bd36f2130e9498122c2", null ], + [ "GetMemberPrimitiveType", "class_serializable_attribute.html#a6738344c9c5ddbf28680db6511dda210", null ], + [ "GetName", "class_serializable_attribute.html#aeef84793af0dbf4397f0e0ca4590a39c", null ], + [ "IsType", "class_serializable_attribute.html#ab928f1de1446823484b4437a79214924", null ], + [ "ReadData", "class_serializable_attribute.html#ad8b999830598842432441df6647be298", null ], + [ "SetName", "class_serializable_attribute.html#a9ce63d609aeb2c8fcdff058957d4644f", null ], + [ "WriteData", "class_serializable_attribute.html#a2d75640f1636e85a47da938b71b3a736", null ], + [ "WriteDataType", "class_serializable_attribute.html#a30c9f23371b5552485ebf5bfea47afef", null ] +]; \ No newline at end of file diff --git a/class_serializable_object-members.html b/class_serializable_object-members.html new file mode 100644 index 000000000..9c68f9070 --- /dev/null +++ b/class_serializable_object-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SerializableObject Member List
+
+
+ +

This is the complete list of members for SerializableObject, including all inherited members.

+ + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_serializable_object.html b/class_serializable_object.html new file mode 100644 index 000000000..e8fd0318f --- /dev/null +++ b/class_serializable_object.html @@ -0,0 +1,197 @@ + + + + + + + +Jolt Physics: SerializableObject Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SerializableObject Class Reference
+
+
+ +

#include <SerializableObject.h>

+
+Inheritance diagram for SerializableObject:
+
+
+ + +NonCopyable +ConstraintSettings +GroupFilter +PathConstraintPath +PhysicsMaterial +ShapeSettings +VehicleControllerSettings +WheelSettings +TwoBodyConstraintSettings +VehicleConstraintSettings +GroupFilterTable +PathConstraintPathHermite +PhysicsMaterialSimple +CompoundShapeSettings +ConvexShapeSettings +DecoratedShapeSettings +HeightFieldShapeSettings +MeshShapeSettings +PlaneShapeSettings +TrackedVehicleControllerSettings +WheeledVehicleControllerSettings +WheelSettingsTV +WheelSettingsWV + +
+ + + + + + + + + + + + +

+Public Member Functions

virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Classes must be derived from SerializableObject if you want to be able to save pointers or reference counting pointers to objects of this or derived classes. The type will automatically be determined during serialization and upon deserialization it will be restored correctly.

+

Constructor & Destructor Documentation

+ +

◆ ~SerializableObject()

+ +
+
+ + + + + +
+ + + + + + + +
virtual SerializableObject::~SerializableObject ()
+
+virtualdefault
+
+ +

Constructor.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_serializable_object.js b/class_serializable_object.js new file mode 100644 index 000000000..cbf6f1efc --- /dev/null +++ b/class_serializable_object.js @@ -0,0 +1,4 @@ +var class_serializable_object = +[ + [ "~SerializableObject", "class_serializable_object.html#afad98c73b77e9cef11cf5083a5866d49", null ] +]; \ No newline at end of file diff --git a/class_serializable_object.png b/class_serializable_object.png new file mode 100644 index 000000000..353bb504e Binary files /dev/null and b/class_serializable_object.png differ diff --git a/class_shape-members.html b/class_shape-members.html new file mode 100644 index 000000000..fbd39c19e --- /dev/null +++ b/class_shape-members.html @@ -0,0 +1,188 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Shape Member List
+
+
+ +

This is the complete list of members for Shape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const =0Shapepure virtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0Shapepure virtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0Shapepure virtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const =0Shapepure virtual
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const =0Shapepure virtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) constShapeinlinevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetCenterOfMass() constShapeinlinevirtual
GetInnerRadius() const =0Shapepure virtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const =0Shapepure virtual
GetMassProperties() const =0Shapepure virtual
GetMaterial(const SubShapeID &inSubShapeID) const =0Shapepure virtual
GetRefCount() constRefTarget< Shape >inline
GetStats() const =0Shapepure virtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const =0Shapepure virtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) constShapeinlinevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const =0Shapepure virtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const =0Shapepure virtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const =0Shapepure virtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const =0Shapepure virtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) constShapevirtual
MakeScaleValid(Vec3Arg inScale) constShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() constShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream)Shapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)Shapeinlinevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) constShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetEmbedded() constRefTarget< Shape >inline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_shape.html b/class_shape.html new file mode 100644 index 000000000..9a85e4591 --- /dev/null +++ b/class_shape.html @@ -0,0 +1,2535 @@ + + + + + + + +Jolt Physics: Shape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Shape Class Referenceabstract
+
+
+ +

Base class for all shapes (collision volume of a body). Defines a virtual interface for collision detection. + More...

+ +

#include <Shape.h>

+
+Inheritance diagram for Shape:
+
+
+ + +RefTarget< Shape > +NonCopyable +CompoundShape +ConvexShape +DecoratedShape +HeightFieldShape +MeshShape +PlaneShape +SoftBodyShape +MutableCompoundShape +StaticCompoundShape +BoxShape +CapsuleShape +ConvexHullShape +CylinderShape +SphereShape +TaperedCapsuleShape +TaperedCylinderShape +TriangleShape +OffsetCenterOfMassShape +RotatedTranslatedShape +ScaledShape + +
+ + + + + + + + +

+Classes

struct  GetTrianglesContext
 An opaque buffer that holds shape specific information during GetTrianglesStart/Next. More...
 
struct  Stats
 Class that holds information about the shape that can be used for logging / data collection purposes. More...
 
+ + + + + + + + +

+Public Types

using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual bool MustBeStatic () const
 Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.
 
virtual Vec3 GetCenterOfMass () const
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetLocalBounds () const =0
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual uint GetSubShapeIDBitsRecursive () const =0
 Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual float GetInnerRadius () const =0
 
virtual MassProperties GetMassProperties () const =0
 Calculate the mass and inertia of this shape.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const =0
 Get the material assigned to a particular sub shape ID.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const =0
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const =0
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const =0
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const =0
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const =0
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const =0
 
virtual Stats GetStats () const =0
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual float GetVolume () const =0
 
virtual bool IsValidScale (Vec3Arg inScale) const
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + +

+Static Public Attributes

static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream)
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + +

+Static Protected Member Functions

static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Binary serialization of the shape. Note that this saves the 'cooked' shape in a format which will not be backwards compatible for newer library versions.

In this case you need to recreate the shape from the ShapeSettings object and save it again. The user is expected to call SaveBinaryState followed by SaveMaterialState and SaveSubShapeState. The stream should be stored as is and the material and shape list should be saved using the applications own serialization system (e.g. by assigning an ID to each pointer). When restoring data, call sRestoreFromBinaryState to get the shape and then call RestoreMaterialState and RestoreSubShapeState to restore the pointers to the external objects. Alternatively you can use SaveWithChildren and sRestoreWithChildren to save and restore the shape and all its child shapes and materials in a single stream.

+
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
virtual void SaveBinaryState (StreamOut &inStream) const
 Saves the contents of the shape in binary form to inStream.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Base class for all shapes (collision volume of a body). Defines a virtual interface for collision detection.

+

Member Typedef Documentation

+ +

◆ IDToMaterialMap

+ + + +

◆ IDToShapeMap

+ + + +

◆ MaterialToIDMap

+ + + +

◆ ShapeResult

+ +
+
+ +
+
+ +

◆ ShapeToIDMap

+ + + +

◆ SupportingFace

+ +
+
+ + + + +
using Shape::SupportingFace = StaticArray<Vec3, 32>
+
+ +

Type definition for a supporting face.

+ +
+
+ +

◆ VisitedShapes

+ +
+
+ + + + +
using Shape::VisitedShapes = UnorderedSet<const Shape *>
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Shape() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Shape::Shape (EShapeType inType,
EShapeSubType inSubType 
)
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ Shape() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Shape::Shape (EShapeType inType,
EShapeSubType inSubType,
const ShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+inline
+
+ +
+
+ +

◆ ~Shape()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Shape::~Shape ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void Shape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+pure virtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Implemented in BoxShape, CapsuleShape, ConvexHullShape, ConvexShape, CylinderShape, HeightFieldShape, MeshShape, MutableCompoundShape, OffsetCenterOfMassShape, PlaneShape, RotatedTranslatedShape, ScaledShape, SphereShape, StaticCompoundShape, TriangleShape, and SoftBodyShape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool Shape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+pure virtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Implemented in BoxShape, CapsuleShape, CapsuleShape, ConvexHullShape, ConvexShape, CylinderShape, CylinderShape, HeightFieldShape, MeshShape, MutableCompoundShape, OffsetCenterOfMassShape, PlaneShape, RotatedTranslatedShape, ScaledShape, SphereShape, StaticCompoundShape, TriangleShape, and SoftBodyShape.

+ +
+
+ +

◆ CollectTransformedShapes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void Shape::CollectTransformedShapes (const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale,
const SubShapeIDCreatorinSubShapeIDCreator,
TransformedShapeCollectorioCollector,
const ShapeFilterinShapeFilter 
) const
+
+virtual
+
+

Collect the leaf transformed shapes of all leaf shapes of this shape. inBox is the world space axis aligned box which leaf shapes should collide with. inPositionCOM/inRotation/inScale describes the transform of this shape. inSubShapeIDCeator represents the current sub shape ID of this shape.

+ +

Reimplemented in MutableCompoundShape, OffsetCenterOfMassShape, RotatedTranslatedShape, ScaledShape, and StaticCompoundShape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void Shape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+pure virtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Implemented in BoxShape, CapsuleShape, ConvexHullShape, ConvexShape, CylinderShape, HeightFieldShape, MeshShape, MutableCompoundShape, OffsetCenterOfMassShape, PlaneShape, RotatedTranslatedShape, ScaledShape, SphereShape, StaticCompoundShape, TaperedCylinderShape, TriangleShape, and SoftBodyShape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void Shape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+pure virtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implemented in BoxShape, CapsuleShape, CompoundShape, ConvexHullShape, CylinderShape, HeightFieldShape, MeshShape, OffsetCenterOfMassShape, PlaneShape, RotatedTranslatedShape, ScaledShape, SphereShape, TaperedCapsuleShape, TaperedCylinderShape, TriangleShape, and SoftBodyShape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void Shape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+pure virtual
+
+
+ +

◆ DrawGetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void Shape::DrawGetSupportFunction (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inDrawSupportDirection 
) const
+
+inlinevirtual
+
+ +

Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)

+ +

Reimplemented in CompoundShape, ConvexShape, OffsetCenterOfMassShape, RotatedTranslatedShape, and ScaledShape.

+ +
+
+ +

◆ DrawGetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void Shape::DrawGetSupportingFace (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inlinevirtual
+
+ +

Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)

+ +

Reimplemented in CompoundShape, ConvexShape, OffsetCenterOfMassShape, RotatedTranslatedShape, and ScaledShape.

+ +
+
+ +

◆ GetCenterOfMass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vec3 Shape::GetCenterOfMass () const
+
+inlinevirtual
+
+ +

All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.

+ +

Reimplemented in CompoundShape, ConvexHullShape, DecoratedShape, OffsetCenterOfMassShape, RotatedTranslatedShape, ScaledShape, TaperedCapsuleShape, TaperedCylinderShape, and SoftBodyShape.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float Shape::GetInnerRadius () const
+
+pure virtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implemented in BoxShape, CapsuleShape, CompoundShape, ConvexHullShape, CylinderShape, HeightFieldShape, MeshShape, OffsetCenterOfMassShape, PlaneShape, RotatedTranslatedShape, ScaledShape, SphereShape, TaperedCapsuleShape, TaperedCylinderShape, TriangleShape, and SoftBodyShape.

+ +
+
+ +

◆ GetLeafShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
const Shape * Shape::GetLeafShape (const SubShapeIDinSubShapeID,
SubShapeIDoutRemainder 
) const
+
+virtual
+
+

Get the leaf shape for a particular sub shape ID.

Parameters
+ + + +
inSubShapeIDThe full sub shape ID that indicates the path to the leaf shape
outRemainderWhat remains of the sub shape ID after removing the path to the leaf shape (could e.g. refer to a triangle within a MeshShape)
+
+
+
Returns
The shape or null if the sub shape ID is invalid
+ +

Reimplemented in CompoundShape, and DecoratedShape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
virtual AABox Shape::GetLocalBounds () const
+
+pure virtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implemented in BoxShape, CapsuleShape, CompoundShape, ConvexHullShape, CylinderShape, HeightFieldShape, MeshShape, OffsetCenterOfMassShape, PlaneShape, RotatedTranslatedShape, ScaledShape, SphereShape, TaperedCapsuleShape, TaperedCylinderShape, TriangleShape, and SoftBodyShape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
virtual MassProperties Shape::GetMassProperties () const
+
+pure virtual
+
+
+ +

◆ GetMaterial()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual const PhysicsMaterial * Shape::GetMaterial (const SubShapeIDinSubShapeID) const
+
+pure virtual
+
+ +

Get the material assigned to a particular sub shape ID.

+ +

Implemented in CompoundShape, ConvexShape, DecoratedShape, HeightFieldShape, MeshShape, PlaneShape, and SoftBodyShape.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats Shape::GetStats () const
+
+pure virtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implemented in BoxShape, CapsuleShape, ConvexHullShape, CylinderShape, HeightFieldShape, MeshShape, MutableCompoundShape, OffsetCenterOfMassShape, PlaneShape, RotatedTranslatedShape, ScaledShape, SphereShape, StaticCompoundShape, TaperedCapsuleShape, TaperedCylinderShape, TriangleShape, and SoftBodyShape.

+ +
+
+ +

◆ GetStatsRecursive()

+ +
+
+ + + + + +
+ + + + + + + + +
Shape::Stats Shape::GetStatsRecursive (VisitedShapesioVisitedShapes) const
+
+virtual
+
+ +

Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.

+

Get the combined stats of this shape and its children.

Parameters
+ + +
ioVisitedShapesis used to track which shapes have already been visited, to avoid calculating the wrong memory size.
+
+
+ +

Reimplemented in CompoundShape, and DecoratedShape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void Shape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3outCenterOfBuoyancy,
RVec3Arg inBaseOffset 
) const
+
+pure virtual
+
+

Gets the properties needed to do buoyancy calculations for a body using this shape

Parameters
+ + + + + + + + +
inCenterOfMassTransformTransform that takes this shape (centered around center of mass) to world space (or a desired other space)
inScaleScale in local space of the shape (scales relative to its center of mass)
inSurfaceThe surface plane of the liquid relative to inCenterOfMassTransform
outTotalVolumeOn return this contains the total volume of the shape
outSubmergedVolumeOn return this contains the submerged volume of the shape
outCenterOfBuoyancyOn return this contains the world space center of mass of the submerged volume
inBaseOffsetThe offset to transform inCenterOfMassTransform to world space (in double precision mode this can be used to shift the whole operation closer to the origin). Only used for debug drawing.
+
+
+ +

Implemented in SoftBodyShape.

+ +
+
+ +

◆ GetSubShapeIDBitsRecursive()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint Shape::GetSubShapeIDBitsRecursive () const
+
+pure virtual
+
+ +

Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.

+ +

Implemented in CompoundShape, ConvexShape, DecoratedShape, HeightFieldShape, MeshShape, PlaneShape, and SoftBodyShape.

+ +
+
+ +

◆ GetSubShapeTransformedShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TransformedShape Shape::GetSubShapeTransformedShape (const SubShapeIDinSubShapeID,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale,
SubShapeIDoutRemainder 
) const
+
+virtual
+
+

Get the direct child sub shape and its transform for a sub shape ID.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID that indicates the path to the leaf shape
inPositionCOMThe position of the center of mass of this shape
inRotationThe orientation of this shape
inScaleScale in local space of the shape (scales relative to its center of mass)
outRemainderThe remainder of the sub shape ID after removing the sub shape
+
+
+
Returns
Direct child sub shape and its transform, note that the body ID and sub shape ID will be invalid
+ +

Reimplemented in CompoundShape, OffsetCenterOfMassShape, RotatedTranslatedShape, and ScaledShape.

+ +
+
+ +

◆ GetSubShapeUserData()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual uint64 Shape::GetSubShapeUserData (const SubShapeIDinSubShapeID) const
+
+inlinevirtual
+
+ +

Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.

+ +

Reimplemented in CompoundShape, and DecoratedShape.

+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
EShapeSubType Shape::GetSubType () const
+
+inline
+
+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void Shape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+inlinevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented in BoxShape, CapsuleShape, CompoundShape, ConvexHullShape, CylinderShape, DecoratedShape, HeightFieldShape, MeshShape, OffsetCenterOfMassShape, PlaneShape, RotatedTranslatedShape, ScaledShape, SphereShape, TaperedCapsuleShape, TaperedCylinderShape, TriangleShape, and SoftBodyShape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual Vec3 Shape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+pure virtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implemented in BoxShape, CapsuleShape, CompoundShape, ConvexHullShape, CylinderShape, HeightFieldShape, MeshShape, OffsetCenterOfMassShape, PlaneShape, RotatedTranslatedShape, ScaledShape, SphereShape, TaperedCapsuleShape, TaperedCylinderShape, TriangleShape, and SoftBodyShape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual int Shape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+pure virtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Implemented in BoxShape, CapsuleShape, CompoundShape, ConvexHullShape, ConvexShape, CylinderShape, HeightFieldShape, MeshShape, OffsetCenterOfMassShape, PlaneShape, RotatedTranslatedShape, ScaledShape, SphereShape, TaperedCylinderShape, TriangleShape, and SoftBodyShape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void Shape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+pure virtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Implemented in BoxShape, CapsuleShape, CompoundShape, ConvexHullShape, ConvexShape, CylinderShape, HeightFieldShape, MeshShape, OffsetCenterOfMassShape, PlaneShape, RotatedTranslatedShape, ScaledShape, SphereShape, TaperedCylinderShape, TriangleShape, and SoftBodyShape.

+ +
+
+ +

◆ GetType()

+ +
+
+ + + + + +
+ + + + + + + +
EShapeType Shape::GetType () const
+
+inline
+
+ +

Get type.

+ +
+
+ +

◆ GetUserData()

+ +
+
+ + + + + +
+ + + + + + + +
uint64 Shape::GetUserData () const
+
+inline
+
+ +

User data (to be used freely by the application)

+ +
+
+ +

◆ GetVolume()

+ + + +

◆ GetWorldSpaceBounds() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox Shape::GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inline
+
+ +

Get world space bounds including convex radius.

+ +
+
+ +

◆ GetWorldSpaceBounds() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual AABox Shape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inlinevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented in CapsuleShape, CompoundShape, OffsetCenterOfMassShape, RotatedTranslatedShape, ScaledShape, SphereShape, TaperedCapsuleShape, TriangleShape, CapsuleShape, CompoundShape, OffsetCenterOfMassShape, RotatedTranslatedShape, ScaledShape, SphereShape, TaperedCapsuleShape, and TriangleShape.

+ +
+
+ +

◆ IsValidScale()

+ +
+
+ + + + + +
+ + + + + + + + +
bool Shape::IsValidScale (Vec3Arg inScale) const
+
+virtual
+
+

Test if inScale is a valid scale for this shape. Some shapes can only be scaled uniformly, compound shapes cannot handle shapes being rotated and scaled (this would cause shearing), scale can never be zero. When the scale is invalid, the function will return false.

+

Here's a list of supported scales:

    +
  • SphereShape: Scale must be uniform (signs of scale are ignored).
  • +
  • BoxShape: Any scale supported (signs of scale are ignored).
  • +
  • TriangleShape: Any scale supported when convex radius is zero, otherwise only uniform scale supported.
  • +
  • CapsuleShape: Scale must be uniform (signs of scale are ignored).
  • +
  • TaperedCapsuleShape: Scale must be uniform (sign of Y scale can be used to flip the capsule).
  • +
  • CylinderShape: Scale must be uniform in XZ plane, Y can scale independently (signs of scale are ignored).
  • +
  • RotatedTranslatedShape: Scale must not cause shear in the child shape.
  • +
  • CompoundShape: Scale must not cause shear in any of the child shapes.
  • +
+ +

Reimplemented in CapsuleShape, CompoundShape, CylinderShape, DecoratedShape, RotatedTranslatedShape, ScaledShape, SphereShape, TaperedCapsuleShape, TaperedCylinderShape, and TriangleShape.

+ +
+
+ +

◆ MakeScaleValid()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 Shape::MakeScaleValid (Vec3Arg inScale) const
+
+virtual
+
+

This function will make sure that if you wrap this shape in a ScaledShape that the scale is valid. Note that this involves discarding components of the scale that are invalid, so the resulting scaled shape may be different than the requested scale. Compare the return value of this function with the scale you passed in to detect major inconsistencies and possibly warn the user.

Parameters
+ + +
inScaleLocal space scale for this shape.
+
+
+
Returns
Scale that can be used to wrap this shape in a ScaledShape. IsValidScale will return true for this scale.
+ +

Reimplemented in CapsuleShape, CompoundShape, CylinderShape, DecoratedShape, RotatedTranslatedShape, ScaledShape, SphereShape, TaperedCapsuleShape, TaperedCylinderShape, and TriangleShape.

+ +
+
+ +

◆ MustBeStatic()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool Shape::MustBeStatic () const
+
+inlinevirtual
+
+ +

Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.

+ +

Reimplemented in CompoundShape, DecoratedShape, HeightFieldShape, MeshShape, PlaneShape, and SoftBodyShape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void Shape::RestoreBinaryState (StreamIninStream)
+
+protectedvirtual
+
+
+ +

◆ RestoreMaterialState()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void Shape::RestoreMaterialState (const PhysicsMaterialRefCinMaterials,
uint inNumMaterials 
)
+
+inlinevirtual
+
+ +

Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.

+ +

Reimplemented in ConvexShape, HeightFieldShape, MeshShape, and PlaneShape.

+ +
+
+ +

◆ RestoreSubShapeState()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void Shape::RestoreSubShapeState (const ShapeRefCinSubShapes,
uint inNumShapes 
)
+
+inlinevirtual
+
+ +

Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.

+ +

Reimplemented in CompoundShape, and DecoratedShape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void Shape::SaveBinaryState (StreamOutinStream) const
+
+virtual
+
+
+ +

◆ SaveMaterialState()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void Shape::SaveMaterialState (PhysicsMaterialListoutMaterials) const
+
+inlinevirtual
+
+ +

Outputs the material references that this shape has to outMaterials.

+ +
+
+ +

◆ SaveSubShapeState()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void Shape::SaveSubShapeState (ShapeListoutSubShapes) const
+
+inlinevirtual
+
+ +

Outputs the shape references that this shape has to outSubShapes.

+ +

Reimplemented in CompoundShape, and DecoratedShape.

+ +
+
+ +

◆ SaveWithChildren()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Shape::SaveWithChildren (StreamOutinStream,
ShapeToIDMapioShapeMap,
MaterialToIDMapioMaterialMap 
) const
+
+ +

Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.

+ +
+
+ +

◆ ScaleShape()

+ +
+
+ + + + + + + + +
Shape::ShapeResult Shape::ScaleShape (Vec3Arg inScale) const
+
+

Scale this shape. Note that not all shapes support all scales, this will return a shape that matches the scale as accurately as possible. See Shape::IsValidScale for more information.

Parameters
+ + +
inScaleThe scale to use for this shape (note: this scale is applied to the entire shape in the space it was created, most other functions apply the scale in the space of the leaf shapes and from the center of mass!)
+
+
+ +
+
+ +

◆ sCollidePointUsingRayCast()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void Shape::sCollidePointUsingRayCast (const ShapeinShape,
Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter 
)
+
+staticprotected
+
+ +

A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.

+ +
+
+ +

◆ SetUserData()

+ +
+
+ + + + + +
+ + + + + + + + +
void Shape::SetUserData (uint64 inUserData)
+
+inline
+
+ +
+
+ +

◆ sRestoreFromBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
Shape::ShapeResult Shape::sRestoreFromBinaryState (StreamIninStream)
+
+static
+
+ +

Creates a Shape of the correct type and restores its contents from the binary stream inStream.

+ +
+
+ +

◆ sRestoreWithChildren()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Shape::ShapeResult Shape::sRestoreWithChildren (StreamIninStream,
IDToShapeMapioShapeMap,
IDToMaterialMapioMaterialMap 
)
+
+static
+
+ +

Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.

+ +
+
+ +

◆ TransformShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Shape::TransformShape (Mat44Arg inCenterOfMassTransform,
TransformedShapeCollectorioCollector 
) const
+
+virtual
+
+

Transforms this shape and all of its children with inTransform, resulting shape(s) are passed to ioCollector. Note that not all shapes support all transforms (especially true for scaling), the resulting shape will try to match the transform as accurately as possible.

Parameters
+ + + +
inCenterOfMassTransformThe transform (rotation, translation, scale) that the center of mass of the shape should get
ioCollectorThe transformed shapes will be passed to this collector
+
+
+ +

Reimplemented in CompoundShape, OffsetCenterOfMassShape, RotatedTranslatedShape, and ScaledShape.

+ +
+
+

Member Data Documentation

+ +

◆ cGetTrianglesMinTrianglesRequested

+ +
+
+ + + + + +
+ + + + +
constexpr int Shape::cGetTrianglesMinTrianglesRequested = 32
+
+staticconstexpr
+
+ +

This is the minimum amount of triangles that should be requested through GetTrianglesNext.

+ +
+
+ +

◆ sDrawSubmergedVolumes

+ +
+
+ + + + + +
+ + + + +
bool Shape::sDrawSubmergedVolumes = false
+
+static
+
+ +

Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_shape.js b/class_shape.js new file mode 100644 index 000000000..0de84dd4b --- /dev/null +++ b/class_shape.js @@ -0,0 +1,58 @@ +var class_shape = +[ + [ "GetTrianglesContext", "struct_shape_1_1_get_triangles_context.html", "struct_shape_1_1_get_triangles_context" ], + [ "Stats", "struct_shape_1_1_stats.html", "struct_shape_1_1_stats" ], + [ "IDToMaterialMap", "class_shape.html#a045656fa1693fed85254f1dd3975f5da", null ], + [ "IDToShapeMap", "class_shape.html#a06ba83cf87213a408c508acbc786d2fe", null ], + [ "MaterialToIDMap", "class_shape.html#a78cea5d82e89748412a5dca2f1352de1", null ], + [ "ShapeResult", "class_shape.html#a11c1ce0984dccb67176566d78331375e", null ], + [ "ShapeToIDMap", "class_shape.html#a5944ae14aeacc70bb42a38d7c3a31220", null ], + [ "SupportingFace", "class_shape.html#a95d3060318d33c1ef314c5b856a70cb8", null ], + [ "VisitedShapes", "class_shape.html#afff02f0117147a8f7eb43e9c5a50e969", null ], + [ "Shape", "class_shape.html#a23734c9a65732276c51b77ba8542291d", null ], + [ "Shape", "class_shape.html#a5c9ae4999b05e4334aede38781a536ad", null ], + [ "~Shape", "class_shape.html#ac8ad2fd02e1e94beeb98e65ab795cd56", null ], + [ "CastRay", "class_shape.html#a54b33219a3685aa4b964f6b69a2cfa7d", null ], + [ "CastRay", "class_shape.html#a955ec1953bc94c6c910dc4dc16114732", null ], + [ "CollectTransformedShapes", "class_shape.html#a3ed865e7eb30221b418cfd61d1430173", null ], + [ "CollidePoint", "class_shape.html#af6e77d16736434769d72152bf059a126", null ], + [ "CollideSoftBodyVertices", "class_shape.html#ac351f347171376cd988ec415748a78ff", null ], + [ "Draw", "class_shape.html#af00149d141125f15e56d9aa82f07b6d4", null ], + [ "DrawGetSupportFunction", "class_shape.html#aba9738d09ec43b40f10e32d1793b7ef5", null ], + [ "DrawGetSupportingFace", "class_shape.html#a4feaa49afdf6c19764d939dc0bb2698d", null ], + [ "GetCenterOfMass", "class_shape.html#a7e34b0626a40c31db0b2a761922adb1a", null ], + [ "GetInnerRadius", "class_shape.html#a249fa4e0fc7fdd25071be9f45db6a25a", null ], + [ "GetLeafShape", "class_shape.html#a11453c55f44f37cf405eee79afdbfe00", null ], + [ "GetLocalBounds", "class_shape.html#a30ea165596e01df087f6e4980ed6b0cb", null ], + [ "GetMassProperties", "class_shape.html#a00d0953c120d9e175960c9e6629f108f", null ], + [ "GetMaterial", "class_shape.html#a7f92a050d292158b83ef016eb5d3f168", null ], + [ "GetStats", "class_shape.html#a87ae161e649ab6af75a60fe130dd195b", null ], + [ "GetStatsRecursive", "class_shape.html#ae90566019bdce3edf3be921044b38ea6", null ], + [ "GetSubmergedVolume", "class_shape.html#a99f077aa0ffef0d518ced9b69ca21d18", null ], + [ "GetSubShapeIDBitsRecursive", "class_shape.html#aee463ecaa01e871524f5396871b5e8c6", null ], + [ "GetSubShapeTransformedShape", "class_shape.html#acf8d5f8e430acc87c88fbd558407efc7", null ], + [ "GetSubShapeUserData", "class_shape.html#a29de5bb2f770d7e521f0d939436faa1b", null ], + [ "GetSubType", "class_shape.html#a864cef23ca0a3add699adea26ed1fef7", null ], + [ "GetSupportingFace", "class_shape.html#a4f6591e1a1329278568bc99b035c9928", null ], + [ "GetSurfaceNormal", "class_shape.html#adc7c6aeed1cde2ae1be099a4a5a4bd0c", null ], + [ "GetTrianglesNext", "class_shape.html#a4b6ba637f676d38c24bdb5da9a2f345f", null ], + [ "GetTrianglesStart", "class_shape.html#a703f5419cf3f3cb216cbe0433ce1a625", null ], + [ "GetType", "class_shape.html#a35b8f1a8a02f90d3edc02db22f03932a", null ], + [ "GetUserData", "class_shape.html#a7146c658ddb5c7b0fec4489535ca664f", null ], + [ "GetVolume", "class_shape.html#a2b07e3d1b554ff77d18e86af7cd451b7", null ], + [ "GetWorldSpaceBounds", "class_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b", null ], + [ "GetWorldSpaceBounds", "class_shape.html#a9f8379fa338802436700b86a07fab3be", null ], + [ "IsValidScale", "class_shape.html#a59f32110193561295a7d721909e07adc", null ], + [ "MakeScaleValid", "class_shape.html#a92b9228a95f194e9e1e2962bed861e22", null ], + [ "MustBeStatic", "class_shape.html#a6abbf113475435c0c694d3199e352c3a", null ], + [ "RestoreBinaryState", "class_shape.html#a98a42fc4c28896d87ac4287c38f213ad", null ], + [ "RestoreMaterialState", "class_shape.html#a6e823e7198f22ec824cacf9998d9904c", null ], + [ "RestoreSubShapeState", "class_shape.html#ab4de39f5e4972919f1211ec73520b1d8", null ], + [ "SaveBinaryState", "class_shape.html#a0035a8aa07e9e071f6a64edb45146363", null ], + [ "SaveMaterialState", "class_shape.html#a6ff903d54f10469f51e1862b32406845", null ], + [ "SaveSubShapeState", "class_shape.html#a09215d250a425cca2e9b4bed32761bc4", null ], + [ "SaveWithChildren", "class_shape.html#a29511616de01507e714e8187686bc9f1", null ], + [ "ScaleShape", "class_shape.html#ae4a0954ec23eabd48f0961b16eff750a", null ], + [ "SetUserData", "class_shape.html#abe1ea0795fb422387c3e41f260caea1c", null ], + [ "TransformShape", "class_shape.html#a4b4b180a41ffdf7369f79706b0e27570", null ] +]; \ No newline at end of file diff --git a/class_shape.png b/class_shape.png new file mode 100644 index 000000000..c4dce3915 Binary files /dev/null and b/class_shape.png differ diff --git a/class_shape_cast_result-members.html b/class_shape_cast_result-members.html new file mode 100644 index 000000000..3108fc5d3 --- /dev/null +++ b/class_shape_cast_result-members.html @@ -0,0 +1,135 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShapeCastResult Member List
+
+
+ +

This is the complete list of members for ShapeCastResult, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
CollideShapeResult()=defaultCollideShapeResult
CollideShapeResult(Vec3Arg inContactPointOn1, Vec3Arg inContactPointOn2, Vec3Arg inPenetrationAxis, float inPenetrationDepth, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2)CollideShapeResultinline
Face typedefCollideShapeResult
GetEarlyOutFraction() constShapeCastResultinline
mBodyID2CollideShapeResult
mContactPointOn1CollideShapeResult
mContactPointOn2CollideShapeResult
mFractionShapeCastResult
mIsBackFaceHitShapeCastResult
mPenetrationAxisCollideShapeResult
mPenetrationDepthCollideShapeResult
mShape1FaceCollideShapeResult
mShape2FaceCollideShapeResult
mSubShapeID1CollideShapeResult
mSubShapeID2CollideShapeResult
Reversed(Vec3Arg inWorldSpaceCastDirection) constShapeCastResultinline
CollideShapeResult::Reversed() constCollideShapeResultinline
ShapeCastResult()=defaultShapeCastResult
ShapeCastResult(float inFraction, Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inContactNormalOrPenetrationDepth, bool inBackFaceHit, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2)ShapeCastResultinline
+
+ + + + diff --git a/class_shape_cast_result.html b/class_shape_cast_result.html new file mode 100644 index 000000000..272e179a1 --- /dev/null +++ b/class_shape_cast_result.html @@ -0,0 +1,413 @@ + + + + + + + +Jolt Physics: ShapeCastResult Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ShapeCastResult Class Reference
+
+
+ +

Result of a shape cast test. + More...

+ +

#include <ShapeCast.h>

+
+Inheritance diagram for ShapeCastResult:
+
+
+ + +CollideShapeResult + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE ShapeCastResult ()=default
 Default constructor.
 
 ShapeCastResult (float inFraction, Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inContactNormalOrPenetrationDepth, bool inBackFaceHit, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2)
 
float GetEarlyOutFraction () const
 Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'. For rays/cast shapes we can just use the collision fraction. The fraction and penetration depth are combined in such a way that deeper hits at fraction 0 go first.
 
ShapeCastResult Reversed (Vec3Arg inWorldSpaceCastDirection) const
 
- Public Member Functions inherited from CollideShapeResult
JPH_OVERRIDE_NEW_DELETE CollideShapeResult ()=default
 Default constructor.
 
 CollideShapeResult (Vec3Arg inContactPointOn1, Vec3Arg inContactPointOn2, Vec3Arg inPenetrationAxis, float inPenetrationDepth, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2)
 Constructor.
 
float GetEarlyOutFraction () const
 Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'. We use -penetration depth to get the hit with the biggest penetration depth.
 
CollideShapeResult Reversed () const
 Reverses the hit result, swapping contact point 1 with contact point 2 etc.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

float mFraction
 This is the fraction where the shape hit the other shape: CenterOfMassOnHit = Start + value * (End - Start)
 
bool mIsBackFaceHit
 True if the shape was hit from the back side.
 
- Public Attributes inherited from CollideShapeResult
Vec3 mContactPointOn1
 Contact point on the surface of shape 1 (in world space or relative to base offset)
 
Vec3 mContactPointOn2
 Contact point on the surface of shape 2 (in world space or relative to base offset). If the penetration depth is 0, this will be the same as mContactPointOn1.
 
Vec3 mPenetrationAxis
 Direction to move shape 2 out of collision along the shortest path (magnitude is meaningless, in world space). You can use -mPenetrationAxis.Normalized() as contact normal.
 
float mPenetrationDepth
 Penetration depth (move shape 2 by this distance to resolve the collision)
 
SubShapeID mSubShapeID1
 Sub shape ID that identifies the face on shape 1.
 
SubShapeID mSubShapeID2
 Sub shape ID that identifies the face on shape 2.
 
BodyID mBodyID2
 BodyID to which shape 2 belongs to.
 
Face mShape1Face
 Colliding face on shape 1 (optional result, in world space or relative to base offset)
 
Face mShape2Face
 Colliding face on shape 2 (optional result, in world space or relative to base offset)
 
+ + + + +

+Additional Inherited Members

- Public Types inherited from CollideShapeResult
using Face = StaticArray< Vec3, 32 >
 
+

Detailed Description

+

Result of a shape cast test.

+

Constructor & Destructor Documentation

+ +

◆ ShapeCastResult() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE ShapeCastResult::ShapeCastResult ()
+
+default
+
+ +

Default constructor.

+ +
+
+ +

◆ ShapeCastResult() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ShapeCastResult::ShapeCastResult (float inFraction,
Vec3Arg inContactPoint1,
Vec3Arg inContactPoint2,
Vec3Arg inContactNormalOrPenetrationDepth,
bool inBackFaceHit,
const SubShapeIDinSubShapeID1,
const SubShapeIDinSubShapeID2,
const BodyIDinBodyID2 
)
+
+inline
+
+

Constructor

Parameters
+ + + + + + + + + +
inFractionFraction at which the cast hit
inContactPoint1Contact point on shape 1
inContactPoint2Contact point on shape 2
inContactNormalOrPenetrationDepthContact normal pointing from shape 1 to 2 or penetration depth vector when the objects are penetrating (also from 1 to 2)
inBackFaceHitIf this hit was a back face hit
inSubShapeID1Sub shape id for shape 1
inSubShapeID2Sub shape id for shape 2
inBodyID2BodyID that was hit
+
+
+ +
+
+

Member Function Documentation

+ +

◆ GetEarlyOutFraction()

+ +
+
+ + + + + +
+ + + + + + + +
float ShapeCastResult::GetEarlyOutFraction () const
+
+inline
+
+ +

Function required by the CollisionCollector. A smaller fraction is considered to be a 'better hit'. For rays/cast shapes we can just use the collision fraction. The fraction and penetration depth are combined in such a way that deeper hits at fraction 0 go first.

+ +
+
+ +

◆ Reversed()

+ +
+
+ + + + + +
+ + + + + + + + +
ShapeCastResult ShapeCastResult::Reversed (Vec3Arg inWorldSpaceCastDirection) const
+
+inline
+
+

Reverses the hit result, swapping contact point 1 with contact point 2 etc.

Parameters
+ + +
inWorldSpaceCastDirectionDirection of the shape cast in world space
+
+
+ +
+
+

Member Data Documentation

+ +

◆ mFraction

+ +
+
+ + + + +
float ShapeCastResult::mFraction
+
+ +

This is the fraction where the shape hit the other shape: CenterOfMassOnHit = Start + value * (End - Start)

+ +
+
+ +

◆ mIsBackFaceHit

+ +
+
+ + + + +
bool ShapeCastResult::mIsBackFaceHit
+
+ +

True if the shape was hit from the back side.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_shape_cast_result.js b/class_shape_cast_result.js new file mode 100644 index 000000000..33323d880 --- /dev/null +++ b/class_shape_cast_result.js @@ -0,0 +1,9 @@ +var class_shape_cast_result = +[ + [ "ShapeCastResult", "class_shape_cast_result.html#a79089f4b310168c5bfa51cc0bcf134dd", null ], + [ "ShapeCastResult", "class_shape_cast_result.html#afb01699f4368bbbeec678f0c3c21108d", null ], + [ "GetEarlyOutFraction", "class_shape_cast_result.html#a0b91d796ee4e127cac91c9d82f292e57", null ], + [ "Reversed", "class_shape_cast_result.html#ab16c921cd28c80c7acbf8005b778965f", null ], + [ "mFraction", "class_shape_cast_result.html#a8c1f5167202e5071cca22085350b0471", null ], + [ "mIsBackFaceHit", "class_shape_cast_result.html#a1b87f661ac91360c311fd96684f1d293", null ] +]; \ No newline at end of file diff --git a/class_shape_cast_result.png b/class_shape_cast_result.png new file mode 100644 index 000000000..9f3a57b46 Binary files /dev/null and b/class_shape_cast_result.png differ diff --git a/class_shape_cast_settings-members.html b/class_shape_cast_settings-members.html new file mode 100644 index 000000000..26c6e65c2 --- /dev/null +++ b/class_shape_cast_settings-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShapeCastSettings Member List
+
+
+ +

This is the complete list of members for ShapeCastSettings, including all inherited members.

+ + + + + + + + + + + +
mActiveEdgeModeCollideSettingsBase
mActiveEdgeMovementDirectionCollideSettingsBase
mBackFaceModeConvexShapeCastSettings
mBackFaceModeTrianglesShapeCastSettings
mCollectFacesModeCollideSettingsBase
mCollisionToleranceCollideSettingsBase
mPenetrationToleranceCollideSettingsBase
mReturnDeepestPointShapeCastSettings
mUseShrunkenShapeAndConvexRadiusShapeCastSettings
SetBackFaceMode(EBackFaceMode inMode)ShapeCastSettingsinline
+
+ + + + diff --git a/class_shape_cast_settings.html b/class_shape_cast_settings.html new file mode 100644 index 000000000..9fbc7cd05 --- /dev/null +++ b/class_shape_cast_settings.html @@ -0,0 +1,269 @@ + + + + + + + +Jolt Physics: ShapeCastSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ShapeCastSettings Class Reference
+
+
+ +

Settings to be passed with a shape cast. + More...

+ +

#include <ShapeCast.h>

+
+Inheritance diagram for ShapeCastSettings:
+
+
+ + +CollideSettingsBase + +
+ + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE void SetBackFaceMode (EBackFaceMode inMode)
 Set the backfacing mode for all shapes.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EBackFaceMode mBackFaceModeTriangles = EBackFaceMode::IgnoreBackFaces
 How backfacing triangles should be treated (should we report moving from back to front for triangle based shapes, e.g. for MeshShape/HeightFieldShape?)
 
EBackFaceMode mBackFaceModeConvex = EBackFaceMode::IgnoreBackFaces
 How backfacing convex objects should be treated (should we report starting inside an object and moving out?)
 
bool mUseShrunkenShapeAndConvexRadius = false
 Indicates if we want to shrink the shape by the convex radius and then expand it again. This speeds up collision detection and gives a more accurate normal at the cost of a more 'rounded' shape.
 
bool mReturnDeepestPoint = false
 When true, and the shape is intersecting at the beginning of the cast (fraction = 0) then this will calculate the deepest penetration point (costing additional CPU time)
 
- Public Attributes inherited from CollideSettingsBase
JPH_OVERRIDE_NEW_DELETE EActiveEdgeMode mActiveEdgeMode = EActiveEdgeMode::CollideOnlyWithActive
 How active edges (edges that a moving object should bump into) are handled.
 
ECollectFacesMode mCollectFacesMode = ECollectFacesMode::NoFaces
 If colliding faces should be collected or only the collision point.
 
float mCollisionTolerance = cDefaultCollisionTolerance
 If objects are closer than this distance, they are considered to be colliding (used for GJK) (unit: meter)
 
float mPenetrationTolerance = cDefaultPenetrationTolerance
 A factor that determines the accuracy of the penetration depth calculation. If the change of the squared distance is less than tolerance * current_penetration_depth^2 the algorithm will terminate. (unit: dimensionless)
 
Vec3 mActiveEdgeMovementDirection = Vec3::sZero()
 When mActiveEdgeMode is CollideOnlyWithActive a movement direction can be provided. When hitting an inactive edge, the system will select the triangle normal as penetration depth only if it impedes the movement less than with the calculated penetration depth.
 
+

Detailed Description

+

Settings to be passed with a shape cast.

+

Member Function Documentation

+ +

◆ SetBackFaceMode()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE void ShapeCastSettings::SetBackFaceMode (EBackFaceMode inMode)
+
+inline
+
+ +

Set the backfacing mode for all shapes.

+ +
+
+

Member Data Documentation

+ +

◆ mBackFaceModeConvex

+ +
+
+ + + + +
EBackFaceMode ShapeCastSettings::mBackFaceModeConvex = EBackFaceMode::IgnoreBackFaces
+
+ +

How backfacing convex objects should be treated (should we report starting inside an object and moving out?)

+ +
+
+ +

◆ mBackFaceModeTriangles

+ +
+
+ + + + +
EBackFaceMode ShapeCastSettings::mBackFaceModeTriangles = EBackFaceMode::IgnoreBackFaces
+
+ +

How backfacing triangles should be treated (should we report moving from back to front for triangle based shapes, e.g. for MeshShape/HeightFieldShape?)

+ +
+
+ +

◆ mReturnDeepestPoint

+ +
+
+ + + + +
bool ShapeCastSettings::mReturnDeepestPoint = false
+
+ +

When true, and the shape is intersecting at the beginning of the cast (fraction = 0) then this will calculate the deepest penetration point (costing additional CPU time)

+ +
+
+ +

◆ mUseShrunkenShapeAndConvexRadius

+ +
+
+ + + + +
bool ShapeCastSettings::mUseShrunkenShapeAndConvexRadius = false
+
+ +

Indicates if we want to shrink the shape by the convex radius and then expand it again. This speeds up collision detection and gives a more accurate normal at the cost of a more 'rounded' shape.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_shape_cast_settings.js b/class_shape_cast_settings.js new file mode 100644 index 000000000..bb88f9963 --- /dev/null +++ b/class_shape_cast_settings.js @@ -0,0 +1,8 @@ +var class_shape_cast_settings = +[ + [ "SetBackFaceMode", "class_shape_cast_settings.html#a635da1ab982bb250bcd497213012c189", null ], + [ "mBackFaceModeConvex", "class_shape_cast_settings.html#a3f2bb437820c80a4ba4e2952fe9742d0", null ], + [ "mBackFaceModeTriangles", "class_shape_cast_settings.html#a0c654586ce060400b7276a7ebb4adcdc", null ], + [ "mReturnDeepestPoint", "class_shape_cast_settings.html#a38fe76bbe3df55bb0ea0f9aa031bcc6e", null ], + [ "mUseShrunkenShapeAndConvexRadius", "class_shape_cast_settings.html#ac3cb9da5f5cce51f465609ac117f643e", null ] +]; \ No newline at end of file diff --git a/class_shape_cast_settings.png b/class_shape_cast_settings.png new file mode 100644 index 000000000..0ebfde9f7 Binary files /dev/null and b/class_shape_cast_settings.png differ diff --git a/class_shape_filter-members.html b/class_shape_filter-members.html new file mode 100644 index 000000000..fc5c1ff84 --- /dev/null +++ b/class_shape_filter-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShapeFilter Member List
+
+
+ +

This is the complete list of members for ShapeFilter, including all inherited members.

+ + + + + + + + +
mBodyID2ShapeFiltermutable
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) constShapeFilterinlinevirtual
ShouldCollide(const Shape *inShape1, const SubShapeID &inSubShapeIDOfShape1, const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) constShapeFilterinlinevirtual
~ShapeFilter()=defaultShapeFiltervirtual
+
+ + + + diff --git a/class_shape_filter.html b/class_shape_filter.html new file mode 100644 index 000000000..58694256e --- /dev/null +++ b/class_shape_filter.html @@ -0,0 +1,320 @@ + + + + + + + +Jolt Physics: ShapeFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ShapeFilter Class Reference
+
+
+ +

Filter class. + More...

+ +

#include <ShapeFilter.h>

+
+Inheritance diagram for ShapeFilter:
+
+
+ + +NonCopyable +ReversedShapeFilter + +
+ + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~ShapeFilter ()=default
 Destructor.
 
virtual bool ShouldCollide (const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const
 
virtual bool ShouldCollide (const Shape *inShape1, const SubShapeID &inSubShapeIDOfShape1, const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + +

+Public Attributes

BodyID mBodyID2
 Set by the collision detection functions to the body ID of the body that we're colliding against before calling the ShouldCollide function.
 
+

Detailed Description

+

Filter class.

+

Constructor & Destructor Documentation

+ +

◆ ~ShapeFilter()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ShapeFilter::~ShapeFilter ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool ShapeFilter::ShouldCollide (const ShapeinShape1,
const SubShapeIDinSubShapeIDOfShape1,
const ShapeinShape2,
const SubShapeIDinSubShapeIDOfShape2 
) const
+
+inlinevirtual
+
+

Filter function to determine if two shapes should collide. Returns true if the filter passes. This overload is called when querying a shape vs a shape (e.g. collide object / cast object). It is called at each level of the shape hierarchy, so if you have a compound shape with a box, this function will be called twice. It will not be called on triangles that are part of another shape, i.e a mesh shape will not trigger a callback per triangle. You can filter out individual triangles in the CollisionCollector::AddHit function by their sub shape ID.

Parameters
+ + + + + +
inShape11st shape that is colliding
inSubShapeIDOfShape1The sub shape ID that will lead from the root shape to inShape1 (i.e. the shape that is used to collide or cast against shape 2)
inShape22nd shape that is colliding
inSubShapeIDOfShape2The sub shape ID that will lead from the root shape to inShape2 (i.e. the shape of mBodyID2)
+
+
+ +

Reimplemented in ReversedShapeFilter.

+ +
+
+ +

◆ ShouldCollide() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool ShapeFilter::ShouldCollide (const ShapeinShape2,
const SubShapeIDinSubShapeIDOfShape2 
) const
+
+inlinevirtual
+
+

Filter function to determine if we should collide with a shape. Returns true if the filter passes. This overload is called when the query doesn't have a source shape (e.g. ray cast / collide point)

Parameters
+ + + +
inShape2Shape we're colliding against
inSubShapeIDOfShape2The sub shape ID that will lead from the root shape to inShape2 (i.e. the shape of mBodyID2)
+
+
+ +

Reimplemented in ReversedShapeFilter.

+ +
+
+

Member Data Documentation

+ +

◆ mBodyID2

+ +
+
+ + + + + +
+ + + + +
BodyID ShapeFilter::mBodyID2
+
+mutable
+
+ +

Set by the collision detection functions to the body ID of the body that we're colliding against before calling the ShouldCollide function.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_shape_filter.js b/class_shape_filter.js new file mode 100644 index 000000000..cfddc3bce --- /dev/null +++ b/class_shape_filter.js @@ -0,0 +1,7 @@ +var class_shape_filter = +[ + [ "~ShapeFilter", "class_shape_filter.html#acdf737ff32ada90df769acf6b25cc86a", null ], + [ "ShouldCollide", "class_shape_filter.html#a5e0b842fca969a0b6fee6e531273db51", null ], + [ "ShouldCollide", "class_shape_filter.html#a34e0af56ee8eff11096ed8926e87f2c5", null ], + [ "mBodyID2", "class_shape_filter.html#acfbd3ed4accf1e4e5d74129d203650ed", null ] +]; \ No newline at end of file diff --git a/class_shape_filter.png b/class_shape_filter.png new file mode 100644 index 000000000..ba4349650 Binary files /dev/null and b/class_shape_filter.png differ diff --git a/class_shape_functions-members.html b/class_shape_functions-members.html new file mode 100644 index 000000000..19e5d4660 --- /dev/null +++ b/class_shape_functions-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShapeFunctions Member List
+
+
+ +

This is the complete list of members for ShapeFunctions, including all inherited members.

+ + + + +
mColorShapeFunctions
mConstructShapeFunctions
sGet(EShapeSubType inSubType)ShapeFunctionsinlinestatic
+
+ + + + diff --git a/class_shape_functions.html b/class_shape_functions.html new file mode 100644 index 000000000..486a90fa7 --- /dev/null +++ b/class_shape_functions.html @@ -0,0 +1,207 @@ + + + + + + + +Jolt Physics: ShapeFunctions Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ShapeFunctions Class Reference
+
+
+ +

Function table for functions on shapes. + More...

+ +

#include <Shape.h>

+ + + + + +

+Static Public Member Functions

static ShapeFunctionssGet (EShapeSubType inSubType)
 Get an entry in the registry for a particular sub type.
 
+ + + + + + + +

+Public Attributes

Shape *(* mConstruct )() = nullptr
 Construct a shape.
 
Color mColor = Color::sBlack
 Color of the shape when drawing.
 
+

Detailed Description

+

Function table for functions on shapes.

+

Member Function Documentation

+ +

◆ sGet()

+ +
+
+ + + + + +
+ + + + + + + + +
static ShapeFunctions & ShapeFunctions::sGet (EShapeSubType inSubType)
+
+inlinestatic
+
+ +

Get an entry in the registry for a particular sub type.

+ +
+
+

Member Data Documentation

+ +

◆ mColor

+ +
+
+ + + + +
Color ShapeFunctions::mColor = Color::sBlack
+
+ +

Color of the shape when drawing.

+ +
+
+ +

◆ mConstruct

+ +
+
+ + + + +
Shape *(* ShapeFunctions::mConstruct) () = nullptr
+
+ +

Construct a shape.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_shape_functions.js b/class_shape_functions.js new file mode 100644 index 000000000..7141b73f0 --- /dev/null +++ b/class_shape_functions.js @@ -0,0 +1,5 @@ +var class_shape_functions = +[ + [ "mColor", "class_shape_functions.html#a054634bc3e0037afe94af128994d5261", null ], + [ "mConstruct", "class_shape_functions.html#a8865bcab9eba36b1e456b94cf1268789", null ] +]; \ No newline at end of file diff --git a/class_shape_settings-members.html b/class_shape_settings-members.html new file mode 100644 index 000000000..89c052164 --- /dev/null +++ b/class_shape_settings-members.html @@ -0,0 +1,136 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ShapeSettings Member List
+
+
+ +

This is the complete list of members for ShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
Create() const =0ShapeSettingspure virtual
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_shape_settings.html b/class_shape_settings.html new file mode 100644 index 000000000..ab39f1a13 --- /dev/null +++ b/class_shape_settings.html @@ -0,0 +1,340 @@ + + + + + + + +Jolt Physics: ShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
ShapeSettings Class Referenceabstract
+
+
+ +

#include <Shape.h>

+
+Inheritance diagram for ShapeSettings:
+
+
+ + +SerializableObject +RefTarget< ShapeSettings > +NonCopyable +CompoundShapeSettings +ConvexShapeSettings +DecoratedShapeSettings +HeightFieldShapeSettings +MeshShapeSettings +PlaneShapeSettings +MutableCompoundShapeSettings +StaticCompoundShapeSettings +BoxShapeSettings +CapsuleShapeSettings +ConvexHullShapeSettings +CylinderShapeSettings +SphereShapeSettings +TaperedCapsuleShapeSettings +TaperedCylinderShapeSettings +TriangleShapeSettings +OffsetCenterOfMassShapeSettings +RotatedTranslatedShapeSettings +ScaledShapeSettings + +
+ + + + +

+Public Types

using ShapeResult = Result< Ref< Shape > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ShapeResult Create () const =0
 Create a shape according to the settings specified by this object.
 
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + +

+Public Attributes

uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + + + + +

+Protected Attributes

ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
+ + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that can construct shapes and that is serializable using the ObjectStream system. Can be used to store shape data in 'uncooked' form (i.e. in a form that is still human readable and authorable). Once the shape has been created using the Create() function, the data will be moved into the Shape class in a form that is optimized for collision detection. After this, the ShapeSettings object is no longer needed and can be destroyed. Each shape class has a derived class of the ShapeSettings object to store shape specific data.

+

Member Typedef Documentation

+ +

◆ ShapeResult

+ +
+
+ + + + +
using ShapeSettings::ShapeResult = Result<Ref<Shape> >
+
+ +
+
+

Member Function Documentation

+ +

◆ ClearCachedResult()

+ +
+
+ + + + + +
+ + + + + + + +
void ShapeSettings::ClearCachedResult ()
+
+inline
+
+

When creating a shape, the result is cached so that calling Create() again will return the same shape. If you make changes to the ShapeSettings you need to call this function to clear the cached result to allow Create() to build a new shape.

+ +
+
+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ShapeResult ShapeSettings::Create () const
+
+pure virtual
+
+
+

Member Data Documentation

+ +

◆ mCachedResult

+ +
+
+ + + + + +
+ + + + +
ShapeResult ShapeSettings::mCachedResult
+
+mutableprotected
+
+ +
+
+ +

◆ mUserData

+ +
+
+ + + + +
uint64 ShapeSettings::mUserData = 0
+
+ +

User data (to be used freely by the application)

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_shape_settings.js b/class_shape_settings.js new file mode 100644 index 000000000..3cbfb332d --- /dev/null +++ b/class_shape_settings.js @@ -0,0 +1,8 @@ +var class_shape_settings = +[ + [ "ShapeResult", "class_shape_settings.html#a988ca04438dfad8edfe4e16d5394b6a8", null ], + [ "ClearCachedResult", "class_shape_settings.html#aa965a759e6c4cbc43ebf0aa8bd1f2d30", null ], + [ "Create", "class_shape_settings.html#a21e53b5758542a5527c7941d61d838fa", null ], + [ "mCachedResult", "class_shape_settings.html#ac8e243f3e923ee07d58111a0dd88c547", null ], + [ "mUserData", "class_shape_settings.html#acd32835291c84d23e49c15194c1b0424", null ] +]; \ No newline at end of file diff --git a/class_shape_settings.png b/class_shape_settings.png new file mode 100644 index 000000000..e209dc589 Binary files /dev/null and b/class_shape_settings.png differ diff --git a/class_shared_lock-members.html b/class_shared_lock-members.html new file mode 100644 index 000000000..5b9f79f05 --- /dev/null +++ b/class_shared_lock-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SharedLock< LockType > Member List
+
+
+ +

This is the complete list of members for SharedLock< LockType >, including all inherited members.

+ + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
SharedLock(LockType &inLock JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))SharedLock< LockType >inlineexplicit
~SharedLock()SharedLock< LockType >inline
+
+ + + + diff --git a/class_shared_lock.html b/class_shared_lock.html new file mode 100644 index 000000000..a801e816c --- /dev/null +++ b/class_shared_lock.html @@ -0,0 +1,208 @@ + + + + + + + +Jolt Physics: SharedLock< LockType > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SharedLock< LockType > Class Template Reference
+
+
+ +

Helper class that is similar to std::shared_lock. + More...

+ +

#include <PhysicsLock.h>

+
+Inheritance diagram for SharedLock< LockType >:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + +

+Public Member Functions

 SharedLock (LockType &inLock JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
 
 ~SharedLock ()
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+
template<class LockType>
+class SharedLock< LockType >

Helper class that is similar to std::shared_lock.

+

Constructor & Destructor Documentation

+ +

◆ SharedLock()

+ +
+
+
+template<class LockType >
+ + + + + +
+ + + + + + + + +
SharedLock< LockType >::SharedLock (LockType &inLock  JPH_IF_ENABLE_ASSERTS, PhysicsLockContext inContext, EPhysicsLockTypes inType)
+
+inlineexplicit
+
+ +
+
+ +

◆ ~SharedLock()

+ +
+
+
+template<class LockType >
+ + + + + +
+ + + + + + + +
SharedLock< LockType >::~SharedLock ()
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_shared_lock.js b/class_shared_lock.js new file mode 100644 index 000000000..f3919a065 --- /dev/null +++ b/class_shared_lock.js @@ -0,0 +1,5 @@ +var class_shared_lock = +[ + [ "SharedLock", "class_shared_lock.html#a423a99cd3233c75dbf47e664351bab08", null ], + [ "~SharedLock", "class_shared_lock.html#ab0010e08e97ed9b28b93785fcc3c20c3", null ] +]; \ No newline at end of file diff --git a/class_shared_lock.png b/class_shared_lock.png new file mode 100644 index 000000000..e85282ebc Binary files /dev/null and b/class_shared_lock.png differ diff --git a/class_shared_mutex-members.html b/class_shared_mutex-members.html new file mode 100644 index 000000000..ade214e29 --- /dev/null +++ b/class_shared_mutex-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SharedMutex Member List
+
+
+ +

This is the complete list of members for SharedMutex, including all inherited members.

+ + + + + +
lock()SharedMutexinline
lock_shared()SharedMutexinline
try_lock()SharedMutexinline
unlock()SharedMutexinline
+
+ + + + diff --git a/class_shared_mutex.html b/class_shared_mutex.html new file mode 100644 index 000000000..f36492690 --- /dev/null +++ b/class_shared_mutex.html @@ -0,0 +1,243 @@ + + + + + + + +Jolt Physics: SharedMutex Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SharedMutex Class Reference
+
+
+ +

#include <Mutex.h>

+
+Inheritance diagram for SharedMutex:
+
+
+ +
+ + + + + + + + + + +

+Public Member Functions

bool try_lock ()
 
void lock ()
 
void unlock ()
 
void lock_shared ()
 
+

Detailed Description

+

Very simple wrapper around SharedMutexBase which tracks lock contention in the profiler and asserts that locks/unlocks take place on the same thread

+

Member Function Documentation

+ +

◆ lock()

+ +
+
+ + + + + +
+ + + + + + + +
void SharedMutex::lock ()
+
+inline
+
+ +
+
+ +

◆ lock_shared()

+ +
+
+ + + + + +
+ + + + + + + +
void SharedMutex::lock_shared ()
+
+inline
+
+ +
+
+ +

◆ try_lock()

+ +
+
+ + + + + +
+ + + + + + + +
bool SharedMutex::try_lock ()
+
+inline
+
+ +
+
+ +

◆ unlock()

+ +
+
+ + + + + +
+ + + + + + + +
void SharedMutex::unlock ()
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_shared_mutex.js b/class_shared_mutex.js new file mode 100644 index 000000000..6447114b1 --- /dev/null +++ b/class_shared_mutex.js @@ -0,0 +1,7 @@ +var class_shared_mutex = +[ + [ "lock", "class_shared_mutex.html#a9fa5be0817cac255fc1a1b57046468ec", null ], + [ "lock_shared", "class_shared_mutex.html#a39d069ffca3b0e8e42a72c756d4dbae1", null ], + [ "try_lock", "class_shared_mutex.html#ae1867755a6f5457bc8bc24823373c66d", null ], + [ "unlock", "class_shared_mutex.html#a72e10c237bf7e8e771c864e4d800d9be", null ] +]; \ No newline at end of file diff --git a/class_shared_mutex.png b/class_shared_mutex.png new file mode 100644 index 000000000..feb5f0a6d Binary files /dev/null and b/class_shared_mutex.png differ diff --git a/class_six_d_o_f_constraint-members.html b/class_six_d_o_f_constraint-members.html new file mode 100644 index 000000000..f795fdd90 --- /dev/null +++ b/class_six_d_o_f_constraint-members.html @@ -0,0 +1,204 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SixDOFConstraint Member List
+
+
+ +

This is the complete list of members for SixDOFConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const overrideSixDOFConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) const overrideSixDOFConstraintvirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
EAxis typedefSixDOFConstraint
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overrideSixDOFConstraintvirtual
GetConstraintToBody1Matrix() const overrideSixDOFConstraintinlinevirtual
GetConstraintToBody2Matrix() const overrideSixDOFConstraintinlinevirtual
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetLimitsMax(EAxis inAxis) constSixDOFConstraintinline
GetLimitsMin(EAxis inAxis) constSixDOFConstraintinline
GetLimitsSpringSettings(EAxis inAxis) constSixDOFConstraintinline
GetMaxFriction(EAxis inAxis) constSixDOFConstraintinline
GetMotorSettings(EAxis inAxis)SixDOFConstraintinline
GetMotorSettings(EAxis inAxis) constSixDOFConstraintinline
GetMotorState(EAxis inAxis) constSixDOFConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetRotationInConstraintSpace() constSixDOFConstraint
GetRotationLimitsMax() constSixDOFConstraintinline
GetRotationLimitsMin() constSixDOFConstraintinline
GetSubType() const overrideSixDOFConstraintinlinevirtual
GetTargetAngularVelocityCS() constSixDOFConstraintinline
GetTargetOrientationCS() constSixDOFConstraintinline
GetTargetPositionCS() constSixDOFConstraintinline
GetTargetVelocityCS() constSixDOFConstraintinline
GetTotalLambdaMotorRotation() constSixDOFConstraintinline
GetTotalLambdaMotorTranslation() constSixDOFConstraintinline
GetTotalLambdaPosition() constSixDOFConstraintinline
GetTotalLambdaRotation() constSixDOFConstraintinline
GetTranslationLimitsMax() constSixDOFConstraintinline
GetTranslationLimitsMin() constSixDOFConstraintinline
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
IsActive() const overrideTwoBodyConstraintinlinevirtual
IsFixedAxis(EAxis inAxis) constSixDOFConstraintinline
IsFreeAxis(EAxis inAxis) constSixDOFConstraintinline
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overrideSixDOFConstraintvirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart() overrideSixDOFConstraintvirtual
RestoreState(StateRecorder &inStream) overrideSixDOFConstraintvirtual
SaveState(StateRecorder &inStream) const overrideSixDOFConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetLimitsSpringSettings(EAxis inAxis, const SpringSettings &inLimitsSpringSettings)SixDOFConstraintinline
SetMaxFriction(EAxis inAxis, float inFriction)SixDOFConstraint
SetMotorState(EAxis inAxis, EMotorState inState)SixDOFConstraint
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetRotationLimits(Vec3Arg inLimitMin, Vec3Arg inLimitMax)SixDOFConstraint
SetTargetAngularVelocityCS(Vec3Arg inAngularVelocity)SixDOFConstraintinline
SetTargetOrientationBS(QuatArg inOrientation)SixDOFConstraintinline
SetTargetOrientationCS(QuatArg inOrientation)SixDOFConstraint
SetTargetPositionCS(Vec3Arg inPosition)SixDOFConstraintinline
SetTargetVelocityCS(Vec3Arg inVelocity)SixDOFConstraintinline
SetTranslationLimits(Vec3Arg inLimitMin, Vec3Arg inLimitMax)SixDOFConstraint
SetupVelocityConstraint(float inDeltaTime) overrideSixDOFConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SixDOFConstraint(Body &inBody1, Body &inBody2, const SixDOFConstraintSettings &inSettings)SixDOFConstraint
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overrideSixDOFConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overrideSixDOFConstraintvirtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overrideSixDOFConstraintvirtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_six_d_o_f_constraint.html b/class_six_d_o_f_constraint.html new file mode 100644 index 000000000..929d82a60 --- /dev/null +++ b/class_six_d_o_f_constraint.html @@ -0,0 +1,1712 @@ + + + + + + + +Jolt Physics: SixDOFConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SixDOFConstraint Class Referencefinal
+
+
+ +

6 Degree Of Freedom Constraint. Allows control over each of the 6 degrees of freedom. + More...

+ +

#include <SixDOFConstraint.h>

+
+Inheritance diagram for SixDOFConstraint:
+
+
+ + +TwoBodyConstraint +Constraint +RefTarget< Constraint > +NonCopyable + +
+ + + + + +

+Public Types

using EAxis = SixDOFConstraintSettings::EAxis
 Get Axis from settings class.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SixDOFConstraint (Body &inBody1, Body &inBody2, const SixDOFConstraintSettings &inSettings)
 Construct six DOF constraint.
 
virtual EConstraintSubType GetSubType () const override
 Generic interface of a constraint.
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
virtual Mat44 GetConstraintToBody1Matrix () const override
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const override
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
void SetTranslationLimits (Vec3Arg inLimitMin, Vec3Arg inLimitMax)
 Update the translation limits for this constraint.
 
void SetRotationLimits (Vec3Arg inLimitMin, Vec3Arg inLimitMax)
 Update the rotational limits for this constraint.
 
float GetLimitsMin (EAxis inAxis) const
 Get constraint Limits.
 
float GetLimitsMax (EAxis inAxis) const
 
Vec3 GetTranslationLimitsMin () const
 
Vec3 GetTranslationLimitsMax () const
 
Vec3 GetRotationLimitsMin () const
 
Vec3 GetRotationLimitsMax () const
 
bool IsFixedAxis (EAxis inAxis) const
 Check which axis are fixed/free.
 
bool IsFreeAxis (EAxis inAxis) const
 
const SpringSettingsGetLimitsSpringSettings (EAxis inAxis) const
 Update the limits spring settings.
 
void SetLimitsSpringSettings (EAxis inAxis, const SpringSettings &inLimitsSpringSettings)
 
void SetMaxFriction (EAxis inAxis, float inFriction)
 Set the max friction for each axis.
 
float GetMaxFriction (EAxis inAxis) const
 
Quat GetRotationInConstraintSpace () const
 Get rotation of constraint in constraint space.
 
MotorSettingsGetMotorSettings (EAxis inAxis)
 Motor settings.
 
const MotorSettingsGetMotorSettings (EAxis inAxis) const
 
void SetMotorState (EAxis inAxis, EMotorState inState)
 
EMotorState GetMotorState (EAxis inAxis) const
 
Vec3 GetTargetVelocityCS () const
 Set the target velocity in body 1 constraint space.
 
void SetTargetVelocityCS (Vec3Arg inVelocity)
 
void SetTargetAngularVelocityCS (Vec3Arg inAngularVelocity)
 Set the target angular velocity in body 2 constraint space (!)
 
Vec3 GetTargetAngularVelocityCS () const
 
Vec3 GetTargetPositionCS () const
 Set the target position in body 1 constraint space.
 
void SetTargetPositionCS (Vec3Arg inPosition)
 
void SetTargetOrientationCS (QuatArg inOrientation)
 Set the target orientation in body 1 constraint space.
 
Quat GetTargetOrientationCS () const
 
void SetTargetOrientationBS (QuatArg inOrientation)
 
- Public Member Functions inherited from TwoBodyConstraint
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + +

Get Lagrange multiplier from last physics update (the linear/angular impulse applied to satisfy the constraint)

Vec3 GetTotalLambdaPosition () const
 
Vec3 GetTotalLambdaRotation () const
 
Vec3 GetTotalLambdaMotorTranslation () const
 
Vec3 GetTotalLambdaMotorRotation () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from TwoBodyConstraint
BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

6 Degree Of Freedom Constraint. Allows control over each of the 6 degrees of freedom.

+

Member Typedef Documentation

+ +

◆ EAxis

+ +
+
+ +

Get Axis from settings class.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ SixDOFConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
SixDOFConstraint::SixDOFConstraint (BodyinBody1,
BodyinBody2,
const SixDOFConstraintSettingsinSettings 
)
+
+ +

Construct six DOF constraint.

+ +
+
+

Member Function Documentation

+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ DrawConstraintLimits()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraint::DrawConstraintLimits (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > SixDOFConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 SixDOFConstraint::GetConstraintToBody1Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 SixDOFConstraint::GetConstraintToBody2Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetLimitsMax()

+ +
+
+ + + + + +
+ + + + + + + + +
float SixDOFConstraint::GetLimitsMax (EAxis inAxis) const
+
+inline
+
+ +
+
+ +

◆ GetLimitsMin()

+ +
+
+ + + + + +
+ + + + + + + + +
float SixDOFConstraint::GetLimitsMin (EAxis inAxis) const
+
+inline
+
+ +

Get constraint Limits.

+ +
+
+ +

◆ GetLimitsSpringSettings()

+ +
+
+ + + + + +
+ + + + + + + + +
const SpringSettings & SixDOFConstraint::GetLimitsSpringSettings (EAxis inAxis) const
+
+inline
+
+ +

Update the limits spring settings.

+ +
+
+ +

◆ GetMaxFriction()

+ +
+
+ + + + + +
+ + + + + + + + +
float SixDOFConstraint::GetMaxFriction (EAxis inAxis) const
+
+inline
+
+ +
+
+ +

◆ GetMotorSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
MotorSettings & SixDOFConstraint::GetMotorSettings (EAxis inAxis)
+
+inline
+
+ +

Motor settings.

+ +
+
+ +

◆ GetMotorSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
const MotorSettings & SixDOFConstraint::GetMotorSettings (EAxis inAxis) const
+
+inline
+
+ +
+
+ +

◆ GetMotorState()

+ +
+
+ + + + + +
+ + + + + + + + +
EMotorState SixDOFConstraint::GetMotorState (EAxis inAxis) const
+
+inline
+
+ +
+
+ +

◆ GetRotationInConstraintSpace()

+ +
+
+ + + + + + + +
Quat SixDOFConstraint::GetRotationInConstraintSpace () const
+
+ +

Get rotation of constraint in constraint space.

+ +
+
+ +

◆ GetRotationLimitsMax()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SixDOFConstraint::GetRotationLimitsMax () const
+
+inline
+
+ +
+
+ +

◆ GetRotationLimitsMin()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SixDOFConstraint::GetRotationLimitsMin () const
+
+inline
+
+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType SixDOFConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Generic interface of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetTargetAngularVelocityCS()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SixDOFConstraint::GetTargetAngularVelocityCS () const
+
+inline
+
+ +
+
+ +

◆ GetTargetOrientationCS()

+ +
+
+ + + + + +
+ + + + + + + +
Quat SixDOFConstraint::GetTargetOrientationCS () const
+
+inline
+
+ +
+
+ +

◆ GetTargetPositionCS()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SixDOFConstraint::GetTargetPositionCS () const
+
+inline
+
+ +

Set the target position in body 1 constraint space.

+ +
+
+ +

◆ GetTargetVelocityCS()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SixDOFConstraint::GetTargetVelocityCS () const
+
+inline
+
+ +

Set the target velocity in body 1 constraint space.

+ +
+
+ +

◆ GetTotalLambdaMotorRotation()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SixDOFConstraint::GetTotalLambdaMotorRotation () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaMotorTranslation()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SixDOFConstraint::GetTotalLambdaMotorTranslation () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SixDOFConstraint::GetTotalLambdaPosition () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaRotation()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SixDOFConstraint::GetTotalLambdaRotation () const
+
+inline
+
+ +
+
+ +

◆ GetTranslationLimitsMax()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SixDOFConstraint::GetTranslationLimitsMax () const
+
+inline
+
+ +
+
+ +

◆ GetTranslationLimitsMin()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SixDOFConstraint::GetTranslationLimitsMin () const
+
+inline
+
+ +
+
+ +

◆ IsFixedAxis()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SixDOFConstraint::IsFixedAxis (EAxis inAxis) const
+
+inline
+
+ +

Check which axis are fixed/free.

+ +
+
+ +

◆ IsFreeAxis()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SixDOFConstraint::IsFreeAxis (EAxis inAxis) const
+
+inline
+
+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SixDOFConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+overridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void SixDOFConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetLimitsSpringSettings()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SixDOFConstraint::SetLimitsSpringSettings (EAxis inAxis,
const SpringSettingsinLimitsSpringSettings 
)
+
+inline
+
+ +
+
+ +

◆ SetMaxFriction()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SixDOFConstraint::SetMaxFriction (EAxis inAxis,
float inFriction 
)
+
+ +

Set the max friction for each axis.

+ +
+
+ +

◆ SetMotorState()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SixDOFConstraint::SetMotorState (EAxis inAxis,
EMotorState inState 
)
+
+

Motor controls. Translation motors work in constraint space of body 1. Rotation motors work in constraint space of body 2 (!).

+ +
+
+ +

◆ SetRotationLimits()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SixDOFConstraint::SetRotationLimits (Vec3Arg inLimitMin,
Vec3Arg inLimitMax 
)
+
+ +

Update the rotational limits for this constraint.

+ +
+
+ +

◆ SetTargetAngularVelocityCS()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraint::SetTargetAngularVelocityCS (Vec3Arg inAngularVelocity)
+
+inline
+
+ +

Set the target angular velocity in body 2 constraint space (!)

+ +
+
+ +

◆ SetTargetOrientationBS()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraint::SetTargetOrientationBS (QuatArg inOrientation)
+
+inline
+
+

Set the target orientation in body space (R2 = R1 * inOrientation, where R1 and R2 are the world space rotations for body 1 and 2). Solve: R2 * ConstraintToBody2 = R1 * ConstraintToBody1 * q (see SwingTwistConstraint::GetSwingTwist) and R2 = R1 * inOrientation for q.

+ +
+
+ +

◆ SetTargetOrientationCS()

+ +
+
+ + + + + + + + +
void SixDOFConstraint::SetTargetOrientationCS (QuatArg inOrientation)
+
+ +

Set the target orientation in body 1 constraint space.

+ +
+
+ +

◆ SetTargetPositionCS()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraint::SetTargetPositionCS (Vec3Arg inPosition)
+
+inline
+
+ +
+
+ +

◆ SetTargetVelocityCS()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraint::SetTargetVelocityCS (Vec3Arg inVelocity)
+
+inline
+
+ +
+
+ +

◆ SetTranslationLimits()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SixDOFConstraint::SetTranslationLimits (Vec3Arg inLimitMin,
Vec3Arg inLimitMax 
)
+
+ +

Update the translation limits for this constraint.

+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool SixDOFConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SixDOFConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_six_d_o_f_constraint.js b/class_six_d_o_f_constraint.js new file mode 100644 index 000000000..6ec1251e9 --- /dev/null +++ b/class_six_d_o_f_constraint.js @@ -0,0 +1,51 @@ +var class_six_d_o_f_constraint = +[ + [ "EAxis", "class_six_d_o_f_constraint.html#a6ae2f17a4c67f08fb49cacab7ec0d501", null ], + [ "SixDOFConstraint", "class_six_d_o_f_constraint.html#a3002dc33540a30ce549738faa272f868", null ], + [ "DrawConstraint", "class_six_d_o_f_constraint.html#a3e482be52b58ddefa10fd4fe941b4e79", null ], + [ "DrawConstraintLimits", "class_six_d_o_f_constraint.html#ad7cf9ea81cc6d05443936cff5f9f63e0", null ], + [ "GetConstraintSettings", "class_six_d_o_f_constraint.html#aec39d055e72169c5f805a00c16b12ff1", null ], + [ "GetConstraintToBody1Matrix", "class_six_d_o_f_constraint.html#a93b7ceef3c7017e4a1a0bc53e29c93d8", null ], + [ "GetConstraintToBody2Matrix", "class_six_d_o_f_constraint.html#a92d86c092002bec9d22d529f8616aa29", null ], + [ "GetLimitsMax", "class_six_d_o_f_constraint.html#a78e19363677045ac960e57d0deb166e6", null ], + [ "GetLimitsMin", "class_six_d_o_f_constraint.html#a19166b2e56147da794b2651896007294", null ], + [ "GetLimitsSpringSettings", "class_six_d_o_f_constraint.html#a70687b51cd67ed48ec11975e8799fcc5", null ], + [ "GetMaxFriction", "class_six_d_o_f_constraint.html#a874ef6ddc1368b003ba0eb2808adf17c", null ], + [ "GetMotorSettings", "class_six_d_o_f_constraint.html#a3e4372d1567140760e6cf46710108675", null ], + [ "GetMotorSettings", "class_six_d_o_f_constraint.html#a12db08dc07d7ae6cf63acdb8e17547b7", null ], + [ "GetMotorState", "class_six_d_o_f_constraint.html#adcda93c3a6ca21bf6ed39b264a020f38", null ], + [ "GetRotationInConstraintSpace", "class_six_d_o_f_constraint.html#ae4af627f61bd4bd61d242756dd7f838a", null ], + [ "GetRotationLimitsMax", "class_six_d_o_f_constraint.html#a9d5cd3757370c1c95a19828cfe8ed7ce", null ], + [ "GetRotationLimitsMin", "class_six_d_o_f_constraint.html#ae130846346f47a470d08e7e916955bf6", null ], + [ "GetSubType", "class_six_d_o_f_constraint.html#ae13f824a4eddf95835fdeffe61c7ffba", null ], + [ "GetTargetAngularVelocityCS", "class_six_d_o_f_constraint.html#aa8906a979a8a5bfcb1887997849d3f0c", null ], + [ "GetTargetOrientationCS", "class_six_d_o_f_constraint.html#ab3f325802dc065ba6fbeeea76884e0c8", null ], + [ "GetTargetPositionCS", "class_six_d_o_f_constraint.html#a5e3a3ca4dd727cabe3fbc97a43fffc1d", null ], + [ "GetTargetVelocityCS", "class_six_d_o_f_constraint.html#adea943442830716a4e865fe336910729", null ], + [ "GetTotalLambdaMotorRotation", "class_six_d_o_f_constraint.html#a84ad5f919ccfff953b8de5ae421425b4", null ], + [ "GetTotalLambdaMotorTranslation", "class_six_d_o_f_constraint.html#a244e5b919415ca1feec2d707e3ad64bf", null ], + [ "GetTotalLambdaPosition", "class_six_d_o_f_constraint.html#a01a2d0f0a38d57af09fb86f5432df79b", null ], + [ "GetTotalLambdaRotation", "class_six_d_o_f_constraint.html#a660cc3a7a434504917d71b2c463cef47", null ], + [ "GetTranslationLimitsMax", "class_six_d_o_f_constraint.html#a9dc7e49353c01c96388125cc6510bb92", null ], + [ "GetTranslationLimitsMin", "class_six_d_o_f_constraint.html#adca299a0d75c785bb120d381cdb1e6ee", null ], + [ "IsFixedAxis", "class_six_d_o_f_constraint.html#a9388c6c3c237389fa77aec2862fba244", null ], + [ "IsFreeAxis", "class_six_d_o_f_constraint.html#aaa234472e01794bfa881cf59d0c5d6be", null ], + [ "NotifyShapeChanged", "class_six_d_o_f_constraint.html#a7da40332bca888038baa167dc1cb0d8b", null ], + [ "ResetWarmStart", "class_six_d_o_f_constraint.html#a22c691917ea1c5166f4ea7cd6a00219f", null ], + [ "RestoreState", "class_six_d_o_f_constraint.html#a816d37d27455acd262a58e565445ba8d", null ], + [ "SaveState", "class_six_d_o_f_constraint.html#ad6062bc0bb66d6bfa9a57e6e4e62fefa", null ], + [ "SetLimitsSpringSettings", "class_six_d_o_f_constraint.html#a0a7933aafb327871eb4a45e2a2c79fc0", null ], + [ "SetMaxFriction", "class_six_d_o_f_constraint.html#ab28cc63599921c1b582f71549be647b3", null ], + [ "SetMotorState", "class_six_d_o_f_constraint.html#a4294f297ae2bdf4f736eb137694ecc44", null ], + [ "SetRotationLimits", "class_six_d_o_f_constraint.html#ae203835b5e57cbdb0acd755bf65e87fd", null ], + [ "SetTargetAngularVelocityCS", "class_six_d_o_f_constraint.html#a51543e5bc341f2812c0498eeb11ec8a2", null ], + [ "SetTargetOrientationBS", "class_six_d_o_f_constraint.html#a27200e904e3f52704ce99c2d3f12ad16", null ], + [ "SetTargetOrientationCS", "class_six_d_o_f_constraint.html#abad5e4ae0dfe6e5da9518683a2f1959c", null ], + [ "SetTargetPositionCS", "class_six_d_o_f_constraint.html#a79b66cc0a8850f926aecbcc56dc52570", null ], + [ "SetTargetVelocityCS", "class_six_d_o_f_constraint.html#aa4fc743e2d8bbbe4eabcda4a0062d758", null ], + [ "SetTranslationLimits", "class_six_d_o_f_constraint.html#af5ff395b70a1170d8215850acf83826f", null ], + [ "SetupVelocityConstraint", "class_six_d_o_f_constraint.html#abee061c8025b392f637e0cd56ac40d8c", null ], + [ "SolvePositionConstraint", "class_six_d_o_f_constraint.html#a636d378bc45470f3182c71e0a7b6ba59", null ], + [ "SolveVelocityConstraint", "class_six_d_o_f_constraint.html#a37a955943b8f78e7ff8d98e044981b58", null ], + [ "WarmStartVelocityConstraint", "class_six_d_o_f_constraint.html#a94451dc994375a631e767e76cc08fbb5", null ] +]; \ No newline at end of file diff --git a/class_six_d_o_f_constraint.png b/class_six_d_o_f_constraint.png new file mode 100644 index 000000000..9c9df0380 Binary files /dev/null and b/class_six_d_o_f_constraint.png differ diff --git a/class_six_d_o_f_constraint_settings-members.html b/class_six_d_o_f_constraint_settings-members.html new file mode 100644 index 000000000..ba3e78daf --- /dev/null +++ b/class_six_d_o_f_constraint_settings-members.html @@ -0,0 +1,169 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SixDOFConstraintSettings Member List
+
+
+ +

This is the complete list of members for SixDOFConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const overrideSixDOFConstraintSettingsvirtual
EAxis enum nameSixDOFConstraintSettings
GetRefCount() constRefTarget< ConstraintSettings >inline
IsFixedAxis(EAxis inAxis) constSixDOFConstraintSettingsinline
IsFreeAxis(EAxis inAxis) constSixDOFConstraintSettingsinline
MakeFixedAxis(EAxis inAxis)SixDOFConstraintSettingsinline
MakeFreeAxis(EAxis inAxis)SixDOFConstraintSettingsinline
mAxisX1SixDOFConstraintSettings
mAxisX2SixDOFConstraintSettings
mAxisY1SixDOFConstraintSettings
mAxisY2SixDOFConstraintSettings
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mLimitMaxSixDOFConstraintSettings
mLimitMinSixDOFConstraintSettings
mLimitsSpringSettingsSixDOFConstraintSettings
mMaxFrictionSixDOFConstraintSettings
mMotorSettingsSixDOFConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mPosition1SixDOFConstraintSettings
mPosition2SixDOFConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mSpaceSixDOFConstraintSettings
mSwingTypeSixDOFConstraintSettings
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
Num enum valueSixDOFConstraintSettings
NumTranslation enum valueSixDOFConstraintSettings
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideSixDOFConstraintSettingsprotectedvirtual
RotationX enum valueSixDOFConstraintSettings
RotationY enum valueSixDOFConstraintSettings
RotationZ enum valueSixDOFConstraintSettings
SaveBinaryState(StreamOut &inStream) const overrideSixDOFConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
SetLimitedAxis(EAxis inAxis, float inMin, float inMax)SixDOFConstraintSettingsinline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
TranslationX enum valueSixDOFConstraintSettings
TranslationY enum valueSixDOFConstraintSettings
TranslationZ enum valueSixDOFConstraintSettings
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_six_d_o_f_constraint_settings.html b/class_six_d_o_f_constraint_settings.html new file mode 100644 index 000000000..70d7f6bb1 --- /dev/null +++ b/class_six_d_o_f_constraint_settings.html @@ -0,0 +1,780 @@ + + + + + + + +Jolt Physics: SixDOFConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SixDOFConstraintSettings Class Referencefinal
+
+
+ +

6 Degree Of Freedom Constraint setup structure. Allows control over each of the 6 degrees of freedom. + More...

+ +

#include <SixDOFConstraint.h>

+
+Inheritance diagram for SixDOFConstraintSettings:
+
+
+ + +TwoBodyConstraintSettings +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + +

+Public Types

enum  EAxis {
+  TranslationX +, TranslationY +, TranslationZ +, RotationX +,
+  RotationY +, RotationZ +, Num +, NumTranslation = TranslationZ + 1 +
+ }
 Constraint is split up into translation/rotation around X, Y and Z axis. More...
 
- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 Create an instance of this constraint.
 
void MakeFreeAxis (EAxis inAxis)
 Make axis free (unconstrained)
 
bool IsFreeAxis (EAxis inAxis) const
 
void MakeFixedAxis (EAxis inAxis)
 Make axis fixed (fixed at value 0)
 
bool IsFixedAxis (EAxis inAxis) const
 
void SetLimitedAxis (EAxis inAxis, float inMin, float inMax)
 Set a valid range for the constraint (if inMax < inMin, the axis will become fixed)
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EConstraintSpace mSpace = EConstraintSpace::WorldSpace
 This determines in which space the constraint is setup, all properties below should be in the specified space.
 
RVec3 mPosition1 = RVec3::sZero()
 Body 1 constraint reference frame (space determined by mSpace)
 
Vec3 mAxisX1 = Vec3::sAxisX()
 
Vec3 mAxisY1 = Vec3::sAxisY()
 
RVec3 mPosition2 = RVec3::sZero()
 Body 2 constraint reference frame (space determined by mSpace)
 
Vec3 mAxisX2 = Vec3::sAxisX()
 
Vec3 mAxisY2 = Vec3::sAxisY()
 
float mMaxFriction [EAxis::Num] = { 0, 0, 0, 0, 0, 0 }
 
ESwingType mSwingType = ESwingType::Cone
 The type of swing constraint that we want to use.
 
float mLimitMin [EAxis::Num] = { -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX }
 
float mLimitMax [EAxis::Num] = { FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX }
 
SpringSettings mLimitsSpringSettings [EAxis::NumTranslation]
 
MotorSettings mMotorSettings [EAxis::Num]
 Motor settings for each axis.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

6 Degree Of Freedom Constraint setup structure. Allows control over each of the 6 degrees of freedom.

+

Member Enumeration Documentation

+ +

◆ EAxis

+ +
+
+ +

Constraint is split up into translation/rotation around X, Y and Z axis.

+ + + + + + + + + +
Enumerator
TranslationX 
TranslationY 
TranslationZ 
RotationX 
RotationY 
RotationZ 
Num 
NumTranslation 
+ +
+
+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * SixDOFConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+overridevirtual
+
+ +

Create an instance of this constraint.

+ +

Implements TwoBodyConstraintSettings.

+ +
+
+ +

◆ IsFixedAxis()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SixDOFConstraintSettings::IsFixedAxis (EAxis inAxis) const
+
+inline
+
+ +
+
+ +

◆ IsFreeAxis()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SixDOFConstraintSettings::IsFreeAxis (EAxis inAxis) const
+
+inline
+
+ +
+
+ +

◆ MakeFixedAxis()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraintSettings::MakeFixedAxis (EAxis inAxis)
+
+inline
+
+ +

Make axis fixed (fixed at value 0)

+ +
+
+ +

◆ MakeFreeAxis()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraintSettings::MakeFreeAxis (EAxis inAxis)
+
+inline
+
+ +

Make axis free (unconstrained)

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SixDOFConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SetLimitedAxis()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SixDOFConstraintSettings::SetLimitedAxis (EAxis inAxis,
float inMin,
float inMax 
)
+
+inline
+
+ +

Set a valid range for the constraint (if inMax < inMin, the axis will become fixed)

+ +
+
+

Member Data Documentation

+ +

◆ mAxisX1

+ +
+
+ + + + +
Vec3 SixDOFConstraintSettings::mAxisX1 = Vec3::sAxisX()
+
+ +
+
+ +

◆ mAxisX2

+ +
+
+ + + + +
Vec3 SixDOFConstraintSettings::mAxisX2 = Vec3::sAxisX()
+
+ +
+
+ +

◆ mAxisY1

+ +
+
+ + + + +
Vec3 SixDOFConstraintSettings::mAxisY1 = Vec3::sAxisY()
+
+ +
+
+ +

◆ mAxisY2

+ +
+
+ + + + +
Vec3 SixDOFConstraintSettings::mAxisY2 = Vec3::sAxisY()
+
+ +
+
+ +

◆ mLimitMax

+ +
+
+ + + + +
float SixDOFConstraintSettings::mLimitMax[EAxis::Num] = { FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX }
+
+ +
+
+ +

◆ mLimitMin

+ +
+
+ + + + +
float SixDOFConstraintSettings::mLimitMin[EAxis::Num] = { -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX, -FLT_MAX }
+
+

Limits. For translation: Min and max linear limits in m (0 is frame of body 1 and 2 coincide). For rotation: Min and max angular limits in rad (0 is frame of body 1 and 2 coincide). See comments at Axis enum for limit ranges.

+

Remove degree of freedom by setting min = FLT_MAX and max = -FLT_MAX. The constraint will be driven to 0 for this axis.

+

Free movement over an axis is allowed when min = -FLT_MAX and max = FLT_MAX.

+

Rotation limit around X-Axis: When limited, should be \(\in [-\pi, \pi]\). Can be asymmetric around zero.

+

Rotation limit around Y-Z Axis: Forms a pyramid or cone shaped limit:

    +
  • For pyramid, should be \(\in [-\pi, \pi]\) and does not need to be symmetrical around zero.
  • +
  • For cone should be \(\in [0, \pi]\) and needs to be symmetrical around zero (min limit is assumed to be -max limit).
  • +
+ +
+
+ +

◆ mLimitsSpringSettings

+ +
+
+ + + + +
SpringSettings SixDOFConstraintSettings::mLimitsSpringSettings[EAxis::NumTranslation]
+
+

When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will pull it back. Only soft translation limits are supported, soft rotation limits are not currently supported.

+ +
+
+ +

◆ mMaxFriction

+ +
+
+ + + + +
float SixDOFConstraintSettings::mMaxFriction[EAxis::Num] = { 0, 0, 0, 0, 0, 0 }
+
+

Friction settings. For translation: Max friction force in N. 0 = no friction. For rotation: Max friction torque in Nm. 0 = no friction.

+ +
+
+ +

◆ mMotorSettings

+ +
+
+ + + + +
MotorSettings SixDOFConstraintSettings::mMotorSettings[EAxis::Num]
+
+ +

Motor settings for each axis.

+ +
+
+ +

◆ mPosition1

+ +
+
+ + + + +
RVec3 SixDOFConstraintSettings::mPosition1 = RVec3::sZero()
+
+ +

Body 1 constraint reference frame (space determined by mSpace)

+ +
+
+ +

◆ mPosition2

+ +
+
+ + + + +
RVec3 SixDOFConstraintSettings::mPosition2 = RVec3::sZero()
+
+ +

Body 2 constraint reference frame (space determined by mSpace)

+ +
+
+ +

◆ mSpace

+ +
+
+ + + + +
EConstraintSpace SixDOFConstraintSettings::mSpace = EConstraintSpace::WorldSpace
+
+ +

This determines in which space the constraint is setup, all properties below should be in the specified space.

+ +
+
+ +

◆ mSwingType

+ +
+
+ + + + +
ESwingType SixDOFConstraintSettings::mSwingType = ESwingType::Cone
+
+ +

The type of swing constraint that we want to use.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_six_d_o_f_constraint_settings.js b/class_six_d_o_f_constraint_settings.js new file mode 100644 index 000000000..b55f44b28 --- /dev/null +++ b/class_six_d_o_f_constraint_settings.js @@ -0,0 +1,34 @@ +var class_six_d_o_f_constraint_settings = +[ + [ "EAxis", "class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cd", [ + [ "TranslationX", "class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cdaaa3c8b3e737aa478570057e143c88036", null ], + [ "TranslationY", "class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cda3473af06b46b9425a1df5eebef6aeb4d", null ], + [ "TranslationZ", "class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cda439ec6cb6451b42d32733372922adda7", null ], + [ "RotationX", "class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cda3bb18dfab58908c6fe0a34212574e804", null ], + [ "RotationY", "class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cdab473d487df9caec2fc6c2f2e5c7f0a40", null ], + [ "RotationZ", "class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cdaf83d5f4c529f5ff08c44a4a229536c7e", null ], + [ "Num", "class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cdabf8fb5a75f02a8ed4c0d14cb3e9f41d2", null ], + [ "NumTranslation", "class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cda8dce276a8243615282b784869418ba66", null ] + ] ], + [ "Create", "class_six_d_o_f_constraint_settings.html#a81635495977742c547f592996574fada", null ], + [ "IsFixedAxis", "class_six_d_o_f_constraint_settings.html#a8b211ad9cdf8dee7b453b10f2f747a89", null ], + [ "IsFreeAxis", "class_six_d_o_f_constraint_settings.html#afd2fee3c13a064451e982eb6f375f71c", null ], + [ "MakeFixedAxis", "class_six_d_o_f_constraint_settings.html#ad7888719516a85b67a8fc957c9158144", null ], + [ "MakeFreeAxis", "class_six_d_o_f_constraint_settings.html#ad5cff2e8b147d7697aa317df476dcddf", null ], + [ "RestoreBinaryState", "class_six_d_o_f_constraint_settings.html#ac7edaa973ecaf000923b3d1d795ce9cc", null ], + [ "SaveBinaryState", "class_six_d_o_f_constraint_settings.html#a765a3475ed53ef68701c6113ba7dd46b", null ], + [ "SetLimitedAxis", "class_six_d_o_f_constraint_settings.html#ad707d50d3c830f44ea2f10e3215a6789", null ], + [ "mAxisX1", "class_six_d_o_f_constraint_settings.html#afb4725190d803a84af4626aeaf371063", null ], + [ "mAxisX2", "class_six_d_o_f_constraint_settings.html#ad96be46141ae5232d5a0b1d941fa28cd", null ], + [ "mAxisY1", "class_six_d_o_f_constraint_settings.html#a5a0b4ba44def5ca8a0935b6d3856b2ce", null ], + [ "mAxisY2", "class_six_d_o_f_constraint_settings.html#a373e56a53fca7a5ccfc88dbf79a0080f", null ], + [ "mLimitMax", "class_six_d_o_f_constraint_settings.html#a9921157d87173da02847e55fd49d21f0", null ], + [ "mLimitMin", "class_six_d_o_f_constraint_settings.html#a647d4f74164c943a3a57cd7e2de765d0", null ], + [ "mLimitsSpringSettings", "class_six_d_o_f_constraint_settings.html#a43f8dc31c115124722b98689fce631f7", null ], + [ "mMaxFriction", "class_six_d_o_f_constraint_settings.html#a94fa871604ea96b8db52fe4a099029f8", null ], + [ "mMotorSettings", "class_six_d_o_f_constraint_settings.html#aa78bf1257750bc3d33b7fc7352d2d07a", null ], + [ "mPosition1", "class_six_d_o_f_constraint_settings.html#abf8617babef063477401b6a88b4df02d", null ], + [ "mPosition2", "class_six_d_o_f_constraint_settings.html#a6718d1e32b2c5933a3d1775ce564bee8", null ], + [ "mSpace", "class_six_d_o_f_constraint_settings.html#a6cf826e6c54d7f54f704c8579d586001", null ], + [ "mSwingType", "class_six_d_o_f_constraint_settings.html#a9d539e9b7ea81892b587426c4dd77d1d", null ] +]; \ No newline at end of file diff --git a/class_six_d_o_f_constraint_settings.png b/class_six_d_o_f_constraint_settings.png new file mode 100644 index 000000000..dc4ab7cfe Binary files /dev/null and b/class_six_d_o_f_constraint_settings.png differ diff --git a/class_skeletal_animation-members.html b/class_skeletal_animation-members.html new file mode 100644 index 000000000..da70f0c6f --- /dev/null +++ b/class_skeletal_animation-members.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletalAnimation Member List
+
+
+ +

This is the complete list of members for SkeletalAnimation, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< SkeletalAnimation >inline
AnimatedJointVector typedefSkeletalAnimation
cEmbeddedRefTarget< SkeletalAnimation >protectedstatic
GetAnimatedJoints() constSkeletalAnimationinline
GetAnimatedJoints()SkeletalAnimationinline
GetDuration() constSkeletalAnimation
GetRefCount() constRefTarget< SkeletalAnimation >inline
KeyframeVector typedefSkeletalAnimation
mRefCountRefTarget< SkeletalAnimation >mutableprotected
operator=(const RefTarget &)RefTarget< SkeletalAnimation >inline
RefTarget()=defaultRefTarget< SkeletalAnimation >inline
RefTarget(const RefTarget &)RefTarget< SkeletalAnimation >inline
Release() constRefTarget< SkeletalAnimation >inline
Sample(float inTime, SkeletonPose &ioPose) constSkeletalAnimation
ScaleJoints(float inScale)SkeletalAnimation
SetEmbedded() constRefTarget< SkeletalAnimation >inline
sInternalGetRefCountOffset()RefTarget< SkeletalAnimation >inlinestatic
~RefTarget()RefTarget< SkeletalAnimation >inline
+
+ + + + diff --git a/class_skeletal_animation.html b/class_skeletal_animation.html new file mode 100644 index 000000000..52c86fb6c --- /dev/null +++ b/class_skeletal_animation.html @@ -0,0 +1,364 @@ + + + + + + + +Jolt Physics: SkeletalAnimation Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletalAnimation Class Reference
+
+
+ +

Resource for a skinned animation. + More...

+ +

#include <SkeletalAnimation.h>

+
+Inheritance diagram for SkeletalAnimation:
+
+
+ + +RefTarget< SkeletalAnimation > + +
+ + + + + + + + + + + +

+Classes

class  AnimatedJoint
 Contains the animation for a single joint. More...
 
class  JointState
 Contains the current state of a joint, a local space transformation relative to its parent joint. More...
 
class  Keyframe
 Contains the state of a single joint at a particular time. More...
 
+ + + + + +

+Public Types

using KeyframeVector = Array< Keyframe >
 
using AnimatedJointVector = Array< AnimatedJoint >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

float GetDuration () const
 Get the length (in seconds) of this animation.
 
void ScaleJoints (float inScale)
 Scale the size of all joints by inScale.
 
void Sample (float inTime, SkeletonPose &ioPose) const
 Get the (interpolated) joint transforms at time inTime.
 
const AnimatedJointVectorGetAnimatedJoints () const
 Get joint samples.
 
AnimatedJointVectorGetAnimatedJoints ()
 
- Public Member Functions inherited from RefTarget< SkeletalAnimation >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< SkeletalAnimation >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< SkeletalAnimation >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< SkeletalAnimation >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Resource for a skinned animation.

+

Member Typedef Documentation

+ +

◆ AnimatedJointVector

+ + + +

◆ KeyframeVector

+ +
+
+ +
+
+

Member Function Documentation

+ +

◆ GetAnimatedJoints() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
AnimatedJointVector & SkeletalAnimation::GetAnimatedJoints ()
+
+inline
+
+ +
+
+ +

◆ GetAnimatedJoints() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const AnimatedJointVector & SkeletalAnimation::GetAnimatedJoints () const
+
+inline
+
+ +

Get joint samples.

+ +
+
+ +

◆ GetDuration()

+ +
+
+ + + + + + + +
float SkeletalAnimation::GetDuration () const
+
+ +

Get the length (in seconds) of this animation.

+ +
+
+ +

◆ Sample()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SkeletalAnimation::Sample (float inTime,
SkeletonPoseioPose 
) const
+
+ +

Get the (interpolated) joint transforms at time inTime.

+ +
+
+ +

◆ ScaleJoints()

+ +
+
+ + + + + + + + +
void SkeletalAnimation::ScaleJoints (float inScale)
+
+ +

Scale the size of all joints by inScale.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_skeletal_animation.js b/class_skeletal_animation.js new file mode 100644 index 000000000..fadcc0b96 --- /dev/null +++ b/class_skeletal_animation.js @@ -0,0 +1,13 @@ +var class_skeletal_animation = +[ + [ "AnimatedJoint", "class_skeletal_animation_1_1_animated_joint.html", "class_skeletal_animation_1_1_animated_joint" ], + [ "JointState", "class_skeletal_animation_1_1_joint_state.html", "class_skeletal_animation_1_1_joint_state" ], + [ "Keyframe", "class_skeletal_animation_1_1_keyframe.html", "class_skeletal_animation_1_1_keyframe" ], + [ "AnimatedJointVector", "class_skeletal_animation.html#afcf962a25906787e317084b81e4d4435", null ], + [ "KeyframeVector", "class_skeletal_animation.html#ae9603ef068dbb1fde3b1dde64fe232cc", null ], + [ "GetAnimatedJoints", "class_skeletal_animation.html#a364b26f699464be275b70b5cf9f4f76c", null ], + [ "GetAnimatedJoints", "class_skeletal_animation.html#a97437c1bae4626bb0c1e289db73dd712", null ], + [ "GetDuration", "class_skeletal_animation.html#abfab43ab605ec8a52b89adc38e1e092d", null ], + [ "Sample", "class_skeletal_animation.html#a1cc26e80f2a36deac4cbe3ecee10299b", null ], + [ "ScaleJoints", "class_skeletal_animation.html#a2af19e78e177662f1f8c3c3e5924d55e", null ] +]; \ No newline at end of file diff --git a/class_skeletal_animation.png b/class_skeletal_animation.png new file mode 100644 index 000000000..f3854af2f Binary files /dev/null and b/class_skeletal_animation.png differ diff --git a/class_skeletal_animation_1_1_animated_joint-members.html b/class_skeletal_animation_1_1_animated_joint-members.html new file mode 100644 index 000000000..80da9a6a8 --- /dev/null +++ b/class_skeletal_animation_1_1_animated_joint-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletalAnimation::AnimatedJoint Member List
+
+
+ +

This is the complete list of members for SkeletalAnimation::AnimatedJoint, including all inherited members.

+ + + +
mJointNameSkeletalAnimation::AnimatedJoint
mKeyframesSkeletalAnimation::AnimatedJoint
+
+ + + + diff --git a/class_skeletal_animation_1_1_animated_joint.html b/class_skeletal_animation_1_1_animated_joint.html new file mode 100644 index 000000000..8aca46a5a --- /dev/null +++ b/class_skeletal_animation_1_1_animated_joint.html @@ -0,0 +1,170 @@ + + + + + + + +Jolt Physics: SkeletalAnimation::AnimatedJoint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletalAnimation::AnimatedJoint Class Reference
+
+
+ +

Contains the animation for a single joint. + More...

+ +

#include <SkeletalAnimation.h>

+ + + + + + + + +

+Public Attributes

String mJointName
 Name of the joint.
 
KeyframeVector mKeyframes
 List of keyframes over time.
 
+

Detailed Description

+

Contains the animation for a single joint.

+

Member Data Documentation

+ +

◆ mJointName

+ +
+
+ + + + +
String SkeletalAnimation::AnimatedJoint::mJointName
+
+ +

Name of the joint.

+ +
+
+ +

◆ mKeyframes

+ +
+
+ + + + +
KeyframeVector SkeletalAnimation::AnimatedJoint::mKeyframes
+
+ +

List of keyframes over time.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_skeletal_animation_1_1_animated_joint.js b/class_skeletal_animation_1_1_animated_joint.js new file mode 100644 index 000000000..4713f65e2 --- /dev/null +++ b/class_skeletal_animation_1_1_animated_joint.js @@ -0,0 +1,5 @@ +var class_skeletal_animation_1_1_animated_joint = +[ + [ "mJointName", "class_skeletal_animation_1_1_animated_joint.html#acef5a5583e808f599a7a018329f2b1c1", null ], + [ "mKeyframes", "class_skeletal_animation_1_1_animated_joint.html#a6f522c5bab57cda9b07238a6eed41637", null ] +]; \ No newline at end of file diff --git a/class_skeletal_animation_1_1_joint_state-members.html b/class_skeletal_animation_1_1_joint_state-members.html new file mode 100644 index 000000000..f02a05e4b --- /dev/null +++ b/class_skeletal_animation_1_1_joint_state-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletalAnimation::JointState Member List
+
+
+ +

This is the complete list of members for SkeletalAnimation::JointState, including all inherited members.

+ + + + + +
FromMatrix(Mat44Arg inMatrix)SkeletalAnimation::JointState
mRotationSkeletalAnimation::JointState
mTranslationSkeletalAnimation::JointState
ToMatrix() constSkeletalAnimation::JointStateinline
+
+ + + + diff --git a/class_skeletal_animation_1_1_joint_state.html b/class_skeletal_animation_1_1_joint_state.html new file mode 100644 index 000000000..3be03399f --- /dev/null +++ b/class_skeletal_animation_1_1_joint_state.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: SkeletalAnimation::JointState Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletalAnimation::JointState Class Reference
+
+
+ +

Contains the current state of a joint, a local space transformation relative to its parent joint. + More...

+ +

#include <SkeletalAnimation.h>

+
+Inheritance diagram for SkeletalAnimation::JointState:
+
+
+ + +SkeletalAnimation::Keyframe + +
+ + + + + + + + +

+Public Member Functions

void FromMatrix (Mat44Arg inMatrix)
 Convert from a local space matrix.
 
Mat44 ToMatrix () const
 Convert to matrix representation.
 
+ + + + + + + +

+Public Attributes

Quat mRotation = Quat::sIdentity()
 Local space rotation of the joint.
 
Vec3 mTranslation = Vec3::sZero()
 Local space translation of the joint.
 
+

Detailed Description

+

Contains the current state of a joint, a local space transformation relative to its parent joint.

+

Member Function Documentation

+ +

◆ FromMatrix()

+ +
+
+ + + + + + + + +
void SkeletalAnimation::JointState::FromMatrix (Mat44Arg inMatrix)
+
+ +

Convert from a local space matrix.

+ +
+
+ +

◆ ToMatrix()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 SkeletalAnimation::JointState::ToMatrix () const
+
+inline
+
+ +

Convert to matrix representation.

+ +
+
+

Member Data Documentation

+ +

◆ mRotation

+ +
+
+ + + + +
Quat SkeletalAnimation::JointState::mRotation = Quat::sIdentity()
+
+ +

Local space rotation of the joint.

+ +
+
+ +

◆ mTranslation

+ +
+
+ + + + +
Vec3 SkeletalAnimation::JointState::mTranslation = Vec3::sZero()
+
+ +

Local space translation of the joint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_skeletal_animation_1_1_joint_state.js b/class_skeletal_animation_1_1_joint_state.js new file mode 100644 index 000000000..39ca221c7 --- /dev/null +++ b/class_skeletal_animation_1_1_joint_state.js @@ -0,0 +1,7 @@ +var class_skeletal_animation_1_1_joint_state = +[ + [ "FromMatrix", "class_skeletal_animation_1_1_joint_state.html#a1481a144208ed55cecd270be18ff0744", null ], + [ "ToMatrix", "class_skeletal_animation_1_1_joint_state.html#a9f73687fd3e02751c32b6815aa9293c4", null ], + [ "mRotation", "class_skeletal_animation_1_1_joint_state.html#a402db12a064bb22585d499010239d1ce", null ], + [ "mTranslation", "class_skeletal_animation_1_1_joint_state.html#af8e19b9f29f42e33163c89ddd57fe5c4", null ] +]; \ No newline at end of file diff --git a/class_skeletal_animation_1_1_joint_state.png b/class_skeletal_animation_1_1_joint_state.png new file mode 100644 index 000000000..f7bee13f5 Binary files /dev/null and b/class_skeletal_animation_1_1_joint_state.png differ diff --git a/class_skeletal_animation_1_1_keyframe-members.html b/class_skeletal_animation_1_1_keyframe-members.html new file mode 100644 index 000000000..2f715e2e1 --- /dev/null +++ b/class_skeletal_animation_1_1_keyframe-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletalAnimation::Keyframe Member List
+
+
+ +

This is the complete list of members for SkeletalAnimation::Keyframe, including all inherited members.

+ + + + + + +
FromMatrix(Mat44Arg inMatrix)SkeletalAnimation::JointState
mRotationSkeletalAnimation::JointState
mTimeSkeletalAnimation::Keyframe
mTranslationSkeletalAnimation::JointState
ToMatrix() constSkeletalAnimation::JointStateinline
+
+ + + + diff --git a/class_skeletal_animation_1_1_keyframe.html b/class_skeletal_animation_1_1_keyframe.html new file mode 100644 index 000000000..24ebabe11 --- /dev/null +++ b/class_skeletal_animation_1_1_keyframe.html @@ -0,0 +1,177 @@ + + + + + + + +Jolt Physics: SkeletalAnimation::Keyframe Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletalAnimation::Keyframe Class Reference
+
+
+ +

Contains the state of a single joint at a particular time. + More...

+ +

#include <SkeletalAnimation.h>

+
+Inheritance diagram for SkeletalAnimation::Keyframe:
+
+
+ + +SkeletalAnimation::JointState + +
+ + + + + + + + + + + + +

+Public Attributes

float mTime = 0.0f
 Time of keyframe in seconds.
 
- Public Attributes inherited from SkeletalAnimation::JointState
Quat mRotation = Quat::sIdentity()
 Local space rotation of the joint.
 
Vec3 mTranslation = Vec3::sZero()
 Local space translation of the joint.
 
+ + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from SkeletalAnimation::JointState
void FromMatrix (Mat44Arg inMatrix)
 Convert from a local space matrix.
 
Mat44 ToMatrix () const
 Convert to matrix representation.
 
+

Detailed Description

+

Contains the state of a single joint at a particular time.

+

Member Data Documentation

+ +

◆ mTime

+ +
+
+ + + + +
float SkeletalAnimation::Keyframe::mTime = 0.0f
+
+ +

Time of keyframe in seconds.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_skeletal_animation_1_1_keyframe.js b/class_skeletal_animation_1_1_keyframe.js new file mode 100644 index 000000000..dae4f6aa6 --- /dev/null +++ b/class_skeletal_animation_1_1_keyframe.js @@ -0,0 +1,4 @@ +var class_skeletal_animation_1_1_keyframe = +[ + [ "mTime", "class_skeletal_animation_1_1_keyframe.html#a75e2a3808d0cf210cafa3bd083769340", null ] +]; \ No newline at end of file diff --git a/class_skeletal_animation_1_1_keyframe.png b/class_skeletal_animation_1_1_keyframe.png new file mode 100644 index 000000000..6d4a22344 Binary files /dev/null and b/class_skeletal_animation_1_1_keyframe.png differ diff --git a/class_skeleton-members.html b/class_skeleton-members.html new file mode 100644 index 000000000..55d3659bd --- /dev/null +++ b/class_skeleton-members.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Skeleton Member List
+
+
+ +

This is the complete list of members for Skeleton, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
AddJoint(const string_view &inName, const string_view &inParentName=string_view())Skeletoninline
AddJoint(const string_view &inName, int inParentIndex)Skeletoninline
AddRef() constRefTarget< Skeleton >inline
AreJointsCorrectlyOrdered() constSkeleton
CalculateParentJointIndices()Skeleton
cEmbeddedRefTarget< Skeleton >protectedstatic
GetJoint(int inJoint) constSkeletoninline
GetJoint(int inJoint)Skeletoninline
GetJointCount() constSkeletoninline
GetJointIndex(const string_view &inName) constSkeleton
GetJoints() constSkeletoninline
GetJoints()Skeletoninline
GetRefCount() constRefTarget< Skeleton >inline
JointVector typedefSkeleton
mRefCountRefTarget< Skeleton >mutableprotected
operator=(const RefTarget &)RefTarget< Skeleton >inline
RefTarget()=defaultRefTarget< Skeleton >inline
RefTarget(const RefTarget &)RefTarget< Skeleton >inline
Release() constRefTarget< Skeleton >inline
SaveBinaryState(StreamOut &inStream) constSkeleton
SetEmbedded() constRefTarget< Skeleton >inline
sInternalGetRefCountOffset()RefTarget< Skeleton >inlinestatic
SkeletonResult typedefSkeleton
sRestoreFromBinaryState(StreamIn &inStream)Skeletonstatic
~RefTarget()RefTarget< Skeleton >inline
+
+ + + + diff --git a/class_skeleton.html b/class_skeleton.html new file mode 100644 index 000000000..51f0ba20a --- /dev/null +++ b/class_skeleton.html @@ -0,0 +1,560 @@ + + + + + + + +Jolt Physics: Skeleton Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Skeleton Class Reference
+
+
+ +

Resource that contains the joint hierarchy for a skeleton. + More...

+ +

#include <Skeleton.h>

+
+Inheritance diagram for Skeleton:
+
+
+ + +RefTarget< Skeleton > + +
+ + + + + +

+Classes

class  Joint
 Declare internal structure for a joint. More...
 
+ + + + + +

+Public Types

using SkeletonResult = Result< Ref< Skeleton > >
 
using JointVector = Array< Joint >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

int GetJointIndex (const string_view &inName) const
 Find joint by name.
 
void CalculateParentJointIndices ()
 Fill in parent joint indices based on name.
 
bool AreJointsCorrectlyOrdered () const
 
void SaveBinaryState (StreamOut &inStream) const
 Saves the state of this object in binary form to inStream.
 
Access to the joints
const JointVectorGetJoints () const
 
JointVectorGetJoints ()
 
int GetJointCount () const
 
const JointGetJoint (int inJoint) const
 
JointGetJoint (int inJoint)
 
uint AddJoint (const string_view &inName, const string_view &inParentName=string_view())
 
uint AddJoint (const string_view &inName, int inParentIndex)
 
- Public Member Functions inherited from RefTarget< Skeleton >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + +

+Static Public Member Functions

static SkeletonResult sRestoreFromBinaryState (StreamIn &inStream)
 Restore the state of this object from inStream.
 
- Static Public Member Functions inherited from RefTarget< Skeleton >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from RefTarget< Skeleton >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Skeleton >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Resource that contains the joint hierarchy for a skeleton.

+

Member Typedef Documentation

+ +

◆ JointVector

+ +
+
+ + + + +
using Skeleton::JointVector = Array<Joint>
+
+ +
+
+ +

◆ SkeletonResult

+ +
+
+ +
+
+

Member Function Documentation

+ +

◆ AddJoint() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint Skeleton::AddJoint (const string_view & inName,
const string_view & inParentName = string_view() 
)
+
+inline
+
+ +
+
+ +

◆ AddJoint() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint Skeleton::AddJoint (const string_view & inName,
int inParentIndex 
)
+
+inline
+
+ +
+
+ +

◆ AreJointsCorrectlyOrdered()

+ +
+
+ + + + + + + +
bool Skeleton::AreJointsCorrectlyOrdered () const
+
+

Many of the algorithms that use the Skeleton class require that parent joints are in the mJoints array before their children. This function returns true if this is the case, false if not.

+ +
+
+ +

◆ CalculateParentJointIndices()

+ +
+
+ + + + + + + +
void Skeleton::CalculateParentJointIndices ()
+
+ +

Fill in parent joint indices based on name.

+ +
+
+ +

◆ GetJoint() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Joint & Skeleton::GetJoint (int inJoint)
+
+inline
+
+ +
+
+ +

◆ GetJoint() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
const Joint & Skeleton::GetJoint (int inJoint) const
+
+inline
+
+ +
+
+ +

◆ GetJointCount()

+ +
+
+ + + + + +
+ + + + + + + +
int Skeleton::GetJointCount () const
+
+inline
+
+ +
+
+ +

◆ GetJointIndex()

+ +
+
+ + + + + + + + +
int Skeleton::GetJointIndex (const string_view & inName) const
+
+ +

Find joint by name.

+ +
+
+ +

◆ GetJoints() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JointVector & Skeleton::GetJoints ()
+
+inline
+
+ +
+
+ +

◆ GetJoints() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const JointVector & Skeleton::GetJoints () const
+
+inline
+
+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void Skeleton::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the state of this object in binary form to inStream.

+ +
+
+ +

◆ sRestoreFromBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
Skeleton::SkeletonResult Skeleton::sRestoreFromBinaryState (StreamIninStream)
+
+static
+
+ +

Restore the state of this object from inStream.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_skeleton.js b/class_skeleton.js new file mode 100644 index 000000000..60ce8dc2e --- /dev/null +++ b/class_skeleton.js @@ -0,0 +1,17 @@ +var class_skeleton = +[ + [ "Joint", "class_skeleton_1_1_joint.html", "class_skeleton_1_1_joint" ], + [ "JointVector", "class_skeleton.html#abc73ae3dc3fae778e7da6cea24f0897a", null ], + [ "SkeletonResult", "class_skeleton.html#a5c20e8863abf01154331314d8e72c75e", null ], + [ "AddJoint", "class_skeleton.html#aa058a06eb2f163d14b481bbd8d602be6", null ], + [ "AddJoint", "class_skeleton.html#ae52ee99ff637c0ceea37d46ba3b2d712", null ], + [ "AreJointsCorrectlyOrdered", "class_skeleton.html#aac4965d2cd0cf26b47ddc769e51c62fe", null ], + [ "CalculateParentJointIndices", "class_skeleton.html#a79ade25d7ec74a8bd21c87062844e21e", null ], + [ "GetJoint", "class_skeleton.html#a707d5fe6d41b2d5c2e8ecd1778c96551", null ], + [ "GetJoint", "class_skeleton.html#aec4d0e10a2ea5d08f7ea2ab4c40263c7", null ], + [ "GetJointCount", "class_skeleton.html#a42baf00a00f27baa28254ebcd638ecd3", null ], + [ "GetJointIndex", "class_skeleton.html#a8cd408fd1003399fcdd91c9272ccf06d", null ], + [ "GetJoints", "class_skeleton.html#a9f6a4cc9a5272704684dc07cea7e2fd9", null ], + [ "GetJoints", "class_skeleton.html#a70591341dd88358d31e0b8dd442c0ac2", null ], + [ "SaveBinaryState", "class_skeleton.html#a79a39de0388c130dd03acfb1d9e71f8d", null ] +]; \ No newline at end of file diff --git a/class_skeleton.png b/class_skeleton.png new file mode 100644 index 000000000..5db9f9245 Binary files /dev/null and b/class_skeleton.png differ diff --git a/class_skeleton_1_1_joint-members.html b/class_skeleton_1_1_joint-members.html new file mode 100644 index 000000000..6cb933149 --- /dev/null +++ b/class_skeleton_1_1_joint-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Skeleton::Joint Member List
+
+
+ +

This is the complete list of members for Skeleton::Joint, including all inherited members.

+ + + + + + +
Joint()=defaultSkeleton::Joint
Joint(const string_view &inName, const string_view &inParentName, int inParentJointIndex)Skeleton::Jointinline
mNameSkeleton::Joint
mParentJointIndexSkeleton::Joint
mParentNameSkeleton::Joint
+
+ + + + diff --git a/class_skeleton_1_1_joint.html b/class_skeleton_1_1_joint.html new file mode 100644 index 000000000..53618c959 --- /dev/null +++ b/class_skeleton_1_1_joint.html @@ -0,0 +1,265 @@ + + + + + + + +Jolt Physics: Skeleton::Joint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Skeleton::Joint Class Reference
+
+
+ +

Declare internal structure for a joint. + More...

+ +

#include <Skeleton.h>

+ + + + + + +

+Public Member Functions

 Joint ()=default
 
 Joint (const string_view &inName, const string_view &inParentName, int inParentJointIndex)
 
+ + + + + + + + + + +

+Public Attributes

String mName
 Name of the joint.
 
String mParentName
 Name of parent joint.
 
int mParentJointIndex = -1
 Index of parent joint (in mJoints) or -1 if it has no parent.
 
+

Detailed Description

+

Declare internal structure for a joint.

+

Constructor & Destructor Documentation

+ +

◆ Joint() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
Skeleton::Joint::Joint ()
+
+default
+
+ +
+
+ +

◆ Joint() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Skeleton::Joint::Joint (const string_view & inName,
const string_view & inParentName,
int inParentJointIndex 
)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mName

+ +
+
+ + + + +
String Skeleton::Joint::mName
+
+ +

Name of the joint.

+ +
+
+ +

◆ mParentJointIndex

+ +
+
+ + + + +
int Skeleton::Joint::mParentJointIndex = -1
+
+ +

Index of parent joint (in mJoints) or -1 if it has no parent.

+ +
+
+ +

◆ mParentName

+ +
+
+ + + + +
String Skeleton::Joint::mParentName
+
+ +

Name of parent joint.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_skeleton_1_1_joint.js b/class_skeleton_1_1_joint.js new file mode 100644 index 000000000..e5c0d250f --- /dev/null +++ b/class_skeleton_1_1_joint.js @@ -0,0 +1,8 @@ +var class_skeleton_1_1_joint = +[ + [ "Joint", "class_skeleton_1_1_joint.html#a87e1ff289639d959858305f1fb06635f", null ], + [ "Joint", "class_skeleton_1_1_joint.html#aa9efa0126fb47778e2a95f81c512ad0b", null ], + [ "mName", "class_skeleton_1_1_joint.html#a49426f9af65fba0c7a0a687079d38ff3", null ], + [ "mParentJointIndex", "class_skeleton_1_1_joint.html#a2bf4993eb1dc238b968e3881592e9823", null ], + [ "mParentName", "class_skeleton_1_1_joint.html#a575a54eccd755c88fd484272fd3cf38d", null ] +]; \ No newline at end of file diff --git a/class_skeleton_mapper-members.html b/class_skeleton_mapper-members.html new file mode 100644 index 000000000..633bf5bd3 --- /dev/null +++ b/class_skeleton_mapper-members.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletonMapper Member List
+
+
+ +

This is the complete list of members for SkeletonMapper, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< SkeletonMapper >inline
CanMapJoint typedefSkeletonMapper
cEmbeddedRefTarget< SkeletonMapper >protectedstatic
ChainVector typedefSkeletonMapper
GetChains() constSkeletonMapperinline
GetChains()SkeletonMapperinline
GetLockedTranslations() constSkeletonMapperinline
GetLockedTranslations()SkeletonMapperinline
GetMappedJointIdx(int inJoint1Idx) constSkeletonMapper
GetMappings() constSkeletonMapperinline
GetMappings()SkeletonMapperinline
GetRefCount() constRefTarget< SkeletonMapper >inline
GetUnmapped() constSkeletonMapperinline
GetUnmapped()SkeletonMapperinline
Initialize(const Skeleton *inSkeleton1, const Mat44 *inNeutralPose1, const Skeleton *inSkeleton2, const Mat44 *inNeutralPose2, const CanMapJoint &inCanMapJoint=sDefaultCanMapJoint)SkeletonMapper
IsJointTranslationLocked(int inJoint2Idx) constSkeletonMapper
LockAllTranslations(const Skeleton *inSkeleton2, const Mat44 *inNeutralPose2)SkeletonMapper
LockedVector typedefSkeletonMapper
LockTranslations(const Skeleton *inSkeleton2, const bool *inLockedTranslations, const Mat44 *inNeutralPose2)SkeletonMapper
Map(const Mat44 *inPose1ModelSpace, const Mat44 *inPose2LocalSpace, Mat44 *outPose2ModelSpace) constSkeletonMapper
MappingVector typedefSkeletonMapper
MapReverse(const Mat44 *inPose2ModelSpace, Mat44 *outPose1ModelSpace) constSkeletonMapper
mRefCountRefTarget< SkeletonMapper >mutableprotected
operator=(const RefTarget &)RefTarget< SkeletonMapper >inline
RefTarget()=defaultRefTarget< SkeletonMapper >inline
RefTarget(const RefTarget &)RefTarget< SkeletonMapper >inline
Release() constRefTarget< SkeletonMapper >inline
sDefaultCanMapJoint(const Skeleton *inSkeleton1, int inIndex1, const Skeleton *inSkeleton2, int inIndex2)SkeletonMapperinlinestatic
SetEmbedded() constRefTarget< SkeletonMapper >inline
sInternalGetRefCountOffset()RefTarget< SkeletonMapper >inlinestatic
UnmappedVector typedefSkeletonMapper
~RefTarget()RefTarget< SkeletonMapper >inline
+
+ + + + diff --git a/class_skeleton_mapper.html b/class_skeleton_mapper.html new file mode 100644 index 000000000..42a7f2e96 --- /dev/null +++ b/class_skeleton_mapper.html @@ -0,0 +1,823 @@ + + + + + + + +Jolt Physics: SkeletonMapper Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletonMapper Class Reference
+
+
+ +

Class that is able to map a low detail (ragdoll) skeleton to a high detail (animation) skeleton and vice versa. + More...

+ +

#include <SkeletonMapper.h>

+
+Inheritance diagram for SkeletonMapper:
+
+
+ + +RefTarget< SkeletonMapper > + +
+ + + + + + + + + + + + + + +

+Classes

class  Chain
 A joint chain that starts with a 1-on-1 mapped joint and ends with a 1-on-1 mapped joint with intermediate joints that cannot be mapped. More...
 
class  Locked
 Joints that should have their translation locked (fixed) More...
 
class  Mapping
 A joint that maps 1-on-1 to a joint in the other skeleton. More...
 
class  Unmapped
 Joints that could not be mapped from skeleton 1 to 2. More...
 
+ + + + + + + + + + + + +

+Public Types

using CanMapJoint = function< bool(const Skeleton *, int, const Skeleton *, int)>
 A function that is called to determine if a joint can be mapped from source to target skeleton.
 
using MappingVector = Array< Mapping >
 
using ChainVector = Array< Chain >
 
using UnmappedVector = Array< Unmapped >
 
using LockedVector = Array< Locked >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void Initialize (const Skeleton *inSkeleton1, const Mat44 *inNeutralPose1, const Skeleton *inSkeleton2, const Mat44 *inNeutralPose2, const CanMapJoint &inCanMapJoint=sDefaultCanMapJoint)
 
void LockTranslations (const Skeleton *inSkeleton2, const bool *inLockedTranslations, const Mat44 *inNeutralPose2)
 
void LockAllTranslations (const Skeleton *inSkeleton2, const Mat44 *inNeutralPose2)
 
void Map (const Mat44 *inPose1ModelSpace, const Mat44 *inPose2LocalSpace, Mat44 *outPose2ModelSpace) const
 
void MapReverse (const Mat44 *inPose2ModelSpace, Mat44 *outPose1ModelSpace) const
 
int GetMappedJointIdx (int inJoint1Idx) const
 Search through the directly mapped joints (mMappings) and find inJoint1Idx, returns the corresponding Joint2Idx or -1 if not found.
 
bool IsJointTranslationLocked (int inJoint2Idx) const
 Search through the locked translations (mLockedTranslations) and find if joint inJoint2Idx is locked.
 
Access to the mapped joints
const MappingVectorGetMappings () const
 
MappingVectorGetMappings ()
 
const ChainVectorGetChains () const
 
ChainVectorGetChains ()
 
const UnmappedVectorGetUnmapped () const
 
UnmappedVectorGetUnmapped ()
 
const LockedVectorGetLockedTranslations () const
 
LockedVectorGetLockedTranslations ()
 
- Public Member Functions inherited from RefTarget< SkeletonMapper >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + +

+Static Public Member Functions

static bool sDefaultCanMapJoint (const Skeleton *inSkeleton1, int inIndex1, const Skeleton *inSkeleton2, int inIndex2)
 Default function that checks if the names of the joints are equal.
 
- Static Public Member Functions inherited from RefTarget< SkeletonMapper >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from RefTarget< SkeletonMapper >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< SkeletonMapper >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that is able to map a low detail (ragdoll) skeleton to a high detail (animation) skeleton and vice versa.

+

Member Typedef Documentation

+ +

◆ CanMapJoint

+ +
+
+ + + + +
using SkeletonMapper::CanMapJoint = function<bool (const Skeleton *, int, const Skeleton *, int)>
+
+ +

A function that is called to determine if a joint can be mapped from source to target skeleton.

+ +
+
+ +

◆ ChainVector

+ +
+
+ +
+
+ +

◆ LockedVector

+ +
+
+ +
+
+ +

◆ MappingVector

+ +
+
+ +
+
+ +

◆ UnmappedVector

+ +
+
+ +
+
+

Member Function Documentation

+ +

◆ GetChains() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
ChainVector & SkeletonMapper::GetChains ()
+
+inline
+
+ +
+
+ +

◆ GetChains() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const ChainVector & SkeletonMapper::GetChains () const
+
+inline
+
+ +
+
+ +

◆ GetLockedTranslations() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
LockedVector & SkeletonMapper::GetLockedTranslations ()
+
+inline
+
+ +
+
+ +

◆ GetLockedTranslations() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const LockedVector & SkeletonMapper::GetLockedTranslations () const
+
+inline
+
+ +
+
+ +

◆ GetMappedJointIdx()

+ +
+
+ + + + + + + + +
int SkeletonMapper::GetMappedJointIdx (int inJoint1Idx) const
+
+ +

Search through the directly mapped joints (mMappings) and find inJoint1Idx, returns the corresponding Joint2Idx or -1 if not found.

+ +
+
+ +

◆ GetMappings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
MappingVector & SkeletonMapper::GetMappings ()
+
+inline
+
+ +
+
+ +

◆ GetMappings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const MappingVector & SkeletonMapper::GetMappings () const
+
+inline
+
+ +
+
+ +

◆ GetUnmapped() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
UnmappedVector & SkeletonMapper::GetUnmapped ()
+
+inline
+
+ +
+
+ +

◆ GetUnmapped() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const UnmappedVector & SkeletonMapper::GetUnmapped () const
+
+inline
+
+ +
+
+ +

◆ Initialize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void SkeletonMapper::Initialize (const SkeletoninSkeleton1,
const Mat44inNeutralPose1,
const SkeletoninSkeleton2,
const Mat44inNeutralPose2,
const CanMapJointinCanMapJoint = sDefaultCanMapJoint 
)
+
+

Initialize the skeleton mapper. Skeleton 1 should be the (low detail) ragdoll skeleton and skeleton 2 the (high detail) animation skeleton. We assume that each joint in skeleton 1 can be mapped to a joint in skeleton 2 (if not mapping from animation skeleton to ragdoll skeleton will be undefined). Skeleton 2 should have the same hierarchy as skeleton 1 but can contain extra joints between those in skeleton 1 and it can have extra joints at the root and leaves of the skeleton.

Parameters
+ + + + + + +
inSkeleton1Source skeleton to map from.
inNeutralPose1Neutral pose of the source skeleton (model space)
inSkeleton2Target skeleton to map to.
inNeutralPose2Neutral pose of the target skeleton (model space), inNeutralPose1 and inNeutralPose2 must match as closely as possible, preferably the position of the mappable joints should be identical.
inCanMapJointFunction that checks if joints in skeleton 1 and skeleton 2 are equal.
+
+
+ +
+
+ +

◆ IsJointTranslationLocked()

+ +
+
+ + + + + + + + +
bool SkeletonMapper::IsJointTranslationLocked (int inJoint2Idx) const
+
+ +

Search through the locked translations (mLockedTranslations) and find if joint inJoint2Idx is locked.

+ +
+
+ +

◆ LockAllTranslations()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SkeletonMapper::LockAllTranslations (const SkeletoninSkeleton2,
const Mat44inNeutralPose2 
)
+
+

After Initialize(), this can be called to lock the translation of all joints in skeleton 2 below the first mapped joint to those of the neutral pose. Because constraints are never 100% rigid, there's always a little bit of stretch in the ragdoll when the ragdoll is under stress. Locking the translations of the pose will remove the visual stretch from the ragdoll but will introduce a difference between the physical simulation and the visual representation.

Parameters
+ + + +
inSkeleton2Target skeleton to map to.
inNeutralPose2Neutral pose to take reference translations from
+
+
+ +
+
+ +

◆ LockTranslations()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SkeletonMapper::LockTranslations (const SkeletoninSkeleton2,
const bool * inLockedTranslations,
const Mat44inNeutralPose2 
)
+
+

This can be called so lock the translation of a specified set of joints in skeleton 2. Because constraints are never 100% rigid, there's always a little bit of stretch in the ragdoll when the ragdoll is under stress. Locking the translations of the pose will remove the visual stretch from the ragdoll but will introduce a difference between the physical simulation and the visual representation.

Parameters
+ + + + +
inSkeleton2Target skeleton to map to.
inLockedTranslationsAn array of bools the size of inSkeleton2->GetJointCount(), for each joint indicating if the joint is locked.
inNeutralPose2Neutral pose to take reference translations from
+
+
+ +
+
+ +

◆ Map()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SkeletonMapper::Map (const Mat44inPose1ModelSpace,
const Mat44inPose2LocalSpace,
Mat44outPose2ModelSpace 
) const
+
+

Map a pose. Joints that were directly mappable will be copied in model space from pose 1 to pose 2. Any joints that are only present in skeleton 2 will get their model space transform calculated through the local space transforms of pose 2. Joints that are part of a joint chain between two mapped joints will be reoriented towards the next joint in skeleton 1. This means that it is possible for unmapped joints to have some animation, but very extreme animation poses will show artifacts.

Parameters
+ + + + +
inPose1ModelSpacePose on skeleton 1 in model space
inPose2LocalSpacePose on skeleton 2 in local space (used for the joints that cannot be mapped)
outPose2ModelSpaceModel space pose on skeleton 2 (the output of the mapping)
+
+
+ +
+
+ +

◆ MapReverse()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SkeletonMapper::MapReverse (const Mat44inPose2ModelSpace,
Mat44outPose1ModelSpace 
) const
+
+

Reverse map a pose, this will only use the mappings and not the chains (it assumes that all joints in skeleton 1 are mapped)

Parameters
+ + + +
inPose2ModelSpaceModel space pose on skeleton 2
outPose1ModelSpaceWhen the function returns this will contain the model space pose for skeleton 1
+
+
+ +
+
+ +

◆ sDefaultCanMapJoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static bool SkeletonMapper::sDefaultCanMapJoint (const SkeletoninSkeleton1,
int inIndex1,
const SkeletoninSkeleton2,
int inIndex2 
)
+
+inlinestatic
+
+ +

Default function that checks if the names of the joints are equal.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_skeleton_mapper.js b/class_skeleton_mapper.js new file mode 100644 index 000000000..a1ec0ba38 --- /dev/null +++ b/class_skeleton_mapper.js @@ -0,0 +1,27 @@ +var class_skeleton_mapper = +[ + [ "Chain", "class_skeleton_mapper_1_1_chain.html", "class_skeleton_mapper_1_1_chain" ], + [ "Locked", "class_skeleton_mapper_1_1_locked.html", "class_skeleton_mapper_1_1_locked" ], + [ "Mapping", "class_skeleton_mapper_1_1_mapping.html", "class_skeleton_mapper_1_1_mapping" ], + [ "Unmapped", "class_skeleton_mapper_1_1_unmapped.html", "class_skeleton_mapper_1_1_unmapped" ], + [ "CanMapJoint", "class_skeleton_mapper.html#a6d56bcd1cbaecd9f2b9013e6e04b7bf8", null ], + [ "ChainVector", "class_skeleton_mapper.html#a33aaf112a5908982c45a27b4c80155ea", null ], + [ "LockedVector", "class_skeleton_mapper.html#a82c3843686fa3822fd9a5747be2a4b93", null ], + [ "MappingVector", "class_skeleton_mapper.html#a6f36fb9bc8686b8ec810c5435c03f419", null ], + [ "UnmappedVector", "class_skeleton_mapper.html#ae6baa7f85525bc34f52e77ac6cd2bbeb", null ], + [ "GetChains", "class_skeleton_mapper.html#a5438aa5e4ec00c89a000a12db4d4c8d4", null ], + [ "GetChains", "class_skeleton_mapper.html#ad60ebc6d5ff4c2d1402199c56f698c4a", null ], + [ "GetLockedTranslations", "class_skeleton_mapper.html#a9e9a4605520a2d38d190e0f651b3b6c2", null ], + [ "GetLockedTranslations", "class_skeleton_mapper.html#ae866ae2bc8b6461888f555b6a9be0d16", null ], + [ "GetMappedJointIdx", "class_skeleton_mapper.html#a21b16b76b464cf207878aa382c6cfde4", null ], + [ "GetMappings", "class_skeleton_mapper.html#a120855b77dff525cd820068b115e101f", null ], + [ "GetMappings", "class_skeleton_mapper.html#a13fa458d09dbb5f053aff54bb009d0eb", null ], + [ "GetUnmapped", "class_skeleton_mapper.html#ae5c8deb7c2eebbfd0f2088c33f991ec8", null ], + [ "GetUnmapped", "class_skeleton_mapper.html#a4b67e8a430be5b9150676f5103ef0974", null ], + [ "Initialize", "class_skeleton_mapper.html#a4c6938fe3c8557ea55e10cc3c8bfc387", null ], + [ "IsJointTranslationLocked", "class_skeleton_mapper.html#a6fcd34ef9c18a53f65679b5d671e6147", null ], + [ "LockAllTranslations", "class_skeleton_mapper.html#abbaa0b7c3a89c8332342c2cc6aa74262", null ], + [ "LockTranslations", "class_skeleton_mapper.html#a2741193b04cb2cbe14996962fbf71b97", null ], + [ "Map", "class_skeleton_mapper.html#aa5ea82586d40fbdc0d2930e51b008c9c", null ], + [ "MapReverse", "class_skeleton_mapper.html#a64ebec9cb8e8f0f7a4ec68fa0c30bfd6", null ] +]; \ No newline at end of file diff --git a/class_skeleton_mapper.png b/class_skeleton_mapper.png new file mode 100644 index 000000000..6354a78d4 Binary files /dev/null and b/class_skeleton_mapper.png differ diff --git a/class_skeleton_mapper_1_1_chain-members.html b/class_skeleton_mapper_1_1_chain-members.html new file mode 100644 index 000000000..e6b5dc101 --- /dev/null +++ b/class_skeleton_mapper_1_1_chain-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletonMapper::Chain Member List
+
+
+ +

This is the complete list of members for SkeletonMapper::Chain, including all inherited members.

+ + + + + +
Chain()=defaultSkeletonMapper::Chain
Chain(Array< int > &&inJointIndices1, Array< int > &&inJointIndices2)SkeletonMapper::Chaininline
mJointIndices1SkeletonMapper::Chain
mJointIndices2SkeletonMapper::Chain
+
+ + + + diff --git a/class_skeleton_mapper_1_1_chain.html b/class_skeleton_mapper_1_1_chain.html new file mode 100644 index 000000000..6d3d50fb7 --- /dev/null +++ b/class_skeleton_mapper_1_1_chain.html @@ -0,0 +1,240 @@ + + + + + + + +Jolt Physics: SkeletonMapper::Chain Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletonMapper::Chain Class Reference
+
+
+ +

A joint chain that starts with a 1-on-1 mapped joint and ends with a 1-on-1 mapped joint with intermediate joints that cannot be mapped. + More...

+ +

#include <SkeletonMapper.h>

+ + + + + + +

+Public Member Functions

 Chain ()=default
 
 Chain (Array< int > &&inJointIndices1, Array< int > &&inJointIndices2)
 
+ + + + + + + +

+Public Attributes

Array< int > mJointIndices1
 Joint chain from skeleton 1.
 
Array< int > mJointIndices2
 Corresponding joint chain from skeleton 2.
 
+

Detailed Description

+

A joint chain that starts with a 1-on-1 mapped joint and ends with a 1-on-1 mapped joint with intermediate joints that cannot be mapped.

+

Constructor & Destructor Documentation

+ +

◆ Chain() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SkeletonMapper::Chain::Chain ()
+
+default
+
+ +
+
+ +

◆ Chain() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
SkeletonMapper::Chain::Chain (Array< int > && inJointIndices1,
Array< int > && inJointIndices2 
)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mJointIndices1

+ +
+
+ + + + +
Array<int> SkeletonMapper::Chain::mJointIndices1
+
+ +

Joint chain from skeleton 1.

+ +
+
+ +

◆ mJointIndices2

+ +
+
+ + + + +
Array<int> SkeletonMapper::Chain::mJointIndices2
+
+ +

Corresponding joint chain from skeleton 2.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_skeleton_mapper_1_1_chain.js b/class_skeleton_mapper_1_1_chain.js new file mode 100644 index 000000000..c8b408f9c --- /dev/null +++ b/class_skeleton_mapper_1_1_chain.js @@ -0,0 +1,7 @@ +var class_skeleton_mapper_1_1_chain = +[ + [ "Chain", "class_skeleton_mapper_1_1_chain.html#aa5e326215c38ea7bd849bc4ba3b8704c", null ], + [ "Chain", "class_skeleton_mapper_1_1_chain.html#a064edb182617eff4faefced1027cf9ad", null ], + [ "mJointIndices1", "class_skeleton_mapper_1_1_chain.html#a0ab11a6d71e15f14ba33bfcf2656aa1d", null ], + [ "mJointIndices2", "class_skeleton_mapper_1_1_chain.html#a7dc7efb54107e58e7c82d2e49eeec139", null ] +]; \ No newline at end of file diff --git a/class_skeleton_mapper_1_1_locked-members.html b/class_skeleton_mapper_1_1_locked-members.html new file mode 100644 index 000000000..ee7b8275c --- /dev/null +++ b/class_skeleton_mapper_1_1_locked-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletonMapper::Locked Member List
+
+
+ +

This is the complete list of members for SkeletonMapper::Locked, including all inherited members.

+ + + + +
mJointIdxSkeletonMapper::Locked
mParentJointIdxSkeletonMapper::Locked
mTranslationSkeletonMapper::Locked
+
+ + + + diff --git a/class_skeleton_mapper_1_1_locked.html b/class_skeleton_mapper_1_1_locked.html new file mode 100644 index 000000000..45f638071 --- /dev/null +++ b/class_skeleton_mapper_1_1_locked.html @@ -0,0 +1,189 @@ + + + + + + + +Jolt Physics: SkeletonMapper::Locked Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletonMapper::Locked Class Reference
+
+
+ +

Joints that should have their translation locked (fixed) + More...

+ +

#include <SkeletonMapper.h>

+ + + + + + + + + + + +

+Public Attributes

int mJointIdx
 Joint index of joint with locked translation (in skeleton 2)
 
int mParentJointIdx
 Parent joint index of joint with locked translation (in skeleton 2)
 
Vec3 mTranslation
 Translation of neutral pose.
 
+

Detailed Description

+

Joints that should have their translation locked (fixed)

+

Member Data Documentation

+ +

◆ mJointIdx

+ +
+
+ + + + +
int SkeletonMapper::Locked::mJointIdx
+
+ +

Joint index of joint with locked translation (in skeleton 2)

+ +
+
+ +

◆ mParentJointIdx

+ +
+
+ + + + +
int SkeletonMapper::Locked::mParentJointIdx
+
+ +

Parent joint index of joint with locked translation (in skeleton 2)

+ +
+
+ +

◆ mTranslation

+ +
+
+ + + + +
Vec3 SkeletonMapper::Locked::mTranslation
+
+ +

Translation of neutral pose.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_skeleton_mapper_1_1_locked.js b/class_skeleton_mapper_1_1_locked.js new file mode 100644 index 000000000..30504b4fe --- /dev/null +++ b/class_skeleton_mapper_1_1_locked.js @@ -0,0 +1,6 @@ +var class_skeleton_mapper_1_1_locked = +[ + [ "mJointIdx", "class_skeleton_mapper_1_1_locked.html#a3f7fd92624a86f0fcd323e594e336e7b", null ], + [ "mParentJointIdx", "class_skeleton_mapper_1_1_locked.html#af041c178fc6e97c469f138ea9fb6797e", null ], + [ "mTranslation", "class_skeleton_mapper_1_1_locked.html#a8c531c4839b8a2c8afd287eed3118faf", null ] +]; \ No newline at end of file diff --git a/class_skeleton_mapper_1_1_mapping-members.html b/class_skeleton_mapper_1_1_mapping-members.html new file mode 100644 index 000000000..596eba7f5 --- /dev/null +++ b/class_skeleton_mapper_1_1_mapping-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletonMapper::Mapping Member List
+
+
+ +

This is the complete list of members for SkeletonMapper::Mapping, including all inherited members.

+ + + + + + + +
Mapping()=defaultSkeletonMapper::Mapping
Mapping(int inJointIdx1, int inJointIdx2, Mat44Arg inJoint1To2)SkeletonMapper::Mappinginline
mJoint1To2SkeletonMapper::Mapping
mJoint2To1SkeletonMapper::Mapping
mJointIdx1SkeletonMapper::Mapping
mJointIdx2SkeletonMapper::Mapping
+
+ + + + diff --git a/class_skeleton_mapper_1_1_mapping.html b/class_skeleton_mapper_1_1_mapping.html new file mode 100644 index 000000000..a9e0ddbcf --- /dev/null +++ b/class_skeleton_mapper_1_1_mapping.html @@ -0,0 +1,284 @@ + + + + + + + +Jolt Physics: SkeletonMapper::Mapping Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletonMapper::Mapping Class Reference
+
+
+ +

A joint that maps 1-on-1 to a joint in the other skeleton. + More...

+ +

#include <SkeletonMapper.h>

+ + + + + + +

+Public Member Functions

 Mapping ()=default
 
 Mapping (int inJointIdx1, int inJointIdx2, Mat44Arg inJoint1To2)
 
+ + + + + + + + + + + + + +

+Public Attributes

int mJointIdx1
 Index of joint from skeleton 1.
 
int mJointIdx2
 Corresponding index of joint from skeleton 2.
 
Mat44 mJoint1To2
 Transforms this joint from skeleton 1 to 2.
 
Mat44 mJoint2To1
 Inverse of the transform above.
 
+

Detailed Description

+

A joint that maps 1-on-1 to a joint in the other skeleton.

+

Constructor & Destructor Documentation

+ +

◆ Mapping() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SkeletonMapper::Mapping::Mapping ()
+
+default
+
+ +
+
+ +

◆ Mapping() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
SkeletonMapper::Mapping::Mapping (int inJointIdx1,
int inJointIdx2,
Mat44Arg inJoint1To2 
)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mJoint1To2

+ +
+
+ + + + +
Mat44 SkeletonMapper::Mapping::mJoint1To2
+
+ +

Transforms this joint from skeleton 1 to 2.

+ +
+
+ +

◆ mJoint2To1

+ +
+
+ + + + +
Mat44 SkeletonMapper::Mapping::mJoint2To1
+
+ +

Inverse of the transform above.

+ +
+
+ +

◆ mJointIdx1

+ +
+
+ + + + +
int SkeletonMapper::Mapping::mJointIdx1
+
+ +

Index of joint from skeleton 1.

+ +
+
+ +

◆ mJointIdx2

+ +
+
+ + + + +
int SkeletonMapper::Mapping::mJointIdx2
+
+ +

Corresponding index of joint from skeleton 2.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_skeleton_mapper_1_1_mapping.js b/class_skeleton_mapper_1_1_mapping.js new file mode 100644 index 000000000..fdbec19fc --- /dev/null +++ b/class_skeleton_mapper_1_1_mapping.js @@ -0,0 +1,9 @@ +var class_skeleton_mapper_1_1_mapping = +[ + [ "Mapping", "class_skeleton_mapper_1_1_mapping.html#a4fa976d827f778a48ce2ab5f24b9c9b5", null ], + [ "Mapping", "class_skeleton_mapper_1_1_mapping.html#ad74f176d784c420dc3816c47f100a91f", null ], + [ "mJoint1To2", "class_skeleton_mapper_1_1_mapping.html#a15f95111d1d250ca13a5de5e27f55409", null ], + [ "mJoint2To1", "class_skeleton_mapper_1_1_mapping.html#a508b9a2e6f5072665751b14c66b1a426", null ], + [ "mJointIdx1", "class_skeleton_mapper_1_1_mapping.html#ad9c3aee5f9212c14890160465b4b5e76", null ], + [ "mJointIdx2", "class_skeleton_mapper_1_1_mapping.html#afb9eae211c89b42d0fbafcba3c83dc9a", null ] +]; \ No newline at end of file diff --git a/class_skeleton_mapper_1_1_unmapped-members.html b/class_skeleton_mapper_1_1_unmapped-members.html new file mode 100644 index 000000000..bf4cae124 --- /dev/null +++ b/class_skeleton_mapper_1_1_unmapped-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletonMapper::Unmapped Member List
+
+
+ +

This is the complete list of members for SkeletonMapper::Unmapped, including all inherited members.

+ + + + + +
mJointIdxSkeletonMapper::Unmapped
mParentJointIdxSkeletonMapper::Unmapped
Unmapped()=defaultSkeletonMapper::Unmapped
Unmapped(int inJointIdx, int inParentJointIdx)SkeletonMapper::Unmappedinline
+
+ + + + diff --git a/class_skeleton_mapper_1_1_unmapped.html b/class_skeleton_mapper_1_1_unmapped.html new file mode 100644 index 000000000..fc2b41459 --- /dev/null +++ b/class_skeleton_mapper_1_1_unmapped.html @@ -0,0 +1,240 @@ + + + + + + + +Jolt Physics: SkeletonMapper::Unmapped Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletonMapper::Unmapped Class Reference
+
+
+ +

Joints that could not be mapped from skeleton 1 to 2. + More...

+ +

#include <SkeletonMapper.h>

+ + + + + + +

+Public Member Functions

 Unmapped ()=default
 
 Unmapped (int inJointIdx, int inParentJointIdx)
 
+ + + + + + + +

+Public Attributes

int mJointIdx
 Joint index of unmappable joint.
 
int mParentJointIdx
 Parent joint index of unmappable joint.
 
+

Detailed Description

+

Joints that could not be mapped from skeleton 1 to 2.

+

Constructor & Destructor Documentation

+ +

◆ Unmapped() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SkeletonMapper::Unmapped::Unmapped ()
+
+default
+
+ +
+
+ +

◆ Unmapped() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
SkeletonMapper::Unmapped::Unmapped (int inJointIdx,
int inParentJointIdx 
)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mJointIdx

+ +
+
+ + + + +
int SkeletonMapper::Unmapped::mJointIdx
+
+ +

Joint index of unmappable joint.

+ +
+
+ +

◆ mParentJointIdx

+ +
+
+ + + + +
int SkeletonMapper::Unmapped::mParentJointIdx
+
+ +

Parent joint index of unmappable joint.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_skeleton_mapper_1_1_unmapped.js b/class_skeleton_mapper_1_1_unmapped.js new file mode 100644 index 000000000..d1d61c084 --- /dev/null +++ b/class_skeleton_mapper_1_1_unmapped.js @@ -0,0 +1,7 @@ +var class_skeleton_mapper_1_1_unmapped = +[ + [ "Unmapped", "class_skeleton_mapper_1_1_unmapped.html#a59408695490b38ff289316be1b90c8e2", null ], + [ "Unmapped", "class_skeleton_mapper_1_1_unmapped.html#a2420a9dbf237dfdd9fb74c7b8bd1eec0", null ], + [ "mJointIdx", "class_skeleton_mapper_1_1_unmapped.html#a2fc5f1a02042bc53fe51ce0e76b88225", null ], + [ "mParentJointIdx", "class_skeleton_mapper_1_1_unmapped.html#ad91b1fd5a34203f9aeacd6234c56da17", null ] +]; \ No newline at end of file diff --git a/class_skeleton_pose-members.html b/class_skeleton_pose-members.html new file mode 100644 index 000000000..10206180f --- /dev/null +++ b/class_skeleton_pose-members.html @@ -0,0 +1,136 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SkeletonPose Member List
+
+
+ +

This is the complete list of members for SkeletonPose, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
CalculateJointMatrices()SkeletonPose
CalculateJointStates()SkeletonPose
CalculateLocalSpaceJointMatrices(Mat44 *outMatrices) constSkeletonPose
Draw(const DrawSettings &inDrawSettings, DebugRenderer *inRenderer, RMat44Arg inOffset=RMat44::sIdentity()) constSkeletonPose
GetJoint(int inJoint) constSkeletonPoseinline
GetJoint(int inJoint)SkeletonPoseinline
GetJointCount() constSkeletonPoseinline
GetJointMatrices() constSkeletonPoseinline
GetJointMatrices()SkeletonPoseinline
GetJointMatrix(int inJoint) constSkeletonPoseinline
GetJointMatrix(int inJoint)SkeletonPoseinline
GetJoints() constSkeletonPoseinline
GetJoints()SkeletonPoseinline
GetRootOffset() constSkeletonPoseinline
GetSkeleton() constSkeletonPoseinline
JointState typedefSkeletonPose
JointStateVector typedefSkeletonPose
Mat44Vector typedefSkeletonPose
SetRootOffset(RVec3Arg inOffset)SkeletonPoseinline
SetSkeleton(const Skeleton *inSkeleton)SkeletonPose
+
+ + + + diff --git a/class_skeleton_pose.html b/class_skeleton_pose.html new file mode 100644 index 000000000..4724ba80b --- /dev/null +++ b/class_skeleton_pose.html @@ -0,0 +1,654 @@ + + + + + + + +Jolt Physics: SkeletonPose Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SkeletonPose Class Reference
+
+
+ +

Instance of a skeleton, contains the pose the current skeleton is in. + More...

+ +

#include <SkeletonPose.h>

+ + + + + +

+Classes

struct  DrawSettings
 Draw settings. More...
 
+ + + + + + + +

+Public Types

using JointState = SkeletalAnimation::JointState
 
using JointStateVector = Array< JointState >
 
using Mat44Vector = Array< Mat44 >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void SetRootOffset (RVec3Arg inOffset)
 Extra offset applied to the root (and therefore also to all of its children)
 
RVec3 GetRootOffset () const
 
void CalculateJointMatrices ()
 Convert the joint states to joint matrices.
 
void CalculateJointStates ()
 Convert joint matrices to joint states.
 
void CalculateLocalSpaceJointMatrices (Mat44 *outMatrices) const
 Outputs the joint matrices in local space (ensure that outMatrices has GetJointCount() elements, assumes that values in GetJoints() is up to date)
 
void Draw (const DrawSettings &inDrawSettings, DebugRenderer *inRenderer, RMat44Arg inOffset=RMat44::sIdentity()) const
 Draw current pose.
 
Skeleton
void SetSkeleton (const Skeleton *inSkeleton)
 
const SkeletonGetSkeleton () const
 
Properties of the joints
uint GetJointCount () const
 
const JointStateVectorGetJoints () const
 
JointStateVectorGetJoints ()
 
const JointStateGetJoint (int inJoint) const
 
JointStateGetJoint (int inJoint)
 
Joint matrices
const Mat44VectorGetJointMatrices () const
 
Mat44VectorGetJointMatrices ()
 
const Mat44GetJointMatrix (int inJoint) const
 
Mat44GetJointMatrix (int inJoint)
 
+

Detailed Description

+

Instance of a skeleton, contains the pose the current skeleton is in.

+

Member Typedef Documentation

+ +

◆ JointState

+ + + +

◆ JointStateVector

+ +
+
+ +
+
+ +

◆ Mat44Vector

+ +
+
+ + + + +
using SkeletonPose::Mat44Vector = Array<Mat44>
+
+ +
+
+

Member Function Documentation

+ +

◆ CalculateJointMatrices()

+ +
+
+ + + + + + + +
void SkeletonPose::CalculateJointMatrices ()
+
+ +

Convert the joint states to joint matrices.

+ +
+
+ +

◆ CalculateJointStates()

+ +
+
+ + + + + + + +
void SkeletonPose::CalculateJointStates ()
+
+ +

Convert joint matrices to joint states.

+ +
+
+ +

◆ CalculateLocalSpaceJointMatrices()

+ +
+
+ + + + + + + + +
void SkeletonPose::CalculateLocalSpaceJointMatrices (Mat44outMatrices) const
+
+ +

Outputs the joint matrices in local space (ensure that outMatrices has GetJointCount() elements, assumes that values in GetJoints() is up to date)

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SkeletonPose::Draw (const DrawSettingsinDrawSettings,
DebugRendererinRenderer,
RMat44Arg inOffset = RMat44::sIdentity() 
) const
+
+ +

Draw current pose.

+ +
+
+ +

◆ GetJoint() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JointState & SkeletonPose::GetJoint (int inJoint)
+
+inline
+
+ +
+
+ +

◆ GetJoint() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
const JointState & SkeletonPose::GetJoint (int inJoint) const
+
+inline
+
+ +
+
+ +

◆ GetJointCount()

+ +
+
+ + + + + +
+ + + + + + + +
uint SkeletonPose::GetJointCount () const
+
+inline
+
+ +
+
+ +

◆ GetJointMatrices() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
Mat44Vector & SkeletonPose::GetJointMatrices ()
+
+inline
+
+ +
+
+ +

◆ GetJointMatrices() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const Mat44Vector & SkeletonPose::GetJointMatrices () const
+
+inline
+
+ +
+
+ +

◆ GetJointMatrix() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Mat44 & SkeletonPose::GetJointMatrix (int inJoint)
+
+inline
+
+ +
+
+ +

◆ GetJointMatrix() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
const Mat44 & SkeletonPose::GetJointMatrix (int inJoint) const
+
+inline
+
+ +
+
+ +

◆ GetJoints() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JointStateVector & SkeletonPose::GetJoints ()
+
+inline
+
+ +
+
+ +

◆ GetJoints() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const JointStateVector & SkeletonPose::GetJoints () const
+
+inline
+
+ +
+
+ +

◆ GetRootOffset()

+ +
+
+ + + + + +
+ + + + + + + +
RVec3 SkeletonPose::GetRootOffset () const
+
+inline
+
+ +
+
+ +

◆ GetSkeleton()

+ +
+
+ + + + + +
+ + + + + + + +
const Skeleton * SkeletonPose::GetSkeleton () const
+
+inline
+
+ +
+
+ +

◆ SetRootOffset()

+ +
+
+ + + + + +
+ + + + + + + + +
void SkeletonPose::SetRootOffset (RVec3Arg inOffset)
+
+inline
+
+ +

Extra offset applied to the root (and therefore also to all of its children)

+ +
+
+ +

◆ SetSkeleton()

+ +
+
+ + + + + + + + +
JPH_NAMESPACE_BEGIN void SkeletonPose::SetSkeleton (const SkeletoninSkeleton)
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_skeleton_pose.js b/class_skeleton_pose.js new file mode 100644 index 000000000..684cc003d --- /dev/null +++ b/class_skeleton_pose.js @@ -0,0 +1,24 @@ +var class_skeleton_pose = +[ + [ "DrawSettings", "struct_skeleton_pose_1_1_draw_settings.html", "struct_skeleton_pose_1_1_draw_settings" ], + [ "JointState", "class_skeleton_pose.html#ac2a127126bcbac1a033e75e7371ba94b", null ], + [ "JointStateVector", "class_skeleton_pose.html#a9e4d521e23999bef15f0a0fd2b5f4c91", null ], + [ "Mat44Vector", "class_skeleton_pose.html#a8539fe080abaa69f63d4a071404c320d", null ], + [ "CalculateJointMatrices", "class_skeleton_pose.html#a5ede20d56bfae3b3be7c26165a34fdbc", null ], + [ "CalculateJointStates", "class_skeleton_pose.html#a39706bc656fd0c4907689bad870a45af", null ], + [ "CalculateLocalSpaceJointMatrices", "class_skeleton_pose.html#abbbb73391837675160aa67daba69c2eb", null ], + [ "Draw", "class_skeleton_pose.html#af5874cab5f76ecc0df0d7d9e93b2eaf8", null ], + [ "GetJoint", "class_skeleton_pose.html#a91f801a519aa40ed65e4ff2aee71bc93", null ], + [ "GetJoint", "class_skeleton_pose.html#ae567801b0a70313f684d36c3137328ec", null ], + [ "GetJointCount", "class_skeleton_pose.html#ada9b4b8c72f7573109277f36c5ad5eb0", null ], + [ "GetJointMatrices", "class_skeleton_pose.html#aa8669194e2646ec9de2fbab978e299be", null ], + [ "GetJointMatrices", "class_skeleton_pose.html#a123163a0e50b7f76a7cb208df96d59b3", null ], + [ "GetJointMatrix", "class_skeleton_pose.html#a067c1fa5353fa017050c331a43aeb63c", null ], + [ "GetJointMatrix", "class_skeleton_pose.html#a9c8491b64eb337b033003d67f9c1d962", null ], + [ "GetJoints", "class_skeleton_pose.html#a62ddf1ab02eaf223875eeebcb2dfa617", null ], + [ "GetJoints", "class_skeleton_pose.html#a7c8c656a80fb4b9509744d5a991cc34c", null ], + [ "GetRootOffset", "class_skeleton_pose.html#ace1c753663d81c68c7896c95c34a6b2a", null ], + [ "GetSkeleton", "class_skeleton_pose.html#a2e60e72ebf66740c7d9d99274b70efe7", null ], + [ "SetRootOffset", "class_skeleton_pose.html#a83a440cd06f24159b01879670c4bf856", null ], + [ "SetSkeleton", "class_skeleton_pose.html#a16e37c44ea1f562854d8a6e3d0afafcf", null ] +]; \ No newline at end of file diff --git a/class_slider_constraint-members.html b/class_slider_constraint-members.html new file mode 100644 index 000000000..906fafbaf --- /dev/null +++ b/class_slider_constraint-members.html @@ -0,0 +1,193 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SliderConstraint Member List
+
+
+ +

This is the complete list of members for SliderConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const overrideSliderConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) const overrideSliderConstraintvirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overrideSliderConstraintvirtual
GetConstraintToBody1Matrix() const overrideSliderConstraintvirtual
GetConstraintToBody2Matrix() const overrideSliderConstraintvirtual
GetCurrentPosition() constSliderConstraint
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetLimitsMax() constSliderConstraintinline
GetLimitsMin() constSliderConstraintinline
GetLimitsSpringSettings() constSliderConstraintinline
GetLimitsSpringSettings()SliderConstraintinline
GetMaxFrictionForce() constSliderConstraintinline
GetMotorSettings()SliderConstraintinline
GetMotorSettings() constSliderConstraintinline
GetMotorState() constSliderConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const overrideSliderConstraintinlinevirtual
GetTargetPosition() constSliderConstraintinline
GetTargetVelocity() constSliderConstraintinline
GetTotalLambdaMotor() constSliderConstraintinline
GetTotalLambdaPosition() constSliderConstraintinline
GetTotalLambdaPositionLimits() constSliderConstraintinline
GetTotalLambdaRotation() constSliderConstraintinline
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
HasLimits() constSliderConstraintinline
IsActive() const overrideTwoBodyConstraintinlinevirtual
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overrideSliderConstraintvirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart() overrideSliderConstraintvirtual
RestoreState(StateRecorder &inStream) overrideSliderConstraintvirtual
SaveState(StateRecorder &inStream) const overrideSliderConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetLimits(float inLimitsMin, float inLimitsMax)SliderConstraint
SetLimitsSpringSettings(const SpringSettings &inLimitsSpringSettings)SliderConstraintinline
SetMaxFrictionForce(float inFrictionForce)SliderConstraintinline
SetMotorState(EMotorState inState)SliderConstraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetTargetPosition(float inPosition)SliderConstraintinline
SetTargetVelocity(float inVelocity)SliderConstraintinline
SetupVelocityConstraint(float inDeltaTime) overrideSliderConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SliderConstraint(Body &inBody1, Body &inBody2, const SliderConstraintSettings &inSettings)SliderConstraint
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overrideSliderConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overrideSliderConstraintvirtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overrideSliderConstraintvirtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_slider_constraint.html b/class_slider_constraint.html new file mode 100644 index 000000000..a2d746b47 --- /dev/null +++ b/class_slider_constraint.html @@ -0,0 +1,1374 @@ + + + + + + + +Jolt Physics: SliderConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SliderConstraint Class Referencefinal
+
+
+ +

A slider constraint allows movement in only 1 axis (and no rotation). Also known as a prismatic constraint. + More...

+ +

#include <SliderConstraint.h>

+
+Inheritance diagram for SliderConstraint:
+
+
+ + +TwoBodyConstraint +Constraint +RefTarget< Constraint > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE SliderConstraint (Body &inBody1, Body &inBody2, const SliderConstraintSettings &inSettings)
 Construct slider constraint.
 
virtual EConstraintSubType GetSubType () const override
 Get the sub type of a constraint.
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
virtual Mat44 GetConstraintToBody1Matrix () const override
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const override
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
float GetCurrentPosition () const
 Get the current distance from the rest position.
 
void SetMaxFrictionForce (float inFrictionForce)
 Friction control.
 
float GetMaxFrictionForce () const
 
MotorSettingsGetMotorSettings ()
 Motor settings.
 
const MotorSettingsGetMotorSettings () const
 
void SetMotorState (EMotorState inState)
 
EMotorState GetMotorState () const
 
void SetTargetVelocity (float inVelocity)
 
float GetTargetVelocity () const
 
void SetTargetPosition (float inPosition)
 
float GetTargetPosition () const
 
void SetLimits (float inLimitsMin, float inLimitsMax)
 Update the limits of the slider constraint (see SliderConstraintSettings)
 
float GetLimitsMin () const
 
float GetLimitsMax () const
 
bool HasLimits () const
 
const SpringSettingsGetLimitsSpringSettings () const
 Update the limits spring settings.
 
SpringSettingsGetLimitsSpringSettings ()
 
void SetLimitsSpringSettings (const SpringSettings &inLimitsSpringSettings)
 
- Public Member Functions inherited from TwoBodyConstraint
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + +

Get Lagrange multiplier from last physics update (the linear/angular impulse applied to satisfy the constraint)

Vector< 2 > GetTotalLambdaPosition () const
 
float GetTotalLambdaPositionLimits () const
 
Vec3 GetTotalLambdaRotation () const
 
float GetTotalLambdaMotor () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from TwoBodyConstraint
BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A slider constraint allows movement in only 1 axis (and no rotation). Also known as a prismatic constraint.

+

Constructor & Destructor Documentation

+ +

◆ SliderConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
SliderConstraint::SliderConstraint (BodyinBody1,
BodyinBody2,
const SliderConstraintSettingsinSettings 
)
+
+ +

Construct slider constraint.

+ +
+
+

Member Function Documentation

+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ DrawConstraintLimits()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraint::DrawConstraintLimits (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > SliderConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 SliderConstraint::GetConstraintToBody1Matrix () const
+
+overridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
Mat44 SliderConstraint::GetConstraintToBody2Matrix () const
+
+overridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetCurrentPosition()

+ +
+
+ + + + + + + +
float SliderConstraint::GetCurrentPosition () const
+
+ +

Get the current distance from the rest position.

+ +
+
+ +

◆ GetLimitsMax()

+ +
+
+ + + + + +
+ + + + + + + +
float SliderConstraint::GetLimitsMax () const
+
+inline
+
+ +
+
+ +

◆ GetLimitsMin()

+ +
+
+ + + + + +
+ + + + + + + +
float SliderConstraint::GetLimitsMin () const
+
+inline
+
+ +
+
+ +

◆ GetLimitsSpringSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SpringSettings & SliderConstraint::GetLimitsSpringSettings ()
+
+inline
+
+ +
+
+ +

◆ GetLimitsSpringSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const SpringSettings & SliderConstraint::GetLimitsSpringSettings () const
+
+inline
+
+ +

Update the limits spring settings.

+ +
+
+ +

◆ GetMaxFrictionForce()

+ +
+
+ + + + + +
+ + + + + + + +
float SliderConstraint::GetMaxFrictionForce () const
+
+inline
+
+ +
+
+ +

◆ GetMotorSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
MotorSettings & SliderConstraint::GetMotorSettings ()
+
+inline
+
+ +

Motor settings.

+ +
+
+ +

◆ GetMotorSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const MotorSettings & SliderConstraint::GetMotorSettings () const
+
+inline
+
+ +
+
+ +

◆ GetMotorState()

+ +
+
+ + + + + +
+ + + + + + + +
EMotorState SliderConstraint::GetMotorState () const
+
+inline
+
+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType SliderConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Get the sub type of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetTargetPosition()

+ +
+
+ + + + + +
+ + + + + + + +
float SliderConstraint::GetTargetPosition () const
+
+inline
+
+ +
+
+ +

◆ GetTargetVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
float SliderConstraint::GetTargetVelocity () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaMotor()

+ +
+
+ + + + + +
+ + + + + + + +
float SliderConstraint::GetTotalLambdaMotor () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vector< 2 > SliderConstraint::GetTotalLambdaPosition () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaPositionLimits()

+ +
+
+ + + + + +
+ + + + + + + +
float SliderConstraint::GetTotalLambdaPositionLimits () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaRotation()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SliderConstraint::GetTotalLambdaRotation () const
+
+inline
+
+ +
+
+ +

◆ HasLimits()

+ +
+
+ + + + + +
+ + + + + + + +
bool SliderConstraint::HasLimits () const
+
+inline
+
+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SliderConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+overridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void SliderConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetLimits()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SliderConstraint::SetLimits (float inLimitsMin,
float inLimitsMax 
)
+
+ +

Update the limits of the slider constraint (see SliderConstraintSettings)

+ +
+
+ +

◆ SetLimitsSpringSettings()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraint::SetLimitsSpringSettings (const SpringSettingsinLimitsSpringSettings)
+
+inline
+
+ +
+
+ +

◆ SetMaxFrictionForce()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraint::SetMaxFrictionForce (float inFrictionForce)
+
+inline
+
+ +

Friction control.

+ +
+
+ +

◆ SetMotorState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraint::SetMotorState (EMotorState inState)
+
+inline
+
+ +
+
+ +

◆ SetTargetPosition()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraint::SetTargetPosition (float inPosition)
+
+inline
+
+ +
+
+ +

◆ SetTargetVelocity()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraint::SetTargetVelocity (float inVelocity)
+
+inline
+
+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool SliderConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SliderConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_slider_constraint.js b/class_slider_constraint.js new file mode 100644 index 000000000..5794e34d7 --- /dev/null +++ b/class_slider_constraint.js @@ -0,0 +1,40 @@ +var class_slider_constraint = +[ + [ "SliderConstraint", "class_slider_constraint.html#ad70ecf5382d028c817f4ac1544927285", null ], + [ "DrawConstraint", "class_slider_constraint.html#a09317cd6ab2f56cb7a15a950a420f5f8", null ], + [ "DrawConstraintLimits", "class_slider_constraint.html#ae1378d973e0d535040c6bb36eb368dc5", null ], + [ "GetConstraintSettings", "class_slider_constraint.html#a79e425837bce0b6d9955ce61fba14c43", null ], + [ "GetConstraintToBody1Matrix", "class_slider_constraint.html#aa61f48ae475bbe2130bb1053e4358f24", null ], + [ "GetConstraintToBody2Matrix", "class_slider_constraint.html#a364ce918555ae4df05f788b9e5e041ca", null ], + [ "GetCurrentPosition", "class_slider_constraint.html#ac30befccebcc95bcaaab4ff784f3867f", null ], + [ "GetLimitsMax", "class_slider_constraint.html#a9788e92ed539c24ab428e2e7195fe8de", null ], + [ "GetLimitsMin", "class_slider_constraint.html#a309ff85b227384666212461ae2a31256", null ], + [ "GetLimitsSpringSettings", "class_slider_constraint.html#a8a6cd36dd2dfa9c9ed970222fd86ac6a", null ], + [ "GetLimitsSpringSettings", "class_slider_constraint.html#acb556b36d40cbc06845355442e62b32b", null ], + [ "GetMaxFrictionForce", "class_slider_constraint.html#ae28f6bc1a08e8d68beee8ad0678a7c23", null ], + [ "GetMotorSettings", "class_slider_constraint.html#ad920e0c8e131f4c9e3eae8be918daea2", null ], + [ "GetMotorSettings", "class_slider_constraint.html#a312b98bfdc4c378cdbabdbd7c34e5458", null ], + [ "GetMotorState", "class_slider_constraint.html#af4b5d7b41aa1514342586fef277fabd5", null ], + [ "GetSubType", "class_slider_constraint.html#a4655336347868e54cf484f9f43a830fe", null ], + [ "GetTargetPosition", "class_slider_constraint.html#ac1c0aa099da5599ddc21d7f0519c72f7", null ], + [ "GetTargetVelocity", "class_slider_constraint.html#ad704564787a3b73406849659c29f3a6b", null ], + [ "GetTotalLambdaMotor", "class_slider_constraint.html#a8f67a775520b7f735c77b4aabb9187e4", null ], + [ "GetTotalLambdaPosition", "class_slider_constraint.html#a7e004ec04d0e7a7fe00ba2b0a8840b6a", null ], + [ "GetTotalLambdaPositionLimits", "class_slider_constraint.html#a75ac80302b69828523d3fe1aa55348a5", null ], + [ "GetTotalLambdaRotation", "class_slider_constraint.html#a10e5c1d92324b6df087498f75b4f83e4", null ], + [ "HasLimits", "class_slider_constraint.html#a7b5b4709994b7a7f4133e0e7d129d3c5", null ], + [ "NotifyShapeChanged", "class_slider_constraint.html#a13363a2168538544705cff396e1eab28", null ], + [ "ResetWarmStart", "class_slider_constraint.html#a754215fb80385dc95d64c59c73443b20", null ], + [ "RestoreState", "class_slider_constraint.html#a9512c8658bafebac41965f0e5d8b0377", null ], + [ "SaveState", "class_slider_constraint.html#a7025971cdb5e449293df12e2f4f56e97", null ], + [ "SetLimits", "class_slider_constraint.html#afef30c98d651fe84367f252c3f88b21f", null ], + [ "SetLimitsSpringSettings", "class_slider_constraint.html#ac8aa5fb532cce5b5b34058534f08c004", null ], + [ "SetMaxFrictionForce", "class_slider_constraint.html#a029801fabc3867da63ede853dea7627f", null ], + [ "SetMotorState", "class_slider_constraint.html#aa1c23dfc17c263c4d67d42913844a6f3", null ], + [ "SetTargetPosition", "class_slider_constraint.html#aea6e58150ae68060810e6b1e6246b7a2", null ], + [ "SetTargetVelocity", "class_slider_constraint.html#ad28c19b7263229a90d9514c23a816d82", null ], + [ "SetupVelocityConstraint", "class_slider_constraint.html#a2abb17d42a19f2e7110bdd1edbc864bd", null ], + [ "SolvePositionConstraint", "class_slider_constraint.html#a3a2b09378bb8bf731279c89ab15152b0", null ], + [ "SolveVelocityConstraint", "class_slider_constraint.html#a7271357391f44e2ebc647a98fc0ce01b", null ], + [ "WarmStartVelocityConstraint", "class_slider_constraint.html#aeb34063ed62a9f400374f2ed6fb830c4", null ] +]; \ No newline at end of file diff --git a/class_slider_constraint.png b/class_slider_constraint.png new file mode 100644 index 000000000..c901534a0 Binary files /dev/null and b/class_slider_constraint.png differ diff --git a/class_slider_constraint_settings-members.html b/class_slider_constraint_settings-members.html new file mode 100644 index 000000000..53f255707 --- /dev/null +++ b/class_slider_constraint_settings-members.html @@ -0,0 +1,156 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SliderConstraintSettings Member List
+
+
+ +

This is the complete list of members for SliderConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const overrideSliderConstraintSettingsvirtual
GetRefCount() constRefTarget< ConstraintSettings >inline
mAutoDetectPointSliderConstraintSettings
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mLimitsMaxSliderConstraintSettings
mLimitsMinSliderConstraintSettings
mLimitsSpringSettingsSliderConstraintSettings
mMaxFrictionForceSliderConstraintSettings
mMotorSettingsSliderConstraintSettings
mNormalAxis1SliderConstraintSettings
mNormalAxis2SliderConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mPoint1SliderConstraintSettings
mPoint2SliderConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mSliderAxis1SliderConstraintSettings
mSliderAxis2SliderConstraintSettings
mSpaceSliderConstraintSettings
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideSliderConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overrideSliderConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
SetSliderAxis(Vec3Arg inSliderAxis)SliderConstraintSettings
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_slider_constraint_settings.html b/class_slider_constraint_settings.html new file mode 100644 index 000000000..23b470e41 --- /dev/null +++ b/class_slider_constraint_settings.html @@ -0,0 +1,588 @@ + + + + + + + +Jolt Physics: SliderConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SliderConstraintSettings Class Referencefinal
+
+
+ +

Slider constraint settings, used to create a slider constraint. + More...

+ +

#include <SliderConstraint.h>

+
+Inheritance diagram for SliderConstraintSettings:
+
+
+ + +TwoBodyConstraintSettings +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 
void SetSliderAxis (Vec3Arg inSliderAxis)
 Simple way of setting the slider and normal axis in world space (assumes the bodies are already oriented correctly when the constraint is created)
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EConstraintSpace mSpace = EConstraintSpace::WorldSpace
 This determines in which space the constraint is setup, all properties below should be in the specified space.
 
bool mAutoDetectPoint = false
 When mSpace is WorldSpace mPoint1 and mPoint2 can be automatically calculated based on the positions of the bodies when the constraint is created (the current relative position/orientation is chosen as the '0' position). Set this to false if you want to supply the attachment points yourself.
 
RVec3 mPoint1 = RVec3::sZero()
 
Vec3 mSliderAxis1 = Vec3::sAxisX()
 
Vec3 mNormalAxis1 = Vec3::sAxisY()
 
RVec3 mPoint2 = RVec3::sZero()
 Body 2 constraint reference frame (space determined by mSpace)
 
Vec3 mSliderAxis2 = Vec3::sAxisX()
 
Vec3 mNormalAxis2 = Vec3::sAxisY()
 
float mLimitsMin = -FLT_MAX
 When the bodies move so that mPoint1 coincides with mPoint2 the slider position is defined to be 0, movement will be limited between [mLimitsMin, mLimitsMax] where mLimitsMin e [-inf, 0] and mLimitsMax e [0, inf].
 
float mLimitsMax = FLT_MAX
 
SpringSettings mLimitsSpringSettings
 When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will pull it back.
 
float mMaxFrictionForce = 0.0f
 Maximum amount of friction force to apply (N) when not driven by a motor.
 
MotorSettings mMotorSettings
 In case the constraint is powered, this determines the motor settings around the sliding axis.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Slider constraint settings, used to create a slider constraint.

+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * SliderConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+overridevirtual
+
+

Create an instance of this constraint. Note that the rotation constraint will be solved from body 1. This means that if body 1 and body 2 have different masses / inertias (kinematic body = infinite mass / inertia), body 1 should be the heaviest body.

+ +

Implements TwoBodyConstraintSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SliderConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SetSliderAxis()

+ +
+
+ + + + + + + + +
void SliderConstraintSettings::SetSliderAxis (Vec3Arg inSliderAxis)
+
+ +

Simple way of setting the slider and normal axis in world space (assumes the bodies are already oriented correctly when the constraint is created)

+ +
+
+

Member Data Documentation

+ +

◆ mAutoDetectPoint

+ +
+
+ + + + +
bool SliderConstraintSettings::mAutoDetectPoint = false
+
+ +

When mSpace is WorldSpace mPoint1 and mPoint2 can be automatically calculated based on the positions of the bodies when the constraint is created (the current relative position/orientation is chosen as the '0' position). Set this to false if you want to supply the attachment points yourself.

+ +
+
+ +

◆ mLimitsMax

+ +
+
+ + + + +
float SliderConstraintSettings::mLimitsMax = FLT_MAX
+
+ +
+
+ +

◆ mLimitsMin

+ +
+
+ + + + +
float SliderConstraintSettings::mLimitsMin = -FLT_MAX
+
+ +

When the bodies move so that mPoint1 coincides with mPoint2 the slider position is defined to be 0, movement will be limited between [mLimitsMin, mLimitsMax] where mLimitsMin e [-inf, 0] and mLimitsMax e [0, inf].

+ +
+
+ +

◆ mLimitsSpringSettings

+ +
+
+ + + + +
SpringSettings SliderConstraintSettings::mLimitsSpringSettings
+
+ +

When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will pull it back.

+ +
+
+ +

◆ mMaxFrictionForce

+ +
+
+ + + + +
float SliderConstraintSettings::mMaxFrictionForce = 0.0f
+
+ +

Maximum amount of friction force to apply (N) when not driven by a motor.

+ +
+
+ +

◆ mMotorSettings

+ +
+
+ + + + +
MotorSettings SliderConstraintSettings::mMotorSettings
+
+ +

In case the constraint is powered, this determines the motor settings around the sliding axis.

+ +
+
+ +

◆ mNormalAxis1

+ +
+
+ + + + +
Vec3 SliderConstraintSettings::mNormalAxis1 = Vec3::sAxisY()
+
+ +
+
+ +

◆ mNormalAxis2

+ +
+
+ + + + +
Vec3 SliderConstraintSettings::mNormalAxis2 = Vec3::sAxisY()
+
+ +
+
+ +

◆ mPoint1

+ +
+
+ + + + +
RVec3 SliderConstraintSettings::mPoint1 = RVec3::sZero()
+
+

Body 1 constraint reference frame (space determined by mSpace). Slider axis is the axis along which movement is possible (direction), normal axis is a perpendicular vector to define the frame.

+ +
+
+ +

◆ mPoint2

+ +
+
+ + + + +
RVec3 SliderConstraintSettings::mPoint2 = RVec3::sZero()
+
+ +

Body 2 constraint reference frame (space determined by mSpace)

+ +
+
+ +

◆ mSliderAxis1

+ +
+
+ + + + +
Vec3 SliderConstraintSettings::mSliderAxis1 = Vec3::sAxisX()
+
+ +
+
+ +

◆ mSliderAxis2

+ +
+
+ + + + +
Vec3 SliderConstraintSettings::mSliderAxis2 = Vec3::sAxisX()
+
+ +
+
+ +

◆ mSpace

+ +
+
+ + + + +
EConstraintSpace SliderConstraintSettings::mSpace = EConstraintSpace::WorldSpace
+
+ +

This determines in which space the constraint is setup, all properties below should be in the specified space.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_slider_constraint_settings.js b/class_slider_constraint_settings.js new file mode 100644 index 000000000..7b07eff27 --- /dev/null +++ b/class_slider_constraint_settings.js @@ -0,0 +1,20 @@ +var class_slider_constraint_settings = +[ + [ "Create", "class_slider_constraint_settings.html#abf465eb2615ffac5ecb0047f682a31c2", null ], + [ "RestoreBinaryState", "class_slider_constraint_settings.html#ac0986c9c1bad64fbb5a4f77476e6d1ed", null ], + [ "SaveBinaryState", "class_slider_constraint_settings.html#acfae9c6e70eef7f2fdb2d12fd718f187", null ], + [ "SetSliderAxis", "class_slider_constraint_settings.html#a78a43cf839d05c2679d11080875499df", null ], + [ "mAutoDetectPoint", "class_slider_constraint_settings.html#abfe850cd8587a0738fbf6d7ed60c5e44", null ], + [ "mLimitsMax", "class_slider_constraint_settings.html#a91634e77db65bc26c41edf00df74d2af", null ], + [ "mLimitsMin", "class_slider_constraint_settings.html#abe9a0acdb04a3edde746680d7656e388", null ], + [ "mLimitsSpringSettings", "class_slider_constraint_settings.html#acdba7344cb45b5f2097c0cb458e3a271", null ], + [ "mMaxFrictionForce", "class_slider_constraint_settings.html#a00acc443c620fecba7342534d9ec50eb", null ], + [ "mMotorSettings", "class_slider_constraint_settings.html#a8a2773d9e0482d334b1797cb951d243f", null ], + [ "mNormalAxis1", "class_slider_constraint_settings.html#ab03298296694d483fbfc756c7b28433b", null ], + [ "mNormalAxis2", "class_slider_constraint_settings.html#a8f4226328c8052b155b772c932bcb244", null ], + [ "mPoint1", "class_slider_constraint_settings.html#a090c1e3dd8e6d8651d8287b4dbe5fc46", null ], + [ "mPoint2", "class_slider_constraint_settings.html#a067096ef3ef94d99ba6d22b946145759", null ], + [ "mSliderAxis1", "class_slider_constraint_settings.html#a674de926b2858e971516a15d93e168c0", null ], + [ "mSliderAxis2", "class_slider_constraint_settings.html#af4319ce1c0bddddfa419bb361565f2e4", null ], + [ "mSpace", "class_slider_constraint_settings.html#afc5127fe325c86046c4765ed89dce4fe", null ] +]; \ No newline at end of file diff --git a/class_slider_constraint_settings.png b/class_slider_constraint_settings.png new file mode 100644 index 000000000..53042cf92 Binary files /dev/null and b/class_slider_constraint_settings.png differ diff --git a/class_soft_body_contact_listener-members.html b/class_soft_body_contact_listener-members.html new file mode 100644 index 000000000..18001b12b --- /dev/null +++ b/class_soft_body_contact_listener-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyContactListener Member List
+
+
+ +

This is the complete list of members for SoftBodyContactListener, including all inherited members.

+ + + + +
OnSoftBodyContactAdded(const Body &inSoftBody, const SoftBodyManifold &inManifold)SoftBodyContactListenerinlinevirtual
OnSoftBodyContactValidate(const Body &inSoftBody, const Body &inOtherBody, SoftBodyContactSettings &ioSettings)SoftBodyContactListenerinlinevirtual
~SoftBodyContactListener()=defaultSoftBodyContactListenervirtual
+
+ + + + diff --git a/class_soft_body_contact_listener.html b/class_soft_body_contact_listener.html new file mode 100644 index 000000000..7fe34c598 --- /dev/null +++ b/class_soft_body_contact_listener.html @@ -0,0 +1,258 @@ + + + + + + + +Jolt Physics: SoftBodyContactListener Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyContactListener Class Reference
+
+
+ +

#include <SoftBodyContactListener.h>

+ + + + + + + + + +

+Public Member Functions

virtual ~SoftBodyContactListener ()=default
 Ensure virtual destructor.
 
virtual SoftBodyValidateResult OnSoftBodyContactValidate (const Body &inSoftBody, const Body &inOtherBody, SoftBodyContactSettings &ioSettings)
 
virtual void OnSoftBodyContactAdded (const Body &inSoftBody, const SoftBodyManifold &inManifold)
 
+

Detailed Description

+

A listener class that receives collision contact events for soft bodies against rigid bodies. It can be registered with the PhysicsSystem.

+

Constructor & Destructor Documentation

+ +

◆ ~SoftBodyContactListener()

+ +
+
+ + + + + +
+ + + + + + + +
virtual SoftBodyContactListener::~SoftBodyContactListener ()
+
+virtualdefault
+
+ +

Ensure virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ OnSoftBodyContactAdded()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void SoftBodyContactListener::OnSoftBodyContactAdded (const BodyinSoftBody,
const SoftBodyManifoldinManifold 
)
+
+inlinevirtual
+
+

Called after all contact points for a soft body have been handled. You only receive one callback per body pair per simulation step and can use inManifold to iterate through all contacts. Note that this callback is called when all bodies are locked, so don't use any locking functions! You will receive a single callback for a soft body per simulation step for performance reasons, this callback will apply to all vertices in the soft body.

Parameters
+ + + +
inSoftBodyThe soft body that collided. It is safe to access this as the soft body is only updated on the current thread.
inManifoldThe manifold that describes the contact surface between the two bodies. Other bodies may be modified by other threads during this callback.
+
+
+ +
+
+ +

◆ OnSoftBodyContactValidate()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual SoftBodyValidateResult SoftBodyContactListener::OnSoftBodyContactValidate (const BodyinSoftBody,
const BodyinOtherBody,
SoftBodyContactSettingsioSettings 
)
+
+inlinevirtual
+
+

Called whenever the soft body's aabox overlaps with another body's aabox (so receiving this callback doesn't tell if any of the vertices will collide). This callback can be used to change the behavior of the collision response for all vertices in the soft body or to completely reject the contact. Note that this callback is called when all bodies are locked, so don't use any locking functions!

Parameters
+ + + + +
inSoftBodyThe soft body that collided. It is safe to access this as the soft body is only updated on the current thread.
inOtherBodyThe other body that collided. Note that accessing the position/orientation/velocity of inOtherBody may result in a race condition as other threads may be modifying the body at the same time.
ioSettingsThe settings for all contact points that are generated by this collision.
+
+
+
Returns
Whether the contact should be processed or not.
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_soft_body_contact_listener.js b/class_soft_body_contact_listener.js new file mode 100644 index 000000000..4261ba745 --- /dev/null +++ b/class_soft_body_contact_listener.js @@ -0,0 +1,6 @@ +var class_soft_body_contact_listener = +[ + [ "~SoftBodyContactListener", "class_soft_body_contact_listener.html#aec0e10073fc4e61069a7246717c4dda8", null ], + [ "OnSoftBodyContactAdded", "class_soft_body_contact_listener.html#a5b875d9411f869298407501bc3d98199", null ], + [ "OnSoftBodyContactValidate", "class_soft_body_contact_listener.html#a88fe3a41025942d5e4c1f144b20bfbd9", null ] +]; \ No newline at end of file diff --git a/class_soft_body_contact_settings-members.html b/class_soft_body_contact_settings-members.html new file mode 100644 index 000000000..af82ae411 --- /dev/null +++ b/class_soft_body_contact_settings-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyContactSettings Member List
+
+
+ +

This is the complete list of members for SoftBodyContactSettings, including all inherited members.

+ + + + + +
mInvInertiaScale2SoftBodyContactSettings
mInvMassScale1SoftBodyContactSettings
mInvMassScale2SoftBodyContactSettings
mIsSensorSoftBodyContactSettings
+
+ + + + diff --git a/class_soft_body_contact_settings.html b/class_soft_body_contact_settings.html new file mode 100644 index 000000000..86879cb1c --- /dev/null +++ b/class_soft_body_contact_settings.html @@ -0,0 +1,205 @@ + + + + + + + +Jolt Physics: SoftBodyContactSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyContactSettings Class Reference
+
+
+ +

#include <SoftBodyContactListener.h>

+ + + + + + + + + + + + + + +

+Public Attributes

float mInvMassScale1 = 1.0f
 Scale factor for the inverse mass of the soft body (0 = infinite mass, 1 = use original mass, 2 = body has half the mass). For the same contact pair, you should strive to keep the value the same over time.
 
float mInvMassScale2 = 1.0f
 Scale factor for the inverse mass of the other body (0 = infinite mass, 1 = use original mass, 2 = body has half the mass). For the same contact pair, you should strive to keep the value the same over time.
 
float mInvInertiaScale2 = 1.0f
 Scale factor for the inverse inertia of the other body (usually same as mInvMassScale2)
 
bool mIsSensor
 If the contact should be treated as a sensor vs body contact (no collision response)
 
+

Detailed Description

+

Contact settings for a soft body contact. The values are filled in with their defaults by the system so the callback doesn't need to modify anything, but it can if it wants to.

+

Member Data Documentation

+ +

◆ mInvInertiaScale2

+ +
+
+ + + + +
float SoftBodyContactSettings::mInvInertiaScale2 = 1.0f
+
+ +

Scale factor for the inverse inertia of the other body (usually same as mInvMassScale2)

+ +
+
+ +

◆ mInvMassScale1

+ +
+
+ + + + +
float SoftBodyContactSettings::mInvMassScale1 = 1.0f
+
+ +

Scale factor for the inverse mass of the soft body (0 = infinite mass, 1 = use original mass, 2 = body has half the mass). For the same contact pair, you should strive to keep the value the same over time.

+ +
+
+ +

◆ mInvMassScale2

+ +
+
+ + + + +
float SoftBodyContactSettings::mInvMassScale2 = 1.0f
+
+ +

Scale factor for the inverse mass of the other body (0 = infinite mass, 1 = use original mass, 2 = body has half the mass). For the same contact pair, you should strive to keep the value the same over time.

+ +
+
+ +

◆ mIsSensor

+ +
+
+ + + + +
bool SoftBodyContactSettings::mIsSensor
+
+ +

If the contact should be treated as a sensor vs body contact (no collision response)

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_soft_body_contact_settings.js b/class_soft_body_contact_settings.js new file mode 100644 index 000000000..e5c51ce8c --- /dev/null +++ b/class_soft_body_contact_settings.js @@ -0,0 +1,7 @@ +var class_soft_body_contact_settings = +[ + [ "mInvInertiaScale2", "class_soft_body_contact_settings.html#a269db11f19bdd0b046d262a3eca1f9f3", null ], + [ "mInvMassScale1", "class_soft_body_contact_settings.html#a7e2a6ccb37566e38c25aa4841abbbead", null ], + [ "mInvMassScale2", "class_soft_body_contact_settings.html#a31f103e2af52af1d40468f5a5e4ce538", null ], + [ "mIsSensor", "class_soft_body_contact_settings.html#a26a9a0351652cc687f190524e4f49532", null ] +]; \ No newline at end of file diff --git a/class_soft_body_creation_settings-members.html b/class_soft_body_creation_settings-members.html new file mode 100644 index 000000000..d4165bf62 --- /dev/null +++ b/class_soft_body_creation_settings-members.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyCreationSettings Member List
+
+
+ +

This is the complete list of members for SoftBodyCreationSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GroupFilterToIDMap typedefSoftBodyCreationSettings
IDToGroupFilterMap typedefSoftBodyCreationSettings
IDToMaterialMap typedefSoftBodyCreationSettings
IDToSharedSettingsMap typedefSoftBodyCreationSettings
mAllowSleepingSoftBodyCreationSettings
MaterialToIDMap typedefSoftBodyCreationSettings
mCollisionGroupSoftBodyCreationSettings
mFrictionSoftBodyCreationSettings
mGravityFactorSoftBodyCreationSettings
mLinearDampingSoftBodyCreationSettings
mMakeRotationIdentitySoftBodyCreationSettings
mMaxLinearVelocitySoftBodyCreationSettings
mNumIterationsSoftBodyCreationSettings
mObjectLayerSoftBodyCreationSettings
mPositionSoftBodyCreationSettings
mPressureSoftBodyCreationSettings
mRestitutionSoftBodyCreationSettings
mRotationSoftBodyCreationSettings
mSettingsSoftBodyCreationSettings
mUpdatePositionSoftBodyCreationSettings
mUserDataSoftBodyCreationSettings
RestoreBinaryState(StreamIn &inStream)SoftBodyCreationSettings
SaveBinaryState(StreamOut &inStream) constSoftBodyCreationSettings
SaveWithChildren(StreamOut &inStream, SharedSettingsToIDMap *ioSharedSettingsMap, MaterialToIDMap *ioMaterialMap, GroupFilterToIDMap *ioGroupFilterMap) constSoftBodyCreationSettings
SBCSResult typedefSoftBodyCreationSettings
SharedSettingsToIDMap typedefSoftBodyCreationSettings
SoftBodyCreationSettings()=defaultSoftBodyCreationSettings
SoftBodyCreationSettings(const SoftBodySharedSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, ObjectLayer inObjectLayer)SoftBodyCreationSettingsinline
sRestoreWithChildren(StreamIn &inStream, IDToSharedSettingsMap &ioSharedSettingsMap, IDToMaterialMap &ioMaterialMap, IDToGroupFilterMap &ioGroupFilterMap)SoftBodyCreationSettingsstatic
+
+ + + + diff --git a/class_soft_body_creation_settings.html b/class_soft_body_creation_settings.html new file mode 100644 index 000000000..b25a8f197 --- /dev/null +++ b/class_soft_body_creation_settings.html @@ -0,0 +1,784 @@ + + + + + + + +Jolt Physics: SoftBodyCreationSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyCreationSettings Class Reference
+
+
+ +

#include <SoftBodyCreationSettings.h>

+ + + + + + + + + + + + + + + + +

+Public Types

using GroupFilterToIDMap = StreamUtils::ObjectToIDMap< GroupFilter >
 
using IDToGroupFilterMap = StreamUtils::IDToObjectMap< GroupFilter >
 
using SharedSettingsToIDMap = SoftBodySharedSettings::SharedSettingsToIDMap
 
using IDToSharedSettingsMap = SoftBodySharedSettings::IDToSharedSettingsMap
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
using SBCSResult = Result< SoftBodyCreationSettings >
 
+ + + + + + + + + + + + + + +

+Public Member Functions

 SoftBodyCreationSettings ()=default
 Constructor.
 
 SoftBodyCreationSettings (const SoftBodySharedSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, ObjectLayer inObjectLayer)
 
void SaveBinaryState (StreamOut &inStream) const
 Saves the state of this object in binary form to inStream. Doesn't store the shared settings nor the group filter.
 
void RestoreBinaryState (StreamIn &inStream)
 Restore the state of this object from inStream. Doesn't restore the shared settings nor the group filter.
 
void SaveWithChildren (StreamOut &inStream, SharedSettingsToIDMap *ioSharedSettingsMap, MaterialToIDMap *ioMaterialMap, GroupFilterToIDMap *ioGroupFilterMap) const
 
+ + + + +

+Static Public Member Functions

static SBCSResult sRestoreWithChildren (StreamIn &inStream, IDToSharedSettingsMap &ioSharedSettingsMap, IDToMaterialMap &ioMaterialMap, IDToGroupFilterMap &ioGroupFilterMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioSharedSettingsMap / ioMaterialMap / ioGroupFilterMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

RefConst< SoftBodySharedSettingsmSettings
 Defines the configuration of this soft body.
 
RVec3 mPosition { RVec3::sZero() }
 Initial position of the soft body.
 
Quat mRotation { Quat::sIdentity() }
 Initial rotation of the soft body.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
Collision settings
ObjectLayer mObjectLayer = 0
 The collision layer this body belongs to (determines if two objects can collide)
 
CollisionGroup mCollisionGroup
 The collision group this body belongs to (determines if two objects can collide)
 
uint32 mNumIterations = 5
 Number of solver iterations.
 
float mLinearDamping = 0.1f
 Linear damping: dv/dt = -mLinearDamping * v.
 
float mMaxLinearVelocity = 500.0f
 Maximum linear velocity that a vertex can reach (m/s)
 
float mRestitution = 0.0f
 Restitution when colliding.
 
float mFriction = 0.2f
 Friction coefficient when colliding.
 
float mPressure = 0.0f
 n * R * T, amount of substance * ideal gas constant * absolute temperature, see https://en.wikipedia.org/wiki/Pressure
 
float mGravityFactor = 1.0f
 Value to multiply gravity with for this body.
 
bool mUpdatePosition = true
 Update the position of the body while simulating (set to false for something that is attached to the static world)
 
bool mMakeRotationIdentity = true
 Bake specified mRotation in the vertices and set the body rotation to identity (simulation is slightly more accurate if the rotation of a soft body is kept to identity)
 
bool mAllowSleeping = true
 If this body can go to sleep or not.
 
+

Detailed Description

+

This class contains the information needed to create a soft body object Note: Soft bodies are still in development and come with several caveats. Read the Architecture and API documentation for more information!

+

Member Typedef Documentation

+ +

◆ GroupFilterToIDMap

+ + + +

◆ IDToGroupFilterMap

+ + + +

◆ IDToMaterialMap

+ + + +

◆ IDToSharedSettingsMap

+ + + +

◆ MaterialToIDMap

+ + + +

◆ SBCSResult

+ + + +

◆ SharedSettingsToIDMap

+ + +

Constructor & Destructor Documentation

+ +

◆ SoftBodyCreationSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SoftBodyCreationSettings::SoftBodyCreationSettings ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ SoftBodyCreationSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SoftBodyCreationSettings::SoftBodyCreationSettings (const SoftBodySharedSettingsinSettings,
RVec3Arg inPosition,
QuatArg inRotation,
ObjectLayer inObjectLayer 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void SoftBodyCreationSettings::RestoreBinaryState (StreamIninStream)
+
+ +

Restore the state of this object from inStream. Doesn't restore the shared settings nor the group filter.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void SoftBodyCreationSettings::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the state of this object in binary form to inStream. Doesn't store the shared settings nor the group filter.

+ +
+
+ +

◆ SaveWithChildren()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyCreationSettings::SaveWithChildren (StreamOutinStream,
SharedSettingsToIDMapioSharedSettingsMap,
MaterialToIDMapioMaterialMap,
GroupFilterToIDMapioGroupFilterMap 
) const
+
+

Save this body creation settings, its shared settings and group filter. Pass in an empty map in ioSharedSettingsMap / ioMaterialMap / ioGroupFilterMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates. Pass nullptr to ioSharedSettingsMap and ioMaterial map to skip saving shared settings and materials Pass nullptr to ioGroupFilterMap to skip saving group filters

+ +
+
+ +

◆ sRestoreWithChildren()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SoftBodyCreationSettings::SBCSResult SoftBodyCreationSettings::sRestoreWithChildren (StreamIninStream,
IDToSharedSettingsMapioSharedSettingsMap,
IDToMaterialMapioMaterialMap,
IDToGroupFilterMapioGroupFilterMap 
)
+
+static
+
+ +

Restore a shape, all its children and materials. Pass in an empty map in ioSharedSettingsMap / ioMaterialMap / ioGroupFilterMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.

+ +
+
+

Member Data Documentation

+ +

◆ mAllowSleeping

+ +
+
+ + + + +
bool SoftBodyCreationSettings::mAllowSleeping = true
+
+ +

If this body can go to sleep or not.

+ +
+
+ +

◆ mCollisionGroup

+ +
+
+ + + + +
CollisionGroup SoftBodyCreationSettings::mCollisionGroup
+
+ +

The collision group this body belongs to (determines if two objects can collide)

+ +
+
+ +

◆ mFriction

+ +
+
+ + + + +
float SoftBodyCreationSettings::mFriction = 0.2f
+
+ +

Friction coefficient when colliding.

+ +
+
+ +

◆ mGravityFactor

+ +
+
+ + + + +
float SoftBodyCreationSettings::mGravityFactor = 1.0f
+
+ +

Value to multiply gravity with for this body.

+ +
+
+ +

◆ mLinearDamping

+ +
+
+ + + + +
float SoftBodyCreationSettings::mLinearDamping = 0.1f
+
+ +

Linear damping: dv/dt = -mLinearDamping * v.

+ +
+
+ +

◆ mMakeRotationIdentity

+ +
+
+ + + + +
bool SoftBodyCreationSettings::mMakeRotationIdentity = true
+
+ +

Bake specified mRotation in the vertices and set the body rotation to identity (simulation is slightly more accurate if the rotation of a soft body is kept to identity)

+ +
+
+ +

◆ mMaxLinearVelocity

+ +
+
+ + + + +
float SoftBodyCreationSettings::mMaxLinearVelocity = 500.0f
+
+ +

Maximum linear velocity that a vertex can reach (m/s)

+ +
+
+ +

◆ mNumIterations

+ +
+
+ + + + +
uint32 SoftBodyCreationSettings::mNumIterations = 5
+
+ +

Number of solver iterations.

+ +
+
+ +

◆ mObjectLayer

+ +
+
+ + + + +
ObjectLayer SoftBodyCreationSettings::mObjectLayer = 0
+
+ +

The collision layer this body belongs to (determines if two objects can collide)

+ +
+
+ +

◆ mPosition

+ +
+
+ + + + +
RVec3 SoftBodyCreationSettings::mPosition { RVec3::sZero() }
+
+ +

Initial position of the soft body.

+ +
+
+ +

◆ mPressure

+ +
+
+ + + + +
float SoftBodyCreationSettings::mPressure = 0.0f
+
+ +

n * R * T, amount of substance * ideal gas constant * absolute temperature, see https://en.wikipedia.org/wiki/Pressure

+ +
+
+ +

◆ mRestitution

+ +
+
+ + + + +
float SoftBodyCreationSettings::mRestitution = 0.0f
+
+ +

Restitution when colliding.

+ +
+
+ +

◆ mRotation

+ +
+
+ + + + +
Quat SoftBodyCreationSettings::mRotation { Quat::sIdentity() }
+
+ +

Initial rotation of the soft body.

+ +
+
+ +

◆ mSettings

+ +
+
+ + + + +
RefConst<SoftBodySharedSettings> SoftBodyCreationSettings::mSettings
+
+ +

Defines the configuration of this soft body.

+ +
+
+ +

◆ mUpdatePosition

+ +
+
+ + + + +
bool SoftBodyCreationSettings::mUpdatePosition = true
+
+ +

Update the position of the body while simulating (set to false for something that is attached to the static world)

+ +
+
+ +

◆ mUserData

+ +
+
+ + + + +
uint64 SoftBodyCreationSettings::mUserData = 0
+
+ +

User data value (can be used by application)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_soft_body_creation_settings.js b/class_soft_body_creation_settings.js new file mode 100644 index 000000000..f23889d16 --- /dev/null +++ b/class_soft_body_creation_settings.js @@ -0,0 +1,31 @@ +var class_soft_body_creation_settings = +[ + [ "GroupFilterToIDMap", "class_soft_body_creation_settings.html#a62610a1d2969412b195344477ecd1891", null ], + [ "IDToGroupFilterMap", "class_soft_body_creation_settings.html#ad1f40b177b4f27efcd0ab66f42ba4c88", null ], + [ "IDToMaterialMap", "class_soft_body_creation_settings.html#a3a2067077df858114c6864c2d126b211", null ], + [ "IDToSharedSettingsMap", "class_soft_body_creation_settings.html#a6b219acbdeca620a6fecb352b422a64d", null ], + [ "MaterialToIDMap", "class_soft_body_creation_settings.html#a89fffeafeb3327d73110e59988f864f8", null ], + [ "SBCSResult", "class_soft_body_creation_settings.html#a550ccd09ee96f7c25f31e83faf3b60b4", null ], + [ "SharedSettingsToIDMap", "class_soft_body_creation_settings.html#a1f5861a5fc161cfee540201082d121c1", null ], + [ "SoftBodyCreationSettings", "class_soft_body_creation_settings.html#ac5668582f2c4cd10a4d7b15d5aa57be9", null ], + [ "SoftBodyCreationSettings", "class_soft_body_creation_settings.html#a30778a139b72cd3eb8688798abc1d329", null ], + [ "RestoreBinaryState", "class_soft_body_creation_settings.html#a735fee6e846a7eab45f817ef8bf6688d", null ], + [ "SaveBinaryState", "class_soft_body_creation_settings.html#a85c901c0830e24d6d663e90ab5d109e1", null ], + [ "SaveWithChildren", "class_soft_body_creation_settings.html#aad762e491883987d0023fd7613b3642b", null ], + [ "mAllowSleeping", "class_soft_body_creation_settings.html#a99411944efd35848fb25bbd628b459f1", null ], + [ "mCollisionGroup", "class_soft_body_creation_settings.html#af0f54d456a3f22e36ad6c1c429b9ee4c", null ], + [ "mFriction", "class_soft_body_creation_settings.html#a2ab6ae93bb76e4033c1bd949671db613", null ], + [ "mGravityFactor", "class_soft_body_creation_settings.html#a9d292988c11dd960487870c88b31fd93", null ], + [ "mLinearDamping", "class_soft_body_creation_settings.html#a22002363e2b432c4e009b204df1f4f81", null ], + [ "mMakeRotationIdentity", "class_soft_body_creation_settings.html#a87f3befe0bd9553e02b7cb248e1989dc", null ], + [ "mMaxLinearVelocity", "class_soft_body_creation_settings.html#ab14a89101e8b96a1fee25d6d31d505a2", null ], + [ "mNumIterations", "class_soft_body_creation_settings.html#a62d2a9e8b0e83cf1864d72f4849a02fd", null ], + [ "mObjectLayer", "class_soft_body_creation_settings.html#af2bebfa58f86de5bc428165a5f9c08d2", null ], + [ "mPosition", "class_soft_body_creation_settings.html#a9bf07b67b3fe8e6032485fa403fbca60", null ], + [ "mPressure", "class_soft_body_creation_settings.html#a93bf002b1b4ab1fa7bcf846d8116aa91", null ], + [ "mRestitution", "class_soft_body_creation_settings.html#ab4e95c56fff028fa8b81804488076890", null ], + [ "mRotation", "class_soft_body_creation_settings.html#a80535dd782a3f7368cd6e74cd3ccda6a", null ], + [ "mSettings", "class_soft_body_creation_settings.html#ad5221bd51bf042c883473a55ab0b3956", null ], + [ "mUpdatePosition", "class_soft_body_creation_settings.html#a96746df6942b462ac41a576819e078ec", null ], + [ "mUserData", "class_soft_body_creation_settings.html#adbd6f1e62fecded89813ddab4e233e73", null ] +]; \ No newline at end of file diff --git a/class_soft_body_manifold-members.html b/class_soft_body_manifold-members.html new file mode 100644 index 000000000..d34f50374 --- /dev/null +++ b/class_soft_body_manifold-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyManifold Member List
+
+
+ +

This is the complete list of members for SoftBodyManifold, including all inherited members.

+ + + + + + + +
GetContactBodyID(const SoftBodyVertex &inVertex) constSoftBodyManifoldinline
GetContactNormal(const SoftBodyVertex &inVertex) constSoftBodyManifoldinline
GetLocalContactPoint(const SoftBodyVertex &inVertex) constSoftBodyManifoldinline
GetVertices() constSoftBodyManifoldinline
HasContact(const SoftBodyVertex &inVertex) constSoftBodyManifoldinline
SoftBodyMotionPropertiesSoftBodyManifoldfriend
+
+ + + + diff --git a/class_soft_body_manifold.html b/class_soft_body_manifold.html new file mode 100644 index 000000000..38c318469 --- /dev/null +++ b/class_soft_body_manifold.html @@ -0,0 +1,318 @@ + + + + + + + +Jolt Physics: SoftBodyManifold Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyManifold Class Reference
+
+
+ +

An interface to query which vertices of a soft body are colliding with other bodies. + More...

+ +

#include <SoftBodyManifold.h>

+ + + + + + + + + + + + + + + + + +

+Public Member Functions

const Array< SoftBodyVertex > & GetVertices () const
 Get the vertices of the soft body for iterating.
 
JPH_INLINE bool HasContact (const SoftBodyVertex &inVertex) const
 Check if a vertex has collided with something in this update.
 
JPH_INLINE Vec3 GetLocalContactPoint (const SoftBodyVertex &inVertex) const
 Get the local space contact point (multiply by GetCenterOfMassTransform() of the soft body to get world space)
 
JPH_INLINE Vec3 GetContactNormal (const SoftBodyVertex &inVertex) const
 Get the contact normal for the vertex (assumes there is a contact).
 
JPH_INLINE BodyID GetContactBodyID (const SoftBodyVertex &inVertex) const
 Get the body with which the vertex has collided in this update.
 
+ + + + +

+Friends

class SoftBodyMotionProperties
 Allow SoftBodyMotionProperties to construct us.
 
+

Detailed Description

+

An interface to query which vertices of a soft body are colliding with other bodies.

+

Member Function Documentation

+ +

◆ GetContactBodyID()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE BodyID SoftBodyManifold::GetContactBodyID (const SoftBodyVertexinVertex) const
+
+inline
+
+ +

Get the body with which the vertex has collided in this update.

+ +
+
+ +

◆ GetContactNormal()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec3 SoftBodyManifold::GetContactNormal (const SoftBodyVertexinVertex) const
+
+inline
+
+ +

Get the contact normal for the vertex (assumes there is a contact).

+ +
+
+ +

◆ GetLocalContactPoint()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec3 SoftBodyManifold::GetLocalContactPoint (const SoftBodyVertexinVertex) const
+
+inline
+
+ +

Get the local space contact point (multiply by GetCenterOfMassTransform() of the soft body to get world space)

+ +
+
+ +

◆ GetVertices()

+ +
+
+ + + + + +
+ + + + + + + +
const Array< SoftBodyVertex > & SoftBodyManifold::GetVertices () const
+
+inline
+
+ +

Get the vertices of the soft body for iterating.

+ +
+
+ +

◆ HasContact()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE bool SoftBodyManifold::HasContact (const SoftBodyVertexinVertex) const
+
+inline
+
+ +

Check if a vertex has collided with something in this update.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ SoftBodyMotionProperties

+ +
+
+ + + + + +
+ + + + +
friend class SoftBodyMotionProperties
+
+friend
+
+ +

Allow SoftBodyMotionProperties to construct us.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_soft_body_manifold.js b/class_soft_body_manifold.js new file mode 100644 index 000000000..5870c7480 --- /dev/null +++ b/class_soft_body_manifold.js @@ -0,0 +1,9 @@ +var class_soft_body_manifold = +[ + [ "GetContactBodyID", "class_soft_body_manifold.html#a417c2c3d01bddd24f9115fa7641a3baf", null ], + [ "GetContactNormal", "class_soft_body_manifold.html#abb6aad92c3678d927ab04481e30850db", null ], + [ "GetLocalContactPoint", "class_soft_body_manifold.html#a1df540bbc021bfd1c7e14caa2f1c77aa", null ], + [ "GetVertices", "class_soft_body_manifold.html#aa00527a000cd0b485d7a838ac5e288a8", null ], + [ "HasContact", "class_soft_body_manifold.html#a05c6d3d048b62669bde92ad457317523", null ], + [ "SoftBodyMotionProperties", "class_soft_body_manifold.html#aa52bab293ad7cec288c33c81d5f38ea9", null ] +]; \ No newline at end of file diff --git a/class_soft_body_motion_properties-members.html b/class_soft_body_motion_properties-members.html new file mode 100644 index 000000000..c49caf2f5 --- /dev/null +++ b/class_soft_body_motion_properties-members.html @@ -0,0 +1,225 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyMotionProperties Member List
+
+
+ +

This is the complete list of members for SoftBodyMotionProperties, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AccumulateSleepTime(float inDeltaTime, float inTimeBeforeSleep)MotionPropertiesinline
AddAngularVelocityStep(Vec3Arg inAngularVelocityChange)MotionPropertiesinline
AddLinearVelocityStep(Vec3Arg inLinearVelocityChange)MotionPropertiesinline
ApplyForceTorqueAndDragInternal(QuatArg inBodyRotation, Vec3Arg inGravity, float inDeltaTime)MotionPropertiesinline
ApplyGyroscopicForceInternal(QuatArg inBodyRotation, float inDeltaTime)MotionPropertiesinline
CalculateMassAndInertia()SoftBodyMotionProperties
cInactiveIndexMotionPropertiesstatic
ClampAngularVelocity()MotionPropertiesinline
ClampLinearVelocity()MotionPropertiesinline
CustomUpdate(float inDeltaTime, Body &ioSoftBody, PhysicsSystem &inSystem)SoftBodyMotionProperties
DetermineCollidingShapes(const SoftBodyUpdateContext &inContext, const PhysicsSystem &inSystem, const BodyLockInterface &inBodyLockInterface)SoftBodyMotionProperties
DihedralBend typedefSoftBodyMotionProperties
DrawBendConstraints(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) constSoftBodyMotionProperties
DrawEdgeConstraints(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) constSoftBodyMotionProperties
DrawLRAConstraints(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) constSoftBodyMotionProperties
DrawPredictedBounds(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform) constSoftBodyMotionProperties
DrawSkinConstraints(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) constSoftBodyMotionProperties
DrawVertexVelocities(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform) constSoftBodyMotionProperties
DrawVertices(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform) constSoftBodyMotionProperties
DrawVolumeConstraints(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) constSoftBodyMotionProperties
Edge typedefSoftBodyMotionProperties
EStatus enum nameSoftBodyMotionProperties
Face typedefSoftBodyMotionProperties
GetAccumulatedForce() constMotionPropertiesinline
GetAccumulatedTorque() constMotionPropertiesinline
GetAllowedDOFs() constMotionPropertiesinline
GetAllowSleeping() constMotionPropertiesinline
GetAngularDamping() constMotionPropertiesinline
GetAngularDOFsMask() constMotionPropertiesinline
GetAngularVelocity() constMotionPropertiesinline
GetEnableSkinConstraints() constSoftBodyMotionPropertiesinline
GetFace(uint inIndex) constSoftBodyMotionPropertiesinline
GetFaces() constSoftBodyMotionPropertiesinline
GetGravityFactor() constMotionPropertiesinline
GetIndexInActiveBodiesInternal() constMotionPropertiesinline
GetInertiaRotation() constMotionPropertiesinline
GetInverseInertiaDiagonal() constMotionPropertiesinline
GetInverseInertiaForRotation(Mat44Arg inRotation) constMotionPropertiesinline
GetInverseMass() constMotionPropertiesinline
GetInverseMassUnchecked() constMotionPropertiesinline
GetIslandIndexInternal() constMotionPropertiesinline
GetLinearDamping() constMotionPropertiesinline
GetLinearDOFsMask() constMotionPropertiesinline
GetLinearVelocity() constMotionPropertiesinline
GetLocalBounds() constSoftBodyMotionPropertiesinline
GetLocalSpaceInverseInertia() constMotionPropertiesinline
GetLocalSpaceInverseInertiaUnchecked() constMotionPropertiesinline
GetMaterials() constSoftBodyMotionPropertiesinline
GetMaxAngularVelocity() constMotionPropertiesinline
GetMaxLinearVelocity() constMotionPropertiesinline
GetMotionQuality() constMotionPropertiesinline
GetNumIterations() constSoftBodyMotionPropertiesinline
GetNumPositionStepsOverride() constMotionPropertiesinline
GetNumVelocityStepsOverride() constMotionPropertiesinline
GetPointVelocityCOM(Vec3Arg inPointRelativeToCOM) constMotionPropertiesinline
GetPressure() constSoftBodyMotionPropertiesinline
GetSettings() constSoftBodyMotionPropertiesinline
GetSkinnedMaxDistanceMultiplier() constSoftBodyMotionPropertiesinline
GetUpdatePosition() constSoftBodyMotionPropertiesinline
GetVertex(uint inIndex) constSoftBodyMotionPropertiesinline
GetVertex(uint inIndex)SoftBodyMotionPropertiesinline
GetVertices() constSoftBodyMotionPropertiesinline
GetVertices()SoftBodyMotionPropertiesinline
GetVolume() constSoftBodyMotionPropertiesinline
Initialize(const SoftBodyCreationSettings &inSettings)SoftBodyMotionProperties
InitializeUpdateContext(float inDeltaTime, Body &inSoftBody, const PhysicsSystem &inSystem, SoftBodyUpdateContext &ioContext)SoftBodyMotionProperties
InvBind typedefSoftBodyMotionProperties
LockAngular(Vec3Arg inV) constMotionPropertiesinline
LockTranslation(Vec3Arg inV) constMotionPropertiesinline
LRA typedefSoftBodyMotionProperties
MoveKinematic(Vec3Arg inDeltaPosition, QuatArg inDeltaRotation, float inDeltaTime)MotionPropertiesinline
MultiplyWorldSpaceInverseInertiaByVector(QuatArg inBodyRotation, Vec3Arg inV) constMotionProperties
ParallelUpdate(SoftBodyUpdateContext &ioContext, const PhysicsSettings &inPhysicsSettings)SoftBodyMotionProperties
ResetForce()MotionPropertiesinline
ResetMotion()MotionPropertiesinline
ResetSleepTestSpheres(const RVec3 *inPoints)MotionPropertiesinline
ResetSleepTestTimer()MotionPropertiesinline
ResetTorque()MotionPropertiesinline
RestoreState(StateRecorder &inStream)SoftBodyMotionProperties
SaveState(StateRecorder &inStream) constSoftBodyMotionProperties
SetAngularDamping(float inAngularDamping)MotionPropertiesinline
SetAngularVelocity(Vec3Arg inAngularVelocity)MotionPropertiesinline
SetAngularVelocityClamped(Vec3Arg inAngularVelocity)MotionPropertiesinline
SetEnableSkinConstraints(bool inEnableSkinConstraints)SoftBodyMotionPropertiesinline
SetGravityFactor(float inGravityFactor)MotionPropertiesinline
SetInverseInertia(Vec3Arg inDiagonal, QuatArg inRot)MotionPropertiesinline
SetInverseMass(float inInverseMass)MotionPropertiesinline
SetIslandIndexInternal(uint32 inIndex)MotionPropertiesinline
SetLinearDamping(float inLinearDamping)MotionPropertiesinline
SetLinearVelocity(Vec3Arg inLinearVelocity)MotionPropertiesinline
SetLinearVelocityClamped(Vec3Arg inLinearVelocity)MotionPropertiesinline
SetMassProperties(EAllowedDOFs inAllowedDOFs, const MassProperties &inMassProperties)MotionProperties
SetMaxAngularVelocity(float inAngularVelocity)MotionPropertiesinline
SetMaxLinearVelocity(float inLinearVelocity)MotionPropertiesinline
SetNumIterations(uint32 inNumIterations)SoftBodyMotionPropertiesinline
SetNumPositionStepsOverride(uint inN)MotionPropertiesinline
SetNumVelocityStepsOverride(uint inN)MotionPropertiesinline
SetPressure(float inPressure)SoftBodyMotionPropertiesinline
SetSkinnedMaxDistanceMultiplier(float inSkinnedMaxDistanceMultiplier)SoftBodyMotionPropertiesinline
SetUpdatePosition(bool inUpdatePosition)SoftBodyMotionPropertiesinline
Skinned typedefSoftBodyMotionProperties
SkinVertices(RMat44Arg inCenterOfMassTransform, const Mat44 *inJointMatrices, uint inNumJoints, bool inHardSkinAll, TempAllocator &ioTempAllocator)SoftBodyMotionProperties
SkinWeight typedefSoftBodyMotionProperties
SoftBodyManifoldSoftBodyMotionPropertiesfriend
SubAngularVelocityStep(Vec3Arg inAngularVelocityChange)MotionPropertiesinline
SubLinearVelocityStep(Vec3Arg inLinearVelocityChange)MotionPropertiesinline
UpdateRigidBodyVelocities(const SoftBodyUpdateContext &inContext, BodyInterface &inBodyInterface)SoftBodyMotionProperties
Vertex typedefSoftBodyMotionProperties
Volume typedefSoftBodyMotionProperties
+
+ + + + diff --git a/class_soft_body_motion_properties.html b/class_soft_body_motion_properties.html new file mode 100644 index 000000000..8b038dcd8 --- /dev/null +++ b/class_soft_body_motion_properties.html @@ -0,0 +1,1726 @@ + + + + + + + +Jolt Physics: SoftBodyMotionProperties Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyMotionProperties Class Reference
+
+
+ +

This class contains the runtime information of a soft body. + More...

+ +

#include <SoftBodyMotionProperties.h>

+
+Inheritance diagram for SoftBodyMotionProperties:
+
+
+ + +MotionProperties + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Types

enum class  EStatus { NoWork = 1 << 0 +, DidWork = 1 << 1 +, Done = 1 << 2 + }
 Return code for ParallelUpdate. More...
 
using Vertex = SoftBodyVertex
 
using Edge = SoftBodySharedSettings::Edge
 
using Face = SoftBodySharedSettings::Face
 
using DihedralBend = SoftBodySharedSettings::DihedralBend
 
using Volume = SoftBodySharedSettings::Volume
 
using InvBind = SoftBodySharedSettings::InvBind
 
using SkinWeight = SoftBodySharedSettings::SkinWeight
 
using Skinned = SoftBodySharedSettings::Skinned
 
using LRA = SoftBodySharedSettings::LRA
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void Initialize (const SoftBodyCreationSettings &inSettings)
 Initialize the soft body motion properties.
 
const SoftBodySharedSettingsGetSettings () const
 Get the shared settings of the soft body.
 
const Array< Vertex > & GetVertices () const
 Get the vertices of the soft body.
 
Array< Vertex > & GetVertices ()
 
const VertexGetVertex (uint inIndex) const
 Access an individual vertex.
 
VertexGetVertex (uint inIndex)
 
const PhysicsMaterialListGetMaterials () const
 Get the materials of the soft body.
 
const Array< Face > & GetFaces () const
 Get the faces of the soft body.
 
const FaceGetFace (uint inIndex) const
 Access to an individual face.
 
uint32 GetNumIterations () const
 Get the number of solver iterations.
 
void SetNumIterations (uint32 inNumIterations)
 
float GetPressure () const
 Get the pressure of the soft body.
 
void SetPressure (float inPressure)
 
bool GetUpdatePosition () const
 Update the position of the body while simulating (set to false for something that is attached to the static world)
 
void SetUpdatePosition (bool inUpdatePosition)
 
bool GetEnableSkinConstraints () const
 Global setting to turn on/off skin constraints.
 
void SetEnableSkinConstraints (bool inEnableSkinConstraints)
 
float GetSkinnedMaxDistanceMultiplier () const
 Multiplier applied to Skinned::mMaxDistance to allow tightening or loosening of the skin constraints. 0 to hard skin all vertices.
 
void SetSkinnedMaxDistanceMultiplier (float inSkinnedMaxDistanceMultiplier)
 
const AABoxGetLocalBounds () const
 Get local bounding box.
 
float GetVolume () const
 Get the volume of the soft body. Note can become negative if the shape is inside out!
 
void CalculateMassAndInertia ()
 Calculate the total mass and inertia of this body based on the current state of the vertices.
 
void DrawVertices (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform) const
 Draw the state of a soft body.
 
void DrawVertexVelocities (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform) const
 
void DrawEdgeConstraints (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) const
 
void DrawBendConstraints (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) const
 
void DrawVolumeConstraints (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) const
 
void DrawSkinConstraints (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) const
 
void DrawLRAConstraints (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, ESoftBodyConstraintColor inConstraintColor) const
 
void DrawPredictedBounds (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform) const
 
void SaveState (StateRecorder &inStream) const
 Saving state for replay.
 
void RestoreState (StateRecorder &inStream)
 Restoring state for replay.
 
void SkinVertices (RMat44Arg inCenterOfMassTransform, const Mat44 *inJointMatrices, uint inNumJoints, bool inHardSkinAll, TempAllocator &ioTempAllocator)
 
void CustomUpdate (float inDeltaTime, Body &ioSoftBody, PhysicsSystem &inSystem)
 
void InitializeUpdateContext (float inDeltaTime, Body &inSoftBody, const PhysicsSystem &inSystem, SoftBodyUpdateContext &ioContext)
 Initialize the update context. Not part of the public API.
 
void DetermineCollidingShapes (const SoftBodyUpdateContext &inContext, const PhysicsSystem &inSystem, const BodyLockInterface &inBodyLockInterface)
 Do a broad phase check and collect all bodies that can possibly collide with this soft body. Not part of the public API.
 
EStatus ParallelUpdate (SoftBodyUpdateContext &ioContext, const PhysicsSettings &inPhysicsSettings)
 Update the soft body, will process a batch of work. Not part of the public API.
 
void UpdateRigidBodyVelocities (const SoftBodyUpdateContext &inContext, BodyInterface &inBodyInterface)
 Update the velocities of all rigid bodies that we collided with. Not part of the public API.
 
- Public Member Functions inherited from MotionProperties
JPH_OVERRIDE_NEW_DELETE EMotionQuality GetMotionQuality () const
 Motion quality, or how well it detects collisions when it has a high velocity.
 
EAllowedDOFs GetAllowedDOFs () const
 Get the allowed degrees of freedom that this body has (this can be changed by calling SetMassProperties)
 
bool GetAllowSleeping () const
 If this body can go to sleep.
 
Vec3 GetLinearVelocity () const
 Get world space linear velocity of the center of mass.
 
void SetLinearVelocity (Vec3Arg inLinearVelocity)
 Set world space linear velocity of the center of mass.
 
void SetLinearVelocityClamped (Vec3Arg inLinearVelocity)
 Set world space linear velocity of the center of mass, will make sure the value is clamped against the maximum linear velocity.
 
Vec3 GetAngularVelocity () const
 Get world space angular velocity of the center of mass.
 
void SetAngularVelocity (Vec3Arg inAngularVelocity)
 Set world space angular velocity of the center of mass.
 
void SetAngularVelocityClamped (Vec3Arg inAngularVelocity)
 Set world space angular velocity of the center of mass, will make sure the value is clamped against the maximum angular velocity.
 
void MoveKinematic (Vec3Arg inDeltaPosition, QuatArg inDeltaRotation, float inDeltaTime)
 Set velocity of body such that it will be rotate/translate by inDeltaPosition/Rotation in inDeltaTime seconds.
 
void ClampLinearVelocity ()
 Clamp velocity according to limit.
 
void ClampAngularVelocity ()
 
float GetLinearDamping () const
 Get linear damping: dv/dt = -c * v. c must be between 0 and 1 but is usually close to 0.
 
void SetLinearDamping (float inLinearDamping)
 
float GetAngularDamping () const
 Get angular damping: dw/dt = -c * w. c must be between 0 and 1 but is usually close to 0.
 
void SetAngularDamping (float inAngularDamping)
 
float GetGravityFactor () const
 Get gravity factor (1 = normal gravity, 0 = no gravity)
 
void SetGravityFactor (float inGravityFactor)
 
void SetMassProperties (EAllowedDOFs inAllowedDOFs, const MassProperties &inMassProperties)
 Set the mass and inertia tensor.
 
float GetInverseMass () const
 Get inverse mass (1 / mass). Should only be called on a dynamic object (static or kinematic bodies have infinite mass so should be treated as 1 / mass = 0)
 
float GetInverseMassUnchecked () const
 
void SetInverseMass (float inInverseMass)
 
Vec3 GetInverseInertiaDiagonal () const
 Diagonal of inverse inertia matrix: D. Should only be called on a dynamic object (static or kinematic bodies have infinite mass so should be treated as D = 0)
 
Quat GetInertiaRotation () const
 Rotation (R) that takes inverse inertia diagonal to local space: \(I_{body}^{-1} = R \: D \: R^{-1}\).
 
void SetInverseInertia (Vec3Arg inDiagonal, QuatArg inRot)
 
Mat44 GetLocalSpaceInverseInertia () const
 Get inverse inertia matrix ( \(I_{body}^{-1}\)). Will be a matrix of zeros for a static or kinematic object.
 
Mat44 GetLocalSpaceInverseInertiaUnchecked () const
 Same as GetLocalSpaceInverseInertia() but doesn't check if the body is dynamic.
 
Mat44 GetInverseInertiaForRotation (Mat44Arg inRotation) const
 Get inverse inertia matrix ( \(I^{-1}\)) for a given object rotation (translation will be ignored). Zero if object is static or kinematic.
 
JPH_INLINE Vec3 MultiplyWorldSpaceInverseInertiaByVector (QuatArg inBodyRotation, Vec3Arg inV) const
 Multiply a vector with the inverse world space inertia tensor ( \(I_{world}^{-1}\)). Zero if object is static or kinematic.
 
JPH_INLINE Vec3 GetPointVelocityCOM (Vec3Arg inPointRelativeToCOM) const
 Velocity of point inPoint (in center of mass space, e.g. on the surface of the body) of the body (unit: m/s)
 
JPH_INLINE Vec3 GetAccumulatedForce () const
 
JPH_INLINE Vec3 GetAccumulatedTorque () const
 
JPH_INLINE void ResetForce ()
 
JPH_INLINE void ResetTorque ()
 
JPH_INLINE void ResetMotion ()
 
JPH_INLINE UVec4 GetLinearDOFsMask () const
 Returns a vector where the linear components that are not allowed by mAllowedDOFs are set to 0 and the rest to 0xffffffff.
 
JPH_INLINE Vec3 LockTranslation (Vec3Arg inV) const
 Takes a translation vector inV and returns a vector where the components that are not allowed by mAllowedDOFs are set to 0.
 
JPH_INLINE UVec4 GetAngularDOFsMask () const
 Returns a vector where the angular components that are not allowed by mAllowedDOFs are set to 0 and the rest to 0xffffffff.
 
JPH_INLINE Vec3 LockAngular (Vec3Arg inV) const
 Takes an angular velocity / torque vector inV and returns a vector where the components that are not allowed by mAllowedDOFs are set to 0.
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when this body is dynamic and colliding. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when this body is dynamic and colliding. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void ApplyGyroscopicForceInternal (QuatArg inBodyRotation, float inDeltaTime)
 Apply the gyroscopic force (aka Dzhanibekov effect, see https://en.wikipedia.org/wiki/Tennis_racket_theorem)
 
void ApplyForceTorqueAndDragInternal (QuatArg inBodyRotation, Vec3Arg inGravity, float inDeltaTime)
 Apply all accumulated forces, torques and drag (should only be called by the PhysicsSystem)
 
uint32 GetIslandIndexInternal () const
 Access to the island index.
 
void SetIslandIndexInternal (uint32 inIndex)
 
uint32 GetIndexInActiveBodiesInternal () const
 Access to the index in the active bodies array.
 
void ResetSleepTestSpheres (const RVec3 *inPoints)
 Reset spheres to center around inPoints with radius 0.
 
void ResetSleepTestTimer ()
 Reset the sleep test timer without resetting the sleep test spheres.
 
ECanSleep AccumulateSleepTime (float inDeltaTime, float inTimeBeforeSleep)
 Accumulate sleep time and return if a body can go to sleep.
 
void SaveState (StateRecorder &inStream) const
 Saving state for replay.
 
void RestoreState (StateRecorder &inStream)
 Restoring state for replay.
 
float GetMaxLinearVelocity () const
 Maximum linear velocity that a body can achieve. Used to prevent the system from exploding.
 
void SetMaxLinearVelocity (float inLinearVelocity)
 
float GetMaxAngularVelocity () const
 Maximum angular velocity that a body can achieve. Used to prevent the system from exploding.
 
void SetMaxAngularVelocity (float inAngularVelocity)
 
void AddLinearVelocityStep (Vec3Arg inLinearVelocityChange)
 
void SubLinearVelocityStep (Vec3Arg inLinearVelocityChange)
 
void AddAngularVelocityStep (Vec3Arg inAngularVelocityChange)
 
void SubAngularVelocityStep (Vec3Arg inAngularVelocityChange)
 
+ + + +

+Friends

class SoftBodyManifold
 
+ + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from MotionProperties
static constexpr uint32 cInactiveIndex = uint32(-1)
 Constant indicating that body is not active.
 
+

Detailed Description

+

This class contains the runtime information of a soft body.

+

Member Typedef Documentation

+ +

◆ DihedralBend

+ + + +

◆ Edge

+ + + +

◆ Face

+ + + +

◆ InvBind

+ + + +

◆ LRA

+ + + +

◆ Skinned

+ + + +

◆ SkinWeight

+ + + +

◆ Vertex

+ + + +

◆ Volume

+ + +

Member Enumeration Documentation

+ +

◆ EStatus

+ +
+
+ + + + + +
+ + + + +
enum class SoftBodyMotionProperties::EStatus
+
+strong
+
+ +

Return code for ParallelUpdate.

+ + + + +
Enumerator
NoWork 

No work was done because other threads were still working on a batch that cannot run concurrently.

+
DidWork 

Work was done to progress the update.

+
Done 

All work is done.

+
+ +
+
+

Member Function Documentation

+ +

◆ CalculateMassAndInertia()

+ +
+
+ + + + + + + +
void SoftBodyMotionProperties::CalculateMassAndInertia ()
+
+ +

Calculate the total mass and inertia of this body based on the current state of the vertices.

+ +
+
+ +

◆ CustomUpdate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::CustomUpdate (float inDeltaTime,
BodyioSoftBody,
PhysicsSysteminSystem 
)
+
+

This function allows you to update the soft body immediately without going through the PhysicsSystem. This is useful if the soft body is teleported and needs to 'settle' or it can be used if a the soft body is not added to the PhysicsSystem and needs to be updated manually. One reason for not adding it to the PhyicsSystem is that you might want to update a soft body immediately after updating an animated object that has the soft body attached to it. If the soft body is added to the PhysicsSystem it will be updated by it, so calling this function will effectively update it twice. Note that when you use this function, only the current thread will be used, whereas if you update through the PhysicsSystem, multiple threads may be used. Note that this will bypass any sleep checks. Since the dynamic objects that the soft body touches will not move during this call, there can be simulation artifacts if you call this function multiple times without running the physics simulation step.

+ +
+
+ +

◆ DetermineCollidingShapes()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::DetermineCollidingShapes (const SoftBodyUpdateContextinContext,
const PhysicsSysteminSystem,
const BodyLockInterfaceinBodyLockInterface 
)
+
+ +

Do a broad phase check and collect all bodies that can possibly collide with this soft body. Not part of the public API.

+ +
+
+ +

◆ DrawBendConstraints()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::DrawBendConstraints (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
ESoftBodyConstraintColor inConstraintColor 
) const
+
+ +
+
+ +

◆ DrawEdgeConstraints()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::DrawEdgeConstraints (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
ESoftBodyConstraintColor inConstraintColor 
) const
+
+ +
+
+ +

◆ DrawLRAConstraints()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::DrawLRAConstraints (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
ESoftBodyConstraintColor inConstraintColor 
) const
+
+ +
+
+ +

◆ DrawPredictedBounds()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::DrawPredictedBounds (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform 
) const
+
+ +
+
+ +

◆ DrawSkinConstraints()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::DrawSkinConstraints (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
ESoftBodyConstraintColor inConstraintColor 
) const
+
+ +
+
+ +

◆ DrawVertexVelocities()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::DrawVertexVelocities (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform 
) const
+
+ +
+
+ +

◆ DrawVertices()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::DrawVertices (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform 
) const
+
+ +

Draw the state of a soft body.

+ +
+
+ +

◆ DrawVolumeConstraints()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::DrawVolumeConstraints (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
ESoftBodyConstraintColor inConstraintColor 
) const
+
+ +
+
+ +

◆ GetEnableSkinConstraints()

+ +
+
+ + + + + +
+ + + + + + + +
bool SoftBodyMotionProperties::GetEnableSkinConstraints () const
+
+inline
+
+ +

Global setting to turn on/off skin constraints.

+ +
+
+ +

◆ GetFace()

+ +
+
+ + + + + +
+ + + + + + + + +
const Face & SoftBodyMotionProperties::GetFace (uint inIndex) const
+
+inline
+
+ +

Access to an individual face.

+ +
+
+ +

◆ GetFaces()

+ +
+
+ + + + + +
+ + + + + + + +
const Array< Face > & SoftBodyMotionProperties::GetFaces () const
+
+inline
+
+ +

Get the faces of the soft body.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
const AABox & SoftBodyMotionProperties::GetLocalBounds () const
+
+inline
+
+ +

Get local bounding box.

+ +
+
+ +

◆ GetMaterials()

+ +
+
+ + + + + +
+ + + + + + + +
const PhysicsMaterialList & SoftBodyMotionProperties::GetMaterials () const
+
+inline
+
+ +

Get the materials of the soft body.

+ +
+
+ +

◆ GetNumIterations()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 SoftBodyMotionProperties::GetNumIterations () const
+
+inline
+
+ +

Get the number of solver iterations.

+ +
+
+ +

◆ GetPressure()

+ +
+
+ + + + + +
+ + + + + + + +
float SoftBodyMotionProperties::GetPressure () const
+
+inline
+
+ +

Get the pressure of the soft body.

+ +
+
+ +

◆ GetSettings()

+ +
+
+ + + + + +
+ + + + + + + +
const SoftBodySharedSettings * SoftBodyMotionProperties::GetSettings () const
+
+inline
+
+ +

Get the shared settings of the soft body.

+ +
+
+ +

◆ GetSkinnedMaxDistanceMultiplier()

+ +
+
+ + + + + +
+ + + + + + + +
float SoftBodyMotionProperties::GetSkinnedMaxDistanceMultiplier () const
+
+inline
+
+ +

Multiplier applied to Skinned::mMaxDistance to allow tightening or loosening of the skin constraints. 0 to hard skin all vertices.

+ +
+
+ +

◆ GetUpdatePosition()

+ +
+
+ + + + + +
+ + + + + + + +
bool SoftBodyMotionProperties::GetUpdatePosition () const
+
+inline
+
+ +

Update the position of the body while simulating (set to false for something that is attached to the static world)

+ +
+
+ +

◆ GetVertex() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Vertex & SoftBodyMotionProperties::GetVertex (uint inIndex)
+
+inline
+
+ +
+
+ +

◆ GetVertex() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
const Vertex & SoftBodyMotionProperties::GetVertex (uint inIndex) const
+
+inline
+
+ +

Access an individual vertex.

+ +
+
+ +

◆ GetVertices() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
Array< Vertex > & SoftBodyMotionProperties::GetVertices ()
+
+inline
+
+ +
+
+ +

◆ GetVertices() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const Array< Vertex > & SoftBodyMotionProperties::GetVertices () const
+
+inline
+
+ +

Get the vertices of the soft body.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
float SoftBodyMotionProperties::GetVolume () const
+
+inline
+
+ +

Get the volume of the soft body. Note can become negative if the shape is inside out!

+ +
+
+ +

◆ Initialize()

+ +
+
+ + + + + + + + +
void SoftBodyMotionProperties::Initialize (const SoftBodyCreationSettingsinSettings)
+
+ +

Initialize the soft body motion properties.

+ +
+
+ +

◆ InitializeUpdateContext()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::InitializeUpdateContext (float inDeltaTime,
BodyinSoftBody,
const PhysicsSysteminSystem,
SoftBodyUpdateContextioContext 
)
+
+ +

Initialize the update context. Not part of the public API.

+ +
+
+ +

◆ ParallelUpdate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
SoftBodyMotionProperties::EStatus SoftBodyMotionProperties::ParallelUpdate (SoftBodyUpdateContextioContext,
const PhysicsSettingsinPhysicsSettings 
)
+
+ +

Update the soft body, will process a batch of work. Not part of the public API.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + + + + +
void SoftBodyMotionProperties::RestoreState (StateRecorderinStream)
+
+ +

Restoring state for replay.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + + + + +
void SoftBodyMotionProperties::SaveState (StateRecorderinStream) const
+
+ +

Saving state for replay.

+ +
+
+ +

◆ SetEnableSkinConstraints()

+ +
+
+ + + + + +
+ + + + + + + + +
void SoftBodyMotionProperties::SetEnableSkinConstraints (bool inEnableSkinConstraints)
+
+inline
+
+ +
+
+ +

◆ SetNumIterations()

+ +
+
+ + + + + +
+ + + + + + + + +
void SoftBodyMotionProperties::SetNumIterations (uint32 inNumIterations)
+
+inline
+
+ +
+
+ +

◆ SetPressure()

+ +
+
+ + + + + +
+ + + + + + + + +
void SoftBodyMotionProperties::SetPressure (float inPressure)
+
+inline
+
+ +
+
+ +

◆ SetSkinnedMaxDistanceMultiplier()

+ +
+
+ + + + + +
+ + + + + + + + +
void SoftBodyMotionProperties::SetSkinnedMaxDistanceMultiplier (float inSkinnedMaxDistanceMultiplier)
+
+inline
+
+ +
+
+ +

◆ SetUpdatePosition()

+ +
+
+ + + + + +
+ + + + + + + + +
void SoftBodyMotionProperties::SetUpdatePosition (bool inUpdatePosition)
+
+inline
+
+ +
+
+ +

◆ SkinVertices()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::SkinVertices (RMat44Arg inCenterOfMassTransform,
const Mat44inJointMatrices,
uint inNumJoints,
bool inHardSkinAll,
TempAllocatorioTempAllocator 
)
+
+

Skin vertices to supplied joints, information is used by the skinned constraints.

Parameters
+ + + + + + +
inCenterOfMassTransformValue of Body::GetCenterOfMassTransform().
inJointMatricesThe joint matrices must be expressed relative to inCenterOfMassTransform.
inNumJointsIndicates how large the inJointMatrices array is (used only for validating out of bounds).
inHardSkinAllCan be used to position all vertices on the skinned vertices and can be used to hard reset the soft body.
ioTempAllocatorAllocator.
+
+
+ +
+
+ +

◆ UpdateRigidBodyVelocities()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SoftBodyMotionProperties::UpdateRigidBodyVelocities (const SoftBodyUpdateContextinContext,
BodyInterfaceinBodyInterface 
)
+
+ +

Update the velocities of all rigid bodies that we collided with. Not part of the public API.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ SoftBodyManifold

+ +
+
+ + + + + +
+ + + + +
friend class SoftBodyManifold
+
+friend
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_soft_body_motion_properties.js b/class_soft_body_motion_properties.js new file mode 100644 index 000000000..7fd0d1b03 --- /dev/null +++ b/class_soft_body_motion_properties.js @@ -0,0 +1,56 @@ +var class_soft_body_motion_properties = +[ + [ "DihedralBend", "class_soft_body_motion_properties.html#a3d2f1db97c2adadf7b27190e0486192a", null ], + [ "Edge", "class_soft_body_motion_properties.html#a25971eb4086d1c55443efcb298cc89e6", null ], + [ "Face", "class_soft_body_motion_properties.html#a3016ae78b7466b87d8695c82df9f2663", null ], + [ "InvBind", "class_soft_body_motion_properties.html#aca958392d6456c1d9cff6f4d54cac4f9", null ], + [ "LRA", "class_soft_body_motion_properties.html#a5e65775ab2b941a5ea195e714b07eb4e", null ], + [ "Skinned", "class_soft_body_motion_properties.html#a18d7bb8ddc939b3e9fe20a57cd99d722", null ], + [ "SkinWeight", "class_soft_body_motion_properties.html#a1a429c3683fb36c70ff13f57c8084f2f", null ], + [ "Vertex", "class_soft_body_motion_properties.html#a75df336bf9ce1b362efe2777604debbe", null ], + [ "Volume", "class_soft_body_motion_properties.html#abb014fb4190d9ac04aa5c3faa1556214", null ], + [ "EStatus", "class_soft_body_motion_properties.html#a0f968ca89a547af5c8978c966e327682", [ + [ "NoWork", "class_soft_body_motion_properties.html#a0f968ca89a547af5c8978c966e327682a4478afeb3b0fbabb01bc08e8ca92e691", null ], + [ "DidWork", "class_soft_body_motion_properties.html#a0f968ca89a547af5c8978c966e327682a8474fcf555e5d4cfd9ac45e7f2d6396e", null ], + [ "Done", "class_soft_body_motion_properties.html#a0f968ca89a547af5c8978c966e327682af92965e2c8a7afb3c1b9a5c09a263636", null ] + ] ], + [ "CalculateMassAndInertia", "class_soft_body_motion_properties.html#a9ad11aed026f33e1f26807870ccd1316", null ], + [ "CustomUpdate", "class_soft_body_motion_properties.html#ad4d7a9296f3a573698a253763391a2ef", null ], + [ "DetermineCollidingShapes", "class_soft_body_motion_properties.html#ac769f97c554975c25bd37860946d63cb", null ], + [ "DrawBendConstraints", "class_soft_body_motion_properties.html#abeca8c133c3aadb669b31f69cf70a2cf", null ], + [ "DrawEdgeConstraints", "class_soft_body_motion_properties.html#a0a5b90a07601d664cabf9bc51d335307", null ], + [ "DrawLRAConstraints", "class_soft_body_motion_properties.html#a814e392c5f59ad3879f102f7576e79fe", null ], + [ "DrawPredictedBounds", "class_soft_body_motion_properties.html#abf1d47bf116f2efc6d8d0cc7f5dac806", null ], + [ "DrawSkinConstraints", "class_soft_body_motion_properties.html#ad7ecbec356136a9cb231fb0695a07720", null ], + [ "DrawVertexVelocities", "class_soft_body_motion_properties.html#afe71edf0ec3dad256fffa93c845e866c", null ], + [ "DrawVertices", "class_soft_body_motion_properties.html#a064819f04932e34d238692905175a9d5", null ], + [ "DrawVolumeConstraints", "class_soft_body_motion_properties.html#a8514cb206c911c1b6ecd39754fb49e33", null ], + [ "GetEnableSkinConstraints", "class_soft_body_motion_properties.html#a0211a0376f1d3fcbe20eb246d3ba01db", null ], + [ "GetFace", "class_soft_body_motion_properties.html#afcbcb8a86be08dddf2f33027741d321b", null ], + [ "GetFaces", "class_soft_body_motion_properties.html#a8166377ba1eaf8dea4589bc90e8baf23", null ], + [ "GetLocalBounds", "class_soft_body_motion_properties.html#a9e0c2b0a3a39fb1d97c1318c7b65f9f0", null ], + [ "GetMaterials", "class_soft_body_motion_properties.html#a1fc5838f0275d998d9431767dc516a71", null ], + [ "GetNumIterations", "class_soft_body_motion_properties.html#adc98275db06cee84d06be488a9806ca5", null ], + [ "GetPressure", "class_soft_body_motion_properties.html#ae15a2a2fdf14951fe7d9cd22e9e848e6", null ], + [ "GetSettings", "class_soft_body_motion_properties.html#af56ddceaa1945447bf214647d44ca8f1", null ], + [ "GetSkinnedMaxDistanceMultiplier", "class_soft_body_motion_properties.html#a6201339ce0eaf31374525cf645c7babb", null ], + [ "GetUpdatePosition", "class_soft_body_motion_properties.html#ac798aa56fce5a89d404e164c4b483ddd", null ], + [ "GetVertex", "class_soft_body_motion_properties.html#a043b0f7b9bcc457d12af67a184c82b8e", null ], + [ "GetVertex", "class_soft_body_motion_properties.html#aa2581182a2773f19f17bb868419eced1", null ], + [ "GetVertices", "class_soft_body_motion_properties.html#a14aaefdff39da80c5d00f3733618bebb", null ], + [ "GetVertices", "class_soft_body_motion_properties.html#a39f8a1dd664ca0cdbbaed3893885e60a", null ], + [ "GetVolume", "class_soft_body_motion_properties.html#acfcc07bc8fe8e5a34767df2383eaf7ff", null ], + [ "Initialize", "class_soft_body_motion_properties.html#a999ca42bb024698adfa2bac1cf971d02", null ], + [ "InitializeUpdateContext", "class_soft_body_motion_properties.html#aec0e4f9a14bad868339c95357a8c37ab", null ], + [ "ParallelUpdate", "class_soft_body_motion_properties.html#a0a3aecce82ba325ca55922f4068f3c12", null ], + [ "RestoreState", "class_soft_body_motion_properties.html#a82ab6c1c73650cf2af92072c0fe8368d", null ], + [ "SaveState", "class_soft_body_motion_properties.html#aadcb5dbf36db97843bb74b18e8b02807", null ], + [ "SetEnableSkinConstraints", "class_soft_body_motion_properties.html#ae8b38e6b097ed9f37d9b8e844c200a4f", null ], + [ "SetNumIterations", "class_soft_body_motion_properties.html#aac3e3c0fc3d111fbe3765188b781c7e0", null ], + [ "SetPressure", "class_soft_body_motion_properties.html#a6d55ac6913186e4f8e715e5b4470e657", null ], + [ "SetSkinnedMaxDistanceMultiplier", "class_soft_body_motion_properties.html#a1f4346ba3a5bf7c26f8db600a29ccd29", null ], + [ "SetUpdatePosition", "class_soft_body_motion_properties.html#a4f74fee0d91efe0291d43f7f6433440c", null ], + [ "SkinVertices", "class_soft_body_motion_properties.html#a790161d0d5a2b34be8b3ab40376a62c6", null ], + [ "UpdateRigidBodyVelocities", "class_soft_body_motion_properties.html#ab64fe12fb4966612d3de96f79a3e6991", null ], + [ "SoftBodyManifold", "class_soft_body_motion_properties.html#a733acf8aae3ee3af252725fd38bcc12a", null ] +]; \ No newline at end of file diff --git a/class_soft_body_motion_properties.png b/class_soft_body_motion_properties.png new file mode 100644 index 000000000..0d2a288c7 Binary files /dev/null and b/class_soft_body_motion_properties.png differ diff --git a/class_soft_body_shape-members.html b/class_soft_body_shape-members.html new file mode 100644 index 000000000..e69a357a4 --- /dev/null +++ b/class_soft_body_shape-members.html @@ -0,0 +1,193 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyShape Member List
+
+
+ +

This is the complete list of members for SoftBodyShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
BodyManagerSoftBodyShapefriend
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideSoftBodyShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideSoftBodyShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideSoftBodyShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideSoftBodyShapevirtual
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideSoftBodyShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) constShapeinlinevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetCenterOfMass() const overrideSoftBodyShapeinlinevirtual
GetFaceIndex(const SubShapeID &inSubShapeID) constSoftBodyShape
GetInnerRadius() const overrideSoftBodyShapeinlinevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const overrideSoftBodyShapevirtual
GetMassProperties() const overrideSoftBodyShapeinlinevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideSoftBodyShapevirtual
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideSoftBodyShapevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const overrideSoftBodyShapevirtual
GetSubShapeIDBits() constSoftBodyShape
GetSubShapeIDBitsRecursive() const overrideSoftBodyShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideSoftBodyShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideSoftBodyShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideSoftBodyShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideSoftBodyShapevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideSoftBodyShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) constShapevirtual
MakeScaleValid(Vec3Arg inScale) constShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() const overrideSoftBodyShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream)Shapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)Shapeinlinevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) constShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetEmbedded() constRefTarget< Shape >inline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
SoftBodyShape()SoftBodyShapeinline
sRegister()SoftBodyShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_soft_body_shape.html b/class_soft_body_shape.html new file mode 100644 index 000000000..479233ea9 --- /dev/null +++ b/class_soft_body_shape.html @@ -0,0 +1,1331 @@ + + + + + + + +Jolt Physics: SoftBodyShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyShape Class Referencefinal
+
+
+ +

Shape used exclusively for soft bodies. Adds the ability to perform collision checks against soft bodies. + More...

+ +

#include <SoftBodyShape.h>

+
+Inheritance diagram for SoftBodyShape:
+
+
+ + +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + +

+Classes

struct  SBSGetTrianglesContext
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE SoftBodyShape ()
 Constructor.
 
uint GetSubShapeIDBits () const
 Determine amount of bits needed to encode sub shape id.
 
uint32 GetFaceIndex (const SubShapeID &inSubShapeID) const
 Convert a sub shape ID back to a face index.
 
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.
 
virtual Vec3 GetCenterOfMass () const override
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual bool IsValidScale (Vec3Arg inScale) const
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const
 
virtual void SaveBinaryState (StreamOut &inStream) const
 Saves the contents of the shape in binary form to inStream.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + +

+Friends

class BodyManager
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Protected Member Functions inherited from Shape
virtual void RestoreBinaryState (StreamIn &inStream)
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Shape used exclusively for soft bodies. Adds the ability to perform collision checks against soft bodies.

+

Constructor & Destructor Documentation

+ +

◆ SoftBodyShape()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE SoftBodyShape::SoftBodyShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool SoftBodyShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Implements Shape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ GetCenterOfMass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vec3 SoftBodyShape::GetCenterOfMass () const
+
+inlineoverridevirtual
+
+ +

All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetFaceIndex()

+ +
+
+ + + + + + + + +
uint32 SoftBodyShape::GetFaceIndex (const SubShapeIDinSubShapeID) const
+
+ +

Convert a sub shape ID back to a face index.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float SoftBodyShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox SoftBodyShape::GetLocalBounds () const
+
+overridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
virtual MassProperties SoftBodyShape::GetMassProperties () const
+
+inlineoverridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMaterial()

+ +
+
+ + + + + +
+ + + + + + + + +
const PhysicsMaterial * SoftBodyShape::GetMaterial (const SubShapeIDinSubShapeID) const
+
+overridevirtual
+
+ +

Get the material assigned to a particular sub shape ID.

+ +

Implements Shape.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
Shape::Stats SoftBodyShape::GetStats () const
+
+overridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyShape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3outCenterOfBuoyancy,
RVec3Arg inBaseOffset 
) const
+
+overridevirtual
+
+

Gets the properties needed to do buoyancy calculations for a body using this shape

Parameters
+ + + + + + + + +
inCenterOfMassTransformTransform that takes this shape (centered around center of mass) to world space (or a desired other space)
inScaleScale in local space of the shape (scales relative to its center of mass)
inSurfaceThe surface plane of the liquid relative to inCenterOfMassTransform
outTotalVolumeOn return this contains the total volume of the shape
outSubmergedVolumeOn return this contains the submerged volume of the shape
outCenterOfBuoyancyOn return this contains the world space center of mass of the submerged volume
inBaseOffsetThe offset to transform inCenterOfMassTransform to world space (in double precision mode this can be used to shift the whole operation closer to the origin). Only used for debug drawing.
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ GetSubShapeIDBits()

+ +
+
+ + + + + + + +
JPH_NAMESPACE_BEGIN uint SoftBodyShape::GetSubShapeIDBits () const
+
+ +

Determine amount of bits needed to encode sub shape id.

+ +
+
+ +

◆ GetSubShapeIDBitsRecursive()

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint SoftBodyShape::GetSubShapeIDBitsRecursive () const
+
+inlineoverridevirtual
+
+ +

Get the max number of sub shape ID bits that are needed to be able to address any leaf shape in this shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 SoftBodyShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int SoftBodyShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+overridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodyShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Implements Shape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
float SoftBodyShape::GetVolume () const
+
+overridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ MustBeStatic()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool SoftBodyShape::MustBeStatic () const
+
+inlineoverridevirtual
+
+ +

Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void SoftBodyShape::sRegister ()
+
+static
+
+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ BodyManager

+ +
+
+ + + + + +
+ + + + +
friend class BodyManager
+
+friend
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_soft_body_shape.js b/class_soft_body_shape.js new file mode 100644 index 000000000..fdd83ac24 --- /dev/null +++ b/class_soft_body_shape.js @@ -0,0 +1,27 @@ +var class_soft_body_shape = +[ + [ "SBSGetTrianglesContext", "struct_soft_body_shape_1_1_s_b_s_get_triangles_context.html", "struct_soft_body_shape_1_1_s_b_s_get_triangles_context" ], + [ "SoftBodyShape", "class_soft_body_shape.html#a4536dbf0d8d3cf1d44639bf82edf3496", null ], + [ "CastRay", "class_soft_body_shape.html#a851380d12087292cc55c87097b9afea5", null ], + [ "CastRay", "class_soft_body_shape.html#ac35d3b8df54c178044c0960d56691c9f", null ], + [ "CollidePoint", "class_soft_body_shape.html#ada1aa746b6692793aa8658a316967bb3", null ], + [ "CollideSoftBodyVertices", "class_soft_body_shape.html#a7bba88197d25665160207c137e9a741e", null ], + [ "Draw", "class_soft_body_shape.html#a4259140bb1fef6e7d7d2692d7dcd8577", null ], + [ "GetCenterOfMass", "class_soft_body_shape.html#ade435c48ffcf2c054b84dedd23e87148", null ], + [ "GetFaceIndex", "class_soft_body_shape.html#ad5f6a2eb0f01c7d83d8aa630559c4d7b", null ], + [ "GetInnerRadius", "class_soft_body_shape.html#a5c4e7f0e89d968da93b5759b642d5493", null ], + [ "GetLocalBounds", "class_soft_body_shape.html#aa6cb675060af07d4d24c6e7d6fca3d3d", null ], + [ "GetMassProperties", "class_soft_body_shape.html#ac8e3e81fea2706ab86fcf9aa9302d40d", null ], + [ "GetMaterial", "class_soft_body_shape.html#a3123c23cde35ee4b94cfa9639321193d", null ], + [ "GetStats", "class_soft_body_shape.html#ae275b4c0b3e23b493bda12687d93970c", null ], + [ "GetSubmergedVolume", "class_soft_body_shape.html#aa1909263e9c7099933d817f6a6d5eab0", null ], + [ "GetSubShapeIDBits", "class_soft_body_shape.html#ae83f9a5588e05aab0dd66f96750a3b15", null ], + [ "GetSubShapeIDBitsRecursive", "class_soft_body_shape.html#a3ff7ce4976bb19746e58ac06d90f1695", null ], + [ "GetSupportingFace", "class_soft_body_shape.html#a034dea7c47610c270711b8c4a19f8b87", null ], + [ "GetSurfaceNormal", "class_soft_body_shape.html#af8f830edd7a8620969c68da8c4ff40f8", null ], + [ "GetTrianglesNext", "class_soft_body_shape.html#aef58794da013b5ec5993744dab56f4b5", null ], + [ "GetTrianglesStart", "class_soft_body_shape.html#a28d58a8068af4f051eb33f5545524f8d", null ], + [ "GetVolume", "class_soft_body_shape.html#aa6126864f8ab7dc383063d46f9f89a4a", null ], + [ "MustBeStatic", "class_soft_body_shape.html#ab0e06455cdee319947603a03d4d653fe", null ], + [ "BodyManager", "class_soft_body_shape.html#a58dc89a83d8c4dc28bd5f6e8c0ed35c8", null ] +]; \ No newline at end of file diff --git a/class_soft_body_shape.png b/class_soft_body_shape.png new file mode 100644 index 000000000..06af43b2a Binary files /dev/null and b/class_soft_body_shape.png differ diff --git a/class_soft_body_shared_settings-members.html b/class_soft_body_shared_settings-members.html new file mode 100644 index 000000000..8e899f067 --- /dev/null +++ b/class_soft_body_shared_settings-members.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodySharedSettings Member List
+
+
+ +

This is the complete list of members for SoftBodySharedSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddFace(const Face &inFace)SoftBodySharedSettingsinline
AddRef() constRefTarget< SoftBodySharedSettings >inline
CalculateBendConstraintConstants()SoftBodySharedSettings
CalculateEdgeLengths()SoftBodySharedSettings
CalculateLRALengths(float inMaxDistanceMultiplier=1.0f)SoftBodySharedSettings
CalculateSkinnedConstraintNormals()SoftBodySharedSettings
CalculateVolumeConstraintVolumes()SoftBodySharedSettings
cEmbeddedRefTarget< SoftBodySharedSettings >protectedstatic
Clone() constSoftBodySharedSettings
CreateConstraints(const VertexAttributes *inVertexAttributes, uint inVertexAttributesLength, EBendType inBendType=EBendType::Distance, float inAngleTolerance=DegreesToRadians(8.0f))SoftBodySharedSettings
EBendType enum nameSoftBodySharedSettings
ELRAType enum nameSoftBodySharedSettings
GetRefCount() constRefTarget< SoftBodySharedSettings >inline
IDToMaterialMap typedefSoftBodySharedSettings
IDToSharedSettingsMap typedefSoftBodySharedSettings
MaterialToIDMap typedefSoftBodySharedSettings
mDihedralBendConstraintsSoftBodySharedSettings
mEdgeConstraintsSoftBodySharedSettings
mFacesSoftBodySharedSettings
mInvBindMatricesSoftBodySharedSettings
mLRAConstraintsSoftBodySharedSettings
mMaterialsSoftBodySharedSettings
mRefCountRefTarget< SoftBodySharedSettings >mutableprotected
mSkinnedConstraintsSoftBodySharedSettings
mVertexRadiusSoftBodySharedSettings
mVerticesSoftBodySharedSettings
mVolumeConstraintsSoftBodySharedSettings
operator=(const RefTarget &)RefTarget< SoftBodySharedSettings >inline
Optimize(OptimizationResults &outResults)SoftBodySharedSettings
Optimize()SoftBodySharedSettingsinline
RefTarget()=defaultRefTarget< SoftBodySharedSettings >inline
RefTarget(const RefTarget &)RefTarget< SoftBodySharedSettings >inline
Release() constRefTarget< SoftBodySharedSettings >inline
RestoreBinaryState(StreamIn &inStream)SoftBodySharedSettings
SaveBinaryState(StreamOut &inStream) constSoftBodySharedSettings
SaveWithMaterials(StreamOut &inStream, SharedSettingsToIDMap &ioSettingsMap, MaterialToIDMap &ioMaterialMap) constSoftBodySharedSettings
SetEmbedded() constRefTarget< SoftBodySharedSettings >inline
SettingsResult typedefSoftBodySharedSettings
SharedSettingsToIDMap typedefSoftBodySharedSettings
sInternalGetRefCountOffset()RefTarget< SoftBodySharedSettings >inlinestatic
SoftBodyMotionPropertiesSoftBodySharedSettingsfriend
sRestoreWithMaterials(StreamIn &inStream, IDToSharedSettingsMap &ioSettingsMap, IDToMaterialMap &ioMaterialMap)SoftBodySharedSettingsstatic
~RefTarget()RefTarget< SoftBodySharedSettings >inline
+
+ + + + diff --git a/class_soft_body_shared_settings.html b/class_soft_body_shared_settings.html new file mode 100644 index 000000000..f7a499518 --- /dev/null +++ b/class_soft_body_shared_settings.html @@ -0,0 +1,1003 @@ + + + + + + + +Jolt Physics: SoftBodySharedSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodySharedSettings Class Reference
+
+
+ +

#include <SoftBodySharedSettings.h>

+
+Inheritance diagram for SoftBodySharedSettings:
+
+
+ + +RefTarget< SoftBodySharedSettings > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  DihedralBend
 
struct  Edge
 An edge keeps two vertices at a constant distance using a spring: |x1 - x2| = rest length. More...
 
struct  Face
 A face defines the surface of the body. More...
 
class  InvBind
 An inverse bind matrix take a skinned vertex from its bind pose into joint local space. More...
 
class  LRA
 
class  OptimizationResults
 Information about the optimization of the soft body, the indices of certain elements may have changed. More...
 
class  Skinned
 A constraint that skins a vertex to joints and limits the distance that the simulated vertex can travel from this vertex. More...
 
class  SkinWeight
 A joint and its skin weight. More...
 
struct  Vertex
 A vertex is a particle, the data in this structure is only used during creation of the soft body and not during simulation. More...
 
struct  VertexAttributes
 
struct  Volume
 Volume constraint, keeps the volume of a tetrahedron constant. More...
 
+ + + + + + + + + + + + + + + + + +

+Public Types

enum class  EBendType { None +, Distance +, Dihedral + }
 Which type of bend constraint should be created. More...
 
enum class  ELRAType { None +, EuclideanDistance +, GeodesicDistance + }
 The type of long range attachment constraint to create. More...
 
using SharedSettingsToIDMap = StreamUtils::ObjectToIDMap< SoftBodySharedSettings >
 
using IDToSharedSettingsMap = StreamUtils::IDToObjectMap< SoftBodySharedSettings >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
using SettingsResult = Result< Ref< SoftBodySharedSettings > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void CreateConstraints (const VertexAttributes *inVertexAttributes, uint inVertexAttributesLength, EBendType inBendType=EBendType::Distance, float inAngleTolerance=DegreesToRadians(8.0f))
 
void CalculateEdgeLengths ()
 Calculate the initial lengths of all springs of the edges of this soft body (if you use CreateConstraint, this is already done)
 
void CalculateLRALengths (float inMaxDistanceMultiplier=1.0f)
 
void CalculateBendConstraintConstants ()
 Calculate the constants for the bend constraints (if you use CreateConstraints, this is already done)
 
void CalculateVolumeConstraintVolumes ()
 Calculates the initial volume of all tetrahedra of this soft body.
 
void CalculateSkinnedConstraintNormals ()
 Calculate information needed to be able to calculate the skinned constraint normals at run-time.
 
void Optimize (OptimizationResults &outResults)
 Optimize the soft body settings for simulation. This will reorder constraints so they can be executed in parallel.
 
void Optimize ()
 Optimize the soft body settings without results.
 
Ref< SoftBodySharedSettingsClone () const
 Clone this object.
 
void SaveBinaryState (StreamOut &inStream) const
 Saves the state of this object in binary form to inStream. Doesn't store the material list.
 
void RestoreBinaryState (StreamIn &inStream)
 Restore the state of this object from inStream. Doesn't restore the material list.
 
void SaveWithMaterials (StreamOut &inStream, SharedSettingsToIDMap &ioSettingsMap, MaterialToIDMap &ioMaterialMap) const
 Save this shared settings and its materials. Pass in an empty map ioSettingsMap / ioMaterialMap or reuse the same map while saving multiple settings objects to the same stream in order to avoid writing duplicates.
 
void AddFace (const Face &inFace)
 Add a face to this soft body.
 
- Public Member Functions inherited from RefTarget< SoftBodySharedSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + +

+Static Public Member Functions

static SettingsResult sRestoreWithMaterials (StreamIn &inStream, IDToSharedSettingsMap &ioSettingsMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape and materials. Pass in an empty map in ioSettingsMap / ioMaterialMap or reuse the same map while reading multiple settings objects from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< SoftBodySharedSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Array< VertexmVertices
 The list of vertices or particles of the body.
 
Array< FacemFaces
 The list of faces of the body.
 
Array< EdgemEdgeConstraints
 The list of edges or springs of the body.
 
Array< DihedralBendmDihedralBendConstraints
 The list of dihedral bend constraints of the body.
 
Array< VolumemVolumeConstraints
 The list of volume constraints of the body that keep the volume of tetrahedra in the soft body constant.
 
Array< SkinnedmSkinnedConstraints
 The list of vertices that are constrained to a skinned vertex.
 
Array< InvBindmInvBindMatrices
 The list of inverse bind matrices for skinning vertices.
 
Array< LRAmLRAConstraints
 The list of long range attachment constraints.
 
PhysicsMaterialList mMaterials { PhysicsMaterial::sDefault }
 The materials of the faces of the body, referenced by Face::mMaterialIndex.
 
float mVertexRadius = 0.0f
 How big the particles are, can be used to push the vertices a little bit away from the surface of other bodies to prevent z-fighting.
 
+ + + +

+Friends

class SoftBodyMotionProperties
 
+ + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from RefTarget< SoftBodySharedSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< SoftBodySharedSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

This class defines the setup of all particles and their constraints. It is used during the simulation and can be shared between multiple soft bodies.

+

Member Typedef Documentation

+ +

◆ IDToMaterialMap

+ + + +

◆ IDToSharedSettingsMap

+ + + +

◆ MaterialToIDMap

+ + + +

◆ SettingsResult

+ + + +

◆ SharedSettingsToIDMap

+ + +

Member Enumeration Documentation

+ +

◆ EBendType

+ +
+
+ + + + + +
+ + + + +
enum class SoftBodySharedSettings::EBendType
+
+strong
+
+ +

Which type of bend constraint should be created.

+ + + + +
Enumerator
None 

No bend constraints will be created.

+
Distance 

A simple distance constraint.

+
Dihedral 

A dihedral bend constraint (most expensive, but also supports triangles that are initially not in the same plane)

+
+ +
+
+ +

◆ ELRAType

+ +
+
+ + + + + +
+ + + + +
enum class SoftBodySharedSettings::ELRAType
+
+strong
+
+ +

The type of long range attachment constraint to create.

+ + + + +
Enumerator
None 

Don't create a LRA constraint.

+
EuclideanDistance 

Create a LRA constraint based on Euclidean distance between the closest kinematic vertex and this vertex.

+
GeodesicDistance 

Create a LRA constraint based on the geodesic distance between the closest kinematic vertex and this vertex (follows the edge constraints)

+
+ +
+
+

Member Function Documentation

+ +

◆ AddFace()

+ +
+
+ + + + + +
+ + + + + + + + +
void SoftBodySharedSettings::AddFace (const FaceinFace)
+
+inline
+
+ +

Add a face to this soft body.

+ +
+
+ +

◆ CalculateBendConstraintConstants()

+ +
+
+ + + + + + + +
void SoftBodySharedSettings::CalculateBendConstraintConstants ()
+
+ +

Calculate the constants for the bend constraints (if you use CreateConstraints, this is already done)

+ +
+
+ +

◆ CalculateEdgeLengths()

+ +
+
+ + + + + + + +
void SoftBodySharedSettings::CalculateEdgeLengths ()
+
+ +

Calculate the initial lengths of all springs of the edges of this soft body (if you use CreateConstraint, this is already done)

+ +
+
+ +

◆ CalculateLRALengths()

+ +
+
+ + + + + + + + +
void SoftBodySharedSettings::CalculateLRALengths (float inMaxDistanceMultiplier = 1.0f)
+
+

Calculate the max lengths for the long range attachment constraints based on Euclidean distance (if you use CreateConstraints, this is already done)

Parameters
+ + +
inMaxDistanceMultiplierMultiplier for the max distance of the LRA constraint, e.g. 1.01 means the max distance is 1% longer than the calculated distance in the rest pose.
+
+
+ +
+
+ +

◆ CalculateSkinnedConstraintNormals()

+ +
+
+ + + + + + + +
void SoftBodySharedSettings::CalculateSkinnedConstraintNormals ()
+
+ +

Calculate information needed to be able to calculate the skinned constraint normals at run-time.

+ +
+
+ +

◆ CalculateVolumeConstraintVolumes()

+ +
+
+ + + + + + + +
void SoftBodySharedSettings::CalculateVolumeConstraintVolumes ()
+
+ +

Calculates the initial volume of all tetrahedra of this soft body.

+ +
+
+ +

◆ Clone()

+ +
+
+ + + + + + + +
Ref< SoftBodySharedSettings > SoftBodySharedSettings::Clone () const
+
+ +

Clone this object.

+ +
+
+ +

◆ CreateConstraints()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodySharedSettings::CreateConstraints (const VertexAttributesinVertexAttributes,
uint inVertexAttributesLength,
EBendType inBendType = EBendType::Distance,
float inAngleTolerance = DegreesToRadians(8.0f) 
)
+
+

Automatically create constraints based on the faces of the soft body

Parameters
+ + + + + +
inVertexAttributesA list of attributes for each vertex (1-on-1 with mVertices, note that if the list is smaller than mVertices the last element will be repeated). This defines the properties of the constraints that are created.
inVertexAttributesLengthThe length of inVertexAttributes
inBendTypeThe type of bend constraint to create
inAngleToleranceShear edges are created when two connected triangles form a quad (are roughly in the same plane and form a square with roughly 90 degree angles). This defines the tolerance (in radians).
+
+
+ +
+
+ +

◆ Optimize() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
void SoftBodySharedSettings::Optimize ()
+
+inline
+
+ +

Optimize the soft body settings without results.

+ +
+
+ +

◆ Optimize() [2/2]

+ +
+
+ + + + + + + + +
void SoftBodySharedSettings::Optimize (OptimizationResultsoutResults)
+
+ +

Optimize the soft body settings for simulation. This will reorder constraints so they can be executed in parallel.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void SoftBodySharedSettings::RestoreBinaryState (StreamIninStream)
+
+ +

Restore the state of this object from inStream. Doesn't restore the material list.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void SoftBodySharedSettings::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the state of this object in binary form to inStream. Doesn't store the material list.

+ +
+
+ +

◆ SaveWithMaterials()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SoftBodySharedSettings::SaveWithMaterials (StreamOutinStream,
SharedSettingsToIDMapioSettingsMap,
MaterialToIDMapioMaterialMap 
) const
+
+ +

Save this shared settings and its materials. Pass in an empty map ioSettingsMap / ioMaterialMap or reuse the same map while saving multiple settings objects to the same stream in order to avoid writing duplicates.

+ +
+
+ +

◆ sRestoreWithMaterials()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
SoftBodySharedSettings::SettingsResult SoftBodySharedSettings::sRestoreWithMaterials (StreamIninStream,
IDToSharedSettingsMapioSettingsMap,
IDToMaterialMapioMaterialMap 
)
+
+static
+
+ +

Restore a shape and materials. Pass in an empty map in ioSettingsMap / ioMaterialMap or reuse the same map while reading multiple settings objects from the same stream in order to restore duplicates.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ SoftBodyMotionProperties

+ +
+
+ + + + + +
+ + + + +
friend class SoftBodyMotionProperties
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ mDihedralBendConstraints

+ +
+
+ + + + +
Array<DihedralBend> SoftBodySharedSettings::mDihedralBendConstraints
+
+ +

The list of dihedral bend constraints of the body.

+ +
+
+ +

◆ mEdgeConstraints

+ +
+
+ + + + +
Array<Edge> SoftBodySharedSettings::mEdgeConstraints
+
+ +

The list of edges or springs of the body.

+ +
+
+ +

◆ mFaces

+ +
+
+ + + + +
Array<Face> SoftBodySharedSettings::mFaces
+
+ +

The list of faces of the body.

+ +
+
+ +

◆ mInvBindMatrices

+ +
+
+ + + + +
Array<InvBind> SoftBodySharedSettings::mInvBindMatrices
+
+ +

The list of inverse bind matrices for skinning vertices.

+ +
+
+ +

◆ mLRAConstraints

+ +
+
+ + + + +
Array<LRA> SoftBodySharedSettings::mLRAConstraints
+
+ +

The list of long range attachment constraints.

+ +
+
+ +

◆ mMaterials

+ +
+
+ + + + +
PhysicsMaterialList SoftBodySharedSettings::mMaterials { PhysicsMaterial::sDefault }
+
+ +

The materials of the faces of the body, referenced by Face::mMaterialIndex.

+ +
+
+ +

◆ mSkinnedConstraints

+ +
+
+ + + + +
Array<Skinned> SoftBodySharedSettings::mSkinnedConstraints
+
+ +

The list of vertices that are constrained to a skinned vertex.

+ +
+
+ +

◆ mVertexRadius

+ +
+
+ + + + +
float SoftBodySharedSettings::mVertexRadius = 0.0f
+
+ +

How big the particles are, can be used to push the vertices a little bit away from the surface of other bodies to prevent z-fighting.

+ +
+
+ +

◆ mVertices

+ +
+
+ + + + +
Array<Vertex> SoftBodySharedSettings::mVertices
+
+ +

The list of vertices or particles of the body.

+ +
+
+ +

◆ mVolumeConstraints

+ +
+
+ + + + +
Array<Volume> SoftBodySharedSettings::mVolumeConstraints
+
+ +

The list of volume constraints of the body that keep the volume of tetrahedra in the soft body constant.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_soft_body_shared_settings.js b/class_soft_body_shared_settings.js new file mode 100644 index 000000000..1457d365d --- /dev/null +++ b/class_soft_body_shared_settings.js @@ -0,0 +1,53 @@ +var class_soft_body_shared_settings = +[ + [ "DihedralBend", "struct_soft_body_shared_settings_1_1_dihedral_bend.html", "struct_soft_body_shared_settings_1_1_dihedral_bend" ], + [ "Edge", "struct_soft_body_shared_settings_1_1_edge.html", "struct_soft_body_shared_settings_1_1_edge" ], + [ "Face", "struct_soft_body_shared_settings_1_1_face.html", "struct_soft_body_shared_settings_1_1_face" ], + [ "InvBind", "class_soft_body_shared_settings_1_1_inv_bind.html", "class_soft_body_shared_settings_1_1_inv_bind" ], + [ "LRA", "class_soft_body_shared_settings_1_1_l_r_a.html", "class_soft_body_shared_settings_1_1_l_r_a" ], + [ "OptimizationResults", "class_soft_body_shared_settings_1_1_optimization_results.html", "class_soft_body_shared_settings_1_1_optimization_results" ], + [ "Skinned", "class_soft_body_shared_settings_1_1_skinned.html", "class_soft_body_shared_settings_1_1_skinned" ], + [ "SkinWeight", "class_soft_body_shared_settings_1_1_skin_weight.html", "class_soft_body_shared_settings_1_1_skin_weight" ], + [ "Vertex", "struct_soft_body_shared_settings_1_1_vertex.html", "struct_soft_body_shared_settings_1_1_vertex" ], + [ "VertexAttributes", "struct_soft_body_shared_settings_1_1_vertex_attributes.html", "struct_soft_body_shared_settings_1_1_vertex_attributes" ], + [ "Volume", "struct_soft_body_shared_settings_1_1_volume.html", "struct_soft_body_shared_settings_1_1_volume" ], + [ "IDToMaterialMap", "class_soft_body_shared_settings.html#aa48c93ede2e6d3c177fa46d1bd5f4553", null ], + [ "IDToSharedSettingsMap", "class_soft_body_shared_settings.html#a80460f3819b755482ca58b63b254995c", null ], + [ "MaterialToIDMap", "class_soft_body_shared_settings.html#a2c32a713f6e2ebe1ab07bb45c9c9ae49", null ], + [ "SettingsResult", "class_soft_body_shared_settings.html#a61cb5299145795d65a35b455ad033be8", null ], + [ "SharedSettingsToIDMap", "class_soft_body_shared_settings.html#afa2f5681547b8f3f32503225c5ebdc41", null ], + [ "EBendType", "class_soft_body_shared_settings.html#a38d5a75fdb0d962975fbf2c01b15ba32", [ + [ "None", "class_soft_body_shared_settings.html#a38d5a75fdb0d962975fbf2c01b15ba32a6adf97f83acf6453d4a6a4b1070f3754", null ], + [ "Distance", "class_soft_body_shared_settings.html#a38d5a75fdb0d962975fbf2c01b15ba32a0aa6f4210bf373c95eda00232e93cd98", null ], + [ "Dihedral", "class_soft_body_shared_settings.html#a38d5a75fdb0d962975fbf2c01b15ba32a15aa29eb5f33d765183c9512f11f6643", null ] + ] ], + [ "ELRAType", "class_soft_body_shared_settings.html#a288bafac0b3882214b806d7483e84419", [ + [ "None", "class_soft_body_shared_settings.html#a288bafac0b3882214b806d7483e84419a6adf97f83acf6453d4a6a4b1070f3754", null ], + [ "EuclideanDistance", "class_soft_body_shared_settings.html#a288bafac0b3882214b806d7483e84419a5ab2b5492eebb9fffe14c94278372bff", null ], + [ "GeodesicDistance", "class_soft_body_shared_settings.html#a288bafac0b3882214b806d7483e84419a57d05fb9844ead3595f0162bdbe65ce2", null ] + ] ], + [ "AddFace", "class_soft_body_shared_settings.html#ad408fb4eb7803dbba02dc8b669822fd2", null ], + [ "CalculateBendConstraintConstants", "class_soft_body_shared_settings.html#a8bfed6fd17411a0638ad963f9ed083ea", null ], + [ "CalculateEdgeLengths", "class_soft_body_shared_settings.html#a519313d5c58141ceb18011defc5db644", null ], + [ "CalculateLRALengths", "class_soft_body_shared_settings.html#a6dd86b0bbeac51b146b3fcca5736510e", null ], + [ "CalculateSkinnedConstraintNormals", "class_soft_body_shared_settings.html#a4a2fd7676a705063111d0f429d2bdce9", null ], + [ "CalculateVolumeConstraintVolumes", "class_soft_body_shared_settings.html#a6541281d6fc5bd27579b71774fd4745a", null ], + [ "Clone", "class_soft_body_shared_settings.html#a3fcb933a19ef5e1d717de25e040f2b4f", null ], + [ "CreateConstraints", "class_soft_body_shared_settings.html#a9880c4cadc96bb24402b3cf3021aff2b", null ], + [ "Optimize", "class_soft_body_shared_settings.html#a4dbaa7142dca56c869a395bc88022cd7", null ], + [ "Optimize", "class_soft_body_shared_settings.html#ac449c2bf234bdf947aa9454adc728964", null ], + [ "RestoreBinaryState", "class_soft_body_shared_settings.html#a2f196979f67ababeaf2ab8fe85c3243c", null ], + [ "SaveBinaryState", "class_soft_body_shared_settings.html#a237a177ff6a49cc11207c196220f321b", null ], + [ "SaveWithMaterials", "class_soft_body_shared_settings.html#a04cd0a82ccf0f88cf350f08dc04721db", null ], + [ "SoftBodyMotionProperties", "class_soft_body_shared_settings.html#aa52bab293ad7cec288c33c81d5f38ea9", null ], + [ "mDihedralBendConstraints", "class_soft_body_shared_settings.html#a85f461f7bf9ef7d881c6b2b05e137ad4", null ], + [ "mEdgeConstraints", "class_soft_body_shared_settings.html#aac3d26e90a9bceedf9f030b2ae9ae1e6", null ], + [ "mFaces", "class_soft_body_shared_settings.html#a80e68641c026a174fe3839d841901f43", null ], + [ "mInvBindMatrices", "class_soft_body_shared_settings.html#aad1cd9322a09772b71599421af704b49", null ], + [ "mLRAConstraints", "class_soft_body_shared_settings.html#a2e0a1f92a8f29382bcf948ad9691e6d0", null ], + [ "mMaterials", "class_soft_body_shared_settings.html#af75bcb99fb4bb3a23d5e62479d9b168a", null ], + [ "mSkinnedConstraints", "class_soft_body_shared_settings.html#a4949040aee93ede22dcf720a4b8a5825", null ], + [ "mVertexRadius", "class_soft_body_shared_settings.html#ae46ebad87cc50beaf39fbe451e1dbef1", null ], + [ "mVertices", "class_soft_body_shared_settings.html#a0bd7da7039e73883ca75053b37a3c872", null ], + [ "mVolumeConstraints", "class_soft_body_shared_settings.html#a900de005e0c55c3000fa154a019e6e9b", null ] +]; \ No newline at end of file diff --git a/class_soft_body_shared_settings.png b/class_soft_body_shared_settings.png new file mode 100644 index 000000000..1fdd4e3f9 Binary files /dev/null and b/class_soft_body_shared_settings.png differ diff --git a/class_soft_body_shared_settings_1_1_inv_bind-members.html b/class_soft_body_shared_settings_1_1_inv_bind-members.html new file mode 100644 index 000000000..32fe8438b --- /dev/null +++ b/class_soft_body_shared_settings_1_1_inv_bind-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodySharedSettings::InvBind Member List
+
+
+ +

This is the complete list of members for SoftBodySharedSettings::InvBind, including all inherited members.

+ + + + + +
InvBind()=defaultSoftBodySharedSettings::InvBind
InvBind(uint32 inJointIndex, Mat44Arg inInvBind)SoftBodySharedSettings::InvBindinline
mInvBindSoftBodySharedSettings::InvBind
mJointIndexSoftBodySharedSettings::InvBind
+
+ + + + diff --git a/class_soft_body_shared_settings_1_1_inv_bind.html b/class_soft_body_shared_settings_1_1_inv_bind.html new file mode 100644 index 000000000..dc1114bd1 --- /dev/null +++ b/class_soft_body_shared_settings_1_1_inv_bind.html @@ -0,0 +1,243 @@ + + + + + + + +Jolt Physics: SoftBodySharedSettings::InvBind Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodySharedSettings::InvBind Class Reference
+
+
+ +

An inverse bind matrix take a skinned vertex from its bind pose into joint local space. + More...

+ +

#include <SoftBodySharedSettings.h>

+ + + + + + + +

+Public Member Functions

 InvBind ()=default
 Constructor.
 
 InvBind (uint32 inJointIndex, Mat44Arg inInvBind)
 
+ + + + + + + +

+Public Attributes

uint32 mJointIndex = 0
 Joint index to which this is attached.
 
Mat44 mInvBind = Mat44::sIdentity()
 The inverse bind matrix, this takes a vertex in its bind pose (Vertex::mPosition) to joint local space.
 
+

Detailed Description

+

An inverse bind matrix take a skinned vertex from its bind pose into joint local space.

+

Constructor & Destructor Documentation

+ +

◆ InvBind() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SoftBodySharedSettings::InvBind::InvBind ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ InvBind() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
SoftBodySharedSettings::InvBind::InvBind (uint32 inJointIndex,
Mat44Arg inInvBind 
)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mInvBind

+ +
+
+ + + + +
Mat44 SoftBodySharedSettings::InvBind::mInvBind = Mat44::sIdentity()
+
+ +

The inverse bind matrix, this takes a vertex in its bind pose (Vertex::mPosition) to joint local space.

+ +
+
+ +

◆ mJointIndex

+ +
+
+ + + + +
uint32 SoftBodySharedSettings::InvBind::mJointIndex = 0
+
+ +

Joint index to which this is attached.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_soft_body_shared_settings_1_1_inv_bind.js b/class_soft_body_shared_settings_1_1_inv_bind.js new file mode 100644 index 000000000..a5886e896 --- /dev/null +++ b/class_soft_body_shared_settings_1_1_inv_bind.js @@ -0,0 +1,7 @@ +var class_soft_body_shared_settings_1_1_inv_bind = +[ + [ "InvBind", "class_soft_body_shared_settings_1_1_inv_bind.html#a8545f4208959bc7ca55c73ecb595ac71", null ], + [ "InvBind", "class_soft_body_shared_settings_1_1_inv_bind.html#a9fd7d2b0a344f06e51c2ff0b86224a58", null ], + [ "mInvBind", "class_soft_body_shared_settings_1_1_inv_bind.html#a51d4596db847f6dcc78ea4a5cb1b3ec4", null ], + [ "mJointIndex", "class_soft_body_shared_settings_1_1_inv_bind.html#ae63919d3bba07a52bc9832d228531077", null ] +]; \ No newline at end of file diff --git a/class_soft_body_shared_settings_1_1_l_r_a-members.html b/class_soft_body_shared_settings_1_1_l_r_a-members.html new file mode 100644 index 000000000..1b99f6928 --- /dev/null +++ b/class_soft_body_shared_settings_1_1_l_r_a-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodySharedSettings::LRA Member List
+
+
+ +

This is the complete list of members for SoftBodySharedSettings::LRA, including all inherited members.

+ + + + + + +
GetMinVertexIndex() constSoftBodySharedSettings::LRAinline
LRA()=defaultSoftBodySharedSettings::LRA
LRA(uint32 inVertex1, uint32 inVertex2, float inMaxDistance)SoftBodySharedSettings::LRAinline
mMaxDistanceSoftBodySharedSettings::LRA
mVertexSoftBodySharedSettings::LRA
+
+ + + + diff --git a/class_soft_body_shared_settings_1_1_l_r_a.html b/class_soft_body_shared_settings_1_1_l_r_a.html new file mode 100644 index 000000000..a132e88e5 --- /dev/null +++ b/class_soft_body_shared_settings_1_1_l_r_a.html @@ -0,0 +1,277 @@ + + + + + + + +Jolt Physics: SoftBodySharedSettings::LRA Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodySharedSettings::LRA Class Reference
+
+
+ +

#include <SoftBodySharedSettings.h>

+ + + + + + + + + + +

+Public Member Functions

 LRA ()=default
 Constructor.
 
 LRA (uint32 inVertex1, uint32 inVertex2, float inMaxDistance)
 
uint32 GetMinVertexIndex () const
 Return the lowest vertex index of this constraint.
 
+ + + + + + + +

+Public Attributes

uint32 mVertex [2]
 The vertices that are connected. The first vertex should be kinematic, the 2nd dynamic.
 
float mMaxDistance = 0.0f
 The maximum distance between the vertices.
 
+

Detailed Description

+

A long range attachment constraint, this is a constraint that sets a max distance between a kinematic vertex and a dynamic vertex See: "Long Range Attachments - A Method to Simulate Inextensible Clothing in Computer Games", Tae-Yong Kim, Nuttapong Chentanez and Matthias Mueller-Fischer

+

Constructor & Destructor Documentation

+ +

◆ LRA() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SoftBodySharedSettings::LRA::LRA ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ LRA() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
SoftBodySharedSettings::LRA::LRA (uint32 inVertex1,
uint32 inVertex2,
float inMaxDistance 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetMinVertexIndex()

+ +
+
+ + + + + +
+ + + + + + + +
uint32 SoftBodySharedSettings::LRA::GetMinVertexIndex () const
+
+inline
+
+ +

Return the lowest vertex index of this constraint.

+ +
+
+

Member Data Documentation

+ +

◆ mMaxDistance

+ +
+
+ + + + +
float SoftBodySharedSettings::LRA::mMaxDistance = 0.0f
+
+ +

The maximum distance between the vertices.

+ +
+
+ +

◆ mVertex

+ +
+
+ + + + +
uint32 SoftBodySharedSettings::LRA::mVertex[2]
+
+ +

The vertices that are connected. The first vertex should be kinematic, the 2nd dynamic.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_soft_body_shared_settings_1_1_l_r_a.js b/class_soft_body_shared_settings_1_1_l_r_a.js new file mode 100644 index 000000000..9da8197c3 --- /dev/null +++ b/class_soft_body_shared_settings_1_1_l_r_a.js @@ -0,0 +1,8 @@ +var class_soft_body_shared_settings_1_1_l_r_a = +[ + [ "LRA", "class_soft_body_shared_settings_1_1_l_r_a.html#a4aab07b503827f2a165ec62c83ab531b", null ], + [ "LRA", "class_soft_body_shared_settings_1_1_l_r_a.html#af3f3a0e0a0948ff3dd1a4ec850019dd2", null ], + [ "GetMinVertexIndex", "class_soft_body_shared_settings_1_1_l_r_a.html#a084ffb68e51232e9462952f97effea6d", null ], + [ "mMaxDistance", "class_soft_body_shared_settings_1_1_l_r_a.html#a69529c085f2fdbc45e10b0c360ab07dd", null ], + [ "mVertex", "class_soft_body_shared_settings_1_1_l_r_a.html#a40ed7466722bd0a9e17b399117e00d8d", null ] +]; \ No newline at end of file diff --git a/class_soft_body_shared_settings_1_1_optimization_results-members.html b/class_soft_body_shared_settings_1_1_optimization_results-members.html new file mode 100644 index 000000000..4696b5bd3 --- /dev/null +++ b/class_soft_body_shared_settings_1_1_optimization_results-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodySharedSettings::OptimizationResults Member List
+
+
+ +

This is the complete list of members for SoftBodySharedSettings::OptimizationResults, including all inherited members.

+ + + + + + +
mDihedralBendRemapSoftBodySharedSettings::OptimizationResults
mEdgeRemapSoftBodySharedSettings::OptimizationResults
mLRARemapSoftBodySharedSettings::OptimizationResults
mSkinnedRemapSoftBodySharedSettings::OptimizationResults
mVolumeRemapSoftBodySharedSettings::OptimizationResults
+
+ + + + diff --git a/class_soft_body_shared_settings_1_1_optimization_results.html b/class_soft_body_shared_settings_1_1_optimization_results.html new file mode 100644 index 000000000..85210533d --- /dev/null +++ b/class_soft_body_shared_settings_1_1_optimization_results.html @@ -0,0 +1,227 @@ + + + + + + + +Jolt Physics: SoftBodySharedSettings::OptimizationResults Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodySharedSettings::OptimizationResults Class Reference
+
+
+ +

Information about the optimization of the soft body, the indices of certain elements may have changed. + More...

+ +

#include <SoftBodySharedSettings.h>

+ + + + + + + + + + + + + + + + + +

+Public Attributes

Array< uintmEdgeRemap
 Maps old edge index to new edge index.
 
Array< uintmLRARemap
 Maps old LRA index to new LRA index.
 
Array< uintmDihedralBendRemap
 Maps old dihedral bend index to new dihedral bend index.
 
Array< uintmVolumeRemap
 Maps old volume constraint index to new volume constraint index.
 
Array< uintmSkinnedRemap
 Maps old skinned constraint index to new skinned constraint index.
 
+

Detailed Description

+

Information about the optimization of the soft body, the indices of certain elements may have changed.

+

Member Data Documentation

+ +

◆ mDihedralBendRemap

+ +
+
+ + + + +
Array<uint> SoftBodySharedSettings::OptimizationResults::mDihedralBendRemap
+
+ +

Maps old dihedral bend index to new dihedral bend index.

+ +
+
+ +

◆ mEdgeRemap

+ +
+
+ + + + +
Array<uint> SoftBodySharedSettings::OptimizationResults::mEdgeRemap
+
+ +

Maps old edge index to new edge index.

+ +
+
+ +

◆ mLRARemap

+ +
+
+ + + + +
Array<uint> SoftBodySharedSettings::OptimizationResults::mLRARemap
+
+ +

Maps old LRA index to new LRA index.

+ +
+
+ +

◆ mSkinnedRemap

+ +
+
+ + + + +
Array<uint> SoftBodySharedSettings::OptimizationResults::mSkinnedRemap
+
+ +

Maps old skinned constraint index to new skinned constraint index.

+ +
+
+ +

◆ mVolumeRemap

+ +
+
+ + + + +
Array<uint> SoftBodySharedSettings::OptimizationResults::mVolumeRemap
+
+ +

Maps old volume constraint index to new volume constraint index.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_soft_body_shared_settings_1_1_optimization_results.js b/class_soft_body_shared_settings_1_1_optimization_results.js new file mode 100644 index 000000000..b30bd50b4 --- /dev/null +++ b/class_soft_body_shared_settings_1_1_optimization_results.js @@ -0,0 +1,8 @@ +var class_soft_body_shared_settings_1_1_optimization_results = +[ + [ "mDihedralBendRemap", "class_soft_body_shared_settings_1_1_optimization_results.html#a948b4614afd98cc8ba6f6556d1f987f8", null ], + [ "mEdgeRemap", "class_soft_body_shared_settings_1_1_optimization_results.html#ac418fc1840c4b8339e09092d52924af1", null ], + [ "mLRARemap", "class_soft_body_shared_settings_1_1_optimization_results.html#a21d8c58c1074adcdd7ec2851859a0ec3", null ], + [ "mSkinnedRemap", "class_soft_body_shared_settings_1_1_optimization_results.html#a9a71a19af3ff2567b4902e08657e6f5c", null ], + [ "mVolumeRemap", "class_soft_body_shared_settings_1_1_optimization_results.html#a7fd9a24ecc5f4ebd5a4b88990d114162", null ] +]; \ No newline at end of file diff --git a/class_soft_body_shared_settings_1_1_skin_weight-members.html b/class_soft_body_shared_settings_1_1_skin_weight-members.html new file mode 100644 index 000000000..96d857cf6 --- /dev/null +++ b/class_soft_body_shared_settings_1_1_skin_weight-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodySharedSettings::SkinWeight Member List
+
+
+ +

This is the complete list of members for SoftBodySharedSettings::SkinWeight, including all inherited members.

+ + + + + +
mInvBindIndexSoftBodySharedSettings::SkinWeight
mWeightSoftBodySharedSettings::SkinWeight
SkinWeight()=defaultSoftBodySharedSettings::SkinWeight
SkinWeight(uint32 inInvBindIndex, float inWeight)SoftBodySharedSettings::SkinWeightinline
+
+ + + + diff --git a/class_soft_body_shared_settings_1_1_skin_weight.html b/class_soft_body_shared_settings_1_1_skin_weight.html new file mode 100644 index 000000000..b1eb16a59 --- /dev/null +++ b/class_soft_body_shared_settings_1_1_skin_weight.html @@ -0,0 +1,243 @@ + + + + + + + +Jolt Physics: SoftBodySharedSettings::SkinWeight Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodySharedSettings::SkinWeight Class Reference
+
+
+ +

A joint and its skin weight. + More...

+ +

#include <SoftBodySharedSettings.h>

+ + + + + + + +

+Public Member Functions

 SkinWeight ()=default
 Constructor.
 
 SkinWeight (uint32 inInvBindIndex, float inWeight)
 
+ + + + + + + +

+Public Attributes

uint32 mInvBindIndex = 0
 Index in mInvBindMatrices.
 
float mWeight = 0.0f
 Weight with which it is skinned.
 
+

Detailed Description

+

A joint and its skin weight.

+

Constructor & Destructor Documentation

+ +

◆ SkinWeight() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SoftBodySharedSettings::SkinWeight::SkinWeight ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ SkinWeight() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
SoftBodySharedSettings::SkinWeight::SkinWeight (uint32 inInvBindIndex,
float inWeight 
)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mInvBindIndex

+ +
+
+ + + + +
uint32 SoftBodySharedSettings::SkinWeight::mInvBindIndex = 0
+
+ +

Index in mInvBindMatrices.

+ +
+
+ +

◆ mWeight

+ +
+
+ + + + +
float SoftBodySharedSettings::SkinWeight::mWeight = 0.0f
+
+ +

Weight with which it is skinned.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_soft_body_shared_settings_1_1_skin_weight.js b/class_soft_body_shared_settings_1_1_skin_weight.js new file mode 100644 index 000000000..69b31127b --- /dev/null +++ b/class_soft_body_shared_settings_1_1_skin_weight.js @@ -0,0 +1,7 @@ +var class_soft_body_shared_settings_1_1_skin_weight = +[ + [ "SkinWeight", "class_soft_body_shared_settings_1_1_skin_weight.html#a813145d1064289c66eb407ab43b1c807", null ], + [ "SkinWeight", "class_soft_body_shared_settings_1_1_skin_weight.html#ac3e68d2f34d7a4919a064cde2a16b20a", null ], + [ "mInvBindIndex", "class_soft_body_shared_settings_1_1_skin_weight.html#a53c08815fb24f6bbf43a534b3cdcd61b", null ], + [ "mWeight", "class_soft_body_shared_settings_1_1_skin_weight.html#a6ef599e2bf0fe4501cab6643a3ed94e9", null ] +]; \ No newline at end of file diff --git a/class_soft_body_shared_settings_1_1_skinned-members.html b/class_soft_body_shared_settings_1_1_skinned-members.html new file mode 100644 index 000000000..f23e8b30d --- /dev/null +++ b/class_soft_body_shared_settings_1_1_skinned-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodySharedSettings::Skinned Member List
+
+
+ +

This is the complete list of members for SoftBodySharedSettings::Skinned, including all inherited members.

+ + + + + + + + + + + +
cMaxSkinWeightsSoftBodySharedSettings::Skinnedstatic
mBackStopDistanceSoftBodySharedSettings::Skinned
mBackStopRadiusSoftBodySharedSettings::Skinned
mMaxDistanceSoftBodySharedSettings::Skinned
mNormalInfoSoftBodySharedSettings::Skinned
mVertexSoftBodySharedSettings::Skinned
mWeightsSoftBodySharedSettings::Skinned
NormalizeWeights()SoftBodySharedSettings::Skinnedinline
Skinned()=defaultSoftBodySharedSettings::Skinned
Skinned(uint32 inVertex, float inMaxDistance, float inBackStopDistance, float inBackStopRadius)SoftBodySharedSettings::Skinnedinline
+
+ + + + diff --git a/class_soft_body_shared_settings_1_1_skinned.html b/class_soft_body_shared_settings_1_1_skinned.html new file mode 100644 index 000000000..205439538 --- /dev/null +++ b/class_soft_body_shared_settings_1_1_skinned.html @@ -0,0 +1,393 @@ + + + + + + + +Jolt Physics: SoftBodySharedSettings::Skinned Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodySharedSettings::Skinned Class Reference
+
+
+ +

A constraint that skins a vertex to joints and limits the distance that the simulated vertex can travel from this vertex. + More...

+ +

#include <SoftBodySharedSettings.h>

+ + + + + + + + + + +

+Public Member Functions

 Skinned ()=default
 Constructor.
 
 Skinned (uint32 inVertex, float inMaxDistance, float inBackStopDistance, float inBackStopRadius)
 
void NormalizeWeights ()
 Normalize the weights so that they add up to 1.
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

uint32 mVertex = 0
 Index in mVertices which indicates which vertex is being skinned.
 
SkinWeight mWeights [cMaxSkinWeights]
 Skin weights, the bind pose of the vertex is assumed to be stored in Vertex::mPosition. The first weight that is zero indicates the end of the list. Weights should add up to 1.
 
float mMaxDistance = FLT_MAX
 Maximum distance that this vertex can reach from the skinned vertex, disabled when FLT_MAX. 0 when you want to hard skin the vertex to the skinned vertex.
 
float mBackStopDistance = FLT_MAX
 Disabled if mBackStopDistance >= mMaxDistance. The faces surrounding mVertex determine an average normal. mBackStopDistance behind the vertex in the opposite direction of this normal, the back stop sphere starts. The simulated vertex will be pushed out of this sphere and it can be used to approximate the volume of the skinned mesh behind the skinned vertex.
 
float mBackStopRadius = 40.0f
 Radius of the backstop sphere. By default this is a fairly large radius so the sphere approximates a plane.
 
uint32 mNormalInfo = 0
 Information needed to calculate the normal of this vertex, lowest 24 bit is start index in mSkinnedConstraintNormals, highest 8 bit is number of faces (generated by CalculateSkinnedConstraintNormals())
 
+ + + + +

+Static Public Attributes

static constexpr uint cMaxSkinWeights = 4
 Maximum number of skin weights.
 
+

Detailed Description

+

A constraint that skins a vertex to joints and limits the distance that the simulated vertex can travel from this vertex.

+

Constructor & Destructor Documentation

+ +

◆ Skinned() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SoftBodySharedSettings::Skinned::Skinned ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ Skinned() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SoftBodySharedSettings::Skinned::Skinned (uint32 inVertex,
float inMaxDistance,
float inBackStopDistance,
float inBackStopRadius 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ NormalizeWeights()

+ +
+
+ + + + + +
+ + + + + + + +
void SoftBodySharedSettings::Skinned::NormalizeWeights ()
+
+inline
+
+ +

Normalize the weights so that they add up to 1.

+ +
+
+

Member Data Documentation

+ +

◆ cMaxSkinWeights

+ +
+
+ + + + + +
+ + + + +
constexpr uint SoftBodySharedSettings::Skinned::cMaxSkinWeights = 4
+
+staticconstexpr
+
+ +

Maximum number of skin weights.

+ +
+
+ +

◆ mBackStopDistance

+ +
+
+ + + + +
float SoftBodySharedSettings::Skinned::mBackStopDistance = FLT_MAX
+
+ +

Disabled if mBackStopDistance >= mMaxDistance. The faces surrounding mVertex determine an average normal. mBackStopDistance behind the vertex in the opposite direction of this normal, the back stop sphere starts. The simulated vertex will be pushed out of this sphere and it can be used to approximate the volume of the skinned mesh behind the skinned vertex.

+ +
+
+ +

◆ mBackStopRadius

+ +
+
+ + + + +
float SoftBodySharedSettings::Skinned::mBackStopRadius = 40.0f
+
+ +

Radius of the backstop sphere. By default this is a fairly large radius so the sphere approximates a plane.

+ +
+
+ +

◆ mMaxDistance

+ +
+
+ + + + +
float SoftBodySharedSettings::Skinned::mMaxDistance = FLT_MAX
+
+ +

Maximum distance that this vertex can reach from the skinned vertex, disabled when FLT_MAX. 0 when you want to hard skin the vertex to the skinned vertex.

+ +
+
+ +

◆ mNormalInfo

+ +
+
+ + + + +
uint32 SoftBodySharedSettings::Skinned::mNormalInfo = 0
+
+ +

Information needed to calculate the normal of this vertex, lowest 24 bit is start index in mSkinnedConstraintNormals, highest 8 bit is number of faces (generated by CalculateSkinnedConstraintNormals())

+ +
+
+ +

◆ mVertex

+ +
+
+ + + + +
uint32 SoftBodySharedSettings::Skinned::mVertex = 0
+
+ +

Index in mVertices which indicates which vertex is being skinned.

+ +
+
+ +

◆ mWeights

+ +
+
+ + + + +
SkinWeight SoftBodySharedSettings::Skinned::mWeights[cMaxSkinWeights]
+
+ +

Skin weights, the bind pose of the vertex is assumed to be stored in Vertex::mPosition. The first weight that is zero indicates the end of the list. Weights should add up to 1.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_soft_body_shared_settings_1_1_skinned.js b/class_soft_body_shared_settings_1_1_skinned.js new file mode 100644 index 000000000..b3f96e279 --- /dev/null +++ b/class_soft_body_shared_settings_1_1_skinned.js @@ -0,0 +1,12 @@ +var class_soft_body_shared_settings_1_1_skinned = +[ + [ "Skinned", "class_soft_body_shared_settings_1_1_skinned.html#a544c250206111b01d89f27da60f3e6bf", null ], + [ "Skinned", "class_soft_body_shared_settings_1_1_skinned.html#a914dc545507fc78d06f6acaa7d7f9049", null ], + [ "NormalizeWeights", "class_soft_body_shared_settings_1_1_skinned.html#a39217b9d64f7924974d4b5405a8073cd", null ], + [ "mBackStopDistance", "class_soft_body_shared_settings_1_1_skinned.html#a2f3d49c4f3fff9becd3fe72d890f738e", null ], + [ "mBackStopRadius", "class_soft_body_shared_settings_1_1_skinned.html#a0a64d6d45114dfd3ba4b54c821a6d678", null ], + [ "mMaxDistance", "class_soft_body_shared_settings_1_1_skinned.html#a1e576b87460323a5a79528381102e513", null ], + [ "mNormalInfo", "class_soft_body_shared_settings_1_1_skinned.html#aee00d8a1605d928042bb1b7bafcf4eb7", null ], + [ "mVertex", "class_soft_body_shared_settings_1_1_skinned.html#a6a6d06b82ef34f2a262681bb04b44e53", null ], + [ "mWeights", "class_soft_body_shared_settings_1_1_skinned.html#a0fb7ce72e3c7289105c2f0b785a354ff", null ] +]; \ No newline at end of file diff --git a/class_soft_body_update_context-members.html b/class_soft_body_update_context-members.html new file mode 100644 index 000000000..529be32d7 --- /dev/null +++ b/class_soft_body_update_context-members.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyUpdateContext Member List
+
+
+ +

This is the complete list of members for SoftBodyUpdateContext, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
cVertexCollisionBatchSoftBodyUpdateContextstatic
cVertexConstraintBatchSoftBodyUpdateContextstatic
EState enum nameSoftBodyUpdateContext
mBodySoftBodyUpdateContext
mCanSleepSoftBodyUpdateContext
mCenterOfMassTransformSoftBodyUpdateContext
mContactListenerSoftBodyUpdateContext
mDeltaPositionSoftBodyUpdateContext
mDeltaTimeSoftBodyUpdateContext
mDisplacementDueToGravitySoftBodyUpdateContext
mGravitySoftBodyUpdateContext
mMotionPropertiesSoftBodyUpdateContext
mNextCollisionVertexSoftBodyUpdateContext
mNextConstraintGroupSoftBodyUpdateContext
mNextIterationSoftBodyUpdateContext
mNumCollisionVerticesProcessedSoftBodyUpdateContext
mNumConstraintGroupsProcessedSoftBodyUpdateContext
mStateSoftBodyUpdateContext
mSubStepDeltaTimeSoftBodyUpdateContext
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
+
+ + + + diff --git a/class_soft_body_update_context.html b/class_soft_body_update_context.html new file mode 100644 index 000000000..7e3a48361 --- /dev/null +++ b/class_soft_body_update_context.html @@ -0,0 +1,556 @@ + + + + + + + +Jolt Physics: SoftBodyUpdateContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyUpdateContext Class Reference
+
+
+ +

Temporary data used by the update of a soft body. + More...

+ +

#include <SoftBodyUpdateContext.h>

+
+Inheritance diagram for SoftBodyUpdateContext:
+
+
+ + +NonCopyable + +
+ + + + + +

+Public Types

enum class  EState { DetermineCollisionPlanes +, ApplyConstraints +, Done + }
 Describes progress in the current update. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

BodymBody
 Body that is being updated.
 
SoftBodyMotionPropertiesmMotionProperties
 Motion properties of that body.
 
SoftBodyContactListenermContactListener
 Contact listener to fire callbacks to.
 
RMat44 mCenterOfMassTransform
 Transform of the body relative to the soft body.
 
Vec3 mGravity
 Gravity vector in local space of the soft body.
 
Vec3 mDisplacementDueToGravity
 Displacement of the center of mass due to gravity in the current time step.
 
float mDeltaTime
 Delta time for the current time step.
 
float mSubStepDeltaTime
 Delta time for each sub step.
 
atomic< EStatemState { EState::DetermineCollisionPlanes }
 Current state of the update.
 
atomic< uintmNextCollisionVertex { 0 }
 Next vertex to process for DetermineCollisionPlanes.
 
atomic< uintmNumCollisionVerticesProcessed { 0 }
 Number of vertices processed by DetermineCollisionPlanes, used to determine if we can start simulating.
 
atomic< uintmNextIteration { 0 }
 Next simulation iteration to process.
 
atomic< uintmNextConstraintGroup { 0 }
 Next constraint group to process.
 
atomic< uintmNumConstraintGroupsProcessed { 0 }
 Number of groups processed, used to determine if we can go to the next iteration.
 
Vec3 mDeltaPosition
 Delta position of the body in the current time step, should be applied after the update.
 
ECanSleep mCanSleep
 Can the body sleep? Should be applied after the update.
 
+ + + + + + + +

+Static Public Attributes

static constexpr uint cVertexCollisionBatch = 64
 Number of vertices to process in a batch in DetermineCollisionPlanes.
 
static constexpr uint cVertexConstraintBatch = 256
 Number of vertices to group for processing batches of constraints in ApplyEdgeConstraints.
 
+ + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Temporary data used by the update of a soft body.

+

Member Enumeration Documentation

+ +

◆ EState

+ +
+
+ + + + + +
+ + + + +
enum class SoftBodyUpdateContext::EState
+
+strong
+
+ +

Describes progress in the current update.

+ + + + +
Enumerator
DetermineCollisionPlanes 

Determine collision planes for vertices in parallel.

+
ApplyConstraints 

Apply constraints in parallel.

+
Done 

Update is finished.

+
+ +
+
+

Member Data Documentation

+ +

◆ cVertexCollisionBatch

+ +
+
+ + + + + +
+ + + + +
constexpr uint SoftBodyUpdateContext::cVertexCollisionBatch = 64
+
+staticconstexpr
+
+ +

Number of vertices to process in a batch in DetermineCollisionPlanes.

+ +
+
+ +

◆ cVertexConstraintBatch

+ +
+
+ + + + + +
+ + + + +
constexpr uint SoftBodyUpdateContext::cVertexConstraintBatch = 256
+
+staticconstexpr
+
+ +

Number of vertices to group for processing batches of constraints in ApplyEdgeConstraints.

+ +
+
+ +

◆ mBody

+ +
+
+ + + + +
Body* SoftBodyUpdateContext::mBody
+
+ +

Body that is being updated.

+ +
+
+ +

◆ mCanSleep

+ +
+
+ + + + +
ECanSleep SoftBodyUpdateContext::mCanSleep
+
+ +

Can the body sleep? Should be applied after the update.

+ +
+
+ +

◆ mCenterOfMassTransform

+ +
+
+ + + + +
RMat44 SoftBodyUpdateContext::mCenterOfMassTransform
+
+ +

Transform of the body relative to the soft body.

+ +
+
+ +

◆ mContactListener

+ +
+
+ + + + +
SoftBodyContactListener* SoftBodyUpdateContext::mContactListener
+
+ +

Contact listener to fire callbacks to.

+ +
+
+ +

◆ mDeltaPosition

+ +
+
+ + + + +
Vec3 SoftBodyUpdateContext::mDeltaPosition
+
+ +

Delta position of the body in the current time step, should be applied after the update.

+ +
+
+ +

◆ mDeltaTime

+ +
+
+ + + + +
float SoftBodyUpdateContext::mDeltaTime
+
+ +

Delta time for the current time step.

+ +
+
+ +

◆ mDisplacementDueToGravity

+ +
+
+ + + + +
Vec3 SoftBodyUpdateContext::mDisplacementDueToGravity
+
+ +

Displacement of the center of mass due to gravity in the current time step.

+ +
+
+ +

◆ mGravity

+ +
+
+ + + + +
Vec3 SoftBodyUpdateContext::mGravity
+
+ +

Gravity vector in local space of the soft body.

+ +
+
+ +

◆ mMotionProperties

+ +
+
+ + + + +
SoftBodyMotionProperties* SoftBodyUpdateContext::mMotionProperties
+
+ +

Motion properties of that body.

+ +
+
+ +

◆ mNextCollisionVertex

+ +
+
+ + + + +
atomic<uint> SoftBodyUpdateContext::mNextCollisionVertex { 0 }
+
+ +

Next vertex to process for DetermineCollisionPlanes.

+ +
+
+ +

◆ mNextConstraintGroup

+ +
+
+ + + + +
atomic<uint> SoftBodyUpdateContext::mNextConstraintGroup { 0 }
+
+ +

Next constraint group to process.

+ +
+
+ +

◆ mNextIteration

+ +
+
+ + + + +
atomic<uint> SoftBodyUpdateContext::mNextIteration { 0 }
+
+ +

Next simulation iteration to process.

+ +
+
+ +

◆ mNumCollisionVerticesProcessed

+ +
+
+ + + + +
atomic<uint> SoftBodyUpdateContext::mNumCollisionVerticesProcessed { 0 }
+
+ +

Number of vertices processed by DetermineCollisionPlanes, used to determine if we can start simulating.

+ +
+
+ +

◆ mNumConstraintGroupsProcessed

+ +
+
+ + + + +
atomic<uint> SoftBodyUpdateContext::mNumConstraintGroupsProcessed { 0 }
+
+ +

Number of groups processed, used to determine if we can go to the next iteration.

+ +
+
+ +

◆ mState

+ +
+
+ + + + +
atomic<EState> SoftBodyUpdateContext::mState { EState::DetermineCollisionPlanes }
+
+ +

Current state of the update.

+ +
+
+ +

◆ mSubStepDeltaTime

+ +
+
+ + + + +
float SoftBodyUpdateContext::mSubStepDeltaTime
+
+ +

Delta time for each sub step.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_soft_body_update_context.js b/class_soft_body_update_context.js new file mode 100644 index 000000000..6c522b0af --- /dev/null +++ b/class_soft_body_update_context.js @@ -0,0 +1,24 @@ +var class_soft_body_update_context = +[ + [ "EState", "class_soft_body_update_context.html#aeef08cf407990a9950c06a5418bd11e5", [ + [ "DetermineCollisionPlanes", "class_soft_body_update_context.html#aeef08cf407990a9950c06a5418bd11e5a6985815cf22d36349d3183058c186205", null ], + [ "ApplyConstraints", "class_soft_body_update_context.html#aeef08cf407990a9950c06a5418bd11e5ae16652901cd4816adf8c10e8468fb172", null ], + [ "Done", "class_soft_body_update_context.html#aeef08cf407990a9950c06a5418bd11e5af92965e2c8a7afb3c1b9a5c09a263636", null ] + ] ], + [ "mBody", "class_soft_body_update_context.html#a88b6c3a98493e002dc691f90520ad05b", null ], + [ "mCanSleep", "class_soft_body_update_context.html#af78fae54587cbbc41f185d1c4e477925", null ], + [ "mCenterOfMassTransform", "class_soft_body_update_context.html#a7a6a0aecd66518f1b46cbde25f522c34", null ], + [ "mContactListener", "class_soft_body_update_context.html#a19e196d17741280f4ba21d9b7bc4bb86", null ], + [ "mDeltaPosition", "class_soft_body_update_context.html#a6cce0079d538ff50a6a77688e44116e1", null ], + [ "mDeltaTime", "class_soft_body_update_context.html#a74ad9a6e4da4c7e81d669d0d2643417d", null ], + [ "mDisplacementDueToGravity", "class_soft_body_update_context.html#ac0b07375d564d77c2ecf16cd4a619896", null ], + [ "mGravity", "class_soft_body_update_context.html#aa8cc078898b92ddb1f55822b01ccac66", null ], + [ "mMotionProperties", "class_soft_body_update_context.html#a9562dabc569151bf015943cea75f2d12", null ], + [ "mNextCollisionVertex", "class_soft_body_update_context.html#a01554dcdf826c0c1e71061939467f389", null ], + [ "mNextConstraintGroup", "class_soft_body_update_context.html#a6173bf5aad150857d14094419ea93db1", null ], + [ "mNextIteration", "class_soft_body_update_context.html#a5016ad1e602ce57f0927262ad59ec4ef", null ], + [ "mNumCollisionVerticesProcessed", "class_soft_body_update_context.html#a34ccaf27bfe9bd6436fe8b933822d144", null ], + [ "mNumConstraintGroupsProcessed", "class_soft_body_update_context.html#a1cc676caadf68f6323d61d70cff50306", null ], + [ "mState", "class_soft_body_update_context.html#a17a280895e22b255d4938b2504f4a850", null ], + [ "mSubStepDeltaTime", "class_soft_body_update_context.html#a0900465027d74b085a1a3138cb2e84f6", null ] +]; \ No newline at end of file diff --git a/class_soft_body_update_context.png b/class_soft_body_update_context.png new file mode 100644 index 000000000..9ff7de784 Binary files /dev/null and b/class_soft_body_update_context.png differ diff --git a/class_soft_body_vertex-members.html b/class_soft_body_vertex-members.html new file mode 100644 index 000000000..7331405e6 --- /dev/null +++ b/class_soft_body_vertex-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyVertex Member List
+
+
+ +

This is the complete list of members for SoftBodyVertex, including all inherited members.

+ + + + + + + + + +
mCollidingShapeIndexSoftBodyVertex
mCollisionPlaneSoftBodyVertex
mHasContactSoftBodyVertex
mInvMassSoftBodyVertex
mLargestPenetrationSoftBodyVertex
mPositionSoftBodyVertex
mPreviousPositionSoftBodyVertex
mVelocitySoftBodyVertex
+
+ + + + diff --git a/class_soft_body_vertex.html b/class_soft_body_vertex.html new file mode 100644 index 000000000..2e077f093 --- /dev/null +++ b/class_soft_body_vertex.html @@ -0,0 +1,281 @@ + + + + + + + +Jolt Physics: SoftBodyVertex Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyVertex Class Reference
+
+
+ +

#include <SoftBodyVertex.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Vec3 mPreviousPosition
 Position at the previous time step.
 
Vec3 mPosition
 Position, relative to the center of mass of the soft body.
 
Vec3 mVelocity
 Velocity, relative to the center of mass of the soft body.
 
Plane mCollisionPlane
 Nearest collision plane, relative to the center of mass of the soft body.
 
int mCollidingShapeIndex
 Index in the colliding shapes list of the body we may collide with.
 
bool mHasContact
 True if the vertex has collided with anything in the last update.
 
float mLargestPenetration
 Used while finding the collision plane, stores the largest penetration found so far.
 
float mInvMass
 Inverse mass (1 / mass)
 
+

Detailed Description

+

Run time information for a single particle of a soft body Note that at run-time you should only modify the inverse mass and/or velocity of a vertex to control the soft body. Modifying the position can lead to missed collisions. The other members are used internally by the soft body solver.

+

Member Data Documentation

+ +

◆ mCollidingShapeIndex

+ +
+
+ + + + +
int SoftBodyVertex::mCollidingShapeIndex
+
+ +

Index in the colliding shapes list of the body we may collide with.

+ +
+
+ +

◆ mCollisionPlane

+ +
+
+ + + + +
Plane SoftBodyVertex::mCollisionPlane
+
+ +

Nearest collision plane, relative to the center of mass of the soft body.

+ +
+
+ +

◆ mHasContact

+ +
+
+ + + + +
bool SoftBodyVertex::mHasContact
+
+ +

True if the vertex has collided with anything in the last update.

+ +
+
+ +

◆ mInvMass

+ +
+
+ + + + +
float SoftBodyVertex::mInvMass
+
+ +

Inverse mass (1 / mass)

+ +
+
+ +

◆ mLargestPenetration

+ +
+
+ + + + +
float SoftBodyVertex::mLargestPenetration
+
+ +

Used while finding the collision plane, stores the largest penetration found so far.

+ +
+
+ +

◆ mPosition

+ +
+
+ + + + +
Vec3 SoftBodyVertex::mPosition
+
+ +

Position, relative to the center of mass of the soft body.

+ +
+
+ +

◆ mPreviousPosition

+ +
+
+ + + + +
Vec3 SoftBodyVertex::mPreviousPosition
+
+ +

Position at the previous time step.

+ +
+
+ +

◆ mVelocity

+ +
+
+ + + + +
Vec3 SoftBodyVertex::mVelocity
+
+ +

Velocity, relative to the center of mass of the soft body.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_soft_body_vertex.js b/class_soft_body_vertex.js new file mode 100644 index 000000000..dadeb393c --- /dev/null +++ b/class_soft_body_vertex.js @@ -0,0 +1,11 @@ +var class_soft_body_vertex = +[ + [ "mCollidingShapeIndex", "class_soft_body_vertex.html#a887112c6a59e554fd15aac62b7e84dfe", null ], + [ "mCollisionPlane", "class_soft_body_vertex.html#ad875325c3ade4ca33d6b96716b8a2b07", null ], + [ "mHasContact", "class_soft_body_vertex.html#a7a7cadb5a9910d419f7e42ad78079c67", null ], + [ "mInvMass", "class_soft_body_vertex.html#a43d59fd48a3f5955b220d29e2b3bb3f6", null ], + [ "mLargestPenetration", "class_soft_body_vertex.html#a8277ada20f83ca568c1e6173720fbf23", null ], + [ "mPosition", "class_soft_body_vertex.html#afad3ccc1b361c0c7607d14cbb0b61660", null ], + [ "mPreviousPosition", "class_soft_body_vertex.html#a43610d9ba8e79136479fd22eb83e3ece", null ], + [ "mVelocity", "class_soft_body_vertex.html#a5cb33a0b7a5c5085ddffe35daadd784c", null ] +]; \ No newline at end of file diff --git a/class_soft_body_with_motion_properties_and_shape-members.html b/class_soft_body_with_motion_properties_and_shape-members.html new file mode 100644 index 000000000..4e1d32404 --- /dev/null +++ b/class_soft_body_with_motion_properties_and_shape-members.html @@ -0,0 +1,217 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBodyWithMotionPropertiesAndShape Member List
+
+
+ +

This is the complete list of members for SoftBodyWithMotionPropertiesAndShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddAngularImpulse(Vec3Arg inAngularImpulse)Bodyinline
AddForce(Vec3Arg inForce)Bodyinline
AddForce(Vec3Arg inForce, RVec3Arg inPosition)Bodyinline
AddImpulse(Vec3Arg inImpulse)Bodyinline
AddImpulse(Vec3Arg inImpulse, RVec3Arg inPosition)Bodyinline
AddPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)Bodyinline
AddRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)Bodyinline
AddTorque(Vec3Arg inTorque)Bodyinline
ApplyBuoyancyImpulse(RVec3Arg inSurfacePosition, Vec3Arg inSurfaceNormal, float inBuoyancy, float inLinearDrag, float inAngularDrag, Vec3Arg inFluidVelocity, Vec3Arg inGravity, float inDeltaTime)Body
CalculateWorldSpaceBoundsInternal()Body
CanBeKinematicOrDynamic() constBodyinline
cInactiveIndexBodystatic
GetAccumulatedForce() constBodyinline
GetAccumulatedTorque() constBodyinline
GetAllowSleeping() constBodyinline
GetAngularVelocity() constBodyinline
GetApplyGyroscopicForce() constBodyinline
GetBodyCreationSettings() constBody
GetBodyType() constBodyinline
GetBroadPhaseLayer() constBodyinline
GetCenterOfMassPosition() constBodyinline
GetCenterOfMassTransform() constBodyinline
GetCollideKinematicVsNonDynamic() constBodyinline
GetCollisionGroup() constBodyinline
GetCollisionGroup()Bodyinline
GetEnhancedInternalEdgeRemoval() constBodyinline
GetEnhancedInternalEdgeRemovalWithBody(const Body &inBody2) constBodyinline
GetFriction() constBodyinline
GetID() constBodyinline
GetIndexInActiveBodiesInternal() constBodyinline
GetInverseCenterOfMassTransform() constBodyinline
GetInverseInertia() constBodyinline
GetLinearVelocity() constBodyinline
GetMotionProperties() constBodyinline
GetMotionProperties()Bodyinline
GetMotionPropertiesUnchecked() constBodyinline
GetMotionPropertiesUnchecked()Bodyinline
GetMotionType() constBodyinline
GetObjectLayer() constBodyinline
GetPointVelocity(RVec3Arg inPoint) constBodyinline
GetPointVelocityCOM(Vec3Arg inPointRelativeToCOM) constBodyinline
GetPosition() constBodyinline
GetRestitution() constBodyinline
GetRotation() constBodyinline
GetShape() constBodyinline
GetSoftBodyCreationSettings() constBody
GetTransformedShape() constBodyinline
GetUseManifoldReduction() constBodyinline
GetUseManifoldReductionWithBody(const Body &inBody2) constBodyinline
GetUserData() constBodyinline
GetWorldSpaceBounds() constBodyinline
GetWorldSpaceSurfaceNormal(const SubShapeID &inSubShapeID, RVec3Arg inPosition) constBodyinline
GetWorldTransform() constBodyinline
InvalidateContactCacheInternal()Bodyinline
IsActive() constBodyinline
IsCollisionCacheInvalid() constBodyinline
IsDynamic() constBodyinline
IsInBroadPhase() constBodyinline
IsKinematic() constBodyinline
IsRigidBody() constBodyinline
IsSensor() constBodyinline
IsSoftBody() constBodyinline
IsStatic() constBodyinline
mMotionPropertiesSoftBodyWithMotionPropertiesAndShape
MoveKinematic(RVec3Arg inTargetPosition, QuatArg inTargetRotation, float inDeltaTime)Body
mShapeSoftBodyWithMotionPropertiesAndShape
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ResetForce()Bodyinline
ResetMotion()Bodyinline
ResetSleepTimer()Bodyinline
ResetTorque()Bodyinline
RestoreState(StateRecorder &inStream)Body
SaveState(StateRecorder &inStream) constBody
SetAllowSleeping(bool inAllow)Body
SetAngularVelocity(Vec3Arg inAngularVelocity)Bodyinline
SetAngularVelocityClamped(Vec3Arg inAngularVelocity)Bodyinline
SetApplyGyroscopicForce(bool inApply)Bodyinline
SetCollideKinematicVsNonDynamic(bool inCollide)Bodyinline
SetCollisionGroup(const CollisionGroup &inGroup)Bodyinline
SetEnhancedInternalEdgeRemoval(bool inApply)Bodyinline
SetFriction(float inFriction)Bodyinline
SetInBroadPhaseInternal(bool inInBroadPhase)Bodyinline
SetIsSensor(bool inIsSensor)Bodyinline
SetLinearVelocity(Vec3Arg inLinearVelocity)Bodyinline
SetLinearVelocityClamped(Vec3Arg inLinearVelocity)Bodyinline
SetMotionType(EMotionType inMotionType)Body
SetPositionAndRotationInternal(RVec3Arg inPosition, QuatArg inRotation, bool inResetSleepTimer=true)Body
SetRestitution(float inRestitution)Bodyinline
SetShapeInternal(const Shape *inShape, bool inUpdateMassProperties)Body
SetUseManifoldReduction(bool inUseReduction)Bodyinline
SetUserData(uint64 inUserData)Bodyinline
sFindCollidingPairsCanCollide(const Body &inBody1, const Body &inBody2)Bodyinlinestatic
sFixedToWorldBodystatic
SoftBodyWithMotionPropertiesAndShape()SoftBodyWithMotionPropertiesAndShapeinline
SubPositionStep(Vec3Arg inLinearVelocityTimesDeltaTime)Bodyinline
SubRotationStep(Vec3Arg inAngularVelocityTimesDeltaTime)Bodyinline
UpdateCenterOfMassInternal(Vec3Arg inPreviousCenterOfMass, bool inUpdateMassProperties)Body
UpdateSleepStateInternal(float inDeltaTime, float inMaxMovement, float inTimeBeforeSleep)Body
ValidateContactCacheInternal()Bodyinline
+
+ + + + diff --git a/class_soft_body_with_motion_properties_and_shape.html b/class_soft_body_with_motion_properties_and_shape.html new file mode 100644 index 000000000..6c4f9627d --- /dev/null +++ b/class_soft_body_with_motion_properties_and_shape.html @@ -0,0 +1,475 @@ + + + + + + + +Jolt Physics: SoftBodyWithMotionPropertiesAndShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SoftBodyWithMotionPropertiesAndShape Class Reference
+
+
+
+Inheritance diagram for SoftBodyWithMotionPropertiesAndShape:
+
+
+ + +Body +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SoftBodyWithMotionPropertiesAndShape ()
 
- Public Member Functions inherited from Body
JPH_OVERRIDE_NEW_DELETE const BodyIDGetID () const
 Get the id of this body.
 
EBodyType GetBodyType () const
 Get the type of body (rigid or soft)
 
bool IsRigidBody () const
 Check if this body is a rigid body.
 
bool IsSoftBody () const
 Check if this body is a soft body.
 
bool IsActive () const
 If this body is currently actively simulating (true) or sleeping (false)
 
bool IsStatic () const
 Check if this body is static (not movable)
 
bool IsKinematic () const
 Check if this body is kinematic (keyframed), which means that it will move according to its current velocity, but forces don't affect it.
 
bool IsDynamic () const
 Check if this body is dynamic, which means that it moves and forces can act on it.
 
bool CanBeKinematicOrDynamic () const
 Check if a body could be made kinematic or dynamic (if it was created dynamic or with mAllowDynamicOrKinematic set to true)
 
void SetIsSensor (bool inIsSensor)
 
bool IsSensor () const
 Check if this body is a sensor.
 
void SetCollideKinematicVsNonDynamic (bool inCollide)
 
bool GetCollideKinematicVsNonDynamic () const
 Check if kinematic objects can generate contact points against other kinematic or static objects.
 
void SetUseManifoldReduction (bool inUseReduction)
 
bool GetUseManifoldReduction () const
 Check if this body can use manifold reduction.
 
bool GetUseManifoldReductionWithBody (const Body &inBody2) const
 Checks if the combination of this body and inBody2 should use manifold reduction.
 
void SetApplyGyroscopicForce (bool inApply)
 Set to indicate that the gyroscopic force should be applied to this body (aka Dzhanibekov effect, see https://en.wikipedia.org/wiki/Tennis_racket_theorem)
 
bool GetApplyGyroscopicForce () const
 Check if the gyroscopic force is being applied for this body.
 
void SetEnhancedInternalEdgeRemoval (bool inApply)
 Set to indicate that extra effort should be made to try to remove ghost contacts (collisions with internal edges of a mesh). This is more expensive but makes bodies move smoother over a mesh with convex edges.
 
bool GetEnhancedInternalEdgeRemoval () const
 Check if enhanced internal edge removal is turned on.
 
bool GetEnhancedInternalEdgeRemovalWithBody (const Body &inBody2) const
 Checks if the combination of this body and inBody2 should use enhanced internal edge removal.
 
EMotionType GetMotionType () const
 Get the bodies motion type.
 
void SetMotionType (EMotionType inMotionType)
 Set the motion type of this body. Consider using BodyInterface::SetMotionType instead of this function if the body may be active or if it needs to be activated.
 
BroadPhaseLayer GetBroadPhaseLayer () const
 Get broadphase layer, this determines in which broad phase sub-tree the object is placed.
 
ObjectLayer GetObjectLayer () const
 Get object layer, this determines which other objects it collides with.
 
const CollisionGroupGetCollisionGroup () const
 Collision group and sub-group ID, determines which other objects it collides with.
 
CollisionGroupGetCollisionGroup ()
 
void SetCollisionGroup (const CollisionGroup &inGroup)
 
bool GetAllowSleeping () const
 If this body can go to sleep. Note that disabling sleeping on a sleeping object will not wake it up.
 
void SetAllowSleeping (bool inAllow)
 
void ResetSleepTimer ()
 Resets the sleep timer. This does not wake up the body if it is sleeping, but allows resetting the system that detects when a body is sleeping.
 
float GetFriction () const
 Friction (dimensionless number, usually between 0 and 1, 0 = no friction, 1 = friction force equals force that presses the two bodies together). Note that bodies can have negative friction but the combined friction (see PhysicsSystem::SetCombineFriction) should never go below zero.
 
void SetFriction (float inFriction)
 
float GetRestitution () const
 Restitution (dimensionless number, usually between 0 and 1, 0 = completely inelastic collision response, 1 = completely elastic collision response). Note that bodies can have negative restitution but the combined restitution (see PhysicsSystem::SetCombineRestitution) should never go below zero.
 
void SetRestitution (float inRestitution)
 
Vec3 GetLinearVelocity () const
 Get world space linear velocity of the center of mass (unit: m/s)
 
void SetLinearVelocity (Vec3Arg inLinearVelocity)
 Set world space linear velocity of the center of mass (unit: m/s)
 
void SetLinearVelocityClamped (Vec3Arg inLinearVelocity)
 Set world space linear velocity of the center of mass, will make sure the value is clamped against the maximum linear velocity.
 
Vec3 GetAngularVelocity () const
 Get world space angular velocity of the center of mass (unit: rad/s)
 
void SetAngularVelocity (Vec3Arg inAngularVelocity)
 Set world space angular velocity of the center of mass (unit: rad/s)
 
void SetAngularVelocityClamped (Vec3Arg inAngularVelocity)
 Set world space angular velocity of the center of mass, will make sure the value is clamped against the maximum angular velocity.
 
Vec3 GetPointVelocityCOM (Vec3Arg inPointRelativeToCOM) const
 Velocity of point inPoint (in center of mass space, e.g. on the surface of the body) of the body (unit: m/s)
 
Vec3 GetPointVelocity (RVec3Arg inPoint) const
 Velocity of point inPoint (in world space, e.g. on the surface of the body) of the body (unit: m/s)
 
void AddForce (Vec3Arg inForce)
 Add force (unit: N) at center of mass for the next time step, will be reset after the next call to PhysicsSystem::Update.
 
void AddForce (Vec3Arg inForce, RVec3Arg inPosition)
 Add force (unit: N) at inPosition for the next time step, will be reset after the next call to PhysicsSystem::Update.
 
void AddTorque (Vec3Arg inTorque)
 Add torque (unit: N m) for the next time step, will be reset after the next call to PhysicsSystem::Update.
 
Vec3 GetAccumulatedForce () const
 
Vec3 GetAccumulatedTorque () const
 
JPH_INLINE void ResetForce ()
 
JPH_INLINE void ResetTorque ()
 
JPH_INLINE void ResetMotion ()
 
Mat44 GetInverseInertia () const
 Get inverse inertia tensor in world space.
 
void AddImpulse (Vec3Arg inImpulse)
 Add impulse to center of mass (unit: kg m/s)
 
void AddImpulse (Vec3Arg inImpulse, RVec3Arg inPosition)
 Add impulse to point in world space (unit: kg m/s)
 
void AddAngularImpulse (Vec3Arg inAngularImpulse)
 Add angular impulse in world space (unit: N m s)
 
void MoveKinematic (RVec3Arg inTargetPosition, QuatArg inTargetRotation, float inDeltaTime)
 Set velocity of body such that it will be positioned at inTargetPosition/Rotation in inDeltaTime seconds.
 
bool ApplyBuoyancyImpulse (RVec3Arg inSurfacePosition, Vec3Arg inSurfaceNormal, float inBuoyancy, float inLinearDrag, float inAngularDrag, Vec3Arg inFluidVelocity, Vec3Arg inGravity, float inDeltaTime)
 
bool IsInBroadPhase () const
 Check if this body has been added to the physics system.
 
bool IsCollisionCacheInvalid () const
 Check if this body has been changed in such a way that the collision cache should be considered invalid for any body interacting with this body.
 
const ShapeGetShape () const
 Get the shape of this body.
 
RVec3 GetPosition () const
 World space position of the body.
 
Quat GetRotation () const
 World space rotation of the body.
 
RMat44 GetWorldTransform () const
 Calculates the transform of this body.
 
RVec3 GetCenterOfMassPosition () const
 Gets the world space position of this body's center of mass.
 
RMat44 GetCenterOfMassTransform () const
 Calculates the transform for this body's center of mass.
 
RMat44 GetInverseCenterOfMassTransform () const
 Calculates the inverse of the transform for this body's center of mass.
 
const AABoxGetWorldSpaceBounds () const
 Get world space bounding box.
 
const MotionPropertiesGetMotionProperties () const
 Access to the motion properties.
 
MotionPropertiesGetMotionProperties ()
 
const MotionPropertiesGetMotionPropertiesUnchecked () const
 Access to the motion properties (version that does not check if the object is kinematic or dynamic)
 
MotionPropertiesGetMotionPropertiesUnchecked ()
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
Vec3 GetWorldSpaceSurfaceNormal (const SubShapeID &inSubShapeID, RVec3Arg inPosition) const
 Get surface normal of a particular sub shape and its world space surface position on this body.
 
TransformedShape GetTransformedShape () const
 Get the transformed shape of this body, which can be used to do collision detection outside of a body lock.
 
BodyCreationSettings GetBodyCreationSettings () const
 Debug function to convert a body back to a body creation settings object to be able to save/recreate the body later.
 
SoftBodyCreationSettings GetSoftBodyCreationSettings () const
 Debug function to convert a soft body back to a soft body creation settings object to be able to save/recreate the body later.
 
void AddPositionStep (Vec3Arg inLinearVelocityTimesDeltaTime)
 Update position using an Euler step (used during position integrate & constraint solving)
 
void SubPositionStep (Vec3Arg inLinearVelocityTimesDeltaTime)
 
void AddRotationStep (Vec3Arg inAngularVelocityTimesDeltaTime)
 Update rotation using an Euler step (using during position integrate & constraint solving)
 
void SubRotationStep (Vec3Arg inAngularVelocityTimesDeltaTime)
 
void SetInBroadPhaseInternal (bool inInBroadPhase)
 Flag if body is in the broadphase (should only be called by the BroadPhase)
 
bool InvalidateContactCacheInternal ()
 Invalidate the contact cache (should only be called by the BodyManager), will be reset the next simulation step. Returns true if the contact cache was still valid.
 
void ValidateContactCacheInternal ()
 Reset the collision cache invalid flag (should only be called by the BodyManager).
 
void CalculateWorldSpaceBoundsInternal ()
 Updates world space bounding box (should only be called by the PhysicsSystem)
 
void SetPositionAndRotationInternal (RVec3Arg inPosition, QuatArg inRotation, bool inResetSleepTimer=true)
 Function to update body's position (should only be called by the BodyInterface since it also requires updating the broadphase)
 
void UpdateCenterOfMassInternal (Vec3Arg inPreviousCenterOfMass, bool inUpdateMassProperties)
 
void SetShapeInternal (const Shape *inShape, bool inUpdateMassProperties)
 
uint32 GetIndexInActiveBodiesInternal () const
 Access to the index in the BodyManager::mActiveBodies list.
 
ECanSleep UpdateSleepStateInternal (float inDeltaTime, float inMaxMovement, float inTimeBeforeSleep)
 Update eligibility for sleeping.
 
void SaveState (StateRecorder &inStream) const
 Saving state for replay.
 
void RestoreState (StateRecorder &inStream)
 Restoring state for replay.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + +

+Public Attributes

SoftBodyMotionProperties mMotionProperties
 
SoftBodyShape mShape
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from Body
static bool sFindCollidingPairsCanCollide (const Body &inBody1, const Body &inBody2)
 
- Static Public Attributes inherited from Body
static Body sFixedToWorld
 A dummy body that can be used by constraints to attach a constraint to the world instead of another body.
 
static constexpr uint32 cInactiveIndex = MotionProperties::cInactiveIndex
 Constant indicating that body is not active.
 
+

Constructor & Destructor Documentation

+ +

◆ SoftBodyWithMotionPropertiesAndShape()

+ +
+
+ + + + + +
+ + + + + + + +
SoftBodyWithMotionPropertiesAndShape::SoftBodyWithMotionPropertiesAndShape ()
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mMotionProperties

+ +
+
+ + + + +
SoftBodyMotionProperties SoftBodyWithMotionPropertiesAndShape::mMotionProperties
+
+ +
+
+ +

◆ mShape

+ +
+
+ + + + +
SoftBodyShape SoftBodyWithMotionPropertiesAndShape::mShape
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_soft_body_with_motion_properties_and_shape.js b/class_soft_body_with_motion_properties_and_shape.js new file mode 100644 index 000000000..75200536d --- /dev/null +++ b/class_soft_body_with_motion_properties_and_shape.js @@ -0,0 +1,6 @@ +var class_soft_body_with_motion_properties_and_shape = +[ + [ "SoftBodyWithMotionPropertiesAndShape", "class_soft_body_with_motion_properties_and_shape.html#ac1b6418cacec69cc1b1b9bb168250ffa", null ], + [ "mMotionProperties", "class_soft_body_with_motion_properties_and_shape.html#afd4fc31265249747650bb839c57f527c", null ], + [ "mShape", "class_soft_body_with_motion_properties_and_shape.html#a08d76f7806779975538f6cb4ba8d1768", null ] +]; \ No newline at end of file diff --git a/class_soft_body_with_motion_properties_and_shape.png b/class_soft_body_with_motion_properties_and_shape.png new file mode 100644 index 000000000..506472841 Binary files /dev/null and b/class_soft_body_with_motion_properties_and_shape.png differ diff --git a/class_specified_broad_phase_layer_filter-members.html b/class_specified_broad_phase_layer_filter-members.html new file mode 100644 index 000000000..8e4251f7b --- /dev/null +++ b/class_specified_broad_phase_layer_filter-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SpecifiedBroadPhaseLayerFilter Member List
+
+
+ +

This is the complete list of members for SpecifiedBroadPhaseLayerFilter, including all inherited members.

+ + + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(BroadPhaseLayer inLayer) const overrideSpecifiedBroadPhaseLayerFilterinlinevirtual
SpecifiedBroadPhaseLayerFilter(BroadPhaseLayer inLayer)SpecifiedBroadPhaseLayerFilterinlineexplicit
~BroadPhaseLayerFilter()=defaultBroadPhaseLayerFiltervirtual
+
+ + + + diff --git a/class_specified_broad_phase_layer_filter.html b/class_specified_broad_phase_layer_filter.html new file mode 100644 index 000000000..a362ab0d6 --- /dev/null +++ b/class_specified_broad_phase_layer_filter.html @@ -0,0 +1,218 @@ + + + + + + + +Jolt Physics: SpecifiedBroadPhaseLayerFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SpecifiedBroadPhaseLayerFilter Class Reference
+
+
+ +

Allows objects from a specific broad phase layer only. + More...

+ +

#include <BroadPhaseLayer.h>

+
+Inheritance diagram for SpecifiedBroadPhaseLayerFilter:
+
+
+ + +BroadPhaseLayerFilter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SpecifiedBroadPhaseLayerFilter (BroadPhaseLayer inLayer)
 Constructor.
 
virtual bool ShouldCollide (BroadPhaseLayer inLayer) const override
 Function to filter out broadphase layers when doing collision query test (return true to allow testing against objects with this layer)
 
- Public Member Functions inherited from BroadPhaseLayerFilter
virtual ~BroadPhaseLayerFilter ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Allows objects from a specific broad phase layer only.

+

Constructor & Destructor Documentation

+ +

◆ SpecifiedBroadPhaseLayerFilter()

+ +
+
+ + + + + +
+ + + + + + + + +
SpecifiedBroadPhaseLayerFilter::SpecifiedBroadPhaseLayerFilter (BroadPhaseLayer inLayer)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool SpecifiedBroadPhaseLayerFilter::ShouldCollide (BroadPhaseLayer inLayer) const
+
+inlineoverridevirtual
+
+ +

Function to filter out broadphase layers when doing collision query test (return true to allow testing against objects with this layer)

+ +

Reimplemented from BroadPhaseLayerFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_specified_broad_phase_layer_filter.js b/class_specified_broad_phase_layer_filter.js new file mode 100644 index 000000000..9831a41be --- /dev/null +++ b/class_specified_broad_phase_layer_filter.js @@ -0,0 +1,5 @@ +var class_specified_broad_phase_layer_filter = +[ + [ "SpecifiedBroadPhaseLayerFilter", "class_specified_broad_phase_layer_filter.html#a61d243a9465b8e0f3e71ae585df1d18c", null ], + [ "ShouldCollide", "class_specified_broad_phase_layer_filter.html#aedde7395b8b32b17168accd40be9860d", null ] +]; \ No newline at end of file diff --git a/class_specified_broad_phase_layer_filter.png b/class_specified_broad_phase_layer_filter.png new file mode 100644 index 000000000..f3e14bb47 Binary files /dev/null and b/class_specified_broad_phase_layer_filter.png differ diff --git a/class_specified_object_layer_filter-members.html b/class_specified_object_layer_filter-members.html new file mode 100644 index 000000000..267e1b3ac --- /dev/null +++ b/class_specified_object_layer_filter-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SpecifiedObjectLayerFilter Member List
+
+
+ +

This is the complete list of members for SpecifiedObjectLayerFilter, including all inherited members.

+ + + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
ShouldCollide(ObjectLayer inLayer) const overrideSpecifiedObjectLayerFilterinlinevirtual
SpecifiedObjectLayerFilter(ObjectLayer inLayer)SpecifiedObjectLayerFilterinlineexplicit
~ObjectLayerFilter()=defaultObjectLayerFiltervirtual
+
+ + + + diff --git a/class_specified_object_layer_filter.html b/class_specified_object_layer_filter.html new file mode 100644 index 000000000..633b95089 --- /dev/null +++ b/class_specified_object_layer_filter.html @@ -0,0 +1,218 @@ + + + + + + + +Jolt Physics: SpecifiedObjectLayerFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SpecifiedObjectLayerFilter Class Reference
+
+
+ +

Allows objects from a specific layer only. + More...

+ +

#include <ObjectLayer.h>

+
+Inheritance diagram for SpecifiedObjectLayerFilter:
+
+
+ + +ObjectLayerFilter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SpecifiedObjectLayerFilter (ObjectLayer inLayer)
 Constructor.
 
virtual bool ShouldCollide (ObjectLayer inLayer) const override
 Function to filter out object layers when doing collision query test (return true to allow testing against objects with this layer)
 
- Public Member Functions inherited from ObjectLayerFilter
virtual ~ObjectLayerFilter ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Allows objects from a specific layer only.

+

Constructor & Destructor Documentation

+ +

◆ SpecifiedObjectLayerFilter()

+ +
+
+ + + + + +
+ + + + + + + + +
SpecifiedObjectLayerFilter::SpecifiedObjectLayerFilter (ObjectLayer inLayer)
+
+inlineexplicit
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldCollide()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool SpecifiedObjectLayerFilter::ShouldCollide (ObjectLayer inLayer) const
+
+inlineoverridevirtual
+
+ +

Function to filter out object layers when doing collision query test (return true to allow testing against objects with this layer)

+ +

Reimplemented from ObjectLayerFilter.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_specified_object_layer_filter.js b/class_specified_object_layer_filter.js new file mode 100644 index 000000000..81c527421 --- /dev/null +++ b/class_specified_object_layer_filter.js @@ -0,0 +1,5 @@ +var class_specified_object_layer_filter = +[ + [ "SpecifiedObjectLayerFilter", "class_specified_object_layer_filter.html#a3eea28cfe96db770a84b2bea3f39f08a", null ], + [ "ShouldCollide", "class_specified_object_layer_filter.html#a14426a684c2264c1120bd2c60460057b", null ] +]; \ No newline at end of file diff --git a/class_specified_object_layer_filter.png b/class_specified_object_layer_filter.png new file mode 100644 index 000000000..01b0aac8f Binary files /dev/null and b/class_specified_object_layer_filter.png differ diff --git a/class_sphere-members.html b/class_sphere-members.html new file mode 100644 index 000000000..83408e72e --- /dev/null +++ b/class_sphere-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Sphere Member List
+
+
+ +

This is the complete list of members for Sphere, including all inherited members.

+ + + + + + + + + + +
EncapsulatePoint(Vec3Arg inPoint)Sphereinline
GetCenter() constSphereinline
GetRadius() constSphereinline
GetSupport(Vec3Arg inDirection) constSphereinline
Overlaps(const Sphere &inB) constSphereinline
Overlaps(const AABox &inOther) constSphereinline
Sphere()=defaultSphereinline
Sphere(const Float3 &inCenter, float inRadius)Sphereinline
Sphere(Vec3Arg inCenter, float inRadius)Sphereinline
+
+ + + + diff --git a/class_sphere.html b/class_sphere.html new file mode 100644 index 000000000..1d02589bb --- /dev/null +++ b/class_sphere.html @@ -0,0 +1,412 @@ + + + + + + + +Jolt Physics: Sphere Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Sphere Class Reference
+
+
+ +

#include <Sphere.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Sphere ()=default
 Constructor.
 
 Sphere (const Float3 &inCenter, float inRadius)
 
 Sphere (Vec3Arg inCenter, float inRadius)
 
Vec3 GetSupport (Vec3Arg inDirection) const
 Calculate the support vector for this convex shape.
 
Vec3 GetCenter () const
 
float GetRadius () const
 
bool Overlaps (const Sphere &inB) const
 Test if two spheres overlap.
 
bool Overlaps (const AABox &inOther) const
 Check if this sphere overlaps with a box.
 
void EncapsulatePoint (Vec3Arg inPoint)
 Create the minimal sphere that encapsulates this sphere and inPoint.
 
+

Constructor & Destructor Documentation

+ +

◆ Sphere() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE Sphere::Sphere ()
+
+inlinedefault
+
+ +

Constructor.

+ +
+
+ +

◆ Sphere() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Sphere::Sphere (const Float3inCenter,
float inRadius 
)
+
+inline
+
+ +
+
+ +

◆ Sphere() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Sphere::Sphere (Vec3Arg inCenter,
float inRadius 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ EncapsulatePoint()

+ +
+
+ + + + + +
+ + + + + + + + +
void Sphere::EncapsulatePoint (Vec3Arg inPoint)
+
+inline
+
+ +

Create the minimal sphere that encapsulates this sphere and inPoint.

+ +
+
+ +

◆ GetCenter()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Sphere::GetCenter () const
+
+inline
+
+ +
+
+ +

◆ GetRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float Sphere::GetRadius () const
+
+inline
+
+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 Sphere::GetSupport (Vec3Arg inDirection) const
+
+inline
+
+ +

Calculate the support vector for this convex shape.

+ +
+
+ +

◆ Overlaps() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool Sphere::Overlaps (const AABoxinOther) const
+
+inline
+
+ +

Check if this sphere overlaps with a box.

+ +
+
+ +

◆ Overlaps() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
bool Sphere::Overlaps (const SphereinB) const
+
+inline
+
+ +

Test if two spheres overlap.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_sphere.js b/class_sphere.js new file mode 100644 index 000000000..bf18f9ee8 --- /dev/null +++ b/class_sphere.js @@ -0,0 +1,12 @@ +var class_sphere = +[ + [ "Sphere", "class_sphere.html#a1c4a9559681c92e3520ba68310805a06", null ], + [ "Sphere", "class_sphere.html#aad6e2c3173f9261f5aa87a10a03aef94", null ], + [ "Sphere", "class_sphere.html#aa60bc919d16366e674f90fb6b37bd7a8", null ], + [ "EncapsulatePoint", "class_sphere.html#ae662c4e0d3f338fe5c5bfa844aaa22ea", null ], + [ "GetCenter", "class_sphere.html#a58cd6715b3ab45d6ad8baaa369f31fd1", null ], + [ "GetRadius", "class_sphere.html#a1be9f865028172ade600ed25ca0aee4f", null ], + [ "GetSupport", "class_sphere.html#a3ccfa118fbdbd2c7346d3f7f9d29595e", null ], + [ "Overlaps", "class_sphere.html#a0b2393b6b42f0efdf33ae666b3fac39f", null ], + [ "Overlaps", "class_sphere.html#a6aa30078ee8ea3742c9df2aa2cfbcb2c", null ] +]; \ No newline at end of file diff --git a/class_sphere_shape-members.html b/class_sphere_shape-members.html new file mode 100644 index 000000000..8d53f85b9 --- /dev/null +++ b/class_sphere_shape-members.html @@ -0,0 +1,206 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SphereShape Member List
+
+
+ +

This is the complete list of members for SphereShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideSphereShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideSphereShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideSphereShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideSphereShapevirtual
ConvexShape(EShapeSubType inSubType)ConvexShapeinlineexplicit
ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)ConvexShapeinline
ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial)ConvexShapeinline
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideSphereShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideConvexShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideConvexShapevirtual
ESupportMode enum nameConvexShape
GetCenterOfMass() constShapeinlinevirtual
GetDensity() constConvexShapeinline
GetInnerRadius() const overrideSphereShapeinlinevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const overrideSphereShapevirtual
GetMassProperties() const overrideSphereShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideConvexShapeinlinevirtual
GetMaterial() constConvexShapeinline
GetRadius() constSphereShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideSphereShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideSphereShapevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideConvexShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const overrideSphereShapevirtual
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideSphereShapeinlinevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideSphereShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideSphereShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideSphereShapevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideSphereShapeinlinevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideSphereShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constSphereShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constSphereShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) const overrideSphereShapevirtual
MakeScaleValid(Vec3Arg inScale) const overrideSphereShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() constShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideSphereShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) overrideConvexShapevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) const overrideSphereShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) const overrideConvexShapevirtual
Shape::SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetDensity(float inDensity)ConvexShapeinline
SetEmbedded() constRefTarget< Shape >inline
SetMaterial(const PhysicsMaterial *inMaterial)ConvexShapeinline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
SphereShape()SphereShapeinline
SphereShape(const SphereShapeSettings &inSettings, ShapeResult &outResult)SphereShape
SphereShape(float inRadius, const PhysicsMaterial *inMaterial=nullptr)SphereShapeinline
sRegister()SphereShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
sUnitSphereTrianglesConvexShapeprotectedstatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_sphere_shape.html b/class_sphere_shape.html new file mode 100644 index 000000000..188676d79 --- /dev/null +++ b/class_sphere_shape.html @@ -0,0 +1,1565 @@ + + + + + + + +Jolt Physics: SphereShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SphereShape Class Referencefinal
+
+
+ +

#include <SphereShape.h>

+
+Inheritance diagram for SphereShape:
+
+
+ + +ConvexShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + + + +

+Classes

class  SphereNoConvex
 
class  SphereWithConvex
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE SphereShape ()
 Constructor.
 
 SphereShape (const SphereShapeSettings &inSettings, ShapeResult &outResult)
 
 SphereShape (float inRadius, const PhysicsMaterial *inMaterial=nullptr)
 Create a sphere with radius inRadius.
 
float GetRadius () const
 Radius of the sphere.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual const SupportGetSupportFunction (ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
- Public Member Functions inherited from ConvexShape
JPH_OVERRIDE_NEW_DELETE ConvexShape (EShapeSubType inSubType)
 Constructor.
 
 ConvexShape (EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)
 
 ConvexShape (EShapeSubType inSubType, const PhysicsMaterial *inMaterial)
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
void SetMaterial (const PhysicsMaterial *inMaterial)
 Material of the shape.
 
const PhysicsMaterialGetMaterial () const
 
void SetDensity (float inDensity)
 Set density of the shape (kg / m^3)
 
float GetDensity () const
 Get density of the shape (kg / m^3)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const override
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual bool MustBeStatic () const
 Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.
 
virtual Vec3 GetCenterOfMass () const
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from ConvexShape
static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConvexShape
enum class  ESupportMode { ExcludeConvexRadius +, IncludeConvexRadius +, Default + }
 How the GetSupport function should behave. More...
 
- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from ConvexShape
static const StaticArray< Vec3, 384 > sUnitSphereTriangles
 Vertex list that forms a unit sphere.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A sphere, centered around the origin. Note that it is implemented as a point with convex radius.

+

Constructor & Destructor Documentation

+ +

◆ SphereShape() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE SphereShape::SphereShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ SphereShape() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
SphereShape::SphereShape (const SphereShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+ +

◆ SphereShape() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
SphereShape::SphereShape (float inRadius,
const PhysicsMaterialinMaterial = nullptr 
)
+
+inline
+
+ +

Create a sphere with radius inRadius.

+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SphereShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool SphereShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SphereShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SphereShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SphereShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float SphereShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox SphereShape::GetLocalBounds () const
+
+overridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties SphereShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float SphereShape::GetRadius () const
+
+inline
+
+ +

Radius of the sphere.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats SphereShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SphereShape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3 &outCenterOfBuoyancy  JPH_IF_DEBUG_RENDERER, RVec3Arg inBaseOffset 
) const
+
+overridevirtual
+
+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
const ConvexShape::Support * SphereShape::GetSupportFunction (ESupportMode inMode,
SupportBufferinBuffer,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Returns an object that provides the GetSupport function for this shape. inMode determines if this support function includes or excludes the convex radius. of the values returned by the GetSupport function. This improves numerical accuracy of the results. inScale scales this shape in local space.

+ +

Implements ConvexShape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void SphereShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+inlineoverridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 SphereShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int SphereShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+overridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SphereShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float SphereShape::GetVolume () const
+
+inlineoverridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox Shape::GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inline
+
+ +

Get world space bounds including convex radius.

+ +
+
+ +

◆ GetWorldSpaceBounds() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual AABox Shape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inlinevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox SphereShape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ IsValidScale()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SphereShape::IsValidScale (Vec3Arg inScale) const
+
+overridevirtual
+
+

Test if inScale is a valid scale for this shape. Some shapes can only be scaled uniformly, compound shapes cannot handle shapes being rotated and scaled (this would cause shearing), scale can never be zero. When the scale is invalid, the function will return false.

+

Here's a list of supported scales:

    +
  • SphereShape: Scale must be uniform (signs of scale are ignored).
  • +
  • BoxShape: Any scale supported (signs of scale are ignored).
  • +
  • TriangleShape: Any scale supported when convex radius is zero, otherwise only uniform scale supported.
  • +
  • CapsuleShape: Scale must be uniform (signs of scale are ignored).
  • +
  • TaperedCapsuleShape: Scale must be uniform (sign of Y scale can be used to flip the capsule).
  • +
  • CylinderShape: Scale must be uniform in XZ plane, Y can scale independently (signs of scale are ignored).
  • +
  • RotatedTranslatedShape: Scale must not cause shear in the child shape.
  • +
  • CompoundShape: Scale must not cause shear in any of the child shapes.
  • +
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ MakeScaleValid()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 SphereShape::MakeScaleValid (Vec3Arg inScale) const
+
+overridevirtual
+
+

This function will make sure that if you wrap this shape in a ScaledShape that the scale is valid. Note that this involves discarding components of the scale that are invalid, so the resulting scaled shape may be different than the requested scale. Compare the return value of this function with the scale you passed in to detect major inconsistencies and possibly warn the user.

Parameters
+ + +
inScaleLocal space scale for this shape.
+
+
+
Returns
Scale that can be used to wrap this shape in a ScaledShape. IsValidScale will return true for this scale.
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SphereShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SphereShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void SphereShape::sRegister ()
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_sphere_shape.js b/class_sphere_shape.js new file mode 100644 index 000000000..2ed6dbbb0 --- /dev/null +++ b/class_sphere_shape.js @@ -0,0 +1,32 @@ +var class_sphere_shape = +[ + [ "SphereNoConvex", "class_sphere_shape_1_1_sphere_no_convex.html", "class_sphere_shape_1_1_sphere_no_convex" ], + [ "SphereWithConvex", "class_sphere_shape_1_1_sphere_with_convex.html", "class_sphere_shape_1_1_sphere_with_convex" ], + [ "SphereShape", "class_sphere_shape.html#a6a7e1d71ee2a8f08aa3fe20e079c586e", null ], + [ "SphereShape", "class_sphere_shape.html#a9a858fa962e57907a10dff50bca7b8b5", null ], + [ "SphereShape", "class_sphere_shape.html#a500c89d354a98bdec5597e302f9babf3", null ], + [ "CastRay", "class_sphere_shape.html#a355bc794c757307e88159557d0f43d79", null ], + [ "CastRay", "class_sphere_shape.html#a961b5b5d30f21ea75df8bd1ef4ea7577", null ], + [ "CollidePoint", "class_sphere_shape.html#ab8223102d141ca2fda0343ddfcb07ab4", null ], + [ "CollideSoftBodyVertices", "class_sphere_shape.html#a6a1d356c6756e27d8a6780fc56c5717c", null ], + [ "Draw", "class_sphere_shape.html#a278bd4a5d3c605638c48438eacc80124", null ], + [ "GetInnerRadius", "class_sphere_shape.html#afb194e610fbe0025a2edebf8b0c20be3", null ], + [ "GetLocalBounds", "class_sphere_shape.html#a1941ec6970a8a1daf084f5cbbf173094", null ], + [ "GetMassProperties", "class_sphere_shape.html#a1febf0517dfc8b724d1bd3b3c2decf55", null ], + [ "GetRadius", "class_sphere_shape.html#a05f8c7b1d7501c040804bb14c7d9ea84", null ], + [ "GetStats", "class_sphere_shape.html#adff6e55656d0dc2048f40b3dad359fd8", null ], + [ "GetSubmergedVolume", "class_sphere_shape.html#accef575dd77414652ae4c1c0f68b6c88", null ], + [ "GetSupportFunction", "class_sphere_shape.html#a69de38369e7a6e0927d7bbcce1ae5759", null ], + [ "GetSupportingFace", "class_sphere_shape.html#a9619a007d4bd51efef15792e464d8c0f", null ], + [ "GetSurfaceNormal", "class_sphere_shape.html#a2ae3fdc9da393a59106c6f4f75c20b25", null ], + [ "GetTrianglesNext", "class_sphere_shape.html#aab3a1e57553613d5ce94557f6175ca93", null ], + [ "GetTrianglesStart", "class_sphere_shape.html#ae00fa28f36870678e33dc16085cafc5b", null ], + [ "GetVolume", "class_sphere_shape.html#a67684ecf3156eed16a5da749fcaad002", null ], + [ "GetWorldSpaceBounds", "class_sphere_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b", null ], + [ "GetWorldSpaceBounds", "class_sphere_shape.html#a9f8379fa338802436700b86a07fab3be", null ], + [ "GetWorldSpaceBounds", "class_sphere_shape.html#a637eb08a63c6bd5e8cc57c0f7e5c08a7", null ], + [ "IsValidScale", "class_sphere_shape.html#a94316a5849ea7c0bdbd55b9cf9da1195", null ], + [ "MakeScaleValid", "class_sphere_shape.html#a2c0027a034604bb763ef0b8092f13eda", null ], + [ "RestoreBinaryState", "class_sphere_shape.html#af3bba551144e16706f81b326559e8182", null ], + [ "SaveBinaryState", "class_sphere_shape.html#a593b20c96307bfdda61738cbf6cee311", null ] +]; \ No newline at end of file diff --git a/class_sphere_shape.png b/class_sphere_shape.png new file mode 100644 index 000000000..71b6c3ca6 Binary files /dev/null and b/class_sphere_shape.png differ diff --git a/class_sphere_shape_1_1_sphere_no_convex-members.html b/class_sphere_shape_1_1_sphere_no_convex-members.html new file mode 100644 index 000000000..08b1fe657 --- /dev/null +++ b/class_sphere_shape_1_1_sphere_no_convex-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SphereShape::SphereNoConvex Member List
+
+
+ +

This is the complete list of members for SphereShape::SphereNoConvex, including all inherited members.

+ + + + + +
GetConvexRadius() const overrideSphereShape::SphereNoConvexinlinevirtual
GetSupport(Vec3Arg inDirection) const overrideSphereShape::SphereNoConvexinlinevirtual
SphereNoConvex(float inRadius)SphereShape::SphereNoConvexinlineexplicit
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_sphere_shape_1_1_sphere_no_convex.html b/class_sphere_shape_1_1_sphere_no_convex.html new file mode 100644 index 000000000..5b4eb357f --- /dev/null +++ b/class_sphere_shape_1_1_sphere_no_convex.html @@ -0,0 +1,228 @@ + + + + + + + +Jolt Physics: SphereShape::SphereNoConvex Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SphereShape::SphereNoConvex Class Referencefinal
+
+
+
+Inheritance diagram for SphereShape::SphereNoConvex:
+
+
+ + +ConvexShape::Support + +
+ + + + + + + + + + + + +

+Public Member Functions

 SphereNoConvex (float inRadius)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Constructor & Destructor Documentation

+ +

◆ SphereNoConvex()

+ +
+
+ + + + + +
+ + + + + + + + +
SphereShape::SphereNoConvex::SphereNoConvex (float inRadius)
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float SphereShape::SphereNoConvex::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 SphereShape::SphereNoConvex::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_sphere_shape_1_1_sphere_no_convex.js b/class_sphere_shape_1_1_sphere_no_convex.js new file mode 100644 index 000000000..11bb5379d --- /dev/null +++ b/class_sphere_shape_1_1_sphere_no_convex.js @@ -0,0 +1,6 @@ +var class_sphere_shape_1_1_sphere_no_convex = +[ + [ "SphereNoConvex", "class_sphere_shape_1_1_sphere_no_convex.html#af220bf4b31e425741bbc587f13bf3eb2", null ], + [ "GetConvexRadius", "class_sphere_shape_1_1_sphere_no_convex.html#afd8c26363093475f569d9b01710e66d9", null ], + [ "GetSupport", "class_sphere_shape_1_1_sphere_no_convex.html#a38a13c00c2b11db056767b4f67241845", null ] +]; \ No newline at end of file diff --git a/class_sphere_shape_1_1_sphere_no_convex.png b/class_sphere_shape_1_1_sphere_no_convex.png new file mode 100644 index 000000000..a53516311 Binary files /dev/null and b/class_sphere_shape_1_1_sphere_no_convex.png differ diff --git a/class_sphere_shape_1_1_sphere_with_convex-members.html b/class_sphere_shape_1_1_sphere_with_convex-members.html new file mode 100644 index 000000000..0ce3d5665 --- /dev/null +++ b/class_sphere_shape_1_1_sphere_with_convex-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SphereShape::SphereWithConvex Member List
+
+
+ +

This is the complete list of members for SphereShape::SphereWithConvex, including all inherited members.

+ + + + + +
GetConvexRadius() const overrideSphereShape::SphereWithConvexinlinevirtual
GetSupport(Vec3Arg inDirection) const overrideSphereShape::SphereWithConvexinlinevirtual
SphereWithConvex(float inRadius)SphereShape::SphereWithConvexinlineexplicit
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_sphere_shape_1_1_sphere_with_convex.html b/class_sphere_shape_1_1_sphere_with_convex.html new file mode 100644 index 000000000..c4faf1f40 --- /dev/null +++ b/class_sphere_shape_1_1_sphere_with_convex.html @@ -0,0 +1,228 @@ + + + + + + + +Jolt Physics: SphereShape::SphereWithConvex Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SphereShape::SphereWithConvex Class Referencefinal
+
+
+
+Inheritance diagram for SphereShape::SphereWithConvex:
+
+
+ + +ConvexShape::Support + +
+ + + + + + + + + + + + +

+Public Member Functions

 SphereWithConvex (float inRadius)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Constructor & Destructor Documentation

+ +

◆ SphereWithConvex()

+ +
+
+ + + + + +
+ + + + + + + + +
SphereShape::SphereWithConvex::SphereWithConvex (float inRadius)
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float SphereShape::SphereWithConvex::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 SphereShape::SphereWithConvex::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_sphere_shape_1_1_sphere_with_convex.js b/class_sphere_shape_1_1_sphere_with_convex.js new file mode 100644 index 000000000..a55f410cd --- /dev/null +++ b/class_sphere_shape_1_1_sphere_with_convex.js @@ -0,0 +1,6 @@ +var class_sphere_shape_1_1_sphere_with_convex = +[ + [ "SphereWithConvex", "class_sphere_shape_1_1_sphere_with_convex.html#ac0c40365985e261513777a19d486b6d8", null ], + [ "GetConvexRadius", "class_sphere_shape_1_1_sphere_with_convex.html#a63950fdd2ab3281634f5521a08fb6793", null ], + [ "GetSupport", "class_sphere_shape_1_1_sphere_with_convex.html#a503b8f57aa6e001cda690534f3c723a1", null ] +]; \ No newline at end of file diff --git a/class_sphere_shape_1_1_sphere_with_convex.png b/class_sphere_shape_1_1_sphere_with_convex.png new file mode 100644 index 000000000..cf6e37bd2 Binary files /dev/null and b/class_sphere_shape_1_1_sphere_with_convex.png differ diff --git a/class_sphere_shape_settings-members.html b/class_sphere_shape_settings-members.html new file mode 100644 index 000000000..839462814 --- /dev/null +++ b/class_sphere_shape_settings-members.html @@ -0,0 +1,144 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SphereShapeSettings Member List
+
+
+ +

This is the complete list of members for SphereShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
ConvexShapeSettings()=defaultConvexShapeSettings
ConvexShapeSettings(const PhysicsMaterial *inMaterial)ConvexShapeSettingsinlineexplicit
Create() const overrideSphereShapeSettingsvirtual
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mDensityConvexShapeSettings
mMaterialConvexShapeSettings
mRadiusSphereShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetDensity(float inDensity)ConvexShapeSettingsinline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
SphereShapeSettings()=defaultSphereShapeSettings
SphereShapeSettings(float inRadius, const PhysicsMaterial *inMaterial=nullptr)SphereShapeSettingsinline
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_sphere_shape_settings.html b/class_sphere_shape_settings.html new file mode 100644 index 000000000..9a148f33e --- /dev/null +++ b/class_sphere_shape_settings.html @@ -0,0 +1,348 @@ + + + + + + + +Jolt Physics: SphereShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SphereShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a SphereShape. + More...

+ +

#include <SphereShape.h>

+
+Inheritance diagram for SphereShapeSettings:
+
+
+ + +ConvexShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SphereShapeSettings ()=default
 Default constructor for deserialization.
 
 SphereShapeSettings (float inRadius, const PhysicsMaterial *inMaterial=nullptr)
 Create a sphere with radius inRadius.
 
virtual ShapeResult Create () const override
 Create a shape according to the settings specified by this object.
 
- Public Member Functions inherited from ConvexShapeSettings
 ConvexShapeSettings ()=default
 Constructor.
 
 ConvexShapeSettings (const PhysicsMaterial *inMaterial)
 
void SetDensity (float inDensity)
 Set the density of the object in kg / m^3.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + +

+Public Attributes

float mRadius = 0.0f
 
- Public Attributes inherited from ConvexShapeSettings
RefConst< PhysicsMaterialmMaterial
 Material assigned to this shape.
 
float mDensity = 1000.0f
 Uniform density of the interior of the convex object (kg / m^3)
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a SphereShape.

+

Constructor & Destructor Documentation

+ +

◆ SphereShapeSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
SphereShapeSettings::SphereShapeSettings ()
+
+default
+
+ +

Default constructor for deserialization.

+ +
+
+ +

◆ SphereShapeSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
SphereShapeSettings::SphereShapeSettings (float inRadius,
const PhysicsMaterialinMaterial = nullptr 
)
+
+inline
+
+ +

Create a sphere with radius inRadius.

+ +
+
+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + +
ShapeSettings::ShapeResult SphereShapeSettings::Create () const
+
+overridevirtual
+
+ +

Create a shape according to the settings specified by this object.

+ +

Implements ShapeSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mRadius

+ +
+
+ + + + +
float SphereShapeSettings::mRadius = 0.0f
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_sphere_shape_settings.js b/class_sphere_shape_settings.js new file mode 100644 index 000000000..0474da55a --- /dev/null +++ b/class_sphere_shape_settings.js @@ -0,0 +1,7 @@ +var class_sphere_shape_settings = +[ + [ "SphereShapeSettings", "class_sphere_shape_settings.html#a63f7177c89598cccf4f1852d2a828076", null ], + [ "SphereShapeSettings", "class_sphere_shape_settings.html#a33357c22dbf0b662617360972a88a796", null ], + [ "Create", "class_sphere_shape_settings.html#a8559852faf9a10923a7e5e0cca89d600", null ], + [ "mRadius", "class_sphere_shape_settings.html#abde1ff27c7444e7fa198e9fe1c191a5a", null ] +]; \ No newline at end of file diff --git a/class_sphere_shape_settings.png b/class_sphere_shape_settings.png new file mode 100644 index 000000000..ad38782c4 Binary files /dev/null and b/class_sphere_shape_settings.png differ diff --git a/class_spring_part-members.html b/class_spring_part-members.html new file mode 100644 index 000000000..368d694ad --- /dev/null +++ b/class_spring_part-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SpringPart Member List
+
+
+ +

This is the complete list of members for SpringPart, including all inherited members.

+ + + + + + +
CalculateSpringPropertiesWithBias(float inBias)SpringPartinline
CalculateSpringPropertiesWithFrequencyAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inFrequency, float inDamping, float &outEffectiveMass)SpringPartinline
CalculateSpringPropertiesWithStiffnessAndDamping(float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inStiffness, float inDamping, float &outEffectiveMass)SpringPartinline
GetBias(float inTotalLambda) constSpringPartinline
IsActive() constSpringPartinline
+
+ + + + diff --git a/class_spring_part.html b/class_spring_part.html new file mode 100644 index 000000000..c36587767 --- /dev/null +++ b/class_spring_part.html @@ -0,0 +1,390 @@ + + + + + + + +Jolt Physics: SpringPart Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SpringPart Class Reference
+
+
+ +

Class used in other constraint parts to calculate the required bias factor in the lagrange multiplier for creating springs. + More...

+ +

#include <SpringPart.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

void CalculateSpringPropertiesWithBias (float inBias)
 
void CalculateSpringPropertiesWithFrequencyAndDamping (float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inFrequency, float inDamping, float &outEffectiveMass)
 
void CalculateSpringPropertiesWithStiffnessAndDamping (float inDeltaTime, float inInvEffectiveMass, float inBias, float inC, float inStiffness, float inDamping, float &outEffectiveMass)
 
bool IsActive () const
 Returns if this spring is active.
 
float GetBias (float inTotalLambda) const
 Get total bias b, including supplied bias and bias for spring: lambda = J v + b.
 
+

Detailed Description

+

Class used in other constraint parts to calculate the required bias factor in the lagrange multiplier for creating springs.

+

Member Function Documentation

+ +

◆ CalculateSpringPropertiesWithBias()

+ +
+
+ + + + + +
+ + + + + + + + +
void SpringPart::CalculateSpringPropertiesWithBias (float inBias)
+
+inline
+
+

Turn off the spring and set a bias only

+
Parameters
+ + +
inBiasBias term (b) for the constraint impulse: lambda = J v + b
+
+
+ +
+
+ +

◆ CalculateSpringPropertiesWithFrequencyAndDamping()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SpringPart::CalculateSpringPropertiesWithFrequencyAndDamping (float inDeltaTime,
float inInvEffectiveMass,
float inBias,
float inC,
float inFrequency,
float inDamping,
float & outEffectiveMass 
)
+
+inline
+
+

Calculate spring properties based on frequency and damping ratio

+
Parameters
+ + + + + + + + +
inDeltaTimeTime step
inInvEffectiveMassInverse effective mass K
inBiasBias term (b) for the constraint impulse: lambda = J v + b
inCValue of the constraint equation (C). Set to zero if you don't want to drive the constraint to zero with a spring.
inFrequencyOscillation frequency (Hz). Set to zero if you don't want to drive the constraint to zero with a spring.
inDampingDamping factor (0 = no damping, 1 = critical damping). Set to zero if you don't want to drive the constraint to zero with a spring.
outEffectiveMassOn return, this contains the new effective mass K^-1
+
+
+ +
+
+ +

◆ CalculateSpringPropertiesWithStiffnessAndDamping()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SpringPart::CalculateSpringPropertiesWithStiffnessAndDamping (float inDeltaTime,
float inInvEffectiveMass,
float inBias,
float inC,
float inStiffness,
float inDamping,
float & outEffectiveMass 
)
+
+inline
+
+

Calculate spring properties with spring Stiffness (k) and damping (c), this is based on the spring equation: F = -k * x - c * v

+
Parameters
+ + + + + + + + +
inDeltaTimeTime step
inInvEffectiveMassInverse effective mass K
inBiasBias term (b) for the constraint impulse: lambda = J v + b
inCValue of the constraint equation (C). Set to zero if you don't want to drive the constraint to zero with a spring.
inStiffnessSpring stiffness k. Set to zero if you don't want to drive the constraint to zero with a spring.
inDampingSpring damping coefficient c. Set to zero if you don't want to drive the constraint to zero with a spring.
outEffectiveMassOn return, this contains the new effective mass K^-1
+
+
+ +
+
+ +

◆ GetBias()

+ +
+
+ + + + + +
+ + + + + + + + +
float SpringPart::GetBias (float inTotalLambda) const
+
+inline
+
+ +

Get total bias b, including supplied bias and bias for spring: lambda = J v + b.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool SpringPart::IsActive () const
+
+inline
+
+ +

Returns if this spring is active.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_spring_part.js b/class_spring_part.js new file mode 100644 index 000000000..1ac3e7ae7 --- /dev/null +++ b/class_spring_part.js @@ -0,0 +1,8 @@ +var class_spring_part = +[ + [ "CalculateSpringPropertiesWithBias", "class_spring_part.html#a75d1d4a45e975a5b9b0ad99525c9f52f", null ], + [ "CalculateSpringPropertiesWithFrequencyAndDamping", "class_spring_part.html#a0414048df549022dee152c2b18b31126", null ], + [ "CalculateSpringPropertiesWithStiffnessAndDamping", "class_spring_part.html#a318ab5426c6b10a8ceebd3258144d20a", null ], + [ "GetBias", "class_spring_part.html#a42a39d96e15ae84419256c35067e12ad", null ], + [ "IsActive", "class_spring_part.html#a9dbe7d09f4a6aaf7f5edd106fb6fe335", null ] +]; \ No newline at end of file diff --git a/class_spring_settings-members.html b/class_spring_settings-members.html new file mode 100644 index 000000000..44624327d --- /dev/null +++ b/class_spring_settings-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SpringSettings Member List
+
+
+ +

This is the complete list of members for SpringSettings, including all inherited members.

+ + + + + + + + + + + + +
HasStiffness() constSpringSettingsinline
mDampingSpringSettings
mFrequencySpringSettings
mModeSpringSettings
mStiffnessSpringSettings
operator=(const SpringSettings &)=defaultSpringSettings
RestoreBinaryState(StreamIn &inStream)SpringSettings
SaveBinaryState(StreamOut &inStream) constSpringSettings
SpringSettings()=defaultSpringSettings
SpringSettings(const SpringSettings &)=defaultSpringSettings
SpringSettings(ESpringMode inMode, float inFrequencyOrStiffness, float inDamping)SpringSettingsinline
+
+ + + + diff --git a/class_spring_settings.html b/class_spring_settings.html new file mode 100644 index 000000000..5006933cc --- /dev/null +++ b/class_spring_settings.html @@ -0,0 +1,432 @@ + + + + + + + +Jolt Physics: SpringSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SpringSettings Class Reference
+
+
+ +

Settings for a linear or angular spring. + More...

+ +

#include <SpringSettings.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SpringSettings ()=default
 Constructor.
 
 SpringSettings (const SpringSettings &)=default
 
SpringSettingsoperator= (const SpringSettings &)=default
 
 SpringSettings (ESpringMode inMode, float inFrequencyOrStiffness, float inDamping)
 
void SaveBinaryState (StreamOut &inStream) const
 Saves the contents of the spring settings in binary form to inStream.
 
void RestoreBinaryState (StreamIn &inStream)
 Restores contents from the binary stream inStream.
 
bool HasStiffness () const
 Check if the spring has a valid frequency / stiffness, if not the spring will be hard.
 
+ + + + + + + + + + + + + +

+Public Attributes

ESpringMode mMode = ESpringMode::FrequencyAndDamping
 
union { 
 
   float   mFrequency = 0.0f 
 
   float   mStiffness 
 
};  
 
float mDamping = 0.0f
 
+

Detailed Description

+

Settings for a linear or angular spring.

+

Constructor & Destructor Documentation

+ +

◆ SpringSettings() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
SpringSettings::SpringSettings ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ SpringSettings() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
SpringSettings::SpringSettings (const SpringSettings)
+
+default
+
+ +
+
+ +

◆ SpringSettings() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
SpringSettings::SpringSettings (ESpringMode inMode,
float inFrequencyOrStiffness,
float inDamping 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ HasStiffness()

+ +
+
+ + + + + +
+ + + + + + + +
bool SpringSettings::HasStiffness () const
+
+inline
+
+ +

Check if the spring has a valid frequency / stiffness, if not the spring will be hard.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
SpringSettings & SpringSettings::operator= (const SpringSettings)
+
+default
+
+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void SpringSettings::RestoreBinaryState (StreamIninStream)
+
+ +

Restores contents from the binary stream inStream.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void SpringSettings::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the contents of the spring settings in binary form to inStream.

+ +
+
+

Member Data Documentation

+ +

◆ [union]

+ +
+
+ + + + +
union { ... } SpringSettings
+
+ +
+
+ +

◆ mDamping

+ +
+
+ + + + +
float SpringSettings::mDamping = 0.0f
+
+

When mSpringMode = ESpringMode::FrequencyAndDamping mDamping is the damping ratio (0 = no damping, 1 = critical damping). When mSpringMode = ESpringMode::StiffnessAndDamping mDamping is the damping (c) in the spring equation F = -k * x - c * v for a linear or T = -k * theta - c * w for an angular spring. Note that if you set mDamping = 0, you will not get an infinite oscillation. Because we integrate physics using an explicit Euler scheme, there is always energy loss. This is done to keep the simulation from exploding, because with a damping of 0 and even the slightest rounding error, the oscillation could become bigger and bigger until the simulation explodes.

+ +
+
+ +

◆ mFrequency

+ +
+
+ + + + +
float SpringSettings::mFrequency = 0.0f
+
+

Valid when mSpringMode = ESpringMode::FrequencyAndDamping. If mFrequency > 0 the constraint will be soft and mFrequency specifies the oscillation frequency in Hz. If mFrequency <= 0, mDamping is ignored and the constraint will have hard limits (as hard as the time step / the number of velocity / position solver steps allows).

+ +
+
+ +

◆ mMode

+ +
+
+ + + + +
ESpringMode SpringSettings::mMode = ESpringMode::FrequencyAndDamping
+
+

Selects the way in which the spring is defined If the mode is StiffnessAndDamping then mFrequency becomes the stiffness (k) and mDamping becomes the damping ratio (c) in the spring equation F = -k * x - c * v. Otherwise the properties are as documented.

+ +
+
+ +

◆ mStiffness

+ +
+
+ + + + +
float SpringSettings::mStiffness
+
+

Valid when mSpringMode = ESpringMode::StiffnessAndDamping. If mStiffness > 0 the constraint will be soft and mStiffness specifies the stiffness (k) in the spring equation F = -k * x - c * v for a linear or T = -k * theta - c * w for an angular spring. If mStiffness <= 0, mDamping is ignored and the constraint will have hard limits (as hard as the time step / the number of velocity / position solver steps allows).

+

Note that stiffness values are large numbers. To calculate a ballpark value for the needed stiffness you can use: force = stiffness * delta_spring_length = mass * gravity <=> stiffness = mass * gravity / delta_spring_length. So if your object weighs 1500 kg and the spring compresses by 2 meters, you need a stiffness in the order of 1500 * 9.81 / 2 ~ 7500 N/m.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_spring_settings.js b/class_spring_settings.js new file mode 100644 index 000000000..ae2ec5332 --- /dev/null +++ b/class_spring_settings.js @@ -0,0 +1,14 @@ +var class_spring_settings = +[ + [ "SpringSettings", "class_spring_settings.html#aefa8b0caa0840d58f74b297ad275c1cf", null ], + [ "SpringSettings", "class_spring_settings.html#ad21b30d2d06ed66e8660ccfc14403827", null ], + [ "SpringSettings", "class_spring_settings.html#a3cf17470851be12c258e0c2f200f27e4", null ], + [ "HasStiffness", "class_spring_settings.html#afb683eddb2db25f62403a6af6410eebb", null ], + [ "operator=", "class_spring_settings.html#a035ab930afc30365053d1814f838f335", null ], + [ "RestoreBinaryState", "class_spring_settings.html#af6f75e6e5167b54a2cff64808a106297", null ], + [ "SaveBinaryState", "class_spring_settings.html#a8da853a3005b1797148dd6c8350d0c62", null ], + [ "mDamping", "class_spring_settings.html#a72165bbe14974afb17df18e88f6d205e", null ], + [ "mFrequency", "class_spring_settings.html#acea8e3f5767edbfaffa01417733b5dc0", null ], + [ "mMode", "class_spring_settings.html#a7d27c541e7d25d9da0c263ec99ea528a", null ], + [ "mStiffness", "class_spring_settings.html#a688815c0e85518f1ac42f1d077415472", null ] +]; \ No newline at end of file diff --git a/class_state_recorder-members.html b/class_state_recorder-members.html new file mode 100644 index 000000000..f5969f453 --- /dev/null +++ b/class_state_recorder-members.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StateRecorder Member List
+
+
+ +

This is the complete list of members for StateRecorder, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IsEOF() const =0StreamInpure virtual
StreamIn::IsFailed() const =0StreamInpure virtual
StreamOut::IsFailed() const =0StreamOutpure virtual
IsValidating() constStateRecorderinline
StreamIn::NonCopyable()=defaultNonCopyable
StreamIn::NonCopyable(const NonCopyable &)=deleteNonCopyable
StreamOut::NonCopyable()=defaultNonCopyable
StreamOut::NonCopyable(const NonCopyable &)=deleteNonCopyable
StreamIn::operator=(const NonCopyable &)=deleteNonCopyable
StreamOut::operator=(const NonCopyable &)=deleteNonCopyable
Read(T &outT)StreamIninline
Read(Array< T, A > &outT)StreamIninline
Read(std::basic_string< Type, Traits, Allocator > &outString)StreamIninline
Read(Array< T, A > &outT, const F &inReadElement)StreamIninline
Read(Vec3 &outVec)StreamIninline
Read(DVec3 &outVec)StreamIninline
Read(DMat44 &outVec)StreamIninline
ReadBytes(void *outData, size_t inNumBytes)=0StreamInpure virtual
SetValidating(bool inValidating)StateRecorderinline
StateRecorder()=defaultStateRecorder
StateRecorder(const StateRecorder &inRHS)StateRecorderinline
Write(const T &inT)StreamOutinline
Write(const Array< T, A > &inT)StreamOutinline
Write(const std::basic_string< Type, Traits, Allocator > &inString)StreamOutinline
Write(const Array< T, A > &inT, const F &inWriteElement)StreamOutinline
Write(const Vec3 &inVec)StreamOutinline
Write(const DVec3 &inVec)StreamOutinline
Write(const DMat44 &inVec)StreamOutinline
WriteBytes(const void *inData, size_t inNumBytes)=0StreamOutpure virtual
~StreamIn()=defaultStreamInvirtual
~StreamOut()=defaultStreamOutvirtual
+
+ + + + diff --git a/class_state_recorder.html b/class_state_recorder.html new file mode 100644 index 000000000..fe3e039eb --- /dev/null +++ b/class_state_recorder.html @@ -0,0 +1,337 @@ + + + + + + + +Jolt Physics: StateRecorder Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StateRecorder Class Reference
+
+
+ +

#include <StateRecorder.h>

+
+Inheritance diagram for StateRecorder:
+
+
+ + +StreamIn +StreamOut +NonCopyable +NonCopyable +StateRecorderImpl + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StateRecorder ()=default
 Constructor.
 
 StateRecorder (const StateRecorder &inRHS)
 
void SetValidating (bool inValidating)
 
bool IsValidating () const
 
- Public Member Functions inherited from StreamIn
virtual ~StreamIn ()=default
 Virtual destructor.
 
virtual void ReadBytes (void *outData, size_t inNumBytes)=0
 Read a string of bytes from the binary stream.
 
virtual bool IsEOF () const =0
 Returns true when an attempt has been made to read past the end of the file.
 
virtual bool IsFailed () const =0
 Returns true if there was an IO failure.
 
template<class T , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Read (T &outT)
 Read a primitive (e.g. float, int, etc.) from the binary stream.
 
template<class T , class A , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Read (Array< T, A > &outT)
 Read a vector of primitives from the binary stream.
 
template<class Type , class Traits , class Allocator >
void Read (std::basic_string< Type, Traits, Allocator > &outString)
 Read a string from the binary stream (reads the number of characters and then the characters)
 
template<class T , class A , typename F >
void Read (Array< T, A > &outT, const F &inReadElement)
 Read a vector of primitives from the binary stream using a custom function to read the elements.
 
void Read (Vec3 &outVec)
 Read a Vec3 (don't read W)
 
void Read (DVec3 &outVec)
 Read a DVec3 (don't read W)
 
void Read (DMat44 &outVec)
 Read a DMat44 (don't read W component of translation)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from StreamOut
virtual ~StreamOut ()=default
 Virtual destructor.
 
virtual void WriteBytes (const void *inData, size_t inNumBytes)=0
 Write a string of bytes to the binary stream.
 
virtual bool IsFailed () const =0
 Returns true if there was an IO failure.
 
template<class T , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Write (const T &inT)
 Write a primitive (e.g. float, int, etc.) to the binary stream.
 
template<class T , class A , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Write (const Array< T, A > &inT)
 Write a vector of primitives to the binary stream.
 
template<class Type , class Traits , class Allocator >
void Write (const std::basic_string< Type, Traits, Allocator > &inString)
 Write a string to the binary stream (writes the number of characters and then the characters)
 
template<class T , class A , typename F >
void Write (const Array< T, A > &inT, const F &inWriteElement)
 Write a vector of primitives to the binary stream using a custom write function.
 
void Write (const Vec3 &inVec)
 Write a Vec3 (don't write W)
 
void Write (const DVec3 &inVec)
 Write a DVec3 (don't write W)
 
void Write (const DMat44 &inVec)
 Write a DMat44 (don't write W component of translation)
 
+

Detailed Description

+

Class that records the state of a physics system. Can be used to check if the simulation is deterministic by putting the recorder in validation mode. Can be used to restore the state to an earlier point in time. Note that only the state that is modified by the simulation is saved, configuration settings like body friction or restitution, motion quality etc. are not saved and need to be saved by the user if desired.

+

Constructor & Destructor Documentation

+ +

◆ StateRecorder() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
StateRecorder::StateRecorder ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ StateRecorder() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
StateRecorder::StateRecorder (const StateRecorderinRHS)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ IsValidating()

+ +
+
+ + + + + +
+ + + + + + + +
bool StateRecorder::IsValidating () const
+
+inline
+
+ +
+
+ +

◆ SetValidating()

+ +
+
+ + + + + +
+ + + + + + + + +
void StateRecorder::SetValidating (bool inValidating)
+
+inline
+
+

Sets the stream in validation mode. In this case the physics system ensures that before it calls ReadBytes that it will ensure that those bytes contain the current state. This makes it possible to step and save the state, restore to the previous step and step again and when the recorded state is not the same it can restore the expected state and any byte that changes due to a ReadBytes function can be caught to find out which part of the simulation is not deterministic. Note that validation only works when saving the full state of the simulation (EStateRecorderState::All, StateRecorderFilter == nullptr).

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_state_recorder.js b/class_state_recorder.js new file mode 100644 index 000000000..4dccbe223 --- /dev/null +++ b/class_state_recorder.js @@ -0,0 +1,7 @@ +var class_state_recorder = +[ + [ "StateRecorder", "class_state_recorder.html#ae41b09b37188ba73227dae4e070c53a8", null ], + [ "StateRecorder", "class_state_recorder.html#a3818f8d05147108719da00491da8569a", null ], + [ "IsValidating", "class_state_recorder.html#a347912d4c7bbcb1e1c1e3689a3fccd56", null ], + [ "SetValidating", "class_state_recorder.html#a94551fc91c9a1580a818dab49ba6e26d", null ] +]; \ No newline at end of file diff --git a/class_state_recorder.png b/class_state_recorder.png new file mode 100644 index 000000000..b3c377b03 Binary files /dev/null and b/class_state_recorder.png differ diff --git a/class_state_recorder_filter-members.html b/class_state_recorder_filter-members.html new file mode 100644 index 000000000..5cfa94967 --- /dev/null +++ b/class_state_recorder_filter-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StateRecorderFilter Member List
+
+
+ +

This is the complete list of members for StateRecorderFilter, including all inherited members.

+ + + + + +
ShouldSaveBody(const Body &inBody) constStateRecorderFilterinlinevirtual
ShouldSaveConstraint(const Constraint &inConstraint) constStateRecorderFilterinlinevirtual
ShouldSaveContact(const BodyID &inBody1, const BodyID &inBody2) constStateRecorderFilterinlinevirtual
~StateRecorderFilter()=defaultStateRecorderFiltervirtual
+
+ + + + diff --git a/class_state_recorder_filter.html b/class_state_recorder_filter.html new file mode 100644 index 000000000..061fe292e --- /dev/null +++ b/class_state_recorder_filter.html @@ -0,0 +1,266 @@ + + + + + + + +Jolt Physics: StateRecorderFilter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StateRecorderFilter Class Reference
+
+
+ +

User callbacks that allow determining which parts of the simulation should be saved by a StateRecorder. + More...

+ +

#include <StateRecorder.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

virtual ~StateRecorderFilter ()=default
 Destructor.
 
virtual bool ShouldSaveBody (const Body &inBody) const
 If the state of a specific body should be saved.
 
virtual bool ShouldSaveConstraint (const Constraint &inConstraint) const
 If the state of a specific constraint should be saved.
 
virtual bool ShouldSaveContact (const BodyID &inBody1, const BodyID &inBody2) const
 If the state of a specific contact should be saved.
 
+

Detailed Description

+

User callbacks that allow determining which parts of the simulation should be saved by a StateRecorder.

+

Constructor & Destructor Documentation

+ +

◆ ~StateRecorderFilter()

+ +
+
+ + + + + +
+ + + + + + + +
virtual StateRecorderFilter::~StateRecorderFilter ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ ShouldSaveBody()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool StateRecorderFilter::ShouldSaveBody (const BodyinBody) const
+
+inlinevirtual
+
+ +

If the state of a specific body should be saved.

+ +
+
+ +

◆ ShouldSaveConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool StateRecorderFilter::ShouldSaveConstraint (const ConstraintinConstraint) const
+
+inlinevirtual
+
+ +

If the state of a specific constraint should be saved.

+ +
+
+ +

◆ ShouldSaveContact()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool StateRecorderFilter::ShouldSaveContact (const BodyIDinBody1,
const BodyIDinBody2 
) const
+
+inlinevirtual
+
+ +

If the state of a specific contact should be saved.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_state_recorder_filter.js b/class_state_recorder_filter.js new file mode 100644 index 000000000..73b8a266f --- /dev/null +++ b/class_state_recorder_filter.js @@ -0,0 +1,7 @@ +var class_state_recorder_filter = +[ + [ "~StateRecorderFilter", "class_state_recorder_filter.html#aa9561fad643e206c9b464e0ba954299a", null ], + [ "ShouldSaveBody", "class_state_recorder_filter.html#af6eb66653cea36732871dbc269e8a59c", null ], + [ "ShouldSaveConstraint", "class_state_recorder_filter.html#a77644ce7e05d4a272178c705be69f3cc", null ], + [ "ShouldSaveContact", "class_state_recorder_filter.html#aa53d221987a810e76efd1e62484c922d", null ] +]; \ No newline at end of file diff --git a/class_state_recorder_impl-members.html b/class_state_recorder_impl-members.html new file mode 100644 index 000000000..9db34eaa6 --- /dev/null +++ b/class_state_recorder_impl-members.html @@ -0,0 +1,152 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StateRecorderImpl Member List
+
+
+ +

This is the complete list of members for StateRecorderImpl, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Clear()StateRecorderImpl
GetData() constStateRecorderImplinline
IsEOF() const overrideStateRecorderImplinlinevirtual
IsEqual(StateRecorderImpl &inReference)StateRecorderImpl
IsFailed() const overrideStateRecorderImplinlinevirtual
IsValidating() constStateRecorderinline
StreamIn::NonCopyable()=defaultNonCopyable
StreamIn::NonCopyable(const NonCopyable &)=deleteNonCopyable
StreamOut::NonCopyable()=defaultNonCopyable
StreamOut::NonCopyable(const NonCopyable &)=deleteNonCopyable
StreamIn::operator=(const NonCopyable &)=deleteNonCopyable
StreamOut::operator=(const NonCopyable &)=deleteNonCopyable
Read(T &outT)StreamIninline
Read(Array< T, A > &outT)StreamIninline
Read(std::basic_string< Type, Traits, Allocator > &outString)StreamIninline
Read(Array< T, A > &outT, const F &inReadElement)StreamIninline
Read(Vec3 &outVec)StreamIninline
Read(DVec3 &outVec)StreamIninline
Read(DMat44 &outVec)StreamIninline
ReadBytes(void *outData, size_t inNumBytes) overrideStateRecorderImplvirtual
Rewind()StateRecorderImpl
SetValidating(bool inValidating)StateRecorderinline
StateRecorder()=defaultStateRecorder
StateRecorder(const StateRecorder &inRHS)StateRecorderinline
StateRecorderImpl()=defaultStateRecorderImpl
StateRecorderImpl(StateRecorderImpl &&inRHS)StateRecorderImplinline
Write(const T &inT)StreamOutinline
Write(const Array< T, A > &inT)StreamOutinline
Write(const std::basic_string< Type, Traits, Allocator > &inString)StreamOutinline
Write(const Array< T, A > &inT, const F &inWriteElement)StreamOutinline
Write(const Vec3 &inVec)StreamOutinline
Write(const DVec3 &inVec)StreamOutinline
Write(const DMat44 &inVec)StreamOutinline
WriteBytes(const void *inData, size_t inNumBytes) overrideStateRecorderImplvirtual
~StreamIn()=defaultStreamInvirtual
~StreamOut()=defaultStreamOutvirtual
+
+ + + + diff --git a/class_state_recorder_impl.html b/class_state_recorder_impl.html new file mode 100644 index 000000000..78f5a9526 --- /dev/null +++ b/class_state_recorder_impl.html @@ -0,0 +1,527 @@ + + + + + + + +Jolt Physics: StateRecorderImpl Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StateRecorderImpl Class Referencefinal
+
+
+ +

Implementation of the StateRecorder class that uses a stringstream as underlying store and that implements checking if the state doesn't change upon reading. + More...

+ +

#include <StateRecorderImpl.h>

+
+Inheritance diagram for StateRecorderImpl:
+
+
+ + +StateRecorder +StreamIn +StreamOut +NonCopyable +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StateRecorderImpl ()=default
 Constructor.
 
 StateRecorderImpl (StateRecorderImpl &&inRHS)
 
virtual void WriteBytes (const void *inData, size_t inNumBytes) override
 Write a string of bytes to the binary stream.
 
void Rewind ()
 Rewind the stream for reading.
 
void Clear ()
 Clear the stream for reuse.
 
virtual void ReadBytes (void *outData, size_t inNumBytes) override
 Read a string of bytes from the binary stream.
 
virtual bool IsEOF () const override
 Returns true when an attempt has been made to read past the end of the file.
 
virtual bool IsFailed () const override
 Returns true if there was an IO failure.
 
bool IsEqual (StateRecorderImpl &inReference)
 Compare this state with a reference state and ensure they are the same.
 
string GetData () const
 Convert the binary data to a string.
 
- Public Member Functions inherited from StateRecorder
 StateRecorder ()=default
 Constructor.
 
 StateRecorder (const StateRecorder &inRHS)
 
void SetValidating (bool inValidating)
 
bool IsValidating () const
 
- Public Member Functions inherited from StreamIn
virtual ~StreamIn ()=default
 Virtual destructor.
 
template<class T , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Read (T &outT)
 Read a primitive (e.g. float, int, etc.) from the binary stream.
 
template<class T , class A , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Read (Array< T, A > &outT)
 Read a vector of primitives from the binary stream.
 
template<class Type , class Traits , class Allocator >
void Read (std::basic_string< Type, Traits, Allocator > &outString)
 Read a string from the binary stream (reads the number of characters and then the characters)
 
template<class T , class A , typename F >
void Read (Array< T, A > &outT, const F &inReadElement)
 Read a vector of primitives from the binary stream using a custom function to read the elements.
 
void Read (Vec3 &outVec)
 Read a Vec3 (don't read W)
 
void Read (DVec3 &outVec)
 Read a DVec3 (don't read W)
 
void Read (DMat44 &outVec)
 Read a DMat44 (don't read W component of translation)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from StreamOut
virtual ~StreamOut ()=default
 Virtual destructor.
 
template<class T , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Write (const T &inT)
 Write a primitive (e.g. float, int, etc.) to the binary stream.
 
template<class T , class A , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Write (const Array< T, A > &inT)
 Write a vector of primitives to the binary stream.
 
template<class Type , class Traits , class Allocator >
void Write (const std::basic_string< Type, Traits, Allocator > &inString)
 Write a string to the binary stream (writes the number of characters and then the characters)
 
template<class T , class A , typename F >
void Write (const Array< T, A > &inT, const F &inWriteElement)
 Write a vector of primitives to the binary stream using a custom write function.
 
void Write (const Vec3 &inVec)
 Write a Vec3 (don't write W)
 
void Write (const DVec3 &inVec)
 Write a DVec3 (don't write W)
 
void Write (const DMat44 &inVec)
 Write a DMat44 (don't write W component of translation)
 
+

Detailed Description

+

Implementation of the StateRecorder class that uses a stringstream as underlying store and that implements checking if the state doesn't change upon reading.

+

Constructor & Destructor Documentation

+ +

◆ StateRecorderImpl() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
StateRecorderImpl::StateRecorderImpl ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ StateRecorderImpl() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
StateRecorderImpl::StateRecorderImpl (StateRecorderImpl && inRHS)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ Clear()

+ +
+
+ + + + + + + +
void StateRecorderImpl::Clear ()
+
+ +

Clear the stream for reuse.

+ +
+
+ +

◆ GetData()

+ +
+
+ + + + + +
+ + + + + + + +
string StateRecorderImpl::GetData () const
+
+inline
+
+ +

Convert the binary data to a string.

+ +
+
+ +

◆ IsEOF()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool StateRecorderImpl::IsEOF () const
+
+inlineoverridevirtual
+
+ +

Returns true when an attempt has been made to read past the end of the file.

+ +

Implements StreamIn.

+ +
+
+ +

◆ IsEqual()

+ +
+
+ + + + + + + + +
bool StateRecorderImpl::IsEqual (StateRecorderImplinReference)
+
+ +

Compare this state with a reference state and ensure they are the same.

+ +
+
+ +

◆ IsFailed()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool StateRecorderImpl::IsFailed () const
+
+inlineoverridevirtual
+
+ +

Returns true if there was an IO failure.

+ +

Implements StreamIn.

+ +
+
+ +

◆ ReadBytes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void StateRecorderImpl::ReadBytes (void * outData,
size_t inNumBytes 
)
+
+overridevirtual
+
+ +

Read a string of bytes from the binary stream.

+ +

Implements StreamIn.

+ +
+
+ +

◆ Rewind()

+ +
+
+ + + + + + + +
void StateRecorderImpl::Rewind ()
+
+ +

Rewind the stream for reading.

+ +
+
+ +

◆ WriteBytes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void StateRecorderImpl::WriteBytes (const void * inData,
size_t inNumBytes 
)
+
+overridevirtual
+
+ +

Write a string of bytes to the binary stream.

+ +

Implements StreamOut.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_state_recorder_impl.js b/class_state_recorder_impl.js new file mode 100644 index 000000000..c350e4548 --- /dev/null +++ b/class_state_recorder_impl.js @@ -0,0 +1,13 @@ +var class_state_recorder_impl = +[ + [ "StateRecorderImpl", "class_state_recorder_impl.html#a032ad810f2ab41da508ff62b35a93286", null ], + [ "StateRecorderImpl", "class_state_recorder_impl.html#ac2062cdb1fffa9de6f0a4ca56c610573", null ], + [ "Clear", "class_state_recorder_impl.html#a77d8f8732e3193c3d785845147870806", null ], + [ "GetData", "class_state_recorder_impl.html#a369ad05841edbb115007fe8632ce963f", null ], + [ "IsEOF", "class_state_recorder_impl.html#a3b68bb167e95e3bfe5777fc1c6f5b398", null ], + [ "IsEqual", "class_state_recorder_impl.html#aeb311a860d29ccff107125d907359466", null ], + [ "IsFailed", "class_state_recorder_impl.html#a30053c8a2baa5e3cb4e5e26c37afda05", null ], + [ "ReadBytes", "class_state_recorder_impl.html#a0fe47b7eaf3a83449182ee8460fd99a1", null ], + [ "Rewind", "class_state_recorder_impl.html#a57c58fddc1bcaad0e06ca22b792c908d", null ], + [ "WriteBytes", "class_state_recorder_impl.html#acb747a3036d744b372bc5c5ec5fda143", null ] +]; \ No newline at end of file diff --git a/class_state_recorder_impl.png b/class_state_recorder_impl.png new file mode 100644 index 000000000..0485e1679 Binary files /dev/null and b/class_state_recorder_impl.png differ diff --git a/class_static_array-members.html b/class_static_array-members.html new file mode 100644 index 000000000..498df8aa4 --- /dev/null +++ b/class_static_array-members.html @@ -0,0 +1,155 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StaticArray< T, N > Member List
+
+
+ +

This is the complete list of members for StaticArray< T, N >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
at(size_type inIdx)StaticArray< T, N >inline
at(size_type inIdx) constStaticArray< T, N >inline
back() constStaticArray< T, N >inline
back()StaticArray< T, N >inline
begin() constStaticArray< T, N >inline
begin()StaticArray< T, N >inline
CapacityStaticArray< T, N >static
capacity() constStaticArray< T, N >inline
clear()StaticArray< T, N >inline
const_iterator typedefStaticArray< T, N >
data() constStaticArray< T, N >inline
data()StaticArray< T, N >inline
emplace_back(A &&... inElement)StaticArray< T, N >inline
empty() constStaticArray< T, N >inline
end() constStaticArray< T, N >inline
end()StaticArray< T, N >inline
erase(const_iterator inIter)StaticArray< T, N >inline
erase(const_iterator inBegin, const_iterator inEnd)StaticArray< T, N >inline
front() constStaticArray< T, N >inline
front()StaticArray< T, N >inline
iterator typedefStaticArray< T, N >
mElementsStaticArray< T, N >protected
mSizeStaticArray< T, N >protected
operator!=(const StaticArray< T, N > &inRHS) constStaticArray< T, N >inline
operator=(const StaticArray< T, N > &inRHS)StaticArray< T, N >inline
operator=(const StaticArray< T, M > &inRHS)StaticArray< T, N >inline
operator==(const StaticArray< T, N > &inRHS) constStaticArray< T, N >inline
operator[](size_type inIdx)StaticArray< T, N >inline
operator[](size_type inIdx) constStaticArray< T, N >inline
pop_back()StaticArray< T, N >inline
push_back(const T &inElement)StaticArray< T, N >inline
resize(size_type inNewSize)StaticArray< T, N >inline
size() constStaticArray< T, N >inline
size_type typedefStaticArray< T, N >
StaticArray()=defaultStaticArray< T, N >
StaticArray(std::initializer_list< T > inList)StaticArray< T, N >inlineexplicit
StaticArray(const StaticArray< T, N > &inRHS)StaticArray< T, N >inline
value_type typedefStaticArray< T, N >
~StaticArray()StaticArray< T, N >inline
+
+ + + + diff --git a/class_static_array.html b/class_static_array.html new file mode 100644 index 000000000..eb55f8d32 --- /dev/null +++ b/class_static_array.html @@ -0,0 +1,1339 @@ + + + + + + + +Jolt Physics: StaticArray< T, N > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StaticArray< T, N > Class Template Reference
+
+
+ +

Simple variable length array backed by a fixed size buffer. + More...

+ +

#include <StaticArray.h>

+
+Inheritance diagram for StaticArray< T, N >:
+
+
+ + +EPAConvexHullBuilder::Points +EPAConvexHullBuilder::TriangleQueue + +
+ + + + +

+Classes

struct  Storage
 
+ + + + + + + + + +

+Public Types

using value_type = T
 
using size_type = uint
 
using const_iterator = const T *
 
using iterator = T *
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StaticArray ()=default
 Default constructor.
 
 StaticArray (std::initializer_list< T > inList)
 Constructor from initializer list.
 
 StaticArray (const StaticArray< T, N > &inRHS)
 Copy constructor.
 
 ~StaticArray ()
 Destruct all elements.
 
void clear ()
 Destruct all elements and set length to zero.
 
void push_back (const T &inElement)
 Add element to the back of the array.
 
template<class... A>
void emplace_back (A &&... inElement)
 Construct element at the back of the array.
 
void pop_back ()
 Remove element from the back of the array.
 
bool empty () const
 Returns true if there are no elements in the array.
 
size_type size () const
 Returns amount of elements in the array.
 
size_type capacity () const
 Returns maximum amount of elements the array can hold.
 
void resize (size_type inNewSize)
 Resize array to new length.
 
const_iterator begin () const
 Iterators.
 
const_iterator end () const
 
iterator begin ()
 
iterator end ()
 
const T * data () const
 
T * data ()
 
T & operator[] (size_type inIdx)
 Access element.
 
const T & operator[] (size_type inIdx) const
 
T & at (size_type inIdx)
 Access element.
 
const T & at (size_type inIdx) const
 
const T & front () const
 First element in the array.
 
T & front ()
 
const T & back () const
 Last element in the array.
 
T & back ()
 
void erase (const_iterator inIter)
 Remove one element from the array.
 
void erase (const_iterator inBegin, const_iterator inEnd)
 Remove multiple element from the array.
 
StaticArray< T, N > & operator= (const StaticArray< T, N > &inRHS)
 Assignment operator.
 
template<uint M>
StaticArray< T, N > & operator= (const StaticArray< T, M > &inRHS)
 Assignment operator with static array of different max length.
 
bool operator== (const StaticArray< T, N > &inRHS) const
 Comparing arrays.
 
bool operator!= (const StaticArray< T, N > &inRHS) const
 
+ + + +

+Static Public Attributes

static constexpr uint Capacity = N
 
+ + + + + +

+Protected Attributes

size_type mSize = 0
 
Storage mElements [N]
 
+

Detailed Description

+
template<class T, uint N>
+class StaticArray< T, N >

Simple variable length array backed by a fixed size buffer.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<class T , uint N>
+ + + + +
using StaticArray< T, N >::const_iterator = const T *
+
+ +
+
+ +

◆ iterator

+ +
+
+
+template<class T , uint N>
+ + + + +
using StaticArray< T, N >::iterator = T *
+
+ +
+
+ +

◆ size_type

+ +
+
+
+template<class T , uint N>
+ + + + +
using StaticArray< T, N >::size_type = uint
+
+ +
+
+ +

◆ value_type

+ +
+
+
+template<class T , uint N>
+ + + + +
using StaticArray< T, N >::value_type = T
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ StaticArray() [1/3]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
StaticArray< T, N >::StaticArray ()
+
+default
+
+ +

Default constructor.

+ +
+
+ +

◆ StaticArray() [2/3]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + +
StaticArray< T, N >::StaticArray (std::initializer_list< T > inList)
+
+inlineexplicit
+
+ +

Constructor from initializer list.

+ +
+
+ +

◆ StaticArray() [3/3]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + +
StaticArray< T, N >::StaticArray (const StaticArray< T, N > & inRHS)
+
+inline
+
+ +

Copy constructor.

+ +
+
+ +

◆ ~StaticArray()

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
StaticArray< T, N >::~StaticArray ()
+
+inline
+
+ +

Destruct all elements.

+ +
+
+

Member Function Documentation

+ +

◆ at() [1/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + +
T & StaticArray< T, N >::at (size_type inIdx)
+
+inline
+
+ +

Access element.

+ +
+
+ +

◆ at() [2/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + +
const T & StaticArray< T, N >::at (size_type inIdx) const
+
+inline
+
+ +
+
+ +

◆ back() [1/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
T & StaticArray< T, N >::back ()
+
+inline
+
+ +
+
+ +

◆ back() [2/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
const T & StaticArray< T, N >::back () const
+
+inline
+
+ +

Last element in the array.

+ +
+
+ +

◆ begin() [1/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
iterator StaticArray< T, N >::begin ()
+
+inline
+
+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
const_iterator StaticArray< T, N >::begin () const
+
+inline
+
+ +

Iterators.

+ +
+
+ +

◆ capacity()

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
size_type StaticArray< T, N >::capacity () const
+
+inline
+
+ +

Returns maximum amount of elements the array can hold.

+ +
+
+ +

◆ clear()

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
void StaticArray< T, N >::clear ()
+
+inline
+
+ +

Destruct all elements and set length to zero.

+ +
+
+ +

◆ data() [1/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
T * StaticArray< T, N >::data ()
+
+inline
+
+ +
+
+ +

◆ data() [2/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
const T * StaticArray< T, N >::data () const
+
+inline
+
+ +
+
+ +

◆ emplace_back()

+ +
+
+
+template<class T , uint N>
+
+template<class... A>
+ + + + + +
+ + + + + + + + +
void StaticArray< T, N >::emplace_back (A &&... inElement)
+
+inline
+
+ +

Construct element at the back of the array.

+ +
+
+ +

◆ empty()

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
bool StaticArray< T, N >::empty () const
+
+inline
+
+ +

Returns true if there are no elements in the array.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
iterator StaticArray< T, N >::end ()
+
+inline
+
+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
const_iterator StaticArray< T, N >::end () const
+
+inline
+
+ +
+
+ +

◆ erase() [1/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void StaticArray< T, N >::erase (const_iterator inBegin,
const_iterator inEnd 
)
+
+inline
+
+ +

Remove multiple element from the array.

+ +
+
+ +

◆ erase() [2/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + +
void StaticArray< T, N >::erase (const_iterator inIter)
+
+inline
+
+ +

Remove one element from the array.

+ +
+
+ +

◆ front() [1/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
T & StaticArray< T, N >::front ()
+
+inline
+
+ +
+
+ +

◆ front() [2/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
const T & StaticArray< T, N >::front () const
+
+inline
+
+ +

First element in the array.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + +
bool StaticArray< T, N >::operator!= (const StaticArray< T, N > & inRHS) const
+
+inline
+
+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class T , uint N>
+
+template<uint M>
+ + + + + +
+ + + + + + + + +
StaticArray< T, N > & StaticArray< T, N >::operator= (const StaticArray< T, M > & inRHS)
+
+inline
+
+ +

Assignment operator with static array of different max length.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + +
StaticArray< T, N > & StaticArray< T, N >::operator= (const StaticArray< T, N > & inRHS)
+
+inline
+
+ +

Assignment operator.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + +
bool StaticArray< T, N >::operator== (const StaticArray< T, N > & inRHS) const
+
+inline
+
+ +

Comparing arrays.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + +
T & StaticArray< T, N >::operator[] (size_type inIdx)
+
+inline
+
+ +

Access element.

+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + +
const T & StaticArray< T, N >::operator[] (size_type inIdx) const
+
+inline
+
+ +
+
+ +

◆ pop_back()

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
void StaticArray< T, N >::pop_back ()
+
+inline
+
+ +

Remove element from the back of the array.

+ +
+
+ +

◆ push_back()

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + +
void StaticArray< T, N >::push_back (const T & inElement)
+
+inline
+
+ +

Add element to the back of the array.

+ +
+
+ +

◆ resize()

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + + +
void StaticArray< T, N >::resize (size_type inNewSize)
+
+inline
+
+ +

Resize array to new length.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + + + + +
size_type StaticArray< T, N >::size () const
+
+inline
+
+ +

Returns amount of elements in the array.

+ +
+
+

Member Data Documentation

+ +

◆ Capacity

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + +
constexpr uint StaticArray< T, N >::Capacity = N
+
+staticconstexpr
+
+ +
+
+ +

◆ mElements

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + +
Storage StaticArray< T, N >::mElements[N]
+
+protected
+
+ +
+
+ +

◆ mSize

+ +
+
+
+template<class T , uint N>
+ + + + + +
+ + + + +
size_type StaticArray< T, N >::mSize = 0
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_static_array.js b/class_static_array.js new file mode 100644 index 000000000..44a80ff92 --- /dev/null +++ b/class_static_array.js @@ -0,0 +1,42 @@ +var class_static_array = +[ + [ "Storage", "struct_static_array_1_1_storage.html", "struct_static_array_1_1_storage" ], + [ "const_iterator", "class_static_array.html#a4831bf13fa486b656ac85e932a829dc3", null ], + [ "iterator", "class_static_array.html#a495ba6aabb5a08ba1a06add667182f12", null ], + [ "size_type", "class_static_array.html#a69859b5a0e6cd32048fc1f3188982f3b", null ], + [ "value_type", "class_static_array.html#a367362d6d72603626006bf09590b5e73", null ], + [ "StaticArray", "class_static_array.html#a0b1020145a67d2f11ef8b6e21e56efda", null ], + [ "StaticArray", "class_static_array.html#a4289f014eadc8aa60ff6785dabe32f11", null ], + [ "StaticArray", "class_static_array.html#a9be0006e3a1a001893645dbd5b34b355", null ], + [ "~StaticArray", "class_static_array.html#afa25bd44899d047990eb77e996031756", null ], + [ "at", "class_static_array.html#a83ed073e3ed2248da10cef0277beeb23", null ], + [ "at", "class_static_array.html#af9191dafffff11ec4008b9378fd4dd05", null ], + [ "back", "class_static_array.html#ab423e08f9f4dedd513bb61b9fec4e326", null ], + [ "back", "class_static_array.html#a6b5e0b0984bd82a6f09660206a1b4914", null ], + [ "begin", "class_static_array.html#a39b29025d859bb426416085c054dfb89", null ], + [ "begin", "class_static_array.html#a671ecdfc35c476a8efd5b11536a1712f", null ], + [ "capacity", "class_static_array.html#a1313d0f5827afac5751b7a0a6fc23f83", null ], + [ "clear", "class_static_array.html#a2cac2948666824fe7fee27bcf845f17b", null ], + [ "data", "class_static_array.html#a28fd92f5eed107bfaef2e94f23ce4f12", null ], + [ "data", "class_static_array.html#a7698b4e3e7cf608eeba5a48f25c284d9", null ], + [ "emplace_back", "class_static_array.html#a80c134d64d82df7e26efc48dc629389f", null ], + [ "empty", "class_static_array.html#a90462c290631eb3139ea41b91a14f99a", null ], + [ "end", "class_static_array.html#a26023a8948ef582b35b2d808f95915b4", null ], + [ "end", "class_static_array.html#acc8368b80a4756c0ea7f5354dad6b2df", null ], + [ "erase", "class_static_array.html#a8160d86021d1033d74e9e434458517ef", null ], + [ "erase", "class_static_array.html#a61742c51d0d5ab0a7a4593e1f907bc2b", null ], + [ "front", "class_static_array.html#a519467de065745ac462b4bb3878ef8a3", null ], + [ "front", "class_static_array.html#aa0626580d53d352633f0a1f5af5ecb12", null ], + [ "operator!=", "class_static_array.html#ac8d17328522928bec933dc594245c895", null ], + [ "operator=", "class_static_array.html#a07d7915d51d4ad8a3191756fdb6bfc4d", null ], + [ "operator=", "class_static_array.html#a9c1a2dbce480923942dbce2f3492eb3c", null ], + [ "operator==", "class_static_array.html#a81a62786704d57f04e8a63c188259e34", null ], + [ "operator[]", "class_static_array.html#a94028ccdb4d9f55f0ada779b03be8e55", null ], + [ "operator[]", "class_static_array.html#aba42dce13b07203fafa2135d8ef06581", null ], + [ "pop_back", "class_static_array.html#aed109d7f64345b6e7e956bd80de27387", null ], + [ "push_back", "class_static_array.html#a1117d7fa5ecfe22248396f1632d842cb", null ], + [ "resize", "class_static_array.html#af90fb922a70be2d41cc70b243cbc4c64", null ], + [ "size", "class_static_array.html#aea449055e7dab910eca1a4af05d53b6f", null ], + [ "mElements", "class_static_array.html#a86389c0d1eb544f4c0e202693eff70ba", null ], + [ "mSize", "class_static_array.html#ae10f00d23245f312c77e053defaa925e", null ] +]; \ No newline at end of file diff --git a/class_static_array.png b/class_static_array.png new file mode 100644 index 000000000..d5e5bdf94 Binary files /dev/null and b/class_static_array.png differ diff --git a/class_static_compound_shape-members.html b/class_static_compound_shape-members.html new file mode 100644 index 000000000..1cc1d9bf9 --- /dev/null +++ b/class_static_compound_shape-members.html @@ -0,0 +1,213 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StaticCompoundShape Member List
+
+
+ +

This is the complete list of members for StaticCompoundShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CalculateInnerRadius()CompoundShapeinlineprotected
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideStaticCompoundShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideStaticCompoundShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const overrideStaticCompoundShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideStaticCompoundShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideCompoundShapevirtual
CompoundShape(EShapeSubType inSubType)CompoundShapeinlineexplicit
CompoundShape(EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)CompoundShapeinline
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideCompoundShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideCompoundShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideCompoundShapevirtual
GetCenterOfMass() const overrideCompoundShapeinlinevirtual
GetCompoundUserData(uint inIdx) constCompoundShapeinline
GetInnerRadius() const overrideCompoundShapeinlinevirtual
GetIntersectingSubShapes(const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const overrideStaticCompoundShapevirtual
GetIntersectingSubShapes(const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const overrideStaticCompoundShapevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const overrideCompoundShapevirtual
GetLocalBounds() const overrideCompoundShapeinlinevirtual
GetMassProperties() const overrideCompoundShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideCompoundShapevirtual
GetNumSubShapes() constCompoundShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideStaticCompoundShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) const overrideCompoundShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideCompoundShapevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShape(uint inIdx) constCompoundShapeinline
GetSubShapeIDBits() constCompoundShapeinlineprotected
GetSubShapeIDBitsRecursive() const overrideCompoundShapevirtual
GetSubShapeIDFromIndex(int inIdx, const SubShapeIDCreator &inParentSubShapeID) constCompoundShapeinline
GetSubShapeIndexFromID(SubShapeID inSubShapeID, SubShapeID &outRemainder) constCompoundShapeinline
GetSubShapes() constCompoundShapeinline
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const overrideCompoundShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) const overrideCompoundShapevirtual
GetSubType() constShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideCompoundShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideCompoundShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideCompoundShapeinlinevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideCompoundShapeinlinevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideCompoundShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideCompoundShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constCompoundShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constCompoundShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsSubShapeIDValid(SubShapeID inSubShapeID) constCompoundShapeinline
IsValidScale(Vec3Arg inScale) const overrideCompoundShapevirtual
MakeScaleValid(Vec3Arg inScale) const overrideCompoundShapevirtual
MaterialToIDMap typedefShape
mCenterOfMassCompoundShapeprotected
mInnerRadiusCompoundShapeprotected
mLocalBoundsCompoundShapeprotected
mRefCountRefTarget< Shape >mutableprotected
mSubShapesCompoundShapeprotected
MustBeStatic() const overrideCompoundShapevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideStaticCompoundShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)Shapeinlinevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes) overrideCompoundShapevirtual
SaveBinaryState(StreamOut &inStream) const overrideStaticCompoundShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) const overrideCompoundShapevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetCompoundUserData(uint inIdx, uint32 inUserData)CompoundShapeinline
SetEmbedded() constRefTarget< Shape >inline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()StaticCompoundShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
StaticCompoundShape()StaticCompoundShapeinline
StaticCompoundShape(const StaticCompoundShapeSettings &inSettings, TempAllocator &inTempAllocator, ShapeResult &outResult)StaticCompoundShape
SubShapes typedefCompoundShape
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const overrideCompoundShapevirtual
VisitedShapes typedefShape
WalkTree(Visitor &ioVisitor) constStaticCompoundShapeinline
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_static_compound_shape.html b/class_static_compound_shape.html new file mode 100644 index 000000000..e003766f0 --- /dev/null +++ b/class_static_compound_shape.html @@ -0,0 +1,951 @@ + + + + + + + +Jolt Physics: StaticCompoundShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StaticCompoundShape Class Referencefinal
+
+
+ +

#include <StaticCompoundShape.h>

+
+Inheritance diagram for StaticCompoundShape:
+
+
+ + +CompoundShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE StaticCompoundShape ()
 Constructor.
 
 StaticCompoundShape (const StaticCompoundShapeSettings &inSettings, TempAllocator &inTempAllocator, ShapeResult &outResult)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const override
 
virtual int GetIntersectingSubShapes (const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override
 
virtual int GetIntersectingSubShapes (const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
template<class Visitor >
void WalkTree (Visitor &ioVisitor) const
 
- Public Member Functions inherited from CompoundShape
JPH_OVERRIDE_NEW_DELETE CompoundShape (EShapeSubType inSubType)
 Constructor.
 
 CompoundShape (EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual Vec3 GetCenterOfMass () const override
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
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.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const override
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const override
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const override
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
const SubShapesGetSubShapes () const
 Access to the sub shapes of this compound.
 
uint GetNumSubShapes () const
 Get the total number of sub shapes.
 
const SubShapeGetSubShape (uint inIdx) const
 Access to a particular sub shape.
 
uint32 GetCompoundUserData (uint inIdx) const
 Get the user data associated with a shape in this compound.
 
void SetCompoundUserData (uint inIdx, uint32 inUserData)
 Set the user data associated with a shape in this compound.
 
bool IsSubShapeIDValid (SubShapeID inSubShapeID) const
 
uint32 GetSubShapeIndexFromID (SubShapeID inSubShapeID, SubShapeID &outRemainder) const
 
SubShapeIDCreator GetSubShapeIDFromIndex (int inIdx, const SubShapeIDCreator &inParentSubShapeID) const
 Convert a sub shape index to a sub shape ID.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const override
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes) override
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const override
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual float GetVolume () const override
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials)
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from CompoundShape
static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + + + + + + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
- Protected Member Functions inherited from CompoundShape
uint GetSubShapeIDBits () const
 Determine amount of bits needed to encode sub shape id.
 
void CalculateInnerRadius ()
 Determine the inner radius of this shape.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from CompoundShape
using SubShapes = Array< SubShape >
 
- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from CompoundShape
Vec3 mCenterOfMass { Vec3::sZero() }
 Center of mass of the compound.
 
AABox mLocalBounds
 
SubShapes mSubShapes
 
float mInnerRadius = FLT_MAX
 Smallest radius of GetInnerRadius() of child shapes.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A compound shape, sub shapes can be rotated and translated. Sub shapes cannot be modified once the shape is constructed. Shifts all child objects so that they're centered around the center of mass.

+

Constructor & Destructor Documentation

+ +

◆ StaticCompoundShape() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE StaticCompoundShape::StaticCompoundShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ StaticCompoundShape() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
StaticCompoundShape::StaticCompoundShape (const StaticCompoundShapeSettingsinSettings,
TempAllocatorinTempAllocator,
ShapeResultoutResult 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void StaticCompoundShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool StaticCompoundShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Implements Shape.

+ +
+
+ +

◆ CollectTransformedShapes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void StaticCompoundShape::CollectTransformedShapes (const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale,
const SubShapeIDCreatorinSubShapeIDCreator,
TransformedShapeCollectorioCollector,
const ShapeFilterinShapeFilter 
) const
+
+overridevirtual
+
+

Collect the leaf transformed shapes of all leaf shapes of this shape. inBox is the world space axis aligned box which leaf shapes should collide with. inPositionCOM/inRotation/inScale describes the transform of this shape. inSubShapeIDCeator represents the current sub shape ID of this shape.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void StaticCompoundShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Implements Shape.

+ +
+
+ +

◆ GetIntersectingSubShapes() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int StaticCompoundShape::GetIntersectingSubShapes (const AABoxinBox,
uintoutSubShapeIndices,
int inMaxSubShapeIndices 
) const
+
+overridevirtual
+
+

Get which sub shape's bounding boxes overlap with an axis aligned box

Parameters
+ + + + +
inBoxThe axis aligned box to test against (relative to the center of mass of this shape)
outSubShapeIndicesBuffer where to place the indices of the sub shapes that intersect
inMaxSubShapeIndicesHow many indices will fit in the buffer (normally you'd provide a buffer of GetNumSubShapes() indices)
+
+
+
Returns
How many indices were placed in outSubShapeIndices
+ +

Implements CompoundShape.

+ +
+
+ +

◆ GetIntersectingSubShapes() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int StaticCompoundShape::GetIntersectingSubShapes (const OrientedBoxinBox,
uintoutSubShapeIndices,
int inMaxSubShapeIndices 
) const
+
+overridevirtual
+
+

Get which sub shape's bounding boxes overlap with an axis aligned box

Parameters
+ + + + +
inBoxThe axis aligned box to test against (relative to the center of mass of this shape)
outSubShapeIndicesBuffer where to place the indices of the sub shapes that intersect
inMaxSubShapeIndicesHow many indices will fit in the buffer (normally you'd provide a buffer of GetNumSubShapes() indices)
+
+
+
Returns
How many indices were placed in outSubShapeIndices
+ +

Implements CompoundShape.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats StaticCompoundShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void StaticCompoundShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from CompoundShape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void StaticCompoundShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from CompoundShape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void StaticCompoundShape::sRegister ()
+
+static
+
+ +
+
+ +

◆ WalkTree()

+ +
+
+
+template<class Visitor >
+ + + + + +
+ + + + + + + + +
void StaticCompoundShape::WalkTree (Visitor & ioVisitor) const
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_static_compound_shape.js b/class_static_compound_shape.js new file mode 100644 index 000000000..9ed6ad9a7 --- /dev/null +++ b/class_static_compound_shape.js @@ -0,0 +1,15 @@ +var class_static_compound_shape = +[ + [ "StaticCompoundShape", "class_static_compound_shape.html#a38f22b35f96ae12c1b41d6503d47faf7", null ], + [ "StaticCompoundShape", "class_static_compound_shape.html#a15254cd1ef605397c34cd1455c3ce317", null ], + [ "CastRay", "class_static_compound_shape.html#a76efaa0b18ed8367a5865ce826a1b445", null ], + [ "CastRay", "class_static_compound_shape.html#a7704a962778d0a00b4f808fa448c49c5", null ], + [ "CollectTransformedShapes", "class_static_compound_shape.html#a48ff6b3a60b5da73dfac93fb8d1318bc", null ], + [ "CollidePoint", "class_static_compound_shape.html#ab2e2ccd7bd10816f6f919ca6aa3a405e", null ], + [ "GetIntersectingSubShapes", "class_static_compound_shape.html#a5e78840b9d9ba2b080352b8366f3472c", null ], + [ "GetIntersectingSubShapes", "class_static_compound_shape.html#a4cd2a844ebd860f507e798199dd77583", null ], + [ "GetStats", "class_static_compound_shape.html#ad973e13f69ffa355e172f8a37d5fc347", null ], + [ "RestoreBinaryState", "class_static_compound_shape.html#a834536007f00d3251acbd122afffb16e", null ], + [ "SaveBinaryState", "class_static_compound_shape.html#ac94ac9145e77b8bbcdb36849a26db213", null ], + [ "WalkTree", "class_static_compound_shape.html#a38ab691279f331aff75ebbafc6ed31b8", null ] +]; \ No newline at end of file diff --git a/class_static_compound_shape.png b/class_static_compound_shape.png new file mode 100644 index 000000000..3ce5f8b36 Binary files /dev/null and b/class_static_compound_shape.png differ diff --git a/class_static_compound_shape_settings-members.html b/class_static_compound_shape_settings-members.html new file mode 100644 index 000000000..17ba18eb0 --- /dev/null +++ b/class_static_compound_shape_settings-members.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StaticCompoundShapeSettings Member List
+
+
+ +

This is the complete list of members for StaticCompoundShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
AddShape(Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape, uint32 inUserData=0)CompoundShapeSettings
AddShape(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape, uint32 inUserData=0)CompoundShapeSettings
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
CompoundShapeSettings()=defaultCompoundShapeSettings
Create() const overrideStaticCompoundShapeSettingsvirtual
Create(TempAllocator &inTempAllocator) constStaticCompoundShapeSettings
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mRefCountRefTarget< ShapeSettings >mutableprotected
mSubShapesCompoundShapeSettings
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
SubShapes typedefCompoundShapeSettings
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_static_compound_shape_settings.html b/class_static_compound_shape_settings.html new file mode 100644 index 000000000..83aefe565 --- /dev/null +++ b/class_static_compound_shape_settings.html @@ -0,0 +1,278 @@ + + + + + + + +Jolt Physics: StaticCompoundShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StaticCompoundShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a StaticCompoundShape. Note that if you only want a compound of 1 shape, use a RotatedTranslatedShape instead. + More...

+ +

#include <StaticCompoundShape.h>

+
+Inheritance diagram for StaticCompoundShapeSettings:
+
+
+ + +CompoundShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ShapeResult Create () const override
 Create a shape according to the settings specified by this object.
 
ShapeResult Create (TempAllocator &inTempAllocator) const
 Specialization of Create() function that allows specifying a temp allocator to avoid temporary memory allocations on the heap.
 
- Public Member Functions inherited from CompoundShapeSettings
 CompoundShapeSettings ()=default
 Constructor. Use AddShape to add the parts.
 
void AddShape (Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape, uint32 inUserData=0)
 Add a shape to the compound.
 
void AddShape (Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape, uint32 inUserData=0)
 Add a shape to the compound. Variant that uses a concrete shape, which means this object cannot be serialized.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from CompoundShapeSettings
using SubShapes = Array< SubShapeSettings >
 
- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Public Attributes inherited from CompoundShapeSettings
SubShapes mSubShapes
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a StaticCompoundShape. Note that if you only want a compound of 1 shape, use a RotatedTranslatedShape instead.

+

Member Function Documentation

+ +

◆ Create() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
ShapeSettings::ShapeResult StaticCompoundShapeSettings::Create () const
+
+overridevirtual
+
+ +

Create a shape according to the settings specified by this object.

+ +

Implements ShapeSettings.

+ +
+
+ +

◆ Create() [2/2]

+ +
+
+ + + + + + + + +
ShapeSettings::ShapeResult StaticCompoundShapeSettings::Create (TempAllocatorinTempAllocator) const
+
+ +

Specialization of Create() function that allows specifying a temp allocator to avoid temporary memory allocations on the heap.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_static_compound_shape_settings.js b/class_static_compound_shape_settings.js new file mode 100644 index 000000000..ed4359c98 --- /dev/null +++ b/class_static_compound_shape_settings.js @@ -0,0 +1,5 @@ +var class_static_compound_shape_settings = +[ + [ "Create", "class_static_compound_shape_settings.html#ad12438b5a92461663171c7295cc9d756", null ], + [ "Create", "class_static_compound_shape_settings.html#a354d96bbea984e976b4e0bba6d8e659a", null ] +]; \ No newline at end of file diff --git a/class_static_compound_shape_settings.png b/class_static_compound_shape_settings.png new file mode 100644 index 000000000..5506c5687 Binary files /dev/null and b/class_static_compound_shape_settings.png differ diff --git a/class_stream_in-members.html b/class_stream_in-members.html new file mode 100644 index 000000000..66db03a3a --- /dev/null +++ b/class_stream_in-members.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StreamIn Member List
+
+
+ +

This is the complete list of members for StreamIn, including all inherited members.

+ + + + + + + + + + + + + + + +
IsEOF() const =0StreamInpure virtual
IsFailed() const =0StreamInpure virtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Read(T &outT)StreamIninline
Read(Array< T, A > &outT)StreamIninline
Read(std::basic_string< Type, Traits, Allocator > &outString)StreamIninline
Read(Array< T, A > &outT, const F &inReadElement)StreamIninline
Read(Vec3 &outVec)StreamIninline
Read(DVec3 &outVec)StreamIninline
Read(DMat44 &outVec)StreamIninline
ReadBytes(void *outData, size_t inNumBytes)=0StreamInpure virtual
~StreamIn()=defaultStreamInvirtual
+
+ + + + diff --git a/class_stream_in.html b/class_stream_in.html new file mode 100644 index 000000000..dd808f7d2 --- /dev/null +++ b/class_stream_in.html @@ -0,0 +1,528 @@ + + + + + + + +Jolt Physics: StreamIn Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StreamIn Class Referenceabstract
+
+
+ +

Simple binary input stream. + More...

+ +

#include <StreamIn.h>

+
+Inheritance diagram for StreamIn:
+
+
+ + +NonCopyable +StateRecorder +StreamInWrapper +StateRecorderImpl + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~StreamIn ()=default
 Virtual destructor.
 
virtual void ReadBytes (void *outData, size_t inNumBytes)=0
 Read a string of bytes from the binary stream.
 
virtual bool IsEOF () const =0
 Returns true when an attempt has been made to read past the end of the file.
 
virtual bool IsFailed () const =0
 Returns true if there was an IO failure.
 
template<class T , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Read (T &outT)
 Read a primitive (e.g. float, int, etc.) from the binary stream.
 
template<class T , class A , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Read (Array< T, A > &outT)
 Read a vector of primitives from the binary stream.
 
template<class Type , class Traits , class Allocator >
void Read (std::basic_string< Type, Traits, Allocator > &outString)
 Read a string from the binary stream (reads the number of characters and then the characters)
 
template<class T , class A , typename F >
void Read (Array< T, A > &outT, const F &inReadElement)
 Read a vector of primitives from the binary stream using a custom function to read the elements.
 
void Read (Vec3 &outVec)
 Read a Vec3 (don't read W)
 
void Read (DVec3 &outVec)
 Read a DVec3 (don't read W)
 
void Read (DMat44 &outVec)
 Read a DMat44 (don't read W component of translation)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Simple binary input stream.

+

Constructor & Destructor Documentation

+ +

◆ ~StreamIn()

+ +
+
+ + + + + +
+ + + + + + + +
virtual StreamIn::~StreamIn ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ IsEOF()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool StreamIn::IsEOF () const
+
+pure virtual
+
+ +

Returns true when an attempt has been made to read past the end of the file.

+ +

Implemented in StreamInWrapper, and StateRecorderImpl.

+ +
+
+ +

◆ IsFailed()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool StreamIn::IsFailed () const
+
+pure virtual
+
+ +

Returns true if there was an IO failure.

+ +

Implemented in StreamInWrapper, and StateRecorderImpl.

+ +
+
+ +

◆ Read() [1/7]

+ +
+
+
+template<class T , class A , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
+ + + + + +
+ + + + + + + + +
void StreamIn::Read (Array< T, A > & outT)
+
+inline
+
+ +

Read a vector of primitives from the binary stream.

+ +
+
+ +

◆ Read() [2/7]

+ +
+
+
+template<class T , class A , typename F >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void StreamIn::Read (Array< T, A > & outT,
const F & inReadElement 
)
+
+inline
+
+ +

Read a vector of primitives from the binary stream using a custom function to read the elements.

+ +
+
+ +

◆ Read() [3/7]

+ +
+
+ + + + + +
+ + + + + + + + +
void StreamIn::Read (DMat44outVec)
+
+inline
+
+ +

Read a DMat44 (don't read W component of translation)

+ +
+
+ +

◆ Read() [4/7]

+ +
+
+ + + + + +
+ + + + + + + + +
void StreamIn::Read (DVec3outVec)
+
+inline
+
+ +

Read a DVec3 (don't read W)

+ +
+
+ +

◆ Read() [5/7]

+ +
+
+
+template<class Type , class Traits , class Allocator >
+ + + + + +
+ + + + + + + + +
void StreamIn::Read (std::basic_string< Type, Traits, Allocator > & outString)
+
+inline
+
+ +

Read a string from the binary stream (reads the number of characters and then the characters)

+ +
+
+ +

◆ Read() [6/7]

+ +
+
+
+template<class T , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
+ + + + + +
+ + + + + + + + +
void StreamIn::Read (T & outT)
+
+inline
+
+ +

Read a primitive (e.g. float, int, etc.) from the binary stream.

+ +
+
+ +

◆ Read() [7/7]

+ +
+
+ + + + + +
+ + + + + + + + +
void StreamIn::Read (Vec3outVec)
+
+inline
+
+ +

Read a Vec3 (don't read W)

+ +
+
+ +

◆ ReadBytes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void StreamIn::ReadBytes (void * outData,
size_t inNumBytes 
)
+
+pure virtual
+
+ +

Read a string of bytes from the binary stream.

+ +

Implemented in StreamInWrapper, and StateRecorderImpl.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_stream_in.js b/class_stream_in.js new file mode 100644 index 000000000..7e3ce56e9 --- /dev/null +++ b/class_stream_in.js @@ -0,0 +1,14 @@ +var class_stream_in = +[ + [ "~StreamIn", "class_stream_in.html#a294d4a6d12c54b6bd31b67a627075c34", null ], + [ "IsEOF", "class_stream_in.html#a9a2a616b63703ec5c80423ad2692d06e", null ], + [ "IsFailed", "class_stream_in.html#abda7a049c94885abd04a6e583e4c5b37", null ], + [ "Read", "class_stream_in.html#ad746a4bb01b4d67767bf1bd200edcb01", null ], + [ "Read", "class_stream_in.html#a685f7e59d2108a0c61dad52c042d7e45", null ], + [ "Read", "class_stream_in.html#ad4bea0c5775a7c29522359528d98c654", null ], + [ "Read", "class_stream_in.html#ae2a6c51ed1848c45cd9974cec509020e", null ], + [ "Read", "class_stream_in.html#a6f7322ce8d07d787701f3417aa46f265", null ], + [ "Read", "class_stream_in.html#a5ae9304c310edfc5ef1c67a95e36b1f3", null ], + [ "Read", "class_stream_in.html#a73a1ab9b7b8c0807e88b9b969acb24bf", null ], + [ "ReadBytes", "class_stream_in.html#a85303621b160dd9280ca9b7ff67d8217", null ] +]; \ No newline at end of file diff --git a/class_stream_in.png b/class_stream_in.png new file mode 100644 index 000000000..65c334895 Binary files /dev/null and b/class_stream_in.png differ diff --git a/class_stream_in_wrapper-members.html b/class_stream_in_wrapper-members.html new file mode 100644 index 000000000..3671c9c78 --- /dev/null +++ b/class_stream_in_wrapper-members.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StreamInWrapper Member List
+
+
+ +

This is the complete list of members for StreamInWrapper, including all inherited members.

+ + + + + + + + + + + + + + + + +
IsEOF() const overrideStreamInWrapperinlinevirtual
IsFailed() const overrideStreamInWrapperinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Read(T &outT)StreamIninline
Read(Array< T, A > &outT)StreamIninline
Read(std::basic_string< Type, Traits, Allocator > &outString)StreamIninline
Read(Array< T, A > &outT, const F &inReadElement)StreamIninline
Read(Vec3 &outVec)StreamIninline
Read(DVec3 &outVec)StreamIninline
Read(DMat44 &outVec)StreamIninline
ReadBytes(void *outData, size_t inNumBytes) overrideStreamInWrapperinlinevirtual
StreamInWrapper(istream &ioWrapped)StreamInWrapperinline
~StreamIn()=defaultStreamInvirtual
+
+ + + + diff --git a/class_stream_in_wrapper.html b/class_stream_in_wrapper.html new file mode 100644 index 000000000..4ac059fb5 --- /dev/null +++ b/class_stream_in_wrapper.html @@ -0,0 +1,317 @@ + + + + + + + +Jolt Physics: StreamInWrapper Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StreamInWrapper Class Reference
+
+
+ +

Wrapper around std::istream. + More...

+ +

#include <StreamWrapper.h>

+
+Inheritance diagram for StreamInWrapper:
+
+
+ + +StreamIn +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StreamInWrapper (istream &ioWrapped)
 Constructor.
 
virtual void ReadBytes (void *outData, size_t inNumBytes) override
 Write a string of bytes to the binary stream.
 
virtual bool IsEOF () const override
 Returns true when an attempt has been made to read past the end of the file.
 
virtual bool IsFailed () const override
 Returns true if there was an IO failure.
 
- Public Member Functions inherited from StreamIn
virtual ~StreamIn ()=default
 Virtual destructor.
 
template<class T , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Read (T &outT)
 Read a primitive (e.g. float, int, etc.) from the binary stream.
 
template<class T , class A , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Read (Array< T, A > &outT)
 Read a vector of primitives from the binary stream.
 
template<class Type , class Traits , class Allocator >
void Read (std::basic_string< Type, Traits, Allocator > &outString)
 Read a string from the binary stream (reads the number of characters and then the characters)
 
template<class T , class A , typename F >
void Read (Array< T, A > &outT, const F &inReadElement)
 Read a vector of primitives from the binary stream using a custom function to read the elements.
 
void Read (Vec3 &outVec)
 Read a Vec3 (don't read W)
 
void Read (DVec3 &outVec)
 Read a DVec3 (don't read W)
 
void Read (DMat44 &outVec)
 Read a DMat44 (don't read W component of translation)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Wrapper around std::istream.

+

Constructor & Destructor Documentation

+ +

◆ StreamInWrapper()

+ +
+
+ + + + + +
+ + + + + + + + +
StreamInWrapper::StreamInWrapper (istream & ioWrapped)
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ IsEOF()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool StreamInWrapper::IsEOF () const
+
+inlineoverridevirtual
+
+ +

Returns true when an attempt has been made to read past the end of the file.

+ +

Implements StreamIn.

+ +
+
+ +

◆ IsFailed()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool StreamInWrapper::IsFailed () const
+
+inlineoverridevirtual
+
+ +

Returns true if there was an IO failure.

+ +

Implements StreamIn.

+ +
+
+ +

◆ ReadBytes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void StreamInWrapper::ReadBytes (void * outData,
size_t inNumBytes 
)
+
+inlineoverridevirtual
+
+ +

Write a string of bytes to the binary stream.

+ +

Implements StreamIn.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_stream_in_wrapper.js b/class_stream_in_wrapper.js new file mode 100644 index 000000000..5589bd8a5 --- /dev/null +++ b/class_stream_in_wrapper.js @@ -0,0 +1,7 @@ +var class_stream_in_wrapper = +[ + [ "StreamInWrapper", "class_stream_in_wrapper.html#a520dc1917ebc617092afe68cbaa4ed6b", null ], + [ "IsEOF", "class_stream_in_wrapper.html#ae426f7046722abc95d5e1a9205d535da", null ], + [ "IsFailed", "class_stream_in_wrapper.html#a239494d64eb786bb0d4b0fb55cc621e0", null ], + [ "ReadBytes", "class_stream_in_wrapper.html#aa4c627cf650ea91887ae92d43d46dada", null ] +]; \ No newline at end of file diff --git a/class_stream_in_wrapper.png b/class_stream_in_wrapper.png new file mode 100644 index 000000000..74433e22c Binary files /dev/null and b/class_stream_in_wrapper.png differ diff --git a/class_stream_out-members.html b/class_stream_out-members.html new file mode 100644 index 000000000..bbfd1c07b --- /dev/null +++ b/class_stream_out-members.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StreamOut Member List
+
+
+ +

This is the complete list of members for StreamOut, including all inherited members.

+ + + + + + + + + + + + + + +
IsFailed() const =0StreamOutpure virtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Write(const T &inT)StreamOutinline
Write(const Array< T, A > &inT)StreamOutinline
Write(const std::basic_string< Type, Traits, Allocator > &inString)StreamOutinline
Write(const Array< T, A > &inT, const F &inWriteElement)StreamOutinline
Write(const Vec3 &inVec)StreamOutinline
Write(const DVec3 &inVec)StreamOutinline
Write(const DMat44 &inVec)StreamOutinline
WriteBytes(const void *inData, size_t inNumBytes)=0StreamOutpure virtual
~StreamOut()=defaultStreamOutvirtual
+
+ + + + diff --git a/class_stream_out.html b/class_stream_out.html new file mode 100644 index 000000000..87b4f79dd --- /dev/null +++ b/class_stream_out.html @@ -0,0 +1,496 @@ + + + + + + + +Jolt Physics: StreamOut Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StreamOut Class Referenceabstract
+
+
+ +

Simple binary output stream. + More...

+ +

#include <StreamOut.h>

+
+Inheritance diagram for StreamOut:
+
+
+ + +NonCopyable +StateRecorder +StreamOutWrapper +StateRecorderImpl + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~StreamOut ()=default
 Virtual destructor.
 
virtual void WriteBytes (const void *inData, size_t inNumBytes)=0
 Write a string of bytes to the binary stream.
 
virtual bool IsFailed () const =0
 Returns true if there was an IO failure.
 
template<class T , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Write (const T &inT)
 Write a primitive (e.g. float, int, etc.) to the binary stream.
 
template<class T , class A , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Write (const Array< T, A > &inT)
 Write a vector of primitives to the binary stream.
 
template<class Type , class Traits , class Allocator >
void Write (const std::basic_string< Type, Traits, Allocator > &inString)
 Write a string to the binary stream (writes the number of characters and then the characters)
 
template<class T , class A , typename F >
void Write (const Array< T, A > &inT, const F &inWriteElement)
 Write a vector of primitives to the binary stream using a custom write function.
 
void Write (const Vec3 &inVec)
 Write a Vec3 (don't write W)
 
void Write (const DVec3 &inVec)
 Write a DVec3 (don't write W)
 
void Write (const DMat44 &inVec)
 Write a DMat44 (don't write W component of translation)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Simple binary output stream.

+

Constructor & Destructor Documentation

+ +

◆ ~StreamOut()

+ +
+
+ + + + + +
+ + + + + + + +
virtual StreamOut::~StreamOut ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ IsFailed()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool StreamOut::IsFailed () const
+
+pure virtual
+
+ +

Returns true if there was an IO failure.

+ +

Implemented in StreamOutWrapper, and StateRecorderImpl.

+ +
+
+ +

◆ Write() [1/7]

+ +
+
+
+template<class T , class A , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
+ + + + + +
+ + + + + + + + +
void StreamOut::Write (const Array< T, A > & inT)
+
+inline
+
+ +

Write a vector of primitives to the binary stream.

+ +
+
+ +

◆ Write() [2/7]

+ +
+
+
+template<class T , class A , typename F >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void StreamOut::Write (const Array< T, A > & inT,
const F & inWriteElement 
)
+
+inline
+
+ +

Write a vector of primitives to the binary stream using a custom write function.

+ +
+
+ +

◆ Write() [3/7]

+ +
+
+ + + + + +
+ + + + + + + + +
void StreamOut::Write (const DMat44inVec)
+
+inline
+
+ +

Write a DMat44 (don't write W component of translation)

+ +
+
+ +

◆ Write() [4/7]

+ +
+
+ + + + + +
+ + + + + + + + +
void StreamOut::Write (const DVec3inVec)
+
+inline
+
+ +

Write a DVec3 (don't write W)

+ +
+
+ +

◆ Write() [5/7]

+ +
+
+
+template<class Type , class Traits , class Allocator >
+ + + + + +
+ + + + + + + + +
void StreamOut::Write (const std::basic_string< Type, Traits, Allocator > & inString)
+
+inline
+
+ +

Write a string to the binary stream (writes the number of characters and then the characters)

+ +
+
+ +

◆ Write() [6/7]

+ +
+
+
+template<class T , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
+ + + + + +
+ + + + + + + + +
void StreamOut::Write (const T & inT)
+
+inline
+
+ +

Write a primitive (e.g. float, int, etc.) to the binary stream.

+ +
+
+ +

◆ Write() [7/7]

+ +
+
+ + + + + +
+ + + + + + + + +
void StreamOut::Write (const Vec3inVec)
+
+inline
+
+ +

Write a Vec3 (don't write W)

+ +
+
+ +

◆ WriteBytes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void StreamOut::WriteBytes (const void * inData,
size_t inNumBytes 
)
+
+pure virtual
+
+ +

Write a string of bytes to the binary stream.

+ +

Implemented in StreamOutWrapper, and StateRecorderImpl.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_stream_out.js b/class_stream_out.js new file mode 100644 index 000000000..424a378c4 --- /dev/null +++ b/class_stream_out.js @@ -0,0 +1,13 @@ +var class_stream_out = +[ + [ "~StreamOut", "class_stream_out.html#aed2cfe74214f89965cb640ac9d1bbb8d", null ], + [ "IsFailed", "class_stream_out.html#a30c9fa2d50a64c0da4d6dc5ae614e756", null ], + [ "Write", "class_stream_out.html#a8e42be27dba5676379ba723df9171c4f", null ], + [ "Write", "class_stream_out.html#a29fc4077677e5c0fea89194178326684", null ], + [ "Write", "class_stream_out.html#a076687e0453908f83336761c13b75f19", null ], + [ "Write", "class_stream_out.html#a5c9dec0ec5fb4af10a3258f03fa99bb1", null ], + [ "Write", "class_stream_out.html#ae1b1f7fee2bcf46896c198ff13eabf10", null ], + [ "Write", "class_stream_out.html#a879dce6c6c6ca5e63835fe61cc745966", null ], + [ "Write", "class_stream_out.html#a067f43db7805fa22f5ffefbefac23b13", null ], + [ "WriteBytes", "class_stream_out.html#aa80bff3216178ef392693f1997803d99", null ] +]; \ No newline at end of file diff --git a/class_stream_out.png b/class_stream_out.png new file mode 100644 index 000000000..6b6671c1b Binary files /dev/null and b/class_stream_out.png differ diff --git a/class_stream_out_wrapper-members.html b/class_stream_out_wrapper-members.html new file mode 100644 index 000000000..86e665db3 --- /dev/null +++ b/class_stream_out_wrapper-members.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
StreamOutWrapper Member List
+
+
+ +

This is the complete list of members for StreamOutWrapper, including all inherited members.

+ + + + + + + + + + + + + + + +
IsFailed() const overrideStreamOutWrapperinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
StreamOutWrapper(ostream &ioWrapped)StreamOutWrapperinline
Write(const T &inT)StreamOutinline
Write(const Array< T, A > &inT)StreamOutinline
Write(const std::basic_string< Type, Traits, Allocator > &inString)StreamOutinline
Write(const Array< T, A > &inT, const F &inWriteElement)StreamOutinline
Write(const Vec3 &inVec)StreamOutinline
Write(const DVec3 &inVec)StreamOutinline
Write(const DMat44 &inVec)StreamOutinline
WriteBytes(const void *inData, size_t inNumBytes) overrideStreamOutWrapperinlinevirtual
~StreamOut()=defaultStreamOutvirtual
+
+ + + + diff --git a/class_stream_out_wrapper.html b/class_stream_out_wrapper.html new file mode 100644 index 000000000..7311cac71 --- /dev/null +++ b/class_stream_out_wrapper.html @@ -0,0 +1,285 @@ + + + + + + + +Jolt Physics: StreamOutWrapper Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
StreamOutWrapper Class Reference
+
+
+ +

Wrapper around std::ostream. + More...

+ +

#include <StreamWrapper.h>

+
+Inheritance diagram for StreamOutWrapper:
+
+
+ + +StreamOut +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StreamOutWrapper (ostream &ioWrapped)
 Constructor.
 
virtual void WriteBytes (const void *inData, size_t inNumBytes) override
 Write a string of bytes to the binary stream.
 
virtual bool IsFailed () const override
 Returns true if there was an IO failure.
 
- Public Member Functions inherited from StreamOut
virtual ~StreamOut ()=default
 Virtual destructor.
 
template<class T , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Write (const T &inT)
 Write a primitive (e.g. float, int, etc.) to the binary stream.
 
template<class T , class A , std::enable_if_t< std::is_trivially_copyable_v< T >, bool > = true>
void Write (const Array< T, A > &inT)
 Write a vector of primitives to the binary stream.
 
template<class Type , class Traits , class Allocator >
void Write (const std::basic_string< Type, Traits, Allocator > &inString)
 Write a string to the binary stream (writes the number of characters and then the characters)
 
template<class T , class A , typename F >
void Write (const Array< T, A > &inT, const F &inWriteElement)
 Write a vector of primitives to the binary stream using a custom write function.
 
void Write (const Vec3 &inVec)
 Write a Vec3 (don't write W)
 
void Write (const DVec3 &inVec)
 Write a DVec3 (don't write W)
 
void Write (const DMat44 &inVec)
 Write a DMat44 (don't write W component of translation)
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Wrapper around std::ostream.

+

Constructor & Destructor Documentation

+ +

◆ StreamOutWrapper()

+ +
+
+ + + + + +
+ + + + + + + + +
StreamOutWrapper::StreamOutWrapper (ostream & ioWrapped)
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ IsFailed()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool StreamOutWrapper::IsFailed () const
+
+inlineoverridevirtual
+
+ +

Returns true if there was an IO failure.

+ +

Implements StreamOut.

+ +
+
+ +

◆ WriteBytes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void StreamOutWrapper::WriteBytes (const void * inData,
size_t inNumBytes 
)
+
+inlineoverridevirtual
+
+ +

Write a string of bytes to the binary stream.

+ +

Implements StreamOut.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_stream_out_wrapper.js b/class_stream_out_wrapper.js new file mode 100644 index 000000000..fc7781a9f --- /dev/null +++ b/class_stream_out_wrapper.js @@ -0,0 +1,6 @@ +var class_stream_out_wrapper = +[ + [ "StreamOutWrapper", "class_stream_out_wrapper.html#a31c8f3fb2fae07e695d9d7ab7bad604d", null ], + [ "IsFailed", "class_stream_out_wrapper.html#a2da7c93d54165f7cbab4678fe83abb32", null ], + [ "WriteBytes", "class_stream_out_wrapper.html#a9021148d55d478d1431b9196e96c8125", null ] +]; \ No newline at end of file diff --git a/class_stream_out_wrapper.png b/class_stream_out_wrapper.png new file mode 100644 index 000000000..4c83ae975 Binary files /dev/null and b/class_stream_out_wrapper.png differ diff --git a/class_sub_shape_i_d-members.html b/class_sub_shape_i_d-members.html new file mode 100644 index 000000000..e9cd52eb4 --- /dev/null +++ b/class_sub_shape_i_d-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SubShapeID Member List
+
+
+ +

This is the complete list of members for SubShapeID, including all inherited members.

+ + + + + + + + + + + + +
BiggerType typedefSubShapeID
GetValue() constSubShapeIDinline
IsEmpty() constSubShapeIDinline
MaxBitsSubShapeIDstatic
operator!=(const SubShapeID &inRHS) constSubShapeIDinline
operator==(const SubShapeID &inRHS) constSubShapeIDinline
PopID(uint inBits, SubShapeID &outRemainder) constSubShapeIDinline
SetValue(Type inValue)SubShapeIDinline
SubShapeID()=defaultSubShapeID
SubShapeIDCreatorSubShapeIDfriend
Type typedefSubShapeID
+
+ + + + diff --git a/class_sub_shape_i_d.html b/class_sub_shape_i_d.html new file mode 100644 index 000000000..ec044316d --- /dev/null +++ b/class_sub_shape_i_d.html @@ -0,0 +1,467 @@ + + + + + + + +Jolt Physics: SubShapeID Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SubShapeID Class Reference
+
+
+ +

A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compound shape. + More...

+ +

#include <SubShapeID.h>

+ + + + + + + + +

+Public Types

using Type = uint32
 Underlying storage type.
 
using BiggerType = uint64
 Type that is bigger than the underlying storage type for operations that would otherwise overflow.
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SubShapeID ()=default
 Constructor.
 
Type PopID (uint inBits, SubShapeID &outRemainder) const
 Get the next id in the chain of ids (pops parents before children)
 
Type GetValue () const
 Get the value of the path to the sub shape ID.
 
void SetValue (Type inValue)
 Set the value of the sub shape ID (use with care!)
 
bool IsEmpty () const
 
bool operator== (const SubShapeID &inRHS) const
 Check equal.
 
bool operator!= (const SubShapeID &inRHS) const
 Check not-equal.
 
+ + + + +

+Static Public Attributes

static constexpr uint MaxBits = 8 * sizeof(Type)
 How many bits we can store in this ID.
 
+ + + +

+Friends

class SubShapeIDCreator
 
+

Detailed Description

+

A sub shape id contains a path to an element (usually a triangle or other primitive type) of a compound shape.

+

Each sub shape knows how many bits it needs to encode its ID, so knows how many bits to take from the sub shape ID.

+

For example:

    +
  • We have a CompoundShape A with 5 child shapes (identify sub shape using 3 bits AAA)
  • +
  • One of its child shapes is CompoundShape B which has 3 child shapes (identify sub shape using 2 bits BB)
  • +
  • One of its child shapes is MeshShape C which contains enough triangles to need 7 bits to identify a triangle (identify sub shape using 7 bits CCCCCCC, note that MeshShape is block based and sorts triangles spatially, you can't assume that the first triangle will have bit pattern 0000000).
  • +
+

The bit pattern of the sub shape ID to identify a triangle in MeshShape C will then be CCCCCCCBBAAA.

+

A sub shape ID will become invalid when the structure of the shape changes. For example, if a child shape is removed from a compound shape, the sub shape ID will no longer be valid. This can be a problem when caching sub shape IDs from one frame to the next. See comments at ContactListener::OnContactPersisted / OnContactRemoved.

+

Member Typedef Documentation

+ +

◆ BiggerType

+ +
+
+ + + + +
using SubShapeID::BiggerType = uint64
+
+ +

Type that is bigger than the underlying storage type for operations that would otherwise overflow.

+ +
+
+ +

◆ Type

+ +
+
+ + + + +
using SubShapeID::Type = uint32
+
+ +

Underlying storage type.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ SubShapeID()

+ +
+
+ + + + + +
+ + + + + + + +
SubShapeID::SubShapeID ()
+
+default
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetValue()

+ +
+
+ + + + + +
+ + + + + + + +
Type SubShapeID::GetValue () const
+
+inline
+
+ +

Get the value of the path to the sub shape ID.

+ +
+
+ +

◆ IsEmpty()

+ +
+
+ + + + + +
+ + + + + + + +
bool SubShapeID::IsEmpty () const
+
+inline
+
+

Check if there is any bits of subshape ID left. Note that this is not a 100% guarantee as the subshape ID could consist of all 1 bits. Use for asserts only.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SubShapeID::operator!= (const SubShapeIDinRHS) const
+
+inline
+
+ +

Check not-equal.

+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SubShapeID::operator== (const SubShapeIDinRHS) const
+
+inline
+
+ +

Check equal.

+ +
+
+ +

◆ PopID()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Type SubShapeID::PopID (uint inBits,
SubShapeIDoutRemainder 
) const
+
+inline
+
+ +

Get the next id in the chain of ids (pops parents before children)

+ +
+
+ +

◆ SetValue()

+ +
+
+ + + + + +
+ + + + + + + + +
void SubShapeID::SetValue (Type inValue)
+
+inline
+
+ +

Set the value of the sub shape ID (use with care!)

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ SubShapeIDCreator

+ +
+
+ + + + + +
+ + + + +
friend class SubShapeIDCreator
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ MaxBits

+ +
+
+ + + + + +
+ + + + +
constexpr uint SubShapeID::MaxBits = 8 * sizeof(Type)
+
+staticconstexpr
+
+ +

How many bits we can store in this ID.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_sub_shape_i_d.js b/class_sub_shape_i_d.js new file mode 100644 index 000000000..6ab0247bc --- /dev/null +++ b/class_sub_shape_i_d.js @@ -0,0 +1,13 @@ +var class_sub_shape_i_d = +[ + [ "BiggerType", "class_sub_shape_i_d.html#af668479f6a45736649f0881db72637a7", null ], + [ "Type", "class_sub_shape_i_d.html#a242b350b7f76646203b8f71879e260b3", null ], + [ "SubShapeID", "class_sub_shape_i_d.html#af367dd3acaba3f507a19ba0d27abd299", null ], + [ "GetValue", "class_sub_shape_i_d.html#a93de7475867625a7b2dc053d2af57c2b", null ], + [ "IsEmpty", "class_sub_shape_i_d.html#a353cb40946046c09d50b31d73c122729", null ], + [ "operator!=", "class_sub_shape_i_d.html#a139169c43883bdc72791c61a4c40f30d", null ], + [ "operator==", "class_sub_shape_i_d.html#a08bb5c298b21da17f8ff31502f5f90d7", null ], + [ "PopID", "class_sub_shape_i_d.html#a8f78ff809c7af2dfbd2e61ba2314ca9d", null ], + [ "SetValue", "class_sub_shape_i_d.html#a1a908b7e19b2d792793830b751a66a27", null ], + [ "SubShapeIDCreator", "class_sub_shape_i_d.html#a2ce5af4bbd248b1e44de16419d09beee", null ] +]; \ No newline at end of file diff --git a/class_sub_shape_i_d_creator-members.html b/class_sub_shape_i_d_creator-members.html new file mode 100644 index 000000000..f2487f4d4 --- /dev/null +++ b/class_sub_shape_i_d_creator-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SubShapeIDCreator Member List
+
+
+ +

This is the complete list of members for SubShapeIDCreator, including all inherited members.

+ + + + +
GetID() constSubShapeIDCreatorinline
GetNumBitsWritten() constSubShapeIDCreatorinline
PushID(uint inValue, uint inBits) constSubShapeIDCreatorinline
+
+ + + + diff --git a/class_sub_shape_i_d_creator.html b/class_sub_shape_i_d_creator.html new file mode 100644 index 000000000..bf2143c07 --- /dev/null +++ b/class_sub_shape_i_d_creator.html @@ -0,0 +1,227 @@ + + + + + + + +Jolt Physics: SubShapeIDCreator Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SubShapeIDCreator Class Reference
+
+
+ +

#include <SubShapeID.h>

+ + + + + + + + + + +

+Public Member Functions

SubShapeIDCreator PushID (uint inValue, uint inBits) const
 Add a new id to the chain of id's and return it.
 
const SubShapeIDGetID () const
 
uint GetNumBitsWritten () const
 Get the number of bits that have been written to the sub shape ID so far.
 
+

Detailed Description

+

A sub shape id creator can be used to create a new sub shape id by recursing through the shape hierarchy and pushing new ID's onto the chain

+

Member Function Documentation

+ +

◆ GetID()

+ +
+
+ + + + + +
+ + + + + + + +
const SubShapeID & SubShapeIDCreator::GetID () const
+
+inline
+
+ +
+
+ +

◆ GetNumBitsWritten()

+ +
+
+ + + + + +
+ + + + + + + +
uint SubShapeIDCreator::GetNumBitsWritten () const
+
+inline
+
+ +

Get the number of bits that have been written to the sub shape ID so far.

+ +
+
+ +

◆ PushID()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
SubShapeIDCreator SubShapeIDCreator::PushID (uint inValue,
uint inBits 
) const
+
+inline
+
+ +

Add a new id to the chain of id's and return it.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_sub_shape_i_d_creator.js b/class_sub_shape_i_d_creator.js new file mode 100644 index 000000000..fbcffccbe --- /dev/null +++ b/class_sub_shape_i_d_creator.js @@ -0,0 +1,6 @@ +var class_sub_shape_i_d_creator = +[ + [ "GetID", "class_sub_shape_i_d_creator.html#a54023c5ee7e3547f2211e7a5ae9d620b", null ], + [ "GetNumBitsWritten", "class_sub_shape_i_d_creator.html#a788289a4af585ce7f0bc7416d6b5d93c", null ], + [ "PushID", "class_sub_shape_i_d_creator.html#a29997885833b2c9625bcbcba4548273d", null ] +]; \ No newline at end of file diff --git a/class_sub_shape_i_d_pair-members.html b/class_sub_shape_i_d_pair-members.html new file mode 100644 index 000000000..fcf5bac81 --- /dev/null +++ b/class_sub_shape_i_d_pair-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SubShapeIDPair Member List
+
+
+ +

This is the complete list of members for SubShapeIDPair, including all inherited members.

+ + + + + + + + + + + + +
GetBody1ID() constSubShapeIDPairinline
GetBody2ID() constSubShapeIDPairinline
GetHash() constSubShapeIDPairinline
GetSubShapeID1() constSubShapeIDPairinline
GetSubShapeID2() constSubShapeIDPairinline
operator<(const SubShapeIDPair &inRHS) constSubShapeIDPairinline
operator=(const SubShapeIDPair &)=defaultSubShapeIDPair
operator==(const SubShapeIDPair &inRHS) constSubShapeIDPairinline
SubShapeIDPair()=defaultSubShapeIDPair
SubShapeIDPair(const BodyID &inBody1ID, const SubShapeID &inSubShapeID1, const BodyID &inBody2ID, const SubShapeID &inSubShapeID2)SubShapeIDPairinline
SubShapeIDPair(const SubShapeIDPair &)=defaultSubShapeIDPair
+
+ + + + diff --git a/class_sub_shape_i_d_pair.html b/class_sub_shape_i_d_pair.html new file mode 100644 index 000000000..e23cbedbe --- /dev/null +++ b/class_sub_shape_i_d_pair.html @@ -0,0 +1,466 @@ + + + + + + + +Jolt Physics: SubShapeIDPair Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SubShapeIDPair Class Reference
+
+
+ +

A pair of bodies and their sub shape ID's. Can be used as a key in a map to find a contact point. + More...

+ +

#include <SubShapeIDPair.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE SubShapeIDPair ()=default
 Constructor.
 
 SubShapeIDPair (const BodyID &inBody1ID, const SubShapeID &inSubShapeID1, const BodyID &inBody2ID, const SubShapeID &inSubShapeID2)
 
SubShapeIDPairoperator= (const SubShapeIDPair &)=default
 
 SubShapeIDPair (const SubShapeIDPair &)=default
 
bool operator== (const SubShapeIDPair &inRHS) const
 Equality operator.
 
bool operator< (const SubShapeIDPair &inRHS) const
 Less than operator, used to consistently order contact points for a deterministic simulation.
 
const BodyIDGetBody1ID () const
 
const SubShapeIDGetSubShapeID1 () const
 
const BodyIDGetBody2ID () const
 
const SubShapeIDGetSubShapeID2 () const
 
uint64 GetHash () const
 
+

Detailed Description

+

A pair of bodies and their sub shape ID's. Can be used as a key in a map to find a contact point.

+

Constructor & Destructor Documentation

+ +

◆ SubShapeIDPair() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE SubShapeIDPair::SubShapeIDPair ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ SubShapeIDPair() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SubShapeIDPair::SubShapeIDPair (const BodyIDinBody1ID,
const SubShapeIDinSubShapeID1,
const BodyIDinBody2ID,
const SubShapeIDinSubShapeID2 
)
+
+inline
+
+ +
+
+ +

◆ SubShapeIDPair() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
SubShapeIDPair::SubShapeIDPair (const SubShapeIDPair)
+
+default
+
+ +
+
+

Member Function Documentation

+ +

◆ GetBody1ID()

+ +
+
+ + + + + +
+ + + + + + + +
const BodyID & SubShapeIDPair::GetBody1ID () const
+
+inline
+
+ +
+
+ +

◆ GetBody2ID()

+ +
+
+ + + + + +
+ + + + + + + +
const BodyID & SubShapeIDPair::GetBody2ID () const
+
+inline
+
+ +
+
+ +

◆ GetHash()

+ +
+
+ + + + + +
+ + + + + + + +
uint64 SubShapeIDPair::GetHash () const
+
+inline
+
+ +
+
+ +

◆ GetSubShapeID1()

+ +
+
+ + + + + +
+ + + + + + + +
const SubShapeID & SubShapeIDPair::GetSubShapeID1 () const
+
+inline
+
+ +
+
+ +

◆ GetSubShapeID2()

+ +
+
+ + + + + +
+ + + + + + + +
const SubShapeID & SubShapeIDPair::GetSubShapeID2 () const
+
+inline
+
+ +
+
+ +

◆ operator<()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SubShapeIDPair::operator< (const SubShapeIDPairinRHS) const
+
+inline
+
+ +

Less than operator, used to consistently order contact points for a deterministic simulation.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
SubShapeIDPair & SubShapeIDPair::operator= (const SubShapeIDPair)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SubShapeIDPair::operator== (const SubShapeIDPairinRHS) const
+
+inline
+
+ +

Equality operator.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_sub_shape_i_d_pair.js b/class_sub_shape_i_d_pair.js new file mode 100644 index 000000000..d7975e0d8 --- /dev/null +++ b/class_sub_shape_i_d_pair.js @@ -0,0 +1,14 @@ +var class_sub_shape_i_d_pair = +[ + [ "SubShapeIDPair", "class_sub_shape_i_d_pair.html#a899aaabfed0fe32af496bf293e446228", null ], + [ "SubShapeIDPair", "class_sub_shape_i_d_pair.html#abc493f2b834301d7787650dcf28752c1", null ], + [ "SubShapeIDPair", "class_sub_shape_i_d_pair.html#abecaface9b0fca0e2724d1777cce12a8", null ], + [ "GetBody1ID", "class_sub_shape_i_d_pair.html#a990a2912033187dda623e9ed0c265f9b", null ], + [ "GetBody2ID", "class_sub_shape_i_d_pair.html#af3c86ba7be149254f34e9244e83e8914", null ], + [ "GetHash", "class_sub_shape_i_d_pair.html#a88b839da3754801d6bfe6f6f2734a026", null ], + [ "GetSubShapeID1", "class_sub_shape_i_d_pair.html#ada31f15601de55a64463899ed5ec67b8", null ], + [ "GetSubShapeID2", "class_sub_shape_i_d_pair.html#a6fd1caef92ab138b72a0663030ba1b14", null ], + [ "operator<", "class_sub_shape_i_d_pair.html#ae6188138a93c9a7121c01d043e537631", null ], + [ "operator=", "class_sub_shape_i_d_pair.html#ac0d41cb46190b64395b1e199b78215b6", null ], + [ "operator==", "class_sub_shape_i_d_pair.html#a553026ae2b87e33df1b3c5a82b48287b", null ] +]; \ No newline at end of file diff --git a/class_swing_twist_constraint-members.html b/class_swing_twist_constraint-members.html new file mode 100644 index 000000000..11d29aacb --- /dev/null +++ b/class_swing_twist_constraint-members.html @@ -0,0 +1,204 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SwingTwistConstraint Member List
+
+
+ +

This is the complete list of members for SwingTwistConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const overrideSwingTwistConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) const overrideSwingTwistConstraintvirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overrideSwingTwistConstraintvirtual
GetConstraintToBody1() constSwingTwistConstraintinline
GetConstraintToBody1Matrix() const overrideSwingTwistConstraintinlinevirtual
GetConstraintToBody2() constSwingTwistConstraintinline
GetConstraintToBody2Matrix() const overrideSwingTwistConstraintinlinevirtual
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetLocalSpacePosition1() constSwingTwistConstraintinline
GetLocalSpacePosition2() constSwingTwistConstraintinline
GetMaxFrictionTorque() constSwingTwistConstraintinline
GetNormalHalfConeAngle() constSwingTwistConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetPlaneHalfConeAngle() constSwingTwistConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetRotationInConstraintSpace() constSwingTwistConstraint
GetSubType() const overrideSwingTwistConstraintinlinevirtual
GetSwingMotorSettings() constSwingTwistConstraintinline
GetSwingMotorSettings()SwingTwistConstraintinline
GetSwingMotorState() constSwingTwistConstraintinline
GetTargetAngularVelocityCS() constSwingTwistConstraintinline
GetTargetOrientationCS() constSwingTwistConstraintinline
GetTotalLambdaMotor() constSwingTwistConstraintinline
GetTotalLambdaPosition() constSwingTwistConstraintinline
GetTotalLambdaSwingY() constSwingTwistConstraintinline
GetTotalLambdaSwingZ() constSwingTwistConstraintinline
GetTotalLambdaTwist() constSwingTwistConstraintinline
GetTwistMaxAngle() constSwingTwistConstraintinline
GetTwistMinAngle() constSwingTwistConstraintinline
GetTwistMotorSettings() constSwingTwistConstraintinline
GetTwistMotorSettings()SwingTwistConstraintinline
GetTwistMotorState() constSwingTwistConstraintinline
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
IsActive() const overrideTwoBodyConstraintinlinevirtual
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overrideSwingTwistConstraintvirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart() overrideSwingTwistConstraintvirtual
RestoreState(StateRecorder &inStream) overrideSwingTwistConstraintvirtual
SaveState(StateRecorder &inStream) const overrideSwingTwistConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetMaxFrictionTorque(float inFrictionTorque)SwingTwistConstraintinline
SetNormalHalfConeAngle(float inAngle)SwingTwistConstraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetPlaneHalfConeAngle(float inAngle)SwingTwistConstraintinline
SetSwingMotorState(EMotorState inState)SwingTwistConstraint
SetTargetAngularVelocityCS(Vec3Arg inAngularVelocity)SwingTwistConstraintinline
SetTargetOrientationBS(QuatArg inOrientation)SwingTwistConstraintinline
SetTargetOrientationCS(QuatArg inOrientation)SwingTwistConstraint
SetTwistMaxAngle(float inAngle)SwingTwistConstraintinline
SetTwistMinAngle(float inAngle)SwingTwistConstraintinline
SetTwistMotorState(EMotorState inState)SwingTwistConstraint
SetupVelocityConstraint(float inDeltaTime) overrideSwingTwistConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overrideSwingTwistConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overrideSwingTwistConstraintvirtual
SwingTwistConstraint(Body &inBody1, Body &inBody2, const SwingTwistConstraintSettings &inSettings)SwingTwistConstraint
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overrideSwingTwistConstraintvirtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_swing_twist_constraint.html b/class_swing_twist_constraint.html new file mode 100644 index 000000000..19f6ee099 --- /dev/null +++ b/class_swing_twist_constraint.html @@ -0,0 +1,1649 @@ + + + + + + + +Jolt Physics: SwingTwistConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SwingTwistConstraint Class Referencefinal
+
+
+ +

#include <SwingTwistConstraint.h>

+
+Inheritance diagram for SwingTwistConstraint:
+
+
+ + +TwoBodyConstraint +Constraint +RefTarget< Constraint > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE SwingTwistConstraint (Body &inBody1, Body &inBody2, const SwingTwistConstraintSettings &inSettings)
 Construct swing twist constraint.
 
Generic interface of a constraint
virtual EConstraintSubType GetSubType () const override
 Get the sub type of a constraint.
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
virtual Mat44 GetConstraintToBody1Matrix () const override
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const override
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
Constraint reference frame
Vec3 GetLocalSpacePosition1 () const
 
Vec3 GetLocalSpacePosition2 () const
 
Quat GetConstraintToBody1 () const
 
Quat GetConstraintToBody2 () const
 
Constraint limits
float GetNormalHalfConeAngle () const
 
void SetNormalHalfConeAngle (float inAngle)
 
float GetPlaneHalfConeAngle () const
 
void SetPlaneHalfConeAngle (float inAngle)
 
float GetTwistMinAngle () const
 
void SetTwistMinAngle (float inAngle)
 
float GetTwistMaxAngle () const
 
void SetTwistMaxAngle (float inAngle)
 
Motor settings
const MotorSettingsGetSwingMotorSettings () const
 
MotorSettingsGetSwingMotorSettings ()
 
const MotorSettingsGetTwistMotorSettings () const
 
MotorSettingsGetTwistMotorSettings ()
 
Friction control
void SetMaxFrictionTorque (float inFrictionTorque)
 
float GetMaxFrictionTorque () const
 
Motor controls
void SetSwingMotorState (EMotorState inState)
 Controls if the motors are on or off.
 
EMotorState GetSwingMotorState () const
 
void SetTwistMotorState (EMotorState inState)
 
EMotorState GetTwistMotorState () const
 
void SetTargetAngularVelocityCS (Vec3Arg inAngularVelocity)
 Set the target angular velocity of body 2 in constraint space of body 2.
 
Vec3 GetTargetAngularVelocityCS () const
 
void SetTargetOrientationCS (QuatArg inOrientation)
 Set the target orientation in constraint space (drives constraint to: GetRotationInConstraintSpace() == inOrientation)
 
Quat GetTargetOrientationCS () const
 
void SetTargetOrientationBS (QuatArg inOrientation)
 
Quat GetRotationInConstraintSpace () const
 
- Public Member Functions inherited from TwoBodyConstraint
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + +

Get Lagrange multiplier from last physics update (the linear/angular impulse applied to satisfy the constraint)

Vec3 GetTotalLambdaPosition () const
 
float GetTotalLambdaTwist () const
 
float GetTotalLambdaSwingY () const
 
float GetTotalLambdaSwingZ () const
 
Vec3 GetTotalLambdaMotor () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from TwoBodyConstraint
BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A swing twist constraint is a specialized constraint for humanoid ragdolls that allows limited rotation only

+
See also
SwingTwistConstraintSettings for a description of the limits
+

Constructor & Destructor Documentation

+ +

◆ SwingTwistConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
SwingTwistConstraint::SwingTwistConstraint (BodyinBody1,
BodyinBody2,
const SwingTwistConstraintSettingsinSettings 
)
+
+ +

Construct swing twist constraint.

+ +
+
+

Member Function Documentation

+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ DrawConstraintLimits()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::DrawConstraintLimits (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > SwingTwistConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetConstraintToBody1()

+ +
+
+ + + + + +
+ + + + + + + +
Quat SwingTwistConstraint::GetConstraintToBody1 () const
+
+inline
+
+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 SwingTwistConstraint::GetConstraintToBody1Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetConstraintToBody2()

+ +
+
+ + + + + +
+ + + + + + + +
Quat SwingTwistConstraint::GetConstraintToBody2 () const
+
+inline
+
+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 SwingTwistConstraint::GetConstraintToBody2Matrix () const
+
+inlineoverridevirtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implements TwoBodyConstraint.

+ +
+
+ +

◆ GetLocalSpacePosition1()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SwingTwistConstraint::GetLocalSpacePosition1 () const
+
+inline
+
+ +
+
+ +

◆ GetLocalSpacePosition2()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SwingTwistConstraint::GetLocalSpacePosition2 () const
+
+inline
+
+ +
+
+ +

◆ GetMaxFrictionTorque()

+ +
+
+ + + + + +
+ + + + + + + +
float SwingTwistConstraint::GetMaxFrictionTorque () const
+
+inline
+
+ +
+
+ +

◆ GetNormalHalfConeAngle()

+ +
+
+ + + + + +
+ + + + + + + +
float SwingTwistConstraint::GetNormalHalfConeAngle () const
+
+inline
+
+ +
+
+ +

◆ GetPlaneHalfConeAngle()

+ +
+
+ + + + + +
+ + + + + + + +
float SwingTwistConstraint::GetPlaneHalfConeAngle () const
+
+inline
+
+ +
+
+ +

◆ GetRotationInConstraintSpace()

+ +
+
+ + + + + + + +
Quat SwingTwistConstraint::GetRotationInConstraintSpace () const
+
+

Get current rotation of constraint in constraint space. Solve: R2 * ConstraintToBody2 = R1 * ConstraintToBody1 * q for q.

+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType SwingTwistConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Get the sub type of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetSwingMotorSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
MotorSettings & SwingTwistConstraint::GetSwingMotorSettings ()
+
+inline
+
+ +
+
+ +

◆ GetSwingMotorSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const MotorSettings & SwingTwistConstraint::GetSwingMotorSettings () const
+
+inline
+
+ +
+
+ +

◆ GetSwingMotorState()

+ +
+
+ + + + + +
+ + + + + + + +
EMotorState SwingTwistConstraint::GetSwingMotorState () const
+
+inline
+
+ +
+
+ +

◆ GetTargetAngularVelocityCS()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SwingTwistConstraint::GetTargetAngularVelocityCS () const
+
+inline
+
+ +
+
+ +

◆ GetTargetOrientationCS()

+ +
+
+ + + + + +
+ + + + + + + +
Quat SwingTwistConstraint::GetTargetOrientationCS () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaMotor()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SwingTwistConstraint::GetTotalLambdaMotor () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaPosition()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 SwingTwistConstraint::GetTotalLambdaPosition () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaSwingY()

+ +
+
+ + + + + +
+ + + + + + + +
float SwingTwistConstraint::GetTotalLambdaSwingY () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaSwingZ()

+ +
+
+ + + + + +
+ + + + + + + +
float SwingTwistConstraint::GetTotalLambdaSwingZ () const
+
+inline
+
+ +
+
+ +

◆ GetTotalLambdaTwist()

+ +
+
+ + + + + +
+ + + + + + + +
float SwingTwistConstraint::GetTotalLambdaTwist () const
+
+inline
+
+ +
+
+ +

◆ GetTwistMaxAngle()

+ +
+
+ + + + + +
+ + + + + + + +
float SwingTwistConstraint::GetTwistMaxAngle () const
+
+inline
+
+ +
+
+ +

◆ GetTwistMinAngle()

+ +
+
+ + + + + +
+ + + + + + + +
float SwingTwistConstraint::GetTwistMinAngle () const
+
+inline
+
+ +
+
+ +

◆ GetTwistMotorSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
MotorSettings & SwingTwistConstraint::GetTwistMotorSettings ()
+
+inline
+
+ +
+
+ +

◆ GetTwistMotorSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const MotorSettings & SwingTwistConstraint::GetTwistMotorSettings () const
+
+inline
+
+ +
+
+ +

◆ GetTwistMotorState()

+ +
+
+ + + + + +
+ + + + + + + +
EMotorState SwingTwistConstraint::GetTwistMotorState () const
+
+inline
+
+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SwingTwistConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+overridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void SwingTwistConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetMaxFrictionTorque()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::SetMaxFrictionTorque (float inFrictionTorque)
+
+inline
+
+ +
+
+ +

◆ SetNormalHalfConeAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::SetNormalHalfConeAngle (float inAngle)
+
+inline
+
+ +
+
+ +

◆ SetPlaneHalfConeAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::SetPlaneHalfConeAngle (float inAngle)
+
+inline
+
+ +
+
+ +

◆ SetSwingMotorState()

+ +
+
+ + + + + + + + +
void SwingTwistConstraint::SetSwingMotorState (EMotorState inState)
+
+ +

Controls if the motors are on or off.

+ +
+
+ +

◆ SetTargetAngularVelocityCS()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::SetTargetAngularVelocityCS (Vec3Arg inAngularVelocity)
+
+inline
+
+ +

Set the target angular velocity of body 2 in constraint space of body 2.

+ +
+
+ +

◆ SetTargetOrientationBS()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::SetTargetOrientationBS (QuatArg inOrientation)
+
+inline
+
+

Set the target orientation in body space (R2 = R1 * inOrientation, where R1 and R2 are the world space rotations for body 1 and 2). Solve: R2 * ConstraintToBody2 = R1 * ConstraintToBody1 * q (see SwingTwistConstraint::GetSwingTwist) and R2 = R1 * inOrientation for q.

+ +
+
+ +

◆ SetTargetOrientationCS()

+ +
+
+ + + + + + + + +
void SwingTwistConstraint::SetTargetOrientationCS (QuatArg inOrientation)
+
+ +

Set the target orientation in constraint space (drives constraint to: GetRotationInConstraintSpace() == inOrientation)

+ +
+
+ +

◆ SetTwistMaxAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::SetTwistMaxAngle (float inAngle)
+
+inline
+
+ +
+
+ +

◆ SetTwistMinAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::SetTwistMinAngle (float inAngle)
+
+inline
+
+ +
+
+ +

◆ SetTwistMotorState()

+ +
+
+ + + + + + + + +
void SwingTwistConstraint::SetTwistMotorState (EMotorState inState)
+
+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool SwingTwistConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SwingTwistConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_swing_twist_constraint.js b/class_swing_twist_constraint.js new file mode 100644 index 000000000..2dea67cdd --- /dev/null +++ b/class_swing_twist_constraint.js @@ -0,0 +1,51 @@ +var class_swing_twist_constraint = +[ + [ "SwingTwistConstraint", "class_swing_twist_constraint.html#a68c8e6f8d1f25c3d593c7304d6804b6e", null ], + [ "DrawConstraint", "class_swing_twist_constraint.html#a7ac554fd24b5b89297f13405808991a6", null ], + [ "DrawConstraintLimits", "class_swing_twist_constraint.html#a820235859442463871552b2f24eaf499", null ], + [ "GetConstraintSettings", "class_swing_twist_constraint.html#ad3c1a46d28973d5ce39917aa2b7a32b0", null ], + [ "GetConstraintToBody1", "class_swing_twist_constraint.html#a4b15b5eed50bb023141968a6eb05a307", null ], + [ "GetConstraintToBody1Matrix", "class_swing_twist_constraint.html#ab89ec6165c3789f22964700f21695c32", null ], + [ "GetConstraintToBody2", "class_swing_twist_constraint.html#a79760736ee2bc3afecdf80dfe703fa45", null ], + [ "GetConstraintToBody2Matrix", "class_swing_twist_constraint.html#a2ada7d7eadcc3f9d235cb1d8c75f3e4a", null ], + [ "GetLocalSpacePosition1", "class_swing_twist_constraint.html#a5cf8ea24972bf6fd7c614d8e5a851b37", null ], + [ "GetLocalSpacePosition2", "class_swing_twist_constraint.html#ab2ddd5c601f20912ceeaeb2cd01cc601", null ], + [ "GetMaxFrictionTorque", "class_swing_twist_constraint.html#a663ea09e2e7019d0d43fec36cd3b89f1", null ], + [ "GetNormalHalfConeAngle", "class_swing_twist_constraint.html#a01fffaa54b35ffbe9321bd6549346b4d", null ], + [ "GetPlaneHalfConeAngle", "class_swing_twist_constraint.html#a6529b62b9a91f1f1093116a789f1d5ca", null ], + [ "GetRotationInConstraintSpace", "class_swing_twist_constraint.html#adef556a69c073651dc5370213dff405e", null ], + [ "GetSubType", "class_swing_twist_constraint.html#a259cdffe333947fb29e1455619b81dd5", null ], + [ "GetSwingMotorSettings", "class_swing_twist_constraint.html#adc142775611a925dfdc755c0fa35bdbc", null ], + [ "GetSwingMotorSettings", "class_swing_twist_constraint.html#a62867e2044909678e7eb8ae1a60fc30e", null ], + [ "GetSwingMotorState", "class_swing_twist_constraint.html#aff96015babd85fab3b262eee70a2a283", null ], + [ "GetTargetAngularVelocityCS", "class_swing_twist_constraint.html#a7ba465390161d081cbfa4f6d313308e5", null ], + [ "GetTargetOrientationCS", "class_swing_twist_constraint.html#ab490bdbf00a2c76b00b2d3d2afe19419", null ], + [ "GetTotalLambdaMotor", "class_swing_twist_constraint.html#a41ac135d5eb9c233fe50ff9fc8b3d40e", null ], + [ "GetTotalLambdaPosition", "class_swing_twist_constraint.html#a82b21f86dc816c6a989df827c04d2a7b", null ], + [ "GetTotalLambdaSwingY", "class_swing_twist_constraint.html#a0c2292aef09fef869c8264e0735a6f26", null ], + [ "GetTotalLambdaSwingZ", "class_swing_twist_constraint.html#a2e87742bbeac9f5b0b0ee75050326c7b", null ], + [ "GetTotalLambdaTwist", "class_swing_twist_constraint.html#afc81f0c8d931210044e2a05cea0988c6", null ], + [ "GetTwistMaxAngle", "class_swing_twist_constraint.html#a167f8f552fae981543530a4bd225b763", null ], + [ "GetTwistMinAngle", "class_swing_twist_constraint.html#ae2220254397365c2d99a026cdfeb5243", null ], + [ "GetTwistMotorSettings", "class_swing_twist_constraint.html#aec236c29d446311925a62f2004ae6974", null ], + [ "GetTwistMotorSettings", "class_swing_twist_constraint.html#ae63b6cda1826e0b1aa6b6960780e92e3", null ], + [ "GetTwistMotorState", "class_swing_twist_constraint.html#a44ce1ccf1c4d95f88bb6ab2571035196", null ], + [ "NotifyShapeChanged", "class_swing_twist_constraint.html#ab510d96b7f9f7df51cea9b2400474db4", null ], + [ "ResetWarmStart", "class_swing_twist_constraint.html#af008b3e7de0f788907050c45101f1620", null ], + [ "RestoreState", "class_swing_twist_constraint.html#ab8a66fa8ace006007551e20f26859e60", null ], + [ "SaveState", "class_swing_twist_constraint.html#aee888f6c281abbbccc3e33d108716824", null ], + [ "SetMaxFrictionTorque", "class_swing_twist_constraint.html#abf0d635feedfe665fa4f7a6e566bf168", null ], + [ "SetNormalHalfConeAngle", "class_swing_twist_constraint.html#a5bdb29744f4e345d3366312d3d77d85c", null ], + [ "SetPlaneHalfConeAngle", "class_swing_twist_constraint.html#a00fb39bbe9a4ea59b363c2d60ca959ff", null ], + [ "SetSwingMotorState", "class_swing_twist_constraint.html#a013809c4bb78158bd128514c043c3875", null ], + [ "SetTargetAngularVelocityCS", "class_swing_twist_constraint.html#a352f4276b652ae5f31ec8ce7b63a321f", null ], + [ "SetTargetOrientationBS", "class_swing_twist_constraint.html#a96e0594e40bc6d63d72241e03cdebcc0", null ], + [ "SetTargetOrientationCS", "class_swing_twist_constraint.html#a9d6def10e5b01c5dcf325164812a0380", null ], + [ "SetTwistMaxAngle", "class_swing_twist_constraint.html#a505202f615a1842d430a4caff34b7a7d", null ], + [ "SetTwistMinAngle", "class_swing_twist_constraint.html#a0276be01794b613f1e961227e774fb98", null ], + [ "SetTwistMotorState", "class_swing_twist_constraint.html#ae69c1ec34e58f67f05aea6e393110f92", null ], + [ "SetupVelocityConstraint", "class_swing_twist_constraint.html#a51932e901316b06ac2c5a55c5ce54856", null ], + [ "SolvePositionConstraint", "class_swing_twist_constraint.html#a4b881638e8d9fbd49223ae4f3e649f4e", null ], + [ "SolveVelocityConstraint", "class_swing_twist_constraint.html#ae841a8acf92617eca1192909d2885f41", null ], + [ "WarmStartVelocityConstraint", "class_swing_twist_constraint.html#acf698847ac574454093180b23cc74a4e", null ] +]; \ No newline at end of file diff --git a/class_swing_twist_constraint.png b/class_swing_twist_constraint.png new file mode 100644 index 000000000..99b30bd15 Binary files /dev/null and b/class_swing_twist_constraint.png differ diff --git a/class_swing_twist_constraint_part-members.html b/class_swing_twist_constraint_part-members.html new file mode 100644 index 000000000..95bebda8d --- /dev/null +++ b/class_swing_twist_constraint_part-members.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SwingTwistConstraintPart Member List
+
+
+ +

This is the complete list of members for SwingTwistConstraintPart, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
CalculateConstraintProperties(const Body &inBody1, const Body &inBody2, QuatArg inConstraintRotation, QuatArg inConstraintToWorld)SwingTwistConstraintPartinline
cClampedSwingYMaxSwingTwistConstraintPartstatic
cClampedSwingYMinSwingTwistConstraintPartstatic
cClampedSwingZMaxSwingTwistConstraintPartstatic
cClampedSwingZMinSwingTwistConstraintPartstatic
cClampedTwistMaxSwingTwistConstraintPartstatic
cClampedTwistMinSwingTwistConstraintPartstatic
ClampSwingTwist(Quat &ioSwing, Quat &ioTwist, uint &outClampedAxis) constSwingTwistConstraintPartinline
Deactivate()SwingTwistConstraintPartinline
GetSwingType() constSwingTwistConstraintPartinline
GetTotalSwingYLambda() constSwingTwistConstraintPartinline
GetTotalSwingZLambda() constSwingTwistConstraintPartinline
GetTotalTwistLambda() constSwingTwistConstraintPartinline
IsActive() constSwingTwistConstraintPartinline
RestoreState(StateRecorder &inStream)SwingTwistConstraintPartinline
SaveState(StateRecorder &inStream) constSwingTwistConstraintPartinline
sDistanceToMinShorter(float inDeltaMin, float inDeltaMax)SwingTwistConstraintPartinlinestatic
SetLimits(float inTwistMinAngle, float inTwistMaxAngle, float inSwingYMinAngle, float inSwingYMaxAngle, float inSwingZMinAngle, float inSwingZMaxAngle)SwingTwistConstraintPartinline
SetSwingType(ESwingType inSwingType)SwingTwistConstraintPartinline
SolvePositionConstraint(Body &ioBody1, Body &ioBody2, QuatArg inConstraintRotation, QuatArg inConstraintToBody1, QuatArg inConstraintToBody2, float inBaumgarte) constSwingTwistConstraintPartinline
SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)SwingTwistConstraintPartinline
WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)SwingTwistConstraintPartinline
+
+ + + + diff --git a/class_swing_twist_constraint_part.html b/class_swing_twist_constraint_part.html new file mode 100644 index 000000000..33053e945 --- /dev/null +++ b/class_swing_twist_constraint_part.html @@ -0,0 +1,934 @@ + + + + + + + +Jolt Physics: SwingTwistConstraintPart Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SwingTwistConstraintPart Class Reference
+
+
+ +

#include <SwingTwistConstraintPart.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void SetSwingType (ESwingType inSwingType)
 Override the swing type.
 
ESwingType GetSwingType () const
 Get the swing type for this part.
 
void SetLimits (float inTwistMinAngle, float inTwistMaxAngle, float inSwingYMinAngle, float inSwingYMaxAngle, float inSwingZMinAngle, float inSwingZMaxAngle)
 Set limits for this constraint (see description above for parameters)
 
void ClampSwingTwist (Quat &ioSwing, Quat &ioTwist, uint &outClampedAxis) const
 Clamp twist and swing against the constraint limits, returns which parts were clamped (everything assumed in constraint space)
 
void CalculateConstraintProperties (const Body &inBody1, const Body &inBody2, QuatArg inConstraintRotation, QuatArg inConstraintToWorld)
 
void Deactivate ()
 Deactivate this constraint.
 
bool IsActive () const
 Check if constraint is active.
 
void WarmStart (Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
 Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses.
 
bool SolveVelocityConstraint (Body &ioBody1, Body &ioBody2)
 Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.
 
bool SolvePositionConstraint (Body &ioBody1, Body &ioBody2, QuatArg inConstraintRotation, QuatArg inConstraintToBody1, QuatArg inConstraintToBody2, float inBaumgarte) const
 
float GetTotalSwingYLambda () const
 Return lagrange multiplier for swing.
 
float GetTotalSwingZLambda () const
 
float GetTotalTwistLambda () const
 Return lagrange multiplier for twist.
 
void SaveState (StateRecorder &inStream) const
 Save state of this constraint part.
 
void RestoreState (StateRecorder &inStream)
 Restore state of this constraint part.
 
+ + + + +

+Static Public Member Functions

static JPH_INLINE bool sDistanceToMinShorter (float inDeltaMin, float inDeltaMax)
 Helper function to determine if we're clamped against the min or max limit.
 
+ + + + + + + + + + + + + + +

+Static Public Attributes

static constexpr uint cClampedTwistMin = 1 << 0
 Flags to indicate which axis got clamped by ClampSwingTwist.
 
static constexpr uint cClampedTwistMax = 1 << 1
 
static constexpr uint cClampedSwingYMin = 1 << 2
 
static constexpr uint cClampedSwingYMax = 1 << 3
 
static constexpr uint cClampedSwingZMin = 1 << 4
 
static constexpr uint cClampedSwingZMax = 1 << 5
 
+

Detailed Description

+

Quaternion based constraint that decomposes the rotation in constraint space in swing and twist: q = q_swing * q_twist where q_swing.x = 0 and where q_twist.y = q_twist.z = 0

+
    +
  • Rotation around the twist (x-axis) is within [inTwistMinAngle, inTwistMaxAngle].
  • +
  • Rotation around the swing axis (y and z axis) are limited to an ellipsoid in quaternion space formed by the equation:
  • +
+

(q_swing.y / sin(inSwingYHalfAngle / 2))^2 + (q_swing.z / sin(inSwingZHalfAngle / 2))^2 <= 1

+

Which roughly corresponds to an elliptic cone shape with major axis (inSwingYHalfAngle, inSwingZHalfAngle).

+

In case inSwingYHalfAngle = 0, the rotation around Y will be constrained to 0 and the rotation around Z will be constrained between [-inSwingZHalfAngle, inSwingZHalfAngle]. Vice versa if inSwingZHalfAngle = 0.

+

Member Function Documentation

+ +

◆ CalculateConstraintProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SwingTwistConstraintPart::CalculateConstraintProperties (const BodyinBody1,
const BodyinBody2,
QuatArg inConstraintRotation,
QuatArg inConstraintToWorld 
)
+
+inline
+
+

Calculate properties used during the functions below

Parameters
+ + + + + +
inBody1The first body that this constraint is attached to
inBody2The second body that this constraint is attached to
inConstraintRotationThe current rotation of the constraint in constraint space
inConstraintToWorldRotates from constraint space into world space
+
+
+ +
+
+ +

◆ ClampSwingTwist()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SwingTwistConstraintPart::ClampSwingTwist (QuatioSwing,
QuatioTwist,
uintoutClampedAxis 
) const
+
+inline
+
+ +

Clamp twist and swing against the constraint limits, returns which parts were clamped (everything assumed in constraint space)

+ +
+
+ +

◆ Deactivate()

+ +
+
+ + + + + +
+ + + + + + + +
void SwingTwistConstraintPart::Deactivate ()
+
+inline
+
+ +

Deactivate this constraint.

+ +
+
+ +

◆ GetSwingType()

+ +
+
+ + + + + +
+ + + + + + + +
ESwingType SwingTwistConstraintPart::GetSwingType () const
+
+inline
+
+ +

Get the swing type for this part.

+ +
+
+ +

◆ GetTotalSwingYLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float SwingTwistConstraintPart::GetTotalSwingYLambda () const
+
+inline
+
+ +

Return lagrange multiplier for swing.

+ +
+
+ +

◆ GetTotalSwingZLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float SwingTwistConstraintPart::GetTotalSwingZLambda () const
+
+inline
+
+ +
+
+ +

◆ GetTotalTwistLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float SwingTwistConstraintPart::GetTotalTwistLambda () const
+
+inline
+
+ +

Return lagrange multiplier for twist.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
bool SwingTwistConstraintPart::IsActive () const
+
+inline
+
+ +

Check if constraint is active.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraintPart::RestoreState (StateRecorderinStream)
+
+inline
+
+ +

Restore state of this constraint part.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraintPart::SaveState (StateRecorderinStream) const
+
+inline
+
+ +

Save state of this constraint part.

+ +
+
+ +

◆ sDistanceToMinShorter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static JPH_INLINE bool SwingTwistConstraintPart::sDistanceToMinShorter (float inDeltaMin,
float inDeltaMax 
)
+
+inlinestatic
+
+ +

Helper function to determine if we're clamped against the min or max limit.

+ +
+
+ +

◆ SetLimits()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SwingTwistConstraintPart::SetLimits (float inTwistMinAngle,
float inTwistMaxAngle,
float inSwingYMinAngle,
float inSwingYMaxAngle,
float inSwingZMinAngle,
float inSwingZMaxAngle 
)
+
+inline
+
+ +

Set limits for this constraint (see description above for parameters)

+ +
+
+ +

◆ SetSwingType()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraintPart::SetSwingType (ESwingType inSwingType)
+
+inline
+
+ +

Override the swing type.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool SwingTwistConstraintPart::SolvePositionConstraint (BodyioBody1,
BodyioBody2,
QuatArg inConstraintRotation,
QuatArg inConstraintToBody1,
QuatArg inConstraintToBody2,
float inBaumgarte 
) const
+
+inline
+
+

Iteratively update the position constraint. Makes sure C(...) = 0.

Parameters
+ + + + + + +
ioBody1The first body that this constraint is attached to
ioBody2The second body that this constraint is attached to
inConstraintRotationThe current rotation of the constraint in constraint space
inConstraintToBody1,inConstraintToBody2Rotates from constraint space to body 1/2 space
inBaumgarteBaumgarte constant (fraction of the error to correct)
+
+
+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool SwingTwistConstraintPart::SolveVelocityConstraint (BodyioBody1,
BodyioBody2 
)
+
+inline
+
+ +

Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.

+ +
+
+ +

◆ WarmStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SwingTwistConstraintPart::WarmStart (BodyioBody1,
BodyioBody2,
float inWarmStartImpulseRatio 
)
+
+inline
+
+ +

Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses.

+ +
+
+

Member Data Documentation

+ +

◆ cClampedSwingYMax

+ +
+
+ + + + + +
+ + + + +
constexpr uint SwingTwistConstraintPart::cClampedSwingYMax = 1 << 3
+
+staticconstexpr
+
+ +
+
+ +

◆ cClampedSwingYMin

+ +
+
+ + + + + +
+ + + + +
constexpr uint SwingTwistConstraintPart::cClampedSwingYMin = 1 << 2
+
+staticconstexpr
+
+ +
+
+ +

◆ cClampedSwingZMax

+ +
+
+ + + + + +
+ + + + +
constexpr uint SwingTwistConstraintPart::cClampedSwingZMax = 1 << 5
+
+staticconstexpr
+
+ +
+
+ +

◆ cClampedSwingZMin

+ +
+
+ + + + + +
+ + + + +
constexpr uint SwingTwistConstraintPart::cClampedSwingZMin = 1 << 4
+
+staticconstexpr
+
+ +
+
+ +

◆ cClampedTwistMax

+ +
+
+ + + + + +
+ + + + +
constexpr uint SwingTwistConstraintPart::cClampedTwistMax = 1 << 1
+
+staticconstexpr
+
+ +
+
+ +

◆ cClampedTwistMin

+ +
+
+ + + + + +
+ + + + +
constexpr uint SwingTwistConstraintPart::cClampedTwistMin = 1 << 0
+
+staticconstexpr
+
+ +

Flags to indicate which axis got clamped by ClampSwingTwist.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_swing_twist_constraint_part.js b/class_swing_twist_constraint_part.js new file mode 100644 index 000000000..1d1277446 --- /dev/null +++ b/class_swing_twist_constraint_part.js @@ -0,0 +1,18 @@ +var class_swing_twist_constraint_part = +[ + [ "CalculateConstraintProperties", "class_swing_twist_constraint_part.html#aaf0e7de8bc6c556f7d1a1d2ef4c32317", null ], + [ "ClampSwingTwist", "class_swing_twist_constraint_part.html#a63a4870b93b5bb0d90555edbacbf5229", null ], + [ "Deactivate", "class_swing_twist_constraint_part.html#ae76162c3dfe72782a020162752a7ccf5", null ], + [ "GetSwingType", "class_swing_twist_constraint_part.html#a1e8cca76a13bf4490e18086adfe44fb5", null ], + [ "GetTotalSwingYLambda", "class_swing_twist_constraint_part.html#a16832ee912d335e0865e78f37fe7ad81", null ], + [ "GetTotalSwingZLambda", "class_swing_twist_constraint_part.html#a31a518f141eab3f601906193d7b56ada", null ], + [ "GetTotalTwistLambda", "class_swing_twist_constraint_part.html#a45a880db0765176f7e807f4aba08da6e", null ], + [ "IsActive", "class_swing_twist_constraint_part.html#af3c12b4e902bc93120df5ec5a706de99", null ], + [ "RestoreState", "class_swing_twist_constraint_part.html#a2964a0ed18137258a244d1b4926fa290", null ], + [ "SaveState", "class_swing_twist_constraint_part.html#a901f23c5450f15ee2c8979776fcdbf15", null ], + [ "SetLimits", "class_swing_twist_constraint_part.html#aad526f8386b3e605f88fddf583ec215b", null ], + [ "SetSwingType", "class_swing_twist_constraint_part.html#a848425a649ffd87b994ea1efe3cf9944", null ], + [ "SolvePositionConstraint", "class_swing_twist_constraint_part.html#ae8a947eca657db9a653b0d3de921e7c1", null ], + [ "SolveVelocityConstraint", "class_swing_twist_constraint_part.html#ad62155a6ac18bfc95a038b72df927e02", null ], + [ "WarmStart", "class_swing_twist_constraint_part.html#a507f0506fd29b63f244e73670d85d55d", null ] +]; \ No newline at end of file diff --git a/class_swing_twist_constraint_settings-members.html b/class_swing_twist_constraint_settings-members.html new file mode 100644 index 000000000..2ac44b206 --- /dev/null +++ b/class_swing_twist_constraint_settings-members.html @@ -0,0 +1,157 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SwingTwistConstraintSettings Member List
+
+
+ +

This is the complete list of members for SwingTwistConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const overrideSwingTwistConstraintSettingsvirtual
GetRefCount() constRefTarget< ConstraintSettings >inline
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mMaxFrictionTorqueSwingTwistConstraintSettings
mNormalHalfConeAngleSwingTwistConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mPlaneAxis1SwingTwistConstraintSettings
mPlaneAxis2SwingTwistConstraintSettings
mPlaneHalfConeAngleSwingTwistConstraintSettings
mPosition1SwingTwistConstraintSettings
mPosition2SwingTwistConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mSpaceSwingTwistConstraintSettings
mSwingMotorSettingsSwingTwistConstraintSettings
mSwingTypeSwingTwistConstraintSettings
mTwistAxis1SwingTwistConstraintSettings
mTwistAxis2SwingTwistConstraintSettings
mTwistMaxAngleSwingTwistConstraintSettings
mTwistMinAngleSwingTwistConstraintSettings
mTwistMotorSettingsSwingTwistConstraintSettings
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideSwingTwistConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overrideSwingTwistConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_swing_twist_constraint_settings.html b/class_swing_twist_constraint_settings.html new file mode 100644 index 000000000..cfba345cf --- /dev/null +++ b/class_swing_twist_constraint_settings.html @@ -0,0 +1,601 @@ + + + + + + + +Jolt Physics: SwingTwistConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SwingTwistConstraintSettings Class Referencefinal
+
+
+ +

#include <SwingTwistConstraint.h>

+
+Inheritance diagram for SwingTwistConstraintSettings:
+
+
+ + +TwoBodyConstraintSettings +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const override
 Create an instance of this constraint.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

EConstraintSpace mSpace = EConstraintSpace::WorldSpace
 This determines in which space the constraint is setup, all properties below should be in the specified space.
 
Body 1 constraint reference frame (space determined by mSpace)
RVec3 mPosition1 = RVec3::sZero()
 
Vec3 mTwistAxis1 = Vec3::sAxisX()
 
Vec3 mPlaneAxis1 = Vec3::sAxisY()
 
Body 2 constraint reference frame (space determined by mSpace)
RVec3 mPosition2 = RVec3::sZero()
 
Vec3 mTwistAxis2 = Vec3::sAxisX()
 
Vec3 mPlaneAxis2 = Vec3::sAxisY()
 
ESwingType mSwingType = ESwingType::Cone
 The type of swing constraint that we want to use.
 
Swing rotation limits
float mNormalHalfConeAngle = 0.0f
 See image at Detailed Description. Angle in radians.
 
float mPlaneHalfConeAngle = 0.0f
 See image at Detailed Description. Angle in radians.
 
Twist rotation limits
float mTwistMinAngle = 0.0f
 See image at Detailed Description. Angle in radians. Should be \(\in [-\pi, \pi]\).
 
float mTwistMaxAngle = 0.0f
 See image at Detailed Description. Angle in radians. Should be \(\in [-\pi, \pi]\).
 
Friction
float mMaxFrictionTorque = 0.0f
 Maximum amount of torque (N m) to apply as friction when the constraint is not powered by a motor.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + + + + + +

In case the constraint is powered, this determines the motor settings around the swing and twist axis

MotorSettings mSwingMotorSettings
 
MotorSettings mTwistMotorSettings
 
virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Swing twist constraint settings, used to create a swing twist constraint All values in this structure are copied to the swing twist constraint and the settings object is no longer needed afterwards.

+

This image describes the limit settings:

+ +
+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TwoBodyConstraint * SwingTwistConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+overridevirtual
+
+ +

Create an instance of this constraint.

+ +

Implements TwoBodyConstraintSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void SwingTwistConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mMaxFrictionTorque

+ +
+
+ + + + +
float SwingTwistConstraintSettings::mMaxFrictionTorque = 0.0f
+
+ +

Maximum amount of torque (N m) to apply as friction when the constraint is not powered by a motor.

+ +
+
+ +

◆ mNormalHalfConeAngle

+ +
+
+ + + + +
float SwingTwistConstraintSettings::mNormalHalfConeAngle = 0.0f
+
+ +

See image at Detailed Description. Angle in radians.

+ +
+
+ +

◆ mPlaneAxis1

+ +
+
+ + + + +
Vec3 SwingTwistConstraintSettings::mPlaneAxis1 = Vec3::sAxisY()
+
+ +
+
+ +

◆ mPlaneAxis2

+ +
+
+ + + + +
Vec3 SwingTwistConstraintSettings::mPlaneAxis2 = Vec3::sAxisY()
+
+ +
+
+ +

◆ mPlaneHalfConeAngle

+ +
+
+ + + + +
float SwingTwistConstraintSettings::mPlaneHalfConeAngle = 0.0f
+
+ +

See image at Detailed Description. Angle in radians.

+ +
+
+ +

◆ mPosition1

+ +
+
+ + + + +
RVec3 SwingTwistConstraintSettings::mPosition1 = RVec3::sZero()
+
+ +
+
+ +

◆ mPosition2

+ +
+
+ + + + +
RVec3 SwingTwistConstraintSettings::mPosition2 = RVec3::sZero()
+
+ +
+
+ +

◆ mSpace

+ +
+
+ + + + +
EConstraintSpace SwingTwistConstraintSettings::mSpace = EConstraintSpace::WorldSpace
+
+ +

This determines in which space the constraint is setup, all properties below should be in the specified space.

+ +
+
+ +

◆ mSwingMotorSettings

+ +
+
+ + + + +
MotorSettings SwingTwistConstraintSettings::mSwingMotorSettings
+
+ +
+
+ +

◆ mSwingType

+ +
+
+ + + + +
ESwingType SwingTwistConstraintSettings::mSwingType = ESwingType::Cone
+
+ +

The type of swing constraint that we want to use.

+ +
+
+ +

◆ mTwistAxis1

+ +
+
+ + + + +
Vec3 SwingTwistConstraintSettings::mTwistAxis1 = Vec3::sAxisX()
+
+ +
+
+ +

◆ mTwistAxis2

+ +
+
+ + + + +
Vec3 SwingTwistConstraintSettings::mTwistAxis2 = Vec3::sAxisX()
+
+ +
+
+ +

◆ mTwistMaxAngle

+ +
+
+ + + + +
float SwingTwistConstraintSettings::mTwistMaxAngle = 0.0f
+
+ +

See image at Detailed Description. Angle in radians. Should be \(\in [-\pi, \pi]\).

+ +
+
+ +

◆ mTwistMinAngle

+ +
+
+ + + + +
float SwingTwistConstraintSettings::mTwistMinAngle = 0.0f
+
+ +

See image at Detailed Description. Angle in radians. Should be \(\in [-\pi, \pi]\).

+ +
+
+ +

◆ mTwistMotorSettings

+ +
+
+ + + + +
MotorSettings SwingTwistConstraintSettings::mTwistMotorSettings
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_swing_twist_constraint_settings.js b/class_swing_twist_constraint_settings.js new file mode 100644 index 000000000..a839ecdc6 --- /dev/null +++ b/class_swing_twist_constraint_settings.js @@ -0,0 +1,21 @@ +var class_swing_twist_constraint_settings = +[ + [ "Create", "class_swing_twist_constraint_settings.html#af22ef48647d68461c43534fc1f808e83", null ], + [ "RestoreBinaryState", "class_swing_twist_constraint_settings.html#aea7e8886dad7c91dd6b35eb66d040905", null ], + [ "SaveBinaryState", "class_swing_twist_constraint_settings.html#a4fe33d4d02bc21c602c0396e3e2fa981", null ], + [ "mMaxFrictionTorque", "class_swing_twist_constraint_settings.html#af34435581700a68140347036aa5bb64d", null ], + [ "mNormalHalfConeAngle", "class_swing_twist_constraint_settings.html#a4f47f4487992a1af9da193d784a9a677", null ], + [ "mPlaneAxis1", "class_swing_twist_constraint_settings.html#a2c556242704fb54589332cc3b29871b8", null ], + [ "mPlaneAxis2", "class_swing_twist_constraint_settings.html#aa8a67f8a151ed609558127f83c3ddd6a", null ], + [ "mPlaneHalfConeAngle", "class_swing_twist_constraint_settings.html#acebb8bf87ee7e68a0614432fcfc13197", null ], + [ "mPosition1", "class_swing_twist_constraint_settings.html#a30793a078b7be1fa138f53ad1c57ca50", null ], + [ "mPosition2", "class_swing_twist_constraint_settings.html#a0f7ae7835e07b547eae7141543f3bbd5", null ], + [ "mSpace", "class_swing_twist_constraint_settings.html#a72b4b2d4679bb816c48947ef24f3153e", null ], + [ "mSwingMotorSettings", "class_swing_twist_constraint_settings.html#a3e07516a7bee2dd0552197bb46663289", null ], + [ "mSwingType", "class_swing_twist_constraint_settings.html#a56b16117463f015b513fd91666efe623", null ], + [ "mTwistAxis1", "class_swing_twist_constraint_settings.html#af7e277bd57e8b30ad5e61a440f55c923", null ], + [ "mTwistAxis2", "class_swing_twist_constraint_settings.html#ad43e13d0d38989e96d77efb2cef48e5c", null ], + [ "mTwistMaxAngle", "class_swing_twist_constraint_settings.html#a839558fbacc1371853779f96720bbb9a", null ], + [ "mTwistMinAngle", "class_swing_twist_constraint_settings.html#a12cd470644a292469f6d548e81554152", null ], + [ "mTwistMotorSettings", "class_swing_twist_constraint_settings.html#a72373f006ab5f1785c363bc03db5f5c0", null ] +]; \ No newline at end of file diff --git a/class_swing_twist_constraint_settings.png b/class_swing_twist_constraint_settings.png new file mode 100644 index 000000000..7924d439a Binary files /dev/null and b/class_swing_twist_constraint_settings.png differ diff --git a/class_tapered_capsule_shape-members.html b/class_tapered_capsule_shape-members.html new file mode 100644 index 000000000..9f5caf71b --- /dev/null +++ b/class_tapered_capsule_shape-members.html @@ -0,0 +1,204 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TaperedCapsuleShape Member List
+
+
+ +

This is the complete list of members for TaperedCapsuleShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideConvexShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideConvexShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideConvexShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideTaperedCapsuleShapevirtual
ConvexShape(EShapeSubType inSubType)ConvexShapeinlineexplicit
ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)ConvexShapeinline
ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial)ConvexShapeinline
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideTaperedCapsuleShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideConvexShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideConvexShapevirtual
ESupportMode enum nameConvexShape
GetCenterOfMass() const overrideTaperedCapsuleShapeinlinevirtual
GetDensity() constConvexShapeinline
GetInnerRadius() const overrideTaperedCapsuleShapeinlinevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const overrideTaperedCapsuleShapevirtual
GetMassProperties() const overrideTaperedCapsuleShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideConvexShapeinlinevirtual
GetMaterial() constConvexShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideTaperedCapsuleShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideConvexShapevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideConvexShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const overrideTaperedCapsuleShapevirtual
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideTaperedCapsuleShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideTaperedCapsuleShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideConvexShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideConvexShapevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideTaperedCapsuleShapeinlinevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideTaperedCapsuleShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constTaperedCapsuleShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constTaperedCapsuleShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) const overrideTaperedCapsuleShapevirtual
MakeScaleValid(Vec3Arg inScale) const overrideTaperedCapsuleShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() constShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideTaperedCapsuleShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) overrideConvexShapevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) const overrideTaperedCapsuleShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) const overrideConvexShapevirtual
Shape::SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetDensity(float inDensity)ConvexShapeinline
SetEmbedded() constRefTarget< Shape >inline
SetMaterial(const PhysicsMaterial *inMaterial)ConvexShapeinline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()TaperedCapsuleShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
sUnitSphereTrianglesConvexShapeprotectedstatic
SupportingFace typedefShape
TaperedCapsuleShape()TaperedCapsuleShapeinline
TaperedCapsuleShape(const TaperedCapsuleShapeSettings &inSettings, ShapeResult &outResult)TaperedCapsuleShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_tapered_capsule_shape.html b/class_tapered_capsule_shape.html new file mode 100644 index 000000000..a26401d94 --- /dev/null +++ b/class_tapered_capsule_shape.html @@ -0,0 +1,1201 @@ + + + + + + + +Jolt Physics: TaperedCapsuleShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TaperedCapsuleShape Class Referencefinal
+
+
+ +

A capsule with different top and bottom radii. + More...

+ +

#include <TaperedCapsuleShape.h>

+
+Inheritance diagram for TaperedCapsuleShape:
+
+
+ + +ConvexShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + +

+Classes

class  TaperedCapsule
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE TaperedCapsuleShape ()
 Constructor.
 
 TaperedCapsuleShape (const TaperedCapsuleShapeSettings &inSettings, ShapeResult &outResult)
 
virtual Vec3 GetCenterOfMass () const override
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual const SupportGetSupportFunction (ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
- Public Member Functions inherited from ConvexShape
JPH_OVERRIDE_NEW_DELETE ConvexShape (EShapeSubType inSubType)
 Constructor.
 
 ConvexShape (EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)
 
 ConvexShape (EShapeSubType inSubType, const PhysicsMaterial *inMaterial)
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
void SetMaterial (const PhysicsMaterial *inMaterial)
 Material of the shape.
 
const PhysicsMaterialGetMaterial () const
 
void SetDensity (float inDensity)
 Set density of the shape (kg / m^3)
 
float GetDensity () const
 Get density of the shape (kg / m^3)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const override
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual bool MustBeStatic () const
 Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from ConvexShape
static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConvexShape
enum class  ESupportMode { ExcludeConvexRadius +, IncludeConvexRadius +, Default + }
 How the GetSupport function should behave. More...
 
- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from ConvexShape
static const StaticArray< Vec3, 384 > sUnitSphereTriangles
 Vertex list that forms a unit sphere.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A capsule with different top and bottom radii.

+

Constructor & Destructor Documentation

+ +

◆ TaperedCapsuleShape() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE TaperedCapsuleShape::TaperedCapsuleShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ TaperedCapsuleShape() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
TaperedCapsuleShape::TaperedCapsuleShape (const TaperedCapsuleShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TaperedCapsuleShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TaperedCapsuleShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ GetCenterOfMass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vec3 TaperedCapsuleShape::GetCenterOfMass () const
+
+inlineoverridevirtual
+
+ +

All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float TaperedCapsuleShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox TaperedCapsuleShape::GetLocalBounds () const
+
+overridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties TaperedCapsuleShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats TaperedCapsuleShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
const ConvexShape::Support * TaperedCapsuleShape::GetSupportFunction (ESupportMode inMode,
SupportBufferinBuffer,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Returns an object that provides the GetSupport function for this shape. inMode determines if this support function includes or excludes the convex radius. of the values returned by the GetSupport function. This improves numerical accuracy of the results. inScale scales this shape in local space.

+ +

Implements ConvexShape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TaperedCapsuleShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 TaperedCapsuleShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float TaperedCapsuleShape::GetVolume () const
+
+inlineoverridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox Shape::GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inline
+
+ +

Get world space bounds including convex radius.

+ +
+
+ +

◆ GetWorldSpaceBounds() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual AABox Shape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inlinevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox TaperedCapsuleShape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ IsValidScale()

+ +
+
+ + + + + +
+ + + + + + + + +
bool TaperedCapsuleShape::IsValidScale (Vec3Arg inScale) const
+
+overridevirtual
+
+

Test if inScale is a valid scale for this shape. Some shapes can only be scaled uniformly, compound shapes cannot handle shapes being rotated and scaled (this would cause shearing), scale can never be zero. When the scale is invalid, the function will return false.

+

Here's a list of supported scales:

    +
  • SphereShape: Scale must be uniform (signs of scale are ignored).
  • +
  • BoxShape: Any scale supported (signs of scale are ignored).
  • +
  • TriangleShape: Any scale supported when convex radius is zero, otherwise only uniform scale supported.
  • +
  • CapsuleShape: Scale must be uniform (signs of scale are ignored).
  • +
  • TaperedCapsuleShape: Scale must be uniform (sign of Y scale can be used to flip the capsule).
  • +
  • CylinderShape: Scale must be uniform in XZ plane, Y can scale independently (signs of scale are ignored).
  • +
  • RotatedTranslatedShape: Scale must not cause shear in the child shape.
  • +
  • CompoundShape: Scale must not cause shear in any of the child shapes.
  • +
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ MakeScaleValid()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 TaperedCapsuleShape::MakeScaleValid (Vec3Arg inScale) const
+
+overridevirtual
+
+

This function will make sure that if you wrap this shape in a ScaledShape that the scale is valid. Note that this involves discarding components of the scale that are invalid, so the resulting scaled shape may be different than the requested scale. Compare the return value of this function with the scale you passed in to detect major inconsistencies and possibly warn the user.

Parameters
+ + +
inScaleLocal space scale for this shape.
+
+
+
Returns
Scale that can be used to wrap this shape in a ScaledShape. IsValidScale will return true for this scale.
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void TaperedCapsuleShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void TaperedCapsuleShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void TaperedCapsuleShape::sRegister ()
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_tapered_capsule_shape.js b/class_tapered_capsule_shape.js new file mode 100644 index 000000000..704b9aa07 --- /dev/null +++ b/class_tapered_capsule_shape.js @@ -0,0 +1,24 @@ +var class_tapered_capsule_shape = +[ + [ "TaperedCapsule", "class_tapered_capsule_shape_1_1_tapered_capsule.html", "class_tapered_capsule_shape_1_1_tapered_capsule" ], + [ "TaperedCapsuleShape", "class_tapered_capsule_shape.html#a26e7343399e7002fa535d95b208d6d55", null ], + [ "TaperedCapsuleShape", "class_tapered_capsule_shape.html#a632f3cfdfb0c81974230eee592c47c97", null ], + [ "CollideSoftBodyVertices", "class_tapered_capsule_shape.html#ab88253790d7cff61bd92d7cf317092eb", null ], + [ "Draw", "class_tapered_capsule_shape.html#ace616f13de2f3cb7acf8f66194c01442", null ], + [ "GetCenterOfMass", "class_tapered_capsule_shape.html#a66f2f00aa6cbbc1fe683d15993c3e736", null ], + [ "GetInnerRadius", "class_tapered_capsule_shape.html#a84f84f37f87624d107b363e1fe0f54a6", null ], + [ "GetLocalBounds", "class_tapered_capsule_shape.html#abd2b0eee5fe8019f104f3fa8db182ef0", null ], + [ "GetMassProperties", "class_tapered_capsule_shape.html#ad3455a4df764b73c9b62450ab39ee7e0", null ], + [ "GetStats", "class_tapered_capsule_shape.html#a5f3e2462c74c498511d4b010797ddbab", null ], + [ "GetSupportFunction", "class_tapered_capsule_shape.html#a5d84081d417194e6a80742162a9e5361", null ], + [ "GetSupportingFace", "class_tapered_capsule_shape.html#a9634a3049b0006aefe65e52c72f3b3d1", null ], + [ "GetSurfaceNormal", "class_tapered_capsule_shape.html#ac8a542296217b1a4ccad96133c07a35e", null ], + [ "GetVolume", "class_tapered_capsule_shape.html#a7899c1aa1dbb08bd5b79c2b8d01711a0", null ], + [ "GetWorldSpaceBounds", "class_tapered_capsule_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b", null ], + [ "GetWorldSpaceBounds", "class_tapered_capsule_shape.html#a9f8379fa338802436700b86a07fab3be", null ], + [ "GetWorldSpaceBounds", "class_tapered_capsule_shape.html#a1372f0cdbfcc07e4946972a7aa275ea1", null ], + [ "IsValidScale", "class_tapered_capsule_shape.html#ab5112ce12b79437d76b676c5554a81a2", null ], + [ "MakeScaleValid", "class_tapered_capsule_shape.html#af38c3d6f322fc99ab1cc4b2199b44cb3", null ], + [ "RestoreBinaryState", "class_tapered_capsule_shape.html#ab661a337941a8a5f00b77e9c342f0020", null ], + [ "SaveBinaryState", "class_tapered_capsule_shape.html#a4f7f63f0180a3b3ac54c7401bc9b32d7", null ] +]; \ No newline at end of file diff --git a/class_tapered_capsule_shape.png b/class_tapered_capsule_shape.png new file mode 100644 index 000000000..fe9104209 Binary files /dev/null and b/class_tapered_capsule_shape.png differ diff --git a/class_tapered_capsule_shape_1_1_tapered_capsule-members.html b/class_tapered_capsule_shape_1_1_tapered_capsule-members.html new file mode 100644 index 000000000..ee48c29d4 --- /dev/null +++ b/class_tapered_capsule_shape_1_1_tapered_capsule-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TaperedCapsuleShape::TaperedCapsule Member List
+
+
+ +

This is the complete list of members for TaperedCapsuleShape::TaperedCapsule, including all inherited members.

+ + + + + +
GetConvexRadius() const overrideTaperedCapsuleShape::TaperedCapsuleinlinevirtual
GetSupport(Vec3Arg inDirection) const overrideTaperedCapsuleShape::TaperedCapsuleinlinevirtual
TaperedCapsule(Vec3Arg inTopCenter, Vec3Arg inBottomCenter, float inTopRadius, float inBottomRadius, float inConvexRadius)TaperedCapsuleShape::TaperedCapsuleinline
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_tapered_capsule_shape_1_1_tapered_capsule.html b/class_tapered_capsule_shape_1_1_tapered_capsule.html new file mode 100644 index 000000000..cc7c219ce --- /dev/null +++ b/class_tapered_capsule_shape_1_1_tapered_capsule.html @@ -0,0 +1,256 @@ + + + + + + + +Jolt Physics: TaperedCapsuleShape::TaperedCapsule Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TaperedCapsuleShape::TaperedCapsule Class Referencefinal
+
+
+
+Inheritance diagram for TaperedCapsuleShape::TaperedCapsule:
+
+
+ + +ConvexShape::Support + +
+ + + + + + + + + + + + +

+Public Member Functions

 TaperedCapsule (Vec3Arg inTopCenter, Vec3Arg inBottomCenter, float inTopRadius, float inBottomRadius, float inConvexRadius)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Constructor & Destructor Documentation

+ +

◆ TaperedCapsule()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TaperedCapsuleShape::TaperedCapsule::TaperedCapsule (Vec3Arg inTopCenter,
Vec3Arg inBottomCenter,
float inTopRadius,
float inBottomRadius,
float inConvexRadius 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float TaperedCapsuleShape::TaperedCapsule::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 TaperedCapsuleShape::TaperedCapsule::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_tapered_capsule_shape_1_1_tapered_capsule.js b/class_tapered_capsule_shape_1_1_tapered_capsule.js new file mode 100644 index 000000000..e956d746a --- /dev/null +++ b/class_tapered_capsule_shape_1_1_tapered_capsule.js @@ -0,0 +1,6 @@ +var class_tapered_capsule_shape_1_1_tapered_capsule = +[ + [ "TaperedCapsule", "class_tapered_capsule_shape_1_1_tapered_capsule.html#a065b71c0f63e9ecfd7cfb30d8b724365", null ], + [ "GetConvexRadius", "class_tapered_capsule_shape_1_1_tapered_capsule.html#a44fd5dde5c0b781753c7d58005272a5b", null ], + [ "GetSupport", "class_tapered_capsule_shape_1_1_tapered_capsule.html#a91c8bdbd45deec0013bf3f383adcb149", null ] +]; \ No newline at end of file diff --git a/class_tapered_capsule_shape_1_1_tapered_capsule.png b/class_tapered_capsule_shape_1_1_tapered_capsule.png new file mode 100644 index 000000000..e3995f973 Binary files /dev/null and b/class_tapered_capsule_shape_1_1_tapered_capsule.png differ diff --git a/class_tapered_capsule_shape_settings-members.html b/class_tapered_capsule_shape_settings-members.html new file mode 100644 index 000000000..4e0e14d9a --- /dev/null +++ b/class_tapered_capsule_shape_settings-members.html @@ -0,0 +1,140 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TaperedCapsuleShapeSettings Member List
+
+
+ +

This is the complete list of members for TaperedCapsuleShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
ConvexShapeSettings()=defaultConvexShapeSettings
ConvexShapeSettings(const PhysicsMaterial *inMaterial)ConvexShapeSettingsinlineexplicit
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mDensityConvexShapeSettings
mMaterialConvexShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetDensity(float inDensity)ConvexShapeSettingsinline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_tapered_capsule_shape_settings.html b/class_tapered_capsule_shape_settings.html new file mode 100644 index 000000000..10574460d --- /dev/null +++ b/class_tapered_capsule_shape_settings.html @@ -0,0 +1,218 @@ + + + + + + + +Jolt Physics: TaperedCapsuleShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TaperedCapsuleShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a TaperedCapsuleShape. + More...

+ +

#include <TaperedCapsuleShape.h>

+
+Inheritance diagram for TaperedCapsuleShapeSettings:
+
+
+ + +ConvexShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Public Member Functions inherited from ConvexShapeSettings
 ConvexShapeSettings ()=default
 Constructor.
 
 ConvexShapeSettings (const PhysicsMaterial *inMaterial)
 
void SetDensity (float inDensity)
 Set the density of the object in kg / m^3.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Public Attributes inherited from ConvexShapeSettings
RefConst< PhysicsMaterialmMaterial
 Material assigned to this shape.
 
float mDensity = 1000.0f
 Uniform density of the interior of the convex object (kg / m^3)
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a TaperedCapsuleShape.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_tapered_capsule_shape_settings.png b/class_tapered_capsule_shape_settings.png new file mode 100644 index 000000000..75c08ffe0 Binary files /dev/null and b/class_tapered_capsule_shape_settings.png differ diff --git a/class_tapered_cylinder_shape-members.html b/class_tapered_cylinder_shape-members.html new file mode 100644 index 000000000..61be98b05 --- /dev/null +++ b/class_tapered_cylinder_shape-members.html @@ -0,0 +1,207 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TaperedCylinderShape Member List
+
+
+ +

This is the complete list of members for TaperedCylinderShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideConvexShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideConvexShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideTaperedCylinderShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideTaperedCylinderShapevirtual
ConvexShape(EShapeSubType inSubType)ConvexShapeinlineexplicit
ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)ConvexShapeinline
ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial)ConvexShapeinline
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideTaperedCylinderShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideConvexShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideConvexShapevirtual
ESupportMode enum nameConvexShape
GetBottomRadius() constTaperedCylinderShapeinline
GetCenterOfMass() const overrideTaperedCylinderShapeinlinevirtual
GetConvexRadius() constTaperedCylinderShapeinline
GetDensity() constConvexShapeinline
GetHalfHeight() constTaperedCylinderShapeinline
GetInnerRadius() const overrideTaperedCylinderShapeinlinevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const overrideTaperedCylinderShapevirtual
GetMassProperties() const overrideTaperedCylinderShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideConvexShapeinlinevirtual
GetMaterial() constConvexShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideTaperedCylinderShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideConvexShapevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideConvexShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const overrideTaperedCylinderShapevirtual
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideTaperedCylinderShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideTaperedCylinderShapevirtual
GetTopRadius() constTaperedCylinderShapeinline
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideTaperedCylinderShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideTaperedCylinderShapevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideTaperedCylinderShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) const overrideTaperedCylinderShapevirtual
MakeScaleValid(Vec3Arg inScale) const overrideTaperedCylinderShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() constShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideTaperedCylinderShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) overrideConvexShapevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) const overrideTaperedCylinderShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) const overrideConvexShapevirtual
Shape::SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetDensity(float inDensity)ConvexShapeinline
SetEmbedded() constRefTarget< Shape >inline
SetMaterial(const PhysicsMaterial *inMaterial)ConvexShapeinline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()TaperedCylinderShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
sUnitSphereTrianglesConvexShapeprotectedstatic
SupportingFace typedefShape
TaperedCylinderShape()TaperedCylinderShapeinline
TaperedCylinderShape(const TaperedCylinderShapeSettings &inSettings, ShapeResult &outResult)TaperedCylinderShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_tapered_cylinder_shape.html b/class_tapered_cylinder_shape.html new file mode 100644 index 000000000..1b745c3ce --- /dev/null +++ b/class_tapered_cylinder_shape.html @@ -0,0 +1,1361 @@ + + + + + + + +Jolt Physics: TaperedCylinderShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TaperedCylinderShape Class Referencefinal
+
+
+ +

A cylinder with different top and bottom radii. + More...

+ +

#include <TaperedCylinderShape.h>

+
+Inheritance diagram for TaperedCylinderShape:
+
+
+ + +ConvexShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + + + +

+Classes

class  TaperedCylinder
 
class  TCSGetTrianglesContext
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE TaperedCylinderShape ()
 Constructor.
 
 TaperedCylinderShape (const TaperedCylinderShapeSettings &inSettings, ShapeResult &outResult)
 
float GetTopRadius () const
 Get top radius of the tapered cylinder.
 
float GetBottomRadius () const
 Get bottom radius of the tapered cylinder.
 
float GetConvexRadius () const
 Get convex radius of the tapered cylinder.
 
float GetHalfHeight () const
 Get half height of the tapered cylinder.
 
virtual Vec3 GetCenterOfMass () const override
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual const SupportGetSupportFunction (ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
- Public Member Functions inherited from ConvexShape
JPH_OVERRIDE_NEW_DELETE ConvexShape (EShapeSubType inSubType)
 Constructor.
 
 ConvexShape (EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)
 
 ConvexShape (EShapeSubType inSubType, const PhysicsMaterial *inMaterial)
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
void SetMaterial (const PhysicsMaterial *inMaterial)
 Material of the shape.
 
const PhysicsMaterialGetMaterial () const
 
void SetDensity (float inDensity)
 Set density of the shape (kg / m^3)
 
float GetDensity () const
 Get density of the shape (kg / m^3)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const override
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual bool MustBeStatic () const
 Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from ConvexShape
static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConvexShape
enum class  ESupportMode { ExcludeConvexRadius +, IncludeConvexRadius +, Default + }
 How the GetSupport function should behave. More...
 
- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from ConvexShape
static const StaticArray< Vec3, 384 > sUnitSphereTriangles
 Vertex list that forms a unit sphere.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A cylinder with different top and bottom radii.

+

Constructor & Destructor Documentation

+ +

◆ TaperedCylinderShape() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE TaperedCylinderShape::TaperedCylinderShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ TaperedCylinderShape() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
TaperedCylinderShape::TaperedCylinderShape (const TaperedCylinderShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TaperedCylinderShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TaperedCylinderShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TaperedCylinderShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ GetBottomRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float TaperedCylinderShape::GetBottomRadius () const
+
+inline
+
+ +

Get bottom radius of the tapered cylinder.

+ +
+
+ +

◆ GetCenterOfMass()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Vec3 TaperedCylinderShape::GetCenterOfMass () const
+
+inlineoverridevirtual
+
+ +

All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float TaperedCylinderShape::GetConvexRadius () const
+
+inline
+
+ +

Get convex radius of the tapered cylinder.

+ +
+
+ +

◆ GetHalfHeight()

+ +
+
+ + + + + +
+ + + + + + + +
float TaperedCylinderShape::GetHalfHeight () const
+
+inline
+
+ +

Get half height of the tapered cylinder.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float TaperedCylinderShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox TaperedCylinderShape::GetLocalBounds () const
+
+overridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties TaperedCylinderShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats TaperedCylinderShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
const ConvexShape::Support * TaperedCylinderShape::GetSupportFunction (ESupportMode inMode,
SupportBufferinBuffer,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Returns an object that provides the GetSupport function for this shape. inMode determines if this support function includes or excludes the convex radius. of the values returned by the GetSupport function. This improves numerical accuracy of the results. inScale scales this shape in local space.

+ +

Implements ConvexShape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TaperedCylinderShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 TaperedCylinderShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTopRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float TaperedCylinderShape::GetTopRadius () const
+
+inline
+
+ +

Get top radius of the tapered cylinder.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int TaperedCylinderShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+overridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TaperedCylinderShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
float TaperedCylinderShape::GetVolume () const
+
+overridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ IsValidScale()

+ +
+
+ + + + + +
+ + + + + + + + +
bool TaperedCylinderShape::IsValidScale (Vec3Arg inScale) const
+
+overridevirtual
+
+

Test if inScale is a valid scale for this shape. Some shapes can only be scaled uniformly, compound shapes cannot handle shapes being rotated and scaled (this would cause shearing), scale can never be zero. When the scale is invalid, the function will return false.

+

Here's a list of supported scales:

    +
  • SphereShape: Scale must be uniform (signs of scale are ignored).
  • +
  • BoxShape: Any scale supported (signs of scale are ignored).
  • +
  • TriangleShape: Any scale supported when convex radius is zero, otherwise only uniform scale supported.
  • +
  • CapsuleShape: Scale must be uniform (signs of scale are ignored).
  • +
  • TaperedCapsuleShape: Scale must be uniform (sign of Y scale can be used to flip the capsule).
  • +
  • CylinderShape: Scale must be uniform in XZ plane, Y can scale independently (signs of scale are ignored).
  • +
  • RotatedTranslatedShape: Scale must not cause shear in the child shape.
  • +
  • CompoundShape: Scale must not cause shear in any of the child shapes.
  • +
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ MakeScaleValid()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 TaperedCylinderShape::MakeScaleValid (Vec3Arg inScale) const
+
+overridevirtual
+
+

This function will make sure that if you wrap this shape in a ScaledShape that the scale is valid. Note that this involves discarding components of the scale that are invalid, so the resulting scaled shape may be different than the requested scale. Compare the return value of this function with the scale you passed in to detect major inconsistencies and possibly warn the user.

Parameters
+ + +
inScaleLocal space scale for this shape.
+
+
+
Returns
Scale that can be used to wrap this shape in a ScaledShape. IsValidScale will return true for this scale.
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void TaperedCylinderShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void TaperedCylinderShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void TaperedCylinderShape::sRegister ()
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_tapered_cylinder_shape.js b/class_tapered_cylinder_shape.js new file mode 100644 index 000000000..738e3b74a --- /dev/null +++ b/class_tapered_cylinder_shape.js @@ -0,0 +1,29 @@ +var class_tapered_cylinder_shape = +[ + [ "TaperedCylinder", "class_tapered_cylinder_shape_1_1_tapered_cylinder.html", "class_tapered_cylinder_shape_1_1_tapered_cylinder" ], + [ "TCSGetTrianglesContext", "class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html", "class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context" ], + [ "TaperedCylinderShape", "class_tapered_cylinder_shape.html#af06fbca036211e78798e2605a8a70fd5", null ], + [ "TaperedCylinderShape", "class_tapered_cylinder_shape.html#a536246606d4ade28265a07058fc6fe1c", null ], + [ "CollidePoint", "class_tapered_cylinder_shape.html#a369ff304ba00c6f9a8165ce7bc19d7ea", null ], + [ "CollideSoftBodyVertices", "class_tapered_cylinder_shape.html#aa9bc27b1e8dd94f290a9ab497d755365", null ], + [ "Draw", "class_tapered_cylinder_shape.html#a47be7d0b3613f8a0b16d7eef11a2dafc", null ], + [ "GetBottomRadius", "class_tapered_cylinder_shape.html#aaee64d4f2c1c12cb97908be7872dbd66", null ], + [ "GetCenterOfMass", "class_tapered_cylinder_shape.html#aeb0b2e5422e70ba7e8c707f3445e960a", null ], + [ "GetConvexRadius", "class_tapered_cylinder_shape.html#a626dfe4f1a56689fa8e3792c2c2f47b1", null ], + [ "GetHalfHeight", "class_tapered_cylinder_shape.html#af7c1b08a97e16176cdaf429accaade8b", null ], + [ "GetInnerRadius", "class_tapered_cylinder_shape.html#a147aacad19ced7e278abd34f6fcf2dd8", null ], + [ "GetLocalBounds", "class_tapered_cylinder_shape.html#a60b656f7b68e0418f44baad933706675", null ], + [ "GetMassProperties", "class_tapered_cylinder_shape.html#a2b7b27c9244c7e2812161608125fbebd", null ], + [ "GetStats", "class_tapered_cylinder_shape.html#a8807be9437040acbac4cdd69baa20635", null ], + [ "GetSupportFunction", "class_tapered_cylinder_shape.html#a2522fd2429951460c394308a0545440d", null ], + [ "GetSupportingFace", "class_tapered_cylinder_shape.html#a7974bcb9e5385af82984e0b7a478c839", null ], + [ "GetSurfaceNormal", "class_tapered_cylinder_shape.html#ac4cf24a6fd1f49bea27939615891c332", null ], + [ "GetTopRadius", "class_tapered_cylinder_shape.html#a4327c117bf16630693b65d1a8f2edd7e", null ], + [ "GetTrianglesNext", "class_tapered_cylinder_shape.html#a20441e1137b077b87cd592679377cf62", null ], + [ "GetTrianglesStart", "class_tapered_cylinder_shape.html#a2aca46ff56852aa97e3734a9fff25bb8", null ], + [ "GetVolume", "class_tapered_cylinder_shape.html#a59bf42adddb7139199282ee755299782", null ], + [ "IsValidScale", "class_tapered_cylinder_shape.html#af79a03631dba5393a3964064aafc661f", null ], + [ "MakeScaleValid", "class_tapered_cylinder_shape.html#ab6d103843721053ea6e010723c32460b", null ], + [ "RestoreBinaryState", "class_tapered_cylinder_shape.html#ab19eef4bfc4b695b40c4878edf549333", null ], + [ "SaveBinaryState", "class_tapered_cylinder_shape.html#a4a9d2c6c60f31564e1fc79d8407bf3a3", null ] +]; \ No newline at end of file diff --git a/class_tapered_cylinder_shape.png b/class_tapered_cylinder_shape.png new file mode 100644 index 000000000..4e3a2cdcc Binary files /dev/null and b/class_tapered_cylinder_shape.png differ diff --git a/class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context-members.html b/class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context-members.html new file mode 100644 index 000000000..72e8cabfa --- /dev/null +++ b/class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TaperedCylinderShape::TCSGetTrianglesContext Member List
+
+
+ +

This is the complete list of members for TaperedCylinderShape::TCSGetTrianglesContext, including all inherited members.

+ + + + +
mProcessedTaperedCylinderShape::TCSGetTrianglesContext
mTransformTaperedCylinderShape::TCSGetTrianglesContext
TCSGetTrianglesContext(Mat44Arg inTransform)TaperedCylinderShape::TCSGetTrianglesContextinlineexplicit
+
+ + + + diff --git a/class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html b/class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html new file mode 100644 index 000000000..1450e03b7 --- /dev/null +++ b/class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html @@ -0,0 +1,190 @@ + + + + + + + +Jolt Physics: TaperedCylinderShape::TCSGetTrianglesContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TaperedCylinderShape::TCSGetTrianglesContext Class Reference
+
+
+ + + + +

+Public Member Functions

 TCSGetTrianglesContext (Mat44Arg inTransform)
 
+ + + + + +

+Public Attributes

Mat44 mTransform
 
uint mProcessed = 0
 
+

Constructor & Destructor Documentation

+ +

◆ TCSGetTrianglesContext()

+ +
+
+ + + + + +
+ + + + + + + + +
TaperedCylinderShape::TCSGetTrianglesContext::TCSGetTrianglesContext (Mat44Arg inTransform)
+
+inlineexplicit
+
+ +
+
+

Member Data Documentation

+ +

◆ mProcessed

+ +
+
+ + + + +
uint TaperedCylinderShape::TCSGetTrianglesContext::mProcessed = 0
+
+ +
+
+ +

◆ mTransform

+ +
+
+ + + + +
Mat44 TaperedCylinderShape::TCSGetTrianglesContext::mTransform
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.js b/class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.js new file mode 100644 index 000000000..207410cb6 --- /dev/null +++ b/class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.js @@ -0,0 +1,6 @@ +var class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context = +[ + [ "TCSGetTrianglesContext", "class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html#a53e2d1e06cfd558ec2629b5cf74014b2", null ], + [ "mProcessed", "class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html#a6682819b6e1c3b726e1cdad0603430f4", null ], + [ "mTransform", "class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html#ab4f1e69130b52eca9b315c2e2a808202", null ] +]; \ No newline at end of file diff --git a/class_tapered_cylinder_shape_1_1_tapered_cylinder-members.html b/class_tapered_cylinder_shape_1_1_tapered_cylinder-members.html new file mode 100644 index 000000000..2bce8c3de --- /dev/null +++ b/class_tapered_cylinder_shape_1_1_tapered_cylinder-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TaperedCylinderShape::TaperedCylinder Member List
+
+
+ +

This is the complete list of members for TaperedCylinderShape::TaperedCylinder, including all inherited members.

+ + + + + +
GetConvexRadius() const overrideTaperedCylinderShape::TaperedCylinderinlinevirtual
GetSupport(Vec3Arg inDirection) const overrideTaperedCylinderShape::TaperedCylinderinlinevirtual
TaperedCylinder(float inTop, float inBottom, float inTopRadius, float inBottomRadius, float inConvexRadius)TaperedCylinderShape::TaperedCylinderinline
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_tapered_cylinder_shape_1_1_tapered_cylinder.html b/class_tapered_cylinder_shape_1_1_tapered_cylinder.html new file mode 100644 index 000000000..666168ac4 --- /dev/null +++ b/class_tapered_cylinder_shape_1_1_tapered_cylinder.html @@ -0,0 +1,256 @@ + + + + + + + +Jolt Physics: TaperedCylinderShape::TaperedCylinder Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TaperedCylinderShape::TaperedCylinder Class Referencefinal
+
+
+
+Inheritance diagram for TaperedCylinderShape::TaperedCylinder:
+
+
+ + +ConvexShape::Support + +
+ + + + + + + + + + + + +

+Public Member Functions

 TaperedCylinder (float inTop, float inBottom, float inTopRadius, float inBottomRadius, float inConvexRadius)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Constructor & Destructor Documentation

+ +

◆ TaperedCylinder()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TaperedCylinderShape::TaperedCylinder::TaperedCylinder (float inTop,
float inBottom,
float inTopRadius,
float inBottomRadius,
float inConvexRadius 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float TaperedCylinderShape::TaperedCylinder::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 TaperedCylinderShape::TaperedCylinder::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_tapered_cylinder_shape_1_1_tapered_cylinder.js b/class_tapered_cylinder_shape_1_1_tapered_cylinder.js new file mode 100644 index 000000000..d2d35f81d --- /dev/null +++ b/class_tapered_cylinder_shape_1_1_tapered_cylinder.js @@ -0,0 +1,6 @@ +var class_tapered_cylinder_shape_1_1_tapered_cylinder = +[ + [ "TaperedCylinder", "class_tapered_cylinder_shape_1_1_tapered_cylinder.html#afe58c3a31719ae32daf115455ff5ae7c", null ], + [ "GetConvexRadius", "class_tapered_cylinder_shape_1_1_tapered_cylinder.html#a1a34aff6da2ce5e2a274d484a8460cb4", null ], + [ "GetSupport", "class_tapered_cylinder_shape_1_1_tapered_cylinder.html#a450d358fbfb9f7313c000bfad68142b5", null ] +]; \ No newline at end of file diff --git a/class_tapered_cylinder_shape_1_1_tapered_cylinder.png b/class_tapered_cylinder_shape_1_1_tapered_cylinder.png new file mode 100644 index 000000000..854ad75ca Binary files /dev/null and b/class_tapered_cylinder_shape_1_1_tapered_cylinder.png differ diff --git a/class_tapered_cylinder_shape_settings-members.html b/class_tapered_cylinder_shape_settings-members.html new file mode 100644 index 000000000..8c96de6ae --- /dev/null +++ b/class_tapered_cylinder_shape_settings-members.html @@ -0,0 +1,140 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TaperedCylinderShapeSettings Member List
+
+
+ +

This is the complete list of members for TaperedCylinderShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
ConvexShapeSettings()=defaultConvexShapeSettings
ConvexShapeSettings(const PhysicsMaterial *inMaterial)ConvexShapeSettingsinlineexplicit
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mDensityConvexShapeSettings
mMaterialConvexShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetDensity(float inDensity)ConvexShapeSettingsinline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_tapered_cylinder_shape_settings.html b/class_tapered_cylinder_shape_settings.html new file mode 100644 index 000000000..49921f58f --- /dev/null +++ b/class_tapered_cylinder_shape_settings.html @@ -0,0 +1,218 @@ + + + + + + + +Jolt Physics: TaperedCylinderShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TaperedCylinderShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a TaperedCylinderShape. + More...

+ +

#include <TaperedCylinderShape.h>

+
+Inheritance diagram for TaperedCylinderShapeSettings:
+
+
+ + +ConvexShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Public Member Functions inherited from ConvexShapeSettings
 ConvexShapeSettings ()=default
 Constructor.
 
 ConvexShapeSettings (const PhysicsMaterial *inMaterial)
 
void SetDensity (float inDensity)
 Set the density of the object in kg / m^3.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Public Attributes inherited from ConvexShapeSettings
RefConst< PhysicsMaterialmMaterial
 Material assigned to this shape.
 
float mDensity = 1000.0f
 Uniform density of the interior of the convex object (kg / m^3)
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a TaperedCylinderShape.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_tapered_cylinder_shape_settings.png b/class_tapered_cylinder_shape_settings.png new file mode 100644 index 000000000..7a933ceb1 Binary files /dev/null and b/class_tapered_cylinder_shape_settings.png differ diff --git a/class_temp_allocator-members.html b/class_temp_allocator-members.html new file mode 100644 index 000000000..61e39d83c --- /dev/null +++ b/class_temp_allocator-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TempAllocator Member List
+
+
+ +

This is the complete list of members for TempAllocator, including all inherited members.

+ + + + + + + +
Allocate(uint inSize)=0TempAllocatorpure virtual
Free(void *inAddress, uint inSize)=0TempAllocatorpure virtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~TempAllocator()=defaultTempAllocatorvirtual
+
+ + + + diff --git a/class_temp_allocator.html b/class_temp_allocator.html new file mode 100644 index 000000000..626cdf1cc --- /dev/null +++ b/class_temp_allocator.html @@ -0,0 +1,255 @@ + + + + + + + +Jolt Physics: TempAllocator Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TempAllocator Class Referenceabstract
+
+
+ +

#include <TempAllocator.h>

+
+Inheritance diagram for TempAllocator:
+
+
+ + +NonCopyable +TempAllocatorImpl +TempAllocatorImplWithMallocFallback +TempAllocatorMalloc + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual JPH_OVERRIDE_NEW_DELETE ~TempAllocator ()=default
 Destructor.
 
virtual void * Allocate (uint inSize)=0
 Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
 
virtual void Free (void *inAddress, uint inSize)=0
 Frees inSize bytes of memory located at inAddress.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Allocator for temporary allocations. This allocator works as a stack: The blocks must always be freed in the reverse order as they are allocated. Note that allocations and frees can take place from different threads, but the order is guaranteed though job dependencies, so it is not needed to use any form of locking.

+

Constructor & Destructor Documentation

+ +

◆ ~TempAllocator()

+ +
+
+ + + + + +
+ + + + + + + +
virtual JPH_OVERRIDE_NEW_DELETE TempAllocator::~TempAllocator ()
+
+virtualdefault
+
+ +

Destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Allocate()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void * TempAllocator::Allocate (uint inSize)
+
+pure virtual
+
+ +

Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.

+ +

Implemented in TempAllocatorImpl, TempAllocatorMalloc, and TempAllocatorImplWithMallocFallback.

+ +
+
+ +

◆ Free()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void TempAllocator::Free (void * inAddress,
uint inSize 
)
+
+pure virtual
+
+ +

Frees inSize bytes of memory located at inAddress.

+ +

Implemented in TempAllocatorImpl, TempAllocatorMalloc, and TempAllocatorImplWithMallocFallback.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_temp_allocator.js b/class_temp_allocator.js new file mode 100644 index 000000000..de6c882b3 --- /dev/null +++ b/class_temp_allocator.js @@ -0,0 +1,6 @@ +var class_temp_allocator = +[ + [ "~TempAllocator", "class_temp_allocator.html#ad2799eadcc5b5972a55118e6c4156e25", null ], + [ "Allocate", "class_temp_allocator.html#aa62f890910ee965efea7244953f3c65e", null ], + [ "Free", "class_temp_allocator.html#a1d9399cbf93c253a7f03d8ffea249bfe", null ] +]; \ No newline at end of file diff --git a/class_temp_allocator.png b/class_temp_allocator.png new file mode 100644 index 000000000..017648bcc Binary files /dev/null and b/class_temp_allocator.png differ diff --git a/class_temp_allocator_impl-members.html b/class_temp_allocator_impl-members.html new file mode 100644 index 000000000..b4b10baa3 --- /dev/null +++ b/class_temp_allocator_impl-members.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TempAllocatorImpl Member List
+
+
+ +

This is the complete list of members for TempAllocatorImpl, including all inherited members.

+ + + + + + + + + + + + + + +
Allocate(uint inSize) overrideTempAllocatorImplinlinevirtual
CanAllocate(uint inSize) constTempAllocatorImplinline
Free(void *inAddress, uint inSize) overrideTempAllocatorImplinlinevirtual
GetSize() constTempAllocatorImplinline
GetUsage() constTempAllocatorImplinline
IsEmpty() constTempAllocatorImplinline
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
OwnsMemory(const void *inAddress) constTempAllocatorImplinline
TempAllocatorImpl(uint inSize)TempAllocatorImplinlineexplicit
~TempAllocator()=defaultTempAllocatorvirtual
~TempAllocatorImpl() overrideTempAllocatorImplinlinevirtual
+
+ + + + diff --git a/class_temp_allocator_impl.html b/class_temp_allocator_impl.html new file mode 100644 index 000000000..edfb758e7 --- /dev/null +++ b/class_temp_allocator_impl.html @@ -0,0 +1,443 @@ + + + + + + + +Jolt Physics: TempAllocatorImpl Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TempAllocatorImpl Class Referencefinal
+
+
+ +

Default implementation of the temp allocator that allocates a large block through malloc upfront. + More...

+ +

#include <TempAllocator.h>

+
+Inheritance diagram for TempAllocatorImpl:
+
+
+ + +TempAllocator +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE TempAllocatorImpl (uint inSize)
 Constructs the allocator with a maximum allocatable size of inSize.
 
virtual ~TempAllocatorImpl () override
 Destructor, frees the block.
 
virtual void * Allocate (uint inSize) override
 Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
 
virtual void Free (void *inAddress, uint inSize) override
 Frees inSize bytes of memory located at inAddress.
 
bool IsEmpty () const
 Check if no allocations have been made.
 
uint GetSize () const
 Get the total size of the fixed buffer.
 
uint GetUsage () const
 Get current usage in bytes of the buffer.
 
bool CanAllocate (uint inSize) const
 Check if an allocation of inSize can be made in this fixed buffer allocator.
 
bool OwnsMemory (const void *inAddress) const
 Check if memory block at inAddress is owned by this allocator.
 
- Public Member Functions inherited from TempAllocator
virtual JPH_OVERRIDE_NEW_DELETE ~TempAllocator ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Default implementation of the temp allocator that allocates a large block through malloc upfront.

+

Constructor & Destructor Documentation

+ +

◆ TempAllocatorImpl()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE TempAllocatorImpl::TempAllocatorImpl (uint inSize)
+
+inlineexplicit
+
+ +

Constructs the allocator with a maximum allocatable size of inSize.

+ +
+
+ +

◆ ~TempAllocatorImpl()

+ +
+
+ + + + + +
+ + + + + + + +
virtual TempAllocatorImpl::~TempAllocatorImpl ()
+
+inlineoverridevirtual
+
+ +

Destructor, frees the block.

+ +
+
+

Member Function Documentation

+ +

◆ Allocate()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void * TempAllocatorImpl::Allocate (uint inSize)
+
+inlineoverridevirtual
+
+ +

Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.

+ +

Implements TempAllocator.

+ +
+
+ +

◆ CanAllocate()

+ +
+
+ + + + + +
+ + + + + + + + +
bool TempAllocatorImpl::CanAllocate (uint inSize) const
+
+inline
+
+ +

Check if an allocation of inSize can be made in this fixed buffer allocator.

+ +
+
+ +

◆ Free()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void TempAllocatorImpl::Free (void * inAddress,
uint inSize 
)
+
+inlineoverridevirtual
+
+ +

Frees inSize bytes of memory located at inAddress.

+ +

Implements TempAllocator.

+ +
+
+ +

◆ GetSize()

+ +
+
+ + + + + +
+ + + + + + + +
uint TempAllocatorImpl::GetSize () const
+
+inline
+
+ +

Get the total size of the fixed buffer.

+ +
+
+ +

◆ GetUsage()

+ +
+
+ + + + + +
+ + + + + + + +
uint TempAllocatorImpl::GetUsage () const
+
+inline
+
+ +

Get current usage in bytes of the buffer.

+ +
+
+ +

◆ IsEmpty()

+ +
+
+ + + + + +
+ + + + + + + +
bool TempAllocatorImpl::IsEmpty () const
+
+inline
+
+ +

Check if no allocations have been made.

+ +
+
+ +

◆ OwnsMemory()

+ +
+
+ + + + + +
+ + + + + + + + +
bool TempAllocatorImpl::OwnsMemory (const void * inAddress) const
+
+inline
+
+ +

Check if memory block at inAddress is owned by this allocator.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_temp_allocator_impl.js b/class_temp_allocator_impl.js new file mode 100644 index 000000000..07c5cb56e --- /dev/null +++ b/class_temp_allocator_impl.js @@ -0,0 +1,12 @@ +var class_temp_allocator_impl = +[ + [ "TempAllocatorImpl", "class_temp_allocator_impl.html#a9edf09cdde4563a221184b0a8653b97a", null ], + [ "~TempAllocatorImpl", "class_temp_allocator_impl.html#a7ced1650e61db4a4917ac8eb2e1cbe30", null ], + [ "Allocate", "class_temp_allocator_impl.html#adf9ef85969afed92a4fb14b1e6ff1ac5", null ], + [ "CanAllocate", "class_temp_allocator_impl.html#ac698ca89fe759ecd74899cd93d4028a6", null ], + [ "Free", "class_temp_allocator_impl.html#aa7b2ea67b67c57c776d4c2a415b430ba", null ], + [ "GetSize", "class_temp_allocator_impl.html#ac8ffac8efe60b8922f9da58082f7dcae", null ], + [ "GetUsage", "class_temp_allocator_impl.html#af2fadcba643a00f16de5f59e0cee0579", null ], + [ "IsEmpty", "class_temp_allocator_impl.html#ac998e260e54f25b3493d30e24b15bef2", null ], + [ "OwnsMemory", "class_temp_allocator_impl.html#a5d90cdbf402b46a9429593da08008bdc", null ] +]; \ No newline at end of file diff --git a/class_temp_allocator_impl.png b/class_temp_allocator_impl.png new file mode 100644 index 000000000..8993be98f Binary files /dev/null and b/class_temp_allocator_impl.png differ diff --git a/class_temp_allocator_impl_with_malloc_fallback-members.html b/class_temp_allocator_impl_with_malloc_fallback-members.html new file mode 100644 index 000000000..3f710a1f8 --- /dev/null +++ b/class_temp_allocator_impl_with_malloc_fallback-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TempAllocatorImplWithMallocFallback Member List
+
+
+ +

This is the complete list of members for TempAllocatorImplWithMallocFallback, including all inherited members.

+ + + + + + + + +
Allocate(uint inSize) overrideTempAllocatorImplWithMallocFallbackinlinevirtual
Free(void *inAddress, uint inSize) overrideTempAllocatorImplWithMallocFallbackinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
TempAllocatorImplWithMallocFallback(uint inSize)TempAllocatorImplWithMallocFallbackinlineexplicit
~TempAllocator()=defaultTempAllocatorvirtual
+
+ + + + diff --git a/class_temp_allocator_impl_with_malloc_fallback.html b/class_temp_allocator_impl_with_malloc_fallback.html new file mode 100644 index 000000000..a5f8fec36 --- /dev/null +++ b/class_temp_allocator_impl_with_malloc_fallback.html @@ -0,0 +1,261 @@ + + + + + + + +Jolt Physics: TempAllocatorImplWithMallocFallback Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TempAllocatorImplWithMallocFallback Class Referencefinal
+
+
+ +

Implementation of the TempAllocator that tries to allocate from a large preallocated block, but falls back to malloc when it is exhausted. + More...

+ +

#include <TempAllocator.h>

+
+Inheritance diagram for TempAllocatorImplWithMallocFallback:
+
+
+ + +TempAllocator +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE TempAllocatorImplWithMallocFallback (uint inSize)
 Constructs the allocator with an initial fixed block if inSize.
 
virtual void * Allocate (uint inSize) override
 Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
 
virtual void Free (void *inAddress, uint inSize) override
 Frees inSize bytes of memory located at inAddress.
 
- Public Member Functions inherited from TempAllocator
virtual JPH_OVERRIDE_NEW_DELETE ~TempAllocator ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Implementation of the TempAllocator that tries to allocate from a large preallocated block, but falls back to malloc when it is exhausted.

+

Constructor & Destructor Documentation

+ +

◆ TempAllocatorImplWithMallocFallback()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE TempAllocatorImplWithMallocFallback::TempAllocatorImplWithMallocFallback (uint inSize)
+
+inlineexplicit
+
+ +

Constructs the allocator with an initial fixed block if inSize.

+ +
+
+

Member Function Documentation

+ +

◆ Allocate()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void * TempAllocatorImplWithMallocFallback::Allocate (uint inSize)
+
+inlineoverridevirtual
+
+ +

Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.

+ +

Implements TempAllocator.

+ +
+
+ +

◆ Free()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void TempAllocatorImplWithMallocFallback::Free (void * inAddress,
uint inSize 
)
+
+inlineoverridevirtual
+
+ +

Frees inSize bytes of memory located at inAddress.

+ +

Implements TempAllocator.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_temp_allocator_impl_with_malloc_fallback.js b/class_temp_allocator_impl_with_malloc_fallback.js new file mode 100644 index 000000000..5167e7c9c --- /dev/null +++ b/class_temp_allocator_impl_with_malloc_fallback.js @@ -0,0 +1,6 @@ +var class_temp_allocator_impl_with_malloc_fallback = +[ + [ "TempAllocatorImplWithMallocFallback", "class_temp_allocator_impl_with_malloc_fallback.html#a1dde46a11157eaac198e43fb63be9d82", null ], + [ "Allocate", "class_temp_allocator_impl_with_malloc_fallback.html#ac20fa2756768654e3228e40b17ed6656", null ], + [ "Free", "class_temp_allocator_impl_with_malloc_fallback.html#a2cdead10d53265be2316934e55684b29", null ] +]; \ No newline at end of file diff --git a/class_temp_allocator_impl_with_malloc_fallback.png b/class_temp_allocator_impl_with_malloc_fallback.png new file mode 100644 index 000000000..2d35bb4af Binary files /dev/null and b/class_temp_allocator_impl_with_malloc_fallback.png differ diff --git a/class_temp_allocator_malloc-members.html b/class_temp_allocator_malloc-members.html new file mode 100644 index 000000000..49a9b0dd0 --- /dev/null +++ b/class_temp_allocator_malloc-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TempAllocatorMalloc Member List
+
+
+ +

This is the complete list of members for TempAllocatorMalloc, including all inherited members.

+ + + + + + + +
Allocate(uint inSize) overrideTempAllocatorMallocinlinevirtual
Free(void *inAddress, uint inSize) overrideTempAllocatorMallocinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~TempAllocator()=defaultTempAllocatorvirtual
+
+ + + + diff --git a/class_temp_allocator_malloc.html b/class_temp_allocator_malloc.html new file mode 100644 index 000000000..f5c6ff5cc --- /dev/null +++ b/class_temp_allocator_malloc.html @@ -0,0 +1,226 @@ + + + + + + + +Jolt Physics: TempAllocatorMalloc Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TempAllocatorMalloc Class Referencefinal
+
+
+ +

#include <TempAllocator.h>

+
+Inheritance diagram for TempAllocatorMalloc:
+
+
+ + +TempAllocator +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual JPH_OVERRIDE_NEW_DELETE void * Allocate (uint inSize) override
 Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.
 
virtual void Free (void *inAddress, uint inSize) override
 Frees inSize bytes of memory located at inAddress.
 
- Public Member Functions inherited from TempAllocator
virtual JPH_OVERRIDE_NEW_DELETE ~TempAllocator ()=default
 Destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

Implementation of the TempAllocator that just falls back to malloc/free Note: This can be quite slow when running in the debugger as large memory blocks need to be initialized with 0xcd

+

Member Function Documentation

+ +

◆ Allocate()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual JPH_OVERRIDE_NEW_DELETE void * TempAllocatorMalloc::Allocate (uint inSize)
+
+inlineoverridevirtual
+
+ +

Allocates inSize bytes of memory, returned memory address must be JPH_RVECTOR_ALIGNMENT byte aligned.

+ +

Implements TempAllocator.

+ +
+
+ +

◆ Free()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void TempAllocatorMalloc::Free (void * inAddress,
uint inSize 
)
+
+inlineoverridevirtual
+
+ +

Frees inSize bytes of memory located at inAddress.

+ +

Implements TempAllocator.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_temp_allocator_malloc.js b/class_temp_allocator_malloc.js new file mode 100644 index 000000000..7a4165ab2 --- /dev/null +++ b/class_temp_allocator_malloc.js @@ -0,0 +1,5 @@ +var class_temp_allocator_malloc = +[ + [ "Allocate", "class_temp_allocator_malloc.html#a985a35b24e08ce333e10a712578458e6", null ], + [ "Free", "class_temp_allocator_malloc.html#a03b9827f7300d701f22d6ca53ba9d686", null ] +]; \ No newline at end of file diff --git a/class_temp_allocator_malloc.png b/class_temp_allocator_malloc.png new file mode 100644 index 000000000..e59707246 Binary files /dev/null and b/class_temp_allocator_malloc.png differ diff --git a/class_tracked_vehicle_controller-members.html b/class_tracked_vehicle_controller-members.html new file mode 100644 index 000000000..49f8d74f9 --- /dev/null +++ b/class_tracked_vehicle_controller-members.html @@ -0,0 +1,168 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TrackedVehicleController Member List
+
+
+ +

This is the complete list of members for TrackedVehicleController, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< VehicleController >inline
AllowSleep() const overrideTrackedVehicleControllerprotectedvirtual
cEmbeddedRefTarget< VehicleController >protectedstatic
ConstructWheel(const WheelSettings &inWheel) const overrideTrackedVehicleControllerinlineprotectedvirtual
Draw(DebugRenderer *inRenderer) const overrideTrackedVehicleControllerprotectedvirtual
GetBrakeInput() constTrackedVehicleControllerinline
GetEngine() constTrackedVehicleControllerinline
GetEngine()TrackedVehicleControllerinline
GetForwardInput() constTrackedVehicleControllerinline
GetLeftRatio() constTrackedVehicleControllerinline
GetRefCount() constRefTarget< VehicleController >inline
GetRightRatio() constTrackedVehicleControllerinline
GetTracks() constTrackedVehicleControllerinline
GetTracks()TrackedVehicleControllerinline
GetTransmission() constTrackedVehicleControllerinline
GetTransmission()TrackedVehicleControllerinline
mBrakeInputTrackedVehicleControllerprotected
mConstraintVehicleControllerprotected
mEngineTrackedVehicleControllerprotected
mForwardInputTrackedVehicleControllerprotected
mLeftRatioTrackedVehicleControllerprotected
mRefCountRefTarget< VehicleController >mutableprotected
mRightRatioTrackedVehicleControllerprotected
mRPMMeterPositionTrackedVehicleControllerprotected
mRPMMeterSizeTrackedVehicleControllerprotected
mTracksTrackedVehicleControllerprotected
mTransmissionTrackedVehicleControllerprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< VehicleController >::operator=(const RefTarget &)RefTarget< VehicleController >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PostCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) overrideTrackedVehicleControllerprotectedvirtual
PreCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) overrideTrackedVehicleControllerprotectedvirtual
RefTarget()=defaultRefTarget< VehicleController >inline
RefTarget(const RefTarget &)RefTarget< VehicleController >inline
Release() constRefTarget< VehicleController >inline
RestoreState(StateRecorder &inStream) overrideTrackedVehicleControllerprotectedvirtual
SaveState(StateRecorder &inStream) const overrideTrackedVehicleControllerprotectedvirtual
SetBrakeInput(float inBrake)TrackedVehicleControllerinline
SetDriverInput(float inForward, float inLeftRatio, float inRightRatio, float inBrake)TrackedVehicleControllerinline
SetEmbedded() constRefTarget< VehicleController >inline
SetForwardInput(float inForward)TrackedVehicleControllerinline
SetLeftRatio(float inLeftRatio)TrackedVehicleControllerinline
SetRightRatio(float inRightRatio)TrackedVehicleControllerinline
SetRPMMeter(Vec3Arg inPosition, float inSize)TrackedVehicleControllerinline
sInternalGetRefCountOffset()RefTarget< VehicleController >inlinestatic
SolveLongitudinalAndLateralConstraints(float inDeltaTime) overrideTrackedVehicleControllerprotectedvirtual
SyncLeftRightTracks()TrackedVehicleControllerprotected
TrackedVehicleController(const TrackedVehicleControllerSettings &inSettings, VehicleConstraint &inConstraint)TrackedVehicleController
VehicleController(VehicleConstraint &inConstraint)VehicleControllerinlineexplicit
~RefTarget()RefTarget< VehicleController >inline
~VehicleController()=defaultVehicleControllervirtual
+
+ + + + diff --git a/class_tracked_vehicle_controller.html b/class_tracked_vehicle_controller.html new file mode 100644 index 000000000..ff3869ed7 --- /dev/null +++ b/class_tracked_vehicle_controller.html @@ -0,0 +1,1285 @@ + + + + + + + +Jolt Physics: TrackedVehicleController Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TrackedVehicleController Class Reference
+
+
+ +

Runtime controller class for vehicle with tank tracks. + More...

+ +

#include <TrackedVehicleController.h>

+
+Inheritance diagram for TrackedVehicleController:
+
+
+ + +VehicleController +RefTarget< VehicleController > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE TrackedVehicleController (const TrackedVehicleControllerSettings &inSettings, VehicleConstraint &inConstraint)
 Constructor.
 
void SetDriverInput (float inForward, float inLeftRatio, float inRightRatio, float inBrake)
 
void SetForwardInput (float inForward)
 Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed.
 
float GetForwardInput () const
 
void SetLeftRatio (float inLeftRatio)
 Value between -1 and 1 indicating an extra multiplier to the rotation rate of the left track (used for steering)
 
float GetLeftRatio () const
 
void SetRightRatio (float inRightRatio)
 Value between -1 and 1 indicating an extra multiplier to the rotation rate of the right track (used for steering)
 
float GetRightRatio () const
 
void SetBrakeInput (float inBrake)
 Value between 0 and 1 indicating how strong the brake pedal is pressed.
 
float GetBrakeInput () const
 
const VehicleEngineGetEngine () const
 Get current engine state.
 
VehicleEngineGetEngine ()
 Get current engine state (writable interface, allows you to make changes to the configuration which will take effect the next time step)
 
const VehicleTransmissionGetTransmission () const
 Get current transmission state.
 
VehicleTransmissionGetTransmission ()
 Get current transmission state (writable interface, allows you to make changes to the configuration which will take effect the next time step)
 
const VehicleTracksGetTracks () const
 Get the tracks this vehicle has.
 
VehicleTracksGetTracks ()
 Get the tracks this vehicle has (writable interface, allows you to make changes to the configuration which will take effect the next time step)
 
void SetRPMMeter (Vec3Arg inPosition, float inSize)
 Debug drawing of RPM meter.
 
- Public Member Functions inherited from VehicleController
JPH_OVERRIDE_NEW_DELETE VehicleController (VehicleConstraint &inConstraint)
 Constructor / destructor.
 
virtual ~VehicleController ()=default
 
- Public Member Functions inherited from RefTarget< VehicleController >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

void SyncLeftRightTracks ()
 Synchronize angular velocities of left and right tracks according to their ratios.
 
virtual WheelConstructWheel (const WheelSettings &inWheel) const override
 
virtual bool AllowSleep () const override
 
virtual void PreCollide (float inDeltaTime, PhysicsSystem &inPhysicsSystem) override
 
virtual void PostCollide (float inDeltaTime, PhysicsSystem &inPhysicsSystem) override
 
virtual bool SolveLongitudinalAndLateralConstraints (float inDeltaTime) override
 
virtual void SaveState (StateRecorder &inStream) const override
 
virtual void RestoreState (StateRecorder &inStream) override
 
virtual void Draw (DebugRenderer *inRenderer) const override
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

float mForwardInput = 0.0f
 Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed.
 
float mLeftRatio = 1.0f
 Value between -1 and 1 indicating an extra multiplier to the rotation rate of the left track (used for steering)
 
float mRightRatio = 1.0f
 Value between -1 and 1 indicating an extra multiplier to the rotation rate of the right track (used for steering)
 
float mBrakeInput = 0.0f
 Value between 0 and 1 indicating how strong the brake pedal is pressed.
 
VehicleEngine mEngine
 Engine state of the vehicle.
 
VehicleTransmission mTransmission
 Transmission state of the vehicle.
 
VehicleTracks mTracks
 Tracks of the vehicle.
 
Vec3 mRPMMeterPosition { 0, 1, 0 }
 Position (in local space of the body) of the RPM meter when drawing the constraint.
 
float mRPMMeterSize = 0.5f
 Size of the RPM meter when drawing the constraint.
 
- Protected Attributes inherited from VehicleController
VehicleConstraintmConstraint
 The vehicle constraint we belong to.
 
- Protected Attributes inherited from RefTarget< VehicleController >
atomic< uint32mRefCount
 Current reference count.
 
+ + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< VehicleController >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Static Protected Attributes inherited from RefTarget< VehicleController >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Runtime controller class for vehicle with tank tracks.

+

Constructor & Destructor Documentation

+ +

◆ TrackedVehicleController()

+ +
+
+ + + + + + + + + + + + + + + + + + +
TrackedVehicleController::TrackedVehicleController (const TrackedVehicleControllerSettingsinSettings,
VehicleConstraintinConstraint 
)
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ AllowSleep()

+ +
+
+ + + + + +
+ + + + + + + +
bool TrackedVehicleController::AllowSleep () const
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +
+
+ +

◆ ConstructWheel()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Wheel * TrackedVehicleController::ConstructWheel (const WheelSettingsinWheel) const
+
+inlineoverrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + +
void TrackedVehicleController::Draw (DebugRendererinRenderer) const
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +
+
+ +

◆ GetBrakeInput()

+ +
+
+ + + + + +
+ + + + + + + +
float TrackedVehicleController::GetBrakeInput () const
+
+inline
+
+ +
+
+ +

◆ GetEngine() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
VehicleEngine & TrackedVehicleController::GetEngine ()
+
+inline
+
+ +

Get current engine state (writable interface, allows you to make changes to the configuration which will take effect the next time step)

+ +
+
+ +

◆ GetEngine() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const VehicleEngine & TrackedVehicleController::GetEngine () const
+
+inline
+
+ +

Get current engine state.

+ +
+
+ +

◆ GetForwardInput()

+ +
+
+ + + + + +
+ + + + + + + +
float TrackedVehicleController::GetForwardInput () const
+
+inline
+
+ +
+
+ +

◆ GetLeftRatio()

+ +
+
+ + + + + +
+ + + + + + + +
float TrackedVehicleController::GetLeftRatio () const
+
+inline
+
+ +
+
+ +

◆ GetRightRatio()

+ +
+
+ + + + + +
+ + + + + + + +
float TrackedVehicleController::GetRightRatio () const
+
+inline
+
+ +
+
+ +

◆ GetTracks() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
VehicleTracks & TrackedVehicleController::GetTracks ()
+
+inline
+
+ +

Get the tracks this vehicle has (writable interface, allows you to make changes to the configuration which will take effect the next time step)

+ +
+
+ +

◆ GetTracks() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const VehicleTracks & TrackedVehicleController::GetTracks () const
+
+inline
+
+ +

Get the tracks this vehicle has.

+ +
+
+ +

◆ GetTransmission() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
VehicleTransmission & TrackedVehicleController::GetTransmission ()
+
+inline
+
+ +

Get current transmission state (writable interface, allows you to make changes to the configuration which will take effect the next time step)

+ +
+
+ +

◆ GetTransmission() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const VehicleTransmission & TrackedVehicleController::GetTransmission () const
+
+inline
+
+ +

Get current transmission state.

+ +
+
+ +

◆ PostCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void TrackedVehicleController::PostCollide (float inDeltaTime,
PhysicsSysteminPhysicsSystem 
)
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +
+
+ +

◆ PreCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void TrackedVehicleController::PreCollide (float inDeltaTime,
PhysicsSysteminPhysicsSystem 
)
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void TrackedVehicleController::RestoreState (StateRecorderinStream)
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void TrackedVehicleController::SaveState (StateRecorderinStream) const
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +
+
+ +

◆ SetBrakeInput()

+ +
+
+ + + + + +
+ + + + + + + + +
void TrackedVehicleController::SetBrakeInput (float inBrake)
+
+inline
+
+ +

Value between 0 and 1 indicating how strong the brake pedal is pressed.

+ +
+
+ +

◆ SetDriverInput()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TrackedVehicleController::SetDriverInput (float inForward,
float inLeftRatio,
float inRightRatio,
float inBrake 
)
+
+inline
+
+

Set input from driver

Parameters
+ + + + + +
inForwardValue between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed
inLeftRatioValue between -1 and 1 indicating an extra multiplier to the rotation rate of the left track (used for steering)
inRightRatioValue between -1 and 1 indicating an extra multiplier to the rotation rate of the right track (used for steering)
inBrakeValue between 0 and 1 indicating how strong the brake pedal is pressed
+
+
+ +
+
+ +

◆ SetForwardInput()

+ +
+
+ + + + + +
+ + + + + + + + +
void TrackedVehicleController::SetForwardInput (float inForward)
+
+inline
+
+ +

Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed.

+ +
+
+ +

◆ SetLeftRatio()

+ +
+
+ + + + + +
+ + + + + + + + +
void TrackedVehicleController::SetLeftRatio (float inLeftRatio)
+
+inline
+
+ +

Value between -1 and 1 indicating an extra multiplier to the rotation rate of the left track (used for steering)

+ +
+
+ +

◆ SetRightRatio()

+ +
+
+ + + + + +
+ + + + + + + + +
void TrackedVehicleController::SetRightRatio (float inRightRatio)
+
+inline
+
+ +

Value between -1 and 1 indicating an extra multiplier to the rotation rate of the right track (used for steering)

+ +
+
+ +

◆ SetRPMMeter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void TrackedVehicleController::SetRPMMeter (Vec3Arg inPosition,
float inSize 
)
+
+inline
+
+ +

Debug drawing of RPM meter.

+ +
+
+ +

◆ SolveLongitudinalAndLateralConstraints()

+ +
+
+ + + + + +
+ + + + + + + + +
bool TrackedVehicleController::SolveLongitudinalAndLateralConstraints (float inDeltaTime)
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +
+
+ +

◆ SyncLeftRightTracks()

+ +
+
+ + + + + +
+ + + + + + + +
void TrackedVehicleController::SyncLeftRightTracks ()
+
+protected
+
+ +

Synchronize angular velocities of left and right tracks according to their ratios.

+ +
+
+

Member Data Documentation

+ +

◆ mBrakeInput

+ +
+
+ + + + + +
+ + + + +
float TrackedVehicleController::mBrakeInput = 0.0f
+
+protected
+
+ +

Value between 0 and 1 indicating how strong the brake pedal is pressed.

+ +
+
+ +

◆ mEngine

+ +
+
+ + + + + +
+ + + + +
VehicleEngine TrackedVehicleController::mEngine
+
+protected
+
+ +

Engine state of the vehicle.

+ +
+
+ +

◆ mForwardInput

+ +
+
+ + + + + +
+ + + + +
float TrackedVehicleController::mForwardInput = 0.0f
+
+protected
+
+ +

Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed.

+ +
+
+ +

◆ mLeftRatio

+ +
+
+ + + + + +
+ + + + +
float TrackedVehicleController::mLeftRatio = 1.0f
+
+protected
+
+ +

Value between -1 and 1 indicating an extra multiplier to the rotation rate of the left track (used for steering)

+ +
+
+ +

◆ mRightRatio

+ +
+
+ + + + + +
+ + + + +
float TrackedVehicleController::mRightRatio = 1.0f
+
+protected
+
+ +

Value between -1 and 1 indicating an extra multiplier to the rotation rate of the right track (used for steering)

+ +
+
+ +

◆ mRPMMeterPosition

+ +
+
+ + + + + +
+ + + + +
Vec3 TrackedVehicleController::mRPMMeterPosition { 0, 1, 0 }
+
+protected
+
+ +

Position (in local space of the body) of the RPM meter when drawing the constraint.

+ +
+
+ +

◆ mRPMMeterSize

+ +
+
+ + + + + +
+ + + + +
float TrackedVehicleController::mRPMMeterSize = 0.5f
+
+protected
+
+ +

Size of the RPM meter when drawing the constraint.

+ +
+
+ +

◆ mTracks

+ +
+
+ + + + + +
+ + + + +
VehicleTracks TrackedVehicleController::mTracks
+
+protected
+
+ +

Tracks of the vehicle.

+ +
+
+ +

◆ mTransmission

+ +
+
+ + + + + +
+ + + + +
VehicleTransmission TrackedVehicleController::mTransmission
+
+protected
+
+ +

Transmission state of the vehicle.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_tracked_vehicle_controller.js b/class_tracked_vehicle_controller.js new file mode 100644 index 000000000..7d8657ef2 --- /dev/null +++ b/class_tracked_vehicle_controller.js @@ -0,0 +1,38 @@ +var class_tracked_vehicle_controller = +[ + [ "TrackedVehicleController", "class_tracked_vehicle_controller.html#a6a5ee14fd6717b24367090fa9efb52a3", null ], + [ "AllowSleep", "class_tracked_vehicle_controller.html#a6f6642ab7fa5b3fa90ddebcad0d07ec4", null ], + [ "ConstructWheel", "class_tracked_vehicle_controller.html#a66ae1eabf51f75a52b2c53f43228454d", null ], + [ "Draw", "class_tracked_vehicle_controller.html#a9f56bbde7c73183fb8b2a6cb122976af", null ], + [ "GetBrakeInput", "class_tracked_vehicle_controller.html#a3643a17beaee68e91eb2777b8a6639c7", null ], + [ "GetEngine", "class_tracked_vehicle_controller.html#acb2deddabb17190a97fbeee604d6a845", null ], + [ "GetEngine", "class_tracked_vehicle_controller.html#a8e4de97e46ec73d36fce4d32d38f6ed2", null ], + [ "GetForwardInput", "class_tracked_vehicle_controller.html#ab6609714cd395abb6a9d29552dc5fb85", null ], + [ "GetLeftRatio", "class_tracked_vehicle_controller.html#a21f5ddb54144f1978e08491e236f2969", null ], + [ "GetRightRatio", "class_tracked_vehicle_controller.html#a56d16548d8180759d16746c4e4024ba5", null ], + [ "GetTracks", "class_tracked_vehicle_controller.html#a778d53e87c6d3c769079b71961123745", null ], + [ "GetTracks", "class_tracked_vehicle_controller.html#a197ca759987300cb86170ac747e34d61", null ], + [ "GetTransmission", "class_tracked_vehicle_controller.html#af251172b17a496ce895bd39709b86065", null ], + [ "GetTransmission", "class_tracked_vehicle_controller.html#a18af9ade5be94c6740c888b61c922419", null ], + [ "PostCollide", "class_tracked_vehicle_controller.html#a6e29a4c4ab48f2563bd78d839ea38b7b", null ], + [ "PreCollide", "class_tracked_vehicle_controller.html#a38308bb8eec8096a3fea79cd00419c64", null ], + [ "RestoreState", "class_tracked_vehicle_controller.html#ac4ad788c5d39ec66561f0fde8bb5be60", null ], + [ "SaveState", "class_tracked_vehicle_controller.html#acbb1cc373f9ca7da7c9d79bf8195b257", null ], + [ "SetBrakeInput", "class_tracked_vehicle_controller.html#ae97359340349c437523f88b953a70759", null ], + [ "SetDriverInput", "class_tracked_vehicle_controller.html#af01b954bba5b8876b3e33d0303f516ed", null ], + [ "SetForwardInput", "class_tracked_vehicle_controller.html#af035163b8e7f810c7c397186c35d577a", null ], + [ "SetLeftRatio", "class_tracked_vehicle_controller.html#a7865699eb6947060c4a117d67e39806d", null ], + [ "SetRightRatio", "class_tracked_vehicle_controller.html#a34fbd77864cfdbdb0e4bce68adff3d73", null ], + [ "SetRPMMeter", "class_tracked_vehicle_controller.html#a678c77ec33688161c4f2ee0a2521deb3", null ], + [ "SolveLongitudinalAndLateralConstraints", "class_tracked_vehicle_controller.html#a8fdb8ceb2f023e60141688cd680bc0aa", null ], + [ "SyncLeftRightTracks", "class_tracked_vehicle_controller.html#ab5064addb31d8c35e87492b48221503c", null ], + [ "mBrakeInput", "class_tracked_vehicle_controller.html#ae1eed09587eafa6e49d744ffa180d6ae", null ], + [ "mEngine", "class_tracked_vehicle_controller.html#a03666420e6389d5678d3b9756c381914", null ], + [ "mForwardInput", "class_tracked_vehicle_controller.html#ad44aa72b04fbd715a4690cc9343b0693", null ], + [ "mLeftRatio", "class_tracked_vehicle_controller.html#a09bd9910c15055a76e5d524fef8c9f0f", null ], + [ "mRightRatio", "class_tracked_vehicle_controller.html#ae051ddbdc41f87fb80f32f72e829729d", null ], + [ "mRPMMeterPosition", "class_tracked_vehicle_controller.html#a1f801cb40d081779ce0f8ddbd4c1e5b6", null ], + [ "mRPMMeterSize", "class_tracked_vehicle_controller.html#a2c6dab3a895b281053876fc3c2fb2d8a", null ], + [ "mTracks", "class_tracked_vehicle_controller.html#a1488f414bfa1cd59e4165b1157e42858", null ], + [ "mTransmission", "class_tracked_vehicle_controller.html#a56eef9473ecf210d41d0c7a3994c79cd", null ] +]; \ No newline at end of file diff --git a/class_tracked_vehicle_controller.png b/class_tracked_vehicle_controller.png new file mode 100644 index 000000000..6f6b3decf Binary files /dev/null and b/class_tracked_vehicle_controller.png differ diff --git a/class_tracked_vehicle_controller_settings-members.html b/class_tracked_vehicle_controller_settings-members.html new file mode 100644 index 000000000..43d690fba --- /dev/null +++ b/class_tracked_vehicle_controller_settings-members.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TrackedVehicleControllerSettings Member List
+
+
+ +

This is the complete list of members for TrackedVehicleControllerSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< VehicleControllerSettings >inline
cEmbeddedRefTarget< VehicleControllerSettings >protectedstatic
ConstructController(VehicleConstraint &inConstraint) const overrideTrackedVehicleControllerSettingsvirtual
GetRefCount() constRefTarget< VehicleControllerSettings >inline
mEngineTrackedVehicleControllerSettings
mRefCountRefTarget< VehicleControllerSettings >mutableprotected
mTracksTrackedVehicleControllerSettings
mTransmissionTrackedVehicleControllerSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< VehicleControllerSettings >::operator=(const RefTarget &)RefTarget< VehicleControllerSettings >inline
RefTarget()=defaultRefTarget< VehicleControllerSettings >inline
RefTarget(const RefTarget &)RefTarget< VehicleControllerSettings >inline
Release() constRefTarget< VehicleControllerSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideTrackedVehicleControllerSettingsvirtual
SaveBinaryState(StreamOut &inStream) const overrideTrackedVehicleControllerSettingsvirtual
SetEmbedded() constRefTarget< VehicleControllerSettings >inline
sInternalGetRefCountOffset()RefTarget< VehicleControllerSettings >inlinestatic
TrackedVehicleControllerSettings()TrackedVehicleControllerSettings
~RefTarget()RefTarget< VehicleControllerSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_tracked_vehicle_controller_settings.html b/class_tracked_vehicle_controller_settings.html new file mode 100644 index 000000000..f2b7d36f7 --- /dev/null +++ b/class_tracked_vehicle_controller_settings.html @@ -0,0 +1,372 @@ + + + + + + + +Jolt Physics: TrackedVehicleControllerSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TrackedVehicleControllerSettings Class Reference
+
+
+ +

#include <TrackedVehicleController.h>

+
+Inheritance diagram for TrackedVehicleControllerSettings:
+
+
+ + +VehicleControllerSettings +SerializableObject +RefTarget< VehicleControllerSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TrackedVehicleControllerSettings ()
 
virtual VehicleControllerConstructController (VehicleConstraint &inConstraint) const override
 Create an instance of the vehicle controller class.
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the controller settings in binary form to inStream.
 
virtual void RestoreBinaryState (StreamIn &inStream) override
 Restore the contents of the controller settings in binary form from inStream.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< VehicleControllerSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + +

+Public Attributes

VehicleEngineSettings mEngine
 The properties of the engine.
 
VehicleTransmissionSettings mTransmission
 The properties of the transmission (aka gear box)
 
VehicleTrackSettings mTracks [(int) ETrackSide::Num]
 List of tracks and their properties.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< VehicleControllerSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< VehicleControllerSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< VehicleControllerSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Settings of a vehicle with tank tracks

+

Default settings are based around what I could find about the M1 Abrams tank. Note to avoid issues with very heavy objects vs very light objects the mass of the tank should be a lot lower (say 10x) than that of a real tank. That means that the engine/brake torque is also 10x less.

+

Constructor & Destructor Documentation

+ +

◆ TrackedVehicleControllerSettings()

+ +
+
+ + + + + + + +
TrackedVehicleControllerSettings::TrackedVehicleControllerSettings ()
+
+ +
+
+

Member Function Documentation

+ +

◆ ConstructController()

+ +
+
+ + + + + +
+ + + + + + + + +
VehicleController * TrackedVehicleControllerSettings::ConstructController (VehicleConstraintinConstraint) const
+
+overridevirtual
+
+ +

Create an instance of the vehicle controller class.

+ +

Implements VehicleControllerSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void TrackedVehicleControllerSettings::RestoreBinaryState (StreamIninStream)
+
+overridevirtual
+
+ +

Restore the contents of the controller settings in binary form from inStream.

+ +

Implements VehicleControllerSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void TrackedVehicleControllerSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the controller settings in binary form to inStream.

+ +

Implements VehicleControllerSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mEngine

+ +
+
+ + + + +
VehicleEngineSettings TrackedVehicleControllerSettings::mEngine
+
+ +

The properties of the engine.

+ +
+
+ +

◆ mTracks

+ +
+
+ + + + +
VehicleTrackSettings TrackedVehicleControllerSettings::mTracks[(int) ETrackSide::Num]
+
+ +

List of tracks and their properties.

+ +
+
+ +

◆ mTransmission

+ +
+
+ + + + +
VehicleTransmissionSettings TrackedVehicleControllerSettings::mTransmission
+
+ +

The properties of the transmission (aka gear box)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_tracked_vehicle_controller_settings.js b/class_tracked_vehicle_controller_settings.js new file mode 100644 index 000000000..cdaa0482a --- /dev/null +++ b/class_tracked_vehicle_controller_settings.js @@ -0,0 +1,10 @@ +var class_tracked_vehicle_controller_settings = +[ + [ "TrackedVehicleControllerSettings", "class_tracked_vehicle_controller_settings.html#a3e6e286db5b9b87b0300b81b4c5b33ea", null ], + [ "ConstructController", "class_tracked_vehicle_controller_settings.html#a7148f42436e98a8be5b3e877e2a52d99", null ], + [ "RestoreBinaryState", "class_tracked_vehicle_controller_settings.html#ad0578129c78d52535148ac87a7e27b63", null ], + [ "SaveBinaryState", "class_tracked_vehicle_controller_settings.html#aa97756bf83a666d7e93529605679c7aa", null ], + [ "mEngine", "class_tracked_vehicle_controller_settings.html#af4d3d6e0f083cac4e6df2d116047469a", null ], + [ "mTracks", "class_tracked_vehicle_controller_settings.html#adbe8e52a437dcdb57ac4078958f2dece", null ], + [ "mTransmission", "class_tracked_vehicle_controller_settings.html#af67a8a4259f517164fb035582696dd6c", null ] +]; \ No newline at end of file diff --git a/class_tracked_vehicle_controller_settings.png b/class_tracked_vehicle_controller_settings.png new file mode 100644 index 000000000..fbda8fce6 Binary files /dev/null and b/class_tracked_vehicle_controller_settings.png differ diff --git a/class_transformed_shape-members.html b/class_transformed_shape-members.html new file mode 100644 index 000000000..8063e80a5 --- /dev/null +++ b/class_transformed_shape-members.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TransformedShape Member List
+
+
+ +

This is the complete list of members for TransformedShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CastRay(const RRayCast &inRay, RayCastResult &ioHit) constTransformedShape
CastRay(const RRayCast &inRay, const RayCastSettings &inRayCastSettings, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) constTransformedShape
CastShape(const RShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) constTransformedShape
CollectTransformedShapes(const AABox &inBox, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) constTransformedShape
CollidePoint(RVec3Arg inPoint, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) constTransformedShape
CollideShape(const Shape *inShape, Vec3Arg inShapeScale, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) constTransformedShape
GetCenterOfMassTransform() constTransformedShapeinline
GetInverseCenterOfMassTransform() constTransformedShapeinline
GetMaterial(const SubShapeID &inSubShapeID) constTransformedShapeinline
GetShapeScale() constTransformedShapeinline
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constTransformedShapeinline
GetSubShapeUserData(const SubShapeID &inSubShapeID) constTransformedShapeinline
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, RVec3Arg inBaseOffset, Shape::SupportingFace &outVertices) constTransformedShapeinline
GetTrianglesContext typedefTransformedShape
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) constTransformedShape
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, RVec3Arg inBaseOffset) constTransformedShape
GetWorldSpaceBounds() constTransformedShapeinline
GetWorldSpaceSurfaceNormal(const SubShapeID &inSubShapeID, RVec3Arg inPosition) constTransformedShapeinline
GetWorldTransform() constTransformedShapeinline
MakeSubShapeIDRelativeToShape(const SubShapeID &inSubShapeID) constTransformedShapeinline
mBodyIDTransformedShape
mShapeTransformedShape
mShapePositionCOMTransformedShape
mShapeRotationTransformedShape
mShapeScaleTransformedShape
mSubShapeIDCreatorTransformedShape
SetShapeScale(Vec3Arg inScale)TransformedShapeinline
SetWorldTransform(RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inScale)TransformedShapeinline
SetWorldTransform(RMat44Arg inTransform)TransformedShapeinline
sGetBodyID(const TransformedShape *inTS)TransformedShapeinlinestatic
TransformedShape()=defaultTransformedShape
TransformedShape(RVec3Arg inPositionCOM, QuatArg inRotation, const Shape *inShape, const BodyID &inBodyID, const SubShapeIDCreator &inSubShapeIDCreator=SubShapeIDCreator())TransformedShapeinline
+
+ + + + diff --git a/class_transformed_shape.html b/class_transformed_shape.html new file mode 100644 index 000000000..a9efa7dcd --- /dev/null +++ b/class_transformed_shape.html @@ -0,0 +1,1253 @@ + + + + + + + +Jolt Physics: TransformedShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TransformedShape Class Reference
+
+
+ +

#include <TransformedShape.h>

+ + + + + +

+Public Types

using GetTrianglesContext = Shape::GetTrianglesContext
 Use the context from Shape.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE TransformedShape ()=default
 Constructor.
 
 TransformedShape (RVec3Arg inPositionCOM, QuatArg inRotation, const Shape *inShape, const BodyID &inBodyID, const SubShapeIDCreator &inSubShapeIDCreator=SubShapeIDCreator())
 
bool CastRay (const RRayCast &inRay, RayCastResult &ioHit) const
 
void CastRay (const RRayCast &inRay, const RayCastSettings &inRayCastSettings, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const
 
void CollidePoint (RVec3Arg inPoint, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const
 
void CollideShape (const Shape *inShape, Vec3Arg inShapeScale, RMat44Arg inCenterOfMassTransform, const CollideShapeSettings &inCollideShapeSettings, RVec3Arg inBaseOffset, CollideShapeCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const
 
void CastShape (const RShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, RVec3Arg inBaseOffset, CastShapeCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const
 
void CollectTransformedShapes (const AABox &inBox, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const
 
void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, RVec3Arg inBaseOffset) const
 
int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const
 
Vec3 GetShapeScale () const
 Get/set the scale of the shape as a Vec3.
 
void SetShapeScale (Vec3Arg inScale)
 
RMat44 GetCenterOfMassTransform () const
 Calculates the transform for this shapes's center of mass (excluding scale)
 
RMat44 GetInverseCenterOfMassTransform () const
 Calculates the inverse of the transform for this shape's center of mass (excluding scale)
 
void SetWorldTransform (RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inScale)
 Sets the world transform (including scale) of this transformed shape (not from the center of mass but in the space the shape was created)
 
void SetWorldTransform (RMat44Arg inTransform)
 Sets the world transform (including scale) of this transformed shape (not from the center of mass but in the space the shape was created)
 
RMat44 GetWorldTransform () const
 Calculates the world transform including scale of this shape (not from the center of mass but in the space the shape was created)
 
AABox GetWorldSpaceBounds () const
 Get the world space bounding box for this transformed shape.
 
SubShapeID MakeSubShapeIDRelativeToShape (const SubShapeID &inSubShapeID) const
 Make inSubShapeID relative to mShape. When mSubShapeIDCreator is not empty, this is needed in order to get the correct path to the sub shape.
 
Vec3 GetWorldSpaceSurfaceNormal (const SubShapeID &inSubShapeID, RVec3Arg inPosition) const
 
void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, RVec3Arg inBaseOffset, Shape::SupportingFace &outVertices) const
 
const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const
 Get material of a particular sub shape.
 
uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape.
 
TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
+ + + + +

+Static Public Member Functions

static BodyID sGetBodyID (const TransformedShape *inTS)
 Helper function to return the body id from a transformed shape. If the transformed shape is null an invalid body ID will be returned.
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

RVec3 mShapePositionCOM
 Center of mass world position of the shape.
 
Quat mShapeRotation
 Rotation of the shape.
 
RefConst< ShapemShape
 The shape itself.
 
Float3 mShapeScale { 1, 1, 1 }
 Not stored as Vec3 to get a nicely packed structure.
 
BodyID mBodyID
 Optional body ID from which this shape comes.
 
SubShapeIDCreator mSubShapeIDCreator
 Optional sub shape ID creator for the shape (can be used when expanding compound shapes into multiple transformed shapes)
 
+

Detailed Description

+

Temporary data structure that contains a shape and a transform. This structure can be obtained from a body (e.g. after a broad phase query) under lock protection. The lock can then be released and collision detection operations can be safely performed since the class takes a reference on the shape and does not use anything from the body anymore.

+

Member Typedef Documentation

+ +

◆ GetTrianglesContext

+ +
+
+ +

Use the context from Shape.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ TransformedShape() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE TransformedShape::TransformedShape ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ TransformedShape() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TransformedShape::TransformedShape (RVec3Arg inPositionCOM,
QuatArg inRotation,
const ShapeinShape,
const BodyIDinBodyID,
const SubShapeIDCreatorinSubShapeIDCreator = SubShapeIDCreator() 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TransformedShape::CastRay (const RRayCastinRay,
const RayCastSettingsinRayCastSettings,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+

Cast a ray, allows collecting multiple hits. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetWorldSpaceSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected fraction)) on this object.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN bool TransformedShape::CastRay (const RRayCastinRay,
RayCastResultioHit 
) const
+
+

Cast a ray and find the closest hit. Returns true if it finds a hit. Hits further than ioHit.mFraction will not be considered and in this case ioHit will remain unmodified (and the function will return false). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits are returned. If you want the surface normal of the hit use GetWorldSpaceSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)) on this object.

+ +
+
+ +

◆ CastShape()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TransformedShape::CastShape (const RShapeCastinShapeCast,
const ShapeCastSettingsinShapeCastSettings,
RVec3Arg inBaseOffset,
CastShapeCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+

Cast a shape and report any hits to ioCollector

Parameters
+ + + + + + +
inShapeCastThe shape cast and its position and direction
inShapeCastSettingsSettings for the shape cast
inBaseOffsetAll hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. mShapePositionCOM or inShapeCast.mCenterOfMassStart.GetTranslation() since floats are most accurate near the origin
ioCollectorCollector that receives the hits
inShapeFilterFilter that allows you to reject collisions
+
+
+ +
+
+ +

◆ CollectTransformedShapes()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void TransformedShape::CollectTransformedShapes (const AABoxinBox,
TransformedShapeCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+

Collect the leaf transformed shapes of all leaf shapes of this shape inBox is the world space axis aligned box which leaf shapes should collide with

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void TransformedShape::CollidePoint (RVec3Arg inPoint,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+

Check if inPoint is inside any shapes. For this tests all shapes are treated as if they were solid. For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit

+ +
+
+ +

◆ CollideShape()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TransformedShape::CollideShape (const ShapeinShape,
Vec3Arg inShapeScale,
RMat44Arg inCenterOfMassTransform,
const CollideShapeSettingsinCollideShapeSettings,
RVec3Arg inBaseOffset,
CollideShapeCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+

Collide a shape and report any hits to ioCollector

Parameters
+ + + + + + + + +
inShapeShape to test
inShapeScaleScale in local space of shape
inCenterOfMassTransformCenter of mass transform for the shape
inCollideShapeSettingsSettings
inBaseOffsetAll hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. mShapePositionCOM since floats are most accurate near the origin
ioCollectorCollector that receives the hits
inShapeFilterFilter that allows you to reject collisions
+
+
+ +
+
+ +

◆ GetCenterOfMassTransform()

+ +
+
+ + + + + +
+ + + + + + + +
RMat44 TransformedShape::GetCenterOfMassTransform () const
+
+inline
+
+ +

Calculates the transform for this shapes's center of mass (excluding scale)

+ +
+
+ +

◆ GetInverseCenterOfMassTransform()

+ +
+
+ + + + + +
+ + + + + + + +
RMat44 TransformedShape::GetInverseCenterOfMassTransform () const
+
+inline
+
+ +

Calculates the inverse of the transform for this shape's center of mass (excluding scale)

+ +
+
+ +

◆ GetMaterial()

+ +
+
+ + + + + +
+ + + + + + + + +
const PhysicsMaterial * TransformedShape::GetMaterial (const SubShapeIDinSubShapeID) const
+
+inline
+
+ +

Get material of a particular sub shape.

+ +
+
+ +

◆ GetShapeScale()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 TransformedShape::GetShapeScale () const
+
+inline
+
+ +

Get/set the scale of the shape as a Vec3.

+ +
+
+ +

◆ GetSubShapeTransformedShape()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TransformedShape TransformedShape::GetSubShapeTransformedShape (const SubShapeIDinSubShapeID,
SubShapeIDoutRemainder 
) const
+
+inline
+
+

Get the direct child sub shape and its transform for a sub shape ID.

Parameters
+ + + +
inSubShapeIDSub shape ID that indicates the path to the leaf shape
outRemainderThe remainder of the sub shape ID after removing the sub shape
+
+
+
Returns
Direct child sub shape and its transform, note that the body ID and sub shape ID will be invalid
+ +
+
+ +

◆ GetSubShapeUserData()

+ +
+
+ + + + + +
+ + + + + + + + +
uint64 TransformedShape::GetSubShapeUserData (const SubShapeIDinSubShapeID) const
+
+inline
+
+ +

Get the user data of a particular sub shape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TransformedShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
RVec3Arg inBaseOffset,
Shape::SupportingFaceoutVertices 
) const
+
+inline
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in world space)
inBaseOffsetThe vertices will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. mShapePositionCOM since floats are most accurate near the origin
outVerticesResulting face. Note the returned face can have a single point if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int TransformedShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries outMaterials (if it is not null) should contain inMaxTrianglesRequested entries The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks) Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void TransformedShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
RVec3Arg inBaseOffset 
) const
+
+

To start iterating over triangles, call this function first. To get the actual triangles call GetTrianglesNext.

Parameters
+ + + + +
ioContextA temporary buffer and should remain untouched until the last call to GetTrianglesNext.
inBoxThe world space bounding in which you want to get the triangles.
inBaseOffsetAll hit results will be returned relative to this offset, can be zero to get results in world position, but when you're testing far from the origin you get better precision by picking a position that's closer e.g. inBox.GetCenter() since floats are most accurate near the origin
+
+
+ +
+
+ +

◆ GetWorldSpaceBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox TransformedShape::GetWorldSpaceBounds () const
+
+inline
+
+ +

Get the world space bounding box for this transformed shape.

+ +
+
+ +

◆ GetWorldSpaceSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 TransformedShape::GetWorldSpaceSurfaceNormal (const SubShapeIDinSubShapeID,
RVec3Arg inPosition 
) const
+
+inline
+
+

Get surface normal of a particular sub shape and its world space surface position on this body. Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetWorldSpaceSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +
+
+ +

◆ GetWorldTransform()

+ +
+
+ + + + + +
+ + + + + + + +
RMat44 TransformedShape::GetWorldTransform () const
+
+inline
+
+ +

Calculates the world transform including scale of this shape (not from the center of mass but in the space the shape was created)

+ +
+
+ +

◆ MakeSubShapeIDRelativeToShape()

+ +
+
+ + + + + +
+ + + + + + + + +
SubShapeID TransformedShape::MakeSubShapeIDRelativeToShape (const SubShapeIDinSubShapeID) const
+
+inline
+
+ +

Make inSubShapeID relative to mShape. When mSubShapeIDCreator is not empty, this is needed in order to get the correct path to the sub shape.

+ +
+
+ +

◆ SetShapeScale()

+ +
+
+ + + + + +
+ + + + + + + + +
void TransformedShape::SetShapeScale (Vec3Arg inScale)
+
+inline
+
+ +
+
+ +

◆ SetWorldTransform() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void TransformedShape::SetWorldTransform (RMat44Arg inTransform)
+
+inline
+
+ +

Sets the world transform (including scale) of this transformed shape (not from the center of mass but in the space the shape was created)

+ +
+
+ +

◆ SetWorldTransform() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void TransformedShape::SetWorldTransform (RVec3Arg inPosition,
QuatArg inRotation,
Vec3Arg inScale 
)
+
+inline
+
+ +

Sets the world transform (including scale) of this transformed shape (not from the center of mass but in the space the shape was created)

+ +
+
+ +

◆ sGetBodyID()

+ +
+
+ + + + + +
+ + + + + + + + +
static BodyID TransformedShape::sGetBodyID (const TransformedShapeinTS)
+
+inlinestatic
+
+ +

Helper function to return the body id from a transformed shape. If the transformed shape is null an invalid body ID will be returned.

+ +
+
+

Member Data Documentation

+ +

◆ mBodyID

+ +
+
+ + + + +
BodyID TransformedShape::mBodyID
+
+ +

Optional body ID from which this shape comes.

+ +
+
+ +

◆ mShape

+ +
+
+ + + + +
RefConst<Shape> TransformedShape::mShape
+
+ +

The shape itself.

+ +
+
+ +

◆ mShapePositionCOM

+ +
+
+ + + + +
RVec3 TransformedShape::mShapePositionCOM
+
+ +

Center of mass world position of the shape.

+ +
+
+ +

◆ mShapeRotation

+ +
+
+ + + + +
Quat TransformedShape::mShapeRotation
+
+ +

Rotation of the shape.

+ +
+
+ +

◆ mShapeScale

+ +
+
+ + + + +
Float3 TransformedShape::mShapeScale { 1, 1, 1 }
+
+ +

Not stored as Vec3 to get a nicely packed structure.

+ +
+
+ +

◆ mSubShapeIDCreator

+ +
+
+ + + + +
SubShapeIDCreator TransformedShape::mSubShapeIDCreator
+
+ +

Optional sub shape ID creator for the shape (can be used when expanding compound shapes into multiple transformed shapes)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_transformed_shape.js b/class_transformed_shape.js new file mode 100644 index 000000000..cc90dad7c --- /dev/null +++ b/class_transformed_shape.js @@ -0,0 +1,34 @@ +var class_transformed_shape = +[ + [ "GetTrianglesContext", "class_transformed_shape.html#aca84b10055165beff1ca288bf6ccfd34", null ], + [ "TransformedShape", "class_transformed_shape.html#aa2bca98098fc17f1d18ea542a619eff0", null ], + [ "TransformedShape", "class_transformed_shape.html#a8a62ed0edd25b3a64ecdcaab55de237e", null ], + [ "CastRay", "class_transformed_shape.html#ae4af56e1fa6544074e06b589de4d77b9", null ], + [ "CastRay", "class_transformed_shape.html#acd5399c06080e74de7f1ad8c61f9465a", null ], + [ "CastShape", "class_transformed_shape.html#ab9b03e726e2992e5a4ca1df568d5ae75", null ], + [ "CollectTransformedShapes", "class_transformed_shape.html#a5379d6bf4807440be14c96829e7fa5bd", null ], + [ "CollidePoint", "class_transformed_shape.html#ad589cfe7574f79645c39f917e15aff08", null ], + [ "CollideShape", "class_transformed_shape.html#ad302129a3ff14b43463ec6514a79f988", null ], + [ "GetCenterOfMassTransform", "class_transformed_shape.html#afba760db30ccff8c59547cce78bd97a4", null ], + [ "GetInverseCenterOfMassTransform", "class_transformed_shape.html#a928f396b885e8fea11417ba0e651c678", null ], + [ "GetMaterial", "class_transformed_shape.html#a8995638ea07aab36ba41e63bce603002", null ], + [ "GetShapeScale", "class_transformed_shape.html#a9f0559c4106b9b17becd5f401389b354", null ], + [ "GetSubShapeTransformedShape", "class_transformed_shape.html#a8ef1a33902094dcdd6f20f63868c5ea2", null ], + [ "GetSubShapeUserData", "class_transformed_shape.html#a98ca3c64d2bc65548a4845085c53eba5", null ], + [ "GetSupportingFace", "class_transformed_shape.html#abf8db8122d754ad62720f3da6f67be4d", null ], + [ "GetTrianglesNext", "class_transformed_shape.html#a7f4d127145d57e13ff41523a3c8ecd9e", null ], + [ "GetTrianglesStart", "class_transformed_shape.html#ab5c4bf71ad1569f890bccf3b71248b43", null ], + [ "GetWorldSpaceBounds", "class_transformed_shape.html#a33b12d09ebaf2071dd49a3873978ac0a", null ], + [ "GetWorldSpaceSurfaceNormal", "class_transformed_shape.html#a38fdd1585da3137083b8ee9f9bdcdd98", null ], + [ "GetWorldTransform", "class_transformed_shape.html#af233e9488d9738108c192ab850758cd9", null ], + [ "MakeSubShapeIDRelativeToShape", "class_transformed_shape.html#a1ac86317085e88189d1b8a2635dcec44", null ], + [ "SetShapeScale", "class_transformed_shape.html#a0923e9bc45b0d6ee42d5350da78d51cc", null ], + [ "SetWorldTransform", "class_transformed_shape.html#a6634ea434c5877c1f458137d0b05e137", null ], + [ "SetWorldTransform", "class_transformed_shape.html#a8499fda3638a4246e152a2a298905852", null ], + [ "mBodyID", "class_transformed_shape.html#ae45d21f8b2ee5407c3ca2264ab2a5ebe", null ], + [ "mShape", "class_transformed_shape.html#ac6aaf976fee41c402c791012e4a2a3f9", null ], + [ "mShapePositionCOM", "class_transformed_shape.html#a37f8180dfc1c74cf7d97aca0eca7a0f5", null ], + [ "mShapeRotation", "class_transformed_shape.html#a329c136e38910229e39c31971819a34b", null ], + [ "mShapeScale", "class_transformed_shape.html#ad0e68878e0a74dcced58313f161b11f8", null ], + [ "mSubShapeIDCreator", "class_transformed_shape.html#a3d0b38db0aacff1c3188a0c20f45e713", null ] +]; \ No newline at end of file diff --git a/class_triangle-members.html b/class_triangle-members.html new file mode 100644 index 000000000..b301de2e9 --- /dev/null +++ b/class_triangle-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Triangle Member List
+
+
+ +

This is the complete list of members for Triangle, including all inherited members.

+ + + + + + + + +
GetCentroid() constTriangleinline
mMaterialIndexTriangle
mUserDataTriangle
mVTriangle
Triangle()=defaultTriangle
Triangle(const Float3 &inV1, const Float3 &inV2, const Float3 &inV3, uint32 inMaterialIndex=0, uint32 inUserData=0)Triangleinline
Triangle(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, uint32 inMaterialIndex=0, uint32 inUserData=0)Triangleinline
+
+ + + + diff --git a/class_triangle.html b/class_triangle.html new file mode 100644 index 000000000..d49ca353b --- /dev/null +++ b/class_triangle.html @@ -0,0 +1,367 @@ + + + + + + + +Jolt Physics: Triangle Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Triangle Class Reference
+
+
+ +

A simple triangle and its material. + More...

+ +

#include <Triangle.h>

+ + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Triangle ()=default
 Constructor.
 
 Triangle (const Float3 &inV1, const Float3 &inV2, const Float3 &inV3, uint32 inMaterialIndex=0, uint32 inUserData=0)
 
 Triangle (Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, uint32 inMaterialIndex=0, uint32 inUserData=0)
 
Vec3 GetCentroid () const
 Get center of triangle.
 
+ + + + + + + + + + +

+Public Attributes

Float3 mV [3]
 Vertices.
 
uint32 mMaterialIndex = 0
 Follows mV[3] so that we can read mV as 4 vectors.
 
uint32 mUserData = 0
 User data that can be used for anything by the application, e.g. for tracking the original index of the triangle.
 
+

Detailed Description

+

A simple triangle and its material.

+

Constructor & Destructor Documentation

+ +

◆ Triangle() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE Triangle::Triangle ()
+
+default
+
+ +

Constructor.

+ +
+
+ +

◆ Triangle() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Triangle::Triangle (const Float3inV1,
const Float3inV2,
const Float3inV3,
uint32 inMaterialIndex = 0,
uint32 inUserData = 0 
)
+
+inline
+
+ +
+
+ +

◆ Triangle() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Triangle::Triangle (Vec3Arg inV1,
Vec3Arg inV2,
Vec3Arg inV3,
uint32 inMaterialIndex = 0,
uint32 inUserData = 0 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetCentroid()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Triangle::GetCentroid () const
+
+inline
+
+ +

Get center of triangle.

+ +
+
+

Member Data Documentation

+ +

◆ mMaterialIndex

+ +
+
+ + + + +
uint32 Triangle::mMaterialIndex = 0
+
+ +

Follows mV[3] so that we can read mV as 4 vectors.

+ +
+
+ +

◆ mUserData

+ +
+
+ + + + +
uint32 Triangle::mUserData = 0
+
+ +

User data that can be used for anything by the application, e.g. for tracking the original index of the triangle.

+ +
+
+ +

◆ mV

+ +
+
+ + + + +
Float3 Triangle::mV[3]
+
+ +

Vertices.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_triangle.js b/class_triangle.js new file mode 100644 index 000000000..be49865ca --- /dev/null +++ b/class_triangle.js @@ -0,0 +1,10 @@ +var class_triangle = +[ + [ "Triangle", "class_triangle.html#ab77028569270c58b230bade2e050f0e8", null ], + [ "Triangle", "class_triangle.html#a63e1c516f7be617386e6fb7ba751e559", null ], + [ "Triangle", "class_triangle.html#afa9373651d38b12839903be6a01ccc6f", null ], + [ "GetCentroid", "class_triangle.html#a680a9a904aaad1f8a495f8ec667fbf70", null ], + [ "mMaterialIndex", "class_triangle.html#a7f441edf952be97bf6110750c69b620a", null ], + [ "mUserData", "class_triangle.html#aafe91e923394d83ed4ee872bc2164ca5", null ], + [ "mV", "class_triangle.html#add833346b63769a08d6d868195c9b6a5", null ] +]; \ No newline at end of file diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags-members.html b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags-members.html new file mode 100644 index 000000000..6a973f6dd --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags-members.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleCodecIndexed8BitPackSOA4Flags Member List
+
+
+ +

This is the complete list of members for TriangleCodecIndexed8BitPackSOA4Flags, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
ChangesOffsetOnPackTriangleCodecIndexed8BitPackSOA4Flagsstatic
COMPONENT_BITS enum valueTriangleCodecIndexed8BitPackSOA4Flags
COMPONENT_MASK enum valueTriangleCodecIndexed8BitPackSOA4Flags
COMPONENT_X enum valueTriangleCodecIndexed8BitPackSOA4Flags
COMPONENT_Y1 enum valueTriangleCodecIndexed8BitPackSOA4Flags
COMPONENT_Y1_BITS enum valueTriangleCodecIndexed8BitPackSOA4Flags
COMPONENT_Y2 enum valueTriangleCodecIndexed8BitPackSOA4Flags
COMPONENT_Y2_BITS enum valueTriangleCodecIndexed8BitPackSOA4Flags
COMPONENT_Z enum valueTriangleCodecIndexed8BitPackSOA4Flags
EComponentData enum nameTriangleCodecIndexed8BitPackSOA4Flags
ETriangleBlockHeaderFlags enum nameTriangleCodecIndexed8BitPackSOA4Flags
EVertexXY enum nameTriangleCodecIndexed8BitPackSOA4Flags
EVertexZY enum nameTriangleCodecIndexed8BitPackSOA4Flags
OFFSET_TO_USERDATA_BITS enum valueTriangleCodecIndexed8BitPackSOA4Flags
OFFSET_TO_USERDATA_MASK enum valueTriangleCodecIndexed8BitPackSOA4Flags
OFFSET_TO_VERTICES_BITS enum valueTriangleCodecIndexed8BitPackSOA4Flags
OFFSET_TO_VERTICES_MASK enum valueTriangleCodecIndexed8BitPackSOA4Flags
TriangleHeaderSizeTriangleCodecIndexed8BitPackSOA4Flagsstatic
+
+ + + + diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html new file mode 100644 index 000000000..455262f68 --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html @@ -0,0 +1,323 @@ + + + + + + + +Jolt Physics: TriangleCodecIndexed8BitPackSOA4Flags Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleCodecIndexed8BitPackSOA4Flags Class Reference
+
+
+ +

#include <TriangleCodecIndexed8BitPackSOA4Flags.h>

+ + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  DecodingContext
 This class is used to decode and decompress triangle data packed by the EncodingContext. More...
 
class  EncodingContext
 This class is used to encode and compress triangle data into a byte buffer. More...
 
struct  TriangleBlock
 A block of 4 triangles. More...
 
struct  TriangleBlockHeader
 A triangle header, will be followed by one or more TriangleBlocks. More...
 
class  TriangleHeader
 
class  ValidationContext
 This class is used to validate that the triangle data will not be degenerate after compression. More...
 
struct  VertexData
 A single packed vertex. More...
 
+ + + + + + + + + + + + +

+Public Types

enum  EComponentData : uint32 { COMPONENT_BITS = 21 +, COMPONENT_MASK = (1 << COMPONENT_BITS) - 1 + }
 Amount of bits per component. More...
 
enum  EVertexXY : uint32 { COMPONENT_X = 0 +, COMPONENT_Y1 = COMPONENT_BITS +, COMPONENT_Y1_BITS = 32 - COMPONENT_BITS + }
 Packed X and Y coordinate. More...
 
enum  EVertexZY : uint32 { COMPONENT_Z = 0 +, COMPONENT_Y2 = COMPONENT_BITS +, COMPONENT_Y2_BITS = 31 - COMPONENT_BITS + }
 Packed Z and Y coordinate. More...
 
enum  ETriangleBlockHeaderFlags : uint32 { OFFSET_TO_VERTICES_BITS = 29 +, OFFSET_TO_VERTICES_MASK = (1 << OFFSET_TO_VERTICES_BITS) - 1 +, OFFSET_TO_USERDATA_BITS = 3 +, OFFSET_TO_USERDATA_MASK = (1 << OFFSET_TO_USERDATA_BITS) - 1 + }
 
+ + + + + + + +

+Static Public Attributes

static constexpr int TriangleHeaderSize = sizeof(TriangleHeader)
 Size of the header (an empty struct is always > 0 bytes so this needs a separate variable)
 
static constexpr bool ChangesOffsetOnPack = false
 If this codec could return a different offset than the current buffer size when calling Pack()
 
+

Detailed Description

+

Store vertices in 64 bits and indices in 8 bits + 8 bit of flags per triangle like this:

+

TriangleBlockHeader, TriangleBlock (4 triangles and their flags in 16 bytes), TriangleBlock... [Optional] UserData (4 bytes per triangle)

+

Vertices are stored:

+

VertexData (1 vertex in 64 bits), VertexData...

+

They're compressed relative to the bounding box as provided by the node codec.

+

Member Enumeration Documentation

+ +

◆ EComponentData

+ +
+
+ +

Amount of bits per component.

+ + + +
Enumerator
COMPONENT_BITS 
COMPONENT_MASK 
+ +
+
+ +

◆ ETriangleBlockHeaderFlags

+ +
+
+ + + + + +
Enumerator
OFFSET_TO_VERTICES_BITS 

Offset from current block to start of vertices in bytes.

+
OFFSET_TO_VERTICES_MASK 
OFFSET_TO_USERDATA_BITS 

When user data is stored, this is the number of blocks to skip to get to the user data (0 = no user data)

+
OFFSET_TO_USERDATA_MASK 
+ +
+
+ +

◆ EVertexXY

+ +
+
+ +

Packed X and Y coordinate.

+ + + + +
Enumerator
COMPONENT_X 
COMPONENT_Y1 
COMPONENT_Y1_BITS 
+ +
+
+ +

◆ EVertexZY

+ +
+
+ +

Packed Z and Y coordinate.

+ + + + +
Enumerator
COMPONENT_Z 
COMPONENT_Y2 
COMPONENT_Y2_BITS 
+ +
+
+

Member Data Documentation

+ +

◆ ChangesOffsetOnPack

+ +
+
+ + + + + +
+ + + + +
constexpr bool TriangleCodecIndexed8BitPackSOA4Flags::ChangesOffsetOnPack = false
+
+staticconstexpr
+
+ +

If this codec could return a different offset than the current buffer size when calling Pack()

+ +
+
+ +

◆ TriangleHeaderSize

+ +
+
+ + + + + +
+ + + + +
constexpr int TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeaderSize = sizeof(TriangleHeader)
+
+staticconstexpr
+
+ +

Size of the header (an empty struct is always > 0 bytes so this needs a separate variable)

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.js b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.js new file mode 100644 index 000000000..cd3405f65 --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.js @@ -0,0 +1,30 @@ +var class_triangle_codec_indexed8_bit_pack_s_o_a4_flags = +[ + [ "DecodingContext", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context" ], + [ "EncodingContext", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context" ], + [ "TriangleBlock", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.html", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block" ], + [ "TriangleBlockHeader", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header" ], + [ "TriangleHeader", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header" ], + [ "ValidationContext", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context" ], + [ "VertexData", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.html", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data" ], + [ "EComponentData", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a9ae76041d1be874601839088c1e62bef", [ + [ "COMPONENT_BITS", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a9ae76041d1be874601839088c1e62befa3e9951b9dbde0cc6bbad1d93bb559b74", null ], + [ "COMPONENT_MASK", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a9ae76041d1be874601839088c1e62befa6423600be728f5706df8c5cd299e6784", null ] + ] ], + [ "ETriangleBlockHeaderFlags", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7", [ + [ "OFFSET_TO_VERTICES_BITS", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7af4813a4d11b084820b1822b849a4417c", null ], + [ "OFFSET_TO_VERTICES_MASK", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7a8ee2cdd53a4c605008ef9cfaecf00211", null ], + [ "OFFSET_TO_USERDATA_BITS", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7a6008b679de593dd3bada966a054cfdf5", null ], + [ "OFFSET_TO_USERDATA_MASK", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7a686b6aec5fcb6a420e1fab1ad4a156cd", null ] + ] ], + [ "EVertexXY", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#ad85eb72dec6aa3c370e9ad969c46c4d2", [ + [ "COMPONENT_X", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#ad85eb72dec6aa3c370e9ad969c46c4d2a0fce898e2e747fa56fcfe948c75bcf4c", null ], + [ "COMPONENT_Y1", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#ad85eb72dec6aa3c370e9ad969c46c4d2adc0bffc5e83c98f99afe8fe18bdfc77e", null ], + [ "COMPONENT_Y1_BITS", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#ad85eb72dec6aa3c370e9ad969c46c4d2af5671f311a0c7314908173cd02da9229", null ] + ] ], + [ "EVertexZY", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#adf7b4eade64871b3f53059bdacf9aace", [ + [ "COMPONENT_Z", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#adf7b4eade64871b3f53059bdacf9aacea20bbfa39a2c203daad6afc217b354199", null ], + [ "COMPONENT_Y2", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#adf7b4eade64871b3f53059bdacf9aaceae4bc48542d03b13ac031fc67f9eaa79c", null ], + [ "COMPONENT_Y2_BITS", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#adf7b4eade64871b3f53059bdacf9aacea61adc7a5c7a546e8f686916fe0f0029a", null ] + ] ] +]; \ No newline at end of file diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context-members.html b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context-members.html new file mode 100644 index 000000000..3aa025f39 --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext Member List
+
+
+ +

This is the complete list of members for TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext, including all inherited members.

+ + + + + + + + + +
DecodingContext(const TriangleHeader *inHeader)TriangleCodecIndexed8BitPackSOA4Flags::DecodingContextinlineexplicit
GetTriangle(const void *inTriangleStart, uint32 inTriangleIdx, Vec3 &outV1, Vec3 &outV2, Vec3 &outV3) constTriangleCodecIndexed8BitPackSOA4Flags::DecodingContextinline
GetUserData(const void *inTriangleStart, uint32 inTriangleIdx) constTriangleCodecIndexed8BitPackSOA4Flags::DecodingContextinline
sGetFlags(const void *inTriangleStart, uint32 inNumTriangles, uint8 *outTriangleFlags)TriangleCodecIndexed8BitPackSOA4Flags::DecodingContextinlinestatic
sGetFlags(const void *inTriangleStart, int inTriangleIndex)TriangleCodecIndexed8BitPackSOA4Flags::DecodingContextinlinestatic
TestRay(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, const void *inTriangleStart, uint32 inNumTriangles, float inClosest, uint32 &outClosestTriangleIndex) constTriangleCodecIndexed8BitPackSOA4Flags::DecodingContextinline
Unpack(const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles) constTriangleCodecIndexed8BitPackSOA4Flags::DecodingContextinline
Unpack(const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles, uint8 *outTriangleFlags) constTriangleCodecIndexed8BitPackSOA4Flags::DecodingContextinline
+
+ + + + diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html new file mode 100644 index 000000000..d1a0d0fb3 --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html @@ -0,0 +1,518 @@ + + + + + + + +Jolt Physics: TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext Class Reference
+
+
+ +

This class is used to decode and decompress triangle data packed by the EncodingContext. + More...

+ +

#include <TriangleCodecIndexed8BitPackSOA4Flags.h>

+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_INLINE DecodingContext (const TriangleHeader *inHeader)
 
JPH_INLINE void Unpack (const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles) const
 Unpacks triangles in the format t1v1,t1v2,t1v3, t2v1,t2v2,t2v3, ...
 
JPH_INLINE float TestRay (Vec3Arg inRayOrigin, Vec3Arg inRayDirection, const void *inTriangleStart, uint32 inNumTriangles, float inClosest, uint32 &outClosestTriangleIndex) const
 Tests a ray against the packed triangles.
 
void GetTriangle (const void *inTriangleStart, uint32 inTriangleIdx, Vec3 &outV1, Vec3 &outV2, Vec3 &outV3) const
 Decode a single triangle.
 
JPH_INLINE uint32 GetUserData (const void *inTriangleStart, uint32 inTriangleIdx) const
 Get user data for a triangle.
 
JPH_INLINE void Unpack (const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles, uint8 *outTriangleFlags) const
 Unpacks triangles and flags, convenience function.
 
+ + + + + + + +

+Static Public Member Functions

static JPH_INLINE void sGetFlags (const void *inTriangleStart, uint32 inNumTriangles, uint8 *outTriangleFlags)
 Get flags for entire triangle block.
 
static JPH_INLINE uint8 sGetFlags (const void *inTriangleStart, int inTriangleIndex)
 Get flags for a particular triangle.
 
+

Detailed Description

+

This class is used to decode and decompress triangle data packed by the EncodingContext.

+

Constructor & Destructor Documentation

+ +

◆ DecodingContext()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::DecodingContext (const TriangleHeaderinHeader)
+
+inlineexplicit
+
+ +
+
+

Member Function Documentation

+ +

◆ GetTriangle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::GetTriangle (const void * inTriangleStart,
uint32 inTriangleIdx,
Vec3outV1,
Vec3outV2,
Vec3outV3 
) const
+
+inline
+
+ +

Decode a single triangle.

+ +
+
+ +

◆ GetUserData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE uint32 TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::GetUserData (const void * inTriangleStart,
uint32 inTriangleIdx 
) const
+
+inline
+
+ +

Get user data for a triangle.

+ +
+
+ +

◆ sGetFlags() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static JPH_INLINE uint8 TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::sGetFlags (const void * inTriangleStart,
int inTriangleIndex 
)
+
+inlinestatic
+
+ +

Get flags for a particular triangle.

+ +
+
+ +

◆ sGetFlags() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static JPH_INLINE void TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::sGetFlags (const void * inTriangleStart,
uint32 inNumTriangles,
uint8outTriangleFlags 
)
+
+inlinestatic
+
+ +

Get flags for entire triangle block.

+ +
+
+ +

◆ TestRay()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE float TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::TestRay (Vec3Arg inRayOrigin,
Vec3Arg inRayDirection,
const void * inTriangleStart,
uint32 inNumTriangles,
float inClosest,
uint32outClosestTriangleIndex 
) const
+
+inline
+
+ +

Tests a ray against the packed triangles.

+ +
+
+ +

◆ Unpack() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE void TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::Unpack (const void * inTriangleStart,
uint32 inNumTriangles,
Vec3outTriangles 
) const
+
+inline
+
+ +

Unpacks triangles in the format t1v1,t1v2,t1v3, t2v1,t2v2,t2v3, ...

+ +
+
+ +

◆ Unpack() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE void TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::Unpack (const void * inTriangleStart,
uint32 inNumTriangles,
Vec3outTriangles,
uint8outTriangleFlags 
) const
+
+inline
+
+ +

Unpacks triangles and flags, convenience function.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.js b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.js new file mode 100644 index 000000000..870425c1e --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.js @@ -0,0 +1,9 @@ +var class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context = +[ + [ "DecodingContext", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#af84b416ab6da3ec2c8b3285e18537dc0", null ], + [ "GetTriangle", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#a3fb4bf3fda3a5fe7fede50bdfad3ed17", null ], + [ "GetUserData", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#a556ef7c4049df729a89803a23a210d4c", null ], + [ "TestRay", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#ae532afd31a81a660a2602ce779449b23", null ], + [ "Unpack", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#ada5a0630058e85675e03c6d054b5bff2", null ], + [ "Unpack", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#ab2f3679c65f018d1dcb3e462dad0eef0", null ] +]; \ No newline at end of file diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context-members.html b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context-members.html new file mode 100644 index 000000000..1dd845d52 --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext Member List
+
+
+ +

This is the complete list of members for TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext, including all inherited members.

+ + + + + +
EncodingContext(const VertexList &inVertices)TriangleCodecIndexed8BitPackSOA4Flags::EncodingContextinlineexplicit
Finalize(const VertexList &inVertices, TriangleHeader *ioHeader, ByteBuffer &ioBuffer) constTriangleCodecIndexed8BitPackSOA4Flags::EncodingContextinline
GetPessimisticMemoryEstimate(uint inTriangleCount, bool inStoreUserData) constTriangleCodecIndexed8BitPackSOA4Flags::EncodingContextinline
Pack(const IndexedTriangleList &inTriangles, bool inStoreUserData, ByteBuffer &ioBuffer, const char *&outError)TriangleCodecIndexed8BitPackSOA4Flags::EncodingContextinline
+
+ + + + diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html new file mode 100644 index 000000000..e5f343bcf --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html @@ -0,0 +1,303 @@ + + + + + + + +Jolt Physics: TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext Class Reference
+
+
+ +

This class is used to encode and compress triangle data into a byte buffer. + More...

+ +

#include <TriangleCodecIndexed8BitPackSOA4Flags.h>

+ + + + + + + + + + + + + +

+Public Member Functions

 EncodingContext (const VertexList &inVertices)
 Construct the encoding context.
 
uint GetPessimisticMemoryEstimate (uint inTriangleCount, bool inStoreUserData) const
 Get an upper bound on the amount of bytes needed to store inTriangleCount triangles.
 
uint Pack (const IndexedTriangleList &inTriangles, bool inStoreUserData, ByteBuffer &ioBuffer, const char *&outError)
 
void Finalize (const VertexList &inVertices, TriangleHeader *ioHeader, ByteBuffer &ioBuffer) const
 After all triangles have been packed, this finalizes the header and triangle buffer.
 
+

Detailed Description

+

This class is used to encode and compress triangle data into a byte buffer.

+

Constructor & Destructor Documentation

+ +

◆ EncodingContext()

+ +
+
+ + + + + +
+ + + + + + + + +
TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::EncodingContext (const VertexListinVertices)
+
+inlineexplicit
+
+ +

Construct the encoding context.

+ +
+
+

Member Function Documentation

+ +

◆ Finalize()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::Finalize (const VertexListinVertices,
TriangleHeaderioHeader,
ByteBufferioBuffer 
) const
+
+inline
+
+ +

After all triangles have been packed, this finalizes the header and triangle buffer.

+ +
+
+ +

◆ GetPessimisticMemoryEstimate()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::GetPessimisticMemoryEstimate (uint inTriangleCount,
bool inStoreUserData 
) const
+
+inline
+
+ +

Get an upper bound on the amount of bytes needed to store inTriangleCount triangles.

+ +
+
+ +

◆ Pack()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
uint TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::Pack (const IndexedTriangleListinTriangles,
bool inStoreUserData,
ByteBufferioBuffer,
const char *& outError 
)
+
+inline
+
+

Pack the triangles in inContainer to ioBuffer. This stores the mMaterialIndex of a triangle in the 8 bit flags. Returns uint(-1) on error.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.js b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.js new file mode 100644 index 000000000..ae30807ac --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.js @@ -0,0 +1,7 @@ +var class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context = +[ + [ "EncodingContext", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#a1a7a9c8bdd917bf0e4b95a88694c8630", null ], + [ "Finalize", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#a795673261b70c6dcf35cc2b95cc6e901", null ], + [ "GetPessimisticMemoryEstimate", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#ae8eb05b5245787f87587b5d24aa4f469", null ], + [ "Pack", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#ab92e9d36f948042d9682f00291422e76", null ] +]; \ No newline at end of file diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header-members.html b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header-members.html new file mode 100644 index 000000000..2ac8c2d90 --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader Member List
+
+
+ +

This is the complete list of members for TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader, including all inherited members.

+ + + +
mOffsetTriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader
mScaleTriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader
+
+ + + + diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html new file mode 100644 index 000000000..e83cd38ef --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html @@ -0,0 +1,165 @@ + + + + + + + +Jolt Physics: TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader Class Reference
+
+
+ +

#include <TriangleCodecIndexed8BitPackSOA4Flags.h>

+ + + + + + + + +

+Public Attributes

Float3 mOffset
 Offset of all vertices.
 
Float3 mScale
 Scale of all vertices, vertex_position = mOffset + mScale * compressed_vertex_position.
 
+

Member Data Documentation

+ +

◆ mOffset

+ +
+
+ + + + +
Float3 TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader::mOffset
+
+ +

Offset of all vertices.

+ +
+
+ +

◆ mScale

+ +
+
+ + + + +
Float3 TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader::mScale
+
+ +

Scale of all vertices, vertex_position = mOffset + mScale * compressed_vertex_position.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.js b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.js new file mode 100644 index 000000000..2fb35c739 --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.js @@ -0,0 +1,5 @@ +var class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header = +[ + [ "mOffset", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html#a31081b105365540e856c4e5a264dfe64", null ], + [ "mScale", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html#ab4e4d57f7c4750037a52136fa23d6c5c", null ] +]; \ No newline at end of file diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context-members.html b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context-members.html new file mode 100644 index 000000000..602a33623 --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext Member List
+
+
+ +

This is the complete list of members for TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext, including all inherited members.

+ + + +
IsDegenerate(const IndexedTriangle &inTriangle) constTriangleCodecIndexed8BitPackSOA4Flags::ValidationContextinline
ValidationContext(const IndexedTriangleList &inTriangles, const VertexList &inVertices)TriangleCodecIndexed8BitPackSOA4Flags::ValidationContextinline
+
+ + + + diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html new file mode 100644 index 000000000..d278015d3 --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html @@ -0,0 +1,205 @@ + + + + + + + +Jolt Physics: TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext Class Reference
+
+
+ +

This class is used to validate that the triangle data will not be degenerate after compression. + More...

+ +

#include <TriangleCodecIndexed8BitPackSOA4Flags.h>

+ + + + + + + + +

+Public Member Functions

 ValidationContext (const IndexedTriangleList &inTriangles, const VertexList &inVertices)
 Constructor.
 
bool IsDegenerate (const IndexedTriangle &inTriangle) const
 Test if a triangle will be degenerate after quantization.
 
+

Detailed Description

+

This class is used to validate that the triangle data will not be degenerate after compression.

+

Constructor & Destructor Documentation

+ +

◆ ValidationContext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext::ValidationContext (const IndexedTriangleListinTriangles,
const VertexListinVertices 
)
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ IsDegenerate()

+ +
+
+ + + + + +
+ + + + + + + + +
bool TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext::IsDegenerate (const IndexedTriangleinTriangle) const
+
+inline
+
+ +

Test if a triangle will be degenerate after quantization.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.js b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.js new file mode 100644 index 000000000..3772d0cf7 --- /dev/null +++ b/class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.js @@ -0,0 +1,5 @@ +var class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context = +[ + [ "ValidationContext", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html#adfe6c83baebc97d4103fad27e121e8c1", null ], + [ "IsDegenerate", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html#a516aa9477446fe411a4d0eaab643f0d8", null ] +]; \ No newline at end of file diff --git a/class_triangle_grouper-members.html b/class_triangle_grouper-members.html new file mode 100644 index 000000000..44172a4fe --- /dev/null +++ b/class_triangle_grouper-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleGrouper Member List
+
+
+ +

This is the complete list of members for TriangleGrouper, including all inherited members.

+ + + + + + +
Group(const VertexList &inVertices, const IndexedTriangleList &inTriangles, int inGroupSize, Array< uint > &outGroupedTriangleIndices)=0TriangleGrouperpure virtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~TriangleGrouper()=defaultTriangleGroupervirtual
+
+ + + + diff --git a/class_triangle_grouper.html b/class_triangle_grouper.html new file mode 100644 index 000000000..71ce41736 --- /dev/null +++ b/class_triangle_grouper.html @@ -0,0 +1,242 @@ + + + + + + + +Jolt Physics: TriangleGrouper Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleGrouper Class Referenceabstract
+
+
+ +

A class that groups triangles in batches of N (according to closeness) + More...

+ +

#include <TriangleGrouper.h>

+
+Inheritance diagram for TriangleGrouper:
+
+
+ + +NonCopyable +TriangleGrouperClosestCentroid +TriangleGrouperMorton + +
+ + + + + + + + + + + + + + +

+Public Member Functions

virtual ~TriangleGrouper ()=default
 Virtual destructor.
 
virtual void Group (const VertexList &inVertices, const IndexedTriangleList &inTriangles, int inGroupSize, Array< uint > &outGroupedTriangleIndices)=0
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

A class that groups triangles in batches of N (according to closeness)

+

Constructor & Destructor Documentation

+ +

◆ ~TriangleGrouper()

+ +
+
+ + + + + +
+ + + + + + + +
virtual TriangleGrouper::~TriangleGrouper ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Group()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void TriangleGrouper::Group (const VertexListinVertices,
const IndexedTriangleListinTriangles,
int inGroupSize,
Array< uint > & outGroupedTriangleIndices 
)
+
+pure virtual
+
+

Group a batch of indexed triangles

Parameters
+ + + + + +
inVerticesThe list of vertices
inTrianglesThe list of indexed triangles (indexes into inVertices)
inGroupSizeHow big each group should be
outGroupedTriangleIndicesAn ordered list of indices (indexing into inTriangles), contains groups of inGroupSize large worth of indices to triangles that are grouped together. If the triangle count is not an exact multiple of inGroupSize the last batch will be smaller.
+
+
+ +

Implemented in TriangleGrouperClosestCentroid, and TriangleGrouperMorton.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_triangle_grouper.js b/class_triangle_grouper.js new file mode 100644 index 000000000..6a8fbb6b2 --- /dev/null +++ b/class_triangle_grouper.js @@ -0,0 +1,5 @@ +var class_triangle_grouper = +[ + [ "~TriangleGrouper", "class_triangle_grouper.html#a5c9c53e78df6ff8a53cb144e42458cfa", null ], + [ "Group", "class_triangle_grouper.html#a002940499a58b60dafdcdedb7e26fbb5", null ] +]; \ No newline at end of file diff --git a/class_triangle_grouper.png b/class_triangle_grouper.png new file mode 100644 index 000000000..6a3fa43a5 Binary files /dev/null and b/class_triangle_grouper.png differ diff --git a/class_triangle_grouper_closest_centroid-members.html b/class_triangle_grouper_closest_centroid-members.html new file mode 100644 index 000000000..b825c14a4 --- /dev/null +++ b/class_triangle_grouper_closest_centroid-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleGrouperClosestCentroid Member List
+
+
+ +

This is the complete list of members for TriangleGrouperClosestCentroid, including all inherited members.

+ + + + + + +
Group(const VertexList &inVertices, const IndexedTriangleList &inTriangles, int inGroupSize, Array< uint > &outGroupedTriangleIndices) overrideTriangleGrouperClosestCentroidvirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~TriangleGrouper()=defaultTriangleGroupervirtual
+
+ + + + diff --git a/class_triangle_grouper_closest_centroid.html b/class_triangle_grouper_closest_centroid.html new file mode 100644 index 000000000..11ee56e14 --- /dev/null +++ b/class_triangle_grouper_closest_centroid.html @@ -0,0 +1,212 @@ + + + + + + + +Jolt Physics: TriangleGrouperClosestCentroid Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleGrouperClosestCentroid Class Reference
+
+
+ +

#include <TriangleGrouperClosestCentroid.h>

+
+Inheritance diagram for TriangleGrouperClosestCentroid:
+
+
+ + +TriangleGrouper +NonCopyable + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

virtual void Group (const VertexList &inVertices, const IndexedTriangleList &inTriangles, int inGroupSize, Array< uint > &outGroupedTriangleIndices) override
 
- Public Member Functions inherited from TriangleGrouper
virtual ~TriangleGrouper ()=default
 Virtual destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

A class that groups triangles in batches of N. Starts with centroid with lowest X coordinate and finds N closest centroids, this repeats until all groups have been found. Time complexity: O(N^2)

+

Member Function Documentation

+ +

◆ Group()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void TriangleGrouperClosestCentroid::Group (const VertexListinVertices,
const IndexedTriangleListinTriangles,
int inGroupSize,
Array< uint > & outGroupedTriangleIndices 
)
+
+overridevirtual
+
+

Group a batch of indexed triangles

Parameters
+ + + + + +
inVerticesThe list of vertices
inTrianglesThe list of indexed triangles (indexes into inVertices)
inGroupSizeHow big each group should be
outGroupedTriangleIndicesAn ordered list of indices (indexing into inTriangles), contains groups of inGroupSize large worth of indices to triangles that are grouped together. If the triangle count is not an exact multiple of inGroupSize the last batch will be smaller.
+
+
+ +

Implements TriangleGrouper.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_triangle_grouper_closest_centroid.js b/class_triangle_grouper_closest_centroid.js new file mode 100644 index 000000000..87b179e0d --- /dev/null +++ b/class_triangle_grouper_closest_centroid.js @@ -0,0 +1,4 @@ +var class_triangle_grouper_closest_centroid = +[ + [ "Group", "class_triangle_grouper_closest_centroid.html#a41cf43b8c59cd10eedf1fafbca09fd42", null ] +]; \ No newline at end of file diff --git a/class_triangle_grouper_closest_centroid.png b/class_triangle_grouper_closest_centroid.png new file mode 100644 index 000000000..d01ce5059 Binary files /dev/null and b/class_triangle_grouper_closest_centroid.png differ diff --git a/class_triangle_grouper_morton-members.html b/class_triangle_grouper_morton-members.html new file mode 100644 index 000000000..c33be038f --- /dev/null +++ b/class_triangle_grouper_morton-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleGrouperMorton Member List
+
+
+ +

This is the complete list of members for TriangleGrouperMorton, including all inherited members.

+ + + + + + +
Group(const VertexList &inVertices, const IndexedTriangleList &inTriangles, int inGroupSize, Array< uint > &outGroupedTriangleIndices) overrideTriangleGrouperMortonvirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
~TriangleGrouper()=defaultTriangleGroupervirtual
+
+ + + + diff --git a/class_triangle_grouper_morton.html b/class_triangle_grouper_morton.html new file mode 100644 index 000000000..1bdfbafa1 --- /dev/null +++ b/class_triangle_grouper_morton.html @@ -0,0 +1,212 @@ + + + + + + + +Jolt Physics: TriangleGrouperMorton Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleGrouperMorton Class Reference
+
+
+ +

#include <TriangleGrouperMorton.h>

+
+Inheritance diagram for TriangleGrouperMorton:
+
+
+ + +TriangleGrouper +NonCopyable + +
+ + + + + + + + + + + + + + + +

+Public Member Functions

virtual void Group (const VertexList &inVertices, const IndexedTriangleList &inTriangles, int inGroupSize, Array< uint > &outGroupedTriangleIndices) override
 
- Public Member Functions inherited from TriangleGrouper
virtual ~TriangleGrouper ()=default
 Virtual destructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+

A class that groups triangles in batches of N according to morton code of centroid. Time complexity: O(N log(N))

+

Member Function Documentation

+ +

◆ Group()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN void TriangleGrouperMorton::Group (const VertexListinVertices,
const IndexedTriangleListinTriangles,
int inGroupSize,
Array< uint > & outGroupedTriangleIndices 
)
+
+overridevirtual
+
+

Group a batch of indexed triangles

Parameters
+ + + + + +
inVerticesThe list of vertices
inTrianglesThe list of indexed triangles (indexes into inVertices)
inGroupSizeHow big each group should be
outGroupedTriangleIndicesAn ordered list of indices (indexing into inTriangles), contains groups of inGroupSize large worth of indices to triangles that are grouped together. If the triangle count is not an exact multiple of inGroupSize the last batch will be smaller.
+
+
+ +

Implements TriangleGrouper.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_triangle_grouper_morton.js b/class_triangle_grouper_morton.js new file mode 100644 index 000000000..021a9e752 --- /dev/null +++ b/class_triangle_grouper_morton.js @@ -0,0 +1,4 @@ +var class_triangle_grouper_morton = +[ + [ "Group", "class_triangle_grouper_morton.html#ac20ae93a828b828b47e20f1b0630c4fb", null ] +]; \ No newline at end of file diff --git a/class_triangle_grouper_morton.png b/class_triangle_grouper_morton.png new file mode 100644 index 000000000..25e7e0040 Binary files /dev/null and b/class_triangle_grouper_morton.png differ diff --git a/class_triangle_shape-members.html b/class_triangle_shape-members.html new file mode 100644 index 000000000..871ac0c17 --- /dev/null +++ b/class_triangle_shape-members.html @@ -0,0 +1,206 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleShape Member List
+
+
+ +

This is the complete list of members for TriangleShape, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Shape >inline
CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const overrideTriangleShapevirtual
CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideTriangleShapevirtual
cEmbeddedRefTarget< Shape >protectedstatic
cGetTrianglesMinTrianglesRequestedShapestatic
CollectTransformedShapes(const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) constShapevirtual
CollidePoint(Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const overrideTriangleShapevirtual
CollideSoftBodyVertices(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const overrideTriangleShapevirtual
ConvexShape(EShapeSubType inSubType)ConvexShapeinlineexplicit
ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)ConvexShapeinline
ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial)ConvexShapeinline
Draw(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const overrideTriangleShapevirtual
DrawGetSupportFunction(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const overrideConvexShapevirtual
DrawGetSupportingFace(DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideConvexShapevirtual
ESupportMode enum nameConvexShape
GetCenterOfMass() constShapeinlinevirtual
GetConvexRadius() constTriangleShapeinline
GetDensity() constConvexShapeinline
GetInnerRadius() const overrideTriangleShapeinlinevirtual
GetLeafShape(const SubShapeID &inSubShapeID, SubShapeID &outRemainder) constShapevirtual
GetLocalBounds() const overrideTriangleShapevirtual
GetMassProperties() const overrideTriangleShapevirtual
GetMaterial(const SubShapeID &inSubShapeID) const overrideConvexShapeinlinevirtual
GetMaterial() constConvexShapeinline
GetRefCount() constRefTarget< Shape >inline
GetStats() const overrideTriangleShapeinlinevirtual
GetStatsRecursive(VisitedShapes &ioVisitedShapes) constShapevirtual
GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const overrideTriangleShapevirtual
Shape::GetSubmergedVolume(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0Shapepure virtual
GetSubShapeIDBitsRecursive() const overrideConvexShapeinlinevirtual
GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) constShapevirtual
GetSubShapeUserData(const SubShapeID &inSubShapeID) constShapeinlinevirtual
GetSubType() constShapeinline
GetSupportFunction(ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const overrideTriangleShapevirtual
GetSupportingFace(const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const overrideTriangleShapevirtual
GetSurfaceNormal(const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const overrideTriangleShapevirtual
GetTrianglesNext(GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const overrideTriangleShapevirtual
GetTrianglesStart(GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const overrideTriangleShapevirtual
GetType() constShapeinline
GetUserData() constShapeinline
GetVolume() const overrideTriangleShapeinlinevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const overrideTriangleShapevirtual
GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) constTriangleShapeinlinevirtual
GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) constTriangleShapeinline
IDToMaterialMap typedefShape
IDToShapeMap typedefShape
IsValidScale(Vec3Arg inScale) const overrideTriangleShapevirtual
MakeScaleValid(Vec3Arg inScale) const overrideTriangleShapevirtual
MaterialToIDMap typedefShape
mRefCountRefTarget< Shape >mutableprotected
MustBeStatic() constShapeinlinevirtual
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< Shape >::operator=(const RefTarget &)RefTarget< Shape >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Shape >inline
RefTarget(const RefTarget &)RefTarget< Shape >inline
Release() constRefTarget< Shape >inline
RestoreBinaryState(StreamIn &inStream) overrideTriangleShapeprotectedvirtual
RestoreMaterialState(const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) overrideConvexShapevirtual
RestoreSubShapeState(const ShapeRefC *inSubShapes, uint inNumShapes)Shapeinlinevirtual
SaveBinaryState(StreamOut &inStream) const overrideTriangleShapevirtual
SaveMaterialState(PhysicsMaterialList &outMaterials) const overrideConvexShapevirtual
Shape::SaveMaterialState(PhysicsMaterialList &outMaterials) constShapeinlinevirtual
SaveSubShapeState(ShapeList &outSubShapes) constShapeinlinevirtual
SaveWithChildren(StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) constShape
ScaleShape(Vec3Arg inScale) constShape
sCollidePointUsingRayCast(const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)Shapeprotectedstatic
sDrawSubmergedVolumesShapestatic
SetDensity(float inDensity)ConvexShapeinline
SetEmbedded() constRefTarget< Shape >inline
SetMaterial(const PhysicsMaterial *inMaterial)ConvexShapeinline
SetUserData(uint64 inUserData)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType)Shapeinline
Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)Shapeinline
ShapeResult typedefShape
ShapeToIDMap typedefShape
sInternalGetRefCountOffset()RefTarget< Shape >inlinestatic
sRegister()TriangleShapestatic
sRestoreFromBinaryState(StreamIn &inStream)Shapestatic
sRestoreWithChildren(StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)Shapestatic
sUnitSphereTrianglesConvexShapeprotectedstatic
SupportingFace typedefShape
TransformShape(Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) constShapevirtual
TriangleShape()TriangleShapeinline
TriangleShape(const TriangleShapeSettings &inSettings, ShapeResult &outResult)TriangleShape
TriangleShape(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, float inConvexRadius=0.0f, const PhysicsMaterial *inMaterial=nullptr)TriangleShapeinline
VisitedShapes typedefShape
~RefTarget()RefTarget< Shape >inline
~Shape()=defaultShapevirtual
+
+ + + + diff --git a/class_triangle_shape.html b/class_triangle_shape.html new file mode 100644 index 000000000..97951ee28 --- /dev/null +++ b/class_triangle_shape.html @@ -0,0 +1,1586 @@ + + + + + + + +Jolt Physics: TriangleShape Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleShape Class Referencefinal
+
+
+ +

A single triangle, not the most efficient way of creating a world filled with triangles but can be used as a query shape for example. + More...

+ +

#include <TriangleShape.h>

+
+Inheritance diagram for TriangleShape:
+
+
+ + +ConvexShape +Shape +RefTarget< Shape > +NonCopyable + +
+ + + + + + + + +

+Classes

class  TriangleNoConvex
 
class  TriangleWithConvex
 
class  TSGetTrianglesContext
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE TriangleShape ()
 Constructor.
 
 TriangleShape (const TriangleShapeSettings &inSettings, ShapeResult &outResult)
 
 TriangleShape (Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, float inConvexRadius=0.0f, const PhysicsMaterial *inMaterial=nullptr)
 
float GetConvexRadius () const
 Convex radius.
 
virtual AABox GetLocalBounds () const override
 Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 
virtual float GetInnerRadius () const override
 
virtual MassProperties GetMassProperties () const override
 Calculate the mass and inertia of this shape.
 
virtual Vec3 GetSurfaceNormal (const SubShapeID &inSubShapeID, Vec3Arg inLocalSurfacePosition) const override
 
virtual void GetSupportingFace (const SubShapeID &inSubShapeID, Vec3Arg inDirection, Vec3Arg inScale, Mat44Arg inCenterOfMassTransform, SupportingFace &outVertices) const override
 
virtual const SupportGetSupportFunction (ESupportMode inMode, SupportBuffer &inBuffer, Vec3Arg inScale) const override
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy JPH_IF_DEBUG_RENDERER(, RVec3Arg inBaseOffset)) const override
 
virtual void Draw (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inUseMaterialColors, bool inDrawWireframe) const override
 Draw the shape at a particular location with a particular color (debugging purposes)
 
virtual bool CastRay (const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override
 
virtual void CastRay (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollidePoint (Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override
 
virtual void CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, SoftBodyVertex *ioVertices, uint inNumVertices, float inDeltaTime, Vec3Arg inDisplacementDueToGravity, int inCollidingShapeIndex) const override
 
virtual void GetTrianglesStart (GetTrianglesContext &ioContext, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale) const override
 
virtual int GetTrianglesNext (GetTrianglesContext &ioContext, int inMaxTrianglesRequested, Float3 *outTriangleVertices, const PhysicsMaterial **outMaterials=nullptr) const override
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the shape in binary form to inStream.
 
virtual Stats GetStats () const override
 Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.
 
virtual float GetVolume () const override
 
virtual bool IsValidScale (Vec3Arg inScale) const override
 
virtual Vec3 MakeScaleValid (Vec3Arg inScale) const override
 
virtual AABox GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
- Public Member Functions inherited from ConvexShape
JPH_OVERRIDE_NEW_DELETE ConvexShape (EShapeSubType inSubType)
 Constructor.
 
 ConvexShape (EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)
 
 ConvexShape (EShapeSubType inSubType, const PhysicsMaterial *inMaterial)
 
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 shape. Used mainly for checking that it is smaller or equal than SubShapeID::MaxBits.
 
virtual const PhysicsMaterialGetMaterial (const SubShapeID &inSubShapeID) const override
 Get the material assigned to a particular sub shape ID.
 
void SetMaterial (const PhysicsMaterial *inMaterial)
 Material of the shape.
 
const PhysicsMaterialGetMaterial () const
 
void SetDensity (float inDensity)
 Set density of the shape (kg / m^3)
 
float GetDensity () const
 Get density of the shape (kg / m^3)
 
virtual void DrawGetSupportFunction (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale, ColorArg inColor, bool inDrawSupportDirection) const override
 Draw the results of the GetSupportFunction with the convex radius added back on to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void DrawGetSupportingFace (DebugRenderer *inRenderer, RMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const override
 Draw the results of the GetSupportingFace function to show any errors introduced by this process (only relevant for convex shapes)
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const override
 
virtual void RestoreMaterialState (const PhysicsMaterialRefC *inMaterials, uint inNumMaterials) override
 Restore the material references after calling sRestoreFromBinaryState. Note that the exact same materials need to be provided in the same order as returned by SaveMaterialState.
 
- Public Member Functions inherited from Shape
 Shape (EShapeType inType, EShapeSubType inSubType)
 Constructor.
 
 Shape (EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)
 
virtual ~Shape ()=default
 Destructor.
 
EShapeType GetType () const
 Get type.
 
EShapeSubType GetSubType () const
 
uint64 GetUserData () const
 User data (to be used freely by the application)
 
void SetUserData (uint64 inUserData)
 
virtual bool MustBeStatic () const
 Check if this shape can only be used to create a static body or if it can also be dynamic/kinematic.
 
virtual Vec3 GetCenterOfMass () const
 All shapes are centered around their center of mass. This function returns the center of mass position that needs to be applied to transform the shape to where it was created.
 
AABox GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const
 Get world space bounds including convex radius.
 
virtual const ShapeGetLeafShape (const SubShapeID &inSubShapeID, SubShapeID &outRemainder) const
 
virtual uint64 GetSubShapeUserData (const SubShapeID &inSubShapeID) const
 Get the user data of a particular sub shape ID. Corresponds with the value stored in Shape::GetUserData of the leaf shape pointed to by inSubShapeID.
 
virtual TransformedShape GetSubShapeTransformedShape (const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const
 
virtual void GetSubmergedVolume (Mat44Arg inCenterOfMassTransform, Vec3Arg inScale, const Plane &inSurface, float &outTotalVolume, float &outSubmergedVolume, Vec3 &outCenterOfBuoyancy, RVec3Arg inBaseOffset) const =0
 
virtual void CollectTransformedShapes (const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter) const
 
virtual void TransformShape (Mat44Arg inCenterOfMassTransform, TransformedShapeCollector &ioCollector) const
 
ShapeResult ScaleShape (Vec3Arg inScale) const
 
virtual Stats GetStatsRecursive (VisitedShapes &ioVisitedShapes) const
 Volume of this shape (m^3). Note that for compound shapes the volume may be incorrect since child shapes can overlap which is not accounted for.
 
virtual void SaveMaterialState (PhysicsMaterialList &outMaterials) const
 Outputs the material references that this shape has to outMaterials.
 
virtual void SaveSubShapeState (ShapeList &outSubShapes) const
 Outputs the shape references that this shape has to outSubShapes.
 
virtual void RestoreSubShapeState (const ShapeRefC *inSubShapes, uint inNumShapes)
 Restore the shape references after calling sRestoreFromBinaryState. Note that the exact same shapes need to be provided in the same order as returned by SaveSubShapeState.
 
void SaveWithChildren (StreamOut &inStream, ShapeToIDMap &ioShapeMap, MaterialToIDMap &ioMaterialMap) const
 Save this shape, all its children and its materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while saving multiple shapes to the same stream in order to avoid writing duplicates.
 
- Public Member Functions inherited from RefTarget< Shape >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void sRegister ()
 
- Static Public Member Functions inherited from ConvexShape
static void sRegister ()
 
- Static Public Member Functions inherited from Shape
static ShapeResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a Shape of the correct type and restores its contents from the binary stream inStream.
 
static ShapeResult sRestoreWithChildren (StreamIn &inStream, IDToShapeMap &ioShapeMap, IDToMaterialMap &ioMaterialMap)
 Restore a shape, all its children and materials. Pass in an empty map in ioShapeMap / ioMaterialMap or reuse the same map while reading multiple shapes from the same stream in order to restore duplicates.
 
- Static Public Member Functions inherited from RefTarget< Shape >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConvexShape
enum class  ESupportMode { ExcludeConvexRadius +, IncludeConvexRadius +, Default + }
 How the GetSupport function should behave. More...
 
- Public Types inherited from Shape
using ShapeResult = ShapeSettings::ShapeResult
 
using SupportingFace = StaticArray< Vec3, 32 >
 Type definition for a supporting face.
 
using VisitedShapes = UnorderedSet< const Shape * >
 
using ShapeToIDMap = StreamUtils::ObjectToIDMap< Shape >
 
using IDToShapeMap = StreamUtils::IDToObjectMap< Shape >
 
using MaterialToIDMap = StreamUtils::ObjectToIDMap< PhysicsMaterial >
 
using IDToMaterialMap = StreamUtils::IDToObjectMap< PhysicsMaterial >
 
- Static Public Attributes inherited from Shape
static constexpr int cGetTrianglesMinTrianglesRequested = 32
 This is the minimum amount of triangles that should be requested through GetTrianglesNext.
 
static bool sDrawSubmergedVolumes = false
 Debug helper which draws the intersection between water and the shapes, the center of buoyancy and the submerged volume.
 
- Static Protected Member Functions inherited from Shape
static void sCollidePointUsingRayCast (const Shape &inShape, Vec3Arg inPoint, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
 A fallback version of CollidePoint that uses a ray cast and counts the number of hits to determine if the point is inside the shape. Odd number of hits means inside, even number of hits means outside.
 
- Protected Attributes inherited from RefTarget< Shape >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from ConvexShape
static const StaticArray< Vec3, 384 > sUnitSphereTriangles
 Vertex list that forms a unit sphere.
 
- Static Protected Attributes inherited from RefTarget< Shape >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

A single triangle, not the most efficient way of creating a world filled with triangles but can be used as a query shape for example.

+

Constructor & Destructor Documentation

+ +

◆ TriangleShape() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE TriangleShape::TriangleShape ()
+
+inline
+
+ +

Constructor.

+ +
+
+ +

◆ TriangleShape() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
TriangleShape::TriangleShape (const TriangleShapeSettingsinSettings,
ShapeResultoutResult 
)
+
+ +
+
+ +

◆ TriangleShape() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TriangleShape::TriangleShape (Vec3Arg inV1,
Vec3Arg inV2,
Vec3Arg inV3,
float inConvexRadius = 0.0f,
const PhysicsMaterialinMaterial = nullptr 
)
+
+inline
+
+

Create a triangle with points (inV1, inV2, inV3) (counter clockwise) and convex radius inConvexRadius. Note that the convex radius is currently only used for shape vs shape collision, for all other purposes the triangle is infinitely thin.

+ +
+
+

Member Function Documentation

+ +

◆ CastRay() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TriangleShape::CastRay (const RayCastinRay,
const RayCastSettingsinRayCastSettings,
const SubShapeIDCreatorinSubShapeIDCreator,
CastRayCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Cast a ray against this shape. Allows returning multiple hits through ioCollector. Note that this version is more flexible but also slightly slower than the CastRay function that returns only a single hit. If you want the surface normal of the hit use GetSurfaceNormal(collected sub shape ID, inRay.GetPointOnRay(collected faction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CastRay() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool TriangleShape::CastRay (const RayCastinRay,
const SubShapeIDCreatorinSubShapeIDCreator,
RayCastResultioHit 
) const
+
+overridevirtual
+
+

Cast a ray against this shape, returns true if it finds a hit closer than ioHit.mFraction and updates that fraction. Otherwise ioHit is left untouched and the function returns false. Note that the ray should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from RayCast::mOrigin if you want to cast against the shape in the space it was created). Convex objects will be treated as solid (meaning if the ray starts inside, you'll get a hit fraction of 0) and back face hits against triangles are returned. If you want the surface normal of the hit use GetSurfaceNormal(ioHit.mSubShapeID2, inRay.GetPointOnRay(ioHit.mFraction)).

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollidePoint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TriangleShape::CollidePoint (Vec3Arg inPoint,
const SubShapeIDCreatorinSubShapeIDCreator,
CollidePointCollectorioCollector,
const ShapeFilterinShapeFilter = { } 
) const
+
+overridevirtual
+
+

Check if inPoint is inside this shape. For this tests all shapes are treated as if they were solid. Note that inPoint should be relative to the center of mass of this shape (i.e. subtract Shape::GetCenterOfMass() from inPoint if you want to test against the shape in the space it was created). For a mesh shape, this test will only provide sensible information if the mesh is a closed manifold. For each shape that collides, ioCollector will receive a hit.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ CollideSoftBodyVertices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TriangleShape::CollideSoftBodyVertices (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
SoftBodyVertexioVertices,
uint inNumVertices,
float inDeltaTime,
Vec3Arg inDisplacementDueToGravity,
int inCollidingShapeIndex 
) const
+
+overridevirtual
+
+

Collides all vertices of a soft body with this shape and updates SoftBodyVertex::mCollisionPlane, SoftBodyVertex::mCollidingShapeIndex and SoftBodyVertex::mLargestPenetration if a collision with more penetration was found.

Parameters
+ + + + + + + + +
inCenterOfMassTransformCenter of mass transform for this shape relative to the vertices.
inScaleScale in local space of the shape (scales relative to its center of mass)
ioVerticesThe vertices of the soft body
inNumVerticesThe number of vertices in ioVertices
inDeltaTimeDelta time of this time step (can be used to extrapolate the position using the velocity of the particle)
inDisplacementDueToGravityDisplacement due to gravity during this time step
inCollidingShapeIndexValue to store in SoftBodyVertex::mCollidingShapeIndex when a collision was found
+
+
+ +

Implements Shape.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TriangleShape::Draw (DebugRendererinRenderer,
RMat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
ColorArg inColor,
bool inUseMaterialColors,
bool inDrawWireframe 
) const
+
+overridevirtual
+
+ +

Draw the shape at a particular location with a particular color (debugging purposes)

+ +

Implements Shape.

+ +
+
+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
float TriangleShape::GetConvexRadius () const
+
+inline
+
+ +

Convex radius.

+ +
+
+ +

◆ GetInnerRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float TriangleShape::GetInnerRadius () const
+
+inlineoverridevirtual
+
+

Returns the radius of the biggest sphere that fits entirely in the shape. In case this shape consists of multiple sub shapes, it returns the smallest sphere of the parts. This can be used as a measure of how far the shape can be moved without risking going through geometry.

+ +

Implements Shape.

+ +
+
+ +

◆ GetLocalBounds()

+ +
+
+ + + + + +
+ + + + + + + +
AABox TriangleShape::GetLocalBounds () const
+
+overridevirtual
+
+ +

Get local bounding box including convex radius, this box is centered around the center of mass rather than the world transform.

+ +

Implements Shape.

+ +
+
+ +

◆ GetMassProperties()

+ +
+
+ + + + + +
+ + + + + + + +
MassProperties TriangleShape::GetMassProperties () const
+
+overridevirtual
+
+ +

Calculate the mass and inertia of this shape.

+ +

Implements Shape.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Stats TriangleShape::GetStats () const
+
+inlineoverridevirtual
+
+ +

Get stats of this shape. Use for logging / data collection purposes only. Does not add values from child shapes, use GetStatsRecursive for this.

+ +

Implements Shape.

+ +
+
+ +

◆ GetSubmergedVolume()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TriangleShape::GetSubmergedVolume (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale,
const PlaneinSurface,
float & outTotalVolume,
float & outSubmergedVolume,
Vec3 &outCenterOfBuoyancy  JPH_IF_DEBUG_RENDERER, RVec3Arg inBaseOffset 
) const
+
+overridevirtual
+
+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetSupportFunction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
const ConvexShape::Support * TriangleShape::GetSupportFunction (ESupportMode inMode,
SupportBufferinBuffer,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Returns an object that provides the GetSupport function for this shape. inMode determines if this support function includes or excludes the convex radius. of the values returned by the GetSupport function. This improves numerical accuracy of the results. inScale scales this shape in local space.

+ +

Implements ConvexShape.

+ +
+
+ +

◆ GetSupportingFace()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TriangleShape::GetSupportingFace (const SubShapeIDinSubShapeID,
Vec3Arg inDirection,
Vec3Arg inScale,
Mat44Arg inCenterOfMassTransform,
SupportingFaceoutVertices 
) const
+
+overridevirtual
+
+

Get the vertices of the face that faces inDirection the most (includes any convex radius). Note that this function can only return faces of convex shapes or triangles, which is why a sub shape ID to get to that leaf must be provided.

Parameters
+ + + + + + +
inSubShapeIDSub shape ID of target shape
inDirectionDirection that the face should be facing (in local space to this shape)
inCenterOfMassTransformTransform to transform outVertices with
inScaleScale in local space of the shape (scales relative to its center of mass)
outVerticesResulting face. The returned face can be empty if the shape doesn't have polygons to return (e.g. because it's a sphere). The face will be returned in world space.
+
+
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetSurfaceNormal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 TriangleShape::GetSurfaceNormal (const SubShapeIDinSubShapeID,
Vec3Arg inLocalSurfacePosition 
) const
+
+overridevirtual
+
+

Get the surface normal of a particular sub shape ID and point on surface (all vectors are relative to center of mass for this shape). Note: When you have a CollideShapeResult or ShapeCastResult you should use -mPenetrationAxis.Normalized() as contact normal as GetSurfaceNormal will only return face normals (and not vertex or edge normals).

+ +

Implements Shape.

+ +
+
+ +

◆ GetTrianglesNext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int TriangleShape::GetTrianglesNext (GetTrianglesContextioContext,
int inMaxTrianglesRequested,
Float3outTriangleVertices,
const PhysicsMaterial ** outMaterials = nullptr 
) const
+
+overridevirtual
+
+

Call this repeatedly to get all triangles in the box. outTriangleVertices should be large enough to hold 3 * inMaxTriangleRequested entries. outMaterials (if it is not null) should contain inMaxTrianglesRequested entries. The function returns the amount of triangles that it found (which will be <= inMaxTrianglesRequested), or 0 if there are no more triangles. Note that the function can return a value < inMaxTrianglesRequested and still have more triangles to process (triangles can be returned in blocks). Note that the function may return triangles outside of the requested box, only coarse culling is performed on the returned triangles.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetTrianglesStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TriangleShape::GetTrianglesStart (GetTrianglesContextioContext,
const AABoxinBox,
Vec3Arg inPositionCOM,
QuatArg inRotation,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

To start iterating over triangles, call this function first. ioContext is a temporary buffer and should remain untouched until the last call to GetTrianglesNext. inBox is the world space bounding in which you want to get the triangles. inPositionCOM/inRotation/inScale describes the transform of this shape. To get the actual triangles call GetTrianglesNext.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ GetVolume()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float TriangleShape::GetVolume () const
+
+inlineoverridevirtual
+
+ +

Implements Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox Shape::GetWorldSpaceBounds (DMat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inline
+
+ +

Get world space bounds including convex radius.

+ +
+
+ +

◆ GetWorldSpaceBounds() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual AABox Shape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+inlinevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ GetWorldSpaceBounds() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
AABox TriangleShape::GetWorldSpaceBounds (Mat44Arg inCenterOfMassTransform,
Vec3Arg inScale 
) const
+
+overridevirtual
+
+

Get world space bounds including convex radius. This shape is scaled by inScale in local space first. This function can be overridden to return a closer fitting world space bounding box, by default it will just transform what GetLocalBounds() returns.

+ +

Reimplemented from Shape.

+ +
+
+ +

◆ IsValidScale()

+ +
+
+ + + + + +
+ + + + + + + + +
bool TriangleShape::IsValidScale (Vec3Arg inScale) const
+
+overridevirtual
+
+

Test if inScale is a valid scale for this shape. Some shapes can only be scaled uniformly, compound shapes cannot handle shapes being rotated and scaled (this would cause shearing), scale can never be zero. When the scale is invalid, the function will return false.

+

Here's a list of supported scales:

    +
  • SphereShape: Scale must be uniform (signs of scale are ignored).
  • +
  • BoxShape: Any scale supported (signs of scale are ignored).
  • +
  • TriangleShape: Any scale supported when convex radius is zero, otherwise only uniform scale supported.
  • +
  • CapsuleShape: Scale must be uniform (signs of scale are ignored).
  • +
  • TaperedCapsuleShape: Scale must be uniform (sign of Y scale can be used to flip the capsule).
  • +
  • CylinderShape: Scale must be uniform in XZ plane, Y can scale independently (signs of scale are ignored).
  • +
  • RotatedTranslatedShape: Scale must not cause shear in the child shape.
  • +
  • CompoundShape: Scale must not cause shear in any of the child shapes.
  • +
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ MakeScaleValid()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 TriangleShape::MakeScaleValid (Vec3Arg inScale) const
+
+overridevirtual
+
+

This function will make sure that if you wrap this shape in a ScaledShape that the scale is valid. Note that this involves discarding components of the scale that are invalid, so the resulting scaled shape may be different than the requested scale. Compare the return value of this function with the scale you passed in to detect major inconsistencies and possibly warn the user.

Parameters
+ + +
inScaleLocal space scale for this shape.
+
+
+
Returns
Scale that can be used to wrap this shape in a ScaledShape. IsValidScale will return true for this scale.
+ +

Reimplemented from Shape.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void TriangleShape::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void TriangleShape::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the shape in binary form to inStream.

+ +

Reimplemented from ConvexShape.

+ +
+
+ +

◆ sRegister()

+ +
+
+ + + + + +
+ + + + + + + +
void TriangleShape::sRegister ()
+
+static
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_triangle_shape.js b/class_triangle_shape.js new file mode 100644 index 000000000..774c70be8 --- /dev/null +++ b/class_triangle_shape.js @@ -0,0 +1,33 @@ +var class_triangle_shape = +[ + [ "TriangleNoConvex", "class_triangle_shape_1_1_triangle_no_convex.html", "class_triangle_shape_1_1_triangle_no_convex" ], + [ "TriangleWithConvex", "class_triangle_shape_1_1_triangle_with_convex.html", "class_triangle_shape_1_1_triangle_with_convex" ], + [ "TSGetTrianglesContext", "class_triangle_shape_1_1_t_s_get_triangles_context.html", "class_triangle_shape_1_1_t_s_get_triangles_context" ], + [ "TriangleShape", "class_triangle_shape.html#a8f50dd711b5be7bb02a0dd06e954a8d4", null ], + [ "TriangleShape", "class_triangle_shape.html#a00bc42b4bae3128d2aab79799d0ff223", null ], + [ "TriangleShape", "class_triangle_shape.html#a178af266e6fc0452b5ba413851b3a7c8", null ], + [ "CastRay", "class_triangle_shape.html#a6095d8ea98d3e69ea17834a82ca1126e", null ], + [ "CastRay", "class_triangle_shape.html#aadffe4301ac4d7a85693978a441b6c08", null ], + [ "CollidePoint", "class_triangle_shape.html#a30e75a8329213c0df77088b28af7858d", null ], + [ "CollideSoftBodyVertices", "class_triangle_shape.html#af59dc4e9b420698bca4944751a866627", null ], + [ "Draw", "class_triangle_shape.html#a3d39b9ad69e1da9c16eb1f0a9221090b", null ], + [ "GetConvexRadius", "class_triangle_shape.html#ad05039d8e56aca9a7f1e83453f4e897e", null ], + [ "GetInnerRadius", "class_triangle_shape.html#a0810f695ee3695e5206e9c8b4d506727", null ], + [ "GetLocalBounds", "class_triangle_shape.html#acb85ccdd921dcc7f1018bafd6cc54af0", null ], + [ "GetMassProperties", "class_triangle_shape.html#aed1e73c2a8e181beb5c775bd5bddca6f", null ], + [ "GetStats", "class_triangle_shape.html#a41afaef8725be99a40861e777de22119", null ], + [ "GetSubmergedVolume", "class_triangle_shape.html#aaf0e4efd78402e813ebd25d219020773", null ], + [ "GetSupportFunction", "class_triangle_shape.html#a218f85b8e0fe0e50bb8dbf6de81b1986", null ], + [ "GetSupportingFace", "class_triangle_shape.html#ad35f626bfc8807441d6b200ebf74e216", null ], + [ "GetSurfaceNormal", "class_triangle_shape.html#af2073f91655595dde2662482e5821006", null ], + [ "GetTrianglesNext", "class_triangle_shape.html#aea1cb87c9bdf927b353459aec286218f", null ], + [ "GetTrianglesStart", "class_triangle_shape.html#a3fe954485d3333b502acd074ebd3d405", null ], + [ "GetVolume", "class_triangle_shape.html#ae85456e8f22b77ebef19e814221b9ec9", null ], + [ "GetWorldSpaceBounds", "class_triangle_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b", null ], + [ "GetWorldSpaceBounds", "class_triangle_shape.html#a9f8379fa338802436700b86a07fab3be", null ], + [ "GetWorldSpaceBounds", "class_triangle_shape.html#aa28d229f86caa87f195cf1bf9b0529f2", null ], + [ "IsValidScale", "class_triangle_shape.html#aa130f6df7eb934713fce70d29bd5d526", null ], + [ "MakeScaleValid", "class_triangle_shape.html#a425faa91c050f75c9e1e4bfb1f0e6ca6", null ], + [ "RestoreBinaryState", "class_triangle_shape.html#ab632b280870ff67e4c8cdfbbbb05ae64", null ], + [ "SaveBinaryState", "class_triangle_shape.html#a846c245654d20a47cd41a4d01a1d035f", null ] +]; \ No newline at end of file diff --git a/class_triangle_shape.png b/class_triangle_shape.png new file mode 100644 index 000000000..8e5879c7d Binary files /dev/null and b/class_triangle_shape.png differ diff --git a/class_triangle_shape_1_1_t_s_get_triangles_context-members.html b/class_triangle_shape_1_1_t_s_get_triangles_context-members.html new file mode 100644 index 000000000..8aaf18168 --- /dev/null +++ b/class_triangle_shape_1_1_t_s_get_triangles_context-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleShape::TSGetTrianglesContext Member List
+
+
+ +

This is the complete list of members for TriangleShape::TSGetTrianglesContext, including all inherited members.

+ + + + + + +
mIsDoneTriangleShape::TSGetTrianglesContext
mV1TriangleShape::TSGetTrianglesContext
mV2TriangleShape::TSGetTrianglesContext
mV3TriangleShape::TSGetTrianglesContext
TSGetTrianglesContext(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3)TriangleShape::TSGetTrianglesContextinline
+
+ + + + diff --git a/class_triangle_shape_1_1_t_s_get_triangles_context.html b/class_triangle_shape_1_1_t_s_get_triangles_context.html new file mode 100644 index 000000000..8af28fa84 --- /dev/null +++ b/class_triangle_shape_1_1_t_s_get_triangles_context.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: TriangleShape::TSGetTrianglesContext Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleShape::TSGetTrianglesContext Class Reference
+
+
+ + + + +

+Public Member Functions

 TSGetTrianglesContext (Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3)
 
+ + + + + + + + + +

+Public Attributes

Vec3 mV1
 
Vec3 mV2
 
Vec3 mV3
 
bool mIsDone = false
 
+

Constructor & Destructor Documentation

+ +

◆ TSGetTrianglesContext()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
TriangleShape::TSGetTrianglesContext::TSGetTrianglesContext (Vec3Arg inV1,
Vec3Arg inV2,
Vec3Arg inV3 
)
+
+inline
+
+ +
+
+

Member Data Documentation

+ +

◆ mIsDone

+ +
+
+ + + + +
bool TriangleShape::TSGetTrianglesContext::mIsDone = false
+
+ +
+
+ +

◆ mV1

+ +
+
+ + + + +
Vec3 TriangleShape::TSGetTrianglesContext::mV1
+
+ +
+
+ +

◆ mV2

+ +
+
+ + + + +
Vec3 TriangleShape::TSGetTrianglesContext::mV2
+
+ +
+
+ +

◆ mV3

+ +
+
+ + + + +
Vec3 TriangleShape::TSGetTrianglesContext::mV3
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_triangle_shape_1_1_t_s_get_triangles_context.js b/class_triangle_shape_1_1_t_s_get_triangles_context.js new file mode 100644 index 000000000..7016088d4 --- /dev/null +++ b/class_triangle_shape_1_1_t_s_get_triangles_context.js @@ -0,0 +1,8 @@ +var class_triangle_shape_1_1_t_s_get_triangles_context = +[ + [ "TSGetTrianglesContext", "class_triangle_shape_1_1_t_s_get_triangles_context.html#aca666669db38498306a8dc3a29a39c9c", null ], + [ "mIsDone", "class_triangle_shape_1_1_t_s_get_triangles_context.html#a8c57dd14077aa690d0dde4d1454aaf90", null ], + [ "mV1", "class_triangle_shape_1_1_t_s_get_triangles_context.html#ad673b007a0573a667df6b9198774f75d", null ], + [ "mV2", "class_triangle_shape_1_1_t_s_get_triangles_context.html#abb0734ba3ab26c205de6f4c3a87e7fe9", null ], + [ "mV3", "class_triangle_shape_1_1_t_s_get_triangles_context.html#a7c18cf40db6033cf16d259d679c76004", null ] +]; \ No newline at end of file diff --git a/class_triangle_shape_1_1_triangle_no_convex-members.html b/class_triangle_shape_1_1_triangle_no_convex-members.html new file mode 100644 index 000000000..edcc1f60f --- /dev/null +++ b/class_triangle_shape_1_1_triangle_no_convex-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleShape::TriangleNoConvex Member List
+
+
+ +

This is the complete list of members for TriangleShape::TriangleNoConvex, including all inherited members.

+ + + + + +
GetConvexRadius() const overrideTriangleShape::TriangleNoConvexinlinevirtual
GetSupport(Vec3Arg inDirection) const overrideTriangleShape::TriangleNoConvexinlinevirtual
TriangleNoConvex(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3)TriangleShape::TriangleNoConvexinline
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_triangle_shape_1_1_triangle_no_convex.html b/class_triangle_shape_1_1_triangle_no_convex.html new file mode 100644 index 000000000..34edc27af --- /dev/null +++ b/class_triangle_shape_1_1_triangle_no_convex.html @@ -0,0 +1,244 @@ + + + + + + + +Jolt Physics: TriangleShape::TriangleNoConvex Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleShape::TriangleNoConvex Class Referencefinal
+
+
+
+Inheritance diagram for TriangleShape::TriangleNoConvex:
+
+
+ + +ConvexShape::Support + +
+ + + + + + + + + + + + +

+Public Member Functions

 TriangleNoConvex (Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Constructor & Destructor Documentation

+ +

◆ TriangleNoConvex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
TriangleShape::TriangleNoConvex::TriangleNoConvex (Vec3Arg inV1,
Vec3Arg inV2,
Vec3Arg inV3 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float TriangleShape::TriangleNoConvex::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 TriangleShape::TriangleNoConvex::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_triangle_shape_1_1_triangle_no_convex.js b/class_triangle_shape_1_1_triangle_no_convex.js new file mode 100644 index 000000000..ee19e3463 --- /dev/null +++ b/class_triangle_shape_1_1_triangle_no_convex.js @@ -0,0 +1,6 @@ +var class_triangle_shape_1_1_triangle_no_convex = +[ + [ "TriangleNoConvex", "class_triangle_shape_1_1_triangle_no_convex.html#af59be04eb9c46c649d12f0d14463e64a", null ], + [ "GetConvexRadius", "class_triangle_shape_1_1_triangle_no_convex.html#a9a3136e6697ef368555225a6e12f0149", null ], + [ "GetSupport", "class_triangle_shape_1_1_triangle_no_convex.html#a03cf50acfaaafb83ae5f2c1efc445c7c", null ] +]; \ No newline at end of file diff --git a/class_triangle_shape_1_1_triangle_no_convex.png b/class_triangle_shape_1_1_triangle_no_convex.png new file mode 100644 index 000000000..b30257f0d Binary files /dev/null and b/class_triangle_shape_1_1_triangle_no_convex.png differ diff --git a/class_triangle_shape_1_1_triangle_with_convex-members.html b/class_triangle_shape_1_1_triangle_with_convex-members.html new file mode 100644 index 000000000..1fed9ccc9 --- /dev/null +++ b/class_triangle_shape_1_1_triangle_with_convex-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleShape::TriangleWithConvex Member List
+
+
+ +

This is the complete list of members for TriangleShape::TriangleWithConvex, including all inherited members.

+ + + + + +
GetConvexRadius() const overrideTriangleShape::TriangleWithConvexinlinevirtual
GetSupport(Vec3Arg inDirection) const overrideTriangleShape::TriangleWithConvexinlinevirtual
TriangleWithConvex(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, float inConvexRadius)TriangleShape::TriangleWithConvexinline
~Support()=defaultConvexShape::Supportvirtual
+
+ + + + diff --git a/class_triangle_shape_1_1_triangle_with_convex.html b/class_triangle_shape_1_1_triangle_with_convex.html new file mode 100644 index 000000000..5ad0cf235 --- /dev/null +++ b/class_triangle_shape_1_1_triangle_with_convex.html @@ -0,0 +1,250 @@ + + + + + + + +Jolt Physics: TriangleShape::TriangleWithConvex Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleShape::TriangleWithConvex Class Referencefinal
+
+
+
+Inheritance diagram for TriangleShape::TriangleWithConvex:
+
+
+ + +ConvexShape::Support + +
+ + + + + + + + + + + + +

+Public Member Functions

 TriangleWithConvex (Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, float inConvexRadius)
 
virtual Vec3 GetSupport (Vec3Arg inDirection) const override
 
virtual float GetConvexRadius () const override
 
- Public Member Functions inherited from ConvexShape::Support
virtual ~Support ()=default
 Warning: Virtual destructor will not be called on this object!
 
+

Constructor & Destructor Documentation

+ +

◆ TriangleWithConvex()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TriangleShape::TriangleWithConvex::TriangleWithConvex (Vec3Arg inV1,
Vec3Arg inV2,
Vec3Arg inV3,
float inConvexRadius 
)
+
+inline
+
+ +
+
+

Member Function Documentation

+ +

◆ GetConvexRadius()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float TriangleShape::TriangleWithConvex::GetConvexRadius () const
+
+inlineoverridevirtual
+
+

Convex radius of shape. Collision detection on penetrating shapes is much more expensive, so you can add a radius around objects to increase the shape. This makes it far less likely that they will actually penetrate.

+ +

Implements ConvexShape::Support.

+ +
+
+ +

◆ GetSupport()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Vec3 TriangleShape::TriangleWithConvex::GetSupport (Vec3Arg inDirection) const
+
+inlineoverridevirtual
+
+

Calculate the support vector for this convex shape (includes / excludes the convex radius depending on how this was obtained). Support vector is relative to the center of mass of the shape.

+ +

Implements ConvexShape::Support.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_triangle_shape_1_1_triangle_with_convex.js b/class_triangle_shape_1_1_triangle_with_convex.js new file mode 100644 index 000000000..7cbd9d187 --- /dev/null +++ b/class_triangle_shape_1_1_triangle_with_convex.js @@ -0,0 +1,6 @@ +var class_triangle_shape_1_1_triangle_with_convex = +[ + [ "TriangleWithConvex", "class_triangle_shape_1_1_triangle_with_convex.html#a027145a2149945bd88bd362e1e6a25d0", null ], + [ "GetConvexRadius", "class_triangle_shape_1_1_triangle_with_convex.html#ac62eb3e67195f25c99f68e752afb7082", null ], + [ "GetSupport", "class_triangle_shape_1_1_triangle_with_convex.html#addb17c65c6b1c99b7a4b2862ac796446", null ] +]; \ No newline at end of file diff --git a/class_triangle_shape_1_1_triangle_with_convex.png b/class_triangle_shape_1_1_triangle_with_convex.png new file mode 100644 index 000000000..6c8eaaf4c Binary files /dev/null and b/class_triangle_shape_1_1_triangle_with_convex.png differ diff --git a/class_triangle_shape_settings-members.html b/class_triangle_shape_settings-members.html new file mode 100644 index 000000000..d8a70f907 --- /dev/null +++ b/class_triangle_shape_settings-members.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleShapeSettings Member List
+
+
+ +

This is the complete list of members for TriangleShapeSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ShapeSettings >inline
cEmbeddedRefTarget< ShapeSettings >protectedstatic
ClearCachedResult()ShapeSettingsinline
ConvexShapeSettings()=defaultConvexShapeSettings
ConvexShapeSettings(const PhysicsMaterial *inMaterial)ConvexShapeSettingsinlineexplicit
Create() const overrideTriangleShapeSettingsvirtual
GetRefCount() constRefTarget< ShapeSettings >inline
mCachedResultShapeSettingsmutableprotected
mConvexRadiusTriangleShapeSettings
mDensityConvexShapeSettings
mMaterialConvexShapeSettings
mRefCountRefTarget< ShapeSettings >mutableprotected
mUserDataShapeSettings
mV1TriangleShapeSettings
mV2TriangleShapeSettings
mV3TriangleShapeSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ShapeSettings >::operator=(const RefTarget &)RefTarget< ShapeSettings >inline
RefTarget()=defaultRefTarget< ShapeSettings >inline
RefTarget(const RefTarget &)RefTarget< ShapeSettings >inline
Release() constRefTarget< ShapeSettings >inline
SetDensity(float inDensity)ConvexShapeSettingsinline
SetEmbedded() constRefTarget< ShapeSettings >inline
ShapeResult typedefShapeSettings
sInternalGetRefCountOffset()RefTarget< ShapeSettings >inlinestatic
TriangleShapeSettings()=defaultTriangleShapeSettings
TriangleShapeSettings(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, float inConvexRadius=0.0f, const PhysicsMaterial *inMaterial=nullptr)TriangleShapeSettingsinline
~RefTarget()RefTarget< ShapeSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_triangle_shape_settings.html b/class_triangle_shape_settings.html new file mode 100644 index 000000000..f8289083b --- /dev/null +++ b/class_triangle_shape_settings.html @@ -0,0 +1,412 @@ + + + + + + + +Jolt Physics: TriangleShapeSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleShapeSettings Class Referencefinal
+
+
+ +

Class that constructs a TriangleShape. + More...

+ +

#include <TriangleShape.h>

+
+Inheritance diagram for TriangleShapeSettings:
+
+
+ + +ConvexShapeSettings +ShapeSettings +SerializableObject +RefTarget< ShapeSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TriangleShapeSettings ()=default
 Default constructor for deserialization.
 
 TriangleShapeSettings (Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, float inConvexRadius=0.0f, const PhysicsMaterial *inMaterial=nullptr)
 
virtual ShapeResult Create () const override
 Create a shape according to the settings specified by this object.
 
- Public Member Functions inherited from ConvexShapeSettings
 ConvexShapeSettings ()=default
 Constructor.
 
 ConvexShapeSettings (const PhysicsMaterial *inMaterial)
 
void SetDensity (float inDensity)
 Set the density of the object in kg / m^3.
 
- Public Member Functions inherited from ShapeSettings
void ClearCachedResult ()
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ShapeSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Vec3 mV1
 
Vec3 mV2
 
Vec3 mV3
 
float mConvexRadius = 0.0f
 
- Public Attributes inherited from ConvexShapeSettings
RefConst< PhysicsMaterialmMaterial
 Material assigned to this shape.
 
float mDensity = 1000.0f
 Uniform density of the interior of the convex object (kg / m^3)
 
- Public Attributes inherited from ShapeSettings
uint64 mUserData = 0
 User data (to be used freely by the application)
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ShapeSettings
using ShapeResult = Result< Ref< Shape > >
 
- Static Public Member Functions inherited from RefTarget< ShapeSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from ShapeSettings
ShapeResult mCachedResult
 
- Protected Attributes inherited from RefTarget< ShapeSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ShapeSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that constructs a TriangleShape.

+

Constructor & Destructor Documentation

+ +

◆ TriangleShapeSettings() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
TriangleShapeSettings::TriangleShapeSettings ()
+
+default
+
+ +

Default constructor for deserialization.

+ +
+
+ +

◆ TriangleShapeSettings() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TriangleShapeSettings::TriangleShapeSettings (Vec3Arg inV1,
Vec3Arg inV2,
Vec3Arg inV3,
float inConvexRadius = 0.0f,
const PhysicsMaterialinMaterial = nullptr 
)
+
+inline
+
+

Create a triangle with points (inV1, inV2, inV3) (counter clockwise) and convex radius inConvexRadius. Note that the convex radius is currently only used for shape vs shape collision, for all other purposes the triangle is infinitely thin.

+ +
+
+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + +
ShapeSettings::ShapeResult TriangleShapeSettings::Create () const
+
+overridevirtual
+
+ +

Create a shape according to the settings specified by this object.

+ +

Implements ShapeSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mConvexRadius

+ +
+
+ + + + +
float TriangleShapeSettings::mConvexRadius = 0.0f
+
+ +
+
+ +

◆ mV1

+ +
+
+ + + + +
Vec3 TriangleShapeSettings::mV1
+
+ +
+
+ +

◆ mV2

+ +
+
+ + + + +
Vec3 TriangleShapeSettings::mV2
+
+ +
+
+ +

◆ mV3

+ +
+
+ + + + +
Vec3 TriangleShapeSettings::mV3
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_triangle_shape_settings.js b/class_triangle_shape_settings.js new file mode 100644 index 000000000..f86cabe05 --- /dev/null +++ b/class_triangle_shape_settings.js @@ -0,0 +1,10 @@ +var class_triangle_shape_settings = +[ + [ "TriangleShapeSettings", "class_triangle_shape_settings.html#af98052e609dd5012dc60dc23e6fc811d", null ], + [ "TriangleShapeSettings", "class_triangle_shape_settings.html#abbb22ef04b44f97c24dfbd48b8446dbc", null ], + [ "Create", "class_triangle_shape_settings.html#ae2a8bff03ce1978d9e0f04b97e6c7966", null ], + [ "mConvexRadius", "class_triangle_shape_settings.html#af83ef4f5df583764de2506f2903c2e7b", null ], + [ "mV1", "class_triangle_shape_settings.html#ace7ea628317505174644ccca3da1974e", null ], + [ "mV2", "class_triangle_shape_settings.html#afdc5c0d06ca166fe0bf4fbec095588e3", null ], + [ "mV3", "class_triangle_shape_settings.html#a4f21dc83442b7f3ebafa9fd5f2e84d66", null ] +]; \ No newline at end of file diff --git a/class_triangle_shape_settings.png b/class_triangle_shape_settings.png new file mode 100644 index 000000000..9bc261f74 Binary files /dev/null and b/class_triangle_shape_settings.png differ diff --git a/class_triangle_splitter-members.html b/class_triangle_splitter-members.html new file mode 100644 index 000000000..c0aafe129 --- /dev/null +++ b/class_triangle_splitter-members.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitter Member List
+
+
+ +

This is the complete list of members for TriangleSplitter, including all inherited members.

+ + + + + + + + + + + + + + + + +
GetInitialRange() constTriangleSplitterinline
GetStats(Stats &outStats) const =0TriangleSplitterpure virtual
GetTriangle(uint inIdx) constTriangleSplitterinline
GetVertices() constTriangleSplitterinline
mCentroidsTriangleSplitterprotected
mSortedTriangleIdxTriangleSplitterprotected
mTrianglesTriangleSplitterprotected
mVerticesTriangleSplitterprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Split(const Range &inTriangles, Range &outLeft, Range &outRight)=0TriangleSplitterpure virtual
SplitInternal(const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)TriangleSplitterprotected
TriangleSplitter(const VertexList &inVertices, const IndexedTriangleList &inTriangles)TriangleSplitter
~TriangleSplitter()=defaultTriangleSplittervirtual
+
+ + + + diff --git a/class_triangle_splitter.html b/class_triangle_splitter.html new file mode 100644 index 000000000..e68800632 --- /dev/null +++ b/class_triangle_splitter.html @@ -0,0 +1,582 @@ + + + + + + + +Jolt Physics: TriangleSplitter Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleSplitter Class Referenceabstract
+
+
+ +

A class that splits a triangle list into two parts for building a tree. + More...

+ +

#include <TriangleSplitter.h>

+
+Inheritance diagram for TriangleSplitter:
+
+
+ + +NonCopyable +TriangleSplitterBinning +TriangleSplitterFixedLeafSize +TriangleSplitterLongestAxis +TriangleSplitterMean +TriangleSplitterMorton + +
+ + + + + + + +

+Classes

struct  Range
 Helper struct to indicate triangle range before and after the split. More...
 
struct  Stats
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TriangleSplitter (const VertexList &inVertices, const IndexedTriangleList &inTriangles)
 Constructor.
 
virtual ~TriangleSplitter ()=default
 Virtual destructor.
 
virtual void GetStats (Stats &outStats) const =0
 Get stats of splitter.
 
Range GetInitialRange () const
 Range of triangles to start with.
 
virtual bool Split (const Range &inTriangles, Range &outLeft, Range &outRight)=0
 
const VertexListGetVertices () const
 Get the list of vertices.
 
const IndexedTriangleGetTriangle (uint inIdx) const
 Get triangle by index.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + +

+Protected Member Functions

bool SplitInternal (const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)
 Helper function to split triangles based on dimension and split value.
 
+ + + + + + + + + + + + + +

+Protected Attributes

const VertexListmVertices
 Vertices of the indexed triangles.
 
const IndexedTriangleListmTriangles
 Unsorted triangles.
 
Array< Float3mCentroids
 Unsorted centroids of triangles.
 
Array< uintmSortedTriangleIdx
 Indices to sort triangles.
 
+

Detailed Description

+

A class that splits a triangle list into two parts for building a tree.

+

Constructor & Destructor Documentation

+ +

◆ TriangleSplitter()

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN TriangleSplitter::TriangleSplitter (const VertexListinVertices,
const IndexedTriangleListinTriangles 
)
+
+ +

Constructor.

+ +
+
+ +

◆ ~TriangleSplitter()

+ +
+
+ + + + + +
+ + + + + + + +
virtual TriangleSplitter::~TriangleSplitter ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetInitialRange()

+ +
+
+ + + + + +
+ + + + + + + +
Range TriangleSplitter::GetInitialRange () const
+
+inline
+
+ +

Range of triangles to start with.

+ +
+
+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void TriangleSplitter::GetStats (StatsoutStats) const
+
+pure virtual
+
+
+ +

◆ GetTriangle()

+ +
+
+ + + + + +
+ + + + + + + + +
const IndexedTriangle & TriangleSplitter::GetTriangle (uint inIdx) const
+
+inline
+
+ +

Get triangle by index.

+ +
+
+ +

◆ GetVertices()

+ +
+
+ + + + + +
+ + + + + + + +
const VertexList & TriangleSplitter::GetVertices () const
+
+inline
+
+ +

Get the list of vertices.

+ +
+
+ +

◆ Split()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool TriangleSplitter::Split (const RangeinTriangles,
RangeoutLeft,
RangeoutRight 
)
+
+pure virtual
+
+

Split triangles into two groups left and right, returns false if no split could be made

Parameters
+ + + + +
inTrianglesThe range of triangles (in mSortedTriangleIdx) to process
outLeftOn return this will contain the ranges for the left subpart. mSortedTriangleIdx may have been shuffled.
outRightOn return this will contain the ranges for the right subpart. mSortedTriangleIdx may have been shuffled.
+
+
+
Returns
Returns true when a split was found
+ +

Implemented in TriangleSplitterBinning, TriangleSplitterFixedLeafSize, TriangleSplitterLongestAxis, TriangleSplitterMean, and TriangleSplitterMorton.

+ +
+
+ +

◆ SplitInternal()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool TriangleSplitter::SplitInternal (const RangeinTriangles,
uint inDimension,
float inSplit,
RangeoutLeft,
RangeoutRight 
)
+
+protected
+
+ +

Helper function to split triangles based on dimension and split value.

+ +
+
+

Member Data Documentation

+ +

◆ mCentroids

+ +
+
+ + + + + +
+ + + + +
Array<Float3> TriangleSplitter::mCentroids
+
+protected
+
+ +

Unsorted centroids of triangles.

+ +
+
+ +

◆ mSortedTriangleIdx

+ +
+
+ + + + + +
+ + + + +
Array<uint> TriangleSplitter::mSortedTriangleIdx
+
+protected
+
+ +

Indices to sort triangles.

+ +
+
+ +

◆ mTriangles

+ +
+
+ + + + + +
+ + + + +
const IndexedTriangleList& TriangleSplitter::mTriangles
+
+protected
+
+ +

Unsorted triangles.

+ +
+
+ +

◆ mVertices

+ +
+
+ + + + + +
+ + + + +
const VertexList& TriangleSplitter::mVertices
+
+protected
+
+ +

Vertices of the indexed triangles.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_triangle_splitter.js b/class_triangle_splitter.js new file mode 100644 index 000000000..59dfff6ed --- /dev/null +++ b/class_triangle_splitter.js @@ -0,0 +1,17 @@ +var class_triangle_splitter = +[ + [ "Range", "struct_triangle_splitter_1_1_range.html", "struct_triangle_splitter_1_1_range" ], + [ "Stats", "struct_triangle_splitter_1_1_stats.html", "struct_triangle_splitter_1_1_stats" ], + [ "TriangleSplitter", "class_triangle_splitter.html#a3c2194216f5d24f127479da12dcd5cdf", null ], + [ "~TriangleSplitter", "class_triangle_splitter.html#a29fdff34f24303ee9d3c52dec0ad73b3", null ], + [ "GetInitialRange", "class_triangle_splitter.html#afdc1efd952e2db0b80a3a29af8e5da9e", null ], + [ "GetStats", "class_triangle_splitter.html#ad58e7ea8a806e7e9df8ea5117ff2ebe8", null ], + [ "GetTriangle", "class_triangle_splitter.html#aec081c5b0f705cbee59ed5de06436122", null ], + [ "GetVertices", "class_triangle_splitter.html#a4ca9c0334863bd8615fbe9e498cfde44", null ], + [ "Split", "class_triangle_splitter.html#ad9cb9d125c24255c964427e186e5076e", null ], + [ "SplitInternal", "class_triangle_splitter.html#a1264db44ab782cdb4d8e3b7857422c1a", null ], + [ "mCentroids", "class_triangle_splitter.html#a164a63157cb133c324cd2664f6b6f678", null ], + [ "mSortedTriangleIdx", "class_triangle_splitter.html#ae62e9b953580dd5abf55e50985418829", null ], + [ "mTriangles", "class_triangle_splitter.html#ae13f91686abe55d9a87f2f5685b6268e", null ], + [ "mVertices", "class_triangle_splitter.html#a537998b55d090598c884630c73bde5f1", null ] +]; \ No newline at end of file diff --git a/class_triangle_splitter.png b/class_triangle_splitter.png new file mode 100644 index 000000000..2f84edb5f Binary files /dev/null and b/class_triangle_splitter.png differ diff --git a/class_triangle_splitter_binning-members.html b/class_triangle_splitter_binning-members.html new file mode 100644 index 000000000..1cf434e8e --- /dev/null +++ b/class_triangle_splitter_binning-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterBinning Member List
+
+
+ +

This is the complete list of members for TriangleSplitterBinning, including all inherited members.

+ + + + + + + + + + + + + + + + + +
GetInitialRange() constTriangleSplitterinline
GetStats(Stats &outStats) const overrideTriangleSplitterBinninginlinevirtual
GetTriangle(uint inIdx) constTriangleSplitterinline
GetVertices() constTriangleSplitterinline
mCentroidsTriangleSplitterprotected
mSortedTriangleIdxTriangleSplitterprotected
mTrianglesTriangleSplitterprotected
mVerticesTriangleSplitterprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Split(const Range &inTriangles, Range &outLeft, Range &outRight) overrideTriangleSplitterBinningvirtual
SplitInternal(const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)TriangleSplitterprotected
TriangleSplitter(const VertexList &inVertices, const IndexedTriangleList &inTriangles)TriangleSplitter
TriangleSplitterBinning(const VertexList &inVertices, const IndexedTriangleList &inTriangles, uint inMinNumBins=8, uint inMaxNumBins=128, uint inNumTrianglesPerBin=6)TriangleSplitterBinning
~TriangleSplitter()=defaultTriangleSplittervirtual
+
+ + + + diff --git a/class_triangle_splitter_binning.html b/class_triangle_splitter_binning.html new file mode 100644 index 000000000..f6e194bf2 --- /dev/null +++ b/class_triangle_splitter_binning.html @@ -0,0 +1,327 @@ + + + + + + + +Jolt Physics: TriangleSplitterBinning Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleSplitterBinning Class Reference
+
+
+ +

Binning splitter approach taken from: Realtime Ray Tracing on GPU with BVH-based Packet Traversal by Johannes Gunther et al. + More...

+ +

#include <TriangleSplitterBinning.h>

+
+Inheritance diagram for TriangleSplitterBinning:
+
+
+ + +TriangleSplitter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TriangleSplitterBinning (const VertexList &inVertices, const IndexedTriangleList &inTriangles, uint inMinNumBins=8, uint inMaxNumBins=128, uint inNumTrianglesPerBin=6)
 Constructor.
 
virtual void GetStats (Stats &outStats) const override
 Get stats of splitter.
 
virtual bool Split (const Range &inTriangles, Range &outLeft, Range &outRight) override
 
- Public Member Functions inherited from TriangleSplitter
 TriangleSplitter (const VertexList &inVertices, const IndexedTriangleList &inTriangles)
 Constructor.
 
virtual ~TriangleSplitter ()=default
 Virtual destructor.
 
Range GetInitialRange () const
 Range of triangles to start with.
 
const VertexListGetVertices () const
 Get the list of vertices.
 
const IndexedTriangleGetTriangle (uint inIdx) const
 Get triangle by index.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from TriangleSplitter
bool SplitInternal (const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)
 Helper function to split triangles based on dimension and split value.
 
- Protected Attributes inherited from TriangleSplitter
const VertexListmVertices
 Vertices of the indexed triangles.
 
const IndexedTriangleListmTriangles
 Unsorted triangles.
 
Array< Float3mCentroids
 Unsorted centroids of triangles.
 
Array< uintmSortedTriangleIdx
 Indices to sort triangles.
 
+

Detailed Description

+

Binning splitter approach taken from: Realtime Ray Tracing on GPU with BVH-based Packet Traversal by Johannes Gunther et al.

+

Constructor & Destructor Documentation

+ +

◆ TriangleSplitterBinning()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN TriangleSplitterBinning::TriangleSplitterBinning (const VertexListinVertices,
const IndexedTriangleListinTriangles,
uint inMinNumBins = 8,
uint inMaxNumBins = 128,
uint inNumTrianglesPerBin = 6 
)
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void TriangleSplitterBinning::GetStats (StatsoutStats) const
+
+inlineoverridevirtual
+
+ +

Get stats of splitter.

+ +

Implements TriangleSplitter.

+ +
+
+ +

◆ Split()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool TriangleSplitterBinning::Split (const RangeinTriangles,
RangeoutLeft,
RangeoutRight 
)
+
+overridevirtual
+
+

Split triangles into two groups left and right, returns false if no split could be made

Parameters
+ + + + +
inTrianglesThe range of triangles (in mSortedTriangleIdx) to process
outLeftOn return this will contain the ranges for the left subpart. mSortedTriangleIdx may have been shuffled.
outRightOn return this will contain the ranges for the right subpart. mSortedTriangleIdx may have been shuffled.
+
+
+
Returns
Returns true when a split was found
+ +

Implements TriangleSplitter.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_triangle_splitter_binning.js b/class_triangle_splitter_binning.js new file mode 100644 index 000000000..287487f0b --- /dev/null +++ b/class_triangle_splitter_binning.js @@ -0,0 +1,6 @@ +var class_triangle_splitter_binning = +[ + [ "TriangleSplitterBinning", "class_triangle_splitter_binning.html#a8000c311893ad133eb6fbe7a95ef2fe7", null ], + [ "GetStats", "class_triangle_splitter_binning.html#a528500c9d8c6ba8225ec945e135c9588", null ], + [ "Split", "class_triangle_splitter_binning.html#a03fd4c136a8b0e6a5eb6220723239490", null ] +]; \ No newline at end of file diff --git a/class_triangle_splitter_binning.png b/class_triangle_splitter_binning.png new file mode 100644 index 000000000..d74292354 Binary files /dev/null and b/class_triangle_splitter_binning.png differ diff --git a/class_triangle_splitter_fixed_leaf_size-members.html b/class_triangle_splitter_fixed_leaf_size-members.html new file mode 100644 index 000000000..9ea079ff9 --- /dev/null +++ b/class_triangle_splitter_fixed_leaf_size-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterFixedLeafSize Member List
+
+
+ +

This is the complete list of members for TriangleSplitterFixedLeafSize, including all inherited members.

+ + + + + + + + + + + + + + + + + +
GetInitialRange() constTriangleSplitterinline
GetStats(Stats &outStats) const overrideTriangleSplitterFixedLeafSizeinlinevirtual
GetTriangle(uint inIdx) constTriangleSplitterinline
GetVertices() constTriangleSplitterinline
mCentroidsTriangleSplitterprotected
mSortedTriangleIdxTriangleSplitterprotected
mTrianglesTriangleSplitterprotected
mVerticesTriangleSplitterprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Split(const Range &inTriangles, Range &outLeft, Range &outRight) overrideTriangleSplitterFixedLeafSizevirtual
SplitInternal(const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)TriangleSplitterprotected
TriangleSplitter(const VertexList &inVertices, const IndexedTriangleList &inTriangles)TriangleSplitter
TriangleSplitterFixedLeafSize(const VertexList &inVertices, const IndexedTriangleList &inTriangles, uint inLeafSize, uint inMinNumBins=8, uint inMaxNumBins=128, uint inNumTrianglesPerBin=6)TriangleSplitterFixedLeafSize
~TriangleSplitter()=defaultTriangleSplittervirtual
+
+ + + + diff --git a/class_triangle_splitter_fixed_leaf_size.html b/class_triangle_splitter_fixed_leaf_size.html new file mode 100644 index 000000000..1fdc75369 --- /dev/null +++ b/class_triangle_splitter_fixed_leaf_size.html @@ -0,0 +1,330 @@ + + + + + + + +Jolt Physics: TriangleSplitterFixedLeafSize Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleSplitterFixedLeafSize Class Reference
+
+
+ +

#include <TriangleSplitterFixedLeafSize.h>

+
+Inheritance diagram for TriangleSplitterFixedLeafSize:
+
+
+ + +TriangleSplitter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TriangleSplitterFixedLeafSize (const VertexList &inVertices, const IndexedTriangleList &inTriangles, uint inLeafSize, uint inMinNumBins=8, uint inMaxNumBins=128, uint inNumTrianglesPerBin=6)
 Constructor.
 
virtual void GetStats (Stats &outStats) const override
 Get stats of splitter.
 
virtual bool Split (const Range &inTriangles, Range &outLeft, Range &outRight) override
 
- Public Member Functions inherited from TriangleSplitter
 TriangleSplitter (const VertexList &inVertices, const IndexedTriangleList &inTriangles)
 Constructor.
 
virtual ~TriangleSplitter ()=default
 Virtual destructor.
 
Range GetInitialRange () const
 Range of triangles to start with.
 
const VertexListGetVertices () const
 Get the list of vertices.
 
const IndexedTriangleGetTriangle (uint inIdx) const
 Get triangle by index.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from TriangleSplitter
bool SplitInternal (const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)
 Helper function to split triangles based on dimension and split value.
 
- Protected Attributes inherited from TriangleSplitter
const VertexListmVertices
 Vertices of the indexed triangles.
 
const IndexedTriangleListmTriangles
 Unsorted triangles.
 
Array< Float3mCentroids
 Unsorted centroids of triangles.
 
Array< uintmSortedTriangleIdx
 Indices to sort triangles.
 
+

Detailed Description

+

Same as TriangleSplitterBinning, but ensuring that leaves have a fixed amount of triangles The resulting tree should be suitable for processing on GPU where we want all threads to process an equal amount of triangles

+

Constructor & Destructor Documentation

+ +

◆ TriangleSplitterFixedLeafSize()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN TriangleSplitterFixedLeafSize::TriangleSplitterFixedLeafSize (const VertexListinVertices,
const IndexedTriangleListinTriangles,
uint inLeafSize,
uint inMinNumBins = 8,
uint inMaxNumBins = 128,
uint inNumTrianglesPerBin = 6 
)
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void TriangleSplitterFixedLeafSize::GetStats (StatsoutStats) const
+
+inlineoverridevirtual
+
+ +

Get stats of splitter.

+ +

Implements TriangleSplitter.

+ +
+
+ +

◆ Split()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool TriangleSplitterFixedLeafSize::Split (const RangeinTriangles,
RangeoutLeft,
RangeoutRight 
)
+
+overridevirtual
+
+

Split triangles into two groups left and right, returns false if no split could be made

Parameters
+ + + + +
inTrianglesThe range of triangles (in mSortedTriangleIdx) to process
outLeftOn return this will contain the ranges for the left subpart. mSortedTriangleIdx may have been shuffled.
outRightOn return this will contain the ranges for the right subpart. mSortedTriangleIdx may have been shuffled.
+
+
+
Returns
Returns true when a split was found
+ +

Implements TriangleSplitter.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_triangle_splitter_fixed_leaf_size.js b/class_triangle_splitter_fixed_leaf_size.js new file mode 100644 index 000000000..45ee5f4d2 --- /dev/null +++ b/class_triangle_splitter_fixed_leaf_size.js @@ -0,0 +1,6 @@ +var class_triangle_splitter_fixed_leaf_size = +[ + [ "TriangleSplitterFixedLeafSize", "class_triangle_splitter_fixed_leaf_size.html#a755f2d5fdd0b659ea5691be45fa1ede9", null ], + [ "GetStats", "class_triangle_splitter_fixed_leaf_size.html#a6d3cb63db9a9f4d5f48fc0db60ef4717", null ], + [ "Split", "class_triangle_splitter_fixed_leaf_size.html#a3c4cf349a59b88d2bed3656d82fa5ead", null ] +]; \ No newline at end of file diff --git a/class_triangle_splitter_fixed_leaf_size.png b/class_triangle_splitter_fixed_leaf_size.png new file mode 100644 index 000000000..4d82c58ee Binary files /dev/null and b/class_triangle_splitter_fixed_leaf_size.png differ diff --git a/class_triangle_splitter_longest_axis-members.html b/class_triangle_splitter_longest_axis-members.html new file mode 100644 index 000000000..450c90898 --- /dev/null +++ b/class_triangle_splitter_longest_axis-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterLongestAxis Member List
+
+
+ +

This is the complete list of members for TriangleSplitterLongestAxis, including all inherited members.

+ + + + + + + + + + + + + + + + + +
GetInitialRange() constTriangleSplitterinline
GetStats(Stats &outStats) const overrideTriangleSplitterLongestAxisinlinevirtual
GetTriangle(uint inIdx) constTriangleSplitterinline
GetVertices() constTriangleSplitterinline
mCentroidsTriangleSplitterprotected
mSortedTriangleIdxTriangleSplitterprotected
mTrianglesTriangleSplitterprotected
mVerticesTriangleSplitterprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Split(const Range &inTriangles, Range &outLeft, Range &outRight) overrideTriangleSplitterLongestAxisvirtual
SplitInternal(const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)TriangleSplitterprotected
TriangleSplitter(const VertexList &inVertices, const IndexedTriangleList &inTriangles)TriangleSplitter
TriangleSplitterLongestAxis(const VertexList &inVertices, const IndexedTriangleList &inTriangles)TriangleSplitterLongestAxis
~TriangleSplitter()=defaultTriangleSplittervirtual
+
+ + + + diff --git a/class_triangle_splitter_longest_axis.html b/class_triangle_splitter_longest_axis.html new file mode 100644 index 000000000..8334e7db3 --- /dev/null +++ b/class_triangle_splitter_longest_axis.html @@ -0,0 +1,308 @@ + + + + + + + +Jolt Physics: TriangleSplitterLongestAxis Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleSplitterLongestAxis Class Reference
+
+
+ +

Splitter using center of bounding box with longest axis. + More...

+ +

#include <TriangleSplitterLongestAxis.h>

+
+Inheritance diagram for TriangleSplitterLongestAxis:
+
+
+ + +TriangleSplitter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TriangleSplitterLongestAxis (const VertexList &inVertices, const IndexedTriangleList &inTriangles)
 Constructor.
 
virtual void GetStats (Stats &outStats) const override
 Get stats of splitter.
 
virtual bool Split (const Range &inTriangles, Range &outLeft, Range &outRight) override
 
- Public Member Functions inherited from TriangleSplitter
 TriangleSplitter (const VertexList &inVertices, const IndexedTriangleList &inTriangles)
 Constructor.
 
virtual ~TriangleSplitter ()=default
 Virtual destructor.
 
Range GetInitialRange () const
 Range of triangles to start with.
 
const VertexListGetVertices () const
 Get the list of vertices.
 
const IndexedTriangleGetTriangle (uint inIdx) const
 Get triangle by index.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from TriangleSplitter
bool SplitInternal (const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)
 Helper function to split triangles based on dimension and split value.
 
- Protected Attributes inherited from TriangleSplitter
const VertexListmVertices
 Vertices of the indexed triangles.
 
const IndexedTriangleListmTriangles
 Unsorted triangles.
 
Array< Float3mCentroids
 Unsorted centroids of triangles.
 
Array< uintmSortedTriangleIdx
 Indices to sort triangles.
 
+

Detailed Description

+

Splitter using center of bounding box with longest axis.

+

Constructor & Destructor Documentation

+ +

◆ TriangleSplitterLongestAxis()

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN TriangleSplitterLongestAxis::TriangleSplitterLongestAxis (const VertexListinVertices,
const IndexedTriangleListinTriangles 
)
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void TriangleSplitterLongestAxis::GetStats (StatsoutStats) const
+
+inlineoverridevirtual
+
+ +

Get stats of splitter.

+ +

Implements TriangleSplitter.

+ +
+
+ +

◆ Split()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool TriangleSplitterLongestAxis::Split (const RangeinTriangles,
RangeoutLeft,
RangeoutRight 
)
+
+overridevirtual
+
+

Split triangles into two groups left and right, returns false if no split could be made

Parameters
+ + + + +
inTrianglesThe range of triangles (in mSortedTriangleIdx) to process
outLeftOn return this will contain the ranges for the left subpart. mSortedTriangleIdx may have been shuffled.
outRightOn return this will contain the ranges for the right subpart. mSortedTriangleIdx may have been shuffled.
+
+
+
Returns
Returns true when a split was found
+ +

Implements TriangleSplitter.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_triangle_splitter_longest_axis.js b/class_triangle_splitter_longest_axis.js new file mode 100644 index 000000000..d2b4d432d --- /dev/null +++ b/class_triangle_splitter_longest_axis.js @@ -0,0 +1,6 @@ +var class_triangle_splitter_longest_axis = +[ + [ "TriangleSplitterLongestAxis", "class_triangle_splitter_longest_axis.html#a922ae63ab23366905d3a15f5e7c06630", null ], + [ "GetStats", "class_triangle_splitter_longest_axis.html#a45cde2072d3a6c30b46c6afa0e9bec51", null ], + [ "Split", "class_triangle_splitter_longest_axis.html#a6e0fd86ca2d38f41bd6faffcd94e08a4", null ] +]; \ No newline at end of file diff --git a/class_triangle_splitter_longest_axis.png b/class_triangle_splitter_longest_axis.png new file mode 100644 index 000000000..465f19435 Binary files /dev/null and b/class_triangle_splitter_longest_axis.png differ diff --git a/class_triangle_splitter_mean-members.html b/class_triangle_splitter_mean-members.html new file mode 100644 index 000000000..5b2f689cc --- /dev/null +++ b/class_triangle_splitter_mean-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterMean Member List
+
+
+ +

This is the complete list of members for TriangleSplitterMean, including all inherited members.

+ + + + + + + + + + + + + + + + + +
GetInitialRange() constTriangleSplitterinline
GetStats(Stats &outStats) const overrideTriangleSplitterMeaninlinevirtual
GetTriangle(uint inIdx) constTriangleSplitterinline
GetVertices() constTriangleSplitterinline
mCentroidsTriangleSplitterprotected
mSortedTriangleIdxTriangleSplitterprotected
mTrianglesTriangleSplitterprotected
mVerticesTriangleSplitterprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Split(const Range &inTriangles, Range &outLeft, Range &outRight) overrideTriangleSplitterMeanvirtual
SplitInternal(const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)TriangleSplitterprotected
TriangleSplitter(const VertexList &inVertices, const IndexedTriangleList &inTriangles)TriangleSplitter
TriangleSplitterMean(const VertexList &inVertices, const IndexedTriangleList &inTriangles)TriangleSplitterMean
~TriangleSplitter()=defaultTriangleSplittervirtual
+
+ + + + diff --git a/class_triangle_splitter_mean.html b/class_triangle_splitter_mean.html new file mode 100644 index 000000000..489c5bec1 --- /dev/null +++ b/class_triangle_splitter_mean.html @@ -0,0 +1,308 @@ + + + + + + + +Jolt Physics: TriangleSplitterMean Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleSplitterMean Class Reference
+
+
+ +

Splitter using mean of axis with biggest centroid deviation. + More...

+ +

#include <TriangleSplitterMean.h>

+
+Inheritance diagram for TriangleSplitterMean:
+
+
+ + +TriangleSplitter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TriangleSplitterMean (const VertexList &inVertices, const IndexedTriangleList &inTriangles)
 Constructor.
 
virtual void GetStats (Stats &outStats) const override
 Get stats of splitter.
 
virtual bool Split (const Range &inTriangles, Range &outLeft, Range &outRight) override
 
- Public Member Functions inherited from TriangleSplitter
 TriangleSplitter (const VertexList &inVertices, const IndexedTriangleList &inTriangles)
 Constructor.
 
virtual ~TriangleSplitter ()=default
 Virtual destructor.
 
Range GetInitialRange () const
 Range of triangles to start with.
 
const VertexListGetVertices () const
 Get the list of vertices.
 
const IndexedTriangleGetTriangle (uint inIdx) const
 Get triangle by index.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from TriangleSplitter
bool SplitInternal (const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)
 Helper function to split triangles based on dimension and split value.
 
- Protected Attributes inherited from TriangleSplitter
const VertexListmVertices
 Vertices of the indexed triangles.
 
const IndexedTriangleListmTriangles
 Unsorted triangles.
 
Array< Float3mCentroids
 Unsorted centroids of triangles.
 
Array< uintmSortedTriangleIdx
 Indices to sort triangles.
 
+

Detailed Description

+

Splitter using mean of axis with biggest centroid deviation.

+

Constructor & Destructor Documentation

+ +

◆ TriangleSplitterMean()

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN TriangleSplitterMean::TriangleSplitterMean (const VertexListinVertices,
const IndexedTriangleListinTriangles 
)
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void TriangleSplitterMean::GetStats (StatsoutStats) const
+
+inlineoverridevirtual
+
+ +

Get stats of splitter.

+ +

Implements TriangleSplitter.

+ +
+
+ +

◆ Split()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool TriangleSplitterMean::Split (const RangeinTriangles,
RangeoutLeft,
RangeoutRight 
)
+
+overridevirtual
+
+

Split triangles into two groups left and right, returns false if no split could be made

Parameters
+ + + + +
inTrianglesThe range of triangles (in mSortedTriangleIdx) to process
outLeftOn return this will contain the ranges for the left subpart. mSortedTriangleIdx may have been shuffled.
outRightOn return this will contain the ranges for the right subpart. mSortedTriangleIdx may have been shuffled.
+
+
+
Returns
Returns true when a split was found
+ +

Implements TriangleSplitter.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_triangle_splitter_mean.js b/class_triangle_splitter_mean.js new file mode 100644 index 000000000..cb4cafd11 --- /dev/null +++ b/class_triangle_splitter_mean.js @@ -0,0 +1,6 @@ +var class_triangle_splitter_mean = +[ + [ "TriangleSplitterMean", "class_triangle_splitter_mean.html#a24f3c71cb6b178fc31c5e1c3d71240be", null ], + [ "GetStats", "class_triangle_splitter_mean.html#a32235dae954e916c9e3235ebe3704345", null ], + [ "Split", "class_triangle_splitter_mean.html#a8b8904aefe3c646d907b89a55730f9a9", null ] +]; \ No newline at end of file diff --git a/class_triangle_splitter_mean.png b/class_triangle_splitter_mean.png new file mode 100644 index 000000000..3d4f1540a Binary files /dev/null and b/class_triangle_splitter_mean.png differ diff --git a/class_triangle_splitter_morton-members.html b/class_triangle_splitter_morton-members.html new file mode 100644 index 000000000..86f4e2bb2 --- /dev/null +++ b/class_triangle_splitter_morton-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitterMorton Member List
+
+
+ +

This is the complete list of members for TriangleSplitterMorton, including all inherited members.

+ + + + + + + + + + + + + + + + + +
GetInitialRange() constTriangleSplitterinline
GetStats(Stats &outStats) const overrideTriangleSplitterMortoninlinevirtual
GetTriangle(uint inIdx) constTriangleSplitterinline
GetVertices() constTriangleSplitterinline
mCentroidsTriangleSplitterprotected
mSortedTriangleIdxTriangleSplitterprotected
mTrianglesTriangleSplitterprotected
mVerticesTriangleSplitterprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
Split(const Range &inTriangles, Range &outLeft, Range &outRight) overrideTriangleSplitterMortonvirtual
SplitInternal(const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)TriangleSplitterprotected
TriangleSplitter(const VertexList &inVertices, const IndexedTriangleList &inTriangles)TriangleSplitter
TriangleSplitterMorton(const VertexList &inVertices, const IndexedTriangleList &inTriangles)TriangleSplitterMorton
~TriangleSplitter()=defaultTriangleSplittervirtual
+
+ + + + diff --git a/class_triangle_splitter_morton.html b/class_triangle_splitter_morton.html new file mode 100644 index 000000000..c9d6c0dcf --- /dev/null +++ b/class_triangle_splitter_morton.html @@ -0,0 +1,308 @@ + + + + + + + +Jolt Physics: TriangleSplitterMorton Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TriangleSplitterMorton Class Reference
+
+
+ +

Splitter using Morton codes, see: http://devblogs.nvidia.com/parallelforall/thinking-parallel-part-iii-tree-construction-gpu/. + More...

+ +

#include <TriangleSplitterMorton.h>

+
+Inheritance diagram for TriangleSplitterMorton:
+
+
+ + +TriangleSplitter +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TriangleSplitterMorton (const VertexList &inVertices, const IndexedTriangleList &inTriangles)
 Constructor.
 
virtual void GetStats (Stats &outStats) const override
 Get stats of splitter.
 
virtual bool Split (const Range &inTriangles, Range &outLeft, Range &outRight) override
 
- Public Member Functions inherited from TriangleSplitter
 TriangleSplitter (const VertexList &inVertices, const IndexedTriangleList &inTriangles)
 Constructor.
 
virtual ~TriangleSplitter ()=default
 Virtual destructor.
 
Range GetInitialRange () const
 Range of triangles to start with.
 
const VertexListGetVertices () const
 Get the list of vertices.
 
const IndexedTriangleGetTriangle (uint inIdx) const
 Get triangle by index.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from TriangleSplitter
bool SplitInternal (const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)
 Helper function to split triangles based on dimension and split value.
 
- Protected Attributes inherited from TriangleSplitter
const VertexListmVertices
 Vertices of the indexed triangles.
 
const IndexedTriangleListmTriangles
 Unsorted triangles.
 
Array< Float3mCentroids
 Unsorted centroids of triangles.
 
Array< uintmSortedTriangleIdx
 Indices to sort triangles.
 
+

Detailed Description

+

Constructor & Destructor Documentation

+ +

◆ TriangleSplitterMorton()

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN TriangleSplitterMorton::TriangleSplitterMorton (const VertexListinVertices,
const IndexedTriangleListinTriangles 
)
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ GetStats()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void TriangleSplitterMorton::GetStats (StatsoutStats) const
+
+inlineoverridevirtual
+
+ +

Get stats of splitter.

+ +

Implements TriangleSplitter.

+ +
+
+ +

◆ Split()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool TriangleSplitterMorton::Split (const RangeinTriangles,
RangeoutLeft,
RangeoutRight 
)
+
+overridevirtual
+
+

Split triangles into two groups left and right, returns false if no split could be made

Parameters
+ + + + +
inTrianglesThe range of triangles (in mSortedTriangleIdx) to process
outLeftOn return this will contain the ranges for the left subpart. mSortedTriangleIdx may have been shuffled.
outRightOn return this will contain the ranges for the right subpart. mSortedTriangleIdx may have been shuffled.
+
+
+
Returns
Returns true when a split was found
+ +

Implements TriangleSplitter.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_triangle_splitter_morton.js b/class_triangle_splitter_morton.js new file mode 100644 index 000000000..12712d7da --- /dev/null +++ b/class_triangle_splitter_morton.js @@ -0,0 +1,6 @@ +var class_triangle_splitter_morton = +[ + [ "TriangleSplitterMorton", "class_triangle_splitter_morton.html#a5216ad05fe273a370120be3bb7025c43", null ], + [ "GetStats", "class_triangle_splitter_morton.html#a874a5423ed55acbabc662812a0a5ec4f", null ], + [ "Split", "class_triangle_splitter_morton.html#af5f1aebe70225e7be5d67573ef7dd63e", null ] +]; \ No newline at end of file diff --git a/class_triangle_splitter_morton.png b/class_triangle_splitter_morton.png new file mode 100644 index 000000000..e58cf6116 Binary files /dev/null and b/class_triangle_splitter_morton.png differ diff --git a/class_two_body_constraint-members.html b/class_two_body_constraint-members.html new file mode 100644 index 000000000..d0d5590de --- /dev/null +++ b/class_two_body_constraint-members.html @@ -0,0 +1,170 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TwoBodyConstraint Member List
+
+
+ +

This is the complete list of members for TwoBodyConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideTwoBodyConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideTwoBodyConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const =0Constraintpure virtual
DrawConstraintLimits(DebugRenderer *inRenderer) constConstraintinlinevirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) const overrideTwoBodyConstraintvirtual
GetBody1() constTwoBodyConstraintinline
GetBody2() constTwoBodyConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const =0Constraintpure virtual
GetConstraintToBody1Matrix() const =0TwoBodyConstraintpure virtual
GetConstraintToBody2Matrix() const =0TwoBodyConstraintpure virtual
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const =0Constraintpure virtual
GetType() const overrideTwoBodyConstraintinlinevirtual
GetUserData() constConstraintinline
IsActive() const overrideTwoBodyConstraintinlinevirtual
mBody1TwoBodyConstraintprotected
mBody2TwoBodyConstraintprotected
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM)=0Constraintpure virtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetWarmStart()=0Constraintpure virtual
RestoreState(StateRecorder &inStream)Constraintvirtual
SaveState(StateRecorder &inStream) constConstraintvirtual
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetupVelocityConstraint(float inDeltaTime)=0Constraintpure virtual
SetUserData(uint64 inUserData)Constraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte)=0Constraintpure virtual
SolveVelocityConstraint(float inDeltaTime)=0Constraintpure virtual
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
TwoBodyConstraint(Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)TwoBodyConstraintinline
WarmStartVelocityConstraint(float inWarmStartImpulseRatio)=0Constraintpure virtual
~Constraint()=defaultConstraintvirtual
~RefTarget()RefTarget< Constraint >inline
+
+ + + + diff --git a/class_two_body_constraint.html b/class_two_body_constraint.html new file mode 100644 index 000000000..e80fcb87a --- /dev/null +++ b/class_two_body_constraint.html @@ -0,0 +1,675 @@ + + + + + + + +Jolt Physics: TwoBodyConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TwoBodyConstraint Class Referenceabstract
+
+
+ +

Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent, Body2 the child. + More...

+ +

#include <TwoBodyConstraint.h>

+
+Inheritance diagram for TwoBodyConstraint:
+
+
+ + +Constraint +RefTarget< Constraint > +NonCopyable +ConeConstraint +DistanceConstraint +FixedConstraint +GearConstraint +HingeConstraint +PathConstraint +PointConstraint +PulleyConstraint +RackAndPinionConstraint +SixDOFConstraint +SliderConstraint +SwingTwistConstraint + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint (Body &inBody1, Body &inBody2, const TwoBodyConstraintSettings &inSettings)
 Constructor.
 
virtual EConstraintType GetType () const override
 Get the type of a constraint.
 
virtual bool IsActive () const override
 Solver interface.
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const override
 
BodyGetBody1 () const
 Access to the connected bodies.
 
BodyGetBody2 () const
 
virtual Mat44 GetConstraintToBody1Matrix () const =0
 Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual Mat44 GetConstraintToBody2Matrix () const =0
 Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
virtual EConstraintSubType GetSubType () const =0
 Get the sub type of a constraint.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM)=0
 
virtual void ResetWarmStart ()=0
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const =0
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
virtual void SaveState (StateRecorder &inStream) const
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream)
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const =0
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
virtual void SetupVelocityConstraint (float inDeltaTime)=0
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio)=0
 
virtual bool SolveVelocityConstraint (float inDeltaTime)=0
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte)=0
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + +

+Protected Attributes

BodymBody1
 The two bodies involved.
 
BodymBody2
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Base class for all constraints that involve 2 bodies. Body1 is usually considered the parent, Body2 the child.

+

Constructor & Destructor Documentation

+ +

◆ TwoBodyConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_OVERRIDE_NEW_DELETE TwoBodyConstraint::TwoBodyConstraint (BodyinBody1,
BodyinBody2,
const TwoBodyConstraintSettingsinSettings 
)
+
+inline
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ BuildIslands()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void TwoBodyConstraint::BuildIslands (uint32 inConstraintIndex,
IslandBuilderioBuilder,
BodyManagerinBodyManager 
)
+
+overridevirtual
+
+ +

Link bodies that are connected by this constraint in the island builder.

+ +

Implements Constraint.

+ +
+
+ +

◆ BuildIslandSplits()

+ +
+
+ + + + + +
+ + + + + + + + +
uint TwoBodyConstraint::BuildIslandSplits (LargeIslandSplitterioSplitter) const
+
+overridevirtual
+
+ +

Link bodies that are connected by this constraint in the same split. Returns the split index.

+ +

Implements Constraint.

+ +
+
+ +

◆ DrawConstraintReferenceFrame()

+ +
+
+ + + + + +
+ + + + + + + + +
void TwoBodyConstraint::DrawConstraintReferenceFrame (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ GetBody1()

+ +
+
+ + + + + +
+ + + + + + + +
Body * TwoBodyConstraint::GetBody1 () const
+
+inline
+
+ +

Access to the connected bodies.

+ +
+
+ +

◆ GetBody2()

+ +
+
+ + + + + +
+ + + + + + + +
Body * TwoBodyConstraint::GetBody2 () const
+
+inline
+
+ +
+
+ +

◆ GetConstraintToBody1Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 TwoBodyConstraint::GetConstraintToBody1Matrix () const
+
+pure virtual
+
+ +

Calculates the transform that transforms from constraint space to body 1 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implemented in ConeConstraint, DistanceConstraint, FixedConstraint, GearConstraint, HingeConstraint, PathConstraint, PointConstraint, PulleyConstraint, RackAndPinionConstraint, SixDOFConstraint, SliderConstraint, and SwingTwistConstraint.

+ +
+
+ +

◆ GetConstraintToBody2Matrix()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Mat44 TwoBodyConstraint::GetConstraintToBody2Matrix () const
+
+pure virtual
+
+ +

Calculates the transform that transforms from constraint space to body 2 space. The first column of the matrix is the primary constraint axis (e.g. the hinge axis / slider direction), second column the secondary etc.

+ +

Implemented in ConeConstraint, DistanceConstraint, FixedConstraint, GearConstraint, HingeConstraint, PathConstraint, PointConstraint, PulleyConstraint, RackAndPinionConstraint, SixDOFConstraint, SliderConstraint, and SwingTwistConstraint.

+ +
+
+ +

◆ GetType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintType TwoBodyConstraint::GetType () const
+
+inlineoverridevirtual
+
+ +

Get the type of a constraint.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool TwoBodyConstraint::IsActive () const
+
+inlineoverridevirtual
+
+ +

Solver interface.

+ +

Reimplemented from Constraint.

+ +

Reimplemented in PathConstraint.

+ +
+
+

Member Data Documentation

+ +

◆ mBody1

+ +
+
+ + + + + +
+ + + + +
Body* TwoBodyConstraint::mBody1
+
+protected
+
+ +

The two bodies involved.

+ +
+
+ +

◆ mBody2

+ +
+
+ + + + + +
+ + + + +
Body* TwoBodyConstraint::mBody2
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_two_body_constraint.js b/class_two_body_constraint.js new file mode 100644 index 000000000..d93020f23 --- /dev/null +++ b/class_two_body_constraint.js @@ -0,0 +1,15 @@ +var class_two_body_constraint = +[ + [ "TwoBodyConstraint", "class_two_body_constraint.html#a8b370c3d2689b9ae1270b1dfc8f9c290", null ], + [ "BuildIslands", "class_two_body_constraint.html#ae5b2ede88a6180a8bff9fe873ff38619", null ], + [ "BuildIslandSplits", "class_two_body_constraint.html#a19ff8913100799b94972336188ed7c7f", null ], + [ "DrawConstraintReferenceFrame", "class_two_body_constraint.html#aab88ca80622557a5a14cbc1f2e6d0ec0", null ], + [ "GetBody1", "class_two_body_constraint.html#ae09dc01720e01f71e480f2ce3da32918", null ], + [ "GetBody2", "class_two_body_constraint.html#a9ede1df27455ff0177a7a4501bf3342a", null ], + [ "GetConstraintToBody1Matrix", "class_two_body_constraint.html#a0edd748869643b1c904a7bc1314dad7a", null ], + [ "GetConstraintToBody2Matrix", "class_two_body_constraint.html#a0966503073a315b6087f10208e8a61ff", null ], + [ "GetType", "class_two_body_constraint.html#a25655ebd463476c1ada660d3a292d3c7", null ], + [ "IsActive", "class_two_body_constraint.html#a9ec4e14ada31bf5172141c2d50663e76", null ], + [ "mBody1", "class_two_body_constraint.html#af27aa0e2707d6b96ecbdeb8da8068ea8", null ], + [ "mBody2", "class_two_body_constraint.html#a180665fea57c98679a6a25a89057ed06", null ] +]; \ No newline at end of file diff --git a/class_two_body_constraint.png b/class_two_body_constraint.png new file mode 100644 index 000000000..29acb20b5 Binary files /dev/null and b/class_two_body_constraint.png differ diff --git a/class_two_body_constraint_settings-members.html b/class_two_body_constraint_settings-members.html new file mode 100644 index 000000000..883add4b5 --- /dev/null +++ b/class_two_body_constraint_settings-members.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TwoBodyConstraintSettings Member List
+
+
+ +

This is the complete list of members for TwoBodyConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
Create(Body &inBody1, Body &inBody2) const =0TwoBodyConstraintSettingspure virtual
GetRefCount() constRefTarget< ConstraintSettings >inline
mConstraintPriorityConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mUserDataConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream)ConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) constConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_two_body_constraint_settings.html b/class_two_body_constraint_settings.html new file mode 100644 index 000000000..91298aafe --- /dev/null +++ b/class_two_body_constraint_settings.html @@ -0,0 +1,278 @@ + + + + + + + +Jolt Physics: TwoBodyConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
TwoBodyConstraintSettings Class Referenceabstract
+
+
+ +

Base class for settings for all constraints that involve 2 bodies. + More...

+ +

#include <TwoBodyConstraint.h>

+
+Inheritance diagram for TwoBodyConstraintSettings:
+
+
+ + +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable +ConeConstraintSettings +DistanceConstraintSettings +FixedConstraintSettings +GearConstraintSettings +HingeConstraintSettings +PathConstraintSettings +PointConstraintSettings +PulleyConstraintSettings +RackAndPinionConstraintSettings +SixDOFConstraintSettings +SliderConstraintSettings +SwingTwistConstraintSettings + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual TwoBodyConstraintCreate (Body &inBody1, Body &inBody2) const =0
 
- Public Member Functions inherited from ConstraintSettings
virtual void SaveBinaryState (StreamOut &inStream) const
 Saves the contents of the constraint settings in binary form to inStream.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
- Protected Member Functions inherited from ConstraintSettings
virtual void RestoreBinaryState (StreamIn &inStream)
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Base class for settings for all constraints that involve 2 bodies.

+

Member Function Documentation

+ +

◆ Create()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual TwoBodyConstraint * TwoBodyConstraintSettings::Create (BodyinBody1,
BodyinBody2 
) const
+
+pure virtual
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_two_body_constraint_settings.js b/class_two_body_constraint_settings.js new file mode 100644 index 000000000..0d951a400 --- /dev/null +++ b/class_two_body_constraint_settings.js @@ -0,0 +1,4 @@ +var class_two_body_constraint_settings = +[ + [ "Create", "class_two_body_constraint_settings.html#a42e353e736b0254b02008b050a28f55b", null ] +]; \ No newline at end of file diff --git a/class_two_body_constraint_settings.png b/class_two_body_constraint_settings.png new file mode 100644 index 000000000..6fdcf6739 Binary files /dev/null and b/class_two_body_constraint_settings.png differ diff --git a/class_u_vec4-members.html b/class_u_vec4-members.html new file mode 100644 index 000000000..249c7e0bd --- /dev/null +++ b/class_u_vec4-members.html @@ -0,0 +1,185 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UVec4 Member List
+
+
+ +

This is the complete list of members for UVec4, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArithmeticShiftRight() constUVec4
ArithmeticShiftRight() constUVec4
CountTrues() constUVec4
Expand4Byte0() constUVec4
Expand4Byte12() constUVec4
Expand4Byte4() constUVec4
Expand4Byte8() constUVec4
Expand4Uint16Hi() constUVec4
Expand4Uint16Lo() constUVec4
GetTrues() constUVec4
GetW() constUVec4inline
GetX() constUVec4inline
GetY() constUVec4inline
GetZ() constUVec4inline
LogicalShiftLeft() constUVec4
LogicalShiftLeft() constUVec4
LogicalShiftRight() constUVec4
LogicalShiftRight() constUVec4
mU32UVec4
mValueUVec4
operator!=(UVec4Arg inV2) constUVec4inline
operator*(UVec4Arg inV2) constUVec4
operator+(UVec4Arg inV2)UVec4
operator+=(UVec4Arg inV2)UVec4
operator<<UVec4friend
operator=(const UVec4 &inRHS)=defaultUVec4
operator==(UVec4Arg inV2) constUVec4
operator[](uint inCoordinate) constUVec4inline
operator[](uint inCoordinate)UVec4inline
ReinterpretAsFloat() constUVec4
sAnd(UVec4Arg inV1, UVec4Arg inV2)UVec4static
sEquals(UVec4Arg inV1, UVec4Arg inV2)UVec4static
SetW(uint32 inW)UVec4inline
SetX(uint32 inX)UVec4inline
SetY(uint32 inY)UVec4inline
SetZ(uint32 inZ)UVec4inline
sGatherInt4(const uint32 *inBase, UVec4Arg inOffsets)UVec4static
sGatherInt4(const uint32 *inBase, UVec4Arg inOffsets)UVec4
ShiftComponents4Minus(int inCount) constUVec4
sLoadInt(const uint32 *inV)UVec4static
sLoadInt4(const uint32 *inV)UVec4static
sLoadInt4Aligned(const uint32 *inV)UVec4static
sMax(UVec4Arg inV1, UVec4Arg inV2)UVec4static
sMin(UVec4Arg inV1, UVec4Arg inV2)UVec4static
sNot(UVec4Arg inV1)UVec4static
sOr(UVec4Arg inV1, UVec4Arg inV2)UVec4static
SplatW() constUVec4
SplatX() constUVec4
SplatY() constUVec4
SplatZ() constUVec4
sReplicate(uint32 inV)UVec4static
sSelect(UVec4Arg inV1, UVec4Arg inV2, UVec4Arg inControl)UVec4static
sSort4True(UVec4Arg inValue, UVec4Arg inIndex)UVec4static
StoreInt4(uint32 *outV) constUVec4
StoreInt4Aligned(uint32 *outV) constUVec4
Swizzle() constUVec4
Swizzle() constUVec4
sXor(UVec4Arg inV1, UVec4Arg inV2)UVec4static
sZero()UVec4static
TestAllTrue() constUVec4
TestAllXYZTrue() constUVec4
TestAnyTrue() constUVec4
TestAnyXYZTrue() constUVec4
ToFloat() constUVec4
Type typedefUVec4
UVec4()=defaultUVec4
UVec4(const UVec4 &inRHS)=defaultUVec4
UVec4(Type inRHS)UVec4inline
UVec4(uint32 inX, uint32 inY, uint32 inZ, uint32 inW)UVec4
+
+ + + + diff --git a/class_u_vec4.html b/class_u_vec4.html new file mode 100644 index 000000000..27a1951cb --- /dev/null +++ b/class_u_vec4.html @@ -0,0 +1,2067 @@ + + + + + + + +Jolt Physics: UVec4 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UVec4 Class Reference
+
+
+ +

#include <UVec4.h>

+ + + + +

+Public Types

using Type = { uint32 mData[4]
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 UVec4 ()=default
 Constructor.
 
 UVec4 (const UVec4 &inRHS)=default
 
UVec4operator= (const UVec4 &inRHS)=default
 
JPH_INLINE UVec4 (Type inRHS)
 
JPH_INLINE UVec4 (uint32 inX, uint32 inY, uint32 inZ, uint32 inW)
 Create a vector from 4 integer components.
 
JPH_INLINE bool operator== (UVec4Arg inV2) const
 Comparison.
 
JPH_INLINE bool operator!= (UVec4Arg inV2) const
 
template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
JPH_INLINE UVec4 Swizzle () const
 Swizzle the elements in inV.
 
JPH_INLINE uint32 GetX () const
 Get individual components.
 
JPH_INLINE uint32 GetY () const
 
JPH_INLINE uint32 GetZ () const
 
JPH_INLINE uint32 GetW () const
 
JPH_INLINE void SetX (uint32 inX)
 Set individual components.
 
JPH_INLINE void SetY (uint32 inY)
 
JPH_INLINE void SetZ (uint32 inZ)
 
JPH_INLINE void SetW (uint32 inW)
 
JPH_INLINE uint32 operator[] (uint inCoordinate) const
 Get component by index.
 
JPH_INLINE uint32operator[] (uint inCoordinate)
 
JPH_INLINE UVec4 operator* (UVec4Arg inV2) const
 Multiplies each of the 4 integer components with an integer (discards any overflow)
 
JPH_INLINE UVec4 operator+ (UVec4Arg inV2)
 Adds an integer value to all integer components (discards any overflow)
 
JPH_INLINE UVec4operator+= (UVec4Arg inV2)
 Add two integer vectors (component wise)
 
JPH_INLINE UVec4 SplatX () const
 Replicate the X component to all components.
 
JPH_INLINE UVec4 SplatY () const
 Replicate the Y component to all components.
 
JPH_INLINE UVec4 SplatZ () const
 Replicate the Z component to all components.
 
JPH_INLINE UVec4 SplatW () const
 Replicate the W component to all components.
 
JPH_INLINE Vec4 ToFloat () const
 Convert each component from an int to a float.
 
JPH_INLINE Vec4 ReinterpretAsFloat () const
 Reinterpret UVec4 as a Vec4 (doesn't change the bits)
 
JPH_INLINE void StoreInt4 (uint32 *outV) const
 Store 4 ints to memory.
 
JPH_INLINE void StoreInt4Aligned (uint32 *outV) const
 Store 4 ints to memory, aligned to 16 bytes.
 
JPH_INLINE bool TestAnyTrue () const
 Test if any of the components are true (true is when highest bit of component is set)
 
JPH_INLINE bool TestAnyXYZTrue () const
 Test if any of X, Y or Z components are true (true is when highest bit of component is set)
 
JPH_INLINE bool TestAllTrue () const
 Test if all components are true (true is when highest bit of component is set)
 
JPH_INLINE bool TestAllXYZTrue () const
 Test if X, Y and Z components are true (true is when highest bit of component is set)
 
JPH_INLINE int CountTrues () const
 Count the number of components that are true (true is when highest bit of component is set)
 
JPH_INLINE int GetTrues () const
 Store if X is true in bit 0, Y in bit 1, Z in bit 2 and W in bit 3 (true is when highest bit of component is set)
 
template<const uint Count>
JPH_INLINE UVec4 LogicalShiftLeft () const
 Shift all components by Count bits to the left (filling with zeros from the left)
 
template<const uint Count>
JPH_INLINE UVec4 LogicalShiftRight () const
 Shift all components by Count bits to the right (filling with zeros from the right)
 
template<const uint Count>
JPH_INLINE UVec4 ArithmeticShiftRight () const
 Shift all components by Count bits to the right (shifting in the value of the highest bit)
 
JPH_INLINE UVec4 Expand4Uint16Lo () const
 Takes the lower 4 16 bits and expands them to X, Y, Z and W.
 
JPH_INLINE UVec4 Expand4Uint16Hi () const
 Takes the upper 4 16 bits and expands them to X, Y, Z and W.
 
JPH_INLINE UVec4 Expand4Byte0 () const
 Takes byte 0 .. 3 and expands them to X, Y, Z and W.
 
JPH_INLINE UVec4 Expand4Byte4 () const
 Takes byte 4 .. 7 and expands them to X, Y, Z and W.
 
JPH_INLINE UVec4 Expand4Byte8 () const
 Takes byte 8 .. 11 and expands them to X, Y, Z and W.
 
JPH_INLINE UVec4 Expand4Byte12 () const
 Takes byte 12 .. 15 and expands them to X, Y, Z and W.
 
JPH_INLINE UVec4 ShiftComponents4Minus (int inCount) const
 Shift vector components by 4 - Count floats to the left, so if Count = 1 the resulting vector is (W, 0, 0, 0), when Count = 3 the resulting vector is (Y, Z, W, 0)
 
template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
UVec4 Swizzle () const
 
template<const int Scale>
UVec4 sGatherInt4 (const uint32 *inBase, UVec4Arg inOffsets)
 
template<const uint Count>
UVec4 LogicalShiftLeft () const
 
template<const uint Count>
UVec4 LogicalShiftRight () const
 
template<const uint Count>
UVec4 ArithmeticShiftRight () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static JPH_INLINE UVec4 sZero ()
 Vector with all zeros.
 
static JPH_INLINE UVec4 sReplicate (uint32 inV)
 Replicate int inV across all components.
 
static JPH_INLINE UVec4 sLoadInt (const uint32 *inV)
 Load 1 int from memory and place it in the X component, zeros Y, Z and W.
 
static JPH_INLINE UVec4 sLoadInt4 (const uint32 *inV)
 Load 4 ints from memory.
 
static JPH_INLINE UVec4 sLoadInt4Aligned (const uint32 *inV)
 Load 4 ints from memory, aligned to 16 bytes.
 
template<const int Scale>
static JPH_INLINE UVec4 sGatherInt4 (const uint32 *inBase, UVec4Arg inOffsets)
 Gather 4 ints from memory at inBase + inOffsets[i] * Scale.
 
static JPH_INLINE UVec4 sMin (UVec4Arg inV1, UVec4Arg inV2)
 Return the minimum value of each of the components.
 
static JPH_INLINE UVec4 sMax (UVec4Arg inV1, UVec4Arg inV2)
 Return the maximum of each of the components.
 
static JPH_INLINE UVec4 sEquals (UVec4Arg inV1, UVec4Arg inV2)
 Equals (component wise)
 
static JPH_INLINE UVec4 sSelect (UVec4Arg inV1, UVec4Arg inV2, UVec4Arg inControl)
 Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.
 
static JPH_INLINE UVec4 sOr (UVec4Arg inV1, UVec4Arg inV2)
 Logical or (component wise)
 
static JPH_INLINE UVec4 sXor (UVec4Arg inV1, UVec4Arg inV2)
 Logical xor (component wise)
 
static JPH_INLINE UVec4 sAnd (UVec4Arg inV1, UVec4Arg inV2)
 Logical and (component wise)
 
static JPH_INLINE UVec4 sNot (UVec4Arg inV1)
 Logical not (component wise)
 
static JPH_INLINE UVec4 sSort4True (UVec4Arg inValue, UVec4Arg inIndex)
 
+ + + + + + + + + +

+Public Attributes

union { 
 
   Type   mValue 
 
   uint32   mU32 [4] 
 
};  
 
+ + + + +

+Friends

ostream & operator<< (ostream &inStream, UVec4Arg inV)
 To String.
 
+

Member Typedef Documentation

+ +

◆ Type

+ +
+
+ + + + +
using UVec4::Type = { uint32 mData[4]
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ UVec4() [1/4]

+ +
+
+ + + + + +
+ + + + + + + +
UVec4::UVec4 ()
+
+default
+
+ +

Constructor.

+

Intentionally not initialized for performance reasons

+ +
+
+ +

◆ UVec4() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + +
UVec4::UVec4 (const UVec4inRHS)
+
+default
+
+ +
+
+ +

◆ UVec4() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE UVec4::UVec4 (Type inRHS)
+
+inline
+
+ +
+
+ +

◆ UVec4() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN UVec4::UVec4 (uint32 inX,
uint32 inY,
uint32 inZ,
uint32 inW 
)
+
+ +

Create a vector from 4 integer components.

+ +
+
+

Member Function Documentation

+ +

◆ ArithmeticShiftRight() [1/2]

+ +
+
+
+template<const uint Count>
+ + + + + + + +
JPH_INLINE UVec4 UVec4::ArithmeticShiftRight () const
+
+ +

Shift all components by Count bits to the right (shifting in the value of the highest bit)

+ +
+
+ +

◆ ArithmeticShiftRight() [2/2]

+ +
+
+
+template<const uint Count>
+ + + + + + + +
UVec4 UVec4::ArithmeticShiftRight () const
+
+ +
+
+ +

◆ CountTrues()

+ +
+
+ + + + + + + +
int UVec4::CountTrues () const
+
+ +

Count the number of components that are true (true is when highest bit of component is set)

+ +
+
+ +

◆ Expand4Byte0()

+ +
+
+ + + + + + + +
UVec4 UVec4::Expand4Byte0 () const
+
+ +

Takes byte 0 .. 3 and expands them to X, Y, Z and W.

+ +
+
+ +

◆ Expand4Byte12()

+ +
+
+ + + + + + + +
UVec4 UVec4::Expand4Byte12 () const
+
+ +

Takes byte 12 .. 15 and expands them to X, Y, Z and W.

+ +
+
+ +

◆ Expand4Byte4()

+ +
+
+ + + + + + + +
UVec4 UVec4::Expand4Byte4 () const
+
+ +

Takes byte 4 .. 7 and expands them to X, Y, Z and W.

+ +
+
+ +

◆ Expand4Byte8()

+ +
+
+ + + + + + + +
UVec4 UVec4::Expand4Byte8 () const
+
+ +

Takes byte 8 .. 11 and expands them to X, Y, Z and W.

+ +
+
+ +

◆ Expand4Uint16Hi()

+ +
+
+ + + + + + + +
UVec4 UVec4::Expand4Uint16Hi () const
+
+ +

Takes the upper 4 16 bits and expands them to X, Y, Z and W.

+ +
+
+ +

◆ Expand4Uint16Lo()

+ +
+
+ + + + + + + +
UVec4 UVec4::Expand4Uint16Lo () const
+
+ +

Takes the lower 4 16 bits and expands them to X, Y, Z and W.

+ +
+
+ +

◆ GetTrues()

+ +
+
+ + + + + + + +
int UVec4::GetTrues () const
+
+ +

Store if X is true in bit 0, Y in bit 1, Z in bit 2 and W in bit 3 (true is when highest bit of component is set)

+ +
+
+ +

◆ GetW()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE uint32 UVec4::GetW () const
+
+inline
+
+ +
+
+ +

◆ GetX()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE uint32 UVec4::GetX () const
+
+inline
+
+ +

Get individual components.

+ +
+
+ +

◆ GetY()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE uint32 UVec4::GetY () const
+
+inline
+
+ +
+
+ +

◆ GetZ()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE uint32 UVec4::GetZ () const
+
+inline
+
+ +
+
+ +

◆ LogicalShiftLeft() [1/2]

+ +
+
+
+template<const uint Count>
+ + + + + + + +
JPH_INLINE UVec4 UVec4::LogicalShiftLeft () const
+
+ +

Shift all components by Count bits to the left (filling with zeros from the left)

+ +
+
+ +

◆ LogicalShiftLeft() [2/2]

+ +
+
+
+template<const uint Count>
+ + + + + + + +
UVec4 UVec4::LogicalShiftLeft () const
+
+ +
+
+ +

◆ LogicalShiftRight() [1/2]

+ +
+
+
+template<const uint Count>
+ + + + + + + +
JPH_INLINE UVec4 UVec4::LogicalShiftRight () const
+
+ +

Shift all components by Count bits to the right (filling with zeros from the right)

+ +
+
+ +

◆ LogicalShiftRight() [2/2]

+ +
+
+
+template<const uint Count>
+ + + + + + + +
UVec4 UVec4::LogicalShiftRight () const
+
+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE bool UVec4::operator!= (UVec4Arg inV2) const
+
+inline
+
+ +
+
+ +

◆ operator*()

+ +
+
+ + + + + + + + +
UVec4 UVec4::operator* (UVec4Arg inV2) const
+
+ +

Multiplies each of the 4 integer components with an integer (discards any overflow)

+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + + + + +
UVec4 UVec4::operator+ (UVec4Arg inV2)
+
+ +

Adds an integer value to all integer components (discards any overflow)

+ +
+
+ +

◆ operator+=()

+ +
+
+ + + + + + + + +
UVec4 & UVec4::operator+= (UVec4Arg inV2)
+
+ +

Add two integer vectors (component wise)

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
UVec4 & UVec4::operator= (const UVec4inRHS)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool UVec4::operator== (UVec4Arg inV2) const
+
+ +

Comparison.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE uint32 & UVec4::operator[] (uint inCoordinate)
+
+inline
+
+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE uint32 UVec4::operator[] (uint inCoordinate) const
+
+inline
+
+ +

Get component by index.

+ +
+
+ +

◆ ReinterpretAsFloat()

+ +
+
+ + + + + + + +
Vec4 UVec4::ReinterpretAsFloat () const
+
+ +

Reinterpret UVec4 as a Vec4 (doesn't change the bits)

+ +
+
+ +

◆ sAnd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 UVec4::sAnd (UVec4Arg inV1,
UVec4Arg inV2 
)
+
+static
+
+ +

Logical and (component wise)

+ +
+
+ +

◆ sEquals()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 UVec4::sEquals (UVec4Arg inV1,
UVec4Arg inV2 
)
+
+static
+
+ +

Equals (component wise)

+ +
+
+ +

◆ SetW()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void UVec4::SetW (uint32 inW)
+
+inline
+
+ +
+
+ +

◆ SetX()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void UVec4::SetX (uint32 inX)
+
+inline
+
+ +

Set individual components.

+ +
+
+ +

◆ SetY()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void UVec4::SetY (uint32 inY)
+
+inline
+
+ +
+
+ +

◆ SetZ()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void UVec4::SetZ (uint32 inZ)
+
+inline
+
+ +
+
+ +

◆ sGatherInt4() [1/2]

+ +
+
+
+template<const int Scale>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static JPH_INLINE UVec4 UVec4::sGatherInt4 (const uint32inBase,
UVec4Arg inOffsets 
)
+
+static
+
+ +

Gather 4 ints from memory at inBase + inOffsets[i] * Scale.

+ +
+
+ +

◆ sGatherInt4() [2/2]

+ +
+
+
+template<const int Scale>
+ + + + + + + + + + + + + + + + + + +
UVec4 UVec4::sGatherInt4 (const uint32inBase,
UVec4Arg inOffsets 
)
+
+ +
+
+ +

◆ ShiftComponents4Minus()

+ +
+
+ + + + + + + + +
UVec4 UVec4::ShiftComponents4Minus (int inCount) const
+
+ +

Shift vector components by 4 - Count floats to the left, so if Count = 1 the resulting vector is (W, 0, 0, 0), when Count = 3 the resulting vector is (Y, Z, W, 0)

+ +
+
+ +

◆ sLoadInt()

+ +
+
+ + + + + +
+ + + + + + + + +
UVec4 UVec4::sLoadInt (const uint32inV)
+
+static
+
+ +

Load 1 int from memory and place it in the X component, zeros Y, Z and W.

+ +
+
+ +

◆ sLoadInt4()

+ +
+
+ + + + + +
+ + + + + + + + +
UVec4 UVec4::sLoadInt4 (const uint32inV)
+
+static
+
+ +

Load 4 ints from memory.

+ +
+
+ +

◆ sLoadInt4Aligned()

+ +
+
+ + + + + +
+ + + + + + + + +
UVec4 UVec4::sLoadInt4Aligned (const uint32inV)
+
+static
+
+ +

Load 4 ints from memory, aligned to 16 bytes.

+ +
+
+ +

◆ sMax()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 UVec4::sMax (UVec4Arg inV1,
UVec4Arg inV2 
)
+
+static
+
+ +

Return the maximum of each of the components.

+ +
+
+ +

◆ sMin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 UVec4::sMin (UVec4Arg inV1,
UVec4Arg inV2 
)
+
+static
+
+ +

Return the minimum value of each of the components.

+ +
+
+ +

◆ sNot()

+ +
+
+ + + + + +
+ + + + + + + + +
UVec4 UVec4::sNot (UVec4Arg inV1)
+
+static
+
+ +

Logical not (component wise)

+ +
+
+ +

◆ sOr()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 UVec4::sOr (UVec4Arg inV1,
UVec4Arg inV2 
)
+
+static
+
+ +

Logical or (component wise)

+ +
+
+ +

◆ SplatW()

+ +
+
+ + + + + + + +
UVec4 UVec4::SplatW () const
+
+ +

Replicate the W component to all components.

+ +
+
+ +

◆ SplatX()

+ +
+
+ + + + + + + +
UVec4 UVec4::SplatX () const
+
+ +

Replicate the X component to all components.

+ +
+
+ +

◆ SplatY()

+ +
+
+ + + + + + + +
UVec4 UVec4::SplatY () const
+
+ +

Replicate the Y component to all components.

+ +
+
+ +

◆ SplatZ()

+ +
+
+ + + + + + + +
UVec4 UVec4::SplatZ () const
+
+ +

Replicate the Z component to all components.

+ +
+
+ +

◆ sReplicate()

+ +
+
+ + + + + +
+ + + + + + + + +
UVec4 UVec4::sReplicate (uint32 inV)
+
+static
+
+ +

Replicate int inV across all components.

+ +
+
+ +

◆ sSelect()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
UVec4 UVec4::sSelect (UVec4Arg inV1,
UVec4Arg inV2,
UVec4Arg inControl 
)
+
+static
+
+ +

Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.

+ +
+
+ +

◆ sSort4True()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 UVec4::sSort4True (UVec4Arg inValue,
UVec4Arg inIndex 
)
+
+static
+
+

Sorts the elements in inIndex so that the values that correspond to trues in inValue are the first elements. The remaining elements will be set to inValue.w. I.e. if inValue = (true, false, true, false) and inIndex = (1, 2, 3, 4) the function returns (1, 3, 4, 4).

+ +
+
+ +

◆ StoreInt4()

+ +
+
+ + + + + + + + +
void UVec4::StoreInt4 (uint32outV) const
+
+ +

Store 4 ints to memory.

+ +
+
+ +

◆ StoreInt4Aligned()

+ +
+
+ + + + + + + + +
void UVec4::StoreInt4Aligned (uint32outV) const
+
+ +

Store 4 ints to memory, aligned to 16 bytes.

+ +
+
+ +

◆ Swizzle() [1/2]

+ +
+
+
+template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+ + + + + + + +
JPH_INLINE UVec4 UVec4::Swizzle () const
+
+ +

Swizzle the elements in inV.

+ +
+
+ +

◆ Swizzle() [2/2]

+ +
+
+
+template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+ + + + + + + +
UVec4 UVec4::Swizzle () const
+
+ +
+
+ +

◆ sXor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 UVec4::sXor (UVec4Arg inV1,
UVec4Arg inV2 
)
+
+static
+
+ +

Logical xor (component wise)

+ +
+
+ +

◆ sZero()

+ +
+
+ + + + + +
+ + + + + + + +
UVec4 UVec4::sZero ()
+
+static
+
+ +

Vector with all zeros.

+ +
+
+ +

◆ TestAllTrue()

+ +
+
+ + + + + + + +
bool UVec4::TestAllTrue () const
+
+ +

Test if all components are true (true is when highest bit of component is set)

+ +
+
+ +

◆ TestAllXYZTrue()

+ +
+
+ + + + + + + +
bool UVec4::TestAllXYZTrue () const
+
+ +

Test if X, Y and Z components are true (true is when highest bit of component is set)

+ +
+
+ +

◆ TestAnyTrue()

+ +
+
+ + + + + + + +
bool UVec4::TestAnyTrue () const
+
+ +

Test if any of the components are true (true is when highest bit of component is set)

+ +
+
+ +

◆ TestAnyXYZTrue()

+ +
+
+ + + + + + + +
bool UVec4::TestAnyXYZTrue () const
+
+ +

Test if any of X, Y or Z components are true (true is when highest bit of component is set)

+ +
+
+ +

◆ ToFloat()

+ +
+
+ + + + + + + +
Vec4 UVec4::ToFloat () const
+
+ +

Convert each component from an int to a float.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ operator<<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ostream & operator<< (ostream & inStream,
UVec4Arg inV 
)
+
+friend
+
+ +

To String.

+ +
+
+

Member Data Documentation

+ +

◆ [union]

+ +
+
+ + + + +
union { ... } UVec4
+
+ +
+
+ +

◆ mU32

+ +
+
+ + + + +
uint32 UVec4::mU32[4]
+
+ +
+
+ +

◆ mValue

+ +
+
+ + + + +
Type UVec4::mValue
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_u_vec4.js b/class_u_vec4.js new file mode 100644 index 000000000..aebea2228 --- /dev/null +++ b/class_u_vec4.js @@ -0,0 +1,57 @@ +var class_u_vec4 = +[ + [ "Type", "class_u_vec4.html#a69cef3d586cde7b42830b7b220149b0c", null ], + [ "UVec4", "class_u_vec4.html#ade18dcf5276cb800f91e55993f1f5270", null ], + [ "UVec4", "class_u_vec4.html#aadc81adaffb695788b5c0859ae3071d3", null ], + [ "UVec4", "class_u_vec4.html#ad935c0ba8397f8e1d7fbba4d70e519dd", null ], + [ "UVec4", "class_u_vec4.html#a371ddfa754dc61e11f2c75f565eab0f9", null ], + [ "ArithmeticShiftRight", "class_u_vec4.html#acfceebc6fc876a55c008bff9fc78b005", null ], + [ "ArithmeticShiftRight", "class_u_vec4.html#a44d2f7bb6b7c51b7cfcf5bb5f261cac7", null ], + [ "CountTrues", "class_u_vec4.html#a1b44f57941f0fd3237bc0c6ff638e91e", null ], + [ "Expand4Byte0", "class_u_vec4.html#a4e1d53e419791f3a1d73e96fe905cb9a", null ], + [ "Expand4Byte12", "class_u_vec4.html#ab90115fc1e9f272b053cd5e593eefecd", null ], + [ "Expand4Byte4", "class_u_vec4.html#a43c0348b32fe2a8a8a3fe3e82adbf4e1", null ], + [ "Expand4Byte8", "class_u_vec4.html#ab576b5e89a741b942e5a0eee30221fff", null ], + [ "Expand4Uint16Hi", "class_u_vec4.html#ac7ecdcc40c2437edb94d824902084471", null ], + [ "Expand4Uint16Lo", "class_u_vec4.html#a231db23152af3fc49272a7842432b2d8", null ], + [ "GetTrues", "class_u_vec4.html#a4e62bc4e8238a1742d9cde03a0520252", null ], + [ "GetW", "class_u_vec4.html#a8524d1d2a92eb5b564976d7d2a5f8a57", null ], + [ "GetX", "class_u_vec4.html#ab2f2894975c86cd37303d8454aa37fcf", null ], + [ "GetY", "class_u_vec4.html#a33a55cd5fde9b7bfdbb408faafc1f11b", null ], + [ "GetZ", "class_u_vec4.html#a0eeba4ed35bd749af316be5bc0949a0a", null ], + [ "LogicalShiftLeft", "class_u_vec4.html#a159c5fb6e8cb1c49a87a48d3977b50b6", null ], + [ "LogicalShiftLeft", "class_u_vec4.html#a2ef3289c1b66cfad1da798a5d3cd412b", null ], + [ "LogicalShiftRight", "class_u_vec4.html#a42597d44e823feee9c343624b72ece79", null ], + [ "LogicalShiftRight", "class_u_vec4.html#a529d377fac0983a7c590d7df16db3f36", null ], + [ "operator!=", "class_u_vec4.html#ab111b839ccfe094607cfa52f35ba79bd", null ], + [ "operator*", "class_u_vec4.html#ae2b7e062cd567b34fe691d46b15b072b", null ], + [ "operator+", "class_u_vec4.html#aca855486776f06c4948abdf178ba17f2", null ], + [ "operator+=", "class_u_vec4.html#a602f5243d8a4c73dc6796a03cecdc5f3", null ], + [ "operator=", "class_u_vec4.html#a9c25aa219fee97d2f183894eed6fd66d", null ], + [ "operator==", "class_u_vec4.html#a998274caec249b2255973d43fcdd6111", null ], + [ "operator[]", "class_u_vec4.html#a78e0cb1202ed92a559990923167ef077", null ], + [ "operator[]", "class_u_vec4.html#a7a36608ab17fe736f68c0ff7c3f6ea04", null ], + [ "ReinterpretAsFloat", "class_u_vec4.html#af399ef91439555b5264eec1790537547", null ], + [ "SetW", "class_u_vec4.html#a2320003f191c827345c0c94392a4b09b", null ], + [ "SetX", "class_u_vec4.html#ac2cc1087c1eed84326aec2859ca006ab", null ], + [ "SetY", "class_u_vec4.html#a41f446b7d5a05ee286630365ebb6b8b9", null ], + [ "SetZ", "class_u_vec4.html#a7f2a2b3fbc39fe921799d53d6bfb1b87", null ], + [ "sGatherInt4", "class_u_vec4.html#a80d24f8e73a57edb4d6ed688c8e7e342", null ], + [ "ShiftComponents4Minus", "class_u_vec4.html#a8d9ff8b435e5475505c944e96d872b2b", null ], + [ "SplatW", "class_u_vec4.html#aa387ab2fa75ac96fa21f35f119c60f8a", null ], + [ "SplatX", "class_u_vec4.html#a434119d6c7174e6efda8bf7a9bfab3e7", null ], + [ "SplatY", "class_u_vec4.html#a1dad43e9c11de6562500394e3c07a491", null ], + [ "SplatZ", "class_u_vec4.html#a9e56056fab7838ecd3017281a974755d", null ], + [ "StoreInt4", "class_u_vec4.html#aa7b95daa78a51ef877eca777c0389023", null ], + [ "StoreInt4Aligned", "class_u_vec4.html#af62228e490b01b95d5b008a54746473c", null ], + [ "Swizzle", "class_u_vec4.html#a03d1ddee4a58319e1fd6fb7a8c599874", null ], + [ "Swizzle", "class_u_vec4.html#aebec00b09795b4b0bfb3acfdc9a52b3f", null ], + [ "TestAllTrue", "class_u_vec4.html#a48549afaeaba00fc4b45a10c50656c9f", null ], + [ "TestAllXYZTrue", "class_u_vec4.html#a8a5a4714c700cab249106fe37bf1f74f", null ], + [ "TestAnyTrue", "class_u_vec4.html#afa8f229eccfd643197d92382bf8877f7", null ], + [ "TestAnyXYZTrue", "class_u_vec4.html#a57a26ddd10bb99e07e68096eb10d1244", null ], + [ "ToFloat", "class_u_vec4.html#aec14683a4f6c1c34bb27e7119a813184", null ], + [ "operator<<", "class_u_vec4.html#aef78a8e4bbbc79b876775c0f3618a32e", null ], + [ "mU32", "class_u_vec4.html#afd0bc3823152808c01e8e8ad80ac694a", null ], + [ "mValue", "class_u_vec4.html#a9eaa6e208405d15d1e5df9cb5dac184f", null ] +]; \ No newline at end of file diff --git a/class_u_vec8-members.html b/class_u_vec8-members.html new file mode 100644 index 000000000..10c7e79a9 --- /dev/null +++ b/class_u_vec8-members.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UVec8 Member List
+
+
+ +

This is the complete list of members for UVec8, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ArithmeticShiftRight() constUVec8
ArithmeticShiftRight() constUVec8
LogicalShiftLeft() constUVec8
LogicalShiftLeft() constUVec8
LogicalShiftRight() constUVec8
LogicalShiftRight() constUVec8
LowerVec4() constUVec8
mU32UVec8
mValueUVec8
operator!=(UVec8Arg inV2) constUVec8inline
operator==(UVec8Arg inV2) constUVec8
operator[](uint inCoordinate) constUVec8inline
operator[](uint inCoordinate)UVec8inline
sAnd(UVec8Arg inV1, UVec8Arg inV2)UVec8static
sEquals(UVec8Arg inV1, UVec8Arg inV2)UVec8static
sOr(UVec8Arg inV1, UVec8Arg inV2)UVec8static
sReplicate(uint32 inV)UVec8static
sSelect(UVec8Arg inV1, UVec8Arg inV2, UVec8Arg inControl)UVec8static
sSplatX(UVec4Arg inV)UVec8static
sSplatY(UVec4Arg inV)UVec8static
sSplatZ(UVec4Arg inV)UVec8static
Swizzle() constUVec8
Swizzle() constUVec8
sXor(UVec8Arg inV1, UVec8Arg inV2)UVec8static
TestAllTrue() constUVec8
TestAnyTrue() constUVec8
ToFloat() constUVec8
UpperVec4() constUVec8
UVec8()=defaultUVec8
UVec8(const UVec8 &inRHS)=defaultUVec8
UVec8(__m256i inRHS)UVec8inline
UVec8(UVec4Arg inLo, UVec4Arg inHi)UVec8
+
+ + + + diff --git a/class_u_vec8.html b/class_u_vec8.html new file mode 100644 index 000000000..0c71cbfc9 --- /dev/null +++ b/class_u_vec8.html @@ -0,0 +1,1050 @@ + + + + + + + +Jolt Physics: UVec8 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UVec8 Class Reference
+
+
+ +

#include <UVec8.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE UVec8 ()=default
 Intentionally not initialized for performance reasons.
 
 UVec8 (const UVec8 &inRHS)=default
 
JPH_INLINE UVec8 (__m256i inRHS)
 
JPH_INLINE UVec8 (UVec4Arg inLo, UVec4Arg inHi)
 Set 256 bit vector from 2 128 bit vectors.
 
JPH_INLINE bool operator== (UVec8Arg inV2) const
 Comparison.
 
JPH_INLINE bool operator!= (UVec8Arg inV2) const
 
JPH_INLINE uint32 operator[] (uint inCoordinate) const
 Get float component by index.
 
JPH_INLINE uint32operator[] (uint inCoordinate)
 
template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
JPH_INLINE UVec8 Swizzle () const
 256 bit variant of Vec::Swizzle (no cross 128 bit lane swizzle)
 
JPH_INLINE bool TestAnyTrue () const
 Test if any of the components are true (true is when highest bit of component is set)
 
JPH_INLINE bool TestAllTrue () const
 Test if all components are true (true is when highest bit of component is set)
 
JPH_INLINE UVec4 LowerVec4 () const
 Fetch the lower 128 bit from a 256 bit variable.
 
JPH_INLINE UVec4 UpperVec4 () const
 Fetch the higher 128 bit from a 256 bit variable.
 
JPH_INLINE Vec8 ToFloat () const
 Converts int to float.
 
template<const uint Count>
JPH_INLINE UVec8 LogicalShiftLeft () const
 Shift all components by Count bits to the left (filling with zeros from the left)
 
template<const uint Count>
JPH_INLINE UVec8 LogicalShiftRight () const
 Shift all components by Count bits to the right (filling with zeros from the right)
 
template<const uint Count>
JPH_INLINE UVec8 ArithmeticShiftRight () const
 Shift all components by Count bits to the right (shifting in the value of the highest bit)
 
template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
UVec8 Swizzle () const
 
template<const uint Count>
UVec8 LogicalShiftLeft () const
 
template<const uint Count>
UVec8 LogicalShiftRight () const
 
template<const uint Count>
UVec8 ArithmeticShiftRight () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static JPH_INLINE UVec8 sReplicate (uint32 inV)
 Replicate int across all components.
 
static JPH_INLINE UVec8 sSplatX (UVec4Arg inV)
 Replicate the X component of inV to all components.
 
static JPH_INLINE UVec8 sSplatY (UVec4Arg inV)
 Replicate the Y component of inV to all components.
 
static JPH_INLINE UVec8 sSplatZ (UVec4Arg inV)
 Replicate the Z component of inV to all components.
 
static JPH_INLINE UVec8 sEquals (UVec8Arg inV1, UVec8Arg inV2)
 Equals (component wise)
 
static JPH_INLINE UVec8 sSelect (UVec8Arg inV1, UVec8Arg inV2, UVec8Arg inControl)
 Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.
 
static JPH_INLINE UVec8 sOr (UVec8Arg inV1, UVec8Arg inV2)
 Logical or.
 
static JPH_INLINE UVec8 sXor (UVec8Arg inV1, UVec8Arg inV2)
 Logical xor.
 
static JPH_INLINE UVec8 sAnd (UVec8Arg inV1, UVec8Arg inV2)
 Logical and.
 
+ + + + + + + + + +

+Public Attributes

union { 
 
   __m256i   mValue 
 
   uint32   mU32 [8] 
 
};  
 
+

Constructor & Destructor Documentation

+ +

◆ UVec8() [1/4]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE UVec8::UVec8 ()
+
+default
+
+ +

Intentionally not initialized for performance reasons.

+ +
+
+ +

◆ UVec8() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + +
UVec8::UVec8 (const UVec8inRHS)
+
+default
+
+ +
+
+ +

◆ UVec8() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE UVec8::UVec8 (__m256i inRHS)
+
+inline
+
+ +
+
+ +

◆ UVec8() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN UVec8::UVec8 (UVec4Arg inLo,
UVec4Arg inHi 
)
+
+ +

Set 256 bit vector from 2 128 bit vectors.

+ +
+
+

Member Function Documentation

+ +

◆ ArithmeticShiftRight() [1/2]

+ +
+
+
+template<const uint Count>
+ + + + + + + +
JPH_INLINE UVec8 UVec8::ArithmeticShiftRight () const
+
+ +

Shift all components by Count bits to the right (shifting in the value of the highest bit)

+ +
+
+ +

◆ ArithmeticShiftRight() [2/2]

+ +
+
+
+template<const uint Count>
+ + + + + + + +
UVec8 UVec8::ArithmeticShiftRight () const
+
+ +
+
+ +

◆ LogicalShiftLeft() [1/2]

+ +
+
+
+template<const uint Count>
+ + + + + + + +
JPH_INLINE UVec8 UVec8::LogicalShiftLeft () const
+
+ +

Shift all components by Count bits to the left (filling with zeros from the left)

+ +
+
+ +

◆ LogicalShiftLeft() [2/2]

+ +
+
+
+template<const uint Count>
+ + + + + + + +
UVec8 UVec8::LogicalShiftLeft () const
+
+ +
+
+ +

◆ LogicalShiftRight() [1/2]

+ +
+
+
+template<const uint Count>
+ + + + + + + +
JPH_INLINE UVec8 UVec8::LogicalShiftRight () const
+
+ +

Shift all components by Count bits to the right (filling with zeros from the right)

+ +
+
+ +

◆ LogicalShiftRight() [2/2]

+ +
+
+
+template<const uint Count>
+ + + + + + + +
UVec8 UVec8::LogicalShiftRight () const
+
+ +
+
+ +

◆ LowerVec4()

+ +
+
+ + + + + + + +
UVec4 UVec8::LowerVec4 () const
+
+ +

Fetch the lower 128 bit from a 256 bit variable.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE bool UVec8::operator!= (UVec8Arg inV2) const
+
+inline
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool UVec8::operator== (UVec8Arg inV2) const
+
+ +

Comparison.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE uint32 & UVec8::operator[] (uint inCoordinate)
+
+inline
+
+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE uint32 UVec8::operator[] (uint inCoordinate) const
+
+inline
+
+ +

Get float component by index.

+ +
+
+ +

◆ sAnd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec8 UVec8::sAnd (UVec8Arg inV1,
UVec8Arg inV2 
)
+
+static
+
+ +

Logical and.

+ +
+
+ +

◆ sEquals()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec8 UVec8::sEquals (UVec8Arg inV1,
UVec8Arg inV2 
)
+
+static
+
+ +

Equals (component wise)

+ +
+
+ +

◆ sOr()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec8 UVec8::sOr (UVec8Arg inV1,
UVec8Arg inV2 
)
+
+static
+
+ +

Logical or.

+ +
+
+ +

◆ sReplicate()

+ +
+
+ + + + + +
+ + + + + + + + +
UVec8 UVec8::sReplicate (uint32 inV)
+
+static
+
+ +

Replicate int across all components.

+ +
+
+ +

◆ sSelect()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
UVec8 UVec8::sSelect (UVec8Arg inV1,
UVec8Arg inV2,
UVec8Arg inControl 
)
+
+static
+
+ +

Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.

+ +
+
+ +

◆ sSplatX()

+ +
+
+ + + + + +
+ + + + + + + + +
UVec8 UVec8::sSplatX (UVec4Arg inV)
+
+static
+
+ +

Replicate the X component of inV to all components.

+ +
+
+ +

◆ sSplatY()

+ +
+
+ + + + + +
+ + + + + + + + +
UVec8 UVec8::sSplatY (UVec4Arg inV)
+
+static
+
+ +

Replicate the Y component of inV to all components.

+ +
+
+ +

◆ sSplatZ()

+ +
+
+ + + + + +
+ + + + + + + + +
UVec8 UVec8::sSplatZ (UVec4Arg inV)
+
+static
+
+ +

Replicate the Z component of inV to all components.

+ +
+
+ +

◆ Swizzle() [1/2]

+ +
+
+
+template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+ + + + + + + +
JPH_INLINE UVec8 UVec8::Swizzle () const
+
+ +

256 bit variant of Vec::Swizzle (no cross 128 bit lane swizzle)

+ +
+
+ +

◆ Swizzle() [2/2]

+ +
+
+
+template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+ + + + + + + +
UVec8 UVec8::Swizzle () const
+
+ +
+
+ +

◆ sXor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec8 UVec8::sXor (UVec8Arg inV1,
UVec8Arg inV2 
)
+
+static
+
+ +

Logical xor.

+ +
+
+ +

◆ TestAllTrue()

+ +
+
+ + + + + + + +
bool UVec8::TestAllTrue () const
+
+ +

Test if all components are true (true is when highest bit of component is set)

+ +
+
+ +

◆ TestAnyTrue()

+ +
+
+ + + + + + + +
bool UVec8::TestAnyTrue () const
+
+ +

Test if any of the components are true (true is when highest bit of component is set)

+ +
+
+ +

◆ ToFloat()

+ +
+
+ + + + + + + +
Vec8 UVec8::ToFloat () const
+
+ +

Converts int to float.

+ +
+
+ +

◆ UpperVec4()

+ +
+
+ + + + + + + +
UVec4 UVec8::UpperVec4 () const
+
+ +

Fetch the higher 128 bit from a 256 bit variable.

+ +
+
+

Member Data Documentation

+ +

◆ [union]

+ +
+
+ + + + +
union { ... } UVec8
+
+ +
+
+ +

◆ mU32

+ +
+
+ + + + +
uint32 UVec8::mU32[8]
+
+ +
+
+ +

◆ mValue

+ +
+
+ + + + +
__m256i UVec8::mValue
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_u_vec8.js b/class_u_vec8.js new file mode 100644 index 000000000..33c05222c --- /dev/null +++ b/class_u_vec8.js @@ -0,0 +1,26 @@ +var class_u_vec8 = +[ + [ "UVec8", "class_u_vec8.html#a01713cf88c3edb46c73aca8927447be3", null ], + [ "UVec8", "class_u_vec8.html#a99e3f32c276a508019f29aea02853158", null ], + [ "UVec8", "class_u_vec8.html#a8e85ff9a76203b1907bdf9fd43620512", null ], + [ "UVec8", "class_u_vec8.html#a364573a06edffdbc4b6bcf321932aa2f", null ], + [ "ArithmeticShiftRight", "class_u_vec8.html#a49a21bc576313ae676fb2064904ed506", null ], + [ "ArithmeticShiftRight", "class_u_vec8.html#ab477a12a379656e5aeb518621b308854", null ], + [ "LogicalShiftLeft", "class_u_vec8.html#af26e70e8e238b9765bc5ab12b817e5d1", null ], + [ "LogicalShiftLeft", "class_u_vec8.html#a5f5de5fcc8c6ac9e44b2bc79f82df48c", null ], + [ "LogicalShiftRight", "class_u_vec8.html#a4d13b9d84a398e856caf4f072483bf0d", null ], + [ "LogicalShiftRight", "class_u_vec8.html#a6ec179075eeb442c9fde60f6a997c414", null ], + [ "LowerVec4", "class_u_vec8.html#ac1befe2c88fff8ac646f1c34bedbc9d3", null ], + [ "operator!=", "class_u_vec8.html#af273dd7e633a1508222b9092cb334180", null ], + [ "operator==", "class_u_vec8.html#a42797ff3cc1bf751ce42d71302851d13", null ], + [ "operator[]", "class_u_vec8.html#ac83adccdf335b7fab19aa812bfc4f140", null ], + [ "operator[]", "class_u_vec8.html#af4b5d732eccd1cce573ea07e1d005dea", null ], + [ "Swizzle", "class_u_vec8.html#a2e355553378c7ecbac97bf9a52760f20", null ], + [ "Swizzle", "class_u_vec8.html#a907862ab1fd7c2886e2b75a1c6a2e9ac", null ], + [ "TestAllTrue", "class_u_vec8.html#a3269b59051bb75bdb3c9f22ceb272492", null ], + [ "TestAnyTrue", "class_u_vec8.html#a7cc280bb498d1da896005b682a768db9", null ], + [ "ToFloat", "class_u_vec8.html#aca1ec9006b80aa9845b81cdef795731d", null ], + [ "UpperVec4", "class_u_vec8.html#a11d69b0b6000ceac965236eb6ff5a4da", null ], + [ "mU32", "class_u_vec8.html#a5a296db57439c7b0bedad1e8390e82cb", null ], + [ "mValue", "class_u_vec8.html#aa58cb5d101744a6d174afc8cad1e2d98", null ] +]; \ No newline at end of file diff --git a/class_unique_lock-members.html b/class_unique_lock-members.html new file mode 100644 index 000000000..3d5d7627a --- /dev/null +++ b/class_unique_lock-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
UniqueLock< LockType > Member List
+
+
+ +

This is the complete list of members for UniqueLock< LockType >, including all inherited members.

+ + + + + + +
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
UniqueLock(LockType &inLock JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))UniqueLock< LockType >inlineexplicit
~UniqueLock()UniqueLock< LockType >inline
+
+ + + + diff --git a/class_unique_lock.html b/class_unique_lock.html new file mode 100644 index 000000000..cae8a61f4 --- /dev/null +++ b/class_unique_lock.html @@ -0,0 +1,208 @@ + + + + + + + +Jolt Physics: UniqueLock< LockType > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
UniqueLock< LockType > Class Template Reference
+
+
+ +

Helper class that is similar to std::unique_lock. + More...

+ +

#include <PhysicsLock.h>

+
+Inheritance diagram for UniqueLock< LockType >:
+
+
+ + +NonCopyable + +
+ + + + + + + + + + + + + +

+Public Member Functions

 UniqueLock (LockType &inLock JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
 
 ~UniqueLock ()
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+

Detailed Description

+
template<class LockType>
+class UniqueLock< LockType >

Helper class that is similar to std::unique_lock.

+

Constructor & Destructor Documentation

+ +

◆ UniqueLock()

+ +
+
+
+template<class LockType >
+ + + + + +
+ + + + + + + + +
UniqueLock< LockType >::UniqueLock (LockType &inLock  JPH_IF_ENABLE_ASSERTS, PhysicsLockContext inContext, EPhysicsLockTypes inType)
+
+inlineexplicit
+
+ +
+
+ +

◆ ~UniqueLock()

+ +
+
+
+template<class LockType >
+ + + + + +
+ + + + + + + +
UniqueLock< LockType >::~UniqueLock ()
+
+inline
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_unique_lock.js b/class_unique_lock.js new file mode 100644 index 000000000..52748d40a --- /dev/null +++ b/class_unique_lock.js @@ -0,0 +1,5 @@ +var class_unique_lock = +[ + [ "UniqueLock", "class_unique_lock.html#a6883cf8bdf6a648a540e5714f49a9605", null ], + [ "~UniqueLock", "class_unique_lock.html#ab6a03388e3040483ea88e86e9aa2aaae", null ] +]; \ No newline at end of file diff --git a/class_unique_lock.png b/class_unique_lock.png new file mode 100644 index 000000000..3e0e1403f Binary files /dev/null and b/class_unique_lock.png differ diff --git a/class_vec3-members.html b/class_vec3-members.html new file mode 100644 index 000000000..af9d01e3b --- /dev/null +++ b/class_vec3-members.html @@ -0,0 +1,206 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vec3 Member List
+
+
+ +

This is the complete list of members for Vec3, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Abs() constVec3
ArgType typedefVec3
CheckW() constVec3
Cross(Vec3Arg inV2) constVec3
Dot(Vec3Arg inV2) constVec3
DotV(Vec3Arg inV2) constVec3
DotV4(Vec3Arg inV2) constVec3
GetHighestComponentIndex() constVec3
GetLowestComponentIndex() constVec3
GetNormalizedPerpendicular() constVec3
GetSign() constVec3
GetX() constVec3inline
GetY() constVec3inline
GetZ() constVec3inline
IsClose(Vec3Arg inV2, float inMaxDistSq=1.0e-12f) constVec3
IsNaN() constVec3
IsNearZero(float inMaxDistSq=1.0e-12f) constVec3
IsNormalized(float inTolerance=1.0e-6f) constVec3
Length() constVec3
LengthSq() constVec3
mF32Vec3
mValueVec3
Normalized() constVec3
NormalizedOr(Vec3Arg inZeroValue) constVec3
operator!=(Vec3Arg inV2) constVec3inline
operator*(Vec3Arg inV2) constVec3
operator*(float inV2) constVec3
operator*Vec3friend
operator*=(float inV2)Vec3
operator*=(Vec3Arg inV2)Vec3
operator+(Vec3Arg inV2) constVec3
operator+=(Vec3Arg inV2)Vec3
operator-() constVec3
operator-(Vec3Arg inV2) constVec3
operator-=(Vec3Arg inV2)Vec3
operator/(float inV2) constVec3
operator/(Vec3Arg inV2) constVec3
operator/=(float inV2)Vec3
operator<<Vec3friend
operator=(const Vec3 &inRHS)=defaultVec3
operator==(Vec3Arg inV2) constVec3
operator[](uint inCoordinate) constVec3inline
Reciprocal() constVec3
ReduceMax() constVec3
ReduceMin() constVec3
ReinterpretAsInt() constVec3
sAnd(Vec3Arg inV1, Vec3Arg inV2)Vec3static
sAxisX()Vec3inlinestatic
sAxisY()Vec3inlinestatic
sAxisZ()Vec3inlinestatic
sClamp(Vec3Arg inV, Vec3Arg inMin, Vec3Arg inMax)Vec3static
sEquals(Vec3Arg inV1, Vec3Arg inV2)Vec3static
Set(float inX, float inY, float inZ)Vec3inline
SetComponent(uint inCoordinate, float inValue)Vec3inline
SetX(float inX)Vec3inline
SetY(float inY)Vec3inline
SetZ(float inZ)Vec3inline
sFixW(Type inValue)Vec3static
sFusedMultiplyAdd(Vec3Arg inMul1, Vec3Arg inMul2, Vec3Arg inAdd)Vec3static
sGreater(Vec3Arg inV1, Vec3Arg inV2)Vec3static
sGreaterOrEqual(Vec3Arg inV1, Vec3Arg inV2)Vec3static
sLess(Vec3Arg inV1, Vec3Arg inV2)Vec3static
sLessOrEqual(Vec3Arg inV1, Vec3Arg inV2)Vec3static
sLoadFloat3Unsafe(const Float3 &inV)Vec3static
sMax(Vec3Arg inV1, Vec3Arg inV2)Vec3static
sMin(Vec3Arg inV1, Vec3Arg inV2)Vec3static
sNaN()Vec3static
sOr(Vec3Arg inV1, Vec3Arg inV2)Vec3static
SplatX() constVec3
SplatY() constVec3
SplatZ() constVec3
Sqrt() constVec3
sRandom(Random &inRandom)Vec3inlinestatic
sReplicate(float inV)Vec3static
sSelect(Vec3Arg inV1, Vec3Arg inV2, UVec4Arg inControl)Vec3static
StoreFloat3(Float3 *outV) constVec3
sUnitSphereVec3static
sUnitSpherical(float inTheta, float inPhi)Vec3static
Swizzle() constVec3
Swizzle() constVec3
sXor(Vec3Arg inV1, Vec3Arg inV2)Vec3static
sZero()Vec3static
ToInt() constVec3
Type typedefVec3
Vec3()=defaultVec3
Vec3(const Vec3 &inRHS)=defaultVec3
Vec3(Vec4Arg inRHS)Vec3explicit
Vec3(Type inRHS)Vec3inline
Vec3(const Float3 &inV)Vec3explicit
Vec3(float inX, float inY, float inZ)Vec3
+
+ + + + diff --git a/class_vec3.html b/class_vec3.html new file mode 100644 index 000000000..f6e85f383 --- /dev/null +++ b/class_vec3.html @@ -0,0 +1,2749 @@ + + + + + + + +Jolt Physics: Vec3 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Vec3 Class Reference
+
+
+ +

#include <Vec3.h>

+ + + + + + +

+Public Types

using Type = Vec4::Type
 
using ArgType = Vec3Arg
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Vec3 ()=default
 Constructor.
 
 Vec3 (const Vec3 &inRHS)=default
 
Vec3operator= (const Vec3 &inRHS)=default
 
JPH_INLINE Vec3 (Vec4Arg inRHS)
 
JPH_INLINE Vec3 (Type inRHS)
 
JPH_INLINE Vec3 (const Float3 &inV)
 Load 3 floats from memory.
 
JPH_INLINE Vec3 (float inX, float inY, float inZ)
 Create a vector from 3 components.
 
JPH_INLINE float GetX () const
 Get individual components.
 
JPH_INLINE float GetY () const
 
JPH_INLINE float GetZ () const
 
JPH_INLINE void SetX (float inX)
 Set individual components.
 
JPH_INLINE void SetY (float inY)
 
JPH_INLINE void SetZ (float inZ)
 
JPH_INLINE void Set (float inX, float inY, float inZ)
 Set all components.
 
JPH_INLINE float operator[] (uint inCoordinate) const
 Get float component by index.
 
JPH_INLINE void SetComponent (uint inCoordinate, float inValue)
 Set float component by index.
 
JPH_INLINE bool operator== (Vec3Arg inV2) const
 Comparison.
 
JPH_INLINE bool operator!= (Vec3Arg inV2) const
 
JPH_INLINE bool IsClose (Vec3Arg inV2, float inMaxDistSq=1.0e-12f) const
 Test if two vectors are close.
 
JPH_INLINE bool IsNearZero (float inMaxDistSq=1.0e-12f) const
 Test if vector is near zero.
 
JPH_INLINE bool IsNormalized (float inTolerance=1.0e-6f) const
 Test if vector is normalized.
 
JPH_INLINE bool IsNaN () const
 Test if vector contains NaN elements.
 
JPH_INLINE Vec3 operator* (Vec3Arg inV2) const
 Multiply two float vectors (component wise)
 
JPH_INLINE Vec3 operator* (float inV2) const
 Multiply vector with float.
 
JPH_INLINE Vec3 operator/ (float inV2) const
 Divide vector by float.
 
JPH_INLINE Vec3operator*= (float inV2)
 Multiply vector with float.
 
JPH_INLINE Vec3operator*= (Vec3Arg inV2)
 Multiply vector with vector.
 
JPH_INLINE Vec3operator/= (float inV2)
 Divide vector by float.
 
JPH_INLINE Vec3 operator+ (Vec3Arg inV2) const
 Add two float vectors (component wise)
 
JPH_INLINE Vec3operator+= (Vec3Arg inV2)
 Add two float vectors (component wise)
 
JPH_INLINE Vec3 operator- () const
 Negate.
 
JPH_INLINE Vec3 operator- (Vec3Arg inV2) const
 Subtract two float vectors (component wise)
 
JPH_INLINE Vec3operator-= (Vec3Arg inV2)
 Add two float vectors (component wise)
 
JPH_INLINE Vec3 operator/ (Vec3Arg inV2) const
 Divide (component wise)
 
template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ>
JPH_INLINE Vec3 Swizzle () const
 Swizzle the elements in inV.
 
JPH_INLINE Vec4 SplatX () const
 Replicate the X component to all components.
 
JPH_INLINE Vec4 SplatY () const
 Replicate the Y component to all components.
 
JPH_INLINE Vec4 SplatZ () const
 Replicate the Z component to all components.
 
JPH_INLINE int GetLowestComponentIndex () const
 Get index of component with lowest value.
 
JPH_INLINE int GetHighestComponentIndex () const
 Get index of component with highest value.
 
JPH_INLINE Vec3 Abs () const
 Return the absolute value of each of the components.
 
JPH_INLINE Vec3 Reciprocal () const
 Reciprocal vector (1 / value) for each of the components.
 
JPH_INLINE Vec3 Cross (Vec3Arg inV2) const
 Cross product.
 
JPH_INLINE Vec3 DotV (Vec3Arg inV2) const
 Dot product, returns the dot product in X, Y and Z components.
 
JPH_INLINE Vec4 DotV4 (Vec3Arg inV2) const
 Dot product, returns the dot product in X, Y, Z and W components.
 
JPH_INLINE float Dot (Vec3Arg inV2) const
 Dot product.
 
JPH_INLINE float LengthSq () const
 Squared length of vector.
 
JPH_INLINE float Length () const
 Length of vector.
 
JPH_INLINE Vec3 Normalized () const
 Normalize vector.
 
JPH_INLINE Vec3 NormalizedOr (Vec3Arg inZeroValue) const
 Normalize vector or return inZeroValue if the length of the vector is zero.
 
JPH_INLINE void StoreFloat3 (Float3 *outV) const
 Store 3 floats to memory.
 
JPH_INLINE UVec4 ToInt () const
 Convert each component from a float to an int.
 
JPH_INLINE UVec4 ReinterpretAsInt () const
 Reinterpret Vec3 as a UVec4 (doesn't change the bits)
 
JPH_INLINE float ReduceMin () const
 Get the minimum of X, Y and Z.
 
JPH_INLINE float ReduceMax () const
 Get the maximum of X, Y and Z.
 
JPH_INLINE Vec3 Sqrt () const
 Component wise square root.
 
JPH_INLINE Vec3 GetNormalizedPerpendicular () const
 Get normalized vector that is perpendicular to this vector.
 
JPH_INLINE Vec3 GetSign () const
 Get vector that contains the sign of each element (returns 1.0f if positive, -1.0f if negative)
 
JPH_INLINE void CheckW () const
 Internal helper function that checks that W is equal to Z, so e.g. dividing by it should not generate div by 0.
 
template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ>
Vec3 Swizzle () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static JPH_INLINE Vec3 sZero ()
 Vector with all zeros.
 
static JPH_INLINE Vec3 sNaN ()
 Vector with all NaN's.
 
static JPH_INLINE Vec3 sAxisX ()
 Vectors with the principal axis.
 
static JPH_INLINE Vec3 sAxisY ()
 
static JPH_INLINE Vec3 sAxisZ ()
 
static JPH_INLINE Vec3 sReplicate (float inV)
 Replicate inV across all components.
 
static JPH_INLINE Vec3 sLoadFloat3Unsafe (const Float3 &inV)
 Load 3 floats from memory (reads 32 bits extra which it doesn't use)
 
static JPH_INLINE Vec3 sMin (Vec3Arg inV1, Vec3Arg inV2)
 Return the minimum value of each of the components.
 
static JPH_INLINE Vec3 sMax (Vec3Arg inV1, Vec3Arg inV2)
 Return the maximum of each of the components.
 
static JPH_INLINE Vec3 sClamp (Vec3Arg inV, Vec3Arg inMin, Vec3Arg inMax)
 Clamp a vector between min and max (component wise)
 
static JPH_INLINE UVec4 sEquals (Vec3Arg inV1, Vec3Arg inV2)
 Equals (component wise)
 
static JPH_INLINE UVec4 sLess (Vec3Arg inV1, Vec3Arg inV2)
 Less than (component wise)
 
static JPH_INLINE UVec4 sLessOrEqual (Vec3Arg inV1, Vec3Arg inV2)
 Less than or equal (component wise)
 
static JPH_INLINE UVec4 sGreater (Vec3Arg inV1, Vec3Arg inV2)
 Greater than (component wise)
 
static JPH_INLINE UVec4 sGreaterOrEqual (Vec3Arg inV1, Vec3Arg inV2)
 Greater than or equal (component wise)
 
static JPH_INLINE Vec3 sFusedMultiplyAdd (Vec3Arg inMul1, Vec3Arg inMul2, Vec3Arg inAdd)
 Calculates inMul1 * inMul2 + inAdd.
 
static JPH_INLINE Vec3 sSelect (Vec3Arg inV1, Vec3Arg inV2, UVec4Arg inControl)
 Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.
 
static JPH_INLINE Vec3 sOr (Vec3Arg inV1, Vec3Arg inV2)
 Logical or (component wise)
 
static JPH_INLINE Vec3 sXor (Vec3Arg inV1, Vec3Arg inV2)
 Logical xor (component wise)
 
static JPH_INLINE Vec3 sAnd (Vec3Arg inV1, Vec3Arg inV2)
 Logical and (component wise)
 
static JPH_INLINE Vec3 sUnitSpherical (float inTheta, float inPhi)
 
template<class Random >
static Vec3 sRandom (Random &inRandom)
 Get random unit vector.
 
static JPH_INLINE Type sFixW (Type inValue)
 Internal helper function that ensures that the Z component is replicated to the W component to prevent divisions by zero.
 
+ + + + + + + + + +

+Public Attributes

union { 
 
   Type   mValue 
 
   float   mF32 [4] 
 
};  
 
+ + + + +

+Static Public Attributes

static JPH_EXPORT const StaticArray< Vec3, 1026 > sUnitSphere
 A set of vectors uniformly spanning the surface of a unit sphere, usable for debug purposes.
 
+ + + + + + + +

+Friends

JPH_INLINE Vec3 operator* (float inV1, Vec3Arg inV2)
 Multiply vector with float.
 
ostream & operator<< (ostream &inStream, Vec3Arg inV)
 To String.
 
+

Detailed Description

+

3 component vector (stored as 4 vectors). Note that we keep the 4th component the same as the 3rd component to avoid divisions by zero when JPH_FLOATING_POINT_EXCEPTIONS_ENABLED defined

+

Member Typedef Documentation

+ +

◆ ArgType

+ +
+
+ + + + +
using Vec3::ArgType = Vec3Arg
+
+ +
+
+ +

◆ Type

+ +
+
+ + + + +
using Vec3::Type = Vec4::Type
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Vec3() [1/6]

+ +
+
+ + + + + +
+ + + + + + + +
Vec3::Vec3 ()
+
+default
+
+ +

Constructor.

+

Intentionally not initialized for performance reasons

+ +
+
+ +

◆ Vec3() [2/6]

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3::Vec3 (const Vec3inRHS)
+
+default
+
+ +
+
+ +

◆ Vec3() [3/6]

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3::Vec3 (Vec4Arg inRHS)
+
+explicit
+
+ +
+
+ +

◆ Vec3() [4/6]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec3::Vec3 (Type inRHS)
+
+inline
+
+ +
+
+ +

◆ Vec3() [5/6]

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3::Vec3 (const Float3inV)
+
+explicit
+
+ +

Load 3 floats from memory.

+ +
+
+ +

◆ Vec3() [6/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Vec3::Vec3 (float inX,
float inY,
float inZ 
)
+
+ +

Create a vector from 3 components.

+ +
+
+

Member Function Documentation

+ +

◆ Abs()

+ +
+
+ + + + + + + +
Vec3 Vec3::Abs () const
+
+ +

Return the absolute value of each of the components.

+ +
+
+ +

◆ CheckW()

+ +
+
+ + + + + + + +
JPH_INLINE void Vec3::CheckW () const
+
+ +

Internal helper function that checks that W is equal to Z, so e.g. dividing by it should not generate div by 0.

+ +
+
+ +

◆ Cross()

+ +
+
+ + + + + + + + +
Vec3 Vec3::Cross (Vec3Arg inV2) const
+
+ +

Cross product.

+ +
+
+ +

◆ Dot()

+ +
+
+ + + + + + + + +
float Vec3::Dot (Vec3Arg inV2) const
+
+ +

Dot product.

+ +
+
+ +

◆ DotV()

+ +
+
+ + + + + + + + +
Vec3 Vec3::DotV (Vec3Arg inV2) const
+
+ +

Dot product, returns the dot product in X, Y and Z components.

+ +
+
+ +

◆ DotV4()

+ +
+
+ + + + + + + + +
Vec4 Vec3::DotV4 (Vec3Arg inV2) const
+
+ +

Dot product, returns the dot product in X, Y, Z and W components.

+ +
+
+ +

◆ GetHighestComponentIndex()

+ +
+
+ + + + + + + +
int Vec3::GetHighestComponentIndex () const
+
+ +

Get index of component with highest value.

+ +
+
+ +

◆ GetLowestComponentIndex()

+ +
+
+ + + + + + + +
int Vec3::GetLowestComponentIndex () const
+
+ +

Get index of component with lowest value.

+ +
+
+ +

◆ GetNormalizedPerpendicular()

+ +
+
+ + + + + + + +
Vec3 Vec3::GetNormalizedPerpendicular () const
+
+ +

Get normalized vector that is perpendicular to this vector.

+ +
+
+ +

◆ GetSign()

+ +
+
+ + + + + + + +
Vec3 Vec3::GetSign () const
+
+ +

Get vector that contains the sign of each element (returns 1.0f if positive, -1.0f if negative)

+ +
+
+ +

◆ GetX()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Vec3::GetX () const
+
+inline
+
+ +

Get individual components.

+ +
+
+ +

◆ GetY()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Vec3::GetY () const
+
+inline
+
+ +
+
+ +

◆ GetZ()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Vec3::GetZ () const
+
+inline
+
+ +
+
+ +

◆ IsClose()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool Vec3::IsClose (Vec3Arg inV2,
float inMaxDistSq = 1.0e-12f 
) const
+
+ +

Test if two vectors are close.

+ +
+
+ +

◆ IsNaN()

+ +
+
+ + + + + + + +
bool Vec3::IsNaN () const
+
+ +

Test if vector contains NaN elements.

+ +
+
+ +

◆ IsNearZero()

+ +
+
+ + + + + + + + +
bool Vec3::IsNearZero (float inMaxDistSq = 1.0e-12f) const
+
+ +

Test if vector is near zero.

+ +
+
+ +

◆ IsNormalized()

+ +
+
+ + + + + + + + +
bool Vec3::IsNormalized (float inTolerance = 1.0e-6f) const
+
+ +

Test if vector is normalized.

+ +
+
+ +

◆ Length()

+ +
+
+ + + + + + + +
float Vec3::Length () const
+
+ +

Length of vector.

+ +
+
+ +

◆ LengthSq()

+ +
+
+ + + + + + + +
float Vec3::LengthSq () const
+
+ +

Squared length of vector.

+ +
+
+ +

◆ Normalized()

+ +
+
+ + + + + + + +
Vec3 Vec3::Normalized () const
+
+ +

Normalize vector.

+ +
+
+ +

◆ NormalizedOr()

+ +
+
+ + + + + + + + +
Vec3 Vec3::NormalizedOr (Vec3Arg inZeroValue) const
+
+ +

Normalize vector or return inZeroValue if the length of the vector is zero.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE bool Vec3::operator!= (Vec3Arg inV2) const
+
+inline
+
+ +
+
+ +

◆ operator*() [1/2]

+ +
+
+ + + + + + + + +
Vec3 Vec3::operator* (float inV2) const
+
+ +

Multiply vector with float.

+ +
+
+ +

◆ operator*() [2/2]

+ +
+
+ + + + + + + + +
Vec3 Vec3::operator* (Vec3Arg inV2) const
+
+ +

Multiply two float vectors (component wise)

+ +
+
+ +

◆ operator*=() [1/2]

+ +
+
+ + + + + + + + +
Vec3 & Vec3::operator*= (float inV2)
+
+ +

Multiply vector with float.

+ +
+
+ +

◆ operator*=() [2/2]

+ +
+
+ + + + + + + + +
Vec3 & Vec3::operator*= (Vec3Arg inV2)
+
+ +

Multiply vector with vector.

+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + + + + +
Vec3 Vec3::operator+ (Vec3Arg inV2) const
+
+ +

Add two float vectors (component wise)

+ +
+
+ +

◆ operator+=()

+ +
+
+ + + + + + + + +
Vec3 & Vec3::operator+= (Vec3Arg inV2)
+
+ +

Add two float vectors (component wise)

+ +
+
+ +

◆ operator-() [1/2]

+ +
+
+ + + + + + + +
Vec3 Vec3::operator- () const
+
+ +

Negate.

+ +
+
+ +

◆ operator-() [2/2]

+ +
+
+ + + + + + + + +
Vec3 Vec3::operator- (Vec3Arg inV2) const
+
+ +

Subtract two float vectors (component wise)

+ +
+
+ +

◆ operator-=()

+ +
+
+ + + + + + + + +
Vec3 & Vec3::operator-= (Vec3Arg inV2)
+
+ +

Add two float vectors (component wise)

+ +
+
+ +

◆ operator/() [1/2]

+ +
+
+ + + + + + + + +
Vec3 Vec3::operator/ (float inV2) const
+
+ +

Divide vector by float.

+ +
+
+ +

◆ operator/() [2/2]

+ +
+
+ + + + + + + + +
Vec3 Vec3::operator/ (Vec3Arg inV2) const
+
+ +

Divide (component wise)

+ +
+
+ +

◆ operator/=()

+ +
+
+ + + + + + + + +
Vec3 & Vec3::operator/= (float inV2)
+
+ +

Divide vector by float.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 & Vec3::operator= (const Vec3inRHS)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool Vec3::operator== (Vec3Arg inV2) const
+
+ +

Comparison.

+ +
+
+ +

◆ operator[]()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE float Vec3::operator[] (uint inCoordinate) const
+
+inline
+
+ +

Get float component by index.

+ +
+
+ +

◆ Reciprocal()

+ +
+
+ + + + + + + +
Vec3 Vec3::Reciprocal () const
+
+ +

Reciprocal vector (1 / value) for each of the components.

+ +
+
+ +

◆ ReduceMax()

+ +
+
+ + + + + + + +
float Vec3::ReduceMax () const
+
+ +

Get the maximum of X, Y and Z.

+ +
+
+ +

◆ ReduceMin()

+ +
+
+ + + + + + + +
float Vec3::ReduceMin () const
+
+ +

Get the minimum of X, Y and Z.

+ +
+
+ +

◆ ReinterpretAsInt()

+ +
+
+ + + + + + + +
UVec4 Vec3::ReinterpretAsInt () const
+
+ +

Reinterpret Vec3 as a UVec4 (doesn't change the bits)

+ +
+
+ +

◆ sAnd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 Vec3::sAnd (Vec3Arg inV1,
Vec3Arg inV2 
)
+
+static
+
+ +

Logical and (component wise)

+ +
+
+ +

◆ sAxisX()

+ +
+
+ + + + + +
+ + + + + + + +
static JPH_INLINE Vec3 Vec3::sAxisX ()
+
+inlinestatic
+
+ +

Vectors with the principal axis.

+ +
+
+ +

◆ sAxisY()

+ +
+
+ + + + + +
+ + + + + + + +
static JPH_INLINE Vec3 Vec3::sAxisY ()
+
+inlinestatic
+
+ +
+
+ +

◆ sAxisZ()

+ +
+
+ + + + + +
+ + + + + + + +
static JPH_INLINE Vec3 Vec3::sAxisZ ()
+
+inlinestatic
+
+ +
+
+ +

◆ sClamp()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Vec3 Vec3::sClamp (Vec3Arg inV,
Vec3Arg inMin,
Vec3Arg inMax 
)
+
+static
+
+ +

Clamp a vector between min and max (component wise)

+ +
+
+ +

◆ sEquals()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 Vec3::sEquals (Vec3Arg inV1,
Vec3Arg inV2 
)
+
+static
+
+ +

Equals (component wise)

+ +
+
+ +

◆ Set()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE void Vec3::Set (float inX,
float inY,
float inZ 
)
+
+inline
+
+ +

Set all components.

+ +
+
+ +

◆ SetComponent()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE void Vec3::SetComponent (uint inCoordinate,
float inValue 
)
+
+inline
+
+ +

Set float component by index.

+ +
+
+ +

◆ SetX()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Vec3::SetX (float inX)
+
+inline
+
+ +

Set individual components.

+ +
+
+ +

◆ SetY()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Vec3::SetY (float inY)
+
+inline
+
+ +
+
+ +

◆ SetZ()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Vec3::SetZ (float inZ)
+
+inline
+
+ +
+
+ +

◆ sFixW()

+ +
+
+ + + + + +
+ + + + + + + + +
static JPH_INLINE Type Vec3::sFixW (Type inValue)
+
+static
+
+ +

Internal helper function that ensures that the Z component is replicated to the W component to prevent divisions by zero.

+ +
+
+ +

◆ sFusedMultiplyAdd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Vec3 Vec3::sFusedMultiplyAdd (Vec3Arg inMul1,
Vec3Arg inMul2,
Vec3Arg inAdd 
)
+
+static
+
+ +

Calculates inMul1 * inMul2 + inAdd.

+ +
+
+ +

◆ sGreater()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 Vec3::sGreater (Vec3Arg inV1,
Vec3Arg inV2 
)
+
+static
+
+ +

Greater than (component wise)

+ +
+
+ +

◆ sGreaterOrEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 Vec3::sGreaterOrEqual (Vec3Arg inV1,
Vec3Arg inV2 
)
+
+static
+
+ +

Greater than or equal (component wise)

+ +
+
+ +

◆ sLess()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 Vec3::sLess (Vec3Arg inV1,
Vec3Arg inV2 
)
+
+static
+
+ +

Less than (component wise)

+ +
+
+ +

◆ sLessOrEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 Vec3::sLessOrEqual (Vec3Arg inV1,
Vec3Arg inV2 
)
+
+static
+
+ +

Less than or equal (component wise)

+ +
+
+ +

◆ sLoadFloat3Unsafe()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 Vec3::sLoadFloat3Unsafe (const Float3inV)
+
+static
+
+ +

Load 3 floats from memory (reads 32 bits extra which it doesn't use)

+ +
+
+ +

◆ sMax()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 Vec3::sMax (Vec3Arg inV1,
Vec3Arg inV2 
)
+
+static
+
+ +

Return the maximum of each of the components.

+ +
+
+ +

◆ sMin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 Vec3::sMin (Vec3Arg inV1,
Vec3Arg inV2 
)
+
+static
+
+ +

Return the minimum value of each of the components.

+ +
+
+ +

◆ sNaN()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Vec3::sNaN ()
+
+static
+
+ +

Vector with all NaN's.

+ +
+
+ +

◆ sOr()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 Vec3::sOr (Vec3Arg inV1,
Vec3Arg inV2 
)
+
+static
+
+ +

Logical or (component wise)

+ +
+
+ +

◆ SplatX()

+ +
+
+ + + + + + + +
Vec4 Vec3::SplatX () const
+
+ +

Replicate the X component to all components.

+ +
+
+ +

◆ SplatY()

+ +
+
+ + + + + + + +
Vec4 Vec3::SplatY () const
+
+ +

Replicate the Y component to all components.

+ +
+
+ +

◆ SplatZ()

+ +
+
+ + + + + + + +
Vec4 Vec3::SplatZ () const
+
+ +

Replicate the Z component to all components.

+ +
+
+ +

◆ Sqrt()

+ +
+
+ + + + + + + +
Vec3 Vec3::Sqrt () const
+
+ +

Component wise square root.

+ +
+
+ +

◆ sRandom()

+ +
+
+
+template<class Random >
+ + + + + +
+ + + + + + + + +
Vec3 Vec3::sRandom (Random & inRandom)
+
+inlinestatic
+
+ +

Get random unit vector.

+ +
+
+ +

◆ sReplicate()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec3 Vec3::sReplicate (float inV)
+
+static
+
+ +

Replicate inV across all components.

+ +
+
+ +

◆ sSelect()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Vec3 Vec3::sSelect (Vec3Arg inV1,
Vec3Arg inV2,
UVec4Arg inControl 
)
+
+static
+
+ +

Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.

+ +
+
+ +

◆ StoreFloat3()

+ +
+
+ + + + + + + + +
void Vec3::StoreFloat3 (Float3outV) const
+
+ +

Store 3 floats to memory.

+ +
+
+ +

◆ sUnitSpherical()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 Vec3::sUnitSpherical (float inTheta,
float inPhi 
)
+
+static
+
+

Get unit vector given spherical coordinates inTheta \(\in [0, \pi]\) is angle between vector and z-axis inPhi \(\in [0, 2 \pi]\) is the angle in the xy-plane starting from the x axis and rotating counter clockwise around the z-axis

+ +
+
+ +

◆ Swizzle() [1/2]

+ +
+
+
+template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ>
+ + + + + + + +
JPH_INLINE Vec3 Vec3::Swizzle () const
+
+ +

Swizzle the elements in inV.

+ +
+
+ +

◆ Swizzle() [2/2]

+ +
+
+
+template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ>
+ + + + + + + +
Vec3 Vec3::Swizzle () const
+
+ +
+
+ +

◆ sXor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec3 Vec3::sXor (Vec3Arg inV1,
Vec3Arg inV2 
)
+
+static
+
+ +

Logical xor (component wise)

+ +
+
+ +

◆ sZero()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Vec3::sZero ()
+
+static
+
+ +

Vector with all zeros.

+ +
+
+ +

◆ ToInt()

+ +
+
+ + + + + + + +
UVec4 Vec3::ToInt () const
+
+ +

Convert each component from a float to an int.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ operator*

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE Vec3 operator* (float inV1,
Vec3Arg inV2 
)
+
+friend
+
+ +

Multiply vector with float.

+ +
+
+ +

◆ operator<<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ostream & operator<< (ostream & inStream,
Vec3Arg inV 
)
+
+friend
+
+ +

To String.

+ +
+
+

Member Data Documentation

+ +

◆ [union]

+ +
+
+ + + + +
union { ... } Vec3
+
+ +
+
+ +

◆ mF32

+ +
+
+ + + + +
float Vec3::mF32[4]
+
+ +
+
+ +

◆ mValue

+ +
+
+ + + + +
Type Vec3::mValue
+
+ +
+
+ +

◆ sUnitSphere

+ +
+
+ + + + + +
+ + + + +
const StaticArray< Vec3, 1026 > Vec3::sUnitSphere
+
+static
+
+Initial value:
= []() {
+
+
const int level = 3;
+
+ +
+
+ + + + + + +
+
+
sCreateVertices(verts, Vec3::sAxisX(), Vec3::sAxisY(), Vec3::sAxisZ(), level);
+
sCreateVertices(verts, -Vec3::sAxisX(), Vec3::sAxisY(), Vec3::sAxisZ(), level);
+
sCreateVertices(verts, Vec3::sAxisX(), -Vec3::sAxisY(), Vec3::sAxisZ(), level);
+
sCreateVertices(verts, -Vec3::sAxisX(), -Vec3::sAxisY(), Vec3::sAxisZ(), level);
+
sCreateVertices(verts, Vec3::sAxisX(), Vec3::sAxisY(), -Vec3::sAxisZ(), level);
+
sCreateVertices(verts, -Vec3::sAxisX(), Vec3::sAxisY(), -Vec3::sAxisZ(), level);
+
sCreateVertices(verts, Vec3::sAxisX(), -Vec3::sAxisY(), -Vec3::sAxisZ(), level);
+
sCreateVertices(verts, -Vec3::sAxisX(), -Vec3::sAxisY(), -Vec3::sAxisZ(), level);
+
+
return verts;
+
}()
+
Simple variable length array backed by a fixed size buffer.
Definition StaticArray.h:14
+
void push_back(const T &inElement)
Add element to the back of the array.
Definition StaticArray.h:61
+
static JPH_INLINE Vec3 sAxisX()
Vectors with the principal axis.
Definition Vec3.h:53
+
static JPH_INLINE Vec3 sAxisY()
Definition Vec3.h:54
+
static JPH_INLINE Vec3 sAxisZ()
Definition Vec3.h:55
+
+

A set of vectors uniformly spanning the surface of a unit sphere, usable for debug purposes.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vec3.js b/class_vec3.js new file mode 100644 index 000000000..c6dcf6ff7 --- /dev/null +++ b/class_vec3.js @@ -0,0 +1,69 @@ +var class_vec3 = +[ + [ "ArgType", "class_vec3.html#a8f7af7dfc65ee331b1819023c1724c97", null ], + [ "Type", "class_vec3.html#a113d94ab6f5a2f4fd236b64b9ad7cddc", null ], + [ "Vec3", "class_vec3.html#aeecf02c008ca1e3a1695d8962a5b24da", null ], + [ "Vec3", "class_vec3.html#a268ea0715fd0914ffde63ca7451bde61", null ], + [ "Vec3", "class_vec3.html#a3ab8c224fb2c6be708e58e45fd0ee987", null ], + [ "Vec3", "class_vec3.html#a67ff481d7a24cf569cb694519dc3ff63", null ], + [ "Vec3", "class_vec3.html#ac3696d27478b928d1cefab61a5178933", null ], + [ "Vec3", "class_vec3.html#a0faea2347673a7eb375a071b9190b74e", null ], + [ "Abs", "class_vec3.html#a60c863c1cdad322a1af54e77a4af8f02", null ], + [ "CheckW", "class_vec3.html#a9dc70ce592b9de527bdf81b835b2e8f5", null ], + [ "Cross", "class_vec3.html#a224811af391ccfd1e05282eda22d1de8", null ], + [ "Dot", "class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff", null ], + [ "DotV", "class_vec3.html#ae94bad18d2f3d3b2a75f69022f67c7e0", null ], + [ "DotV4", "class_vec3.html#a609366221e50c7b3134d80a80d963312", null ], + [ "GetHighestComponentIndex", "class_vec3.html#aefba3895f1a98e1a5854b7e79598a408", null ], + [ "GetLowestComponentIndex", "class_vec3.html#a502453ae3005d5b84a221adf80721f92", null ], + [ "GetNormalizedPerpendicular", "class_vec3.html#a24a96972fdbe04ae9a3e340fd4c39b81", null ], + [ "GetSign", "class_vec3.html#aecf767007e342e11f109b83a09449c7f", null ], + [ "GetX", "class_vec3.html#a284e29f161ae7709a934f402bd2a848c", null ], + [ "GetY", "class_vec3.html#aac08ebd63b9ab4fa089a5ed3224a8679", null ], + [ "GetZ", "class_vec3.html#aeca36d050a7c2b41d3ac0438874d8c60", null ], + [ "IsClose", "class_vec3.html#a0b134a58f09912cb5cac913313487fad", null ], + [ "IsNaN", "class_vec3.html#ae2ae38edbb4672657e92bf1c67bb7bea", null ], + [ "IsNearZero", "class_vec3.html#acee93ea875b86bc0f63edebe2b592dbc", null ], + [ "IsNormalized", "class_vec3.html#a2f10743d69960eaac721399e4ede190a", null ], + [ "Length", "class_vec3.html#a38a9efffc3f9413f3dd702abc73eb9a2", null ], + [ "LengthSq", "class_vec3.html#aba501a6a474028084799f871c9083dc1", null ], + [ "Normalized", "class_vec3.html#a0f7559f2691ad67826f42ca19916b7a9", null ], + [ "NormalizedOr", "class_vec3.html#a6c6409cad56e4e357f73d43cd719ffe8", null ], + [ "operator!=", "class_vec3.html#a43de7b2b748f26d8854afee5edb944d5", null ], + [ "operator*", "class_vec3.html#ab8c89d26b3b090939173acf1ccd2d2e5", null ], + [ "operator*", "class_vec3.html#aad39352503c4bf9184727dde9dc11f04", null ], + [ "operator*=", "class_vec3.html#ae0bbf04d3791ef12a0b2d114e190ed8e", null ], + [ "operator*=", "class_vec3.html#a8d7e6d43ffa3bac48b87aa69c278e420", null ], + [ "operator+", "class_vec3.html#a7405124af9f071f00992b85f5c25af61", null ], + [ "operator+=", "class_vec3.html#ae0dfbede4fa779658ba48bd13449c3f1", null ], + [ "operator-", "class_vec3.html#ab05753413af282b8cbd879c334c8e5aa", null ], + [ "operator-", "class_vec3.html#a4f5d105c3b92a557557906ebd6003647", null ], + [ "operator-=", "class_vec3.html#a3c73495e25d5c416f1108ad89fb614d6", null ], + [ "operator/", "class_vec3.html#a4c3d1ff36432563aef787f8ce7172bff", null ], + [ "operator/", "class_vec3.html#a8dd428d3cc8fff37c91a4c01de2f5078", null ], + [ "operator/=", "class_vec3.html#a50f5b360029a35374a1b811107e22a81", null ], + [ "operator=", "class_vec3.html#ad08ae539c06ae81a334c530bcb024b35", null ], + [ "operator==", "class_vec3.html#a154b889fe51e3cc420716ad087b524ec", null ], + [ "operator[]", "class_vec3.html#abaa362706e12d5e3fa8d950ba80d173e", null ], + [ "Reciprocal", "class_vec3.html#a6bdb4929eab084e74d1e0ea3ae29d8ad", null ], + [ "ReduceMax", "class_vec3.html#a3d4dc6f6807ead86b5150e7904ac80f5", null ], + [ "ReduceMin", "class_vec3.html#a3b5c2f1c893d46d390428ef8c487cc7d", null ], + [ "ReinterpretAsInt", "class_vec3.html#ae8373cd45fbf550d26729f98a68b3e4a", null ], + [ "Set", "class_vec3.html#ad124c5400eba8ee0b0cf429553c4ed2c", null ], + [ "SetComponent", "class_vec3.html#a1ef1f1ce4031e9ecd4545799525281d8", null ], + [ "SetX", "class_vec3.html#aa56cdd546b6bb8a63a7677b4915398f0", null ], + [ "SetY", "class_vec3.html#a546dea138085c70aab8ce65328c96636", null ], + [ "SetZ", "class_vec3.html#a91b9fad968034550f4681c14273c77d8", null ], + [ "SplatX", "class_vec3.html#a1b03f087ce2755a85ccba4ba56f1e64b", null ], + [ "SplatY", "class_vec3.html#aad5b4211a6d98be56362559eefd9b029", null ], + [ "SplatZ", "class_vec3.html#a81f4448e17219aafda0e3b886709d1f4", null ], + [ "Sqrt", "class_vec3.html#ae3693c78a72d92e9ab821025f8ed28cf", null ], + [ "StoreFloat3", "class_vec3.html#ab22c62c48d2de13947c0cd3413018364", null ], + [ "Swizzle", "class_vec3.html#afd477997c0834bd3080156e730ced38d", null ], + [ "Swizzle", "class_vec3.html#aeeadce7b9b442cccab2d2f3cbde2ccb9", null ], + [ "ToInt", "class_vec3.html#aa3c728704083c719616638ceb698b2f1", null ], + [ "operator*", "class_vec3.html#a4f514df42b1d780285645f9ac4ab984d", null ], + [ "operator<<", "class_vec3.html#a846e7ac0cd20c95921db85cddb24a0f8", null ], + [ "mF32", "class_vec3.html#aca3385f3736a2231ace7de3a558d2863", null ], + [ "mValue", "class_vec3.html#aa84e1ff8ea2e1cea4b73c7768966fa03", null ] +]; \ No newline at end of file diff --git a/class_vec4-members.html b/class_vec4-members.html new file mode 100644 index 000000000..916e49af5 --- /dev/null +++ b/class_vec4-members.html @@ -0,0 +1,204 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vec4 Member List
+
+
+ +

This is the complete list of members for Vec4, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Abs() constVec4
ACos() constVec4inline
ASin() constVec4inline
ATan() constVec4inline
Dot(Vec4Arg inV2) constVec4
DotV(Vec4Arg inV2) constVec4
GetSign() constVec4
GetSignBits() constVec4
GetW() constVec4inline
GetX() constVec4inline
GetY() constVec4inline
GetZ() constVec4inline
IsClose(Vec4Arg inV2, float inMaxDistSq=1.0e-12f) constVec4
IsNaN() constVec4
IsNormalized(float inTolerance=1.0e-6f) constVec4
Length() constVec4
LengthSq() constVec4
mF32Vec4
mValueVec4
Normalized() constVec4
operator!=(Vec4Arg inV2) constVec4inline
operator*(Vec4Arg inV2) constVec4
operator*(float inV2) constVec4
operator*Vec4friend
operator*=(float inV2)Vec4
operator*=(Vec4Arg inV2)Vec4
operator+(Vec4Arg inV2) constVec4
operator+=(Vec4Arg inV2)Vec4
operator-() constVec4
operator-(Vec4Arg inV2) constVec4
operator-=(Vec4Arg inV2)Vec4
operator/(float inV2) constVec4
operator/(Vec4Arg inV2) constVec4
operator/=(float inV2)Vec4
operator<<Vec4friend
operator=(const Vec4 &inRHS)=defaultVec4
operator==(Vec4Arg inV2) constVec4
operator[](uint inCoordinate) constVec4inline
operator[](uint inCoordinate)Vec4inline
Reciprocal() constVec4
ReduceMax() constVec4
ReduceMin() constVec4
ReinterpretAsInt() constVec4
sAnd(Vec4Arg inV1, Vec4Arg inV2)Vec4static
sATan2(Vec4Arg inY, Vec4Arg inX)Vec4inlinestatic
sEquals(Vec4Arg inV1, Vec4Arg inV2)Vec4static
Set(float inX, float inY, float inZ, float inW)Vec4inline
SetW(float inW)Vec4inline
SetX(float inX)Vec4inline
SetY(float inY)Vec4inline
SetZ(float inZ)Vec4inline
sFusedMultiplyAdd(Vec4Arg inMul1, Vec4Arg inMul2, Vec4Arg inAdd)Vec4static
sGatherFloat4(const float *inBase, UVec4Arg inOffsets)Vec4static
sGatherFloat4(const float *inBase, UVec4Arg inOffsets)Vec4
sGreater(Vec4Arg inV1, Vec4Arg inV2)Vec4static
sGreaterOrEqual(Vec4Arg inV1, Vec4Arg inV2)Vec4static
SinCos(Vec4 &outSin, Vec4 &outCos) constVec4inline
sLess(Vec4Arg inV1, Vec4Arg inV2)Vec4static
sLessOrEqual(Vec4Arg inV1, Vec4Arg inV2)Vec4static
sLoadFloat4(const Float4 *inV)Vec4static
sLoadFloat4Aligned(const Float4 *inV)Vec4static
sMax(Vec4Arg inV1, Vec4Arg inV2)Vec4static
sMin(Vec4Arg inV1, Vec4Arg inV2)Vec4static
sNaN()Vec4static
sOr(Vec4Arg inV1, Vec4Arg inV2)Vec4static
SplatW() constVec4
SplatX() constVec4
SplatY() constVec4
SplatZ() constVec4
Sqrt() constVec4
sReplicate(float inV)Vec4static
sSelect(Vec4Arg inV1, Vec4Arg inV2, UVec4Arg inControl)Vec4static
sSort4(Vec4 &ioValue, UVec4 &ioIndex)Vec4static
sSort4Reverse(Vec4 &ioValue, UVec4 &ioIndex)Vec4static
StoreFloat4(Float4 *outV) constVec4
Swizzle() constVec4
Swizzle() constVec4
sXor(Vec4Arg inV1, Vec4Arg inV2)Vec4static
sZero()Vec4static
Tan() constVec4inline
ToInt() constVec4
Type typedefVec4
Vec4()=defaultVec4
Vec4(const Vec4 &inRHS)=defaultVec4
Vec4(Vec3Arg inRHS)Vec4explicit
Vec4(Vec3Arg inRHS, float inW)Vec4
Vec4(Type inRHS)Vec4inline
Vec4(float inX, float inY, float inZ, float inW)Vec4
+
+ + + + diff --git a/class_vec4.html b/class_vec4.html new file mode 100644 index 000000000..ef24c36dd --- /dev/null +++ b/class_vec4.html @@ -0,0 +1,2737 @@ + + + + + + + +Jolt Physics: Vec4 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Vec4 Class Reference
+
+
+ +

#include <Vec4.h>

+ + + + +

+Public Types

using Type = { float mData[4]
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Vec4 ()=default
 Constructor.
 
 Vec4 (const Vec4 &inRHS)=default
 
Vec4operator= (const Vec4 &inRHS)=default
 
JPH_INLINE Vec4 (Vec3Arg inRHS)
 WARNING: W component undefined!
 
JPH_INLINE Vec4 (Vec3Arg inRHS, float inW)
 
JPH_INLINE Vec4 (Type inRHS)
 
JPH_INLINE Vec4 (float inX, float inY, float inZ, float inW)
 Create a vector from 4 components.
 
JPH_INLINE float GetX () const
 Get individual components.
 
JPH_INLINE float GetY () const
 
JPH_INLINE float GetZ () const
 
JPH_INLINE float GetW () const
 
JPH_INLINE void SetX (float inX)
 Set individual components.
 
JPH_INLINE void SetY (float inY)
 
JPH_INLINE void SetZ (float inZ)
 
JPH_INLINE void SetW (float inW)
 
JPH_INLINE void Set (float inX, float inY, float inZ, float inW)
 Set all components.
 
JPH_INLINE float operator[] (uint inCoordinate) const
 Get float component by index.
 
JPH_INLINE float & operator[] (uint inCoordinate)
 
JPH_INLINE bool operator== (Vec4Arg inV2) const
 Comparison.
 
JPH_INLINE bool operator!= (Vec4Arg inV2) const
 
JPH_INLINE bool IsClose (Vec4Arg inV2, float inMaxDistSq=1.0e-12f) const
 Test if two vectors are close.
 
JPH_INLINE bool IsNormalized (float inTolerance=1.0e-6f) const
 Test if vector is normalized.
 
JPH_INLINE bool IsNaN () const
 Test if vector contains NaN elements.
 
JPH_INLINE Vec4 operator* (Vec4Arg inV2) const
 Multiply two float vectors (component wise)
 
JPH_INLINE Vec4 operator* (float inV2) const
 Multiply vector with float.
 
JPH_INLINE Vec4 operator/ (float inV2) const
 Divide vector by float.
 
JPH_INLINE Vec4operator*= (float inV2)
 Multiply vector with float.
 
JPH_INLINE Vec4operator*= (Vec4Arg inV2)
 Multiply vector with vector.
 
JPH_INLINE Vec4operator/= (float inV2)
 Divide vector by float.
 
JPH_INLINE Vec4 operator+ (Vec4Arg inV2) const
 Add two float vectors (component wise)
 
JPH_INLINE Vec4operator+= (Vec4Arg inV2)
 Add two float vectors (component wise)
 
JPH_INLINE Vec4 operator- () const
 Negate.
 
JPH_INLINE Vec4 operator- (Vec4Arg inV2) const
 Subtract two float vectors (component wise)
 
JPH_INLINE Vec4operator-= (Vec4Arg inV2)
 Add two float vectors (component wise)
 
JPH_INLINE Vec4 operator/ (Vec4Arg inV2) const
 Divide (component wise)
 
template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
JPH_INLINE Vec4 Swizzle () const
 Swizzle the elements in inV.
 
JPH_INLINE Vec4 SplatX () const
 Replicate the X component to all components.
 
JPH_INLINE Vec4 SplatY () const
 Replicate the Y component to all components.
 
JPH_INLINE Vec4 SplatZ () const
 Replicate the Z component to all components.
 
JPH_INLINE Vec4 SplatW () const
 Replicate the W component to all components.
 
JPH_INLINE Vec4 Abs () const
 Return the absolute value of each of the components.
 
JPH_INLINE Vec4 Reciprocal () const
 Reciprocal vector (1 / value) for each of the components.
 
JPH_INLINE Vec4 DotV (Vec4Arg inV2) const
 Dot product, returns the dot product in X, Y and Z components.
 
JPH_INLINE float Dot (Vec4Arg inV2) const
 Dot product.
 
JPH_INLINE float LengthSq () const
 Squared length of vector.
 
JPH_INLINE float Length () const
 Length of vector.
 
JPH_INLINE Vec4 Normalized () const
 Normalize vector.
 
JPH_INLINE void StoreFloat4 (Float4 *outV) const
 Store 4 floats to memory.
 
JPH_INLINE UVec4 ToInt () const
 Convert each component from a float to an int.
 
JPH_INLINE UVec4 ReinterpretAsInt () const
 Reinterpret Vec4 as a UVec4 (doesn't change the bits)
 
JPH_INLINE int GetSignBits () const
 Store if X is negative in bit 0, Y in bit 1, Z in bit 2 and W in bit 3.
 
JPH_INLINE float ReduceMin () const
 Get the minimum of X, Y, Z and W.
 
JPH_INLINE float ReduceMax () const
 Get the maximum of X, Y, Z and W.
 
JPH_INLINE Vec4 Sqrt () const
 Component wise square root.
 
JPH_INLINE Vec4 GetSign () const
 Get vector that contains the sign of each element (returns 1.0f if positive, -1.0f if negative)
 
void SinCos (Vec4 &outSin, Vec4 &outCos) const
 Calculate the sine and cosine for each element of this vector (input in radians)
 
Vec4 Tan () const
 Calculate the tangent for each element of this vector (input in radians)
 
Vec4 ASin () const
 
Vec4 ACos () const
 
Vec4 ATan () const
 Calculate the arc tangent for each element of this vector (returns value in the range [-PI / 2, PI / 2])
 
template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
Vec4 Swizzle () const
 
template<const int Scale>
Vec4 sGatherFloat4 (const float *inBase, UVec4Arg inOffsets)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static JPH_INLINE Vec4 sZero ()
 Vector with all zeros.
 
static JPH_INLINE Vec4 sNaN ()
 Vector with all NaN's.
 
static JPH_INLINE Vec4 sReplicate (float inV)
 Replicate inV across all components.
 
static JPH_INLINE Vec4 sLoadFloat4 (const Float4 *inV)
 Load 4 floats from memory.
 
static JPH_INLINE Vec4 sLoadFloat4Aligned (const Float4 *inV)
 Load 4 floats from memory, 16 bytes aligned.
 
template<const int Scale>
static JPH_INLINE Vec4 sGatherFloat4 (const float *inBase, UVec4Arg inOffsets)
 Gather 4 floats from memory at inBase + inOffsets[i] * Scale.
 
static JPH_INLINE Vec4 sMin (Vec4Arg inV1, Vec4Arg inV2)
 Return the minimum value of each of the components.
 
static JPH_INLINE Vec4 sMax (Vec4Arg inV1, Vec4Arg inV2)
 Return the maximum of each of the components.
 
static JPH_INLINE UVec4 sEquals (Vec4Arg inV1, Vec4Arg inV2)
 Equals (component wise)
 
static JPH_INLINE UVec4 sLess (Vec4Arg inV1, Vec4Arg inV2)
 Less than (component wise)
 
static JPH_INLINE UVec4 sLessOrEqual (Vec4Arg inV1, Vec4Arg inV2)
 Less than or equal (component wise)
 
static JPH_INLINE UVec4 sGreater (Vec4Arg inV1, Vec4Arg inV2)
 Greater than (component wise)
 
static JPH_INLINE UVec4 sGreaterOrEqual (Vec4Arg inV1, Vec4Arg inV2)
 Greater than or equal (component wise)
 
static JPH_INLINE Vec4 sFusedMultiplyAdd (Vec4Arg inMul1, Vec4Arg inMul2, Vec4Arg inAdd)
 Calculates inMul1 * inMul2 + inAdd.
 
static JPH_INLINE Vec4 sSelect (Vec4Arg inV1, Vec4Arg inV2, UVec4Arg inControl)
 Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.
 
static JPH_INLINE Vec4 sOr (Vec4Arg inV1, Vec4Arg inV2)
 Logical or (component wise)
 
static JPH_INLINE Vec4 sXor (Vec4Arg inV1, Vec4Arg inV2)
 Logical xor (component wise)
 
static JPH_INLINE Vec4 sAnd (Vec4Arg inV1, Vec4Arg inV2)
 Logical and (component wise)
 
static JPH_INLINE void sSort4 (Vec4 &ioValue, UVec4 &ioIndex)
 
static JPH_INLINE void sSort4Reverse (Vec4 &ioValue, UVec4 &ioIndex)
 
static Vec4 sATan2 (Vec4Arg inY, Vec4Arg inX)
 Calculate the arc tangent of y / x using the signs of the arguments to determine the correct quadrant (returns value in the range [-PI, PI])
 
+ + + + + + + + + +

+Public Attributes

union { 
 
   Type   mValue 
 
   float   mF32 [4] 
 
};  
 
+ + + + + + + +

+Friends

JPH_INLINE Vec4 operator* (float inV1, Vec4Arg inV2)
 Multiply vector with float.
 
ostream & operator<< (ostream &inStream, Vec4Arg inV)
 To String.
 
+

Member Typedef Documentation

+ +

◆ Type

+ +
+
+ + + + +
using Vec4::Type = { float mData[4]
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Vec4() [1/6]

+ +
+
+ + + + + +
+ + + + + + + +
Vec4::Vec4 ()
+
+default
+
+ +

Constructor.

+

Intentionally not initialized for performance reasons

+ +
+
+ +

◆ Vec4() [2/6]

+ +
+
+ + + + + +
+ + + + + + + + +
Vec4::Vec4 (const Vec4inRHS)
+
+default
+
+ +
+
+ +

◆ Vec4() [3/6]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_NAMESPACE_BEGIN Vec4::Vec4 (Vec3Arg inRHS)
+
+explicit
+
+ +

WARNING: W component undefined!

+ +
+
+ +

◆ Vec4() [4/6]

+ +
+
+ + + + + + + + + + + + + + + + + + +
Vec4::Vec4 (Vec3Arg inRHS,
float inW 
)
+
+ +
+
+ +

◆ Vec4() [5/6]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec4::Vec4 (Type inRHS)
+
+inline
+
+ +
+
+ +

◆ Vec4() [6/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vec4::Vec4 (float inX,
float inY,
float inZ,
float inW 
)
+
+ +

Create a vector from 4 components.

+ +
+
+

Member Function Documentation

+ +

◆ Abs()

+ +
+
+ + + + + + + +
Vec4 Vec4::Abs () const
+
+ +

Return the absolute value of each of the components.

+ +
+
+ +

◆ ACos()

+ +
+
+ + + + + +
+ + + + + + + +
Vec4 Vec4::ACos () const
+
+inline
+
+

Calculate the arc cosine for each element of this vector (returns value in the range [0, PI]) Note that all input values will be clamped to the range [-1, 1] and this function will not return NaNs like std::acos

+ +
+
+ +

◆ ASin()

+ +
+
+ + + + + +
+ + + + + + + +
Vec4 Vec4::ASin () const
+
+inline
+
+

Calculate the arc sine for each element of this vector (returns value in the range [-PI / 2, PI / 2]) Note that all input values will be clamped to the range [-1, 1] and this function will not return NaNs like std::asin

+ +
+
+ +

◆ ATan()

+ +
+
+ + + + + +
+ + + + + + + +
Vec4 Vec4::ATan () const
+
+inline
+
+ +

Calculate the arc tangent for each element of this vector (returns value in the range [-PI / 2, PI / 2])

+ +
+
+ +

◆ Dot()

+ +
+
+ + + + + + + + +
float Vec4::Dot (Vec4Arg inV2) const
+
+ +

Dot product.

+ +
+
+ +

◆ DotV()

+ +
+
+ + + + + + + + +
Vec4 Vec4::DotV (Vec4Arg inV2) const
+
+ +

Dot product, returns the dot product in X, Y and Z components.

+ +
+
+ +

◆ GetSign()

+ +
+
+ + + + + + + +
Vec4 Vec4::GetSign () const
+
+ +

Get vector that contains the sign of each element (returns 1.0f if positive, -1.0f if negative)

+ +
+
+ +

◆ GetSignBits()

+ +
+
+ + + + + + + +
int Vec4::GetSignBits () const
+
+ +

Store if X is negative in bit 0, Y in bit 1, Z in bit 2 and W in bit 3.

+ +
+
+ +

◆ GetW()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Vec4::GetW () const
+
+inline
+
+ +
+
+ +

◆ GetX()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Vec4::GetX () const
+
+inline
+
+ +

Get individual components.

+ +
+
+ +

◆ GetY()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Vec4::GetY () const
+
+inline
+
+ +
+
+ +

◆ GetZ()

+ +
+
+ + + + + +
+ + + + + + + +
JPH_INLINE float Vec4::GetZ () const
+
+inline
+
+ +
+
+ +

◆ IsClose()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool Vec4::IsClose (Vec4Arg inV2,
float inMaxDistSq = 1.0e-12f 
) const
+
+ +

Test if two vectors are close.

+ +
+
+ +

◆ IsNaN()

+ +
+
+ + + + + + + +
bool Vec4::IsNaN () const
+
+ +

Test if vector contains NaN elements.

+ +
+
+ +

◆ IsNormalized()

+ +
+
+ + + + + + + + +
bool Vec4::IsNormalized (float inTolerance = 1.0e-6f) const
+
+ +

Test if vector is normalized.

+ +
+
+ +

◆ Length()

+ +
+
+ + + + + + + +
float Vec4::Length () const
+
+ +

Length of vector.

+ +
+
+ +

◆ LengthSq()

+ +
+
+ + + + + + + +
float Vec4::LengthSq () const
+
+ +

Squared length of vector.

+ +
+
+ +

◆ Normalized()

+ +
+
+ + + + + + + +
Vec4 Vec4::Normalized () const
+
+ +

Normalize vector.

+ +
+
+ +

◆ operator!=()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE bool Vec4::operator!= (Vec4Arg inV2) const
+
+inline
+
+ +
+
+ +

◆ operator*() [1/2]

+ +
+
+ + + + + + + + +
Vec4 Vec4::operator* (float inV2) const
+
+ +

Multiply vector with float.

+ +
+
+ +

◆ operator*() [2/2]

+ +
+
+ + + + + + + + +
Vec4 Vec4::operator* (Vec4Arg inV2) const
+
+ +

Multiply two float vectors (component wise)

+ +
+
+ +

◆ operator*=() [1/2]

+ +
+
+ + + + + + + + +
Vec4 & Vec4::operator*= (float inV2)
+
+ +

Multiply vector with float.

+ +
+
+ +

◆ operator*=() [2/2]

+ +
+
+ + + + + + + + +
Vec4 & Vec4::operator*= (Vec4Arg inV2)
+
+ +

Multiply vector with vector.

+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + + + + +
Vec4 Vec4::operator+ (Vec4Arg inV2) const
+
+ +

Add two float vectors (component wise)

+ +
+
+ +

◆ operator+=()

+ +
+
+ + + + + + + + +
Vec4 & Vec4::operator+= (Vec4Arg inV2)
+
+ +

Add two float vectors (component wise)

+ +
+
+ +

◆ operator-() [1/2]

+ +
+
+ + + + + + + +
Vec4 Vec4::operator- () const
+
+ +

Negate.

+ +
+
+ +

◆ operator-() [2/2]

+ +
+
+ + + + + + + + +
Vec4 Vec4::operator- (Vec4Arg inV2) const
+
+ +

Subtract two float vectors (component wise)

+ +
+
+ +

◆ operator-=()

+ +
+
+ + + + + + + + +
Vec4 & Vec4::operator-= (Vec4Arg inV2)
+
+ +

Add two float vectors (component wise)

+ +
+
+ +

◆ operator/() [1/2]

+ +
+
+ + + + + + + + +
Vec4 Vec4::operator/ (float inV2) const
+
+ +

Divide vector by float.

+ +
+
+ +

◆ operator/() [2/2]

+ +
+
+ + + + + + + + +
Vec4 Vec4::operator/ (Vec4Arg inV2) const
+
+ +

Divide (component wise)

+ +
+
+ +

◆ operator/=()

+ +
+
+ + + + + + + + +
Vec4 & Vec4::operator/= (float inV2)
+
+ +

Divide vector by float.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec4 & Vec4::operator= (const Vec4inRHS)
+
+default
+
+ +
+
+ +

◆ operator==()

+ +
+
+ + + + + + + + +
bool Vec4::operator== (Vec4Arg inV2) const
+
+ +

Comparison.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE float & Vec4::operator[] (uint inCoordinate)
+
+inline
+
+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE float Vec4::operator[] (uint inCoordinate) const
+
+inline
+
+ +

Get float component by index.

+ +
+
+ +

◆ Reciprocal()

+ +
+
+ + + + + + + +
Vec4 Vec4::Reciprocal () const
+
+ +

Reciprocal vector (1 / value) for each of the components.

+ +
+
+ +

◆ ReduceMax()

+ +
+
+ + + + + + + +
float Vec4::ReduceMax () const
+
+ +

Get the maximum of X, Y, Z and W.

+ +
+
+ +

◆ ReduceMin()

+ +
+
+ + + + + + + +
float Vec4::ReduceMin () const
+
+ +

Get the minimum of X, Y, Z and W.

+ +
+
+ +

◆ ReinterpretAsInt()

+ +
+
+ + + + + + + +
UVec4 Vec4::ReinterpretAsInt () const
+
+ +

Reinterpret Vec4 as a UVec4 (doesn't change the bits)

+ +
+
+ +

◆ sAnd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec4 Vec4::sAnd (Vec4Arg inV1,
Vec4Arg inV2 
)
+
+static
+
+ +

Logical and (component wise)

+ +
+
+ +

◆ sATan2()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec4 Vec4::sATan2 (Vec4Arg inY,
Vec4Arg inX 
)
+
+inlinestatic
+
+ +

Calculate the arc tangent of y / x using the signs of the arguments to determine the correct quadrant (returns value in the range [-PI, PI])

+ +
+
+ +

◆ sEquals()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 Vec4::sEquals (Vec4Arg inV1,
Vec4Arg inV2 
)
+
+static
+
+ +

Equals (component wise)

+ +
+
+ +

◆ Set()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_INLINE void Vec4::Set (float inX,
float inY,
float inZ,
float inW 
)
+
+inline
+
+ +

Set all components.

+ +
+
+ +

◆ SetW()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Vec4::SetW (float inW)
+
+inline
+
+ +
+
+ +

◆ SetX()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Vec4::SetX (float inX)
+
+inline
+
+ +

Set individual components.

+ +
+
+ +

◆ SetY()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Vec4::SetY (float inY)
+
+inline
+
+ +
+
+ +

◆ SetZ()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE void Vec4::SetZ (float inZ)
+
+inline
+
+ +
+
+ +

◆ sFusedMultiplyAdd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Vec4 Vec4::sFusedMultiplyAdd (Vec4Arg inMul1,
Vec4Arg inMul2,
Vec4Arg inAdd 
)
+
+static
+
+ +

Calculates inMul1 * inMul2 + inAdd.

+ +
+
+ +

◆ sGatherFloat4() [1/2]

+ +
+
+
+template<const int Scale>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static JPH_INLINE Vec4 Vec4::sGatherFloat4 (const float * inBase,
UVec4Arg inOffsets 
)
+
+static
+
+ +

Gather 4 floats from memory at inBase + inOffsets[i] * Scale.

+ +
+
+ +

◆ sGatherFloat4() [2/2]

+ +
+
+
+template<const int Scale>
+ + + + + + + + + + + + + + + + + + +
Vec4 Vec4::sGatherFloat4 (const float * inBase,
UVec4Arg inOffsets 
)
+
+ +
+
+ +

◆ sGreater()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 Vec4::sGreater (Vec4Arg inV1,
Vec4Arg inV2 
)
+
+static
+
+ +

Greater than (component wise)

+ +
+
+ +

◆ sGreaterOrEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 Vec4::sGreaterOrEqual (Vec4Arg inV1,
Vec4Arg inV2 
)
+
+static
+
+ +

Greater than or equal (component wise)

+ +
+
+ +

◆ SinCos()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Vec4::SinCos (Vec4outSin,
Vec4outCos 
) const
+
+inline
+
+ +

Calculate the sine and cosine for each element of this vector (input in radians)

+ +
+
+ +

◆ sLess()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 Vec4::sLess (Vec4Arg inV1,
Vec4Arg inV2 
)
+
+static
+
+ +

Less than (component wise)

+ +
+
+ +

◆ sLessOrEqual()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec4 Vec4::sLessOrEqual (Vec4Arg inV1,
Vec4Arg inV2 
)
+
+static
+
+ +

Less than or equal (component wise)

+ +
+
+ +

◆ sLoadFloat4()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec4 Vec4::sLoadFloat4 (const Float4inV)
+
+static
+
+ +

Load 4 floats from memory.

+ +
+
+ +

◆ sLoadFloat4Aligned()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec4 Vec4::sLoadFloat4Aligned (const Float4inV)
+
+static
+
+ +

Load 4 floats from memory, 16 bytes aligned.

+ +
+
+ +

◆ sMax()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec4 Vec4::sMax (Vec4Arg inV1,
Vec4Arg inV2 
)
+
+static
+
+ +

Return the maximum of each of the components.

+ +
+
+ +

◆ sMin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec4 Vec4::sMin (Vec4Arg inV1,
Vec4Arg inV2 
)
+
+static
+
+ +

Return the minimum value of each of the components.

+ +
+
+ +

◆ sNaN()

+ +
+
+ + + + + +
+ + + + + + + +
Vec4 Vec4::sNaN ()
+
+static
+
+ +

Vector with all NaN's.

+ +
+
+ +

◆ sOr()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec4 Vec4::sOr (Vec4Arg inV1,
Vec4Arg inV2 
)
+
+static
+
+ +

Logical or (component wise)

+ +
+
+ +

◆ SplatW()

+ +
+
+ + + + + + + +
Vec4 Vec4::SplatW () const
+
+ +

Replicate the W component to all components.

+ +
+
+ +

◆ SplatX()

+ +
+
+ + + + + + + +
Vec4 Vec4::SplatX () const
+
+ +

Replicate the X component to all components.

+ +
+
+ +

◆ SplatY()

+ +
+
+ + + + + + + +
Vec4 Vec4::SplatY () const
+
+ +

Replicate the Y component to all components.

+ +
+
+ +

◆ SplatZ()

+ +
+
+ + + + + + + +
Vec4 Vec4::SplatZ () const
+
+ +

Replicate the Z component to all components.

+ +
+
+ +

◆ Sqrt()

+ +
+
+ + + + + + + +
Vec4 Vec4::Sqrt () const
+
+ +

Component wise square root.

+ +
+
+ +

◆ sReplicate()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec4 Vec4::sReplicate (float inV)
+
+static
+
+ +

Replicate inV across all components.

+ +
+
+ +

◆ sSelect()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Vec4 Vec4::sSelect (Vec4Arg inV1,
Vec4Arg inV2,
UVec4Arg inControl 
)
+
+static
+
+ +

Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.

+ +
+
+ +

◆ sSort4()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Vec4::sSort4 (Vec4ioValue,
UVec4ioIndex 
)
+
+static
+
+

Sort the four elements of ioValue and sort ioIndex at the same time. Based on a sorting network: http://en.wikipedia.org/wiki/Sorting_network

+ +
+
+ +

◆ sSort4Reverse()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Vec4::sSort4Reverse (Vec4ioValue,
UVec4ioIndex 
)
+
+static
+
+

Reverse sort the four elements of ioValue (highest first) and sort ioIndex at the same time. Based on a sorting network: http://en.wikipedia.org/wiki/Sorting_network

+ +
+
+ +

◆ StoreFloat4()

+ +
+
+ + + + + + + + +
void Vec4::StoreFloat4 (Float4outV) const
+
+ +

Store 4 floats to memory.

+ +
+
+ +

◆ Swizzle() [1/2]

+ +
+
+
+template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+ + + + + + + +
JPH_INLINE Vec4 Vec4::Swizzle () const
+
+ +

Swizzle the elements in inV.

+ +
+
+ +

◆ Swizzle() [2/2]

+ +
+
+
+template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+ + + + + + + +
Vec4 Vec4::Swizzle () const
+
+ +
+
+ +

◆ sXor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec4 Vec4::sXor (Vec4Arg inV1,
Vec4Arg inV2 
)
+
+static
+
+ +

Logical xor (component wise)

+ +
+
+ +

◆ sZero()

+ +
+
+ + + + + +
+ + + + + + + +
Vec4 Vec4::sZero ()
+
+static
+
+ +

Vector with all zeros.

+ +
+
+ +

◆ Tan()

+ +
+
+ + + + + +
+ + + + + + + +
Vec4 Vec4::Tan () const
+
+inline
+
+ +

Calculate the tangent for each element of this vector (input in radians)

+ +
+
+ +

◆ ToInt()

+ +
+
+ + + + + + + +
UVec4 Vec4::ToInt () const
+
+ +

Convert each component from a float to an int.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ operator*

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_INLINE Vec4 operator* (float inV1,
Vec4Arg inV2 
)
+
+friend
+
+ +

Multiply vector with float.

+ +
+
+ +

◆ operator<<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ostream & operator<< (ostream & inStream,
Vec4Arg inV 
)
+
+friend
+
+ +

To String.

+ +
+
+

Member Data Documentation

+ +

◆ [union]

+ +
+
+ + + + +
union { ... } Vec4
+
+ +
+
+ +

◆ mF32

+ +
+
+ + + + +
float Vec4::mF32[4]
+
+ +
+
+ +

◆ mValue

+ +
+
+ + + + +
Type Vec4::mValue
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vec4.js b/class_vec4.js new file mode 100644 index 000000000..23c9e5a04 --- /dev/null +++ b/class_vec4.js @@ -0,0 +1,70 @@ +var class_vec4 = +[ + [ "Type", "class_vec4.html#ab1cfa85755b56ebed7f92a1360e7006d", null ], + [ "Vec4", "class_vec4.html#a1940f74df37f29ae6cf77e11bb2e46cd", null ], + [ "Vec4", "class_vec4.html#a89dc3aa052aaedf229ad80c875ba625a", null ], + [ "Vec4", "class_vec4.html#a7dcd153f6972570d02a9ec9504ca67bf", null ], + [ "Vec4", "class_vec4.html#a6615f4d5141a41f8c16a10734fc52391", null ], + [ "Vec4", "class_vec4.html#a6843f786e555729f18b3a07dc869029a", null ], + [ "Vec4", "class_vec4.html#aef2bc5c8bacf84051fa67b015a52f7e0", null ], + [ "Abs", "class_vec4.html#a321bcfc691705ad313b11822c8b13332", null ], + [ "ACos", "class_vec4.html#ae56c43bab7d034799def2a0cd588f971", null ], + [ "ASin", "class_vec4.html#a2e71650ce94e6f72312f8820af419db5", null ], + [ "ATan", "class_vec4.html#a0c3d97968c479dcc0a08b98134c95e02", null ], + [ "Dot", "class_vec4.html#ad6b9e883a8a97a115e9d98017c9849a9", null ], + [ "DotV", "class_vec4.html#aac21b2e88ff0e543a11fd1c4e2c743d8", null ], + [ "GetSign", "class_vec4.html#a28b864dcc901d9bd5061b34e9551346c", null ], + [ "GetSignBits", "class_vec4.html#aeccf9a2f8d2742fba6c62d4419cfa5d6", null ], + [ "GetW", "class_vec4.html#a3779a0a05de85b286afeb12f65d08090", null ], + [ "GetX", "class_vec4.html#aad89aa3a9c4215f45c0dbe1fb65830c3", null ], + [ "GetY", "class_vec4.html#aee5a8598cce851f687263d9b3a163989", null ], + [ "GetZ", "class_vec4.html#ae5f0ef8f9fd4deb1359806fac122f309", null ], + [ "IsClose", "class_vec4.html#aad49c5695caae942208e05168c10f086", null ], + [ "IsNaN", "class_vec4.html#ade30350c3a4167764d6b44b43f78e1db", null ], + [ "IsNormalized", "class_vec4.html#a9b1dca50b3e7fb2408064eb24a7196ae", null ], + [ "Length", "class_vec4.html#a4eb731c3e56eb2eab155f38a1c888834", null ], + [ "LengthSq", "class_vec4.html#acff7d4f95f6dcce1d825c0bfb3798c9a", null ], + [ "Normalized", "class_vec4.html#a5e1fefaa806551ca4fae202b62965e93", null ], + [ "operator!=", "class_vec4.html#a66f5baa144587d92d92bd22a311d894e", null ], + [ "operator*", "class_vec4.html#a03151fec0517ac59f467e6400bd2e79d", null ], + [ "operator*", "class_vec4.html#a3b17e39450cc5af4ab75661f2ab76d6f", null ], + [ "operator*=", "class_vec4.html#a914f0d0d23cb0cfc6cc7a58bd5f2ac01", null ], + [ "operator*=", "class_vec4.html#a01e7322229eaf37c8b9479c6e648d221", null ], + [ "operator+", "class_vec4.html#a95761b89f39348a82aa084b9647f8d2a", null ], + [ "operator+=", "class_vec4.html#a443fbe63a61166e98e61af3aac0849ee", null ], + [ "operator-", "class_vec4.html#a1638cef5793ee08b5a62bcb8dd06c17c", null ], + [ "operator-", "class_vec4.html#ae103f6fa940366aed241a62a820d209e", null ], + [ "operator-=", "class_vec4.html#acf0547ac2bda01b7dd5af8f163be7244", null ], + [ "operator/", "class_vec4.html#a373487accbd0489d99738e3455966739", null ], + [ "operator/", "class_vec4.html#a6572e8beb4a23be2a80d78eafd33c981", null ], + [ "operator/=", "class_vec4.html#a9a1e7de84652c605adf934da37d5e00f", null ], + [ "operator=", "class_vec4.html#a25d3f9debf76d58efd3686eee43833ea", null ], + [ "operator==", "class_vec4.html#aa5f9555c7ddf5cdf6648ec64e9fd0c8f", null ], + [ "operator[]", "class_vec4.html#afdf1e42953e1b879b265b9ac02f168c2", null ], + [ "operator[]", "class_vec4.html#a0cf39ae9e73fcf06096e4de57165c528", null ], + [ "Reciprocal", "class_vec4.html#a7cc579856f15646c7507f23619bbfce0", null ], + [ "ReduceMax", "class_vec4.html#a753afc91d4124025cd90e79f3443834f", null ], + [ "ReduceMin", "class_vec4.html#ac1bdb84d53942f36ac3b315ab2451600", null ], + [ "ReinterpretAsInt", "class_vec4.html#a7f8f1783b5b18997ce18f3ed92c34aa2", null ], + [ "Set", "class_vec4.html#aec77ea18f4103929cfd9c6237f597a8a", null ], + [ "SetW", "class_vec4.html#a2817970994c80c1d05c781943955a567", null ], + [ "SetX", "class_vec4.html#aab0192eabef50e920e398cb0b426a002", null ], + [ "SetY", "class_vec4.html#a957c474862f9e846a9ff1dce1a930aeb", null ], + [ "SetZ", "class_vec4.html#a7b9e638ffb2e387617e3d0062c5abfda", null ], + [ "sGatherFloat4", "class_vec4.html#a8b0e5b020ac6f5248315b94216ae6acc", null ], + [ "SinCos", "class_vec4.html#af7e7da5ada5c3e85aac45d62871a867c", null ], + [ "SplatW", "class_vec4.html#aa890d45169669b6845a2770a72166fcf", null ], + [ "SplatX", "class_vec4.html#a02525e7f8473c93268058324115eeb02", null ], + [ "SplatY", "class_vec4.html#a7ea3bcf62a6055b45527f720a51d0005", null ], + [ "SplatZ", "class_vec4.html#a8fcd8e6ed1b4cf308656cca7cf68d5ee", null ], + [ "Sqrt", "class_vec4.html#a904d46bea744b136e86a786a73199fcb", null ], + [ "StoreFloat4", "class_vec4.html#afdfae50fe6a7d86e7d1684fc71be7ed0", null ], + [ "Swizzle", "class_vec4.html#abc7417303ad93e9bbe7506e7cd045724", null ], + [ "Swizzle", "class_vec4.html#af28ba6db045e3e38be66dfdc93c78bda", null ], + [ "Tan", "class_vec4.html#a3769f486156183d3cbecb6a37291fe5c", null ], + [ "ToInt", "class_vec4.html#a37a85cfb52ff5a074877db484772cc63", null ], + [ "operator*", "class_vec4.html#aff8d5cf747d2cfa658ac6bc5822b6434", null ], + [ "operator<<", "class_vec4.html#a4aa88b04387365a68c74880173fabc60", null ], + [ "mF32", "class_vec4.html#a11992deca442bea5ba8c474274f17086", null ], + [ "mValue", "class_vec4.html#ac25b6ecd8f3fa3afe02509da4a155e5c", null ] +]; \ No newline at end of file diff --git a/class_vec8-members.html b/class_vec8-members.html new file mode 100644 index 000000000..ef4355b12 --- /dev/null +++ b/class_vec8-members.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vec8 Member List
+
+
+ +

This is the complete list of members for Vec8, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Abs() constVec8
LowerVec4() constVec8
mF32Vec8
mValueVec8
operator*(Vec8Arg inV2) constVec8
operator*(float inV2) constVec8
operator+(Vec8Arg inV2) constVec8
operator-(Vec8Arg inV2) constVec8
operator/(Vec8Arg inV2) constVec8
operator[](uint inCoordinate) constVec8inline
operator[](uint inCoordinate)Vec8inline
Reciprocal() constVec8
ReduceMin() constVec8
sFusedMultiplyAdd(Vec8Arg inMul1, Vec8Arg inMul2, Vec8Arg inAdd)Vec8static
sGreater(Vec8Arg inV1, Vec8Arg inV2)Vec8static
sLess(Vec8Arg inV1, Vec8Arg inV2)Vec8static
sLoadFloat8(const float *inV)Vec8static
sLoadFloat8Aligned(const float *inV)Vec8static
sMax(Vec8Arg inV1, Vec8Arg inV2)Vec8static
sMin(Vec8Arg inV1, Vec8Arg inV2)Vec8static
sReplicate(float inV)Vec8static
sSelect(Vec8Arg inV1, Vec8Arg inV2, UVec8Arg inControl)Vec8static
sSplatX(Vec4Arg inV)Vec8static
sSplatY(Vec4Arg inV)Vec8static
sSplatZ(Vec4Arg inV)Vec8static
Swizzle() constVec8
Swizzle() constVec8
sZero()Vec8static
UpperVec4() constVec8
Vec8()=defaultVec8
Vec8(const Vec8 &inRHS)=defaultVec8
Vec8(__m256 inRHS)Vec8inline
Vec8(Vec4Arg inLo, Vec4Arg inHi)Vec8
+
+ + + + diff --git a/class_vec8.html b/class_vec8.html new file mode 100644 index 000000000..88cd4f9ab --- /dev/null +++ b/class_vec8.html @@ -0,0 +1,1113 @@ + + + + + + + +Jolt Physics: Vec8 Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Vec8 Class Reference
+
+
+ +

#include <Vec8.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Vec8 ()=default
 Constructor.
 
 Vec8 (const Vec8 &inRHS)=default
 
JPH_INLINE Vec8 (__m256 inRHS)
 
JPH_INLINE Vec8 (Vec4Arg inLo, Vec4Arg inHi)
 Set 256 bit vector from 2 128 bit vectors.
 
JPH_INLINE float operator[] (uint inCoordinate) const
 Get float component by index.
 
JPH_INLINE float & operator[] (uint inCoordinate)
 
JPH_INLINE Vec8 operator* (Vec8Arg inV2) const
 Multiply two float vectors.
 
JPH_INLINE Vec8 operator* (float inV2) const
 Multiply vector by float.
 
JPH_INLINE Vec8 operator+ (Vec8Arg inV2) const
 Add two float vectors.
 
JPH_INLINE Vec8 operator- (Vec8Arg inV2) const
 Subtract two float vectors.
 
JPH_INLINE Vec8 operator/ (Vec8Arg inV2) const
 Divide.
 
JPH_INLINE Vec8 Reciprocal () const
 Reciprocal vector.
 
template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
JPH_INLINE Vec8 Swizzle () const
 256 bit variant of Vec::Swizzle (no cross 128 bit lane swizzle)
 
JPH_INLINE Vec8 Abs () const
 Get absolute value of all components.
 
JPH_INLINE Vec4 LowerVec4 () const
 Fetch the lower 128 bit from a 256 bit variable.
 
JPH_INLINE Vec4 UpperVec4 () const
 Fetch the higher 128 bit from a 256 bit variable.
 
JPH_INLINE float ReduceMin () const
 Get the minimum value of the 8 floats.
 
template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
Vec8 Swizzle () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static JPH_INLINE Vec8 sZero ()
 Vector with all zeros.
 
static JPH_INLINE Vec8 sReplicate (float inV)
 Replicate across all components.
 
static JPH_INLINE Vec8 sSplatX (Vec4Arg inV)
 Replicate the X component of inV to all components.
 
static JPH_INLINE Vec8 sSplatY (Vec4Arg inV)
 Replicate the Y component of inV to all components.
 
static JPH_INLINE Vec8 sSplatZ (Vec4Arg inV)
 Replicate the Z component of inV to all components.
 
static JPH_INLINE Vec8 sFusedMultiplyAdd (Vec8Arg inMul1, Vec8Arg inMul2, Vec8Arg inAdd)
 Calculates inMul1 * inMul2 + inAdd.
 
static JPH_INLINE Vec8 sSelect (Vec8Arg inV1, Vec8Arg inV2, UVec8Arg inControl)
 Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.
 
static JPH_INLINE Vec8 sMin (Vec8Arg inV1, Vec8Arg inV2)
 Component wise min.
 
static JPH_INLINE Vec8 sMax (Vec8Arg inV1, Vec8Arg inV2)
 Component wise max.
 
static JPH_INLINE UVec8 sLess (Vec8Arg inV1, Vec8Arg inV2)
 Less than.
 
static JPH_INLINE UVec8 sGreater (Vec8Arg inV1, Vec8Arg inV2)
 Greater than.
 
static JPH_INLINE Vec8 sLoadFloat8 (const float *inV)
 Load from memory.
 
static JPH_INLINE Vec8 sLoadFloat8Aligned (const float *inV)
 Load 8 floats from memory, 32 bytes aligned.
 
+ + + + + + + + + +

+Public Attributes

union { 
 
   __m256   mValue 
 
   float   mF32 [8] 
 
};  
 
+

Constructor & Destructor Documentation

+ +

◆ Vec8() [1/4]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE Vec8::Vec8 ()
+
+default
+
+ +

Constructor.

+

Intentionally not initialized for performance reasons

+ +
+
+ +

◆ Vec8() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + +
Vec8::Vec8 (const Vec8inRHS)
+
+default
+
+ +
+
+ +

◆ Vec8() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE Vec8::Vec8 (__m256 inRHS)
+
+inline
+
+ +
+
+ +

◆ Vec8() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN Vec8::Vec8 (Vec4Arg inLo,
Vec4Arg inHi 
)
+
+ +

Set 256 bit vector from 2 128 bit vectors.

+ +
+
+

Member Function Documentation

+ +

◆ Abs()

+ +
+
+ + + + + + + +
Vec8 Vec8::Abs () const
+
+ +

Get absolute value of all components.

+ +
+
+ +

◆ LowerVec4()

+ +
+
+ + + + + + + +
Vec4 Vec8::LowerVec4 () const
+
+ +

Fetch the lower 128 bit from a 256 bit variable.

+ +
+
+ +

◆ operator*() [1/2]

+ +
+
+ + + + + + + + +
Vec8 Vec8::operator* (float inV2) const
+
+ +

Multiply vector by float.

+ +
+
+ +

◆ operator*() [2/2]

+ +
+
+ + + + + + + + +
Vec8 Vec8::operator* (Vec8Arg inV2) const
+
+ +

Multiply two float vectors.

+ +
+
+ +

◆ operator+()

+ +
+
+ + + + + + + + +
Vec8 Vec8::operator+ (Vec8Arg inV2) const
+
+ +

Add two float vectors.

+ +
+
+ +

◆ operator-()

+ +
+
+ + + + + + + + +
Vec8 Vec8::operator- (Vec8Arg inV2) const
+
+ +

Subtract two float vectors.

+ +
+
+ +

◆ operator/()

+ +
+
+ + + + + + + + +
Vec8 Vec8::operator/ (Vec8Arg inV2) const
+
+ +

Divide.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE float & Vec8::operator[] (uint inCoordinate)
+
+inline
+
+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_INLINE float Vec8::operator[] (uint inCoordinate) const
+
+inline
+
+ +

Get float component by index.

+ +
+
+ +

◆ Reciprocal()

+ +
+
+ + + + + + + +
Vec8 Vec8::Reciprocal () const
+
+ +

Reciprocal vector.

+ +
+
+ +

◆ ReduceMin()

+ +
+
+ + + + + + + +
float Vec8::ReduceMin () const
+
+ +

Get the minimum value of the 8 floats.

+ +
+
+ +

◆ sFusedMultiplyAdd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Vec8 Vec8::sFusedMultiplyAdd (Vec8Arg inMul1,
Vec8Arg inMul2,
Vec8Arg inAdd 
)
+
+static
+
+ +

Calculates inMul1 * inMul2 + inAdd.

+ +
+
+ +

◆ sGreater()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec8 Vec8::sGreater (Vec8Arg inV1,
Vec8Arg inV2 
)
+
+static
+
+ +

Greater than.

+ +
+
+ +

◆ sLess()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
UVec8 Vec8::sLess (Vec8Arg inV1,
Vec8Arg inV2 
)
+
+static
+
+ +

Less than.

+ +
+
+ +

◆ sLoadFloat8()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec8 Vec8::sLoadFloat8 (const float * inV)
+
+static
+
+ +

Load from memory.

+ +
+
+ +

◆ sLoadFloat8Aligned()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec8 Vec8::sLoadFloat8Aligned (const float * inV)
+
+static
+
+ +

Load 8 floats from memory, 32 bytes aligned.

+ +
+
+ +

◆ sMax()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec8 Vec8::sMax (Vec8Arg inV1,
Vec8Arg inV2 
)
+
+static
+
+ +

Component wise max.

+ +
+
+ +

◆ sMin()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vec8 Vec8::sMin (Vec8Arg inV1,
Vec8Arg inV2 
)
+
+static
+
+ +

Component wise min.

+ +
+
+ +

◆ sReplicate()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec8 Vec8::sReplicate (float inV)
+
+static
+
+ +

Replicate across all components.

+ +
+
+ +

◆ sSelect()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Vec8 Vec8::sSelect (Vec8Arg inV1,
Vec8Arg inV2,
UVec8Arg inControl 
)
+
+static
+
+ +

Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.

+ +
+
+ +

◆ sSplatX()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec8 Vec8::sSplatX (Vec4Arg inV)
+
+static
+
+ +

Replicate the X component of inV to all components.

+ +
+
+ +

◆ sSplatY()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec8 Vec8::sSplatY (Vec4Arg inV)
+
+static
+
+ +

Replicate the Y component of inV to all components.

+ +
+
+ +

◆ sSplatZ()

+ +
+
+ + + + + +
+ + + + + + + + +
Vec8 Vec8::sSplatZ (Vec4Arg inV)
+
+static
+
+ +

Replicate the Z component of inV to all components.

+ +
+
+ +

◆ Swizzle() [1/2]

+ +
+
+
+template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+ + + + + + + +
JPH_INLINE Vec8 Vec8::Swizzle () const
+
+ +

256 bit variant of Vec::Swizzle (no cross 128 bit lane swizzle)

+ +
+
+ +

◆ Swizzle() [2/2]

+ +
+
+
+template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW>
+ + + + + + + +
Vec8 Vec8::Swizzle () const
+
+ +
+
+ +

◆ sZero()

+ +
+
+ + + + + +
+ + + + + + + +
Vec8 Vec8::sZero ()
+
+static
+
+ +

Vector with all zeros.

+ +
+
+ +

◆ UpperVec4()

+ +
+
+ + + + + + + +
Vec4 Vec8::UpperVec4 () const
+
+ +

Fetch the higher 128 bit from a 256 bit variable.

+ +
+
+

Member Data Documentation

+ +

◆ [union]

+ +
+
+ + + + +
union { ... } Vec8
+
+ +
+
+ +

◆ mF32

+ +
+
+ + + + +
float Vec8::mF32[8]
+
+ +
+
+ +

◆ mValue

+ +
+
+ + + + +
__m256 Vec8::mValue
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vec8.js b/class_vec8.js new file mode 100644 index 000000000..b893e5601 --- /dev/null +++ b/class_vec8.js @@ -0,0 +1,23 @@ +var class_vec8 = +[ + [ "Vec8", "class_vec8.html#abbdb68a45ef818a365f358803a2d5820", null ], + [ "Vec8", "class_vec8.html#a3af12a0d40c2e64712a16b6e5d596eac", null ], + [ "Vec8", "class_vec8.html#a87dec3a15cde53d9ab439daa4ffe95d3", null ], + [ "Vec8", "class_vec8.html#a535af944b1f32c306fb37a393ec16bd4", null ], + [ "Abs", "class_vec8.html#a606b5595b25bd34a37820541b9e14c3e", null ], + [ "LowerVec4", "class_vec8.html#ac6b079a5fb892087e7f29eb49d8de0ed", null ], + [ "operator*", "class_vec8.html#a5b527ce885b1b22c56173d4e48425bb3", null ], + [ "operator*", "class_vec8.html#a8c58ab6a636af411c1aa0484c2378f0c", null ], + [ "operator+", "class_vec8.html#aefa8b1857e93a3e0afc29f5ffc2eed8e", null ], + [ "operator-", "class_vec8.html#a4eabbb36d0b5c18dd521daa41d202b3c", null ], + [ "operator/", "class_vec8.html#a7ba524244b34059777fa93a63d551fda", null ], + [ "operator[]", "class_vec8.html#ad43ee4cb80f186dcdd2f0a71fc64fe13", null ], + [ "operator[]", "class_vec8.html#ac1997a67bd8996f29bf165b26f45ab06", null ], + [ "Reciprocal", "class_vec8.html#a246f5b59817c707715bd69d292e7610f", null ], + [ "ReduceMin", "class_vec8.html#a045d854d2e5034a8fdd06b1946143c73", null ], + [ "Swizzle", "class_vec8.html#afa43e457f8368acb7b249d9f13e484eb", null ], + [ "Swizzle", "class_vec8.html#a7e104be6684316118f94a6a0f2a8f488", null ], + [ "UpperVec4", "class_vec8.html#a176799d71ae225bcdc87f3c9ed821a4d", null ], + [ "mF32", "class_vec8.html#a50640aa38e3cd80153dbac7f98fe111b", null ], + [ "mValue", "class_vec8.html#ae0db0da7d3c6ce86e916b3e31825c4e0", null ] +]; \ No newline at end of file diff --git a/class_vector-members.html b/class_vector-members.html new file mode 100644 index 000000000..53c5c9a86 --- /dev/null +++ b/class_vector-members.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vector< Rows > Member List
+
+
+ +

This is the complete list of members for Vector< Rows >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CopyPart(const OtherVector &inV, uint inSourceRow, uint inNumRows, uint inDestRow)Vector< Rows >inline
Dot(const Vector &inV2) constVector< Rows >inline
GetRows() constVector< Rows >inline
IsClose(const Vector &inV2, float inMaxDistSq=1.0e-12f)Vector< Rows >inline
IsNormalized(float inToleranceSq=1.0e-6f)Vector< Rows >inline
IsZero() constVector< Rows >inline
Length() constVector< Rows >inline
LengthSq() constVector< Rows >inline
mF32Vector< Rows >
Normalized() constVector< Rows >inline
operator!=(const Vector &inV2) constVector< Rows >inline
operator*(const float inV2) constVector< Rows >inline
operator*Vector< Rows >friend
operator*=(const float inV2)Vector< Rows >inline
operator+(const Vector &inV2) constVector< Rows >inline
operator+=(const Vector &inV2)Vector< Rows >inline
operator-() constVector< Rows >inline
operator-(const Vector &inV2) constVector< Rows >inline
operator-=(const Vector &inV2)Vector< Rows >inline
operator/(float inV2) constVector< Rows >inline
operator/=(float inV2)Vector< Rows >inline
operator<<Vector< Rows >friend
operator=(const Vector &)=defaultVector< Rows >inline
operator==(const Vector &inV2) constVector< Rows >inline
operator[](uint inCoordinate) constVector< Rows >inline
operator[](uint inCoordinate)Vector< Rows >inline
SetZero()Vector< Rows >inline
sZero()Vector< Rows >inlinestatic
Vector()=defaultVector< Rows >inline
Vector(const Vector &)=defaultVector< Rows >inline
+
+ + + + diff --git a/class_vector.html b/class_vector.html new file mode 100644 index 000000000..31fd4e52d --- /dev/null +++ b/class_vector.html @@ -0,0 +1,1145 @@ + + + + + + + +Jolt Physics: Vector< Rows > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Vector< Rows > Class Template Reference
+
+
+ +

Templatized vector class. + More...

+ +

#include <Vector.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Vector ()=default
 Constructor.
 
 Vector (const Vector &)=default
 
uint GetRows () const
 Dimensions.
 
void SetZero ()
 Vector with all zeros.
 
template<class OtherVector >
void CopyPart (const OtherVector &inV, uint inSourceRow, uint inNumRows, uint inDestRow)
 Copy a (part) of another vector into this vector.
 
float operator[] (uint inCoordinate) const
 Get float component by index.
 
float & operator[] (uint inCoordinate)
 
bool operator== (const Vector &inV2) const
 Comparison.
 
bool operator!= (const Vector &inV2) const
 
bool IsZero () const
 Test if vector consists of all zeros.
 
bool IsClose (const Vector &inV2, float inMaxDistSq=1.0e-12f)
 Test if two vectors are close to each other.
 
Vectoroperator= (const Vector &)=default
 Assignment.
 
Vector operator* (const float inV2) const
 Multiply vector with float.
 
Vectoroperator*= (const float inV2)
 
Vector operator/ (float inV2) const
 Divide vector by float.
 
Vectoroperator/= (float inV2)
 
Vector operator+ (const Vector &inV2) const
 Add two float vectors (component wise)
 
Vectoroperator+= (const Vector &inV2)
 
Vector operator- () const
 Negate.
 
Vector operator- (const Vector &inV2) const
 Subtract two float vectors (component wise)
 
Vectoroperator-= (const Vector &inV2)
 
float Dot (const Vector &inV2) const
 Dot product.
 
float LengthSq () const
 Squared length of vector.
 
float Length () const
 Length of vector.
 
bool IsNormalized (float inToleranceSq=1.0e-6f)
 Check if vector is normalized.
 
Vector Normalized () const
 Normalize vector.
 
+ + + +

+Static Public Member Functions

static Vector sZero ()
 
+ + + +

+Public Attributes

float mF32 [Rows]
 
+ + + + + + + +

+Friends

Vector operator* (const float inV1, const Vector &inV2)
 Multiply vector with float.
 
ostream & operator<< (ostream &inStream, const Vector &inV)
 To String.
 
+

Detailed Description

+
template<uint Rows>
+class Vector< Rows >

Templatized vector class.

+

Constructor & Destructor Documentation

+ +

◆ Vector() [1/2]

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + +
Vector< Rows >::Vector ()
+
+inlinedefault
+
+ +

Constructor.

+ +
+
+ +

◆ Vector() [2/2]

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
Vector< Rows >::Vector (const Vector< Rows > & )
+
+inlinedefault
+
+ +
+
+

Member Function Documentation

+ +

◆ CopyPart()

+ +
+
+
+template<uint Rows>
+
+template<class OtherVector >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void Vector< Rows >::CopyPart (const OtherVector< Rows > & inV,
uint inSourceRow,
uint inNumRows,
uint inDestRow 
)
+
+inline
+
+ +

Copy a (part) of another vector into this vector.

+ +
+
+ +

◆ Dot()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
float Vector< Rows >::Dot (const Vector< Rows > & inV2) const
+
+inline
+
+ +

Dot product.

+ +
+
+ +

◆ GetRows()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + +
uint Vector< Rows >::GetRows () const
+
+inline
+
+ +

Dimensions.

+ +
+
+ +

◆ IsClose()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool Vector< Rows >::IsClose (const Vector< Rows > & inV2,
float inMaxDistSq = 1.0e-12f 
)
+
+inline
+
+ +

Test if two vectors are close to each other.

+ +
+
+ +

◆ IsNormalized()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
bool Vector< Rows >::IsNormalized (float inToleranceSq = 1.0e-6f)
+
+inline
+
+ +

Check if vector is normalized.

+ +
+
+ +

◆ IsZero()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + +
bool Vector< Rows >::IsZero () const
+
+inline
+
+ +

Test if vector consists of all zeros.

+ +
+
+ +

◆ Length()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + +
float Vector< Rows >::Length () const
+
+inline
+
+ +

Length of vector.

+ +
+
+ +

◆ LengthSq()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + +
float Vector< Rows >::LengthSq () const
+
+inline
+
+ +

Squared length of vector.

+ +
+
+ +

◆ Normalized()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + +
Vector Vector< Rows >::Normalized () const
+
+inline
+
+ +

Normalize vector.

+ +
+
+ +

◆ operator!=()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
bool Vector< Rows >::operator!= (const Vector< Rows > & inV2) const
+
+inline
+
+ +
+
+ +

◆ operator*()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
Vector Vector< Rows >::operator* (const float inV2) const
+
+inline
+
+ +

Multiply vector with float.

+ +
+
+ +

◆ operator*=()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
Vector & Vector< Rows >::operator*= (const float inV2)
+
+inline
+
+ +
+
+ +

◆ operator+()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
Vector Vector< Rows >::operator+ (const Vector< Rows > & inV2) const
+
+inline
+
+ +

Add two float vectors (component wise)

+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
Vector & Vector< Rows >::operator+= (const Vector< Rows > & inV2)
+
+inline
+
+ +
+
+ +

◆ operator-() [1/2]

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + +
Vector Vector< Rows >::operator- () const
+
+inline
+
+ +

Negate.

+ +
+
+ +

◆ operator-() [2/2]

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
Vector Vector< Rows >::operator- (const Vector< Rows > & inV2) const
+
+inline
+
+ +

Subtract two float vectors (component wise)

+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
Vector & Vector< Rows >::operator-= (const Vector< Rows > & inV2)
+
+inline
+
+ +
+
+ +

◆ operator/()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
Vector Vector< Rows >::operator/ (float inV2) const
+
+inline
+
+ +

Divide vector by float.

+ +
+
+ +

◆ operator/=()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
Vector & Vector< Rows >::operator/= (float inV2)
+
+inline
+
+ +
+
+ +

◆ operator=()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
Vector & Vector< Rows >::operator= (const Vector< Rows > & )
+
+inlinedefault
+
+ +

Assignment.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
bool Vector< Rows >::operator== (const Vector< Rows > & inV2) const
+
+inline
+
+ +

Comparison.

+ +
+
+ +

◆ operator[]() [1/2]

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
float & Vector< Rows >::operator[] (uint inCoordinate)
+
+inline
+
+ +
+
+ +

◆ operator[]() [2/2]

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + +
float Vector< Rows >::operator[] (uint inCoordinate) const
+
+inline
+
+ +

Get float component by index.

+ +
+
+ +

◆ SetZero()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + +
void Vector< Rows >::SetZero ()
+
+inline
+
+ +

Vector with all zeros.

+ +
+
+ +

◆ sZero()

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + +
static Vector Vector< Rows >::sZero ()
+
+inlinestatic
+
+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ operator*

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Vector operator* (const float inV1,
const Vector< Rows > & inV2 
)
+
+friend
+
+ +

Multiply vector with float.

+ +
+
+ +

◆ operator<<

+ +
+
+
+template<uint Rows>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ostream & operator<< (ostream & inStream,
const Vector< Rows > & inV 
)
+
+friend
+
+ +

To String.

+ +
+
+

Member Data Documentation

+ +

◆ mF32

+ +
+
+
+template<uint Rows>
+ + + + +
float Vector< Rows >::mF32[Rows]
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_vector.js b/class_vector.js new file mode 100644 index 000000000..0569709dd --- /dev/null +++ b/class_vector.js @@ -0,0 +1,32 @@ +var class_vector = +[ + [ "Vector", "class_vector.html#acdfe438fc30b6e340cfecfd8bb04ab19", null ], + [ "Vector", "class_vector.html#a9a11f44af42ffd08e2eb58b1fd38c613", null ], + [ "CopyPart", "class_vector.html#ac3bd9feb76f783d2e4168f2cf9fb3b2a", null ], + [ "Dot", "class_vector.html#ad187891cbfdaad7c7b9ed6d496ef0606", null ], + [ "GetRows", "class_vector.html#a8c1387fdaa60b9569f5e9acb1363b7fb", null ], + [ "IsClose", "class_vector.html#af792d9902858de9e315caa8eddd89f29", null ], + [ "IsNormalized", "class_vector.html#a5420a12386bf0d4cdba1c3605929b6ba", null ], + [ "IsZero", "class_vector.html#ab1368364228755bfe9e64af3654ea995", null ], + [ "Length", "class_vector.html#a83748e43a3d85e50140c24f0aa093cb9", null ], + [ "LengthSq", "class_vector.html#afa80dcde530acc7b7911526d921b60e8", null ], + [ "Normalized", "class_vector.html#a0bd36049fd0025624665df06e1e390ff", null ], + [ "operator!=", "class_vector.html#a97ea23f0596e27b87424d91cd79e19da", null ], + [ "operator*", "class_vector.html#a13077d539d6cac0b3415c96c54256a09", null ], + [ "operator*=", "class_vector.html#a5d3e058866ab4898fd9d1b6860159303", null ], + [ "operator+", "class_vector.html#a31f30c627ca27a20be651946fa685789", null ], + [ "operator+=", "class_vector.html#adc8030b84f60c2ddbc1ddf981f5f8d6f", null ], + [ "operator-", "class_vector.html#a3548d197b9099a6ce78bb9805f6b08ed", null ], + [ "operator-", "class_vector.html#accad08b149fe8c9527974434f1620032", null ], + [ "operator-=", "class_vector.html#a75eedde4d36c47ec408dc454dcf236a7", null ], + [ "operator/", "class_vector.html#a220efce0a2765fca904fef087b9d9e81", null ], + [ "operator/=", "class_vector.html#aeb9aa93e33f09f1dedd41c4768f8f584", null ], + [ "operator=", "class_vector.html#a89f9252fff5149df7ee3bbee4cc7dfce", null ], + [ "operator==", "class_vector.html#afb6e90055ff4de9274867a43c8a569c9", null ], + [ "operator[]", "class_vector.html#a32ee1f49f9b9b9cc21f202e93aa92344", null ], + [ "operator[]", "class_vector.html#a4eaa88a67fe83953b5ac8d472f4e9ff5", null ], + [ "SetZero", "class_vector.html#a06ffa8aa3d40e7c93dde19725e77ff3a", null ], + [ "operator*", "class_vector.html#a4629e622d2f5cabbc8bee88e8ed448f2", null ], + [ "operator<<", "class_vector.html#adb80018fc58d6f0da4b2a3bb92fe3c03", null ], + [ "mF32", "class_vector.html#a9068b99f1e6ca351876bea81de170b29", null ] +]; \ No newline at end of file diff --git a/class_vehicle_anti_roll_bar-members.html b/class_vehicle_anti_roll_bar-members.html new file mode 100644 index 000000000..7a7b75a41 --- /dev/null +++ b/class_vehicle_anti_roll_bar-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleAntiRollBar Member List
+
+
+ +

This is the complete list of members for VehicleAntiRollBar, including all inherited members.

+ + + + + + +
mLeftWheelVehicleAntiRollBar
mRightWheelVehicleAntiRollBar
mStiffnessVehicleAntiRollBar
RestoreBinaryState(StreamIn &inStream)VehicleAntiRollBar
SaveBinaryState(StreamOut &inStream) constVehicleAntiRollBar
+
+ + + + diff --git a/class_vehicle_anti_roll_bar.html b/class_vehicle_anti_roll_bar.html new file mode 100644 index 000000000..b9f068e4f --- /dev/null +++ b/class_vehicle_anti_roll_bar.html @@ -0,0 +1,238 @@ + + + + + + + +Jolt Physics: VehicleAntiRollBar Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleAntiRollBar Class Reference
+
+
+ +

#include <VehicleAntiRollBar.h>

+ + + + + + + + +

+Public Member Functions

void SaveBinaryState (StreamOut &inStream) const
 Saves the contents in binary form to inStream.
 
void RestoreBinaryState (StreamIn &inStream)
 Restores the contents in binary form to inStream.
 
+ + + + + + + + + + +

+Public Attributes

int mLeftWheel = 0
 Index (in mWheels) that represents the left wheel of this anti-rollbar.
 
int mRightWheel = 1
 Index (in mWheels) that represents the right wheel of this anti-rollbar.
 
float mStiffness = 1000.0f
 Stiffness (spring constant in N/m) of anti rollbar, can be 0 to disable the anti-rollbar.
 
+

Detailed Description

+

An anti rollbar is a stiff spring that connects two wheels to reduce the amount of roll the vehicle makes in sharp corners See: https://en.wikipedia.org/wiki/Anti-roll_bar

+

Member Function Documentation

+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void VehicleAntiRollBar::RestoreBinaryState (StreamIninStream)
+
+ +

Restores the contents in binary form to inStream.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void VehicleAntiRollBar::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the contents in binary form to inStream.

+ +
+
+

Member Data Documentation

+ +

◆ mLeftWheel

+ +
+
+ + + + +
int VehicleAntiRollBar::mLeftWheel = 0
+
+ +

Index (in mWheels) that represents the left wheel of this anti-rollbar.

+ +
+
+ +

◆ mRightWheel

+ +
+
+ + + + +
int VehicleAntiRollBar::mRightWheel = 1
+
+ +

Index (in mWheels) that represents the right wheel of this anti-rollbar.

+ +
+
+ +

◆ mStiffness

+ +
+
+ + + + +
float VehicleAntiRollBar::mStiffness = 1000.0f
+
+ +

Stiffness (spring constant in N/m) of anti rollbar, can be 0 to disable the anti-rollbar.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_anti_roll_bar.js b/class_vehicle_anti_roll_bar.js new file mode 100644 index 000000000..59bcbdc30 --- /dev/null +++ b/class_vehicle_anti_roll_bar.js @@ -0,0 +1,8 @@ +var class_vehicle_anti_roll_bar = +[ + [ "RestoreBinaryState", "class_vehicle_anti_roll_bar.html#acf4e180f4337014b2ce4e0ddcd83a7fc", null ], + [ "SaveBinaryState", "class_vehicle_anti_roll_bar.html#adef2c8bc1bce0835c229f03bafcf6c97", null ], + [ "mLeftWheel", "class_vehicle_anti_roll_bar.html#ae4afc75ffe5f9652d5539064069d4271", null ], + [ "mRightWheel", "class_vehicle_anti_roll_bar.html#a1c60e3cb529234e906aba43dacd04271", null ], + [ "mStiffness", "class_vehicle_anti_roll_bar.html#a834b3f779e7beeb0cc7109d74bcf54b7", null ] +]; \ No newline at end of file diff --git a/class_vehicle_collision_tester-members.html b/class_vehicle_collision_tester-members.html new file mode 100644 index 000000000..716eb258f --- /dev/null +++ b/class_vehicle_collision_tester-members.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleCollisionTester Member List
+
+
+ +

This is the complete list of members for VehicleCollisionTester, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< VehicleCollisionTester >inline
cEmbeddedRefTarget< VehicleCollisionTester >protectedstatic
Collide(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const =0VehicleCollisionTesterpure virtual
GetBodyFilter() constVehicleCollisionTesterinline
GetBroadPhaseLayerFilter() constVehicleCollisionTesterinline
GetObjectLayer() constVehicleCollisionTesterinline
GetObjectLayerFilter() constVehicleCollisionTesterinline
GetRefCount() constRefTarget< VehicleCollisionTester >inline
mBodyFilterVehicleCollisionTesterprotected
mBroadPhaseLayerFilterVehicleCollisionTesterprotected
mObjectLayerVehicleCollisionTesterprotected
mObjectLayerFilterVehicleCollisionTesterprotected
mRefCountRefTarget< VehicleCollisionTester >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< VehicleCollisionTester >::operator=(const RefTarget &)RefTarget< VehicleCollisionTester >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PredictContactProperties(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const =0VehicleCollisionTesterpure virtual
RefTarget()=defaultRefTarget< VehicleCollisionTester >inline
RefTarget(const RefTarget &)RefTarget< VehicleCollisionTester >inline
Release() constRefTarget< VehicleCollisionTester >inline
SetBodyFilter(const BodyFilter *inFilter)VehicleCollisionTesterinline
SetBroadPhaseLayerFilter(const BroadPhaseLayerFilter *inFilter)VehicleCollisionTesterinline
SetEmbedded() constRefTarget< VehicleCollisionTester >inline
SetObjectLayer(ObjectLayer inObjectLayer)VehicleCollisionTesterinline
SetObjectLayerFilter(const ObjectLayerFilter *inFilter)VehicleCollisionTesterinline
sInternalGetRefCountOffset()RefTarget< VehicleCollisionTester >inlinestatic
VehicleCollisionTester()=defaultVehicleCollisionTester
VehicleCollisionTester(ObjectLayer inObjectLayer)VehicleCollisionTesterinlineexplicit
~RefTarget()RefTarget< VehicleCollisionTester >inline
~VehicleCollisionTester()=defaultVehicleCollisionTestervirtual
+
+ + + + diff --git a/class_vehicle_collision_tester.html b/class_vehicle_collision_tester.html new file mode 100644 index 000000000..2f2895617 --- /dev/null +++ b/class_vehicle_collision_tester.html @@ -0,0 +1,832 @@ + + + + + + + +Jolt Physics: VehicleCollisionTester Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleCollisionTester Class Referenceabstract
+
+
+ +

Class that does collision detection between wheels and ground. + More...

+ +

#include <VehicleCollisionTester.h>

+
+Inheritance diagram for VehicleCollisionTester:
+
+
+ + +RefTarget< VehicleCollisionTester > +NonCopyable +VehicleCollisionTesterCastCylinder +VehicleCollisionTesterCastSphere +VehicleCollisionTesterRay + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE VehicleCollisionTester ()=default
 Constructors.
 
 VehicleCollisionTester (ObjectLayer inObjectLayer)
 
virtual ~VehicleCollisionTester ()=default
 Virtual destructor.
 
ObjectLayer GetObjectLayer () const
 Object layer to use for collision detection, this is used when the filters are not overridden.
 
void SetObjectLayer (ObjectLayer inObjectLayer)
 
void SetBroadPhaseLayerFilter (const BroadPhaseLayerFilter *inFilter)
 Access to the broad phase layer filter, when set this overrides the object layer supplied in the constructor.
 
const BroadPhaseLayerFilterGetBroadPhaseLayerFilter () const
 
void SetObjectLayerFilter (const ObjectLayerFilter *inFilter)
 Access to the object layer filter, when set this overrides the object layer supplied in the constructor.
 
const ObjectLayerFilterGetObjectLayerFilter () const
 
void SetBodyFilter (const BodyFilter *inFilter)
 Access to the body filter, when set this overrides the default filter that filters out the vehicle body.
 
const BodyFilterGetBodyFilter () const
 
virtual bool Collide (PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const =0
 
virtual void PredictContactProperties (PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const =0
 
- Public Member Functions inherited from RefTarget< VehicleCollisionTester >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + +

+Protected Attributes

const BroadPhaseLayerFiltermBroadPhaseLayerFilter = nullptr
 
const ObjectLayerFiltermObjectLayerFilter = nullptr
 
const BodyFiltermBodyFilter = nullptr
 
ObjectLayer mObjectLayer = cObjectLayerInvalid
 
- Protected Attributes inherited from RefTarget< VehicleCollisionTester >
atomic< uint32mRefCount
 Current reference count.
 
+ + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< VehicleCollisionTester >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Static Protected Attributes inherited from RefTarget< VehicleCollisionTester >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Class that does collision detection between wheels and ground.

+

Constructor & Destructor Documentation

+ +

◆ VehicleCollisionTester() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
JPH_OVERRIDE_NEW_DELETE VehicleCollisionTester::VehicleCollisionTester ()
+
+default
+
+ +

Constructors.

+ +
+
+ +

◆ VehicleCollisionTester() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
VehicleCollisionTester::VehicleCollisionTester (ObjectLayer inObjectLayer)
+
+inlineexplicit
+
+ +
+
+ +

◆ ~VehicleCollisionTester()

+ +
+
+ + + + + +
+ + + + + + + +
virtual VehicleCollisionTester::~VehicleCollisionTester ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ Collide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual bool VehicleCollisionTester::Collide (PhysicsSysteminPhysicsSystem,
const VehicleConstraintinVehicleConstraint,
uint inWheelIndex,
RVec3Arg inOrigin,
Vec3Arg inDirection,
const BodyIDinVehicleBodyID,
Body *& outBody,
SubShapeIDoutSubShapeID,
RVec3outContactPosition,
Vec3outContactNormal,
float & outSuspensionLength 
) const
+
+pure virtual
+
+

Do a collision test with the world

Parameters
+ + + + + + + + + + + + +
inPhysicsSystemThe physics system that should be tested against
inVehicleConstraintThe vehicle constraint
inWheelIndexIndex of the wheel that we're testing collision for
inOriginOrigin for the test, corresponds to the world space position for the suspension attachment point
inDirectionDirection for the test (unit vector, world space)
inVehicleBodyIDThis body should be filtered out during collision detection to avoid self collisions
outBodyBody that the wheel collided with
outSubShapeIDSub shape ID that the wheel collided with
outContactPositionContact point between wheel and floor, in world space
outContactNormalContact normal between wheel and floor, pointing away from the floor
outSuspensionLengthNew length of the suspension [0, inSuspensionMaxLength]
+
+
+
Returns
True when collision found, false if not
+ +

Implemented in VehicleCollisionTesterRay, VehicleCollisionTesterCastSphere, and VehicleCollisionTesterCastCylinder.

+ +
+
+ +

◆ GetBodyFilter()

+ +
+
+ + + + + +
+ + + + + + + +
const BodyFilter * VehicleCollisionTester::GetBodyFilter () const
+
+inline
+
+ +
+
+ +

◆ GetBroadPhaseLayerFilter()

+ +
+
+ + + + + +
+ + + + + + + +
const BroadPhaseLayerFilter * VehicleCollisionTester::GetBroadPhaseLayerFilter () const
+
+inline
+
+ +
+
+ +

◆ GetObjectLayer()

+ +
+
+ + + + + +
+ + + + + + + +
ObjectLayer VehicleCollisionTester::GetObjectLayer () const
+
+inline
+
+ +

Object layer to use for collision detection, this is used when the filters are not overridden.

+ +
+
+ +

◆ GetObjectLayerFilter()

+ +
+
+ + + + + +
+ + + + + + + +
const ObjectLayerFilter * VehicleCollisionTester::GetObjectLayerFilter () const
+
+inline
+
+ +
+
+ +

◆ PredictContactProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void VehicleCollisionTester::PredictContactProperties (PhysicsSysteminPhysicsSystem,
const VehicleConstraintinVehicleConstraint,
uint inWheelIndex,
RVec3Arg inOrigin,
Vec3Arg inDirection,
const BodyIDinVehicleBodyID,
Body *& ioBody,
SubShapeIDioSubShapeID,
RVec3ioContactPosition,
Vec3ioContactNormal,
float & ioSuspensionLength 
) const
+
+pure virtual
+
+

Do a cheap contact properties prediction based on the contact properties from the last collision test (provided as input parameters)

Parameters
+ + + + + + + + + + + + +
inPhysicsSystemThe physics system that should be tested against
inVehicleConstraintThe vehicle constraint
inWheelIndexIndex of the wheel that we're testing collision for
inOriginOrigin for the test, corresponds to the world space position for the suspension attachment point
inDirectionDirection for the test (unit vector, world space)
inVehicleBodyIDThe body ID for the vehicle itself
ioBodyBody that the wheel previously collided with
ioSubShapeIDSub shape ID that the wheel collided with during the last check
ioContactPositionContact point between wheel and floor during the last check, in world space
ioContactNormalContact normal between wheel and floor during the last check, pointing away from the floor
ioSuspensionLengthNew length of the suspension [0, inSuspensionMaxLength]
+
+
+ +

Implemented in VehicleCollisionTesterRay, VehicleCollisionTesterCastSphere, and VehicleCollisionTesterCastCylinder.

+ +
+
+ +

◆ SetBodyFilter()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleCollisionTester::SetBodyFilter (const BodyFilterinFilter)
+
+inline
+
+ +

Access to the body filter, when set this overrides the default filter that filters out the vehicle body.

+ +
+
+ +

◆ SetBroadPhaseLayerFilter()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleCollisionTester::SetBroadPhaseLayerFilter (const BroadPhaseLayerFilterinFilter)
+
+inline
+
+ +

Access to the broad phase layer filter, when set this overrides the object layer supplied in the constructor.

+ +
+
+ +

◆ SetObjectLayer()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleCollisionTester::SetObjectLayer (ObjectLayer inObjectLayer)
+
+inline
+
+ +
+
+ +

◆ SetObjectLayerFilter()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleCollisionTester::SetObjectLayerFilter (const ObjectLayerFilterinFilter)
+
+inline
+
+ +

Access to the object layer filter, when set this overrides the object layer supplied in the constructor.

+ +
+
+

Member Data Documentation

+ +

◆ mBodyFilter

+ +
+
+ + + + + +
+ + + + +
const BodyFilter* VehicleCollisionTester::mBodyFilter = nullptr
+
+protected
+
+ +
+
+ +

◆ mBroadPhaseLayerFilter

+ +
+
+ + + + + +
+ + + + +
const BroadPhaseLayerFilter* VehicleCollisionTester::mBroadPhaseLayerFilter = nullptr
+
+protected
+
+ +
+
+ +

◆ mObjectLayer

+ +
+
+ + + + + +
+ + + + +
ObjectLayer VehicleCollisionTester::mObjectLayer = cObjectLayerInvalid
+
+protected
+
+ +
+
+ +

◆ mObjectLayerFilter

+ +
+
+ + + + + +
+ + + + +
const ObjectLayerFilter* VehicleCollisionTester::mObjectLayerFilter = nullptr
+
+protected
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_vehicle_collision_tester.js b/class_vehicle_collision_tester.js new file mode 100644 index 000000000..61f836415 --- /dev/null +++ b/class_vehicle_collision_tester.js @@ -0,0 +1,20 @@ +var class_vehicle_collision_tester = +[ + [ "VehicleCollisionTester", "class_vehicle_collision_tester.html#a69adc68284ed5dae7c4b5a1ca7568aca", null ], + [ "VehicleCollisionTester", "class_vehicle_collision_tester.html#a787dc72b49f3d3681d41785b54f9d33f", null ], + [ "~VehicleCollisionTester", "class_vehicle_collision_tester.html#a7c6e0505cf0d7741f501a03ac3228bb6", null ], + [ "Collide", "class_vehicle_collision_tester.html#a2af9d0d5ab81d3321133ec0b408752b7", null ], + [ "GetBodyFilter", "class_vehicle_collision_tester.html#a939d34aac9aaf7f481c4959784597605", null ], + [ "GetBroadPhaseLayerFilter", "class_vehicle_collision_tester.html#aab2fe07b1c74654b925b64409d5a6210", null ], + [ "GetObjectLayer", "class_vehicle_collision_tester.html#a168d396a1e2431a984b36e83c2affe07", null ], + [ "GetObjectLayerFilter", "class_vehicle_collision_tester.html#ae02f257dee03c198b8ae2acd26143236", null ], + [ "PredictContactProperties", "class_vehicle_collision_tester.html#a3e8069ca50a846d4984a99314ecc3aa6", null ], + [ "SetBodyFilter", "class_vehicle_collision_tester.html#a46d45f0e1c06f4c8b08aba185e9279ac", null ], + [ "SetBroadPhaseLayerFilter", "class_vehicle_collision_tester.html#aa70cb825859a651d7693b78a906eee52", null ], + [ "SetObjectLayer", "class_vehicle_collision_tester.html#af09e06e5ebd7ea9311d657f14725dd5e", null ], + [ "SetObjectLayerFilter", "class_vehicle_collision_tester.html#aea6c61dd5cc33e4e27ec5c5a3aa043bc", null ], + [ "mBodyFilter", "class_vehicle_collision_tester.html#a53aceef23d5a984d0d1bdc05ecd83844", null ], + [ "mBroadPhaseLayerFilter", "class_vehicle_collision_tester.html#a4b2a65db4174dffb7dc46ee44f7b6ab0", null ], + [ "mObjectLayer", "class_vehicle_collision_tester.html#a2c9666896a28a8aa899171dfb1bf4a4e", null ], + [ "mObjectLayerFilter", "class_vehicle_collision_tester.html#a1fbc50043ae7ae56b6cd96a4e0d82a32", null ] +]; \ No newline at end of file diff --git a/class_vehicle_collision_tester.png b/class_vehicle_collision_tester.png new file mode 100644 index 000000000..d50d1ff70 Binary files /dev/null and b/class_vehicle_collision_tester.png differ diff --git a/class_vehicle_collision_tester_cast_cylinder-members.html b/class_vehicle_collision_tester_cast_cylinder-members.html new file mode 100644 index 000000000..e19b1153c --- /dev/null +++ b/class_vehicle_collision_tester_cast_cylinder-members.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleCollisionTesterCastCylinder Member List
+
+
+ +

This is the complete list of members for VehicleCollisionTesterCastCylinder, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< VehicleCollisionTester >inline
cEmbeddedRefTarget< VehicleCollisionTester >protectedstatic
Collide(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const overrideVehicleCollisionTesterCastCylindervirtual
GetBodyFilter() constVehicleCollisionTesterinline
GetBroadPhaseLayerFilter() constVehicleCollisionTesterinline
GetObjectLayer() constVehicleCollisionTesterinline
GetObjectLayerFilter() constVehicleCollisionTesterinline
GetRefCount() constRefTarget< VehicleCollisionTester >inline
mBodyFilterVehicleCollisionTesterprotected
mBroadPhaseLayerFilterVehicleCollisionTesterprotected
mObjectLayerVehicleCollisionTesterprotected
mObjectLayerFilterVehicleCollisionTesterprotected
mRefCountRefTarget< VehicleCollisionTester >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< VehicleCollisionTester >::operator=(const RefTarget &)RefTarget< VehicleCollisionTester >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PredictContactProperties(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const overrideVehicleCollisionTesterCastCylindervirtual
RefTarget()=defaultRefTarget< VehicleCollisionTester >inline
RefTarget(const RefTarget &)RefTarget< VehicleCollisionTester >inline
Release() constRefTarget< VehicleCollisionTester >inline
SetBodyFilter(const BodyFilter *inFilter)VehicleCollisionTesterinline
SetBroadPhaseLayerFilter(const BroadPhaseLayerFilter *inFilter)VehicleCollisionTesterinline
SetEmbedded() constRefTarget< VehicleCollisionTester >inline
SetObjectLayer(ObjectLayer inObjectLayer)VehicleCollisionTesterinline
SetObjectLayerFilter(const ObjectLayerFilter *inFilter)VehicleCollisionTesterinline
sInternalGetRefCountOffset()RefTarget< VehicleCollisionTester >inlinestatic
VehicleCollisionTester()=defaultVehicleCollisionTester
VehicleCollisionTester(ObjectLayer inObjectLayer)VehicleCollisionTesterinlineexplicit
VehicleCollisionTesterCastCylinder(ObjectLayer inObjectLayer, float inConvexRadiusFraction=0.1f)VehicleCollisionTesterCastCylinderinline
~RefTarget()RefTarget< VehicleCollisionTester >inline
~VehicleCollisionTester()=defaultVehicleCollisionTestervirtual
+
+ + + + diff --git a/class_vehicle_collision_tester_cast_cylinder.html b/class_vehicle_collision_tester_cast_cylinder.html new file mode 100644 index 000000000..296b62d6c --- /dev/null +++ b/class_vehicle_collision_tester_cast_cylinder.html @@ -0,0 +1,493 @@ + + + + + + + +Jolt Physics: VehicleCollisionTesterCastCylinder Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleCollisionTesterCastCylinder Class Reference
+
+
+ +

Collision tester that tests collision using a cylinder shape. + More...

+ +

#include <VehicleCollisionTester.h>

+
+Inheritance diagram for VehicleCollisionTesterCastCylinder:
+
+
+ + +VehicleCollisionTester +RefTarget< VehicleCollisionTester > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE VehicleCollisionTesterCastCylinder (ObjectLayer inObjectLayer, float inConvexRadiusFraction=0.1f)
 
virtual bool Collide (PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const override
 
virtual void PredictContactProperties (PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const override
 
- Public Member Functions inherited from VehicleCollisionTester
JPH_OVERRIDE_NEW_DELETE VehicleCollisionTester ()=default
 Constructors.
 
 VehicleCollisionTester (ObjectLayer inObjectLayer)
 
virtual ~VehicleCollisionTester ()=default
 Virtual destructor.
 
ObjectLayer GetObjectLayer () const
 Object layer to use for collision detection, this is used when the filters are not overridden.
 
void SetObjectLayer (ObjectLayer inObjectLayer)
 
void SetBroadPhaseLayerFilter (const BroadPhaseLayerFilter *inFilter)
 Access to the broad phase layer filter, when set this overrides the object layer supplied in the constructor.
 
const BroadPhaseLayerFilterGetBroadPhaseLayerFilter () const
 
void SetObjectLayerFilter (const ObjectLayerFilter *inFilter)
 Access to the object layer filter, when set this overrides the object layer supplied in the constructor.
 
const ObjectLayerFilterGetObjectLayerFilter () const
 
void SetBodyFilter (const BodyFilter *inFilter)
 Access to the body filter, when set this overrides the default filter that filters out the vehicle body.
 
const BodyFilterGetBodyFilter () const
 
- Public Member Functions inherited from RefTarget< VehicleCollisionTester >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< VehicleCollisionTester >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from VehicleCollisionTester
const BroadPhaseLayerFiltermBroadPhaseLayerFilter = nullptr
 
const ObjectLayerFiltermObjectLayerFilter = nullptr
 
const BodyFiltermBodyFilter = nullptr
 
ObjectLayer mObjectLayer = cObjectLayerInvalid
 
- Protected Attributes inherited from RefTarget< VehicleCollisionTester >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< VehicleCollisionTester >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Collision tester that tests collision using a cylinder shape.

+

Constructor & Destructor Documentation

+ +

◆ VehicleCollisionTesterCastCylinder()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
JPH_OVERRIDE_NEW_DELETE VehicleCollisionTesterCastCylinder::VehicleCollisionTesterCastCylinder (ObjectLayer inObjectLayer,
float inConvexRadiusFraction = 0.1f 
)
+
+inline
+
+

Constructor

Parameters
+ + + +
inObjectLayerObject layer to test collision with
inConvexRadiusFractionFraction of half the wheel width (or wheel radius if it is smaller) that is used as the convex radius
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Collide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool VehicleCollisionTesterCastCylinder::Collide (PhysicsSysteminPhysicsSystem,
const VehicleConstraintinVehicleConstraint,
uint inWheelIndex,
RVec3Arg inOrigin,
Vec3Arg inDirection,
const BodyIDinVehicleBodyID,
Body *& outBody,
SubShapeIDoutSubShapeID,
RVec3outContactPosition,
Vec3outContactNormal,
float & outSuspensionLength 
) const
+
+overridevirtual
+
+

Do a collision test with the world

Parameters
+ + + + + + + + + + + + +
inPhysicsSystemThe physics system that should be tested against
inVehicleConstraintThe vehicle constraint
inWheelIndexIndex of the wheel that we're testing collision for
inOriginOrigin for the test, corresponds to the world space position for the suspension attachment point
inDirectionDirection for the test (unit vector, world space)
inVehicleBodyIDThis body should be filtered out during collision detection to avoid self collisions
outBodyBody that the wheel collided with
outSubShapeIDSub shape ID that the wheel collided with
outContactPositionContact point between wheel and floor, in world space
outContactNormalContact normal between wheel and floor, pointing away from the floor
outSuspensionLengthNew length of the suspension [0, inSuspensionMaxLength]
+
+
+
Returns
True when collision found, false if not
+ +

Implements VehicleCollisionTester.

+ +
+
+ +

◆ PredictContactProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void VehicleCollisionTesterCastCylinder::PredictContactProperties (PhysicsSysteminPhysicsSystem,
const VehicleConstraintinVehicleConstraint,
uint inWheelIndex,
RVec3Arg inOrigin,
Vec3Arg inDirection,
const BodyIDinVehicleBodyID,
Body *& ioBody,
SubShapeIDioSubShapeID,
RVec3ioContactPosition,
Vec3ioContactNormal,
float & ioSuspensionLength 
) const
+
+overridevirtual
+
+

Do a cheap contact properties prediction based on the contact properties from the last collision test (provided as input parameters)

Parameters
+ + + + + + + + + + + + +
inPhysicsSystemThe physics system that should be tested against
inVehicleConstraintThe vehicle constraint
inWheelIndexIndex of the wheel that we're testing collision for
inOriginOrigin for the test, corresponds to the world space position for the suspension attachment point
inDirectionDirection for the test (unit vector, world space)
inVehicleBodyIDThe body ID for the vehicle itself
ioBodyBody that the wheel previously collided with
ioSubShapeIDSub shape ID that the wheel collided with during the last check
ioContactPositionContact point between wheel and floor during the last check, in world space
ioContactNormalContact normal between wheel and floor during the last check, pointing away from the floor
ioSuspensionLengthNew length of the suspension [0, inSuspensionMaxLength]
+
+
+ +

Implements VehicleCollisionTester.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_collision_tester_cast_cylinder.js b/class_vehicle_collision_tester_cast_cylinder.js new file mode 100644 index 000000000..4ae5b2259 --- /dev/null +++ b/class_vehicle_collision_tester_cast_cylinder.js @@ -0,0 +1,6 @@ +var class_vehicle_collision_tester_cast_cylinder = +[ + [ "VehicleCollisionTesterCastCylinder", "class_vehicle_collision_tester_cast_cylinder.html#a416a774b8cf740d496abe37d67d223ff", null ], + [ "Collide", "class_vehicle_collision_tester_cast_cylinder.html#abdc5564939bc37738299098769cbbcbc", null ], + [ "PredictContactProperties", "class_vehicle_collision_tester_cast_cylinder.html#afa5fbf9c0bbb3de0b9bd5cf6625af54a", null ] +]; \ No newline at end of file diff --git a/class_vehicle_collision_tester_cast_cylinder.png b/class_vehicle_collision_tester_cast_cylinder.png new file mode 100644 index 000000000..9c9a26b6d Binary files /dev/null and b/class_vehicle_collision_tester_cast_cylinder.png differ diff --git a/class_vehicle_collision_tester_cast_sphere-members.html b/class_vehicle_collision_tester_cast_sphere-members.html new file mode 100644 index 000000000..2f6ee71c4 --- /dev/null +++ b/class_vehicle_collision_tester_cast_sphere-members.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleCollisionTesterCastSphere Member List
+
+
+ +

This is the complete list of members for VehicleCollisionTesterCastSphere, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< VehicleCollisionTester >inline
cEmbeddedRefTarget< VehicleCollisionTester >protectedstatic
Collide(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const overrideVehicleCollisionTesterCastSpherevirtual
GetBodyFilter() constVehicleCollisionTesterinline
GetBroadPhaseLayerFilter() constVehicleCollisionTesterinline
GetObjectLayer() constVehicleCollisionTesterinline
GetObjectLayerFilter() constVehicleCollisionTesterinline
GetRefCount() constRefTarget< VehicleCollisionTester >inline
mBodyFilterVehicleCollisionTesterprotected
mBroadPhaseLayerFilterVehicleCollisionTesterprotected
mObjectLayerVehicleCollisionTesterprotected
mObjectLayerFilterVehicleCollisionTesterprotected
mRefCountRefTarget< VehicleCollisionTester >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< VehicleCollisionTester >::operator=(const RefTarget &)RefTarget< VehicleCollisionTester >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PredictContactProperties(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const overrideVehicleCollisionTesterCastSpherevirtual
RefTarget()=defaultRefTarget< VehicleCollisionTester >inline
RefTarget(const RefTarget &)RefTarget< VehicleCollisionTester >inline
Release() constRefTarget< VehicleCollisionTester >inline
SetBodyFilter(const BodyFilter *inFilter)VehicleCollisionTesterinline
SetBroadPhaseLayerFilter(const BroadPhaseLayerFilter *inFilter)VehicleCollisionTesterinline
SetEmbedded() constRefTarget< VehicleCollisionTester >inline
SetObjectLayer(ObjectLayer inObjectLayer)VehicleCollisionTesterinline
SetObjectLayerFilter(const ObjectLayerFilter *inFilter)VehicleCollisionTesterinline
sInternalGetRefCountOffset()RefTarget< VehicleCollisionTester >inlinestatic
VehicleCollisionTester()=defaultVehicleCollisionTester
VehicleCollisionTester(ObjectLayer inObjectLayer)VehicleCollisionTesterinlineexplicit
VehicleCollisionTesterCastSphere(ObjectLayer inObjectLayer, float inRadius, Vec3Arg inUp=Vec3::sAxisY(), float inMaxSlopeAngle=DegreesToRadians(80.0f))VehicleCollisionTesterCastSphereinline
~RefTarget()RefTarget< VehicleCollisionTester >inline
~VehicleCollisionTester()=defaultVehicleCollisionTestervirtual
+
+ + + + diff --git a/class_vehicle_collision_tester_cast_sphere.html b/class_vehicle_collision_tester_cast_sphere.html new file mode 100644 index 000000000..1501fa44f --- /dev/null +++ b/class_vehicle_collision_tester_cast_sphere.html @@ -0,0 +1,507 @@ + + + + + + + +Jolt Physics: VehicleCollisionTesterCastSphere Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleCollisionTesterCastSphere Class Reference
+
+
+ +

Collision tester that tests collision using a sphere cast. + More...

+ +

#include <VehicleCollisionTester.h>

+
+Inheritance diagram for VehicleCollisionTesterCastSphere:
+
+
+ + +VehicleCollisionTester +RefTarget< VehicleCollisionTester > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE VehicleCollisionTesterCastSphere (ObjectLayer inObjectLayer, float inRadius, Vec3Arg inUp=Vec3::sAxisY(), float inMaxSlopeAngle=DegreesToRadians(80.0f))
 
virtual bool Collide (PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const override
 
virtual void PredictContactProperties (PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const override
 
- Public Member Functions inherited from VehicleCollisionTester
JPH_OVERRIDE_NEW_DELETE VehicleCollisionTester ()=default
 Constructors.
 
 VehicleCollisionTester (ObjectLayer inObjectLayer)
 
virtual ~VehicleCollisionTester ()=default
 Virtual destructor.
 
ObjectLayer GetObjectLayer () const
 Object layer to use for collision detection, this is used when the filters are not overridden.
 
void SetObjectLayer (ObjectLayer inObjectLayer)
 
void SetBroadPhaseLayerFilter (const BroadPhaseLayerFilter *inFilter)
 Access to the broad phase layer filter, when set this overrides the object layer supplied in the constructor.
 
const BroadPhaseLayerFilterGetBroadPhaseLayerFilter () const
 
void SetObjectLayerFilter (const ObjectLayerFilter *inFilter)
 Access to the object layer filter, when set this overrides the object layer supplied in the constructor.
 
const ObjectLayerFilterGetObjectLayerFilter () const
 
void SetBodyFilter (const BodyFilter *inFilter)
 Access to the body filter, when set this overrides the default filter that filters out the vehicle body.
 
const BodyFilterGetBodyFilter () const
 
- Public Member Functions inherited from RefTarget< VehicleCollisionTester >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< VehicleCollisionTester >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from VehicleCollisionTester
const BroadPhaseLayerFiltermBroadPhaseLayerFilter = nullptr
 
const ObjectLayerFiltermObjectLayerFilter = nullptr
 
const BodyFiltermBodyFilter = nullptr
 
ObjectLayer mObjectLayer = cObjectLayerInvalid
 
- Protected Attributes inherited from RefTarget< VehicleCollisionTester >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< VehicleCollisionTester >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Collision tester that tests collision using a sphere cast.

+

Constructor & Destructor Documentation

+ +

◆ VehicleCollisionTesterCastSphere()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_OVERRIDE_NEW_DELETE VehicleCollisionTesterCastSphere::VehicleCollisionTesterCastSphere (ObjectLayer inObjectLayer,
float inRadius,
Vec3Arg inUp = Vec3::sAxisY(),
float inMaxSlopeAngle = DegreesToRadians(80.0f) 
)
+
+inline
+
+

Constructor

Parameters
+ + + + + +
inObjectLayerObject layer to test collision with
inUpWorld space up vector, used to avoid colliding with vertical walls.
inRadiusRadius of sphere
inMaxSlopeAngleMax angle (rad) that is considered for colliding wheels. This is to avoid colliding with vertical walls.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Collide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool VehicleCollisionTesterCastSphere::Collide (PhysicsSysteminPhysicsSystem,
const VehicleConstraintinVehicleConstraint,
uint inWheelIndex,
RVec3Arg inOrigin,
Vec3Arg inDirection,
const BodyIDinVehicleBodyID,
Body *& outBody,
SubShapeIDoutSubShapeID,
RVec3outContactPosition,
Vec3outContactNormal,
float & outSuspensionLength 
) const
+
+overridevirtual
+
+

Do a collision test with the world

Parameters
+ + + + + + + + + + + + +
inPhysicsSystemThe physics system that should be tested against
inVehicleConstraintThe vehicle constraint
inWheelIndexIndex of the wheel that we're testing collision for
inOriginOrigin for the test, corresponds to the world space position for the suspension attachment point
inDirectionDirection for the test (unit vector, world space)
inVehicleBodyIDThis body should be filtered out during collision detection to avoid self collisions
outBodyBody that the wheel collided with
outSubShapeIDSub shape ID that the wheel collided with
outContactPositionContact point between wheel and floor, in world space
outContactNormalContact normal between wheel and floor, pointing away from the floor
outSuspensionLengthNew length of the suspension [0, inSuspensionMaxLength]
+
+
+
Returns
True when collision found, false if not
+ +

Implements VehicleCollisionTester.

+ +
+
+ +

◆ PredictContactProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void VehicleCollisionTesterCastSphere::PredictContactProperties (PhysicsSysteminPhysicsSystem,
const VehicleConstraintinVehicleConstraint,
uint inWheelIndex,
RVec3Arg inOrigin,
Vec3Arg inDirection,
const BodyIDinVehicleBodyID,
Body *& ioBody,
SubShapeIDioSubShapeID,
RVec3ioContactPosition,
Vec3ioContactNormal,
float & ioSuspensionLength 
) const
+
+overridevirtual
+
+

Do a cheap contact properties prediction based on the contact properties from the last collision test (provided as input parameters)

Parameters
+ + + + + + + + + + + + +
inPhysicsSystemThe physics system that should be tested against
inVehicleConstraintThe vehicle constraint
inWheelIndexIndex of the wheel that we're testing collision for
inOriginOrigin for the test, corresponds to the world space position for the suspension attachment point
inDirectionDirection for the test (unit vector, world space)
inVehicleBodyIDThe body ID for the vehicle itself
ioBodyBody that the wheel previously collided with
ioSubShapeIDSub shape ID that the wheel collided with during the last check
ioContactPositionContact point between wheel and floor during the last check, in world space
ioContactNormalContact normal between wheel and floor during the last check, pointing away from the floor
ioSuspensionLengthNew length of the suspension [0, inSuspensionMaxLength]
+
+
+ +

Implements VehicleCollisionTester.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_collision_tester_cast_sphere.js b/class_vehicle_collision_tester_cast_sphere.js new file mode 100644 index 000000000..e346e9068 --- /dev/null +++ b/class_vehicle_collision_tester_cast_sphere.js @@ -0,0 +1,6 @@ +var class_vehicle_collision_tester_cast_sphere = +[ + [ "VehicleCollisionTesterCastSphere", "class_vehicle_collision_tester_cast_sphere.html#a6b514d0516167670bc2358b5073ba62d", null ], + [ "Collide", "class_vehicle_collision_tester_cast_sphere.html#a90248c4019ec139a1a6519d87b50e30f", null ], + [ "PredictContactProperties", "class_vehicle_collision_tester_cast_sphere.html#aa0af62e38e9b59a1ed0a8be597773a0f", null ] +]; \ No newline at end of file diff --git a/class_vehicle_collision_tester_cast_sphere.png b/class_vehicle_collision_tester_cast_sphere.png new file mode 100644 index 000000000..d00547194 Binary files /dev/null and b/class_vehicle_collision_tester_cast_sphere.png differ diff --git a/class_vehicle_collision_tester_ray-members.html b/class_vehicle_collision_tester_ray-members.html new file mode 100644 index 000000000..eb74f6dc4 --- /dev/null +++ b/class_vehicle_collision_tester_ray-members.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleCollisionTesterRay Member List
+
+
+ +

This is the complete list of members for VehicleCollisionTesterRay, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< VehicleCollisionTester >inline
cEmbeddedRefTarget< VehicleCollisionTester >protectedstatic
Collide(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const overrideVehicleCollisionTesterRayvirtual
GetBodyFilter() constVehicleCollisionTesterinline
GetBroadPhaseLayerFilter() constVehicleCollisionTesterinline
GetObjectLayer() constVehicleCollisionTesterinline
GetObjectLayerFilter() constVehicleCollisionTesterinline
GetRefCount() constRefTarget< VehicleCollisionTester >inline
mBodyFilterVehicleCollisionTesterprotected
mBroadPhaseLayerFilterVehicleCollisionTesterprotected
mObjectLayerVehicleCollisionTesterprotected
mObjectLayerFilterVehicleCollisionTesterprotected
mRefCountRefTarget< VehicleCollisionTester >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< VehicleCollisionTester >::operator=(const RefTarget &)RefTarget< VehicleCollisionTester >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PredictContactProperties(PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const overrideVehicleCollisionTesterRayvirtual
RefTarget()=defaultRefTarget< VehicleCollisionTester >inline
RefTarget(const RefTarget &)RefTarget< VehicleCollisionTester >inline
Release() constRefTarget< VehicleCollisionTester >inline
SetBodyFilter(const BodyFilter *inFilter)VehicleCollisionTesterinline
SetBroadPhaseLayerFilter(const BroadPhaseLayerFilter *inFilter)VehicleCollisionTesterinline
SetEmbedded() constRefTarget< VehicleCollisionTester >inline
SetObjectLayer(ObjectLayer inObjectLayer)VehicleCollisionTesterinline
SetObjectLayerFilter(const ObjectLayerFilter *inFilter)VehicleCollisionTesterinline
sInternalGetRefCountOffset()RefTarget< VehicleCollisionTester >inlinestatic
VehicleCollisionTester()=defaultVehicleCollisionTester
VehicleCollisionTester(ObjectLayer inObjectLayer)VehicleCollisionTesterinlineexplicit
VehicleCollisionTesterRay(ObjectLayer inObjectLayer, Vec3Arg inUp=Vec3::sAxisY(), float inMaxSlopeAngle=DegreesToRadians(80.0f))VehicleCollisionTesterRayinline
~RefTarget()RefTarget< VehicleCollisionTester >inline
~VehicleCollisionTester()=defaultVehicleCollisionTestervirtual
+
+ + + + diff --git a/class_vehicle_collision_tester_ray.html b/class_vehicle_collision_tester_ray.html new file mode 100644 index 000000000..455d89c51 --- /dev/null +++ b/class_vehicle_collision_tester_ray.html @@ -0,0 +1,500 @@ + + + + + + + +Jolt Physics: VehicleCollisionTesterRay Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleCollisionTesterRay Class Reference
+
+
+ +

Collision tester that tests collision using a raycast. + More...

+ +

#include <VehicleCollisionTester.h>

+
+Inheritance diagram for VehicleCollisionTesterRay:
+
+
+ + +VehicleCollisionTester +RefTarget< VehicleCollisionTester > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE VehicleCollisionTesterRay (ObjectLayer inObjectLayer, Vec3Arg inUp=Vec3::sAxisY(), float inMaxSlopeAngle=DegreesToRadians(80.0f))
 
virtual bool Collide (PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&outBody, SubShapeID &outSubShapeID, RVec3 &outContactPosition, Vec3 &outContactNormal, float &outSuspensionLength) const override
 
virtual void PredictContactProperties (PhysicsSystem &inPhysicsSystem, const VehicleConstraint &inVehicleConstraint, uint inWheelIndex, RVec3Arg inOrigin, Vec3Arg inDirection, const BodyID &inVehicleBodyID, Body *&ioBody, SubShapeID &ioSubShapeID, RVec3 &ioContactPosition, Vec3 &ioContactNormal, float &ioSuspensionLength) const override
 
- Public Member Functions inherited from VehicleCollisionTester
JPH_OVERRIDE_NEW_DELETE VehicleCollisionTester ()=default
 Constructors.
 
 VehicleCollisionTester (ObjectLayer inObjectLayer)
 
virtual ~VehicleCollisionTester ()=default
 Virtual destructor.
 
ObjectLayer GetObjectLayer () const
 Object layer to use for collision detection, this is used when the filters are not overridden.
 
void SetObjectLayer (ObjectLayer inObjectLayer)
 
void SetBroadPhaseLayerFilter (const BroadPhaseLayerFilter *inFilter)
 Access to the broad phase layer filter, when set this overrides the object layer supplied in the constructor.
 
const BroadPhaseLayerFilterGetBroadPhaseLayerFilter () const
 
void SetObjectLayerFilter (const ObjectLayerFilter *inFilter)
 Access to the object layer filter, when set this overrides the object layer supplied in the constructor.
 
const ObjectLayerFilterGetObjectLayerFilter () const
 
void SetBodyFilter (const BodyFilter *inFilter)
 Access to the body filter, when set this overrides the default filter that filters out the vehicle body.
 
const BodyFilterGetBodyFilter () const
 
- Public Member Functions inherited from RefTarget< VehicleCollisionTester >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< VehicleCollisionTester >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from VehicleCollisionTester
const BroadPhaseLayerFiltermBroadPhaseLayerFilter = nullptr
 
const ObjectLayerFiltermObjectLayerFilter = nullptr
 
const BodyFiltermBodyFilter = nullptr
 
ObjectLayer mObjectLayer = cObjectLayerInvalid
 
- Protected Attributes inherited from RefTarget< VehicleCollisionTester >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< VehicleCollisionTester >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Collision tester that tests collision using a raycast.

+

Constructor & Destructor Documentation

+ +

◆ VehicleCollisionTesterRay()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
JPH_OVERRIDE_NEW_DELETE VehicleCollisionTesterRay::VehicleCollisionTesterRay (ObjectLayer inObjectLayer,
Vec3Arg inUp = Vec3::sAxisY(),
float inMaxSlopeAngle = DegreesToRadians(80.0f) 
)
+
+inline
+
+

Constructor

Parameters
+ + + + +
inObjectLayerObject layer to test collision with
inUpWorld space up vector, used to avoid colliding with vertical walls.
inMaxSlopeAngleMax angle (rad) that is considered for colliding wheels. This is to avoid colliding with vertical walls.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ Collide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JPH_NAMESPACE_BEGIN bool VehicleCollisionTesterRay::Collide (PhysicsSysteminPhysicsSystem,
const VehicleConstraintinVehicleConstraint,
uint inWheelIndex,
RVec3Arg inOrigin,
Vec3Arg inDirection,
const BodyIDinVehicleBodyID,
Body *& outBody,
SubShapeIDoutSubShapeID,
RVec3outContactPosition,
Vec3outContactNormal,
float & outSuspensionLength 
) const
+
+overridevirtual
+
+

Do a collision test with the world

Parameters
+ + + + + + + + + + + + +
inPhysicsSystemThe physics system that should be tested against
inVehicleConstraintThe vehicle constraint
inWheelIndexIndex of the wheel that we're testing collision for
inOriginOrigin for the test, corresponds to the world space position for the suspension attachment point
inDirectionDirection for the test (unit vector, world space)
inVehicleBodyIDThis body should be filtered out during collision detection to avoid self collisions
outBodyBody that the wheel collided with
outSubShapeIDSub shape ID that the wheel collided with
outContactPositionContact point between wheel and floor, in world space
outContactNormalContact normal between wheel and floor, pointing away from the floor
outSuspensionLengthNew length of the suspension [0, inSuspensionMaxLength]
+
+
+
Returns
True when collision found, false if not
+ +

Implements VehicleCollisionTester.

+ +
+
+ +

◆ PredictContactProperties()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void VehicleCollisionTesterRay::PredictContactProperties (PhysicsSysteminPhysicsSystem,
const VehicleConstraintinVehicleConstraint,
uint inWheelIndex,
RVec3Arg inOrigin,
Vec3Arg inDirection,
const BodyIDinVehicleBodyID,
Body *& ioBody,
SubShapeIDioSubShapeID,
RVec3ioContactPosition,
Vec3ioContactNormal,
float & ioSuspensionLength 
) const
+
+overridevirtual
+
+

Do a cheap contact properties prediction based on the contact properties from the last collision test (provided as input parameters)

Parameters
+ + + + + + + + + + + + +
inPhysicsSystemThe physics system that should be tested against
inVehicleConstraintThe vehicle constraint
inWheelIndexIndex of the wheel that we're testing collision for
inOriginOrigin for the test, corresponds to the world space position for the suspension attachment point
inDirectionDirection for the test (unit vector, world space)
inVehicleBodyIDThe body ID for the vehicle itself
ioBodyBody that the wheel previously collided with
ioSubShapeIDSub shape ID that the wheel collided with during the last check
ioContactPositionContact point between wheel and floor during the last check, in world space
ioContactNormalContact normal between wheel and floor during the last check, pointing away from the floor
ioSuspensionLengthNew length of the suspension [0, inSuspensionMaxLength]
+
+
+ +

Implements VehicleCollisionTester.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_collision_tester_ray.js b/class_vehicle_collision_tester_ray.js new file mode 100644 index 000000000..c4cb448d7 --- /dev/null +++ b/class_vehicle_collision_tester_ray.js @@ -0,0 +1,6 @@ +var class_vehicle_collision_tester_ray = +[ + [ "VehicleCollisionTesterRay", "class_vehicle_collision_tester_ray.html#a05872b64dc0fc8b3206f24b513da2a91", null ], + [ "Collide", "class_vehicle_collision_tester_ray.html#abd279ac97d41c77e78c3a2db35cfc874", null ], + [ "PredictContactProperties", "class_vehicle_collision_tester_ray.html#a7c3bda4f43f4a22eb83d06357ca72abd", null ] +]; \ No newline at end of file diff --git a/class_vehicle_collision_tester_ray.png b/class_vehicle_collision_tester_ray.png new file mode 100644 index 000000000..585e0e0ce Binary files /dev/null and b/class_vehicle_collision_tester_ray.png differ diff --git a/class_vehicle_constraint-members.html b/class_vehicle_constraint-members.html new file mode 100644 index 000000000..14741505d --- /dev/null +++ b/class_vehicle_constraint-members.html @@ -0,0 +1,199 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleConstraint Member List
+
+
+ +

This is the complete list of members for VehicleConstraint, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< Constraint >inline
BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) overrideVehicleConstraintvirtual
BuildIslandSplits(LargeIslandSplitter &ioSplitter) const overrideVehicleConstraintvirtual
cEmbeddedRefTarget< Constraint >protectedstatic
CombineFunction typedefVehicleConstraint
Constraint(const ConstraintSettings &inSettings)Constraintinlineexplicit
DrawConstraint(DebugRenderer *inRenderer) const overrideVehicleConstraintvirtual
DrawConstraintLimits(DebugRenderer *inRenderer) const overrideVehicleConstraintvirtual
DrawConstraintReferenceFrame(DebugRenderer *inRenderer) constConstraintinlinevirtual
GetCombineFriction() constVehicleConstraintinline
GetConstraintPriority() constConstraintinline
GetConstraintSettings() const overrideVehicleConstraintvirtual
GetController() constVehicleConstraintinline
GetController()VehicleConstraintinline
GetDrawConstraintSize() constConstraintinline
GetEnabled() constConstraintinline
GetGravityOverride() constVehicleConstraintinline
GetLocalForward() constVehicleConstraintinline
GetLocalUp() constVehicleConstraintinline
GetNumPositionStepsOverride() constConstraintinline
GetNumStepsBetweenCollisionTestActive() constVehicleConstraintinline
GetNumStepsBetweenCollisionTestInactive() constVehicleConstraintinline
GetNumVelocityStepsOverride() constConstraintinline
GetPostCollideCallback() constVehicleConstraintinline
GetPostStepCallback() constVehicleConstraintinline
GetPreStepCallback() constVehicleConstraintinline
GetRefCount() constRefTarget< Constraint >inline
GetSubType() const overrideVehicleConstraintinlinevirtual
GetType() constConstraintinlinevirtual
GetUserData() constConstraintinline
GetVehicleBody() constVehicleConstraintinline
GetWheel(uint inIdx)VehicleConstraintinline
GetWheel(uint inIdx) constVehicleConstraintinline
GetWheelLocalBasis(const Wheel *inWheel, Vec3 &outForward, Vec3 &outUp, Vec3 &outRight) constVehicleConstraint
GetWheelLocalTransform(uint inWheelIndex, Vec3Arg inWheelRight, Vec3Arg inWheelUp) constVehicleConstraint
GetWheels() constVehicleConstraintinline
GetWheels()VehicleConstraintinline
GetWheelWorldTransform(uint inWheelIndex, Vec3Arg inWheelRight, Vec3Arg inWheelUp) constVehicleConstraint
GetWorldUp() constVehicleConstraintinline
IsActive() const overrideVehicleConstraintinlinevirtual
IsGravityOverridden() constVehicleConstraintinline
mDrawConstraintSizeConstraintprotected
mRefCountRefTarget< Constraint >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) overrideVehicleConstraintinlinevirtual
RefTarget< Constraint >::operator=(const RefTarget &)RefTarget< Constraint >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
OverrideGravity(Vec3Arg inGravity)VehicleConstraintinline
RefTarget()=defaultRefTarget< Constraint >inline
RefTarget(const RefTarget &)RefTarget< Constraint >inline
Release() constRefTarget< Constraint >inline
ResetGravityOverride()VehicleConstraintinline
ResetWarmStart() overrideVehicleConstraintvirtual
RestoreState(StateRecorder &inStream) overrideVehicleConstraintvirtual
SaveState(StateRecorder &inStream) const overrideVehicleConstraintvirtual
SetCombineFriction(const CombineFunction &inCombineFriction)VehicleConstraintinline
SetConstraintPriority(uint32 inPriority)Constraintinline
SetDrawConstraintSize(float inSize)Constraintinline
SetEmbedded() constRefTarget< Constraint >inline
SetEnabled(bool inEnabled)Constraintinline
SetMaxPitchRollAngle(float inMaxPitchRollAngle)VehicleConstraintinline
SetNumPositionStepsOverride(uint inN)Constraintinline
SetNumStepsBetweenCollisionTestActive(uint inSteps)VehicleConstraintinline
SetNumStepsBetweenCollisionTestInactive(uint inSteps)VehicleConstraintinline
SetNumVelocityStepsOverride(uint inN)Constraintinline
SetPostCollideCallback(const StepCallback &inPostCollideCallback)VehicleConstraintinline
SetPostStepCallback(const StepCallback &inPostStepCallback)VehicleConstraintinline
SetPreStepCallback(const StepCallback &inPreStepCallback)VehicleConstraintinline
SetupVelocityConstraint(float inDeltaTime) overrideVehicleConstraintvirtual
SetUserData(uint64 inUserData)Constraintinline
SetVehicleCollisionTester(const VehicleCollisionTester *inTester)VehicleConstraintinline
sInternalGetRefCountOffset()RefTarget< Constraint >inlinestatic
SolvePositionConstraint(float inDeltaTime, float inBaumgarte) overrideVehicleConstraintvirtual
SolveVelocityConstraint(float inDeltaTime) overrideVehicleConstraintvirtual
StepCallback typedefVehicleConstraint
ToConstraintSettings(ConstraintSettings &outSettings) constConstraintprotected
VehicleConstraint(Body &inVehicleBody, const VehicleConstraintSettings &inSettings)VehicleConstraint
WarmStartVelocityConstraint(float inWarmStartImpulseRatio) overrideVehicleConstraintvirtual
~Constraint()=defaultConstraintvirtual
~PhysicsStepListener()=defaultPhysicsStepListenervirtual
~RefTarget()RefTarget< Constraint >inline
~VehicleConstraint() overrideVehicleConstraintvirtual
+
+ + + + diff --git a/class_vehicle_constraint.html b/class_vehicle_constraint.html new file mode 100644 index 000000000..23c8a0532 --- /dev/null +++ b/class_vehicle_constraint.html @@ -0,0 +1,1808 @@ + + + + + + + +Jolt Physics: VehicleConstraint Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleConstraint Class Reference
+
+
+ +

#include <VehicleConstraint.h>

+
+Inheritance diagram for VehicleConstraint:
+
+
+ + +Constraint +PhysicsStepListener +RefTarget< Constraint > +NonCopyable + +
+ + + + + + + +

+Public Types

using CombineFunction = function< void(uint inWheelIndex, float &ioLongitudinalFriction, float &ioLateralFriction, const Body &inBody2, const SubShapeID &inSubShapeID2)>
 
using StepCallback = function< void(VehicleConstraint &inVehicle, float inDeltaTime, PhysicsSystem &inPhysicsSystem)>
 Callback function to notify of current stage in PhysicsStepListener::OnStep.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 VehicleConstraint (Body &inVehicleBody, const VehicleConstraintSettings &inSettings)
 Constructor / destructor.
 
virtual ~VehicleConstraint () override
 
virtual EConstraintSubType GetSubType () const override
 Get the type of a constraint.
 
void SetMaxPitchRollAngle (float inMaxPitchRollAngle)
 Defines the maximum pitch/roll angle (rad), can be used to avoid the car from getting upside down. The vehicle up direction will stay within a cone centered around the up axis with half top angle mMaxPitchRollAngle, set to pi to turn off.
 
void SetVehicleCollisionTester (const VehicleCollisionTester *inTester)
 Set the interface that tests collision between wheel and ground.
 
void SetCombineFriction (const CombineFunction &inCombineFriction)
 
const CombineFunctionGetCombineFriction () const
 
const StepCallbackGetPreStepCallback () const
 
void SetPreStepCallback (const StepCallback &inPreStepCallback)
 
const StepCallbackGetPostCollideCallback () const
 
void SetPostCollideCallback (const StepCallback &inPostCollideCallback)
 
const StepCallbackGetPostStepCallback () const
 
void SetPostStepCallback (const StepCallback &inPostStepCallback)
 
void OverrideGravity (Vec3Arg inGravity)
 Override gravity for this vehicle. Note that overriding gravity will set the gravity factor of the vehicle body to 0 and apply gravity in the PhysicsStepListener instead.
 
bool IsGravityOverridden () const
 
Vec3 GetGravityOverride () const
 
void ResetGravityOverride ()
 Note that resetting the gravity override will restore the gravity factor of the vehicle body to 1.
 
Vec3 GetLocalForward () const
 Get the local space forward vector of the vehicle.
 
Vec3 GetLocalUp () const
 Get the local space up vector of the vehicle.
 
Vec3 GetWorldUp () const
 Vector indicating the world space up direction (used to limit vehicle pitch/roll), calculated every frame by inverting gravity.
 
BodyGetVehicleBody () const
 Access to the vehicle body.
 
const VehicleControllerGetController () const
 Access to the vehicle controller interface (determines acceleration / deceleration)
 
VehicleControllerGetController ()
 Access to the vehicle controller interface (determines acceleration / deceleration)
 
const WheelsGetWheels () const
 Get the state of the wheels.
 
WheelsGetWheels ()
 Get the state of a wheels (writable interface, allows you to make changes to the configuration which will take effect the next time step)
 
WheelGetWheel (uint inIdx)
 Get the state of a wheel.
 
const WheelGetWheel (uint inIdx) const
 
void GetWheelLocalBasis (const Wheel *inWheel, Vec3 &outForward, Vec3 &outUp, Vec3 &outRight) const
 
Mat44 GetWheelLocalTransform (uint inWheelIndex, Vec3Arg inWheelRight, Vec3Arg inWheelUp) const
 
RMat44 GetWheelWorldTransform (uint inWheelIndex, Vec3Arg inWheelRight, Vec3Arg inWheelUp) const
 
void SetNumStepsBetweenCollisionTestActive (uint inSteps)
 
uint GetNumStepsBetweenCollisionTestActive () const
 
void SetNumStepsBetweenCollisionTestInactive (uint inSteps)
 
uint GetNumStepsBetweenCollisionTestInactive () const
 
virtual bool IsActive () const override
 
virtual void NotifyShapeChanged (const BodyID &inBodyID, Vec3Arg inDeltaCOM) override
 
virtual void SetupVelocityConstraint (float inDeltaTime) override
 
virtual void ResetWarmStart () override
 
virtual void WarmStartVelocityConstraint (float inWarmStartImpulseRatio) override
 
virtual bool SolveVelocityConstraint (float inDeltaTime) override
 
virtual bool SolvePositionConstraint (float inDeltaTime, float inBaumgarte) override
 
virtual void BuildIslands (uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override
 Link bodies that are connected by this constraint in the island builder.
 
virtual uint BuildIslandSplits (LargeIslandSplitter &ioSplitter) const override
 Link bodies that are connected by this constraint in the same split. Returns the split index.
 
virtual void DrawConstraint (DebugRenderer *inRenderer) const override
 
virtual void DrawConstraintLimits (DebugRenderer *inRenderer) const override
 
virtual void SaveState (StateRecorder &inStream) const override
 Saving state for replay.
 
virtual void RestoreState (StateRecorder &inStream) override
 Restoring state for replay.
 
virtual Ref< ConstraintSettingsGetConstraintSettings () const override
 Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.
 
- Public Member Functions inherited from Constraint
JPH_OVERRIDE_NEW_DELETE Constraint (const ConstraintSettings &inSettings)
 Constructor.
 
virtual ~Constraint ()=default
 Virtual destructor.
 
virtual EConstraintType GetType () const
 Get the type of a constraint.
 
uint32 GetConstraintPriority () const
 
void SetConstraintPriority (uint32 inPriority)
 
void SetNumVelocityStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumVelocityStepsOverride () const
 
void SetNumPositionStepsOverride (uint inN)
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint GetNumPositionStepsOverride () const
 
void SetEnabled (bool inEnabled)
 
bool GetEnabled () const
 Test if a constraint is enabled.
 
uint64 GetUserData () const
 Access to the user data, can be used for anything by the application.
 
void SetUserData (uint64 inUserData)
 
virtual void DrawConstraintReferenceFrame (DebugRenderer *inRenderer) const
 
float GetDrawConstraintSize () const
 Size of constraint when drawing it through the debug renderer.
 
void SetDrawConstraintSize (float inSize)
 
- Public Member Functions inherited from RefTarget< Constraint >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from PhysicsStepListener
virtual ~PhysicsStepListener ()=default
 Ensure virtual destructor.
 
+ + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< Constraint >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Member Functions inherited from Constraint
void ToConstraintSettings (ConstraintSettings &outSettings) const
 Helper function to copy settings back to constraint settings for this base class.
 
- Protected Attributes inherited from Constraint
float mDrawConstraintSize
 Size of constraint when drawing it through the debug renderer.
 
- Protected Attributes inherited from RefTarget< Constraint >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< Constraint >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Constraint that simulates a vehicle Note: Don't forget to register the constraint as a StepListener with the PhysicsSystem!

+

When the vehicle drives over very light objects (rubble) you may see the car body dip down. This is a known issue and is an artifact of the iterative solver that Jolt is using. Basically if a light object is sandwiched between two heavy objects (the static floor and the car body), the light object is not able to transfer enough force from the ground to the car body to keep the car body up. You can see this effect in the HeavyOnLightTest sample, the boxes on the right have a lot of penetration because they're on top of light objects.

+

There are a couple of ways to improve this:

+
    +
  1. You can increase the number of velocity steps (global settings PhysicsSettings::mNumVelocitySteps or if you only want to increase it on the vehicle you can use VehicleConstraintSettings::mNumVelocityStepsOverride). E.g. going from 10 to 30 steps in the HeavyOnLightTest sample makes the penetration a lot less. The number of position steps can also be increased (the first prevents the body from going down, the second corrects it if the problem did occur which inevitably happens due to numerical drift). This solution costs CPU cycles.
  2. +
  3. You can reduce the mass difference between the vehicle body and the rubble on the floor (by making the rubble heavier or the car lighter).
  4. +
  5. You could filter out collisions between the vehicle collision test and the rubble completely. This would make the wheels ignore the rubble but would cause the vehicle to drive through it as if nothing happened. You could create fake wheels (keyframed bodies) that move along with the vehicle and that only collide with rubble (and not the vehicle or the ground). This would cause the vehicle to push away the rubble without the rubble being able to affect the vehicle (unless it hits the main body of course).
  6. +
+

Note that when driving over rubble, you may see the wheel jump up and down quite quickly because one frame a collision is found and the next frame not. To alleviate this, it may be needed to smooth the motion of the visual mesh for the wheel.

+

Member Typedef Documentation

+ +

◆ CombineFunction

+ +
+
+ + + + +
using VehicleConstraint::CombineFunction = function<void(uint inWheelIndex, float &ioLongitudinalFriction, float &ioLateralFriction, const Body &inBody2, const SubShapeID &inSubShapeID2)>
+
+

Callback function to combine the friction of a tire with the friction of the body it is colliding with. On input ioLongitudinalFriction and ioLateralFriction contain the friction of the tire, on output they should contain the combined friction with inBody2.

+ +
+
+ +

◆ StepCallback

+ +
+
+ + + + +
using VehicleConstraint::StepCallback = function<void(VehicleConstraint &inVehicle, float inDeltaTime, PhysicsSystem &inPhysicsSystem)>
+
+ +

Callback function to notify of current stage in PhysicsStepListener::OnStep.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ VehicleConstraint()

+ +
+
+ + + + + + + + + + + + + + + + + + +
VehicleConstraint::VehicleConstraint (BodyinVehicleBody,
const VehicleConstraintSettingsinSettings 
)
+
+ +

Constructor / destructor.

+ +
+
+ +

◆ ~VehicleConstraint()

+ +
+
+ + + + + +
+ + + + + + + +
VehicleConstraint::~VehicleConstraint ()
+
+overridevirtual
+
+ +
+
+

Member Function Documentation

+ +

◆ BuildIslands()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void VehicleConstraint::BuildIslands (uint32 inConstraintIndex,
IslandBuilderioBuilder,
BodyManagerinBodyManager 
)
+
+overridevirtual
+
+ +

Link bodies that are connected by this constraint in the island builder.

+ +

Implements Constraint.

+ +
+
+ +

◆ BuildIslandSplits()

+ +
+
+ + + + + +
+ + + + + + + + +
uint VehicleConstraint::BuildIslandSplits (LargeIslandSplitterioSplitter) const
+
+overridevirtual
+
+ +

Link bodies that are connected by this constraint in the same split. Returns the split index.

+ +

Implements Constraint.

+ +
+
+ +

◆ DrawConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::DrawConstraint (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ DrawConstraintLimits()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::DrawConstraintLimits (DebugRendererinRenderer) const
+
+overridevirtual
+
+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ GetCombineFriction()

+ +
+
+ + + + + +
+ + + + + + + +
const CombineFunction & VehicleConstraint::GetCombineFriction () const
+
+inline
+
+ +
+
+ +

◆ GetConstraintSettings()

+ +
+
+ + + + + +
+ + + + + + + +
Ref< ConstraintSettings > VehicleConstraint::GetConstraintSettings () const
+
+overridevirtual
+
+ +

Debug function to convert a constraint to its settings, note that this will not save to which bodies the constraint is connected to.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetController() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
VehicleController * VehicleConstraint::GetController ()
+
+inline
+
+ +

Access to the vehicle controller interface (determines acceleration / deceleration)

+ +
+
+ +

◆ GetController() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const VehicleController * VehicleConstraint::GetController () const
+
+inline
+
+ +

Access to the vehicle controller interface (determines acceleration / deceleration)

+ +
+
+ +

◆ GetGravityOverride()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 VehicleConstraint::GetGravityOverride () const
+
+inline
+
+ +
+
+ +

◆ GetLocalForward()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 VehicleConstraint::GetLocalForward () const
+
+inline
+
+ +

Get the local space forward vector of the vehicle.

+ +
+
+ +

◆ GetLocalUp()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 VehicleConstraint::GetLocalUp () const
+
+inline
+
+ +

Get the local space up vector of the vehicle.

+ +
+
+ +

◆ GetNumStepsBetweenCollisionTestActive()

+ +
+
+ + + + + +
+ + + + + + + +
uint VehicleConstraint::GetNumStepsBetweenCollisionTestActive () const
+
+inline
+
+ +
+
+ +

◆ GetNumStepsBetweenCollisionTestInactive()

+ +
+
+ + + + + +
+ + + + + + + +
uint VehicleConstraint::GetNumStepsBetweenCollisionTestInactive () const
+
+inline
+
+ +
+
+ +

◆ GetPostCollideCallback()

+ +
+
+ + + + + +
+ + + + + + + +
const StepCallback & VehicleConstraint::GetPostCollideCallback () const
+
+inline
+
+

Callback function to notify that PhysicsStepListener::OnStep has just completed wheel collision checks. Default is to do nothing. Can be used to allow higher-level code to e.g. detect tire contact or to modify the velocity of the vehicle based on the wheel contacts. You should not change the position of the vehicle in this callback as the wheel collision checks have already been performed.

+ +
+
+ +

◆ GetPostStepCallback()

+ +
+
+ + + + + +
+ + + + + + + +
const StepCallback & VehicleConstraint::GetPostStepCallback () const
+
+inline
+
+

Callback function to notify that PhysicsStepListener::OnStep has completed for this vehicle. Default is to do nothing. Can be used to allow higher-level code to e.g. control the vehicle in the air. You should not change the position of the vehicle in this callback as the wheel collision checks have already been performed.

+ +
+
+ +

◆ GetPreStepCallback()

+ +
+
+ + + + + +
+ + + + + + + +
const StepCallback & VehicleConstraint::GetPreStepCallback () const
+
+inline
+
+

Callback function to notify that PhysicsStepListener::OnStep has started for this vehicle. Default is to do nothing. Can be used to allow higher-level code to e.g. control steering. This is the last moment that the position/orientation of the vehicle can be changed. Wheel collision checks have not been performed yet.

+ +
+
+ +

◆ GetSubType()

+ +
+
+ + + + + +
+ + + + + + + +
virtual EConstraintSubType VehicleConstraint::GetSubType () const
+
+inlineoverridevirtual
+
+ +

Get the type of a constraint.

+ +

Implements Constraint.

+ +
+
+ +

◆ GetVehicleBody()

+ +
+
+ + + + + +
+ + + + + + + +
Body * VehicleConstraint::GetVehicleBody () const
+
+inline
+
+ +

Access to the vehicle body.

+ +
+
+ +

◆ GetWheel() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Wheel * VehicleConstraint::GetWheel (uint inIdx)
+
+inline
+
+ +

Get the state of a wheel.

+ +
+
+ +

◆ GetWheel() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
const Wheel * VehicleConstraint::GetWheel (uint inIdx) const
+
+inline
+
+ +
+
+ +

◆ GetWheelLocalBasis()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void VehicleConstraint::GetWheelLocalBasis (const WheelinWheel,
Vec3outForward,
Vec3outUp,
Vec3outRight 
) const
+
+

Get the basis vectors for the wheel in local space to the vehicle body (note: basis does not rotate when the wheel rotates around its axis)

Parameters
+ + + + + +
inWheelWheel to fetch basis for
outForwardForward vector for the wheel
outUpUp vector for the wheel
outRightRight vector for the wheel
+
+
+ +
+
+ +

◆ GetWheelLocalTransform()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
Mat44 VehicleConstraint::GetWheelLocalTransform (uint inWheelIndex,
Vec3Arg inWheelRight,
Vec3Arg inWheelUp 
) const
+
+

Get the transform of a wheel in local space to the vehicle body, returns a matrix that transforms a cylinder aligned with the Y axis in body space (not COM space)

Parameters
+ + + + +
inWheelIndexIndex of the wheel to fetch
inWheelRightUnit vector that indicates right in model space of the wheel (so if you only have 1 wheel model, you probably want to specify the opposite direction for the left and right wheels)
inWheelUpUnit vector that indicates up in model space of the wheel
+
+
+ +
+
+ +

◆ GetWheels() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
Wheels & VehicleConstraint::GetWheels ()
+
+inline
+
+ +

Get the state of a wheels (writable interface, allows you to make changes to the configuration which will take effect the next time step)

+ +
+
+ +

◆ GetWheels() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const Wheels & VehicleConstraint::GetWheels () const
+
+inline
+
+ +

Get the state of the wheels.

+ +
+
+ +

◆ GetWheelWorldTransform()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
RMat44 VehicleConstraint::GetWheelWorldTransform (uint inWheelIndex,
Vec3Arg inWheelRight,
Vec3Arg inWheelUp 
) const
+
+

Get the transform of a wheel in world space, returns a matrix that transforms a cylinder aligned with the Y axis in world space

Parameters
+ + + + +
inWheelIndexIndex of the wheel to fetch
inWheelRightUnit vector that indicates right in model space of the wheel (so if you only have 1 wheel model, you probably want to specify the opposite direction for the left and right wheels)
inWheelUpUnit vector that indicates up in model space of the wheel
+
+
+ +
+
+ +

◆ GetWorldUp()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 VehicleConstraint::GetWorldUp () const
+
+inline
+
+ +

Vector indicating the world space up direction (used to limit vehicle pitch/roll), calculated every frame by inverting gravity.

+ +
+
+ +

◆ IsActive()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool VehicleConstraint::IsActive () const
+
+inlineoverridevirtual
+
+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ IsGravityOverridden()

+ +
+
+ + + + + +
+ + + + + + + +
bool VehicleConstraint::IsGravityOverridden () const
+
+inline
+
+ +
+
+ +

◆ NotifyShapeChanged()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void VehicleConstraint::NotifyShapeChanged (const BodyIDinBodyID,
Vec3Arg inDeltaCOM 
)
+
+inlineoverridevirtual
+
+

Notify the constraint that the shape of a body has changed and that its center of mass has moved by inDeltaCOM. Bodies don't know which constraints are connected to them so the user is responsible for notifying the relevant constraints when a body changes.

Parameters
+ + + +
inBodyIDID of the body that has changed
inDeltaCOMThe delta of the center of mass of the body (shape->GetCenterOfMass() - shape_before_change->GetCenterOfMass())
+
+
+ +

Implements Constraint.

+ +
+
+ +

◆ OverrideGravity()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::OverrideGravity (Vec3Arg inGravity)
+
+inline
+
+ +

Override gravity for this vehicle. Note that overriding gravity will set the gravity factor of the vehicle body to 0 and apply gravity in the PhysicsStepListener instead.

+ +
+
+ +

◆ ResetGravityOverride()

+ +
+
+ + + + + +
+ + + + + + + +
void VehicleConstraint::ResetGravityOverride ()
+
+inline
+
+ +

Note that resetting the gravity override will restore the gravity factor of the vehicle body to 1.

+ +
+
+ +

◆ ResetWarmStart()

+ +
+
+ + + + + +
+ + + + + + + +
void VehicleConstraint::ResetWarmStart ()
+
+overridevirtual
+
+

Notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame. Calling this function when there are no big changes will result in the constraints being much 'softer' than usual so they are more easily violated (e.g. a long chain of bodies might sag a bit if you call this every frame).

+ +

Implements Constraint.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::RestoreState (StateRecorderinStream)
+
+overridevirtual
+
+ +

Restoring state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::SaveState (StateRecorderinStream) const
+
+overridevirtual
+
+ +

Saving state for replay.

+ +

Reimplemented from Constraint.

+ +
+
+ +

◆ SetCombineFriction()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::SetCombineFriction (const CombineFunctioninCombineFriction)
+
+inline
+
+

Set the function that combines the friction of two bodies and returns it Default method is the geometric mean: sqrt(friction1 * friction2).

+ +
+
+ +

◆ SetMaxPitchRollAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::SetMaxPitchRollAngle (float inMaxPitchRollAngle)
+
+inline
+
+ +

Defines the maximum pitch/roll angle (rad), can be used to avoid the car from getting upside down. The vehicle up direction will stay within a cone centered around the up axis with half top angle mMaxPitchRollAngle, set to pi to turn off.

+ +
+
+ +

◆ SetNumStepsBetweenCollisionTestActive()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::SetNumStepsBetweenCollisionTestActive (uint inSteps)
+
+inline
+
+

Number of simulation steps between wheel collision tests when the vehicle is active. Default is 1. 0 = never, 1 = every step, 2 = every other step, etc. Note that if a vehicle has multiple wheels and the number of steps > 1, the wheels will be tested in a round robin fashion. If there are multiple vehicles, the tests will be spread out based on the BodyID of the vehicle. If you set this to test less than every step, you may see simulation artifacts. This setting can be used to reduce the cost of simulating vehicles in the distance.

+ +
+
+ +

◆ SetNumStepsBetweenCollisionTestInactive()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::SetNumStepsBetweenCollisionTestInactive (uint inSteps)
+
+inline
+
+

Number of simulation steps between wheel collision tests when the vehicle is inactive. Default is 1. 0 = never, 1 = every step, 2 = every other step, etc. Note that if a vehicle has multiple wheels and the number of steps > 1, the wheels will be tested in a round robin fashion. If there are multiple vehicles, the tests will be spread out based on the BodyID of the vehicle. This number can be lower than the number of steps when the vehicle is active as the only purpose of this test is to allow the vehicle to wake up in response to bodies moving into the wheels but not touching the body of the vehicle.

+ +
+
+ +

◆ SetPostCollideCallback()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::SetPostCollideCallback (const StepCallbackinPostCollideCallback)
+
+inline
+
+ +
+
+ +

◆ SetPostStepCallback()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::SetPostStepCallback (const StepCallbackinPostStepCallback)
+
+inline
+
+ +
+
+ +

◆ SetPreStepCallback()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::SetPreStepCallback (const StepCallbackinPreStepCallback)
+
+inline
+
+ +
+
+ +

◆ SetupVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::SetupVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SetVehicleCollisionTester()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::SetVehicleCollisionTester (const VehicleCollisionTesterinTester)
+
+inline
+
+ +

Set the interface that tests collision between wheel and ground.

+ +
+
+ +

◆ SolvePositionConstraint()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool VehicleConstraint::SolvePositionConstraint (float inDeltaTime,
float inBaumgarte 
)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ SolveVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
bool VehicleConstraint::SolveVelocityConstraint (float inDeltaTime)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+ +

◆ WarmStartVelocityConstraint()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraint::WarmStartVelocityConstraint (float inWarmStartImpulseRatio)
+
+overridevirtual
+
+ +

Implements Constraint.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_constraint.js b/class_vehicle_constraint.js new file mode 100644 index 000000000..4091cb3bc --- /dev/null +++ b/class_vehicle_constraint.js @@ -0,0 +1,53 @@ +var class_vehicle_constraint = +[ + [ "CombineFunction", "class_vehicle_constraint.html#a98e6b9822af90bf4d3a513d04acd5bc8", null ], + [ "StepCallback", "class_vehicle_constraint.html#afbba50dfdf1338531619fe6304fe8ca2", null ], + [ "VehicleConstraint", "class_vehicle_constraint.html#af1d28eee52fc3cb7a2f8b8a81edfc464", null ], + [ "~VehicleConstraint", "class_vehicle_constraint.html#a9ea9a006933b3e0b1938b3b247957830", null ], + [ "BuildIslands", "class_vehicle_constraint.html#ad04e72e964c227c63e9c2c264de269c9", null ], + [ "BuildIslandSplits", "class_vehicle_constraint.html#a3e1637cfc4d982db7ba9116da7986adf", null ], + [ "DrawConstraint", "class_vehicle_constraint.html#af2493620d3e9d960b3cbf0641c182251", null ], + [ "DrawConstraintLimits", "class_vehicle_constraint.html#aa5ecf61104253599b367ce944f9a3dba", null ], + [ "GetCombineFriction", "class_vehicle_constraint.html#a2d6d79ed657818da23c2ede0bc326f13", null ], + [ "GetConstraintSettings", "class_vehicle_constraint.html#af953060386f731482956bb772840262c", null ], + [ "GetController", "class_vehicle_constraint.html#a4f55ac332056282078f054e099b147cc", null ], + [ "GetController", "class_vehicle_constraint.html#ab0b1fdc09970442c9cb800cbadcf9643", null ], + [ "GetGravityOverride", "class_vehicle_constraint.html#a557d0f6ff57dd2b6aa3a2f6da7e38f8e", null ], + [ "GetLocalForward", "class_vehicle_constraint.html#a5a54f4f23549e7d828e4a2e51fcfc312", null ], + [ "GetLocalUp", "class_vehicle_constraint.html#a9e88c415ed7c4ae5cea93506fd53ae28", null ], + [ "GetNumStepsBetweenCollisionTestActive", "class_vehicle_constraint.html#aa5612804e5026fcc8c90b0bfab6aba48", null ], + [ "GetNumStepsBetweenCollisionTestInactive", "class_vehicle_constraint.html#a261afc478f9af64ffbf377f86b705f55", null ], + [ "GetPostCollideCallback", "class_vehicle_constraint.html#aa666c4c14ae6b42d5d578ce3c425726b", null ], + [ "GetPostStepCallback", "class_vehicle_constraint.html#a55c495a44c94d98437ea4254ee8ecfb7", null ], + [ "GetPreStepCallback", "class_vehicle_constraint.html#a06c77bdf083e33a1814e09b9cdaa74f9", null ], + [ "GetSubType", "class_vehicle_constraint.html#a989fc35253ed8da61981107b0fc19fba", null ], + [ "GetVehicleBody", "class_vehicle_constraint.html#a402cd50d87d5f478036104b9185fb2db", null ], + [ "GetWheel", "class_vehicle_constraint.html#a6d90f054b9fa121d8ec9b1e2f0dcba65", null ], + [ "GetWheel", "class_vehicle_constraint.html#a205699c8c9916b774790a8f87a43d61c", null ], + [ "GetWheelLocalBasis", "class_vehicle_constraint.html#ad752f73785ddd88b0e4776101d914f38", null ], + [ "GetWheelLocalTransform", "class_vehicle_constraint.html#a26fa80f7292448dd869df47c46a30adf", null ], + [ "GetWheels", "class_vehicle_constraint.html#a5b39b845e91504642e180a4f35df0a45", null ], + [ "GetWheels", "class_vehicle_constraint.html#af2a24975a01de3cf22ab55ba2ac6ed74", null ], + [ "GetWheelWorldTransform", "class_vehicle_constraint.html#ab4e43b201b7379b643820447daae173c", null ], + [ "GetWorldUp", "class_vehicle_constraint.html#a6f86aee9e1cde819a5cbe56fa0a6aa4e", null ], + [ "IsActive", "class_vehicle_constraint.html#a44c4c794a9bc8e0812e72ee67644418e", null ], + [ "IsGravityOverridden", "class_vehicle_constraint.html#a47a9c30e28487e4a50e88b618168c01b", null ], + [ "NotifyShapeChanged", "class_vehicle_constraint.html#ac3df25ba1e2c0a85e46a1b93702155cf", null ], + [ "OverrideGravity", "class_vehicle_constraint.html#ad2bda8140c63b7f54330e34c5050c23a", null ], + [ "ResetGravityOverride", "class_vehicle_constraint.html#a1093abfb21649ac7c26dffc59cb27dfe", null ], + [ "ResetWarmStart", "class_vehicle_constraint.html#a181b7955873518cae4b3a1b5f23979d5", null ], + [ "RestoreState", "class_vehicle_constraint.html#a2d36c8bcd57ab5136e962bd03f1992e8", null ], + [ "SaveState", "class_vehicle_constraint.html#a6bdcc90af7d830f5821534d34be01ff7", null ], + [ "SetCombineFriction", "class_vehicle_constraint.html#a1147d607170dca53a0b3be6747022a55", null ], + [ "SetMaxPitchRollAngle", "class_vehicle_constraint.html#a54aac9425dccebec4565b02df9351641", null ], + [ "SetNumStepsBetweenCollisionTestActive", "class_vehicle_constraint.html#a0a7585ead6b614188ac35590495843e1", null ], + [ "SetNumStepsBetweenCollisionTestInactive", "class_vehicle_constraint.html#a441d4897905f6b4e950cc885dd4a4c63", null ], + [ "SetPostCollideCallback", "class_vehicle_constraint.html#ab3d5ac04f11fada0c2bc464b187a5986", null ], + [ "SetPostStepCallback", "class_vehicle_constraint.html#af3e47429a8c1150b9e6c01b4b8059a5e", null ], + [ "SetPreStepCallback", "class_vehicle_constraint.html#ad6330e63345c4ab1e665edd015aab35b", null ], + [ "SetupVelocityConstraint", "class_vehicle_constraint.html#a7db85aa03eb1cadb974ca4600204daa5", null ], + [ "SetVehicleCollisionTester", "class_vehicle_constraint.html#a52476f3cd6814c10993dacb4e3dd03cd", null ], + [ "SolvePositionConstraint", "class_vehicle_constraint.html#af344b4fb6def1c50f03f1c30d9fca3c2", null ], + [ "SolveVelocityConstraint", "class_vehicle_constraint.html#a3706f414ea9608bcffc2b481f6a88549", null ], + [ "WarmStartVelocityConstraint", "class_vehicle_constraint.html#a74f3a452490769c8e1a110a967dc02ff", null ] +]; \ No newline at end of file diff --git a/class_vehicle_constraint.png b/class_vehicle_constraint.png new file mode 100644 index 000000000..37b698938 Binary files /dev/null and b/class_vehicle_constraint.png differ diff --git a/class_vehicle_constraint_settings-members.html b/class_vehicle_constraint_settings-members.html new file mode 100644 index 000000000..a825bfaca --- /dev/null +++ b/class_vehicle_constraint_settings-members.html @@ -0,0 +1,147 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleConstraintSettings Member List
+
+
+ +

This is the complete list of members for VehicleConstraintSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< ConstraintSettings >inline
cEmbeddedRefTarget< ConstraintSettings >protectedstatic
ConstraintResult typedefConstraintSettings
GetRefCount() constRefTarget< ConstraintSettings >inline
mAntiRollBarsVehicleConstraintSettings
mConstraintPriorityConstraintSettings
mControllerVehicleConstraintSettings
mDrawConstraintSizeConstraintSettings
mEnabledConstraintSettings
mForwardVehicleConstraintSettings
mMaxPitchRollAngleVehicleConstraintSettings
mNumPositionStepsOverrideConstraintSettings
mNumVelocityStepsOverrideConstraintSettings
mRefCountRefTarget< ConstraintSettings >mutableprotected
mUpVehicleConstraintSettings
mUserDataConstraintSettings
mWheelsVehicleConstraintSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< ConstraintSettings >::operator=(const RefTarget &)RefTarget< ConstraintSettings >inline
RefTarget()=defaultRefTarget< ConstraintSettings >inline
RefTarget(const RefTarget &)RefTarget< ConstraintSettings >inline
Release() constRefTarget< ConstraintSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideVehicleConstraintSettingsprotectedvirtual
SaveBinaryState(StreamOut &inStream) const overrideVehicleConstraintSettingsvirtual
SetEmbedded() constRefTarget< ConstraintSettings >inline
sInternalGetRefCountOffset()RefTarget< ConstraintSettings >inlinestatic
sRestoreFromBinaryState(StreamIn &inStream)ConstraintSettingsstatic
~RefTarget()RefTarget< ConstraintSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_vehicle_constraint_settings.html b/class_vehicle_constraint_settings.html new file mode 100644 index 000000000..bf0f040d2 --- /dev/null +++ b/class_vehicle_constraint_settings.html @@ -0,0 +1,405 @@ + + + + + + + +Jolt Physics: VehicleConstraintSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleConstraintSettings Class Reference
+
+
+ +

#include <VehicleConstraint.h>

+
+Inheritance diagram for VehicleConstraintSettings:
+
+
+ + +ConstraintSettings +SerializableObject +RefTarget< ConstraintSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the constraint settings in binary form to inStream.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< ConstraintSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Vec3 mUp { 0, 1, 0 }
 Vector indicating the up direction of the vehicle (in local space to the body)
 
Vec3 mForward { 0, 0, 1 }
 Vector indicating forward direction of the vehicle (in local space to the body)
 
float mMaxPitchRollAngle = JPH_PI
 Defines the maximum pitch/roll angle (rad), can be used to avoid the car from getting upside down. The vehicle up direction will stay within a cone centered around the up axis with half top angle mMaxPitchRollAngle, set to pi to turn off.
 
Array< Ref< WheelSettings > > mWheels
 List of wheels and their properties.
 
Array< VehicleAntiRollBarmAntiRollBars
 List of anti rollbars and their properties.
 
Ref< VehicleControllerSettingsmController
 Defines how the vehicle can accelerate / decelerate.
 
- Public Attributes inherited from ConstraintSettings
bool mEnabled = true
 If this constraint is enabled initially. Use Constraint::SetEnabled to toggle after creation.
 
uint32 mConstraintPriority = 0
 
uint mNumVelocityStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver velocity iterations to run, 0 means use the default in PhysicsSettings::mNumVelocitySteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
uint mNumPositionStepsOverride = 0
 Used only when the constraint is active. Override for the number of solver position iterations to run, 0 means use the default in PhysicsSettings::mNumPositionSteps. The number of iterations to use is the max of all contacts and constraints in the island.
 
float mDrawConstraintSize = 1.0f
 Size of constraint when drawing it through the debug renderer.
 
uint64 mUserData = 0
 User data value (can be used by application)
 
+ + + + +

+Protected Member Functions

virtual void RestoreBinaryState (StreamIn &inStream) override
 This function should not be called directly, it is used by sRestoreFromBinaryState.
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ConstraintSettings
using ConstraintResult = Result< Ref< ConstraintSettings > >
 
- Static Public Member Functions inherited from ConstraintSettings
static ConstraintResult sRestoreFromBinaryState (StreamIn &inStream)
 Creates a constraint of the correct type and restores its contents from the binary stream inStream.
 
- Static Public Member Functions inherited from RefTarget< ConstraintSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< ConstraintSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< ConstraintSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Configuration for constraint that simulates a wheeled vehicle.

+

The properties in this constraint are largely based on "Car Physics for Games" by Marco Monster. See: https://www.asawicki.info/Mirror/Car%20Physics%20for%20Games/Car%20Physics%20for%20Games.html

+

Member Function Documentation

+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraintSettings::RestoreBinaryState (StreamIninStream)
+
+overrideprotectedvirtual
+
+ +

This function should not be called directly, it is used by sRestoreFromBinaryState.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleConstraintSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the constraint settings in binary form to inStream.

+ +

Reimplemented from ConstraintSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mAntiRollBars

+ +
+
+ + + + +
Array<VehicleAntiRollBar> VehicleConstraintSettings::mAntiRollBars
+
+ +

List of anti rollbars and their properties.

+ +
+
+ +

◆ mController

+ +
+
+ + + + +
Ref<VehicleControllerSettings> VehicleConstraintSettings::mController
+
+ +

Defines how the vehicle can accelerate / decelerate.

+ +
+
+ +

◆ mForward

+ +
+
+ + + + +
Vec3 VehicleConstraintSettings::mForward { 0, 0, 1 }
+
+ +

Vector indicating forward direction of the vehicle (in local space to the body)

+ +
+
+ +

◆ mMaxPitchRollAngle

+ +
+
+ + + + +
float VehicleConstraintSettings::mMaxPitchRollAngle = JPH_PI
+
+ +

Defines the maximum pitch/roll angle (rad), can be used to avoid the car from getting upside down. The vehicle up direction will stay within a cone centered around the up axis with half top angle mMaxPitchRollAngle, set to pi to turn off.

+ +
+
+ +

◆ mUp

+ +
+
+ + + + +
Vec3 VehicleConstraintSettings::mUp { 0, 1, 0 }
+
+ +

Vector indicating the up direction of the vehicle (in local space to the body)

+ +
+
+ +

◆ mWheels

+ +
+
+ + + + +
Array<Ref<WheelSettings> > VehicleConstraintSettings::mWheels
+
+ +

List of wheels and their properties.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_constraint_settings.js b/class_vehicle_constraint_settings.js new file mode 100644 index 000000000..7a2d656a0 --- /dev/null +++ b/class_vehicle_constraint_settings.js @@ -0,0 +1,11 @@ +var class_vehicle_constraint_settings = +[ + [ "RestoreBinaryState", "class_vehicle_constraint_settings.html#a710a5387a975c46e52fb4a860cec6c75", null ], + [ "SaveBinaryState", "class_vehicle_constraint_settings.html#ad880e9519583ffb70b93bec474176fd6", null ], + [ "mAntiRollBars", "class_vehicle_constraint_settings.html#a6d0f45021a83347450f96d6d597dd922", null ], + [ "mController", "class_vehicle_constraint_settings.html#a0d879ac8a47fb2584e23c6d0c5254d53", null ], + [ "mForward", "class_vehicle_constraint_settings.html#a8b5ce772889e8a121a3975f09dc511a0", null ], + [ "mMaxPitchRollAngle", "class_vehicle_constraint_settings.html#ac9f0a4176f10867c466a9dc65b546b45", null ], + [ "mUp", "class_vehicle_constraint_settings.html#a90697fd39e19d071664f0fec05d75764", null ], + [ "mWheels", "class_vehicle_constraint_settings.html#a16448108c04763f3b069d0e2b2169403", null ] +]; \ No newline at end of file diff --git a/class_vehicle_constraint_settings.png b/class_vehicle_constraint_settings.png new file mode 100644 index 000000000..ddf180411 Binary files /dev/null and b/class_vehicle_constraint_settings.png differ diff --git a/class_vehicle_controller-members.html b/class_vehicle_controller-members.html new file mode 100644 index 000000000..dd4df0b7a --- /dev/null +++ b/class_vehicle_controller-members.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleController Member List
+
+
+ +

This is the complete list of members for VehicleController, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< VehicleController >inline
AllowSleep() const =0VehicleControllerprotectedpure virtual
cEmbeddedRefTarget< VehicleController >protectedstatic
ConstructWheel(const WheelSettings &inWheel) const =0VehicleControllerprotectedpure virtual
Draw(DebugRenderer *inRenderer) const =0VehicleControllerprotectedpure virtual
GetRefCount() constRefTarget< VehicleController >inline
mConstraintVehicleControllerprotected
mRefCountRefTarget< VehicleController >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< VehicleController >::operator=(const RefTarget &)RefTarget< VehicleController >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PostCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem)=0VehicleControllerprotectedpure virtual
PreCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem)=0VehicleControllerprotectedpure virtual
RefTarget()=defaultRefTarget< VehicleController >inline
RefTarget(const RefTarget &)RefTarget< VehicleController >inline
Release() constRefTarget< VehicleController >inline
RestoreState(StateRecorder &inStream)=0VehicleControllerprotectedpure virtual
SaveState(StateRecorder &inStream) const =0VehicleControllerprotectedpure virtual
SetEmbedded() constRefTarget< VehicleController >inline
sInternalGetRefCountOffset()RefTarget< VehicleController >inlinestatic
SolveLongitudinalAndLateralConstraints(float inDeltaTime)=0VehicleControllerprotectedpure virtual
VehicleConstraintVehicleControllerfriend
VehicleController(VehicleConstraint &inConstraint)VehicleControllerinlineexplicit
~RefTarget()RefTarget< VehicleController >inline
~VehicleController()=defaultVehicleControllervirtual
+
+ + + + diff --git a/class_vehicle_controller.html b/class_vehicle_controller.html new file mode 100644 index 000000000..fcc56634d --- /dev/null +++ b/class_vehicle_controller.html @@ -0,0 +1,572 @@ + + + + + + + +Jolt Physics: VehicleController Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleController Class Referenceabstract
+
+
+ +

Runtime data for interface that controls acceleration / deceleration of the vehicle. + More...

+ +

#include <VehicleController.h>

+
+Inheritance diagram for VehicleController:
+
+
+ + +RefTarget< VehicleController > +NonCopyable +TrackedVehicleController +WheeledVehicleController +MotorcycleController + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE VehicleController (VehicleConstraint &inConstraint)
 Constructor / destructor.
 
virtual ~VehicleController ()=default
 
- Public Member Functions inherited from RefTarget< VehicleController >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual WheelConstructWheel (const WheelSettings &inWheel) const =0
 
virtual bool AllowSleep () const =0
 
virtual void PreCollide (float inDeltaTime, PhysicsSystem &inPhysicsSystem)=0
 
virtual void PostCollide (float inDeltaTime, PhysicsSystem &inPhysicsSystem)=0
 
virtual bool SolveLongitudinalAndLateralConstraints (float inDeltaTime)=0
 
virtual void SaveState (StateRecorder &inStream) const =0
 
virtual void RestoreState (StateRecorder &inStream)=0
 
virtual void Draw (DebugRenderer *inRenderer) const =0
 
+ + + + + + + + +

+Protected Attributes

VehicleConstraintmConstraint
 The vehicle constraint we belong to.
 
- Protected Attributes inherited from RefTarget< VehicleController >
atomic< uint32mRefCount
 Current reference count.
 
+ + + +

+Friends

class VehicleConstraint
 
+ + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< VehicleController >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Static Protected Attributes inherited from RefTarget< VehicleController >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Runtime data for interface that controls acceleration / deceleration of the vehicle.

+

Constructor & Destructor Documentation

+ +

◆ VehicleController()

+ +
+
+ + + + + +
+ + + + + + + + +
JPH_OVERRIDE_NEW_DELETE VehicleController::VehicleController (VehicleConstraintinConstraint)
+
+inlineexplicit
+
+ +

Constructor / destructor.

+ +
+
+ +

◆ ~VehicleController()

+ +
+
+ + + + + +
+ + + + + + + +
virtual VehicleController::~VehicleController ()
+
+virtualdefault
+
+ +
+
+

Member Function Documentation

+ +

◆ AllowSleep()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool VehicleController::AllowSleep () const
+
+protectedpure virtual
+
+
+ +

◆ ConstructWheel()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Wheel * VehicleController::ConstructWheel (const WheelSettingsinWheel) const
+
+protectedpure virtual
+
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void VehicleController::Draw (DebugRendererinRenderer) const
+
+protectedpure virtual
+
+
+ +

◆ PostCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void VehicleController::PostCollide (float inDeltaTime,
PhysicsSysteminPhysicsSystem 
)
+
+protectedpure virtual
+
+
+ +

◆ PreCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void VehicleController::PreCollide (float inDeltaTime,
PhysicsSysteminPhysicsSystem 
)
+
+protectedpure virtual
+
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void VehicleController::RestoreState (StateRecorderinStream)
+
+protectedpure virtual
+
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void VehicleController::SaveState (StateRecorderinStream) const
+
+protectedpure virtual
+
+
+ +

◆ SolveLongitudinalAndLateralConstraints()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool VehicleController::SolveLongitudinalAndLateralConstraints (float inDeltaTime)
+
+protectedpure virtual
+
+
+

Friends And Related Symbol Documentation

+ +

◆ VehicleConstraint

+ +
+
+ + + + + +
+ + + + +
friend class VehicleConstraint
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ mConstraint

+ +
+
+ + + + + +
+ + + + +
VehicleConstraint& VehicleController::mConstraint
+
+protected
+
+ +

The vehicle constraint we belong to.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_vehicle_controller.js b/class_vehicle_controller.js new file mode 100644 index 000000000..7f904f7c0 --- /dev/null +++ b/class_vehicle_controller.js @@ -0,0 +1,15 @@ +var class_vehicle_controller = +[ + [ "VehicleController", "class_vehicle_controller.html#ad5cad3b5a580aaf05e36e4c350db37cb", null ], + [ "~VehicleController", "class_vehicle_controller.html#adaf1b8a1da0e7b167c8849e13743809c", null ], + [ "AllowSleep", "class_vehicle_controller.html#a036140f704fc850f06f8c4072c91276c", null ], + [ "ConstructWheel", "class_vehicle_controller.html#a67f4c989e175054bb615082afef27c45", null ], + [ "Draw", "class_vehicle_controller.html#a274a1450cbb816e3150d26237bf3725a", null ], + [ "PostCollide", "class_vehicle_controller.html#a0a005727385292dd06ad30398e1eef0a", null ], + [ "PreCollide", "class_vehicle_controller.html#a3561ef0070d906d1f0fbfa11bfa28210", null ], + [ "RestoreState", "class_vehicle_controller.html#a64cf71ec1f7bd0e92a08c4292f9f2515", null ], + [ "SaveState", "class_vehicle_controller.html#ae169fc92f5bfadd69ae4afe3c81e799d", null ], + [ "SolveLongitudinalAndLateralConstraints", "class_vehicle_controller.html#abb6de4527ea93a58f69791c7c7093846", null ], + [ "VehicleConstraint", "class_vehicle_controller.html#a30b73bf12f0dea921ce21318d08cb7c0", null ], + [ "mConstraint", "class_vehicle_controller.html#af93ef5080e32c5558d6b594da7080896", null ] +]; \ No newline at end of file diff --git a/class_vehicle_controller.png b/class_vehicle_controller.png new file mode 100644 index 000000000..1df04d757 Binary files /dev/null and b/class_vehicle_controller.png differ diff --git a/class_vehicle_controller_settings-members.html b/class_vehicle_controller_settings-members.html new file mode 100644 index 000000000..56cd32831 --- /dev/null +++ b/class_vehicle_controller_settings-members.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleControllerSettings Member List
+
+
+ +

This is the complete list of members for VehicleControllerSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< VehicleControllerSettings >inline
cEmbeddedRefTarget< VehicleControllerSettings >protectedstatic
ConstructController(VehicleConstraint &inConstraint) const =0VehicleControllerSettingspure virtual
GetRefCount() constRefTarget< VehicleControllerSettings >inline
mRefCountRefTarget< VehicleControllerSettings >mutableprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< VehicleControllerSettings >::operator=(const RefTarget &)RefTarget< VehicleControllerSettings >inline
RefTarget()=defaultRefTarget< VehicleControllerSettings >inline
RefTarget(const RefTarget &)RefTarget< VehicleControllerSettings >inline
Release() constRefTarget< VehicleControllerSettings >inline
RestoreBinaryState(StreamIn &inStream)=0VehicleControllerSettingspure virtual
SaveBinaryState(StreamOut &inStream) const =0VehicleControllerSettingspure virtual
SetEmbedded() constRefTarget< VehicleControllerSettings >inline
sInternalGetRefCountOffset()RefTarget< VehicleControllerSettings >inlinestatic
~RefTarget()RefTarget< VehicleControllerSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_vehicle_controller_settings.html b/class_vehicle_controller_settings.html new file mode 100644 index 000000000..7de1183db --- /dev/null +++ b/class_vehicle_controller_settings.html @@ -0,0 +1,293 @@ + + + + + + + +Jolt Physics: VehicleControllerSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleControllerSettings Class Referenceabstract
+
+
+ +

Basic settings object for interface that controls acceleration / deceleration of the vehicle. + More...

+ +

#include <VehicleController.h>

+
+Inheritance diagram for VehicleControllerSettings:
+
+
+ + +SerializableObject +RefTarget< VehicleControllerSettings > +NonCopyable +TrackedVehicleControllerSettings +WheeledVehicleControllerSettings +MotorcycleControllerSettings + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const =0
 Saves the contents of the controller settings in binary form to inStream.
 
virtual void RestoreBinaryState (StreamIn &inStream)=0
 Restore the contents of the controller settings in binary form from inStream.
 
virtual VehicleControllerConstructController (VehicleConstraint &inConstraint) const =0
 Create an instance of the vehicle controller class.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< VehicleControllerSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< VehicleControllerSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< VehicleControllerSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< VehicleControllerSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Basic settings object for interface that controls acceleration / deceleration of the vehicle.

+

Member Function Documentation

+ +

◆ ConstructController()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual VehicleController * VehicleControllerSettings::ConstructController (VehicleConstraintinConstraint) const
+
+pure virtual
+
+ +

Create an instance of the vehicle controller class.

+ +

Implemented in MotorcycleControllerSettings, TrackedVehicleControllerSettings, and WheeledVehicleControllerSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void VehicleControllerSettings::RestoreBinaryState (StreamIninStream)
+
+pure virtual
+
+ +

Restore the contents of the controller settings in binary form from inStream.

+ +

Implemented in MotorcycleControllerSettings, TrackedVehicleControllerSettings, and WheeledVehicleControllerSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void VehicleControllerSettings::SaveBinaryState (StreamOutinStream) const
+
+pure virtual
+
+ +

Saves the contents of the controller settings in binary form to inStream.

+ +

Implemented in MotorcycleControllerSettings, TrackedVehicleControllerSettings, and WheeledVehicleControllerSettings.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/class_vehicle_controller_settings.js b/class_vehicle_controller_settings.js new file mode 100644 index 000000000..9c818250f --- /dev/null +++ b/class_vehicle_controller_settings.js @@ -0,0 +1,6 @@ +var class_vehicle_controller_settings = +[ + [ "ConstructController", "class_vehicle_controller_settings.html#a463f96865e70f8ebecaa95b4e71a4c4d", null ], + [ "RestoreBinaryState", "class_vehicle_controller_settings.html#a5ef4840b667224faf60f1d3cc2b048e1", null ], + [ "SaveBinaryState", "class_vehicle_controller_settings.html#a8508baa59b73af00f019d542166a88cc", null ] +]; \ No newline at end of file diff --git a/class_vehicle_controller_settings.png b/class_vehicle_controller_settings.png new file mode 100644 index 000000000..5bbd07060 Binary files /dev/null and b/class_vehicle_controller_settings.png differ diff --git a/class_vehicle_differential_settings-members.html b/class_vehicle_differential_settings-members.html new file mode 100644 index 000000000..9314a6b27 --- /dev/null +++ b/class_vehicle_differential_settings-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleDifferentialSettings Member List
+
+
+ +

This is the complete list of members for VehicleDifferentialSettings, including all inherited members.

+ + + + + + + + + + +
CalculateTorqueRatio(float inLeftAngularVelocity, float inRightAngularVelocity, float &outLeftTorqueFraction, float &outRightTorqueFraction) constVehicleDifferentialSettings
mDifferentialRatioVehicleDifferentialSettings
mEngineTorqueRatioVehicleDifferentialSettings
mLeftRightSplitVehicleDifferentialSettings
mLeftWheelVehicleDifferentialSettings
mLimitedSlipRatioVehicleDifferentialSettings
mRightWheelVehicleDifferentialSettings
RestoreBinaryState(StreamIn &inStream)VehicleDifferentialSettings
SaveBinaryState(StreamOut &inStream) constVehicleDifferentialSettings
+
+ + + + diff --git a/class_vehicle_differential_settings.html b/class_vehicle_differential_settings.html new file mode 100644 index 000000000..412b075ee --- /dev/null +++ b/class_vehicle_differential_settings.html @@ -0,0 +1,344 @@ + + + + + + + +Jolt Physics: VehicleDifferentialSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleDifferentialSettings Class Reference
+
+
+ +

#include <VehicleDifferential.h>

+ + + + + + + + + + +

+Public Member Functions

void SaveBinaryState (StreamOut &inStream) const
 Saves the contents in binary form to inStream.
 
void RestoreBinaryState (StreamIn &inStream)
 Restores the contents in binary form to inStream.
 
void CalculateTorqueRatio (float inLeftAngularVelocity, float inRightAngularVelocity, float &outLeftTorqueFraction, float &outRightTorqueFraction) const
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

int mLeftWheel = -1
 Index (in mWheels) that represents the left wheel of this differential (can be -1 to indicate no wheel)
 
int mRightWheel = -1
 Index (in mWheels) that represents the right wheel of this differential (can be -1 to indicate no wheel)
 
float mDifferentialRatio = 3.42f
 Ratio between rotation speed of gear box and wheels.
 
float mLeftRightSplit = 0.5f
 Defines how the engine torque is split across the left and right wheel (0 = left, 0.5 = center, 1 = right)
 
float mLimitedSlipRatio = 1.4f
 Ratio max / min wheel speed. When this ratio is exceeded, all torque gets distributed to the slowest moving wheel. This allows implementing a limited slip differential. Set to FLT_MAX for an open differential. Value should be > 1.
 
float mEngineTorqueRatio = 1.0f
 How much of the engines torque is applied to this differential (0 = none, 1 = full), make sure the sum of all differentials is 1.
 
+

Member Function Documentation

+ +

◆ CalculateTorqueRatio()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void VehicleDifferentialSettings::CalculateTorqueRatio (float inLeftAngularVelocity,
float inRightAngularVelocity,
float & outLeftTorqueFraction,
float & outRightTorqueFraction 
) const
+
+

Calculate the torque ratio between left and right wheel

Parameters
+ + + + + +
inLeftAngularVelocityAngular velocity of left wheel (rad / s)
inRightAngularVelocityAngular velocity of right wheel (rad / s)
outLeftTorqueFractionFraction of torque that should go to the left wheel
outRightTorqueFractionFraction of torque that should go to the right wheel
+
+
+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void VehicleDifferentialSettings::RestoreBinaryState (StreamIninStream)
+
+ +

Restores the contents in binary form to inStream.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void VehicleDifferentialSettings::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the contents in binary form to inStream.

+ +
+
+

Member Data Documentation

+ +

◆ mDifferentialRatio

+ +
+
+ + + + +
float VehicleDifferentialSettings::mDifferentialRatio = 3.42f
+
+ +

Ratio between rotation speed of gear box and wheels.

+ +
+
+ +

◆ mEngineTorqueRatio

+ +
+
+ + + + +
float VehicleDifferentialSettings::mEngineTorqueRatio = 1.0f
+
+ +

How much of the engines torque is applied to this differential (0 = none, 1 = full), make sure the sum of all differentials is 1.

+ +
+
+ +

◆ mLeftRightSplit

+ +
+
+ + + + +
float VehicleDifferentialSettings::mLeftRightSplit = 0.5f
+
+ +

Defines how the engine torque is split across the left and right wheel (0 = left, 0.5 = center, 1 = right)

+ +
+
+ +

◆ mLeftWheel

+ +
+
+ + + + +
int VehicleDifferentialSettings::mLeftWheel = -1
+
+ +

Index (in mWheels) that represents the left wheel of this differential (can be -1 to indicate no wheel)

+ +
+
+ +

◆ mLimitedSlipRatio

+ +
+
+ + + + +
float VehicleDifferentialSettings::mLimitedSlipRatio = 1.4f
+
+ +

Ratio max / min wheel speed. When this ratio is exceeded, all torque gets distributed to the slowest moving wheel. This allows implementing a limited slip differential. Set to FLT_MAX for an open differential. Value should be > 1.

+ +
+
+ +

◆ mRightWheel

+ +
+
+ + + + +
int VehicleDifferentialSettings::mRightWheel = -1
+
+ +

Index (in mWheels) that represents the right wheel of this differential (can be -1 to indicate no wheel)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_differential_settings.js b/class_vehicle_differential_settings.js new file mode 100644 index 000000000..e75d89da6 --- /dev/null +++ b/class_vehicle_differential_settings.js @@ -0,0 +1,12 @@ +var class_vehicle_differential_settings = +[ + [ "CalculateTorqueRatio", "class_vehicle_differential_settings.html#adcf68680b07ae1a917bfa0a9ff0be829", null ], + [ "RestoreBinaryState", "class_vehicle_differential_settings.html#a57a075d772fdd921f8da88a9c4c2f0e7", null ], + [ "SaveBinaryState", "class_vehicle_differential_settings.html#aab96aa7556774945dbf7886849015af9", null ], + [ "mDifferentialRatio", "class_vehicle_differential_settings.html#a172648d9abd2125049692c9562488498", null ], + [ "mEngineTorqueRatio", "class_vehicle_differential_settings.html#ac0d4ed7b362ab81c9d0e0e4422e40519", null ], + [ "mLeftRightSplit", "class_vehicle_differential_settings.html#a85f84f17c3b26d4cef5b1036e3da9728", null ], + [ "mLeftWheel", "class_vehicle_differential_settings.html#a55fb4d9bec462184471ba37ec367bd90", null ], + [ "mLimitedSlipRatio", "class_vehicle_differential_settings.html#ad5556c4beadddfc653931faeafddbc18", null ], + [ "mRightWheel", "class_vehicle_differential_settings.html#ad6b9ff3394079722a2255b9ec20ecbfd", null ] +]; \ No newline at end of file diff --git a/class_vehicle_engine-members.html b/class_vehicle_engine-members.html new file mode 100644 index 000000000..6e9d1b649 --- /dev/null +++ b/class_vehicle_engine-members.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleEngine Member List
+
+
+ +

This is the complete list of members for VehicleEngine, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
AllowSleep() constVehicleEngineinline
ApplyDamping(float inDeltaTime)VehicleEngine
ApplyTorque(float inTorque, float inDeltaTime)VehicleEngine
cAngularVelocityToRPMVehicleEnginestatic
ClampRPM()VehicleEngineinline
ConvertRPMToAngle(float inRPM) constVehicleEngineinline
DrawRPM(DebugRenderer *inRenderer, RVec3Arg inPosition, Vec3Arg inForward, Vec3Arg inUp, float inSize, float inShiftDownRPM, float inShiftUpRPM) constVehicleEngine
GetAngularVelocity() constVehicleEngineinline
GetCurrentRPM() constVehicleEngineinline
GetTorque(float inAcceleration) constVehicleEngineinline
mAngularDampingVehicleEngineSettings
mInertiaVehicleEngineSettings
mMaxRPMVehicleEngineSettings
mMaxTorqueVehicleEngineSettings
mMinRPMVehicleEngineSettings
mNormalizedTorqueVehicleEngineSettings
RestoreBinaryState(StreamIn &inStream)VehicleEngineSettings
RestoreState(StateRecorder &inStream)VehicleEngine
SaveBinaryState(StreamOut &inStream) constVehicleEngineSettings
SaveState(StateRecorder &inStream) constVehicleEngine
SetCurrentRPM(float inRPM)VehicleEngineinline
VehicleEngineSettings()VehicleEngineSettings
+
+ + + + diff --git a/class_vehicle_engine.html b/class_vehicle_engine.html new file mode 100644 index 000000000..17d61ba9d --- /dev/null +++ b/class_vehicle_engine.html @@ -0,0 +1,588 @@ + + + + + + + +Jolt Physics: VehicleEngine Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleEngine Class Reference
+
+
+ +

Runtime data for engine. + More...

+ +

#include <VehicleEngine.h>

+
+Inheritance diagram for VehicleEngine:
+
+
+ + +VehicleEngineSettings + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void ClampRPM ()
 Clamp the RPM between min and max RPM.
 
float GetCurrentRPM () const
 Current rotation speed of engine in rounds per minute.
 
void SetCurrentRPM (float inRPM)
 Update rotation speed of engine in rounds per minute.
 
float GetAngularVelocity () const
 Get current angular velocity of the engine in radians / second.
 
float GetTorque (float inAcceleration) const
 
void ApplyTorque (float inTorque, float inDeltaTime)
 
void ApplyDamping (float inDeltaTime)
 
float ConvertRPMToAngle (float inRPM) const
 
void DrawRPM (DebugRenderer *inRenderer, RVec3Arg inPosition, Vec3Arg inForward, Vec3Arg inUp, float inSize, float inShiftDownRPM, float inShiftUpRPM) const
 Debug draw a RPM meter.
 
bool AllowSleep () const
 If the engine is idle we allow the vehicle to sleep.
 
void SaveState (StateRecorder &inStream) const
 Saving state for replay.
 
void RestoreState (StateRecorder &inStream)
 
- Public Member Functions inherited from VehicleEngineSettings
 VehicleEngineSettings ()
 Constructor.
 
void SaveBinaryState (StreamOut &inStream) const
 Saves the contents in binary form to inStream.
 
void RestoreBinaryState (StreamIn &inStream)
 Restores the contents in binary form to inStream.
 
+ + + + +

+Static Public Attributes

static constexpr float cAngularVelocityToRPM = 60.0f / (2.0f * JPH_PI)
 Multiply an angular velocity (rad/s) with this value to get rounds per minute (RPM)
 
+ + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from VehicleEngineSettings
float mMaxTorque = 500.0f
 Max amount of torque (Nm) that the engine can deliver.
 
float mMinRPM = 1000.0f
 Min amount of revolutions per minute (rpm) the engine can produce without stalling.
 
float mMaxRPM = 6000.0f
 Max amount of revolutions per minute (rpm) the engine can generate.
 
LinearCurve mNormalizedTorque
 Y-axis: Curve that describes a ratio of the max torque the engine can produce (0 = 0, 1 = mMaxTorque). X-axis: the fraction of the RPM of the engine (0 = mMinRPM, 1 = mMaxRPM)
 
float mInertia = 0.5f
 Moment of inertia (kg m^2) of the engine.
 
float mAngularDamping = 0.2f
 Angular damping factor of the wheel: dw/dt = -c * w.
 
+

Detailed Description

+

Runtime data for engine.

+

Member Function Documentation

+ +

◆ AllowSleep()

+ +
+
+ + + + + +
+ + + + + + + +
bool VehicleEngine::AllowSleep () const
+
+inline
+
+ +

If the engine is idle we allow the vehicle to sleep.

+ +
+
+ +

◆ ApplyDamping()

+ +
+
+ + + + + + + + +
void VehicleEngine::ApplyDamping (float inDeltaTime)
+
+

Update the engine RPM for damping

Parameters
+ + +
inDeltaTimeDelta time in seconds
+
+
+ +
+
+ +

◆ ApplyTorque()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void VehicleEngine::ApplyTorque (float inTorque,
float inDeltaTime 
)
+
+

Apply a torque to the engine rotation speed

Parameters
+ + + +
inTorqueTorque in N m
inDeltaTimeDelta time in seconds
+
+
+ +
+
+ +

◆ ClampRPM()

+ +
+
+ + + + + +
+ + + + + + + +
void VehicleEngine::ClampRPM ()
+
+inline
+
+ +

Clamp the RPM between min and max RPM.

+ +
+
+ +

◆ ConvertRPMToAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
float VehicleEngine::ConvertRPMToAngle (float inRPM) const
+
+inline
+
+ +
+
+ +

◆ DrawRPM()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void VehicleEngine::DrawRPM (DebugRendererinRenderer,
RVec3Arg inPosition,
Vec3Arg inForward,
Vec3Arg inUp,
float inSize,
float inShiftDownRPM,
float inShiftUpRPM 
) const
+
+ +

Debug draw a RPM meter.

+ +
+
+ +

◆ GetAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
float VehicleEngine::GetAngularVelocity () const
+
+inline
+
+ +

Get current angular velocity of the engine in radians / second.

+ +
+
+ +

◆ GetCurrentRPM()

+ +
+
+ + + + + +
+ + + + + + + +
float VehicleEngine::GetCurrentRPM () const
+
+inline
+
+ +

Current rotation speed of engine in rounds per minute.

+ +
+
+ +

◆ GetTorque()

+ +
+
+ + + + + +
+ + + + + + + + +
float VehicleEngine::GetTorque (float inAcceleration) const
+
+inline
+
+

Get the amount of torque (N m) that the engine can supply

Parameters
+ + +
inAccelerationHow much the gas pedal is pressed [0, 1]
+
+
+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + + + + +
void VehicleEngine::RestoreState (StateRecorderinStream)
+
+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + + + + +
void VehicleEngine::SaveState (StateRecorderinStream) const
+
+ +

Saving state for replay.

+ +
+
+ +

◆ SetCurrentRPM()

+ +
+
+ + + + + +
+ + + + + + + + +
void VehicleEngine::SetCurrentRPM (float inRPM)
+
+inline
+
+ +

Update rotation speed of engine in rounds per minute.

+ +
+
+

Member Data Documentation

+ +

◆ cAngularVelocityToRPM

+ +
+
+ + + + + +
+ + + + +
constexpr float VehicleEngine::cAngularVelocityToRPM = 60.0f / (2.0f * JPH_PI)
+
+staticconstexpr
+
+ +

Multiply an angular velocity (rad/s) with this value to get rounds per minute (RPM)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_engine.js b/class_vehicle_engine.js new file mode 100644 index 000000000..815117838 --- /dev/null +++ b/class_vehicle_engine.js @@ -0,0 +1,15 @@ +var class_vehicle_engine = +[ + [ "AllowSleep", "class_vehicle_engine.html#a542f9131ecce2c3f41526c44759b913b", null ], + [ "ApplyDamping", "class_vehicle_engine.html#ad61683b9088153079e3e47334c2caf1a", null ], + [ "ApplyTorque", "class_vehicle_engine.html#af916ceb8c4a323cee68c72465627901e", null ], + [ "ClampRPM", "class_vehicle_engine.html#a10cc014bfd4c08086fc83ef73948c7ba", null ], + [ "ConvertRPMToAngle", "class_vehicle_engine.html#a39842ae2cd4c9520f0d194814c92d3d1", null ], + [ "DrawRPM", "class_vehicle_engine.html#a1b616470faf6ab7c46026706a7c708df", null ], + [ "GetAngularVelocity", "class_vehicle_engine.html#ae6735223f4b1d1fc898309e671504731", null ], + [ "GetCurrentRPM", "class_vehicle_engine.html#ac1f11f381d186b50721cbc058931a2b5", null ], + [ "GetTorque", "class_vehicle_engine.html#a22815f9d97cb6318b0b6a3df66e0f6d5", null ], + [ "RestoreState", "class_vehicle_engine.html#a1465f66b9bddf12998cd990c8ba05140", null ], + [ "SaveState", "class_vehicle_engine.html#a14fa6274b90508346dedcc3e21864204", null ], + [ "SetCurrentRPM", "class_vehicle_engine.html#ab37d0e87f872355e595960fa18510861", null ] +]; \ No newline at end of file diff --git a/class_vehicle_engine.png b/class_vehicle_engine.png new file mode 100644 index 000000000..f7ee660aa Binary files /dev/null and b/class_vehicle_engine.png differ diff --git a/class_vehicle_engine_settings-members.html b/class_vehicle_engine_settings-members.html new file mode 100644 index 000000000..82b9279a5 --- /dev/null +++ b/class_vehicle_engine_settings-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleEngineSettings Member List
+
+
+ +

This is the complete list of members for VehicleEngineSettings, including all inherited members.

+ + + + + + + + + + +
mAngularDampingVehicleEngineSettings
mInertiaVehicleEngineSettings
mMaxRPMVehicleEngineSettings
mMaxTorqueVehicleEngineSettings
mMinRPMVehicleEngineSettings
mNormalizedTorqueVehicleEngineSettings
RestoreBinaryState(StreamIn &inStream)VehicleEngineSettings
SaveBinaryState(StreamOut &inStream) constVehicleEngineSettings
VehicleEngineSettings()VehicleEngineSettings
+
+ + + + diff --git a/class_vehicle_engine_settings.html b/class_vehicle_engine_settings.html new file mode 100644 index 000000000..01b30e7c7 --- /dev/null +++ b/class_vehicle_engine_settings.html @@ -0,0 +1,330 @@ + + + + + + + +Jolt Physics: VehicleEngineSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleEngineSettings Class Reference
+
+
+ +

Generic properties for a vehicle engine. + More...

+ +

#include <VehicleEngine.h>

+
+Inheritance diagram for VehicleEngineSettings:
+
+
+ + +VehicleEngine + +
+ + + + + + + + + + + +

+Public Member Functions

 VehicleEngineSettings ()
 Constructor.
 
void SaveBinaryState (StreamOut &inStream) const
 Saves the contents in binary form to inStream.
 
void RestoreBinaryState (StreamIn &inStream)
 Restores the contents in binary form to inStream.
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

float mMaxTorque = 500.0f
 Max amount of torque (Nm) that the engine can deliver.
 
float mMinRPM = 1000.0f
 Min amount of revolutions per minute (rpm) the engine can produce without stalling.
 
float mMaxRPM = 6000.0f
 Max amount of revolutions per minute (rpm) the engine can generate.
 
LinearCurve mNormalizedTorque
 Y-axis: Curve that describes a ratio of the max torque the engine can produce (0 = 0, 1 = mMaxTorque). X-axis: the fraction of the RPM of the engine (0 = mMinRPM, 1 = mMaxRPM)
 
float mInertia = 0.5f
 Moment of inertia (kg m^2) of the engine.
 
float mAngularDamping = 0.2f
 Angular damping factor of the wheel: dw/dt = -c * w.
 
+

Detailed Description

+

Generic properties for a vehicle engine.

+

Constructor & Destructor Documentation

+ +

◆ VehicleEngineSettings()

+ +
+
+ + + + + + + +
VehicleEngineSettings::VehicleEngineSettings ()
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void VehicleEngineSettings::RestoreBinaryState (StreamIninStream)
+
+ +

Restores the contents in binary form to inStream.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void VehicleEngineSettings::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the contents in binary form to inStream.

+ +
+
+

Member Data Documentation

+ +

◆ mAngularDamping

+ +
+
+ + + + +
float VehicleEngineSettings::mAngularDamping = 0.2f
+
+ +

Angular damping factor of the wheel: dw/dt = -c * w.

+ +
+
+ +

◆ mInertia

+ +
+
+ + + + +
float VehicleEngineSettings::mInertia = 0.5f
+
+ +

Moment of inertia (kg m^2) of the engine.

+ +
+
+ +

◆ mMaxRPM

+ +
+
+ + + + +
float VehicleEngineSettings::mMaxRPM = 6000.0f
+
+ +

Max amount of revolutions per minute (rpm) the engine can generate.

+ +
+
+ +

◆ mMaxTorque

+ +
+
+ + + + +
float VehicleEngineSettings::mMaxTorque = 500.0f
+
+ +

Max amount of torque (Nm) that the engine can deliver.

+ +
+
+ +

◆ mMinRPM

+ +
+
+ + + + +
float VehicleEngineSettings::mMinRPM = 1000.0f
+
+ +

Min amount of revolutions per minute (rpm) the engine can produce without stalling.

+ +
+
+ +

◆ mNormalizedTorque

+ +
+
+ + + + +
LinearCurve VehicleEngineSettings::mNormalizedTorque
+
+ +

Y-axis: Curve that describes a ratio of the max torque the engine can produce (0 = 0, 1 = mMaxTorque). X-axis: the fraction of the RPM of the engine (0 = mMinRPM, 1 = mMaxRPM)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_engine_settings.js b/class_vehicle_engine_settings.js new file mode 100644 index 000000000..e3296e476 --- /dev/null +++ b/class_vehicle_engine_settings.js @@ -0,0 +1,12 @@ +var class_vehicle_engine_settings = +[ + [ "VehicleEngineSettings", "class_vehicle_engine_settings.html#aa326151c7c343427669a4790b84d7697", null ], + [ "RestoreBinaryState", "class_vehicle_engine_settings.html#a07beafb1531780053169dbc05283ed26", null ], + [ "SaveBinaryState", "class_vehicle_engine_settings.html#a82b4677535f7f39e68081227caf4b547", null ], + [ "mAngularDamping", "class_vehicle_engine_settings.html#a721c1a1f97766d41844a337ca4ba1e0b", null ], + [ "mInertia", "class_vehicle_engine_settings.html#abe75cc5c2522753f6f5e4ffc6035a183", null ], + [ "mMaxRPM", "class_vehicle_engine_settings.html#a68b6fa14900e23076bb25b3280fef3c5", null ], + [ "mMaxTorque", "class_vehicle_engine_settings.html#a406aada0f8bcbf536d743de1f8f77329", null ], + [ "mMinRPM", "class_vehicle_engine_settings.html#a0ac03e624a16d07af8d20dee5a1924bb", null ], + [ "mNormalizedTorque", "class_vehicle_engine_settings.html#a2aa42e9f8a1eabe44171c7b2344661f0", null ] +]; \ No newline at end of file diff --git a/class_vehicle_engine_settings.png b/class_vehicle_engine_settings.png new file mode 100644 index 000000000..d7a944566 Binary files /dev/null and b/class_vehicle_engine_settings.png differ diff --git a/class_vehicle_track-members.html b/class_vehicle_track-members.html new file mode 100644 index 000000000..20d7bb686 --- /dev/null +++ b/class_vehicle_track-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleTrack Member List
+
+
+ +

This is the complete list of members for VehicleTrack, including all inherited members.

+ + + + + + + + + + + + +
mAngularDampingVehicleTrackSettings
mAngularVelocityVehicleTrack
mDifferentialRatioVehicleTrackSettings
mDrivenWheelVehicleTrackSettings
mInertiaVehicleTrackSettings
mMaxBrakeTorqueVehicleTrackSettings
mWheelsVehicleTrackSettings
RestoreBinaryState(StreamIn &inStream)VehicleTrackSettings
RestoreState(StateRecorder &inStream)VehicleTrack
SaveBinaryState(StreamOut &inStream) constVehicleTrackSettings
SaveState(StateRecorder &inStream) constVehicleTrack
+
+ + + + diff --git a/class_vehicle_track.html b/class_vehicle_track.html new file mode 100644 index 000000000..db2a6dcc7 --- /dev/null +++ b/class_vehicle_track.html @@ -0,0 +1,235 @@ + + + + + + + +Jolt Physics: VehicleTrack Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleTrack Class Reference
+
+
+ +

Runtime data for tank tracks. + More...

+ +

#include <VehicleTrack.h>

+
+Inheritance diagram for VehicleTrack:
+
+
+ + +VehicleTrackSettings + +
+ + + + + + + + + + + + + + +

+Public Member Functions

void SaveState (StateRecorder &inStream) const
 Saving state for replay.
 
void RestoreState (StateRecorder &inStream)
 
- Public Member Functions inherited from VehicleTrackSettings
void SaveBinaryState (StreamOut &inStream) const
 Saves the contents in binary form to inStream.
 
void RestoreBinaryState (StreamIn &inStream)
 Restores the contents in binary form to inStream.
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

float mAngularVelocity = 0.0f
 Angular velocity of the driven wheel, will determine the speed of the entire track.
 
- Public Attributes inherited from VehicleTrackSettings
uint mDrivenWheel
 Which wheel on the track is connected to the engine.
 
Array< uintmWheels
 Indices of wheels that are inside this track, should include the driven wheel too.
 
float mInertia = 10.0f
 Moment of inertia (kg m^2) of the track and its wheels as seen on the driven wheel.
 
float mAngularDamping = 0.5f
 Damping factor of track and its wheels: dw/dt = -c * w as seen on the driven wheel.
 
float mMaxBrakeTorque = 15000.0f
 How much torque (Nm) the brakes can apply on the driven wheel.
 
float mDifferentialRatio = 6.0f
 Ratio between rotation speed of gear box and driven wheel of track.
 
+

Detailed Description

+

Runtime data for tank tracks.

+

Member Function Documentation

+ +

◆ RestoreState()

+ +
+
+ + + + + + + + +
void VehicleTrack::RestoreState (StateRecorderinStream)
+
+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + + + + +
void VehicleTrack::SaveState (StateRecorderinStream) const
+
+ +

Saving state for replay.

+ +
+
+

Member Data Documentation

+ +

◆ mAngularVelocity

+ +
+
+ + + + +
float VehicleTrack::mAngularVelocity = 0.0f
+
+ +

Angular velocity of the driven wheel, will determine the speed of the entire track.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_track.js b/class_vehicle_track.js new file mode 100644 index 000000000..73de2cc2d --- /dev/null +++ b/class_vehicle_track.js @@ -0,0 +1,6 @@ +var class_vehicle_track = +[ + [ "RestoreState", "class_vehicle_track.html#a0252bddefcd767ca47517706f168bc00", null ], + [ "SaveState", "class_vehicle_track.html#af25ef64c8e7fcdab73dc212f4f40d383", null ], + [ "mAngularVelocity", "class_vehicle_track.html#a5f6ed5aff504c081d9ad67fc3dc8edec", null ] +]; \ No newline at end of file diff --git a/class_vehicle_track.png b/class_vehicle_track.png new file mode 100644 index 000000000..02d0c76a5 Binary files /dev/null and b/class_vehicle_track.png differ diff --git a/class_vehicle_track_settings-members.html b/class_vehicle_track_settings-members.html new file mode 100644 index 000000000..2f67b7f43 --- /dev/null +++ b/class_vehicle_track_settings-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleTrackSettings Member List
+
+
+ +

This is the complete list of members for VehicleTrackSettings, including all inherited members.

+ + + + + + + + + +
mAngularDampingVehicleTrackSettings
mDifferentialRatioVehicleTrackSettings
mDrivenWheelVehicleTrackSettings
mInertiaVehicleTrackSettings
mMaxBrakeTorqueVehicleTrackSettings
mWheelsVehicleTrackSettings
RestoreBinaryState(StreamIn &inStream)VehicleTrackSettings
SaveBinaryState(StreamOut &inStream) constVehicleTrackSettings
+
+ + + + diff --git a/class_vehicle_track_settings.html b/class_vehicle_track_settings.html new file mode 100644 index 000000000..5cdc0db91 --- /dev/null +++ b/class_vehicle_track_settings.html @@ -0,0 +1,307 @@ + + + + + + + +Jolt Physics: VehicleTrackSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleTrackSettings Class Reference
+
+
+ +

Generic properties for tank tracks. + More...

+ +

#include <VehicleTrack.h>

+
+Inheritance diagram for VehicleTrackSettings:
+
+
+ + +VehicleTrack + +
+ + + + + + + + +

+Public Member Functions

void SaveBinaryState (StreamOut &inStream) const
 Saves the contents in binary form to inStream.
 
void RestoreBinaryState (StreamIn &inStream)
 Restores the contents in binary form to inStream.
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

uint mDrivenWheel
 Which wheel on the track is connected to the engine.
 
Array< uintmWheels
 Indices of wheels that are inside this track, should include the driven wheel too.
 
float mInertia = 10.0f
 Moment of inertia (kg m^2) of the track and its wheels as seen on the driven wheel.
 
float mAngularDamping = 0.5f
 Damping factor of track and its wheels: dw/dt = -c * w as seen on the driven wheel.
 
float mMaxBrakeTorque = 15000.0f
 How much torque (Nm) the brakes can apply on the driven wheel.
 
float mDifferentialRatio = 6.0f
 Ratio between rotation speed of gear box and driven wheel of track.
 
+

Detailed Description

+

Generic properties for tank tracks.

+

Member Function Documentation

+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void VehicleTrackSettings::RestoreBinaryState (StreamIninStream)
+
+ +

Restores the contents in binary form to inStream.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void VehicleTrackSettings::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the contents in binary form to inStream.

+ +
+
+

Member Data Documentation

+ +

◆ mAngularDamping

+ +
+
+ + + + +
float VehicleTrackSettings::mAngularDamping = 0.5f
+
+ +

Damping factor of track and its wheels: dw/dt = -c * w as seen on the driven wheel.

+ +
+
+ +

◆ mDifferentialRatio

+ +
+
+ + + + +
float VehicleTrackSettings::mDifferentialRatio = 6.0f
+
+ +

Ratio between rotation speed of gear box and driven wheel of track.

+ +
+
+ +

◆ mDrivenWheel

+ +
+
+ + + + +
uint VehicleTrackSettings::mDrivenWheel
+
+ +

Which wheel on the track is connected to the engine.

+ +
+
+ +

◆ mInertia

+ +
+
+ + + + +
float VehicleTrackSettings::mInertia = 10.0f
+
+ +

Moment of inertia (kg m^2) of the track and its wheels as seen on the driven wheel.

+ +
+
+ +

◆ mMaxBrakeTorque

+ +
+
+ + + + +
float VehicleTrackSettings::mMaxBrakeTorque = 15000.0f
+
+ +

How much torque (Nm) the brakes can apply on the driven wheel.

+ +
+
+ +

◆ mWheels

+ +
+
+ + + + +
Array<uint> VehicleTrackSettings::mWheels
+
+ +

Indices of wheels that are inside this track, should include the driven wheel too.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_track_settings.js b/class_vehicle_track_settings.js new file mode 100644 index 000000000..b18116221 --- /dev/null +++ b/class_vehicle_track_settings.js @@ -0,0 +1,11 @@ +var class_vehicle_track_settings = +[ + [ "RestoreBinaryState", "class_vehicle_track_settings.html#a019707dd72812c4af4799ee1f7077115", null ], + [ "SaveBinaryState", "class_vehicle_track_settings.html#a22893d7c73b60b53e21885cdf65ac7ba", null ], + [ "mAngularDamping", "class_vehicle_track_settings.html#affda379a129ca982243cdb36017d690e", null ], + [ "mDifferentialRatio", "class_vehicle_track_settings.html#adfc2a350504c7850a1c544f6dc06f6ab", null ], + [ "mDrivenWheel", "class_vehicle_track_settings.html#aff65474e817507daa9d777ebc47d4aa1", null ], + [ "mInertia", "class_vehicle_track_settings.html#aa8f02b8434926bcb503772b9cf798d00", null ], + [ "mMaxBrakeTorque", "class_vehicle_track_settings.html#a0bd6cbda956b1149e646733fd5791a68", null ], + [ "mWheels", "class_vehicle_track_settings.html#abdcb4574025a04f9779c86d8bf3f24a4", null ] +]; \ No newline at end of file diff --git a/class_vehicle_track_settings.png b/class_vehicle_track_settings.png new file mode 100644 index 000000000..d0cbdb7e3 Binary files /dev/null and b/class_vehicle_track_settings.png differ diff --git a/class_vehicle_transmission-members.html b/class_vehicle_transmission-members.html new file mode 100644 index 000000000..cc21385ca --- /dev/null +++ b/class_vehicle_transmission-members.html @@ -0,0 +1,136 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleTransmission Member List
+
+
+ +

This is the complete list of members for VehicleTransmission, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
AllowSleep() constVehicleTransmissioninline
GetClutchFriction() constVehicleTransmissioninline
GetCurrentGear() constVehicleTransmissioninline
GetCurrentRatio() constVehicleTransmission
IsSwitchingGear() constVehicleTransmissioninline
mClutchReleaseTimeVehicleTransmissionSettings
mClutchStrengthVehicleTransmissionSettings
mGearRatiosVehicleTransmissionSettings
mModeVehicleTransmissionSettings
mReverseGearRatiosVehicleTransmissionSettings
mShiftDownRPMVehicleTransmissionSettings
mShiftUpRPMVehicleTransmissionSettings
mSwitchLatencyVehicleTransmissionSettings
mSwitchTimeVehicleTransmissionSettings
RestoreBinaryState(StreamIn &inStream)VehicleTransmissionSettings
RestoreState(StateRecorder &inStream)VehicleTransmission
SaveBinaryState(StreamOut &inStream) constVehicleTransmissionSettings
SaveState(StateRecorder &inStream) constVehicleTransmission
Set(int inCurrentGear, float inClutchFriction)VehicleTransmissioninline
Update(float inDeltaTime, float inCurrentRPM, float inForwardInput, bool inCanShiftUp)VehicleTransmission
+
+ + + + diff --git a/class_vehicle_transmission.html b/class_vehicle_transmission.html new file mode 100644 index 000000000..9fa0a0da5 --- /dev/null +++ b/class_vehicle_transmission.html @@ -0,0 +1,461 @@ + + + + + + + +Jolt Physics: VehicleTransmission Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleTransmission Class Reference
+
+
+ +

Runtime data for transmission. + More...

+ +

#include <VehicleTransmission.h>

+
+Inheritance diagram for VehicleTransmission:
+
+
+ + +VehicleTransmissionSettings + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void Set (int inCurrentGear, float inClutchFriction)
 
void Update (float inDeltaTime, float inCurrentRPM, float inForwardInput, bool inCanShiftUp)
 
int GetCurrentGear () const
 Current gear, -1 = reverse, 0 = neutral, 1 = 1st gear etc.
 
float GetClutchFriction () const
 Value between 0 and 1 indicating how much friction the clutch gives (0 = no friction, 1 = full friction)
 
bool IsSwitchingGear () const
 If the auto box is currently switching gears.
 
float GetCurrentRatio () const
 Return the transmission ratio based on the current gear (ratio between engine and differential)
 
bool AllowSleep () const
 Only allow sleeping when the transmission is idle.
 
void SaveState (StateRecorder &inStream) const
 Saving state for replay.
 
void RestoreState (StateRecorder &inStream)
 
- Public Member Functions inherited from VehicleTransmissionSettings
void SaveBinaryState (StreamOut &inStream) const
 Saves the contents in binary form to inStream.
 
void RestoreBinaryState (StreamIn &inStream)
 Restores the contents in binary form to inStream.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from VehicleTransmissionSettings
ETransmissionMode mMode = ETransmissionMode::Auto
 How to switch gears.
 
Array< float > mGearRatios { 2.66f, 1.78f, 1.3f, 1.0f, 0.74f }
 Ratio in rotation rate between engine and gear box, first element is 1st gear, 2nd element 2nd gear etc.
 
Array< float > mReverseGearRatios { -2.90f }
 Ratio in rotation rate between engine and gear box when driving in reverse.
 
float mSwitchTime = 0.5f
 How long it takes to switch gears (s), only used in auto mode.
 
float mClutchReleaseTime = 0.3f
 How long it takes to release the clutch (go to full friction), only used in auto mode.
 
float mSwitchLatency = 0.5f
 How long to wait after releasing the clutch before another switch is attempted (s), only used in auto mode.
 
float mShiftUpRPM = 4000.0f
 If RPM of engine is bigger then this we will shift a gear up, only used in auto mode.
 
float mShiftDownRPM = 2000.0f
 If RPM of engine is smaller then this we will shift a gear down, only used in auto mode.
 
float mClutchStrength = 10.0f
 Strength of the clutch when fully engaged. Total torque a clutch applies is Torque = ClutchStrength * (Velocity Engine - Avg Velocity Wheels At Clutch) (units: k m^2 s^-1)
 
+

Detailed Description

+

Runtime data for transmission.

+

Member Function Documentation

+ +

◆ AllowSleep()

+ +
+
+ + + + + +
+ + + + + + + +
bool VehicleTransmission::AllowSleep () const
+
+inline
+
+ +

Only allow sleeping when the transmission is idle.

+ +
+
+ +

◆ GetClutchFriction()

+ +
+
+ + + + + +
+ + + + + + + +
float VehicleTransmission::GetClutchFriction () const
+
+inline
+
+ +

Value between 0 and 1 indicating how much friction the clutch gives (0 = no friction, 1 = full friction)

+ +
+
+ +

◆ GetCurrentGear()

+ +
+
+ + + + + +
+ + + + + + + +
int VehicleTransmission::GetCurrentGear () const
+
+inline
+
+ +

Current gear, -1 = reverse, 0 = neutral, 1 = 1st gear etc.

+ +
+
+ +

◆ GetCurrentRatio()

+ +
+
+ + + + + + + +
float VehicleTransmission::GetCurrentRatio () const
+
+ +

Return the transmission ratio based on the current gear (ratio between engine and differential)

+ +
+
+ +

◆ IsSwitchingGear()

+ +
+
+ + + + + +
+ + + + + + + +
bool VehicleTransmission::IsSwitchingGear () const
+
+inline
+
+ +

If the auto box is currently switching gears.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + + + + +
void VehicleTransmission::RestoreState (StateRecorderinStream)
+
+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + + + + +
void VehicleTransmission::SaveState (StateRecorderinStream) const
+
+ +

Saving state for replay.

+ +
+
+ +

◆ Set()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void VehicleTransmission::Set (int inCurrentGear,
float inClutchFriction 
)
+
+inline
+
+

Set input from driver regarding the transmission (only relevant when transmission is set to manual mode)

Parameters
+ + + +
inCurrentGearCurrent gear, -1 = reverse, 0 = neutral, 1 = 1st gear etc.
inClutchFrictionValue between 0 and 1 indicating how much friction the clutch gives (0 = no friction, 1 = full friction)
+
+
+ +
+
+ +

◆ Update()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void VehicleTransmission::Update (float inDeltaTime,
float inCurrentRPM,
float inForwardInput,
bool inCanShiftUp 
)
+
+

Update the current gear and clutch friction if the transmission is in auto mode

Parameters
+ + + + + +
inDeltaTimeTime step delta time in s
inCurrentRPMCurrent RPM for engine
inForwardInputHint if the user wants to drive forward (> 0) or backwards (< 0)
inCanShiftUpIndicates if we want to allow the transmission to shift up (e.g. pass false if wheels are slipping)
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_transmission.js b/class_vehicle_transmission.js new file mode 100644 index 000000000..123aaa1ac --- /dev/null +++ b/class_vehicle_transmission.js @@ -0,0 +1,12 @@ +var class_vehicle_transmission = +[ + [ "AllowSleep", "class_vehicle_transmission.html#a237601b6ae13f2d8b31ff20981b7ac9c", null ], + [ "GetClutchFriction", "class_vehicle_transmission.html#a2dc82e524311127f8bb8d5fe2cd63809", null ], + [ "GetCurrentGear", "class_vehicle_transmission.html#a2770cd2da41162587a2addd366ba4535", null ], + [ "GetCurrentRatio", "class_vehicle_transmission.html#aa58a4bc8d9ede0b99f622a0f20b36012", null ], + [ "IsSwitchingGear", "class_vehicle_transmission.html#aebbd24ac8a0b55f474d7654507739059", null ], + [ "RestoreState", "class_vehicle_transmission.html#a1c3c2fef737c176e558081a0175f71f9", null ], + [ "SaveState", "class_vehicle_transmission.html#a9424eebce9e6a038862d1a3e66fa94ad", null ], + [ "Set", "class_vehicle_transmission.html#a4d2b3e12b61038846be21623f1c2694e", null ], + [ "Update", "class_vehicle_transmission.html#abd88a375576b8d35f854a5f687bf8acb", null ] +]; \ No newline at end of file diff --git a/class_vehicle_transmission.png b/class_vehicle_transmission.png new file mode 100644 index 000000000..3bb5ffc64 Binary files /dev/null and b/class_vehicle_transmission.png differ diff --git a/class_vehicle_transmission_settings-members.html b/class_vehicle_transmission_settings-members.html new file mode 100644 index 000000000..5725d903d --- /dev/null +++ b/class_vehicle_transmission_settings-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
VehicleTransmissionSettings Member List
+
+
+ +

This is the complete list of members for VehicleTransmissionSettings, including all inherited members.

+ + + + + + + + + + + + +
mClutchReleaseTimeVehicleTransmissionSettings
mClutchStrengthVehicleTransmissionSettings
mGearRatiosVehicleTransmissionSettings
mModeVehicleTransmissionSettings
mReverseGearRatiosVehicleTransmissionSettings
mShiftDownRPMVehicleTransmissionSettings
mShiftUpRPMVehicleTransmissionSettings
mSwitchLatencyVehicleTransmissionSettings
mSwitchTimeVehicleTransmissionSettings
RestoreBinaryState(StreamIn &inStream)VehicleTransmissionSettings
SaveBinaryState(StreamOut &inStream) constVehicleTransmissionSettings
+
+ + + + diff --git a/class_vehicle_transmission_settings.html b/class_vehicle_transmission_settings.html new file mode 100644 index 000000000..dda0eec01 --- /dev/null +++ b/class_vehicle_transmission_settings.html @@ -0,0 +1,364 @@ + + + + + + + +Jolt Physics: VehicleTransmissionSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
VehicleTransmissionSettings Class Reference
+
+
+ +

Configuration for the transmission of a vehicle (gear box) + More...

+ +

#include <VehicleTransmission.h>

+
+Inheritance diagram for VehicleTransmissionSettings:
+
+
+ + +VehicleTransmission + +
+ + + + + + + + +

+Public Member Functions

void SaveBinaryState (StreamOut &inStream) const
 Saves the contents in binary form to inStream.
 
void RestoreBinaryState (StreamIn &inStream)
 Restores the contents in binary form to inStream.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

ETransmissionMode mMode = ETransmissionMode::Auto
 How to switch gears.
 
Array< float > mGearRatios { 2.66f, 1.78f, 1.3f, 1.0f, 0.74f }
 Ratio in rotation rate between engine and gear box, first element is 1st gear, 2nd element 2nd gear etc.
 
Array< float > mReverseGearRatios { -2.90f }
 Ratio in rotation rate between engine and gear box when driving in reverse.
 
float mSwitchTime = 0.5f
 How long it takes to switch gears (s), only used in auto mode.
 
float mClutchReleaseTime = 0.3f
 How long it takes to release the clutch (go to full friction), only used in auto mode.
 
float mSwitchLatency = 0.5f
 How long to wait after releasing the clutch before another switch is attempted (s), only used in auto mode.
 
float mShiftUpRPM = 4000.0f
 If RPM of engine is bigger then this we will shift a gear up, only used in auto mode.
 
float mShiftDownRPM = 2000.0f
 If RPM of engine is smaller then this we will shift a gear down, only used in auto mode.
 
float mClutchStrength = 10.0f
 Strength of the clutch when fully engaged. Total torque a clutch applies is Torque = ClutchStrength * (Velocity Engine - Avg Velocity Wheels At Clutch) (units: k m^2 s^-1)
 
+

Detailed Description

+

Configuration for the transmission of a vehicle (gear box)

+

Member Function Documentation

+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + + + + +
void VehicleTransmissionSettings::RestoreBinaryState (StreamIninStream)
+
+ +

Restores the contents in binary form to inStream.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + + + + +
void VehicleTransmissionSettings::SaveBinaryState (StreamOutinStream) const
+
+ +

Saves the contents in binary form to inStream.

+ +
+
+

Member Data Documentation

+ +

◆ mClutchReleaseTime

+ +
+
+ + + + +
float VehicleTransmissionSettings::mClutchReleaseTime = 0.3f
+
+ +

How long it takes to release the clutch (go to full friction), only used in auto mode.

+ +
+
+ +

◆ mClutchStrength

+ +
+
+ + + + +
float VehicleTransmissionSettings::mClutchStrength = 10.0f
+
+ +

Strength of the clutch when fully engaged. Total torque a clutch applies is Torque = ClutchStrength * (Velocity Engine - Avg Velocity Wheels At Clutch) (units: k m^2 s^-1)

+ +
+
+ +

◆ mGearRatios

+ +
+
+ + + + +
Array<float> VehicleTransmissionSettings::mGearRatios { 2.66f, 1.78f, 1.3f, 1.0f, 0.74f }
+
+ +

Ratio in rotation rate between engine and gear box, first element is 1st gear, 2nd element 2nd gear etc.

+ +
+
+ +

◆ mMode

+ +
+
+ + + + +
ETransmissionMode VehicleTransmissionSettings::mMode = ETransmissionMode::Auto
+
+ +

How to switch gears.

+ +
+
+ +

◆ mReverseGearRatios

+ +
+
+ + + + +
Array<float> VehicleTransmissionSettings::mReverseGearRatios { -2.90f }
+
+ +

Ratio in rotation rate between engine and gear box when driving in reverse.

+ +
+
+ +

◆ mShiftDownRPM

+ +
+
+ + + + +
float VehicleTransmissionSettings::mShiftDownRPM = 2000.0f
+
+ +

If RPM of engine is smaller then this we will shift a gear down, only used in auto mode.

+ +
+
+ +

◆ mShiftUpRPM

+ +
+
+ + + + +
float VehicleTransmissionSettings::mShiftUpRPM = 4000.0f
+
+ +

If RPM of engine is bigger then this we will shift a gear up, only used in auto mode.

+ +
+
+ +

◆ mSwitchLatency

+ +
+
+ + + + +
float VehicleTransmissionSettings::mSwitchLatency = 0.5f
+
+ +

How long to wait after releasing the clutch before another switch is attempted (s), only used in auto mode.

+ +
+
+ +

◆ mSwitchTime

+ +
+
+ + + + +
float VehicleTransmissionSettings::mSwitchTime = 0.5f
+
+ +

How long it takes to switch gears (s), only used in auto mode.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_vehicle_transmission_settings.js b/class_vehicle_transmission_settings.js new file mode 100644 index 000000000..1a11610e0 --- /dev/null +++ b/class_vehicle_transmission_settings.js @@ -0,0 +1,14 @@ +var class_vehicle_transmission_settings = +[ + [ "RestoreBinaryState", "class_vehicle_transmission_settings.html#a3055b6c810a88a1ae3fd2946a1683d5d", null ], + [ "SaveBinaryState", "class_vehicle_transmission_settings.html#ac843a815cfe9ce6ad3fd4f5872d187e1", null ], + [ "mClutchReleaseTime", "class_vehicle_transmission_settings.html#a06bfd0f8f234b58488615250e7cc5703", null ], + [ "mClutchStrength", "class_vehicle_transmission_settings.html#a86105ca9b3215ec2a6208815f4e10740", null ], + [ "mGearRatios", "class_vehicle_transmission_settings.html#a3632548e7e09e7eb2fc8594ff039265e", null ], + [ "mMode", "class_vehicle_transmission_settings.html#a57d1f98cbd50ba710d6c1941e2788e8f", null ], + [ "mReverseGearRatios", "class_vehicle_transmission_settings.html#ac0a9ec4f7eb2fa4d2bfbb5c49c46171d", null ], + [ "mShiftDownRPM", "class_vehicle_transmission_settings.html#a9c89ba7571dd3ba9e5dff909a379ab3f", null ], + [ "mShiftUpRPM", "class_vehicle_transmission_settings.html#a928b1aea1e5cae37d92bd18ccc3ab74c", null ], + [ "mSwitchLatency", "class_vehicle_transmission_settings.html#a8c1734a64d58ae36d49082c56d563986", null ], + [ "mSwitchTime", "class_vehicle_transmission_settings.html#ad890effc2f497795fb22fd56da27888e", null ] +]; \ No newline at end of file diff --git a/class_vehicle_transmission_settings.png b/class_vehicle_transmission_settings.png new file mode 100644 index 000000000..5ab80eca9 Binary files /dev/null and b/class_vehicle_transmission_settings.png differ diff --git a/class_wheel-members.html b/class_wheel-members.html new file mode 100644 index 000000000..61e76b0ca --- /dev/null +++ b/class_wheel-members.html @@ -0,0 +1,163 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Wheel Member List
+
+
+ +

This is the complete list of members for Wheel, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GetAngularVelocity() constWheelinline
GetContactBodyID() constWheelinline
GetContactLateral() constWheelinline
GetContactLongitudinal() constWheelinline
GetContactNormal() constWheelinline
GetContactPointVelocity() constWheelinline
GetContactPosition() constWheelinline
GetContactSubShapeID() constWheelinline
GetLateralLambda() constWheelinline
GetLongitudinalLambda() constWheelinline
GetRotationAngle() constWheelinline
GetSettings() constWheelinline
GetSteerAngle() constWheelinline
GetSuspensionLambda() constWheelinline
GetSuspensionLength() constWheelinline
HasContact() constWheelinline
HasHitHardPoint() constWheelinline
mAngleWheelprotected
mAngularVelocityWheelprotected
mAntiRollBarImpulseWheelprotected
mAxlePlaneConstantWheelprotected
mContactBodyWheelprotected
mContactBodyIDWheelprotected
mContactLateralWheelprotected
mContactLongitudinalWheelprotected
mContactNormalWheelprotected
mContactPointVelocityWheelprotected
mContactPositionWheelprotected
mContactSubShapeIDWheelprotected
mLateralPartWheelprotected
mLongitudinalPartWheelprotected
mSettingsWheelprotected
mSteerAngleWheelprotected
mSuspensionLengthWheelprotected
mSuspensionMaxUpPartWheelprotected
mSuspensionPartWheelprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
SetAngularVelocity(float inVel)Wheelinline
SetRotationAngle(float inAngle)Wheelinline
SetSteerAngle(float inAngle)Wheelinline
SolveLateralConstraintPart(const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)Wheel
SolveLongitudinalConstraintPart(const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)Wheel
VehicleConstraintWheelfriend
Wheel(const WheelSettings &inSettings)Wheelexplicit
~Wheel()=defaultWheelvirtual
+
+ + + + diff --git a/class_wheel.html b/class_wheel.html new file mode 100644 index 000000000..9e8b05058 --- /dev/null +++ b/class_wheel.html @@ -0,0 +1,1438 @@ + + + + + + + +Jolt Physics: Wheel Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
Wheel Class Reference
+
+
+ +

Base class for runtime data for a wheel, each VehicleController can implement a derived class of this. + More...

+ +

#include <Wheel.h>

+
+Inheritance diagram for Wheel:
+
+
+ + +NonCopyable +WheelTV +WheelWV + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE Wheel (const WheelSettings &inSettings)
 Constructor / destructor.
 
virtual ~Wheel ()=default
 
const WheelSettingsGetSettings () const
 Get settings for the wheel.
 
float GetAngularVelocity () const
 Get the angular velocity (rad/s) for this wheel, note that positive means the wheel is rotating such that the car moves forward.
 
void SetAngularVelocity (float inVel)
 Update the angular velocity (rad/s)
 
float GetRotationAngle () const
 Get the current rotation angle of the wheel in radians [0, 2 pi].
 
void SetRotationAngle (float inAngle)
 Set the current rotation angle of the wheel in radians [0, 2 pi].
 
float GetSteerAngle () const
 Get the current steer angle of the wheel in radians [-pi, pi], positive is to the left.
 
void SetSteerAngle (float inAngle)
 Set the current steer angle of the wheel in radians [-pi, pi].
 
bool HasContact () const
 Returns true if the wheel is touching an object.
 
BodyID GetContactBodyID () const
 Returns the body ID of the body that this wheel is touching.
 
SubShapeID GetContactSubShapeID () const
 Returns the sub shape ID where we're contacting the body.
 
RVec3 GetContactPosition () const
 Returns the current contact position in world space (note by the time you call this the vehicle has moved)
 
Vec3 GetContactPointVelocity () const
 Velocity of the contact point (m / s, not relative to the wheel but in world space)
 
Vec3 GetContactNormal () const
 Returns the current contact normal in world space (note by the time you call this the vehicle has moved)
 
Vec3 GetContactLongitudinal () const
 Returns longitudinal direction (direction along the wheel relative to floor) in world space (note by the time you call this the vehicle has moved)
 
Vec3 GetContactLateral () const
 Returns lateral direction (sideways direction) in world space (note by the time you call this the vehicle has moved)
 
float GetSuspensionLength () const
 Get the length of the suspension for a wheel (m) relative to the suspension attachment point (hard point)
 
bool HasHitHardPoint () const
 Check if the suspension hit its upper limit.
 
float GetSuspensionLambda () const
 Get the total impulse (N s) that was applied by the suspension.
 
float GetLongitudinalLambda () const
 Get total impulse (N s) applied along the forward direction of the wheel.
 
float GetLateralLambda () const
 Get total impulse (N s) applied along the sideways direction of the wheel.
 
bool SolveLongitudinalConstraintPart (const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)
 Internal function that should only be called by the controller. Used to apply impulses in the forward direction of the vehicle.
 
bool SolveLateralConstraintPart (const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)
 Internal function that should only be called by the controller. Used to apply impulses in the sideways direction of the vehicle.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

RefConst< WheelSettingsmSettings
 Configuration settings for this wheel.
 
BodyID mContactBodyID
 ID of body for ground.
 
SubShapeID mContactSubShapeID
 Sub shape ID for ground.
 
BodymContactBody = nullptr
 Body for ground.
 
float mSuspensionLength
 Current length of the suspension.
 
RVec3 mContactPosition
 Position of the contact point between wheel and ground.
 
Vec3 mContactPointVelocity
 Velocity of the contact point (m / s, not relative to the wheel but in world space)
 
Vec3 mContactNormal
 Normal of the contact point between wheel and ground.
 
Vec3 mContactLongitudinal
 Vector perpendicular to normal in the forward direction.
 
Vec3 mContactLateral
 Vector perpendicular to normal and longitudinal direction in the right direction.
 
Real mAxlePlaneConstant
 Constant for the contact plane of the axle, defined as ContactNormal . (WorldSpaceSuspensionPoint + SuspensionLength * WorldSpaceSuspensionDirection)
 
float mAntiRollBarImpulse = 0.0f
 Amount of impulse applied to the suspension from the anti-rollbars.
 
float mSteerAngle = 0.0f
 Rotation around the suspension direction, positive is to the left.
 
float mAngularVelocity = 0.0f
 Rotation speed of wheel, positive when the wheels cause the vehicle to move forwards (rad/s)
 
float mAngle = 0.0f
 Current rotation of the wheel (rad, [0, 2 pi])
 
AxisConstraintPart mSuspensionPart
 Controls movement up/down along the contact normal.
 
AxisConstraintPart mSuspensionMaxUpPart
 Adds a hard limit when reaching the minimal suspension length.
 
AxisConstraintPart mLongitudinalPart
 Controls movement forward/backward.
 
AxisConstraintPart mLateralPart
 Controls movement sideways (slip)
 
+ + + +

+Friends

class VehicleConstraint
 
+

Detailed Description

+

Base class for runtime data for a wheel, each VehicleController can implement a derived class of this.

+

Constructor & Destructor Documentation

+ +

◆ Wheel()

+ +
+
+ + + + + +
+ + + + + + + + +
Wheel::Wheel (const WheelSettingsinSettings)
+
+explicit
+
+ +

Constructor / destructor.

+ +
+
+ +

◆ ~Wheel()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Wheel::~Wheel ()
+
+virtualdefault
+
+ +
+
+

Member Function Documentation

+ +

◆ GetAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
float Wheel::GetAngularVelocity () const
+
+inline
+
+ +

Get the angular velocity (rad/s) for this wheel, note that positive means the wheel is rotating such that the car moves forward.

+ +
+
+ +

◆ GetContactBodyID()

+ +
+
+ + + + + +
+ + + + + + + +
BodyID Wheel::GetContactBodyID () const
+
+inline
+
+ +

Returns the body ID of the body that this wheel is touching.

+ +
+
+ +

◆ GetContactLateral()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Wheel::GetContactLateral () const
+
+inline
+
+ +

Returns lateral direction (sideways direction) in world space (note by the time you call this the vehicle has moved)

+ +
+
+ +

◆ GetContactLongitudinal()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Wheel::GetContactLongitudinal () const
+
+inline
+
+ +

Returns longitudinal direction (direction along the wheel relative to floor) in world space (note by the time you call this the vehicle has moved)

+ +
+
+ +

◆ GetContactNormal()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Wheel::GetContactNormal () const
+
+inline
+
+ +

Returns the current contact normal in world space (note by the time you call this the vehicle has moved)

+ +
+
+ +

◆ GetContactPointVelocity()

+ +
+
+ + + + + +
+ + + + + + + +
Vec3 Wheel::GetContactPointVelocity () const
+
+inline
+
+ +

Velocity of the contact point (m / s, not relative to the wheel but in world space)

+ +
+
+ +

◆ GetContactPosition()

+ +
+
+ + + + + +
+ + + + + + + +
RVec3 Wheel::GetContactPosition () const
+
+inline
+
+ +

Returns the current contact position in world space (note by the time you call this the vehicle has moved)

+ +
+
+ +

◆ GetContactSubShapeID()

+ +
+
+ + + + + +
+ + + + + + + +
SubShapeID Wheel::GetContactSubShapeID () const
+
+inline
+
+ +

Returns the sub shape ID where we're contacting the body.

+ +
+
+ +

◆ GetLateralLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float Wheel::GetLateralLambda () const
+
+inline
+
+ +

Get total impulse (N s) applied along the sideways direction of the wheel.

+ +
+
+ +

◆ GetLongitudinalLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float Wheel::GetLongitudinalLambda () const
+
+inline
+
+ +

Get total impulse (N s) applied along the forward direction of the wheel.

+ +
+
+ +

◆ GetRotationAngle()

+ +
+
+ + + + + +
+ + + + + + + +
float Wheel::GetRotationAngle () const
+
+inline
+
+ +

Get the current rotation angle of the wheel in radians [0, 2 pi].

+ +
+
+ +

◆ GetSettings()

+ +
+
+ + + + + +
+ + + + + + + +
const WheelSettings * Wheel::GetSettings () const
+
+inline
+
+ +

Get settings for the wheel.

+ +
+
+ +

◆ GetSteerAngle()

+ +
+
+ + + + + +
+ + + + + + + +
float Wheel::GetSteerAngle () const
+
+inline
+
+ +

Get the current steer angle of the wheel in radians [-pi, pi], positive is to the left.

+ +
+
+ +

◆ GetSuspensionLambda()

+ +
+
+ + + + + +
+ + + + + + + +
float Wheel::GetSuspensionLambda () const
+
+inline
+
+ +

Get the total impulse (N s) that was applied by the suspension.

+ +
+
+ +

◆ GetSuspensionLength()

+ +
+
+ + + + + +
+ + + + + + + +
float Wheel::GetSuspensionLength () const
+
+inline
+
+ +

Get the length of the suspension for a wheel (m) relative to the suspension attachment point (hard point)

+ +
+
+ +

◆ HasContact()

+ +
+
+ + + + + +
+ + + + + + + +
bool Wheel::HasContact () const
+
+inline
+
+ +

Returns true if the wheel is touching an object.

+ +
+
+ +

◆ HasHitHardPoint()

+ +
+
+ + + + + +
+ + + + + + + +
bool Wheel::HasHitHardPoint () const
+
+inline
+
+ +

Check if the suspension hit its upper limit.

+ +
+
+ +

◆ SetAngularVelocity()

+ +
+
+ + + + + +
+ + + + + + + + +
void Wheel::SetAngularVelocity (float inVel)
+
+inline
+
+ +

Update the angular velocity (rad/s)

+ +
+
+ +

◆ SetRotationAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
void Wheel::SetRotationAngle (float inAngle)
+
+inline
+
+ +

Set the current rotation angle of the wheel in radians [0, 2 pi].

+ +
+
+ +

◆ SetSteerAngle()

+ +
+
+ + + + + +
+ + + + + + + + +
void Wheel::SetSteerAngle (float inAngle)
+
+inline
+
+ +

Set the current steer angle of the wheel in radians [-pi, pi].

+ +
+
+ +

◆ SolveLateralConstraintPart()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool Wheel::SolveLateralConstraintPart (const VehicleConstraintinConstraint,
float inMinImpulse,
float inMaxImpulse 
)
+
+ +

Internal function that should only be called by the controller. Used to apply impulses in the sideways direction of the vehicle.

+ +
+
+ +

◆ SolveLongitudinalConstraintPart()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool Wheel::SolveLongitudinalConstraintPart (const VehicleConstraintinConstraint,
float inMinImpulse,
float inMaxImpulse 
)
+
+ +

Internal function that should only be called by the controller. Used to apply impulses in the forward direction of the vehicle.

+ +
+
+

Friends And Related Symbol Documentation

+ +

◆ VehicleConstraint

+ +
+
+ + + + + +
+ + + + +
friend class VehicleConstraint
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ mAngle

+ +
+
+ + + + + +
+ + + + +
float Wheel::mAngle = 0.0f
+
+protected
+
+ +

Current rotation of the wheel (rad, [0, 2 pi])

+ +
+
+ +

◆ mAngularVelocity

+ +
+
+ + + + + +
+ + + + +
float Wheel::mAngularVelocity = 0.0f
+
+protected
+
+ +

Rotation speed of wheel, positive when the wheels cause the vehicle to move forwards (rad/s)

+ +
+
+ +

◆ mAntiRollBarImpulse

+ +
+
+ + + + + +
+ + + + +
float Wheel::mAntiRollBarImpulse = 0.0f
+
+protected
+
+ +

Amount of impulse applied to the suspension from the anti-rollbars.

+ +
+
+ +

◆ mAxlePlaneConstant

+ +
+
+ + + + + +
+ + + + +
Real Wheel::mAxlePlaneConstant
+
+protected
+
+ +

Constant for the contact plane of the axle, defined as ContactNormal . (WorldSpaceSuspensionPoint + SuspensionLength * WorldSpaceSuspensionDirection)

+ +
+
+ +

◆ mContactBody

+ +
+
+ + + + + +
+ + + + +
Body* Wheel::mContactBody = nullptr
+
+protected
+
+ +

Body for ground.

+ +
+
+ +

◆ mContactBodyID

+ +
+
+ + + + + +
+ + + + +
BodyID Wheel::mContactBodyID
+
+protected
+
+ +

ID of body for ground.

+ +
+
+ +

◆ mContactLateral

+ +
+
+ + + + + +
+ + + + +
Vec3 Wheel::mContactLateral
+
+protected
+
+ +

Vector perpendicular to normal and longitudinal direction in the right direction.

+ +
+
+ +

◆ mContactLongitudinal

+ +
+
+ + + + + +
+ + + + +
Vec3 Wheel::mContactLongitudinal
+
+protected
+
+ +

Vector perpendicular to normal in the forward direction.

+ +
+
+ +

◆ mContactNormal

+ +
+
+ + + + + +
+ + + + +
Vec3 Wheel::mContactNormal
+
+protected
+
+ +

Normal of the contact point between wheel and ground.

+ +
+
+ +

◆ mContactPointVelocity

+ +
+
+ + + + + +
+ + + + +
Vec3 Wheel::mContactPointVelocity
+
+protected
+
+ +

Velocity of the contact point (m / s, not relative to the wheel but in world space)

+ +
+
+ +

◆ mContactPosition

+ +
+
+ + + + + +
+ + + + +
RVec3 Wheel::mContactPosition
+
+protected
+
+ +

Position of the contact point between wheel and ground.

+ +
+
+ +

◆ mContactSubShapeID

+ +
+
+ + + + + +
+ + + + +
SubShapeID Wheel::mContactSubShapeID
+
+protected
+
+ +

Sub shape ID for ground.

+ +
+
+ +

◆ mLateralPart

+ +
+
+ + + + + +
+ + + + +
AxisConstraintPart Wheel::mLateralPart
+
+protected
+
+ +

Controls movement sideways (slip)

+ +
+
+ +

◆ mLongitudinalPart

+ +
+
+ + + + + +
+ + + + +
AxisConstraintPart Wheel::mLongitudinalPart
+
+protected
+
+ +

Controls movement forward/backward.

+ +
+
+ +

◆ mSettings

+ +
+
+ + + + + +
+ + + + +
RefConst<WheelSettings> Wheel::mSettings
+
+protected
+
+ +

Configuration settings for this wheel.

+ +
+
+ +

◆ mSteerAngle

+ +
+
+ + + + + +
+ + + + +
float Wheel::mSteerAngle = 0.0f
+
+protected
+
+ +

Rotation around the suspension direction, positive is to the left.

+ +
+
+ +

◆ mSuspensionLength

+ +
+
+ + + + + +
+ + + + +
float Wheel::mSuspensionLength
+
+protected
+
+ +

Current length of the suspension.

+ +
+
+ +

◆ mSuspensionMaxUpPart

+ +
+
+ + + + + +
+ + + + +
AxisConstraintPart Wheel::mSuspensionMaxUpPart
+
+protected
+
+ +

Adds a hard limit when reaching the minimal suspension length.

+ +
+
+ +

◆ mSuspensionPart

+ +
+
+ + + + + +
+ + + + +
AxisConstraintPart Wheel::mSuspensionPart
+
+protected
+
+ +

Controls movement up/down along the contact normal.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_wheel.js b/class_wheel.js new file mode 100644 index 000000000..4f6e92841 --- /dev/null +++ b/class_wheel.js @@ -0,0 +1,47 @@ +var class_wheel = +[ + [ "Wheel", "class_wheel.html#a1b32822acc30f1afc25f57de681c7389", null ], + [ "~Wheel", "class_wheel.html#aa6087eae383e857b8615993388ba8a5f", null ], + [ "GetAngularVelocity", "class_wheel.html#ad2da83076a68424179c3928b123c086c", null ], + [ "GetContactBodyID", "class_wheel.html#acc31f12c9bf9049d98397fc721219d10", null ], + [ "GetContactLateral", "class_wheel.html#a23056c4f6164ec0b1e7a0448a54135c3", null ], + [ "GetContactLongitudinal", "class_wheel.html#a4f4df6da668a8f3d147ee53a3c46910c", null ], + [ "GetContactNormal", "class_wheel.html#aaff3b5c0de2d6becbebbdbd886b2c7cf", null ], + [ "GetContactPointVelocity", "class_wheel.html#a909988d11cc3e43ba357a1f9b1d4f101", null ], + [ "GetContactPosition", "class_wheel.html#afe7cd7933c99164aefd66c9d5fe2a3eb", null ], + [ "GetContactSubShapeID", "class_wheel.html#a4ed45e80dae82a05fe3a07bd8f81d96f", null ], + [ "GetLateralLambda", "class_wheel.html#a3a6c1824707b2851548c01bb3bcaceec", null ], + [ "GetLongitudinalLambda", "class_wheel.html#acb42426249dba7e845b7ea288cda99dd", null ], + [ "GetRotationAngle", "class_wheel.html#a06226466b8c4ff0f65ae329bb3b7a3b2", null ], + [ "GetSettings", "class_wheel.html#ab93b1087453249915b72e74733ea2af3", null ], + [ "GetSteerAngle", "class_wheel.html#a1972924bef7c43ef8544a7ba2dc28c07", null ], + [ "GetSuspensionLambda", "class_wheel.html#af1a126080ae277a8b3578b8f3f6854e7", null ], + [ "GetSuspensionLength", "class_wheel.html#ad03e749022ce451237c8731a7b59eb79", null ], + [ "HasContact", "class_wheel.html#ad5ab9bb3ed8151044ad41de572945eac", null ], + [ "HasHitHardPoint", "class_wheel.html#a61eabff8238d2b284c9a286309e05806", null ], + [ "SetAngularVelocity", "class_wheel.html#a244412d3b7d9216cdf7d8f364d128b60", null ], + [ "SetRotationAngle", "class_wheel.html#aaa68b8841db1daed297d8c64ed19bef2", null ], + [ "SetSteerAngle", "class_wheel.html#a7efe681ffa418ed0e1724fbc1fef7ec8", null ], + [ "SolveLateralConstraintPart", "class_wheel.html#a155778dd99828ddbcc6b4e34305b40f5", null ], + [ "SolveLongitudinalConstraintPart", "class_wheel.html#aca0c965685dee3f84fb830d76a4a00ba", null ], + [ "VehicleConstraint", "class_wheel.html#a30b73bf12f0dea921ce21318d08cb7c0", null ], + [ "mAngle", "class_wheel.html#ad21c087228b643377f809e61c14fdf1d", null ], + [ "mAngularVelocity", "class_wheel.html#a240115cc48bddcf81b10c426c3802fe7", null ], + [ "mAntiRollBarImpulse", "class_wheel.html#a201340ce33a37ff9eb3cc26cf8ae4cc8", null ], + [ "mAxlePlaneConstant", "class_wheel.html#aa6aeace443bfd6580ad54a938342ac67", null ], + [ "mContactBody", "class_wheel.html#acb44fa757ea9d2447e1b2de4f65954ca", null ], + [ "mContactBodyID", "class_wheel.html#a53ae6143cfd91eba78398b03f427c7ed", null ], + [ "mContactLateral", "class_wheel.html#ad8cea661025b8c99b3fbd07f67880ebb", null ], + [ "mContactLongitudinal", "class_wheel.html#a452fc2b42bb7fb3ffb296008ff19ff84", null ], + [ "mContactNormal", "class_wheel.html#a1e753efe90d09796fa717079a15b6b59", null ], + [ "mContactPointVelocity", "class_wheel.html#a7d348b3098f9316f308173fe87c81783", null ], + [ "mContactPosition", "class_wheel.html#ac30ace148260fc1280c40224cb51c34f", null ], + [ "mContactSubShapeID", "class_wheel.html#af93d7137c196e5dc6107963bdc06c5ba", null ], + [ "mLateralPart", "class_wheel.html#a3e466a6ec5a4dc839c86586fb0e0dd6c", null ], + [ "mLongitudinalPart", "class_wheel.html#aad04d9e83a92376fb5ef078fbc1577bc", null ], + [ "mSettings", "class_wheel.html#a024cd676398378408f174ebdd8fefd6c", null ], + [ "mSteerAngle", "class_wheel.html#ae6d6847e2825c5e6b1f3203d8fe559fa", null ], + [ "mSuspensionLength", "class_wheel.html#a49fc75e7639dbf0a484ccd9bf1968ae4", null ], + [ "mSuspensionMaxUpPart", "class_wheel.html#a568fed5d0dd04fd63020e9253801a34c", null ], + [ "mSuspensionPart", "class_wheel.html#a9e9df1e9246d38363edc02b9d1c81ef4", null ] +]; \ No newline at end of file diff --git a/class_wheel.png b/class_wheel.png new file mode 100644 index 000000000..552c4a030 Binary files /dev/null and b/class_wheel.png differ diff --git a/class_wheel_settings-members.html b/class_wheel_settings-members.html new file mode 100644 index 000000000..4923d3d5c --- /dev/null +++ b/class_wheel_settings-members.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
WheelSettings Member List
+
+
+ +

This is the complete list of members for WheelSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< WheelSettings >inline
cEmbeddedRefTarget< WheelSettings >protectedstatic
GetRefCount() constRefTarget< WheelSettings >inline
mEnableSuspensionForcePointWheelSettings
mPositionWheelSettings
mRadiusWheelSettings
mRefCountRefTarget< WheelSettings >mutableprotected
mSteeringAxisWheelSettings
mSuspensionDirectionWheelSettings
mSuspensionForcePointWheelSettings
mSuspensionMaxLengthWheelSettings
mSuspensionMinLengthWheelSettings
mSuspensionPreloadLengthWheelSettings
mSuspensionSpringWheelSettings
mWheelForwardWheelSettings
mWheelUpWheelSettings
mWidthWheelSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< WheelSettings >::operator=(const RefTarget &)RefTarget< WheelSettings >inline
RefTarget()=defaultRefTarget< WheelSettings >inline
RefTarget(const RefTarget &)RefTarget< WheelSettings >inline
Release() constRefTarget< WheelSettings >inline
RestoreBinaryState(StreamIn &inStream)WheelSettingsvirtual
SaveBinaryState(StreamOut &inStream) constWheelSettingsvirtual
SetEmbedded() constRefTarget< WheelSettings >inline
sInternalGetRefCountOffset()RefTarget< WheelSettings >inlinestatic
~RefTarget()RefTarget< WheelSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_wheel_settings.html b/class_wheel_settings.html new file mode 100644 index 000000000..70713b26e --- /dev/null +++ b/class_wheel_settings.html @@ -0,0 +1,512 @@ + + + + + + + +Jolt Physics: WheelSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
WheelSettings Class Reference
+
+
+ +

Base class for wheel settings, each VehicleController can implement a derived class of this. + More...

+ +

#include <Wheel.h>

+
+Inheritance diagram for WheelSettings:
+
+
+ + +SerializableObject +RefTarget< WheelSettings > +NonCopyable +WheelSettingsTV +WheelSettingsWV + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const
 Saves the contents in binary form to inStream.
 
virtual void RestoreBinaryState (StreamIn &inStream)
 Restores the contents in binary form to inStream.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< WheelSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Vec3 mPosition { 0, 0, 0 }
 Attachment point of wheel suspension in local space of the body.
 
Vec3 mSuspensionForcePoint { 0, 0, 0 }
 Where tire forces (suspension and traction) are applied, in local space of the body. A good default is the center of the wheel in its neutral pose. See mEnableSuspensionForcePoint.
 
Vec3 mSuspensionDirection { 0, -1, 0 }
 Direction of the suspension in local space of the body, should point down.
 
Vec3 mSteeringAxis { 0, 1, 0 }
 Direction of the steering axis in local space of the body, should point up (e.g. for a bike would be -mSuspensionDirection)
 
Vec3 mWheelUp { 0, 1, 0 }
 Up direction when the wheel is in the neutral steering position (usually VehicleConstraintSettings::mUp but can be used to give the wheel camber or for a bike would be -mSuspensionDirection)
 
Vec3 mWheelForward { 0, 0, 1 }
 Forward direction when the wheel is in the neutral steering position (usually VehicleConstraintSettings::mForward but can be used to give the wheel toe, does not need to be perpendicular to mWheelUp)
 
float mSuspensionMinLength = 0.3f
 How long the suspension is in max raised position relative to the attachment point (m)
 
float mSuspensionMaxLength = 0.5f
 How long the suspension is in max droop position relative to the attachment point (m)
 
float mSuspensionPreloadLength = 0.0f
 The natural length (m) of the suspension spring is defined as mSuspensionMaxLength + mSuspensionPreloadLength. Can be used to preload the suspension as the spring is compressed by mSuspensionPreloadLength when the suspension is in max droop position. Note that this means when the vehicle touches the ground there is a discontinuity so it will also make the vehicle more bouncy as we're updating with discrete time steps.
 
SpringSettings mSuspensionSpring { ESpringMode::FrequencyAndDamping, 1.5f, 0.5f }
 Settings for the suspension spring.
 
float mRadius = 0.3f
 Radius of the wheel (m)
 
float mWidth = 0.1f
 Width of the wheel (m)
 
bool mEnableSuspensionForcePoint = false
 Enables mSuspensionForcePoint, if disabled, the forces are applied at the collision contact point. This leads to a more accurate simulation when interacting with dynamic objects but makes the vehicle less stable. When setting this to true, all forces will be applied to a fixed point on the vehicle body.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< WheelSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< WheelSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< WheelSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Base class for wheel settings, each VehicleController can implement a derived class of this.

+

Member Function Documentation

+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheelSettings::RestoreBinaryState (StreamIninStream)
+
+virtual
+
+ +

Restores the contents in binary form to inStream.

+ +

Reimplemented in WheelSettingsTV, and WheelSettingsWV.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheelSettings::SaveBinaryState (StreamOutinStream) const
+
+virtual
+
+ +

Saves the contents in binary form to inStream.

+ +

Reimplemented in WheelSettingsTV, and WheelSettingsWV.

+ +
+
+

Member Data Documentation

+ +

◆ mEnableSuspensionForcePoint

+ +
+
+ + + + +
bool WheelSettings::mEnableSuspensionForcePoint = false
+
+ +

Enables mSuspensionForcePoint, if disabled, the forces are applied at the collision contact point. This leads to a more accurate simulation when interacting with dynamic objects but makes the vehicle less stable. When setting this to true, all forces will be applied to a fixed point on the vehicle body.

+ +
+
+ +

◆ mPosition

+ +
+
+ + + + +
Vec3 WheelSettings::mPosition { 0, 0, 0 }
+
+ +

Attachment point of wheel suspension in local space of the body.

+ +
+
+ +

◆ mRadius

+ +
+
+ + + + +
float WheelSettings::mRadius = 0.3f
+
+ +

Radius of the wheel (m)

+ +
+
+ +

◆ mSteeringAxis

+ +
+
+ + + + +
Vec3 WheelSettings::mSteeringAxis { 0, 1, 0 }
+
+ +

Direction of the steering axis in local space of the body, should point up (e.g. for a bike would be -mSuspensionDirection)

+ +
+
+ +

◆ mSuspensionDirection

+ +
+
+ + + + +
Vec3 WheelSettings::mSuspensionDirection { 0, -1, 0 }
+
+ +

Direction of the suspension in local space of the body, should point down.

+ +
+
+ +

◆ mSuspensionForcePoint

+ +
+
+ + + + +
Vec3 WheelSettings::mSuspensionForcePoint { 0, 0, 0 }
+
+ +

Where tire forces (suspension and traction) are applied, in local space of the body. A good default is the center of the wheel in its neutral pose. See mEnableSuspensionForcePoint.

+ +
+
+ +

◆ mSuspensionMaxLength

+ +
+
+ + + + +
float WheelSettings::mSuspensionMaxLength = 0.5f
+
+ +

How long the suspension is in max droop position relative to the attachment point (m)

+ +
+
+ +

◆ mSuspensionMinLength

+ +
+
+ + + + +
float WheelSettings::mSuspensionMinLength = 0.3f
+
+ +

How long the suspension is in max raised position relative to the attachment point (m)

+ +
+
+ +

◆ mSuspensionPreloadLength

+ +
+
+ + + + +
float WheelSettings::mSuspensionPreloadLength = 0.0f
+
+ +

The natural length (m) of the suspension spring is defined as mSuspensionMaxLength + mSuspensionPreloadLength. Can be used to preload the suspension as the spring is compressed by mSuspensionPreloadLength when the suspension is in max droop position. Note that this means when the vehicle touches the ground there is a discontinuity so it will also make the vehicle more bouncy as we're updating with discrete time steps.

+ +
+
+ +

◆ mSuspensionSpring

+ +
+
+ + + + +
SpringSettings WheelSettings::mSuspensionSpring { ESpringMode::FrequencyAndDamping, 1.5f, 0.5f }
+
+ +

Settings for the suspension spring.

+ +
+
+ +

◆ mWheelForward

+ +
+
+ + + + +
Vec3 WheelSettings::mWheelForward { 0, 0, 1 }
+
+ +

Forward direction when the wheel is in the neutral steering position (usually VehicleConstraintSettings::mForward but can be used to give the wheel toe, does not need to be perpendicular to mWheelUp)

+ +
+
+ +

◆ mWheelUp

+ +
+
+ + + + +
Vec3 WheelSettings::mWheelUp { 0, 1, 0 }
+
+ +

Up direction when the wheel is in the neutral steering position (usually VehicleConstraintSettings::mUp but can be used to give the wheel camber or for a bike would be -mSuspensionDirection)

+ +
+
+ +

◆ mWidth

+ +
+
+ + + + +
float WheelSettings::mWidth = 0.1f
+
+ +

Width of the wheel (m)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_wheel_settings.js b/class_wheel_settings.js new file mode 100644 index 000000000..3b4ac0378 --- /dev/null +++ b/class_wheel_settings.js @@ -0,0 +1,18 @@ +var class_wheel_settings = +[ + [ "RestoreBinaryState", "class_wheel_settings.html#a73a4d72105d91343f5811df864dcd4a8", null ], + [ "SaveBinaryState", "class_wheel_settings.html#a52e5ea54df8206459139d6fce7f77503", null ], + [ "mEnableSuspensionForcePoint", "class_wheel_settings.html#a6958c6097a36cfe3e3a5ad4e8930ec1d", null ], + [ "mPosition", "class_wheel_settings.html#a498fc7496addb2d3bb1798ffc494d1ae", null ], + [ "mRadius", "class_wheel_settings.html#afbcdefc252798e8ba1c9029a14a6fd84", null ], + [ "mSteeringAxis", "class_wheel_settings.html#aa3ee3a56dcf0f0c4b679d9be1b44e4bb", null ], + [ "mSuspensionDirection", "class_wheel_settings.html#a1901645636d97056d9966bdcff58d3f4", null ], + [ "mSuspensionForcePoint", "class_wheel_settings.html#a3981fc1b27c64cadc8a8a5e0d0e66521", null ], + [ "mSuspensionMaxLength", "class_wheel_settings.html#a29632dde4d9c95457019aa478e415345", null ], + [ "mSuspensionMinLength", "class_wheel_settings.html#afde39534b2ab075300c88a6284aeb904", null ], + [ "mSuspensionPreloadLength", "class_wheel_settings.html#a10cfbcf5f888bf21d046c75cbdd63c67", null ], + [ "mSuspensionSpring", "class_wheel_settings.html#a778e1295b5e6187b4435a66f8812be4e", null ], + [ "mWheelForward", "class_wheel_settings.html#af591b9f4e43a65991bff1706ad62031f", null ], + [ "mWheelUp", "class_wheel_settings.html#a80888c1fe230a769b72eed7885fe6878", null ], + [ "mWidth", "class_wheel_settings.html#a3384bb6aef1272f1f36c56c6397232f1", null ] +]; \ No newline at end of file diff --git a/class_wheel_settings.png b/class_wheel_settings.png new file mode 100644 index 000000000..d08faff3c Binary files /dev/null and b/class_wheel_settings.png differ diff --git a/class_wheel_settings_t_v-members.html b/class_wheel_settings_t_v-members.html new file mode 100644 index 000000000..b0ef0b3dc --- /dev/null +++ b/class_wheel_settings_t_v-members.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
WheelSettingsTV Member List
+
+
+ +

This is the complete list of members for WheelSettingsTV, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< WheelSettings >inline
cEmbeddedRefTarget< WheelSettings >protectedstatic
GetRefCount() constRefTarget< WheelSettings >inline
mEnableSuspensionForcePointWheelSettings
mLateralFrictionWheelSettingsTV
mLongitudinalFrictionWheelSettingsTV
mPositionWheelSettings
mRadiusWheelSettings
mRefCountRefTarget< WheelSettings >mutableprotected
mSteeringAxisWheelSettings
mSuspensionDirectionWheelSettings
mSuspensionForcePointWheelSettings
mSuspensionMaxLengthWheelSettings
mSuspensionMinLengthWheelSettings
mSuspensionPreloadLengthWheelSettings
mSuspensionSpringWheelSettings
mWheelForwardWheelSettings
mWheelUpWheelSettings
mWidthWheelSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< WheelSettings >::operator=(const RefTarget &)RefTarget< WheelSettings >inline
RefTarget()=defaultRefTarget< WheelSettings >inline
RefTarget(const RefTarget &)RefTarget< WheelSettings >inline
Release() constRefTarget< WheelSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideWheelSettingsTVvirtual
SaveBinaryState(StreamOut &inStream) const overrideWheelSettingsTVvirtual
SetEmbedded() constRefTarget< WheelSettings >inline
sInternalGetRefCountOffset()RefTarget< WheelSettings >inlinestatic
~RefTarget()RefTarget< WheelSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_wheel_settings_t_v.html b/class_wheel_settings_t_v.html new file mode 100644 index 000000000..ee67f4e53 --- /dev/null +++ b/class_wheel_settings_t_v.html @@ -0,0 +1,342 @@ + + + + + + + +Jolt Physics: WheelSettingsTV Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
WheelSettingsTV Class Reference
+
+
+ +

WheelSettings object specifically for TrackedVehicleController. + More...

+ +

#include <TrackedVehicleController.h>

+
+Inheritance diagram for WheelSettingsTV:
+
+
+ + +WheelSettings +SerializableObject +RefTarget< WheelSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents in binary form to inStream.
 
virtual void RestoreBinaryState (StreamIn &inStream) override
 Restores the contents in binary form to inStream.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< WheelSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

float mLongitudinalFriction = 4.0f
 Friction in forward direction of tire.
 
float mLateralFriction = 2.0f
 Friction in sideway direction of tire.
 
- Public Attributes inherited from WheelSettings
Vec3 mPosition { 0, 0, 0 }
 Attachment point of wheel suspension in local space of the body.
 
Vec3 mSuspensionForcePoint { 0, 0, 0 }
 Where tire forces (suspension and traction) are applied, in local space of the body. A good default is the center of the wheel in its neutral pose. See mEnableSuspensionForcePoint.
 
Vec3 mSuspensionDirection { 0, -1, 0 }
 Direction of the suspension in local space of the body, should point down.
 
Vec3 mSteeringAxis { 0, 1, 0 }
 Direction of the steering axis in local space of the body, should point up (e.g. for a bike would be -mSuspensionDirection)
 
Vec3 mWheelUp { 0, 1, 0 }
 Up direction when the wheel is in the neutral steering position (usually VehicleConstraintSettings::mUp but can be used to give the wheel camber or for a bike would be -mSuspensionDirection)
 
Vec3 mWheelForward { 0, 0, 1 }
 Forward direction when the wheel is in the neutral steering position (usually VehicleConstraintSettings::mForward but can be used to give the wheel toe, does not need to be perpendicular to mWheelUp)
 
float mSuspensionMinLength = 0.3f
 How long the suspension is in max raised position relative to the attachment point (m)
 
float mSuspensionMaxLength = 0.5f
 How long the suspension is in max droop position relative to the attachment point (m)
 
float mSuspensionPreloadLength = 0.0f
 The natural length (m) of the suspension spring is defined as mSuspensionMaxLength + mSuspensionPreloadLength. Can be used to preload the suspension as the spring is compressed by mSuspensionPreloadLength when the suspension is in max droop position. Note that this means when the vehicle touches the ground there is a discontinuity so it will also make the vehicle more bouncy as we're updating with discrete time steps.
 
SpringSettings mSuspensionSpring { ESpringMode::FrequencyAndDamping, 1.5f, 0.5f }
 Settings for the suspension spring.
 
float mRadius = 0.3f
 Radius of the wheel (m)
 
float mWidth = 0.1f
 Width of the wheel (m)
 
bool mEnableSuspensionForcePoint = false
 Enables mSuspensionForcePoint, if disabled, the forces are applied at the collision contact point. This leads to a more accurate simulation when interacting with dynamic objects but makes the vehicle less stable. When setting this to true, all forces will be applied to a fixed point on the vehicle body.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< WheelSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< WheelSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< WheelSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

WheelSettings object specifically for TrackedVehicleController.

+

Member Function Documentation

+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheelSettingsTV::RestoreBinaryState (StreamIninStream)
+
+overridevirtual
+
+ +

Restores the contents in binary form to inStream.

+ +

Reimplemented from WheelSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheelSettingsTV::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents in binary form to inStream.

+ +

Reimplemented from WheelSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mLateralFriction

+ +
+
+ + + + +
float WheelSettingsTV::mLateralFriction = 2.0f
+
+ +

Friction in sideway direction of tire.

+ +
+
+ +

◆ mLongitudinalFriction

+ +
+
+ + + + +
float WheelSettingsTV::mLongitudinalFriction = 4.0f
+
+ +

Friction in forward direction of tire.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_wheel_settings_t_v.js b/class_wheel_settings_t_v.js new file mode 100644 index 000000000..8d23725a9 --- /dev/null +++ b/class_wheel_settings_t_v.js @@ -0,0 +1,7 @@ +var class_wheel_settings_t_v = +[ + [ "RestoreBinaryState", "class_wheel_settings_t_v.html#a026d2a093b4da2f93be1a50a855eac5d", null ], + [ "SaveBinaryState", "class_wheel_settings_t_v.html#aa38d108404d72d9ddac0d87be1b22e8e", null ], + [ "mLateralFriction", "class_wheel_settings_t_v.html#aa156b84b239ea05d5c93527422398de2", null ], + [ "mLongitudinalFriction", "class_wheel_settings_t_v.html#adf00b725c4066bebdb541cc99025de76", null ] +]; \ No newline at end of file diff --git a/class_wheel_settings_t_v.png b/class_wheel_settings_t_v.png new file mode 100644 index 000000000..40a7e4adc Binary files /dev/null and b/class_wheel_settings_t_v.png differ diff --git a/class_wheel_settings_w_v-members.html b/class_wheel_settings_w_v-members.html new file mode 100644 index 000000000..905c7ccec --- /dev/null +++ b/class_wheel_settings_w_v-members.html @@ -0,0 +1,154 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
WheelSettingsWV Member List
+
+
+ +

This is the complete list of members for WheelSettingsWV, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< WheelSettings >inline
cEmbeddedRefTarget< WheelSettings >protectedstatic
GetRefCount() constRefTarget< WheelSettings >inline
mAngularDampingWheelSettingsWV
mEnableSuspensionForcePointWheelSettings
mInertiaWheelSettingsWV
mLateralFrictionWheelSettingsWV
mLongitudinalFrictionWheelSettingsWV
mMaxBrakeTorqueWheelSettingsWV
mMaxHandBrakeTorqueWheelSettingsWV
mMaxSteerAngleWheelSettingsWV
mPositionWheelSettings
mRadiusWheelSettings
mRefCountRefTarget< WheelSettings >mutableprotected
mSteeringAxisWheelSettings
mSuspensionDirectionWheelSettings
mSuspensionForcePointWheelSettings
mSuspensionMaxLengthWheelSettings
mSuspensionMinLengthWheelSettings
mSuspensionPreloadLengthWheelSettings
mSuspensionSpringWheelSettings
mWheelForwardWheelSettings
mWheelUpWheelSettings
mWidthWheelSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< WheelSettings >::operator=(const RefTarget &)RefTarget< WheelSettings >inline
RefTarget()=defaultRefTarget< WheelSettings >inline
RefTarget(const RefTarget &)RefTarget< WheelSettings >inline
Release() constRefTarget< WheelSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideWheelSettingsWVvirtual
SaveBinaryState(StreamOut &inStream) const overrideWheelSettingsWVvirtual
SetEmbedded() constRefTarget< WheelSettings >inline
sInternalGetRefCountOffset()RefTarget< WheelSettings >inlinestatic
WheelSettingsWV()WheelSettingsWV
~RefTarget()RefTarget< WheelSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_wheel_settings_w_v.html b/class_wheel_settings_w_v.html new file mode 100644 index 000000000..2665f27b4 --- /dev/null +++ b/class_wheel_settings_w_v.html @@ -0,0 +1,460 @@ + + + + + + + +Jolt Physics: WheelSettingsWV Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
WheelSettingsWV Class Reference
+
+
+ +

WheelSettings object specifically for WheeledVehicleController. + More...

+ +

#include <WheeledVehicleController.h>

+
+Inheritance diagram for WheelSettingsWV:
+
+
+ + +WheelSettings +SerializableObject +RefTarget< WheelSettings > +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 WheelSettingsWV ()
 Constructor.
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents in binary form to inStream.
 
virtual void RestoreBinaryState (StreamIn &inStream) override
 Restores the contents in binary form to inStream.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< WheelSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

float mInertia = 0.9f
 Moment of inertia (kg m^2), for a cylinder this would be 0.5 * M * R^2 which is 0.9 for a wheel with a mass of 20 kg and radius 0.3 m.
 
float mAngularDamping = 0.2f
 Angular damping factor of the wheel: dw/dt = -c * w.
 
float mMaxSteerAngle = DegreesToRadians(70.0f)
 How much this wheel can steer (radians)
 
LinearCurve mLongitudinalFriction
 On the Y-axis: friction in the forward direction of the tire. Friction is normally between 0 (no friction) and 1 (full friction) although friction can be a little bit higher than 1 because of the profile of a tire. On the X-axis: the slip ratio (fraction) defined as (omega_wheel * r_wheel - v_longitudinal) / |v_longitudinal|. You can see slip ratio as the amount the wheel is spinning relative to the floor: 0 means the wheel has full traction and is rolling perfectly in sync with the ground, 1 is for example when the wheel is locked and sliding over the ground.
 
LinearCurve mLateralFriction
 On the Y-axis: friction in the sideways direction of the tire. Friction is normally between 0 (no friction) and 1 (full friction) although friction can be a little bit higher than 1 because of the profile of a tire. On the X-axis: the slip angle (degrees) defined as angle between relative contact velocity and tire direction.
 
float mMaxBrakeTorque = 1500.0f
 How much torque (Nm) the brakes can apply to this wheel.
 
float mMaxHandBrakeTorque = 4000.0f
 How much torque (Nm) the hand brake can apply to this wheel (usually only applied to the rear wheels)
 
- Public Attributes inherited from WheelSettings
Vec3 mPosition { 0, 0, 0 }
 Attachment point of wheel suspension in local space of the body.
 
Vec3 mSuspensionForcePoint { 0, 0, 0 }
 Where tire forces (suspension and traction) are applied, in local space of the body. A good default is the center of the wheel in its neutral pose. See mEnableSuspensionForcePoint.
 
Vec3 mSuspensionDirection { 0, -1, 0 }
 Direction of the suspension in local space of the body, should point down.
 
Vec3 mSteeringAxis { 0, 1, 0 }
 Direction of the steering axis in local space of the body, should point up (e.g. for a bike would be -mSuspensionDirection)
 
Vec3 mWheelUp { 0, 1, 0 }
 Up direction when the wheel is in the neutral steering position (usually VehicleConstraintSettings::mUp but can be used to give the wheel camber or for a bike would be -mSuspensionDirection)
 
Vec3 mWheelForward { 0, 0, 1 }
 Forward direction when the wheel is in the neutral steering position (usually VehicleConstraintSettings::mForward but can be used to give the wheel toe, does not need to be perpendicular to mWheelUp)
 
float mSuspensionMinLength = 0.3f
 How long the suspension is in max raised position relative to the attachment point (m)
 
float mSuspensionMaxLength = 0.5f
 How long the suspension is in max droop position relative to the attachment point (m)
 
float mSuspensionPreloadLength = 0.0f
 The natural length (m) of the suspension spring is defined as mSuspensionMaxLength + mSuspensionPreloadLength. Can be used to preload the suspension as the spring is compressed by mSuspensionPreloadLength when the suspension is in max droop position. Note that this means when the vehicle touches the ground there is a discontinuity so it will also make the vehicle more bouncy as we're updating with discrete time steps.
 
SpringSettings mSuspensionSpring { ESpringMode::FrequencyAndDamping, 1.5f, 0.5f }
 Settings for the suspension spring.
 
float mRadius = 0.3f
 Radius of the wheel (m)
 
float mWidth = 0.1f
 Width of the wheel (m)
 
bool mEnableSuspensionForcePoint = false
 Enables mSuspensionForcePoint, if disabled, the forces are applied at the collision contact point. This leads to a more accurate simulation when interacting with dynamic objects but makes the vehicle less stable. When setting this to true, all forces will be applied to a fixed point on the vehicle body.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< WheelSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< WheelSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< WheelSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

WheelSettings object specifically for WheeledVehicleController.

+

Constructor & Destructor Documentation

+ +

◆ WheelSettingsWV()

+ +
+
+ + + + + + + +
WheelSettingsWV::WheelSettingsWV ()
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheelSettingsWV::RestoreBinaryState (StreamIninStream)
+
+overridevirtual
+
+ +

Restores the contents in binary form to inStream.

+ +

Reimplemented from WheelSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheelSettingsWV::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents in binary form to inStream.

+ +

Reimplemented from WheelSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mAngularDamping

+ +
+
+ + + + +
float WheelSettingsWV::mAngularDamping = 0.2f
+
+ +

Angular damping factor of the wheel: dw/dt = -c * w.

+ +
+
+ +

◆ mInertia

+ +
+
+ + + + +
float WheelSettingsWV::mInertia = 0.9f
+
+ +

Moment of inertia (kg m^2), for a cylinder this would be 0.5 * M * R^2 which is 0.9 for a wheel with a mass of 20 kg and radius 0.3 m.

+ +
+
+ +

◆ mLateralFriction

+ +
+
+ + + + +
LinearCurve WheelSettingsWV::mLateralFriction
+
+ +

On the Y-axis: friction in the sideways direction of the tire. Friction is normally between 0 (no friction) and 1 (full friction) although friction can be a little bit higher than 1 because of the profile of a tire. On the X-axis: the slip angle (degrees) defined as angle between relative contact velocity and tire direction.

+ +
+
+ +

◆ mLongitudinalFriction

+ +
+
+ + + + +
LinearCurve WheelSettingsWV::mLongitudinalFriction
+
+ +

On the Y-axis: friction in the forward direction of the tire. Friction is normally between 0 (no friction) and 1 (full friction) although friction can be a little bit higher than 1 because of the profile of a tire. On the X-axis: the slip ratio (fraction) defined as (omega_wheel * r_wheel - v_longitudinal) / |v_longitudinal|. You can see slip ratio as the amount the wheel is spinning relative to the floor: 0 means the wheel has full traction and is rolling perfectly in sync with the ground, 1 is for example when the wheel is locked and sliding over the ground.

+ +
+
+ +

◆ mMaxBrakeTorque

+ +
+
+ + + + +
float WheelSettingsWV::mMaxBrakeTorque = 1500.0f
+
+ +

How much torque (Nm) the brakes can apply to this wheel.

+ +
+
+ +

◆ mMaxHandBrakeTorque

+ +
+
+ + + + +
float WheelSettingsWV::mMaxHandBrakeTorque = 4000.0f
+
+ +

How much torque (Nm) the hand brake can apply to this wheel (usually only applied to the rear wheels)

+ +
+
+ +

◆ mMaxSteerAngle

+ +
+
+ + + + +
float WheelSettingsWV::mMaxSteerAngle = DegreesToRadians(70.0f)
+
+ +

How much this wheel can steer (radians)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_wheel_settings_w_v.js b/class_wheel_settings_w_v.js new file mode 100644 index 000000000..aaed63f6a --- /dev/null +++ b/class_wheel_settings_w_v.js @@ -0,0 +1,13 @@ +var class_wheel_settings_w_v = +[ + [ "WheelSettingsWV", "class_wheel_settings_w_v.html#abc4a4ace195d5bc7c6e3a2c40ebad100", null ], + [ "RestoreBinaryState", "class_wheel_settings_w_v.html#a30dc23071eb952eaf4ec80cdd3453c39", null ], + [ "SaveBinaryState", "class_wheel_settings_w_v.html#a907782aa9c6e6c2dde932b9b01835796", null ], + [ "mAngularDamping", "class_wheel_settings_w_v.html#a5ee74ed3ed81596c5401879f3acb420a", null ], + [ "mInertia", "class_wheel_settings_w_v.html#a0a0be2bb26687a4778426e9797f2bbb5", null ], + [ "mLateralFriction", "class_wheel_settings_w_v.html#a352e4f9e4960e63fd95257d7649db932", null ], + [ "mLongitudinalFriction", "class_wheel_settings_w_v.html#a6d94d1e2a107362a82d5c525d524dafc", null ], + [ "mMaxBrakeTorque", "class_wheel_settings_w_v.html#a3a20101ee6ef942fc0d968243c9b7aba", null ], + [ "mMaxHandBrakeTorque", "class_wheel_settings_w_v.html#a476d921671455235bef7d9e035584e11", null ], + [ "mMaxSteerAngle", "class_wheel_settings_w_v.html#abdbf204dc70e99e88d3c58938ec2360f", null ] +]; \ No newline at end of file diff --git a/class_wheel_settings_w_v.png b/class_wheel_settings_w_v.png new file mode 100644 index 000000000..7fd99d195 Binary files /dev/null and b/class_wheel_settings_w_v.png differ diff --git a/class_wheel_t_v-members.html b/class_wheel_t_v-members.html new file mode 100644 index 000000000..f4bb449ce --- /dev/null +++ b/class_wheel_t_v-members.html @@ -0,0 +1,169 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
WheelTV Member List
+
+
+ +

This is the complete list of members for WheelTV, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CalculateAngularVelocity(const VehicleConstraint &inConstraint)WheelTV
GetAngularVelocity() constWheelinline
GetContactBodyID() constWheelinline
GetContactLateral() constWheelinline
GetContactLongitudinal() constWheelinline
GetContactNormal() constWheelinline
GetContactPointVelocity() constWheelinline
GetContactPosition() constWheelinline
GetContactSubShapeID() constWheelinline
GetLateralLambda() constWheelinline
GetLongitudinalLambda() constWheelinline
GetRotationAngle() constWheelinline
GetSettings() constWheelTVinline
GetSteerAngle() constWheelinline
GetSuspensionLambda() constWheelinline
GetSuspensionLength() constWheelinline
HasContact() constWheelinline
HasHitHardPoint() constWheelinline
mAngleWheelprotected
mAngularVelocityWheelprotected
mAntiRollBarImpulseWheelprotected
mAxlePlaneConstantWheelprotected
mBrakeImpulseWheelTV
mCombinedLateralFrictionWheelTV
mCombinedLongitudinalFrictionWheelTV
mContactBodyWheelprotected
mContactBodyIDWheelprotected
mContactLateralWheelprotected
mContactLongitudinalWheelprotected
mContactNormalWheelprotected
mContactPointVelocityWheelprotected
mContactPositionWheelprotected
mContactSubShapeIDWheelprotected
mLateralPartWheelprotected
mLongitudinalPartWheelprotected
mSettingsWheelprotected
mSteerAngleWheelprotected
mSuspensionLengthWheelprotected
mSuspensionMaxUpPartWheelprotected
mSuspensionPartWheelprotected
mTrackIndexWheelTV
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
SetAngularVelocity(float inVel)Wheelinline
SetRotationAngle(float inAngle)Wheelinline
SetSteerAngle(float inAngle)Wheelinline
SolveLateralConstraintPart(const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)Wheel
SolveLongitudinalConstraintPart(const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)Wheel
Update(uint inWheelIndex, float inDeltaTime, const VehicleConstraint &inConstraint)WheelTV
Wheel(const WheelSettings &inSettings)Wheelexplicit
WheelTV(const WheelSettingsTV &inWheel)WheelTVexplicit
~Wheel()=defaultWheelvirtual
+
+ + + + diff --git a/class_wheel_t_v.html b/class_wheel_t_v.html new file mode 100644 index 000000000..7b15c299c --- /dev/null +++ b/class_wheel_t_v.html @@ -0,0 +1,488 @@ + + + + + + + +Jolt Physics: WheelTV Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
WheelTV Class Reference
+
+
+ +

Wheel object specifically for TrackedVehicleController. + More...

+ +

#include <TrackedVehicleController.h>

+
+Inheritance diagram for WheelTV:
+
+
+ + +Wheel +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE WheelTV (const WheelSettingsTV &inWheel)
 Constructor.
 
const WheelSettingsTVGetSettings () const
 Override GetSettings and cast to the correct class.
 
void CalculateAngularVelocity (const VehicleConstraint &inConstraint)
 Update the angular velocity of the wheel based on the angular velocity of the track.
 
void Update (uint inWheelIndex, float inDeltaTime, const VehicleConstraint &inConstraint)
 Update the wheel rotation based on the current angular velocity.
 
- Public Member Functions inherited from Wheel
JPH_OVERRIDE_NEW_DELETE Wheel (const WheelSettings &inSettings)
 Constructor / destructor.
 
virtual ~Wheel ()=default
 
const WheelSettingsGetSettings () const
 Get settings for the wheel.
 
float GetAngularVelocity () const
 Get the angular velocity (rad/s) for this wheel, note that positive means the wheel is rotating such that the car moves forward.
 
void SetAngularVelocity (float inVel)
 Update the angular velocity (rad/s)
 
float GetRotationAngle () const
 Get the current rotation angle of the wheel in radians [0, 2 pi].
 
void SetRotationAngle (float inAngle)
 Set the current rotation angle of the wheel in radians [0, 2 pi].
 
float GetSteerAngle () const
 Get the current steer angle of the wheel in radians [-pi, pi], positive is to the left.
 
void SetSteerAngle (float inAngle)
 Set the current steer angle of the wheel in radians [-pi, pi].
 
bool HasContact () const
 Returns true if the wheel is touching an object.
 
BodyID GetContactBodyID () const
 Returns the body ID of the body that this wheel is touching.
 
SubShapeID GetContactSubShapeID () const
 Returns the sub shape ID where we're contacting the body.
 
RVec3 GetContactPosition () const
 Returns the current contact position in world space (note by the time you call this the vehicle has moved)
 
Vec3 GetContactPointVelocity () const
 Velocity of the contact point (m / s, not relative to the wheel but in world space)
 
Vec3 GetContactNormal () const
 Returns the current contact normal in world space (note by the time you call this the vehicle has moved)
 
Vec3 GetContactLongitudinal () const
 Returns longitudinal direction (direction along the wheel relative to floor) in world space (note by the time you call this the vehicle has moved)
 
Vec3 GetContactLateral () const
 Returns lateral direction (sideways direction) in world space (note by the time you call this the vehicle has moved)
 
float GetSuspensionLength () const
 Get the length of the suspension for a wheel (m) relative to the suspension attachment point (hard point)
 
bool HasHitHardPoint () const
 Check if the suspension hit its upper limit.
 
float GetSuspensionLambda () const
 Get the total impulse (N s) that was applied by the suspension.
 
float GetLongitudinalLambda () const
 Get total impulse (N s) applied along the forward direction of the wheel.
 
float GetLateralLambda () const
 Get total impulse (N s) applied along the sideways direction of the wheel.
 
bool SolveLongitudinalConstraintPart (const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)
 Internal function that should only be called by the controller. Used to apply impulses in the forward direction of the vehicle.
 
bool SolveLateralConstraintPart (const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)
 Internal function that should only be called by the controller. Used to apply impulses in the sideways direction of the vehicle.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + +

+Public Attributes

int mTrackIndex = -1
 Index in mTracks to which this wheel is attached (calculated on initialization)
 
float mCombinedLongitudinalFriction = 0.0f
 Combined friction coefficient in longitudinal direction (combines terrain and track)
 
float mCombinedLateralFriction = 0.0f
 Combined friction coefficient in lateral direction (combines terrain and track)
 
float mBrakeImpulse = 0.0f
 Amount of impulse that the brakes can apply to the floor (excluding friction), spread out from brake impulse applied on track.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from Wheel
RefConst< WheelSettingsmSettings
 Configuration settings for this wheel.
 
BodyID mContactBodyID
 ID of body for ground.
 
SubShapeID mContactSubShapeID
 Sub shape ID for ground.
 
BodymContactBody = nullptr
 Body for ground.
 
float mSuspensionLength
 Current length of the suspension.
 
RVec3 mContactPosition
 Position of the contact point between wheel and ground.
 
Vec3 mContactPointVelocity
 Velocity of the contact point (m / s, not relative to the wheel but in world space)
 
Vec3 mContactNormal
 Normal of the contact point between wheel and ground.
 
Vec3 mContactLongitudinal
 Vector perpendicular to normal in the forward direction.
 
Vec3 mContactLateral
 Vector perpendicular to normal and longitudinal direction in the right direction.
 
Real mAxlePlaneConstant
 Constant for the contact plane of the axle, defined as ContactNormal . (WorldSpaceSuspensionPoint + SuspensionLength * WorldSpaceSuspensionDirection)
 
float mAntiRollBarImpulse = 0.0f
 Amount of impulse applied to the suspension from the anti-rollbars.
 
float mSteerAngle = 0.0f
 Rotation around the suspension direction, positive is to the left.
 
float mAngularVelocity = 0.0f
 Rotation speed of wheel, positive when the wheels cause the vehicle to move forwards (rad/s)
 
float mAngle = 0.0f
 Current rotation of the wheel (rad, [0, 2 pi])
 
AxisConstraintPart mSuspensionPart
 Controls movement up/down along the contact normal.
 
AxisConstraintPart mSuspensionMaxUpPart
 Adds a hard limit when reaching the minimal suspension length.
 
AxisConstraintPart mLongitudinalPart
 Controls movement forward/backward.
 
AxisConstraintPart mLateralPart
 Controls movement sideways (slip)
 
+

Detailed Description

+

Wheel object specifically for TrackedVehicleController.

+

Constructor & Destructor Documentation

+ +

◆ WheelTV()

+ +
+
+ + + + + +
+ + + + + + + + +
WheelTV::WheelTV (const WheelSettingsTVinWheel)
+
+explicit
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ CalculateAngularVelocity()

+ +
+
+ + + + + + + + +
void WheelTV::CalculateAngularVelocity (const VehicleConstraintinConstraint)
+
+ +

Update the angular velocity of the wheel based on the angular velocity of the track.

+ +
+
+ +

◆ GetSettings()

+ +
+
+ + + + + +
+ + + + + + + +
const WheelSettingsTV * WheelTV::GetSettings () const
+
+inline
+
+ +

Override GetSettings and cast to the correct class.

+ +
+
+ +

◆ Update()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void WheelTV::Update (uint inWheelIndex,
float inDeltaTime,
const VehicleConstraintinConstraint 
)
+
+ +

Update the wheel rotation based on the current angular velocity.

+ +
+
+

Member Data Documentation

+ +

◆ mBrakeImpulse

+ +
+
+ + + + +
float WheelTV::mBrakeImpulse = 0.0f
+
+ +

Amount of impulse that the brakes can apply to the floor (excluding friction), spread out from brake impulse applied on track.

+ +
+
+ +

◆ mCombinedLateralFriction

+ +
+
+ + + + +
float WheelTV::mCombinedLateralFriction = 0.0f
+
+ +

Combined friction coefficient in lateral direction (combines terrain and track)

+ +
+
+ +

◆ mCombinedLongitudinalFriction

+ +
+
+ + + + +
float WheelTV::mCombinedLongitudinalFriction = 0.0f
+
+ +

Combined friction coefficient in longitudinal direction (combines terrain and track)

+ +
+
+ +

◆ mTrackIndex

+ +
+
+ + + + +
int WheelTV::mTrackIndex = -1
+
+ +

Index in mTracks to which this wheel is attached (calculated on initialization)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_wheel_t_v.js b/class_wheel_t_v.js new file mode 100644 index 000000000..b7d04a6ae --- /dev/null +++ b/class_wheel_t_v.js @@ -0,0 +1,11 @@ +var class_wheel_t_v = +[ + [ "WheelTV", "class_wheel_t_v.html#a84f1cd74d7ee96248d68efe0ddb6fe3f", null ], + [ "CalculateAngularVelocity", "class_wheel_t_v.html#a91b1fa8cf9b528c3ce45a5512afc106c", null ], + [ "GetSettings", "class_wheel_t_v.html#a7189cbd04b92e8babd4fc9e01826d030", null ], + [ "Update", "class_wheel_t_v.html#a4c2e4c332e9e4e69c1431a1d19ae6bce", null ], + [ "mBrakeImpulse", "class_wheel_t_v.html#a0f5121e16dd00f307f6ea682660c51ac", null ], + [ "mCombinedLateralFriction", "class_wheel_t_v.html#a51f513ce9b5eaac7dafdc7ed64b8c57a", null ], + [ "mCombinedLongitudinalFriction", "class_wheel_t_v.html#a36519514c439deca6343db4a2b22d76a", null ], + [ "mTrackIndex", "class_wheel_t_v.html#a79ab021cdfe7a345e7e72abcfb418679", null ] +]; \ No newline at end of file diff --git a/class_wheel_t_v.png b/class_wheel_t_v.png new file mode 100644 index 000000000..744c4a437 Binary files /dev/null and b/class_wheel_t_v.png differ diff --git a/class_wheel_w_v-members.html b/class_wheel_w_v-members.html new file mode 100644 index 000000000..0694ac486 --- /dev/null +++ b/class_wheel_w_v-members.html @@ -0,0 +1,170 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
WheelWV Member List
+
+
+ +

This is the complete list of members for WheelWV, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ApplyTorque(float inTorque, float inDeltaTime)WheelWVinline
GetAngularVelocity() constWheelinline
GetContactBodyID() constWheelinline
GetContactLateral() constWheelinline
GetContactLongitudinal() constWheelinline
GetContactNormal() constWheelinline
GetContactPointVelocity() constWheelinline
GetContactPosition() constWheelinline
GetContactSubShapeID() constWheelinline
GetLateralLambda() constWheelinline
GetLongitudinalLambda() constWheelinline
GetRotationAngle() constWheelinline
GetSettings() constWheelWVinline
GetSteerAngle() constWheelinline
GetSuspensionLambda() constWheelinline
GetSuspensionLength() constWheelinline
HasContact() constWheelinline
HasHitHardPoint() constWheelinline
mAngleWheelprotected
mAngularVelocityWheelprotected
mAntiRollBarImpulseWheelprotected
mAxlePlaneConstantWheelprotected
mBrakeImpulseWheelWV
mCombinedLateralFrictionWheelWV
mCombinedLongitudinalFrictionWheelWV
mContactBodyWheelprotected
mContactBodyIDWheelprotected
mContactLateralWheelprotected
mContactLongitudinalWheelprotected
mContactNormalWheelprotected
mContactPointVelocityWheelprotected
mContactPositionWheelprotected
mContactSubShapeIDWheelprotected
mLateralPartWheelprotected
mLateralSlipWheelWV
mLongitudinalPartWheelprotected
mLongitudinalSlipWheelWV
mSettingsWheelprotected
mSteerAngleWheelprotected
mSuspensionLengthWheelprotected
mSuspensionMaxUpPartWheelprotected
mSuspensionPartWheelprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
operator=(const NonCopyable &)=deleteNonCopyable
SetAngularVelocity(float inVel)Wheelinline
SetRotationAngle(float inAngle)Wheelinline
SetSteerAngle(float inAngle)Wheelinline
SolveLateralConstraintPart(const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)Wheel
SolveLongitudinalConstraintPart(const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)Wheel
Update(uint inWheelIndex, float inDeltaTime, const VehicleConstraint &inConstraint)WheelWV
Wheel(const WheelSettings &inSettings)Wheelexplicit
WheelWV(const WheelSettingsWV &inWheel)WheelWVexplicit
~Wheel()=defaultWheelvirtual
+
+ + + + diff --git a/class_wheel_w_v.html b/class_wheel_w_v.html new file mode 100644 index 000000000..e069c74a0 --- /dev/null +++ b/class_wheel_w_v.html @@ -0,0 +1,525 @@ + + + + + + + +Jolt Physics: WheelWV Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
WheelWV Class Reference
+
+
+ +

Wheel object specifically for WheeledVehicleController. + More...

+ +

#include <WheeledVehicleController.h>

+
+Inheritance diagram for WheelWV:
+
+
+ + +Wheel +NonCopyable + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE WheelWV (const WheelSettingsWV &inWheel)
 Constructor.
 
const WheelSettingsWVGetSettings () const
 Override GetSettings and cast to the correct class.
 
void ApplyTorque (float inTorque, float inDeltaTime)
 Apply a torque (N m) to the wheel for a particular delta time.
 
void Update (uint inWheelIndex, float inDeltaTime, const VehicleConstraint &inConstraint)
 Update the wheel rotation based on the current angular velocity.
 
- Public Member Functions inherited from Wheel
JPH_OVERRIDE_NEW_DELETE Wheel (const WheelSettings &inSettings)
 Constructor / destructor.
 
virtual ~Wheel ()=default
 
const WheelSettingsGetSettings () const
 Get settings for the wheel.
 
float GetAngularVelocity () const
 Get the angular velocity (rad/s) for this wheel, note that positive means the wheel is rotating such that the car moves forward.
 
void SetAngularVelocity (float inVel)
 Update the angular velocity (rad/s)
 
float GetRotationAngle () const
 Get the current rotation angle of the wheel in radians [0, 2 pi].
 
void SetRotationAngle (float inAngle)
 Set the current rotation angle of the wheel in radians [0, 2 pi].
 
float GetSteerAngle () const
 Get the current steer angle of the wheel in radians [-pi, pi], positive is to the left.
 
void SetSteerAngle (float inAngle)
 Set the current steer angle of the wheel in radians [-pi, pi].
 
bool HasContact () const
 Returns true if the wheel is touching an object.
 
BodyID GetContactBodyID () const
 Returns the body ID of the body that this wheel is touching.
 
SubShapeID GetContactSubShapeID () const
 Returns the sub shape ID where we're contacting the body.
 
RVec3 GetContactPosition () const
 Returns the current contact position in world space (note by the time you call this the vehicle has moved)
 
Vec3 GetContactPointVelocity () const
 Velocity of the contact point (m / s, not relative to the wheel but in world space)
 
Vec3 GetContactNormal () const
 Returns the current contact normal in world space (note by the time you call this the vehicle has moved)
 
Vec3 GetContactLongitudinal () const
 Returns longitudinal direction (direction along the wheel relative to floor) in world space (note by the time you call this the vehicle has moved)
 
Vec3 GetContactLateral () const
 Returns lateral direction (sideways direction) in world space (note by the time you call this the vehicle has moved)
 
float GetSuspensionLength () const
 Get the length of the suspension for a wheel (m) relative to the suspension attachment point (hard point)
 
bool HasHitHardPoint () const
 Check if the suspension hit its upper limit.
 
float GetSuspensionLambda () const
 Get the total impulse (N s) that was applied by the suspension.
 
float GetLongitudinalLambda () const
 Get total impulse (N s) applied along the forward direction of the wheel.
 
float GetLateralLambda () const
 Get total impulse (N s) applied along the sideways direction of the wheel.
 
bool SolveLongitudinalConstraintPart (const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)
 Internal function that should only be called by the controller. Used to apply impulses in the forward direction of the vehicle.
 
bool SolveLateralConstraintPart (const VehicleConstraint &inConstraint, float inMinImpulse, float inMaxImpulse)
 Internal function that should only be called by the controller. Used to apply impulses in the sideways direction of the vehicle.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + +

+Public Attributes

float mLongitudinalSlip = 0.0f
 Velocity difference between ground and wheel relative to ground velocity.
 
float mLateralSlip = 0.0f
 Angular difference (in radians) between ground and wheel relative to ground velocity.
 
float mCombinedLongitudinalFriction = 0.0f
 Combined friction coefficient in longitudinal direction (combines terrain and tires)
 
float mCombinedLateralFriction = 0.0f
 Combined friction coefficient in lateral direction (combines terrain and tires)
 
float mBrakeImpulse = 0.0f
 Amount of impulse that the brakes can apply to the floor (excluding friction)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from Wheel
RefConst< WheelSettingsmSettings
 Configuration settings for this wheel.
 
BodyID mContactBodyID
 ID of body for ground.
 
SubShapeID mContactSubShapeID
 Sub shape ID for ground.
 
BodymContactBody = nullptr
 Body for ground.
 
float mSuspensionLength
 Current length of the suspension.
 
RVec3 mContactPosition
 Position of the contact point between wheel and ground.
 
Vec3 mContactPointVelocity
 Velocity of the contact point (m / s, not relative to the wheel but in world space)
 
Vec3 mContactNormal
 Normal of the contact point between wheel and ground.
 
Vec3 mContactLongitudinal
 Vector perpendicular to normal in the forward direction.
 
Vec3 mContactLateral
 Vector perpendicular to normal and longitudinal direction in the right direction.
 
Real mAxlePlaneConstant
 Constant for the contact plane of the axle, defined as ContactNormal . (WorldSpaceSuspensionPoint + SuspensionLength * WorldSpaceSuspensionDirection)
 
float mAntiRollBarImpulse = 0.0f
 Amount of impulse applied to the suspension from the anti-rollbars.
 
float mSteerAngle = 0.0f
 Rotation around the suspension direction, positive is to the left.
 
float mAngularVelocity = 0.0f
 Rotation speed of wheel, positive when the wheels cause the vehicle to move forwards (rad/s)
 
float mAngle = 0.0f
 Current rotation of the wheel (rad, [0, 2 pi])
 
AxisConstraintPart mSuspensionPart
 Controls movement up/down along the contact normal.
 
AxisConstraintPart mSuspensionMaxUpPart
 Adds a hard limit when reaching the minimal suspension length.
 
AxisConstraintPart mLongitudinalPart
 Controls movement forward/backward.
 
AxisConstraintPart mLateralPart
 Controls movement sideways (slip)
 
+

Detailed Description

+

Wheel object specifically for WheeledVehicleController.

+

Constructor & Destructor Documentation

+ +

◆ WheelWV()

+ +
+
+ + + + + +
+ + + + + + + + +
WheelWV::WheelWV (const WheelSettingsWVinWheel)
+
+explicit
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ ApplyTorque()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void WheelWV::ApplyTorque (float inTorque,
float inDeltaTime 
)
+
+inline
+
+ +

Apply a torque (N m) to the wheel for a particular delta time.

+ +
+
+ +

◆ GetSettings()

+ +
+
+ + + + + +
+ + + + + + + +
const WheelSettingsWV * WheelWV::GetSettings () const
+
+inline
+
+ +

Override GetSettings and cast to the correct class.

+ +
+
+ +

◆ Update()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void WheelWV::Update (uint inWheelIndex,
float inDeltaTime,
const VehicleConstraintinConstraint 
)
+
+ +

Update the wheel rotation based on the current angular velocity.

+ +
+
+

Member Data Documentation

+ +

◆ mBrakeImpulse

+ +
+
+ + + + +
float WheelWV::mBrakeImpulse = 0.0f
+
+ +

Amount of impulse that the brakes can apply to the floor (excluding friction)

+ +
+
+ +

◆ mCombinedLateralFriction

+ +
+
+ + + + +
float WheelWV::mCombinedLateralFriction = 0.0f
+
+ +

Combined friction coefficient in lateral direction (combines terrain and tires)

+ +
+
+ +

◆ mCombinedLongitudinalFriction

+ +
+
+ + + + +
float WheelWV::mCombinedLongitudinalFriction = 0.0f
+
+ +

Combined friction coefficient in longitudinal direction (combines terrain and tires)

+ +
+
+ +

◆ mLateralSlip

+ +
+
+ + + + +
float WheelWV::mLateralSlip = 0.0f
+
+ +

Angular difference (in radians) between ground and wheel relative to ground velocity.

+ +
+
+ +

◆ mLongitudinalSlip

+ +
+
+ + + + +
float WheelWV::mLongitudinalSlip = 0.0f
+
+ +

Velocity difference between ground and wheel relative to ground velocity.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_wheel_w_v.js b/class_wheel_w_v.js new file mode 100644 index 000000000..6692a398e --- /dev/null +++ b/class_wheel_w_v.js @@ -0,0 +1,12 @@ +var class_wheel_w_v = +[ + [ "WheelWV", "class_wheel_w_v.html#a5824fc9dc6c81f4bd1d03b8a51f1fcb8", null ], + [ "ApplyTorque", "class_wheel_w_v.html#a8d82611fb63ebf51e726d0aff2db4cab", null ], + [ "GetSettings", "class_wheel_w_v.html#a3c72a249175961c0cb86b691b2980d06", null ], + [ "Update", "class_wheel_w_v.html#a5ac5b89c371660f4899a5fd4062599cb", null ], + [ "mBrakeImpulse", "class_wheel_w_v.html#af5db5f73435db5c8f5d0422aea901897", null ], + [ "mCombinedLateralFriction", "class_wheel_w_v.html#af4a4bb2b7d6fbc7100be7a6b9d189ea7", null ], + [ "mCombinedLongitudinalFriction", "class_wheel_w_v.html#a6f359594d9d3a9844a1b5c17960974d2", null ], + [ "mLateralSlip", "class_wheel_w_v.html#ad9555d3a3c1a7bc1eb6e77d4b4fb0f24", null ], + [ "mLongitudinalSlip", "class_wheel_w_v.html#ae3f4f3b52d930e58f4309199889a2342", null ] +]; \ No newline at end of file diff --git a/class_wheel_w_v.png b/class_wheel_w_v.png new file mode 100644 index 000000000..98c56f04f Binary files /dev/null and b/class_wheel_w_v.png differ diff --git a/class_wheeled_vehicle_controller-members.html b/class_wheeled_vehicle_controller-members.html new file mode 100644 index 000000000..b78307621 --- /dev/null +++ b/class_wheeled_vehicle_controller-members.html @@ -0,0 +1,177 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
WheeledVehicleController Member List
+
+
+ +

This is the complete list of members for WheeledVehicleController, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< VehicleController >inline
AllowSleep() const overrideWheeledVehicleControllerprotectedvirtual
cEmbeddedRefTarget< VehicleController >protectedstatic
ConstructWheel(const WheelSettings &inWheel) const overrideWheeledVehicleControllerinlineprotectedvirtual
Differentials typedefWheeledVehicleController
Draw(DebugRenderer *inRenderer) const overrideWheeledVehicleControllerprotectedvirtual
GetBrakeInput() constWheeledVehicleControllerinline
GetDifferentialLimitedSlipRatio() constWheeledVehicleControllerinline
GetDifferentials() constWheeledVehicleControllerinline
GetDifferentials()WheeledVehicleControllerinline
GetEngine() constWheeledVehicleControllerinline
GetEngine()WheeledVehicleControllerinline
GetForwardInput() constWheeledVehicleControllerinline
GetHandBrakeInput() constWheeledVehicleControllerinline
GetRefCount() constRefTarget< VehicleController >inline
GetRightInput() constWheeledVehicleControllerinline
GetTireMaxImpulseCallback() constWheeledVehicleControllerinline
GetTransmission() constWheeledVehicleControllerinline
GetTransmission()WheeledVehicleControllerinline
GetWheelSpeedAtClutch() constWheeledVehicleController
mBrakeInputWheeledVehicleControllerprotected
mConstraintVehicleControllerprotected
mDifferentialLimitedSlipRatioWheeledVehicleControllerprotected
mDifferentialsWheeledVehicleControllerprotected
mEngineWheeledVehicleControllerprotected
mForwardInputWheeledVehicleControllerprotected
mHandBrakeInputWheeledVehicleControllerprotected
mPreviousDeltaTimeWheeledVehicleControllerprotected
mRefCountRefTarget< VehicleController >mutableprotected
mRightInputWheeledVehicleControllerprotected
mRPMMeterPositionWheeledVehicleControllerprotected
mRPMMeterSizeWheeledVehicleControllerprotected
mTireMaxImpulseCallbackWheeledVehicleControllerprotected
mTransmissionWheeledVehicleControllerprotected
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
RefTarget< VehicleController >::operator=(const RefTarget &)RefTarget< VehicleController >inline
NonCopyable::operator=(const NonCopyable &)=deleteNonCopyable
PostCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) overrideWheeledVehicleControllerprotectedvirtual
PreCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) overrideWheeledVehicleControllerprotectedvirtual
RefTarget()=defaultRefTarget< VehicleController >inline
RefTarget(const RefTarget &)RefTarget< VehicleController >inline
Release() constRefTarget< VehicleController >inline
RestoreState(StateRecorder &inStream) overrideWheeledVehicleControllerprotectedvirtual
SaveState(StateRecorder &inStream) const overrideWheeledVehicleControllerprotectedvirtual
SetBrakeInput(float inBrake)WheeledVehicleControllerinline
SetDifferentialLimitedSlipRatio(float inV)WheeledVehicleControllerinline
SetDriverInput(float inForward, float inRight, float inBrake, float inHandBrake)WheeledVehicleControllerinline
SetEmbedded() constRefTarget< VehicleController >inline
SetForwardInput(float inForward)WheeledVehicleControllerinline
SetHandBrakeInput(float inHandBrake)WheeledVehicleControllerinline
SetRightInput(float inRight)WheeledVehicleControllerinline
SetRPMMeter(Vec3Arg inPosition, float inSize)WheeledVehicleControllerinline
SetTireMaxImpulseCallback(const TireMaxImpulseCallback &inTireMaxImpulseCallback)WheeledVehicleControllerinline
sInternalGetRefCountOffset()RefTarget< VehicleController >inlinestatic
SolveLongitudinalAndLateralConstraints(float inDeltaTime) overrideWheeledVehicleControllerprotectedvirtual
TireMaxImpulseCallback typedefWheeledVehicleController
VehicleController(VehicleConstraint &inConstraint)VehicleControllerinlineexplicit
WheeledVehicleController(const WheeledVehicleControllerSettings &inSettings, VehicleConstraint &inConstraint)WheeledVehicleController
~RefTarget()RefTarget< VehicleController >inline
~VehicleController()=defaultVehicleControllervirtual
+
+ + + + diff --git a/class_wheeled_vehicle_controller.html b/class_wheeled_vehicle_controller.html new file mode 100644 index 000000000..cf991889d --- /dev/null +++ b/class_wheeled_vehicle_controller.html @@ -0,0 +1,1529 @@ + + + + + + + +Jolt Physics: WheeledVehicleController Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
WheeledVehicleController Class Reference
+
+
+ +

Runtime controller class. + More...

+ +

#include <WheeledVehicleController.h>

+
+Inheritance diagram for WheeledVehicleController:
+
+
+ + +VehicleController +RefTarget< VehicleController > +NonCopyable +MotorcycleController + +
+ + + + + + + + +

+Public Types

using Differentials = Array< VehicleDifferentialSettings >
 Typedefs.
 
using TireMaxImpulseCallback = function< void(uint inWheelIndex, float &outLongitudinalImpulse, float &outLateralImpulse, float inSuspensionImpulse, float inLongitudinalFriction, float inLateralFriction, float inLongitudinalSlip, float inLateralSlip, float inDeltaTime)>
 Calculate max tire impulses by combining friction, slip, and suspension impulse. Note that the actual applied impulse may be lower (e.g. when the vehicle is stationary on a horizontal surface the actual impulse applied will be 0).
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

JPH_OVERRIDE_NEW_DELETE WheeledVehicleController (const WheeledVehicleControllerSettings &inSettings, VehicleConstraint &inConstraint)
 Constructor.
 
void SetDriverInput (float inForward, float inRight, float inBrake, float inHandBrake)
 
void SetForwardInput (float inForward)
 Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed.
 
float GetForwardInput () const
 
void SetRightInput (float inRight)
 Value between -1 and 1 indicating desired steering angle (1 = right)
 
float GetRightInput () const
 
void SetBrakeInput (float inBrake)
 Value between 0 and 1 indicating how strong the brake pedal is pressed.
 
float GetBrakeInput () const
 
void SetHandBrakeInput (float inHandBrake)
 Value between 0 and 1 indicating how strong the hand brake is pulled.
 
float GetHandBrakeInput () const
 
const VehicleEngineGetEngine () const
 Get current engine state.
 
VehicleEngineGetEngine ()
 Get current engine state (writable interface, allows you to make changes to the configuration which will take effect the next time step)
 
const VehicleTransmissionGetTransmission () const
 Get current transmission state.
 
VehicleTransmissionGetTransmission ()
 Get current transmission state (writable interface, allows you to make changes to the configuration which will take effect the next time step)
 
const DifferentialsGetDifferentials () const
 Get the differentials this vehicle has.
 
DifferentialsGetDifferentials ()
 Get the differentials this vehicle has (writable interface, allows you to make changes to the configuration which will take effect the next time step)
 
float GetDifferentialLimitedSlipRatio () const
 Ratio max / min average wheel speed of each differential (measured at the clutch).
 
void SetDifferentialLimitedSlipRatio (float inV)
 
float GetWheelSpeedAtClutch () const
 Get the average wheel speed of all driven wheels (measured at the clutch)
 
const TireMaxImpulseCallbackGetTireMaxImpulseCallback () const
 
void SetTireMaxImpulseCallback (const TireMaxImpulseCallback &inTireMaxImpulseCallback)
 
void SetRPMMeter (Vec3Arg inPosition, float inSize)
 Debug drawing of RPM meter.
 
- Public Member Functions inherited from VehicleController
JPH_OVERRIDE_NEW_DELETE VehicleController (VehicleConstraint &inConstraint)
 Constructor / destructor.
 
virtual ~VehicleController ()=default
 
- Public Member Functions inherited from RefTarget< VehicleController >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual WheelConstructWheel (const WheelSettings &inWheel) const override
 
virtual bool AllowSleep () const override
 
virtual void PreCollide (float inDeltaTime, PhysicsSystem &inPhysicsSystem) override
 
virtual void PostCollide (float inDeltaTime, PhysicsSystem &inPhysicsSystem) override
 
virtual bool SolveLongitudinalAndLateralConstraints (float inDeltaTime) override
 
virtual void SaveState (StateRecorder &inStream) const override
 
virtual void RestoreState (StateRecorder &inStream) override
 
virtual void Draw (DebugRenderer *inRenderer) const override
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

float mForwardInput = 0.0f
 Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed.
 
float mRightInput = 0.0f
 Value between -1 and 1 indicating desired steering angle.
 
float mBrakeInput = 0.0f
 Value between 0 and 1 indicating how strong the brake pedal is pressed.
 
float mHandBrakeInput = 0.0f
 Value between 0 and 1 indicating how strong the hand brake is pulled.
 
VehicleEngine mEngine
 Engine state of the vehicle.
 
VehicleTransmission mTransmission
 Transmission state of the vehicle.
 
Differentials mDifferentials
 Differential states of the vehicle.
 
float mDifferentialLimitedSlipRatio
 Ratio max / min average wheel speed of each differential (measured at the clutch).
 
float mPreviousDeltaTime = 0.0f
 Delta time of the last step.
 
TireMaxImpulseCallback mTireMaxImpulseCallback
 
Vec3 mRPMMeterPosition { 0, 1, 0 }
 Position (in local space of the body) of the RPM meter when drawing the constraint.
 
float mRPMMeterSize = 0.5f
 Size of the RPM meter when drawing the constraint.
 
- Protected Attributes inherited from VehicleController
VehicleConstraintmConstraint
 The vehicle constraint we belong to.
 
- Protected Attributes inherited from RefTarget< VehicleController >
atomic< uint32mRefCount
 Current reference count.
 
+ + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< VehicleController >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Static Protected Attributes inherited from RefTarget< VehicleController >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Runtime controller class.

+

Member Typedef Documentation

+ +

◆ Differentials

+ + + +

◆ TireMaxImpulseCallback

+ +
+
+ + + + +
using WheeledVehicleController::TireMaxImpulseCallback = function<void(uint inWheelIndex, float &outLongitudinalImpulse, float &outLateralImpulse, float inSuspensionImpulse, float inLongitudinalFriction, float inLateralFriction, float inLongitudinalSlip, float inLateralSlip, float inDeltaTime)>
+
+ +

Calculate max tire impulses by combining friction, slip, and suspension impulse. Note that the actual applied impulse may be lower (e.g. when the vehicle is stationary on a horizontal surface the actual impulse applied will be 0).

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ WheeledVehicleController()

+ +
+
+ + + + + + + + + + + + + + + + + + +
WheeledVehicleController::WheeledVehicleController (const WheeledVehicleControllerSettingsinSettings,
VehicleConstraintinConstraint 
)
+
+ +

Constructor.

+ +
+
+

Member Function Documentation

+ +

◆ AllowSleep()

+ +
+
+ + + + + +
+ + + + + + + +
bool WheeledVehicleController::AllowSleep () const
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +
+
+ +

◆ ConstructWheel()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual Wheel * WheeledVehicleController::ConstructWheel (const WheelSettingsinWheel) const
+
+inlineoverrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +
+
+ +

◆ Draw()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheeledVehicleController::Draw (DebugRendererinRenderer) const
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +

Reimplemented in MotorcycleController.

+ +
+
+ +

◆ GetBrakeInput()

+ +
+
+ + + + + +
+ + + + + + + +
float WheeledVehicleController::GetBrakeInput () const
+
+inline
+
+ +
+
+ +

◆ GetDifferentialLimitedSlipRatio()

+ +
+
+ + + + + +
+ + + + + + + +
float WheeledVehicleController::GetDifferentialLimitedSlipRatio () const
+
+inline
+
+ +

Ratio max / min average wheel speed of each differential (measured at the clutch).

+ +
+
+ +

◆ GetDifferentials() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
Differentials & WheeledVehicleController::GetDifferentials ()
+
+inline
+
+ +

Get the differentials this vehicle has (writable interface, allows you to make changes to the configuration which will take effect the next time step)

+ +
+
+ +

◆ GetDifferentials() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const Differentials & WheeledVehicleController::GetDifferentials () const
+
+inline
+
+ +

Get the differentials this vehicle has.

+ +
+
+ +

◆ GetEngine() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
VehicleEngine & WheeledVehicleController::GetEngine ()
+
+inline
+
+ +

Get current engine state (writable interface, allows you to make changes to the configuration which will take effect the next time step)

+ +
+
+ +

◆ GetEngine() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const VehicleEngine & WheeledVehicleController::GetEngine () const
+
+inline
+
+ +

Get current engine state.

+ +
+
+ +

◆ GetForwardInput()

+ +
+
+ + + + + +
+ + + + + + + +
float WheeledVehicleController::GetForwardInput () const
+
+inline
+
+ +
+
+ +

◆ GetHandBrakeInput()

+ +
+
+ + + + + +
+ + + + + + + +
float WheeledVehicleController::GetHandBrakeInput () const
+
+inline
+
+ +
+
+ +

◆ GetRightInput()

+ +
+
+ + + + + +
+ + + + + + + +
float WheeledVehicleController::GetRightInput () const
+
+inline
+
+ +
+
+ +

◆ GetTireMaxImpulseCallback()

+ +
+
+ + + + + +
+ + + + + + + +
const TireMaxImpulseCallback & WheeledVehicleController::GetTireMaxImpulseCallback () const
+
+inline
+
+ +
+
+ +

◆ GetTransmission() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
VehicleTransmission & WheeledVehicleController::GetTransmission ()
+
+inline
+
+ +

Get current transmission state (writable interface, allows you to make changes to the configuration which will take effect the next time step)

+ +
+
+ +

◆ GetTransmission() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const VehicleTransmission & WheeledVehicleController::GetTransmission () const
+
+inline
+
+ +

Get current transmission state.

+ +
+
+ +

◆ GetWheelSpeedAtClutch()

+ +
+
+ + + + + + + +
float WheeledVehicleController::GetWheelSpeedAtClutch () const
+
+ +

Get the average wheel speed of all driven wheels (measured at the clutch)

+ +
+
+ +

◆ PostCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void WheeledVehicleController::PostCollide (float inDeltaTime,
PhysicsSysteminPhysicsSystem 
)
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +
+
+ +

◆ PreCollide()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void WheeledVehicleController::PreCollide (float inDeltaTime,
PhysicsSysteminPhysicsSystem 
)
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +

Reimplemented in MotorcycleController.

+ +
+
+ +

◆ RestoreState()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheeledVehicleController::RestoreState (StateRecorderinStream)
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +

Reimplemented in MotorcycleController.

+ +
+
+ +

◆ SaveState()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheeledVehicleController::SaveState (StateRecorderinStream) const
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +

Reimplemented in MotorcycleController.

+ +
+
+ +

◆ SetBrakeInput()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheeledVehicleController::SetBrakeInput (float inBrake)
+
+inline
+
+ +

Value between 0 and 1 indicating how strong the brake pedal is pressed.

+ +
+
+ +

◆ SetDifferentialLimitedSlipRatio()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheeledVehicleController::SetDifferentialLimitedSlipRatio (float inV)
+
+inline
+
+ +
+
+ +

◆ SetDriverInput()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void WheeledVehicleController::SetDriverInput (float inForward,
float inRight,
float inBrake,
float inHandBrake 
)
+
+inline
+
+

Set input from driver

Parameters
+ + + + + +
inForwardValue between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed
inRightValue between -1 and 1 indicating desired steering angle (1 = right)
inBrakeValue between 0 and 1 indicating how strong the brake pedal is pressed
inHandBrakeValue between 0 and 1 indicating how strong the hand brake is pulled
+
+
+ +
+
+ +

◆ SetForwardInput()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheeledVehicleController::SetForwardInput (float inForward)
+
+inline
+
+ +

Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed.

+ +
+
+ +

◆ SetHandBrakeInput()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheeledVehicleController::SetHandBrakeInput (float inHandBrake)
+
+inline
+
+ +

Value between 0 and 1 indicating how strong the hand brake is pulled.

+ +
+
+ +

◆ SetRightInput()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheeledVehicleController::SetRightInput (float inRight)
+
+inline
+
+ +

Value between -1 and 1 indicating desired steering angle (1 = right)

+ +
+
+ +

◆ SetRPMMeter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void WheeledVehicleController::SetRPMMeter (Vec3Arg inPosition,
float inSize 
)
+
+inline
+
+ +

Debug drawing of RPM meter.

+ +
+
+ +

◆ SetTireMaxImpulseCallback()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheeledVehicleController::SetTireMaxImpulseCallback (const TireMaxImpulseCallbackinTireMaxImpulseCallback)
+
+inline
+
+ +
+
+ +

◆ SolveLongitudinalAndLateralConstraints()

+ +
+
+ + + + + +
+ + + + + + + + +
bool WheeledVehicleController::SolveLongitudinalAndLateralConstraints (float inDeltaTime)
+
+overrideprotectedvirtual
+
+ +

Implements VehicleController.

+ +

Reimplemented in MotorcycleController.

+ +
+
+

Member Data Documentation

+ +

◆ mBrakeInput

+ +
+
+ + + + + +
+ + + + +
float WheeledVehicleController::mBrakeInput = 0.0f
+
+protected
+
+ +

Value between 0 and 1 indicating how strong the brake pedal is pressed.

+ +
+
+ +

◆ mDifferentialLimitedSlipRatio

+ +
+
+ + + + + +
+ + + + +
float WheeledVehicleController::mDifferentialLimitedSlipRatio
+
+protected
+
+ +

Ratio max / min average wheel speed of each differential (measured at the clutch).

+ +
+
+ +

◆ mDifferentials

+ +
+
+ + + + + +
+ + + + +
Differentials WheeledVehicleController::mDifferentials
+
+protected
+
+ +

Differential states of the vehicle.

+ +
+
+ +

◆ mEngine

+ +
+
+ + + + + +
+ + + + +
VehicleEngine WheeledVehicleController::mEngine
+
+protected
+
+ +

Engine state of the vehicle.

+ +
+
+ +

◆ mForwardInput

+ +
+
+ + + + + +
+ + + + +
float WheeledVehicleController::mForwardInput = 0.0f
+
+protected
+
+ +

Value between -1 and 1 for auto transmission and value between 0 and 1 indicating desired driving direction and amount the gas pedal is pressed.

+ +
+
+ +

◆ mHandBrakeInput

+ +
+
+ + + + + +
+ + + + +
float WheeledVehicleController::mHandBrakeInput = 0.0f
+
+protected
+
+ +

Value between 0 and 1 indicating how strong the hand brake is pulled.

+ +
+
+ +

◆ mPreviousDeltaTime

+ +
+
+ + + + + +
+ + + + +
float WheeledVehicleController::mPreviousDeltaTime = 0.0f
+
+protected
+
+ +

Delta time of the last step.

+ +
+
+ +

◆ mRightInput

+ +
+
+ + + + + +
+ + + + +
float WheeledVehicleController::mRightInput = 0.0f
+
+protected
+
+ +

Value between -1 and 1 indicating desired steering angle.

+ +
+
+ +

◆ mRPMMeterPosition

+ +
+
+ + + + + +
+ + + + +
Vec3 WheeledVehicleController::mRPMMeterPosition { 0, 1, 0 }
+
+protected
+
+ +

Position (in local space of the body) of the RPM meter when drawing the constraint.

+ +
+
+ +

◆ mRPMMeterSize

+ +
+
+ + + + + +
+ + + + +
float WheeledVehicleController::mRPMMeterSize = 0.5f
+
+protected
+
+ +

Size of the RPM meter when drawing the constraint.

+ +
+
+ +

◆ mTireMaxImpulseCallback

+ +
+
+ + + + + +
+ + + + +
TireMaxImpulseCallback WheeledVehicleController::mTireMaxImpulseCallback
+
+protected
+
+Initial value:
=
+
[](uint, float &outLongitudinalImpulse, float &outLateralImpulse, float inSuspensionImpulse, float inLongitudinalFriction, float inLateralFriction, float, float, float)
+
{
+
outLongitudinalImpulse = inLongitudinalFriction * inSuspensionImpulse;
+
outLateralImpulse = inLateralFriction * inSuspensionImpulse;
+
}
+
unsigned int uint
Definition Core.h:452
+
+
+
+ +

◆ mTransmission

+ +
+
+ + + + + +
+ + + + +
VehicleTransmission WheeledVehicleController::mTransmission
+
+protected
+
+ +

Transmission state of the vehicle.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_wheeled_vehicle_controller.js b/class_wheeled_vehicle_controller.js new file mode 100644 index 000000000..e44e4e05f --- /dev/null +++ b/class_wheeled_vehicle_controller.js @@ -0,0 +1,47 @@ +var class_wheeled_vehicle_controller = +[ + [ "Differentials", "class_wheeled_vehicle_controller.html#ac37470c3ca61d99d2ab55e6c851410d0", null ], + [ "TireMaxImpulseCallback", "class_wheeled_vehicle_controller.html#a0503d8b97090455578f6db2be92e980f", null ], + [ "WheeledVehicleController", "class_wheeled_vehicle_controller.html#ad00936264e25f1902bed6e7c86f198dc", null ], + [ "AllowSleep", "class_wheeled_vehicle_controller.html#a93a56d516b3760052815ac323844d574", null ], + [ "ConstructWheel", "class_wheeled_vehicle_controller.html#a87526c2489ef5c417f2ef34a69d19cbb", null ], + [ "Draw", "class_wheeled_vehicle_controller.html#a254e0402efc01e79154b4bde178918a4", null ], + [ "GetBrakeInput", "class_wheeled_vehicle_controller.html#aa087571387d316eee2e8ed7fb500b291", null ], + [ "GetDifferentialLimitedSlipRatio", "class_wheeled_vehicle_controller.html#a54518ef2b442bd0a1fe7a871d36d167f", null ], + [ "GetDifferentials", "class_wheeled_vehicle_controller.html#abc5128d2c64bd0081380279ed025e2ed", null ], + [ "GetDifferentials", "class_wheeled_vehicle_controller.html#a7364b136c27cf5330968729518859a1d", null ], + [ "GetEngine", "class_wheeled_vehicle_controller.html#acf0f3be1d9270518b59691310c28769b", null ], + [ "GetEngine", "class_wheeled_vehicle_controller.html#a459374f72146ee0bfe05ead3151d346c", null ], + [ "GetForwardInput", "class_wheeled_vehicle_controller.html#a781e75a695c39395e56b91cfcd780bdc", null ], + [ "GetHandBrakeInput", "class_wheeled_vehicle_controller.html#a785dc39a5b664a71b5c08ca00db4886d", null ], + [ "GetRightInput", "class_wheeled_vehicle_controller.html#a3fa4fcaa580f6bb5c47894858144397d", null ], + [ "GetTireMaxImpulseCallback", "class_wheeled_vehicle_controller.html#a9f0a4d01b9c0db904d5e6aa79484bc63", null ], + [ "GetTransmission", "class_wheeled_vehicle_controller.html#a8c3ab1fdbdcec9b95237e2b727c378ac", null ], + [ "GetTransmission", "class_wheeled_vehicle_controller.html#a3a14cc53afb7a84709927cd9b5fc863b", null ], + [ "GetWheelSpeedAtClutch", "class_wheeled_vehicle_controller.html#a0ef079b5815d391cedacbceb40105c6f", null ], + [ "PostCollide", "class_wheeled_vehicle_controller.html#ad3bf9ef08870494a7bf762b67beea1ef", null ], + [ "PreCollide", "class_wheeled_vehicle_controller.html#a8b2dc5370272f15c968425a422ccaeff", null ], + [ "RestoreState", "class_wheeled_vehicle_controller.html#a832989bb00f7c2577925f3bb978d116a", null ], + [ "SaveState", "class_wheeled_vehicle_controller.html#ad625db11394127fd656e149e5131c10a", null ], + [ "SetBrakeInput", "class_wheeled_vehicle_controller.html#a274d8e6bb7aca40c3f3d467de6f744eb", null ], + [ "SetDifferentialLimitedSlipRatio", "class_wheeled_vehicle_controller.html#a18c2ead8335924c4225b2580b2fd6f31", null ], + [ "SetDriverInput", "class_wheeled_vehicle_controller.html#a3a3b66c895677f66890ddde7b5e6f9ba", null ], + [ "SetForwardInput", "class_wheeled_vehicle_controller.html#a219dd9b901cf12dc8e8a6eb2fa8d6915", null ], + [ "SetHandBrakeInput", "class_wheeled_vehicle_controller.html#a7d48f4399fa3ed50e559b12017664510", null ], + [ "SetRightInput", "class_wheeled_vehicle_controller.html#aec55421b09ff5dc8421e133c01561da1", null ], + [ "SetRPMMeter", "class_wheeled_vehicle_controller.html#a65374d5dabe3c20c393a69ed780de89f", null ], + [ "SetTireMaxImpulseCallback", "class_wheeled_vehicle_controller.html#a8b57f16d22c14cc0fc7a56a81b13aca9", null ], + [ "SolveLongitudinalAndLateralConstraints", "class_wheeled_vehicle_controller.html#a00e70f705f6b7770e3e1e8461998e0bb", null ], + [ "mBrakeInput", "class_wheeled_vehicle_controller.html#a88aa09d54f227962f6ccfb84f764e4c3", null ], + [ "mDifferentialLimitedSlipRatio", "class_wheeled_vehicle_controller.html#aa389a6d0e57e4eb69c7d238be20c6575", null ], + [ "mDifferentials", "class_wheeled_vehicle_controller.html#a3d1069e60f64ca74c667e120f06d34bf", null ], + [ "mEngine", "class_wheeled_vehicle_controller.html#a4f7bcd7200890610de12f3eb207541e5", null ], + [ "mForwardInput", "class_wheeled_vehicle_controller.html#a0a8a164e3c506f3763973ac2ae4cc656", null ], + [ "mHandBrakeInput", "class_wheeled_vehicle_controller.html#a064bc3d019a1997828bc46c9201a0283", null ], + [ "mPreviousDeltaTime", "class_wheeled_vehicle_controller.html#ae362fa84fc6185aca0663ed55835d477", null ], + [ "mRightInput", "class_wheeled_vehicle_controller.html#a5138b0898fa52c09e75c3f583459c519", null ], + [ "mRPMMeterPosition", "class_wheeled_vehicle_controller.html#ae747e5529bef6e7f5d5c9ada5fa195b4", null ], + [ "mRPMMeterSize", "class_wheeled_vehicle_controller.html#a7f88075b9e61d9a50c6edc663267f73b", null ], + [ "mTireMaxImpulseCallback", "class_wheeled_vehicle_controller.html#a9bea13499ea34379be661071f6d3fa2a", null ], + [ "mTransmission", "class_wheeled_vehicle_controller.html#a22bd29e8d76290ee6fbfb10b8c207f83", null ] +]; \ No newline at end of file diff --git a/class_wheeled_vehicle_controller.png b/class_wheeled_vehicle_controller.png new file mode 100644 index 000000000..80019a398 Binary files /dev/null and b/class_wheeled_vehicle_controller.png differ diff --git a/class_wheeled_vehicle_controller_settings-members.html b/class_wheeled_vehicle_controller_settings-members.html new file mode 100644 index 000000000..b9b600607 --- /dev/null +++ b/class_wheeled_vehicle_controller_settings-members.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
WheeledVehicleControllerSettings Member List
+
+
+ +

This is the complete list of members for WheeledVehicleControllerSettings, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
AddRef() constRefTarget< VehicleControllerSettings >inline
cEmbeddedRefTarget< VehicleControllerSettings >protectedstatic
ConstructController(VehicleConstraint &inConstraint) const overrideWheeledVehicleControllerSettingsvirtual
GetRefCount() constRefTarget< VehicleControllerSettings >inline
mDifferentialLimitedSlipRatioWheeledVehicleControllerSettings
mDifferentialsWheeledVehicleControllerSettings
mEngineWheeledVehicleControllerSettings
mRefCountRefTarget< VehicleControllerSettings >mutableprotected
mTransmissionWheeledVehicleControllerSettings
NonCopyable()=defaultNonCopyable
NonCopyable(const NonCopyable &)=deleteNonCopyable
SerializableObject::operator=(const NonCopyable &)=deleteNonCopyable
RefTarget< VehicleControllerSettings >::operator=(const RefTarget &)RefTarget< VehicleControllerSettings >inline
RefTarget()=defaultRefTarget< VehicleControllerSettings >inline
RefTarget(const RefTarget &)RefTarget< VehicleControllerSettings >inline
Release() constRefTarget< VehicleControllerSettings >inline
RestoreBinaryState(StreamIn &inStream) overrideWheeledVehicleControllerSettingsvirtual
SaveBinaryState(StreamOut &inStream) const overrideWheeledVehicleControllerSettingsvirtual
SetEmbedded() constRefTarget< VehicleControllerSettings >inline
sInternalGetRefCountOffset()RefTarget< VehicleControllerSettings >inlinestatic
~RefTarget()RefTarget< VehicleControllerSettings >inline
~SerializableObject()=defaultSerializableObjectvirtual
+
+ + + + diff --git a/class_wheeled_vehicle_controller_settings.html b/class_wheeled_vehicle_controller_settings.html new file mode 100644 index 000000000..59eac11a2 --- /dev/null +++ b/class_wheeled_vehicle_controller_settings.html @@ -0,0 +1,378 @@ + + + + + + + +Jolt Physics: WheeledVehicleControllerSettings Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
WheeledVehicleControllerSettings Class Reference
+
+
+ +

#include <WheeledVehicleController.h>

+
+Inheritance diagram for WheeledVehicleControllerSettings:
+
+
+ + +VehicleControllerSettings +SerializableObject +RefTarget< VehicleControllerSettings > +NonCopyable +MotorcycleControllerSettings + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual VehicleControllerConstructController (VehicleConstraint &inConstraint) const override
 Create an instance of the vehicle controller class.
 
virtual void SaveBinaryState (StreamOut &inStream) const override
 Saves the contents of the controller settings in binary form to inStream.
 
virtual void RestoreBinaryState (StreamIn &inStream) override
 Restore the contents of the controller settings in binary form from inStream.
 
- Public Member Functions inherited from SerializableObject
virtual ~SerializableObject ()=default
 Constructor.
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 
- Public Member Functions inherited from RefTarget< VehicleControllerSettings >
 RefTarget ()=default
 Constructor.
 
 RefTarget (const RefTarget &)
 
 ~RefTarget ()
 assert no one is referencing us
 
void SetEmbedded () const
 
RefTargetoperator= (const RefTarget &)
 Assignment operator.
 
uint32 GetRefCount () const
 Get current refcount of this object.
 
void AddRef () const
 Add or release a reference to this object.
 
void Release () const
 
+ + + + + + + + + + + + + +

+Public Attributes

VehicleEngineSettings mEngine
 The properties of the engine.
 
VehicleTransmissionSettings mTransmission
 The properties of the transmission (aka gear box)
 
Array< VehicleDifferentialSettingsmDifferentials
 List of differentials and their properties.
 
float mDifferentialLimitedSlipRatio = 1.4f
 Ratio max / min average wheel speed of each differential (measured at the clutch). When the ratio is exceeded all torque gets distributed to the differential with the minimal average velocity. This allows implementing a limited slip differential between differentials. Set to FLT_MAX for an open differential. Value should be > 1.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from RefTarget< VehicleControllerSettings >
static int sInternalGetRefCountOffset ()
 INTERNAL HELPER FUNCTION USED BY SERIALIZATION.
 
- Protected Attributes inherited from RefTarget< VehicleControllerSettings >
atomic< uint32mRefCount
 Current reference count.
 
- Static Protected Attributes inherited from RefTarget< VehicleControllerSettings >
static constexpr uint32 cEmbedded
 A large value that gets added to the refcount to mark the object as embedded.
 
+

Detailed Description

+

Settings of a vehicle with regular wheels

+

The properties in this controller are largely based on "Car Physics for Games" by Marco Monster. See: https://www.asawicki.info/Mirror/Car%20Physics%20for%20Games/Car%20Physics%20for%20Games.html

+

Member Function Documentation

+ +

◆ ConstructController()

+ +
+
+ + + + + +
+ + + + + + + + +
VehicleController * WheeledVehicleControllerSettings::ConstructController (VehicleConstraintinConstraint) const
+
+overridevirtual
+
+ +

Create an instance of the vehicle controller class.

+ +

Implements VehicleControllerSettings.

+ +

Reimplemented in MotorcycleControllerSettings.

+ +
+
+ +

◆ RestoreBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheeledVehicleControllerSettings::RestoreBinaryState (StreamIninStream)
+
+overridevirtual
+
+ +

Restore the contents of the controller settings in binary form from inStream.

+ +

Implements VehicleControllerSettings.

+ +

Reimplemented in MotorcycleControllerSettings.

+ +
+
+ +

◆ SaveBinaryState()

+ +
+
+ + + + + +
+ + + + + + + + +
void WheeledVehicleControllerSettings::SaveBinaryState (StreamOutinStream) const
+
+overridevirtual
+
+ +

Saves the contents of the controller settings in binary form to inStream.

+ +

Implements VehicleControllerSettings.

+ +

Reimplemented in MotorcycleControllerSettings.

+ +
+
+

Member Data Documentation

+ +

◆ mDifferentialLimitedSlipRatio

+ +
+
+ + + + +
float WheeledVehicleControllerSettings::mDifferentialLimitedSlipRatio = 1.4f
+
+ +

Ratio max / min average wheel speed of each differential (measured at the clutch). When the ratio is exceeded all torque gets distributed to the differential with the minimal average velocity. This allows implementing a limited slip differential between differentials. Set to FLT_MAX for an open differential. Value should be > 1.

+ +
+
+ +

◆ mDifferentials

+ +
+
+ + + + +
Array<VehicleDifferentialSettings> WheeledVehicleControllerSettings::mDifferentials
+
+ +

List of differentials and their properties.

+ +
+
+ +

◆ mEngine

+ +
+
+ + + + +
VehicleEngineSettings WheeledVehicleControllerSettings::mEngine
+
+ +

The properties of the engine.

+ +
+
+ +

◆ mTransmission

+ +
+
+ + + + +
VehicleTransmissionSettings WheeledVehicleControllerSettings::mTransmission
+
+ +

The properties of the transmission (aka gear box)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/class_wheeled_vehicle_controller_settings.js b/class_wheeled_vehicle_controller_settings.js new file mode 100644 index 000000000..0d4f9a83f --- /dev/null +++ b/class_wheeled_vehicle_controller_settings.js @@ -0,0 +1,10 @@ +var class_wheeled_vehicle_controller_settings = +[ + [ "ConstructController", "class_wheeled_vehicle_controller_settings.html#a6ab2f1877dd58bc447f4392b553bfb6a", null ], + [ "RestoreBinaryState", "class_wheeled_vehicle_controller_settings.html#a2521d5acd5088a1110c5abf5df948734", null ], + [ "SaveBinaryState", "class_wheeled_vehicle_controller_settings.html#ae82335336bab2f06e41dc7ae4325f394", null ], + [ "mDifferentialLimitedSlipRatio", "class_wheeled_vehicle_controller_settings.html#a956258093f2aa7604630d1a025d3054a", null ], + [ "mDifferentials", "class_wheeled_vehicle_controller_settings.html#a1546de08a8e3f54375fd5acbc20de0aa", null ], + [ "mEngine", "class_wheeled_vehicle_controller_settings.html#a4feb45c9b8ece24445bd8d3b2db8879b", null ], + [ "mTransmission", "class_wheeled_vehicle_controller_settings.html#a4cef336c9cfcecd52ade9a0ca4e10315", null ] +]; \ No newline at end of file diff --git a/class_wheeled_vehicle_controller_settings.png b/class_wheeled_vehicle_controller_settings.png new file mode 100644 index 000000000..c0b587392 Binary files /dev/null and b/class_wheeled_vehicle_controller_settings.png differ diff --git a/classes.html b/classes.html new file mode 100644 index 000000000..75d64b808 --- /dev/null +++ b/classes.html @@ -0,0 +1,185 @@ + + + + + + + +Jolt Physics: Class Index + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W
+
+
+
A
+
AABBTreeBuilder
AABBTreeBuilderStats
AABBTreeToBuffer
AABox
AABoxCast
AddConvexRadius
RagdollSettings::AdditionalConstraint
QuadTree::AddState
AllHitCollisionCollector
AllocatorHasReallocate
AllocatorHasReallocate< STLAllocator< T > >
AngleConstraintPart
SkeletalAnimation::AnimatedJoint
AnyHitCollisionCollector
Array
AxisConstraintPart
+
+
B
+
JobSystem::Barrier
JobSystemSingleThreaded::BarrierImpl
RTTI::BaseClass
FixedSizeFreeList::Batch
PhysicsSystem::BodiesToSleep
Body
BodyActivationListener
BodyCreationSettings
BodyDrawFilter
BodyFilter
BodyID
BodyInterface
BodyLockBase
BodyLockInterface
BodyLockInterfaceLocking
BodyLockInterfaceNoLock
BodyLockMultiBase
BodyLockMultiRead
BodyLockMultiWrite
BodyLockRead
BodyLockWrite
BodyManager
BodyPair
PhysicsUpdateContext::BodyPairQueue
BodyManager::BodyStats
BodyWithMotionProperties
BoxShape::Box
BoxShape
BoxShapeSettings
BroadPhase
BroadPhaseBruteForce
BroadPhaseCastResult
BroadPhaseLayer
BroadPhaseLayerFilter
BroadPhaseLayerInterface
BroadPhaseLayerInterfaceMask
BroadPhaseLayerInterfaceTable
BroadPhaseQuadTree
BroadPhaseQuery
ByteBuffer
+
+
C
+
CalculateSolverSteps
CapsuleShape::CapsuleNoConvex
CapsuleShape
CapsuleShapeSettings
CapsuleShape::CapsuleWithConvex
CastConvexVsTriangles
CompoundShape::CastRayVisitor
CompoundShape::CastRayVisitorCollector
CompoundShape::CastShapeVisitor
CastSphereVsTriangles
PhysicsUpdateContext::Step::CCDBody
SkeletonMapper::Chain
Character
CharacterBase
CharacterBaseSettings
CharacterContactListener
CharacterContactSettings
CharacterSettings
CharacterVirtual
CharacterVirtualSettings
CharacterVsCharacterCollision
CharacterVsCharacterCollisionSimple
ConvexHullShape::CHSGetTrianglesContext
ClosestHitCollisionCollector
CompoundShape::CollectTransformedShapesVisitor
CompoundShape::CollideCompoundVsShapeVisitor
CollideConvexVsTriangles
CollidePointResult
CompoundShape::CollidePointVisitor
CollideSettingsBase
CollideShapeResult
CollideShapeSettings
CompoundShape::CollideShapeVsCompoundVisitor
CollideSoftBodyVerticesVsTriangles
CollideSphereVsTriangles
CollisionCollector
CollisionCollectorTraitsCastRay
CollisionCollectorTraitsCastShape
CollisionCollectorTraitsCollideShape
CollisionDispatch
CollisionEstimationResult
CollisionGroup
Color
CompoundShape
CompoundShapeSettings
ConeConstraint
ConeConstraintSettings
PhysicsScene::ConnectedConstraint
Constraint
ConstraintManager
ConstraintSettings
CharacterVirtual::Contact
ContactConstraintManager::ContactAllocator
ContactConstraintManager
ContactListener
ContactManifold
ContactSettings
ConvexHullBuilder
ConvexHullBuilder2D
ConvexHullShape
ConvexHullShapeSettings
ConvexShape
ConvexShapeSettings
ConvexShape::CSGetTrianglesContext
CylinderShape::Cylinder
CylinderShape
CylinderShapeSettings
+
+
D
+
DebugRenderer
DebugRendererPlayback
DebugRendererRecorder
DebugRendererSimple
HeightFieldShape::DecodingContext
NodeCodecQuadTreeHalfFloat::DecodingContext
TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext
DecoratedShape
DecoratedShapeSettings
DefaultBroadPhaseLayerFilter
DefaultObjectLayerFilter
SoftBodySharedSettings::DihedralBend
DistanceConstraint
DistanceConstraintSettings
DMat44
Double3
BodyManager::DrawSettings
SkeletonPose::DrawSettings
DualAxisConstraintPart
DummyCalculateSolverSteps
DVec3
DynMatrix
+
+
E
+
ConvexHullBuilder::Edge
EPAConvexHullBuilder::Edge
SoftBodySharedSettings::Edge
Ellipse
NodeCodecQuadTreeHalfFloat::EncodingContext
TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext
EPAConvexHullBuilder
EPAPenetrationDepth
CharacterVirtual::ExtendedUpdateSettings
+
+
F
+
ConvexHullBuilder::Face
SoftBodySharedSettings::Face
Factory
FixedConstraint
FixedConstraintSettings
FixedSizeFreeList
Float2
Float3
Float4
FPExceptionDisableDivByZero
FPExceptionDisableInvalid
FPExceptionsEnable
DebugRendererRecorder::Frame
+
+
G
+
GearConstraint
GearConstraintPart
GearConstraintSettings
DebugRenderer::Geometry
DebugRendererRecorder::GeometryBlob
CompoundShape::GetIntersectingSubShapesVisitor
Shape::GetTrianglesContext
GetTrianglesContextMultiVertexList
GetTrianglesContextVertexList
GJKClosestPoint
GroupFilter
GroupFilterTable
+
+
H
+
hash< JPH::StaticArray< T, N > > (std)
hash< JPH::String > (std)
NodeCodecQuadTreeHalfFloat::Header
HeightFieldShape
HeightFieldShapeSettings
HingeConstraint
HingeConstraintSettings
HingeRotationConstraintPart
HeightFieldShape::HSGetTrianglesContext
ConvexHullShape::HullNoConvex
ConvexHullShape::HullWithConvex
ConvexHullShape::HullWithConvexScaled
+
+
I
+
IgnoreMultipleBodiesFilter
IgnoreSingleBodyFilter
IgnoreSingleBodyFilterChained
CollisionEstimationResult::Impulse
IndependentAxisConstraintPart
IndexedTriangle
IndexedTriangleNoMaterial
InternalEdgeRemovingCollector
SoftBodySharedSettings::InvBind
IObjectStreamIn
IObjectStreamOut
IslandBuilder
LockFreeHashMap::Iterator
+
+
J
+
JobSystem::Job
JobSystem::JobHandle
JobSystem
JobSystemSingleThreaded
JobSystemThreadPool
JobSystemWithBarrier
Skeleton::Joint
SkeletalAnimation::JointState
+
+
K
+
SkeletalAnimation::Keyframe
LockFreeHashMap::KeyValue
+
+
L
+
LargeIslandSplitter
LFHMAllocator
LFHMAllocatorContext
LinearCurve
DebugRendererRecorder::LineBlob
SkeletonMapper::Locked
LockFreeHashMap
DebugRenderer::LOD
SoftBodySharedSettings::LRA
+
+
M
+
SkeletonMapper::Mapping
MassProperties
Mat44
Matrix
MeshShape
MeshShapeSettings
MinkowskiDifference
MortonCode
MotionProperties
MotorcycleController
MotorcycleControllerSettings
MotorSettings
MeshShape::MSGetTrianglesContext
MutableCompoundShape
MutableCompoundShapeSettings
Mutex
MutexArray
+
+
N
+
NarrowPhaseQuery
AABBTreeBuilder::Node
NodeCodecQuadTreeHalfFloat::Node
NodeCodecQuadTreeHalfFloat
NonCopyable
+
+
O
+
ObjectLayerFilter
ObjectLayerPairFilter
ObjectLayerPairFilterMask
ObjectLayerPairFilterTable
ObjectStream
ObjectStreamBinaryIn
ObjectStreamBinaryOut
ObjectStreamIn
ObjectStreamOut
ObjectStreamTextIn
ObjectStreamTextOut
ObjectVsBroadPhaseLayerFilter
ObjectVsBroadPhaseLayerFilterMask
ObjectVsBroadPhaseLayerFilterTable
OffsetCenterOfMassShape
OffsetCenterOfMassShapeSettings
SoftBodySharedSettings::OptimizationResults
OrientedBox
+
+
P
+
RagdollSettings::Part
PathConstraint
PathConstraintPath
PathConstraintPathHermite
PathConstraintSettings
PhysicsLock
PhysicsMaterial
PhysicsMaterialSimple
PhysicsScene
PhysicsSettings
PhysicsStepListener
PhysicsSystem
PhysicsUpdateContext
Plane
PlaneShape
PlaneShapeSettings
LinearCurve::Point
PolyhedronSubmergedVolumeCalculator::Point
PathConstraintPathHermite::Point
PointConstraint
PointConstraintPart
PointConstraintSettings
PointConvexSupport
EPAConvexHullBuilder::Points
PolygonConvexSupport
PolyhedronSubmergedVolumeCalculator
ProfileMeasurement
Profiler
ProfileSample
ProfileThread
PlaneShape::PSGetTrianglesContext
PulleyConstraint
PulleyConstraintSettings
+
+
Q
+
QuadTree
Quat
+
+
R
+
RackAndPinionConstraint
RackAndPinionConstraintPart
RackAndPinionConstraintSettings
Ragdoll
RagdollSettings
TriangleSplitter::Range
RayCast
RayCastResult
RayCastSettings
RayCastT
RayInvDirection
STLTempAllocator::rebind
STLAllocator::rebind
STLAlignedAllocator::rebind
Ref
RefConst
RefTarget
RefTargetVirtual
Result
ReversedShapeFilter
RotatedTranslatedShape
RotatedTranslatedShapeSettings
RotationEulerConstraintPart
RotationQuatConstraintPart
RRayCast
RShapeCast
RTTI
+
+
S
+
SoftBodyShape::SBSGetTrianglesContext
ScaledShape
ScaledShapeSettings
ScopeExit
Semaphore
SerializableAttribute
SerializableObject
Shape
ShapeCast
ShapeCastResult
ShapeCastSettings
ShapeCastT
ShapeFilter
ShapeFunctions
ShapeSettings
SharedLock
SharedMutex
SixDOFConstraint
SixDOFConstraintSettings
SkeletalAnimation
Skeleton
SkeletonMapper
SkeletonPose
SoftBodySharedSettings::Skinned
SoftBodySharedSettings::SkinWeight
SliderConstraint
SliderConstraintSettings
SoftBodyContactListener
SoftBodyContactSettings
SoftBodyCreationSettings
SoftBodyManifold
SoftBodyMotionProperties
SoftBodyShape
SoftBodySharedSettings
SoftBodyUpdateContext
SoftBodyVertex
SoftBodyWithMotionPropertiesAndShape
SpecifiedBroadPhaseLayerFilter
SpecifiedObjectLayerFilter
Sphere
SphereShape::SphereNoConvex
SphereShape
SphereShapeSettings
SphereShape::SphereWithConvex
LargeIslandSplitter::Split
LargeIslandSplitter::Splits
SpringPart
SpringSettings
StateRecorder
StateRecorderFilter
StateRecorderImpl
StaticArray
StaticCompoundShape
StaticCompoundShapeSettings
Shape::Stats
TriangleSplitter::Stats
PhysicsUpdateContext::Step
STLAlignedAllocator
STLAllocator
STLTempAllocator
StaticArray::Storage
StreamIn
StreamInWrapper
StreamOut
StreamOutWrapper
CompoundShape::SubShape
SubShapeID
SubShapeIDCreator
SubShapeIDPair
CompoundShapeSettings::SubShapeSettings
ConvexShape::Support
ConvexShape::SupportBuffer
SwingTwistConstraint
SwingTwistConstraintPart
SwingTwistConstraintSettings
+
+
T
+
TaperedCapsuleShape::TaperedCapsule
TaperedCapsuleShape
TaperedCapsuleShapeSettings
TaperedCylinderShape::TaperedCylinder
TaperedCylinderShape
TaperedCylinderShapeSettings
TaperedCylinderShape::TCSGetTrianglesContext
TempAllocator
TempAllocatorImpl
TempAllocatorImplWithMallocFallback
TempAllocatorMalloc
DebugRendererRecorder::TextBlob
TrackedVehicleController
TrackedVehicleControllerSettings
QuadTree::Tracking
TransformedConvexObject
TransformedShape
DebugRenderer::Triangle
EPAConvexHullBuilder::Triangle
Triangle
DebugRendererRecorder::TriangleBlob
TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlock
TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader
TriangleCodecIndexed8BitPackSOA4Flags
TriangleConvexSupport
EPAConvexHullBuilder::TriangleFactory
TriangleGrouper
TriangleGrouperClosestCentroid
TriangleGrouperMorton
TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader
TriangleShape::TriangleNoConvex
EPAConvexHullBuilder::TriangleQueue
TriangleShape
TriangleShapeSettings
TriangleSplitter
TriangleSplitterBinning
TriangleSplitterFixedLeafSize
TriangleSplitterLongestAxis
TriangleSplitterMean
TriangleSplitterMorton
TriangleShape::TriangleWithConvex
TriangleShape::TSGetTrianglesContext
TwoBodyConstraint
TwoBodyConstraintSettings
+
+
U
+
UniqueLock
SkeletonMapper::Unmapped
BroadPhase::UpdateState
QuadTree::UpdateState
UVec4
UVec8
+
+
V
+
TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext
Vec3
Vec4
Vec8
Vector
VehicleAntiRollBar
VehicleCollisionTester
VehicleCollisionTesterCastCylinder
VehicleCollisionTesterCastSphere
VehicleCollisionTesterRay
VehicleConstraint
VehicleConstraintSettings
VehicleController
VehicleControllerSettings
VehicleDifferentialSettings
VehicleEngine
VehicleEngineSettings
VehicleTrack
VehicleTrackSettings
VehicleTransmission
VehicleTransmissionSettings
DebugRenderer::Vertex
SoftBodySharedSettings::Vertex
SoftBodySharedSettings::VertexAttributes
TriangleCodecIndexed8BitPackSOA4Flags::VertexData
SoftBodySharedSettings::Volume
+
+
W
+
Wheel
WheeledVehicleController
WheeledVehicleControllerSettings
WheelSettings
WheelSettingsTV
WheelSettingsWV
WheelTV
WheelWV
+
+
+
+ + + + diff --git a/closed.png b/closed.png new file mode 100644 index 000000000..98cc2c909 Binary files /dev/null and b/closed.png differ diff --git a/dir_04619acb54372862c3ed306d2905e80d.html b/dir_04619acb54372862c3ed306d2905e80d.html new file mode 100644 index 000000000..f8ec65316 --- /dev/null +++ b/dir_04619acb54372862c3ed306d2905e80d.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/BroadPhase Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BroadPhase Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 BroadPhase.cpp
 
 BroadPhase.h
 
 BroadPhaseBruteForce.cpp
 
 BroadPhaseBruteForce.h
 
 BroadPhaseLayer.h
 
 BroadPhaseLayerInterfaceMask.h
 
 BroadPhaseLayerInterfaceTable.h
 
 BroadPhaseQuadTree.cpp
 
 BroadPhaseQuadTree.h
 
 BroadPhaseQuery.h
 
 ObjectVsBroadPhaseLayerFilterMask.h
 
 ObjectVsBroadPhaseLayerFilterTable.h
 
 QuadTree.cpp
 
 QuadTree.h
 
+
+
+ + + + diff --git a/dir_04619acb54372862c3ed306d2905e80d.js b/dir_04619acb54372862c3ed306d2905e80d.js new file mode 100644 index 000000000..ea44cb19b --- /dev/null +++ b/dir_04619acb54372862c3ed306d2905e80d.js @@ -0,0 +1,17 @@ +var dir_04619acb54372862c3ed306d2905e80d = +[ + [ "BroadPhase.cpp", "_broad_phase_8cpp.html", null ], + [ "BroadPhase.h", "_broad_phase_8h.html", "_broad_phase_8h" ], + [ "BroadPhaseBruteForce.cpp", "_broad_phase_brute_force_8cpp.html", null ], + [ "BroadPhaseBruteForce.h", "_broad_phase_brute_force_8h.html", "_broad_phase_brute_force_8h" ], + [ "BroadPhaseLayer.h", "_broad_phase_layer_8h.html", "_broad_phase_layer_8h" ], + [ "BroadPhaseLayerInterfaceMask.h", "_broad_phase_layer_interface_mask_8h.html", "_broad_phase_layer_interface_mask_8h" ], + [ "BroadPhaseLayerInterfaceTable.h", "_broad_phase_layer_interface_table_8h.html", "_broad_phase_layer_interface_table_8h" ], + [ "BroadPhaseQuadTree.cpp", "_broad_phase_quad_tree_8cpp.html", null ], + [ "BroadPhaseQuadTree.h", "_broad_phase_quad_tree_8h.html", "_broad_phase_quad_tree_8h" ], + [ "BroadPhaseQuery.h", "_broad_phase_query_8h.html", "_broad_phase_query_8h" ], + [ "ObjectVsBroadPhaseLayerFilterMask.h", "_object_vs_broad_phase_layer_filter_mask_8h.html", "_object_vs_broad_phase_layer_filter_mask_8h" ], + [ "ObjectVsBroadPhaseLayerFilterTable.h", "_object_vs_broad_phase_layer_filter_table_8h.html", "_object_vs_broad_phase_layer_filter_table_8h" ], + [ "QuadTree.cpp", "_quad_tree_8cpp.html", null ], + [ "QuadTree.h", "_quad_tree_8h.html", "_quad_tree_8h" ] +]; \ No newline at end of file diff --git a/dir_08a9edf434844c45d3c1f760a0f11af5.html b/dir_08a9edf434844c45d3c1f760a0f11af5.html new file mode 100644 index 000000000..1d4f4b235 --- /dev/null +++ b/dir_08a9edf434844c45d3c1f760a0f11af5.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Jolt/Renderer Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Renderer Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + +

+Files

 DebugRenderer.cpp
 
 DebugRenderer.h
 
 DebugRendererPlayback.cpp
 
 DebugRendererPlayback.h
 
 DebugRendererRecorder.cpp
 
 DebugRendererRecorder.h
 
 DebugRendererSimple.cpp
 
 DebugRendererSimple.h
 
+
+
+ + + + diff --git a/dir_08a9edf434844c45d3c1f760a0f11af5.js b/dir_08a9edf434844c45d3c1f760a0f11af5.js new file mode 100644 index 000000000..f110afbf3 --- /dev/null +++ b/dir_08a9edf434844c45d3c1f760a0f11af5.js @@ -0,0 +1,11 @@ +var dir_08a9edf434844c45d3c1f760a0f11af5 = +[ + [ "DebugRenderer.cpp", "_debug_renderer_8cpp.html", null ], + [ "DebugRenderer.h", "_debug_renderer_8h.html", "_debug_renderer_8h" ], + [ "DebugRendererPlayback.cpp", "_debug_renderer_playback_8cpp.html", null ], + [ "DebugRendererPlayback.h", "_debug_renderer_playback_8h.html", "_debug_renderer_playback_8h" ], + [ "DebugRendererRecorder.cpp", "_debug_renderer_recorder_8cpp.html", null ], + [ "DebugRendererRecorder.h", "_debug_renderer_recorder_8h.html", "_debug_renderer_recorder_8h" ], + [ "DebugRendererSimple.cpp", "_debug_renderer_simple_8cpp.html", null ], + [ "DebugRendererSimple.h", "_debug_renderer_simple_8h.html", "_debug_renderer_simple_8h" ] +]; \ No newline at end of file diff --git a/dir_166975991df1b4ecc6dd5a6639d45e50.html b/dir_166975991df1b4ecc6dd5a6639d45e50.html new file mode 100644 index 000000000..075c20e62 --- /dev/null +++ b/dir_166975991df1b4ecc6dd5a6639d45e50.html @@ -0,0 +1,205 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Constraints Directory Reference
+
+
+ + + + +

+Directories

 ConstraintPart
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 CalculateSolverSteps.h
 
 ConeConstraint.cpp
 
 ConeConstraint.h
 
 Constraint.cpp
 
 Constraint.h
 
 ConstraintManager.cpp
 
 ConstraintManager.h
 
 ContactConstraintManager.cpp
 
 ContactConstraintManager.h
 
 DistanceConstraint.cpp
 
 DistanceConstraint.h
 
 FixedConstraint.cpp
 
 FixedConstraint.h
 
 GearConstraint.cpp
 
 GearConstraint.h
 
 HingeConstraint.cpp
 
 HingeConstraint.h
 
 MotorSettings.cpp
 
 MotorSettings.h
 
 PathConstraint.cpp
 
 PathConstraint.h
 
 PathConstraintPath.cpp
 
 PathConstraintPath.h
 
 PathConstraintPathHermite.cpp
 
 PathConstraintPathHermite.h
 
 PointConstraint.cpp
 
 PointConstraint.h
 
 PulleyConstraint.cpp
 
 PulleyConstraint.h
 
 RackAndPinionConstraint.cpp
 
 RackAndPinionConstraint.h
 
 SixDOFConstraint.cpp
 
 SixDOFConstraint.h
 
 SliderConstraint.cpp
 
 SliderConstraint.h
 
 SpringSettings.cpp
 
 SpringSettings.h
 
 SwingTwistConstraint.cpp
 
 SwingTwistConstraint.h
 
 TwoBodyConstraint.cpp
 
 TwoBodyConstraint.h
 
+
+
+ + + + diff --git a/dir_166975991df1b4ecc6dd5a6639d45e50.js b/dir_166975991df1b4ecc6dd5a6639d45e50.js new file mode 100644 index 000000000..d40669beb --- /dev/null +++ b/dir_166975991df1b4ecc6dd5a6639d45e50.js @@ -0,0 +1,45 @@ +var dir_166975991df1b4ecc6dd5a6639d45e50 = +[ + [ "ConstraintPart", "dir_e6c5fb27ccbee0305acd3bb7c27d0472.html", "dir_e6c5fb27ccbee0305acd3bb7c27d0472" ], + [ "CalculateSolverSteps.h", "_calculate_solver_steps_8h.html", "_calculate_solver_steps_8h" ], + [ "ConeConstraint.cpp", "_cone_constraint_8cpp.html", "_cone_constraint_8cpp" ], + [ "ConeConstraint.h", "_cone_constraint_8h.html", "_cone_constraint_8h" ], + [ "Constraint.cpp", "_constraint_8cpp.html", "_constraint_8cpp" ], + [ "Constraint.h", "_constraint_8h.html", "_constraint_8h" ], + [ "ConstraintManager.cpp", "_constraint_manager_8cpp.html", null ], + [ "ConstraintManager.h", "_constraint_manager_8h.html", "_constraint_manager_8h" ], + [ "ContactConstraintManager.cpp", "_contact_constraint_manager_8cpp.html", null ], + [ "ContactConstraintManager.h", "_contact_constraint_manager_8h.html", "_contact_constraint_manager_8h" ], + [ "DistanceConstraint.cpp", "_distance_constraint_8cpp.html", "_distance_constraint_8cpp" ], + [ "DistanceConstraint.h", "_distance_constraint_8h.html", "_distance_constraint_8h" ], + [ "FixedConstraint.cpp", "_fixed_constraint_8cpp.html", "_fixed_constraint_8cpp" ], + [ "FixedConstraint.h", "_fixed_constraint_8h.html", "_fixed_constraint_8h" ], + [ "GearConstraint.cpp", "_gear_constraint_8cpp.html", "_gear_constraint_8cpp" ], + [ "GearConstraint.h", "_gear_constraint_8h.html", "_gear_constraint_8h" ], + [ "HingeConstraint.cpp", "_hinge_constraint_8cpp.html", "_hinge_constraint_8cpp" ], + [ "HingeConstraint.h", "_hinge_constraint_8h.html", "_hinge_constraint_8h" ], + [ "MotorSettings.cpp", "_motor_settings_8cpp.html", "_motor_settings_8cpp" ], + [ "MotorSettings.h", "_motor_settings_8h.html", "_motor_settings_8h" ], + [ "PathConstraint.cpp", "_path_constraint_8cpp.html", "_path_constraint_8cpp" ], + [ "PathConstraint.h", "_path_constraint_8h.html", "_path_constraint_8h" ], + [ "PathConstraintPath.cpp", "_path_constraint_path_8cpp.html", "_path_constraint_path_8cpp" ], + [ "PathConstraintPath.h", "_path_constraint_path_8h.html", "_path_constraint_path_8h" ], + [ "PathConstraintPathHermite.cpp", "_path_constraint_path_hermite_8cpp.html", "_path_constraint_path_hermite_8cpp" ], + [ "PathConstraintPathHermite.h", "_path_constraint_path_hermite_8h.html", "_path_constraint_path_hermite_8h" ], + [ "PointConstraint.cpp", "_point_constraint_8cpp.html", "_point_constraint_8cpp" ], + [ "PointConstraint.h", "_point_constraint_8h.html", "_point_constraint_8h" ], + [ "PulleyConstraint.cpp", "_pulley_constraint_8cpp.html", "_pulley_constraint_8cpp" ], + [ "PulleyConstraint.h", "_pulley_constraint_8h.html", "_pulley_constraint_8h" ], + [ "RackAndPinionConstraint.cpp", "_rack_and_pinion_constraint_8cpp.html", "_rack_and_pinion_constraint_8cpp" ], + [ "RackAndPinionConstraint.h", "_rack_and_pinion_constraint_8h.html", "_rack_and_pinion_constraint_8h" ], + [ "SixDOFConstraint.cpp", "_six_d_o_f_constraint_8cpp.html", "_six_d_o_f_constraint_8cpp" ], + [ "SixDOFConstraint.h", "_six_d_o_f_constraint_8h.html", "_six_d_o_f_constraint_8h" ], + [ "SliderConstraint.cpp", "_slider_constraint_8cpp.html", "_slider_constraint_8cpp" ], + [ "SliderConstraint.h", "_slider_constraint_8h.html", "_slider_constraint_8h" ], + [ "SpringSettings.cpp", "_spring_settings_8cpp.html", "_spring_settings_8cpp" ], + [ "SpringSettings.h", "_spring_settings_8h.html", "_spring_settings_8h" ], + [ "SwingTwistConstraint.cpp", "_swing_twist_constraint_8cpp.html", "_swing_twist_constraint_8cpp" ], + [ "SwingTwistConstraint.h", "_swing_twist_constraint_8h.html", "_swing_twist_constraint_8h" ], + [ "TwoBodyConstraint.cpp", "_two_body_constraint_8cpp.html", "_two_body_constraint_8cpp" ], + [ "TwoBodyConstraint.h", "_two_body_constraint_8h.html", "_two_body_constraint_8h" ] +]; \ No newline at end of file diff --git a/dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html b/dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html new file mode 100644 index 000000000..899604255 --- /dev/null +++ b/dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html @@ -0,0 +1,225 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Collision Directory Reference
+
+
+ + + + + + +

+Directories

 BroadPhase
 
 Shape
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 AABoxCast.h
 
 ActiveEdgeMode.h
 
 ActiveEdges.h
 
 BackFaceMode.h
 
 CastConvexVsTriangles.cpp
 
 CastConvexVsTriangles.h
 
 CastResult.h
 
 CastSphereVsTriangles.cpp
 
 CastSphereVsTriangles.h
 
 CollectFacesMode.h
 
 CollideConvexVsTriangles.cpp
 
 CollideConvexVsTriangles.h
 
 CollidePointResult.h
 
 CollideShape.h
 
 CollideSoftBodyVerticesVsTriangles.h
 
 CollideSphereVsTriangles.cpp
 
 CollideSphereVsTriangles.h
 
 CollisionCollector.h
 
 CollisionCollectorImpl.h
 
 CollisionDispatch.cpp
 
 CollisionDispatch.h
 
 CollisionGroup.cpp
 
 CollisionGroup.h
 
 ContactListener.h
 
 EstimateCollisionResponse.cpp
 
 EstimateCollisionResponse.h
 
 GroupFilter.cpp
 
 GroupFilter.h
 
 GroupFilterTable.cpp
 
 GroupFilterTable.h
 
 InternalEdgeRemovingCollector.h
 
 ManifoldBetweenTwoFaces.cpp
 
 ManifoldBetweenTwoFaces.h
 
 NarrowPhaseQuery.cpp
 
 NarrowPhaseQuery.h
 
 NarrowPhaseStats.cpp
 
 NarrowPhaseStats.h
 
 ObjectLayer.h
 
 ObjectLayerPairFilterMask.h
 
 ObjectLayerPairFilterTable.h
 
 PhysicsMaterial.cpp
 
 PhysicsMaterial.h
 
 PhysicsMaterialSimple.cpp
 
 PhysicsMaterialSimple.h
 
 RayCast.h
 
 ShapeCast.h
 
 ShapeFilter.h
 
 SortReverseAndStore.h
 
 TransformedShape.cpp
 
 TransformedShape.h
 
+
+
+ + + + diff --git a/dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.js b/dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.js new file mode 100644 index 000000000..93b6253d6 --- /dev/null +++ b/dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.js @@ -0,0 +1,55 @@ +var dir_1a1d05ab9ff27ca8d1ed94cd62670cdf = +[ + [ "BroadPhase", "dir_04619acb54372862c3ed306d2905e80d.html", "dir_04619acb54372862c3ed306d2905e80d" ], + [ "Shape", "dir_4df7c3fdd39bf16e2d4956412667f123.html", "dir_4df7c3fdd39bf16e2d4956412667f123" ], + [ "AABoxCast.h", "_a_a_box_cast_8h.html", "_a_a_box_cast_8h" ], + [ "ActiveEdgeMode.h", "_active_edge_mode_8h.html", "_active_edge_mode_8h" ], + [ "ActiveEdges.h", "_active_edges_8h.html", null ], + [ "BackFaceMode.h", "_back_face_mode_8h.html", "_back_face_mode_8h" ], + [ "CastConvexVsTriangles.cpp", "_cast_convex_vs_triangles_8cpp.html", null ], + [ "CastConvexVsTriangles.h", "_cast_convex_vs_triangles_8h.html", "_cast_convex_vs_triangles_8h" ], + [ "CastResult.h", "_cast_result_8h.html", "_cast_result_8h" ], + [ "CastSphereVsTriangles.cpp", "_cast_sphere_vs_triangles_8cpp.html", null ], + [ "CastSphereVsTriangles.h", "_cast_sphere_vs_triangles_8h.html", "_cast_sphere_vs_triangles_8h" ], + [ "CollectFacesMode.h", "_collect_faces_mode_8h.html", "_collect_faces_mode_8h" ], + [ "CollideConvexVsTriangles.cpp", "_collide_convex_vs_triangles_8cpp.html", null ], + [ "CollideConvexVsTriangles.h", "_collide_convex_vs_triangles_8h.html", "_collide_convex_vs_triangles_8h" ], + [ "CollidePointResult.h", "_collide_point_result_8h.html", "_collide_point_result_8h" ], + [ "CollideShape.h", "_collide_shape_8h.html", "_collide_shape_8h" ], + [ "CollideSoftBodyVerticesVsTriangles.h", "_collide_soft_body_vertices_vs_triangles_8h.html", "_collide_soft_body_vertices_vs_triangles_8h" ], + [ "CollideSphereVsTriangles.cpp", "_collide_sphere_vs_triangles_8cpp.html", null ], + [ "CollideSphereVsTriangles.h", "_collide_sphere_vs_triangles_8h.html", "_collide_sphere_vs_triangles_8h" ], + [ "CollisionCollector.h", "_collision_collector_8h.html", "_collision_collector_8h" ], + [ "CollisionCollectorImpl.h", "_collision_collector_impl_8h.html", "_collision_collector_impl_8h" ], + [ "CollisionDispatch.cpp", "_collision_dispatch_8cpp.html", null ], + [ "CollisionDispatch.h", "_collision_dispatch_8h.html", "_collision_dispatch_8h" ], + [ "CollisionGroup.cpp", "_collision_group_8cpp.html", "_collision_group_8cpp" ], + [ "CollisionGroup.h", "_collision_group_8h.html", "_collision_group_8h" ], + [ "ContactListener.h", "_contact_listener_8h.html", "_contact_listener_8h" ], + [ "EstimateCollisionResponse.cpp", "_estimate_collision_response_8cpp.html", "_estimate_collision_response_8cpp" ], + [ "EstimateCollisionResponse.h", "_estimate_collision_response_8h.html", "_estimate_collision_response_8h" ], + [ "GroupFilter.cpp", "_group_filter_8cpp.html", "_group_filter_8cpp" ], + [ "GroupFilter.h", "_group_filter_8h.html", "_group_filter_8h" ], + [ "GroupFilterTable.cpp", "_group_filter_table_8cpp.html", "_group_filter_table_8cpp" ], + [ "GroupFilterTable.h", "_group_filter_table_8h.html", "_group_filter_table_8h" ], + [ "InternalEdgeRemovingCollector.h", "_internal_edge_removing_collector_8h.html", "_internal_edge_removing_collector_8h" ], + [ "ManifoldBetweenTwoFaces.cpp", "_manifold_between_two_faces_8cpp.html", "_manifold_between_two_faces_8cpp" ], + [ "ManifoldBetweenTwoFaces.h", "_manifold_between_two_faces_8h.html", "_manifold_between_two_faces_8h" ], + [ "NarrowPhaseQuery.cpp", "_narrow_phase_query_8cpp.html", null ], + [ "NarrowPhaseQuery.h", "_narrow_phase_query_8h.html", "_narrow_phase_query_8h" ], + [ "NarrowPhaseStats.cpp", "_narrow_phase_stats_8cpp.html", null ], + [ "NarrowPhaseStats.h", "_narrow_phase_stats_8h.html", "_narrow_phase_stats_8h" ], + [ "ObjectLayer.h", "_object_layer_8h.html", "_object_layer_8h" ], + [ "ObjectLayerPairFilterMask.h", "_object_layer_pair_filter_mask_8h.html", "_object_layer_pair_filter_mask_8h" ], + [ "ObjectLayerPairFilterTable.h", "_object_layer_pair_filter_table_8h.html", "_object_layer_pair_filter_table_8h" ], + [ "PhysicsMaterial.cpp", "_physics_material_8cpp.html", "_physics_material_8cpp" ], + [ "PhysicsMaterial.h", "_physics_material_8h.html", "_physics_material_8h" ], + [ "PhysicsMaterialSimple.cpp", "_physics_material_simple_8cpp.html", "_physics_material_simple_8cpp" ], + [ "PhysicsMaterialSimple.h", "_physics_material_simple_8h.html", "_physics_material_simple_8h" ], + [ "RayCast.h", "_ray_cast_8h.html", "_ray_cast_8h" ], + [ "ShapeCast.h", "_shape_cast_8h.html", "_shape_cast_8h" ], + [ "ShapeFilter.h", "_shape_filter_8h.html", "_shape_filter_8h" ], + [ "SortReverseAndStore.h", "_sort_reverse_and_store_8h.html", "_sort_reverse_and_store_8h" ], + [ "TransformedShape.cpp", "_transformed_shape_8cpp.html", null ], + [ "TransformedShape.h", "_transformed_shape_8h.html", "_transformed_shape_8h" ] +]; \ No newline at end of file diff --git a/dir_1b21a6f5692b6d84bf3b848a79181d46.html b/dir_1b21a6f5692b6d84bf3b848a79181d46.html new file mode 100644 index 000000000..018175a12 --- /dev/null +++ b/dir_1b21a6f5692b6d84bf3b848a79181d46.html @@ -0,0 +1,240 @@ + + + + + + + +Jolt Physics: Jolt/Core Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Core Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 ARMNeon.h
 
 Array.h
 
 Atomics.h
 
 ByteBuffer.h
 
 Color.cpp
 
 Color.h
 
 Core.h
 
 Factory.cpp
 
 Factory.h
 
 FixedSizeFreeList.h
 
 FixedSizeFreeList.inl
 
 FPControlWord.h
 
 FPException.h
 
 FPFlushDenormals.h
 
 HashCombine.h
 
 InsertionSort.h
 
 IssueReporting.cpp
 
 IssueReporting.h
 
 JobSystem.h
 
 JobSystem.inl
 
 JobSystemSingleThreaded.cpp
 
 JobSystemSingleThreaded.h
 
 JobSystemThreadPool.cpp
 
 JobSystemThreadPool.h
 
 JobSystemWithBarrier.cpp
 
 JobSystemWithBarrier.h
 
 LinearCurve.cpp
 
 LinearCurve.h
 
 LockFreeHashMap.h
 
 LockFreeHashMap.inl
 
 Memory.cpp
 
 Memory.h
 
 Mutex.h
 
 MutexArray.h
 
 NonCopyable.h
 
 Profiler.cpp
 
 Profiler.h
 
 Profiler.inl
 
 QuickSort.h
 
 Reference.h
 
 Result.h
 
 RTTI.cpp
 
 RTTI.h
 
 ScopeExit.h
 
 Semaphore.cpp
 
 Semaphore.h
 
 StaticArray.h
 
 STLAlignedAllocator.h
 
 STLAllocator.h
 
 STLTempAllocator.h
 
 StreamIn.h
 
 StreamOut.h
 
 StreamUtils.h
 
 StreamWrapper.h
 
 StringTools.cpp
 
 StringTools.h
 
 TempAllocator.h
 
 TickCounter.cpp
 
 TickCounter.h
 
 UnorderedMap.h
 
 UnorderedSet.h
 
+
+
+ + + + diff --git a/dir_1b21a6f5692b6d84bf3b848a79181d46.js b/dir_1b21a6f5692b6d84bf3b848a79181d46.js new file mode 100644 index 000000000..d128433f6 --- /dev/null +++ b/dir_1b21a6f5692b6d84bf3b848a79181d46.js @@ -0,0 +1,64 @@ +var dir_1b21a6f5692b6d84bf3b848a79181d46 = +[ + [ "ARMNeon.h", "_a_r_m_neon_8h.html", null ], + [ "Array.h", "_array_8h.html", "_array_8h" ], + [ "Atomics.h", "_atomics_8h.html", "_atomics_8h" ], + [ "ByteBuffer.h", "_byte_buffer_8h.html", "_byte_buffer_8h" ], + [ "Color.cpp", "_color_8cpp.html", null ], + [ "Color.h", "_color_8h.html", "_color_8h" ], + [ "Core.h", "_core_8h.html", "_core_8h" ], + [ "Factory.cpp", "_factory_8cpp.html", null ], + [ "Factory.h", "_factory_8h.html", "_factory_8h" ], + [ "FixedSizeFreeList.h", "_fixed_size_free_list_8h.html", "_fixed_size_free_list_8h" ], + [ "FixedSizeFreeList.inl", "_fixed_size_free_list_8inl.html", null ], + [ "FPControlWord.h", "_f_p_control_word_8h.html", null ], + [ "FPException.h", "_f_p_exception_8h.html", "_f_p_exception_8h" ], + [ "FPFlushDenormals.h", "_f_p_flush_denormals_8h.html", null ], + [ "HashCombine.h", "_hash_combine_8h.html", "_hash_combine_8h" ], + [ "InsertionSort.h", "_insertion_sort_8h.html", "_insertion_sort_8h" ], + [ "IssueReporting.cpp", "_issue_reporting_8cpp.html", "_issue_reporting_8cpp" ], + [ "IssueReporting.h", "_issue_reporting_8h.html", "_issue_reporting_8h" ], + [ "JobSystem.h", "_job_system_8h.html", "_job_system_8h" ], + [ "JobSystem.inl", "_job_system_8inl.html", null ], + [ "JobSystemSingleThreaded.cpp", "_job_system_single_threaded_8cpp.html", null ], + [ "JobSystemSingleThreaded.h", "_job_system_single_threaded_8h.html", "_job_system_single_threaded_8h" ], + [ "JobSystemThreadPool.cpp", "_job_system_thread_pool_8cpp.html", null ], + [ "JobSystemThreadPool.h", "_job_system_thread_pool_8h.html", "_job_system_thread_pool_8h" ], + [ "JobSystemWithBarrier.cpp", "_job_system_with_barrier_8cpp.html", null ], + [ "JobSystemWithBarrier.h", "_job_system_with_barrier_8h.html", "_job_system_with_barrier_8h" ], + [ "LinearCurve.cpp", "_linear_curve_8cpp.html", "_linear_curve_8cpp" ], + [ "LinearCurve.h", "_linear_curve_8h.html", "_linear_curve_8h" ], + [ "LockFreeHashMap.h", "_lock_free_hash_map_8h.html", "_lock_free_hash_map_8h" ], + [ "LockFreeHashMap.inl", "_lock_free_hash_map_8inl.html", null ], + [ "Memory.cpp", "_memory_8cpp.html", "_memory_8cpp" ], + [ "Memory.h", "_memory_8h.html", "_memory_8h" ], + [ "Mutex.h", "_mutex_8h.html", "_mutex_8h" ], + [ "MutexArray.h", "_mutex_array_8h.html", "_mutex_array_8h" ], + [ "NonCopyable.h", "_non_copyable_8h.html", "_non_copyable_8h" ], + [ "Profiler.cpp", "_profiler_8cpp.html", null ], + [ "Profiler.h", "_profiler_8h.html", "_profiler_8h" ], + [ "Profiler.inl", "_profiler_8inl.html", null ], + [ "QuickSort.h", "_quick_sort_8h.html", "_quick_sort_8h" ], + [ "Reference.h", "_reference_8h.html", "_reference_8h" ], + [ "Result.h", "_result_8h.html", "_result_8h" ], + [ "RTTI.cpp", "_r_t_t_i_8cpp.html", null ], + [ "RTTI.h", "_r_t_t_i_8h.html", "_r_t_t_i_8h" ], + [ "ScopeExit.h", "_scope_exit_8h.html", "_scope_exit_8h" ], + [ "Semaphore.cpp", "_semaphore_8cpp.html", null ], + [ "Semaphore.h", "_semaphore_8h.html", "_semaphore_8h" ], + [ "StaticArray.h", "_static_array_8h.html", "_static_array_8h" ], + [ "STLAlignedAllocator.h", "_s_t_l_aligned_allocator_8h.html", "_s_t_l_aligned_allocator_8h" ], + [ "STLAllocator.h", "_s_t_l_allocator_8h.html", "_s_t_l_allocator_8h" ], + [ "STLTempAllocator.h", "_s_t_l_temp_allocator_8h.html", "_s_t_l_temp_allocator_8h" ], + [ "StreamIn.h", "_stream_in_8h.html", "_stream_in_8h" ], + [ "StreamOut.h", "_stream_out_8h.html", "_stream_out_8h" ], + [ "StreamUtils.h", "_stream_utils_8h.html", "_stream_utils_8h" ], + [ "StreamWrapper.h", "_stream_wrapper_8h.html", "_stream_wrapper_8h" ], + [ "StringTools.cpp", "_string_tools_8cpp.html", "_string_tools_8cpp" ], + [ "StringTools.h", "_string_tools_8h.html", "_string_tools_8h" ], + [ "TempAllocator.h", "_temp_allocator_8h.html", "_temp_allocator_8h" ], + [ "TickCounter.cpp", "_tick_counter_8cpp.html", null ], + [ "TickCounter.h", "_tick_counter_8h.html", "_tick_counter_8h" ], + [ "UnorderedMap.h", "_unordered_map_8h.html", "_unordered_map_8h" ], + [ "UnorderedSet.h", "_unordered_set_8h.html", "_unordered_set_8h" ] +]; \ No newline at end of file diff --git a/dir_2983ebfd4d3d6e750a69e0641ec24aca.html b/dir_2983ebfd4d3d6e750a69e0641ec24aca.html new file mode 100644 index 000000000..f2a431c47 --- /dev/null +++ b/dir_2983ebfd4d3d6e750a69e0641ec24aca.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Ragdoll Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Ragdoll Directory Reference
+
+
+ + + + + + +

+Files

 Ragdoll.cpp
 
 Ragdoll.h
 
+
+
+ + + + diff --git a/dir_2983ebfd4d3d6e750a69e0641ec24aca.js b/dir_2983ebfd4d3d6e750a69e0641ec24aca.js new file mode 100644 index 000000000..5b7a72832 --- /dev/null +++ b/dir_2983ebfd4d3d6e750a69e0641ec24aca.js @@ -0,0 +1,5 @@ +var dir_2983ebfd4d3d6e750a69e0641ec24aca = +[ + [ "Ragdoll.cpp", "_ragdoll_8cpp.html", "_ragdoll_8cpp" ], + [ "Ragdoll.h", "_ragdoll_8h.html", "_ragdoll_8h" ] +]; \ No newline at end of file diff --git a/dir_2d88bf03bf4a7a62918727c0f2ee34eb.html b/dir_2d88bf03bf4a7a62918727c0f2ee34eb.html new file mode 100644 index 000000000..3c5c3ca01 --- /dev/null +++ b/dir_2d88bf03bf4a7a62918727c0f2ee34eb.html @@ -0,0 +1,176 @@ + + + + + + + +Jolt Physics: Jolt/Geometry Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Geometry Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 AABox.h
 
 AABox4.h
 
 ClipPoly.h
 
 ClosestPoint.h
 
 ConvexHullBuilder.cpp
 
 ConvexHullBuilder.h
 
 ConvexHullBuilder2D.cpp
 
 ConvexHullBuilder2D.h
 
 ConvexSupport.h
 
 Ellipse.h
 
 EPAConvexHullBuilder.h
 
 EPAPenetrationDepth.h
 
 GJKClosestPoint.h
 
 IndexedTriangle.h
 
 Indexify.cpp
 
 Indexify.h
 
 MortonCode.h
 
 OrientedBox.cpp
 
 OrientedBox.h
 
 Plane.h
 
 RayAABox.h
 
 RayAABox8.h
 
 RayCapsule.h
 
 RayCylinder.h
 
 RaySphere.h
 
 RayTriangle.h
 
 RayTriangle8.h
 
 Sphere.h
 
 Triangle.h
 
+
+
+ + + + diff --git a/dir_2d88bf03bf4a7a62918727c0f2ee34eb.js b/dir_2d88bf03bf4a7a62918727c0f2ee34eb.js new file mode 100644 index 000000000..884692664 --- /dev/null +++ b/dir_2d88bf03bf4a7a62918727c0f2ee34eb.js @@ -0,0 +1,32 @@ +var dir_2d88bf03bf4a7a62918727c0f2ee34eb = +[ + [ "AABox.h", "_a_a_box_8h.html", "_a_a_box_8h" ], + [ "AABox4.h", "_a_a_box4_8h.html", "_a_a_box4_8h" ], + [ "ClipPoly.h", "_clip_poly_8h.html", "_clip_poly_8h" ], + [ "ClosestPoint.h", "_closest_point_8h.html", "_closest_point_8h" ], + [ "ConvexHullBuilder.cpp", "_convex_hull_builder_8cpp.html", null ], + [ "ConvexHullBuilder.h", "_convex_hull_builder_8h.html", "_convex_hull_builder_8h" ], + [ "ConvexHullBuilder2D.cpp", "_convex_hull_builder2_d_8cpp.html", null ], + [ "ConvexHullBuilder2D.h", "_convex_hull_builder2_d_8h.html", "_convex_hull_builder2_d_8h" ], + [ "ConvexSupport.h", "_convex_support_8h.html", "_convex_support_8h" ], + [ "Ellipse.h", "_ellipse_8h.html", "_ellipse_8h" ], + [ "EPAConvexHullBuilder.h", "_e_p_a_convex_hull_builder_8h.html", "_e_p_a_convex_hull_builder_8h" ], + [ "EPAPenetrationDepth.h", "_e_p_a_penetration_depth_8h.html", "_e_p_a_penetration_depth_8h" ], + [ "GJKClosestPoint.h", "_g_j_k_closest_point_8h.html", "_g_j_k_closest_point_8h" ], + [ "IndexedTriangle.h", "_indexed_triangle_8h.html", "_indexed_triangle_8h" ], + [ "Indexify.cpp", "_indexify_8cpp.html", "_indexify_8cpp" ], + [ "Indexify.h", "_indexify_8h.html", "_indexify_8h" ], + [ "MortonCode.h", "_morton_code_8h.html", "_morton_code_8h" ], + [ "OrientedBox.cpp", "_oriented_box_8cpp.html", null ], + [ "OrientedBox.h", "_oriented_box_8h.html", "_oriented_box_8h" ], + [ "Plane.h", "_plane_8h.html", "_plane_8h" ], + [ "RayAABox.h", "_ray_a_a_box_8h.html", "_ray_a_a_box_8h" ], + [ "RayAABox8.h", "_ray_a_a_box8_8h.html", "_ray_a_a_box8_8h" ], + [ "RayCapsule.h", "_ray_capsule_8h.html", "_ray_capsule_8h" ], + [ "RayCylinder.h", "_ray_cylinder_8h.html", "_ray_cylinder_8h" ], + [ "RaySphere.h", "_ray_sphere_8h.html", "_ray_sphere_8h" ], + [ "RayTriangle.h", "_ray_triangle_8h.html", "_ray_triangle_8h" ], + [ "RayTriangle8.h", "_ray_triangle8_8h.html", "_ray_triangle8_8h" ], + [ "Sphere.h", "_sphere_8h.html", "_sphere_8h" ], + [ "Triangle.h", "_triangle_8h.html", "_triangle_8h" ] +]; \ No newline at end of file diff --git a/dir_3b340e4d52b4e8b5dc2c6e035ba952f1.html b/dir_3b340e4d52b4e8b5dc2c6e035ba952f1.html new file mode 100644 index 000000000..4ba75378d --- /dev/null +++ b/dir_3b340e4d52b4e8b5dc2c6e035ba952f1.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Jolt/TriangleGrouper Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleGrouper Directory Reference
+
+
+ + + + + + + + + + + + +

+Files

 TriangleGrouper.h
 
 TriangleGrouperClosestCentroid.cpp
 
 TriangleGrouperClosestCentroid.h
 
 TriangleGrouperMorton.cpp
 
 TriangleGrouperMorton.h
 
+
+
+ + + + diff --git a/dir_3b340e4d52b4e8b5dc2c6e035ba952f1.js b/dir_3b340e4d52b4e8b5dc2c6e035ba952f1.js new file mode 100644 index 000000000..12c06075e --- /dev/null +++ b/dir_3b340e4d52b4e8b5dc2c6e035ba952f1.js @@ -0,0 +1,8 @@ +var dir_3b340e4d52b4e8b5dc2c6e035ba952f1 = +[ + [ "TriangleGrouper.h", "_triangle_grouper_8h.html", "_triangle_grouper_8h" ], + [ "TriangleGrouperClosestCentroid.cpp", "_triangle_grouper_closest_centroid_8cpp.html", null ], + [ "TriangleGrouperClosestCentroid.h", "_triangle_grouper_closest_centroid_8h.html", "_triangle_grouper_closest_centroid_8h" ], + [ "TriangleGrouperMorton.cpp", "_triangle_grouper_morton_8cpp.html", null ], + [ "TriangleGrouperMorton.h", "_triangle_grouper_morton_8h.html", "_triangle_grouper_morton_8h" ] +]; \ No newline at end of file diff --git a/dir_4335ce4a64d0d4f9f4c8f0a782dfdfeb.html b/dir_4335ce4a64d0d4f9f4c8f0a782dfdfeb.html new file mode 100644 index 000000000..8f898122c --- /dev/null +++ b/dir_4335ce4a64d0d4f9f4c8f0a782dfdfeb.html @@ -0,0 +1,114 @@ + + + + + + + +Jolt Physics: Build Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Build Directory Reference
+
+
+
+
+ + + + diff --git a/dir_4df7c3fdd39bf16e2d4956412667f123.html b/dir_4df7c3fdd39bf16e2d4956412667f123.html new file mode 100644 index 000000000..2c43c94f8 --- /dev/null +++ b/dir_4df7c3fdd39bf16e2d4956412667f123.html @@ -0,0 +1,210 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Collision/Shape Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Shape Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 BoxShape.cpp
 
 BoxShape.h
 
 CapsuleShape.cpp
 
 CapsuleShape.h
 
 CompoundShape.cpp
 
 CompoundShape.h
 
 CompoundShapeVisitors.h
 
 ConvexHullShape.cpp
 
 ConvexHullShape.h
 
 ConvexShape.cpp
 
 ConvexShape.h
 
 CylinderShape.cpp
 
 CylinderShape.h
 
 DecoratedShape.cpp
 
 DecoratedShape.h
 
 GetTrianglesContext.h
 
 HeightFieldShape.cpp
 
 HeightFieldShape.h
 
 MeshShape.cpp
 
 MeshShape.h
 
 MutableCompoundShape.cpp
 
 MutableCompoundShape.h
 
 OffsetCenterOfMassShape.cpp
 
 OffsetCenterOfMassShape.h
 
 PlaneShape.cpp
 
 PlaneShape.h
 
 PolyhedronSubmergedVolumeCalculator.h
 
 RotatedTranslatedShape.cpp
 
 RotatedTranslatedShape.h
 
 ScaledShape.cpp
 
 ScaledShape.h
 
 ScaleHelpers.h
 
 Shape.cpp
 
 Shape.h
 
 SphereShape.cpp
 
 SphereShape.h
 
 StaticCompoundShape.cpp
 
 StaticCompoundShape.h
 
 SubShapeID.h
 
 SubShapeIDPair.h
 
 TaperedCapsuleShape.cpp
 
 TaperedCapsuleShape.h
 
 TaperedCylinderShape.cpp
 
 TaperedCylinderShape.h
 
 TriangleShape.cpp
 
 TriangleShape.h
 
+
+
+ + + + diff --git a/dir_4df7c3fdd39bf16e2d4956412667f123.js b/dir_4df7c3fdd39bf16e2d4956412667f123.js new file mode 100644 index 000000000..dc495791b --- /dev/null +++ b/dir_4df7c3fdd39bf16e2d4956412667f123.js @@ -0,0 +1,49 @@ +var dir_4df7c3fdd39bf16e2d4956412667f123 = +[ + [ "BoxShape.cpp", "_box_shape_8cpp.html", "_box_shape_8cpp" ], + [ "BoxShape.h", "_box_shape_8h.html", "_box_shape_8h" ], + [ "CapsuleShape.cpp", "_capsule_shape_8cpp.html", "_capsule_shape_8cpp" ], + [ "CapsuleShape.h", "_capsule_shape_8h.html", "_capsule_shape_8h" ], + [ "CompoundShape.cpp", "_compound_shape_8cpp.html", "_compound_shape_8cpp" ], + [ "CompoundShape.h", "_compound_shape_8h.html", "_compound_shape_8h" ], + [ "CompoundShapeVisitors.h", "_compound_shape_visitors_8h.html", "_compound_shape_visitors_8h" ], + [ "ConvexHullShape.cpp", "_convex_hull_shape_8cpp.html", "_convex_hull_shape_8cpp" ], + [ "ConvexHullShape.h", "_convex_hull_shape_8h.html", "_convex_hull_shape_8h" ], + [ "ConvexShape.cpp", "_convex_shape_8cpp.html", "_convex_shape_8cpp" ], + [ "ConvexShape.h", "_convex_shape_8h.html", "_convex_shape_8h" ], + [ "CylinderShape.cpp", "_cylinder_shape_8cpp.html", "_cylinder_shape_8cpp" ], + [ "CylinderShape.h", "_cylinder_shape_8h.html", "_cylinder_shape_8h" ], + [ "DecoratedShape.cpp", "_decorated_shape_8cpp.html", "_decorated_shape_8cpp" ], + [ "DecoratedShape.h", "_decorated_shape_8h.html", "_decorated_shape_8h" ], + [ "GetTrianglesContext.h", "_get_triangles_context_8h.html", "_get_triangles_context_8h" ], + [ "HeightFieldShape.cpp", "_height_field_shape_8cpp.html", "_height_field_shape_8cpp" ], + [ "HeightFieldShape.h", "_height_field_shape_8h.html", "_height_field_shape_8h" ], + [ "MeshShape.cpp", "_mesh_shape_8cpp.html", "_mesh_shape_8cpp" ], + [ "MeshShape.h", "_mesh_shape_8h.html", "_mesh_shape_8h" ], + [ "MutableCompoundShape.cpp", "_mutable_compound_shape_8cpp.html", "_mutable_compound_shape_8cpp" ], + [ "MutableCompoundShape.h", "_mutable_compound_shape_8h.html", "_mutable_compound_shape_8h" ], + [ "OffsetCenterOfMassShape.cpp", "_offset_center_of_mass_shape_8cpp.html", "_offset_center_of_mass_shape_8cpp" ], + [ "OffsetCenterOfMassShape.h", "_offset_center_of_mass_shape_8h.html", "_offset_center_of_mass_shape_8h" ], + [ "PlaneShape.cpp", "_plane_shape_8cpp.html", "_plane_shape_8cpp" ], + [ "PlaneShape.h", "_plane_shape_8h.html", "_plane_shape_8h" ], + [ "PolyhedronSubmergedVolumeCalculator.h", "_polyhedron_submerged_volume_calculator_8h.html", "_polyhedron_submerged_volume_calculator_8h" ], + [ "RotatedTranslatedShape.cpp", "_rotated_translated_shape_8cpp.html", "_rotated_translated_shape_8cpp" ], + [ "RotatedTranslatedShape.h", "_rotated_translated_shape_8h.html", "_rotated_translated_shape_8h" ], + [ "ScaledShape.cpp", "_scaled_shape_8cpp.html", "_scaled_shape_8cpp" ], + [ "ScaledShape.h", "_scaled_shape_8h.html", "_scaled_shape_8h" ], + [ "ScaleHelpers.h", "_scale_helpers_8h.html", "_scale_helpers_8h" ], + [ "Shape.cpp", "_shape_8cpp.html", "_shape_8cpp" ], + [ "Shape.h", "_shape_8h.html", "_shape_8h" ], + [ "SphereShape.cpp", "_sphere_shape_8cpp.html", "_sphere_shape_8cpp" ], + [ "SphereShape.h", "_sphere_shape_8h.html", "_sphere_shape_8h" ], + [ "StaticCompoundShape.cpp", "_static_compound_shape_8cpp.html", "_static_compound_shape_8cpp" ], + [ "StaticCompoundShape.h", "_static_compound_shape_8h.html", "_static_compound_shape_8h" ], + [ "SubShapeID.h", "_sub_shape_i_d_8h.html", "_sub_shape_i_d_8h" ], + [ "SubShapeIDPair.h", "_sub_shape_i_d_pair_8h.html", "_sub_shape_i_d_pair_8h" ], + [ "TaperedCapsuleShape.cpp", "_tapered_capsule_shape_8cpp.html", "_tapered_capsule_shape_8cpp" ], + [ "TaperedCapsuleShape.h", "_tapered_capsule_shape_8h.html", "_tapered_capsule_shape_8h" ], + [ "TaperedCylinderShape.cpp", "_tapered_cylinder_shape_8cpp.html", "_tapered_cylinder_shape_8cpp" ], + [ "TaperedCylinderShape.h", "_tapered_cylinder_shape_8h.html", "_tapered_cylinder_shape_8h" ], + [ "TriangleShape.cpp", "_triangle_shape_8cpp.html", "_triangle_shape_8cpp" ], + [ "TriangleShape.h", "_triangle_shape_8h.html", "_triangle_shape_8h" ] +]; \ No newline at end of file diff --git a/dir_581cdd6ad79c50f327179442908d53d5.html b/dir_581cdd6ad79c50f327179442908d53d5.html new file mode 100644 index 000000000..ffa1e53fd --- /dev/null +++ b/dir_581cdd6ad79c50f327179442908d53d5.html @@ -0,0 +1,166 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Vehicle Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Vehicle Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 MotorcycleController.cpp
 
 MotorcycleController.h
 
 TrackedVehicleController.cpp
 
 TrackedVehicleController.h
 
 VehicleAntiRollBar.cpp
 
 VehicleAntiRollBar.h
 
 VehicleCollisionTester.cpp
 
 VehicleCollisionTester.h
 
 VehicleConstraint.cpp
 
 VehicleConstraint.h
 
 VehicleController.cpp
 
 VehicleController.h
 
 VehicleDifferential.cpp
 
 VehicleDifferential.h
 
 VehicleEngine.cpp
 
 VehicleEngine.h
 
 VehicleTrack.cpp
 
 VehicleTrack.h
 
 VehicleTransmission.cpp
 
 VehicleTransmission.h
 
 Wheel.cpp
 
 Wheel.h
 
 WheeledVehicleController.cpp
 
 WheeledVehicleController.h
 
+
+
+ + + + diff --git a/dir_581cdd6ad79c50f327179442908d53d5.js b/dir_581cdd6ad79c50f327179442908d53d5.js new file mode 100644 index 000000000..2f8955553 --- /dev/null +++ b/dir_581cdd6ad79c50f327179442908d53d5.js @@ -0,0 +1,27 @@ +var dir_581cdd6ad79c50f327179442908d53d5 = +[ + [ "MotorcycleController.cpp", "_motorcycle_controller_8cpp.html", "_motorcycle_controller_8cpp" ], + [ "MotorcycleController.h", "_motorcycle_controller_8h.html", "_motorcycle_controller_8h" ], + [ "TrackedVehicleController.cpp", "_tracked_vehicle_controller_8cpp.html", "_tracked_vehicle_controller_8cpp" ], + [ "TrackedVehicleController.h", "_tracked_vehicle_controller_8h.html", "_tracked_vehicle_controller_8h" ], + [ "VehicleAntiRollBar.cpp", "_vehicle_anti_roll_bar_8cpp.html", "_vehicle_anti_roll_bar_8cpp" ], + [ "VehicleAntiRollBar.h", "_vehicle_anti_roll_bar_8h.html", "_vehicle_anti_roll_bar_8h" ], + [ "VehicleCollisionTester.cpp", "_vehicle_collision_tester_8cpp.html", null ], + [ "VehicleCollisionTester.h", "_vehicle_collision_tester_8h.html", "_vehicle_collision_tester_8h" ], + [ "VehicleConstraint.cpp", "_vehicle_constraint_8cpp.html", "_vehicle_constraint_8cpp" ], + [ "VehicleConstraint.h", "_vehicle_constraint_8h.html", "_vehicle_constraint_8h" ], + [ "VehicleController.cpp", "_vehicle_controller_8cpp.html", "_vehicle_controller_8cpp" ], + [ "VehicleController.h", "_vehicle_controller_8h.html", "_vehicle_controller_8h" ], + [ "VehicleDifferential.cpp", "_vehicle_differential_8cpp.html", "_vehicle_differential_8cpp" ], + [ "VehicleDifferential.h", "_vehicle_differential_8h.html", "_vehicle_differential_8h" ], + [ "VehicleEngine.cpp", "_vehicle_engine_8cpp.html", "_vehicle_engine_8cpp" ], + [ "VehicleEngine.h", "_vehicle_engine_8h.html", "_vehicle_engine_8h" ], + [ "VehicleTrack.cpp", "_vehicle_track_8cpp.html", "_vehicle_track_8cpp" ], + [ "VehicleTrack.h", "_vehicle_track_8h.html", "_vehicle_track_8h" ], + [ "VehicleTransmission.cpp", "_vehicle_transmission_8cpp.html", "_vehicle_transmission_8cpp" ], + [ "VehicleTransmission.h", "_vehicle_transmission_8h.html", "_vehicle_transmission_8h" ], + [ "Wheel.cpp", "_wheel_8cpp.html", "_wheel_8cpp" ], + [ "Wheel.h", "_wheel_8h.html", "_wheel_8h" ], + [ "WheeledVehicleController.cpp", "_wheeled_vehicle_controller_8cpp.html", "_wheeled_vehicle_controller_8cpp" ], + [ "WheeledVehicleController.h", "_wheeled_vehicle_controller_8h.html", "_wheeled_vehicle_controller_8h" ] +]; \ No newline at end of file diff --git a/dir_5baf679cf4943df8904dce5d41d4d3dc.html b/dir_5baf679cf4943df8904dce5d41d4d3dc.html new file mode 100644 index 000000000..23176d040 --- /dev/null +++ b/dir_5baf679cf4943df8904dce5d41d4d3dc.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Docs Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Docs Directory Reference
+
+
+ + + + +

+Files

 PhysicsSystemUpdate.svg
 
+
+
+ + + + diff --git a/dir_5baf679cf4943df8904dce5d41d4d3dc.js b/dir_5baf679cf4943df8904dce5d41d4d3dc.js new file mode 100644 index 000000000..0000e9d48 --- /dev/null +++ b/dir_5baf679cf4943df8904dce5d41d4d3dc.js @@ -0,0 +1,4 @@ +var dir_5baf679cf4943df8904dce5d41d4d3dc = +[ + [ "PhysicsSystemUpdate.svg", "_physics_system_update_8svg.html", null ] +]; \ No newline at end of file diff --git a/dir_5cb746f1bffa4c3a7d8e9b966e104904.html b/dir_5cb746f1bffa4c3a7d8e9b966e104904.html new file mode 100644 index 000000000..54a2973aa --- /dev/null +++ b/dir_5cb746f1bffa4c3a7d8e9b966e104904.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Jolt/AABBTree/TriangleCodec Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleCodec Directory Reference
+
+
+ + + + +

+Files

 TriangleCodecIndexed8BitPackSOA4Flags.h
 
+
+
+ + + + diff --git a/dir_5cb746f1bffa4c3a7d8e9b966e104904.js b/dir_5cb746f1bffa4c3a7d8e9b966e104904.js new file mode 100644 index 000000000..307a83b66 --- /dev/null +++ b/dir_5cb746f1bffa4c3a7d8e9b966e104904.js @@ -0,0 +1,4 @@ +var dir_5cb746f1bffa4c3a7d8e9b966e104904 = +[ + [ "TriangleCodecIndexed8BitPackSOA4Flags.h", "_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h.html", "_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h" ] +]; \ No newline at end of file diff --git a/dir_66a6b8c22316d1d251831be4b52072a7.html b/dir_66a6b8c22316d1d251831be4b52072a7.html new file mode 100644 index 000000000..46e88584d --- /dev/null +++ b/dir_66a6b8c22316d1d251831be4b52072a7.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Jolt/Physics/SoftBody Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SoftBody Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 SoftBodyContactListener.h
 
 SoftBodyCreationSettings.cpp
 
 SoftBodyCreationSettings.h
 
 SoftBodyManifold.h
 
 SoftBodyMotionProperties.cpp
 
 SoftBodyMotionProperties.h
 
 SoftBodyShape.cpp
 
 SoftBodyShape.h
 
 SoftBodySharedSettings.cpp
 
 SoftBodySharedSettings.h
 
 SoftBodyUpdateContext.h
 
 SoftBodyVertex.h
 
+
+
+ + + + diff --git a/dir_66a6b8c22316d1d251831be4b52072a7.js b/dir_66a6b8c22316d1d251831be4b52072a7.js new file mode 100644 index 000000000..b476f70de --- /dev/null +++ b/dir_66a6b8c22316d1d251831be4b52072a7.js @@ -0,0 +1,15 @@ +var dir_66a6b8c22316d1d251831be4b52072a7 = +[ + [ "SoftBodyContactListener.h", "_soft_body_contact_listener_8h.html", "_soft_body_contact_listener_8h" ], + [ "SoftBodyCreationSettings.cpp", "_soft_body_creation_settings_8cpp.html", "_soft_body_creation_settings_8cpp" ], + [ "SoftBodyCreationSettings.h", "_soft_body_creation_settings_8h.html", "_soft_body_creation_settings_8h" ], + [ "SoftBodyManifold.h", "_soft_body_manifold_8h.html", "_soft_body_manifold_8h" ], + [ "SoftBodyMotionProperties.cpp", "_soft_body_motion_properties_8cpp.html", null ], + [ "SoftBodyMotionProperties.h", "_soft_body_motion_properties_8h.html", "_soft_body_motion_properties_8h" ], + [ "SoftBodyShape.cpp", "_soft_body_shape_8cpp.html", "_soft_body_shape_8cpp" ], + [ "SoftBodyShape.h", "_soft_body_shape_8h.html", "_soft_body_shape_8h" ], + [ "SoftBodySharedSettings.cpp", "_soft_body_shared_settings_8cpp.html", "_soft_body_shared_settings_8cpp" ], + [ "SoftBodySharedSettings.h", "_soft_body_shared_settings_8h.html", "_soft_body_shared_settings_8h" ], + [ "SoftBodyUpdateContext.h", "_soft_body_update_context_8h.html", "_soft_body_update_context_8h" ], + [ "SoftBodyVertex.h", "_soft_body_vertex_8h.html", "_soft_body_vertex_8h" ] +]; \ No newline at end of file diff --git a/dir_8886b075816da9dbc7f3dfcb4dab155e.html b/dir_8886b075816da9dbc7f3dfcb4dab155e.html new file mode 100644 index 000000000..da29ee3ec --- /dev/null +++ b/dir_8886b075816da9dbc7f3dfcb4dab155e.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Character Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Character Directory Reference
+
+
+ + + + + + + + + + + + + + +

+Files

 Character.cpp
 
 Character.h
 
 CharacterBase.cpp
 
 CharacterBase.h
 
 CharacterVirtual.cpp
 
 CharacterVirtual.h
 
+
+
+ + + + diff --git a/dir_8886b075816da9dbc7f3dfcb4dab155e.js b/dir_8886b075816da9dbc7f3dfcb4dab155e.js new file mode 100644 index 000000000..c28e4f38e --- /dev/null +++ b/dir_8886b075816da9dbc7f3dfcb4dab155e.js @@ -0,0 +1,9 @@ +var dir_8886b075816da9dbc7f3dfcb4dab155e = +[ + [ "Character.cpp", "_character_8cpp.html", null ], + [ "Character.h", "_character_8h.html", "_character_8h" ], + [ "CharacterBase.cpp", "_character_base_8cpp.html", null ], + [ "CharacterBase.h", "_character_base_8h.html", "_character_base_8h" ], + [ "CharacterVirtual.cpp", "_character_virtual_8cpp.html", null ], + [ "CharacterVirtual.h", "_character_virtual_8h.html", "_character_virtual_8h" ] +]; \ No newline at end of file diff --git a/dir_8adb8d344daa5150b065529d50b305ef.html b/dir_8adb8d344daa5150b065529d50b305ef.html new file mode 100644 index 000000000..831caa7a4 --- /dev/null +++ b/dir_8adb8d344daa5150b065529d50b305ef.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Jolt/AABBTree/NodeCodec Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
NodeCodec Directory Reference
+
+
+ + + + +

+Files

 NodeCodecQuadTreeHalfFloat.h
 
+
+
+ + + + diff --git a/dir_8adb8d344daa5150b065529d50b305ef.js b/dir_8adb8d344daa5150b065529d50b305ef.js new file mode 100644 index 000000000..fed004072 --- /dev/null +++ b/dir_8adb8d344daa5150b065529d50b305ef.js @@ -0,0 +1,4 @@ +var dir_8adb8d344daa5150b065529d50b305ef = +[ + [ "NodeCodecQuadTreeHalfFloat.h", "_node_codec_quad_tree_half_float_8h.html", "_node_codec_quad_tree_half_float_8h" ] +]; \ No newline at end of file diff --git a/dir_92d3239ae0a90c89542d0db7eee38ab9.html b/dir_92d3239ae0a90c89542d0db7eee38ab9.html new file mode 100644 index 000000000..06c63ed99 --- /dev/null +++ b/dir_92d3239ae0a90c89542d0db7eee38ab9.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Jolt/AABBTree Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
AABBTree Directory Reference
+
+
+ + + + + + +

+Directories

 NodeCodec
 
 TriangleCodec
 
+ + + + + + + +

+Files

 AABBTreeBuilder.cpp
 
 AABBTreeBuilder.h
 
 AABBTreeToBuffer.h
 
+
+
+ + + + diff --git a/dir_92d3239ae0a90c89542d0db7eee38ab9.js b/dir_92d3239ae0a90c89542d0db7eee38ab9.js new file mode 100644 index 000000000..cb6186626 --- /dev/null +++ b/dir_92d3239ae0a90c89542d0db7eee38ab9.js @@ -0,0 +1,8 @@ +var dir_92d3239ae0a90c89542d0db7eee38ab9 = +[ + [ "NodeCodec", "dir_8adb8d344daa5150b065529d50b305ef.html", "dir_8adb8d344daa5150b065529d50b305ef" ], + [ "TriangleCodec", "dir_5cb746f1bffa4c3a7d8e9b966e104904.html", "dir_5cb746f1bffa4c3a7d8e9b966e104904" ], + [ "AABBTreeBuilder.cpp", "_a_a_b_b_tree_builder_8cpp.html", null ], + [ "AABBTreeBuilder.h", "_a_a_b_b_tree_builder_8h.html", "_a_a_b_b_tree_builder_8h" ], + [ "AABBTreeToBuffer.h", "_a_a_b_b_tree_to_buffer_8h.html", "_a_a_b_b_tree_to_buffer_8h" ] +]; \ No newline at end of file diff --git a/dir_a0f33af92addde396fc27b064c5eb8a9.html b/dir_a0f33af92addde396fc27b064c5eb8a9.html new file mode 100644 index 000000000..dcd4e8a61 --- /dev/null +++ b/dir_a0f33af92addde396fc27b064c5eb8a9.html @@ -0,0 +1,177 @@ + + + + + + + +Jolt Physics: Jolt/Physics Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Physics Directory Reference
+
+
+ + + + + + + + + + + + + + + + +

+Directories

 Body
 
 Character
 
 Collision
 
 Constraints
 
 Ragdoll
 
 SoftBody
 
 Vehicle
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 DeterminismLog.cpp
 
 DeterminismLog.h
 
 EActivation.h
 
 EPhysicsUpdateError.h
 
 IslandBuilder.cpp
 
 IslandBuilder.h
 
 LargeIslandSplitter.cpp
 
 LargeIslandSplitter.h
 
 PhysicsLock.cpp
 
 PhysicsLock.h
 
 PhysicsScene.cpp
 
 PhysicsScene.h
 
 PhysicsSettings.h
 
 PhysicsStepListener.h
 
 PhysicsSystem.cpp
 
 PhysicsSystem.h
 
 PhysicsUpdateContext.cpp
 
 PhysicsUpdateContext.h
 
 StateRecorder.h
 
 StateRecorderImpl.cpp
 
 StateRecorderImpl.h
 
+
+
+ + + + diff --git a/dir_a0f33af92addde396fc27b064c5eb8a9.js b/dir_a0f33af92addde396fc27b064c5eb8a9.js new file mode 100644 index 000000000..4f07c925d --- /dev/null +++ b/dir_a0f33af92addde396fc27b064c5eb8a9.js @@ -0,0 +1,31 @@ +var dir_a0f33af92addde396fc27b064c5eb8a9 = +[ + [ "Body", "dir_a240ac3d525f21f79994f1dc1d19664e.html", "dir_a240ac3d525f21f79994f1dc1d19664e" ], + [ "Character", "dir_8886b075816da9dbc7f3dfcb4dab155e.html", "dir_8886b075816da9dbc7f3dfcb4dab155e" ], + [ "Collision", "dir_1a1d05ab9ff27ca8d1ed94cd62670cdf.html", "dir_1a1d05ab9ff27ca8d1ed94cd62670cdf" ], + [ "Constraints", "dir_166975991df1b4ecc6dd5a6639d45e50.html", "dir_166975991df1b4ecc6dd5a6639d45e50" ], + [ "Ragdoll", "dir_2983ebfd4d3d6e750a69e0641ec24aca.html", "dir_2983ebfd4d3d6e750a69e0641ec24aca" ], + [ "SoftBody", "dir_66a6b8c22316d1d251831be4b52072a7.html", "dir_66a6b8c22316d1d251831be4b52072a7" ], + [ "Vehicle", "dir_581cdd6ad79c50f327179442908d53d5.html", "dir_581cdd6ad79c50f327179442908d53d5" ], + [ "DeterminismLog.cpp", "_determinism_log_8cpp.html", null ], + [ "DeterminismLog.h", "_determinism_log_8h.html", "_determinism_log_8h" ], + [ "EActivation.h", "_e_activation_8h.html", "_e_activation_8h" ], + [ "EPhysicsUpdateError.h", "_e_physics_update_error_8h.html", "_e_physics_update_error_8h" ], + [ "IslandBuilder.cpp", "_island_builder_8cpp.html", null ], + [ "IslandBuilder.h", "_island_builder_8h.html", "_island_builder_8h" ], + [ "LargeIslandSplitter.cpp", "_large_island_splitter_8cpp.html", null ], + [ "LargeIslandSplitter.h", "_large_island_splitter_8h.html", "_large_island_splitter_8h" ], + [ "PhysicsLock.cpp", "_physics_lock_8cpp.html", null ], + [ "PhysicsLock.h", "_physics_lock_8h.html", "_physics_lock_8h" ], + [ "PhysicsScene.cpp", "_physics_scene_8cpp.html", "_physics_scene_8cpp" ], + [ "PhysicsScene.h", "_physics_scene_8h.html", "_physics_scene_8h" ], + [ "PhysicsSettings.h", "_physics_settings_8h.html", "_physics_settings_8h" ], + [ "PhysicsStepListener.h", "_physics_step_listener_8h.html", "_physics_step_listener_8h" ], + [ "PhysicsSystem.cpp", "_physics_system_8cpp.html", "_physics_system_8cpp" ], + [ "PhysicsSystem.h", "_physics_system_8h.html", "_physics_system_8h" ], + [ "PhysicsUpdateContext.cpp", "_physics_update_context_8cpp.html", null ], + [ "PhysicsUpdateContext.h", "_physics_update_context_8h.html", "_physics_update_context_8h" ], + [ "StateRecorder.h", "_state_recorder_8h.html", "_state_recorder_8h" ], + [ "StateRecorderImpl.cpp", "_state_recorder_impl_8cpp.html", null ], + [ "StateRecorderImpl.h", "_state_recorder_impl_8h.html", "_state_recorder_impl_8h" ] +]; \ No newline at end of file diff --git a/dir_a240ac3d525f21f79994f1dc1d19664e.html b/dir_a240ac3d525f21f79994f1dc1d19664e.html new file mode 100644 index 000000000..9ca3f12a6 --- /dev/null +++ b/dir_a240ac3d525f21f79994f1dc1d19664e.html @@ -0,0 +1,172 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Body Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Body Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 AllowedDOFs.h
 
 Body.cpp
 
 Body.h
 
 Body.inl
 
 BodyAccess.cpp
 
 BodyAccess.h
 
 BodyActivationListener.h
 
 BodyCreationSettings.cpp
 
 BodyCreationSettings.h
 
 BodyFilter.h
 
 BodyID.h
 
 BodyInterface.cpp
 
 BodyInterface.h
 
 BodyLock.h
 
 BodyLockInterface.h
 
 BodyLockMulti.h
 
 BodyManager.cpp
 
 BodyManager.h
 
 BodyPair.h
 
 BodyType.h
 
 MassProperties.cpp
 
 MassProperties.h
 
 MotionProperties.cpp
 
 MotionProperties.h
 
 MotionProperties.inl
 
 MotionQuality.h
 
 MotionType.h
 
+
+
+ + + + diff --git a/dir_a240ac3d525f21f79994f1dc1d19664e.js b/dir_a240ac3d525f21f79994f1dc1d19664e.js new file mode 100644 index 000000000..1132e9797 --- /dev/null +++ b/dir_a240ac3d525f21f79994f1dc1d19664e.js @@ -0,0 +1,30 @@ +var dir_a240ac3d525f21f79994f1dc1d19664e = +[ + [ "AllowedDOFs.h", "_allowed_d_o_fs_8h.html", "_allowed_d_o_fs_8h" ], + [ "Body.cpp", "_body_8cpp.html", null ], + [ "Body.h", "_body_8h.html", "_body_8h" ], + [ "Body.inl", "_body_8inl.html", null ], + [ "BodyAccess.cpp", "_body_access_8cpp.html", null ], + [ "BodyAccess.h", "_body_access_8h.html", null ], + [ "BodyActivationListener.h", "_body_activation_listener_8h.html", "_body_activation_listener_8h" ], + [ "BodyCreationSettings.cpp", "_body_creation_settings_8cpp.html", "_body_creation_settings_8cpp" ], + [ "BodyCreationSettings.h", "_body_creation_settings_8h.html", "_body_creation_settings_8h" ], + [ "BodyFilter.h", "_body_filter_8h.html", "_body_filter_8h" ], + [ "BodyID.h", "_body_i_d_8h.html", "_body_i_d_8h" ], + [ "BodyInterface.cpp", "_body_interface_8cpp.html", null ], + [ "BodyInterface.h", "_body_interface_8h.html", "_body_interface_8h" ], + [ "BodyLock.h", "_body_lock_8h.html", "_body_lock_8h" ], + [ "BodyLockInterface.h", "_body_lock_interface_8h.html", "_body_lock_interface_8h" ], + [ "BodyLockMulti.h", "_body_lock_multi_8h.html", "_body_lock_multi_8h" ], + [ "BodyManager.cpp", "_body_manager_8cpp.html", "_body_manager_8cpp" ], + [ "BodyManager.h", "_body_manager_8h.html", "_body_manager_8h" ], + [ "BodyPair.h", "_body_pair_8h.html", "_body_pair_8h" ], + [ "BodyType.h", "_body_type_8h.html", "_body_type_8h" ], + [ "MassProperties.cpp", "_mass_properties_8cpp.html", "_mass_properties_8cpp" ], + [ "MassProperties.h", "_mass_properties_8h.html", "_mass_properties_8h" ], + [ "MotionProperties.cpp", "_motion_properties_8cpp.html", null ], + [ "MotionProperties.h", "_motion_properties_8h.html", "_motion_properties_8h" ], + [ "MotionProperties.inl", "_motion_properties_8inl.html", null ], + [ "MotionQuality.h", "_motion_quality_8h.html", "_motion_quality_8h" ], + [ "MotionType.h", "_motion_type_8h.html", "_motion_type_8h" ] +]; \ No newline at end of file diff --git a/dir_a34232518e8eb2f6b4ca842b3eb863dd.html b/dir_a34232518e8eb2f6b4ca842b3eb863dd.html new file mode 100644 index 000000000..188202510 --- /dev/null +++ b/dir_a34232518e8eb2f6b4ca842b3eb863dd.html @@ -0,0 +1,134 @@ + + + + + + + +Jolt Physics: Jolt/Skeleton Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Skeleton Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + +

+Files

 SkeletalAnimation.cpp
 
 SkeletalAnimation.h
 
 Skeleton.cpp
 
 Skeleton.h
 
 SkeletonMapper.cpp
 
 SkeletonMapper.h
 
 SkeletonPose.cpp
 
 SkeletonPose.h
 
+
+
+ + + + diff --git a/dir_a34232518e8eb2f6b4ca842b3eb863dd.js b/dir_a34232518e8eb2f6b4ca842b3eb863dd.js new file mode 100644 index 000000000..14a5d9115 --- /dev/null +++ b/dir_a34232518e8eb2f6b4ca842b3eb863dd.js @@ -0,0 +1,11 @@ +var dir_a34232518e8eb2f6b4ca842b3eb863dd = +[ + [ "SkeletalAnimation.cpp", "_skeletal_animation_8cpp.html", "_skeletal_animation_8cpp" ], + [ "SkeletalAnimation.h", "_skeletal_animation_8h.html", "_skeletal_animation_8h" ], + [ "Skeleton.cpp", "_skeleton_8cpp.html", "_skeleton_8cpp" ], + [ "Skeleton.h", "_skeleton_8h.html", "_skeleton_8h" ], + [ "SkeletonMapper.cpp", "_skeleton_mapper_8cpp.html", null ], + [ "SkeletonMapper.h", "_skeleton_mapper_8h.html", "_skeleton_mapper_8h" ], + [ "SkeletonPose.cpp", "_skeleton_pose_8cpp.html", null ], + [ "SkeletonPose.h", "_skeleton_pose_8h.html", "_skeleton_pose_8h" ] +]; \ No newline at end of file diff --git a/dir_aa37033c5611f3a5cff668cf59181100.html b/dir_aa37033c5611f3a5cff668cf59181100.html new file mode 100644 index 000000000..918cd6eef --- /dev/null +++ b/dir_aa37033c5611f3a5cff668cf59181100.html @@ -0,0 +1,188 @@ + + + + + + + +Jolt Physics: Jolt/Math Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Math Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 DMat44.h
 
 DMat44.inl
 
 Double3.h
 
 DVec3.h
 
 DVec3.inl
 
 DynMatrix.h
 
 EigenValueSymmetric.h
 
 FindRoot.h
 
 Float2.h
 
 Float3.h
 
 Float4.h
 
 GaussianElimination.h
 
 HalfFloat.h
 
 Mat44.h
 
 Mat44.inl
 
 Math.h
 
 MathTypes.h
 
 Matrix.h
 
 Quat.h
 
 Quat.inl
 
 Real.h
 
 Swizzle.h
 
 Trigonometry.h
 
 UVec4.h
 
 UVec4.inl
 
 UVec8.h
 
 UVec8.inl
 
 Vec3.cpp
 
 Vec3.h
 
 Vec3.inl
 
 Vec4.h
 
 Vec4.inl
 
 Vec8.h
 
 Vec8.inl
 
 Vector.h
 
+
+
+ + + + diff --git a/dir_aa37033c5611f3a5cff668cf59181100.js b/dir_aa37033c5611f3a5cff668cf59181100.js new file mode 100644 index 000000000..a7ab078d8 --- /dev/null +++ b/dir_aa37033c5611f3a5cff668cf59181100.js @@ -0,0 +1,38 @@ +var dir_aa37033c5611f3a5cff668cf59181100 = +[ + [ "DMat44.h", "_d_mat44_8h.html", "_d_mat44_8h" ], + [ "DMat44.inl", "_d_mat44_8inl.html", null ], + [ "Double3.h", "_double3_8h.html", "_double3_8h" ], + [ "DVec3.h", "_d_vec3_8h.html", "_d_vec3_8h" ], + [ "DVec3.inl", "_d_vec3_8inl.html", "_d_vec3_8inl" ], + [ "DynMatrix.h", "_dyn_matrix_8h.html", "_dyn_matrix_8h" ], + [ "EigenValueSymmetric.h", "_eigen_value_symmetric_8h.html", "_eigen_value_symmetric_8h" ], + [ "FindRoot.h", "_find_root_8h.html", "_find_root_8h" ], + [ "Float2.h", "_float2_8h.html", "_float2_8h" ], + [ "Float3.h", "_float3_8h.html", "_float3_8h" ], + [ "Float4.h", "_float4_8h.html", "_float4_8h" ], + [ "GaussianElimination.h", "_gaussian_elimination_8h.html", "_gaussian_elimination_8h" ], + [ "HalfFloat.h", "_half_float_8h.html", "_half_float_8h" ], + [ "Mat44.h", "_mat44_8h.html", "_mat44_8h" ], + [ "Mat44.inl", "_mat44_8inl.html", "_mat44_8inl" ], + [ "Math.h", "_math_8h.html", "_math_8h" ], + [ "MathTypes.h", "_math_types_8h.html", "_math_types_8h" ], + [ "Matrix.h", "_matrix_8h.html", "_matrix_8h" ], + [ "Quat.h", "_quat_8h.html", "_quat_8h" ], + [ "Quat.inl", "_quat_8inl.html", null ], + [ "Real.h", "_real_8h.html", "_real_8h" ], + [ "Swizzle.h", "_swizzle_8h.html", null ], + [ "Trigonometry.h", "_trigonometry_8h.html", "_trigonometry_8h" ], + [ "UVec4.h", "_u_vec4_8h.html", "_u_vec4_8h" ], + [ "UVec4.inl", "_u_vec4_8inl.html", null ], + [ "UVec8.h", "_u_vec8_8h.html", "_u_vec8_8h" ], + [ "UVec8.inl", "_u_vec8_8inl.html", null ], + [ "Vec3.cpp", "_vec3_8cpp.html", null ], + [ "Vec3.h", "_vec3_8h.html", "_vec3_8h" ], + [ "Vec3.inl", "_vec3_8inl.html", "_vec3_8inl" ], + [ "Vec4.h", "_vec4_8h.html", "_vec4_8h" ], + [ "Vec4.inl", "_vec4_8inl.html", "_vec4_8inl" ], + [ "Vec8.h", "_vec8_8h.html", "_vec8_8h" ], + [ "Vec8.inl", "_vec8_8inl.html", null ], + [ "Vector.h", "_vector_8h.html", "_vector_8h" ] +]; \ No newline at end of file diff --git a/dir_cda60321bbaaff8ea6d2d4f4167dc560.html b/dir_cda60321bbaaff8ea6d2d4f4167dc560.html new file mode 100644 index 000000000..5a07f71fb --- /dev/null +++ b/dir_cda60321bbaaff8ea6d2d4f4167dc560.html @@ -0,0 +1,164 @@ + + + + + + + +Jolt Physics: Jolt/ObjectStream Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ObjectStream Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 GetPrimitiveTypeOfType.h
 
 ObjectStream.cpp
 
 ObjectStream.h
 
 ObjectStreamBinaryIn.cpp
 
 ObjectStreamBinaryIn.h
 
 ObjectStreamBinaryOut.cpp
 
 ObjectStreamBinaryOut.h
 
 ObjectStreamIn.cpp
 
 ObjectStreamIn.h
 
 ObjectStreamOut.cpp
 
 ObjectStreamOut.h
 
 ObjectStreamTextIn.cpp
 
 ObjectStreamTextIn.h
 
 ObjectStreamTextOut.cpp
 
 ObjectStreamTextOut.h
 
 ObjectStreamTypes.h
 
 SerializableAttribute.h
 
 SerializableAttributeEnum.h
 
 SerializableAttributeTyped.h
 
 SerializableObject.cpp
 
 SerializableObject.h
 
 TypeDeclarations.cpp
 
 TypeDeclarations.h
 
+
+
+ + + + diff --git a/dir_cda60321bbaaff8ea6d2d4f4167dc560.js b/dir_cda60321bbaaff8ea6d2d4f4167dc560.js new file mode 100644 index 000000000..768082bbc --- /dev/null +++ b/dir_cda60321bbaaff8ea6d2d4f4167dc560.js @@ -0,0 +1,26 @@ +var dir_cda60321bbaaff8ea6d2d4f4167dc560 = +[ + [ "GetPrimitiveTypeOfType.h", "_get_primitive_type_of_type_8h.html", "_get_primitive_type_of_type_8h" ], + [ "ObjectStream.cpp", "_object_stream_8cpp.html", "_object_stream_8cpp" ], + [ "ObjectStream.h", "_object_stream_8h.html", "_object_stream_8h" ], + [ "ObjectStreamBinaryIn.cpp", "_object_stream_binary_in_8cpp.html", null ], + [ "ObjectStreamBinaryIn.h", "_object_stream_binary_in_8h.html", "_object_stream_binary_in_8h" ], + [ "ObjectStreamBinaryOut.cpp", "_object_stream_binary_out_8cpp.html", null ], + [ "ObjectStreamBinaryOut.h", "_object_stream_binary_out_8h.html", "_object_stream_binary_out_8h" ], + [ "ObjectStreamIn.cpp", "_object_stream_in_8cpp.html", null ], + [ "ObjectStreamIn.h", "_object_stream_in_8h.html", "_object_stream_in_8h" ], + [ "ObjectStreamOut.cpp", "_object_stream_out_8cpp.html", "_object_stream_out_8cpp" ], + [ "ObjectStreamOut.h", "_object_stream_out_8h.html", "_object_stream_out_8h" ], + [ "ObjectStreamTextIn.cpp", "_object_stream_text_in_8cpp.html", null ], + [ "ObjectStreamTextIn.h", "_object_stream_text_in_8h.html", "_object_stream_text_in_8h" ], + [ "ObjectStreamTextOut.cpp", "_object_stream_text_out_8cpp.html", null ], + [ "ObjectStreamTextOut.h", "_object_stream_text_out_8h.html", "_object_stream_text_out_8h" ], + [ "ObjectStreamTypes.h", "_object_stream_types_8h.html", null ], + [ "SerializableAttribute.h", "_serializable_attribute_8h.html", "_serializable_attribute_8h" ], + [ "SerializableAttributeEnum.h", "_serializable_attribute_enum_8h.html", "_serializable_attribute_enum_8h" ], + [ "SerializableAttributeTyped.h", "_serializable_attribute_typed_8h.html", "_serializable_attribute_typed_8h" ], + [ "SerializableObject.cpp", "_serializable_object_8cpp.html", "_serializable_object_8cpp" ], + [ "SerializableObject.h", "_serializable_object_8h.html", "_serializable_object_8h" ], + [ "TypeDeclarations.cpp", "_type_declarations_8cpp.html", "_type_declarations_8cpp" ], + [ "TypeDeclarations.h", "_type_declarations_8h.html", "_type_declarations_8h" ] +]; \ No newline at end of file diff --git a/dir_d99289a5d3c46cf26f14ff6c90658d9f.html b/dir_d99289a5d3c46cf26f14ff6c90658d9f.html new file mode 100644 index 000000000..25d0f6675 --- /dev/null +++ b/dir_d99289a5d3c46cf26f14ff6c90658d9f.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: Jolt Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Jolt Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Directories

 AABBTree
 
 Core
 
 Geometry
 
 Math
 
 ObjectStream
 
 Physics
 
 Renderer
 
 Skeleton
 
 TriangleGrouper
 
 TriangleSplitter
 
+ + + + + + + + + +

+Files

 ConfigurationString.h
 
 Jolt.h
 
 RegisterTypes.cpp
 
 RegisterTypes.h
 
+
+
+ + + + diff --git a/dir_d99289a5d3c46cf26f14ff6c90658d9f.js b/dir_d99289a5d3c46cf26f14ff6c90658d9f.js new file mode 100644 index 000000000..58051a433 --- /dev/null +++ b/dir_d99289a5d3c46cf26f14ff6c90658d9f.js @@ -0,0 +1,17 @@ +var dir_d99289a5d3c46cf26f14ff6c90658d9f = +[ + [ "AABBTree", "dir_92d3239ae0a90c89542d0db7eee38ab9.html", "dir_92d3239ae0a90c89542d0db7eee38ab9" ], + [ "Core", "dir_1b21a6f5692b6d84bf3b848a79181d46.html", "dir_1b21a6f5692b6d84bf3b848a79181d46" ], + [ "Geometry", "dir_2d88bf03bf4a7a62918727c0f2ee34eb.html", "dir_2d88bf03bf4a7a62918727c0f2ee34eb" ], + [ "Math", "dir_aa37033c5611f3a5cff668cf59181100.html", "dir_aa37033c5611f3a5cff668cf59181100" ], + [ "ObjectStream", "dir_cda60321bbaaff8ea6d2d4f4167dc560.html", "dir_cda60321bbaaff8ea6d2d4f4167dc560" ], + [ "Physics", "dir_a0f33af92addde396fc27b064c5eb8a9.html", "dir_a0f33af92addde396fc27b064c5eb8a9" ], + [ "Renderer", "dir_08a9edf434844c45d3c1f760a0f11af5.html", "dir_08a9edf434844c45d3c1f760a0f11af5" ], + [ "Skeleton", "dir_a34232518e8eb2f6b4ca842b3eb863dd.html", "dir_a34232518e8eb2f6b4ca842b3eb863dd" ], + [ "TriangleGrouper", "dir_3b340e4d52b4e8b5dc2c6e035ba952f1.html", "dir_3b340e4d52b4e8b5dc2c6e035ba952f1" ], + [ "TriangleSplitter", "dir_dcf9b35cd7be2ace77df0178104cd92b.html", "dir_dcf9b35cd7be2ace77df0178104cd92b" ], + [ "ConfigurationString.h", "_configuration_string_8h.html", "_configuration_string_8h" ], + [ "Jolt.h", "_jolt_8h.html", null ], + [ "RegisterTypes.cpp", "_register_types_8cpp.html", "_register_types_8cpp" ], + [ "RegisterTypes.h", "_register_types_8h.html", "_register_types_8h" ] +]; \ No newline at end of file diff --git a/dir_dcf9b35cd7be2ace77df0178104cd92b.html b/dir_dcf9b35cd7be2ace77df0178104cd92b.html new file mode 100644 index 000000000..c6c1c2a9a --- /dev/null +++ b/dir_dcf9b35cd7be2ace77df0178104cd92b.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Jolt/TriangleSplitter Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
TriangleSplitter Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 TriangleSplitter.cpp
 
 TriangleSplitter.h
 
 TriangleSplitterBinning.cpp
 
 TriangleSplitterBinning.h
 
 TriangleSplitterFixedLeafSize.cpp
 
 TriangleSplitterFixedLeafSize.h
 
 TriangleSplitterLongestAxis.cpp
 
 TriangleSplitterLongestAxis.h
 
 TriangleSplitterMean.cpp
 
 TriangleSplitterMean.h
 
 TriangleSplitterMorton.cpp
 
 TriangleSplitterMorton.h
 
+
+
+ + + + diff --git a/dir_dcf9b35cd7be2ace77df0178104cd92b.js b/dir_dcf9b35cd7be2ace77df0178104cd92b.js new file mode 100644 index 000000000..901c52db0 --- /dev/null +++ b/dir_dcf9b35cd7be2ace77df0178104cd92b.js @@ -0,0 +1,15 @@ +var dir_dcf9b35cd7be2ace77df0178104cd92b = +[ + [ "TriangleSplitter.cpp", "_triangle_splitter_8cpp.html", null ], + [ "TriangleSplitter.h", "_triangle_splitter_8h.html", "_triangle_splitter_8h" ], + [ "TriangleSplitterBinning.cpp", "_triangle_splitter_binning_8cpp.html", null ], + [ "TriangleSplitterBinning.h", "_triangle_splitter_binning_8h.html", "_triangle_splitter_binning_8h" ], + [ "TriangleSplitterFixedLeafSize.cpp", "_triangle_splitter_fixed_leaf_size_8cpp.html", null ], + [ "TriangleSplitterFixedLeafSize.h", "_triangle_splitter_fixed_leaf_size_8h.html", "_triangle_splitter_fixed_leaf_size_8h" ], + [ "TriangleSplitterLongestAxis.cpp", "_triangle_splitter_longest_axis_8cpp.html", null ], + [ "TriangleSplitterLongestAxis.h", "_triangle_splitter_longest_axis_8h.html", "_triangle_splitter_longest_axis_8h" ], + [ "TriangleSplitterMean.cpp", "_triangle_splitter_mean_8cpp.html", null ], + [ "TriangleSplitterMean.h", "_triangle_splitter_mean_8h.html", "_triangle_splitter_mean_8h" ], + [ "TriangleSplitterMorton.cpp", "_triangle_splitter_morton_8cpp.html", null ], + [ "TriangleSplitterMorton.h", "_triangle_splitter_morton_8h.html", "_triangle_splitter_morton_8h" ] +]; \ No newline at end of file diff --git a/dir_e6c5fb27ccbee0305acd3bb7c27d0472.html b/dir_e6c5fb27ccbee0305acd3bb7c27d0472.html new file mode 100644 index 000000000..c71f7be06 --- /dev/null +++ b/dir_e6c5fb27ccbee0305acd3bb7c27d0472.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Jolt/Physics/Constraints/ConstraintPart Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
ConstraintPart Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 AngleConstraintPart.h
 
 AxisConstraintPart.h
 
 DualAxisConstraintPart.h
 
 GearConstraintPart.h
 
 HingeRotationConstraintPart.h
 
 IndependentAxisConstraintPart.h
 
 PointConstraintPart.h
 
 RackAndPinionConstraintPart.h
 
 RotationEulerConstraintPart.h
 
 RotationQuatConstraintPart.h
 
 SpringPart.h
 
 SwingTwistConstraintPart.h
 
+
+
+ + + + diff --git a/dir_e6c5fb27ccbee0305acd3bb7c27d0472.js b/dir_e6c5fb27ccbee0305acd3bb7c27d0472.js new file mode 100644 index 000000000..3bcd938c6 --- /dev/null +++ b/dir_e6c5fb27ccbee0305acd3bb7c27d0472.js @@ -0,0 +1,15 @@ +var dir_e6c5fb27ccbee0305acd3bb7c27d0472 = +[ + [ "AngleConstraintPart.h", "_angle_constraint_part_8h.html", "_angle_constraint_part_8h" ], + [ "AxisConstraintPart.h", "_axis_constraint_part_8h.html", "_axis_constraint_part_8h" ], + [ "DualAxisConstraintPart.h", "_dual_axis_constraint_part_8h.html", "_dual_axis_constraint_part_8h" ], + [ "GearConstraintPart.h", "_gear_constraint_part_8h.html", "_gear_constraint_part_8h" ], + [ "HingeRotationConstraintPart.h", "_hinge_rotation_constraint_part_8h.html", "_hinge_rotation_constraint_part_8h" ], + [ "IndependentAxisConstraintPart.h", "_independent_axis_constraint_part_8h.html", "_independent_axis_constraint_part_8h" ], + [ "PointConstraintPart.h", "_point_constraint_part_8h.html", "_point_constraint_part_8h" ], + [ "RackAndPinionConstraintPart.h", "_rack_and_pinion_constraint_part_8h.html", "_rack_and_pinion_constraint_part_8h" ], + [ "RotationEulerConstraintPart.h", "_rotation_euler_constraint_part_8h.html", "_rotation_euler_constraint_part_8h" ], + [ "RotationQuatConstraintPart.h", "_rotation_quat_constraint_part_8h.html", "_rotation_quat_constraint_part_8h" ], + [ "SpringPart.h", "_spring_part_8h.html", "_spring_part_8h" ], + [ "SwingTwistConstraintPart.h", "_swing_twist_constraint_part_8h.html", "_swing_twist_constraint_part_8h" ] +]; \ No newline at end of file diff --git a/doc.svg b/doc.svg new file mode 100644 index 000000000..0b928a531 --- /dev/null +++ b/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docd.svg b/docd.svg new file mode 100644 index 000000000..ac18b2755 --- /dev/null +++ b/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 000000000..009a9b554 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 000000000..79a763540 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 000000000..b73c82889 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/files.html b/files.html new file mode 100644 index 000000000..b75c3af3f --- /dev/null +++ b/files.html @@ -0,0 +1,588 @@ + + + + + + + +Jolt Physics: File List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Build
  Docs
 PhysicsSystemUpdate.svg
  Jolt
  AABBTree
  Core
  Geometry
  Math
  ObjectStream
  Physics
  Renderer
  Skeleton
  TriangleGrouper
  TriangleSplitter
 ConfigurationString.h
 Jolt.h
 RegisterTypes.cpp
 RegisterTypes.h
+
+
+
+ + + + diff --git a/files_dup.js b/files_dup.js new file mode 100644 index 000000000..b2fb95c55 --- /dev/null +++ b/files_dup.js @@ -0,0 +1,6 @@ +var files_dup = +[ + [ "Build", "dir_4335ce4a64d0d4f9f4c8f0a782dfdfeb.html", null ], + [ "Docs", "dir_5baf679cf4943df8904dce5d41d4d3dc.html", "dir_5baf679cf4943df8904dce5d41d4d3dc" ], + [ "Jolt", "dir_d99289a5d3c46cf26f14ff6c90658d9f.html", "dir_d99289a5d3c46cf26f14ff6c90658d9f" ] +]; \ No newline at end of file diff --git a/folderclosed.svg b/folderclosed.svg new file mode 100644 index 000000000..b04bed2e7 --- /dev/null +++ b/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderclosedd.svg b/folderclosedd.svg new file mode 100644 index 000000000..52f0166a2 --- /dev/null +++ b/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/folderopen.svg b/folderopen.svg new file mode 100644 index 000000000..f6896dd25 --- /dev/null +++ b/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/folderopend.svg b/folderopend.svg new file mode 100644 index 000000000..2d1f06e7b --- /dev/null +++ b/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/functions.html b/functions.html new file mode 100644 index 000000000..a95994001 --- /dev/null +++ b/functions.html @@ -0,0 +1,199 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- a -

+
+
+ + + + diff --git a/functions_b.html b/functions_b.html new file mode 100644 index 000000000..2c396e71e --- /dev/null +++ b/functions_b.html @@ -0,0 +1,143 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- b -

+
+
+ + + + diff --git a/functions_c.html b/functions_c.html new file mode 100644 index 000000000..3cd96ee89 --- /dev/null +++ b/functions_c.html @@ -0,0 +1,322 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- c -

+
+
+ + + + diff --git a/functions_d.html b/functions_d.html new file mode 100644 index 000000000..72452aba5 --- /dev/null +++ b/functions_d.html @@ -0,0 +1,200 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- d -

+
+
+ + + + diff --git a/functions_dup.js b/functions_dup.js new file mode 100644 index 000000000..dce297a95 --- /dev/null +++ b/functions_dup.js @@ -0,0 +1,30 @@ +var functions_dup = +[ + [ "a", "functions.html", null ], + [ "b", "functions_b.html", null ], + [ "c", "functions_c.html", null ], + [ "d", "functions_d.html", null ], + [ "e", "functions_e.html", null ], + [ "f", "functions_f.html", null ], + [ "g", "functions_g.html", null ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "j", "functions_j.html", null ], + [ "k", "functions_k.html", null ], + [ "l", "functions_l.html", null ], + [ "m", "functions_m.html", null ], + [ "n", "functions_n.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "q", "functions_q.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "t", "functions_t.html", null ], + [ "u", "functions_u.html", null ], + [ "v", "functions_v.html", null ], + [ "w", "functions_w.html", null ], + [ "x", "functions_x.html", null ], + [ "y", "functions_y.html", null ], + [ "z", "functions_z.html", null ], + [ "~", "functions_~.html", null ] +]; \ No newline at end of file diff --git a/functions_e.html b/functions_e.html new file mode 100644 index 000000000..01ad95250 --- /dev/null +++ b/functions_e.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- e -

+
+
+ + + + diff --git a/functions_enum.html b/functions_enum.html new file mode 100644 index 000000000..abe5815a7 --- /dev/null +++ b/functions_enum.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Class Members - Enumerations + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all enums with links to the classes they belong to:
+
+
+ + + + diff --git a/functions_eval.html b/functions_eval.html new file mode 100644 index 000000000..bbb3a0e66 --- /dev/null +++ b/functions_eval.html @@ -0,0 +1,166 @@ + + + + + + + +Jolt Physics: Class Members - Enumerator + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all enum values with links to the classes they belong to:
+ +

- c -

+ + +

- n -

+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+
+
+ + + + diff --git a/functions_f.html b/functions_f.html new file mode 100644 index 000000000..69fad52cc --- /dev/null +++ b/functions_f.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- f -

+
+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 000000000..376a27f50 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,192 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- a -

+
+
+ + + + diff --git a/functions_func.js b/functions_func.js new file mode 100644 index 000000000..7c95a6247 --- /dev/null +++ b/functions_func.js @@ -0,0 +1,26 @@ +var functions_func = +[ + [ "a", "functions_func.html", null ], + [ "b", "functions_func_b.html", null ], + [ "c", "functions_func_c.html", null ], + [ "d", "functions_func_d.html", null ], + [ "e", "functions_func_e.html", null ], + [ "f", "functions_func_f.html", null ], + [ "g", "functions_func_g.html", null ], + [ "h", "functions_func_h.html", null ], + [ "i", "functions_func_i.html", null ], + [ "j", "functions_func_j.html", null ], + [ "l", "functions_func_l.html", null ], + [ "m", "functions_func_m.html", null ], + [ "n", "functions_func_n.html", null ], + [ "o", "functions_func_o.html", null ], + [ "p", "functions_func_p.html", null ], + [ "q", "functions_func_q.html", null ], + [ "r", "functions_func_r.html", null ], + [ "s", "functions_func_s.html", null ], + [ "t", "functions_func_t.html", null ], + [ "u", "functions_func_u.html", null ], + [ "v", "functions_func_v.html", null ], + [ "w", "functions_func_w.html", null ], + [ "~", "functions_func_~.html", null ] +]; \ No newline at end of file diff --git a/functions_func_b.html b/functions_func_b.html new file mode 100644 index 000000000..c82e76a2b --- /dev/null +++ b/functions_func_b.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- b -

+
+
+ + + + diff --git a/functions_func_c.html b/functions_func_c.html new file mode 100644 index 000000000..238b16eaa --- /dev/null +++ b/functions_func_c.html @@ -0,0 +1,256 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- c -

+
+
+ + + + diff --git a/functions_func_d.html b/functions_func_d.html new file mode 100644 index 000000000..77d0ced77 --- /dev/null +++ b/functions_func_d.html @@ -0,0 +1,196 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- d -

+
+
+ + + + diff --git a/functions_func_e.html b/functions_func_e.html new file mode 100644 index 000000000..190fcc70c --- /dev/null +++ b/functions_func_e.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- e -

+
+
+ + + + diff --git a/functions_func_f.html b/functions_func_f.html new file mode 100644 index 000000000..c16dad6a3 --- /dev/null +++ b/functions_func_f.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- f -

+
+
+ + + + diff --git a/functions_func_g.html b/functions_func_g.html new file mode 100644 index 000000000..b6a15f7c6 --- /dev/null +++ b/functions_func_g.html @@ -0,0 +1,619 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- g -

+
+
+ + + + diff --git a/functions_func_h.html b/functions_func_h.html new file mode 100644 index 000000000..b6aa8c856 --- /dev/null +++ b/functions_func_h.html @@ -0,0 +1,135 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- h -

+
+
+ + + + diff --git a/functions_func_i.html b/functions_func_i.html new file mode 100644 index 000000000..65730446b --- /dev/null +++ b/functions_func_i.html @@ -0,0 +1,186 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- i -

+
+
+ + + + diff --git a/functions_func_j.html b/functions_func_j.html new file mode 100644 index 000000000..8b52888e1 --- /dev/null +++ b/functions_func_j.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- j -

+
+
+ + + + diff --git a/functions_func_l.html b/functions_func_l.html new file mode 100644 index 000000000..4ea178307 --- /dev/null +++ b/functions_func_l.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- l -

+
+
+ + + + diff --git a/functions_func_m.html b/functions_func_m.html new file mode 100644 index 000000000..af3c09827 --- /dev/null +++ b/functions_func_m.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- m -

+
+
+ + + + diff --git a/functions_func_n.html b/functions_func_n.html new file mode 100644 index 000000000..c721e4d82 --- /dev/null +++ b/functions_func_n.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- n -

+
+
+ + + + diff --git a/functions_func_o.html b/functions_func_o.html new file mode 100644 index 000000000..8c008774b --- /dev/null +++ b/functions_func_o.html @@ -0,0 +1,173 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- o -

+
+
+ + + + diff --git a/functions_func_p.html b/functions_func_p.html new file mode 100644 index 000000000..bfb218759 --- /dev/null +++ b/functions_func_p.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- p -

+
+
+ + + + diff --git a/functions_func_q.html b/functions_func_q.html new file mode 100644 index 000000000..0aaac7d1e --- /dev/null +++ b/functions_func_q.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- q -

+
+
+ + + + diff --git a/functions_func_r.html b/functions_func_r.html new file mode 100644 index 000000000..26d150667 --- /dev/null +++ b/functions_func_r.html @@ -0,0 +1,189 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- r -

+
+
+ + + + diff --git a/functions_func_s.html b/functions_func_s.html new file mode 100644 index 000000000..60d5e1d5a --- /dev/null +++ b/functions_func_s.html @@ -0,0 +1,538 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- s -

+
+
+ + + + diff --git a/functions_func_t.html b/functions_func_t.html new file mode 100644 index 000000000..a20ba2613 --- /dev/null +++ b/functions_func_t.html @@ -0,0 +1,172 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- t -

+
+
+ + + + diff --git a/functions_func_u.html b/functions_func_u.html new file mode 100644 index 000000000..8754db6be --- /dev/null +++ b/functions_func_u.html @@ -0,0 +1,137 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- u -

+
+
+ + + + diff --git a/functions_func_v.html b/functions_func_v.html new file mode 100644 index 000000000..57b05ee7f --- /dev/null +++ b/functions_func_v.html @@ -0,0 +1,137 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- v -

+
+
+ + + + diff --git a/functions_func_w.html b/functions_func_w.html new file mode 100644 index 000000000..a1f14d1ee --- /dev/null +++ b/functions_func_w.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- w -

+
+
+ + + + diff --git a/functions_func_~.html b/functions_func_~.html new file mode 100644 index 000000000..cdb2f96d7 --- /dev/null +++ b/functions_func_~.html @@ -0,0 +1,193 @@ + + + + + + + +Jolt Physics: Class Members - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- ~ -

+
+
+ + + + diff --git a/functions_g.html b/functions_g.html new file mode 100644 index 000000000..dc678e112 --- /dev/null +++ b/functions_g.html @@ -0,0 +1,625 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- g -

+
+
+ + + + diff --git a/functions_h.html b/functions_h.html new file mode 100644 index 000000000..656614b7c --- /dev/null +++ b/functions_h.html @@ -0,0 +1,137 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- h -

+
+
+ + + + diff --git a/functions_i.html b/functions_i.html new file mode 100644 index 000000000..97fbf7e0c --- /dev/null +++ b/functions_i.html @@ -0,0 +1,196 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- i -

+
+
+ + + + diff --git a/functions_j.html b/functions_j.html new file mode 100644 index 000000000..eb33b5cff --- /dev/null +++ b/functions_j.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- j -

+
+
+ + + + diff --git a/functions_k.html b/functions_k.html new file mode 100644 index 000000000..f781a1516 --- /dev/null +++ b/functions_k.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- k -

+
+
+ + + + diff --git a/functions_l.html b/functions_l.html new file mode 100644 index 000000000..9feaf6d55 --- /dev/null +++ b/functions_l.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- l -

+
+
+ + + + diff --git a/functions_m.html b/functions_m.html new file mode 100644 index 000000000..6180ce686 --- /dev/null +++ b/functions_m.html @@ -0,0 +1,883 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- m -

+
+
+ + + + diff --git a/functions_n.html b/functions_n.html new file mode 100644 index 000000000..0764437c5 --- /dev/null +++ b/functions_n.html @@ -0,0 +1,131 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + diff --git a/functions_o.html b/functions_o.html new file mode 100644 index 000000000..18df045ea --- /dev/null +++ b/functions_o.html @@ -0,0 +1,184 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- o -

+
+
+ + + + diff --git a/functions_p.html b/functions_p.html new file mode 100644 index 000000000..787eb8f32 --- /dev/null +++ b/functions_p.html @@ -0,0 +1,177 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- p -

+
+
+ + + + diff --git a/functions_q.html b/functions_q.html new file mode 100644 index 000000000..7fb8219c5 --- /dev/null +++ b/functions_q.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- q -

+
+
+ + + + diff --git a/functions_r.html b/functions_r.html new file mode 100644 index 000000000..ae090b1c3 --- /dev/null +++ b/functions_r.html @@ -0,0 +1,197 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- r -

+
+
+ + + + diff --git a/functions_rela.html b/functions_rela.html new file mode 100644 index 000000000..6eca77cef --- /dev/null +++ b/functions_rela.html @@ -0,0 +1,163 @@ + + + + + + + +Jolt Physics: Class Members - Related Symbols + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all related symbols with links to the classes they belong to:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- j -

+ + +

- l -

+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- v -

+
+
+ + + + diff --git a/functions_s.html b/functions_s.html new file mode 100644 index 000000000..8f7a05d23 --- /dev/null +++ b/functions_s.html @@ -0,0 +1,597 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- s -

+
+
+ + + + diff --git a/functions_t.html b/functions_t.html new file mode 100644 index 000000000..b3d20cb45 --- /dev/null +++ b/functions_t.html @@ -0,0 +1,186 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- t -

+
+
+ + + + diff --git a/functions_type.html b/functions_type.html new file mode 100644 index 000000000..a47956bac --- /dev/null +++ b/functions_type.html @@ -0,0 +1,306 @@ + + + + + + + +Jolt Physics: Class Members - Typedefs + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all typedefs with links to the classes they belong to:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- j -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+
+
+ + + + diff --git a/functions_u.html b/functions_u.html new file mode 100644 index 000000000..4871633e9 --- /dev/null +++ b/functions_u.html @@ -0,0 +1,138 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- u -

+
+
+ + + + diff --git a/functions_v.html b/functions_v.html new file mode 100644 index 000000000..94c2fe7f5 --- /dev/null +++ b/functions_v.html @@ -0,0 +1,140 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- v -

+
+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 000000000..6a3ac1a1d --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- a -

+
+
+ + + + diff --git a/functions_vars.js b/functions_vars.js new file mode 100644 index 000000000..52ec2defc --- /dev/null +++ b/functions_vars.js @@ -0,0 +1,19 @@ +var functions_vars = +[ + [ "a", "functions_vars.html", null ], + [ "b", "functions_vars_b.html", null ], + [ "c", "functions_vars_c.html", null ], + [ "g", "functions_vars_g.html", null ], + [ "h", "functions_vars_h.html", null ], + [ "i", "functions_vars_i.html", null ], + [ "m", "functions_vars_m.html", null ], + [ "n", "functions_vars_n.html", null ], + [ "o", "functions_vars_o.html", null ], + [ "r", "functions_vars_r.html", null ], + [ "s", "functions_vars_s.html", null ], + [ "t", "functions_vars_t.html", null ], + [ "w", "functions_vars_w.html", null ], + [ "x", "functions_vars_x.html", null ], + [ "y", "functions_vars_y.html", null ], + [ "z", "functions_vars_z.html", null ] +]; \ No newline at end of file diff --git a/functions_vars_b.html b/functions_vars_b.html new file mode 100644 index 000000000..9f05998f4 --- /dev/null +++ b/functions_vars_b.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- b -

+
+
+ + + + diff --git a/functions_vars_c.html b/functions_vars_c.html new file mode 100644 index 000000000..13617fb30 --- /dev/null +++ b/functions_vars_c.html @@ -0,0 +1,161 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- c -

+
+
+ + + + diff --git a/functions_vars_g.html b/functions_vars_g.html new file mode 100644 index 000000000..aa73fdf20 --- /dev/null +++ b/functions_vars_g.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- g -

+
+
+ + + + diff --git a/functions_vars_h.html b/functions_vars_h.html new file mode 100644 index 000000000..0c668e126 --- /dev/null +++ b/functions_vars_h.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- h -

+
+
+ + + + diff --git a/functions_vars_i.html b/functions_vars_i.html new file mode 100644 index 000000000..c9027d844 --- /dev/null +++ b/functions_vars_i.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- i -

+
+
+ + + + diff --git a/functions_vars_m.html b/functions_vars_m.html new file mode 100644 index 000000000..4f5c4f597 --- /dev/null +++ b/functions_vars_m.html @@ -0,0 +1,849 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- m -

+
+
+ + + + diff --git a/functions_vars_n.html b/functions_vars_n.html new file mode 100644 index 000000000..b43e2c844 --- /dev/null +++ b/functions_vars_n.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- n -

+
+
+ + + + diff --git a/functions_vars_o.html b/functions_vars_o.html new file mode 100644 index 000000000..381662183 --- /dev/null +++ b/functions_vars_o.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- o -

+
+
+ + + + diff --git a/functions_vars_r.html b/functions_vars_r.html new file mode 100644 index 000000000..6170bba6b --- /dev/null +++ b/functions_vars_r.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- r -

+
+
+ + + + diff --git a/functions_vars_s.html b/functions_vars_s.html new file mode 100644 index 000000000..1e995215c --- /dev/null +++ b/functions_vars_s.html @@ -0,0 +1,152 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- s -

+
+
+ + + + diff --git a/functions_vars_t.html b/functions_vars_t.html new file mode 100644 index 000000000..b44a936a6 --- /dev/null +++ b/functions_vars_t.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- t -

+
+
+ + + + diff --git a/functions_vars_w.html b/functions_vars_w.html new file mode 100644 index 000000000..83930725b --- /dev/null +++ b/functions_vars_w.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- w -

+
+
+ + + + diff --git a/functions_vars_x.html b/functions_vars_x.html new file mode 100644 index 000000000..645ed7585 --- /dev/null +++ b/functions_vars_x.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- x -

+
+
+ + + + diff --git a/functions_vars_y.html b/functions_vars_y.html new file mode 100644 index 000000000..04b66e5ed --- /dev/null +++ b/functions_vars_y.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- y -

+
+
+ + + + diff --git a/functions_vars_z.html b/functions_vars_z.html new file mode 100644 index 000000000..d31f45250 --- /dev/null +++ b/functions_vars_z.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members - Variables + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+ +

- z -

+
+
+ + + + diff --git a/functions_w.html b/functions_w.html new file mode 100644 index 000000000..cc075bc08 --- /dev/null +++ b/functions_w.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- w -

+
+
+ + + + diff --git a/functions_x.html b/functions_x.html new file mode 100644 index 000000000..b4d8171ab --- /dev/null +++ b/functions_x.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- x -

+
+
+ + + + diff --git a/functions_y.html b/functions_y.html new file mode 100644 index 000000000..6158fc10f --- /dev/null +++ b/functions_y.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- y -

+
+
+ + + + diff --git a/functions_z.html b/functions_z.html new file mode 100644 index 000000000..368714d56 --- /dev/null +++ b/functions_z.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- z -

+
+
+ + + + diff --git a/functions_~.html b/functions_~.html new file mode 100644 index 000000000..17cac77cc --- /dev/null +++ b/functions_~.html @@ -0,0 +1,193 @@ + + + + + + + +Jolt Physics: Class Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- ~ -

+
+
+ + + + diff --git a/globals.html b/globals.html new file mode 100644 index 000000000..9a0c7885b --- /dev/null +++ b/globals.html @@ -0,0 +1,136 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- a -

+
+
+ + + + diff --git a/globals_b.html b/globals_b.html new file mode 100644 index 000000000..edd02bcdd --- /dev/null +++ b/globals_b.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- b -

+
+
+ + + + diff --git a/globals_c.html b/globals_c.html new file mode 100644 index 000000000..39f95a98c --- /dev/null +++ b/globals_c.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- c -

+
+
+ + + + diff --git a/globals_d.html b/globals_d.html new file mode 100644 index 000000000..8db9e38cb --- /dev/null +++ b/globals_d.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- d -

+
+
+ + + + diff --git a/globals_defs.html b/globals_defs.html new file mode 100644 index 000000000..6978490bc --- /dev/null +++ b/globals_defs.html @@ -0,0 +1,236 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all macros with links to the files they belong to:
+ +

- b -

+ + +

- j -

+ + +

- m -

+
+
+ + + + diff --git a/globals_dup.js b/globals_dup.js new file mode 100644 index 000000000..209fea932 --- /dev/null +++ b/globals_dup.js @@ -0,0 +1,24 @@ +var globals_dup = +[ + [ "a", "globals.html", null ], + [ "b", "globals_b.html", null ], + [ "c", "globals_c.html", null ], + [ "d", "globals_d.html", null ], + [ "e", "globals_e.html", null ], + [ "f", "globals_f.html", null ], + [ "g", "globals_g.html", null ], + [ "h", "globals_h.html", null ], + [ "i", "globals_i.html", null ], + [ "j", "globals_j.html", null ], + [ "m", "globals_m.html", null ], + [ "n", "globals_n.html", null ], + [ "o", "globals_o.html", null ], + [ "p", "globals_p.html", null ], + [ "q", "globals_q.html", null ], + [ "r", "globals_r.html", null ], + [ "s", "globals_s.html", null ], + [ "t", "globals_t.html", null ], + [ "u", "globals_u.html", null ], + [ "v", "globals_v.html", null ], + [ "w", "globals_w.html", null ] +]; \ No newline at end of file diff --git a/globals_e.html b/globals_e.html new file mode 100644 index 000000000..841c31698 --- /dev/null +++ b/globals_e.html @@ -0,0 +1,141 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- e -

+
+
+ + + + diff --git a/globals_enum.html b/globals_enum.html new file mode 100644 index 000000000..8e5a70f69 --- /dev/null +++ b/globals_enum.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all enums with links to the files they belong to:
+
+
+ + + + diff --git a/globals_eval.html b/globals_eval.html new file mode 100644 index 000000000..f2ed8d8f5 --- /dev/null +++ b/globals_eval.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all enum values with links to the files they belong to:
+
+
+ + + + diff --git a/globals_f.html b/globals_f.html new file mode 100644 index 000000000..063b4f49e --- /dev/null +++ b/globals_f.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- f -

+
+
+ + + + diff --git a/globals_func.html b/globals_func.html new file mode 100644 index 000000000..a0260781c --- /dev/null +++ b/globals_func.html @@ -0,0 +1,133 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- a -

+
+
+ + + + diff --git a/globals_func.js b/globals_func.js new file mode 100644 index 000000000..2c9fd2630 --- /dev/null +++ b/globals_func.js @@ -0,0 +1,23 @@ +var globals_func = +[ + [ "a", "globals_func.html", null ], + [ "b", "globals_func_b.html", null ], + [ "c", "globals_func_c.html", null ], + [ "d", "globals_func_d.html", null ], + [ "e", "globals_func_e.html", null ], + [ "f", "globals_func_f.html", null ], + [ "g", "globals_func_g.html", null ], + [ "h", "globals_func_h.html", null ], + [ "i", "globals_func_i.html", null ], + [ "j", "globals_func_j.html", null ], + [ "m", "globals_func_m.html", null ], + [ "n", "globals_func_n.html", null ], + [ "o", "globals_func_o.html", null ], + [ "p", "globals_func_p.html", null ], + [ "q", "globals_func_q.html", null ], + [ "r", "globals_func_r.html", null ], + [ "s", "globals_func_s.html", null ], + [ "t", "globals_func_t.html", null ], + [ "u", "globals_func_u.html", null ], + [ "v", "globals_func_v.html", null ] +]; \ No newline at end of file diff --git a/globals_func_b.html b/globals_func_b.html new file mode 100644 index 000000000..0b395f5eb --- /dev/null +++ b/globals_func_b.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- b -

+
+
+ + + + diff --git a/globals_func_c.html b/globals_func_c.html new file mode 100644 index 000000000..e11728f09 --- /dev/null +++ b/globals_func_c.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- c -

+
+
+ + + + diff --git a/globals_func_d.html b/globals_func_d.html new file mode 100644 index 000000000..07f59a839 --- /dev/null +++ b/globals_func_d.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- d -

+
+
+ + + + diff --git a/globals_func_e.html b/globals_func_e.html new file mode 100644 index 000000000..d035d6f44 --- /dev/null +++ b/globals_func_e.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- e -

+
+
+ + + + diff --git a/globals_func_f.html b/globals_func_f.html new file mode 100644 index 000000000..ed7778fdf --- /dev/null +++ b/globals_func_f.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- f -

+
+
+ + + + diff --git a/globals_func_g.html b/globals_func_g.html new file mode 100644 index 000000000..23a811ef4 --- /dev/null +++ b/globals_func_g.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- g -

+
+
+ + + + diff --git a/globals_func_h.html b/globals_func_h.html new file mode 100644 index 000000000..655ac4c80 --- /dev/null +++ b/globals_func_h.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- h -

+
+
+ + + + diff --git a/globals_func_i.html b/globals_func_i.html new file mode 100644 index 000000000..af538595e --- /dev/null +++ b/globals_func_i.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- i -

+
+
+ + + + diff --git a/globals_func_j.html b/globals_func_j.html new file mode 100644 index 000000000..1cbd42a5a --- /dev/null +++ b/globals_func_j.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- j -

+
+
+ + + + diff --git a/globals_func_m.html b/globals_func_m.html new file mode 100644 index 000000000..98bfff6f9 --- /dev/null +++ b/globals_func_m.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- m -

+
+
+ + + + diff --git a/globals_func_n.html b/globals_func_n.html new file mode 100644 index 000000000..bef774eab --- /dev/null +++ b/globals_func_n.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- n -

+
+
+ + + + diff --git a/globals_func_o.html b/globals_func_o.html new file mode 100644 index 000000000..6226dc0d3 --- /dev/null +++ b/globals_func_o.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- o -

+
+
+ + + + diff --git a/globals_func_p.html b/globals_func_p.html new file mode 100644 index 000000000..0f6994e72 --- /dev/null +++ b/globals_func_p.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- p -

+
+
+ + + + diff --git a/globals_func_q.html b/globals_func_q.html new file mode 100644 index 000000000..c2d421655 --- /dev/null +++ b/globals_func_q.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- q -

+
+
+ + + + diff --git a/globals_func_r.html b/globals_func_r.html new file mode 100644 index 000000000..95cc53e65 --- /dev/null +++ b/globals_func_r.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- r -

+
+
+ + + + diff --git a/globals_func_s.html b/globals_func_s.html new file mode 100644 index 000000000..37af2c934 --- /dev/null +++ b/globals_func_s.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- s -

+
+
+ + + + diff --git a/globals_func_t.html b/globals_func_t.html new file mode 100644 index 000000000..750cadf77 --- /dev/null +++ b/globals_func_t.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- t -

+
+
+ + + + diff --git a/globals_func_u.html b/globals_func_u.html new file mode 100644 index 000000000..fc1f8699c --- /dev/null +++ b/globals_func_u.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- u -

+
+
+ + + + diff --git a/globals_func_v.html b/globals_func_v.html new file mode 100644 index 000000000..93bb94c65 --- /dev/null +++ b/globals_func_v.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the files they belong to:
+ +

- v -

+
+
+ + + + diff --git a/globals_g.html b/globals_g.html new file mode 100644 index 000000000..7f2459320 --- /dev/null +++ b/globals_g.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- g -

+
+
+ + + + diff --git a/globals_h.html b/globals_h.html new file mode 100644 index 000000000..7565829d7 --- /dev/null +++ b/globals_h.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- h -

+
+
+ + + + diff --git a/globals_i.html b/globals_i.html new file mode 100644 index 000000000..95a99f219 --- /dev/null +++ b/globals_i.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- i -

+
+
+ + + + diff --git a/globals_j.html b/globals_j.html new file mode 100644 index 000000000..af78d5184 --- /dev/null +++ b/globals_j.html @@ -0,0 +1,227 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- j -

+
+
+ + + + diff --git a/globals_m.html b/globals_m.html new file mode 100644 index 000000000..819b60412 --- /dev/null +++ b/globals_m.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- m -

+
+
+ + + + diff --git a/globals_n.html b/globals_n.html new file mode 100644 index 000000000..4b0b805d5 --- /dev/null +++ b/globals_n.html @@ -0,0 +1,116 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- n -

+
+
+ + + + diff --git a/globals_o.html b/globals_o.html new file mode 100644 index 000000000..38d2de179 --- /dev/null +++ b/globals_o.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- o -

+
+
+ + + + diff --git a/globals_p.html b/globals_p.html new file mode 100644 index 000000000..5338c764f --- /dev/null +++ b/globals_p.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- p -

+
+
+ + + + diff --git a/globals_q.html b/globals_q.html new file mode 100644 index 000000000..d7ab832ba --- /dev/null +++ b/globals_q.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- q -

+
+
+ + + + diff --git a/globals_r.html b/globals_r.html new file mode 100644 index 000000000..d77d923b7 --- /dev/null +++ b/globals_r.html @@ -0,0 +1,137 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- r -

+
+
+ + + + diff --git a/globals_s.html b/globals_s.html new file mode 100644 index 000000000..b757964c6 --- /dev/null +++ b/globals_s.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- s -

+
+
+ + + + diff --git a/globals_t.html b/globals_t.html new file mode 100644 index 000000000..c04a1cd0e --- /dev/null +++ b/globals_t.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- t -

+
+
+ + + + diff --git a/globals_type.html b/globals_type.html new file mode 100644 index 000000000..a5c2d49a8 --- /dev/null +++ b/globals_type.html @@ -0,0 +1,252 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all typedefs with links to the files they belong to:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- j -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- q -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+
+
+ + + + diff --git a/globals_u.html b/globals_u.html new file mode 100644 index 000000000..19d151842 --- /dev/null +++ b/globals_u.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- u -

+
+
+ + + + diff --git a/globals_v.html b/globals_v.html new file mode 100644 index 000000000..8c2560d85 --- /dev/null +++ b/globals_v.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- v -

+
+
+ + + + diff --git a/globals_vars.html b/globals_vars.html new file mode 100644 index 000000000..0efe4f12c --- /dev/null +++ b/globals_vars.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the files they belong to:
+
+
+ + + + diff --git a/globals_w.html b/globals_w.html new file mode 100644 index 000000000..4b50d70b4 --- /dev/null +++ b/globals_w.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: File Members + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- w -

+
+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 000000000..b4e1c4dd9 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,840 @@ + + + + + + + +Jolt Physics: Class Hierarchy + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 CAABBTreeBuilderHelper class to build an AABB tree
 CAABBTreeBuilderStats
 CAABBTreeToBuffer< TriangleCodec, NodeCodec >Conversion algorithm that converts an AABB tree to an optimized binary buffer
 CAABoxAxis aligned box
 CAABoxCastStructure that holds AABox moving linearly through 3d space
 CAddConvexRadius< ConvexObject >Structure that adds a convex radius
 CRagdollSettings::AdditionalConstraintA constraint that connects two bodies in a ragdoll (for non parent child related constraints)
 CQuadTree::AddStateTemporary data structure to pass information between AddBodiesPrepare and AddBodiesFinalize/Abort
 CAllocatorHasReallocate< T >Default implementation of AllocatorHasReallocate which tells if an allocator has a reallocate function
 CAllocatorHasReallocate< STLAllocator< T > >The STLAllocator implements the reallocate function if the alignment of the class is smaller or equal to the default alignment for the platform
 CAngleConstraintPart
 CSkeletalAnimation::AnimatedJointContains the animation for a single joint
 CAxisConstraintPart
 CRTTI::BaseClassBase class information
 CFixedSizeFreeList< Object >::BatchA batch of objects that can be destructed
 CBodyActivationListener
 CBodyCreationSettingsSettings for constructing a rigid body
 CBodyIDID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding race conditions
 CBodyPairStructure that holds a body pair
 CPhysicsUpdateContext::BodyPairQueue
 CBodyManager::BodyStatsHelper struct that counts the number of bodies of each type
 CBroadPhaseCastResultStructure that holds a ray cast or other object cast hit
 CBroadPhaseLayer
 CCalculateSolverStepsClass used to calculate the total number of velocity and position steps
 CCastConvexVsTrianglesCollision detection helper that casts a convex object vs one or more triangles
 CCompoundShape::CastRayVisitor
 CCompoundShape::CastRayVisitorCollector
 CCompoundShape::CastShapeVisitor
 CCastSphereVsTrianglesCollision detection helper that casts a sphere vs one or more triangles
 CPhysicsUpdateContext::Step::CCDBodyContains the information needed to cast a body through the scene to do continuous collision detection
 CSkeletonMapper::ChainA joint chain that starts with a 1-on-1 mapped joint and ends with a 1-on-1 mapped joint with intermediate joints that cannot be mapped
 CCharacterContactListenerThis class receives callbacks when a virtual character hits something
 CCharacterContactSettingsThis class contains settings that allow you to override the behavior of a character's collision response
 CConvexHullShape::CHSGetTrianglesContext
 CCollectorType
 CCompoundShape::CollectTransformedShapesVisitor
 CCompoundShape::CollideCompoundVsShapeVisitor
 CCollideConvexVsTrianglesCollision detection helper that collides a convex object vs one or more triangles
 CCollidePointResultStructure that holds the result of colliding a point against a shape
 CCompoundShape::CollidePointVisitor
 CCollideSettingsBaseSettings to be passed with a collision query
 CCollideShapeResultClass that contains all information of two colliding shapes
 CCompoundShape::CollideShapeVsCompoundVisitor
 CCollideSoftBodyVerticesVsTrianglesCollision detection helper that collides soft body vertices vs triangles
 CCollideSphereVsTrianglesCollision detection helper that collides a sphere vs one or more triangles
 CCollisionCollector< ResultTypeArg, TraitsType >Virtual interface that allows collecting multiple collision results
 CCollisionCollectorTraitsCastRayTraits to use for CastRay
 CCollisionCollectorTraitsCastShapeTraits to use for CastShape
 CCollisionCollectorTraitsCollideShapeTraits to use for CollideShape
 CCollisionDispatchDispatch function, main function to handle collisions between shapes
 CCollisionEstimationResultA structure that contains the estimated contact and friction impulses and the resulting body velocities
 CCollisionGroup
 CColorClass that holds an RGBA color with 8-bits per component
 CPhysicsScene::ConnectedConstraintA constraint and how it is connected to the bodies in the scene
 CCharacterVirtual::Contact
 CContactListener
 CContactManifoldManifold class, describes the contact surface between two bodies
 CContactSettings
 CConvexShape::CSGetTrianglesContext
 CDebugRendererPlaybackClass that can read a recorded stream from DebugRendererRecorder and plays it back trough a DebugRenderer
 CHeightFieldShape::DecodingContext
 CNodeCodecQuadTreeHalfFloat< Alignment >::DecodingContextThis class decodes and decompresses quad tree nodes
 CTriangleCodecIndexed8BitPackSOA4Flags::DecodingContextThis class is used to decode and decompress triangle data packed by the EncodingContext
 CSoftBodySharedSettings::DihedralBend
 CDMat44Holds a 4x4 matrix of floats with the last column consisting of doubles
 CDouble3Class that holds 3 doubles. Used as a storage class. Convert to DVec3 for calculations
 CBodyManager::DrawSettingsDraw settings
 CSkeletonPose::DrawSettingsDraw settings
 CDualAxisConstraintPart
 CDummyCalculateSolverStepsDummy class to replace the steps calculator when we don't need the result
 CDVec3
 CDynMatrixDynamic resizable matrix class
 CEPAConvexHullBuilder::EdgeClass that holds the information of an edge
 CSoftBodySharedSettings::EdgeAn edge keeps two vertices at a constant distance using a spring: |x1 - x2| = rest length
 CEllipse
 CNodeCodecQuadTreeHalfFloat< Alignment >::EncodingContextThis class encodes and compresses quad tree nodes
 CTriangleCodecIndexed8BitPackSOA4Flags::EncodingContextThis class is used to encode and compress triangle data into a byte buffer
 CEPAPenetrationDepth
 CCharacterVirtual::ExtendedUpdateSettingsSettings struct with settings for ExtendedUpdate
 CSoftBodySharedSettings::FaceA face defines the surface of the body
 CFactoryThis class is responsible for creating instances of classes based on their name or hash and is mainly used for deserialization of saved data
 CFloat2Class that holds 2 floats, used as a storage class mainly
 CFloat3Class that holds 3 floats. Used as a storage class. Convert to Vec3 for calculations
 CFloat4Class that holds 4 float values. Convert to Vec4 to perform calculations
 CFPExceptionDisableDivByZero
 CFPExceptionDisableInvalid
 CFPExceptionsEnableDummy implementations
 CDebugRendererRecorder::FrameAll information for a single frame
 CGearConstraintPart
 CDebugRendererRecorder::GeometryBlobHolds a single geometry draw call
 CCompoundShape::GetIntersectingSubShapesVisitor< BoxType >
 CShape::GetTrianglesContextAn opaque buffer that holds shape specific information during GetTrianglesStart/Next
 CGetTrianglesContextMultiVertexListImplementation of GetTrianglesStart/Next that uses a multiple fixed lists of vertices for the triangles. These are transformed into world space when getting the triangles
 CGetTrianglesContextVertexListImplementation of GetTrianglesStart/Next that uses a fixed list of vertices for the triangles. These are transformed into world space when getting the triangles
 Cstd::hash< JPH::StaticArray< T, N > >Declare std::hash for StaticArray
 Cstd::hash< JPH::String >Declare std::hash for String, for some reason on Linux based platforms template deduction takes the wrong variant
 CNodeCodecQuadTreeHalfFloat< Alignment >::HeaderHeader for the tree
 CHingeRotationConstraintPart
 CHeightFieldShape::HSGetTrianglesContext
 CCollisionEstimationResult::Impulse
 CIndependentAxisConstraintPart
 CIndexedTriangleNoMaterialTriangle with 32-bit indices
 CSoftBodySharedSettings::InvBindAn inverse bind matrix take a skinned vertex from its bind pose into joint local space
 CLockFreeHashMap< Key, Value >::IteratorNon-const iterator
 CJobSystem::JobA class that contains information for a single unit of work
 CSkeleton::JointDeclare internal structure for a joint
 CSkeletalAnimation::JointStateContains the current state of a joint, a local space transformation relative to its parent joint
 CLockFreeHashMap< Key, Value >::KeyValueA key / value pair that is inserted in the map
 CLinearCurve
 CDebugRendererRecorder::LineBlobHolds a single line segment
 CSkeletonMapper::LockedJoints that should have their translation locked (fixed)
 CDebugRenderer::LODA single level of detail
 CSoftBodySharedSettings::LRA
 CSkeletonMapper::MappingA joint that maps 1-on-1 to a joint in the other skeleton
 CMassPropertiesDescribes the mass and inertia properties of a body. Used during body construction only
 CMat44Holds a 4x4 matrix of floats, but supports also operations on the 3x3 upper left part of the matrix
 CMatrix< Rows, Cols >Templatized matrix class
 CMatrix< 2, 2 >
 CMinkowskiDifference< ConvexObjectA, ConvexObjectB >Structure that performs a Minkowski difference A - B
 CMortonCode
 CMotionPropertiesThe Body class only keeps track of state for static bodies, the MotionProperties class keeps the additional state needed for a moving Body. It has a 1-on-1 relationship with the body
 CMotorSettings
 CMeshShape::MSGetTrianglesContext
 CNodeCodecQuadTreeHalfFloat< Alignment >::NodeNode structure
 CNodeCodecQuadTreeHalfFloat< Alignment >
 CNonCopyableClass that makes another class non-copyable. Usage: Inherit from NonCopyable
 CSoftBodySharedSettings::OptimizationResultsInformation about the optimization of the soft body, the indices of certain elements may have changed
 COrientedBoxOriented box
 CPhysicsLock
 CPhysicsSettings
 CPhysicsStepListenerA listener class that receives a callback before every physics simulation step
 CPlaneAn infinite plane described by the formula X . Normal + Constant = 0
 CLinearCurve::PointA point on the curve
 CPathConstraintPathHermite::Point
 CPolyhedronSubmergedVolumeCalculator::PointA helper class that contains cached information about a polyhedron vertex
 CPointConstraintPart
 CPointConvexSupportClass that wraps a point so that it can be used with convex collision detection
 CPolygonConvexSupport< VERTEX_ARRAY >Class that wraps a polygon so that it can used with convex collision detection
 CPolyhedronSubmergedVolumeCalculator
 CPlaneShape::PSGetTrianglesContext
 CQuat
 CRackAndPinionConstraintPart
 CTriangleSplitter::RangeHelper struct to indicate triangle range before and after the split
 CRayCastSettingsSettings to be passed with a ray cast
 CRayCastT< Vec, Mat, RayCastType >Structure that holds a single ray cast
 CRayCastT< RVec3, RMat44, RRayCast >
 CRayCastT< Vec3, Mat44, RayCast >
 CRayInvDirectionHelper structure holding the reciprocal of a ray for Ray vs AABox testing
 CSTLAlignedAllocator< T, N >::rebind< T2 >Converting to allocator for other type
 CSTLAllocator< T >::rebind< T2 >Converting to allocator for other type
 CSTLTempAllocator< T >::rebind< T2 >Converting to allocator for other type
 CRef< T >
 CRef< Constraint >
 CRef< Geometry >
 CRef< Job >
 CRef< RefTargetVirtual >
 CRef< Shape >
 CRef< Skeleton >
 CRef< TwoBodyConstraint >
 CRef< TwoBodyConstraintSettings >
 CRef< VehicleControllerSettings >
 CRef< WheelSettings >
 CRefConst< T >
 CRefConst< Constraint >
 CRefConst< GroupFilter >
 CRefConst< PathConstraintPath >
 CRefConst< PhysicsMaterial >
 CRefConst< RagdollSettings >
 CRefConst< Shape >
 CRefConst< ShapeSettings >
 CRefConst< Skeleton >
 CRefConst< SoftBodySharedSettings >
 CRefConst< TwoBodyConstraintSettings >
 CRefConst< VehicleCollisionTester >
 CRefConst< WheelSettings >
 CRefTarget< T >
 CRefTarget< CharacterBase >
 CRefTarget< CharacterBaseSettings >
 CRefTarget< Constraint >
 CRefTarget< ConstraintSettings >
 CRefTarget< Geometry >
 CRefTarget< GroupFilter >
 CRefTarget< PathConstraintPath >
 CRefTarget< PhysicsMaterial >
 CRefTarget< PhysicsScene >
 CRefTarget< Ragdoll >
 CRefTarget< RagdollSettings >
 CRefTarget< Shape >
 CRefTarget< ShapeSettings >
 CRefTarget< SkeletalAnimation >
 CRefTarget< Skeleton >
 CRefTarget< SkeletonMapper >
 CRefTarget< SoftBodySharedSettings >
 CRefTarget< VehicleCollisionTester >
 CRefTarget< VehicleController >
 CRefTarget< VehicleControllerSettings >
 CRefTarget< WheelSettings >
 CRefTargetVirtualPure virtual version of RefTarget
 CResult< Type >Helper class that either contains a valid result or an error
 CResult< Ref< Shape > >
 CRotationEulerConstraintPart
 CRotationQuatConstraintPart
 CRTTI
 CSoftBodyShape::SBSGetTrianglesContext
 CSemaphore
 CSerializableAttributeAttributes are members of classes that need to be serialized
 CShapeCastT< Vec, Mat, ShapeCastType >Structure that holds a single shape cast (a shape moving along a linear path in 3d space with no rotation)
 CShapeCastT< RVec3, RMat44, RShapeCast >
 CShapeCastT< Vec3, Mat44, ShapeCast >
 CShapeFunctionsFunction table for functions on shapes
 CSkeletonPoseInstance of a skeleton, contains the pose the current skeleton is in
 CSoftBodySharedSettings::SkinnedA constraint that skins a vertex to joints and limits the distance that the simulated vertex can travel from this vertex
 CSoftBodySharedSettings::SkinWeightA joint and its skin weight
 CSoftBodyContactListener
 CSoftBodyContactSettings
 CSoftBodyCreationSettings
 CSoftBodyManifoldAn interface to query which vertices of a soft body are colliding with other bodies
 CSoftBodyVertex
 CSphere
 CLargeIslandSplitter::SplitDescribes a split of constraints and contacts
 CLargeIslandSplitter::SplitsStructure that describes the resulting splits from the large island splitter
 CSpringPartClass used in other constraint parts to calculate the required bias factor in the lagrange multiplier for creating springs
 CSpringSettingsSettings for a linear or angular spring
 CStateRecorderFilterUser callbacks that allow determining which parts of the simulation should be saved by a StateRecorder
 CStaticArray< T, N >Simple variable length array backed by a fixed size buffer
 CStaticArray< BodyPairQueue, cMaxConcurrency >
 CStaticArray< CollideShapeResult, cMaxDelayedResults >
 CStaticArray< Impulse, ContactPoints::Capacity >
 CStaticArray< JobHandle, cMaxConcurrency >
 CStaticArray< Part, 3 >
 CStaticArray< RTTI::BaseClass, 4 >
 CStaticArray< SerializableAttribute, 32 >
 CStaticArray< Vec3, 1026 >
 CStaticArray< Vec3, 32 >
 CStaticArray< Vec3, 384 >
 CStaticArray< Vec3, 64 >
 CStaticArray< Vec3, cMaxPointsInHull >
 CStaticArray< Voided, cMaxVoidedFeatures >
 CStaticArray< WorldContactPoint, MaxContactPoints >
 CShape::StatsClass that holds information about the shape that can be used for logging / data collection purposes
 CTriangleSplitter::Stats
 CPhysicsUpdateContext::StepStructure that contains data needed for each collision step
 CSTLAlignedAllocator< T, N >STL allocator that takes care that memory is aligned to N bytes
 CSTLAllocator< T >STL allocator that forwards to our allocation functions
 CSTLAllocator< AdditionalConstraint >
 CSTLAllocator< AnimatedJoint >
 CSTLAllocator< AttributeDescription >
 CSTLAllocator< Bin >
 CSTLAllocator< Body * >
 CSTLAllocator< BodyCreationSettings >
 CSTLAllocator< BodyID >
 CSTLAllocator< BodyIdxPair >
 CSTLAllocator< Bounds >
 CSTLAllocator< BroadPhaseLayer >
 CSTLAllocator< Chain >
 CSTLAllocator< CharacterVirtual * >
 CSTLAllocator< ClosestKinematic >
 CSTLAllocator< CollidingShape >
 CSTLAllocator< const char * >
 CSTLAllocator< Contact >
 CSTLAllocator< Coplanar >
 CSTLAllocator< DebugRenderer::LOD >
 CSTLAllocator< DebugRendererRecorder::Frame >
 CSTLAllocator< DebugRendererRecorder::GeometryBlob >
 CSTLAllocator< DebugRendererRecorder::LineBlob >
 CSTLAllocator< DebugRendererRecorder::TextBlob >
 CSTLAllocator< DebugRendererRecorder::TriangleBlob >
 CSTLAllocator< Face * >
 CSTLAllocator< Face >
 CSTLAllocator< float >
 CSTLAllocator< Float3 >
 CSTLAllocator< IndexedTriangle >
 CSTLAllocator< int >
 CSTLAllocator< Joint >
 CSTLAllocator< JointState >
 CSTLAllocator< Keyframe >
 CSTLAllocator< Link >
 CSTLAllocator< Locked >
 CSTLAllocator< Mapping >
 CSTLAllocator< Mat44 >
 CSTLAllocator< Node >
 CSTLAllocator< Part >
 CSTLAllocator< PhysicsScene::ConnectedConstraint >
 CSTLAllocator< PhysicsStepListener * >
 CSTLAllocator< Plane >
 CSTLAllocator< Point >
 CSTLAllocator< ProfileThread * >
 CSTLAllocator< Ref >
 CSTLAllocator< Ref< Constraint > >
 CSTLAllocator< Ref< TwoBodyConstraint > >
 CSTLAllocator< Ref< WheelSettings > >
 CSTLAllocator< RefConst< PhysicsMaterial > >
 CSTLAllocator< ResultType >
 CSTLAllocator< SkinState >
 CSTLAllocator< SoftBodyCreationSettings >
 CSTLAllocator< SoftBodySharedSettings::DihedralBend >
 CSTLAllocator< SoftBodySharedSettings::Edge >
 CSTLAllocator< SoftBodySharedSettings::Face >
 CSTLAllocator< SoftBodySharedSettings::InvBind >
 CSTLAllocator< SoftBodySharedSettings::LRA >
 CSTLAllocator< SoftBodySharedSettings::Skinned >
 CSTLAllocator< SoftBodySharedSettings::Vertex >
 CSTLAllocator< SoftBodySharedSettings::Volume >
 CSTLAllocator< SoftBodyVertex >
 CSTLAllocator< SubShape >
 CSTLAllocator< SubShapeSettings >
 CSTLAllocator< thread >
 CSTLAllocator< Triangle >
 CSTLAllocator< uint >
 CSTLAllocator< uint32 >
 CSTLAllocator< uint8 >
 CSTLAllocator< Unmapped >
 CSTLAllocator< UpdateGroup >
 CSTLAllocator< Vec3 >
 CSTLAllocator< VehicleAntiRollBar >
 CSTLAllocator< VehicleDifferentialSettings >
 CSTLAllocator< Wheel * >
 CSTLTempAllocator< T >STL allocator that wraps around TempAllocator
 CSTLTempAllocator< Step >
 CStaticArray< T, N >::Storage
 CCompoundShape::SubShape
 CSubShapeIDA sub shape id contains a path to an element (usually a triangle or other primitive type) of a compound shape
 CSubShapeIDCreator
 CSubShapeIDPairA pair of bodies and their sub shape ID's. Can be used as a key in a map to find a contact point
 CCompoundShapeSettings::SubShapeSettings
 CConvexShape::SupportFunction that provides an interface for GJK
 CConvexShape::SupportBufferBuffer to hold a Support object, used to avoid dynamic memory allocations
 CSwingTwistConstraintPart
 CTaperedCylinderShape::TCSGetTrianglesContext
 CDebugRendererRecorder::TextBlobHolds a single text entry
 CQuadTree::TrackingData to track location of a Body in the tree
 CTransformedConvexObject< ConvexObject >
 CTransformedShape
 CDebugRenderer::TriangleA single triangle
 CTriangleA simple triangle and its material
 CDebugRendererRecorder::TriangleBlobHolds a single triangle
 CTriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockA block of 4 triangles
 CTriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeaderA triangle header, will be followed by one or more TriangleBlocks
 CTriangleCodecIndexed8BitPackSOA4Flags
 CTriangleConvexSupportClass that wraps a triangle so that it can used with convex collision detection
 CTriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader
 CTriangleShape::TSGetTrianglesContext
 CSkeletonMapper::UnmappedJoints that could not be mapped from skeleton 1 to 2
 CBroadPhase::UpdateStateContext used during broadphase update
 CQuadTree::UpdateState
 CUVec4
 CUVec8
 CTriangleCodecIndexed8BitPackSOA4Flags::ValidationContextThis class is used to validate that the triangle data will not be degenerate after compression
 CVec3
 CVec4
 CVec8
 CVector< Rows >Templatized vector class
 CVector< 2 >
 CVehicleAntiRollBar
 CVehicleDifferentialSettings
 CVehicleEngineSettingsGeneric properties for a vehicle engine
 CVehicleTrackSettingsGeneric properties for tank tracks
 CVehicleTransmissionSettingsConfiguration for the transmission of a vehicle (gear box)
 CDebugRenderer::VertexVertex format used by the triangle renderer
 CSoftBodySharedSettings::VertexA vertex is a particle, the data in this structure is only used during creation of the soft body and not during simulation
 CSoftBodySharedSettings::VertexAttributes
 CTriangleCodecIndexed8BitPackSOA4Flags::VertexDataA single packed vertex
 CSoftBodySharedSettings::VolumeVolume constraint, keeps the volume of a tetrahedron constant
 Cmutex
 Cshared_mutex
+
+
+
+ + + + diff --git a/hierarchy.js b/hierarchy.js new file mode 100644 index 000000000..b63c347ff --- /dev/null +++ b/hierarchy.js @@ -0,0 +1,830 @@ +var hierarchy = +[ + [ "AABBTreeBuilder", "class_a_a_b_b_tree_builder.html", null ], + [ "AABBTreeBuilderStats", "struct_a_a_b_b_tree_builder_stats.html", null ], + [ "AABBTreeToBuffer< TriangleCodec, NodeCodec >", "class_a_a_b_b_tree_to_buffer.html", null ], + [ "AABox", "class_a_a_box.html", null ], + [ "AABoxCast", "struct_a_a_box_cast.html", null ], + [ "AddConvexRadius< ConvexObject >", "struct_add_convex_radius.html", null ], + [ "RagdollSettings::AdditionalConstraint", "class_ragdoll_settings_1_1_additional_constraint.html", null ], + [ "QuadTree::AddState", "struct_quad_tree_1_1_add_state.html", null ], + [ "AllocatorHasReallocate< T >", "struct_allocator_has_reallocate.html", null ], + [ "AllocatorHasReallocate< STLAllocator< T > >", "struct_allocator_has_reallocate_3_01_s_t_l_allocator_3_01_t_01_4_01_4.html", null ], + [ "AngleConstraintPart", "class_angle_constraint_part.html", null ], + [ "SkeletalAnimation::AnimatedJoint", "class_skeletal_animation_1_1_animated_joint.html", null ], + [ "AxisConstraintPart", "class_axis_constraint_part.html", null ], + [ "RTTI::BaseClass", "struct_r_t_t_i_1_1_base_class.html", null ], + [ "FixedSizeFreeList< Object >::Batch", "struct_fixed_size_free_list_1_1_batch.html", null ], + [ "BodyActivationListener", "class_body_activation_listener.html", null ], + [ "BodyCreationSettings", "class_body_creation_settings.html", [ + [ "RagdollSettings::Part", "class_ragdoll_settings_1_1_part.html", null ] + ] ], + [ "BodyID", "class_body_i_d.html", null ], + [ "BodyPair", "struct_body_pair.html", null ], + [ "PhysicsUpdateContext::BodyPairQueue", "struct_physics_update_context_1_1_body_pair_queue.html", null ], + [ "BodyManager::BodyStats", "struct_body_manager_1_1_body_stats.html", null ], + [ "BroadPhaseCastResult", "class_broad_phase_cast_result.html", [ + [ "RayCastResult", "class_ray_cast_result.html", null ] + ] ], + [ "BroadPhaseLayer", "class_broad_phase_layer.html", null ], + [ "CalculateSolverSteps", "class_calculate_solver_steps.html", null ], + [ "CastConvexVsTriangles", "class_cast_convex_vs_triangles.html", null ], + [ "CompoundShape::CastRayVisitor", "struct_compound_shape_1_1_cast_ray_visitor.html", null ], + [ "CompoundShape::CastRayVisitorCollector", "struct_compound_shape_1_1_cast_ray_visitor_collector.html", null ], + [ "CompoundShape::CastShapeVisitor", "struct_compound_shape_1_1_cast_shape_visitor.html", null ], + [ "CastSphereVsTriangles", "class_cast_sphere_vs_triangles.html", null ], + [ "PhysicsUpdateContext::Step::CCDBody", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html", null ], + [ "SkeletonMapper::Chain", "class_skeleton_mapper_1_1_chain.html", null ], + [ "CharacterContactListener", "class_character_contact_listener.html", null ], + [ "CharacterContactSettings", "class_character_contact_settings.html", null ], + [ "ConvexHullShape::CHSGetTrianglesContext", "class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html", null ], + [ "CollectorType", null, [ + [ "AllHitCollisionCollector< CollectorType >", "class_all_hit_collision_collector.html", null ], + [ "AnyHitCollisionCollector< CollectorType >", "class_any_hit_collision_collector.html", null ], + [ "ClosestHitCollisionCollector< CollectorType >", "class_closest_hit_collision_collector.html", null ] + ] ], + [ "CompoundShape::CollectTransformedShapesVisitor", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html", null ], + [ "CompoundShape::CollideCompoundVsShapeVisitor", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html", null ], + [ "CollideConvexVsTriangles", "class_collide_convex_vs_triangles.html", null ], + [ "CollidePointResult", "class_collide_point_result.html", null ], + [ "CompoundShape::CollidePointVisitor", "struct_compound_shape_1_1_collide_point_visitor.html", null ], + [ "CollideSettingsBase", "class_collide_settings_base.html", [ + [ "CollideShapeSettings", "class_collide_shape_settings.html", null ], + [ "ShapeCastSettings", "class_shape_cast_settings.html", null ] + ] ], + [ "CollideShapeResult", "class_collide_shape_result.html", [ + [ "ShapeCastResult", "class_shape_cast_result.html", null ] + ] ], + [ "CompoundShape::CollideShapeVsCompoundVisitor", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html", null ], + [ "CollideSoftBodyVerticesVsTriangles", "class_collide_soft_body_vertices_vs_triangles.html", null ], + [ "CollideSphereVsTriangles", "class_collide_sphere_vs_triangles.html", null ], + [ "CollisionCollector< ResultTypeArg, TraitsType >", "class_collision_collector.html", [ + [ "InternalEdgeRemovingCollector", "class_internal_edge_removing_collector.html", null ] + ] ], + [ "CollisionCollectorTraitsCastRay", "class_collision_collector_traits_cast_ray.html", null ], + [ "CollisionCollectorTraitsCastShape", "class_collision_collector_traits_cast_shape.html", null ], + [ "CollisionCollectorTraitsCollideShape", "class_collision_collector_traits_collide_shape.html", null ], + [ "CollisionDispatch", "class_collision_dispatch.html", null ], + [ "CollisionEstimationResult", "struct_collision_estimation_result.html", null ], + [ "CollisionGroup", "class_collision_group.html", null ], + [ "Color", "class_color.html", null ], + [ "PhysicsScene::ConnectedConstraint", "class_physics_scene_1_1_connected_constraint.html", null ], + [ "CharacterVirtual::Contact", "struct_character_virtual_1_1_contact.html", null ], + [ "ContactListener", "class_contact_listener.html", null ], + [ "ContactManifold", "class_contact_manifold.html", null ], + [ "ContactSettings", "class_contact_settings.html", null ], + [ "ConvexShape::CSGetTrianglesContext", "class_convex_shape_1_1_c_s_get_triangles_context.html", null ], + [ "DebugRendererPlayback", "class_debug_renderer_playback.html", null ], + [ "HeightFieldShape::DecodingContext", "class_height_field_shape_1_1_decoding_context.html", null ], + [ "NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext", "class_node_codec_quad_tree_half_float_1_1_decoding_context.html", null ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html", null ], + [ "SoftBodySharedSettings::DihedralBend", "struct_soft_body_shared_settings_1_1_dihedral_bend.html", null ], + [ "DMat44", "class_d_mat44.html", null ], + [ "Double3", "class_double3.html", null ], + [ "BodyManager::DrawSettings", "struct_body_manager_1_1_draw_settings.html", null ], + [ "SkeletonPose::DrawSettings", "struct_skeleton_pose_1_1_draw_settings.html", null ], + [ "DualAxisConstraintPart", "class_dual_axis_constraint_part.html", null ], + [ "DummyCalculateSolverSteps", "class_dummy_calculate_solver_steps.html", null ], + [ "DVec3", "class_d_vec3.html", null ], + [ "DynMatrix", "class_dyn_matrix.html", null ], + [ "EPAConvexHullBuilder::Edge", "class_e_p_a_convex_hull_builder_1_1_edge.html", null ], + [ "SoftBodySharedSettings::Edge", "struct_soft_body_shared_settings_1_1_edge.html", null ], + [ "Ellipse", "class_ellipse.html", null ], + [ "NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext", "class_node_codec_quad_tree_half_float_1_1_encoding_context.html", null ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html", null ], + [ "EPAPenetrationDepth", "class_e_p_a_penetration_depth.html", null ], + [ "CharacterVirtual::ExtendedUpdateSettings", "struct_character_virtual_1_1_extended_update_settings.html", null ], + [ "SoftBodySharedSettings::Face", "struct_soft_body_shared_settings_1_1_face.html", null ], + [ "Factory", "class_factory.html", null ], + [ "Float2", "class_float2.html", null ], + [ "Float3", "class_float3.html", null ], + [ "Float4", "class_float4.html", null ], + [ "FPExceptionDisableDivByZero", "class_f_p_exception_disable_div_by_zero.html", null ], + [ "FPExceptionDisableInvalid", "class_f_p_exception_disable_invalid.html", null ], + [ "FPExceptionsEnable", "class_f_p_exceptions_enable.html", null ], + [ "DebugRendererRecorder::Frame", "struct_debug_renderer_recorder_1_1_frame.html", null ], + [ "GearConstraintPart", "class_gear_constraint_part.html", null ], + [ "DebugRendererRecorder::GeometryBlob", "struct_debug_renderer_recorder_1_1_geometry_blob.html", null ], + [ "CompoundShape::GetIntersectingSubShapesVisitor< BoxType >", "struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html", null ], + [ "Shape::GetTrianglesContext", "struct_shape_1_1_get_triangles_context.html", null ], + [ "GetTrianglesContextMultiVertexList", "class_get_triangles_context_multi_vertex_list.html", null ], + [ "GetTrianglesContextVertexList", "class_get_triangles_context_vertex_list.html", null ], + [ "std::hash< JPH::StaticArray< T, N > >", "structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.html", null ], + [ "std::hash< JPH::String >", "structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.html", null ], + [ "NodeCodecQuadTreeHalfFloat< Alignment >::Header", "struct_node_codec_quad_tree_half_float_1_1_header.html", null ], + [ "HingeRotationConstraintPart", "class_hinge_rotation_constraint_part.html", null ], + [ "HeightFieldShape::HSGetTrianglesContext", "struct_height_field_shape_1_1_h_s_get_triangles_context.html", null ], + [ "CollisionEstimationResult::Impulse", "struct_collision_estimation_result_1_1_impulse.html", null ], + [ "IndependentAxisConstraintPart", "class_independent_axis_constraint_part.html", null ], + [ "IndexedTriangleNoMaterial", "class_indexed_triangle_no_material.html", [ + [ "IndexedTriangle", "class_indexed_triangle.html", null ] + ] ], + [ "SoftBodySharedSettings::InvBind", "class_soft_body_shared_settings_1_1_inv_bind.html", null ], + [ "LockFreeHashMap< Key, Value >::Iterator", "struct_lock_free_hash_map_1_1_iterator.html", null ], + [ "JobSystem::Job", "class_job_system_1_1_job.html", null ], + [ "Skeleton::Joint", "class_skeleton_1_1_joint.html", null ], + [ "SkeletalAnimation::JointState", "class_skeletal_animation_1_1_joint_state.html", [ + [ "SkeletalAnimation::Keyframe", "class_skeletal_animation_1_1_keyframe.html", null ] + ] ], + [ "LockFreeHashMap< Key, Value >::KeyValue", "class_lock_free_hash_map_1_1_key_value.html", null ], + [ "LinearCurve", "class_linear_curve.html", null ], + [ "DebugRendererRecorder::LineBlob", "struct_debug_renderer_recorder_1_1_line_blob.html", null ], + [ "SkeletonMapper::Locked", "class_skeleton_mapper_1_1_locked.html", null ], + [ "DebugRenderer::LOD", "class_debug_renderer_1_1_l_o_d.html", null ], + [ "SoftBodySharedSettings::LRA", "class_soft_body_shared_settings_1_1_l_r_a.html", null ], + [ "SkeletonMapper::Mapping", "class_skeleton_mapper_1_1_mapping.html", null ], + [ "MassProperties", "class_mass_properties.html", null ], + [ "Mat44", "class_mat44.html", null ], + [ "Matrix< Rows, Cols >", "class_matrix.html", null ], + [ "Matrix< 2, 2 >", "class_matrix.html", null ], + [ "MinkowskiDifference< ConvexObjectA, ConvexObjectB >", "struct_minkowski_difference.html", null ], + [ "MortonCode", "class_morton_code.html", null ], + [ "MotionProperties", "class_motion_properties.html", [ + [ "SoftBodyMotionProperties", "class_soft_body_motion_properties.html", null ] + ] ], + [ "MotorSettings", "class_motor_settings.html", null ], + [ "MeshShape::MSGetTrianglesContext", "struct_mesh_shape_1_1_m_s_get_triangles_context.html", null ], + [ "NodeCodecQuadTreeHalfFloat< Alignment >::Node", "struct_node_codec_quad_tree_half_float_1_1_node.html", null ], + [ "NodeCodecQuadTreeHalfFloat< Alignment >", "class_node_codec_quad_tree_half_float.html", null ], + [ "NonCopyable", "class_non_copyable.html", [ + [ "BodyLockBase< false, const Body >", "class_body_lock_base.html", [ + [ "BodyLockRead", "class_body_lock_read.html", null ] + ] ], + [ "BodyLockBase< true, Body >", "class_body_lock_base.html", [ + [ "BodyLockWrite", "class_body_lock_write.html", null ] + ] ], + [ "BodyLockMultiBase< false, const Body >", "class_body_lock_multi_base.html", [ + [ "BodyLockMultiRead", "class_body_lock_multi_read.html", null ] + ] ], + [ "BodyLockMultiBase< true, Body >", "class_body_lock_multi_base.html", [ + [ "BodyLockMultiWrite", "class_body_lock_multi_write.html", null ] + ] ], + [ "FixedSizeFreeList< Node >", "class_fixed_size_free_list.html", null ], + [ "FixedSizeFreeList< Job >", "class_fixed_size_free_list.html", null ], + [ "LockFreeHashMap< SubShapeIDPair, CachedManifold >", "class_lock_free_hash_map.html", null ], + [ "LockFreeHashMap< BodyPair, CachedBodyPair >", "class_lock_free_hash_map.html", null ], + [ "MutexArray< SharedMutex >", "class_mutex_array.html", null ], + [ "AABBTreeBuilder::Node", "class_a_a_b_b_tree_builder_1_1_node.html", null ], + [ "Body", "class_body.html", [ + [ "BodyWithMotionProperties", "class_body_with_motion_properties.html", null ], + [ "SoftBodyWithMotionPropertiesAndShape", "class_soft_body_with_motion_properties_and_shape.html", null ] + ] ], + [ "BodyDrawFilter", "class_body_draw_filter.html", null ], + [ "BodyFilter", "class_body_filter.html", [ + [ "IgnoreMultipleBodiesFilter", "class_ignore_multiple_bodies_filter.html", null ], + [ "IgnoreSingleBodyFilter", "class_ignore_single_body_filter.html", null ], + [ "IgnoreSingleBodyFilterChained", "class_ignore_single_body_filter_chained.html", null ] + ] ], + [ "BodyInterface", "class_body_interface.html", null ], + [ "BodyLockBase< Write, BodyType >", "class_body_lock_base.html", null ], + [ "BodyLockInterface", "class_body_lock_interface.html", [ + [ "BodyLockInterfaceLocking", "class_body_lock_interface_locking.html", null ], + [ "BodyLockInterfaceNoLock", "class_body_lock_interface_no_lock.html", null ] + ] ], + [ "BodyLockMultiBase< Write, BodyType >", "class_body_lock_multi_base.html", null ], + [ "BodyManager", "class_body_manager.html", null ], + [ "BroadPhaseLayerFilter", "class_broad_phase_layer_filter.html", [ + [ "DefaultBroadPhaseLayerFilter", "class_default_broad_phase_layer_filter.html", null ], + [ "SpecifiedBroadPhaseLayerFilter", "class_specified_broad_phase_layer_filter.html", null ] + ] ], + [ "BroadPhaseLayerInterface", "class_broad_phase_layer_interface.html", [ + [ "BroadPhaseLayerInterfaceMask", "class_broad_phase_layer_interface_mask.html", null ], + [ "BroadPhaseLayerInterfaceTable", "class_broad_phase_layer_interface_table.html", null ] + ] ], + [ "BroadPhaseQuery", "class_broad_phase_query.html", [ + [ "BroadPhase", "class_broad_phase.html", [ + [ "BroadPhaseBruteForce", "class_broad_phase_brute_force.html", null ], + [ "BroadPhaseQuadTree", "class_broad_phase_quad_tree.html", null ] + ] ] + ] ], + [ "CharacterBase", "class_character_base.html", [ + [ "Character", "class_character.html", null ], + [ "CharacterVirtual", "class_character_virtual.html", null ] + ] ], + [ "CharacterVsCharacterCollision", "class_character_vs_character_collision.html", [ + [ "CharacterVsCharacterCollisionSimple", "class_character_vs_character_collision_simple.html", null ] + ] ], + [ "Constraint", "class_constraint.html", [ + [ "TwoBodyConstraint", "class_two_body_constraint.html", [ + [ "ConeConstraint", "class_cone_constraint.html", null ], + [ "DistanceConstraint", "class_distance_constraint.html", null ], + [ "FixedConstraint", "class_fixed_constraint.html", null ], + [ "GearConstraint", "class_gear_constraint.html", null ], + [ "HingeConstraint", "class_hinge_constraint.html", null ], + [ "PathConstraint", "class_path_constraint.html", null ], + [ "PointConstraint", "class_point_constraint.html", null ], + [ "PulleyConstraint", "class_pulley_constraint.html", null ], + [ "RackAndPinionConstraint", "class_rack_and_pinion_constraint.html", null ], + [ "SixDOFConstraint", "class_six_d_o_f_constraint.html", null ], + [ "SliderConstraint", "class_slider_constraint.html", null ], + [ "SwingTwistConstraint", "class_swing_twist_constraint.html", null ] + ] ], + [ "VehicleConstraint", "class_vehicle_constraint.html", null ] + ] ], + [ "ConstraintManager", "class_constraint_manager.html", null ], + [ "ContactConstraintManager", "class_contact_constraint_manager.html", null ], + [ "ConvexHullBuilder", "class_convex_hull_builder.html", null ], + [ "ConvexHullBuilder2D", "class_convex_hull_builder2_d.html", null ], + [ "ConvexHullBuilder::Edge", "class_convex_hull_builder_1_1_edge.html", null ], + [ "ConvexHullBuilder::Face", "class_convex_hull_builder_1_1_face.html", null ], + [ "DebugRenderer", "class_debug_renderer.html", [ + [ "DebugRendererRecorder", "class_debug_renderer_recorder.html", null ], + [ "DebugRendererSimple", "class_debug_renderer_simple.html", null ] + ] ], + [ "EPAConvexHullBuilder", "class_e_p_a_convex_hull_builder.html", null ], + [ "EPAConvexHullBuilder::Triangle", "class_e_p_a_convex_hull_builder_1_1_triangle.html", null ], + [ "EPAConvexHullBuilder::TriangleFactory", "class_e_p_a_convex_hull_builder_1_1_triangle_factory.html", null ], + [ "FixedSizeFreeList< Object >", "class_fixed_size_free_list.html", null ], + [ "GJKClosestPoint", "class_g_j_k_closest_point.html", null ], + [ "IslandBuilder", "class_island_builder.html", null ], + [ "JobSystem", "class_job_system.html", [ + [ "JobSystemSingleThreaded", "class_job_system_single_threaded.html", null ], + [ "JobSystemWithBarrier", "class_job_system_with_barrier.html", [ + [ "JobSystemThreadPool", "class_job_system_thread_pool.html", null ] + ] ] + ] ], + [ "JobSystem::Barrier", "class_job_system_1_1_barrier.html", [ + [ "JobSystemSingleThreaded::BarrierImpl", "class_job_system_single_threaded_1_1_barrier_impl.html", null ] + ] ], + [ "LFHMAllocator", "class_l_f_h_m_allocator.html", null ], + [ "LFHMAllocatorContext", "class_l_f_h_m_allocator_context.html", [ + [ "ContactConstraintManager::ContactAllocator", "class_contact_constraint_manager_1_1_contact_allocator.html", null ] + ] ], + [ "LargeIslandSplitter", "class_large_island_splitter.html", null ], + [ "LockFreeHashMap< Key, Value >", "class_lock_free_hash_map.html", null ], + [ "MutexArray< MutexType >", "class_mutex_array.html", null ], + [ "NarrowPhaseQuery", "class_narrow_phase_query.html", null ], + [ "ObjectLayerFilter", "class_object_layer_filter.html", [ + [ "DefaultObjectLayerFilter", "class_default_object_layer_filter.html", null ], + [ "SpecifiedObjectLayerFilter", "class_specified_object_layer_filter.html", null ] + ] ], + [ "ObjectLayerPairFilter", "class_object_layer_pair_filter.html", [ + [ "ObjectLayerPairFilterMask", "class_object_layer_pair_filter_mask.html", null ], + [ "ObjectLayerPairFilterTable", "class_object_layer_pair_filter_table.html", null ] + ] ], + [ "ObjectStream", "class_object_stream.html", [ + [ "IObjectStreamIn", "class_i_object_stream_in.html", [ + [ "ObjectStreamIn", "class_object_stream_in.html", [ + [ "ObjectStreamBinaryIn", "class_object_stream_binary_in.html", null ], + [ "ObjectStreamTextIn", "class_object_stream_text_in.html", null ] + ] ] + ] ], + [ "IObjectStreamOut", "class_i_object_stream_out.html", [ + [ "ObjectStreamOut", "class_object_stream_out.html", [ + [ "ObjectStreamBinaryOut", "class_object_stream_binary_out.html", null ], + [ "ObjectStreamTextOut", "class_object_stream_text_out.html", null ] + ] ] + ] ] + ] ], + [ "ObjectVsBroadPhaseLayerFilter", "class_object_vs_broad_phase_layer_filter.html", [ + [ "ObjectVsBroadPhaseLayerFilterMask", "class_object_vs_broad_phase_layer_filter_mask.html", null ], + [ "ObjectVsBroadPhaseLayerFilterTable", "class_object_vs_broad_phase_layer_filter_table.html", null ] + ] ], + [ "PhysicsSystem", "class_physics_system.html", null ], + [ "PhysicsSystem::BodiesToSleep", "class_physics_system_1_1_bodies_to_sleep.html", null ], + [ "PhysicsUpdateContext", "class_physics_update_context.html", null ], + [ "ProfileMeasurement", "class_profile_measurement.html", null ], + [ "ProfileSample", "class_profile_sample.html", null ], + [ "ProfileThread", "class_profile_thread.html", null ], + [ "Profiler", "class_profiler.html", null ], + [ "QuadTree", "class_quad_tree.html", null ], + [ "Ragdoll", "class_ragdoll.html", null ], + [ "ScopeExit< F >", "class_scope_exit.html", null ], + [ "SerializableObject", "class_serializable_object.html", [ + [ "ConstraintSettings", "class_constraint_settings.html", [ + [ "TwoBodyConstraintSettings", "class_two_body_constraint_settings.html", [ + [ "ConeConstraintSettings", "class_cone_constraint_settings.html", null ], + [ "DistanceConstraintSettings", "class_distance_constraint_settings.html", null ], + [ "FixedConstraintSettings", "class_fixed_constraint_settings.html", null ], + [ "GearConstraintSettings", "class_gear_constraint_settings.html", null ], + [ "HingeConstraintSettings", "class_hinge_constraint_settings.html", null ], + [ "PathConstraintSettings", "class_path_constraint_settings.html", null ], + [ "PointConstraintSettings", "class_point_constraint_settings.html", null ], + [ "PulleyConstraintSettings", "class_pulley_constraint_settings.html", null ], + [ "RackAndPinionConstraintSettings", "class_rack_and_pinion_constraint_settings.html", null ], + [ "SixDOFConstraintSettings", "class_six_d_o_f_constraint_settings.html", null ], + [ "SliderConstraintSettings", "class_slider_constraint_settings.html", null ], + [ "SwingTwistConstraintSettings", "class_swing_twist_constraint_settings.html", null ] + ] ], + [ "VehicleConstraintSettings", "class_vehicle_constraint_settings.html", null ] + ] ], + [ "GroupFilter", "class_group_filter.html", [ + [ "GroupFilterTable", "class_group_filter_table.html", null ] + ] ], + [ "PathConstraintPath", "class_path_constraint_path.html", [ + [ "PathConstraintPathHermite", "class_path_constraint_path_hermite.html", null ] + ] ], + [ "PhysicsMaterial", "class_physics_material.html", [ + [ "PhysicsMaterialSimple", "class_physics_material_simple.html", null ] + ] ], + [ "ShapeSettings", "class_shape_settings.html", [ + [ "CompoundShapeSettings", "class_compound_shape_settings.html", [ + [ "MutableCompoundShapeSettings", "class_mutable_compound_shape_settings.html", null ], + [ "StaticCompoundShapeSettings", "class_static_compound_shape_settings.html", null ] + ] ], + [ "ConvexShapeSettings", "class_convex_shape_settings.html", [ + [ "BoxShapeSettings", "class_box_shape_settings.html", null ], + [ "CapsuleShapeSettings", "class_capsule_shape_settings.html", null ], + [ "ConvexHullShapeSettings", "class_convex_hull_shape_settings.html", null ], + [ "CylinderShapeSettings", "class_cylinder_shape_settings.html", null ], + [ "SphereShapeSettings", "class_sphere_shape_settings.html", null ], + [ "TaperedCapsuleShapeSettings", "class_tapered_capsule_shape_settings.html", null ], + [ "TaperedCylinderShapeSettings", "class_tapered_cylinder_shape_settings.html", null ], + [ "TriangleShapeSettings", "class_triangle_shape_settings.html", null ] + ] ], + [ "DecoratedShapeSettings", "class_decorated_shape_settings.html", [ + [ "OffsetCenterOfMassShapeSettings", "class_offset_center_of_mass_shape_settings.html", null ], + [ "RotatedTranslatedShapeSettings", "class_rotated_translated_shape_settings.html", null ], + [ "ScaledShapeSettings", "class_scaled_shape_settings.html", null ] + ] ], + [ "HeightFieldShapeSettings", "class_height_field_shape_settings.html", null ], + [ "MeshShapeSettings", "class_mesh_shape_settings.html", null ], + [ "PlaneShapeSettings", "class_plane_shape_settings.html", null ] + ] ], + [ "VehicleControllerSettings", "class_vehicle_controller_settings.html", [ + [ "TrackedVehicleControllerSettings", "class_tracked_vehicle_controller_settings.html", null ], + [ "WheeledVehicleControllerSettings", "class_wheeled_vehicle_controller_settings.html", [ + [ "MotorcycleControllerSettings", "class_motorcycle_controller_settings.html", null ] + ] ] + ] ], + [ "WheelSettings", "class_wheel_settings.html", [ + [ "WheelSettingsTV", "class_wheel_settings_t_v.html", null ], + [ "WheelSettingsWV", "class_wheel_settings_w_v.html", null ] + ] ] + ] ], + [ "Shape", "class_shape.html", [ + [ "CompoundShape", "class_compound_shape.html", [ + [ "MutableCompoundShape", "class_mutable_compound_shape.html", null ], + [ "StaticCompoundShape", "class_static_compound_shape.html", null ] + ] ], + [ "ConvexShape", "class_convex_shape.html", [ + [ "BoxShape", "class_box_shape.html", null ], + [ "CapsuleShape", "class_capsule_shape.html", null ], + [ "ConvexHullShape", "class_convex_hull_shape.html", null ], + [ "CylinderShape", "class_cylinder_shape.html", null ], + [ "SphereShape", "class_sphere_shape.html", null ], + [ "TaperedCapsuleShape", "class_tapered_capsule_shape.html", null ], + [ "TaperedCylinderShape", "class_tapered_cylinder_shape.html", null ], + [ "TriangleShape", "class_triangle_shape.html", null ] + ] ], + [ "DecoratedShape", "class_decorated_shape.html", [ + [ "OffsetCenterOfMassShape", "class_offset_center_of_mass_shape.html", null ], + [ "RotatedTranslatedShape", "class_rotated_translated_shape.html", null ], + [ "ScaledShape", "class_scaled_shape.html", null ] + ] ], + [ "HeightFieldShape", "class_height_field_shape.html", null ], + [ "MeshShape", "class_mesh_shape.html", null ], + [ "PlaneShape", "class_plane_shape.html", null ], + [ "SoftBodyShape", "class_soft_body_shape.html", null ] + ] ], + [ "ShapeFilter", "class_shape_filter.html", [ + [ "ReversedShapeFilter", "class_reversed_shape_filter.html", null ] + ] ], + [ "SharedLock< LockType >", "class_shared_lock.html", null ], + [ "SoftBodyUpdateContext", "class_soft_body_update_context.html", null ], + [ "StreamIn", "class_stream_in.html", [ + [ "StateRecorder", "class_state_recorder.html", [ + [ "StateRecorderImpl", "class_state_recorder_impl.html", null ] + ] ], + [ "StreamInWrapper", "class_stream_in_wrapper.html", null ] + ] ], + [ "StreamOut", "class_stream_out.html", [ + [ "StateRecorder", "class_state_recorder.html", null ], + [ "StreamOutWrapper", "class_stream_out_wrapper.html", null ] + ] ], + [ "TempAllocator", "class_temp_allocator.html", [ + [ "TempAllocatorImpl", "class_temp_allocator_impl.html", null ], + [ "TempAllocatorImplWithMallocFallback", "class_temp_allocator_impl_with_malloc_fallback.html", null ], + [ "TempAllocatorMalloc", "class_temp_allocator_malloc.html", null ] + ] ], + [ "TriangleGrouper", "class_triangle_grouper.html", [ + [ "TriangleGrouperClosestCentroid", "class_triangle_grouper_closest_centroid.html", null ], + [ "TriangleGrouperMorton", "class_triangle_grouper_morton.html", null ] + ] ], + [ "TriangleSplitter", "class_triangle_splitter.html", [ + [ "TriangleSplitterBinning", "class_triangle_splitter_binning.html", null ], + [ "TriangleSplitterFixedLeafSize", "class_triangle_splitter_fixed_leaf_size.html", null ], + [ "TriangleSplitterLongestAxis", "class_triangle_splitter_longest_axis.html", null ], + [ "TriangleSplitterMean", "class_triangle_splitter_mean.html", null ], + [ "TriangleSplitterMorton", "class_triangle_splitter_morton.html", null ] + ] ], + [ "UniqueLock< LockType >", "class_unique_lock.html", null ], + [ "VehicleCollisionTester", "class_vehicle_collision_tester.html", [ + [ "VehicleCollisionTesterCastCylinder", "class_vehicle_collision_tester_cast_cylinder.html", null ], + [ "VehicleCollisionTesterCastSphere", "class_vehicle_collision_tester_cast_sphere.html", null ], + [ "VehicleCollisionTesterRay", "class_vehicle_collision_tester_ray.html", null ] + ] ], + [ "VehicleController", "class_vehicle_controller.html", [ + [ "TrackedVehicleController", "class_tracked_vehicle_controller.html", null ], + [ "WheeledVehicleController", "class_wheeled_vehicle_controller.html", [ + [ "MotorcycleController", "class_motorcycle_controller.html", null ] + ] ] + ] ], + [ "Wheel", "class_wheel.html", [ + [ "WheelTV", "class_wheel_t_v.html", null ], + [ "WheelWV", "class_wheel_w_v.html", null ] + ] ] + ] ], + [ "SoftBodySharedSettings::OptimizationResults", "class_soft_body_shared_settings_1_1_optimization_results.html", null ], + [ "OrientedBox", "class_oriented_box.html", null ], + [ "PhysicsLock", "class_physics_lock.html", null ], + [ "PhysicsSettings", "struct_physics_settings.html", null ], + [ "PhysicsStepListener", "class_physics_step_listener.html", [ + [ "VehicleConstraint", "class_vehicle_constraint.html", null ] + ] ], + [ "Plane", "class_plane.html", null ], + [ "LinearCurve::Point", "class_linear_curve_1_1_point.html", null ], + [ "PathConstraintPathHermite::Point", "struct_path_constraint_path_hermite_1_1_point.html", null ], + [ "PolyhedronSubmergedVolumeCalculator::Point", "class_polyhedron_submerged_volume_calculator_1_1_point.html", null ], + [ "PointConstraintPart", "class_point_constraint_part.html", null ], + [ "PointConvexSupport", "struct_point_convex_support.html", null ], + [ "PolygonConvexSupport< VERTEX_ARRAY >", "struct_polygon_convex_support.html", null ], + [ "PolyhedronSubmergedVolumeCalculator", "class_polyhedron_submerged_volume_calculator.html", null ], + [ "PlaneShape::PSGetTrianglesContext", "struct_plane_shape_1_1_p_s_get_triangles_context.html", null ], + [ "Quat", "class_quat.html", null ], + [ "RackAndPinionConstraintPart", "class_rack_and_pinion_constraint_part.html", null ], + [ "TriangleSplitter::Range", "struct_triangle_splitter_1_1_range.html", null ], + [ "RayCastSettings", "class_ray_cast_settings.html", null ], + [ "RayCastT< Vec, Mat, RayCastType >", "struct_ray_cast_t.html", null ], + [ "RayCastT< RVec3, RMat44, RRayCast >", "struct_ray_cast_t.html", [ + [ "RRayCast", "struct_r_ray_cast.html", null ] + ] ], + [ "RayCastT< Vec3, Mat44, RayCast >", "struct_ray_cast_t.html", [ + [ "RayCast", "struct_ray_cast.html", null ] + ] ], + [ "RayInvDirection", "class_ray_inv_direction.html", null ], + [ "STLAlignedAllocator< T, N >::rebind< T2 >", "struct_s_t_l_aligned_allocator_1_1rebind.html", null ], + [ "STLAllocator< T >::rebind< T2 >", "struct_s_t_l_allocator_1_1rebind.html", null ], + [ "STLTempAllocator< T >::rebind< T2 >", "struct_s_t_l_temp_allocator_1_1rebind.html", null ], + [ "Ref< T >", "class_ref.html", null ], + [ "Ref< Constraint >", "class_ref.html", null ], + [ "Ref< Geometry >", "class_ref.html", null ], + [ "Ref< Job >", "class_ref.html", [ + [ "JobSystem::JobHandle", "class_job_system_1_1_job_handle.html", null ] + ] ], + [ "Ref< RefTargetVirtual >", "class_ref.html", null ], + [ "Ref< Shape >", "class_ref.html", null ], + [ "Ref< Skeleton >", "class_ref.html", null ], + [ "Ref< TwoBodyConstraint >", "class_ref.html", null ], + [ "Ref< TwoBodyConstraintSettings >", "class_ref.html", null ], + [ "Ref< VehicleControllerSettings >", "class_ref.html", null ], + [ "Ref< WheelSettings >", "class_ref.html", null ], + [ "RefConst< T >", "class_ref_const.html", null ], + [ "RefConst< Constraint >", "class_ref_const.html", null ], + [ "RefConst< GroupFilter >", "class_ref_const.html", null ], + [ "RefConst< PathConstraintPath >", "class_ref_const.html", null ], + [ "RefConst< PhysicsMaterial >", "class_ref_const.html", null ], + [ "RefConst< RagdollSettings >", "class_ref_const.html", null ], + [ "RefConst< Shape >", "class_ref_const.html", null ], + [ "RefConst< ShapeSettings >", "class_ref_const.html", null ], + [ "RefConst< Skeleton >", "class_ref_const.html", null ], + [ "RefConst< SoftBodySharedSettings >", "class_ref_const.html", null ], + [ "RefConst< TwoBodyConstraintSettings >", "class_ref_const.html", null ], + [ "RefConst< VehicleCollisionTester >", "class_ref_const.html", null ], + [ "RefConst< WheelSettings >", "class_ref_const.html", null ], + [ "RefTarget< T >", "class_ref_target.html", null ], + [ "RefTarget< CharacterBase >", "class_ref_target.html", [ + [ "CharacterBase", "class_character_base.html", null ] + ] ], + [ "RefTarget< CharacterBaseSettings >", "class_ref_target.html", [ + [ "CharacterBaseSettings", "class_character_base_settings.html", [ + [ "CharacterSettings", "class_character_settings.html", null ], + [ "CharacterVirtualSettings", "class_character_virtual_settings.html", null ] + ] ] + ] ], + [ "RefTarget< Constraint >", "class_ref_target.html", [ + [ "Constraint", "class_constraint.html", null ] + ] ], + [ "RefTarget< ConstraintSettings >", "class_ref_target.html", [ + [ "ConstraintSettings", "class_constraint_settings.html", null ] + ] ], + [ "RefTarget< Geometry >", "class_ref_target.html", [ + [ "DebugRenderer::Geometry", "class_debug_renderer_1_1_geometry.html", null ] + ] ], + [ "RefTarget< GroupFilter >", "class_ref_target.html", [ + [ "GroupFilter", "class_group_filter.html", null ] + ] ], + [ "RefTarget< PathConstraintPath >", "class_ref_target.html", [ + [ "PathConstraintPath", "class_path_constraint_path.html", null ] + ] ], + [ "RefTarget< PhysicsMaterial >", "class_ref_target.html", [ + [ "PhysicsMaterial", "class_physics_material.html", null ] + ] ], + [ "RefTarget< PhysicsScene >", "class_ref_target.html", [ + [ "PhysicsScene", "class_physics_scene.html", null ] + ] ], + [ "RefTarget< Ragdoll >", "class_ref_target.html", [ + [ "Ragdoll", "class_ragdoll.html", null ] + ] ], + [ "RefTarget< RagdollSettings >", "class_ref_target.html", [ + [ "RagdollSettings", "class_ragdoll_settings.html", null ] + ] ], + [ "RefTarget< Shape >", "class_ref_target.html", [ + [ "Shape", "class_shape.html", null ] + ] ], + [ "RefTarget< ShapeSettings >", "class_ref_target.html", [ + [ "ShapeSettings", "class_shape_settings.html", null ] + ] ], + [ "RefTarget< SkeletalAnimation >", "class_ref_target.html", [ + [ "SkeletalAnimation", "class_skeletal_animation.html", null ] + ] ], + [ "RefTarget< Skeleton >", "class_ref_target.html", [ + [ "Skeleton", "class_skeleton.html", null ] + ] ], + [ "RefTarget< SkeletonMapper >", "class_ref_target.html", [ + [ "SkeletonMapper", "class_skeleton_mapper.html", null ] + ] ], + [ "RefTarget< SoftBodySharedSettings >", "class_ref_target.html", [ + [ "SoftBodySharedSettings", "class_soft_body_shared_settings.html", null ] + ] ], + [ "RefTarget< VehicleCollisionTester >", "class_ref_target.html", [ + [ "VehicleCollisionTester", "class_vehicle_collision_tester.html", null ] + ] ], + [ "RefTarget< VehicleController >", "class_ref_target.html", [ + [ "VehicleController", "class_vehicle_controller.html", null ] + ] ], + [ "RefTarget< VehicleControllerSettings >", "class_ref_target.html", [ + [ "VehicleControllerSettings", "class_vehicle_controller_settings.html", null ] + ] ], + [ "RefTarget< WheelSettings >", "class_ref_target.html", [ + [ "WheelSettings", "class_wheel_settings.html", null ] + ] ], + [ "RefTargetVirtual", "class_ref_target_virtual.html", null ], + [ "Result< Type >", "class_result.html", null ], + [ "Result< Ref< Shape > >", "class_result.html", null ], + [ "RotationEulerConstraintPart", "class_rotation_euler_constraint_part.html", null ], + [ "RotationQuatConstraintPart", "class_rotation_quat_constraint_part.html", null ], + [ "RTTI", "class_r_t_t_i.html", null ], + [ "SoftBodyShape::SBSGetTrianglesContext", "struct_soft_body_shape_1_1_s_b_s_get_triangles_context.html", null ], + [ "Semaphore", "class_semaphore.html", null ], + [ "SerializableAttribute", "class_serializable_attribute.html", null ], + [ "ShapeCastT< Vec, Mat, ShapeCastType >", "struct_shape_cast_t.html", null ], + [ "ShapeCastT< RVec3, RMat44, RShapeCast >", "struct_shape_cast_t.html", [ + [ "RShapeCast", "struct_r_shape_cast.html", null ] + ] ], + [ "ShapeCastT< Vec3, Mat44, ShapeCast >", "struct_shape_cast_t.html", [ + [ "ShapeCast", "struct_shape_cast.html", null ] + ] ], + [ "ShapeFunctions", "class_shape_functions.html", null ], + [ "SkeletonPose", "class_skeleton_pose.html", null ], + [ "SoftBodySharedSettings::Skinned", "class_soft_body_shared_settings_1_1_skinned.html", null ], + [ "SoftBodySharedSettings::SkinWeight", "class_soft_body_shared_settings_1_1_skin_weight.html", null ], + [ "SoftBodyContactListener", "class_soft_body_contact_listener.html", null ], + [ "SoftBodyContactSettings", "class_soft_body_contact_settings.html", null ], + [ "SoftBodyCreationSettings", "class_soft_body_creation_settings.html", null ], + [ "SoftBodyManifold", "class_soft_body_manifold.html", null ], + [ "SoftBodyVertex", "class_soft_body_vertex.html", null ], + [ "Sphere", "class_sphere.html", null ], + [ "LargeIslandSplitter::Split", "struct_large_island_splitter_1_1_split.html", null ], + [ "LargeIslandSplitter::Splits", "class_large_island_splitter_1_1_splits.html", null ], + [ "SpringPart", "class_spring_part.html", null ], + [ "SpringSettings", "class_spring_settings.html", null ], + [ "StateRecorderFilter", "class_state_recorder_filter.html", null ], + [ "StaticArray< T, N >", "class_static_array.html", [ + [ "EPAConvexHullBuilder::Points", "class_e_p_a_convex_hull_builder_1_1_points.html", null ], + [ "EPAConvexHullBuilder::TriangleQueue", "class_e_p_a_convex_hull_builder_1_1_triangle_queue.html", null ] + ] ], + [ "StaticArray< BodyPairQueue, cMaxConcurrency >", "class_static_array.html", null ], + [ "StaticArray< CollideShapeResult, cMaxDelayedResults >", "class_static_array.html", null ], + [ "StaticArray< Impulse, ContactPoints::Capacity >", "class_static_array.html", null ], + [ "StaticArray< JobHandle, cMaxConcurrency >", "class_static_array.html", null ], + [ "StaticArray< Part, 3 >", "class_static_array.html", null ], + [ "StaticArray< RTTI::BaseClass, 4 >", "class_static_array.html", null ], + [ "StaticArray< SerializableAttribute, 32 >", "class_static_array.html", null ], + [ "StaticArray< Vec3, 1026 >", "class_static_array.html", null ], + [ "StaticArray< Vec3, 32 >", "class_static_array.html", null ], + [ "StaticArray< Vec3, 384 >", "class_static_array.html", null ], + [ "StaticArray< Vec3, 64 >", "class_static_array.html", null ], + [ "StaticArray< Vec3, cMaxPointsInHull >", "class_static_array.html", null ], + [ "StaticArray< Voided, cMaxVoidedFeatures >", "class_static_array.html", null ], + [ "StaticArray< WorldContactPoint, MaxContactPoints >", "class_static_array.html", null ], + [ "Shape::Stats", "struct_shape_1_1_stats.html", null ], + [ "TriangleSplitter::Stats", "struct_triangle_splitter_1_1_stats.html", null ], + [ "PhysicsUpdateContext::Step", "struct_physics_update_context_1_1_step.html", null ], + [ "STLAlignedAllocator< T, N >", "class_s_t_l_aligned_allocator.html", null ], + [ "STLAllocator< T >", "class_s_t_l_allocator.html", [ + [ "Array< IndexedTriangle >", "class_array.html", null ], + [ "Array< ResultType >", "class_array.html", null ], + [ "Array< Body * >", "class_array.html", null ], + [ "Array< uint8 >", "class_array.html", null ], + [ "Array< BodyID >", "class_array.html", null ], + [ "Array< Mapping >", "class_array.html", null ], + [ "Array< const char * >", "class_array.html", null ], + [ "Array< BroadPhaseLayer >", "class_array.html", null ], + [ "Array< Contact >", "class_array.html", null ], + [ "Array< CharacterVirtual * >", "class_array.html", null ], + [ "Array< SubShape >", "class_array.html", null ], + [ "Array< SubShapeSettings >", "class_array.html", null ], + [ "Array< Ref< Constraint > >", "class_array.html", null ], + [ "Array< Face * >", "class_array.html", null ], + [ "Array< Coplanar >", "class_array.html", null ], + [ "Array< int >", "class_array.html", null ], + [ "Array< Point >", "class_array.html", null ], + [ "Array< Face >", "class_array.html", null ], + [ "Array< Plane >", "class_array.html", null ], + [ "Array< Vec3 >", "class_array.html", null ], + [ "Array< DebugRenderer::LOD >", "class_array.html", null ], + [ "Array< DebugRendererRecorder::Frame >", "class_array.html", null ], + [ "Array< DebugRendererRecorder::LineBlob >", "class_array.html", null ], + [ "Array< DebugRendererRecorder::TriangleBlob >", "class_array.html", null ], + [ "Array< DebugRendererRecorder::TextBlob >", "class_array.html", null ], + [ "Array< DebugRendererRecorder::GeometryBlob >", "class_array.html", null ], + [ "Array< Triangle >", "class_array.html", null ], + [ "Array< float >", "class_array.html", null ], + [ "Array< RefConst< PhysicsMaterial > >", "class_array.html", null ], + [ "Array< Ref >", "class_array.html", null ], + [ "Array< thread >", "class_array.html", null ], + [ "Array< Float3 >", "class_array.html", null ], + [ "Array< Bounds >", "class_array.html", null ], + [ "Array< Link >", "class_array.html", null ], + [ "Array< AttributeDescription >", "class_array.html", null ], + [ "Array< BodyCreationSettings >", "class_array.html", null ], + [ "Array< PhysicsScene::ConnectedConstraint >", "class_array.html", null ], + [ "Array< SoftBodyCreationSettings >", "class_array.html", null ], + [ "Array< PhysicsStepListener * >", "class_array.html", null ], + [ "Array< ProfileThread * >", "class_array.html", null ], + [ "Array< Ref< TwoBodyConstraint > >", "class_array.html", null ], + [ "Array< Part >", "class_array.html", null ], + [ "Array< AdditionalConstraint >", "class_array.html", null ], + [ "Array< BodyIdxPair >", "class_array.html", null ], + [ "Array< AnimatedJoint >", "class_array.html", null ], + [ "Array< Keyframe >", "class_array.html", null ], + [ "Array< Joint >", "class_array.html", null ], + [ "Array< Chain >", "class_array.html", null ], + [ "Array< Unmapped >", "class_array.html", null ], + [ "Array< Locked >", "class_array.html", null ], + [ "Array< JointState >", "class_array.html", null ], + [ "Array< Mat44 >", "class_array.html", null ], + [ "Array< SoftBodyVertex >", "class_array.html", null ], + [ "Array< CollidingShape >", "class_array.html", null ], + [ "Array< SkinState >", "class_array.html", null ], + [ "Array< SoftBodySharedSettings::Vertex >", "class_array.html", null ], + [ "Array< SoftBodySharedSettings::Face >", "class_array.html", null ], + [ "Array< SoftBodySharedSettings::Edge >", "class_array.html", null ], + [ "Array< SoftBodySharedSettings::DihedralBend >", "class_array.html", null ], + [ "Array< SoftBodySharedSettings::Volume >", "class_array.html", null ], + [ "Array< SoftBodySharedSettings::Skinned >", "class_array.html", null ], + [ "Array< SoftBodySharedSettings::InvBind >", "class_array.html", null ], + [ "Array< SoftBodySharedSettings::LRA >", "class_array.html", null ], + [ "Array< ClosestKinematic >", "class_array.html", null ], + [ "Array< UpdateGroup >", "class_array.html", null ], + [ "Array< uint32 >", "class_array.html", null ], + [ "Array< uint >", "class_array.html", null ], + [ "Array< Node >", "class_array.html", null ], + [ "Array< Bin >", "class_array.html", null ], + [ "Array< Wheel * >", "class_array.html", null ], + [ "Array< VehicleAntiRollBar >", "class_array.html", null ], + [ "Array< Ref< WheelSettings > >", "class_array.html", null ], + [ "Array< VehicleDifferentialSettings >", "class_array.html", null ], + [ "Array< T, Allocator >", "class_array.html", [ + [ "ByteBuffer", "class_byte_buffer.html", null ] + ] ] + ] ], + [ "STLAllocator< AdditionalConstraint >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< AnimatedJoint >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< AttributeDescription >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Bin >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Body * >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< BodyCreationSettings >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< BodyID >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< BodyIdxPair >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Bounds >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< BroadPhaseLayer >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Chain >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< CharacterVirtual * >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< ClosestKinematic >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< CollidingShape >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< const char * >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Contact >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Coplanar >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< DebugRenderer::LOD >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< DebugRendererRecorder::Frame >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< DebugRendererRecorder::GeometryBlob >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< DebugRendererRecorder::LineBlob >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< DebugRendererRecorder::TextBlob >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< DebugRendererRecorder::TriangleBlob >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Face * >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Face >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< float >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Float3 >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< IndexedTriangle >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< int >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Joint >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< JointState >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Keyframe >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Link >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Locked >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Mapping >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Mat44 >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Node >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Part >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< PhysicsScene::ConnectedConstraint >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< PhysicsStepListener * >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Plane >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Point >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< ProfileThread * >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Ref >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Ref< Constraint > >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Ref< TwoBodyConstraint > >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Ref< WheelSettings > >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< RefConst< PhysicsMaterial > >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< ResultType >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SkinState >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SoftBodyCreationSettings >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SoftBodySharedSettings::DihedralBend >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SoftBodySharedSettings::Edge >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SoftBodySharedSettings::Face >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SoftBodySharedSettings::InvBind >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SoftBodySharedSettings::LRA >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SoftBodySharedSettings::Skinned >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SoftBodySharedSettings::Vertex >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SoftBodySharedSettings::Volume >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SoftBodyVertex >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SubShape >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< SubShapeSettings >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< thread >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Triangle >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< uint >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< uint32 >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< uint8 >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Unmapped >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< UpdateGroup >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Vec3 >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< VehicleAntiRollBar >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< VehicleDifferentialSettings >", "class_s_t_l_allocator.html", null ], + [ "STLAllocator< Wheel * >", "class_s_t_l_allocator.html", null ], + [ "STLTempAllocator< T >", "class_s_t_l_temp_allocator.html", null ], + [ "STLTempAllocator< Step >", "class_s_t_l_temp_allocator.html", [ + [ "Array< Step, STLTempAllocator< Step > >", "class_array.html", null ] + ] ], + [ "StaticArray< T, N >::Storage", "struct_static_array_1_1_storage.html", null ], + [ "CompoundShape::SubShape", "struct_compound_shape_1_1_sub_shape.html", null ], + [ "SubShapeID", "class_sub_shape_i_d.html", null ], + [ "SubShapeIDCreator", "class_sub_shape_i_d_creator.html", null ], + [ "SubShapeIDPair", "class_sub_shape_i_d_pair.html", null ], + [ "CompoundShapeSettings::SubShapeSettings", "struct_compound_shape_settings_1_1_sub_shape_settings.html", null ], + [ "ConvexShape::Support", "class_convex_shape_1_1_support.html", [ + [ "BoxShape::Box", "class_box_shape_1_1_box.html", null ], + [ "CapsuleShape::CapsuleNoConvex", "class_capsule_shape_1_1_capsule_no_convex.html", null ], + [ "CapsuleShape::CapsuleWithConvex", "class_capsule_shape_1_1_capsule_with_convex.html", null ], + [ "ConvexHullShape::HullNoConvex", "class_convex_hull_shape_1_1_hull_no_convex.html", null ], + [ "ConvexHullShape::HullWithConvex", "class_convex_hull_shape_1_1_hull_with_convex.html", null ], + [ "ConvexHullShape::HullWithConvexScaled", "class_convex_hull_shape_1_1_hull_with_convex_scaled.html", null ], + [ "CylinderShape::Cylinder", "class_cylinder_shape_1_1_cylinder.html", null ], + [ "SphereShape::SphereNoConvex", "class_sphere_shape_1_1_sphere_no_convex.html", null ], + [ "SphereShape::SphereWithConvex", "class_sphere_shape_1_1_sphere_with_convex.html", null ], + [ "TaperedCapsuleShape::TaperedCapsule", "class_tapered_capsule_shape_1_1_tapered_capsule.html", null ], + [ "TaperedCylinderShape::TaperedCylinder", "class_tapered_cylinder_shape_1_1_tapered_cylinder.html", null ], + [ "TriangleShape::TriangleNoConvex", "class_triangle_shape_1_1_triangle_no_convex.html", null ], + [ "TriangleShape::TriangleWithConvex", "class_triangle_shape_1_1_triangle_with_convex.html", null ] + ] ], + [ "ConvexShape::SupportBuffer", "class_convex_shape_1_1_support_buffer.html", null ], + [ "SwingTwistConstraintPart", "class_swing_twist_constraint_part.html", null ], + [ "TaperedCylinderShape::TCSGetTrianglesContext", "class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html", null ], + [ "DebugRendererRecorder::TextBlob", "struct_debug_renderer_recorder_1_1_text_blob.html", null ], + [ "QuadTree::Tracking", "struct_quad_tree_1_1_tracking.html", null ], + [ "TransformedConvexObject< ConvexObject >", "struct_transformed_convex_object.html", null ], + [ "TransformedShape", "class_transformed_shape.html", null ], + [ "DebugRenderer::Triangle", "class_debug_renderer_1_1_triangle.html", null ], + [ "Triangle", "class_triangle.html", null ], + [ "DebugRendererRecorder::TriangleBlob", "struct_debug_renderer_recorder_1_1_triangle_blob.html", null ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlock", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.html", null ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html", null ], + [ "TriangleCodecIndexed8BitPackSOA4Flags", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html", null ], + [ "TriangleConvexSupport", "struct_triangle_convex_support.html", null ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html", null ], + [ "TriangleShape::TSGetTrianglesContext", "class_triangle_shape_1_1_t_s_get_triangles_context.html", null ], + [ "SkeletonMapper::Unmapped", "class_skeleton_mapper_1_1_unmapped.html", null ], + [ "BroadPhase::UpdateState", "struct_broad_phase_1_1_update_state.html", null ], + [ "QuadTree::UpdateState", "struct_quad_tree_1_1_update_state.html", null ], + [ "UVec4", "class_u_vec4.html", null ], + [ "UVec8", "class_u_vec8.html", null ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext", "class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html", null ], + [ "Vec3", "class_vec3.html", null ], + [ "Vec4", "class_vec4.html", null ], + [ "Vec8", "class_vec8.html", null ], + [ "Vector< Rows >", "class_vector.html", null ], + [ "Vector< 2 >", "class_vector.html", null ], + [ "VehicleAntiRollBar", "class_vehicle_anti_roll_bar.html", null ], + [ "VehicleDifferentialSettings", "class_vehicle_differential_settings.html", null ], + [ "VehicleEngineSettings", "class_vehicle_engine_settings.html", [ + [ "VehicleEngine", "class_vehicle_engine.html", null ] + ] ], + [ "VehicleTrackSettings", "class_vehicle_track_settings.html", [ + [ "VehicleTrack", "class_vehicle_track.html", null ] + ] ], + [ "VehicleTransmissionSettings", "class_vehicle_transmission_settings.html", [ + [ "VehicleTransmission", "class_vehicle_transmission.html", null ] + ] ], + [ "DebugRenderer::Vertex", "class_debug_renderer_1_1_vertex.html", null ], + [ "SoftBodySharedSettings::Vertex", "struct_soft_body_shared_settings_1_1_vertex.html", null ], + [ "SoftBodySharedSettings::VertexAttributes", "struct_soft_body_shared_settings_1_1_vertex_attributes.html", null ], + [ "TriangleCodecIndexed8BitPackSOA4Flags::VertexData", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.html", null ], + [ "SoftBodySharedSettings::Volume", "struct_soft_body_shared_settings_1_1_volume.html", null ], + [ "mutex", null, [ + [ "Mutex", "class_mutex.html", null ] + ] ], + [ "shared_mutex", null, [ + [ "SharedMutex", "class_shared_mutex.html", null ] + ] ] +]; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..dc720084f --- /dev/null +++ b/index.html @@ -0,0 +1,873 @@ + + + + + + + +Jolt Physics: Jolt Physics + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Jolt Physics
+
+
+ +

+

+Architecture of Jolt Physics

+

For demos and videos go to the Samples section.

+

+Bodies

+

We use a pretty traditional physics engine setup, so bodies in our simulation are objects which have attached collision shapes

+

+Types

+

Bodies can either be:

+

Moving bodies have a MotionProperties object that contains information about the movement of the object. Static bodies do not have this to save space (but they can be configured to have it if a static body needs to become dynamic during its lifetime by setting BodyCreationSettings::mAllowDynamicOrKinematic).

+

+Creating Bodies

+

Bodies are inserted into the PhysicsSystem and interacted with through the BodyInterface.

+

The general life cycle of a body is:

+ +

If you need to add many bodies at the same time then use the batching functions:

+ +

Always use the batch adding functions when possible! Adding many bodies, one at a time, results in a really inefficient broadphase and in the worst case can lead to missed collisions (an assert will trigger if this is the case). If you cannot avoid adding many bodies one at a time, use PhysicsSystem::OptimizeBroadPhase to rebuild the tree.

+

You can call AddBody, RemoveBody, AddBody, RemoveBody to temporarily remove and later reinsert a body into the simulation.

+

+Multithreaded Access

+

Jolt is designed to be accessed from multiple threads so the body interface comes in two flavors: A locking and a non-locking variant. The locking variant uses a mutex array (a fixed size array of mutexes, bodies are associated with a mutex through hashing and multiple bodies use the same mutex, see MutexArray) to prevent concurrent access to the same body. The non-locking variant doesn't use mutexes, so requires the user to be careful.

+

In general, body ID's (BodyID) are used to refer to bodies. You can access a body through the following construct:

JPH::BodyLockInterface lock_interface = physics_system.GetBodyLockInterface(); // Or GetBodyLockInterfaceNoLock
+JPH::BodyID body_id = ...; // Obtain ID to body
+
+// Scoped lock
+{
+    JPH::BodyLockRead lock(lock_interface, body_id);
+    if (lock.Succeeded()) // body_id may no longer be valid
+    {
+        const JPH::Body &body = lock.GetBody();
+
+        // Do something with body
+        ...
+    }
+}
+

When another thread has removed the body between the time the body ID was obtained and the lock, the lock will fail. While the lock is taken, other threads cannot modify the body, so it is safe to work with it. Each body ID contains a sequence number, so body ID's will only be reused after many add/remove cycles. To write to a body use BodyLockWrite.

+

You cannot use BodyLockRead to lock multiple bodies (if two threads lock the same bodies in opposite order you'll get a deadlock). Use BodyLockMultiRead or BodyLockMultiWrite to lock them in a consistent order.

+

Note that a lot of convenience functions are exposed through the BodyInterface, but not all functionality is available, so you may need to lock the body to get the pointer and then call the function directly on the body.

+

+Single Threaded Access

+

If you're only accessing the physics system from a single thread, you can use Body pointers instead of BodyID's. In this case you can also use the non-locking variant of the body interface.

+

Note that there are still some restrictions:

+
    +
  • You cannot read from / write to bodies or constraints while PhysicsSystem::Update is running. As soon as the Update starts, all body / constraint mutexes are locked.
  • +
  • Collision callbacks (see ContactListener) are called from within the PhysicsSystem::Update call from multiple threads. You can only read the body data during a callback.
  • +
  • Activation callbacks (see BodyActivationListener) are called in the same way. Again you should only read the body during the callback and not make any modifications.
  • +
  • Step callbacks (see PhysicsStepListener) are also called from PhysicsSystem::Update from multiple threads. You're responsible for making sure that there are no race conditions. In a step listener you can read/write bodies or constraints but you cannot add/remove them.
  • +
+

If you are accessing the physics system from multiple threads, you should probably use BodyID's and the locking variant of the body interface. It is however still possible to use Body pointers if you're really careful. E.g. if there is a clear owner of a Body and you ensure that this owner does not read/write state during PhysicsSystem::Update or while other threads are reading the Body there will not be any race conditions.

+

+Shapes

+

Each body has a shape attached that determines the collision volume. The following shapes are available (in order of computational complexity):

+
    +
  • SphereShape - A sphere centered around zero.
  • +
  • BoxShape - A box centered around zero.
  • +
  • CapsuleShape - A capsule centered around zero.
  • +
  • TaperedCapsuleShape - A capsule with different radii at the bottom and top.
  • +
  • CylinderShape - A cylinder shape. Note that cylinders are the least stable of all shapes, so use another shape if possible.
  • +
  • TaperedCylinderShape - A cylinder with different radii at the bottom and top. Note that cylinders are the least stable of all shapes, so use another shape if possible.
  • +
  • ConvexHullShape - A convex hull defined by a set of points.
  • +
  • TriangleShape - A single triangle. Use a MeshShape if you have multiple triangles.
  • +
  • PlaneShape - An infinite plane. Negative half space is considered solid.
  • +
  • StaticCompoundShape - A shape containing other shapes. This shape is constructed once and cannot be changed afterwards. Child shapes are organized in a tree to speed up collision detection.
  • +
  • MutableCompoundShape - A shape containing other shapes. This shape can be constructed/changed at runtime and trades construction time for runtime performance. Child shapes are organized in a list to make modification easy.
  • +
  • MeshShape - A shape consisting of triangles. They are mostly used for static geometry.
  • +
  • HeightFieldShape - A shape consisting of NxN points that define the height at each point, very suitable for representing hilly terrain. Any body that uses this shape needs to be static.
  • +
+

Next to this there are a number of decorator shapes that change the behavior of their children:

+
    +
  • ScaledShape - This shape can scale a child shape. Note that if a shape is rotated first and then scaled, you can introduce shearing which is not supported by the library.
  • +
  • RotatedTranslatedShape - This shape can rotate and translate a child shape, it can e.g. be used to offset a sphere from the origin.
  • +
  • OffsetCenterOfMassShape - This shape does not change its child shape but it does shift the calculated center of mass for that shape. It allows you to e.g. shift the center of mass of a vehicle down to improve its handling.
  • +
+

+Dynamic Mesh Shapes

+

Meshes are usually static, but they can be made kinematic or dynamic provided that they don't collide with other mesh- or heightfield shapes (an assert will trigger when this happens and the collision will be ignored).

+

Mesh shapes also cannot calculate their mass and inertia, so when you want a dynamic mesh, you need to provide these yourself by setting BodyCreationSettings::mOverrideMassProperties = EOverrideMassProperties::MassAndInertiaProvided and supplying the mass and inertia in BodyCreationSettings::mMassPropertiesOverride.

+

An example can be found here.

+

Note that you should try to avoid dynamic mesh shapes as they are fairly expensive to simulate. Also, mesh shapes don't have a clear inside/outside so a mesh is only considered to be colliding when one of its triangles intersect with the other object. This can result in objects getting stuck inside the mesh without knowing which way is out.

+

+Creating Shapes

+

Simple shapes like spheres and boxes can be constructed immediately by simply new-ing them. Other shapes need to be converted into an optimized format in order to be usable in the physics simulation. The uncooked data is usually stored in a ShapeSettings object and then converted to cooked format by a Create function that returns a Result object that indicates success or failure and provides the cooked object.

+

Creating a convex hull for example looks like:

// Shapes are refcounted and can be shared between bodies
+JPH::Ref<Shape> shape;
+
+// The ShapeSettings object is only required for building the shape, all information is copied into the Shape class
+{
+    // Create an array of vertices
+    JPH::Array<JPH::Vec3> vertices = { ... };
+
+    // Create the settings object for a convex hull
+    JPH::ConvexHullShapeSettings settings(vertices, JPH::cDefaultConvexRadius);
+
+    // Create shape
+    JPH::Shape::ShapeResult result = settings.Create();
+    if (result.IsValid())
+        shape = result.Get();
+    else
+        ... // Error handling
+}
+

Note that after you call Create, the shape is cached and ShapeSettings keeps a reference to your shape (see Memory Management). If you call Create again, the same shape will be returned regardless of what changed to the settings object (unless you call ClearCachedResult to clear the cache).

+

+Saving Shapes

+

There are two ways of serializing data:

+
    +
  • The uncooked data can be serialized using the ObjectStream system (either in binary or in text format), data stored in this way is likely to be compatible with future versions of the library (although there is no 100% guarantee of this).
  • +
  • The cooked data can be serialized using the SaveBinaryState interface that various objects provide. Data stored in this way is optimized for simulation performance and loading speed but is very likely to change between versions of the library, so this should never be your primary data format.
  • +
+

An example of saving a shape in binary format:

// Create a sphere of radius 1
+JPH::Ref<Shape> sphere = new JPH::SphereShape(1.0f);
+
+// For this example we'll be saving the shape in a STL string stream, but if you implement StreamOut you don't have to use STL.
+stringstream data;
+JPH::StreamOutWrapper stream_out(data);
+
+// Save the shape (note this function handles CompoundShape too).
+// The maps are there to avoid saving the same shape twice (it will assign an ID to each shape the first time it encounters them).
+// If you don't want certain shapes to be saved, add them to the map and give them an ID.
+// You can save many shapes to the same stream by repeatedly calling SaveWithChildren on different shapes.
+JPH::Shape::ShapeToIDMap shape_to_id;
+JPH::Shape::MaterialToIDMap material_to_id;
+sphere->SaveWithChildren(stream_out, shape_to_id, material_to_id);
+
+// Wrap the STL stream in a StreamIn
+JPH::StreamInWrapper stream_in(data);
+
+// Load the shape
+// If you have assigned custom ID's on save, you need to ensure that the shapes exist in this map on restore too.
+JPH::Shape::IDToShapeMap id_to_shape;
+JPH::Shape::IDToMaterialMap id_to_material;
+JPH::Shape::ShapeResult result = JPH::Shape::sRestoreWithChildren(stream_in, id_to_shape, id_to_material);
+
+JPH::Ref<Shape> restored_shape;
+if (result.IsValid())
+    restored_shape = result.Get();
+else
+    ... // Error handling
+

As the library does not offer an exporter from content creation packages and since most games will have their own content pipeline, we encourage you to store data in your own format, cook data while cooking the game data and store the result using the SaveBinaryState interface (and provide a way to force a re-cook when the library is updated).

+

+Convex Radius

+

In order to speed up the collision detection system, all convex shapes use a convex radius. The provided shape will first be shrunken by the convex radius and then inflated again by the same amount, resulting in a rounded off shape:

+
+ +
+In this example a box (green) was created with a fairly large convex radius. The shape is shrunken first (dashed green line) and then inflated again equally on all sides. The resulting shape as seen by the collision detection system is shown in blue. A larger convex radius results in better performance but a less accurate simulation. A convex radius of 0 is allowed.
+

+Center of Mass

+

Beware: When a shape is created, it will automatically recenter itself around its center of mass. The center of mass can be obtained by calling Shape::GetCenterOfMass and most functions operate in this Center of Mass (COM) space. Some functions work in the original space the shape was created in, they usually have World Space (WS) or Shape Space (SS) in their name (or documentation).

+
+ +
+Shape Center of Mass
+

As an example, say we create a box and then translate it:

// Create box of 2x2x2 m (you specify half the side)
+JPH::BoxShapeSettings box(JPH::Vec3(1, 1, 1));
+JPH::Ref<Shape> box_shape = box.Create().Get();
+
+// Offset it by 10 m
+JPH::RotatedTranslatedShapeSettings translated_box(JPH::Vec3(10, 0, 0), JPH::Quat::sIdentity(), box_shape);
+JPH::Ref<Shape> translated_box_shape = translated_box.Create().Get();
+
+// Cast a ray against the offset box (WRONG!)
+JPH::RayCast ray;
+ray.mOrigin = JPH::Vec3(10, 2, 0);
+ray.mDirection = JPH::Vec3(0, -2, 0);
+
+// Cast ray
+JPH::RayCastResult hit;
+bool had_hit = translated_box_shape->CastRay(ray, JPH::SubShapeIDCreator(), hit);
+JPH_ASSERT(!had_hit); // There's no hit because we did not correct for COM!
+
+// Convert the ray to center of mass space for the shape (CORRECT!)
+ray.mOrigin -= translated_box_shape->GetCenterOfMass();
+
+// Cast ray
+had_hit = translated_box_shape->CastRay(ray, JPH::SubShapeIDCreator(), hit);
+JPH_ASSERT(had_hit); // Ray was in COM space, now there's a hit!
+

In the same way calling:

translated_box_shape->GetLocalBounds();
+

will return a box of size 2x2x2 centered around the origin, so in order to get it back to the space in which it was originally created you need to offset the bounding box:

JPH::AABox shape_bounds = translated_box_shape->GetLocalBounds();
+shape_bounds.Translate(translated_box_shape->GetCenterOfMass());
+JPH_ASSERT(shape_bounds == JPH::AABox(JPH::Vec3(9, -1, -1), JPH::Vec3(11, 1, 1))); // Now we have the box relative to how we created it
+

Note that when you work with interface of BroadPhaseQuery, NarrowPhaseQuery or TransformedShape this transformation is done for you.

+

+Scaling Shapes

+

Shapes can be scaled using the ScaledShape class. You can scale a shape like:

JPH::RefConst<Shape> my_scaled_shape = new JPH::ScaledShape(my_non_scaled_shape, JPH::Vec3(x_scale, y_scale, z_scale));
+

Not all scales are valid for every shape. Use Shape::IsValidScale to check if a scale is valid for a particular shape (the documentation for this function also lists the rules for all shape types).

+

A safer way of scaling shapes is provided by the Shape::ScaleShape function:

JPH::Shape::ShapeResult my_scaled_shape = my_non_scaled_shape->ScaleShape(JPH::Vec3(x_scale, y_scale, z_scale));
+

This function will check if a scale is valid for a particular shape and if a scale is not valid, it will produce the closest scale that is valid. For example, if you scale a CompoundShape that has rotated sub shapes, a non-uniform scale would cause shearing. In that case the Shape::ScaleShape function will create a new compound shape and scale the sub shapes (losing the shear) rather than creating a ScaledShape around the entire CompoundShape.

+

Updating scaling after a body is created is also possible, but should be done with care. Imagine a sphere in a pipe, scaling the sphere so that it becomes bigger than the pipe creates an impossible situation as there is no way to resolve the collision anymore. Please take a look at the DynamicScaledShape demo. The reason that no ScaledShape::SetScale function exists is to ensure thread safety when collision queries are being executed while shapes are modified.

+

Note that there are many functions that take a scale in Jolt (e.g. CollisionDispatch::sCollideShapeVsShape), usually the shape is scaled relative to its center of mass. The Shape::ScaleShape function scales the shape relative to the origin of the shape.

+

+Creating Custom Shapes

+

If the defined Shape classes are not sufficient, or if your application can make a more efficient implementation because it has specific domain knowledge, it is possible to create a custom collision shape:

+ +

+Sensors

+

Sensors are normal rigid bodies that report contacts with other Dynamic or Kinematic bodies through the ContactListener interface. Any detected penetrations will however not be resolved. Sensors can be used to implement triggers that detect when an object enters their area.

+

The cheapest sensor has a Static motion type. This type of sensor will only detect active bodies entering their area. As soon as a body goes to sleep, the contact will be lost. Note that you can still move a Static sensor around using BodyInterface::SetPosition.

+

When you make a sensor Kinematic or Dynamic and activate it, it will also detect collisions with sleeping bodies, albeit with a higher run-time cost.

+

To create a sensor, either set BodyCreationSettings::mIsSensor to true when constructing a body or set it after construction through Body::SetIsSensor. A sensor can only use the discrete motion quality type at this moment.

+

To make sensors detect collisions with static objects, set the BodyCreationSettings::mCollideKinematicVsNonDynamic to true or call Body::SetCollideKinematicVsNonDynamic. Note that it can place a large burden on the collision detection system if you have a large sensor intersect with e.g. a large mesh terrain or a height field as you will get many contact callbacks and these contacts will take up a lot of space in the contact cache. Ensure that your sensor is in an object layer that collides with as few static bodies as possible.

+

+Sleeping

+

During the simulation step, bodies are divided in 'islands'. Each island consists of a set of dynamic bodies that are either in contact with each other, or that are connected through a constraint:

+
+ +
+Simulation islands are enclosed by a red box. Note that the floor is static so not part of an island.
+

At the end of each step, all the bodies in an island are checked to see if they have come to rest, if this is the case then the entire island is put to sleep. When a body is sleeping, it can still detect collisions with other objects that are not sleeping, but it will not move or otherwise participate in the simulation to conserve CPU cycles. Sleeping bodies wake up automatically when they're in contact with non-sleeping objects or they can be explicitly woken through an API call like BodyInterface::ActivateBody. Unlike some other physics engines, removing a Body from the world doesn't wake up any surrounding bodies. If you want this you can call BodyInterface::ActivateBodiesInAABox with the bounding box of the removed body (or the combined bounding box if you're removing multiple bodies). Also, things like setting the velocity through Body::SetLinearVelocity will not wake up the Body, use BodyInterface::SetLinearVelocity instead. You can configure the definition of a body 'at rest' through PhysicsSettings::mTimeBeforeSleep and PhysicsSettings::mPointVelocitySleepThreshold.

+

+Soft Bodies

+

Soft bodies (also known as deformable bodies) can be used to create e.g. a soft ball or a piece of cloth. They are created in a very similar way to normal rigid bodies:

+
    +
  • First allocate a new SoftBodySharedSettings object on the heap. This object will contain the initial positions of all particles and the constraints between the particles. This object can be shared between multiple soft bodies and should remain constant during its lifetime.
  • +
  • Then create a SoftBodyCreationSettings object (e.g. on the stack) and fill in the desired properties of the soft body.
  • +
  • Finally construct the body and add it to the world through BodyInterface::CreateAndAddSoftBody.
  • +
+

Soft bodies use the Body class just like rigid bodies but can be identified by checking Body::IsSoftBody. To get to the soft body state, cast the result of Body::GetMotionProperties to SoftBodyMotionProperties and use its API.

+

Soft bodies try to implement as much as possible of the normal Body interface, but this interface provides a simplified version of reality, e.g. Body::GetLinearVelocity will return the average particle speed and Body::GetPosition returns the average particle position. During simulation, a soft body will never update its rotation. Internally it stores particle velocities in local space, so if you rotate a soft body e.g. by calling BodyInterface::SetRotation, the body will rotate but its velocity will as well.

+

+Soft Body Contact Listeners

+

Soft Bodies provide contacts with other bodies through the SoftBodyContactListener class. This contact listener works a little bit different from the normal contact listener as you will not receive a contact callback per colliding vertex.

+

After the broad phase has detected an overlap and the normal layer / collision group filters have had a chance to reject the collision, you will receive a SoftBodyContactListener::OnSoftBodyContactValidate callback. This callback allows you to specify how the vertices of the soft body should interact with the other body. You can override the mass for both bodies and you can turn the contact into a sensor contact.

+

The simulation will then proceed to do all collision detection and response and after that is finished, you will receive a SoftBodyContactListener::OnSoftBodyContactAdded callback that allows you to inspect all collisions that happened during the simulation step. In order to do this a SoftBodyManifold is provided which allows you to loop over the vertices and ask each vertex what it collided with.

+

Note that at the time of the callback, multiple threads are operating at the same time. The soft body is stable and can be safely read. The other body that is collided with is not stable however, so you cannot safely read its position/orientation and velocity as it may be modified by another soft body collision at the same time.

+

+Skinning Soft Bodies

+

Using the skinning constraints, a soft body can be (partially) skinned to joints. This can be used e.g. to partially drive cloth with a character animation. The vertices of the soft body need to be placed in the neutral pose of the character and the joints for this pose need to be calculated in model space (relative to these vertices). The inverted matrices of this neutral pose need to be stored as the inverse bind matrices and the skinning constraints can then be weighted to these joints. SoftBodySharedSettings::CalculateSkinnedConstraintNormals must be called to gather information needed to calculate the face normals at run-time.

+

At run-time, you need to provide the animated joints every simulation step through the SoftBodyMotionProperties::SkinVertices call. During simulation, each skinned vertex will calculate its position and this position will be used to limit the movement of its simulated counterpart.

+
+ +
+A Skinned Constraint
+

The adjacent faces of the soft body will be used to calculate the normal of each vertex (shown in red), the vertex is then free to move inside the sphere formed by the skinned vertex position with radius MaxDistance (green sphere). To prevent the vertex from intersecting with the character, it is possible to specify a BackStopDistance and BackStopRadius, together these form the red sphere. The vertex is not allowed to move inside this sphere.

+

+Soft Body Work In Progress

+

Soft bodies are currently in development, please note the following:

+
    +
  • Soft bodies can only collide with rigid bodies, collisions between soft bodies are not implemented yet.
  • +
  • AddTorque/SetLinearVelocity/SetLinearVelocityClamped/SetAngularVelocity/SetAngularVelocityClamped/AddImpulse/AddAngularImpulse have no effect on soft bodies as the velocity is stored per particle rather than per body.
  • +
  • Buoyancy calculations have not been implemented yet.
  • +
  • Constraints cannot operate on soft bodies, set the inverse mass of a particle to zero and move it by setting a velocity to constrain a soft body to something else.
  • +
  • When calculating friction / restitution an empty SubShapeID will be passed to the ContactConstraintManager::CombineFunction because this is called once per body pair rather than once per sub shape as is common for rigid bodies.
  • +
+

+Constraints

+

Bodies can be connected to each other using constraints (Constraint).

+

The following constraints are available:

+
    +
  • FixedConstraint - Will attach a body to another without any degrees of freedom.
  • +
  • DistanceConstraint - Will attach two bodies with a stick (removing 1 degree of freedom).
  • +
  • PointConstraint - Will attach two bodies in a single point (removing 3 degrees of freedom)
  • +
  • HingeConstraint - Will attach two bodies through a hinge.
  • +
  • ConeConstraint - Attaches two bodies in a point and will limit the rotation within a cone.
  • +
  • SliderConstraint - Attaches two bodies and allows only movement in a single translation axis (also known as prismatic constraint).
  • +
  • SwingTwistConstraint - Attaches two bodies using a point constraint and a swing-twist constraint which approximates the shoulder joint of a human.
  • +
  • SixDOFConstraint - The most configurable joint allows specifying per translation axis and rotation axis what the limits are.
  • +
  • PathConstraint - This constraint allows attaching two bodies connected through a Hermite spline path.
  • +
  • GearConstraint - This constraint connects to two hinge joints and constrains them to connect two gears.
  • +
  • RackAndPinionConstraint - This constraint connects a hinge and a slider constraint to connect a rack and pinion.
  • +
  • PulleyConstraint - This constraint connects two bodies through two fixed points creating something that behaves like two bodies connected through a rope.
  • +
  • VehicleConstraint - This constraint adds virtual wheels or tracks to a body and allows it to behave as a vehicle.
  • +
+

If you want to constrain a dynamic object to the unmovable 'world' you can use Body::sFixedToWorld instead of creating a static body.

+

Bodies do not keep track of the constraints that are connected to them. This means that you're responsible for removing any constraints attached to a body before removing the body from the PhysicsSystem.

+

Adding and removing constraints can be done from multiple threads, but the constraints themselves do not have any protection against concurrent access. We assume that constraints are owned by some object (e.g. a Ragdoll) and that object ensures that it only modifies its own constraints and contains its own synchronization logic. Constraints can be freely modified except during the physics simulation step.

+

Contact constraints (when bodies collide) are not handled through the Constraint class but through the ContactConstraintManager which is considered an internal class.

+

+Constraint Motors

+

Most of the constraints support motors (see MotorSettings) which allow you to apply forces/torques on two constrained bodies to drive them to a relative position/orientation. There are two types of motors:

    +
  • Linear motors: These motors drive the relative position between two bodies. A linear motor would, for example, slide a body along a straight line when you use a slider constraint.
  • +
  • Angular motors: These motors drive the relative rotation between two bodies. An example is a hinge constraint. The motor drives the rotation along the hinge axis.
  • +
+

Motors can have three states (see EMotorState or e.g. SliderConstraint::SetMotorState):

    +
  • Off: The motor is not doing any work.
  • +
  • Velocity: This type of motor drives the relative velocity between bodies. For a slider constraint, you would push the bodies towards/away from each other with constant velocity. For a hinge constraint, you would rotate the bodies relative to each other with constant velocity. Set the target velocity through e.g. SliderConstraint::SetTargetVelocity / HingeConstraint::SetTargetAngularVelocity.
  • +
  • Position: This type of motor drives the relative position between bodies. For a slider constraint, you can specify the relative distance you want to achieve between the bodies. For a hinge constraint you can specify the relative angle you want to achieve between the bodies. Set the target position through e.g. SliderConstraint::SetTargetPosition / HingeConstraint::SetTargetAngle.
  • +
+

Motors apply a force (when driving position) or torque (when driving angle) every simulation step to achieve the desired velocity or position. You can control the maximum force/torque that the motor can apply through MotorSettings::mMinForceLimit, MotorSettings::mMaxForceLimit, MotorSettings::mMinTorqueLimit and MotorSettings::mMaxTorqueLimit. Note that if a motor is driving to a position, the torque limits are not used. If a constraint is driving to an angle, the force limits are not used.

+

Usually the limits are symmetric, so you would set -mMinForceLimit = mMaxForceLimit. This way the motor can push at an equal rate as it can pull. If you would set the range to e.g. [0, FLT_MAX] then the motor would only be able to push in the positive direction. The units for the force limits are Newtons and the values can get pretty big. If your motor doesn't seem to do anything, chances are that you have set the value too low. Since Force = Mass * Acceleration you can calculate the approximate force that a motor would need to supply in order to be effective. Usually the range is set to [-FLT_MAX, FLT_MAX] which lets the motor achieve its target as fast as possible.

+

For an angular motor, the units are Newton Meters. The formula is Torque = Inertia * Angular Acceleration. Inertia of a solid sphere is 2/5 * Mass * Radius^2. You can use this to get a sense of the amount of torque needed to get the angular acceleration you want. Again, you'd usually set the range to [-FLT_MAX, FLT_MAX] to not limit the motor.

+

When settings the force or torque limits to [-FLT_MAX, FLT_MAX] a velocity motor will accelerate the bodies to the desired relative velocity in a single time step (if no other forces act on those bodies).

+

Position motors have two additional parameters: Frequency (MotorSettings::mSpringSettings.mFrequency, Hz) and damping (MotorSettings::mSpringSettings.mDamping, no units). They are implemented as described in Soft Constraints: Reinventing The Spring - Erin Catto - GDC 2011.

+

You can see a position motor as a spring between the target position and the rigid body. The force applied to reach the target is linear with the distance between current position and target position. When there is no damping, the position motor will cause the rigid body to oscillate around its target.

+
+ +
+A rigid body on a slider constraint. The body starts at 1 and is driven to 0 with a position motor. Two different motor frequencies are shown. The higher the frequency, the faster the motor will reach its target, but without damping it will overshoot and oscillate forever.
+

Valid frequencies are in the range (0, 0.5 * simulation frequency]. A frequency of 0 results in no force being applied, a frequency larger than half of the physics simulation frequency will result in instability. For a 60 Hz physics simulation, 20 is a good value for a stiff spring (without damping it will reach its target in 1/(4 * 20) = 0.0125 s), 2 is good for a soft spring (will reach its target in 1/(4 * 2) = 0.125 s).

+

In order to prevent the motor from overshooting its target, we use damping.

+
+ +
+A rigid body on a slider constraint. The body starts at 1 and is driven to 0 with a position motor. The frequency of the motor is 2 Hz and the lines correspond to different damping values.
+

Sensible values for damping are [0, 1] but higher values are also possible. When the damping is below 1, the body will still oscillate around its target, but that oscillation will die out. When the damping is 1 (called critical damping) there is no oscillation at all but it will take longer for the motor to reach its target. When damping is bigger than 1, the system is over dampened. There will not be any oscillation, but it will take even longer for the motor to reach its target.

+

Because Jolt Physics uses a Symplectic Euler integrator, there will still be a small amount of damping when damping is 0, so you cannot get infinite oscillation (allowing this would make it very likely for the system to become unstable).

+

+Breakable Constraints

+

Constraints can be turned on / off by calling Constraint::SetEnabled. After every simulation step, check the total 'lambda' applied on each constraint and disable the constraint if the value goes over a certain threshold. Use e.g. SliderConstraint::GetTotalLambdaPosition / HingeConstraint::GetTotalLambdaRotation. You can see 'lambda' as the linear/angular impulse applied at the constraint in the last physics step to keep the constraint together.

+

+Collision Detection

+

Collision detection can be performed through various interfaces:

+ +

The most common collision tests are:

+ +

The following sections describe the collision detection system in more detail.

+

+Broad Phase

+

When bodies are added to the PhysicsSystem, they are inserted in the broad phase (BroadPhaseQuadTree). This provides quick coarse collision detection based on the axis aligned bounding box (AABB) of a body.

+
+ +
+To quickly test if two objects overlap you can check if their axis aligned bounding boxes overlap. If they do, a check between the actual shapes is needed to be sure.
+

Our broad phase is a quad tree, which means each node has 4 children. In the following image you see a random collection of spheres and triangles and a possible way to split the tree.

+
+ +
+QuadTree Example
+

At the highest level we split all objects in 4 mostly disjoint sets. Note that nodes are allowed to overlap, but for efficiency reasons we want the amount of overlap to be minimal. The example split here is indicated by a red, blue, green and yellow box and you can see them appear in the tree on the right. Three out of four nodes: blue, yellow and red, have 4 or less shapes in them, so the tree can directly point at the shapes rather than at a next node. One node: green, has more than 4 shapes in it so needs a further split. The three shapes can be added directly to the node and we need to create a new node, dotted green, to hold the last two shapes. The reason why we pick 4 children is that modern CPUs support doing 4 math operations in a single instruction, so when we walk the tree from top to bottom during a collision query, we can handle 4 children at the same time and quickly get to a minimal set of colliding objects.

+

Since we want to access bodies concurrently the broad phase has special behavior. When a body moves, all nodes in the AABB tree from root to the node where the body resides will be expanded using a lock-free approach. This way multiple threads can move bodies at the same time without requiring a lock on the broad phase. Nodes that have been expanded are marked and during the next physics step a new tight-fitting tree will be built in the background while the physics step is running. This new tree will replace the old tree before the end of the simulation step. This is possible since no bodies can be added/removed during the physics step. For more information about this see the GDC 2022 talk.

+

The broad phase is divided in layers (BroadPhaseLayer), each broad phase layer has an AABB quad tree associated with it. A standard setup would be to have at least 2 broad phase layers: One for all static bodies (which is infrequently updated but is expensive to update since it usually contains most bodies) and one for all dynamic bodies (which is updated every simulation step but cheaper to update since it contains fewer objects). In general you should only have a few broad phase layers as there is overhead in querying and maintaining many different broad phase trees.

+

When doing a query against the broad phase (BroadPhaseQuery), you generally will get a body ID for intersecting objects. If a collision query takes a long time to process the resulting bodies (e.g. across multiple simulation steps), you can safely keep using the body ID's as specified in the Bodies section.

+

+Narrow Phase

+

A narrow phase query (NarrowPhaseQuery) will first query the broad phase for intersecting bodies and will under the protection of a body lock construct a transformed shape (TransformedShape) object. This object contains the transform, a reference counted shape and a body ID. Since the shape will not be deleted until you destroy the TransformedShape object, it is a consistent snapshot of the collision information of the body. This ensures that the body is only locked for a short time frame and makes it possible to do the bulk of the collision detection work outside the protection of a lock.

+

For very long running jobs (e.g. navigation mesh creation) it is possible to query all transformed shapes in an area and then do the processing work using a long running thread without requiring additional locks (see NarrowPhaseQuery::CollectTransformedShapes).

+

The narrow phase queries are all handled through the GJK and EPA algorithms.

+

+Collision Filtering

+

Each Body is in an ObjectLayer. If two object layers don't collide, the bodies inside those layers cannot collide. You can define object layers in any way you like, it could be a simple number from 0 to N or it could be a bitmask. Jolt supports 16 or 32 bit ObjectLayers through the JPH_OBJECT_LAYER_BITS define and you're free to define as many as you like as they don't incur any overhead in the system.

+

When constructing the PhysicsSystem you need to provide a number of filtering interfaces:

    +
  • BroadPhaseLayerInterface: This class defines a mapping from ObjectLayer to BroadPhaseLayer through the BroadPhaseLayerInterface::GetBroadPhaseLayer function. Each Body can only be in 1 BroadPhaseLayer so an ObjectLayer maps to 1 BroadphaseLayer. In general there will be multiple ObjectLayers mapping to the same BroadPhaseLayer (because each broad phase layer comes at a cost). If there are multiple object layers in a single broad phase layer, they are stored in the same tree. When a query visits the tree it will visit all objects whose AABB overlaps with the query and only when the overlap is detected, the actual object layer will be checked. This means that you should carefully design which object layers end up in which broad phase layer, balancing the requirement of having few broad phase layers with the number of needless objects that are visited because multiple object layers share the same broad phase layer. You can define JPH_TRACK_BROADPHASE_STATS to let Jolt print out some statistics about the query patterns your application is using. In general it is wise to start with only 2 broad phase layers as listed in the Broad Phase section.
  • +
  • ObjectVsBroadPhaseLayerFilter: This class defines a ObjectVsBroadPhaseLayerFilter::ShouldCollide function that checks if an ObjectLayer collides with objects that reside in a particular BroadPhaseLayer. ObjectLayers can collide with as many BroadPhaseLayers as needed, so it is possible for a collision query to visit multiple broad phase trees.
  • +
  • ObjectLayerPairFilter: This class defines a ObjectLayerPairFilter::ShouldCollide function that checks if an ObjectLayer collides with another ObjectLayer.
  • +
+

As an example we will use a simple enum as ObjectLayer:

    +
  • NON_MOVING - Layer for all static objects.
  • +
  • MOVING - Layer for all regular dynamic bodies.
  • +
  • DEBRIS - Layer for all debris dynamic bodies, we want to test these only against the static geometry because we want to save some simulation cost.
  • +
  • BULLET - Layer for high detail collision bodies that we attach to regular dynamic bodies. These are not used for simulation but we want extra precision when we shoot with bullets.
  • +
  • WEAPON - This is a query layer so we don't create any bodies with this layer but we use it when doing ray cast querying for our weapon system.
  • +
+

We define the following object layers to collide:

    +
  • MOVING vs NON_MOVING, MOVING vs MOVING - These are for our regular dynamic objects that need to collide with the static world and with each other.
  • +
  • DEBRIS vs NON_MOVING - As said, we only want debris to collide with the static world and not with anything else.
  • +
  • WEAPON vs BULLET, WEAPON vs NON_MOVING - We want our weapon ray cast to hit the high detail BULLET collision instead of the normal MOVING collision and we want bullets to be blocked by the static world (obviously the static world could also have a high detail version, but not in this example).
  • +
+

This means that we need to implement a ObjectLayerPairFilter::ShouldCollide that returns true for the permutations listed above. Note that if ShouldCollide(A, B) returns true, ShouldCollide(B, A) should return true too.

+

We define the following broad phase layers:

    +
  • BP_NON_MOVING - For everything static (contains object layer: NON_MOVING).
  • +
  • BP_MOVING - The default layer for dynamic objects (contains object layers: MOVING, BULLET).
  • +
  • BP_DEBRIS - An extra layer that contains only debris (contains object layers: DEBRIS).
  • +
+

This means we now implement a BroadPhaseLayerInterface::GetBroadPhaseLayer that maps: NON_MOVING -> BP_NON_MOVING, MOVING -> BP_MOVING, BULLET -> BP_MOVING and DEBRIS -> BP_DEBRIS. We can map WEAPON to anything as we won't create any objects with this layer.

+

We also need to implement a ObjectVsBroadPhaseLayerFilter::ShouldCollide that determines which object layer should collide with what broad phase layers, these can be deduced from the two lists above:

    +
  • NON_MOVING: BP_MOVING, BP_DEBRIS
  • +
  • MOVING: BP_NON_MOVING, BP_MOVING
  • +
  • DEBRIS: BP_NON_MOVING
  • +
  • BULLET: None (these are not simulated so need no collision with other objects)
  • +
  • WEAPON: BP_NON_MOVING, BP_MOVING
  • +
+

So you can see now that when we simulate DEBRIS we only need to visit a single broad phase tree to check for collision, we did this because in our example we know that there are going to be 1000s of debris objects so it is important that their queries are as fast as possible. We could have moved the BULLET layer to its own broad phase layer too because now BP_MOVING contains a lot of bodies that WEAPON is not interested in, but in this example we didn't because we know that there are not enough of these objects for this to be a performance problem.

+

For convenience two filtering implementations are provided:

+

Now that we know about the basics, we list the order in which the collision detection pipeline goes through the various collision filters:

+
    +
  • Broadphase layer: At this stage, the object layer is tested against the broad phase trees that are relevant by checking the ObjectVsBroadPhaseLayerFilter.
  • +
  • Object layer: Once the broad phase layer test succeeds, we will test object layers vs object layers through ObjectLayerPairFilter (used for simulation) and ObjectLayerFilter (used for collision queries). The default implementation of ObjectLayerFilter is DefaultObjectLayerFilter and uses ObjectLayerPairFilter so the behavior is consistent between simulation and collision queries.
  • +
  • Group filter: Most expensive filtering (bounding boxes already overlap), used only during simulation. Allows you fine tune collision e.g. by discarding collisions between bodies connected by a constraint. See GroupFilter and implementation for ragdolls GroupFilterTable.
  • +
  • Body filter: This filter is used instead of the group filter if you do collision queries like CastRay. See BodyFilter.
  • +
  • Shape filter: This filter is used only during collision queries and can be used to filter out individual (sub)shapes. See ShapeFilter.
  • +
  • Contact listener: During simulation, after all collision detection work has been performed you can still choose to discard a contact point. This is a very expensive way of rejecting collisions as most of the work is already done. See ContactListener.
  • +
+

To avoid work, try to filter out collisions as early as possible.

+

+Continuous Collision Detection

+

Each body has a motion quality setting (EMotionQuality). By default the motion quality is Discrete. This means that at the beginning of each simulation step we will perform collision detection and if no collision is found, the body is free to move according to its velocity. This usually works fine for big or slow moving objects. Fast and small objects can easily 'tunnel' through thin objects because they can completely move through them in a single time step. For these objects there is the motion quality LinearCast. Objects that have this motion quality setting will do the same collision detection at the beginning of the simulation step, but once their new position is known, they will do an additional CastShape to check for any collisions that may have been missed. If this is the case, the object is placed back to where the collision occurred and will remain there until the next time step. This is called 'time stealing' and has the disadvantage that an object may appear to move much slower for a single time step and then speed up again. The alternative, back stepping the entire simulation, is computationally heavy so was not implemented.

+
+ +
+With the Discrete motion quality the blue object tunnels through the green object in a single time step. With motion quality LinearCast it doesn't.
+

Fast rotating long objects are also to be avoided, as the LinearCast motion quality will fully rotate the object at the beginning of the time step and from that orientation perform the CastShape, there is a chance that the object misses a collision because it rotated through it.

+
+ +
+Even with the LinearCast motion quality the blue object rotates through the green object in a single time step.
+

+Ghost Collisions

+

A ghost collision can occur when a body slides over another body and hits an internal edge of that body. The most common case is where a body hits an edge of a triangle in a mesh shape but it can also happen on 2 box shapes as shown below.

+
+ +
+A blue box sliding over 2 green boxes. Because the blue box can sink into the green box a little bit, it can hit the edge between the two boxes. This will cause the box to stop or jump up.
+

There are a couple of ways to avoid ghost collisions in Jolt. MeshShape and HeightFieldShape keep track of active edges during construction.

+
+ +
+An inactive edge (concave) and an active edge (convex, angle > threshold angle).
+

Whenever a body hits an inactive edge, the contact normal is the face normal. When it hits an active edge, it can be somewhere in between the connecting face normals so the movement of the body is impeded in the scenario below.

+
+ +
+Contact normal (red) of hitting an active vs an inactive edge.
+

By tweaking MeshShapeSettings::mActiveEdgeCosThresholdAngle or HeightFieldShapeSettings::mActiveEdgeCosThresholdAngle you can determine the angle at which an edge is considered an active edge. By default this is 5 degrees, making this bigger reduces the amount of ghost collisions but can create simulation artifacts if you hit the edge straight on.

+

To further reduce ghost collisions, you can turn on BodyCreationSettings::mEnhancedInternalEdgeRemoval. When enabling this setting, additional checks will be made at run-time to detect if an edge is active or inactive based on all of the contact points between the two bodies. Beware that this algorithm only considers 2 bodies at a time, so if the two green boxes above belong to two different bodies, the ghost collision can still occur. Use a StaticCompoundShape to combine the boxes in a single body to allow the system to eliminate ghost collisions between the blue and the two green boxes. You can also use this functionality for your custom collision tests by making use of InternalEdgeRemovingCollector.

+

+Character Controllers

+

The Character and CharacterVirtual classes can be used to create a character controller. These are usually used to represent the player as a simple capsule or tall box and perform collision detection while the character navigates through the world.

+

The Character class is the simplest controller and is essentially a rigid body that has been configured to only allow translation (and no rotation so it stays upright). It is simulated together with the other rigid bodies so it properly reacts to them. Because it is simulated, it is usually not the best solution for a player as the player usually requires a lot of behavior that is non-physical. This character controller is cheap so it is recommended for e.g. simple AI characters. After every PhysicsSystem::Update call you must call Character::PostSimulation to update the ground contacts.

+

Characters are usually driven in a kinematic way (i.e. by calling Character::SetLinearVelocity or CharacterVirtual::SetLinearVelocity before their update).

+

The CharacterVirtual class is much more advanced. It is implemented using collision detection functionality only (through NarrowPhaseQuery) and is simulated when CharacterVirtual::Update is called. Since the character is not 'added' to the world, it is not visible to rigid bodies and it only interacts with them during the CharacterVirtual::Update function by applying impulses. This does mean there can be some update order artifacts, like the character slightly hovering above an elevator going down, because the characters moves at a different time than the other rigid bodies. Separating it has the benefit that the update can happen at the appropriate moment in the game code. Multiple CharacterVirtuals can update concurrently, so it is not an issue if the game code is parallelized.

+

CharacterVirtual has the following extra functionality:

    +
  • Sliding along walls
  • +
  • Interaction with elevators and moving platforms
  • +
  • Enhanced steep slope detection (standing in a funnel whose sides are too steep to stand on will not be considered as too steep)
  • +
  • Stair stepping through the CharacterVirtual::ExtendedUpdate call
  • +
  • Sticking to the ground when walking down a slope through the CharacterVirtual::ExtendedUpdate call
  • +
  • Support for specifying a local coordinate system that allows e.g. walking around in a flying space ship that is equipped with 'inertial dampers' (a sci-fi concept often used in games).
  • +
+

CharacterVirtual should provide everything that Character provides. Since it is not a rigid body, it requires some extra consideration:

+

You can create a hybrid between these two by setting CharacterVirtualSettings::mInnerBodyShape. This will create an inner rigid body that follows the movement of the CharacterVirtual. This inner rigid body will be detected by sensors and regular collision tests.

+

To get started take a look at the Character and CharacterVirtual examples.

+

+The Simulation Step

+

The simulation step PhysicsSystem::Update uses jobs (JobSystem) to perform the needed work. This allows spreading the workload across multiple CPU's. We use a Sequential Impulse solver with warm starting as described in Modeling and Solving Constraints - Erin Catto

+

Each physics step can be divided into multiple collision steps. So if you run the simulation at 60 Hz with 2 collision steps we run:

+
    +
  • Collision (1/120s)
  • +
  • Integration (1/120s)
  • +
  • Collision (1/120s)
  • +
  • Integration (1/120s)
  • +
+

In general, the system is stable when running at 60 Hz with 1 collision step.

+

+Conventions and Limits

+

Jolt Physics uses a right handed coordinate system with Y-up. It is easy to use another axis as up axis by changing the gravity vector using PhysicsSystem::SetGravity. Some shapes like the HeightFieldShape will need an additional RotatedTranslatedShape to rotate it to the new up axis and vehicles (VehicleConstraint) and characters (CharacterBaseSettings) will need their new up-axis specified too.

+

We use column-major vectors and matrices, this means that to transform a point you need to multiply it on the right hand side: TransformedPoint = Matrix * Point.

+

Note that the physics simulation works best if you use SI units (meters, radians, seconds, kg). In order for the simulation to be accurate, dynamic objects should be in the order [0.1, 10] meters long, have speeds in the order of [0, 500] m/s and have gravity in the order of [0, 10] m/s^2. Static object should be in the order [0.1, 2000] meter long. If you are using different units, consider scaling the objects before passing them on to the physics simulation.

+

+Big Worlds

+

By default the library compiles using floats. This means that the simulation gets less accurate the further you go from the origin. If all simulation takes place within roughly 5 km from the origin, floating point precision is accurate enough.

+

If you have a bigger world, you may want to compile the library using the JPH_DOUBLE_PRECISION define. When you do this, all positions will be stored as doubles, which will make the simulation accurate even at thousands of kilometers away from the origin.

+

Calculations with doubles are much slower than calculations with floats. A naive implementation that changes all calculations to doubles has been measured to run more than 2x slower than the same calculations using floats. Because of this, Jolt Physics will only use doubles where necessary and drop down to floats as soon as possible. In order to do this, many of the collision query functions will need a 'base offset'. All collision results will be returned as floats relative to this base offset. By choosing the base offset wisely (i.e. close to where collision results are expected) the results will be accurate. Make sure your base offset is not kilometers away from the collision result.

+

Keep in mind that:

+
    +
  • There are a lot of 'epsilons' in the code that have been tuned for objects of sizes/speeds as described in the Conventions and Limits section. Try to keep the individual objects to the specified scale even if they're really far from the origin.
  • +
  • When the collision results of a single query are kilometers apart, precision will suffer as they will be far away from the 'base offset'.
  • +
  • The effectiveness of the broad phase (which works in floats) will become less at large distances from the origin, e.g. at 10000 km from the origin, the resolution of the broad phase is reduced to 1 m which means that everything that's closer than 1 m will be considered colliding. This will not impact the quality of the simulation but it will result in extra collision tests in the narrow phase so will hurt performance.
  • +
+

Because of the minimal use of doubles, the simulation runs 5-10% slower in double precision mode compared to float precision mode.

+

+Deterministic Simulation

+

The physics simulation is deterministic provided that:

+
    +
  • The APIs that modify the simulation are called in exactly the same order. For example, bodies and constraints need to be added/removed/modified in exactly the same order so that the state at the beginning of a simulation step is exactly the same for both simulations (exceptions).
  • +
  • The same binary code is used to run the simulation. For example, when you run the simulation on Windows it doesn't matter if you have an AMD or Intel processor.
  • +
+

If you want cross platform determinism then please turn on the CROSS_PLATFORM_DETERMINISTIC option in CMake. This will make the library approximately 8% slower but the simulation will be deterministic regardless of:

+
    +
  • Compiler used to compile the library (tested MSVC2022, clang, gcc and emscripten)
  • +
  • Configuration (Debug, Release or Distribution)
  • +
  • OS (tested Windows, macOS, Linux)
  • +
  • Architecture (x86 or ARM).
  • +
+

Some caveats:

+
    +
  • The same source code must be used to compile the library on all platforms.
  • +
  • The source code must be compiled with the same defines, e.g. you can't have one platform using JPH_DOUBLE_PRECISION and another not.
  • +
+

It is quite difficult to verify cross platform determinism, so this feature is less tested than other features. With every build, the following architectures are verified to produce the same results:

+
    +
  • Windows MSVC x86 64-bit with AVX2
  • +
  • Windows MSVC x86 32-bit with SSE2
  • +
  • macOS clang ARM 64-bit with NEON
  • +
  • Linux clang x86 64-bit with AVX2
  • +
  • Linux clang ARM 64-bit with NEON
  • +
  • Linux gcc x86 64-bit with AVX2
  • +
  • Linux gcc ARM 64-bit with NEON
  • +
  • WASM emscripten running in nodejs
  • +
+

The most important things to look out for in your own application:

+
    +
  • Compile your application mode in Precise mode (clang: -ffp-model=precise, MSVC: /fp:precise)
  • +
  • Turn off floating point contract operations (clang: -ffp-contract=off)
  • +
  • Do not use the standard trigonometry functions (sin, cos etc.) as they have different implementations on different platforms, use Jolt's functions (Sin, Cos etc.)
  • +
  • Do not use std::sort as it has a different implementation on different platforms, use Jolt's QuickSort function
  • +
+

When running the Samples Application you can press ESC, Physics Settings and check the 'Check Determinism' checkbox. Before every simulation step we will record the state using the StateRecorder interface, rewind the simulation and do the step again to validate that the simulation runs deterministically. Some of the tests (e.g. the MultiThreaded) test will explicitly disable the check because they randomly add/remove bodies from different threads. This violates the rule that the API calls must be done in the same order so will not result in a deterministic simulation.

+

+Rolling Back a Simulation

+

When synchronizing two simulations via a network, it is possible that a change that needed to be applied at frame N is received at frame N + M. This will require rolling back the simulation to the state of frame N and repeating the simulation with the new inputs. This can be implemented by saving the physics state using SaveState at every frame. To roll back, call RestoreState with the state at frame N. SaveState only records the state that the physics engine modifies during its update step (positions, velocities etc.), so if you change anything else you need to restore this yourself. E.g. if you did a SetFriction on frame N + 2 then, when rewinding, you need to restore the friction to what is was on frame N and update it again on frame N + 2 when you replay. If you start adding/removing objects (e.g. bodies or constraints) during these frames, the RestoreState function will not work. If you added a body on frame N + 1, you'll need to remove it when rewinding and then add it back on frame N + 1 again (with the proper initial position/velocity etc. because it won't be contained in the snapshot at frame N). The SaveState function comes with a StateRecorderFilter interface that you can use to selectively save state. E.g. ShouldSaveBody could simply return false for all static or inactive bodies which can be used to limit the size of the snapshot.

+

If you wish to share saved state between server and client, you need to ensure that all APIs that modify the state of the world are called in the exact same order. So if the client creates physics objects for player 1 then 2 and the server creates the objects for 2 then 1 you already have a problem (the body IDs will be different, which will render the save state snapshots incompatible). When rolling back a simulation, you'll also need to ensure that the BodyIDs are kept the same, so you need to remove/add the body from/to the physics system instead of destroy/re-create them or you need to create bodies with the same ID on both sides using BodyInterface::CreateBodyWithID.

+

+Being Sloppy While Still Being Deterministic

+

If you do things in the same order it is guaranteed to be deterministic, but if you know what you're doing you can take some liberties. E.g. doing BodyA.SetFriction(...); BodyB.SetFriction(...); or BodyB.SetFriction(...); BodyA.SetFriction(...); doesn't matter for determinism, the main thing you need to ensure is that when you do a PhysicsSystem::Update that the binary state is the same. Also adding body A then B is the same as B then A as long as the BodyIDs of A and B are consistent. For constraints, adding A then B or B then A is equivalent as long as ConstraintSettings::mConstraintPriority is unique per constraint so that it defines a consistent ordering (in this case all constraints in the system must have a unique number). Note though that PhysicsSystem::SaveState relies on the ordering of constraints, so you'll have to skip serializing constraints by not setting EStateRecorderState::Constraints and call Constraint::SaveState / Constraint::RestoreState directly yourself.

+

+Working With Multiple Physics Systems

+

You can create, simulate and interact with multiple PhysicsSystems at the same time provided that you do not share any objects (bodies, constraints) between the systems. When a Body is created it receives a BodyID that is unique for the PhysicsSystem that it was created for, so it cannot be shared. The only object that can be shared between PhysicsSystems is a Shape. If you want to move a body from one PhysicsSystem to another, use Body::GetBodyCreationSettings to get the settings needed to create the body in the other PhysicsSystem.

+

PhysicsSystems are not completely independent:

+ +

These functions / systems need to be registered in advance.

+

+Debug Rendering

+

When the define JPH_DEBUG_RENDERER is defined (which by default is defined in Debug and Release but not Distribution), Jolt is able to render its internal state. To integrate this into your own application you must inherit from the DebugRenderer class and implement the pure virtual functions DebugRenderer::DrawLine, DebugRenderer::DrawTriangle, DebugRenderer::CreateTriangleBatch, DebugRenderer::DrawGeometry and DebugRenderer::DrawText3D. The CreateTriangleBatch is used to prepare a batch of triangles to be drawn by a single DrawGeometry call, which means that Jolt can render a complex scene much more efficiently than when each triangle in that scene would have been drawn through DrawTriangle. At run-time create an instance of your DebugRenderer which will internally assign itself to DebugRenderer::sInstance. Finally call for example PhysicsSystem::DrawBodies or PhysicsSystem::DrawConstraints to draw the state of the simulation. For an example implementation see the DebugRenderer from the Samples application or to get started quickly take a look at DebugRendererSimple.

+

+Memory Management

+

Jolt uses reference counting for a number of its classes (everything that inherits from RefTarget). The most important classes are:

+ +

Reference counting objects start with a reference count of 0. If you want to keep ownership of the object, you need to call object->AddRef(), this will increment the reference count. If you want to release ownership you call object->ReleaseRef(), this will decrement the reference count and if the reference count reaches 0 the object will be destroyed. If, after newing, you pass a reference counted object on to another object (e.g. a ShapeSettings to a CompoundShapeSettings or a Shape to a Body) then that other object will take a reference, in that case it is not needed take a reference yourself beforehand so you can skip the calls to AddRef/Release. Note that it is also possible to do auto x = new XXX followed by delete x for a reference counted object if no one ever took a reference. The safest way of working with reference counting objects is to use the Ref or RefConst classes, these automatically manage the reference count for you when assigning a new value or on destruction:

+
// Calls 'AddRef' to keep a reference the shape
+
JPH::Ref<Shape> shape = new JPH::SphereShape(1.0f);
+
+
// Calls 'Release' to release and delete the shape (note that this also happens if JPH::Ref goes out of scope)
+
shape = nullptr;
+

The Body class is a special case, it is destroyed through BodyInterface::DestroyBody (which internally destroys the Body).

+

Jolt also supports routing all of its internal allocations through a custom allocation function. See: Allocate, Free, AlignedAllocate and AlignedFree.

+

+The Simulation Step in Detail

+

The job graph looks like this:

+
+ +
+Job Graph Physics Step
+

Note that each job indicates if it reads/writes positions/velocities and if it deactivates/activates bodies. We do not allow jobs to read/write the same data concurrently. The arrows indicate the order in which jobs are executed. Yellow blocks mean that there are multiple jobs of this type. Dotted arrows have special meaning and are explained below.

+

+Broad Phase Update Prepare

+

This job will refit the AABBs of the broad phase. It does this by building a new tree while keeping the old one available as described in the Broad Phase section.

+

+Broad Phase Update Finalize

+

This job will simply swap the new tree with the old tree. The old tree will be discarded at the beginning of the next PhysicsSystem::Update call so that any broad phase query can continue to run.

+

+Step Listeners

+

You can register one or more step listeners (See PhysicsSystem::AddStepListener). This job will call PhysicsStepListener::OnStep for every listener. This can be used to do work that needs to be done at the beginning of each step, e.g. set velocities on ragdoll bodies.

+

+Apply Gravity

+

A number of these jobs run in parallel. Each job takes a batch of active bodies and applies gravity and damping (updating linear and angular velocity).

+

+Determine Active Constraints

+

This job will go through all non-contact constraints and determine which constraints are active based on if the bodies that the constraint connects to are active.

+

+Build Islands from Constraints

+

This job will go through all non-contact constraints and assign the involved bodies and constraint to the same island. Since we allow concurrent insertion/removal of bodies we do not want to keep island data across multiple simulation steps, so we recreate the islands from scratch every simulation step. The operation is lock-free and O(N) where N is the number of constraints.

+

If a constraint connects an active and a non-active body, the non-active body is woken up. One find collisions job will not start until this job has finished in order to pick up any collision testing for newly activated bodies.

+

+Find Collisions

+

This job will do broad and narrow phase checks. Initially a number of jobs are started based on the amount of active bodies. The job will do the following:

+
    +
  • Take a batch of active bodies and collide them against the broadphase.
  • +
  • When a collision pair is found it is inserted in a lock free queue to be processed later.
  • +
  • If the queue is full, it will be processed immediately (more Find Collisions jobs are spawned if not all CPU cores are occupied yet as the queue starts to fill up).
  • +
  • If there are no more active bodies to process, the job will start to perform narrow phase collision detection and set up contact constraints if any collisions are found.
  • +
  • As soon as a narrow phase pair is processed it will recheck if there are new active bodies to be processed (active bodies can be generated by an active body colliding with an inactive body) and if so process them.
  • +
  • When there are no more active bodies to test and no more collision pairs to be processed the job terminates.
  • +
+

Note that this job cannot start until apply gravity is done because the velocity needs to be known for elastic collisions to be calculated properly.

+

The contact points between the two bodies will be determined by the GJK and EPA algorithms. For each contact point we will calculate the face that belongs to that contact point. The faces of both bodies are clipped against each other (ManifoldBetweenTwoFaces) so that we have a polygon (or point / line) that represents the contact between the two bodies (contact manifold).

+

Multiple contact manifolds with similar normals are merged together (PhysicsSystem::ProcessBodyPair::ReductionCollideShapeCollector). After this the contact constraints are created in the ContactConstraintManager and their Jacobians / effective masses calculated.

+

Contacting bodies are also linked together to form islands. This is the same operation as described in the Build Islands from Constraints section.

+

The narrow phase makes use of a lock free contact cache. We have 2 caches, one that is used for reading (which contains the contacts from the previous step) and one for writing new contact pairs. When a contact point is preserved from the last simulation step, it will be copied from the read cache to the write cache.

+

+Setup Velocity Constraints

+

This job will go through all non-contact constraints and prepare them for execution. This involves calculating Jacobians and effective masses for each constraint part.

+

+Finalize Islands

+

This job will finalize the building of the simulation islands. Each island contains bodies that interact with each other through a contact point or through a constraint. These islands will be simulated separately in different jobs later. The finalization of the islands is an O(N) operation where N is the amount of active bodies (see IslandBuilder::Finalize).

+

+Set Body Island Idx

+

This job does some housekeeping work that can be executed concurrent to the solver:

+
    +
  • It will assign the island ID to all bodies (which is mainly used for debugging purposes)
  • +
+

+Solve Velocity Constraints

+

A number of these jobs will run in parallel. Each job takes the next unprocessed island and will run the iterative constraint solver for that island. It will first apply the impulses applied from the previous simulation step (which are stored in the contact cache) to warm start the solver. It will then repeatedly iterate over all contact and non-contact constraints until either the applied impulses are too small or a max iteration count is reached (PhysicsSettings::mNumVelocitySteps). The result will be that the new velocities are known for all active bodies. The applied impulses are stored in the contact cache for the next step.

+

When an island consists of more than LargeIslandSplitter::cLargeIslandTreshold contacts plus constraints it is considered a large island. In order to not do all work on a single thread, this island will be split up by the LargeIslandSplitter. This follows an algorithm described in High-Performance Physical Simulations on Next-Generation Architecture with Many Cores by Chen et al. This is basically a greedy algorithm that tries to group contacts and constraints into groups where no contact or constraint affects the same body. Within a group, the order of execution does not matter since every memory location is only read/written once, so we can parallelize the update. At the end of each group, we need to synchronize the CPU cores before starting on the next group. When the number of groups becomes too large, a final group is created that contains all other contacts and constraints and these are solved on a single thread. The groups are processed PhysicsSettings::mNumVelocitySteps times so the end result is almost the same as an island that was not split up (only the evaluation order changes in a consistent way).

+

+Pre Integrate

+

This job prepares the CCD buffers.

+

+Integrate & Clamp Velocities

+

This job will integrate the velocity and update the position. It will clamp the velocity to the max velocity.

+

Depending on the motion quality (EMotionQuality) of the body, it will schedule a body for continuous collision detection (CCD) if its movement is bigger than some threshold based on the inner radius) of the shape.

+

+Post Integrate

+

Find CCD Contact jobs are created on the fly depending on how many CCD bodies were found. If there are no CCD bodies it will immediately start Resolve CCD Contacts.

+

+Find CCD Contacts

+

A number of jobs will run in parallel and pick up bodies that have been scheduled for CCD and will do a linear cast to detect the first collision. It always allows movement of the object by a fraction if its inner radius in order to prevent it from getting fully stuck.

+

+Resolve CCD Contacts

+

This job will take the collision results from the previous job and update position and velocity of the involved bodies. If an object hits another object, its time will be 'stolen' (it will move less far than it should according to its velocity).

+

+Finalize Contact Cache, Contact Removed Callbacks

+

This job will:

+
    +
  • Swap the read/write contact cache and prepare the contact cache for the next step.
  • +
  • It will detect all contacts that existed previous step and do not exist anymore to fire callbacks for them through the ContactListener interface.
  • +
+

+Solve Position Constraints, Update Bodies Broad Phase

+

A number of these jobs will run in parallel. Each job takes the next unprocessed island and run the position based constraint solver. This fixes numerical drift that may have caused constrained bodies to separate (remember that the constraints are solved in the velocity domain, so errors get introduced when doing a linear integration step). It will run until either the applied position corrections are too small or until the max amount of iterations is reached (PhysicsSettings::mNumPositionSteps). Here there is also support for large islands, the island splits that were calculated in the Solve Velocity Constraints job are reused to solve partial islands in the same way as before.

+

It will also notify the broad phase of the new body positions / AABBs.

+

When objects move too little the body will be put to sleep. This is detected by taking the biggest two axis of the local space bounding box of the shape together with the center of mass of the shape (all points in world space) and keep track of 3 bounding spheres for those points over time. If the bounding spheres become too big, the bounding spheres are reset and the timer restarted. When the timer reaches a certain time, the object has is considered non-moving and is put to sleep.

+

+Soft Body Prepare

+

If there are any active soft bodies, this job will create the Soft Body Collide, Simulate and Finalize Jobs. It will also create a list of sorted SoftBodyUpdateContext objects that forms the context for those jobs.

+

+Soft Body Collide

+

These jobs will do broadphase checks for all of the soft bodies. A thread picks up a single soft body and uses the bounding box of the soft body to find intersecting rigid bodies. Once found, information will be collected about that rigid body so that Simulate can run in parallel.

+

+Soft Body Simulate

+

These jobs will do the actual simulation of the soft bodies. They first collide batches of soft body vertices with the rigid bodies found during the Collide job (multiple threads can work on a single soft body) and then perform the simulation using XPBD (also partially distributing a single soft body on multiple threads).

+

+Soft Body Finalize

+

This job writes back all the rigid body velocity changes and updates the positions and velocities of the soft bodies. It can activate/deactivate bodies as needed.

+
+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 000000000..1dffb65b5 --- /dev/null +++ b/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/md__build_2_r_e_a_d_m_e.html b/md__build_2_r_e_a_d_m_e.html new file mode 100644 index 000000000..b6a64e2fa --- /dev/null +++ b/md__build_2_r_e_a_d_m_e.html @@ -0,0 +1,446 @@ + + + + + + + +Jolt Physics: Building and Using Jolt Physics + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Building and Using Jolt Physics
+
+
+

+

+Build Types

+

Each platform supports multiple build targets

+
    +
  • Debug - Debug version of the library, turns on asserts
  • +
  • Release - Release version of the library, no asserts but includes profiling support and can draw the world and simulation properties
  • +
  • ReleaseASAN - As Release but turns on Address Sanitizer (clang only) to find bugs
  • +
  • ReleaseUBSAN - As Release but turns on Undefined Behavior Sanitizer (clang only) to find bugs
  • +
  • ReleaseCoverage - As Release but turns on Coverage reporting (clang only) to find which areas of the code are not executed
  • +
  • Distribution - Shippable version of the library, turns off all debugging support
  • +
+

+Includes

+

The Jolt headers don't include Jolt/Jolt.h. Always include Jolt/Jolt.h before including any other Jolt header. You can use Jolt/Jolt.h in your precompiled header to speed up compilation.

+

+Defines

+

There are a number of user configurable defines that turn on/off certain features:

+ +General Options (click to see more) +
    +
  • +JPH_SHARED_LIBRARY - Use the Jolt library as a shared library. Use JPH_BUILD_SHARED_LIBRARY to build Jolt as a shared library.
  • +
  • +JPH_PROFILE_ENABLED - Turns on the internal profiler.
  • +
  • +JPH_EXTERNAL_PROFILE - Turns on the internal profiler but forwards the information to a user defined external system (see Profiler.h).
  • +
  • +JPH_DEBUG_RENDERER - Adds support to draw lines and triangles, used to be able to debug draw the state of the world.
  • +
  • +JPH_DISABLE_TEMP_ALLOCATOR - Disables the temporary memory allocator, used mainly to allow ASAN to do its job.
  • +
  • +JPH_DISABLE_CUSTOM_ALLOCATOR - Disables the ability to override the memory allocator.
  • +
  • +JPH_FLOATING_POINT_EXCEPTIONS_ENABLED - Turns on division by zero and invalid floating point exception support in order to detect bugs (Windows only).
  • +
  • +JPH_CROSS_PLATFORM_DETERMINISTIC - Turns on behavior to attempt cross platform determinism. If this is set, JPH_USE_FMADD is ignored.
  • +
  • +JPH_DET_LOG - Turn on a lot of extra logging to help debug determinism issues when JPH_CROSS_PLATFORM_DETERMINISTIC is turned on.
  • +
  • +JPH_ENABLE_ASSERTS - Compiles the library so that it rises an assert in case of failures. The library ignores these failures otherwise.
  • +
  • +JPH_DOUBLE_PRECISION - Compiles the library so that all positions are stored in doubles instead of floats. This makes larger worlds possible.
  • +
  • +JPH_OBJECT_LAYER_BITS - Defines the size of ObjectLayer, must be 16 or 32 bits.
  • +
  • +JPH_OBJECT_STREAM - Includes the code to serialize physics data in the ObjectStream format (mostly used by the examples).
  • +
  • +JPH_NO_FORCE_INLINE - Don't use force inlining but fall back to a regular 'inline'.
  • +
  • +JPH_USE_STD_VECTOR - Use std::vector instead of Jolt's own Array class.
  • +
+
+
+ +CPU Instruction Sets (click to see more) +
    +
  • +JPH_USE_SSE4_1 - Enable SSE4.1 CPU instructions (default: on, x86/x64 only)
  • +
  • +JPH_USE_SSE4_2 - Enable SSE4.2 CPU instructions (default: on, x86/x64 only)
  • +
  • +JPH_USE_F16C - Enable half float CPU instructions (default: on, x86/x64 only)
  • +
  • +JPH_USE_LZCNT - Enable the lzcnt CPU instruction (default: on, x86/x64 only)
  • +
  • +JPH_USE_TZCNT - Enable the tzcnt CPU instruction (default: on, x86/x64 only)
  • +
  • +JPH_USE_AVX - Enable AVX CPU instructions (default: on, x86/x64 only)
  • +
  • +JPH_USE_AVX2 - Enable AVX2 CPU instructions (default: on, x86/x64 only)
  • +
  • +JPH_USE_AVX512 - Enable AVX512F+AVX512VL CPU instructions (default: off, x86/x64 only)
  • +
  • +JPH_USE_FMADD - Enable fused multiply add CPU instructions (default: on, x86/x64 only)
  • +
+
+

+Logging & Asserting

+

To override the default trace and assert mechanism install your own custom handlers in Trace and AssertFailed (see IssueReporting.h).

+

+Custom Memory Allocator

+

To implement your custom memory allocator override Allocate, Free, Reallocate, AlignedAllocate and AlignedFree (see Memory.h).

+

+Building

+
+ +Windows 10+ +
    +
  • +
    + +MSVC CL (default compiler) +
      +
    • +Download Visual Studio 2022 (Community or other edition)
    • +
    • +Download CMake 3.20+ (https://cmake.org/download/)
    • +
    • +Run cmake_vs2022_cl.bat
    • +
    • +Open the resulting project file VS2022_CL\JoltPhysics.sln
    • +
    • +Compile and run either 'Samples' or 'UnitTests'
    • +
    +
    +
    + +MSVC CL - 32 bit +
      +
    • +Download Visual Studio 2022 (Community or other edition)
    • +
    • +Download CMake 3.20+ (https://cmake.org/download/)
    • +
    • +Run cmake_vs2022_cl_32bit.bat
    • +
    • +Open the resulting project file VS2022_CL_32BIT\JoltPhysics.sln
    • +
    • +Compile and run either 'Samples' or 'UnitTests'
    • +
    +
    +
    + +MSVC Clang compiler +
      +
    • +Download Visual Studio 2022 (Community or other edition)
    • +
    • +Make sure to install "C++ Clang Compiler for Windows 11.0.0+" and "C++ Clang-cl for v142+ build tools (x64/x86)" using the Visual Studio Installer
    • +
    • +Download CMake 3.20+ (https://cmake.org/download/)
    • +
    • +Run cmake_vs2022_clang.bat
    • +
    • +Open the resulting project file VS2022_Clang\JoltPhysics.sln
    • +
    • +Compile and run either 'Samples' or 'UnitTests'
    • +
    +
    +
    + +MSVC Universal Windows Platform +
      +
    • +Download Visual Studio 2022+ (Community or other edition)
    • +
    • +Make sure to install "Universal Windows Platform development" using the Visual Studio Installer
    • +
    • +Download CMake 3.20+ (https://cmake.org/download/)
    • +
    • +Run cmake_vs2022_uwp.bat
    • +
    • +Open the resulting project file VS2022_UWP\JoltPhysics.sln
    • +
    • +Compile and run 'UnitTests'
    • +
    +
    +
    + +MinGW +
      +
    • +Follow download instructions for MSYS2 (https://www.msys2.org/)
    • +
    • +From the MSYS2 MSYS app run: pacman -S –needed mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake
    • +
    • +From the MSYS2 MINGW x64 app, in the Build folder run: ./cmake_windows_mingw.sh
    • +
    • +Run: cmake –build MinGW_Debug
    • +
    • +Run: MinGW_Debug/UnitTests.exe
    • +
    +
    +
  • +
+
+
+ +Linux +
    +
  • +
    + +Debian flavor, x64 or ARM64 +
      +
    • +Install clang (apt-get install clang)
    • +
    • +Install cmake (apt-get install cmake)
    • +
    • +Run: ./cmake_linux_clang_gcc.sh
    • +
    • +Go to the Linux_Debug folder
    • +
    • +Run: make -j$(nproc) && ./UnitTests
    • +
    +
    +
    + +Debian flavor, MinGW Cross Compile +
      +
    • +This setup can be used to run samples on Linux using wine and vkd3d. Tested on Ubuntu 22.04
    • +
    • +Graphics card must support Vulkan and related drivers must be installed
    • +
    • +Install mingw-w64 (apt-get install mingw-w64)
    • +
    • +Run: update-alternatives –config x86_64-w64-mingw32-g++ (Select /usr/bin/x86_64-w64-mingw32-g++-posix)
    • +
    • +Install cmake (apt-get install cmake)
    • +
    • +Install wine64 (apt-get install wine64)
    • +
    • +Run: export WINEPATH="/usr/x86_64-w64-mingw32/lib;/usr/lib/gcc/x86_64-w64-mingw32/10-posix" (change it based on your environment)
    • +
    • +Run: ./cmake_linux_mingw.sh Release (Debug doesn't work)
    • +
    • +Go to the MinGW_Release folder
    • +
    • +Run: make -j$(nproc) && wine UnitTests.exe
    • +
    • +Run: wine Samples.exe
    • +
    +
    +
  • +
+
+
+ +Android +
    +
  • +Install Android Studio 2020.3.1+ (https://developer.android.com/studio/)
  • +
  • +Open the 'Android' folder in Android Studio and wait until gradle finishes
  • +
  • +Select 'Run' / 'Run...' and 'UnitTests'
  • +
  • +If the screen turns green after a while the unit tests succeeded, when red they failed (see the android log for details)
  • +
+
+
+ +macOS +
    +
  • +Install XCode
  • +
  • +Download CMake 3.23+ (https://cmake.org/download/)
  • +
  • +Run: ./cmake_xcode_macos.sh
  • +
  • +This will open XCode with a newly generated project
  • +
  • +Build and run the project
  • +
  • +Note that you can also follow the steps in the 'Linux' section if you wish to build without XCode.
  • +
+
+
+ +iOS +
    +
  • +Install XCode
  • +
  • +Download CMake 3.23+ (https://cmake.org/download/)
  • +
  • +Run: ./cmake_xcode.ios.sh
  • +
  • +This will open XCode with a newly generated project
  • +
  • +Build and run the project (note that this will only work in the simulator as the code signing information is not set up)
  • +
+
+
+ +Emscripten (tested only on Linux) + +
+

+Other Build Tools

+
    +
  • A vcpkg package is available here.
  • +
  • A xmake package is available here.
  • +
  • Jolt has been verified to build with ninja through CMake.
  • +
+

+Errors

+

+Link Error: File Format Not Recognized

+

If you receive the following error when linking:

+
/usr/bin/ld: libJolt.a: error adding symbols: file format not recognized
+

Then you have not enabled interprocedural optimizations (link time optimizations) for your own application. See the INTERPROCEDURAL_OPTIMIZATION option in CMakeLists.txt.

+

+Link Error: Unresolved External Symbol

+

If you receive a link error that looks like:

+
error LNK2001: unresolved external symbol "public: virtual void __cdecl JPH::ConvexShape::GetSubmergedVolume(...) const"
+

you have a mismatch in defines between your own code and the Jolt library. In this case the mismatch is in the define JPH_DEBUG_RENDERER which is most likely defined in Jolt.lib and not in your own project. In Debug and Release builds, Jolt by default has JPH_DEBUG_RENDERER defined, in Distribution it is not defined. The cmake options DEBUG_RENDERER_IN_DEBUG_AND_RELEASE and DEBUG_RENDERER_IN_DISTRIBUTION override this behavior.

+

The RegisterTypes function (which you have to call to initialize the library) checks the other important defines and will trace and abort if there are more mismatches.

+

+DirectX Error

+

The samples use DirectX for the graphics implementation, when attempting to run the samples you may get a DirectX error pop-up which may say "The GPU device instance has been suspended", in your debugger you may see the message "Using the Redistributable D3D12 SDKLayers dll also requires that the latest SDKLayers for Windows 10 is installed.".

+

Fix this by enabling "Graphics Tools" which is an optional Windows settings. To enable it you have to press the windows key, search for "Manage Optional Features", and then click "Add a Feature", and install "Graphics Tools".

+

+Illegal Instruction Error

+

If your CPU doesn't support all of the instructions you'll get an Illegal instruction exception.

+

On Linux to see what instructions your CPU supports run lscpu and then look at the flags section, on Windows you can use a program like coreinfo. Once you know what instructions your cpu supports you can configure the project through cmake and for example disable all special instructions:

+
./cmake_linux_clang_gcc.sh Release clang++ -DUSE_SSE4_1=OFF -DUSE_SSE4_2=OFF -DUSE_AVX=OFF -DUSE_AVX2=OFF -DUSE_AVX512=OFF -DUSE_LZCNT=OFF -DUSE_TZCNT=OFF -DUSE_F16C=OFF -DUSE_FMADD=OFF
+

Note that this example is for Linux but the cmake settings work on Windows too.

+

+Doxygen on Windows

+

Documentation can be generated through doxygen:

+ +
+
+
+ + + + diff --git a/md__docs_2_a_p_i_changes.html b/md__docs_2_a_p_i_changes.html new file mode 100644 index 000000000..52df7ce22 --- /dev/null +++ b/md__docs_2_a_p_i_changes.html @@ -0,0 +1,250 @@ + + + + + + + +Jolt Physics: Breaking API Changes + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Breaking API Changes
+
+
+

This document lists all breaking API changes by date and by release tag. Note that not all API changes are listed here, trivial changes (that cause a compile error and require an obvious fix) are not listed.

+

Changes that make some state saved through SaveBinaryState from a prior version of the library unreadable by the new version is marked as SBS. See Saving Shapes for further information.

+

+Changes between v5.1.0 and latest

+
    +
  • 20240825 - RayCastSettings::mBackFaceMode was split into mBackFaceModeTriangles and mBackFaceModeConvex. Replace mBackFaceMode = ... with SetBackFaceMode(...) (b3cd9f4846c52a84064b7e5e9a9a9fcbfdf286de)
  • +
  • 20240823 - Added virtual function Shape::GetLeafShape. If you have custom shapes, you may need to override this function and provide an implementation. (d7f08b83670ea6d0842e231f50ad2a175f56f949)
  • +
+

+Changes between v5.0.0 and v5.1.0

+
    +
  • 20240811 - Added cmake options to toggle exception-handling and RTTI. CPP_EXCEPTIONS_ENABLED enables exceptions, CPP_RTTI_ENABLED enables RTTI. Before this change RTTI was off for MSVC and on for other compilers. Exceptions were on for all builds. You may need to set these options if your build relies on these C++ features. (760974d733ed24ea268a3bb9a8ef391b8ac503c7)
  • +
  • 20240803 - SBS - Removed the use of size_t when saving to binary. This means that the 32 and 64 bit versions of the lib can now read each others streams and that the 64 bit version has been adjusted to match the 32 bit version. (b54a0849e01f9f793fef3a219dfabdc7559f71ed)
  • +
  • 20240714 - The Reallocate function now takes an additional parameter 'old size' (6a7251d095f4c7e7c1c351d00829a20fa770246e)
  • +
  • 20240517 - SBS - Combined a number of allocations into 1 for HeightFieldShape. This changes the binary serialization format for this class. (bd32df12bb8ab77b37eeedc226f368268c32ae17)
  • +
  • 20240514 - Added macro JPH_OBJECT_STREAM that controls if ObjectStream is compiled or not. By default this is turned on, so you should not see a change, but if you compile without cmake you may need to define JPH_OBJECT_STREAM. (dc3ea787223d45855987e32b8bef7f9a59f6fcd2)
  • +
  • 20240504 - Replaced std::vector with a custom Array class. It can be turned off by enabling the JPH_USE_STD_VECTOR define (or the USE_STD_VECTOR cmake option). (bdc1695a643457db86b72119b1393ae69b9a182e)
  • +
  • 20240504 - Added a Reallocate function that needs to be implemented when you override the memory allocators and a reallocate function that you need to implement if you have a custom array allocator. The behavior is the same as the C realloc function. It is used to reallocate a block of memory for simple types instead of always going through a alloc, copy, free cycle. (bdc1695a643457db86b72119b1393ae69b9a182e)
  • +
  • 20240413 - SBS - Skinned constraints are now processed in parallel, this means that they are reordered when Optimize() is called (see SoftBodySharedSettings::OptimizationResults::mSkinnedRemap). This also caused a change to the binary serialization format of SoftBodySharedSettings. (744900a4becb4dc69ee2bd70d6b26ee46da3e64a)
  • +
  • 20240407 - SBS - The binary format of SoftBodySharedSettings changed due to an optimization pass. Also the results of the Optimize() call are no longer serialized when using an ObjectStream. Finally the Optimize() call will reorder the constraints (see SoftBodySharedSettings::OptimizationResults). (22739d900b4d92905ecccf2d81f18dece4a42595)
  • +
+

+Changes between v4.0.2 and v5.0.0

+
    +
  • 20240327 - SBS - SoftBodySharedSettings::CreateEdges was renamed to CreateConstraints and can now also create shear and bend constraints. This also breaks the serialization format for SoftBodySharedSettings. (8e4bf3fa03f59cff6af7394d69cdf62abaf7a1d2)
  • +
  • 20240310 - SBS - Soft body skinned constraints now use a sphere as backstop instead of an infinite plane. This also breaks the serialization format for SoftBodySharedSettings. (17db6d3f245d2198319c3787f62498fe5935b7c8)
  • +
  • 20240225 - SBS - Changes were made to SoftBodySharedSettings that break the binary serialization format of that class. (277b818ffefed4f15477ff1e6d0cc07065899903)
  • +
  • 20240223 - Added ConvexShape::ESupportMode::Default. If you have custom convex shapes you need to handle this in ConvexShape::GetSupportFunction. (0f67cc2915c5e34a4a38480580dad73888a1952e)
  • +
  • 20240216 - Restriction angular motion using EAllowedDOFs now works in world space rather than in local space. This change was made to be more in line with other physics engines and to fix some issues with constraints. If you need the old behavior then copy this code into your own code base and call MotionProperties::SetInverseInertia(diagonal, rotation) where diagonal is called mInvInertiaDiagonal and rotation is called mInertiaRotation in the code snippet. (191536d51d71ee29147205aa09d1acab52789e5f)
  • +
  • 20240210 - Fixed spelling error EPathRotationConstraintType::ConstaintToPath to EPathRotationConstraintType::ConstrainToPath (6c095bbf7906b01f427b52d43212f5ebf760fc81)
  • +
  • 20240210 - Added extra parameter fraction hint to PathConstraintPath::GetClosestPoint. This can be used to speed up the search along the curve and to disambiguate fractions in case a path reaches the same point multiple times (i.e. a figure-8) (b91e729e6e2c34df16cc03f5ac3b3f6d3fa8b762)
  • +
  • 20240203 - Longitudinal friction impulse for wheeled/tracked vehicles could become much higher than the calculated max because each iteration it was clamped to the max friction impulse which meant the total friction impulse could be PhysicsSettings::mNumVelocitySteps times too high. In case this breaks your vehicle, the new max tire impulse callback can be used to restore the old behavior, see the vehicle constraint test. (a456b244aa2ad2ce0a8124d27823377ed0b1c4b4)
  • +
  • 20240120 - SBS - Implemented enhanced internal edge removal algorithm. This breaks the binary serialization format for BodyCreationSettings. (94c1ad811b95c72f4d3bb6841c73c1c3461caa91)
  • +
  • 20240113 - VehicleConstraint::CombineFunction now calculates both longitudinal and lateral friction in 1 call so there can be dependencies between the two. (d6ed5b3e7b22904af555088b6ae4770f8fb0e00f)
  • +
  • 20240105 - CharacterVirtual will now receive an OnContactAdded callback when it collides with a sensor (but will have no further interaction). You may need to update the logic in your CharacterContactListener to ignore those contacts. (fb778c568d3ba14556559324671ffec172957f5c)
  • +
  • 20240101 - Renamed SensorDetectsStatic to CollideKinematicVsNonDynamic and made it work for non-sensors. This means that kinematic bodies can now get collision callbacks when they collide with other static / kinematic objects. It can also affect the order in which bodies are passed in the ContactListener::OnContactValidate callback. (2d607c4161a65201d66558a2cc76d1265aea527e)
  • +
  • 20231220 - SBS - Added ability to enable gyroscopic forces on BodyCreationSettings. This breaks the binary serialization format for this class. (9d7748eaa91341adc17554f32bf991bfed04e47e)
  • +
  • 20231219 - SBS - Added a 'swing type' attribute to SixDOFConstraint and SwingTwistConstraint. This breaks the binary serialization format. (41016256e2cf1262ec05cff3cfa7645668ee0bf0)
  • +
  • 20231208 - Changed the meaning of Constraint::mNumVelocity/PositionStepsOverride. Before the number of steps would be the maximum of all constraints and the default value, now an overridden value of 0 means that the constraint uses the default value, otherwise it will use the value as specified. This means that if all constraints in an island have a lower value than the default, we will now use the lower value instead of the default. (0771808a03b850d16f1c64156f0aee827ca3706b)
  • +
  • 20231208 - SBS - Bodies can now also override the default number of solver iterations. This breaks the binary serialization format. (0771808a03b850d16f1c64156f0aee827ca3706b)
  • +
  • 20231203 - VehicleConstraint::CombineFunction got two additional parameters to identify which wheel is requesting friction. (8d80155f93d0d0c3ffe3dd46550650b9c830d304)
  • +
+

+Changes between v4.0.0 and v4.0.2

+
    +
  • No breaking changes.
  • +
+

+Changes between v3.0.1 and v4.0.0

+
    +
  • 20231003 - SBS - Bug fix in serialization of SoftBodySharedSettings breaks binary serialization format. (ccb250747eee4dedebfa02d950775478fb52f786)
  • +
  • 20230914 - Removed GetProcessorTicksPerSecond as it was not correctly implemented for all platforms. (d44f4bad0872075d5cef2779742c89203d4f4488)
  • +
  • 20230819 - SBS - RagdollSettings got the ability to have constraints that do not follow the skeleton. This changes the binary serialization format for this class. (08fc49d2d7abfa1a69e21971785d37724c748bb6)
  • +
  • 20230807 - Renamed ContactSettings::mRelativeSurfaceVelocity to mRelativeLinearSurfaceVelocity. (76b809ddb1abf96641acc587fffa70101323d323)
  • +
  • 20230807 - SBS - PhysicsScene is now able to load/save soft bodies. This changes the binary serialization format. (779ba3673beebdc4021842516f4ff6aa7c1e09b4)
  • +
  • 20230805 - Body::SaveState and MotionProperties::SaveState now only save the state that can be changed by the simulation. Configuration properties like friction, restitution etc. must be saved by the user if desired. (7ff50429abd53f1914fd25a9e80ff47f22bc9f0e)
  • +
  • 20230801 - SBS - Constraint priority was added to all constraints which changes the binary serialization format. (e341bb3e959460fbe196032095c1ab0346d7e746)
  • +
  • 20230704 - SBS - A new flag was added to BodyCreationSettings that changes the binary serialization format. (2dd3a033a41e422eb470484029324cc9bbaf0825)
  • +
  • 20230629 - Fix for engine RPM being much higher than wheel RPM when measured at clutch. Before we were ignoring bake and wheel torques in engine RPM calculation. Now they're much closer but this unfortunately means that the simulation of the vehicle has changed and mainly the engine torque and clutch strength need to be re-tweaked. (b40090766c545a68dccfac76cde8c6345ca626a6)
  • +
  • 20230623 - The parameter inIntegrationSubSteps was removed from PhysicsSystem::Update because more and more features didn't support it. If you were using it multiply inCollisionSteps with the value of inIntegrationSubSteps to get roughly the same behavior. (8fcc7a78ec051b215bf13b037b9f975baa803b6f)
  • +
  • 20230618 - SBS - A new flag was added to BodyCreationSettings that changes the binary serialization format. (107b70c7585909f0757a62c318261a18d670ff97)
  • +
  • 20230610 - A bug was fixed that causes the vehicle suspension to be weaker when driving over low mass objects. This also changes suspension behavior a bit when driving over static objects. (44b82e395697ea553574df3cd806ffe264bfa5c4)
  • +
  • 20230609 - SBS - The MotorcycleController lean controller is now a full PID controller. This changes binary serialization format. (70e7bb3e5808dabc17ee38fb823fbfa7e9140a91)
  • +
  • 20230609 - SBS - VehicleConstraint uses the new SpringSettings class as a member which contains the mFrequency and mDamping members. This requires minor code changes. (0da97d8f3345f14c5b4b0ee3571c05832c556f98)
  • +
  • 20230609 - SBS - DistanceConstraintSettings, SliderConstraintSettings and MotorSettings now use the new SpringSettings class as a member which contains the mFrequency and mDamping members. This requires minor code changes. (3cabc057c1267fde288c1ab2a23076702c71eb79)
  • +
  • 20230520 - A bug was fixed in CharacterVirtual that makes mPenetrationRecoverySpeed behave according to the documentation (1 = fully resolve collision in 1 update). With the bug the recovery was too little. If you want the penetration recovery to work as before with the bug multiply it by 1 / delta_time. (8dd93317d66a9a72d3afeff4ecb17c257a7e9d91)
  • +
  • 20230420 - To support compiling Jolt as a shared library, the RTTI macros were changed to be able to specify if a symbol should be exported or not. If you're using Jolt's RTTI system in your own project you need to change e.g. JPH_DECLARE_RTTI_VIRTUAL(XXX) to JPH_DECLARE_RTTI_VIRTUAL(JPH_NO_EXPORT, XXX). (d2f1d97004d036c6f759203c42e264e401472037)
  • +
+

+Changes between v2.0.1 and v3.0.0

+
    +
  • 20230331 - SBS - Vehicle wheels now support specifying the steering axis and wheel forward and up axis separately. This breaks the serialization format and requires setting extra properties on the wheels. (4269d8bbc77b889552a842c2e8476ba7ffc6b9a1)
  • +
  • 20230328 - Vehicle now supports suspension under an angle. The behavior of the suspension, even if it is under 90 degrees with the vehicle body, changed so this may require tweaking the spring constants. (172a99c718bded5faa169ac440517286684fa2f0)
  • +
  • 20230316 - The signature of ShapeFilter changed and the ShouldCollide function is no longer called for triangles inside a mesh/heightfield shape (you can use CollisionCollector::AddHit to filter per triangle). The previous implementation didn't pass in enough context for the application to fully determine which sub shapes were colliding. See #473 for more information. (bc4fa997f15f2953dc87ee5c1ba51ecf2077c287)
  • +
  • 20230313 - VehicleCollisionTester::Collide parameter outSuspensionLength was returning suspension length + wheel radius, now it returns the suspension length. If you have your own implementation of VehicleCollisionTester you need to update your code. (fcd9cb0f1677709e30951f2748aefd5f72ffdae1)
  • +
  • 20230212 - Sensors are now able to detect other Sensors, make sure you put sensors in an ObjectLayer that doesn't collide with other sensors if you want to preserve the old behavior. (a76f5891ee429ae4fcde659c19f1eb769f9d8a21)
  • +
  • 20230205 - SBS - Added 'IsSensor' and 'UseManifoldReduction' to BodyCreationSettings::SaveBinaryState. (8f6f210f53fc71e43760e20aeb2eae28ea168f4b)
  • +
  • 20221231 - ObjectLayerPairFilter and ObjectVsBroadPhaseLayerFilter are now objects instead of function pointers. (4315ad53e354f094f753664fcf7a52870f6915e4)
  • +
  • 20221208 - ContactListener::OnContactValidate is reporting collisions relative to inBaseOffset. Add this to the contact point if you want world space positions. (428611482825e369e60e0a5daf17c69a4d0f2a6f)
  • +
  • 20221204 - Changes related to double precision support for positions (a2c1c22059fa031faf0208258e654bcff79a63e4)
      +
    • In many places in the public API Vec3 has been replaced by RVec3 (a Vec3 of Real values which can either be double or float depending on if JPH_DOUBLE_PRECISION is defined). In the same way RMat44 replaces Mat44. When compiling in single precision mode (the default) you should not notice a change.
    • +
    • Shape::GetSubmergedVolume now takes a plane that's relative to inCenterOfMassTransform instead of one in world space
    • +
    • Many of the NarrowPhaseQuery and TransformedShape collision queries now have a 'base offset' that you need to specify. Go to Big Worlds for more info.
    • +
    • The NarrowPhaseQuery/TransformedShape CastRay / CastShape functions now take a RRayCast / RShapeCast struct as input. When compiling in single precision mode this is the same as a RayCast or ShapeCast so only the type name needs to be updated.
    • +
    • If you implement your own TempAllocator and want to compile in double precision, make sure you align to JPH_RVECTOR_ALIGNMENT bytes (instead of 16)
    • +
    • The SkeletonPose got a 'root offset' member, this means that the ragdoll will now make the joint transform of the first body zero and put that offset in the 'root offset'.
    • +
    • ContactManifold now stores the contacts relative to mBaseOffset, the arrays containing the contact points have been renamed from mWorldSpaceContactPointsOn1/2 to mRelativeContactPointsOn1/2 to reflect this.
    • +
    • The DebugRenderer::DrawLine function now takes RVec3Arg parameters instead of Float3 parameters.
    • +
    • The format of a recording recorded with DebugRendererRecorder has changed, this invalidates any prior recordings.
    • +
    +
  • +
  • 20221128 - MotionProperties::SetMotionQuality has been removed because changing it for an active body could cause crashes. Use BodyInterface::SetMotionQuality instead. (64802d163a7336e60916365ad9bce764cec4ca70)
  • +
+

+Changes between v1.1.0 and v2.0.0

+
    +
  • 20221027 - SBS (vehicles only) - Rewrote engine model for wheeled vehicle. Before engine inertia was only used when the clutch was pressed, now it is always used, so you may want to use a lower value. The way torque is distributed over the wheels has also changed and may require tweaking the vehicle parameters. (5ac751cee9afcc097fd4f884308f5e4dc9fdaeaf)
  • +
  • 20220903 - SBS - Added overrides for number of position/velocity solver iterations. Only affects serialization. (38ec33942ead4968a83409bd13d868f60e6397c4)
  • +
  • 20220826 - SBS - Removed FixedConstraintSettings and SliderConstraintSettings SetPoint functions. If you were calling this function replace it by setting mAutoDetectPoint = true. (d16a0b05bfeed42b1618e3774a9c953e6922d22b)
  • +
  • 20220614 - It is now possible to override the memory allocator, register the default using RegisterDefaultAllocator(). This means that the public API now takes STL containers that use a custom memory allocator so use Array instead of vector, UnorderedMap instead of unordered_map etc. If you're using placement new, add :: in front of new. Define JPH_DISABLE_CUSTOM_ALLOCATOR to disable this new behavior (b68097f582148d6f66c18a6ff95c5ca9b40b48cc)
  • +
  • 20220606 - SBS - The slider constraint now has frequency and damping for its limits (09d6d9d51c46fbd159bf98abfd43cc639f6c0403)
  • +
  • 20220606 - SBS - The rack and pinion and gear constraints were added (09d6d9d51c46fbd159bf98abfd43cc639f6c0403)
  • +
  • 20220517 - Note: Superseded by d16a0b05bfeed42b1618e3774a9c953e6922d22b. When constructing a FixedConstraint you now need to call FixedConstraintSettings::SetPoint to configure the point where the bodies attach (4f7c925c31f39eda1d8d68e4e72456b5def93d9b)
  • +
  • 20220516 - Constraint::GetType was renamed to GetSubType, a new GetType function was introduced (3e2151a009e8f11ca724754b2bd25e14d2654fb6)
  • +
  • 20220516 - SBS - Added possibility to save the current state of the physics world as a scene (3e2151a009e8f11ca724754b2bd25e14d2654fb6)
  • +
  • 20220510 - Factory::sInstance must now be allocated by the application prior to calling RegisterTypes() and has changed to a pointer (3ca62973dae7cda7a9ceece698438a45b9ad1433)
  • +
  • 20220503 - Unused function SerializableObject::OnLoaded was removed (388d47254a236c053a472e54c10b264765badc09)
  • +
  • 20220502 - ContactConstraintManager::CombineFunction has additional parameters: the SubShapeIDs from both bodies (6b873563739dfd3d77263c2c50af2f3f418ec15b)
  • +
  • 20220415 - Removed Body::GetDebugName / SetDebugName, keep this info in a lookaside table if you need it (6db4d3beac6760e55f65102db00f93dfbc56ac26)
  • +
  • 20220406 - Renamed CollisionDispatch::sCastShapeVsShape to sCastShapeVsShapeLocalSpace (6ba21f50dcf17bd506080ec30759724a7f3097d8)
  • +
  • 20220327 - Changed the default include path, #include <xxx> must be replaced by #include <Jolt/xxx> (06e9d17d385814cd24d3b77d689c0a29d854e194)
  • +
  • 20220318 - Added support for SSE2. If you want to use later versions of SSE make sure you have JPH_USE_SSE4_1 and JPH_USE_SSE4_2 defined (28f363856a007d03f657e46e8f6d90ccd7c6487a)
  • +
  • 20220303 - Note: Partially superseded by d16a0b05bfeed42b1618e3774a9c953e6922d22b. When constructing a SliderConstraint you now need to call SliderConstraintSettings::SetPoint to configure the point where the bodies attach. Also replace mSliderAxis = x with SetSliderAxis(x) (5a327ec182d0436d435c62d0bccb4e76c6324659)
  • +
  • 20220228 - PointConstraint::mCommonPoint is now mPoint1 / mPoint2. Replace mCommonPoint = x with mPoint1 = mPoint2 = x (066dfb8940ba3e7dbf8ed47e9a1eeb194730e04b)
  • +
  • 20220226 - ObjectToBroadPhaseLayer and BroadPhaseLayerToString changed to BroadPhaseLayerInterface, this makes mapping a broadphase layer to an object layer more flexible (36dd3f8c8c31ef1aeb7585b2b615c23bc8b76f13)
  • +
  • 20220222 - Shape and body user data changed from void * / uint32 to uint64 (14e062ac96abd571c6eff5e40b1df4d8b2333f55)
  • +
+

+Changes between v1.0.0 and v1.1.0

+
    +
  • No breaking changes.
  • +
+

+Changes between v0.0.0 and v1.0.0

+
    +
  • 20220107 - PhysicsSettings::mBodyPairCacheCosMaxDeltaRotation was renamed to mBodyPairCacheCosMaxDeltaRotationDiv2
  • +
  • 20211219 - SBS - Now storing 3 components for a Vec3 instead of 4 in SaveBinaryState (23c1b9d9029d74076c0549c8779b3b5ac2179ea3)
  • +
  • 20211212 - Removed StatCollector (92a117e0f05a08de154e86d3cd0b354783aa5593)
  • +
  • 20210711 - HeightFieldShapeSettings::mBlockSize is subdivided one more time at run-time, so this is effectively 2x the block size (2aa3b443bf71785616f3140c32e6a04c49516535)
  • +
  • 20211106 - Mutex class now has its own implementation on Platform Blue, users must implement the JPH_PLATFORM_BLUE_MUTEX_* functions (a61dc67503a87ef0e190f7fb31d495ac51aa43de)
  • +
  • 20211019 - ShapeCast::mShape no longer keeps a reference, the caller is responsible for keeping the reference now (e2bbdda9110b083b49ba323f8fd0d88c19847c2e)
  • +
  • 20211004 - Removed RTTI from Shape class, use Shape::GetType / GetSubType now (6d5cafd53501c2c1e313f1b1f29d5161db074fd5)
  • +
  • 20210930 - Changed RestoreMaterialState and RestoreSubShapeState to use pointers instead of vectors to allow loading shapes with fewer memory allocations (b8953791f35a91fcd12568c7dc4cc2f68f40fb3f)
  • +
  • 20210918 - PhysicsSystem::Init takes an extra parameter to specify the amount of mutexes to use (ef371411af878023f062b9930db09f17411f01ba)
  • +
  • 20210827 - BroadPhaseLayerPairFilter was changed to ObjectVsBroadPhaseLayerFilter to avoid testing too many layers during collision queries (33883574bbc6fe208a4b62054d00b582872da6f4)
  • +
+
+
+
+ + + + diff --git a/md__docs_2_performance_test.html b/md__docs_2_performance_test.html new file mode 100644 index 000000000..e8e1f42e9 --- /dev/null +++ b/md__docs_2_performance_test.html @@ -0,0 +1,153 @@ + + + + + + + +Jolt Physics: Performance Test + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Performance Test
+
+
+

The performance test application contains a couple of simple scenes to test performance of Jolt Physics. It will output the results to the TTY in CSV format.

+

+Commandline options

+
    +
  • -s=[scene]: This allows you to select a scene, [scene] can be;
      +
    • Ragdoll: A scene with 16 piles of 10 ragdolls (3680 bodies) with motors active dropping on a level section.
    • +
    • RagdollSinglePile: A single pile of 160 ragdolls (3680 bodies) with motors active dropping on a level section.
    • +
    • ConvexVsMesh: A simpler scene of 484 convex shapes (sphere, box, convex hull, capsule) falling on a 2000 triangle mesh.
    • +
    • Pyramid: A pyramid of 1240 boxes stacked on top of each other to profile large island splitting.
    • +
    +
  • +
  • -i=[iterations]: Number of physics steps before the test finishes.
  • +
  • -q=[quality]: This limits the motion quality types that the test will run on. By default it will test both. [quality] can be:
      +
    • Discrete: Discrete collision detection
    • +
    • LinearCast: Linear cast continous collision detection
    • +
    +
  • +
  • -t=[num]: This sets the amount of threads the test will run on. By default it will test 1 .. number of virtual processors. Can be 'max' to run on as many thread as the CPU has.
  • +
  • -no_sleep: Disable sleeping.
  • +
  • -p: Outputs a profile snapshot every 100 iterations
  • +
  • -r: Outputs a performance_test_[tag].jor file that contains a recording to be played back with JoltViewer
  • +
  • -f: Outputs the time taken per frame to per_frame_[tag].csv
  • +
  • -h: Displays a help text
  • +
  • -rs: Record the simulation state in state_[tag].bin.
  • +
  • -vs: Validate the recorded simulation state from state_[tag].bin. This will after every simulation step check that the state is the same as the recorded state and trigger a breakpoint if this is not the case. This is used to validate cross platform determinism.
  • +
  • -repeat=[num]: Repeats all tests num times.
  • +
  • -validate_hash=[hash]: Will validate that the hash of the simulation matches the supplied hash. Program terminates with return code 1 if it doesn't. Can be used to automatically validate determinism.
  • +
+

+Output

+
    +
  • Motion Quality: Shows the motion quality for the test.
  • +
  • Thread Count: The amount of threads used for the test.
  • +
  • Steps / Second: Average amount of physics steps / second over the entire duration of the test.
  • +
  • Hash: A hash of all positions and rotations of the bodies at the end of the test. Can be used to verify that the test was deterministic.
  • +
+

+Results

+

If you're interested in how Jolt scales with multiple CPUs and compares to other physics engines, take a look at this document.

+
+
+
+ + + + diff --git a/md__docs_2_projects_using_jolt.html b/md__docs_2_projects_using_jolt.html new file mode 100644 index 000000000..512f58146 --- /dev/null +++ b/md__docs_2_projects_using_jolt.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Projects Using Jolt + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Projects Using Jolt
+
+
+

+

If your project is using Jolt, open a discussion or send a PR to add it to the list.

+
+
+
+ + + + diff --git a/md__docs_2_release_notes.html b/md__docs_2_release_notes.html new file mode 100644 index 000000000..05376ad57 --- /dev/null +++ b/md__docs_2_release_notes.html @@ -0,0 +1,455 @@ + + + + + + + +Jolt Physics: Release Notes + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Release Notes
+
+
+

For breaking API changes see this document.

+

+Unreleased changes

+

+New functionality

+ +

+Bug fixes

+
    +
  • Fixed an issue where enhanced internal edge removal would throw away valid contacts when a dynamic compound shape is colliding with another mesh / box shape.
  • +
  • Fixed an issue where the bounding volume of a HeightFieldShape was not properly adjusted when calling SetHeights leading to missed collisions.
  • +
  • Workaround for CMake error 'CMake Error: No output files for WriteBuild!' when using the 'Ninja Multi-Config' generator.
  • +
  • When a height field was created where SampleCount / BlockSize is not a power of 2 and a soft body touched the right or bottom border of the height field, the application would crash.
  • +
+

+v5.1.0

+

+New functionality

+

+Soft Body

+
    +
  • Added support for applying a global force to a soft body through Body::AddForce.
  • +
  • Implemented better algorithm to split soft body constraints into parallel groups. This makes the soft body simulation 10-20% faster and also enables multithreading LRA, bend, volume and skinned constraints.
  • +
  • Added approximate ACos function which speeds up dihedral bend constraints by approx. 10%.
  • +
  • Improved sorting of LRA soft body constraints to improve convergence.
  • +
  • Added ability to draw soft body constraint evaluation order.
  • +
+

+HeightField Shape

+
    +
  • Sped up deserialization of HeightFieldShape/MeshShape classes by optimizing reading a vector of data in StreamIn, by switching std::vector out for a custom Array class and by combining a number of allocations into one.
  • +
  • Added HeightFieldShape::GetMinHeightValue/GetMaxHeightValue that can be used to know which range of heights are accepted by SetHeights.
  • +
  • Allowing negative stride when getting/setting height field shape heights or materials. This improves performance if your data happens to be layed out the wrong way around.
  • +
  • Added HeightFieldShapeSettings::mMaterialsCapacity which can enlarge the internal materials array capacity to avoid resizing when HeightFieldShape::SetMaterials is called with materials that weren't in use by the height field yet.
  • +
  • Added Clone function to HeightFieldShape. This allows creating a copy before modifying the shape.
  • +
+

+Character

+ +

+Vehicles

+
    +
  • Added ability to override the gravity vector per vehicle. This allows creating vehicles that can e.g. stick to the surface of a track and drive upside down. See VehicleConstraint::OverrideGravity.
  • +
+

+Various

+
    +
  • Replaced std::vector with a custom Array class. std::vector initializes memory to zero which causes an undesired performance overhead.
  • +
  • Added macro JPH_OBJECT_STREAM that controls if ObjectStream and serialized attributes are compiled into the library or not. This can reduce the size of the library if you're not using this feature.
  • +
  • Added option to get a callback when a JobSystemThreadPool thread starts/stops. This allows you to e.g. set application specific thread locals.
  • +
  • Added cmake option USE_ASSERTS to turn on asserts in builds other than the Debug build.
  • +
  • Switch from using _DEBUG to NDEBUG to detect debug mode. NDEBUG is defined in the standard while _DEBUG is Visual Studio specific.
  • +
  • The OVERRIDE_CXX_FLAGS cmake flag will now also work for MSVC and allow you to specify your own CMAKE_CXX_FLAGS_DEBUG/CMAKE_CXX_FLAGS_RELEASE flags
  • +
  • BodyInterface::AddForce/Torque functions now take an optional EActivation parameter that makes it optional to activate the body. This can be used e.g. to not let the body wake up if you're applying custom gravity to a body.
  • +
  • Activating bodies now resets the sleep timer when the body is already active. This prevents the body from going to sleep in the next frame and can avoid quick 1 frame naps.
  • +
  • Added Clone function to MutableCompoundShape. This allows creating a copy before modifying the shape.
  • +
  • QuadTree / FixedSizeFreeList: Reorder variable layout to reduce false sharing & thread syncs to reduce simulation time by approximately 5%.
  • +
  • Generate a CMake config file when the project is installed. Allows for other projects to import Jolt using the find_package() functionality.
  • +
  • Added USE_WASM_SIMD cmake option. This will enable SIMD on the emscripten WASM build.
  • +
  • Emscripten WASM build can now be compiled cross platform deterministic and deliver the same results as Windows, Linux etc.
  • +
  • Added Shape::MakeScaleValid function. This function will take a scale vector and check it against the scaling rules for the shape. If it is not valid, it will return a scale that is close to the provided scale which is valid.
  • +
  • Added cmake options to toggle exception-handling and RTTI. CPP_EXCEPTIONS_ENABLED enables exceptions, CPP_RTTI_ENABLED enables RTTI. By default they're both off as Jolt doesn't use these features. In the PerformanceTest this speeds up the simulation by about 5% for MSVC, no difference was measured for clang.
  • +
+

+Bug fixes

+
    +
  • Fix for new warning in MSVC 17.10 in immintrin.h: '__check_isa_support': unreferenced inline function has been removed.
  • +
  • Fix error in gcc 14. Using always_inline in debug mode causes error: "inlining failed in call to 'always_inline' 'XXX': function not considered for inlining"
  • +
  • Fixed clang-18 warning "LLVMgold.so: error loading plugin ... cannot open shared object file: No such file or directory", due to https://github.com/llvm/llvm-project/issues/84271 it currently doesn't support LTO.
  • +
  • Suppress GCC warning: 'XXX' may be used uninitialized in this function [-Werror=maybe-uninitialized].
  • +
  • Fixed compile errors when compiling with GCC for the ARM platform.
  • +
  • When calling CharacterVirtual::SetShape, a collision with a sensor would cause the function to abort as if the character was in collision.
  • +
  • CharacterVirtual stick to floor / stair walk did not trigger a contact added callback on the CharacterContactListener.
  • +
  • Fixed bug where the the skinned position of a soft body would update in the first sub-iteration, causing a large velocity spike and jittery behavior.
  • +
  • Fixed bug where the velocity of soft body vertices would increase indefinitely when resting on the back stop of a skinned constraint.
  • +
  • Fixed bug when SkinVertices for a soft body is not called every frame, the previous position of the skin was still used causing a replay of the motion of the previous frame.
  • +
  • Fixed bug in cast ray vs soft body which caused missed collisions in case a back facing triangle was hit.
  • +
  • Fixed handling of mass override from SoftBodyContactListener. Previously if the inverse mass of both of the soft body and the colliding body were set to 0, the soft body would still react.
  • +
  • Fixed crash in Ragdoll::DriveToPoseUsingMotors when using constraints other than SwingTwistConstraint.
  • +
  • Fixed -Wunused-parameter warning on GCC when building in Release mode with -Wextra.
  • +
  • Fixed tolerance in assert in GetPenetrationDepthStepEPA.
  • +
  • Due to a difference between the used instructions in NEON and SSE -Vec3::sZero() returned different binary results on ARM vs x86. When JPH_CROSS_PLATFORM_DETERMINISTIC is defined, we ensure that the calculation is the same now.
  • +
  • Forgot to free a temporary allocation on an early out in HeightFieldShape::SetMaterials.
  • +
  • Fix SSE not being enabled on x86 32-bits.
  • +
  • Fixed a bug in the enhanced internal edge removal that could cause rigid bodies and characters to be affected by internal edges.
  • +
  • Fixed a bug in MutableCompoundShape::AdjustCenterOfMass which would fail to update the bounding box of the shape.
  • +
  • The 32 bit and 64 bit versions of the library now produce the same binary stream when serializing data to a StreamOut. Before some values would be stored as size_t which is platform dependent.
  • +
+

+v5.0.0

+

+New Functionality

+

+Soft Body

+
    +
  • Added soft body skinning constraints. This can be used to limit the movement of soft body vertices based on a skinned mesh. See documentation for more info or watch this movie.
  • +
  • Added ability to turn on/off skinning constraints and to update the max distance for all constraints with a distance multiplier.
  • +
  • Added dihedral bend constraints for soft bodies. See movie.
  • +
  • Added long range attachment constraints (also called tethers) for soft bodies.
  • +
  • Added SoftBodyContactListener which allows you to get callbacks for collisions between soft bodies and rigid bodies. See movie.
  • +
  • Added support for a vertex radius for soft bodies. This keeps the vertices a fixed distance away from the surface which can be used to avoid z-fighting while rendering the soft body.
  • +
  • Added SoftBodySharedSettings::CreateConstraints function that can automatically generate constraints based on the faces of the soft body.
  • +
  • Added ability to update a soft body outside of the physics simulation step using SoftBodyMotionProperties::CustomUpdate. This is e.g. useful if the soft body is teleported and needs to 'settle'.
  • +
+

+Vehicles

+
    +
  • Added support for less than 1 collision test per simulation step for vehicle wheels. This behavior can be configured differently when the vehicle is active / inactive. This can be used for LODding vehicles.
  • +
  • Added wheel index to VehicleConstraint::CombineFunction friction callback and calculating longitudinal and lateral friction in the same call so you can have more differentiation between wheels.
  • +
  • Added ability to override the max tire impulse calculations for wheeled vehicles. See WheeledVehicleController::SetTireMaxImpulseCallback.
  • +
  • Added ability to disable the lean steering limit for the motorcycle, turning this off makes the motorcycle more unstable, but gives you more control over the final steering angle.
  • +
+

+Character

+
    +
  • CharacterVirtual will now receive an OnContactAdded callback when it collides with a sensor (but will have no further interaction).
  • +
  • Added user data to CharacterVirtual.
  • +
+

+Constraints

+
    +
  • Swing limits do not need to be symmetrical anymore for SixDOFConstraints. This requires using the new pyramid shaped swing limits (ESwingType::Pyramid). SwingTwistConstraints still requires symmetrical limits but can use the pyramid swing limits too. These are cheaper to evaluate but are less smooth.
  • +
  • Twist limits no longer need to be centered around zero for SixDOFConstraints and SwingTwistConstraints, any value between -PI and PI is supported now.
  • +
  • Changed the meaning of Constraint::mNumVelocity/PositionStepsOverride. Before the number of steps would be the maximum of all constraints and the default value, now an overridden value of 0 means that the constraint uses the default value, otherwise it will use the value as specified. This means that if all constraints in an island have a lower value than the default, we will now use the lower value instead of the default. This allows simulating an island at a lower precision than the default.
  • +
  • Bodies can now also override the default number of solver iterations. This value is used when the body collides with another body and a contact constraint is created (for constraints, the constraint override is always used).
  • +
  • Added fraction hint to PathConstraintPath::GetClosestPoint. This can be used to speed up the search along the curve and to disambiguate fractions in case a path reaches the same point multiple times (i.e. a figure-8).
  • +
  • Added Constraint::ResetWarmStart and Ragdoll::ResetWarmStart. Used to notify the system that the configuration of the bodies and/or constraint has changed enough so that the warm start impulses should not be applied the next frame. You can use this function for example when repositioning a ragdoll through Ragdoll::SetPose in such a way that the orientation of the bodies completely changes so that the previous frame impulses are no longer a good approximation of what the impulses will be in the next frame.
  • +
  • Multithreading the SetupVelocityConstraints job. This was causing a bottleneck in the case that there are a lot of constraints but very few possible collisions.
  • +
+

+Collision Detection

+
    +
  • Created an object layer filter implementation that is similar to Bullet's group & mask filtering, see ObjectLayerPairFilterMask.
  • +
  • Created implementations of BroadPhaseLayerInterface, ObjectVsBroadPhaseLayerFilter and ObjectLayerPairFilter that use a bit table internally. These make it easier to define ObjectLayers and with which object layers they collide.
  • +
  • Renamed SensorDetectsStatic to CollideKinematicVsNonDynamic and made it work for non-sensors. This means that kinematic bodies can now get collision callbacks when they collide with other static / kinematic objects.
  • +
  • Added function to query the bounding box of all bodies in the physics system, see PhysicsSystem::GetBounds.
  • +
+

+Simulation

+ +

+Various

+
    +
  • Ability to enable gyroscopic forces on bodies to create the Dzhanibekov effect.
  • +
  • Supporting SIMD for WASM build. Use -msimd128 -msse4.2 options with emscripten to enable this.
  • +
  • Allowing WASM build to use a custom memory allocator.
  • +
  • Added DebugRendererSimple which can be used to simplify the creation of your own DebugRenderer implementation. It only requires a DrawLine, DrawTriangle and DrawText3D function to be implemented (which can be left empty).
  • +
  • Added ability to update the height field materials after creation.
  • +
+

+Removed functionality

+
    +
  • Ability to restrict rotational degrees of freedom in local space, instead this is now done in world space.
  • +
+

+Bug fixes

+
    +
  • Fixed a bug in cast sphere vs triangle that could return a false positive hit against a degenerate triangle.
  • +
  • Fixed bug in soft body vs tapered capsule. The calculations were slightly off causing a normal on the top or bottom sphere to be returned while the tapered part was actually closest.
  • +
  • Fixed bug where colliding a cyclinder against a large triangle could return an incorrect contact point.
  • +
  • Fixed bug where soft bodies would collide with sensors as if they were normal bodies.
  • +
  • Sensors will no longer use speculative contacts, so will no longer report contacts before an actual contact is detected.
  • +
  • Hinge limit constraint forces were clamped wrongly when the hinge was exactly at the minimum limit, making it harder to push the hinge towards the maximum limit.
  • +
  • Fixed bug when a body with limited DOFs collides with static. If the resulting contact had an infinite effective mass, we would divide by zero and crash.
  • +
  • Fixed unit tests failing when compiling for 32-bit Linux. The compiler defaults to using x87 instructions in this case which does not work well with the collision detection pipeline. Now defaulting to the SSE instructions.
  • +
  • Fixed assert and improved interaction between a fast moving rigid body of quality LinearCast and a soft body.
  • +
  • When creating a MeshShape with triangles that have near identical positions it was possible that the degenerate check decided that a triangle was not degenerate while the triangle in fact would be degenerate after vertex quantization. The simulation would crash when colliding with this triangle.
  • +
  • A scaled compound shape with a center of mass of non zero would not apply the correct transform to its sub shapes when colliding with a soft body
  • +
  • A soft body without any edges would hang the solver
  • +
  • Fixed GCC 11.4 warning in JobSystemThreadPool.cpp: output may be truncated copying 15 bytes from a string of length 63
  • +
  • Longitudinal friction impulse for wheeled/tracked vehicles could become much higher than the calculated max because each iteration it was clamped to the max friction impulse which meant the total friction impulse could be PhysicsSettings::mNumVelocitySteps times too high.
  • +
  • Properly initializing current engine RPM to min RPM for wheeled/tracked vehicles. When min RPM was lower than the default min RPM the engine would not start at min RPM.
  • +
  • Fixed a possible division by zero in Body::GetBodyCreationSettings when the inverse inertia diagonal had 0's.
  • +
  • When specifying a -1 for min/max distance of a distance constraint and the calculated distance is incompatible with the other limit, we'll clamp it to that value now instead of ending up with min > max.
  • +
  • Fixed bug that contact cache was partially uninitialized when colliding two objects with inv mass override of 0. When the contact listener would report a non zero inv mass override the next simulation step this would mean that the simulation would read garbage and potentially crash due to NaNs.
  • +
+

+v4.0.2

+

+New functionality

+
    +
  • Support for compiling with ninja on Windows.
  • +
+

+Bug fixes

+
    +
  • Fixed bug in Indexify function that caused it to be really slow when passing 10K identical vertices. Also fixed a problem that could have led to some vertices not being welded.
  • +
  • Fixed bug in SixDOFConstraint::RestoreState that would cause motors to not properly turn on.
  • +
  • Fixed a determinism issue in CharacterVirtual. The order of the contacts returned by GetActiveContacts() was not deterministic.
  • +
  • Fixed issue in sample application that mouse is very sensitive when viewing with Parsec.
  • +
+

+v4.0.1

+

+New functionality

+
    +
  • Ability to stop overriding CMAKE_CXX_FLAGS_DEBUG/CMAKE_CXX_FLAGS_RELEASE which is important for Android as it uses a lot of extra flags. Set the OVERRIDE_CXX_FLAGS=NO cmake flag to enable this.
  • +
  • Reduced size of a contact constraint which saves a bit of memory during simulation.
  • +
  • Can now build a linux shared library using GCC.
  • +
+

+Bug fixes

+
    +
  • Fixed mass scaling (as provided by the ContactListener) not applied correctly to CCD objects & during solve position constraints. This led to kinematic objects being pushed by dynamic objects.
  • +
  • Workaround for MSVC 17.8, limits.h doesn't include corecrt.h and triggers an error that __STDC_WANT_SECURE_LIB__ is not defined.
  • +
  • Fixed bug in MustIncludeC logic in GetClosestPointOnTriangle.
  • +
  • Removed the need for specifying -Wno-comment when compiling with GCC.
  • +
+

+v4.0.0

+

+New functionality

+
    +
  • Added support for soft bodies (feature still in development, see announcement).
  • +
  • Support for limiting the degrees of freedom of a body to support 2D simulations (see announcement).
  • +
  • Support for setting surface velocity of a body (see announcement).
  • +
  • Added ability to update a height field after creation (see announcement).
  • +
  • Support for non-power of 2 height fields.
  • +
  • Expose a function to compare the JOLT_VERSION_ID with the version the library was compiled with to detect mismatches between library and client code.
  • +
  • Added ability to specify extra ragdoll constraints that are not parent/child related.
  • +
  • Ability to selectively save the state of a physics system to support replicating state over the network.
  • +
  • Added constraint priority to control the order of evaluation of constraints (and thereby the most influential constraints).
  • +
  • Sensors can now detect static objects.
  • +
  • Ability to override mass and inertia of bodies from the ContactListener.
  • +
  • Ability to specify stiffness/damping for springs instead of frequency/damping.
  • +
  • Added option to disable the lean spring controller for motorcycles.
  • +
  • Added vehicle callbacks at the beginning of the step listener and after wheel checks.
  • +
  • Ability to override the position where the suspension and tire forces are applied.
  • +
  • Support for building Jolt as a shared library on Windows.
  • +
  • Optimized Indexify function from O(N^2) to O(N log(N)).
  • +
+

+Removed functionality

+ +

+New supported platforms

+
    +
  • 32-bit versions of Android on ARM and x86.
  • +
+

+Bug fixes

+
    +
  • Motor frequency/stiffness of 0 should turn the motor off.
  • +
  • RotatedTranslatedShape::GetPosition returned the wrong value.
  • +
  • If a body is removed between the broad phase detecting an overlap and the narrow phase locking the body, callbacks could be called on a body that has already been removed.
  • +
  • Fixed flipped normals in EPA penetration depth algorithm which could cause the normal to point in the wrong direction for collision tests.
  • +
  • Respecting the IsSensor flag for CCD bodies.
  • +
  • Fixed double locking issue that could cause a deadlock while updating the AABB of a body during simulation.
  • +
  • Fixed a crash when fetching a body using an invalid BodyID.
  • +
  • Windows 32 vs 64-bit versions produce the same deterministic results now.
  • +
  • Heightfield vs convex was not filled in in collision dispatch table. This caused sensors to assert and not detect collisions with heightfields.
  • +
  • The friction applied during continuous collision detection could be sqrt(2) times too large.
  • +
  • The friction was clamped independently on both tangential axis which meant that the total friction could be larger than the amount of friction that should have been allowed. It also meant that an object would slow down quicker on one axis than on another causing a curved trajectory.
  • +
  • When an object wasn't moving fast enough to trigger restitution for a speculative contact, the contact was enforced at the current position rather than at the distance of the speculative contact.
  • +
  • Fixed CharacterVirtual jittering issue when moving down on elevator.
  • +
  • CharacterVirtual was speeding up beyond the requested speed when sliding along a wall.
  • +
  • CharacterVirtual reported to be on ground for one more frame after jumping against a wall.
  • +
  • Added missing delta time term in CharacterVirtual::DetermineConstraints.
  • +
  • CastShape had incorrect early out condition which could cause it to miss the deepest penetration.
  • +
  • Pitch/roll limit constraint for vehicles didn't work when local vehicle up did not match world up.
  • +
  • Wheel contact point did not return deepest point in certain cases.
  • +
  • Fix for engine RPM being much higher than wheel RPM when measured at clutch. Before we were ignoring bake and wheel torques in engine RPM calculation.
  • +
  • Don't allow the vehicle to sleep when the transmission is switching.
  • +
  • Fixed bug that caused suspension to be weaker when driving a vehicle over dynamic bodies.
  • +
+

+v3.0.0

+
    +
  • Support for double precision simulation for large worlds (see announcement)
  • +
  • Performance optimization that allows solving large islands on multiple threads (see announcement)
  • +
  • Vehicles now support suspensions that are at an angle with the vehicle body (instead of 90 degrees)
  • +
  • Supporting cylinder based wheels for vehicles
  • +
  • Experimental motor cycle physics (see announcement)
  • +
  • CharacterVirtual can now move relative to a moving object (e.g. a space ship)
  • +
  • Added 2D physics example
  • +
  • Added functionality to estimate the collision impulse in the contact added callback
  • +
  • Added a JobSystemWithBarrier class that makes it easier to integrate with your own job system
  • +
  • Support for 32-bit object layers to allow easier integration with existing collision filtering systems
  • +
+

+v2.0.1

+
    +
  • Adds ARM 32-bit support to support vcpkg-tool
  • +
+

+v2.0.0

+

+Major new functionality

+
    +
  • Simulation is now deterministic between Windows, Linux and macOS.
  • +
  • Support for custom memory allocators.
  • +
  • A new character class that lives outside the main simulation update and is mainly used for player movement (CharacterVirtual).
  • +
  • Implemented skeleton mapper that can convert an animated skeleton to a ragdoll skeleton and back.
  • +
  • Rack and pinion, gear and pulley constraints have been added.
  • +
  • Ability for sensors to detect collisions with sleeping bodies.
  • +
  • Improved engine model for wheeled vehicles.
  • +
  • Most constraints can now also be configured in local space.
  • +
+

+New supported compilers

+
    +
  • MinGW
  • +
  • GCC
  • +
+

+New supported platforms

+
    +
  • All intel platforms supporting SSE2 and higher (was SSE4.2)
  • +
  • 32-bit applications (was 64 bit only)
  • +
  • Windows on ARM
  • +
  • Windows UWP
  • +
  • macOS
  • +
  • iOS
  • +
  • WebAssembly
  • +
+

+v1.1.0

+
    +
  • Optimizations.
  • +
+

+v1.0.0

+
    +
  • Initial stable release.
  • +
+
+
+
+ + + + diff --git a/md__docs_2_samples.html b/md__docs_2_samples.html new file mode 100644 index 000000000..72beae7e4 --- /dev/null +++ b/md__docs_2_samples.html @@ -0,0 +1,334 @@ + + + + + + + +Jolt Physics: Jolt Physics Samples + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
Jolt Physics +
+
A multi core friendly Game Physics Engine
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Jolt Physics Samples
+
+
+

This document describes the demos in the Samples application (currently compiles only under Windows). When you run the samples application the application will initially start paused, press P to unpause it. The menu is accessible through pressing ESC, it has the following options:

+
    +
  • Select Test - This allows you to select between the different types of physics tests
  • +
  • Test Settings - Some tests will allow extra configuration, if not this setting will be greyed out
  • +
  • Restart Test (R) - When selecting this, the test will go back to its initial state
  • +
  • Run All Tests - This will run every tests for 10 seconds before proceeding to the next. This is a good way of visually inspecting the simulation before commiting a code change.
  • +
  • Next Test (N) - When running all tests, this option can be used to quickly skip to the next test.
  • +
  • Physics Settings - This menu contains all physics configuration.
  • +
  • Drawing Options - This menu shows all the options for drawing the internal state of the physics simulation.
  • +
  • Mouse Probe - This allows you to switch between various collision detection modes to test the different collision detection algorithms
  • +
  • Shoot Object - A sample application is not complete without being able to shoot some balls at the simulation (B key). This menu allows additional settings.
  • +
  • Help - A quick help text.
  • +
+

+General Controls

+
    +
  • Use the Mouse and WSAD keys to move around, hold Shift to speed up and Ctrl to slow down
  • +
  • Hold the Space key to pick up an object in the center of the screen and move it around with the mouse and WSAD.
  • +
  • P - Pause / unpause simulation.
  • +
  • O - Single step the simulation.
  • +
  • , - Step back (only when Physics Settings / Record State for Playback is on).
  • +
  • . - Step forward (only when Physics Settings / Record State for Playback is on).
  • +
  • Shift + , - Play reverse (only when Physics Settings / Record State for Playback is on).
  • +
  • Shift + . - Replay forward (only when Physics Settings / Record State for Playback is on).
  • +
  • T - Dump frame timing information to profile_*.html (when JPH_PROFILE_ENABLED defined).
  • +
+

+The Tests

+

Note that you can watch all movies below in a single YouTube playlist.

+

+Vehicles

+

This categories shows vehicles created through the VehicleConstraint. These vehicles use ray- or shape casts to detect collision with the ground and simulate a vehicle with an engine, gearbox, differentials and suspension.

+ + + + + +
Vehicle Demo
A wheeled vehicle.
+ + + + + +
Tank Demo
Demonstrates a tracked vehicle with a turret constrained to the main body with hinge constraints.
+ + + + + +
Motorcycle Demo
Demonstrates a motor cycle.
+ + + + + +
Vehicle Gravity Override
Applying a custom gravity override to a vehicle to create weird gameplay.
+

+Rig (Ragdolls)

+

This category demonstrates how ragdolls can be made and controlled using keyframing or motors.

+ + + + + +
Kinematic Ragdoll
A ragdoll set to kinematic mode (infinite mass, simulated using velocities only) interacting with dynamic objects.
+ + + + + +
Ragdoll Driven to Animated Pose
Demonstrating a humanoid ragdoll driven by motors which are trying to match a sprint animation in local space (green sticks).
+ + + + + +
Skeleton Mapper
An animation is played back on a high detail skeleton ('Animation') and then mapped onto a low detail ragdoll skeleton ('Reversed Mapped'). This animation is used to drive the motors of the ragdoll. The resulting pose is mapped back to the high detail skeleton ('Mapped'). Note that the skeletons are drawn offset to make them clearer..
+ + + + + +
160 Ragdolls in a Pile
160 Ragdolls being dropped on a scene from Horizon Zero Dawn.
+ + + + + +
160 Ragdolls in a Pile (Sleeping Visualization)
160 Ragdolls dropping on a pile, simulated using the Jolt Physics engine. Yellow means the ragdoll is simulated, red means the simulation is sleeping.
+ + + + + +
160 Ragdolls Driven to Pose
A pile of ragdolls that are driven to a specific animated death pose. This gives the ragdolls 'stiffness'.
+

+Soft Body

+ + + + + +
Soft Body Demo
Demonstrates Soft Body physics as simulated by Jolt Physics. Soft body physics can be used for things like cloth and soft balls.
+ + + + + +
Soft Body Contact Listener Demo
Demonstrates the use of soft body contact listeners. You can use these to affect the collision response between a soft body and a rigid body by e.g. artificially making the mass of one of the two higher so that the other is less affected by the collision. Finally you can also turn a contact into a sensor contact which means you get the contact points but there will not be any collision response..
+ + + + + +
Soft Body Bend Constraints Demo
This video shows the effect of bend constraints on a wrinkled cloth. The left most patch has no constraints to preserve the wrinkles, the middle uses distance constrains ('sticks') to preserve the wrinkles and the last one uses dihedral angle constraints to preserve the angle between two triangles on their shared edge.
+ + + + + +
Soft Body Skin Constraints Demo
This demo shows a soft body that is connected to a skinned mesh via distance constraints. Each simulated vertex can deviate from its skinned position by a fixed length. The green lines indicate the animated joints of the skinned mesh.
+

+Character

+

This category shows how you can simulate a (humanoid) character using a capsule.

+ + + + + +
Character Demo
A demonstration of a game Character. Demonstrates moving, sliding against the environment, crouching and jumping.
+

+Water

+

This category shows how you can implement a water simulation in your game.

+ + + + + +
Water Simulation
Water buoyancy and friction simulation. Demonstrates how various shapes and compound shapes behave in the water. The right most object has a lowered center of mass.
+

+Constraints

+

This category shows the various constraints that are supported. Constraints connect two or more bodies together and limit the relative movement.

+ + + + + +
Path Constraint
Showing the path constraint in action.
+ + + + + +
Swing Twist Constraint
Demonstrates a chain of swing-twist constraints (usable for humanoid shoulders). The green cones show the swing limit and the pink pie shows the twist limit.
+ + + + + +
Gear constraint
Demonstrates a gear constraint. Note that the gears can be placed at any relative angle of each other, so you could e.g. create a bevel or worm gear.
+ + + + + +
Rack and pinion constraint
Demonstrates a rack and pinion constraint.
+ + + + + +
Pulley constraint
Shows two boxes connected through a pulley constraint. In this case the constraint is configured as a block and tackle with and advantage of 2: the right block moves 2x as slow as the left block.
+

+General

+

This category contains general simulation tests. It demonstrates things like friction, restitution, damping, modifying gravity and continuous collision detection. Some highlights:

+ + + + + +
Stable Box Stacking
A YouTube video showing stability of a pile of boxes.
+ + + + + +
Active Edge Detection
Demonstrates objects sliding along a polygon mesh. Internal mesh edges are ignored and do not cause objects to bounce off.
+ + + + + +
Funnel Test
1000 random shapes in a funnel.
+ + + + + +
Multithreaded Island Simulation
We will automatically split up the simulation in islands of non-interacting bodies and distribute the work across multiple threads. Each island has its own color.
+ + + + + +
Single vs Double Precision
Shows the difference between compiling Jolt Physics in single precision and double precision (define JPH_DOUBLE_PRECISION).
+ + + + + +
Conveyor belt
A demo of setting the surface velocity of a body to create a conveyor belt. The boxes have decreasing friction from front to back (last one has zero friction so slowly slides down the ramp).
+

+Shapes & Scaled Shapes

+

These categories show off all of the supported shapes and how they can be scaled at run-time.

+ + + + + +
Shape Scaling
A height field shape using various scales in Jolt Physics: Uniform, Non uniform, Mirrored, Inside out
+
+
+
+ + + + diff --git a/menu.js b/menu.js new file mode 100644 index 000000000..b0b26936a --- /dev/null +++ b/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 000000000..6a56aaa90 --- /dev/null +++ b/menudata.js @@ -0,0 +1,232 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"c",url:"namespacemembers.html#index_c"}, +{text:"e",url:"namespacemembers.html#index_e"}, +{text:"f",url:"namespacemembers.html#index_f"}, +{text:"g",url:"namespacemembers.html#index_g"}, +{text:"i",url:"namespacemembers.html#index_i"}, +{text:"m",url:"namespacemembers.html#index_m"}, +{text:"o",url:"namespacemembers.html#index_o"}, +{text:"r",url:"namespacemembers.html#index_r"}, +{text:"s",url:"namespacemembers.html#index_s"}, +{text:"t",url:"namespacemembers.html#index_t"}]}, +{text:"Functions",url:"namespacemembers_func.html"}, +{text:"Variables",url:"namespacemembers_vars.html"}, +{text:"Typedefs",url:"namespacemembers_type.html"}, +{text:"Enumerations",url:"namespacemembers_enum.html"}, +{text:"Enumerator",url:"namespacemembers_eval.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"j",url:"functions_j.html#index_j"}, +{text:"k",url:"functions_k.html#index_k"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"x",url:"functions_x.html#index_x"}, +{text:"y",url:"functions_y.html#index_y"}, +{text:"z",url:"functions_z.html#index_z"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"j",url:"functions_func_j.html#index_j"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"q",url:"functions_func_q.html#index_q"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"w",url:"functions_func_w.html#index_w"}, +{text:"~",url:"functions_func_~.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars_b.html#index_b"}, +{text:"c",url:"functions_vars_c.html#index_c"}, +{text:"g",url:"functions_vars_g.html#index_g"}, +{text:"h",url:"functions_vars_h.html#index_h"}, +{text:"i",url:"functions_vars_i.html#index_i"}, +{text:"m",url:"functions_vars_m.html#index_m"}, +{text:"n",url:"functions_vars_n.html#index_n"}, +{text:"o",url:"functions_vars_o.html#index_o"}, +{text:"r",url:"functions_vars_r.html#index_r"}, +{text:"s",url:"functions_vars_s.html#index_s"}, +{text:"t",url:"functions_vars_t.html#index_t"}, +{text:"w",url:"functions_vars_w.html#index_w"}, +{text:"x",url:"functions_vars_x.html#index_x"}, +{text:"y",url:"functions_vars_y.html#index_y"}, +{text:"z",url:"functions_vars_z.html#index_z"}]}, +{text:"Typedefs",url:"functions_type.html",children:[ +{text:"a",url:"functions_type.html#index_a"}, +{text:"b",url:"functions_type.html#index_b"}, +{text:"c",url:"functions_type.html#index_c"}, +{text:"d",url:"functions_type.html#index_d"}, +{text:"e",url:"functions_type.html#index_e"}, +{text:"f",url:"functions_type.html#index_f"}, +{text:"g",url:"functions_type.html#index_g"}, +{text:"i",url:"functions_type.html#index_i"}, +{text:"j",url:"functions_type.html#index_j"}, +{text:"k",url:"functions_type.html#index_k"}, +{text:"l",url:"functions_type.html#index_l"}, +{text:"m",url:"functions_type.html#index_m"}, +{text:"n",url:"functions_type.html#index_n"}, +{text:"o",url:"functions_type.html#index_o"}, +{text:"p",url:"functions_type.html#index_p"}, +{text:"r",url:"functions_type.html#index_r"}, +{text:"s",url:"functions_type.html#index_s"}, +{text:"t",url:"functions_type.html#index_t"}, +{text:"u",url:"functions_type.html#index_u"}, +{text:"v",url:"functions_type.html#index_v"}]}, +{text:"Enumerations",url:"functions_enum.html"}, +{text:"Enumerator",url:"functions_eval.html",children:[ +{text:"c",url:"functions_eval.html#index_c"}, +{text:"n",url:"functions_eval.html#index_n"}, +{text:"o",url:"functions_eval.html#index_o"}, +{text:"r",url:"functions_eval.html#index_r"}, +{text:"s",url:"functions_eval.html#index_s"}, +{text:"t",url:"functions_eval.html#index_t"}]}, +{text:"Related Symbols",url:"functions_rela.html",children:[ +{text:"a",url:"functions_rela.html#index_a"}, +{text:"b",url:"functions_rela.html#index_b"}, +{text:"c",url:"functions_rela.html#index_c"}, +{text:"j",url:"functions_rela.html#index_j"}, +{text:"l",url:"functions_rela.html#index_l"}, +{text:"o",url:"functions_rela.html#index_o"}, +{text:"r",url:"functions_rela.html#index_r"}, +{text:"s",url:"functions_rela.html#index_s"}, +{text:"v",url:"functions_rela.html#index_v"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"a",url:"globals.html#index_a"}, +{text:"b",url:"globals_b.html#index_b"}, +{text:"c",url:"globals_c.html#index_c"}, +{text:"d",url:"globals_d.html#index_d"}, +{text:"e",url:"globals_e.html#index_e"}, +{text:"f",url:"globals_f.html#index_f"}, +{text:"g",url:"globals_g.html#index_g"}, +{text:"h",url:"globals_h.html#index_h"}, +{text:"i",url:"globals_i.html#index_i"}, +{text:"j",url:"globals_j.html#index_j"}, +{text:"m",url:"globals_m.html#index_m"}, +{text:"n",url:"globals_n.html#index_n"}, +{text:"o",url:"globals_o.html#index_o"}, +{text:"p",url:"globals_p.html#index_p"}, +{text:"q",url:"globals_q.html#index_q"}, +{text:"r",url:"globals_r.html#index_r"}, +{text:"s",url:"globals_s.html#index_s"}, +{text:"t",url:"globals_t.html#index_t"}, +{text:"u",url:"globals_u.html#index_u"}, +{text:"v",url:"globals_v.html#index_v"}, +{text:"w",url:"globals_w.html#index_w"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"a",url:"globals_func.html#index_a"}, +{text:"b",url:"globals_func_b.html#index_b"}, +{text:"c",url:"globals_func_c.html#index_c"}, +{text:"d",url:"globals_func_d.html#index_d"}, +{text:"e",url:"globals_func_e.html#index_e"}, +{text:"f",url:"globals_func_f.html#index_f"}, +{text:"g",url:"globals_func_g.html#index_g"}, +{text:"h",url:"globals_func_h.html#index_h"}, +{text:"i",url:"globals_func_i.html#index_i"}, +{text:"j",url:"globals_func_j.html#index_j"}, +{text:"m",url:"globals_func_m.html#index_m"}, +{text:"n",url:"globals_func_n.html#index_n"}, +{text:"o",url:"globals_func_o.html#index_o"}, +{text:"p",url:"globals_func_p.html#index_p"}, +{text:"q",url:"globals_func_q.html#index_q"}, +{text:"r",url:"globals_func_r.html#index_r"}, +{text:"s",url:"globals_func_s.html#index_s"}, +{text:"t",url:"globals_func_t.html#index_t"}, +{text:"u",url:"globals_func_u.html#index_u"}, +{text:"v",url:"globals_func_v.html#index_v"}]}, +{text:"Variables",url:"globals_vars.html"}, +{text:"Typedefs",url:"globals_type.html",children:[ +{text:"a",url:"globals_type.html#index_a"}, +{text:"b",url:"globals_type.html#index_b"}, +{text:"c",url:"globals_type.html#index_c"}, +{text:"d",url:"globals_type.html#index_d"}, +{text:"f",url:"globals_type.html#index_f"}, +{text:"h",url:"globals_type.html#index_h"}, +{text:"i",url:"globals_type.html#index_i"}, +{text:"j",url:"globals_type.html#index_j"}, +{text:"m",url:"globals_type.html#index_m"}, +{text:"n",url:"globals_type.html#index_n"}, +{text:"o",url:"globals_type.html#index_o"}, +{text:"p",url:"globals_type.html#index_p"}, +{text:"q",url:"globals_type.html#index_q"}, +{text:"r",url:"globals_type.html#index_r"}, +{text:"s",url:"globals_type.html#index_s"}, +{text:"t",url:"globals_type.html#index_t"}, +{text:"u",url:"globals_type.html#index_u"}, +{text:"v",url:"globals_type.html#index_v"}, +{text:"w",url:"globals_type.html#index_w"}]}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}, +{text:"Macros",url:"globals_defs.html",children:[ +{text:"b",url:"globals_defs.html#index_b"}, +{text:"j",url:"globals_defs.html#index_j"}, +{text:"m",url:"globals_defs.html#index_m"}]}]}]}]} diff --git a/minus.svg b/minus.svg new file mode 100644 index 000000000..f70d0c1a1 --- /dev/null +++ b/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/minusd.svg b/minusd.svg new file mode 100644 index 000000000..5f8e87962 --- /dev/null +++ b/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/namespace_active_edges.html b/namespace_active_edges.html new file mode 100644 index 000000000..b9aa99752 --- /dev/null +++ b/namespace_active_edges.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: ActiveEdges Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ActiveEdges Namespace Reference
    +
    +
    + +

    An active edge is an edge that either has no neighbouring edge or if the angle between the two connecting faces is too large. +More...

    +

    Detailed Description

    +

    An active edge is an edge that either has no neighbouring edge or if the angle between the two connecting faces is too large.

    +
    +
    + + + + diff --git a/namespace_closest_point.html b/namespace_closest_point.html new file mode 100644 index 000000000..1ede91e37 --- /dev/null +++ b/namespace_closest_point.html @@ -0,0 +1,503 @@ + + + + + + + +Jolt Physics: ClosestPoint Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ClosestPoint Namespace Reference
    +
    +
    + +

    Helper utils to find the closest point to a line segment, triangle or tetrahedron. +More...

    + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool GetBaryCentricCoordinates (Vec3Arg inA, Vec3Arg inB, float &outU, float &outV)
     
    bool GetBaryCentricCoordinates (Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, float &outU, float &outV, float &outW)
     
    Vec3 GetClosestPointOnLine (Vec3Arg inA, Vec3Arg inB, uint32 &outSet)
     
    template<bool MustIncludeC = false>
    Vec3 GetClosestPointOnTriangle (Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, uint32 &outSet)
     
    bool OriginOutsideOfPlane (Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, Vec3Arg inD)
     Check if the origin is outside the plane of triangle (inA, inB, inC). inD specifies the front side of the plane.
     
    UVec4 OriginOutsideOfTetrahedronPlanes (Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, Vec3Arg inD)
     
    template<bool MustIncludeD = false>
    Vec3 GetClosestPointOnTetrahedron (Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, Vec3Arg inD, uint32 &outSet)
     
    +

    Detailed Description

    +

    Helper utils to find the closest point to a line segment, triangle or tetrahedron.

    +

    Function Documentation

    + +

    ◆ GetBaryCentricCoordinates() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool ClosestPoint::GetBaryCentricCoordinates (Vec3Arg inA,
    Vec3Arg inB,
    float & outU,
    float & outV 
    )
    +
    +inline
    +
    +

    Compute barycentric coordinates of closest point to origin for infinite line defined by (inA, inB) Point can then be computed as inA * outU + inB * outV Returns false if the points inA, inB do not form a line (are at the same point)

    + +
    +
    + +

    ◆ GetBaryCentricCoordinates() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool ClosestPoint::GetBaryCentricCoordinates (Vec3Arg inA,
    Vec3Arg inB,
    Vec3Arg inC,
    float & outU,
    float & outV,
    float & outW 
    )
    +
    +inline
    +
    +

    Compute barycentric coordinates of closest point to origin for plane defined by (inA, inB, inC) Point can then be computed as inA * outU + inB * outV + inC * outW Returns false if the points inA, inB, inC do not form a plane (are on the same line or at the same point)

    + +
    +
    + +

    ◆ GetClosestPointOnLine()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Vec3 ClosestPoint::GetClosestPointOnLine (Vec3Arg inA,
    Vec3Arg inB,
    uint32outSet 
    )
    +
    +inline
    +
    +

    Get the closest point to the origin of line (inA, inB) outSet describes which features are closest: 1 = a, 2 = b, 3 = line segment ab

    + +
    +
    + +

    ◆ GetClosestPointOnTetrahedron()

    + +
    +
    +
    +template<bool MustIncludeD = false>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Vec3 ClosestPoint::GetClosestPointOnTetrahedron (Vec3Arg inA,
    Vec3Arg inB,
    Vec3Arg inC,
    Vec3Arg inD,
    uint32outSet 
    )
    +
    +inline
    +
    +

    Get the closest point between tetrahedron (inA, inB, inC, inD) to the origin outSet specifies which feature was closest, 1 = a, 2 = b, 4 = c, 8 = d. Edges have 2 bits set, triangles 3 and if the point is in the interior 4 bits are set. If MustIncludeD is true, the function assumes that D is part of the closest feature (vertex, edge, face, tetrahedron) and does less work, if the assumption is not true then a closest point to the other features is returned.

    + +
    +
    + +

    ◆ GetClosestPointOnTriangle()

    + +
    +
    +
    +template<bool MustIncludeC = false>
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Vec3 ClosestPoint::GetClosestPointOnTriangle (Vec3Arg inA,
    Vec3Arg inB,
    Vec3Arg inC,
    uint32outSet 
    )
    +
    +inline
    +
    +

    Get the closest point to the origin of triangle (inA, inB, inC) outSet describes which features are closest: 1 = a, 2 = b, 4 = c, 5 = line segment ac, 7 = triangle interior etc. If MustIncludeC is true, the function assumes that C is part of the closest feature (vertex, edge, face) and does less work, if the assumption is not true then a closest point to the other features is returned.

    + +
    +
    + +

    ◆ OriginOutsideOfPlane()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    bool ClosestPoint::OriginOutsideOfPlane (Vec3Arg inA,
    Vec3Arg inB,
    Vec3Arg inC,
    Vec3Arg inD 
    )
    +
    +inline
    +
    + +

    Check if the origin is outside the plane of triangle (inA, inB, inC). inD specifies the front side of the plane.

    + +
    +
    + +

    ◆ OriginOutsideOfTetrahedronPlanes()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    UVec4 ClosestPoint::OriginOutsideOfTetrahedronPlanes (Vec3Arg inA,
    Vec3Arg inB,
    Vec3Arg inC,
    Vec3Arg inD 
    )
    +
    +inline
    +
    +

    Returns for each of the planes of the tetrahedron if the origin is inside it Roughly equivalent to: [OriginOutsideOfPlane(inA, inB, inC, inD), OriginOutsideOfPlane(inA, inC, inD, inB), OriginOutsideOfPlane(inA, inD, inB, inC), OriginOutsideOfPlane(inB, inD, inC, inA)]

    + +
    +
    +
    +
    + + + + diff --git a/namespace_half_float_conversion.html b/namespace_half_float_conversion.html new file mode 100644 index 000000000..5b574a7e9 --- /dev/null +++ b/namespace_half_float_conversion.html @@ -0,0 +1,270 @@ + + + + + + + +Jolt Physics: HalfFloatConversion Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    HalfFloatConversion Namespace Reference
    +
    +
    + + + + + +

    +Enumerations

    enum  ERoundingMode { ROUND_TO_NEG_INF +, ROUND_TO_POS_INF +, ROUND_TO_NEAREST + }
     Define half-float rounding modes. More...
     
    + + + + + + + + + + + + + + + +

    +Functions

    template<int RoundingMode>
    HalfFloat FromFloatFallback (float inV)
     Convert a float (32-bits) to a half float (16-bits), fallback version when no intrinsics available.
     
    template<int RoundingMode>
    JPH_INLINE HalfFloat FromFloat (float inV)
     Convert a float (32-bits) to a half float (16-bits)
     
    Vec4 ToFloatFallback (UVec4Arg inValue)
     Convert 4 half floats (lower 64 bits) to floats, fallback version when no intrinsics available.
     
    JPH_INLINE Vec4 ToFloat (UVec4Arg inValue)
     Convert 4 half floats (lower 64 bits) to floats.
     
    +

    Enumeration Type Documentation

    + +

    ◆ ERoundingMode

    + +
    +
    + +

    Define half-float rounding modes.

    + + + + +
    Enumerator
    ROUND_TO_NEG_INF 

    Round to negative infinity.

    +
    ROUND_TO_POS_INF 

    Round to positive infinity.

    +
    ROUND_TO_NEAREST 

    Round to nearest value.

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ FromFloat()

    + +
    +
    +
    +template<int RoundingMode>
    + + + + + + + + +
    JPH_INLINE HalfFloat HalfFloatConversion::FromFloat (float inV)
    +
    + +

    Convert a float (32-bits) to a half float (16-bits)

    + +
    +
    + +

    ◆ FromFloatFallback()

    + +
    +
    +
    +template<int RoundingMode>
    + + + + + +
    + + + + + + + + +
    HalfFloat HalfFloatConversion::FromFloatFallback (float inV)
    +
    +inline
    +
    + +

    Convert a float (32-bits) to a half float (16-bits), fallback version when no intrinsics available.

    + +
    +
    + +

    ◆ ToFloat()

    + +
    +
    + + + + + + + + +
    JPH_INLINE Vec4 HalfFloatConversion::ToFloat (UVec4Arg inValue)
    +
    + +

    Convert 4 half floats (lower 64 bits) to floats.

    + +
    +
    + +

    ◆ ToFloatFallback()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Vec4 HalfFloatConversion::ToFloatFallback (UVec4Arg inValue)
    +
    +inline
    +
    + +

    Convert 4 half floats (lower 64 bits) to floats, fallback version when no intrinsics available.

    + +
    +
    +
    +
    + + + + diff --git a/namespace_height_field_shape_constants.html b/namespace_height_field_shape_constants.html new file mode 100644 index 000000000..050dfc658 --- /dev/null +++ b/namespace_height_field_shape_constants.html @@ -0,0 +1,310 @@ + + + + + + + +Jolt Physics: HeightFieldShapeConstants Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    HeightFieldShapeConstants Namespace Reference
    +
    +
    + +

    Constants for HeightFieldShape, this was moved out of the HeightFieldShape because of a linker bug. +More...

    + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    constexpr float cNoCollisionValue = FLT_MAX
     Value used to create gaps in the height field.
     
    constexpr int cStackSize = 128
     Stack size to use during WalkHeightField.
     
    constexpr uint cNumBitsXY = 14
     A position in the hierarchical grid is defined by a level (which grid), x and y position. We encode this in a single uint32 as: level << 28 | y << 14 | x.
     
    constexpr uint cMaskBitsXY = (1 << cNumBitsXY) - 1
     
    constexpr uint cLevelShift = 2 * cNumBitsXY
     
    constexpr uint16 cNoCollisionValue16 = 0xffff
     When height samples are converted to 16 bit:
     
    constexpr uint16 cMaxHeightValue16 = 0xfffe
     This is the maximum allowed height value.
     
    +

    Detailed Description

    +

    Constants for HeightFieldShape, this was moved out of the HeightFieldShape because of a linker bug.

    +

    Variable Documentation

    + +

    ◆ cLevelShift

    + +
    +
    + + + + + +
    + + + + +
    constexpr uint HeightFieldShapeConstants::cLevelShift = 2 * cNumBitsXY
    +
    +constexpr
    +
    + +
    +
    + +

    ◆ cMaskBitsXY

    + +
    +
    + + + + + +
    + + + + +
    constexpr uint HeightFieldShapeConstants::cMaskBitsXY = (1 << cNumBitsXY) - 1
    +
    +constexpr
    +
    + +
    +
    + +

    ◆ cMaxHeightValue16

    + +
    +
    + + + + + +
    + + + + +
    constexpr uint16 HeightFieldShapeConstants::cMaxHeightValue16 = 0xfffe
    +
    +constexpr
    +
    + +

    This is the maximum allowed height value.

    + +
    +
    + +

    ◆ cNoCollisionValue

    + +
    +
    + + + + + +
    + + + + +
    constexpr float HeightFieldShapeConstants::cNoCollisionValue = FLT_MAX
    +
    +constexpr
    +
    + +

    Value used to create gaps in the height field.

    + +
    +
    + +

    ◆ cNoCollisionValue16

    + +
    +
    + + + + + +
    + + + + +
    constexpr uint16 HeightFieldShapeConstants::cNoCollisionValue16 = 0xffff
    +
    +constexpr
    +
    + +

    When height samples are converted to 16 bit:

    +

    This is the magic value for 'no collision'

    + +
    +
    + +

    ◆ cNumBitsXY

    + +
    +
    + + + + + +
    + + + + +
    constexpr uint HeightFieldShapeConstants::cNumBitsXY = 14
    +
    +constexpr
    +
    + +

    A position in the hierarchical grid is defined by a level (which grid), x and y position. We encode this in a single uint32 as: level << 28 | y << 14 | x.

    + +
    +
    + +

    ◆ cStackSize

    + +
    +
    + + + + + +
    + + + + +
    constexpr int HeightFieldShapeConstants::cStackSize = 128
    +
    +constexpr
    +
    + +

    Stack size to use during WalkHeightField.

    + +
    +
    +
    +
    + + + + diff --git a/namespace_scale_helpers.html b/namespace_scale_helpers.html new file mode 100644 index 000000000..b01261a92 --- /dev/null +++ b/namespace_scale_helpers.html @@ -0,0 +1,507 @@ + + + + + + + +Jolt Physics: ScaleHelpers Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ScaleHelpers Namespace Reference
    +
    +
    + +

    Helper functions to get properties of a scaling vector. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool IsNotScaled (Vec3Arg inScale)
     Test if a scale is identity.
     
    bool IsUniformScale (Vec3Arg inScale)
     Test if a scale is uniform.
     
    bool IsUniformScaleXZ (Vec3Arg inScale)
     Test if a scale is uniform in XZ.
     
    float ScaleConvexRadius (float inConvexRadius, Vec3Arg inScale)
     Scale the convex radius of an object.
     
    bool IsInsideOut (Vec3Arg inScale)
     Test if a scale flips an object inside out (which requires flipping all normals and polygon windings)
     
    bool IsZeroScale (Vec3Arg inScale)
     Test if any of the components of the scale have a value below cMinScale.
     
    Vec3 MakeNonZeroScale (Vec3Arg inScale)
     Ensure that the scale for each component is at least cMinScale.
     
    Vec3 MakeUniformScale (Vec3Arg inScale)
     Get the average scale if inScale, used to make the scale uniform when a shape doesn't support non-uniform scale.
     
    Vec3 MakeUniformScaleXZ (Vec3Arg inScale)
     Average the scale in XZ, used to make the scale uniform when a shape doesn't support non-uniform scale in the XZ plane.
     
    bool CanScaleBeRotated (QuatArg inRotation, Vec3Arg inScale)
     
    Vec3 RotateScale (QuatArg inRotation, Vec3Arg inScale)
     
    +

    Detailed Description

    +

    Helper functions to get properties of a scaling vector.

    +

    Function Documentation

    + +

    ◆ CanScaleBeRotated()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool ScaleHelpers::CanScaleBeRotated (QuatArg inRotation,
    Vec3Arg inScale 
    )
    +
    +inline
    +
    +

    Checks in scale can be rotated to child shape

    Parameters
    + + + +
    inRotationRotation of child shape
    inScaleScale in local space of parent shape
    +
    +
    +
    Returns
    True if the scale is valid (no shearing introduced)
    + +
    +
    + +

    ◆ IsInsideOut()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool ScaleHelpers::IsInsideOut (Vec3Arg inScale)
    +
    +inline
    +
    + +

    Test if a scale flips an object inside out (which requires flipping all normals and polygon windings)

    + +
    +
    + +

    ◆ IsNotScaled()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool ScaleHelpers::IsNotScaled (Vec3Arg inScale)
    +
    +inline
    +
    + +

    Test if a scale is identity.

    + +
    +
    + +

    ◆ IsUniformScale()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool ScaleHelpers::IsUniformScale (Vec3Arg inScale)
    +
    +inline
    +
    + +

    Test if a scale is uniform.

    + +
    +
    + +

    ◆ IsUniformScaleXZ()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool ScaleHelpers::IsUniformScaleXZ (Vec3Arg inScale)
    +
    +inline
    +
    + +

    Test if a scale is uniform in XZ.

    + +
    +
    + +

    ◆ IsZeroScale()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool ScaleHelpers::IsZeroScale (Vec3Arg inScale)
    +
    +inline
    +
    + +

    Test if any of the components of the scale have a value below cMinScale.

    + +
    +
    + +

    ◆ MakeNonZeroScale()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Vec3 ScaleHelpers::MakeNonZeroScale (Vec3Arg inScale)
    +
    +inline
    +
    + +

    Ensure that the scale for each component is at least cMinScale.

    + +
    +
    + +

    ◆ MakeUniformScale()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Vec3 ScaleHelpers::MakeUniformScale (Vec3Arg inScale)
    +
    +inline
    +
    + +

    Get the average scale if inScale, used to make the scale uniform when a shape doesn't support non-uniform scale.

    + +
    +
    + +

    ◆ MakeUniformScaleXZ()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Vec3 ScaleHelpers::MakeUniformScaleXZ (Vec3Arg inScale)
    +
    +inline
    +
    + +

    Average the scale in XZ, used to make the scale uniform when a shape doesn't support non-uniform scale in the XZ plane.

    + +
    +
    + +

    ◆ RotateScale()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Vec3 ScaleHelpers::RotateScale (QuatArg inRotation,
    Vec3Arg inScale 
    )
    +
    +inline
    +
    +

    Adjust scale for rotated child shape

    Parameters
    + + + +
    inRotationRotation of child shape
    inScaleScale in local space of parent shape
    +
    +
    +
    Returns
    Rotated scale
    + +
    +
    + +

    ◆ ScaleConvexRadius()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    float ScaleHelpers::ScaleConvexRadius (float inConvexRadius,
    Vec3Arg inScale 
    )
    +
    +inline
    +
    + +

    Scale the convex radius of an object.

    + +
    +
    +
    +
    + + + + diff --git a/namespace_stream_utils.html b/namespace_stream_utils.html new file mode 100644 index 000000000..7fff70379 --- /dev/null +++ b/namespace_stream_utils.html @@ -0,0 +1,347 @@ + + + + + + + +Jolt Physics: StreamUtils Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    StreamUtils Namespace Reference
    +
    +
    + + + + + + + + +

    +Typedefs

    template<class Type >
    using ObjectToIDMap = UnorderedMap< const Type *, uint32 >
     
    template<class Type >
    using IDToObjectMap = Array< Ref< Type > >
     
    + + + + + + + + + + + + + + + + + + +

    +Functions

    template<class Type >
    Result< Ref< Type > > RestoreObject (StreamIn &inStream, void(Type::*inRestoreBinaryStateFunction)(StreamIn &))
     
    template<class Type >
    void SaveObjectReference (StreamOut &inStream, const Type *inObject, ObjectToIDMap< Type > *ioObjectToIDMap)
     Save an object reference to a stream. Uses a map to map objects to IDs which is also used to prevent writing duplicates.
     
    template<class Type >
    Result< Ref< Type > > RestoreObjectReference (StreamIn &inStream, IDToObjectMap< Type > &ioIDToObjectMap)
     Restore an object reference from stream.
     
    template<class ArrayType , class ValueType >
    void SaveObjectArray (StreamOut &inStream, const ArrayType &inArray, ObjectToIDMap< ValueType > *ioObjectToIDMap)
     
    template<class ArrayType , class ValueType >
    Result< ArrayType > RestoreObjectArray (StreamIn &inStream, IDToObjectMap< ValueType > &ioIDToObjectMap)
     
    +

    Typedef Documentation

    + +

    ◆ IDToObjectMap

    + +
    +
    +
    +template<class Type >
    + + + + +
    using StreamUtils::IDToObjectMap = typedef Array<Ref<Type> >
    +
    + +
    +
    + +

    ◆ ObjectToIDMap

    + +
    +
    +
    +template<class Type >
    + + + + +
    using StreamUtils::ObjectToIDMap = typedef UnorderedMap<const Type *, uint32>
    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ RestoreObject()

    + +
    +
    +
    +template<class Type >
    + + + + + + + + + + + + + + + + + + +
    Result< Ref< Type > > StreamUtils::RestoreObject (StreamIninStream,
    void(Type::*)(StreamIn &) inRestoreBinaryStateFunction 
    )
    +
    + +
    +
    + +

    ◆ RestoreObjectArray()

    + +
    +
    +
    +template<class ArrayType , class ValueType >
    + + + + + + + + + + + + + + + + + + +
    Result< ArrayType > StreamUtils::RestoreObjectArray (StreamIninStream,
    IDToObjectMap< ValueType > & ioIDToObjectMap 
    )
    +
    + +
    +
    + +

    ◆ RestoreObjectReference()

    + +
    +
    +
    +template<class Type >
    + + + + + + + + + + + + + + + + + + +
    Result< Ref< Type > > StreamUtils::RestoreObjectReference (StreamIninStream,
    IDToObjectMap< Type > & ioIDToObjectMap 
    )
    +
    + +

    Restore an object reference from stream.

    + +
    +
    + +

    ◆ SaveObjectArray()

    + +
    +
    +
    +template<class ArrayType , class ValueType >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void StreamUtils::SaveObjectArray (StreamOutinStream,
    const ArrayType & inArray,
    ObjectToIDMap< ValueType > * ioObjectToIDMap 
    )
    +
    + +
    +
    + +

    ◆ SaveObjectReference()

    + +
    +
    +
    +template<class Type >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void StreamUtils::SaveObjectReference (StreamOutinStream,
    const Type * inObject,
    ObjectToIDMap< Type > * ioObjectToIDMap 
    )
    +
    + +

    Save an object reference to a stream. Uses a map to map objects to IDs which is also used to prevent writing duplicates.

    + +
    +
    +
    +
    + + + + diff --git a/namespaceliterals.html b/namespaceliterals.html new file mode 100644 index 000000000..0b26c15ad --- /dev/null +++ b/namespaceliterals.html @@ -0,0 +1,149 @@ + + + + + + + +Jolt Physics: literals Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    literals Namespace Reference
    +
    +
    + + + + +

    +Functions

    constexpr Real operator""_r (long double inValue)
     
    +

    Function Documentation

    + +

    ◆ operator""_r()

    + +
    +
    + + + + + +
    + + + + + + + + +
    constexpr Real literals::operator""_r (long double inValue)
    +
    +constexpr
    +
    + +
    +
    +
    +
    + + + + diff --git a/namespacemembers.html b/namespacemembers.html new file mode 100644 index 000000000..3126e12fb --- /dev/null +++ b/namespacemembers.html @@ -0,0 +1,190 @@ + + + + + + + +Jolt Physics: Namespace Members + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - c -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - i -

    + + +

    - m -

    + + +

    - o -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    +
    +
    + + + + diff --git a/namespacemembers_enum.html b/namespacemembers_enum.html new file mode 100644 index 000000000..ee7d94352 --- /dev/null +++ b/namespacemembers_enum.html @@ -0,0 +1,113 @@ + + + + + + + +Jolt Physics: Namespace Members + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace enums with links to the namespace documentation for each enum:
    +
    +
    + + + + diff --git a/namespacemembers_eval.html b/namespacemembers_eval.html new file mode 100644 index 000000000..e5b162f70 --- /dev/null +++ b/namespacemembers_eval.html @@ -0,0 +1,115 @@ + + + + + + + +Jolt Physics: Namespace Members + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace enum values with links to the namespace documentation for each enum value:
    +
    +
    + + + + diff --git a/namespacemembers_func.html b/namespacemembers_func.html new file mode 100644 index 000000000..01a2f51fa --- /dev/null +++ b/namespacemembers_func.html @@ -0,0 +1,139 @@ + + + + + + + +Jolt Physics: Namespace Members + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    +
    +
    + + + + diff --git a/namespacemembers_type.html b/namespacemembers_type.html new file mode 100644 index 000000000..55cb48ce0 --- /dev/null +++ b/namespacemembers_type.html @@ -0,0 +1,114 @@ + + + + + + + +Jolt Physics: Namespace Members + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace typedefs with links to the namespace documentation for each typedef:
    +
    +
    + + + + diff --git a/namespacemembers_vars.html b/namespacemembers_vars.html new file mode 100644 index 000000000..e259765e1 --- /dev/null +++ b/namespacemembers_vars.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Namespace Members + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace variables with links to the namespace documentation for each variable:
    +
    +
    + + + + diff --git a/namespaces.html b/namespaces.html new file mode 100644 index 000000000..7323c7265 --- /dev/null +++ b/namespaces.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Namespace List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Namespace List
    +
    +
    +
    Here is a list of all namespaces with brief descriptions:
    +
    [detail level 12]
    + + + + + + + + + + +
     NActiveEdgesAn active edge is an edge that either has no neighbouring edge or if the angle between the two connecting faces is too large
     NClosestPointHelper utils to find the closest point to a line segment, triangle or tetrahedron
     NHalfFloatConversion
     NHeightFieldShapeConstantsConstants for HeightFieldShape, this was moved out of the HeightFieldShape because of a linker bug
     Nliterals
     NScaleHelpersHelper functions to get properties of a scaling vector
     Nstd
     Chash< JPH::StaticArray< T, N > >Declare std::hash for StaticArray
     Chash< JPH::String >Declare std::hash for String, for some reason on Linux based platforms template deduction takes the wrong variant
     NStreamUtils
    +
    +
    +
    + + + + diff --git a/namespaces_dup.js b/namespaces_dup.js new file mode 100644 index 000000000..58b6b9250 --- /dev/null +++ b/namespaces_dup.js @@ -0,0 +1,59 @@ +var namespaces_dup = +[ + [ "ActiveEdges", "namespace_active_edges.html", null ], + [ "ClosestPoint", "namespace_closest_point.html", [ + [ "GetBaryCentricCoordinates", "namespace_closest_point.html#a194f91c80641bfd1071c5316705a2c85", null ], + [ "GetBaryCentricCoordinates", "namespace_closest_point.html#ae01251b466c3944d7c9cc6a9e01ce915", null ], + [ "GetClosestPointOnLine", "namespace_closest_point.html#ad687ef98922a03b7128a5d3a5a64ab39", null ], + [ "GetClosestPointOnTetrahedron", "namespace_closest_point.html#abafebdbe3dea0fe6674c20fc9ccc8540", null ], + [ "GetClosestPointOnTriangle", "namespace_closest_point.html#a25fcaaf786d8724b11d02406ab74e0bc", null ], + [ "OriginOutsideOfPlane", "namespace_closest_point.html#ad4bc500e8c3ea1bc2b2bc1a289408f1b", null ], + [ "OriginOutsideOfTetrahedronPlanes", "namespace_closest_point.html#a7221bb45d1aec01527f66683bf2611e0", null ] + ] ], + [ "HalfFloatConversion", "namespace_half_float_conversion.html", [ + [ "ERoundingMode", "namespace_half_float_conversion.html#aa3241cac5bd296cd04f7600e353eb1a4", [ + [ "ROUND_TO_NEG_INF", "namespace_half_float_conversion.html#aa3241cac5bd296cd04f7600e353eb1a4a469f1ba56ff2b3d2cb1b8f5bbba127d9", null ], + [ "ROUND_TO_POS_INF", "namespace_half_float_conversion.html#aa3241cac5bd296cd04f7600e353eb1a4a73c8f88f26cb5185803bc16adb69fbd6", null ], + [ "ROUND_TO_NEAREST", "namespace_half_float_conversion.html#aa3241cac5bd296cd04f7600e353eb1a4aaa7855ec8f43c914312cd51064ad0f64", null ] + ] ], + [ "FromFloat", "namespace_half_float_conversion.html#a65b0aba81626b49a45fb9ac238c04d2d", null ], + [ "FromFloatFallback", "namespace_half_float_conversion.html#af81e63a2dc6f5cdfeb150d4dab3fdcbc", null ], + [ "ToFloat", "namespace_half_float_conversion.html#a25cf44e188c51d03e061f23e1eabe36a", null ], + [ "ToFloatFallback", "namespace_half_float_conversion.html#a222fa9e87d5e494aa324defa2925d03e", null ] + ] ], + [ "HeightFieldShapeConstants", "namespace_height_field_shape_constants.html", [ + [ "cLevelShift", "namespace_height_field_shape_constants.html#ae34b30dc951d3c321c88b41bc4ac40e0", null ], + [ "cMaskBitsXY", "namespace_height_field_shape_constants.html#a1e58ce4b74ca86c27a71f785d9a2ec35", null ], + [ "cMaxHeightValue16", "namespace_height_field_shape_constants.html#aa0b10266b35328efd7344f83bd4d9e8c", null ], + [ "cNoCollisionValue", "namespace_height_field_shape_constants.html#ab430dbc1ec621a77f590c281791c0922", null ], + [ "cNoCollisionValue16", "namespace_height_field_shape_constants.html#ac7f85b459fc57cd090cdd118a0072d4b", null ], + [ "cNumBitsXY", "namespace_height_field_shape_constants.html#a19db7caf3f2b0d72c438471292289306", null ], + [ "cStackSize", "namespace_height_field_shape_constants.html#a37ca4958b8fd6b37a4982941ca479a85", null ] + ] ], + [ "literals", "namespaceliterals.html", [ + [ "operator\"\"_r", "namespaceliterals.html#af3efaa9e7258f2fe6e02e8d05931473b", null ] + ] ], + [ "ScaleHelpers", "namespace_scale_helpers.html", [ + [ "CanScaleBeRotated", "namespace_scale_helpers.html#a024fa9a3c672218ce6b7aaa97d953ae1", null ], + [ "IsInsideOut", "namespace_scale_helpers.html#a968d814e04071d431f79a2ba4e9d4da1", null ], + [ "IsNotScaled", "namespace_scale_helpers.html#abf3b185a98bea874b96fa82a0db2d7e2", null ], + [ "IsUniformScale", "namespace_scale_helpers.html#a8ff2f9310527acbb4b02a00150fe02fe", null ], + [ "IsUniformScaleXZ", "namespace_scale_helpers.html#ab4d95f2ecd59a1a77263a3be465fd34e", null ], + [ "IsZeroScale", "namespace_scale_helpers.html#a3f452edeafb5aeb1ea965c1a2b1d9912", null ], + [ "MakeNonZeroScale", "namespace_scale_helpers.html#a7445e71cd125deb818c71e867ea9275e", null ], + [ "MakeUniformScale", "namespace_scale_helpers.html#a1eeb857fb92f13a5ddd9dac662146b96", null ], + [ "MakeUniformScaleXZ", "namespace_scale_helpers.html#a18833eca6231a55b302eaa70c81b5162", null ], + [ "RotateScale", "namespace_scale_helpers.html#a317905196055a0a720d6468cbb4840b9", null ], + [ "ScaleConvexRadius", "namespace_scale_helpers.html#a3c182e760f2d4a5b0985b20d50b0c870", null ] + ] ], + [ "std", "namespacestd.html", "namespacestd" ], + [ "StreamUtils", "namespace_stream_utils.html", [ + [ "IDToObjectMap", "namespace_stream_utils.html#a31d9aa36bf98b7db87aa8490e9b5d1c3", null ], + [ "ObjectToIDMap", "namespace_stream_utils.html#ad6a5ef164a8da385e1d6a6b6d234be0f", null ], + [ "RestoreObject", "namespace_stream_utils.html#a8e2ba0b1630f3d270dfdd4284a468ab9", null ], + [ "RestoreObjectArray", "namespace_stream_utils.html#a388cbbe0f223267d038a57b9fd6e1571", null ], + [ "RestoreObjectReference", "namespace_stream_utils.html#aab7d93bea0dbbfa623af7112db1bd8be", null ], + [ "SaveObjectArray", "namespace_stream_utils.html#ac77c5ff89ac5ab2af2b924af47ba9199", null ], + [ "SaveObjectReference", "namespace_stream_utils.html#af32cd6cffeb28a74dc98d6ba952f3523", null ] + ] ] +]; \ No newline at end of file diff --git a/namespacestd.html b/namespacestd.html new file mode 100644 index 000000000..b7a94ea53 --- /dev/null +++ b/namespacestd.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: std Namespace Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    std Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  hash< JPH::StaticArray< T, N > >
     Declare std::hash for StaticArray. More...
     
    struct  hash< JPH::String >
     Declare std::hash for String, for some reason on Linux based platforms template deduction takes the wrong variant. More...
     
    +
    +
    + + + + diff --git a/namespacestd.js b/namespacestd.js new file mode 100644 index 000000000..ff022cef8 --- /dev/null +++ b/namespacestd.js @@ -0,0 +1,5 @@ +var namespacestd = +[ + [ "hash< JPH::StaticArray< T, N > >", "structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.html", "structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4" ], + [ "hash< JPH::String >", "structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.html", "structstd_1_1hash_3_01_j_p_h_1_1_string_01_4" ] +]; \ No newline at end of file diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 000000000..72a58a529 Binary files /dev/null and b/nav_f.png differ diff --git a/nav_fd.png b/nav_fd.png new file mode 100644 index 000000000..032fbdd4c Binary files /dev/null and b/nav_fd.png differ diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 000000000..2093a237a Binary files /dev/null and b/nav_g.png differ diff --git a/nav_h.png b/nav_h.png new file mode 100644 index 000000000..33389b101 Binary files /dev/null and b/nav_h.png differ diff --git a/nav_hd.png b/nav_hd.png new file mode 100644 index 000000000..de80f18ad Binary files /dev/null and b/nav_hd.png differ diff --git a/navtree.css b/navtree.css new file mode 100644 index 000000000..69211d4a7 --- /dev/null +++ b/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px var(--font-family-nav); +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:var(--nav-text-active-color); +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:var(--nav-splitbar-image); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: var(--nav-background-color); + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/navtree.js b/navtree.js new file mode 100644 index 000000000..93dd3d462 --- /dev/null +++ b/navtree.js @@ -0,0 +1,559 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, setFocus) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +Jolt Physics: Related Pages + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    +
    + + + + diff --git a/plus.svg b/plus.svg new file mode 100644 index 000000000..075201655 --- /dev/null +++ b/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/plusd.svg b/plusd.svg new file mode 100644 index 000000000..0c65bfe94 --- /dev/null +++ b/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/resize.js b/resize.js new file mode 100644 index 000000000..aaeb6fc0a --- /dev/null +++ b/resize.js @@ -0,0 +1,155 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var once=1; +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,barWidth=6,desktop_vp=768,titleHeight; + + function readSetting(cookie) + { + if (window.chrome) { + var val = localStorage.getItem(cookie_namespace+'_width'); + if (val) return val; + } else { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + } + return 250; + } + + function writeSetting(cookie, val) + { + if (window.chrome) { + localStorage.setItem(cookie_namespace+"_width",val); + } else { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/"; + } + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + writeSetting('width',sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height(); + var contentHeight,navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() + { + var newWidth; + if (sidenav.width()>0) { + newWidth=0; + } + else { + var width = readSetting('width'); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + var sidenavWidth = $(sidenav).outerWidth(); + writeSetting('width',sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readSetting('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + if (once) { + $(".ui-resizable-handle").dblclick(collapseExpand); + once=0 + } + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 000000000..0878544cf --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['0_0',['0',['../md__docs_2_release_notes.html#autotoc_md65',1,'v1.1.0'],['../md__docs_2_release_notes.html#autotoc_md22',1,'v5.1.0']]], + ['0_200_1',['0 0',['../md__docs_2_release_notes.html#autotoc_md66',1,'v1.0.0'],['../md__docs_2_release_notes.html#autotoc_md61',1,'v2.0.0'],['../md__docs_2_release_notes.html#autotoc_md59',1,'v3.0.0'],['../md__docs_2_release_notes.html#autotoc_md54',1,'v4.0.0'],['../md__docs_2_release_notes.html#autotoc_md34',1,'v5.0.0']]], + ['0_200_20and_20v1_200_200_2',['Changes between v0.0.0 and v1.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md40',1,'']]], + ['0_200_20and_20v1_201_200_3',['Changes between v1.0.0 and v1.1.0',['../md__docs_2_a_p_i_changes.html#autotoc_md39',1,'']]], + ['0_200_20and_20v4_200_202_4',['Changes between v4.0.0 and v4.0.2',['../md__docs_2_a_p_i_changes.html#autotoc_md30',1,'']]], + ['0_200_20and_20v5_201_200_5',['Changes between v5.0.0 and v5.1.0',['../md__docs_2_a_p_i_changes.html#autotoc_md21',1,'']]], + ['0_201_6',['0 1',['../md__docs_2_release_notes.html#autotoc_md60',1,'v2.0.1'],['../md__docs_2_release_notes.html#autotoc_md51',1,'v4.0.1']]], + ['0_201_20and_20v3_200_200_7',['Changes between v2.0.1 and v3.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md33',1,'']]], + ['0_201_20and_20v4_200_200_8',['Changes between v3.0.1 and v4.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md32',1,'']]], + ['0_202_9',['v4.0.2',['../md__docs_2_release_notes.html#autotoc_md48',1,'']]], + ['0_202_20and_20v5_200_200_10',['Changes between v4.0.2 and v5.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md27',1,'']]], + ['0_20and_20latest_11',['Changes between v5.1.0 and latest',['../md__docs_2_a_p_i_changes.html#autotoc_md18',1,'']]], + ['0_20and_20v2_200_200_12',['Changes between v1.1.0 and v2.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md37',1,'']]] +]; diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 000000000..aa9bcbe47 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['1_0',['1',['../md__docs_2_release_notes.html#autotoc_md60',1,'v2.0.1'],['../md__docs_2_release_notes.html#autotoc_md51',1,'v4.0.1']]], + ['1_200_1',['1 0',['../md__docs_2_a_p_i_changes.html#autotoc_md39',1,'Changes between v1.0.0 and v1.1.0'],['../md__docs_2_a_p_i_changes.html#autotoc_md21',1,'Changes between v5.0.0 and v5.1.0'],['../md__docs_2_release_notes.html#autotoc_md65',1,'v1.1.0'],['../md__docs_2_release_notes.html#autotoc_md22',1,'v5.1.0']]], + ['1_200_20and_20latest_2',['Changes between v5.1.0 and latest',['../md__docs_2_a_p_i_changes.html#autotoc_md18',1,'']]], + ['1_200_20and_20v2_200_200_3',['Changes between v1.1.0 and v2.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md37',1,'']]], + ['1_20and_20v3_200_200_4',['Changes between v2.0.1 and v3.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md33',1,'']]], + ['1_20and_20v4_200_200_5',['Changes between v3.0.1 and v4.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md32',1,'']]] +]; diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 000000000..65dec8ee8 --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['narrow_20phase_0',['Narrow Phase',['../index.html#narrow-phase',1,'']]], + ['narrowphasequery_1',['NarrowPhaseQuery',['../class_narrow_phase_query.html',1,'']]], + ['narrowphasequery_2ecpp_2',['NarrowPhaseQuery.cpp',['../_narrow_phase_query_8cpp.html',1,'']]], + ['narrowphasequery_2eh_3',['NarrowPhaseQuery.h',['../_narrow_phase_query_8h.html',1,'']]], + ['narrowphasestats_2ecpp_4',['NarrowPhaseStats.cpp',['../_narrow_phase_stats_8cpp.html',1,'']]], + ['narrowphasestats_2eh_5',['NarrowPhaseStats.h',['../_narrow_phase_stats_8h.html',1,'']]], + ['needs_5faligned_5fallocate_6',['needs_aligned_allocate',['../class_s_t_l_allocator.html#a25990210a0d6bfe89040ed3258ff2dbc',1,'STLAllocator']]], + ['new_20functionality_7',['new functionality',['../md__docs_2_release_notes.html#autotoc_md62',1,'Major new functionality'],['../md__docs_2_release_notes.html#autotoc_md55',1,'New functionality'],['../md__docs_2_release_notes.html#autotoc_md52',1,'New functionality'],['../md__docs_2_release_notes.html#autotoc_md49',1,'New functionality'],['../md__docs_2_release_notes.html#autotoc_md35',1,'New Functionality'],['../md__docs_2_release_notes.html#autotoc_md23',1,'New functionality'],['../md__docs_2_release_notes.html#autotoc_md19',1,'New functionality']]], + ['new_20supported_20compilers_8',['New supported compilers',['../md__docs_2_release_notes.html#autotoc_md63',1,'']]], + ['new_20supported_20platforms_9',['new supported platforms',['../md__docs_2_release_notes.html#autotoc_md57',1,'New supported platforms'],['../md__docs_2_release_notes.html#autotoc_md64',1,'New supported platforms']]], + ['newtriangles_10',['NewTriangles',['../class_e_p_a_convex_hull_builder.html#a3fd1bd39cc8988421b7d756fc717ce82',1,'EPAConvexHullBuilder']]], + ['nextframe_11',['nextframe',['../class_profiler.html#afc3cc44c232d261765b9a305846354cb',1,'Profiler::NextFrame()'],['../class_debug_renderer.html#acc84d230ba90d923f47a651d53ce2489',1,'DebugRenderer::NextFrame()']]], + ['nibbletobinary_12',['nibbletobinary',['../_string_tools_8h.html#acd6971b94f2b801aed310443d05c85d9',1,'NibbleToBinary(uint32 inNibble): StringTools.cpp'],['../_string_tools_8cpp.html#a479eac2df35b47887f8dbfa014f6923d',1,'NibbleToBinary(uint32 inNibble): StringTools.cpp']]], + ['node_13',['node',['../class_a_a_b_b_tree_builder_1_1_node.html',1,'AABBTreeBuilder::Node'],['../struct_node_codec_quad_tree_half_float_1_1_node.html',1,'NodeCodecQuadTreeHalfFloat< Alignment >::Node'],['../class_a_a_b_b_tree_builder_1_1_node.html#a8db3648f4a90b334c170c51f4545b2c0',1,'AABBTreeBuilder::Node::Node()']]], + ['nodeallocate_14',['NodeAllocate',['../class_node_codec_quad_tree_half_float_1_1_encoding_context.html#ac621a13ec8689e7cc9ff1fb995115874',1,'NodeCodecQuadTreeHalfFloat::EncodingContext']]], + ['nodecodec_15',['NodeCodec',['../_mesh_shape_8cpp.html#a08fef52c712c3843a91be8f6d98f2c2a',1,'MeshShape.cpp']]], + ['nodecodecquadtreehalffloat_16',['NodeCodecQuadTreeHalfFloat',['../class_node_codec_quad_tree_half_float.html',1,'']]], + ['nodecodecquadtreehalffloat_2eh_17',['NodeCodecQuadTreeHalfFloat.h',['../_node_codec_quad_tree_half_float_8h.html',1,'']]], + ['nodefinalize_18',['NodeFinalize',['../class_node_codec_quad_tree_half_float_1_1_encoding_context.html#a500c6a27c04555f154c00b5ad85654d3',1,'NodeCodecQuadTreeHalfFloat::EncodingContext']]], + ['nodeheader_19',['NodeHeader',['../class_a_a_b_b_tree_to_buffer.html#a89411f4596ab17c134c473d165ee42ba',1,'AABBTreeToBuffer']]], + ['nofaces_20',['NoFaces',['../_collect_faces_mode_8h.html#a43f9b52c7b53fe169fd83842e75935b6af92940cc2936d4efee54451acd04e6b8',1,'CollectFacesMode.h']]], + ['noncopyable_21',['noncopyable',['../class_non_copyable.html#a809b6e4ade7ae32f6d248f2a3b783d45',1,'NonCopyable::NonCopyable()=default'],['../class_non_copyable.html#a501d34ffcc34b30de6d541887a901057',1,'NonCopyable::NonCopyable(const NonCopyable &)=delete'],['../class_non_copyable.html',1,'NonCopyable']]], + ['noncopyable_2eh_22',['NonCopyable.h',['../_non_copyable_8h.html',1,'']]], + ['none_23',['none',['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4a6adf97f83acf6453d4a6a4b1070f3754',1,'None: StateRecorder.h'],['../_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1a6adf97f83acf6453d4a6a4b1070f3754',1,'None: EPhysicsUpdateError.h'],['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a6adf97f83acf6453d4a6a4b1070f3754',1,'None: AllowedDOFs.h'],['../class_soft_body_shared_settings.html#a38d5a75fdb0d962975fbf2c01b15ba32a6adf97f83acf6453d4a6a4b1070f3754',1,'SoftBodySharedSettings::None'],['../class_soft_body_shared_settings.html#a288bafac0b3882214b806d7483e84419a6adf97f83acf6453d4a6a4b1070f3754',1,'SoftBodySharedSettings::None']]], + ['normalized_24',['normalized',['../class_quat.html#a9d4b1ee8c4685a4589766e1c8cacc268',1,'Quat::Normalized()'],['../class_d_vec3.html#a98414033d7ebc2af3b1e950f378a77b7',1,'DVec3::Normalized()'],['../class_vec3.html#a0f7559f2691ad67826f42ca19916b7a9',1,'Vec3::Normalized()'],['../class_vec4.html#a5e1fefaa806551ca4fae202b62965e93',1,'Vec4::Normalized()'],['../class_vector.html#a0bd36049fd0025624665df06e1e390ff',1,'Vector::Normalized()']]], + ['normalizedor_25',['NormalizedOr',['../class_vec3.html#a6c6409cad56e4e357f73d43cd719ffe8',1,'Vec3']]], + ['normalizeweights_26',['NormalizeWeights',['../class_soft_body_shared_settings_1_1_skinned.html#a39217b9d64f7924974d4b5405a8073cd',1,'SoftBodySharedSettings::Skinned']]], + ['not_20recognized_27',['Link Error: File Format Not Recognized',['../md__build_2_r_e_a_d_m_e.html#autotoc_md77',1,'']]], + ['notcolliding_28',['NotColliding',['../class_e_p_a_penetration_depth.html#aab59ecfbbefc06c5ac96f9cdc24252d0a0497a652be066f6f966a97fa6c67c9c0',1,'EPAPenetrationDepth']]], + ['notes_29',['Release Notes',['../md__docs_2_release_notes.html',1,'']]], + ['notifybodiesaabbchanged_30',['notifybodiesaabbchanged',['../class_broad_phase.html#a1a88ea16a35689cad897fcffa428a2ed',1,'BroadPhase::NotifyBodiesAABBChanged()'],['../class_quad_tree.html#a903406946b47220890c1a2091a5c38ad',1,'QuadTree::NotifyBodiesAABBChanged()'],['../class_broad_phase_quad_tree.html#a1ef1e671fbf1837a502f7033bd946ca3',1,'BroadPhaseQuadTree::NotifyBodiesAABBChanged()'],['../class_broad_phase_brute_force.html#a59e4b801e711b42da8018c7f9e8362be',1,'BroadPhaseBruteForce::NotifyBodiesAABBChanged()']]], + ['notifybodieslayerchanged_31',['notifybodieslayerchanged',['../class_broad_phase.html#a9acfe24c8f30529d412a26174dba503c',1,'BroadPhase::NotifyBodiesLayerChanged()'],['../class_broad_phase_brute_force.html#a533303a0786892359c0e2e64ac4371cc',1,'BroadPhaseBruteForce::NotifyBodiesLayerChanged()'],['../class_broad_phase_quad_tree.html#a332de5255be585631ba7d353dc45575b',1,'BroadPhaseQuadTree::NotifyBodiesLayerChanged()']]], + ['notifyshapechanged_32',['notifyshapechanged',['../class_cone_constraint.html#a59b0a0be6774c77193b8209b6be988f2',1,'ConeConstraint::NotifyShapeChanged()'],['../class_body_interface.html#aa2e0c12f152375b42b3de56faf9bec86',1,'BodyInterface::NotifyShapeChanged()'],['../class_fixed_constraint.html#a2c3cfcfafdde98e5cc2ef15e300edbce',1,'FixedConstraint::NotifyShapeChanged()'],['../class_vehicle_constraint.html#ac3df25ba1e2c0a85e46a1b93702155cf',1,'VehicleConstraint::NotifyShapeChanged()'],['../class_gear_constraint.html#a16af2cebb97b81fb5d7061a810f22bd7',1,'GearConstraint::NotifyShapeChanged()'],['../class_hinge_constraint.html#ab9dd0d5de72165fcb15b85d02308213a',1,'HingeConstraint::NotifyShapeChanged()'],['../class_path_constraint.html#ae10bed0a11582fbe738f8339aa1257d5',1,'PathConstraint::NotifyShapeChanged()'],['../class_point_constraint.html#a988ec795ba7e071d1cd256afc5edd6cf',1,'PointConstraint::NotifyShapeChanged()'],['../class_pulley_constraint.html#abf1f2d838a54008edca4ee2a907ac0f6',1,'PulleyConstraint::NotifyShapeChanged()'],['../class_rack_and_pinion_constraint.html#ae5158af0c72fb1b412c1b17a2f8389aa',1,'RackAndPinionConstraint::NotifyShapeChanged()'],['../class_six_d_o_f_constraint.html#a7da40332bca888038baa167dc1cb0d8b',1,'SixDOFConstraint::NotifyShapeChanged()'],['../class_slider_constraint.html#a13363a2168538544705cff396e1eab28',1,'SliderConstraint::NotifyShapeChanged()'],['../class_swing_twist_constraint.html#ab510d96b7f9f7df51cea9b2400474db4',1,'SwingTwistConstraint::NotifyShapeChanged()'],['../class_constraint.html#a3072411d2c9da10356f2087cdc02ec70',1,'Constraint::NotifyShapeChanged()'],['../class_distance_constraint.html#aa6ac58843c176b849972406a38f50c89',1,'DistanceConstraint::NotifyShapeChanged()']]], + ['notsupported_33',['NotSupported',['../class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77ea9ed2d871602556951e39f3cebd08d6cb',1,'CharacterBase']]], + ['nowork_34',['NoWork',['../class_soft_body_motion_properties.html#a0f968ca89a547af5c8978c966e327682a4478afeb3b0fbabb01bc08e8ca92e691',1,'SoftBodyMotionProperties']]], + ['num_35',['num',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cdabf8fb5a75f02a8ed4c0d14cb3e9f41d2',1,'SixDOFConstraintSettings::Num'],['../_vehicle_track_8h.html#a8008ce273c0da3c40bc613d9495818d2ab3e3076d9b3c53bede50d468b647b109',1,'Num: VehicleTrack.h']]], + ['numchildrenpernode_36',['numchildrenpernode',['../class_a_a_b_b_tree_to_buffer.html#a956ca0626883d745209ce9fceb85197c',1,'AABBTreeToBuffer::NumChildrenPerNode'],['../class_node_codec_quad_tree_half_float.html#a5a852e30e37f354078911cdefdcc846c',1,'NodeCodecQuadTreeHalfFloat::NumChildrenPerNode']]], + ['numtranslation_37',['NumTranslation',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cda8dce276a8243615282b784869418ba66',1,'SixDOFConstraintSettings']]] +]; diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 000000000..f98ab66c3 --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,131 @@ +var searchData= +[ + ['object_0',['Object',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa497031794414a552435f90151ac3b54b',1,'SerializableAttribute.h']]], + ['objectlayer_1',['ObjectLayer',['../_object_layer_8h.html#a960eb396e2803ddad87bf25e0dcb4470',1,'ObjectLayer.h']]], + ['objectlayer_2eh_2',['ObjectLayer.h',['../_object_layer_8h.html',1,'']]], + ['objectlayerfilter_3',['ObjectLayerFilter',['../class_object_layer_filter.html',1,'']]], + ['objectlayerpairfilter_4',['ObjectLayerPairFilter',['../class_object_layer_pair_filter.html',1,'']]], + ['objectlayerpairfiltermask_5',['ObjectLayerPairFilterMask',['../class_object_layer_pair_filter_mask.html',1,'']]], + ['objectlayerpairfiltermask_2eh_6',['ObjectLayerPairFilterMask.h',['../_object_layer_pair_filter_mask_8h.html',1,'']]], + ['objectlayerpairfiltertable_7',['objectlayerpairfiltertable',['../class_object_layer_pair_filter_table.html#a374488a93f35824127860cab6452136b',1,'ObjectLayerPairFilterTable::ObjectLayerPairFilterTable()'],['../class_object_layer_pair_filter_table.html',1,'ObjectLayerPairFilterTable']]], + ['objectlayerpairfiltertable_2eh_8',['ObjectLayerPairFilterTable.h',['../_object_layer_pair_filter_table_8h.html',1,'']]], + ['objectstoragesize_9',['ObjectStorageSize',['../class_fixed_size_free_list.html#a574046ef3a420bee3408d5a1930f0952',1,'FixedSizeFreeList']]], + ['objectstream_10',['ObjectStream',['../class_object_stream.html',1,'']]], + ['objectstream_2ecpp_11',['ObjectStream.cpp',['../_object_stream_8cpp.html',1,'']]], + ['objectstream_2eh_12',['ObjectStream.h',['../_object_stream_8h.html',1,'']]], + ['objectstreambinaryin_13',['objectstreambinaryin',['../class_object_stream_binary_in.html#a5b06493c2d5b32cbe534183d2452e48b',1,'ObjectStreamBinaryIn::ObjectStreamBinaryIn()'],['../class_object_stream_binary_in.html',1,'ObjectStreamBinaryIn']]], + ['objectstreambinaryin_2ecpp_14',['ObjectStreamBinaryIn.cpp',['../_object_stream_binary_in_8cpp.html',1,'']]], + ['objectstreambinaryin_2eh_15',['ObjectStreamBinaryIn.h',['../_object_stream_binary_in_8h.html',1,'']]], + ['objectstreambinaryout_16',['objectstreambinaryout',['../class_object_stream_binary_out.html#a95c257e2db19513f1222b8b8a7e96bc7',1,'ObjectStreamBinaryOut::ObjectStreamBinaryOut()'],['../class_object_stream_binary_out.html',1,'ObjectStreamBinaryOut']]], + ['objectstreambinaryout_2ecpp_17',['ObjectStreamBinaryOut.cpp',['../_object_stream_binary_out_8cpp.html',1,'']]], + ['objectstreambinaryout_2eh_18',['ObjectStreamBinaryOut.h',['../_object_stream_binary_out_8h.html',1,'']]], + ['objectstreamin_19',['objectstreamin',['../class_object_stream_in.html#ad45c7ba064bf63506d6d53d295b67d77',1,'ObjectStreamIn::ObjectStreamIn()'],['../class_object_stream_in.html',1,'ObjectStreamIn']]], + ['objectstreamin_2ecpp_20',['ObjectStreamIn.cpp',['../_object_stream_in_8cpp.html',1,'']]], + ['objectstreamin_2eh_21',['ObjectStreamIn.h',['../_object_stream_in_8h.html',1,'']]], + ['objectstreamout_22',['objectstreamout',['../class_object_stream_out.html#abadcecd0476fc4bba8b9df42f36de777',1,'ObjectStreamOut::ObjectStreamOut()'],['../class_object_stream_out.html',1,'ObjectStreamOut']]], + ['objectstreamout_2ecpp_23',['ObjectStreamOut.cpp',['../_object_stream_out_8cpp.html',1,'']]], + ['objectstreamout_2eh_24',['ObjectStreamOut.h',['../_object_stream_out_8h.html',1,'']]], + ['objectstreamtextin_25',['objectstreamtextin',['../class_object_stream_text_in.html#af134b8a2a22f563c4b550f48aff21741',1,'ObjectStreamTextIn::ObjectStreamTextIn()'],['../class_object_stream_text_in.html',1,'ObjectStreamTextIn']]], + ['objectstreamtextin_2ecpp_26',['ObjectStreamTextIn.cpp',['../_object_stream_text_in_8cpp.html',1,'']]], + ['objectstreamtextin_2eh_27',['ObjectStreamTextIn.h',['../_object_stream_text_in_8h.html',1,'']]], + ['objectstreamtextout_28',['objectstreamtextout',['../class_object_stream_text_out.html',1,'ObjectStreamTextOut'],['../class_object_stream_text_out.html#a26dd20490fddafd53c66bf6b0bae4e18',1,'ObjectStreamTextOut::ObjectStreamTextOut()']]], + ['objectstreamtextout_2ecpp_29',['ObjectStreamTextOut.cpp',['../_object_stream_text_out_8cpp.html',1,'']]], + ['objectstreamtextout_2eh_30',['ObjectStreamTextOut.h',['../_object_stream_text_out_8h.html',1,'']]], + ['objectstreamtypes_2eh_31',['ObjectStreamTypes.h',['../_object_stream_types_8h.html',1,'']]], + ['objecttoidmap_32',['ObjectToIDMap',['../namespace_stream_utils.html#ad6a5ef164a8da385e1d6a6b6d234be0f',1,'StreamUtils']]], + ['objectvsbroadphaselayerfilter_33',['ObjectVsBroadPhaseLayerFilter',['../class_object_vs_broad_phase_layer_filter.html',1,'']]], + ['objectvsbroadphaselayerfiltermask_34',['objectvsbroadphaselayerfiltermask',['../class_object_vs_broad_phase_layer_filter_mask.html#a91030107a0decb550875823bf5f7dd25',1,'ObjectVsBroadPhaseLayerFilterMask::ObjectVsBroadPhaseLayerFilterMask()'],['../class_object_vs_broad_phase_layer_filter_mask.html',1,'ObjectVsBroadPhaseLayerFilterMask']]], + ['objectvsbroadphaselayerfiltermask_2eh_35',['ObjectVsBroadPhaseLayerFilterMask.h',['../_object_vs_broad_phase_layer_filter_mask_8h.html',1,'']]], + ['objectvsbroadphaselayerfiltertable_36',['objectvsbroadphaselayerfiltertable',['../class_object_vs_broad_phase_layer_filter_table.html',1,'ObjectVsBroadPhaseLayerFilterTable'],['../class_object_vs_broad_phase_layer_filter_table.html#afc97e0c90982e30a48f249562d2b8886',1,'ObjectVsBroadPhaseLayerFilterTable::ObjectVsBroadPhaseLayerFilterTable()']]], + ['objectvsbroadphaselayerfiltertable_2eh_37',['ObjectVsBroadPhaseLayerFilterTable.h',['../_object_vs_broad_phase_layer_filter_table_8h.html',1,'']]], + ['of_20jolt_20physics_38',['Architecture of Jolt Physics',['../index.html#architecture-jolt-physics',1,'']]], + ['of_20mass_39',['Center of Mass',['../index.html#center-of-mass',1,'']]], + ['off_40',['off',['../_motor_settings_8h.html#a691a2387946263d993fa8e1c9488bc2bad15305d7a4e34e02489c74a5ef542f36',1,'Off: MotorSettings.h'],['../class_debug_renderer.html#aa24dcdedf792593f83eb1091d7e456b9ad15305d7a4e34e02489c74a5ef542f36',1,'DebugRenderer::Off'],['../class_debug_renderer.html#a54c5367f9b1f976cfe292dfa9ad2160aad15305d7a4e34e02489c74a5ef542f36',1,'DebugRenderer::Off']]], + ['offset_41',['Offset',['../class_plane.html#adce0e2bf9f6e85a2788ede7adfbe031d',1,'Plane']]], + ['offset_5fbits_42',['OFFSET_BITS',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24a3983ab643fc0d11bebad14350cd906e0',1,'NodeCodecQuadTreeHalfFloat']]], + ['offset_5fmask_43',['OFFSET_MASK',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24a98a92ae3f6d8bd16ee274dfed86dcaa2',1,'NodeCodecQuadTreeHalfFloat']]], + ['offset_5fnon_5fsignificant_5fbits_44',['OFFSET_NON_SIGNIFICANT_BITS',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24aa9ff785da9e00767a0b75c453653e1bf',1,'NodeCodecQuadTreeHalfFloat']]], + ['offset_5fnon_5fsignificant_5fmask_45',['OFFSET_NON_SIGNIFICANT_MASK',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24ab451c34f42d704469b6a7a77af4c5d01',1,'NodeCodecQuadTreeHalfFloat']]], + ['offset_5fto_5fuserdata_5fbits_46',['OFFSET_TO_USERDATA_BITS',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7a6008b679de593dd3bada966a054cfdf5',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['offset_5fto_5fuserdata_5fmask_47',['OFFSET_TO_USERDATA_MASK',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7a686b6aec5fcb6a420e1fab1ad4a156cd',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['offset_5fto_5fvertices_5fbits_48',['OFFSET_TO_VERTICES_BITS',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7af4813a4d11b084820b1822b849a4417c',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['offset_5fto_5fvertices_5fmask_49',['OFFSET_TO_VERTICES_MASK',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7a8ee2cdd53a4c605008ef9cfaecf00211',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['offsetcenterofmass_50',['OffsetCenterOfMass',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551bab56bddbe57bc36e5e91ea827e57d3adc',1,'Shape.h']]], + ['offsetcenterofmassshape_51',['offsetcenterofmassshape',['../class_offset_center_of_mass_shape.html#a4066cbb4b851269605cd5ad0a31694ef',1,'OffsetCenterOfMassShape::OffsetCenterOfMassShape()'],['../class_offset_center_of_mass_shape.html#a8e82168a95eb463f51e2c109b789c22b',1,'OffsetCenterOfMassShape::OffsetCenterOfMassShape(const OffsetCenterOfMassShapeSettings &inSettings, ShapeResult &outResult)'],['../class_offset_center_of_mass_shape.html#a5ea993204b5ccaad71e55e4d0bfed76b',1,'OffsetCenterOfMassShape::OffsetCenterOfMassShape(const Shape *inShape, Vec3Arg inOffset)'],['../class_offset_center_of_mass_shape.html',1,'OffsetCenterOfMassShape']]], + ['offsetcenterofmassshape_2ecpp_52',['OffsetCenterOfMassShape.cpp',['../_offset_center_of_mass_shape_8cpp.html',1,'']]], + ['offsetcenterofmassshape_2eh_53',['OffsetCenterOfMassShape.h',['../_offset_center_of_mass_shape_8h.html',1,'']]], + ['offsetcenterofmassshapesettings_54',['offsetcenterofmassshapesettings',['../class_offset_center_of_mass_shape_settings.html#ae797f24e598e1cc5ff88343858dfe8cd',1,'OffsetCenterOfMassShapeSettings::OffsetCenterOfMassShapeSettings()'],['../class_offset_center_of_mass_shape_settings.html',1,'OffsetCenterOfMassShapeSettings'],['../class_offset_center_of_mass_shape_settings.html#a656e0a7d3d016abc387ffff34c2baed7',1,'OffsetCenterOfMassShapeSettings::OffsetCenterOfMassShapeSettings()=default'],['../class_offset_center_of_mass_shape_settings.html#a068e37b92d684a38ba5cd5ab58425d53',1,'OffsetCenterOfMassShapeSettings::OffsetCenterOfMassShapeSettings(Vec3Arg inOffset, const ShapeSettings *inShape)']]], + ['on_55',['On',['../class_debug_renderer.html#aa24dcdedf792593f83eb1091d7e456b9a521c36a31c2762741cf0f8890cbe05e3',1,'DebugRenderer']]], + ['on_20windows_56',['Doxygen on Windows',['../md__build_2_r_e_a_d_m_e.html#autotoc_md81',1,'']]], + ['onadjustbodyvelocity_57',['OnAdjustBodyVelocity',['../class_character_contact_listener.html#a861889d3b1f2349eb1726ebfd979bf53',1,'CharacterContactListener']]], + ['onbody_58',['onbody',['../class_internal_edge_removing_collector.html#a266df30d8625b5deb67257e5d10a0f24',1,'InternalEdgeRemovingCollector::OnBody()'],['../class_collision_collector.html#ac2986bb5d0b4f6147d2507571ee3a014',1,'CollisionCollector::OnBody()']]], + ['onbodyactivated_59',['OnBodyActivated',['../class_body_activation_listener.html#a448ea399091ddce1e908977b90e286c6',1,'BodyActivationListener']]], + ['onbodydeactivated_60',['OnBodyDeactivated',['../class_body_activation_listener.html#aa92b184061db51e535acfa215895b47f',1,'BodyActivationListener']]], + ['onccdcontactadded_61',['OnCCDContactAdded',['../class_contact_constraint_manager.html#a95c132f19384bb01d869331e9faf3757',1,'ContactConstraintManager']]], + ['oncharactercontactadded_62',['OnCharacterContactAdded',['../class_character_contact_listener.html#a66b85f5bafb3d0fd5a07ef1b278826e4',1,'CharacterContactListener']]], + ['oncharactercontactsolve_63',['OnCharacterContactSolve',['../class_character_contact_listener.html#ad611891b1e902a1bc9596935362c141e',1,'CharacterContactListener']]], + ['oncharactercontactvalidate_64',['OnCharacterContactValidate',['../class_character_contact_listener.html#a5ede2bdf086dafcaa1f53fd6fe4a5e7b',1,'CharacterContactListener']]], + ['oncontactadded_65',['oncontactadded',['../class_character_contact_listener.html#a07550deec345e7d94ca05afdd341b11d',1,'CharacterContactListener::OnContactAdded()'],['../class_contact_listener.html#aeb1d7908c8556ce24448ac572d7ad944',1,'ContactListener::OnContactAdded(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &ioSettings)']]], + ['oncontactpersisted_66',['OnContactPersisted',['../class_contact_listener.html#aa11e4d0107c2764e1c7e04eef72cb404',1,'ContactListener']]], + ['oncontactremoved_67',['OnContactRemoved',['../class_contact_listener.html#aef8f0cac1d560622743420afcd1ce17a',1,'ContactListener']]], + ['oncontactsolve_68',['OnContactSolve',['../class_character_contact_listener.html#a4d1a8b09ee3a923d4aa7bc53aec160b6',1,'CharacterContactListener']]], + ['oncontactvalidate_69',['oncontactvalidate',['../class_character_contact_listener.html#a46fc7a819cf904aa3db5cf1648f21530',1,'CharacterContactListener::OnContactValidate()'],['../class_contact_listener.html#abb704483e4e1f2eba7109b504afdf482',1,'ContactListener::OnContactValidate()']]], + ['onground_70',['OnGround',['../class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77ea2b9beed57034f5727573d7ded76cf777',1,'CharacterBase']]], + ['onjobfinished_71',['onjobfinished',['../class_job_system_single_threaded_1_1_barrier_impl.html#ad13990ca369c5cb94826dd026a447733',1,'JobSystemSingleThreaded::BarrierImpl::OnJobFinished()'],['../class_job_system_1_1_barrier.html#ab76635eef3bb293a2bceb429192adb2a',1,'JobSystem::Barrier::OnJobFinished()']]], + ['onsoftbodycontactadded_72',['OnSoftBodyContactAdded',['../class_soft_body_contact_listener.html#a5b875d9411f869298407501bc3d98199',1,'SoftBodyContactListener']]], + ['onsoftbodycontactvalidate_73',['OnSoftBodyContactValidate',['../class_soft_body_contact_listener.html#a88fe3a41025942d5e4c1f144b20bfbd9',1,'SoftBodyContactListener']]], + ['onsteepground_74',['OnSteepGround',['../class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77ea50f80f8d96a6d65de73ba8a6b9910761',1,'CharacterBase']]], + ['onstep_75',['OnStep',['../class_physics_step_listener.html#af2180e766b5fc038b7ce5ab2799c0230',1,'PhysicsStepListener']]], + ['open_76',['open',['../class_object_stream_out.html#ab6d07cfe9606730ae27e3c5fd3174f83',1,'ObjectStreamOut::Open()'],['../class_object_stream_in.html#a20be61d968a2f31e1039f364ba4ee44a',1,'ObjectStreamIn::Open()']]], + ['operator_20const_20t_20_2a_77',['operator const T *',['../class_ref_const.html#abb26c088acecc5b04ee18402ab8aed00',1,'RefConst']]], + ['operator_20raycast_78',['operator RayCast',['../struct_r_ray_cast.html#a5e8ecad2361e2396e95614c74f1282dd',1,'RRayCast']]], + ['operator_20shapecast_79',['operator ShapeCast',['../struct_r_shape_cast.html#a991ebdb11b9ea565ddf0d3ad68bcdfaa',1,'RShapeCast']]], + ['operator_20t_2a_80',['operator T*',['../class_ref.html#a7815a268701499cc6516ea180c1e7761',1,'Ref']]], + ['operator_20type_81',['operator Type',['../class_broad_phase_layer.html#ae0cc32e470894d6c842ace0ab9054360',1,'BroadPhaseLayer']]], + ['operator_20vec3_82',['operator Vec3',['../class_d_vec3.html#aea862e04fd4041a3d10035275fe995e0',1,'DVec3']]], + ['operator_21_3d_83',['operator!=',['../class_float3.html#acc6115cac5c0209c110e319de7a5f01a',1,'Float3::operator!=()'],['../class_array.html#a44b682273941051e9bab4d8b2200b937',1,'Array::operator!=()'],['../class_mat44.html#a13b1fe0d8085ba8cf9845394c1433d89',1,'Mat44::operator!=()'],['../class_matrix.html#ad83804c5ac0ed0ad487b2c60a0815344',1,'Matrix::operator!=()'],['../class_quat.html#a23c4e00d9d6905c284c728cf3e184934',1,'Quat::operator!=()'],['../class_u_vec4.html#ab111b839ccfe094607cfa52f35ba79bd',1,'UVec4::operator!=()'],['../class_u_vec8.html#af273dd7e633a1508222b9092cb334180',1,'UVec8::operator!=()'],['../class_vec3.html#a43de7b2b748f26d8854afee5edb944d5',1,'Vec3::operator!=()'],['../class_vec4.html#a66f5baa144587d92d92bd22a311d894e',1,'Vec4::operator!=()'],['../class_vector.html#a97ea23f0596e27b87424d91cd79e19da',1,'Vector::operator!=()'],['../class_body_i_d.html#a7bdbfe3abcab2c0d393187423a40c9a4',1,'BodyID::operator!=()'],['../class_broad_phase_layer.html#ab0429cbf863c7c513553a36ea154b849',1,'BroadPhaseLayer::operator!=()'],['../class_sub_shape_i_d.html#a139169c43883bdc72791c61a4c40f30d',1,'SubShapeID::operator!=()'],['../class_d_vec3.html#afcf4835749ee0cf9dffcb3d02822c198',1,'DVec3::operator!=()'],['../class_color.html#a71e5796a05f70a9c800c094ff87a515d',1,'Color::operator!=()'],['../struct_lock_free_hash_map_1_1_iterator.html#ac41d9d1e14de5e0d26edf2c004e7b4b0',1,'LockFreeHashMap::Iterator::operator!=()'],['../class_ref.html#a35e7936167af8457b141f0fe817f4b61',1,'Ref::operator!=(const T *inRHS) const'],['../class_ref.html#abbc5455c642ef5997c3abc91d47b3119',1,'Ref::operator!=(const Ref< T > &inRHS) const'],['../class_ref_const.html#a23fa7e171fc7404b20e23eb826b3f10a',1,'RefConst::operator!=(const T *inRHS) const'],['../class_ref_const.html#af7109de8d546a1bcf49c87ffcdcf443e',1,'RefConst::operator!=(const RefConst< T > &inRHS) const'],['../class_ref_const.html#a4bf0ce88b38379fb6aab094530391080',1,'RefConst::operator!=(const Ref< T > &inRHS) const'],['../class_r_t_t_i.html#a11f57b37456ad4373bb3ca03e9a5cacd',1,'RTTI::operator!=()'],['../class_s_t_l_aligned_allocator.html#a07e008a7bc893d0386c0e98f2f2d485e',1,'STLAlignedAllocator::operator!=()'],['../class_float2.html#a96fca2374dcba65591ea81c7d16b9aa9',1,'Float2::operator!=()'],['../class_double3.html#a1a82ae13009bf31cdb037cab5e4a1adf',1,'Double3::operator!=()'],['../class_d_mat44.html#a5b8ba1f914bb4a7243be497c552d0992',1,'DMat44::operator!=()'],['../class_a_a_box.html#a0b29e5ea5c5dd1df0d7a2ad484ba7e82',1,'AABox::operator!=()'],['../class_static_array.html#ac8d17328522928bec933dc594245c895',1,'StaticArray::operator!=()'],['../class_s_t_l_allocator.html#a9fc4be52711444b202331eca017b5e40',1,'STLAllocator::operator!=()'],['../class_s_t_l_temp_allocator.html#a523ba43212ea2640c688da9b14366742',1,'STLTempAllocator::operator!=()']]], + ['operator_22_22_5fr_84',['operator""_r',['../namespaceliterals.html#af3efaa9e7258f2fe6e02e8d05931473b',1,'literals']]], + ['operator_26_85',['operator&',['../_e_physics_update_error_8h.html#af38237fdd96afc7f0ca862bdff6d4cb9',1,'operator&(EPhysicsUpdateError inA, EPhysicsUpdateError inB): EPhysicsUpdateError.h'],['../_allowed_d_o_fs_8h.html#afe95ed30c0537646dfdabb25414d939a',1,'operator&(EAllowedDOFs inLHS, EAllowedDOFs inRHS): AllowedDOFs.h']]], + ['operator_26_3d_86',['operator&=',['../_allowed_d_o_fs_8h.html#a3003da2a6c8c46e329556000e4b3c458',1,'AllowedDOFs.h']]], + ['operator_28_29_87',['operator()',['../structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.html#a27cb00ccb4f41397fd464f69e200b8f7',1,'std::hash< JPH::StaticArray< T, N > >::operator()()'],['../class_color.html#aa52025f450b77f4d76a76d822245eb69',1,'Color::operator()()'],['../class_dummy_calculate_solver_steps.html#ab7e2c25f8cdd044fbba4942cc202081c',1,'DummyCalculateSolverSteps::operator()()'],['../class_calculate_solver_steps.html#a9fce04eeb077b4f258a71de586113359',1,'CalculateSolverSteps::operator()()'],['../class_matrix.html#a67cd0d0e04d64a43b570bba1ac87110f',1,'Matrix::operator()(uint inRow, uint inColumn)'],['../class_matrix.html#aa2c6fb4dd5793351db17038cb563a56e',1,'Matrix::operator()(uint inRow, uint inColumn) const'],['../class_mat44.html#a608a5ec6255c02bfdfa11f4b9d66d438',1,'Mat44::operator()(uint inRow, uint inColumn)'],['../class_mat44.html#a7a74f3bb8a8ee63470c5b73e9fbfd5e9',1,'Mat44::operator()(uint inRow, uint inColumn) const'],['../class_dyn_matrix.html#a24fa187bff17009ca0883b1fb01f134d',1,'DynMatrix::operator()(uint inRow, uint inCol)'],['../class_dyn_matrix.html#aa597ffabf9e1b50016a1a3144476676a',1,'DynMatrix::operator()(uint inRow, uint inCol) const'],['../structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.html#a0571f6933c199a1ded43c68ca4b173f0',1,'std::hash< JPH::String >::operator()()'],['../class_color.html#a55d48519d8f98cc395a6b30e87f6a023',1,'Color::operator()()']]], + ['operator_2a_88',['operator*',['../class_vec8.html#a5b527ce885b1b22c56173d4e48425bb3',1,'Vec8::operator*()'],['../class_quat.html#a646b3edebee182d86159eed987ba91a0',1,'Quat::operator*()'],['../class_u_vec4.html#ae2b7e062cd567b34fe691d46b15b072b',1,'UVec4::operator*()'],['../class_vec3.html#aad39352503c4bf9184727dde9dc11f04',1,'Vec3::operator*(Vec3Arg inV2) const'],['../class_vec3.html#ab8c89d26b3b090939173acf1ccd2d2e5',1,'Vec3::operator*(float inV2) const'],['../class_vec3.html#a4f514df42b1d780285645f9ac4ab984d',1,'Vec3::operator*'],['../class_vec4.html#a3b17e39450cc5af4ab75661f2ab76d6f',1,'Vec4::operator*(Vec4Arg inV2) const'],['../class_vec4.html#a03151fec0517ac59f467e6400bd2e79d',1,'Vec4::operator*(float inV2) const'],['../class_vec4.html#aff8d5cf747d2cfa658ac6bc5822b6434',1,'Vec4::operator*'],['../class_vec8.html#a8c58ab6a636af411c1aa0484c2378f0c',1,'Vec8::operator*()'],['../_vec3_8inl.html#a14695ec9e4b68a40e47bf9cbd11e62a4',1,'operator*(): Vec3.inl'],['../class_vector.html#a13077d539d6cac0b3415c96c54256a09',1,'Vector::operator*(const float inV2) const'],['../class_vector.html#a4629e622d2f5cabbc8bee88e8ed448f2',1,'Vector::operator*'],['../class_color.html#a0c9f1a84dc0774797c3ca7f08e2f2369',1,'Color::operator*()'],['../_vec4_8inl.html#a90fa6632d6bf46f715945f2ae7b2e2ec',1,'operator*(float inV1, Vec4Arg inV2): Vec4.inl'],['../_d_vec3_8inl.html#a786dfc8f87f225995cb77bbf53c39244',1,'operator*(double inV1, DVec3Arg inV2): DVec3.inl'],['../class_quat.html#ae6b513e0018c4191b92eee8fb4594a5e',1,'Quat::operator*()'],['../class_color.html#a2693356ec20fc6aa66b6e5eafd931a63',1,'Color::operator*()'],['../struct_lock_free_hash_map_1_1_iterator.html#af2b164af90f8efbeb7c5a5bc19333f34',1,'LockFreeHashMap::Iterator::operator*()'],['../class_ref.html#af541f814b9fe7fbe7c353c6280606b37',1,'Ref::operator*()'],['../class_ref_const.html#a468e29d26ab1621fc62a18020e181fd9',1,'RefConst::operator*()'],['../class_d_mat44.html#aca2af5f8afaf528035bc5fd0791d9608',1,'DMat44::operator*(Mat44Arg inM) const'],['../class_d_mat44.html#a33dbadd50287afe81c339ee89ee9c7dc',1,'DMat44::operator*(DMat44Arg inM) const'],['../class_d_mat44.html#a1bfdf30fa6926f6f2076c90beeb588dc',1,'DMat44::operator*(Vec3Arg inV) const'],['../class_d_mat44.html#a086981712295420afe35262a13989f06',1,'DMat44::operator*(DVec3Arg inV) const'],['../class_d_vec3.html#a407ecd0e3be7e4f60cd02c4e47ef5adb',1,'DVec3::operator*(DVec3Arg inV2) const'],['../class_d_vec3.html#af4b10fe57b6cb3e07ebd55c59054d213',1,'DVec3::operator*(double inV2) const'],['../class_d_vec3.html#a5eb373a1eec5f1e81d8523e6efeedcb3',1,'DVec3::operator*'],['../class_quat.html#a889abe46c8a28cfafa2a20492ecb9b3a',1,'Quat::operator*'],['../class_quat.html#a4e344b30517b4411443b17078e5bb218',1,'Quat::operator*(QuatArg inRHS) const'],['../class_matrix.html#a9d56aa1cdf39b7267b15c3f839bcce43',1,'Matrix::operator*'],['../class_matrix.html#a9daf57728f2ba01747ef258a12aec758',1,'Matrix::operator*(float inV) const'],['../class_matrix.html#a08c8beaf4e7332332cf1ca3e08a4e736',1,'Matrix::operator*(const Vector< Cols > &inV) const'],['../class_matrix.html#afd8729a9684ca684a16e95dac59b9499',1,'Matrix::operator*(const Matrix< Cols, OtherCols > &inM) const'],['../class_mat44.html#afe860f899612b75ff8be07c018614c5b',1,'Mat44::operator*'],['../class_mat44.html#adde2d0df064c3457190cdc6fb0da5dc3',1,'Mat44::operator*(float inV) const'],['../class_mat44.html#a087d4151cced62fdce757c1895d2d834',1,'Mat44::operator*(Vec4Arg inV) const'],['../class_mat44.html#a8bbaea1aac790dd55a59b25a9ef7cd16',1,'Mat44::operator*(Vec3Arg inV) const'],['../class_mat44.html#ae64ca2f2b40571def45845fecd505c64',1,'Mat44::operator*(Mat44Arg inM) const']]], + ['operator_2a_3d_89',['operator*=',['../class_d_vec3.html#a9e5a82ae492dbea121d220ed21fbd503',1,'DVec3::operator*=(DVec3Arg inV2)'],['../class_d_vec3.html#a1dc42bd495d9c8b63a856a1d516e4365',1,'DVec3::operator*=(double inV2)'],['../class_mat44.html#a2a3d5b10d49ac1eed4eae855a0fd25d9',1,'Mat44::operator*=()'],['../class_quat.html#ada769d2a82345ec6a2abd706216d46e2',1,'Quat::operator*=()'],['../class_vec3.html#ae0bbf04d3791ef12a0b2d114e190ed8e',1,'Vec3::operator*=(float inV2)'],['../class_vec3.html#a8d7e6d43ffa3bac48b87aa69c278e420',1,'Vec3::operator*=(Vec3Arg inV2)'],['../class_vec4.html#a914f0d0d23cb0cfc6cc7a58bd5f2ac01',1,'Vec4::operator*=(float inV2)'],['../class_vec4.html#a01e7322229eaf37c8b9479c6e648d221',1,'Vec4::operator*=(Vec4Arg inV2)'],['../class_vector.html#a5d3e058866ab4898fd9d1b6860159303',1,'Vector::operator*=()']]], + ['operator_2b_90',['operator+',['../class_quat.html#a05bb92518353f7309399282af7e906e3',1,'Quat::operator+()'],['../class_d_vec3.html#a40e55c7777c00682e04610c67101d659',1,'DVec3::operator+(Vec3Arg inV2) const'],['../class_d_vec3.html#ae931145b41d6b5db001e40bd014bb183',1,'DVec3::operator+(DVec3Arg inV2) const'],['../class_mat44.html#ac0c3181759450b3498b5dc53967f803d',1,'Mat44::operator+()'],['../class_vec8.html#aefa8b1857e93a3e0afc29f5ffc2eed8e',1,'Vec8::operator+()'],['../class_vec3.html#a7405124af9f071f00992b85f5c25af61',1,'Vec3::operator+()'],['../class_vector.html#a31f30c627ca27a20be651946fa685789',1,'Vector::operator+()'],['../class_matrix.html#ab11023ceac2685bb1d103620c348cdd2',1,'Matrix::operator+()'],['../class_vec4.html#a95761b89f39348a82aa084b9647f8d2a',1,'Vec4::operator+()'],['../class_u_vec4.html#aca855486776f06c4948abdf178ba17f2',1,'UVec4::operator+()']]], + ['operator_2b_2b_91',['operator++',['../struct_lock_free_hash_map_1_1_iterator.html#aaaf8062e981a1be7118d1dde98968ba6',1,'LockFreeHashMap::Iterator']]], + ['operator_2b_3d_92',['operator+=',['../class_vector.html#adc8030b84f60c2ddbc1ddf981f5f8d6f',1,'Vector::operator+=()'],['../class_u_vec4.html#a602f5243d8a4c73dc6796a03cecdc5f3',1,'UVec4::operator+=()'],['../class_vec4.html#a443fbe63a61166e98e61af3aac0849ee',1,'Vec4::operator+=()'],['../class_vec3.html#ae0dfbede4fa779658ba48bd13449c3f1',1,'Vec3::operator+=()'],['../class_mat44.html#a60273e38c2e5071066f14905698ef994',1,'Mat44::operator+=()'],['../class_d_vec3.html#ac071add2c7d9a00bd3f4342198e5aca2',1,'DVec3::operator+=(Vec3Arg inV2)'],['../class_d_vec3.html#aebfafc1078630f38852907c0be0e4a76',1,'DVec3::operator+=(DVec3Arg inV2)'],['../class_quat.html#a581ca135acfa86ebf00bb6e1636aef29',1,'Quat::operator+=()']]], + ['operator_2d_93',['operator-',['../class_vec8.html#a4eabbb36d0b5c18dd521daa41d202b3c',1,'Vec8::operator-()'],['../class_mat44.html#a22b266ee0c8cb215e96edaebc50d2cbf',1,'Mat44::operator-() const'],['../class_mat44.html#acb281c6516de9bfd045aa029f95ba0d0',1,'Mat44::operator-(Mat44Arg inM) const'],['../class_vector.html#accad08b149fe8c9527974434f1620032',1,'Vector::operator-()'],['../class_d_vec3.html#a89b578e95bc0e6a1f97d28afc66256fd',1,'DVec3::operator-()'],['../class_matrix.html#a863621d29437a8ef7c38b3e214ca1f9c',1,'Matrix::operator-()'],['../class_vector.html#a3548d197b9099a6ce78bb9805f6b08ed',1,'Vector::operator-()'],['../class_d_vec3.html#a7e0f61fe354f1886485f0814a8881cd0',1,'DVec3::operator-()'],['../class_quat.html#a7c2cc189b41905f2d02154a2d4863e19',1,'Quat::operator-()'],['../class_vec4.html#ae103f6fa940366aed241a62a820d209e',1,'Vec4::operator-()'],['../class_vec3.html#ab05753413af282b8cbd879c334c8e5aa',1,'Vec3::operator-()'],['../class_quat.html#abdb3a55008ba319143df69f97b94d7e5',1,'Quat::operator-()'],['../class_vec3.html#a4f5d105c3b92a557557906ebd6003647',1,'Vec3::operator-()'],['../class_vec4.html#a1638cef5793ee08b5a62bcb8dd06c17c',1,'Vec4::operator-()'],['../class_d_vec3.html#a4a2fd5bf39a1cad1a63913ee8f54dc9c',1,'DVec3::operator-()']]], + ['operator_2d_3d_94',['operator-=',['../class_vec3.html#a3c73495e25d5c416f1108ad89fb614d6',1,'Vec3::operator-=()'],['../class_d_vec3.html#adefdf792db358b7bc0f9259c3b685574',1,'DVec3::operator-=()'],['../class_quat.html#a8297012460ea2f4851ed1f0f80eeddb9',1,'Quat::operator-=()'],['../class_vec4.html#acf0547ac2bda01b7dd5af8f163be7244',1,'Vec4::operator-=()'],['../class_vector.html#a75eedde4d36c47ec408dc454dcf236a7',1,'Vector::operator-=()'],['../class_d_vec3.html#a9913eae45efd88f12df0d709d719e283',1,'DVec3::operator-=()']]], + ['operator_2d_3e_95',['operator->',['../class_ref.html#a67057f06ec2a5e7ee2be030c03f028a9',1,'Ref::operator->()'],['../class_ref_const.html#a9d1007543402ab4cf1bde9945763d202',1,'RefConst::operator->()']]], + ['operator_2f_96',['operator/',['../class_vec3.html#a8dd428d3cc8fff37c91a4c01de2f5078',1,'Vec3::operator/()'],['../class_vec4.html#a373487accbd0489d99738e3455966739',1,'Vec4::operator/(float inV2) const'],['../class_vec4.html#a6572e8beb4a23be2a80d78eafd33c981',1,'Vec4::operator/(Vec4Arg inV2) const'],['../class_vec8.html#a7ba524244b34059777fa93a63d551fda',1,'Vec8::operator/()'],['../class_vector.html#a220efce0a2765fca904fef087b9d9e81',1,'Vector::operator/()'],['../class_d_vec3.html#a98c87bc69aa4aaf5efff2f7371026213',1,'DVec3::operator/(double inV2) const'],['../class_d_vec3.html#a80844acdcc20d872097060f18a49dfae',1,'DVec3::operator/(DVec3Arg inV2) const'],['../class_quat.html#a022e859768c59cdbdef45cdacada80d2',1,'Quat::operator/()'],['../class_vec3.html#a4c3d1ff36432563aef787f8ce7172bff',1,'Vec3::operator/()']]], + ['operator_2f_3d_97',['operator/=',['../class_d_vec3.html#ac4311882ae51a22074b22caa012fb600',1,'DVec3::operator/=()'],['../class_vec3.html#a50f5b360029a35374a1b811107e22a81',1,'Vec3::operator/=()'],['../class_vec4.html#a9a1e7de84652c605adf934da37d5e00f',1,'Vec4::operator/=()'],['../class_vector.html#aeb9aa93e33f09f1dedd41c4768f8f584',1,'Vector::operator/=()'],['../class_quat.html#afc3765d179c478cf2c08d76bd9391bfa',1,'Quat::operator/=()']]], + ['operator_3c_98',['operator<',['../class_body_i_d.html#a198e4c4fe4c671e614e4fa664a004b9d',1,'BodyID::operator<()'],['../class_broad_phase_layer.html#a5408ee98531f1a48e1931c71ea2955e9',1,'BroadPhaseLayer::operator<()'],['../struct_body_pair.html#a20493f29c36b3f20e8db0e86849e1547',1,'BodyPair::operator<()'],['../class_sub_shape_i_d_pair.html#ae6188138a93c9a7121c01d043e537631',1,'SubShapeIDPair::operator<()']]], + ['operator_3c_3c_99',['operator<<',['../class_quat.html#add2e8fbe3d49728e6cd82834f0f2ef3c',1,'Quat::operator<<'],['../class_d_vec3.html#a68288c7a72386e912ef1372110da2b27',1,'DVec3::operator<<'],['../class_u_vec4.html#aef78a8e4bbbc79b876775c0f3618a32e',1,'UVec4::operator<<'],['../class_float2.html#af71f1835f0b82c7faac9d7c3d27558e8',1,'Float2::operator<<'],['../class_mat44.html#abc0855ee1ce37289515c5b55dfeac1a6',1,'Mat44::operator<<'],['../class_matrix.html#a1d555eff0c64dbcd766b74b86a160269',1,'Matrix::operator<<'],['../class_vec3.html#a846e7ac0cd20c95921db85cddb24a0f8',1,'Vec3::operator<<'],['../class_d_mat44.html#ac2c17e5dbdf97a76d8807d6662ac0ec2',1,'DMat44::operator<<'],['../class_vec4.html#a4aa88b04387365a68c74880173fabc60',1,'Vec4::operator<<'],['../class_vector.html#adb80018fc58d6f0da4b2a3bb92fe3c03',1,'Vector::operator<<']]], + ['operator_3d_100',['operator=',['../class_ref.html#a98da0b0d44b287129cf18f34f4f0eaea',1,'Ref::operator=(T *inRHS)'],['../class_ref.html#a29d3889d6c706c3ebdc43c81e7aa06dd',1,'Ref::operator=(const Ref< T > &inRHS)'],['../class_ref.html#a998bf794d80e6235b98d1fd7f795cfaf',1,'Ref::operator=(Ref< T > &&inRHS) noexcept'],['../class_ref_const.html#a48180be53b5fa9cd49d2ce05c7fbe006',1,'RefConst::operator=(const T *inRHS)'],['../class_ref_const.html#a18cb3711847569eee946938afa1e7e36',1,'RefConst::operator=(const RefConst< T > &inRHS)'],['../class_ref_const.html#ac67ad88f734b452b19d653e032168fc5',1,'RefConst::operator=(RefConst< T > &&inRHS) noexcept'],['../class_ref_const.html#a89fe348876fdbfcb951c4363f49b7dff',1,'RefConst::operator=(const Ref< T > &inRHS)'],['../class_ref_const.html#a3b97e739b76a3c026046a81343188d62',1,'RefConst::operator=(Ref< T > &&inRHS) noexcept'],['../class_result.html#acc819aa9c4d980d9a06b48cce8bc2d9a',1,'Result::operator=(const Result< Type > &inRHS)'],['../class_result.html#acc2f80e7cd0157e8428e1039bea3be9c',1,'Result::operator=(Result< Type > &&inRHS) noexcept'],['../class_static_array.html#a9c1a2dbce480923942dbce2f3492eb3c',1,'StaticArray::operator=(const StaticArray< T, N > &inRHS)'],['../class_static_array.html#a07d7915d51d4ad8a3191756fdb6bfc4d',1,'StaticArray::operator=(const StaticArray< T, M > &inRHS)'],['../class_d_mat44.html#a4c37a399a449603c4e611b81d58e004d',1,'DMat44::operator=()'],['../class_double3.html#a5995277938a70289c78cbb95afef9bc0',1,'Double3::operator=()'],['../class_d_vec3.html#a90e7c899c1d5f2dddc3f332ba62c8de1',1,'DVec3::operator=()'],['../class_float2.html#ae430c9638f1d2c59dff1a3ef1367709c',1,'Float2::operator=()'],['../class_float3.html#aaafccfdb546279ec28fcabc6c3dda3e8',1,'Float3::operator=()'],['../class_mat44.html#a84bfaec450f946db0a29c1a6036f4043',1,'Mat44::operator=()'],['../class_matrix.html#abf9e34f58c34dbb9790a82ab0e892f9a',1,'Matrix::operator=()'],['../class_broad_phase_layer.html#ab0344f5719acb04f80e27ca65e48e81e',1,'BroadPhaseLayer::operator=()'],['../class_quat.html#a4a0da4e3fde81586973da99956f7d51c',1,'Quat::operator=()'],['../class_u_vec4.html#a9c25aa219fee97d2f183894eed6fd66d',1,'UVec4::operator=()'],['../class_vec3.html#ad08ae539c06ae81a334c530bcb024b35',1,'Vec3::operator=()'],['../class_vec4.html#a25d3f9debf76d58efd3686eee43833ea',1,'Vec4::operator=()'],['../class_vector.html#a89f9252fff5149df7ee3bbee4cc7dfce',1,'Vector::operator=()'],['../class_character_base_settings.html#af7d10fafd91664c8d175bf04785940f2',1,'CharacterBaseSettings::operator=()'],['../class_motor_settings.html#a33d51a2bb5a231a689a1620577aed53a',1,'MotorSettings::operator=()'],['../class_spring_settings.html#a035ab930afc30365053d1814f838f335',1,'SpringSettings::operator=()'],['../class_sub_shape_i_d_pair.html#ac0d41cb46190b64395b1e199b78215b6',1,'SubShapeIDPair::operator=()'],['../class_array.html#a3888af658dde61b5449bccdff1b42f2f',1,'Array::operator=(const Array< T, Allocator > &inRHS)'],['../class_array.html#ab8763ef20b9d72b7efc5181ea4378e4d',1,'Array::operator=(Array< T, Allocator > &&inRHS) noexcept'],['../class_array.html#a44429f86d45dfbec15bc1e37e2f130fd',1,'Array::operator=(std::initializer_list< T > inRHS)'],['../class_color.html#af17368dfb9bb92e736c5cca7fe5911e7',1,'Color::operator=()'],['../class_job_system_1_1_job_handle.html#adfe0bc1784be03e007aedfc86a8a0b99',1,'JobSystem::JobHandle::operator=(const JobHandle &inHandle)=default'],['../class_job_system_1_1_job_handle.html#a434a0bf97c5ade28fcf116de7bd1c0e1',1,'JobSystem::JobHandle::operator=(JobHandle &&inHandle) noexcept=default'],['../class_non_copyable.html#aaf9b12dcaae80c9d304df7a941d4e21f',1,'NonCopyable::operator=()'],['../class_ref_target.html#a1fc15bfe979bc43a7fa71c7c34f87ed0',1,'RefTarget::operator=()']]], + ['operator_3d_3d_101',['operator==',['../class_s_t_l_aligned_allocator.html#a187d266d7db5bbd12a876eb83641602e',1,'STLAlignedAllocator::operator==()'],['../class_color.html#a03d0301862c3ad6820ced1619c30ab2b',1,'Color::operator==()'],['../class_ref_const.html#a1237c1b7b36e3c2bbccaeccf34cb0570',1,'RefConst::operator==()'],['../struct_lock_free_hash_map_1_1_iterator.html#a0511ff0a1aee60f26352f0caddee732a',1,'LockFreeHashMap::Iterator::operator==()'],['../class_ref.html#ae00dda1e64272c9ba178d6ace26f68a9',1,'Ref::operator==(const T *inRHS) const'],['../class_ref.html#a888c6dc5198e4d5012fcdab607ebe46e',1,'Ref::operator==(const Ref< T > &inRHS) const'],['../class_ref_const.html#a1609b10cb02f2138130396f4862df7f5',1,'RefConst::operator==()'],['../class_r_t_t_i.html#ae19fcaadd5a43ddb52e689920920b0b2',1,'RTTI::operator==()'],['../class_array.html#a7bc128d07bcc35a13aed911cb4496017',1,'Array::operator==()'],['../class_ref_const.html#acc0653f6d7ae2556d1a97230e87ccf2a',1,'RefConst::operator==()'],['../class_static_array.html#a81a62786704d57f04e8a63c188259e34',1,'StaticArray::operator==()'],['../class_s_t_l_allocator.html#a851d3b50a4ebb59404de83b8da468df5',1,'STLAllocator::operator==()'],['../class_s_t_l_temp_allocator.html#afe0ff9b69805be725b54c35f238f8c6f',1,'STLTempAllocator::operator==()'],['../class_a_a_box.html#a41d9c76bb5347116f892a98e00b39a08',1,'AABox::operator==()'],['../class_indexed_triangle_no_material.html#ae51f167ef9a45334dad213a2f46cf79e',1,'IndexedTriangleNoMaterial::operator==()'],['../class_indexed_triangle.html#a8c2db62a600bd2f296c8473fc0ee44dc',1,'IndexedTriangle::operator==()'],['../class_d_mat44.html#a016d3a8c02d9a88d1fca7e6d73fea3fc',1,'DMat44::operator==()'],['../class_double3.html#a00c600f37480ab7ce55073cc4bfb05d7',1,'Double3::operator==()'],['../class_d_vec3.html#af9f3df26312b07df5e6ea770e250e5bf',1,'DVec3::operator==()'],['../class_float2.html#a7ac3a21d32590f4e2fb7d5d12800175d',1,'Float2::operator==()'],['../class_float3.html#a6fdec8037d0ca21ee14cca74ddd00a71',1,'Float3::operator==()'],['../class_mat44.html#a3be30e0ae2ded68ebb5ceea9afbfe5c1',1,'Mat44::operator==()'],['../class_matrix.html#ad5017409ae677eedd5e05ecf4cc41557',1,'Matrix::operator==()'],['../class_quat.html#a55ec695a492daa028921cca4740db11b',1,'Quat::operator==()'],['../class_u_vec4.html#a998274caec249b2255973d43fcdd6111',1,'UVec4::operator==()'],['../class_u_vec8.html#a42797ff3cc1bf751ce42d71302851d13',1,'UVec8::operator==()'],['../class_vec3.html#a154b889fe51e3cc420716ad087b524ec',1,'Vec3::operator==()'],['../class_vec4.html#aa5f9555c7ddf5cdf6648ec64e9fd0c8f',1,'Vec4::operator==()'],['../class_vector.html#afb6e90055ff4de9274867a43c8a569c9',1,'Vector::operator==()'],['../class_body_i_d.html#a717e575a515906ef45ab9f152175e6f4',1,'BodyID::operator==()'],['../struct_body_pair.html#a9170bf752664d8527564d386e428930a',1,'BodyPair::operator==()'],['../class_broad_phase_layer.html#adfb985183ea3a872650b100859883a6e',1,'BroadPhaseLayer::operator==()'],['../class_sub_shape_i_d.html#a08bb5c298b21da17f8ff31502f5f90d7',1,'SubShapeID::operator==()'],['../class_sub_shape_i_d_pair.html#a553026ae2b87e33df1b3c5a82b48287b',1,'SubShapeIDPair::operator==()']]], + ['operator_3e_102',['operator>',['../class_body_i_d.html#a97ad33ad13e398831574a7a5bb97e741',1,'BodyID']]], + ['operator_5b_5d_103',['operator[]',['../class_array.html#a3db15f447d9e9d229ba10fd90189d305',1,'Array::operator[](size_type inIdx)'],['../class_array.html#ad555cccefb5cb1f9b0e761f5939bfbcd',1,'Array::operator[](size_type inIdx) const'],['../class_static_array.html#a94028ccdb4d9f55f0ada779b03be8e55',1,'StaticArray::operator[](size_type inIdx)'],['../class_static_array.html#aba42dce13b07203fafa2135d8ef06581',1,'StaticArray::operator[](size_type inIdx) const'],['../class_double3.html#a6e5ecbdc4bec96b0a033ad090f0a38ba',1,'Double3::operator[]()'],['../class_d_vec3.html#a6cdaec58545b032bd9c73e5da12cc50a',1,'DVec3::operator[]()'],['../class_float3.html#a89ad9c4781e5a529fd150e72b1e234ee',1,'Float3::operator[]()'],['../class_float4.html#a20f4a71de6acfa030da5f1e3ec5e2577',1,'Float4::operator[]()'],['../class_u_vec4.html#a7a36608ab17fe736f68c0ff7c3f6ea04',1,'UVec4::operator[](uint inCoordinate) const'],['../class_u_vec4.html#a78e0cb1202ed92a559990923167ef077',1,'UVec4::operator[](uint inCoordinate)'],['../class_u_vec8.html#af4b5d732eccd1cce573ea07e1d005dea',1,'UVec8::operator[](uint inCoordinate) const'],['../class_u_vec8.html#ac83adccdf335b7fab19aa812bfc4f140',1,'UVec8::operator[](uint inCoordinate)'],['../class_vec3.html#abaa362706e12d5e3fa8d950ba80d173e',1,'Vec3::operator[]()'],['../class_vec4.html#a0cf39ae9e73fcf06096e4de57165c528',1,'Vec4::operator[](uint inCoordinate) const'],['../class_vec4.html#afdf1e42953e1b879b265b9ac02f168c2',1,'Vec4::operator[](uint inCoordinate)'],['../class_vec8.html#ac1997a67bd8996f29bf165b26f45ab06',1,'Vec8::operator[](uint inCoordinate) const'],['../class_vec8.html#ad43ee4cb80f186dcdd2f0a71fc64fe13',1,'Vec8::operator[](uint inCoordinate)'],['../class_vector.html#a4eaa88a67fe83953b5ac8d472f4e9ff5',1,'Vector::operator[](uint inCoordinate) const'],['../class_vector.html#a32ee1f49f9b9b9cc21f202e93aa92344',1,'Vector::operator[](uint inCoordinate)']]], + ['operator_5e_104',['operator^',['../_allowed_d_o_fs_8h.html#a371213476af99435f3ab12f02f53ec48',1,'AllowedDOFs.h']]], + ['operator_5e_3d_105',['operator^=',['../_allowed_d_o_fs_8h.html#abdf6d90389c231402b383d003c609379',1,'AllowedDOFs.h']]], + ['operator_7c_106',['operator|',['../_allowed_d_o_fs_8h.html#aaa1b26e8bc12ba3755cc10db87c0bd0b',1,'operator|(EAllowedDOFs inLHS, EAllowedDOFs inRHS): AllowedDOFs.h'],['../_e_physics_update_error_8h.html#a8f7b83ff42ced4840cfbb0d3d0f02f0d',1,'operator|(EPhysicsUpdateError inA, EPhysicsUpdateError inB): EPhysicsUpdateError.h']]], + ['operator_7c_3d_107',['operator|=',['../_allowed_d_o_fs_8h.html#af7f3f5b21c11112fe7c7c467403b44a6',1,'operator|=(EAllowedDOFs &ioLHS, EAllowedDOFs inRHS): AllowedDOFs.h'],['../_e_physics_update_error_8h.html#abaecadefb2cb3ff68d5c610b8cb0968a',1,'operator|=(EPhysicsUpdateError &ioA, EPhysicsUpdateError inB): EPhysicsUpdateError.h']]], + ['operator_7e_108',['operator~',['../_allowed_d_o_fs_8h.html#a7560b098399ec920c9dc6fed56f338b1',1,'AllowedDOFs.h']]], + ['optimizationresults_109',['OptimizationResults',['../class_soft_body_shared_settings_1_1_optimization_results.html',1,'SoftBodySharedSettings']]], + ['optimize_110',['optimize',['../class_broad_phase.html#ab209cd12e5b3c915ed9d9c65e5d34089',1,'BroadPhase::Optimize()'],['../class_broad_phase_quad_tree.html#a0314ec8db348c144f5e4c722e5d26bca',1,'BroadPhaseQuadTree::Optimize()'],['../class_soft_body_shared_settings.html#ac449c2bf234bdf947aa9454adc728964',1,'SoftBodySharedSettings::Optimize(OptimizationResults &outResults)'],['../class_soft_body_shared_settings.html#a4dbaa7142dca56c869a395bc88022cd7',1,'SoftBodySharedSettings::Optimize()']]], + ['optimizebroadphase_111',['OptimizeBroadPhase',['../class_physics_system.html#ab3cd9f2562f0f051c032b3bc298d9604',1,'PhysicsSystem']]], + ['options_112',['Commandline options',['../md__docs_2_performance_test.html#autotoc_md3',1,'']]], + ['orientedbox_113',['orientedbox',['../class_oriented_box.html#ac9d787ceb1d5ce11d768e463901dc8f8',1,'OrientedBox::OrientedBox()=default'],['../class_oriented_box.html#a79f2a5a1c1a93d269c19062895c5708e',1,'OrientedBox::OrientedBox(Mat44Arg inOrientation, Vec3Arg inHalfExtents)'],['../class_oriented_box.html#aa452a08a66dacf55bdfb5d8d0cff7c8c',1,'OrientedBox::OrientedBox(Mat44Arg inOrientation, const AABox &inBox)'],['../class_oriented_box.html',1,'OrientedBox']]], + ['orientedbox_2ecpp_114',['OrientedBox.cpp',['../_oriented_box_8cpp.html',1,'']]], + ['orientedbox_2eh_115',['OrientedBox.h',['../_oriented_box_8h.html',1,'']]], + ['originoutsideofplane_116',['OriginOutsideOfPlane',['../namespace_closest_point.html#ad4bc500e8c3ea1bc2b2bc1a289408f1b',1,'ClosestPoint']]], + ['originoutsideoftetrahedronplanes_117',['OriginOutsideOfTetrahedronPlanes',['../namespace_closest_point.html#a7221bb45d1aec01527f66683bf2611e0',1,'ClosestPoint']]], + ['osistype_118',['osistype',['../_object_stream_8h.html#a0015bbd813668757e43b8752bf08d703',1,'OSIsType(Array< T, A > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName): ObjectStream.h'],['../_object_stream_8h.html#a2d4f6a65eacb30124ed4d3221fe6f360',1,'OSIsType(StaticArray< T, N > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName): ObjectStream.h'],['../_object_stream_8h.html#a652b1b1dc359b5107edbcc394b3b22fd',1,'OSIsType(T(*)[N], int inArrayDepth, EOSDataType inDataType, const char *inClassName): ObjectStream.h'],['../_object_stream_8h.html#a0084d42d85c675f42282b38b31be8173',1,'OSIsType(Ref< T > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName): ObjectStream.h'],['../_object_stream_8h.html#a046ca0bf5695cd0bf7e3f4421f27f080',1,'OSIsType(RefConst< T > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName): ObjectStream.h']]], + ['osreaddata_119',['osreaddata',['../_object_stream_8h.html#a6ee64ba79371cef9ffbbe1f8b82e8867',1,'OSReadData(IObjectStreamIn &ioStream, Array< T, A > &inArray): ObjectStream.h'],['../_object_stream_8h.html#a561abe3e70484909b480d7f8e1cef9d7',1,'OSReadData(IObjectStreamIn &ioStream, StaticArray< T, N > &inArray): ObjectStream.h'],['../_object_stream_8h.html#a6f6f2c3ed5a0f399d93f1fde1a99ded5',1,'OSReadData(IObjectStreamIn &ioStream, T(&inArray)[N]): ObjectStream.h'],['../_object_stream_8h.html#a60dfa58686d942e47bc72a77984bb8e2',1,'OSReadData(IObjectStreamIn &ioStream, Ref< T > &inRef): ObjectStream.h'],['../_object_stream_8h.html#a8731cf8e985c6fe5cb4e1dabf4206db2',1,'OSReadData(IObjectStreamIn &ioStream, RefConst< T > &inRef): ObjectStream.h']]], + ['oswritedata_120',['oswritedata',['../_object_stream_8h.html#a9849145a2f3c49430e72a3cb8cb6dc2b',1,'OSWriteData(IObjectStreamOut &ioStream, const Array< T, A > &inArray): ObjectStream.h'],['../_object_stream_8h.html#a622732ce94e09f59da810bb6e1ca3fb9',1,'OSWriteData(IObjectStreamOut &ioStream, const StaticArray< T, N > &inArray): ObjectStream.h'],['../_object_stream_8h.html#a16b39e4dc5964aadc07f57ed7cd38393',1,'OSWriteData(IObjectStreamOut &ioStream, const T(&inArray)[N]): ObjectStream.h'],['../_object_stream_8h.html#afeabe7de6bcd1f6b092dfc230e236a1f',1,'OSWriteData(IObjectStreamOut &ioStream, const Ref< T > &inRef): ObjectStream.h'],['../_object_stream_8h.html#a44012e4b882f982ef372d342479f481c',1,'OSWriteData(IObjectStreamOut &ioStream, const RefConst< T > &inRef): ObjectStream.h']]], + ['oswritedatatype_121',['oswritedatatype',['../_object_stream_8h.html#afb9e2d82b290a1baca2546e66a38ac4f',1,'OSWriteDataType(IObjectStreamOut &ioStream, Array< T, A > *): ObjectStream.h'],['../_object_stream_8h.html#aad34e2f2bc03433e8db638ac1d14a0f0',1,'OSWriteDataType(IObjectStreamOut &ioStream, StaticArray< T, N > *): ObjectStream.h'],['../_object_stream_8h.html#a4447bfccc098e716657dfb4c183692e6',1,'OSWriteDataType(IObjectStreamOut &ioStream, T(*)[N]): ObjectStream.h'],['../_object_stream_8h.html#a8f946429439a23c334be4a1a80471ce1',1,'OSWriteDataType(IObjectStreamOut &ioStream, Ref< T > *): ObjectStream.h'],['../_object_stream_8h.html#a38a1d19a6b325964f4c8e808c38630ab',1,'OSWriteDataType(IObjectStreamOut &ioStream, RefConst< T > *): ObjectStream.h']]], + ['other_122',['other',['../struct_s_t_l_aligned_allocator_1_1rebind.html#af0093b423c73df604270680226325d1e',1,'STLAlignedAllocator::rebind::other'],['../struct_s_t_l_allocator_1_1rebind.html#a764b696ca1430862cf1226209b38bd34',1,'STLAllocator::rebind::other'],['../struct_s_t_l_temp_allocator_1_1rebind.html#abfdedf8e13231a72e1f193b5f70853dd',1,'STLTempAllocator::rebind::other']]], + ['other_20build_20tools_123',['Other Build Tools',['../md__build_2_r_e_a_d_m_e.html#autotoc_md75',1,'']]], + ['output_124',['Output',['../md__docs_2_performance_test.html#autotoc_md6',1,'']]], + ['overlaps_125',['overlaps',['../class_a_a_box.html#ac0d76efbc7bd7904881eeb5911df8457',1,'AABox::Overlaps(const AABox &inOther) const'],['../class_a_a_box.html#abd758e269f2b5b508a7dd66a427e4dba',1,'AABox::Overlaps(const Plane &inPlane) const'],['../class_oriented_box.html#aac962fad97b4c7dd85d4a430a7e2f2ca',1,'OrientedBox::Overlaps(const AABox &inBox, float inEpsilon=1.0e-6f) const'],['../class_oriented_box.html#a2829c629a9c5565d2aabae1f53a51c97',1,'OrientedBox::Overlaps(const OrientedBox &inBox, float inEpsilon=1.0e-6f) const'],['../class_sphere.html#a6aa30078ee8ea3742c9df2aa2cfbcb2c',1,'Sphere::Overlaps(const Sphere &inB) const'],['../class_sphere.html#a0b2393b6b42f0efdf33ae666b3fac39f',1,'Sphere::Overlaps(const AABox &inOther) const']]], + ['overridegravity_126',['OverrideGravity',['../class_vehicle_constraint.html#ad2bda8140c63b7f54330e34c5050c23a',1,'VehicleConstraint']]], + ['ownsmemory_127',['OwnsMemory',['../class_temp_allocator_impl.html#a5d90cdbf402b46a9429593da08008bdc',1,'TempAllocatorImpl']]] +]; diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 000000000..86dee0842 --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,139 @@ +var searchData= +[ + ['pack_0',['Pack',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#ab92e9d36f948042d9682f00291422e76',1,'TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext']]], + ['parallelupdate_1',['ParallelUpdate',['../class_soft_body_motion_properties.html#a0a3aecce82ba325ca55922f4068f3c12',1,'SoftBodyMotionProperties']]], + ['parse_2',['Parse',['../class_debug_renderer_playback.html#a3de254c045bb6f7f102480666f0a3046',1,'DebugRendererPlayback']]], + ['part_3',['Part',['../class_ragdoll_settings_1_1_part.html',1,'RagdollSettings']]], + ['partvector_4',['PartVector',['../class_ragdoll_settings.html#afe45741614c7194437ffcafdd2552b7d',1,'RagdollSettings']]], + ['path_5',['Path',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2daac70412e939d72a9234cdebb1af5867b',1,'Constraint.h']]], + ['pathconstraint_6',['pathconstraint',['../class_path_constraint.html',1,'PathConstraint'],['../class_path_constraint.html#a6a5b13762673f613fd49d5b0d3873853',1,'PathConstraint::PathConstraint()']]], + ['pathconstraint_2ecpp_7',['PathConstraint.cpp',['../_path_constraint_8cpp.html',1,'']]], + ['pathconstraint_2eh_8',['PathConstraint.h',['../_path_constraint_8h.html',1,'']]], + ['pathconstraintpath_9',['PathConstraintPath',['../class_path_constraint_path.html',1,'']]], + ['pathconstraintpath_2ecpp_10',['PathConstraintPath.cpp',['../_path_constraint_path_8cpp.html',1,'']]], + ['pathconstraintpath_2eh_11',['PathConstraintPath.h',['../_path_constraint_path_8h.html',1,'']]], + ['pathconstraintpathhermite_12',['PathConstraintPathHermite',['../class_path_constraint_path_hermite.html',1,'']]], + ['pathconstraintpathhermite_2ecpp_13',['PathConstraintPathHermite.cpp',['../_path_constraint_path_hermite_8cpp.html',1,'']]], + ['pathconstraintpathhermite_2eh_14',['PathConstraintPathHermite.h',['../_path_constraint_path_hermite_8h.html',1,'']]], + ['pathconstraintsettings_15',['PathConstraintSettings',['../class_path_constraint_settings.html',1,'']]], + ['pathresult_16',['PathResult',['../class_path_constraint_path.html#ade0a2c8ce722ae7ff573b04690250e21',1,'PathConstraintPath']]], + ['pcreateobjectfunction_17',['pCreateObjectFunction',['../class_r_t_t_i.html#a2be115b9638514344f6f0958ca695348',1,'RTTI']]], + ['pcreaterttifunction_18',['pCreateRTTIFunction',['../class_r_t_t_i.html#aad22110bc8834223a912a906cd710990',1,'RTTI']]], + ['pdestructobjectfunction_19',['pDestructObjectFunction',['../class_r_t_t_i.html#aaf310985dd3df418f3ac0ca410ded276',1,'RTTI']]], + ['peekclosest_20',['PeekClosest',['../class_e_p_a_convex_hull_builder_1_1_triangle_queue.html#a13516948e75d7fd3dca02c1ec7b72504',1,'EPAConvexHullBuilder::TriangleQueue']]], + ['peekclosesttriangleinqueue_21',['PeekClosestTriangleInQueue',['../class_e_p_a_convex_hull_builder.html#a0b52c132a7365cd272f3ca14a8f25145',1,'EPAConvexHullBuilder']]], + ['performance_20test_22',['Performance Test',['../md__docs_2_performance_test.html',1,'']]], + ['performancetest_2emd_23',['PerformanceTest.md',['../_performance_test_8md.html',1,'']]], + ['pgetmemberprimitivetype_24',['pGetMemberPrimitiveType',['../class_serializable_attribute.html#af7f01caef8726c642aaeb8ce7016c97a',1,'SerializableAttribute']]], + ['phase_25',['phase',['../index.html#broad-phase',1,'Broad Phase'],['../index.html#narrow-phase',1,'Narrow Phase'],['../index.html#solve-position-constraints',1,'Solve Position Constraints, Update Bodies Broad Phase']]], + ['phase_20update_20finalize_26',['Broad Phase Update Finalize',['../index.html#broad-phase-update-finalize',1,'']]], + ['phase_20update_20prepare_27',['Broad Phase Update Prepare',['../index.html#broad-phase-update-prepare',1,'']]], + ['physics_28',['physics',['../index.html#architecture-jolt-physics',1,'Architecture of Jolt Physics'],['../md__build_2_r_e_a_d_m_e.html',1,'Building and Using Jolt Physics'],['../index.html',1,'Jolt Physics']]], + ['physics_20samples_29',['Jolt Physics Samples',['../md__docs_2_samples.html',1,'']]], + ['physics_20systems_30',['Working With Multiple Physics Systems',['../index.html#working-with-multiple-physics-systems',1,'']]], + ['physicslock_31',['PhysicsLock',['../class_physics_lock.html',1,'']]], + ['physicslock_2ecpp_32',['PhysicsLock.cpp',['../_physics_lock_8cpp.html',1,'']]], + ['physicslock_2eh_33',['PhysicsLock.h',['../_physics_lock_8h.html',1,'']]], + ['physicsmaterial_34',['PhysicsMaterial',['../class_physics_material.html',1,'']]], + ['physicsmaterial_2ecpp_35',['PhysicsMaterial.cpp',['../_physics_material_8cpp.html',1,'']]], + ['physicsmaterial_2eh_36',['PhysicsMaterial.h',['../_physics_material_8h.html',1,'']]], + ['physicsmateriallist_37',['physicsmateriallist',['../_shape_8h.html#ae22d65df49227119a635532dbc63a9a3',1,'PhysicsMaterialList: Shape.h'],['../_physics_material_8h.html#a9523ada17142ddf05aa79e8a98c8abb7',1,'PhysicsMaterialList: PhysicsMaterial.h']]], + ['physicsmaterialrefc_38',['PhysicsMaterialRefC',['../_shape_8h.html#ae4083d6c957623ad6d3735d1d515b05e',1,'Shape.h']]], + ['physicsmaterialresult_39',['PhysicsMaterialResult',['../class_physics_material.html#ac6d51eb48cdffbe4bc52c1ea54a988ef',1,'PhysicsMaterial']]], + ['physicsmaterialsimple_40',['physicsmaterialsimple',['../class_physics_material_simple.html',1,'PhysicsMaterialSimple'],['../class_physics_material_simple.html#afd4cf9d7b19fb00dba26cbfb7a8ed80d',1,'PhysicsMaterialSimple::PhysicsMaterialSimple()=default'],['../class_physics_material_simple.html#a3760b4ee0fd7ab82f3767709de168b73',1,'PhysicsMaterialSimple::PhysicsMaterialSimple(const string_view &inName, ColorArg inColor)']]], + ['physicsmaterialsimple_2ecpp_41',['PhysicsMaterialSimple.cpp',['../_physics_material_simple_8cpp.html',1,'']]], + ['physicsmaterialsimple_2eh_42',['PhysicsMaterialSimple.h',['../_physics_material_simple_8h.html',1,'']]], + ['physicsscene_43',['PhysicsScene',['../class_physics_scene.html',1,'']]], + ['physicsscene_2ecpp_44',['PhysicsScene.cpp',['../_physics_scene_8cpp.html',1,'']]], + ['physicsscene_2eh_45',['PhysicsScene.h',['../_physics_scene_8h.html',1,'']]], + ['physicssceneresult_46',['PhysicsSceneResult',['../class_physics_scene.html#aa54fc9a3796f57c864606a38c9124265',1,'PhysicsScene']]], + ['physicssettings_47',['PhysicsSettings',['../struct_physics_settings.html',1,'']]], + ['physicssettings_2eh_48',['PhysicsSettings.h',['../_physics_settings_8h.html',1,'']]], + ['physicssteplistener_49',['PhysicsStepListener',['../class_physics_step_listener.html',1,'']]], + ['physicssteplistener_2eh_50',['PhysicsStepListener.h',['../_physics_step_listener_8h.html',1,'']]], + ['physicssystem_51',['physicssystem',['../class_physics_system.html#aaefedca1b6619cf11f5c45f7f2176148',1,'PhysicsSystem::PhysicsSystem()'],['../class_physics_system.html',1,'PhysicsSystem']]], + ['physicssystem_2ecpp_52',['PhysicsSystem.cpp',['../_physics_system_8cpp.html',1,'']]], + ['physicssystem_2eh_53',['PhysicsSystem.h',['../_physics_system_8h.html',1,'']]], + ['physicssystemupdate_2esvg_54',['PhysicsSystemUpdate.svg',['../_physics_system_update_8svg.html',1,'']]], + ['physicsupdatecontext_55',['physicsupdatecontext',['../class_physics_update_context.html',1,'PhysicsUpdateContext'],['../class_physics_update_context.html#a8214e323d04690550bc2380d827e4e36',1,'PhysicsUpdateContext::PhysicsUpdateContext()']]], + ['physicsupdatecontext_2ecpp_56',['PhysicsUpdateContext.cpp',['../_physics_update_context_8cpp.html',1,'']]], + ['physicsupdatecontext_2eh_57',['PhysicsUpdateContext.h',['../_physics_update_context_8h.html',1,'']]], + ['pistype_58',['pIsType',['../class_serializable_attribute.html#a35e667b9f50f27293b7dd1abf0753305',1,'SerializableAttribute']]], + ['plane_59',['plane',['../class_plane.html',1,'Plane'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba0d3adee051531c15b3509b4d4d75ce7b',1,'Plane: Shape.h'],['../class_plane.html#a06bce37f1586abd31ea5c2863f5ff2a3',1,'Plane::Plane(Vec3Arg inNormal, float inConstant)'],['../class_plane.html#ac7a2eaef6e334fba41a0ac6ab7a97a6e',1,'Plane::Plane()=default'],['../class_plane.html#a71ec3665a225eda8f201e30fa2ee5544',1,'Plane::Plane(Vec4Arg inNormalAndConstant)'],['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a0d3adee051531c15b3509b4d4d75ce7b',1,'Plane: Shape.h']]], + ['plane_2eh_60',['Plane.h',['../_plane_8h.html',1,'']]], + ['plane2d_61',['Plane2D',['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ab4428ecae408554a5383fb2c4a24ffa6',1,'AllowedDOFs.h']]], + ['planeshape_62',['planeshape',['../class_plane_shape.html#a51e5e0eeb6bfa3df2b63bd44589b3ad5',1,'PlaneShape::PlaneShape(const Plane &inPlane, const PhysicsMaterial *inMaterial=nullptr, float inHalfExtent=PlaneShapeSettings::cDefaultHalfExtent)'],['../class_plane_shape.html#a99f8e798035cc6a1c119da0b4dee7593',1,'PlaneShape::PlaneShape()'],['../class_plane_shape.html',1,'PlaneShape'],['../class_plane_shape.html#ace32775da4269f016475372eef4e7e21',1,'PlaneShape::PlaneShape()']]], + ['planeshape_2ecpp_63',['PlaneShape.cpp',['../_plane_shape_8cpp.html',1,'']]], + ['planeshape_2eh_64',['PlaneShape.h',['../_plane_shape_8h.html',1,'']]], + ['planeshapesettings_65',['planeshapesettings',['../class_plane_shape_settings.html',1,'PlaneShapeSettings'],['../class_plane_shape_settings.html#a666082ced89b84d2f8dcf2a3df7de6de',1,'PlaneShapeSettings::PlaneShapeSettings()=default'],['../class_plane_shape_settings.html#a33dae2d759e796b2d454711b37da6730',1,'PlaneShapeSettings::PlaneShapeSettings(const Plane &inPlane, const PhysicsMaterial *inMaterial=nullptr, float inHalfExtent=cDefaultHalfExtent)']]], + ['platforms_66',['platforms',['../md__docs_2_release_notes.html#autotoc_md64',1,'New supported platforms'],['../md__docs_2_release_notes.html#autotoc_md57',1,'New supported platforms']]], + ['point_67',['point',['../class_linear_curve_1_1_point.html',1,'LinearCurve::Point'],['../struct_path_constraint_path_hermite_1_1_point.html',1,'PathConstraintPathHermite::Point'],['../class_polyhedron_submerged_volume_calculator_1_1_point.html',1,'PolyhedronSubmergedVolumeCalculator::Point'],['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da2a3cd5946cfd317eb99c3d32e35e2d4c',1,'Point: Constraint.h']]], + ['pointconstraint_68',['pointconstraint',['../class_point_constraint.html',1,'PointConstraint'],['../class_point_constraint.html#ad9271852e82f6d2e67648c51a6e7c9ee',1,'PointConstraint::PointConstraint()']]], + ['pointconstraint_2ecpp_69',['PointConstraint.cpp',['../_point_constraint_8cpp.html',1,'']]], + ['pointconstraint_2eh_70',['PointConstraint.h',['../_point_constraint_8h.html',1,'']]], + ['pointconstraintpart_71',['PointConstraintPart',['../class_point_constraint_part.html',1,'']]], + ['pointconstraintpart_2eh_72',['PointConstraintPart.h',['../_point_constraint_part_8h.html',1,'']]], + ['pointconstraintsettings_73',['PointConstraintSettings',['../class_point_constraint_settings.html',1,'']]], + ['pointconvexsupport_74',['PointConvexSupport',['../struct_point_convex_support.html',1,'']]], + ['pointer_75',['pointer',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa61cf8510205077b6f5491d38cd44c0f7',1,'Pointer: SerializableAttribute.h'],['../class_s_t_l_allocator.html#a6695227ea3840456beb77a4d6ad82e2a',1,'STLAllocator::pointer'],['../class_s_t_l_temp_allocator.html#a1768c0cbf15081f1ce4a9108e482c564',1,'STLTempAllocator::pointer'],['../class_s_t_l_aligned_allocator.html#a00f960ad0c626b48190ed45c3a9f4f93',1,'STLAlignedAllocator::pointer'],['../class_array.html#aadaa82074f4a976c897010961811a910',1,'Array::pointer']]], + ['points_76',['points',['../class_linear_curve.html#ac5e86231b54adb339250de6c06a77cbc',1,'LinearCurve::Points'],['../class_e_p_a_convex_hull_builder_1_1_points.html',1,'EPAConvexHullBuilder::Points']]], + ['pointsarray_77',['PointsArray',['../class_convex_hull_shape_1_1_hull_no_convex.html#a8a4d0da03b860376b42f768cd7534844',1,'ConvexHullShape::HullNoConvex']]], + ['pointsbase_78',['PointsBase',['../class_e_p_a_convex_hull_builder.html#a68f076aa07f0793b45b88b34ebbf493f',1,'EPAConvexHullBuilder']]], + ['polygonconvexsupport_79',['polygonconvexsupport',['../struct_polygon_convex_support.html#a7597917acd3f2a6f73aa47045f22b69c',1,'PolygonConvexSupport::PolygonConvexSupport()'],['../struct_polygon_convex_support.html',1,'PolygonConvexSupport< VERTEX_ARRAY >']]], + ['polyhedronsubmergedvolumecalculator_80',['polyhedronsubmergedvolumecalculator',['../class_polyhedron_submerged_volume_calculator.html',1,'PolyhedronSubmergedVolumeCalculator'],['../class_polyhedron_submerged_volume_calculator.html#a4c0ac9f1d2eb133112745844ec770512',1,'PolyhedronSubmergedVolumeCalculator::PolyhedronSubmergedVolumeCalculator()']]], + ['polyhedronsubmergedvolumecalculator_2eh_81',['PolyhedronSubmergedVolumeCalculator.h',['../_polyhedron_submerged_volume_calculator_8h.html',1,'']]], + ['pop_5fback_82',['pop_back',['../class_static_array.html#aed109d7f64345b6e7e956bd80de27387',1,'StaticArray::pop_back()'],['../class_array.html#a2c37797c7b03253cf8917b02ff91ce64',1,'Array::pop_back()']]], + ['popclosest_83',['PopClosest',['../class_e_p_a_convex_hull_builder_1_1_triangle_queue.html#a1d5149d9d7342650de71477538043991',1,'EPAConvexHullBuilder::TriangleQueue']]], + ['popclosesttrianglefromqueue_84',['PopClosestTriangleFromQueue',['../class_e_p_a_convex_hull_builder.html#a7095af90fda9266b9ae7258025623499',1,'EPAConvexHullBuilder']]], + ['popid_85',['PopID',['../class_sub_shape_i_d.html#a8f78ff809c7af2dfbd2e61ba2314ca9d',1,'SubShapeID']]], + ['position_86',['Position',['../_motor_settings_8h.html#a691a2387946263d993fa8e1c9488bc2ba52f5e0bc3859bc5f5e25130b6c7e8881',1,'MotorSettings.h']]], + ['position_20constraints_20update_20bodies_20broad_20phase_87',['Solve Position Constraints, Update Bodies Broad Phase',['../index.html#solve-position-constraints',1,'']]], + ['positions_88',['positions',['../class_convex_hull_builder.html#ae813b9da0b02f643f5075e121aa6880b',1,'ConvexHullBuilder::Positions'],['../class_convex_hull_builder2_d.html#a73280989dea747d4ec494b260e85222c',1,'ConvexHullBuilder2D::Positions']]], + ['post_20integrate_89',['Post Integrate',['../index.html#post-integrate',1,'']]], + ['postcollide_90',['postcollide',['../class_tracked_vehicle_controller.html#a6e29a4c4ab48f2563bd78d839ea38b7b',1,'TrackedVehicleController::PostCollide()'],['../class_vehicle_controller.html#a0a005727385292dd06ad30398e1eef0a',1,'VehicleController::PostCollide()'],['../class_wheeled_vehicle_controller.html#ad3bf9ef08870494a7bf762b67beea1ef',1,'WheeledVehicleController::PostCollide()']]], + ['postscaled_91',['postscaled',['../class_d_mat44.html#a7d108f0330578e1274b9232c28a39326',1,'DMat44::PostScaled()'],['../class_mat44.html#a6503ccd1384b6681d191c327961fbb6d',1,'Mat44::PostScaled()']]], + ['postsimulation_92',['PostSimulation',['../class_character.html#a6fd02888e30d3a718e81680857ca3968',1,'Character']]], + ['posttransformed_93',['PostTransformed',['../struct_shape_cast_t.html#ab07dbf4278d79895fb480781d24db2f3',1,'ShapeCastT']]], + ['posttranslated_94',['posttranslated',['../struct_shape_cast_t.html#a053b353deba2ee41bf6c42d3be33f18e',1,'ShapeCastT::PostTranslated()'],['../class_mat44.html#a16b90363d2e120bd570c4200e29f5ba6',1,'Mat44::PostTranslated()'],['../class_d_mat44.html#a14f62e1b746001ac1dac9af1ba432ad2',1,'DMat44::PostTranslated(DVec3Arg inTranslation) const'],['../class_d_mat44.html#a3288220df03214eb138fb4d312b82870',1,'DMat44::PostTranslated(Vec3Arg inTranslation) const']]], + ['pre_20integrate_95',['Pre Integrate',['../index.html#pre-integrate',1,'']]], + ['preaddata_96',['pReadData',['../class_serializable_attribute.html#ac5151d0f316587c6baaac9a7f731861b',1,'SerializableAttribute']]], + ['precollide_97',['precollide',['../class_vehicle_controller.html#a3561ef0070d906d1f0fbfa11bfa28210',1,'VehicleController::PreCollide()'],['../class_motorcycle_controller.html#a8ef4e6dc7edda1ad1d6219b38c4a8e66',1,'MotorcycleController::PreCollide()'],['../class_wheeled_vehicle_controller.html#a8b2dc5370272f15c968425a422ccaeff',1,'WheeledVehicleController::PreCollide()'],['../class_tracked_vehicle_controller.html#a38308bb8eec8096a3fea79cd00419c64',1,'TrackedVehicleController::PreCollide()']]], + ['predictcontactproperties_98',['predictcontactproperties',['../class_vehicle_collision_tester_ray.html#a7c3bda4f43f4a22eb83d06357ca72abd',1,'VehicleCollisionTesterRay::PredictContactProperties()'],['../class_vehicle_collision_tester_cast_cylinder.html#afa5fbf9c0bbb3de0b9bd5cf6625af54a',1,'VehicleCollisionTesterCastCylinder::PredictContactProperties()'],['../class_vehicle_collision_tester_cast_sphere.html#aa0af62e38e9b59a1ed0a8be597773a0f',1,'VehicleCollisionTesterCastSphere::PredictContactProperties()'],['../class_vehicle_collision_tester.html#a3e8069ca50a846d4984a99314ecc3aa6',1,'VehicleCollisionTester::PredictContactProperties()']]], + ['prepare_99',['prepare',['../index.html#broad-phase-update-prepare',1,'Broad Phase Update Prepare'],['../class_large_island_splitter.html#a6423724ea978d94f3faff78bb5a5965d',1,'LargeIslandSplitter::Prepare()'],['../index.html#soft-body-prepare',1,'Soft Body Prepare']]], + ['prepareconstraintbuffer_100',['PrepareConstraintBuffer',['../class_contact_constraint_manager.html#a56fbdeb8c26a568919d431973830111a',1,'ContactConstraintManager']]], + ['preparecontactconstraints_101',['PrepareContactConstraints',['../class_island_builder.html#aaf615d7e17f6b82156eef5932a4bc9d6',1,'IslandBuilder']]], + ['prepareforsolvepositions_102',['PrepareForSolvePositions',['../class_large_island_splitter.html#acf4099c9cd655a77a1c7331724608d22',1,'LargeIslandSplitter']]], + ['preparenoncontactconstraints_103',['PrepareNonContactConstraints',['../class_island_builder.html#ac70b90cc284ac3999e18b865724392da',1,'IslandBuilder']]], + ['prepareroundtoinf_104',['PrepareRoundToInf',['../class_d_vec3.html#ab9a393f086d70f1a5a42e20a28f6278b',1,'DVec3']]], + ['prepareroundtozero_105',['PrepareRoundToZero',['../class_d_vec3.html#ae4f056668680a0741aeda962d0dc794c',1,'DVec3']]], + ['prescaled_106',['prescaled',['../class_d_mat44.html#a998e1a8c9f387e16517c47f12eed4b3e',1,'DMat44::PreScaled()'],['../class_mat44.html#af9c9948eced621a54424f05c397824dd',1,'Mat44::PreScaled()']]], + ['pretranslated_107',['pretranslated',['../class_d_mat44.html#a03d5f4994002026a1b89692eb044786f',1,'DMat44::PreTranslated()'],['../class_mat44.html#a16f19b423139db52503bb8d6526d947f',1,'Mat44::PreTranslated()'],['../class_d_mat44.html#a3823b9cdfec0b409ea3964f31411b3af',1,'DMat44::PreTranslated()']]], + ['priorityqueue_108',['PriorityQueue',['../_soft_body_shared_settings_8cpp.html#af220fbb8967590e9a266493b37153b07',1,'SoftBodySharedSettings.cpp']]], + ['processtriangle_109',['ProcessTriangle',['../class_collide_soft_body_vertices_vs_triangles.html#a54442c53c1d2fefa091bec3fb6a14b2d',1,'CollideSoftBodyVerticesVsTriangles']]], + ['profilemeasurement_110',['profilemeasurement',['../class_profile_measurement.html',1,'ProfileMeasurement'],['../class_profile_measurement.html#a174b63f72966b5d0ebf090a7f56f50d7',1,'ProfileMeasurement::ProfileMeasurement()']]], + ['profiler_111',['profiler',['../class_profiler.html',1,'Profiler'],['../class_profiler.html#a3cc0eb01aa7df555747074f3ccf1ab34',1,'Profiler::Profiler()']]], + ['profiler_2ecpp_112',['Profiler.cpp',['../_profiler_8cpp.html',1,'']]], + ['profiler_2eh_113',['Profiler.h',['../_profiler_8h.html',1,'']]], + ['profiler_2einl_114',['Profiler.inl',['../_profiler_8inl.html',1,'']]], + ['profilesample_115',['ProfileSample',['../class_profile_sample.html',1,'']]], + ['profilethread_116',['profilethread',['../class_profile_thread.html#a8c68606dc2529e513bae6809fa85d47b',1,'ProfileThread::ProfileThread()'],['../class_profile_thread.html',1,'ProfileThread']]], + ['progress_117',['Soft Body Work In Progress',['../index.html#soft-body-wip',1,'']]], + ['projectontosurface_118',['ProjectOntoSurface',['../class_height_field_shape.html#a177f33234760b2fcf48a9b23e8a17fec',1,'HeightFieldShape']]], + ['projectpointonplane_119',['ProjectPointOnPlane',['../class_plane.html#af35d1f676dc5be67464deaed71c883f0',1,'Plane']]], + ['projects_20using_20jolt_120',['Projects Using Jolt',['../md__docs_2_projects_using_jolt.html',1,'']]], + ['projectsusingjolt_2emd_121',['ProjectsUsingJolt.md',['../_projects_using_jolt_8md.html',1,'']]], + ['propagate_5fon_5fcontainer_5fmove_5fassignment_122',['propagate_on_container_move_assignment',['../class_s_t_l_aligned_allocator.html#a19ac9547e054a16d7cc86a365fcbde35',1,'STLAlignedAllocator::propagate_on_container_move_assignment'],['../class_s_t_l_allocator.html#a0d7b95a4beebe23ffc1dccce06aad884',1,'STLAllocator::propagate_on_container_move_assignment']]], + ['prunecontactpoints_123',['prunecontactpoints',['../_manifold_between_two_faces_8h.html#a75e0a7ac1c7d9a4e410265839934c8e9',1,'PruneContactPoints(Vec3Arg inPenetrationAxis, ContactPoints &ioContactPointsOn1, ContactPoints &ioContactPointsOn2, RVec3Arg inCenterOfMass): ManifoldBetweenTwoFaces.h'],['../_manifold_between_two_faces_8cpp.html#a0f6a5a08a650bb28e4f8692e93b9a884',1,'PruneContactPoints(Vec3Arg inPenetrationAxis, ContactPoints &ioContactPointsOn1, ContactPoints &ioContactPointsOn2 JPH_IF_DEBUG_RENDERER(, RVec3Arg inCenterOfMass)): ManifoldBetweenTwoFaces.cpp']]], + ['psgettrianglescontext_124',['PSGetTrianglesContext',['../struct_plane_shape_1_1_p_s_get_triangles_context.html',1,'PlaneShape']]], + ['pulley_125',['Pulley',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2daba41903d01ed39b1b98768512c8e65f5',1,'Constraint.h']]], + ['pulleyconstraint_126',['pulleyconstraint',['../class_pulley_constraint.html',1,'PulleyConstraint'],['../class_pulley_constraint.html#ac6fed08a3d543db628a269cca927fb63',1,'PulleyConstraint::PulleyConstraint()']]], + ['pulleyconstraint_2ecpp_127',['PulleyConstraint.cpp',['../_pulley_constraint_8cpp.html',1,'']]], + ['pulleyconstraint_2eh_128',['PulleyConstraint.h',['../_pulley_constraint_8h.html',1,'']]], + ['pulleyconstraintsettings_129',['PulleyConstraintSettings',['../class_pulley_constraint_settings.html',1,'']]], + ['push_5fback_130',['push_back',['../class_e_p_a_convex_hull_builder_1_1_triangle_queue.html#a10ca88c6483424a3c1853759cde34cbd',1,'EPAConvexHullBuilder::TriangleQueue::push_back()'],['../class_static_array.html#a1117d7fa5ecfe22248396f1632d842cb',1,'StaticArray::push_back()'],['../class_array.html#a255bfb0bbc74db48e0a1b30b959dfa90',1,'Array::push_back(T &&inValue)'],['../class_array.html#ac5d65863953f43e8a5effc2dce32ecd1',1,'Array::push_back(const T &inValue)']]], + ['pushid_131',['PushID',['../class_sub_shape_i_d_creator.html#a29997885833b2c9625bcbcba4548273d',1,'SubShapeIDCreator']]], + ['puttosleep_132',['PutToSleep',['../class_physics_system_1_1_bodies_to_sleep.html#afe53f6626002783f517ee62f61160ba8',1,'PhysicsSystem::BodiesToSleep']]], + ['pwritedata_133',['pWriteData',['../class_serializable_attribute.html#aff266618effe94c6ea33145d783337a4',1,'SerializableAttribute']]], + ['pwritedatatype_134',['pWriteDataType',['../class_serializable_attribute.html#a0709b27ded07a2d1baab744a317d576e',1,'SerializableAttribute']]], + ['pyramid_135',['Pyramid',['../_swing_twist_constraint_part_8h.html#add9e89df628b33308461ef46e1b796b6a5e5b0d93bab61584149905b5e5dc71a0',1,'SwingTwistConstraintPart.h']]] +]; diff --git a/search/all_13.js b/search/all_13.js new file mode 100644 index 000000000..734ea4694 --- /dev/null +++ b/search/all_13.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['quadtree_0',['QuadTree',['../class_quad_tree.html',1,'']]], + ['quadtree_2ecpp_1',['QuadTree.cpp',['../_quad_tree_8cpp.html',1,'']]], + ['quadtree_2eh_2',['QuadTree.h',['../_quad_tree_8h.html',1,'']]], + ['quat_3',['quat',['../class_quat.html',1,'Quat'],['../class_quat.html#aab09b7638f6936a9ad7a1e4ffce606e8',1,'Quat::Quat()=default'],['../class_quat.html#a0657861b58c5638d657b9232d0872789',1,'Quat::Quat(const Quat &inRHS)=default'],['../class_quat.html#add07307f26b40e8ad4dc1bad89e837b9',1,'Quat::Quat(float inX, float inY, float inZ, float inW)'],['../class_quat.html#aa27e46b0f37c06e419e552ec8473abd1',1,'Quat::Quat(Vec4Arg inV)']]], + ['quat_2eh_4',['Quat.h',['../_quat_8h.html',1,'']]], + ['quat_2einl_5',['Quat.inl',['../_quat_8inl.html',1,'']]], + ['quatarg_6',['QuatArg',['../_math_types_8h.html#a3c723d55f34e02bc506abe3dfb7bd2aa',1,'MathTypes.h']]], + ['queue_7',['Queue',['../_object_stream_out_8h.html#a8f038f537072acfa4f7da0fc8aa2c22b',1,'ObjectStreamOut.h']]], + ['queuejob_8',['queuejob',['../class_job_system_single_threaded.html#ac3eead674dbe8a93398dcbc13b324da5',1,'JobSystemSingleThreaded::QueueJob()'],['../class_job_system_thread_pool.html#ab915a93f53fed71c48afb2fdf0d40910',1,'JobSystemThreadPool::QueueJob()'],['../class_job_system.html#ae6bae9c5725c2009c8e9a2d79f60cb40',1,'JobSystem::QueueJob(Job *inJob)=0']]], + ['queuejobs_9',['queuejobs',['../class_job_system.html#a5820eef46d040e6ae17e51a828201118',1,'JobSystem::QueueJobs()'],['../class_job_system_single_threaded.html#a1581f359dde3922b6b3f973ec78c73df',1,'JobSystemSingleThreaded::QueueJobs()'],['../class_job_system_thread_pool.html#a60fe80b85a7711b87c51983d5fb5eb4a',1,'JobSystemThreadPool::QueueJobs()']]], + ['queuertti_10',['QueueRTTI',['../class_object_stream_out.html#ae90b49dd2e05f23afc92697282dc0bc2',1,'ObjectStreamOut']]], + ['quicksort_11',['quicksort',['../_quick_sort_8h.html#a09973cb7cb8a1e98a51005ecedaf6eff',1,'QuickSort(Iterator inBegin, Iterator inEnd, Compare inCompare): QuickSort.h'],['../_quick_sort_8h.html#ada159782c0a49512044e5eb1cdb97684',1,'QuickSort(Iterator inBegin, Iterator inEnd): QuickSort.h']]], + ['quicksort_2eh_12',['QuickSort.h',['../_quick_sort_8h.html',1,'']]], + ['quicksortmedianofthree_13',['QuickSortMedianOfThree',['../_quick_sort_8h.html#aa6450fb30b4a42e991c89908bd3575b9',1,'QuickSort.h']]], + ['quicksortninther_14',['QuickSortNinther',['../_quick_sort_8h.html#a7f9496a620493fec0bb6e08af489dc27',1,'QuickSort.h']]] +]; diff --git a/search/all_14.js b/search/all_14.js new file mode 100644 index 000000000..00b7b6e76 --- /dev/null +++ b/search/all_14.js @@ -0,0 +1,212 @@ +var searchData= +[ + ['r_0',['r',['../class_color.html#ac25ae2b764ad9bbf8b8c79141f84d4ae',1,'Color']]], + ['rackandpinion_1',['RackAndPinion',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da8ee4f481186dec454e1fac31c622045e',1,'Constraint.h']]], + ['rackandpinionconstraint_2',['rackandpinionconstraint',['../class_rack_and_pinion_constraint.html#ad207aecc0e885cc3ddffe123194ce903',1,'RackAndPinionConstraint::RackAndPinionConstraint()'],['../class_rack_and_pinion_constraint.html',1,'RackAndPinionConstraint']]], + ['rackandpinionconstraint_2ecpp_3',['RackAndPinionConstraint.cpp',['../_rack_and_pinion_constraint_8cpp.html',1,'']]], + ['rackandpinionconstraint_2eh_4',['RackAndPinionConstraint.h',['../_rack_and_pinion_constraint_8h.html',1,'']]], + ['rackandpinionconstraintpart_5',['RackAndPinionConstraintPart',['../class_rack_and_pinion_constraint_part.html',1,'']]], + ['rackandpinionconstraintpart_2eh_6',['RackAndPinionConstraintPart.h',['../_rack_and_pinion_constraint_part_8h.html',1,'']]], + ['rackandpinionconstraintsettings_7',['RackAndPinionConstraintSettings',['../class_rack_and_pinion_constraint_settings.html',1,'']]], + ['radianstodegrees_8',['RadiansToDegrees',['../_math_8h.html#a6ecf6194532e807dd457ef28defa1991',1,'Math.h']]], + ['radius_9',['Convex Radius',['../index.html#convex-radius',1,'']]], + ['ragdoll_10',['ragdoll',['../class_ragdoll.html',1,'Ragdoll'],['../class_ragdoll.html#abf6b6eb34e63af813cc4e394b536208e',1,'Ragdoll::Ragdoll()']]], + ['ragdoll_2ecpp_11',['Ragdoll.cpp',['../_ragdoll_8cpp.html',1,'']]], + ['ragdoll_2eh_12',['Ragdoll.h',['../_ragdoll_8h.html',1,'']]], + ['ragdollresult_13',['RagdollResult',['../class_ragdoll_settings.html#a496ff56b454d0833f27c9894313d1228',1,'RagdollSettings']]], + ['ragdolls_14',['Rig (Ragdolls)',['../md__docs_2_samples.html#autotoc_md8',1,'']]], + ['ragdollsettings_15',['ragdollsettings',['../class_ragdoll_settings.html',1,'RagdollSettings'],['../class_ragdoll.html#af287d5dd184fd0349ba44a279f6cacdf',1,'Ragdoll::RagdollSettings']]], + ['range_16',['range',['../struct_triangle_splitter_1_1_range.html',1,'TriangleSplitter::Range'],['../struct_triangle_splitter_1_1_range.html#afb985794a6e2aec93427d7336f308753',1,'TriangleSplitter::Range::Range()=default'],['../struct_triangle_splitter_1_1_range.html#a82090fe51800c354e7b86c60aade57d8',1,'TriangleSplitter::Range::Range(uint inBegin, uint inEnd)']]], + ['rayaabox_17',['rayaabox',['../_ray_a_a_box_8h.html#ab0c5d92b5381f2045127c1c41fe1e3d9',1,'RayAABox(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax, float &outMin, float &outMax): RayAABox.h'],['../_ray_a_a_box_8h.html#afc8148e5f92f5793a720b3de6fb38094',1,'RayAABox(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax): RayAABox.h']]], + ['rayaabox_2eh_18',['RayAABox.h',['../_ray_a_a_box_8h.html',1,'']]], + ['rayaabox4_19',['RayAABox4',['../_ray_a_a_box_8h.html#a47b273497f8309ea15797696f48f41ad',1,'RayAABox.h']]], + ['rayaabox8_20',['RayAABox8',['../_ray_a_a_box8_8h.html#a206c515c138809481c54c52af48355f1',1,'RayAABox8.h']]], + ['rayaabox8_2eh_21',['RayAABox8.h',['../_ray_a_a_box8_8h.html',1,'']]], + ['rayaaboxhits_22',['rayaaboxhits',['../_ray_a_a_box_8h.html#a796855b2528b68631ec2a0e4e4a7e936',1,'RayAABoxHits(Vec3Arg inOrigin, Vec3Arg inDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax): RayAABox.h'],['../_ray_a_a_box_8h.html#ad5c6851778bfb25190803b57f3b156fe',1,'RayAABoxHits(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax, float inClosest): RayAABox.h']]], + ['raycapsule_23',['RayCapsule',['../_ray_capsule_8h.html#a98c52ef6615d1b0452962366c52afc9d',1,'RayCapsule.h']]], + ['raycapsule_2eh_24',['RayCapsule.h',['../_ray_capsule_8h.html',1,'']]], + ['raycast_25',['RayCast',['../struct_ray_cast.html',1,'']]], + ['raycast_2eh_26',['RayCast.h',['../_ray_cast_8h.html',1,'']]], + ['raycastbodycollector_27',['RayCastBodyCollector',['../_broad_phase_query_8h.html#a398068f8b89e507b29d1a3d89471a5bb',1,'BroadPhaseQuery.h']]], + ['raycastresult_28',['RayCastResult',['../class_ray_cast_result.html',1,'']]], + ['raycastsettings_29',['RayCastSettings',['../class_ray_cast_settings.html',1,'']]], + ['raycastt_30',['raycastt',['../struct_ray_cast_t.html#a1347e0a1a6182923730a694a0f9d4b6e',1,'RayCastT::RayCastT(const RayCastT< Vec, Mat, RayCastType > &)=default'],['../struct_ray_cast_t.html#a721f50a5edf395ccc83bbe68e90de3c4',1,'RayCastT::RayCastT(typename Vec::ArgType inOrigin, Vec3Arg inDirection)'],['../struct_ray_cast_t.html#a3d875537a981684b35d6a1a1cf2e59d2',1,'RayCastT::RayCastT()=default'],['../struct_ray_cast_t.html',1,'RayCastT< Vec, Mat, RayCastType >']]], + ['raycastt_3c_20rvec3_2c_20rmat44_2c_20rraycast_20_3e_31',['RayCastT< RVec3, RMat44, RRayCast >',['../struct_ray_cast_t.html',1,'']]], + ['raycastt_3c_20vec3_2c_20mat44_2c_20raycast_20_3e_32',['RayCastT< Vec3, Mat44, RayCast >',['../struct_ray_cast_t.html',1,'']]], + ['raycylinder_33',['raycylinder',['../_ray_cylinder_8h.html#a273dc91d43f5a44d0a1c6af044a70c0e',1,'RayCylinder(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCylinderHalfHeight, float inCylinderRadius): RayCylinder.h'],['../_ray_cylinder_8h.html#a73e90eb1e3af7294c5b0248ddf7d1317',1,'RayCylinder(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCylinderRadius): RayCylinder.h']]], + ['raycylinder_2eh_34',['RayCylinder.h',['../_ray_cylinder_8h.html',1,'']]], + ['rayinvdirection_35',['rayinvdirection',['../class_ray_inv_direction.html#a33b00fe0da252d7b5aa1801ffb7e5c56',1,'RayInvDirection::RayInvDirection(Vec3Arg inDirection)'],['../class_ray_inv_direction.html#a5609464debfaa939e4c947f083a84556',1,'RayInvDirection::RayInvDirection()=default'],['../class_ray_inv_direction.html',1,'RayInvDirection']]], + ['raysphere_36',['raysphere',['../_ray_sphere_8h.html#ae0d53ac665a580da61a2fe0a08f5197c',1,'RaySphere(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, Vec3Arg inSphereCenter, float inSphereRadius): RaySphere.h'],['../_ray_sphere_8h.html#a7d756cc06fb7721b3e657d9f31916b74',1,'RaySphere(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, Vec3Arg inSphereCenter, float inSphereRadius, float &outMinFraction, float &outMaxFraction): RaySphere.h']]], + ['raysphere_2eh_37',['RaySphere.h',['../_ray_sphere_8h.html',1,'']]], + ['raytriangle_38',['RayTriangle',['../_ray_triangle_8h.html#a11da2f2945abb380af4d7ffe97b66ba6',1,'RayTriangle.h']]], + ['raytriangle_2eh_39',['RayTriangle.h',['../_ray_triangle_8h.html',1,'']]], + ['raytriangle4_40',['RayTriangle4',['../_ray_triangle_8h.html#a78f049474454fce771b6c23635462a8c',1,'RayTriangle.h']]], + ['raytriangle8_41',['RayTriangle8',['../_ray_triangle8_8h.html#af137e1ad4776843baf3c4b22a0acc7e4',1,'RayTriangle8.h']]], + ['raytriangle8_2eh_42',['RayTriangle8.h',['../_ray_triangle8_8h.html',1,'']]], + ['read_43',['read',['../class_stream_in.html#a5ae9304c310edfc5ef1c67a95e36b1f3',1,'StreamIn::Read(T &outT)'],['../class_stream_in.html#ad746a4bb01b4d67767bf1bd200edcb01',1,'StreamIn::Read(Array< T, A > &outT)'],['../class_object_stream_in.html#a25483a52f49c350e7d439f7965180558',1,'ObjectStreamIn::Read()'],['../class_stream_in.html#ad4bea0c5775a7c29522359528d98c654',1,'StreamIn::Read(DMat44 &outVec)'],['../class_stream_in.html#ae2a6c51ed1848c45cd9974cec509020e',1,'StreamIn::Read(DVec3 &outVec)'],['../class_stream_in.html#a73a1ab9b7b8c0807e88b9b969acb24bf',1,'StreamIn::Read(Vec3 &outVec)'],['../class_stream_in.html#a685f7e59d2108a0c61dad52c042d7e45',1,'StreamIn::Read(Array< T, A > &outT, const F &inReadElement)'],['../class_stream_in.html#a6f7322ce8d07d787701f3417aa46f265',1,'StreamIn::Read(std::basic_string< Type, Traits, Allocator > &outString)']]], + ['readbytes_44',['readbytes',['../class_stream_in.html#a85303621b160dd9280ca9b7ff67d8217',1,'StreamIn::ReadBytes()'],['../class_stream_in_wrapper.html#aa4c627cf650ea91887ae92d43d46dada',1,'StreamInWrapper::ReadBytes()'],['../class_state_recorder_impl.html#a0fe47b7eaf3a83449182ee8460fd99a1',1,'StateRecorderImpl::ReadBytes()']]], + ['readclassdata_45',['readclassdata',['../class_i_object_stream_in.html#ac5a63b973dfde6d1834c27ec81fa2b45',1,'IObjectStreamIn::ReadClassData()'],['../class_object_stream_in.html#aa2e0d94864596b86c7c9df2befa84e14',1,'ObjectStreamIn::ReadClassData(const char *inClassName, void *inInstance) override'],['../class_object_stream_in.html#a9918789956492451260e1af1fa1c2db8',1,'ObjectStreamIn::ReadClassData(const ClassDescription &inClassDesc, void *inInstance)']]], + ['readcount_46',['readcount',['../class_object_stream_binary_in.html#af7e2608beec6934dd8a83fe5602a2568',1,'ObjectStreamBinaryIn::ReadCount()'],['../class_object_stream_text_in.html#acaef815639a4298f6a576140de8cb6a8',1,'ObjectStreamTextIn::ReadCount()'],['../class_i_object_stream_in.html#abb5a026cb41f9d12c7960fe9d3a5882c',1,'IObjectStreamIn::ReadCount()']]], + ['readdata_47',['ReadData',['../class_serializable_attribute.html#ad8b999830598842432441df6647be298',1,'SerializableAttribute']]], + ['readdatatype_48',['readdatatype',['../class_i_object_stream_in.html#a289dedcf7a3ae7f67d61dcde32b6282a',1,'IObjectStreamIn::ReadDataType()'],['../class_object_stream_binary_in.html#a530608ffb7d8b12b9bc58afd9169d8f6',1,'ObjectStreamBinaryIn::ReadDataType()'],['../class_object_stream_text_in.html#adc4196beb9e42a5b479b5cf7c9fbd736',1,'ObjectStreamTextIn::ReadDataType()']]], + ['readidentifier_49',['readidentifier',['../class_i_object_stream_in.html#a6f31050b3f59099b313c2560e76d18cb',1,'IObjectStreamIn::ReadIdentifier()'],['../class_object_stream_binary_in.html#aef0b7299dfe253b7824e116edd9d3257',1,'ObjectStreamBinaryIn::ReadIdentifier()'],['../class_object_stream_text_in.html#a92609c6794b05cee7bf47018ade56136',1,'ObjectStreamTextIn::ReadIdentifier()']]], + ['readme_2emd_50',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]], + ['readname_51',['readname',['../class_object_stream_binary_in.html#ad25681831f4d017a97df409286eb36e3',1,'ObjectStreamBinaryIn::ReadName()'],['../class_object_stream_text_in.html#a79116e71f7cc0373156904e3d9a74ac6',1,'ObjectStreamTextIn::ReadName()'],['../class_i_object_stream_in.html#aa8fd4340d4de56a5dd91fcd6ca793339',1,'IObjectStreamIn::ReadName()']]], + ['readobject_52',['ReadObject',['../class_object_stream_in.html#a27fa5f9b8e00504d57a6440c81b3f6ff',1,'ObjectStreamIn']]], + ['readpointerdata_53',['readpointerdata',['../class_object_stream_in.html#a771b7fa72a91f8141c74425c593723de',1,'ObjectStreamIn::ReadPointerData()'],['../class_i_object_stream_in.html#a548f1fbba63c0b47d2b8776075bc36fc',1,'IObjectStreamIn::ReadPointerData(const RTTI *inRTTI, void **inPointer, int inRefCountOffset=-1)=0']]], + ['readprimitivedata_54',['readprimitivedata',['../class_i_object_stream_in.html#ad4e124e1a7df0b66a3b525181cde8660',1,'IObjectStreamIn::ReadPrimitiveData()'],['../class_object_stream_binary_in.html#aa74809f20beb6f9621abc3e2333c614e',1,'ObjectStreamBinaryIn::ReadPrimitiveData(bool &outPrimitive) override'],['../class_object_stream_binary_in.html#adf70a4becf6d0e5e4655666d4b4db196',1,'ObjectStreamBinaryIn::ReadPrimitiveData(double &outPrimitive) override'],['../class_object_stream_binary_in.html#ad454f1413f0c7a081d6de616336fda86',1,'ObjectStreamBinaryIn::ReadPrimitiveData(float &outPrimitive) override'],['../class_object_stream_binary_in.html#a02dd635b3049ccdd83b77de1796b8a61',1,'ObjectStreamBinaryIn::ReadPrimitiveData(uint64 &outPrimitive) override'],['../class_object_stream_binary_in.html#ac62f780ab97ca88d2068fb0b278e4b57',1,'ObjectStreamBinaryIn::ReadPrimitiveData(uint32 &outPrimitive) override'],['../class_object_stream_binary_in.html#a132a50e88261fde7a29acad207cacd0f',1,'ObjectStreamBinaryIn::ReadPrimitiveData(int &outPrimitive) override'],['../class_object_stream_binary_in.html#a1bad705f6f3c3eec20c45c451385ed28',1,'ObjectStreamBinaryIn::ReadPrimitiveData(uint16 &outPrimitive) override'],['../class_object_stream_binary_in.html#a5b6728fc02d126c2a25235c769d56d82',1,'ObjectStreamBinaryIn::ReadPrimitiveData(uint8 &outPrimitive) override'],['../class_i_object_stream_in.html#a92921a2d611a4c8fba065ae7ba36c161',1,'IObjectStreamIn::ReadPrimitiveData(DMat44 &outPrimitive)=0'],['../class_i_object_stream_in.html#aaad93855bb8f16a3a6f58047c166e0ad',1,'IObjectStreamIn::ReadPrimitiveData(Mat44 &outPrimitive)=0'],['../class_i_object_stream_in.html#a06eea8e1426386cba91596bad580c453',1,'IObjectStreamIn::ReadPrimitiveData(Quat &outPrimitive)=0'],['../class_i_object_stream_in.html#af5648e8c3063f2241764871d244256f8',1,'IObjectStreamIn::ReadPrimitiveData(Vec4 &outPrimitive)=0'],['../class_i_object_stream_in.html#abb1d9fe3614810e4ed6bf7169dd5c0c9',1,'IObjectStreamIn::ReadPrimitiveData(DVec3 &outPrimitive)=0'],['../class_i_object_stream_in.html#a55b583284b1fd954240fa72511261c35',1,'IObjectStreamIn::ReadPrimitiveData(Vec3 &outPrimitive)=0'],['../class_object_stream_binary_in.html#a770a1734839488af9f34a325a5ba1874',1,'ObjectStreamBinaryIn::ReadPrimitiveData()'],['../class_i_object_stream_in.html#a781398987e2c86e99bfc4d03d99c2914',1,'IObjectStreamIn::ReadPrimitiveData(Float3 &outPrimitive)=0'],['../class_i_object_stream_in.html#a58fb610ec8db85895bb31010ced4eec4',1,'IObjectStreamIn::ReadPrimitiveData(String &outPrimitive)=0'],['../class_i_object_stream_in.html#aff7f339ee88684c62fdc0d3c4842b994',1,'IObjectStreamIn::ReadPrimitiveData(bool &outPrimitive)=0'],['../class_i_object_stream_in.html#a2e0b8a75b0347fa8e015c62c2ff9f937',1,'IObjectStreamIn::ReadPrimitiveData(double &outPrimitive)=0'],['../class_i_object_stream_in.html#a8f2857838aa606be6fc63022f0956cd3',1,'IObjectStreamIn::ReadPrimitiveData(float &outPrimitive)=0'],['../class_i_object_stream_in.html#a617133ce899879a93e5274b18bef9038',1,'IObjectStreamIn::ReadPrimitiveData(uint64 &outPrimitive)=0'],['../class_i_object_stream_in.html#a83e75c9bd735481d1abfffd4606e3357',1,'IObjectStreamIn::ReadPrimitiveData(uint32 &outPrimitive)=0'],['../class_i_object_stream_in.html#aa1c304d18b225329573b6480ecd3592f',1,'IObjectStreamIn::ReadPrimitiveData(int &outPrimitive)=0'],['../class_i_object_stream_in.html#ac40f7f79e36b23a9eceec318d5807541',1,'IObjectStreamIn::ReadPrimitiveData(uint16 &outPrimitive)=0'],['../class_i_object_stream_in.html#adcc4f2c5ca7449d1fca513cf6beba298',1,'IObjectStreamIn::ReadPrimitiveData(uint8 &outPrimitive)=0'],['../class_object_stream_binary_in.html#a0c83fd72a9271ee7dc014146c35ad9d1',1,'ObjectStreamBinaryIn::ReadPrimitiveData()'],['../class_object_stream_text_in.html#aa53bdd6294f7c0ead2e977e91d5c108f',1,'ObjectStreamTextIn::ReadPrimitiveData(DMat44 &outPrimitive) override'],['../class_object_stream_text_in.html#a66f3b34ded6e7856aab86ee49eb88ac0',1,'ObjectStreamTextIn::ReadPrimitiveData(Mat44 &outPrimitive) override'],['../class_object_stream_text_in.html#a26c738ce8e470bdf9e98108ead591c8a',1,'ObjectStreamTextIn::ReadPrimitiveData(Quat &outPrimitive) override'],['../class_object_stream_text_in.html#ab52271c6de1325d7d302095812d588bf',1,'ObjectStreamTextIn::ReadPrimitiveData(Vec4 &outPrimitive) override'],['../class_object_stream_text_in.html#aa9713b3c0ccaf7ea3c569e84021651f2',1,'ObjectStreamTextIn::ReadPrimitiveData(DVec3 &outPrimitive) override'],['../class_object_stream_text_in.html#ac5db7ff153f5b4efcd5760a21fb6723f',1,'ObjectStreamTextIn::ReadPrimitiveData(Vec3 &outPrimitive) override'],['../class_object_stream_text_in.html#addcd289d1d73738db0d48f8a0f8992fd',1,'ObjectStreamTextIn::ReadPrimitiveData(Double3 &outPrimitive) override'],['../class_object_stream_text_in.html#a23b4394afd8cb0aaba9a91f6adfa34ce',1,'ObjectStreamTextIn::ReadPrimitiveData(Float3 &outPrimitive) override'],['../class_object_stream_text_in.html#afb0ef76d9a22441970eec9a347bbb66a',1,'ObjectStreamTextIn::ReadPrimitiveData(String &outPrimitive) override'],['../class_object_stream_text_in.html#af69f711f9957bacae5aebfdac9d60b56',1,'ObjectStreamTextIn::ReadPrimitiveData(bool &outPrimitive) override'],['../class_object_stream_text_in.html#ac9b5883bbe2ef7b8bba215fa2fecf042',1,'ObjectStreamTextIn::ReadPrimitiveData(double &outPrimitive) override'],['../class_object_stream_text_in.html#abee43bfb201ecee249daef30070b42b1',1,'ObjectStreamTextIn::ReadPrimitiveData(float &outPrimitive) override'],['../class_object_stream_text_in.html#a5b6bbd4b188c814bc0008e1a8730c00f',1,'ObjectStreamTextIn::ReadPrimitiveData(uint64 &outPrimitive) override'],['../class_object_stream_text_in.html#ae795d421fc37ecbfc8b38acfcfbeb872',1,'ObjectStreamTextIn::ReadPrimitiveData(uint32 &outPrimitive) override'],['../class_object_stream_text_in.html#adb602b716adef6cb25d1a2393adc25b9',1,'ObjectStreamTextIn::ReadPrimitiveData(int &outPrimitive) override'],['../class_object_stream_text_in.html#ad407eb47eed065b9f39745535715de21',1,'ObjectStreamTextIn::ReadPrimitiveData(uint16 &outPrimitive) override'],['../class_object_stream_text_in.html#ab7c8919080f8614b28e097fd11324dae',1,'ObjectStreamTextIn::ReadPrimitiveData(uint8 &outPrimitive) override'],['../class_object_stream_binary_in.html#a3efe657ff31934894cf986ddd9404c5b',1,'ObjectStreamBinaryIn::ReadPrimitiveData(DMat44 &outPrimitive) override'],['../class_object_stream_binary_in.html#ac51f9af154643a4e5f46954245c10185',1,'ObjectStreamBinaryIn::ReadPrimitiveData(Mat44 &outPrimitive) override'],['../class_object_stream_binary_in.html#a5cd4343446658834caf6e471a0b5e1c8',1,'ObjectStreamBinaryIn::ReadPrimitiveData(Quat &outPrimitive) override'],['../class_object_stream_binary_in.html#a55590dd27adde78a04cef4d6ff511e17',1,'ObjectStreamBinaryIn::ReadPrimitiveData(Vec4 &outPrimitive) override'],['../class_object_stream_binary_in.html#a411fe818db26d5ada7802e96e87a1823',1,'ObjectStreamBinaryIn::ReadPrimitiveData(DVec3 &outPrimitive) override'],['../class_object_stream_binary_in.html#aaf2b6afb5aa25ca74c4505973c0a48f7',1,'ObjectStreamBinaryIn::ReadPrimitiveData(Vec3 &outPrimitive) override'],['../class_object_stream_binary_in.html#add5a059681d27ff452da004a20c54c97',1,'ObjectStreamBinaryIn::ReadPrimitiveData(Double3 &outPrimitive) override']]], + ['readrtti_55',['ReadRTTI',['../class_object_stream_in.html#aba38d15deacd14fb875da3b6d4a8f2d3',1,'ObjectStreamIn']]], + ['real_56',['Real',['../_real_8h.html#a6baabe9790f3842ab73110ab342c5c5e',1,'Real.h']]], + ['real_2eh_57',['Real.h',['../_real_8h.html',1,'']]], + ['real3_58',['Real3',['../_real_8h.html#a9829b84fb712d3deea004ccabed714a6',1,'Real.h']]], + ['reallocate_59',['reallocate',['../_memory_8cpp.html#ac6c32afa44df59108c68ef07ce8919bd',1,'Reallocate: Memory.cpp'],['../class_s_t_l_allocator.html#aa023ac42875d9d843380abb6986888f1',1,'STLAllocator::reallocate()'],['../_memory_8cpp.html#a280e4a0028cc9e9d3d69e81243bcef4b',1,'Reallocate(void *inBlock, size_t inOldSize, size_t inNewSize): Memory.cpp'],['../_memory_8h.html#a8f705f8e1418d25f523b8aebf674322d',1,'Reallocate: Memory.cpp']]], + ['reallocatefunction_60',['ReallocateFunction',['../_memory_8h.html#a173beb7a0579a0dc288c66cc87d693ff',1,'Memory.h']]], + ['rebind_61',['rebind',['../struct_s_t_l_temp_allocator_1_1rebind.html',1,'STLTempAllocator< T >::rebind< T2 >'],['../struct_s_t_l_allocator_1_1rebind.html',1,'STLAllocator< T >::rebind< T2 >'],['../struct_s_t_l_aligned_allocator_1_1rebind.html',1,'STLAlignedAllocator< T, N >::rebind< T2 >']]], + ['reciprocal_62',['reciprocal',['../class_vec8.html#a246f5b59817c707715bd69d292e7610f',1,'Vec8::Reciprocal()'],['../class_vec4.html#a7cc579856f15646c7507f23619bbfce0',1,'Vec4::Reciprocal()'],['../class_vec3.html#a6bdb4929eab084e74d1e0ea3ae29d8ad',1,'Vec3::Reciprocal()'],['../class_d_vec3.html#ae4f3e3231039ea4fb254150a32a2b679',1,'DVec3::Reciprocal()']]], + ['recognized_63',['Link Error: File Format Not Recognized',['../md__build_2_r_e_a_d_m_e.html#autotoc_md77',1,'']]], + ['recycleconstraintbuffer_64',['RecycleConstraintBuffer',['../class_contact_constraint_manager.html#a3ede12b173e9c63f9421176573661b27',1,'ContactConstraintManager']]], + ['reducemax_65',['reducemax',['../class_vec3.html#a3d4dc6f6807ead86b5150e7904ac80f5',1,'Vec3::ReduceMax()'],['../class_vec4.html#a753afc91d4124025cd90e79f3443834f',1,'Vec4::ReduceMax()']]], + ['reducemin_66',['reducemin',['../class_vec3.html#a3b5c2f1c893d46d390428ef8c487cc7d',1,'Vec3::ReduceMin()'],['../class_vec4.html#ac1bdb84d53942f36ac3b315ab2451600',1,'Vec4::ReduceMin()'],['../class_vec8.html#a045d854d2e5034a8fdd06b1946143c73',1,'Vec8::ReduceMin()']]], + ['ref_67',['ref',['../class_ref.html#a058eb96b88278fcd99ff5ce1fef30bb8',1,'Ref::Ref(const Ref< T > &inRHS)'],['../class_ref.html#ab9c96a7f35ee47259673d12a921f7cfb',1,'Ref::Ref(Ref< T > &&inRHS) noexcept'],['../class_ref.html#ac2f49c59614fcf3cc90a4b4bb1d4ee61',1,'Ref::Ref(T *inRHS)'],['../class_ref.html#a41cec5ec3f778e24fc24ec8d2f2cfc4e',1,'Ref::Ref()'],['../class_ref.html',1,'Ref< T >']]], + ['ref_3c_20constraint_20_3e_68',['Ref< Constraint >',['../class_ref.html',1,'']]], + ['ref_3c_20geometry_20_3e_69',['Ref< Geometry >',['../class_ref.html',1,'']]], + ['ref_3c_20job_20_3e_70',['Ref< Job >',['../class_ref.html',1,'']]], + ['ref_3c_20reftargetvirtual_20_3e_71',['Ref< RefTargetVirtual >',['../class_ref.html',1,'']]], + ['ref_3c_20shape_20_3e_72',['Ref< Shape >',['../class_ref.html',1,'']]], + ['ref_3c_20skeleton_20_3e_73',['Ref< Skeleton >',['../class_ref.html',1,'']]], + ['ref_3c_20twobodyconstraint_20_3e_74',['Ref< TwoBodyConstraint >',['../class_ref.html',1,'']]], + ['ref_3c_20twobodyconstraintsettings_20_3e_75',['Ref< TwoBodyConstraintSettings >',['../class_ref.html',1,'']]], + ['ref_3c_20vehiclecontrollersettings_20_3e_76',['Ref< VehicleControllerSettings >',['../class_ref.html',1,'']]], + ['ref_3c_20wheelsettings_20_3e_77',['Ref< WheelSettings >',['../class_ref.html',1,'']]], + ['refconst_78',['refconst',['../class_ref_const.html#a423ea3dc5a5d83bf4a5e3fbcca36acf4',1,'RefConst::RefConst()'],['../class_ref.html#aa53661c4e37b268c10c4a2a7cdcbfeba',1,'Ref::RefConst'],['../class_ref_const.html#a310f87cc5720b10d0059a1128b851d46',1,'RefConst::RefConst()'],['../class_ref_const.html#ab7be009ab78269524aa5ac6387b5ad35',1,'RefConst::RefConst(const RefConst< T > &inRHS)'],['../class_ref_const.html#ab35b0b13bff8349d4e910b56b73cf115',1,'RefConst::RefConst(RefConst< T > &&inRHS) noexcept'],['../class_ref_const.html#a5bac911b6794527e7ae3016773f2a506',1,'RefConst::RefConst(const Ref< T > &inRHS)'],['../class_ref_const.html#ad331b640eec29970a066ff44f988ccab',1,'RefConst::RefConst(Ref< T > &&inRHS) noexcept'],['../class_ref_const.html',1,'RefConst< T >']]], + ['refconst_3c_20constraint_20_3e_79',['RefConst< Constraint >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20groupfilter_20_3e_80',['RefConst< GroupFilter >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20pathconstraintpath_20_3e_81',['RefConst< PathConstraintPath >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20physicsmaterial_20_3e_82',['RefConst< PhysicsMaterial >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20ragdollsettings_20_3e_83',['RefConst< RagdollSettings >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20shape_20_3e_84',['RefConst< Shape >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20shapesettings_20_3e_85',['RefConst< ShapeSettings >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20skeleton_20_3e_86',['RefConst< Skeleton >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20softbodysharedsettings_20_3e_87',['RefConst< SoftBodySharedSettings >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20twobodyconstraintsettings_20_3e_88',['RefConst< TwoBodyConstraintSettings >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20vehiclecollisiontester_20_3e_89',['RefConst< VehicleCollisionTester >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20wheelsettings_20_3e_90',['RefConst< WheelSettings >',['../class_ref_const.html',1,'']]], + ['reference_91',['reference',['../class_array.html#aeeb498ab8730019eaf0899f1cbf8e6c8',1,'Array::reference'],['../class_s_t_l_aligned_allocator.html#a56b7aed0a19cfcdb3265edd1b2f128c9',1,'STLAlignedAllocator::reference'],['../class_s_t_l_allocator.html#affd8ec6c0ff2ea46a895cd9a6ca5ab7e',1,'STLAllocator::reference'],['../class_s_t_l_temp_allocator.html#a3f90b804920b11315e04932909db7b76',1,'STLTempAllocator::reference']]], + ['reference_2eh_92',['Reference.h',['../_reference_8h.html',1,'']]], + ['refreshcontacts_93',['RefreshContacts',['../class_character_virtual.html#a09ecc3efc44b912eca30d9dbc05cc558',1,'CharacterVirtual']]], + ['reftarget_94',['reftarget',['../class_ref_target.html',1,'RefTarget< T >'],['../class_ref_target.html#a50444e3b659c6f93c64aee224a93f6ab',1,'RefTarget::RefTarget(const RefTarget &)'],['../class_ref_target.html#a4c8a23738e2e1dd6369520a30e250b17',1,'RefTarget::RefTarget()=default']]], + ['reftarget_3c_20characterbase_20_3e_95',['RefTarget< CharacterBase >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20characterbasesettings_20_3e_96',['RefTarget< CharacterBaseSettings >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20constraint_20_3e_97',['RefTarget< Constraint >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20constraintsettings_20_3e_98',['RefTarget< ConstraintSettings >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20geometry_20_3e_99',['RefTarget< Geometry >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20groupfilter_20_3e_100',['RefTarget< GroupFilter >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20pathconstraintpath_20_3e_101',['RefTarget< PathConstraintPath >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20physicsmaterial_20_3e_102',['RefTarget< PhysicsMaterial >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20physicsscene_20_3e_103',['RefTarget< PhysicsScene >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20ragdoll_20_3e_104',['RefTarget< Ragdoll >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20ragdollsettings_20_3e_105',['RefTarget< RagdollSettings >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20shape_20_3e_106',['RefTarget< Shape >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20shapesettings_20_3e_107',['RefTarget< ShapeSettings >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20skeletalanimation_20_3e_108',['RefTarget< SkeletalAnimation >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20skeleton_20_3e_109',['RefTarget< Skeleton >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20skeletonmapper_20_3e_110',['RefTarget< SkeletonMapper >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20softbodysharedsettings_20_3e_111',['RefTarget< SoftBodySharedSettings >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20vehiclecollisiontester_20_3e_112',['RefTarget< VehicleCollisionTester >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20vehiclecontroller_20_3e_113',['RefTarget< VehicleController >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20vehiclecontrollersettings_20_3e_114',['RefTarget< VehicleControllerSettings >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20wheelsettings_20_3e_115',['RefTarget< WheelSettings >',['../class_ref_target.html',1,'']]], + ['reftargetvirtual_116',['RefTargetVirtual',['../class_ref_target_virtual.html',1,'']]], + ['register_117',['register',['../class_factory.html#ad0d9b51fede200c603359bc2ffc8bc8f',1,'Factory::Register(const RTTI **inRTTIs, uint inNumber)'],['../class_factory.html#a2c5c5cba0d5101b5d33302cd102d8546',1,'Factory::Register(const RTTI *inRTTI)']]], + ['registerdefaultallocator_118',['registerdefaultallocator',['../_memory_8h.html#a6ae804b1b68490f6e032ef6e7d9fc93e',1,'RegisterDefaultAllocator(): Memory.cpp'],['../_memory_8cpp.html#a833946335de93bfe993d882d5e882458',1,'RegisterDefaultAllocator(): Memory.cpp']]], + ['registertypes_119',['RegisterTypes',['../_register_types_8h.html#a033e662bc8b7d5a8acd9adcc692b7cb4',1,'RegisterTypes.h']]], + ['registertypes_2ecpp_120',['RegisterTypes.cpp',['../_register_types_8cpp.html',1,'']]], + ['registertypes_2eh_121',['RegisterTypes.h',['../_register_types_8h.html',1,'']]], + ['registertypesinternal_122',['registertypesinternal',['../_register_types_8h.html#a8df860236f81c6ffec261b6bd62847ba',1,'RegisterTypesInternal(uint64 inVersionID): RegisterTypes.cpp'],['../_register_types_8cpp.html#ad79693ff726715130ca9372e7e347e22',1,'RegisterTypesInternal(uint64 inVersionID): RegisterTypes.cpp']]], + ['reinterpretasfloat_123',['ReinterpretAsFloat',['../class_u_vec4.html#af399ef91439555b5264eec1790537547',1,'UVec4']]], + ['reinterpretasint_124',['reinterpretasint',['../class_vec3.html#ae8373cd45fbf550d26729f98a68b3e4a',1,'Vec3::ReinterpretAsInt()'],['../class_vec4.html#a7f8f1783b5b18997ce18f3ed92c34aa2',1,'Vec4::ReinterpretAsInt()']]], + ['rejectallcontactsforthisbodypair_125',['RejectAllContactsForThisBodyPair',['../_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93ca0e08391f08898fa9bd658afcbd26e2c0',1,'ContactListener.h']]], + ['rejectcontact_126',['rejectcontact',['../_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93ca4c312fb94f5fa9ebabb3968b56ed0221',1,'RejectContact: ContactListener.h'],['../_soft_body_contact_listener_8h.html#a146313e7653a5364d1e51eccb325abaaa4c312fb94f5fa9ebabb3968b56ed0221',1,'RejectContact: SoftBodyContactListener.h']]], + ['release_127',['release',['../class_job_system_1_1_job.html#a46cad8e24ec8ff788b41e8aea53a2e27',1,'JobSystem::Job::Release()'],['../class_ref_target.html#a0451661dd5d85b01f969319e767993eb',1,'RefTarget::Release()'],['../class_semaphore.html#aad2d5e92add4088a741869d88fd2fc37',1,'Semaphore::Release()'],['../class_scope_exit.html#a0fd8970c70da23c66060320c833e6934',1,'ScopeExit::Release()'],['../class_ref_target_virtual.html#a7f4d994acaa1d389f768fd9b75bca506',1,'RefTargetVirtual::Release()']]], + ['release_20notes_128',['Release Notes',['../md__docs_2_release_notes.html',1,'']]], + ['releaselock_129',['ReleaseLock',['../class_body_lock_base.html#ad55e418ae5441d32196be0d6433e4cec',1,'BodyLockBase']]], + ['releasenotes_2emd_130',['ReleaseNotes.md',['../_release_notes_8md.html',1,'']]], + ['remove_131',['remove',['../class_constraint_manager.html#acb16102f8700cbe29811d38abf913d0a',1,'ConstraintManager::Remove()'],['../class_character_vs_character_collision_simple.html#a63d4e54dee0aca96e4c77e7c78a6b350',1,'CharacterVsCharacterCollisionSimple::Remove()']]], + ['removebodies_132',['removebodies',['../class_quad_tree.html#ae87cda722c454860d1566a6c5f4b11dc',1,'QuadTree::RemoveBodies()'],['../class_body_interface.html#a4e0007d53ba413e916a527b870b35a87',1,'BodyInterface::RemoveBodies()'],['../class_body_manager.html#a2a65ea34748b9f3f354d4325f905ab1c',1,'BodyManager::RemoveBodies()'],['../class_broad_phase.html#adfcebfeb40995d6a122dd53730eec6fd',1,'BroadPhase::RemoveBodies()'],['../class_broad_phase_brute_force.html#a488f130c96e125ae1b0dda672d805f65',1,'BroadPhaseBruteForce::RemoveBodies()'],['../class_broad_phase_quad_tree.html#aecb695ab5c29fcb219e4f5ee7e27dba8',1,'BroadPhaseQuadTree::RemoveBodies()']]], + ['removebody_133',['RemoveBody',['../class_body_interface.html#a522d341ddd68225e12eb510f072399f9',1,'BodyInterface']]], + ['removeconstraint_134',['RemoveConstraint',['../class_physics_system.html#a7cdf5d375a54ab6d6b29e3944d8e4266',1,'PhysicsSystem']]], + ['removeconstraints_135',['RemoveConstraints',['../class_physics_system.html#a220ed391139f4ffdb384fe83b44d6439',1,'PhysicsSystem']]], + ['removed_20callbacks_136',['Finalize Contact Cache, Contact Removed Callbacks',['../index.html#finalize-contact-cache',1,'']]], + ['removed_20functionality_137',['removed functionality',['../md__docs_2_release_notes.html#autotoc_md56',1,'Removed functionality'],['../md__docs_2_release_notes.html#autotoc_md46',1,'Removed functionality']]], + ['removedependency_138',['removedependency',['../class_job_system_1_1_job_handle.html#a25f723a35202461e725cc3ad6cc166bb',1,'JobSystem::JobHandle::RemoveDependency()'],['../class_job_system_1_1_job.html#a59a4638f7edcbfd30f47f096f0f984f1',1,'JobSystem::Job::RemoveDependency(int inCount)']]], + ['removedependencyandqueue_139',['RemoveDependencyAndQueue',['../class_job_system_1_1_job.html#ae4411bbad4af5361b85db233bd0adb43',1,'JobSystem::Job']]], + ['removefromphysicssystem_140',['removefromphysicssystem',['../class_character.html#a58a8b4717f4cbcd8dd9ba3fc77111a5d',1,'Character::RemoveFromPhysicsSystem()'],['../class_ragdoll.html#a76f2d87e4f41cc22ff280b9c962698cf',1,'Ragdoll::RemoveFromPhysicsSystem()']]], + ['removeshape_141',['RemoveShape',['../class_mutable_compound_shape.html#ab91b4cd767b396eca6a341e98501daea',1,'MutableCompoundShape']]], + ['removesteplistener_142',['RemoveStepListener',['../class_physics_system.html#a00aeeff60505f9baa3dd1ffdfe73c2b3',1,'PhysicsSystem']]], + ['removethread_143',['RemoveThread',['../class_profiler.html#a647ca7e4e3b803986733583e2ba1fb3e',1,'Profiler']]], + ['rendering_144',['Debug Rendering',['../index.html#debug-rendering',1,'']]], + ['reserve_145',['reserve',['../class_linear_curve.html#a97a229bd7bbda997fab1f22649afcd9c',1,'LinearCurve::Reserve()'],['../class_array.html#ada6d2585215a3cb5b2effbe4dfa08d7b',1,'Array::reserve()'],['../class_ignore_multiple_bodies_filter.html#a4151dd0e414f86279940306d664a6042',1,'IgnoreMultipleBodiesFilter::Reserve()']]], + ['reset_146',['reset',['../class_broad_phase_cast_result.html#abf6a8c98a31073d7a755df3c6d52ae7e',1,'BroadPhaseCastResult::Reset()'],['../class_collision_collector.html#a77f6668a80319dfb85f68b97c7b6d103',1,'CollisionCollector::Reset()'],['../class_all_hit_collision_collector.html#af3bfc75b183c4406c65807ff0d62dd43',1,'AllHitCollisionCollector::Reset()'],['../class_closest_hit_collision_collector.html#a14955035534ef11baa2d3785ba004eee',1,'ClosestHitCollisionCollector::Reset()'],['../class_any_hit_collision_collector.html#a037964d4624c351fe863295ebe465c91',1,'AnyHitCollisionCollector::Reset()'],['../class_internal_edge_removing_collector.html#acd02ac01ebc1abbedbcaa57b73426d86',1,'InternalEdgeRemovingCollector::Reset()'],['../class_large_island_splitter.html#ac5d0857609c5c1375dd9cd78a5f6148a',1,'LargeIslandSplitter::Reset()']]], + ['resetearlyoutfraction_147',['ResetEarlyOutFraction',['../class_collision_collector.html#a07e4d9859fe39cfde6674ebb3ece445a',1,'CollisionCollector']]], + ['resetforce_148',['resetforce',['../class_motion_properties.html#a98ccf77045902a10f5665ba7208b67f4',1,'MotionProperties::ResetForce()'],['../class_body.html#a91ec38c6d564c65d7dde56f315a8eb31',1,'Body::ResetForce()']]], + ['resetgravityoverride_149',['ResetGravityOverride',['../class_vehicle_constraint.html#a1093abfb21649ac7c26dffc59cb27dfe',1,'VehicleConstraint']]], + ['resetislands_150',['ResetIslands',['../class_island_builder.html#a3a23a4981c11d55933cc2533504eb38a',1,'IslandBuilder']]], + ['resetmotion_151',['resetmotion',['../class_body.html#ae5800f2a270af3dcf7b53c009b67ef95',1,'Body::ResetMotion()'],['../class_motion_properties.html#a6e4c20984b986f7f3e474eee9d54a612',1,'MotionProperties::ResetMotion()']]], + ['resetsleeptestspheres_152',['ResetSleepTestSpheres',['../class_motion_properties.html#aad3b333b7af3e3b39be95edf9b69d133',1,'MotionProperties']]], + ['resetsleeptesttimer_153',['ResetSleepTestTimer',['../class_motion_properties.html#a9cbe62f9eebdc6f63c82d9e52ef352fe',1,'MotionProperties']]], + ['resetsleeptimer_154',['resetsleeptimer',['../class_body.html#a95efc4cbe40bfab41c74b2add880fa04',1,'Body::ResetSleepTimer()'],['../class_body_interface.html#a1fba61b765e02400402899b838a7e517',1,'BodyInterface::ResetSleepTimer()']]], + ['resetstatus_155',['ResetStatus',['../class_large_island_splitter_1_1_splits.html#a0acc44089e5c254ca53a07d6aa80ffc8',1,'LargeIslandSplitter::Splits']]], + ['resettorque_156',['resettorque',['../class_body.html#ab3872c4fdcf4046aac2565bbe14061e8',1,'Body::ResetTorque()'],['../class_motion_properties.html#afed5a48ab2a5e703c00e2e9ef2e0c68a',1,'MotionProperties::ResetTorque()']]], + ['resetwarmstart_157',['resetwarmstart',['../class_swing_twist_constraint.html#af008b3e7de0f788907050c45101f1620',1,'SwingTwistConstraint::ResetWarmStart()'],['../class_cone_constraint.html#a3de043a81f61d8f612ee14b0e291ea9e',1,'ConeConstraint::ResetWarmStart()'],['../class_constraint.html#af6f6f7bc9ec10dbaf721515b19241294',1,'Constraint::ResetWarmStart()'],['../class_distance_constraint.html#a4850e4925b8de521c4afe351e28d0b2d',1,'DistanceConstraint::ResetWarmStart()'],['../class_gear_constraint.html#afac138625fdede0bd0c4775edc103878',1,'GearConstraint::ResetWarmStart()'],['../class_fixed_constraint.html#a4e7dbb8d017aefe0771a27bc9682e009',1,'FixedConstraint::ResetWarmStart()'],['../class_slider_constraint.html#a754215fb80385dc95d64c59c73443b20',1,'SliderConstraint::ResetWarmStart()'],['../class_ragdoll.html#ab311adf5d4b6bd72199e6d46d04886f8',1,'Ragdoll::ResetWarmStart()'],['../class_vehicle_constraint.html#a181b7955873518cae4b3a1b5f23979d5',1,'VehicleConstraint::ResetWarmStart()'],['../class_six_d_o_f_constraint.html#a22c691917ea1c5166f4ea7cd6a00219f',1,'SixDOFConstraint::ResetWarmStart()'],['../class_pulley_constraint.html#aca6c3e82e979de7352e26afd14f5e277',1,'PulleyConstraint::ResetWarmStart()'],['../class_point_constraint.html#acca5a66c0b39fad225a1fb938e96a4e5',1,'PointConstraint::ResetWarmStart()'],['../class_path_constraint.html#a2c947e294a99cdf061c2dc30447dcfba',1,'PathConstraint::ResetWarmStart()'],['../class_hinge_constraint.html#aa6308f0b4983d8bfb2e835fea7cc28b7',1,'HingeConstraint::ResetWarmStart()'],['../class_rack_and_pinion_constraint.html#a5c14ca07f19abd4066e7b49d8be0f5b5',1,'RackAndPinionConstraint::ResetWarmStart()']]], + ['resize_158',['resize',['../class_static_array.html#af90fb922a70be2d41cc70b243cbc4c64',1,'StaticArray::resize()'],['../class_array.html#a6ef30c832102c214f54d3552f0f1d550',1,'Array::resize(size_type inNewSize, const T &inValue)'],['../class_array.html#a1355a4e6cf533d895191b93eaa95e769',1,'Array::resize(size_type inNewSize)']]], + ['resolve_20ccd_20contacts_159',['Resolve CCD Contacts',['../index.html#resolve-ccd-contacts',1,'']]], + ['restorebinarystate_160',['restorebinarystate',['../class_spring_settings.html#af6f75e6e5167b54a2cff64808a106297',1,'SpringSettings::RestoreBinaryState()'],['../class_swing_twist_constraint_settings.html#aea7e8886dad7c91dd6b35eb66d040905',1,'SwingTwistConstraintSettings::RestoreBinaryState()'],['../class_soft_body_creation_settings.html#a735fee6e846a7eab45f817ef8bf6688d',1,'SoftBodyCreationSettings::RestoreBinaryState()'],['../class_soft_body_shared_settings.html#a2f196979f67ababeaf2ab8fe85c3243c',1,'SoftBodySharedSettings::RestoreBinaryState()'],['../class_motorcycle_controller_settings.html#aecb6c2070fcb21e83a14dfa4e3157f6d',1,'MotorcycleControllerSettings::RestoreBinaryState()'],['../class_wheel_settings_t_v.html#a026d2a093b4da2f93be1a50a855eac5d',1,'WheelSettingsTV::RestoreBinaryState()'],['../class_tracked_vehicle_controller_settings.html#ad0578129c78d52535148ac87a7e27b63',1,'TrackedVehicleControllerSettings::RestoreBinaryState()'],['../class_vehicle_anti_roll_bar.html#acf4e180f4337014b2ce4e0ddcd83a7fc',1,'VehicleAntiRollBar::RestoreBinaryState()'],['../class_vehicle_constraint_settings.html#a710a5387a975c46e52fb4a860cec6c75',1,'VehicleConstraintSettings::RestoreBinaryState()'],['../class_vehicle_controller_settings.html#a5ef4840b667224faf60f1d3cc2b048e1',1,'VehicleControllerSettings::RestoreBinaryState()'],['../class_vehicle_differential_settings.html#a57a075d772fdd921f8da88a9c4c2f0e7',1,'VehicleDifferentialSettings::RestoreBinaryState()'],['../class_vehicle_engine_settings.html#a07beafb1531780053169dbc05283ed26',1,'VehicleEngineSettings::RestoreBinaryState()'],['../class_vehicle_track_settings.html#a019707dd72812c4af4799ee1f7077115',1,'VehicleTrackSettings::RestoreBinaryState()'],['../class_vehicle_transmission_settings.html#a3055b6c810a88a1ae3fd2946a1683d5d',1,'VehicleTransmissionSettings::RestoreBinaryState()'],['../class_wheel_settings.html#a73a4d72105d91343f5811df864dcd4a8',1,'WheelSettings::RestoreBinaryState()'],['../class_wheel_settings_w_v.html#a30dc23071eb952eaf4ec80cdd3453c39',1,'WheelSettingsWV::RestoreBinaryState()'],['../class_wheeled_vehicle_controller_settings.html#a2521d5acd5088a1110c5abf5df948734',1,'WheeledVehicleControllerSettings::RestoreBinaryState()'],['../class_path_constraint_settings.html#a5a69dc6588941a9699e3a80755716444',1,'PathConstraintSettings::RestoreBinaryState()'],['../class_convex_shape.html#a6398de9c5aec64886a5184efb4fcca8f',1,'ConvexShape::RestoreBinaryState()'],['../class_sphere_shape.html#af3bba551144e16706f81b326559e8182',1,'SphereShape::RestoreBinaryState()'],['../class_shape.html#a98a42fc4c28896d87ac4287c38f213ad',1,'Shape::RestoreBinaryState()'],['../class_scaled_shape.html#ac5d58ba4d9241234ece710053012a18f',1,'ScaledShape::RestoreBinaryState()'],['../class_slider_constraint_settings.html#ac0986c9c1bad64fbb5a4f77476e6d1ed',1,'SliderConstraintSettings::RestoreBinaryState()'],['../class_rotated_translated_shape.html#a09096c325e0e1e06111058436c710a25',1,'RotatedTranslatedShape::RestoreBinaryState()'],['../class_plane_shape.html#aeb64b45f1ef04065f2e41cfed2f0d662',1,'PlaneShape::RestoreBinaryState()'],['../class_offset_center_of_mass_shape.html#a642db1f164f7c122227d033f07785323',1,'OffsetCenterOfMassShape::RestoreBinaryState()'],['../class_mutable_compound_shape.html#ad787fdba1914f3550e2cf3c4036e99b8',1,'MutableCompoundShape::RestoreBinaryState()'],['../class_mesh_shape.html#af84c2f1f9f50380d94a63a1649dd9023',1,'MeshShape::RestoreBinaryState()'],['../class_height_field_shape.html#a9b2126b83b4ff79815efd7403ddb0c4d',1,'HeightFieldShape::RestoreBinaryState()'],['../class_cylinder_shape.html#a34b7524e8eeb624986b062a42c7af128',1,'CylinderShape::RestoreBinaryState()'],['../class_static_compound_shape.html#a834536007f00d3251acbd122afffb16e',1,'StaticCompoundShape::RestoreBinaryState()'],['../class_convex_hull_shape.html#a15bb554d0dcaf667f40bdb13b07f6ccd',1,'ConvexHullShape::RestoreBinaryState()'],['../class_compound_shape.html#a117d02ee25d15fff53f59f29434b3449',1,'CompoundShape::RestoreBinaryState()'],['../class_capsule_shape.html#a716f8cb75afae9e84d3668f7c6520876',1,'CapsuleShape::RestoreBinaryState()'],['../class_box_shape.html#a5d9e2eb38ff5d85f18f838fbf3e69499',1,'BoxShape::RestoreBinaryState()'],['../class_physics_material_simple.html#a65bc6aff8e8f375058986d85ec70f611',1,'PhysicsMaterialSimple::RestoreBinaryState()'],['../class_physics_material.html#a51ea4ae0673771947b5052c9062cf267',1,'PhysicsMaterial::RestoreBinaryState()'],['../class_group_filter_table.html#ade5ec053f8ed440ebdbd516f31797ee3',1,'GroupFilterTable::RestoreBinaryState()'],['../class_group_filter.html#a76f2d434cbc50b6eae5aab84b87b81d5',1,'GroupFilter::RestoreBinaryState()'],['../class_collision_group.html#abff4339a09c8ad38cc7aee4449d5ecaf',1,'CollisionGroup::RestoreBinaryState()'],['../class_mass_properties.html#ac46696a6d40a5e0b96898bb38f66e904',1,'MassProperties::RestoreBinaryState()'],['../class_body_creation_settings.html#a272d105640dc6f4376a064a8ebe2c343',1,'BodyCreationSettings::RestoreBinaryState()'],['../class_cone_constraint_settings.html#a18a734d20a0d8d9fbaf697523d43a53d',1,'ConeConstraintSettings::RestoreBinaryState()'],['../class_six_d_o_f_constraint_settings.html#ac7edaa973ecaf000923b3d1d795ce9cc',1,'SixDOFConstraintSettings::RestoreBinaryState()'],['../class_rack_and_pinion_constraint_settings.html#a84da5f10be9658a7652391b0d699911f',1,'RackAndPinionConstraintSettings::RestoreBinaryState()'],['../class_pulley_constraint_settings.html#a386c539940f18601f78f5bebd85550ac',1,'PulleyConstraintSettings::RestoreBinaryState()'],['../class_point_constraint_settings.html#a280c2307c3b0dc13ee399c5a5100c020',1,'PointConstraintSettings::RestoreBinaryState()'],['../class_path_constraint_path_hermite.html#a4d0c669b370d78bccdd0fa40f6861fca',1,'PathConstraintPathHermite::RestoreBinaryState()'],['../class_path_constraint_path.html#a98e97ad6b58e3467c014a524c1062ad7',1,'PathConstraintPath::RestoreBinaryState()'],['../class_linear_curve.html#a1b1dc52c995b9c5ac2d890f01d2af11d',1,'LinearCurve::RestoreBinaryState()'],['../class_motor_settings.html#a0d171537fc44218d3c3a6159a95aab74',1,'MotorSettings::RestoreBinaryState()'],['../class_hinge_constraint_settings.html#ab9e2ce19ee6cde2921df8d3fba49d02e',1,'HingeConstraintSettings::RestoreBinaryState()'],['../class_gear_constraint_settings.html#a19e829338afbd3f7b7bd50614f1dadd7',1,'GearConstraintSettings::RestoreBinaryState()'],['../class_fixed_constraint_settings.html#a68029fead89e2efc72ddec38977086cf',1,'FixedConstraintSettings::RestoreBinaryState()'],['../class_distance_constraint_settings.html#ad20296ac7f200e6f5515d5026f243028',1,'DistanceConstraintSettings::RestoreBinaryState()'],['../class_constraint_settings.html#a71f815e6f2e1bd3e0c8be210936b0e79',1,'ConstraintSettings::RestoreBinaryState()'],['../class_triangle_shape.html#ab632b280870ff67e4c8cdfbbbb05ae64',1,'TriangleShape::RestoreBinaryState()'],['../class_tapered_cylinder_shape.html#ab19eef4bfc4b695b40c4878edf549333',1,'TaperedCylinderShape::RestoreBinaryState()'],['../class_tapered_capsule_shape.html#ab661a337941a8a5f00b77e9c342f0020',1,'TaperedCapsuleShape::RestoreBinaryState()']]], + ['restorebodystate_161',['restorebodystate',['../class_body_manager.html#ad1de147dfb454f5963629a98489c1159',1,'BodyManager::RestoreBodyState()'],['../class_physics_system.html#a5865e977575ab65a41ce98e098b897cc',1,'PhysicsSystem::RestoreBodyState()']]], + ['restorematerialstate_162',['restorematerialstate',['../class_shape.html#a6e823e7198f22ec824cacf9998d9904c',1,'Shape::RestoreMaterialState()'],['../class_convex_shape.html#aa0989125373d245ea41cbf5c1db96198',1,'ConvexShape::RestoreMaterialState()'],['../class_height_field_shape.html#a60a76ec2d43e2f91967bee14723ba270',1,'HeightFieldShape::RestoreMaterialState()'],['../class_mesh_shape.html#ab15580fc2fa9b0e6372cfc7c48f2105f',1,'MeshShape::RestoreMaterialState()'],['../class_plane_shape.html#a50ce02e27f33e0632a2f63c3fb56fbb2',1,'PlaneShape::RestoreMaterialState()']]], + ['restoreobject_163',['RestoreObject',['../namespace_stream_utils.html#a8e2ba0b1630f3d270dfdd4284a468ab9',1,'StreamUtils']]], + ['restoreobjectarray_164',['RestoreObjectArray',['../namespace_stream_utils.html#a388cbbe0f223267d038a57b9fd6e1571',1,'StreamUtils']]], + ['restoreobjectreference_165',['RestoreObjectReference',['../namespace_stream_utils.html#aab7d93bea0dbbfa623af7112db1bd8be',1,'StreamUtils']]], + ['restorestate_166',['restorestate',['../class_rotation_quat_constraint_part.html#a95e793a001df59cd2e8ea7e92c4f6263',1,'RotationQuatConstraintPart::RestoreState()'],['../class_wheeled_vehicle_controller.html#a832989bb00f7c2577925f3bb978d116a',1,'WheeledVehicleController::RestoreState()'],['../class_vehicle_transmission.html#a1c3c2fef737c176e558081a0175f71f9',1,'VehicleTransmission::RestoreState()'],['../class_vehicle_track.html#a0252bddefcd767ca47517706f168bc00',1,'VehicleTrack::RestoreState()'],['../class_vehicle_engine.html#a1465f66b9bddf12998cd990c8ba05140',1,'VehicleEngine::RestoreState()'],['../class_vehicle_controller.html#a64cf71ec1f7bd0e92a08c4292f9f2515',1,'VehicleController::RestoreState()'],['../class_vehicle_constraint.html#a2d36c8bcd57ab5136e962bd03f1992e8',1,'VehicleConstraint::RestoreState()'],['../class_tracked_vehicle_controller.html#ac4ad788c5d39ec66561f0fde8bb5be60',1,'TrackedVehicleController::RestoreState()'],['../class_gear_constraint_part.html#ad3fc3cde9a29f5bbbba7db738f5715a3',1,'GearConstraintPart::RestoreState()'],['../class_point_constraint.html#a69f08d8239b0202d27429f0ca15de580',1,'PointConstraint::RestoreState()'],['../class_path_constraint.html#ae404de8c3ac283d010ca1e0f637873f1',1,'PathConstraint::RestoreState()'],['../class_hinge_constraint.html#ab511231f1d1c0ea20d9d7e9a3d996091',1,'HingeConstraint::RestoreState()'],['../class_gear_constraint.html#acdb35bebda74e178f96d516277dda140',1,'GearConstraint::RestoreState()'],['../class_fixed_constraint.html#acf092e49dff8f3e45c4a315924ace105',1,'FixedConstraint::RestoreState()'],['../class_distance_constraint.html#a748c652cfab4475e85d97ed4caf42c79',1,'DistanceConstraint::RestoreState()'],['../class_contact_constraint_manager.html#a2bc5cc8b8d36cf641dc4217fed0e63f6',1,'ContactConstraintManager::RestoreState()'],['../class_swing_twist_constraint_part.html#a2964a0ed18137258a244d1b4926fa290',1,'SwingTwistConstraintPart::RestoreState()'],['../class_rotation_euler_constraint_part.html#aba8f2a3ca2aa7ab982b16499cf938ee3',1,'RotationEulerConstraintPart::RestoreState()'],['../class_rack_and_pinion_constraint_part.html#ad761890faa43dd0c459e5a6869b10f7f',1,'RackAndPinionConstraintPart::RestoreState()'],['../class_point_constraint_part.html#a019489117b367decab440da408e316b8',1,'PointConstraintPart::RestoreState()'],['../class_independent_axis_constraint_part.html#a1b5d7adfe5abea0da836a725b91d4f85',1,'IndependentAxisConstraintPart::RestoreState()'],['../class_hinge_rotation_constraint_part.html#abf5e533e782c69c89481e4bf6e3a0a28',1,'HingeRotationConstraintPart::RestoreState()'],['../class_soft_body_motion_properties.html#a82ab6c1c73650cf2af92072c0fe8368d',1,'SoftBodyMotionProperties::RestoreState()'],['../class_dual_axis_constraint_part.html#a06562f096c62e631bb4e8571a731ffb0',1,'DualAxisConstraintPart::RestoreState()'],['../class_axis_constraint_part.html#afdaf8583a278a760eae80b8169ee6989',1,'AxisConstraintPart::RestoreState()'],['../class_angle_constraint_part.html#a80bd3ee7db86967d1a55100ab244d01c',1,'AngleConstraintPart::RestoreState()'],['../class_constraint_manager.html#aa6041abc2a70cc411e4d814c9dbf43f2',1,'ConstraintManager::RestoreState()'],['../class_constraint.html#a9a8b58f759bee231ebbfc7147041a0b7',1,'Constraint::RestoreState()'],['../class_cone_constraint.html#a1f9682febf21f688361448462dbe785c',1,'ConeConstraint::RestoreState()'],['../struct_character_virtual_1_1_contact.html#a952dfd4d7f5eaf9c790ae88d88cdb83a',1,'CharacterVirtual::Contact::RestoreState()'],['../class_character_virtual.html#a34ce1577ff0641d5a326af721a3c9b71',1,'CharacterVirtual::RestoreState()'],['../class_character_base.html#ad9d1540df7d44b3aaeee88a527df7d7d',1,'CharacterBase::RestoreState()'],['../class_motion_properties.html#a09a1e9e46776c7d15cdd2b19c4a146f6',1,'MotionProperties::RestoreState()'],['../class_body_manager.html#af64512a91a78f48a75c5cead5552e281',1,'BodyManager::RestoreState()'],['../class_body.html#a5b4cf0e59625d5607d1317e8ad2de290',1,'Body::RestoreState()'],['../class_pulley_constraint.html#a292df1ddeb2b9ec1ff7c96f3742c81f7',1,'PulleyConstraint::RestoreState()'],['../class_motorcycle_controller.html#a6487c412c79e33f47863ab08f2b63935',1,'MotorcycleController::RestoreState()'],['../class_physics_system.html#a5c0936f0d1e9cc6f05a100e48a687bb6',1,'PhysicsSystem::RestoreState()'],['../class_rack_and_pinion_constraint.html#a466997d9cdcd2cae27eca964faa5ebd3',1,'RackAndPinionConstraint::RestoreState()'],['../class_six_d_o_f_constraint.html#a816d37d27455acd262a58e565445ba8d',1,'SixDOFConstraint::RestoreState()'],['../class_swing_twist_constraint.html#ab8a66fa8ace006007551e20f26859e60',1,'SwingTwistConstraint::RestoreState()'],['../class_slider_constraint.html#a9512c8658bafebac41965f0e5d8b0377',1,'SliderConstraint::RestoreState()']]], + ['restoresubshapestate_167',['restoresubshapestate',['../class_compound_shape.html#a75ac24c967580322df489ae7afb6e87b',1,'CompoundShape::RestoreSubShapeState()'],['../class_decorated_shape.html#a642be3c50a8c3b2891161aeb32f4b7df',1,'DecoratedShape::RestoreSubShapeState()'],['../class_shape.html#ab4de39f5e4972919f1211ec73520b1d8',1,'Shape::RestoreSubShapeState()']]], + ['result_168',['result',['../class_result.html',1,'Result< Type >'],['../class_result.html#a48ea3c542aca44533bbe0467ce7edb32',1,'Result::Result()'],['../class_result.html#a0cb5b79fcbc7a428276cec91bfc794cb',1,'Result::Result(const Result< Type > &inRHS)'],['../class_result.html#ad9e9e7780434af5bdfe5652c0b621862',1,'Result::Result(Result< Type > &&inRHS) noexcept']]], + ['result_2eh_169',['Result.h',['../_result_8h.html',1,'']]], + ['result_3c_20ref_3c_20shape_20_3e_20_3e_170',['Result< Ref< Shape > >',['../class_result.html',1,'']]], + ['results_171',['Results',['../md__docs_2_performance_test.html#autotoc_md7',1,'']]], + ['resulttype_172',['resulttype',['../class_any_hit_collision_collector.html#a77d0831cb582d968272a2216e99fd9db',1,'AnyHitCollisionCollector::ResultType'],['../class_closest_hit_collision_collector.html#afe58b3f7279a8934bb7faca08f68bdf7',1,'ClosestHitCollisionCollector::ResultType'],['../class_all_hit_collision_collector.html#ac61acffd70a24d96dbf53ef96134fecf',1,'AllHitCollisionCollector::ResultType'],['../class_collision_collector.html#aca5d333c728a1e1768694c8845d86783',1,'CollisionCollector::ResultType']]], + ['reversed_173',['reversed',['../class_shape_cast_result.html#ab16c921cd28c80c7acbf8005b778965f',1,'ShapeCastResult::Reversed()'],['../class_collide_shape_result.html#a84eb31fb18eea1a96cadad32a3f6fe4e',1,'CollideShapeResult::Reversed()']]], + ['reversedshapefilter_174',['reversedshapefilter',['../class_reversed_shape_filter.html',1,'ReversedShapeFilter'],['../class_reversed_shape_filter.html#aa0287d910b05b97b4cdc4fed9851e0a0',1,'ReversedShapeFilter::ReversedShapeFilter()']]], + ['rewind_175',['Rewind',['../class_state_recorder_impl.html#a57c58fddc1bcaad0e06ca22b792c908d',1,'StateRecorderImpl']]], + ['rig_20ragdolls_176',['Rig (Ragdolls)',['../md__docs_2_samples.html#autotoc_md8',1,'']]], + ['right_177',['Right',['../_vehicle_track_8h.html#a8008ce273c0da3c40bc613d9495818d2a92b09c7c48c520c3c55e497875da437c',1,'VehicleTrack.h']]], + ['rigidbody_178',['RigidBody',['../_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666a81db01c2775d4446d91c2caba27c53e8',1,'BodyType.h']]], + ['rmat44_179',['RMat44',['../_real_8h.html#ab2b99ab2c9bab2170e4744e9fb519625',1,'Real.h']]], + ['rmat44arg_180',['RMat44Arg',['../_real_8h.html#a61b9fb9774ecfc9a33318eead7118ee9',1,'Real.h']]], + ['rolling_20back_20a_20simulation_181',['Rolling Back a Simulation',['../index.html#rolling-back-a-simulation',1,'']]], + ['rotate_182',['rotate',['../class_indexed_triangle_no_material.html#a69f086f68d6d6231ffc90033c9c1acb9',1,'IndexedTriangleNoMaterial::Rotate()'],['../class_mass_properties.html#a305b372015465387eed7b337ce84a398',1,'MassProperties::Rotate()']]], + ['rotateaxisx_183',['RotateAxisX',['../class_quat.html#ad591c3ca827733b3be275ffaf808e838',1,'Quat']]], + ['rotateaxisy_184',['RotateAxisY',['../class_quat.html#adb1d1a70ed64c0a6fadc849126306706',1,'Quat']]], + ['rotateaxisz_185',['RotateAxisZ',['../class_quat.html#ab226b2147a748e53008556bcf1a3cd76',1,'Quat']]], + ['rotatedtranslated_186',['RotatedTranslated',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba2215a85eb4276343896831176daa98fd',1,'Shape.h']]], + ['rotatedtranslatedshape_187',['rotatedtranslatedshape',['../class_rotated_translated_shape.html',1,'RotatedTranslatedShape'],['../class_rotated_translated_shape.html#adb464f1e2b1cc92b8842b8b9c799711f',1,'RotatedTranslatedShape::RotatedTranslatedShape(const RotatedTranslatedShapeSettings &inSettings, ShapeResult &outResult)'],['../class_rotated_translated_shape.html#a2d80aa08a7ae24694dff0721c3e5cd5c',1,'RotatedTranslatedShape::RotatedTranslatedShape()'],['../class_rotated_translated_shape.html#a404c0c0433b1c4a0779d5b58ad4f9fb3',1,'RotatedTranslatedShape::RotatedTranslatedShape(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)']]], + ['rotatedtranslatedshape_2ecpp_188',['RotatedTranslatedShape.cpp',['../_rotated_translated_shape_8cpp.html',1,'']]], + ['rotatedtranslatedshape_2eh_189',['RotatedTranslatedShape.h',['../_rotated_translated_shape_8h.html',1,'']]], + ['rotatedtranslatedshapesettings_190',['rotatedtranslatedshapesettings',['../class_rotated_translated_shape_settings.html',1,'RotatedTranslatedShapeSettings'],['../class_rotated_translated_shape_settings.html#a4b1d4bb9af26dc7b4839e5613be1d7e3',1,'RotatedTranslatedShapeSettings::RotatedTranslatedShapeSettings(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)'],['../class_rotated_translated_shape_settings.html#aca284712649bfd71718d9d761fc3039f',1,'RotatedTranslatedShapeSettings::RotatedTranslatedShapeSettings(Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape)'],['../class_rotated_translated_shape_settings.html#ad5285a469a3df9bfd11c8fd83dc074b9',1,'RotatedTranslatedShapeSettings::RotatedTranslatedShapeSettings()=default']]], + ['rotatescale_191',['RotateScale',['../namespace_scale_helpers.html#a317905196055a0a720d6468cbb4840b9',1,'ScaleHelpers']]], + ['rotationeulerconstraintpart_192',['RotationEulerConstraintPart',['../class_rotation_euler_constraint_part.html',1,'']]], + ['rotationeulerconstraintpart_2eh_193',['RotationEulerConstraintPart.h',['../_rotation_euler_constraint_part_8h.html',1,'']]], + ['rotationquatconstraintpart_194',['RotationQuatConstraintPart',['../class_rotation_quat_constraint_part.html',1,'']]], + ['rotationquatconstraintpart_2eh_195',['RotationQuatConstraintPart.h',['../_rotation_quat_constraint_part_8h.html',1,'']]], + ['rotationx_196',['rotationx',['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a14dcec09ce1f4dfaac5955bc70825ebc',1,'RotationX: AllowedDOFs.h'],['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cda3bb18dfab58908c6fe0a34212574e804',1,'SixDOFConstraintSettings::RotationX']]], + ['rotationy_197',['rotationy',['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a7527ced5a5153f3b21e31c4b177c2ea7',1,'RotationY: AllowedDOFs.h'],['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cdab473d487df9caec2fc6c2f2e5c7f0a40',1,'SixDOFConstraintSettings::RotationY']]], + ['rotationz_198',['rotationz',['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ae967cae1a9d601b4335123e013328d34',1,'RotationZ: AllowedDOFs.h'],['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cdaf83d5f4c529f5ff08c44a4a229536c7e',1,'SixDOFConstraintSettings::RotationZ']]], + ['round_5fto_5fnearest_199',['ROUND_TO_NEAREST',['../namespace_half_float_conversion.html#aa3241cac5bd296cd04f7600e353eb1a4aaa7855ec8f43c914312cd51064ad0f64',1,'HalfFloatConversion']]], + ['round_5fto_5fneg_5finf_200',['ROUND_TO_NEG_INF',['../namespace_half_float_conversion.html#aa3241cac5bd296cd04f7600e353eb1a4a469f1ba56ff2b3d2cb1b8f5bbba127d9',1,'HalfFloatConversion']]], + ['round_5fto_5fpos_5finf_201',['ROUND_TO_POS_INF',['../namespace_half_float_conversion.html#aa3241cac5bd296cd04f7600e353eb1a4a73c8f88f26cb5185803bc16adb69fbd6',1,'HalfFloatConversion']]], + ['rraycast_202',['rraycast',['../struct_r_ray_cast.html#a2c5b7e63adeca394564930ff9e6d6205',1,'RRayCast::RRayCast()'],['../struct_r_ray_cast.html',1,'RRayCast']]], + ['rshapecast_203',['rshapecast',['../struct_r_shape_cast.html#a006aae5be875eba47b5bdd3778e36e2f',1,'RShapeCast::RShapeCast()'],['../struct_r_shape_cast.html',1,'RShapeCast']]], + ['rtti_204',['rtti',['../class_r_t_t_i.html#aea79f36f0cf2786b1d64a46a179a009f',1,'RTTI::RTTI(const char *inName, int inSize, pCreateObjectFunction inCreateObject, pDestructObjectFunction inDestructObject)'],['../class_r_t_t_i.html#a200b9e466fc9653a73e2a4f7cc5c8d11',1,'RTTI::RTTI(const char *inName, int inSize, pCreateObjectFunction inCreateObject, pDestructObjectFunction inDestructObject, pCreateRTTIFunction inCreateRTTI)'],['../class_r_t_t_i.html',1,'RTTI']]], + ['rtti_2ecpp_205',['RTTI.cpp',['../_r_t_t_i_8cpp.html',1,'']]], + ['rtti_2eh_206',['RTTI.h',['../_r_t_t_i_8h.html',1,'']]], + ['rvec3_207',['RVec3',['../_real_8h.html#ae088dda635fb0ba1c96ea179d384ca40',1,'Real.h']]], + ['rvec3arg_208',['RVec3Arg',['../_real_8h.html#a43bea2d9c57780b4b66bab1312fd77f3',1,'Real.h']]] +]; diff --git a/search/all_15.js b/search/all_15.js new file mode 100644 index 000000000..f997e2e4a --- /dev/null +++ b/search/all_15.js @@ -0,0 +1,746 @@ +var searchData= +[ + ['sample_0',['Sample',['../class_skeletal_animation.html#a1cc26e80f2a36deac4cbe3ecee10299b',1,'SkeletalAnimation']]], + ['samples_1',['Jolt Physics Samples',['../md__docs_2_samples.html',1,'']]], + ['samples_2emd_2',['Samples.md',['../_samples_8md.html',1,'']]], + ['sand_3',['sand',['../class_vec4.html#a1b0f06643e493c801cdd07a18ff8b2dd',1,'Vec4::sAnd()'],['../class_d_vec3.html#a1cc30fe9dbcd37737dab80818f790ae8',1,'DVec3::sAnd()'],['../class_u_vec4.html#a69a2126a24a31ead596e3316c1285145',1,'UVec4::sAnd()'],['../class_u_vec8.html#a50253d7ab7872642a1cbe8c200759432',1,'UVec8::sAnd()'],['../class_vec3.html#a96e892074ac7e8638cb70ede768f08a8',1,'Vec3::sAnd()']]], + ['sanitize_4',['Sanitize',['../class_mesh_shape_settings.html#a34521f76c7a01d659260902de5191553',1,'MeshShapeSettings']]], + ['satan2_5',['sATan2',['../class_vec4.html#a276178476f7db15b1925cae464f136cf',1,'Vec4']]], + ['savebinarystate_6',['savebinarystate',['../class_fixed_constraint_settings.html#a88c2bdb8ffe59b43f61165ab2b6b5909',1,'FixedConstraintSettings::SaveBinaryState()'],['../class_swing_twist_constraint_settings.html#a4fe33d4d02bc21c602c0396e3e2fa981',1,'SwingTwistConstraintSettings::SaveBinaryState()'],['../class_spring_settings.html#a8da853a3005b1797148dd6c8350d0c62',1,'SpringSettings::SaveBinaryState()'],['../class_slider_constraint_settings.html#acfae9c6e70eef7f2fdb2d12fd718f187',1,'SliderConstraintSettings::SaveBinaryState()'],['../class_six_d_o_f_constraint_settings.html#a765a3475ed53ef68701c6113ba7dd46b',1,'SixDOFConstraintSettings::SaveBinaryState()'],['../class_rack_and_pinion_constraint_settings.html#a92be9cdd89c5a465323f2a770c13fef6',1,'RackAndPinionConstraintSettings::SaveBinaryState()'],['../class_pulley_constraint_settings.html#ab8b9eea11b3adb23d825581a821c4a8f',1,'PulleyConstraintSettings::SaveBinaryState()'],['../class_physics_scene.html#a92a0fecb9380ce4a7ac7ebe75cba8c47',1,'PhysicsScene::SaveBinaryState()'],['../class_point_constraint_settings.html#a40d21e7ac18cc0d8a922a2d7398cd7a1',1,'PointConstraintSettings::SaveBinaryState()'],['../class_path_constraint_path_hermite.html#a5ebfbd249290a134915daf8f451ad050',1,'PathConstraintPathHermite::SaveBinaryState()'],['../class_path_constraint_path.html#a5e969d5cd0b3bede01788cb898445d36',1,'PathConstraintPath::SaveBinaryState()'],['../class_path_constraint_settings.html#a9c56f9bc1b35f6df6b7aa520a4128fdf',1,'PathConstraintSettings::SaveBinaryState()'],['../class_motor_settings.html#ac0a3de2c2c2545e381d5c00014bef682',1,'MotorSettings::SaveBinaryState()'],['../class_hinge_constraint_settings.html#ad1949141d8e31c72cd3eb6dcd8e82d28',1,'HingeConstraintSettings::SaveBinaryState()'],['../class_gear_constraint_settings.html#acfd729d2e49300f557a029ad14598b60',1,'GearConstraintSettings::SaveBinaryState()'],['../class_soft_body_creation_settings.html#a85c901c0830e24d6d663e90ab5d109e1',1,'SoftBodyCreationSettings::SaveBinaryState()'],['../class_ragdoll_settings.html#a5ac758eeeb02faf2d90dbf70c874fda5',1,'RagdollSettings::SaveBinaryState()'],['../class_soft_body_shared_settings.html#a237a177ff6a49cc11207c196220f321b',1,'SoftBodySharedSettings::SaveBinaryState()'],['../class_motorcycle_controller_settings.html#a715ebed22f63c05036175346dd7aa508',1,'MotorcycleControllerSettings::SaveBinaryState()'],['../class_wheel_settings_t_v.html#aa38d108404d72d9ddac0d87be1b22e8e',1,'WheelSettingsTV::SaveBinaryState()'],['../class_tracked_vehicle_controller_settings.html#aa97756bf83a666d7e93529605679c7aa',1,'TrackedVehicleControllerSettings::SaveBinaryState()'],['../class_vehicle_anti_roll_bar.html#adef2c8bc1bce0835c229f03bafcf6c97',1,'VehicleAntiRollBar::SaveBinaryState()'],['../class_vehicle_constraint_settings.html#ad880e9519583ffb70b93bec474176fd6',1,'VehicleConstraintSettings::SaveBinaryState()'],['../class_vehicle_controller_settings.html#a8508baa59b73af00f019d542166a88cc',1,'VehicleControllerSettings::SaveBinaryState()'],['../class_vehicle_differential_settings.html#aab96aa7556774945dbf7886849015af9',1,'VehicleDifferentialSettings::SaveBinaryState()'],['../class_vehicle_engine_settings.html#a82b4677535f7f39e68081227caf4b547',1,'VehicleEngineSettings::SaveBinaryState()'],['../class_vehicle_track_settings.html#a22893d7c73b60b53e21885cdf65ac7ba',1,'VehicleTrackSettings::SaveBinaryState()'],['../class_vehicle_transmission_settings.html#ac843a815cfe9ce6ad3fd4f5872d187e1',1,'VehicleTransmissionSettings::SaveBinaryState()'],['../class_wheel_settings.html#a52e5ea54df8206459139d6fce7f77503',1,'WheelSettings::SaveBinaryState()'],['../class_wheel_settings_w_v.html#a907782aa9c6e6c2dde932b9b01835796',1,'WheelSettingsWV::SaveBinaryState()'],['../class_wheeled_vehicle_controller_settings.html#ae82335336bab2f06e41dc7ae4325f394',1,'WheeledVehicleControllerSettings::SaveBinaryState()'],['../class_skeleton.html#a79a39de0388c130dd03acfb1d9e71f8d',1,'Skeleton::SaveBinaryState()'],['../class_constraint_settings.html#a3123d8d5dc6b127c2d19c95f6fe23a74',1,'ConstraintSettings::SaveBinaryState()'],['../class_linear_curve.html#a7e8f85b447ccb50d077a1fd61da102e0',1,'LinearCurve::SaveBinaryState()'],['../class_body_creation_settings.html#aabf81d68f5c180341800d69b401dddee',1,'BodyCreationSettings::SaveBinaryState()'],['../class_mass_properties.html#a31b51417175f6cd0d840d2c6bce22815',1,'MassProperties::SaveBinaryState()'],['../class_collision_group.html#a687bdb750277759925f00c5fb55b6835',1,'CollisionGroup::SaveBinaryState()'],['../class_group_filter.html#a6f3b0c5ed9ee49737c5f40b63aaac8f1',1,'GroupFilter::SaveBinaryState()'],['../class_distance_constraint_settings.html#a6ccc7f6a9630c0c6f818a82c37640943',1,'DistanceConstraintSettings::SaveBinaryState()'],['../class_group_filter_table.html#a0e3db9e4ef6cf71323126e6ce48fa4dc',1,'GroupFilterTable::SaveBinaryState()'],['../class_physics_material.html#a7e57e5082b30e978c7ddd6a8e77c983e',1,'PhysicsMaterial::SaveBinaryState()'],['../class_physics_material_simple.html#a686edc9c7407485b239d51e634dccd77',1,'PhysicsMaterialSimple::SaveBinaryState()'],['../class_box_shape.html#ab93fc4ffd39a648e2627478638547746',1,'BoxShape::SaveBinaryState()'],['../class_capsule_shape.html#a75a13a9c3137ac60110d6fdbc72bddf3',1,'CapsuleShape::SaveBinaryState()'],['../class_compound_shape.html#a92f328ba37c5ad9d3a5555db36e05003',1,'CompoundShape::SaveBinaryState()'],['../class_convex_hull_shape.html#a358bad64610220b2deb68c4aa821748e',1,'ConvexHullShape::SaveBinaryState()'],['../class_convex_shape.html#aa9c3915087e7b816b583a8041c5701f6',1,'ConvexShape::SaveBinaryState()'],['../class_cylinder_shape.html#ac729688b4dd3357fb1df7d4e445a25d9',1,'CylinderShape::SaveBinaryState()'],['../class_height_field_shape.html#acc3c82df54796217822e188dd39bd87b',1,'HeightFieldShape::SaveBinaryState()'],['../class_cone_constraint_settings.html#a39ca1254ca2bb8c686eec1c92cbe48a3',1,'ConeConstraintSettings::SaveBinaryState()'],['../class_triangle_shape.html#a846c245654d20a47cd41a4d01a1d035f',1,'TriangleShape::SaveBinaryState()'],['../class_tapered_cylinder_shape.html#a4a9d2c6c60f31564e1fc79d8407bf3a3',1,'TaperedCylinderShape::SaveBinaryState()'],['../class_tapered_capsule_shape.html#a4f7f63f0180a3b3ac54c7401bc9b32d7',1,'TaperedCapsuleShape::SaveBinaryState()'],['../class_static_compound_shape.html#ac94ac9145e77b8bbcdb36849a26db213',1,'StaticCompoundShape::SaveBinaryState()'],['../class_sphere_shape.html#a593b20c96307bfdda61738cbf6cee311',1,'SphereShape::SaveBinaryState()'],['../class_shape.html#a0035a8aa07e9e071f6a64edb45146363',1,'Shape::SaveBinaryState()'],['../class_scaled_shape.html#a44da6adb8f71a4d68041605fd0250f1b',1,'ScaledShape::SaveBinaryState()'],['../class_rotated_translated_shape.html#ad474354b85d68912f80ce757e0e9713f',1,'RotatedTranslatedShape::SaveBinaryState()'],['../class_plane_shape.html#aa43b150c8cb52005c60a2a2f3c97dffe',1,'PlaneShape::SaveBinaryState()'],['../class_offset_center_of_mass_shape.html#a2ee29aa558cfbc8a0f3b04258b4d5c73',1,'OffsetCenterOfMassShape::SaveBinaryState()'],['../class_mutable_compound_shape.html#a07aa65e4960f1ad78764007a209c13eb',1,'MutableCompoundShape::SaveBinaryState()'],['../class_mesh_shape.html#a2c264f02bc4379a0b28e90a6aa2985ea',1,'MeshShape::SaveBinaryState()']]], + ['savebodystate_7',['savebodystate',['../class_physics_system.html#a29255e6d9124402e08319bfbf81b8509',1,'PhysicsSystem::SaveBodyState()'],['../class_body_manager.html#ab1eb2a2bbf12bbe839475093826b6ceb',1,'BodyManager::SaveBodyState()']]], + ['savematerialstate_8',['savematerialstate',['../class_shape.html#a6ff903d54f10469f51e1862b32406845',1,'Shape::SaveMaterialState()'],['../class_height_field_shape.html#acef4504a65c6f299d457b072dbe3789b',1,'HeightFieldShape::SaveMaterialState()'],['../class_mesh_shape.html#a8ee3f73b71810e75590dc6bf31f0a072',1,'MeshShape::SaveMaterialState()'],['../class_plane_shape.html#a6da289fe4c65f80b912ff843493a0c31',1,'PlaneShape::SaveMaterialState()'],['../class_convex_shape.html#aa9b6442bec38456b3b263bfc8c9e0c34',1,'ConvexShape::SaveMaterialState()']]], + ['saveobjectarray_9',['SaveObjectArray',['../namespace_stream_utils.html#ac77c5ff89ac5ab2af2b924af47ba9199',1,'StreamUtils']]], + ['saveobjectreference_10',['SaveObjectReference',['../namespace_stream_utils.html#af32cd6cffeb28a74dc98d6ba952f3523',1,'StreamUtils']]], + ['savestate_11',['savestate',['../class_rotation_euler_constraint_part.html#afda34f355272d02e5daf8103639b22bf',1,'RotationEulerConstraintPart::SaveState()'],['../class_motorcycle_controller.html#aaf36cea2087933532624f37c78052a93',1,'MotorcycleController::SaveState()'],['../class_rotation_quat_constraint_part.html#a9ca6e071472fdc3e1ce31b115bfee6e4',1,'RotationQuatConstraintPart::SaveState()'],['../class_swing_twist_constraint_part.html#a901f23c5450f15ee2c8979776fcdbf15',1,'SwingTwistConstraintPart::SaveState()'],['../class_contact_constraint_manager.html#a09b5daefc89dca1489be3afa077cfcc0',1,'ContactConstraintManager::SaveState()'],['../class_distance_constraint.html#a8220e4b735572de4324c0cd1a181150f',1,'DistanceConstraint::SaveState()'],['../class_fixed_constraint.html#ae23ae7de219a75c7d80d0e9b8af6ea2c',1,'FixedConstraint::SaveState()'],['../class_gear_constraint.html#a31f12343d049e8c9a48136bb1a103b73',1,'GearConstraint::SaveState()'],['../class_hinge_constraint.html#a5a0a5235be47dfd889f89a4651f36993',1,'HingeConstraint::SaveState()'],['../class_path_constraint.html#a488ab67aba069c0fa0c81194afc74bd1',1,'PathConstraint::SaveState()'],['../class_point_constraint.html#aa6743d4f861f34b303b5bddadb3157d9',1,'PointConstraint::SaveState()'],['../class_pulley_constraint.html#ac37299bf924b5d34e41c8a51c621906a',1,'PulleyConstraint::SaveState()'],['../class_rack_and_pinion_constraint.html#a7af920eb7de9a8e52f80b2ca386fb8a5',1,'RackAndPinionConstraint::SaveState()'],['../class_six_d_o_f_constraint.html#ad6062bc0bb66d6bfa9a57e6e4e62fefa',1,'SixDOFConstraint::SaveState()'],['../class_swing_twist_constraint.html#aee888f6c281abbbccc3e33d108716824',1,'SwingTwistConstraint::SaveState()'],['../class_physics_system.html#ae13975e609ff125fa02b922795777824',1,'PhysicsSystem::SaveState()'],['../class_soft_body_motion_properties.html#aadcb5dbf36db97843bb74b18e8b02807',1,'SoftBodyMotionProperties::SaveState()'],['../class_constraint.html#a829eb3dda397de5cc7a7799ce959cc8b',1,'Constraint::SaveState()'],['../class_slider_constraint.html#a7025971cdb5e449293df12e2f4f56e97',1,'SliderConstraint::SaveState()'],['../class_body.html#a64202a0bd7babbef34094157036bda8c',1,'Body::SaveState()'],['../class_body_manager.html#a5fcbaca9d9a52129a56451ce519e9598',1,'BodyManager::SaveState()'],['../class_motion_properties.html#a9e308e4fb4cbb6c7dad8fe6b65d71aca',1,'MotionProperties::SaveState()'],['../class_character_base.html#ab28f7afaa654cf8461f3638dd01334e0',1,'CharacterBase::SaveState()'],['../class_character_virtual.html#a4eec1547ca605d2556bf781237b40ee7',1,'CharacterVirtual::SaveState()'],['../struct_character_virtual_1_1_contact.html#ae726dbb4b578dfa2f083a74e3eb5c544',1,'CharacterVirtual::Contact::SaveState()'],['../class_cone_constraint.html#a754754ea8cf871ed812f27bed021fbc9',1,'ConeConstraint::SaveState()'],['../class_rack_and_pinion_constraint_part.html#ac4c35753b0bb3f976c7fdf4ec88f3ffe',1,'RackAndPinionConstraintPart::SaveState()'],['../class_constraint_manager.html#a77ead63fb9a81614e3a9bede90fbe730',1,'ConstraintManager::SaveState()'],['../class_angle_constraint_part.html#ab75081badd77c6854423f45825ff36ce',1,'AngleConstraintPart::SaveState()'],['../class_axis_constraint_part.html#ad17a6a0c982d958f3e96e3b460315e5f',1,'AxisConstraintPart::SaveState()'],['../class_dual_axis_constraint_part.html#a88aa1c3d00a9b0bcdcbbb3fa964dd18f',1,'DualAxisConstraintPart::SaveState()'],['../class_gear_constraint_part.html#afa8089c72687df9833186a2078cd1aa5',1,'GearConstraintPart::SaveState()'],['../class_hinge_rotation_constraint_part.html#aa35cc45b0e9cfbb7063508e24c677879',1,'HingeRotationConstraintPart::SaveState()'],['../class_independent_axis_constraint_part.html#a8982c9bb0de919245c5a463880877a32',1,'IndependentAxisConstraintPart::SaveState()'],['../class_point_constraint_part.html#ae6cd6fa33d18b3f7123a2a093a976257',1,'PointConstraintPart::SaveState()'],['../class_vehicle_constraint.html#a6bdcc90af7d830f5821534d34be01ff7',1,'VehicleConstraint::SaveState()'],['../class_vehicle_controller.html#ae169fc92f5bfadd69ae4afe3c81e799d',1,'VehicleController::SaveState()'],['../class_vehicle_engine.html#a14fa6274b90508346dedcc3e21864204',1,'VehicleEngine::SaveState()'],['../class_vehicle_track.html#af25ef64c8e7fcdab73dc212f4f40d383',1,'VehicleTrack::SaveState()'],['../class_tracked_vehicle_controller.html#acbb1cc373f9ca7da7c9d79bf8195b257',1,'TrackedVehicleController::SaveState()'],['../class_vehicle_transmission.html#a9424eebce9e6a038862d1a3e66fa94ad',1,'VehicleTransmission::SaveState()'],['../class_wheeled_vehicle_controller.html#ad625db11394127fd656e149e5131c10a',1,'WheeledVehicleController::SaveState()']]], + ['savesubshapestate_12',['savesubshapestate',['../class_decorated_shape.html#a73313accd26250780d6baa06c7098197',1,'DecoratedShape::SaveSubShapeState()'],['../class_shape.html#a09215d250a425cca2e9b4bed32761bc4',1,'Shape::SaveSubShapeState()'],['../class_compound_shape.html#ac06931859e525bc0b7a2513c7c84176a',1,'CompoundShape::SaveSubShapeState()']]], + ['savewithchildren_13',['savewithchildren',['../class_body_creation_settings.html#a1fd7d70d7e594158940a126d69c64a77',1,'BodyCreationSettings::SaveWithChildren()'],['../class_shape.html#a29511616de01507e714e8187686bc9f1',1,'Shape::SaveWithChildren()'],['../class_soft_body_creation_settings.html#aad762e491883987d0023fd7613b3642b',1,'SoftBodyCreationSettings::SaveWithChildren()']]], + ['savewithmaterials_14',['SaveWithMaterials',['../class_soft_body_shared_settings.html#a04cd0a82ccf0f88cf350f08dc04721db',1,'SoftBodySharedSettings']]], + ['saving_20shapes_15',['Saving Shapes',['../index.html#saving-shapes',1,'']]], + ['saxisx_16',['saxisx',['../class_d_vec3.html#a6c8bccdc7a9dfb0897f00b73284db110',1,'DVec3::sAxisX()'],['../class_vec3.html#a142cc5c79f08229eb11532c26f1a1e90',1,'Vec3::sAxisX()']]], + ['saxisy_17',['saxisy',['../class_d_vec3.html#a1af180166bc463c9b4c4aa2997399f17',1,'DVec3::sAxisY()'],['../class_vec3.html#a2819718744feddb0bc150c6ccc26fad1',1,'Vec3::sAxisY()']]], + ['saxisz_18',['saxisz',['../class_d_vec3.html#aa3bc7e15bfe4452110934ef29c984626',1,'DVec3::sAxisZ()'],['../class_vec3.html#aa16ac2747950d2e64537f8454872d174',1,'Vec3::sAxisZ()']]], + ['sbcsresult_19',['SBCSResult',['../class_soft_body_creation_settings.html#a550ccd09ee96f7c25f31e83faf3b60b4',1,'SoftBodyCreationSettings']]], + ['sbiggest_20',['sBiggest',['../class_a_a_box.html#a15167b9943311d8f05cd02a008563f7b',1,'AABox']]], + ['sblack_21',['sBlack',['../class_color.html#a1bcbf41a84ff717931a80898f6c77418',1,'Color']]], + ['sblue_22',['sBlue',['../class_color.html#a2a5307280d26a1275ad37bf0d747039f',1,'Color']]], + ['sbsgettrianglescontext_23',['SBSGetTrianglesContext',['../struct_soft_body_shape_1_1_s_b_s_get_triangles_context.html',1,'SoftBodyShape']]], + ['sbuildislands_24',['sBuildIslands',['../class_constraint_manager.html#a8d25eeed84ba6551c00751925af42d78',1,'ConstraintManager']]], + ['scalculatebounds_25',['sCalculateBounds',['../class_debug_renderer.html#a0edac3fd825b7c5498e5f957b4a9707b',1,'DebugRenderer']]], + ['scale_26',['Scale',['../class_mass_properties.html#ada0108c75189e3eb85b7aef5de1d07d8',1,'MassProperties']]], + ['scaleconvexradius_27',['ScaleConvexRadius',['../namespace_scale_helpers.html#a3c182e760f2d4a5b0985b20d50b0c870',1,'ScaleHelpers']]], + ['scaled_28',['scaled',['../class_a_a_box.html#a31ebfa8ddbf9f09cb16aee086e0bbffc',1,'AABox::Scaled()'],['../class_plane.html#ac4f910a7761fd54f014a193b4d53dfb6',1,'Plane::Scaled()'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba7380ae6c5e1189eef50cfd0557d74e99',1,'Scaled: Shape.h']]], + ['scaled_20shapes_29',['Shapes & Scaled Shapes',['../md__docs_2_samples.html#autotoc_md16',1,'']]], + ['scaledshape_30',['scaledshape',['../class_scaled_shape.html',1,'ScaledShape'],['../class_scaled_shape.html#acbf4859938f121f2defeca164a97f851',1,'ScaledShape::ScaledShape(const Shape *inShape, Vec3Arg inScale)'],['../class_scaled_shape.html#a38fd4d63da779ec4e15c459e9564a1dd',1,'ScaledShape::ScaledShape(const ScaledShapeSettings &inSettings, ShapeResult &outResult)'],['../class_scaled_shape.html#aa5ad2391b58581e0d1a12388ecf9b187',1,'ScaledShape::ScaledShape()']]], + ['scaledshape_2ecpp_31',['ScaledShape.cpp',['../_scaled_shape_8cpp.html',1,'']]], + ['scaledshape_2eh_32',['ScaledShape.h',['../_scaled_shape_8h.html',1,'']]], + ['scaledshapesettings_33',['ScaledShapeSettings',['../class_scaled_shape_settings.html',1,'']]], + ['scalehelpers_34',['ScaleHelpers',['../namespace_scale_helpers.html',1,'']]], + ['scalehelpers_2eh_35',['ScaleHelpers.h',['../_scale_helpers_8h.html',1,'']]], + ['scalejoints_36',['ScaleJoints',['../class_skeletal_animation.html#a2af19e78e177662f1f8c3c3e5924d55e',1,'SkeletalAnimation']]], + ['scaleshape_37',['ScaleShape',['../class_shape.html#ae4a0954ec23eabd48f0961b16eff750a',1,'Shape']]], + ['scaletomass_38',['ScaleToMass',['../class_mass_properties.html#aff72522796c853cdd8b250082e15a2cf',1,'MassProperties']]], + ['scaling_20shapes_39',['Scaling Shapes',['../index.html#scaling-shapes',1,'']]], + ['scastshapevsshapelocalspace_40',['sCastShapeVsShapeLocalSpace',['../class_collision_dispatch.html#a684c783f79569805d64cd436800b1d2a',1,'CollisionDispatch']]], + ['scastshapevsshapeworldspace_41',['sCastShapeVsShapeWorldSpace',['../class_collision_dispatch.html#a50ed5fc6de2aa13d6f48ab29f6cf0b7f',1,'CollisionDispatch']]], + ['sclamp_42',['sclamp',['../class_vec3.html#ad9e900bfd5887a8d2e4f8ed70d69ac4e',1,'Vec3::sClamp()'],['../class_d_vec3.html#a10e8bf45f37556208decfad2ff76de67',1,'DVec3::sClamp()']]], + ['scollidepointusingraycast_43',['sCollidePointUsingRayCast',['../class_shape.html#a2fff7d5dd25602bf880f69bd92049652',1,'Shape']]], + ['scollideshapevsshape_44',['scollideshapevsshape',['../class_collision_dispatch.html#a29634d08db5d24ce7c0d5c44b547c075',1,'CollisionDispatch::sCollideShapeVsShape()'],['../class_internal_edge_removing_collector.html#ab96c83ce814ad885a981906891300497',1,'InternalEdgeRemovingCollector::sCollideShapeVsShape()']]], + ['scopeexit_45',['scopeexit',['../class_scope_exit.html#afee48c54d249f64f1301b085c343141d',1,'ScopeExit::ScopeExit()'],['../class_scope_exit.html',1,'ScopeExit< F >']]], + ['scopeexit_2eh_46',['ScopeExit.h',['../_scope_exit_8h.html',1,'']]], + ['screatehalfunitspherebottom_47',['sCreateHalfUnitSphereBottom',['../class_get_triangles_context_vertex_list.html#a9d4eb074fec7cd3b9e13193c963d2199',1,'GetTrianglesContextVertexList']]], + ['screatehalfunitspheretop_48',['sCreateHalfUnitSphereTop',['../class_get_triangles_context_vertex_list.html#afd34abcfd17cd6cc9afdbe23bd104b0f',1,'GetTrianglesContextVertexList']]], + ['screateunitopencylinder_49',['sCreateUnitOpenCylinder',['../class_get_triangles_context_vertex_list.html#aa60e7e00f4d4af9afd41471ba8dfbbb0',1,'GetTrianglesContextVertexList']]], + ['scrossproduct_50',['sCrossProduct',['../class_mat44.html#a23d5a6de1a0058d380a0bf42d263c659',1,'Mat44']]], + ['scyan_51',['sCyan',['../class_color.html#ae05e0e94f2d5b891869b444bbb29ad59',1,'Color']]], + ['sdarkblue_52',['sDarkBlue',['../class_color.html#a9cd02b2384df347f8a95c0300ad2dd76',1,'Color']]], + ['sdarkgreen_53',['sDarkGreen',['../class_color.html#acda14462b36ced25e782f4e3a264e690',1,'Color']]], + ['sdarkorange_54',['sDarkOrange',['../class_color.html#a7a3eaf6ff538ece55519961788e9a88e',1,'Color']]], + ['sdarkred_55',['sDarkRed',['../class_color.html#a121f916d90fbae9e1c9093e17e7c0108',1,'Color']]], + ['sdefault_56',['sDefault',['../class_physics_material.html#af51825c643c3cafc49e007d8ca1c14cd',1,'PhysicsMaterial']]], + ['sdefaultcanmapjoint_57',['sDefaultCanMapJoint',['../class_skeleton_mapper.html#a642ec444197fca150bddcadd5cb85bd5',1,'SkeletonMapper']]], + ['sdiagonal_58',['sDiagonal',['../class_matrix.html#ac818c6fffb4e3a42b562bae0f9fccf71',1,'Matrix']]], + ['sdistancetominshorter_59',['sDistanceToMinShorter',['../class_swing_twist_constraint_part.html#a6588973f6ab2b380c62caaa2d3658f20',1,'SwingTwistConstraintPart']]], + ['sdrawconstraints_60',['sDrawConstraints',['../class_character_virtual.html#aba0e60ca84ea36613fc54800b4fee7e2',1,'CharacterVirtual']]], + ['sdrawcontactmanifolds_61',['sDrawContactManifolds',['../class_contact_constraint_manager.html#af60346481284d7b7f232d9b7130ccbab',1,'ContactConstraintManager']]], + ['sdrawcontactpoint_62',['sDrawContactPoint',['../class_contact_constraint_manager.html#a1c775cdd66c1e6c3c86fff836b4bc8f6',1,'ContactConstraintManager']]], + ['sdrawcontactpointreduction_63',['sDrawContactPointReduction',['../class_contact_constraint_manager.html#a512778f011224018a58c7cdb04ec74df',1,'ContactConstraintManager']]], + ['sdrawfaceoutlines_64',['sDrawFaceOutlines',['../class_convex_hull_shape.html#a2402804e0b854b78352e9ee9b40cbb3d',1,'ConvexHullShape']]], + ['sdrawmotionqualitylinearcast_65',['sDrawMotionQualityLinearCast',['../class_physics_system.html#ab712e87abefb18cec82d9843e60c9bfb',1,'PhysicsSystem']]], + ['sdrawsticktofloor_66',['sDrawStickToFloor',['../class_character_virtual.html#ab2cf324c0dfc9c7275d985f94f663a84',1,'CharacterVirtual']]], + ['sdrawsubmergedvolumes_67',['sDrawSubmergedVolumes',['../class_shape.html#af317ba0cd0b3cd9e093c2e417f5f230e',1,'Shape']]], + ['sdrawsupportingfaces_68',['sDrawSupportingFaces',['../class_contact_constraint_manager.html#a7ffa89c50ba531470ecdfcfdbb073d5e',1,'ContactConstraintManager']]], + ['sdrawtrianglegroups_69',['sDrawTriangleGroups',['../class_mesh_shape.html#a55d8f10ffa736b47cab5509ea8e672c6',1,'MeshShape']]], + ['sdrawtriangleoutlines_70',['sdrawtriangleoutlines',['../class_mesh_shape.html#a85a1e0af5d021593c14c81abfd9a8e3a',1,'MeshShape::sDrawTriangleOutlines'],['../class_height_field_shape.html#ab4e22cd9e09dee697261bb7a226908b3',1,'HeightFieldShape::sDrawTriangleOutlines']]], + ['sdrawwalkstairs_71',['sDrawWalkStairs',['../class_character_virtual.html#ab3667a21e5aab369907773ed056c74a9',1,'CharacterVirtual']]], + ['semaphore_72',['semaphore',['../class_semaphore.html#a2bfd704fcdf7d949c23a05fd3eb74582',1,'Semaphore::Semaphore()'],['../class_semaphore.html',1,'Semaphore']]], + ['semaphore_2ecpp_73',['Semaphore.cpp',['../_semaphore_8cpp.html',1,'']]], + ['semaphore_2eh_74',['Semaphore.h',['../_semaphore_8h.html',1,'']]], + ['sensors_75',['Sensors',['../index.html#sensors',1,'']]], + ['sequals_76',['sequals',['../class_vec4.html#a698a4e6c270545046633b043eb36d21f',1,'Vec4::sEquals()'],['../class_vec3.html#acd0e4130c1b2863b203812f4922b3642',1,'Vec3::sEquals()'],['../class_u_vec8.html#a1652f07d05b02ca36a8f6c35f18c1cb6',1,'UVec8::sEquals()'],['../class_u_vec4.html#a7124c8dadba4fa2467bb542e33b664f1',1,'UVec4::sEquals()'],['../class_d_vec3.html#ae56eb5609346a7b025d1c6261baf54b7',1,'DVec3::sEquals()']]], + ['serializableattribute_77',['serializableattribute',['../class_serializable_attribute.html#ab8ee3ad5a95fdf86aec0422cac3b7a42',1,'SerializableAttribute::SerializableAttribute(const char *inName, uint inMemberOffset, pGetMemberPrimitiveType inGetMemberPrimitiveType, pIsType inIsType, pReadData inReadData, pWriteData inWriteData, pWriteDataType inWriteDataType)'],['../class_serializable_attribute.html#ae8a205bb6313394469d97affd2964046',1,'SerializableAttribute::SerializableAttribute(const SerializableAttribute &inOther, int inBaseOffset)'],['../class_serializable_attribute.html',1,'SerializableAttribute']]], + ['serializableattribute_2eh_78',['SerializableAttribute.h',['../_serializable_attribute_8h.html',1,'']]], + ['serializableattributeenum_2eh_79',['SerializableAttributeEnum.h',['../_serializable_attribute_enum_8h.html',1,'']]], + ['serializableattributetyped_2eh_80',['SerializableAttributeTyped.h',['../_serializable_attribute_typed_8h.html',1,'']]], + ['serializableobject_81',['SerializableObject',['../class_serializable_object.html',1,'']]], + ['serializableobject_2ecpp_82',['SerializableObject.cpp',['../_serializable_object_8cpp.html',1,'']]], + ['serializableobject_2eh_83',['SerializableObject.h',['../_serializable_object_8h.html',1,'']]], + ['set_84',['set',['../class_vehicle_transmission.html#a4d2b3e12b61038846be21623f1c2694e',1,'VehicleTransmission::Set()'],['../class_vec4.html#aec77ea18f4103929cfd9c6237f597a8a',1,'Vec4::Set()'],['../class_vec3.html#ad124c5400eba8ee0b0cf429553c4ed2c',1,'Vec3::Set()'],['../class_quat.html#a9fb5be70301ba85a3292119d71a5e9c4',1,'Quat::Set()'],['../class_d_vec3.html#a6673601fc4d03869820519fa95cb5ed1',1,'DVec3::Set()'],['../class_ray_inv_direction.html#ac9569874f14ade61e966744af2abdc79',1,'RayInvDirection::Set()'],['../class_result.html#a2e5e698448fcf24d455121278715015e',1,'Result::Set(Type &&inResult)'],['../class_result.html#a2d4677e046c9d429f9a512342bdd479b',1,'Result::Set(const Type &inResult)']]], + ['set_20body_20island_20idx_85',['Set Body Island Idx',['../index.html#set-body-island-idx',1,'']]], + ['setallowsleeping_86',['SetAllowSleeping',['../class_body.html#a4fcb04dbca94ff4cf4b48289f26c26b4',1,'Body']]], + ['setangulardamping_87',['SetAngularDamping',['../class_motion_properties.html#ae036052c7d094e459a17cdc6c9b8a0ce',1,'MotionProperties']]], + ['setangularvelocity_88',['setangularvelocity',['../class_wheel.html#a244412d3b7d9216cdf7d8f364d128b60',1,'Wheel::SetAngularVelocity()'],['../class_motion_properties.html#aa647afa51bbc165ebfa4f791fbb1f71f',1,'MotionProperties::SetAngularVelocity()'],['../class_body_interface.html#a4c18bf3267f16f16294385150f36824c',1,'BodyInterface::SetAngularVelocity()'],['../class_body.html#a15d802457f106f2255a6401ea0aaee9f',1,'Body::SetAngularVelocity()']]], + ['setangularvelocityclamped_89',['setangularvelocityclamped',['../class_motion_properties.html#a2b76b04c1ab039a881788d8a4ae7c115',1,'MotionProperties::SetAngularVelocityClamped()'],['../class_body.html#a9033b203f8511c35dca0dfc8ca1c25ca',1,'Body::SetAngularVelocityClamped(Vec3Arg inAngularVelocity)']]], + ['setapplygyroscopicforce_90',['SetApplyGyroscopicForce',['../class_body.html#acb02850d1a8baecc879d224f47e9ab70',1,'Body']]], + ['setaxisx_91',['setaxisx',['../class_mat44.html#a04aad46839683a6d3d82a400c3bbe576',1,'Mat44::SetAxisX()'],['../class_d_mat44.html#a2625f7239b7fd46e78686d1caa6dd49b',1,'DMat44::SetAxisX()']]], + ['setaxisy_92',['setaxisy',['../class_mat44.html#ada218e0e59422cb1b0b38a534b7379b8',1,'Mat44::SetAxisY()'],['../class_d_mat44.html#a69b208af491fd37ab80b8652f24376b8',1,'DMat44::SetAxisY(Vec3Arg inV)']]], + ['setaxisz_93',['setaxisz',['../class_d_mat44.html#a22e3581a9433d7d96eb62824d78dac2c',1,'DMat44::SetAxisZ()'],['../class_mat44.html#a469e83f0fb0c2975b4506c682721c3e3',1,'Mat44::SetAxisZ()']]], + ['setbackfacemode_94',['setbackfacemode',['../class_shape_cast_settings.html#a635da1ab982bb250bcd497213012c189',1,'ShapeCastSettings::SetBackFaceMode()'],['../class_ray_cast_settings.html#a639a4c728fbe093ed715399053bf53ae',1,'RayCastSettings::SetBackFaceMode()']]], + ['setbarrier_95',['SetBarrier',['../class_job_system_1_1_job.html#a83a4dee7e40f01cab6eafbafa53a4efc',1,'JobSystem::Job']]], + ['setbodyactivationlistener_96',['setbodyactivationlistener',['../class_body_manager.html#a5f4202f0ef087177b642a93c13d82d9a',1,'BodyManager::SetBodyActivationListener()'],['../class_physics_system.html#ae7c05e21f93638e9b9eb2c52dd6d850f',1,'PhysicsSystem::SetBodyActivationListener()']]], + ['setbodyfilter_97',['SetBodyFilter',['../class_vehicle_collision_tester.html#a46d45f0e1c06f4c8b08aba185e9279ac',1,'VehicleCollisionTester']]], + ['setbodyobjectlayerinternal_98',['SetBodyObjectLayerInternal',['../class_body_manager.html#ae42a0183320aaebe459af6b0cc937daf',1,'BodyManager']]], + ['setbrakeinput_99',['setbrakeinput',['../class_tracked_vehicle_controller.html#ae97359340349c437523f88b953a70759',1,'TrackedVehicleController::SetBrakeInput()'],['../class_wheeled_vehicle_controller.html#a274d8e6bb7aca40c3f3d467de6f744eb',1,'WheeledVehicleController::SetBrakeInput()']]], + ['setbroadphaselayerfilter_100',['SetBroadPhaseLayerFilter',['../class_vehicle_collision_tester.html#aa70cb825859a651d7693b78a906eee52',1,'VehicleCollisionTester']]], + ['setbroadphaselayername_101',['setbroadphaselayername',['../class_broad_phase_layer_interface_mask.html#a28a251385bdfff0681491b5bdabcb22a',1,'BroadPhaseLayerInterfaceMask::SetBroadPhaseLayerName()'],['../class_broad_phase_layer_interface_table.html#a62cece34b11f4cd2d37c063b7dc32116',1,'BroadPhaseLayerInterfaceTable::SetBroadPhaseLayerName()']]], + ['setcamerapos_102',['SetCameraPos',['../class_debug_renderer_simple.html#a35eeca6a1fcebb6ec2392798b6b62358',1,'DebugRendererSimple']]], + ['setcharactervscharactercollision_103',['SetCharacterVsCharacterCollision',['../class_character_virtual.html#a3982b9711188db9d30ee0dab32a81d0b',1,'CharacterVirtual']]], + ['setcollidekinematicvsnondynamic_104',['SetCollideKinematicVsNonDynamic',['../class_body.html#adefe521957195c57e06a905431160d10',1,'Body']]], + ['setcollisiongroup_105',['SetCollisionGroup',['../class_body.html#a16ebf80baa257da06fdf4996a8b22476',1,'Body']]], + ['setcolumn3_106',['setcolumn3',['../class_d_mat44.html#a1d996bd7e8890fd22829cdc6bfbc261b',1,'DMat44::SetColumn3()'],['../class_mat44.html#a1659c59725a85b2bb991e333381c87fe',1,'Mat44::SetColumn3()']]], + ['setcolumn4_107',['setcolumn4',['../class_d_mat44.html#a05be364fe7c3a73e6aae032f3a570743',1,'DMat44::SetColumn4()'],['../class_mat44.html#ace29aeaafa5bbff8a159105fee78e2d2',1,'Mat44::SetColumn4()']]], + ['setcombinefriction_108',['setcombinefriction',['../class_contact_constraint_manager.html#aae82d70c097d2c5a514faebd73ee4873',1,'ContactConstraintManager::SetCombineFriction()'],['../class_physics_system.html#ae1cc3e726b7e186f642c7da5f6c6a2c2',1,'PhysicsSystem::SetCombineFriction()'],['../class_vehicle_constraint.html#a1147d607170dca53a0b3be6747022a55',1,'VehicleConstraint::SetCombineFriction()']]], + ['setcombinerestitution_109',['setcombinerestitution',['../class_contact_constraint_manager.html#ae324c787f7d2ab43ed3adb13d3e7f24e',1,'ContactConstraintManager::SetCombineRestitution()'],['../class_physics_system.html#aadad532dfda2006fd3b699116e9fed08',1,'PhysicsSystem::SetCombineRestitution()']]], + ['setcomponent_110',['setcomponent',['../class_d_vec3.html#a5563e51b263bc4c08fcfbc2babd3a7a5',1,'DVec3::SetComponent()'],['../class_vec3.html#a1ef1f1ce4031e9ecd4545799525281d8',1,'Vec3::SetComponent()']]], + ['setcompounduserdata_111',['SetCompoundUserData',['../class_compound_shape.html#a79a6d4592f894bfc0ed0496bdce68e98',1,'CompoundShape']]], + ['setconstant_112',['SetConstant',['../class_plane.html#a25c2359dcb8d679f5730ff10119cba45',1,'Plane']]], + ['setconstraintpriority_113',['SetConstraintPriority',['../class_constraint.html#a4b32ce7efd330ecf878f8ace4e0dd151',1,'Constraint']]], + ['setconstraints_114',['setconstraints',['../class_rack_and_pinion_constraint.html#a988486107b258cdec71cd2bff44c8080',1,'RackAndPinionConstraint::SetConstraints()'],['../class_gear_constraint.html#a7464b55c817e3ca115ea18537245ccee',1,'GearConstraint::SetConstraints()']]], + ['setcontactlistener_115',['setcontactlistener',['../class_contact_constraint_manager.html#acf262d3235f4eea01cd2aa8a9a3bfe83',1,'ContactConstraintManager::SetContactListener()'],['../class_physics_system.html#ade7967ad5ff4a67d255cc6fb956943c8',1,'PhysicsSystem::SetContactListener()']]], + ['setcontext_116',['SetContext',['../class_collision_collector.html#ada5357990f959132a05d4d4d21f8c7b3',1,'CollisionCollector']]], + ['setcurrentrpm_117',['SetCurrentRPM',['../class_vehicle_engine.html#ab37d0e87f872355e595960fa18510861',1,'VehicleEngine']]], + ['setdensity_118',['setdensity',['../class_convex_shape_settings.html#a752045fcec2dba15556b60cc249590e5',1,'ConvexShapeSettings::SetDensity()'],['../class_convex_shape.html#a1ba0e0da5502685fd59888f3bc9cb73e',1,'ConvexShape::SetDensity()']]], + ['setdiagonal_119',['SetDiagonal',['../class_matrix.html#abf7221c00ea5a8e8bdcbac0c9082d38e',1,'Matrix']]], + ['setdiagonal3_120',['SetDiagonal3',['../class_mat44.html#ab385ba1f663f9de2137d816c0fc4fb3f',1,'Mat44']]], + ['setdiagonal4_121',['SetDiagonal4',['../class_mat44.html#a335f4cec86c172f07bd0667909a54a7e',1,'Mat44']]], + ['setdifferentiallimitedslipratio_122',['SetDifferentialLimitedSlipRatio',['../class_wheeled_vehicle_controller.html#a18c2ead8335924c4225b2580b2fd6f31',1,'WheeledVehicleController']]], + ['setdistance_123',['SetDistance',['../class_distance_constraint.html#acac4686ff8fd7d2e412af5cfcaea8d2c',1,'DistanceConstraint']]], + ['setdrawconstraintsize_124',['SetDrawConstraintSize',['../class_constraint.html#ae26efcf11518c9b1c2e15821ca7d8937',1,'Constraint']]], + ['setdriverinput_125',['setdriverinput',['../class_tracked_vehicle_controller.html#af01b954bba5b8876b3e33d0303f516ed',1,'TrackedVehicleController::SetDriverInput()'],['../class_wheeled_vehicle_controller.html#a3a3b66c895677f66890ddde7b5e6f9ba',1,'WheeledVehicleController::SetDriverInput()']]], + ['setembedded_126',['SetEmbedded',['../class_ref_target.html#a3befa746ea517453572f6f4f5fc3b099',1,'RefTarget']]], + ['setempty_127',['SetEmpty',['../class_a_a_box.html#a5c69aa69cf37132aa62dc0b58571e79c',1,'AABox']]], + ['setenabled_128',['SetEnabled',['../class_constraint.html#aa6621fbefd246003aece1e9be8a169cb',1,'Constraint']]], + ['setenableskinconstraints_129',['SetEnableSkinConstraints',['../class_soft_body_motion_properties.html#ae8b38e6b097ed9f37d9b8e844c200a4f',1,'SoftBodyMotionProperties']]], + ['setenhancedinternaledgeremoval_130',['setenhancedinternaledgeremoval',['../class_body.html#a87c94617c51d1d35e49b64b0a29d18a4',1,'Body::SetEnhancedInternalEdgeRemoval()'],['../class_character_virtual.html#a1596c6b7df4854e170f59416c67aeabc',1,'CharacterVirtual::SetEnhancedInternalEdgeRemoval()']]], + ['seterror_131',['seterror',['../class_result.html#a07ab82eb7f68bae977f6d50dde14dc1f',1,'Result::SetError(String &&inError)'],['../class_result.html#ad71493b9c42c291fed54ffd80f9b75ab',1,'Result::SetError(const string_view &inError)'],['../class_result.html#a22ac380ffc00f33d49466729d22241b0',1,'Result::SetError(const char *inError)']]], + ['setforcelimit_132',['SetForceLimit',['../class_motor_settings.html#a7dbbf359da6a861e6876f702650dd5ea',1,'MotorSettings']]], + ['setforcelimits_133',['SetForceLimits',['../class_motor_settings.html#a35ce9e0a888fed7059694121e7d8e66f',1,'MotorSettings']]], + ['setforwardinput_134',['setforwardinput',['../class_tracked_vehicle_controller.html#af035163b8e7f810c7c397186c35d577a',1,'TrackedVehicleController::SetForwardInput()'],['../class_wheeled_vehicle_controller.html#a219dd9b901cf12dc8e8a6eb2fa8d6915',1,'WheeledVehicleController::SetForwardInput()']]], + ['setfriction_135',['setfriction',['../class_body.html#af3576faa64307d6d9318a7c0dad47d21',1,'Body::SetFriction()'],['../class_body_interface.html#affaf38fde1489b775c179303ed67c0cc',1,'BodyInterface::SetFriction()']]], + ['setgravity_136',['SetGravity',['../class_physics_system.html#ad09c12009bbcb0d0e6dbfd9582593be4',1,'PhysicsSystem']]], + ['setgravityfactor_137',['setgravityfactor',['../class_body_interface.html#a2171a36d0ff2b98c019ed4b0bcb0db39',1,'BodyInterface::SetGravityFactor()'],['../class_motion_properties.html#a8cc6486eb03942da485948ba1cadb78c',1,'MotionProperties::SetGravityFactor()']]], + ['setgroupfilter_138',['SetGroupFilter',['../class_collision_group.html#a24632cad19f63669929509eceb904290',1,'CollisionGroup']]], + ['setgroupid_139',['setgroupid',['../class_collision_group.html#ab49afbb0cbf8526e2b1ee89d8f2a34dd',1,'CollisionGroup::SetGroupID()'],['../class_ragdoll.html#add1a811191c5e75e489598594123e85b',1,'Ragdoll::SetGroupID()']]], + ['sethalfconeangle_140',['SetHalfConeAngle',['../class_cone_constraint.html#ad50d26fc50088ee00e7bb9a7248f5fc4',1,'ConeConstraint']]], + ['sethandbrakeinput_141',['SetHandBrakeInput',['../class_wheeled_vehicle_controller.html#a7d48f4399fa3ed50e559b12017664510',1,'WheeledVehicleController']]], + ['setheights_142',['SetHeights',['../class_height_field_shape.html#a2513680991c5082396e8226ab15deb44',1,'HeightFieldShape']]], + ['sethitreductioncosmaxangle_143',['SetHitReductionCosMaxAngle',['../class_character_virtual.html#ac74cd57b392ad9570e419251ce2d70c8',1,'CharacterVirtual']]], + ['setidentity_144',['SetIdentity',['../class_matrix.html#aa38198e13dcdd62e61e60cb9b0e93337',1,'Matrix']]], + ['setinbroadphaseinternal_145',['SetInBroadPhaseInternal',['../class_body.html#aa600fe2037b7ded7a84a8bf479213ebc',1,'Body']]], + ['setinnerbodyshape_146',['SetInnerBodyShape',['../class_character_virtual.html#af94e73cd650ddac2b76b55d18dca302e',1,'CharacterVirtual']]], + ['setinversed_147',['SetInversed',['../class_matrix.html#a1e2531318f995ae102d4428c3bdba738',1,'Matrix']]], + ['setinversed3x3_148',['SetInversed3x3',['../class_mat44.html#a814c04077820ea83f444ccc5ae48299f',1,'Mat44']]], + ['setinverseinertia_149',['SetInverseInertia',['../class_motion_properties.html#a509aafb031d301cbef7e2efdd16ee3dd',1,'MotionProperties']]], + ['setinversemass_150',['SetInverseMass',['../class_motion_properties.html#a9bf9425aab99ea920b73577819e579b1',1,'MotionProperties']]], + ['setislandindexinternal_151',['SetIslandIndexInternal',['../class_motion_properties.html#a7609b8a4460b1fb13fa4079beff33e92',1,'MotionProperties']]], + ['setislooping_152',['SetIsLooping',['../class_path_constraint_path.html#aae13b9ca0a67ed16657f15c1d9b28d4b',1,'PathConstraintPath']]], + ['setissensor_153',['SetIsSensor',['../class_body.html#a5d8e1f66eed163868a633cdb93859f77',1,'Body']]], + ['setlayer_154',['SetLayer',['../class_character.html#ac1def305b85f0a56932686fcdaad764f',1,'Character']]], + ['setleansmoothingfactor_155',['SetLeanSmoothingFactor',['../class_motorcycle_controller.html#a209159d85e6c261382551e7fe12afd18',1,'MotorcycleController']]], + ['setleanspringconstant_156',['SetLeanSpringConstant',['../class_motorcycle_controller.html#aaa1568ff36c906b58c45ea69724bb67a',1,'MotorcycleController']]], + ['setleanspringdamping_157',['SetLeanSpringDamping',['../class_motorcycle_controller.html#aaf88f2fed53bad1a7fa94521097b68a5',1,'MotorcycleController']]], + ['setleanspringintegrationcoefficient_158',['SetLeanSpringIntegrationCoefficient',['../class_motorcycle_controller.html#af2c273bd46e6a59e6b818949d294d4ef',1,'MotorcycleController']]], + ['setleanspringintegrationcoefficientdecay_159',['SetLeanSpringIntegrationCoefficientDecay',['../class_motorcycle_controller.html#adc5db8e0b1290ccf6ea77676d129cb1a',1,'MotorcycleController']]], + ['setleftratio_160',['SetLeftRatio',['../class_tracked_vehicle_controller.html#a7865699eb6947060c4a117d67e39806d',1,'TrackedVehicleController']]], + ['setlength_161',['SetLength',['../class_pulley_constraint.html#a3c250975bff80256a8d79f04bed8aeaa',1,'PulleyConstraint']]], + ['setlimitedaxis_162',['SetLimitedAxis',['../class_six_d_o_f_constraint_settings.html#ad707d50d3c830f44ea2f10e3215a6789',1,'SixDOFConstraintSettings']]], + ['setlimits_163',['setlimits',['../class_slider_constraint.html#afef30c98d651fe84367f252c3f88b21f',1,'SliderConstraint::SetLimits()'],['../class_hinge_constraint.html#a7ca6ee7cd4daf818ce62fd868f0b0fdc',1,'HingeConstraint::SetLimits()'],['../class_swing_twist_constraint_part.html#aad526f8386b3e605f88fddf583ec215b',1,'SwingTwistConstraintPart::SetLimits()']]], + ['setlimitsspringsettings_164',['setlimitsspringsettings',['../class_distance_constraint.html#a19b91e04a929e9ffac559677087875fc',1,'DistanceConstraint::SetLimitsSpringSettings()'],['../class_hinge_constraint.html#a2944e53bdf5d783718b5d40dbd03b85d',1,'HingeConstraint::SetLimitsSpringSettings()'],['../class_six_d_o_f_constraint.html#a0a7933aafb327871eb4a45e2a2c79fc0',1,'SixDOFConstraint::SetLimitsSpringSettings()'],['../class_slider_constraint.html#ac8aa5fb532cce5b5b34058534f08c004',1,'SliderConstraint::SetLimitsSpringSettings()']]], + ['setlinearandangularvelocity_165',['setlinearandangularvelocity',['../class_body_interface.html#a77222f0f950004cddea8170eb825dcaa',1,'BodyInterface::SetLinearAndAngularVelocity()'],['../class_character.html#a8daf9cb1fdba5d3a75599d57e156b57b',1,'Character::SetLinearAndAngularVelocity()'],['../class_ragdoll.html#a8ba64ad182563d9110980155b86538bc',1,'Ragdoll::SetLinearAndAngularVelocity()']]], + ['setlineardamping_166',['SetLinearDamping',['../class_motion_properties.html#acebdeeddc6f51f570414a094cf668992',1,'MotionProperties']]], + ['setlinearvelocity_167',['setlinearvelocity',['../class_ragdoll.html#ac0b96e2a568868b67792889d26137ec8',1,'Ragdoll::SetLinearVelocity()'],['../class_character_virtual.html#a25da7eb8e9ff5316e357cbf59027b57e',1,'CharacterVirtual::SetLinearVelocity()'],['../class_motion_properties.html#a083c86092c13479288dcc63c02e11f30',1,'MotionProperties::SetLinearVelocity()'],['../class_body_interface.html#a49831752041e13262dff231f4e404302',1,'BodyInterface::SetLinearVelocity()'],['../class_character.html#a03d43dd12da2501fbb643bdbe7daef46',1,'Character::SetLinearVelocity()'],['../class_body.html#a603b71ad2f5dbb76fd80fa9dff8be7f9',1,'Body::SetLinearVelocity(Vec3Arg inLinearVelocity)']]], + ['setlinearvelocityclamped_168',['setlinearvelocityclamped',['../class_body.html#a5e1e46dac04eaf5fbaed87d6d781480d',1,'Body::SetLinearVelocityClamped()'],['../class_motion_properties.html#a5e9dad9b92aa67163bed3200709be901',1,'MotionProperties::SetLinearVelocityClamped()']]], + ['setlistener_169',['SetListener',['../class_character_virtual.html#af7bfe39cc6f67eeb4cd8d4d453d8b179',1,'CharacterVirtual']]], + ['setmass_170',['SetMass',['../class_character_virtual.html#a93a6110e80e08ef092d7f010a45e3bb5',1,'CharacterVirtual']]], + ['setmassandinertiaofsolidbox_171',['SetMassAndInertiaOfSolidBox',['../class_mass_properties.html#a8e7cacca84047cc12cf6aaf9f5bf2d95',1,'MassProperties']]], + ['setmassproperties_172',['SetMassProperties',['../class_motion_properties.html#ae935a749f1bb737668ba853c4b1d54df',1,'MotionProperties']]], + ['setmaterial_173',['SetMaterial',['../class_convex_shape.html#a39b6d0d9db468564c90488e41b737a08',1,'ConvexShape']]], + ['setmaterials_174',['SetMaterials',['../class_height_field_shape.html#adbd4df5017efbafc07c4187c8c6faf36',1,'HeightFieldShape']]], + ['setmaxangularvelocity_175',['SetMaxAngularVelocity',['../class_motion_properties.html#a6665e01c407036815ac084edcf28d53f',1,'MotionProperties']]], + ['setmaxfriction_176',['SetMaxFriction',['../class_six_d_o_f_constraint.html#ab28cc63599921c1b582f71549be647b3',1,'SixDOFConstraint']]], + ['setmaxfrictionforce_177',['setmaxfrictionforce',['../class_path_constraint.html#ad6901dcd63274ede819db76d1e68607e',1,'PathConstraint::SetMaxFrictionForce()'],['../class_slider_constraint.html#a029801fabc3867da63ede853dea7627f',1,'SliderConstraint::SetMaxFrictionForce()']]], + ['setmaxfrictiontorque_178',['setmaxfrictiontorque',['../class_swing_twist_constraint.html#abf0d635feedfe665fa4f7a6e566bf168',1,'SwingTwistConstraint::SetMaxFrictionTorque()'],['../class_hinge_constraint.html#ad693d37205991f105a85897e6bfe5732',1,'HingeConstraint::SetMaxFrictionTorque()']]], + ['setmaxlinearvelocity_179',['SetMaxLinearVelocity',['../class_motion_properties.html#ac452632a71e6ba6de822339be8c3ee80',1,'MotionProperties']]], + ['setmaxnumhits_180',['SetMaxNumHits',['../class_character_virtual.html#a683ab8265d9c39c512864b8041c675aa',1,'CharacterVirtual']]], + ['setmaxpitchrollangle_181',['SetMaxPitchRollAngle',['../class_vehicle_constraint.html#a54aac9425dccebec4565b02df9351641',1,'VehicleConstraint']]], + ['setmaxslopeangle_182',['SetMaxSlopeAngle',['../class_character_base.html#a0c2099dfbf12c1bd6f839a3eda5c9726',1,'CharacterBase']]], + ['setmaxstrength_183',['SetMaxStrength',['../class_character_virtual.html#a5e3e1a90e94534669194d929a4f15700',1,'CharacterVirtual']]], + ['setmotionquality_184',['setmotionquality',['../class_body_interface.html#a38ce02df9d2363eec48af42ba61741bf',1,'BodyInterface::SetMotionQuality()'],['../class_body_manager.html#af449412eb723ffe93a193d9b9aa86f3b',1,'BodyManager::SetMotionQuality()']]], + ['setmotiontype_185',['setmotiontype',['../class_body.html#ab5bda1ea540be9e8383b974c21d5771a',1,'Body::SetMotionType()'],['../class_body_interface.html#a18efc1ae5268eabc115fe7ba7ed170b9',1,'BodyInterface::SetMotionType()']]], + ['setmotorstate_186',['setmotorstate',['../class_slider_constraint.html#aa1c23dfc17c263c4d67d42913844a6f3',1,'SliderConstraint::SetMotorState()'],['../class_six_d_o_f_constraint.html#a4294f297ae2bdf4f736eb137694ecc44',1,'SixDOFConstraint::SetMotorState()'],['../class_hinge_constraint.html#ab4edc1ef87211c5b093f9690835bd2c1',1,'HingeConstraint::SetMotorState()']]], + ['setname_187',['setname',['../class_r_t_t_i.html#ab6e03f58fa10480bf87c2f91b5f374e8',1,'RTTI::SetName()'],['../class_serializable_attribute.html#a9ce63d609aeb2c8fcdff058957d4644f',1,'SerializableAttribute::SetName()'],['../class_quad_tree.html#adf7d2b7bd81dd1d8a533bfa5df4a239c',1,'QuadTree::SetName()']]], + ['setnormal_188',['SetNormal',['../class_plane.html#aa792e95ef15c14271bdf9c1d43c85d90',1,'Plane']]], + ['setnormalhalfconeangle_189',['SetNormalHalfConeAngle',['../class_swing_twist_constraint.html#a5bdb29744f4e345d3366312d3d77d85c',1,'SwingTwistConstraint']]], + ['setnumbuckets_190',['SetNumBuckets',['../class_lock_free_hash_map.html#a7c6ead3c7440e19213eac4119236964d',1,'LockFreeHashMap']]], + ['setnumiterations_191',['SetNumIterations',['../class_soft_body_motion_properties.html#aac3e3c0fc3d111fbe3765188b781c7e0',1,'SoftBodyMotionProperties']]], + ['setnumpositionsteps_192',['SetNumPositionSteps',['../class_island_builder.html#a576814bc0405702b74174635e0b44d6d',1,'IslandBuilder']]], + ['setnumpositionstepsoverride_193',['setnumpositionstepsoverride',['../class_motion_properties.html#ae261a122f450a34d6a9d06e66d21e7f0',1,'MotionProperties::SetNumPositionStepsOverride()'],['../class_constraint.html#a746a3c987f34f2573c0add9ddd56f390',1,'Constraint::SetNumPositionStepsOverride()']]], + ['setnumstepsbetweencollisiontestactive_194',['SetNumStepsBetweenCollisionTestActive',['../class_vehicle_constraint.html#a0a7585ead6b614188ac35590495843e1',1,'VehicleConstraint']]], + ['setnumstepsbetweencollisiontestinactive_195',['SetNumStepsBetweenCollisionTestInactive',['../class_vehicle_constraint.html#a441d4897905f6b4e950cc885dd4a4c63',1,'VehicleConstraint']]], + ['setnumthreads_196',['SetNumThreads',['../class_job_system_thread_pool.html#a4b7f3271d9bd98562563d4dfcaa40c9d',1,'JobSystemThreadPool']]], + ['setnumvelocitystepsoverride_197',['setnumvelocitystepsoverride',['../class_motion_properties.html#a167bd8cbbb918e630e2b297841165234',1,'MotionProperties::SetNumVelocityStepsOverride()'],['../class_constraint.html#a4c9b56bbae7de5094241daddc6975059',1,'Constraint::SetNumVelocityStepsOverride()']]], + ['setobjectlayer_198',['setobjectlayer',['../class_body_interface.html#a2c1a6660958d7f52b37e45587ccbab92',1,'BodyInterface::SetObjectLayer()'],['../class_vehicle_collision_tester.html#af09e06e5ebd7ea9311d657f14725dd5e',1,'VehicleCollisionTester::SetObjectLayer(ObjectLayer inObjectLayer)']]], + ['setobjectlayerfilter_199',['SetObjectLayerFilter',['../class_vehicle_collision_tester.html#aea6c61dd5cc33e4e27ec5c5a3aa043bc',1,'VehicleCollisionTester']]], + ['setpath_200',['SetPath',['../class_path_constraint.html#abd2aea13b507f29abea6a5b3d8e0d6da',1,'PathConstraint']]], + ['setpenetrationrecoveryspeed_201',['SetPenetrationRecoverySpeed',['../class_character_virtual.html#ad767e40abd649085a9b2d8df813dbc8c',1,'CharacterVirtual']]], + ['setphysicssettings_202',['SetPhysicsSettings',['../class_physics_system.html#a2f81c29dfb88dd7e0711caffcd2ebc22',1,'PhysicsSystem']]], + ['setplanehalfconeangle_203',['SetPlaneHalfConeAngle',['../class_swing_twist_constraint.html#a00fb39bbe9a4ea59b363c2d60ca959ff',1,'SwingTwistConstraint']]], + ['setpoint1_204',['SetPoint1',['../class_point_constraint.html#aa6ac6b94199f9b28b59a0e2c1a07c85d',1,'PointConstraint']]], + ['setpoint2_205',['SetPoint2',['../class_point_constraint.html#a2f6aa496e61f2bf9e6cc4a11cde0159b',1,'PointConstraint']]], + ['setpose_206',['setpose',['../class_ragdoll.html#a535e76f7fb7bfee484d82570a3066ae7',1,'Ragdoll::SetPose(const SkeletonPose &inPose, bool inLockBodies=true)'],['../class_ragdoll.html#a789ec3bece447ec849e7ecb109c15a9c',1,'Ragdoll::SetPose(RVec3Arg inRootOffset, const Mat44 *inJointMatrices, bool inLockBodies=true)']]], + ['setposition_207',['setposition',['../class_body_interface.html#a19838143d494d7d0ddb4fb0226ca2cad',1,'BodyInterface::SetPosition()'],['../class_character.html#a55a75b63d6ac90d08399e5bcd48346d1',1,'Character::SetPosition()'],['../class_character_virtual.html#af3622b341d017712981d6d26de99fe5c',1,'CharacterVirtual::SetPosition()']]], + ['setpositionandrotation_208',['setpositionandrotation',['../class_body_interface.html#a369e907b665f5814d864790173062d7f',1,'BodyInterface::SetPositionAndRotation()'],['../class_character.html#a17120469ace1ad77f381e4ab2223ad65',1,'Character::SetPositionAndRotation()']]], + ['setpositionandrotationinternal_209',['SetPositionAndRotationInternal',['../class_body.html#a1f42d6ce3b4ce87fce69561a4d2a4442',1,'Body']]], + ['setpositionandrotationwhenchanged_210',['SetPositionAndRotationWhenChanged',['../class_body_interface.html#a12c9c1534c1c6441c51f663a29eb4daf',1,'BodyInterface']]], + ['setpositioncom_211',['SetPositionCOM',['../struct_compound_shape_1_1_sub_shape.html#ad02db108fee2f4caeb4d2709a4f14671',1,'CompoundShape::SubShape']]], + ['setpositionmotorstate_212',['SetPositionMotorState',['../class_path_constraint.html#a668c00d9305747b19511d13f4947ca33',1,'PathConstraint']]], + ['setpositionrotationandvelocity_213',['SetPositionRotationAndVelocity',['../class_body_interface.html#ad7e39bea301498df0e27024869a2cff9',1,'BodyInterface']]], + ['setpostcollidecallback_214',['SetPostCollideCallback',['../class_vehicle_constraint.html#ab3d5ac04f11fada0c2bc464b187a5986',1,'VehicleConstraint']]], + ['setpoststepcallback_215',['SetPostStepCallback',['../class_vehicle_constraint.html#af3e47429a8c1150b9e6c01b4b8059a5e',1,'VehicleConstraint']]], + ['setpressure_216',['SetPressure',['../class_soft_body_motion_properties.html#a6d55ac6913186e4f8e715e5b4470e657',1,'SoftBodyMotionProperties']]], + ['setprestepcallback_217',['SetPreStepCallback',['../class_vehicle_constraint.html#ad6330e63345c4ab1e665edd015aab35b',1,'VehicleConstraint']]], + ['setratio_218',['setratio',['../class_gear_constraint_settings.html#a739f3d8c130d47170adb958626978b5a',1,'GearConstraintSettings::SetRatio()'],['../class_rack_and_pinion_constraint_settings.html#a90d5633a453c1921fa1f24480bba7944',1,'RackAndPinionConstraintSettings::SetRatio()']]], + ['setrestitution_219',['setrestitution',['../class_body.html#a6589465cd947d75f90b3975e6bdfd96e',1,'Body::SetRestitution()'],['../class_body_interface.html#a7fb8b9b6e59dfe3f78f9e8e3c2776675',1,'BodyInterface::SetRestitution()']]], + ['setrightinput_220',['SetRightInput',['../class_wheeled_vehicle_controller.html#aec55421b09ff5dc8421e133c01561da1',1,'WheeledVehicleController']]], + ['setrightratio_221',['SetRightRatio',['../class_tracked_vehicle_controller.html#a34fbd77864cfdbdb0e4bce68adff3d73',1,'TrackedVehicleController']]], + ['setrootoffset_222',['SetRootOffset',['../class_skeleton_pose.html#a83a440cd06f24159b01879670c4bf856',1,'SkeletonPose']]], + ['setrotation_223',['setrotation',['../struct_compound_shape_1_1_sub_shape.html#aeb79df4468aca72a42c1c8dd68f564c1',1,'CompoundShape::SubShape::SetRotation()'],['../class_mat44.html#abd5dc78238403195cbd0cde87f40af49',1,'Mat44::SetRotation()'],['../class_character_virtual.html#ac0b74d1e4ec29a6a4853bc8cbb72578d',1,'CharacterVirtual::SetRotation()'],['../class_body_interface.html#a199aec558e03ec611fc32e2e4fcbfc07',1,'BodyInterface::SetRotation()'],['../class_d_mat44.html#a896557b839b1a9126819a44a092f6bb6',1,'DMat44::SetRotation()'],['../class_character.html#a92dd19169cbf86dca78b423891eb2819',1,'Character::SetRotation()']]], + ['setrotationangle_224',['SetRotationAngle',['../class_wheel.html#aaa68b8841db1daed297d8c64ed19bef2',1,'Wheel']]], + ['setrotationlimits_225',['SetRotationLimits',['../class_six_d_o_f_constraint.html#ae203835b5e57cbdb0acd755bf65e87fd',1,'SixDOFConstraint']]], + ['setrpmmeter_226',['setrpmmeter',['../class_tracked_vehicle_controller.html#a678c77ec33688161c4f2ee0a2521deb3',1,'TrackedVehicleController::SetRPMMeter()'],['../class_wheeled_vehicle_controller.html#a65374d5dabe3c20c393a69ed780de89f',1,'WheeledVehicleController::SetRPMMeter()']]], + ['setshape_227',['setshape',['../class_body_creation_settings.html#a0c74dee7b551bce3c0a7477283f27145',1,'BodyCreationSettings::SetShape()'],['../class_body_interface.html#a051a4064706509e2b1c4dcc6d688676d',1,'BodyInterface::SetShape()'],['../class_character.html#a15f5407b7ccbe01588462989a4e0cfda',1,'Character::SetShape()'],['../class_character_virtual.html#a8149fcb7a9f932dd5154e23588e20763',1,'CharacterVirtual::SetShape()']]], + ['setshapeinternal_228',['SetShapeInternal',['../class_body.html#a63941e4493131921269e74ba993a6ccb',1,'Body']]], + ['setshapeoffset_229',['SetShapeOffset',['../class_character_virtual.html#a6fd639e0938a0c068ff683a33ee613c9',1,'CharacterVirtual']]], + ['setshapescale_230',['SetShapeScale',['../class_transformed_shape.html#a0923e9bc45b0d6ee42d5350da78d51cc',1,'TransformedShape']]], + ['setshapesettings_231',['SetShapeSettings',['../class_body_creation_settings.html#af8e4ddec15be3ad2ba87e99139fec1e5',1,'BodyCreationSettings']]], + ['setskeleton_232',['SetSkeleton',['../class_skeleton_pose.html#a16e37c44ea1f562854d8a6e3d0afafcf',1,'SkeletonPose']]], + ['setskinnedmaxdistancemultiplier_233',['SetSkinnedMaxDistanceMultiplier',['../class_soft_body_motion_properties.html#a1f4346ba3a5bf7c26f8db600a29ccd29',1,'SoftBodyMotionProperties']]], + ['setslideraxis_234',['SetSliderAxis',['../class_slider_constraint_settings.html#a78a43cf839d05c2679d11080875499df',1,'SliderConstraintSettings']]], + ['setsoftbodycontactlistener_235',['SetSoftBodyContactListener',['../class_physics_system.html#a3077d0538cb694338f8e466b9d36563c',1,'PhysicsSystem']]], + ['setsteerangle_236',['SetSteerAngle',['../class_wheel.html#a7efe681ffa418ed0e1724fbc1fef7ec8',1,'Wheel']]], + ['setsubgroupid_237',['SetSubGroupID',['../class_collision_group.html#a9ac2eb88530e8281a130bd73539d127b',1,'CollisionGroup']]], + ['setswingmotorstate_238',['SetSwingMotorState',['../class_swing_twist_constraint.html#a013809c4bb78158bd128514c043c3875',1,'SwingTwistConstraint']]], + ['setswingtype_239',['SetSwingType',['../class_swing_twist_constraint_part.html#a848425a649ffd87b994ea1efe3cf9944',1,'SwingTwistConstraintPart']]], + ['settargetangle_240',['SetTargetAngle',['../class_hinge_constraint.html#ac2efec9945040fae41af37498ba5f357',1,'HingeConstraint']]], + ['settargetangularvelocity_241',['SetTargetAngularVelocity',['../class_hinge_constraint.html#a8f17d0facd91bdaba60f9ac473db1b2f',1,'HingeConstraint']]], + ['settargetangularvelocitycs_242',['settargetangularvelocitycs',['../class_six_d_o_f_constraint.html#a51543e5bc341f2812c0498eeb11ec8a2',1,'SixDOFConstraint::SetTargetAngularVelocityCS()'],['../class_swing_twist_constraint.html#a352f4276b652ae5f31ec8ce7b63a321f',1,'SwingTwistConstraint::SetTargetAngularVelocityCS(Vec3Arg inAngularVelocity)']]], + ['settargetorientationbs_243',['settargetorientationbs',['../class_swing_twist_constraint.html#a96e0594e40bc6d63d72241e03cdebcc0',1,'SwingTwistConstraint::SetTargetOrientationBS()'],['../class_six_d_o_f_constraint.html#a27200e904e3f52704ce99c2d3f12ad16',1,'SixDOFConstraint::SetTargetOrientationBS()']]], + ['settargetorientationcs_244',['settargetorientationcs',['../class_swing_twist_constraint.html#a9d6def10e5b01c5dcf325164812a0380',1,'SwingTwistConstraint::SetTargetOrientationCS()'],['../class_six_d_o_f_constraint.html#abad5e4ae0dfe6e5da9518683a2f1959c',1,'SixDOFConstraint::SetTargetOrientationCS()']]], + ['settargetpathfraction_245',['SetTargetPathFraction',['../class_path_constraint.html#a22196b6a304d015a58ceb2b08923583d',1,'PathConstraint']]], + ['settargetposition_246',['SetTargetPosition',['../class_slider_constraint.html#aea6e58150ae68060810e6b1e6246b7a2',1,'SliderConstraint']]], + ['settargetpositioncs_247',['SetTargetPositionCS',['../class_six_d_o_f_constraint.html#a79b66cc0a8850f926aecbcc56dc52570',1,'SixDOFConstraint']]], + ['settargetvelocity_248',['settargetvelocity',['../class_path_constraint.html#a1b6ed041ae2c5ca2e0622cc866ff10ce',1,'PathConstraint::SetTargetVelocity()'],['../class_slider_constraint.html#ad28c19b7263229a90d9514c23a816d82',1,'SliderConstraint::SetTargetVelocity()']]], + ['settargetvelocitycs_249',['SetTargetVelocityCS',['../class_six_d_o_f_constraint.html#aa4fc743e2d8bbbe4eabcda4a0062d758',1,'SixDOFConstraint']]], + ['setthreadexitfunction_250',['SetThreadExitFunction',['../class_job_system_thread_pool.html#a2b29fcac624eeac4e5219158ef0c4912',1,'JobSystemThreadPool']]], + ['setthreadinitfunction_251',['SetThreadInitFunction',['../class_job_system_thread_pool.html#a7c1157b283998781be0e2164e5639ba3',1,'JobSystemThreadPool']]], + ['settingsresult_252',['SettingsResult',['../class_soft_body_shared_settings.html#a61cb5299145795d65a35b455ad033be8',1,'SoftBodySharedSettings']]], + ['settiremaximpulsecallback_253',['SetTireMaxImpulseCallback',['../class_wheeled_vehicle_controller.html#a8b57f16d22c14cc0fc7a56a81b13aca9',1,'WheeledVehicleController']]], + ['settorquelimit_254',['SetTorqueLimit',['../class_motor_settings.html#a8eeaad102049c8586b180f516119ddeb',1,'MotorSettings']]], + ['settorquelimits_255',['SetTorqueLimits',['../class_motor_settings.html#a3953c02a21926f36d415e805ffce289c',1,'MotorSettings']]], + ['settotallambda_256',['settotallambda',['../class_axis_constraint_part.html#a21284d5ab7133a4e85f37fcfecb0be8e',1,'AxisConstraintPart::SetTotalLambda()'],['../class_dual_axis_constraint_part.html#ab75b06acf448414fefc7001524167795',1,'DualAxisConstraintPart::SetTotalLambda()']]], + ['settransform_257',['SetTransform',['../struct_compound_shape_1_1_sub_shape.html#a3805d809932e3f0d94a3b87e297a47bc',1,'CompoundShape::SubShape']]], + ['settranslation_258',['settranslation',['../class_d_mat44.html#a22da3bc4aa09a7285b79d63930c58637',1,'DMat44::SetTranslation()'],['../class_mat44.html#ae89e485f03d9a5dbaf317c057f4eac30',1,'Mat44::SetTranslation()']]], + ['settranslationlimits_259',['SetTranslationLimits',['../class_six_d_o_f_constraint.html#af5ff395b70a1170d8215850acf83826f',1,'SixDOFConstraint']]], + ['settwistmaxangle_260',['SetTwistMaxAngle',['../class_swing_twist_constraint.html#a505202f615a1842d430a4caff34b7a7d',1,'SwingTwistConstraint']]], + ['settwistminangle_261',['SetTwistMinAngle',['../class_swing_twist_constraint.html#a0276be01794b613f1e961227e774fb98',1,'SwingTwistConstraint']]], + ['settwistmotorstate_262',['SetTwistMotorState',['../class_swing_twist_constraint.html#ae69c1ec34e58f67f05aea6e393110f92',1,'SwingTwistConstraint']]], + ['setup_263',['SetUp',['../class_character_base.html#a46d5822b95a5e771adc1e33f1f9b891c',1,'CharacterBase']]], + ['setup_20velocity_20constraints_264',['Setup Velocity Constraints',['../index.html#setup-velocity-constraints',1,'']]], + ['setupdateposition_265',['SetUpdatePosition',['../class_soft_body_motion_properties.html#a4f74fee0d91efe0291d43f7f6433440c',1,'SoftBodyMotionProperties']]], + ['setupvelocityconstraint_266',['setupvelocityconstraint',['../class_cone_constraint.html#a4cdc1ebd99d91003dbebedd91b1b8a4f',1,'ConeConstraint::SetupVelocityConstraint()'],['../class_constraint.html#a175a388f9989341951507e08876fdf30',1,'Constraint::SetupVelocityConstraint()'],['../class_distance_constraint.html#a6783513d7658a4979f309be36a94f2d3',1,'DistanceConstraint::SetupVelocityConstraint()'],['../class_fixed_constraint.html#a357bd20813fdf9b5d6d6730ea1cb5cb7',1,'FixedConstraint::SetupVelocityConstraint()'],['../class_gear_constraint.html#aa9f34d205ecc9897c658025438c8a411',1,'GearConstraint::SetupVelocityConstraint()'],['../class_hinge_constraint.html#a4544b739d29da7059c04dd3ff87ac04f',1,'HingeConstraint::SetupVelocityConstraint()'],['../class_path_constraint.html#a334e81d911ed028bb007514d7dab7ed8',1,'PathConstraint::SetupVelocityConstraint()'],['../class_point_constraint.html#a0c951929290c4069a5489beaf3b11c3c',1,'PointConstraint::SetupVelocityConstraint()'],['../class_pulley_constraint.html#a577d6bca6063a4fe0bbbfb63fc6c1096',1,'PulleyConstraint::SetupVelocityConstraint()'],['../class_rack_and_pinion_constraint.html#a46f28ec31eb4f5068c20843ec28d9c8f',1,'RackAndPinionConstraint::SetupVelocityConstraint()'],['../class_six_d_o_f_constraint.html#abee061c8025b392f637e0cd56ac40d8c',1,'SixDOFConstraint::SetupVelocityConstraint()'],['../class_slider_constraint.html#a2abb17d42a19f2e7110bdd1edbc864bd',1,'SliderConstraint::SetupVelocityConstraint()'],['../class_swing_twist_constraint.html#a51932e901316b06ac2c5a55c5ce54856',1,'SwingTwistConstraint::SetupVelocityConstraint()'],['../class_vehicle_constraint.html#a7db85aa03eb1cadb974ca4600204daa5',1,'VehicleConstraint::SetupVelocityConstraint()']]], + ['setusemanifoldreduction_267',['setusemanifoldreduction',['../class_body.html#a8c24ff0c08f1a31fc57d01420f9cae8b',1,'Body::SetUseManifoldReduction()'],['../class_body_interface.html#a7f730135a74e9cb798d8a7d6c49acefb',1,'BodyInterface::SetUseManifoldReduction()']]], + ['setuserdata_268',['setuserdata',['../class_constraint.html#a2e643bd3c3a9167c70037d3eb87acb75',1,'Constraint::SetUserData()'],['../class_body.html#a3fff2f601caed12dd89c6d7fcb04dad6',1,'Body::SetUserData()'],['../class_body_interface.html#abd152dcf89e6c0147a6929e04f96c578',1,'BodyInterface::SetUserData()'],['../class_character_virtual.html#a06b2c2e7446c66a85bc7314f5b4fd71e',1,'CharacterVirtual::SetUserData()'],['../class_collision_collector.html#aefb07c8a9dd625efefeb0f37ee2957d6',1,'CollisionCollector::SetUserData()'],['../class_shape.html#abe1ea0795fb422387c3e41f260caea1c',1,'Shape::SetUserData()']]], + ['setvalidating_269',['SetValidating',['../class_state_recorder.html#a94551fc91c9a1580a818dab49ba6e26d',1,'StateRecorder']]], + ['setvalue_270',['SetValue',['../class_sub_shape_i_d.html#a1a908b7e19b2d792793830b751a66a27',1,'SubShapeID']]], + ['setvehiclecollisiontester_271',['SetVehicleCollisionTester',['../class_vehicle_constraint.html#a52476f3cd6814c10993dacb4e3dd03cd',1,'VehicleConstraint']]], + ['setw_272',['setw',['../class_vec4.html#a2817970994c80c1d05c781943955a567',1,'Vec4::SetW()'],['../class_u_vec4.html#a2320003f191c827345c0c94392a4b09b',1,'UVec4::SetW()'],['../class_quat.html#ae32d59954e6b05258af7123c00141654',1,'Quat::SetW()']]], + ['setworldtransform_273',['setworldtransform',['../class_transformed_shape.html#a6634ea434c5877c1f458137d0b05e137',1,'TransformedShape::SetWorldTransform(RMat44Arg inTransform)'],['../class_transformed_shape.html#a8499fda3638a4246e152a2a298905852',1,'TransformedShape::SetWorldTransform(RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inScale)']]], + ['setx_274',['setx',['../class_vec3.html#aa56cdd546b6bb8a63a7677b4915398f0',1,'Vec3::SetX()'],['../class_u_vec4.html#ac2cc1087c1eed84326aec2859ca006ab',1,'UVec4::SetX()'],['../class_quat.html#ae53457812ce9ffa5fb7b6b8a3c5c97e5',1,'Quat::SetX()'],['../class_d_vec3.html#af2ffc0234f93a9ba535204d9b35ecb8f',1,'DVec3::SetX()'],['../class_vec4.html#aab0192eabef50e920e398cb0b426a002',1,'Vec4::SetX()']]], + ['sety_275',['sety',['../class_u_vec4.html#a41f446b7d5a05ee286630365ebb6b8b9',1,'UVec4::SetY()'],['../class_vec4.html#a957c474862f9e846a9ff1dce1a930aeb',1,'Vec4::SetY()'],['../class_d_vec3.html#a7a23eb2bdff0ab56356796bd6335d1a4',1,'DVec3::SetY()'],['../class_quat.html#a4a4db6760750a34c25199455c07b6bb9',1,'Quat::SetY()'],['../class_vec3.html#a546dea138085c70aab8ce65328c96636',1,'Vec3::SetY()']]], + ['setz_276',['setz',['../class_vec4.html#a7b9e638ffb2e387617e3d0062c5abfda',1,'Vec4::SetZ()'],['../class_vec3.html#a91b9fad968034550f4681c14273c77d8',1,'Vec3::SetZ()'],['../class_u_vec4.html#a7f2a2b3fbc39fe921799d53d6bfb1b87',1,'UVec4::SetZ()'],['../class_quat.html#a3f494dde1e2e0bc50dbc2abd13210b23',1,'Quat::SetZ()'],['../class_d_vec3.html#ac180ba3a4c610e3ae77f3acfdff4139b',1,'DVec3::SetZ()']]], + ['setzero_277',['setzero',['../class_vector.html#a06ffa8aa3d40e7c93dde19725e77ff3a',1,'Vector::SetZero()'],['../class_matrix.html#a7b98e3c672cc83e50b0cb6cf33b1ec65',1,'Matrix::SetZero()']]], + ['seulerangles_278',['sEulerAngles',['../class_quat.html#a1ef2428c09a41f3d0549d216ecfca710',1,'Quat']]], + ['sexpandbits_279',['sExpandBits',['../class_morton_code.html#a84095b33bd99957d29c492f9e8a2f2c4',1,'MortonCode']]], + ['sfindcollidingpairscancollide_280',['sFindCollidingPairsCanCollide',['../class_body.html#a68c64581b2698ec41f1bbb50913bb48d',1,'Body']]], + ['sfixedtoworld_281',['sFixedToWorld',['../class_body.html#a8dd9a53f984efe2ced2f73ee084f636a',1,'Body']]], + ['sfixw_282',['sfixw',['../class_vec3.html#a0fd5f4e55649a94f140bd9d6fe38be3c',1,'Vec3::sFixW()'],['../class_d_vec3.html#a2266a780190160ac4e0dd1747c496fa7',1,'DVec3::sFixW()']]], + ['sfrompointandnormal_283',['sfrompointandnormal',['../class_plane.html#a65ed67db9667cdc78040f503b1bce933',1,'Plane::sFromPointAndNormal(DVec3Arg inPoint, Vec3Arg inNormal)'],['../class_plane.html#ab650685703d992f746e1934ffd20850d',1,'Plane::sFromPointAndNormal(Vec3Arg inPoint, Vec3Arg inNormal)']]], + ['sfrompointsccw_284',['sFromPointsCCW',['../class_plane.html#acf01f90a7839a26f8d1e0129b661c32d',1,'Plane']]], + ['sfromto_285',['sFromTo',['../class_quat.html#a7e32ae62e2b33bf30ba3c40f9e66bfed',1,'Quat']]], + ['sfromtwopoints_286',['sFromTwoPoints',['../class_a_a_box.html#a75910b6fcd958c465541efe5e3087987',1,'AABox']]], + ['sfromworldtransform_287',['sFromWorldTransform',['../struct_shape_cast_t.html#a0195f56ecbe283d8e393f1564d864823',1,'ShapeCastT']]], + ['sfusedmultiplyadd_288',['sfusedmultiplyadd',['../class_d_vec3.html#a204c205724d5eda5fcbdd9b28d4180c1',1,'DVec3::sFusedMultiplyAdd()'],['../class_vec3.html#af1046795a7c8524bcef538c32ff0089b',1,'Vec3::sFusedMultiplyAdd()'],['../class_vec4.html#a5dfc1722ee92f7a8ad6e068ad8551686',1,'Vec4::sFusedMultiplyAdd()'],['../class_vec8.html#a035b3515cf4ea077d4c78ccccb81f127',1,'Vec8::sFusedMultiplyAdd()']]], + ['sgatherfloat4_289',['sgatherfloat4',['../class_vec4.html#a8b0e5b020ac6f5248315b94216ae6acc',1,'Vec4::sGatherFloat4(const float *inBase, UVec4Arg inOffsets)'],['../class_vec4.html#a92ee61eea2038df551b9494cb4f013bb',1,'Vec4::sGatherFloat4(const float *inBase, UVec4Arg inOffsets)']]], + ['sgatherint4_290',['sgatherint4',['../class_u_vec4.html#a64f61c75e1595a8bbd98a964b1fb77ee',1,'UVec4::sGatherInt4(const uint32 *inBase, UVec4Arg inOffsets)'],['../class_u_vec4.html#a80d24f8e73a57edb4d6ed688c8e7e342',1,'UVec4::sGatherInt4(const uint32 *inBase, UVec4Arg inOffsets)']]], + ['sget_291',['sGet',['../class_shape_functions.html#a6a02ebed9c254a496076966ff5837ca7',1,'ShapeFunctions']]], + ['sgetbodyid_292',['sGetBodyID',['../class_transformed_shape.html#a2a845c1bfaae3c821a7c8b0f517bd02d',1,'TransformedShape']]], + ['sgetdistinctcolor_293',['sGetDistinctColor',['../class_color.html#a7ab76ccae9518b4e91bca83c6839f572',1,'Color']]], + ['sgetequivalentsolidboxsize_294',['sGetEquivalentSolidBoxSize',['../class_mass_properties.html#a0962451096c3563d970b3bd74438f25e',1,'MassProperties']]], + ['sgetflags_295',['sgetflags',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#a546c633b400007f4f848b1b86dc1be61',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::sGetFlags(const void *inTriangleStart, uint32 inNumTriangles, uint8 *outTriangleFlags)'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#a4e137a15d4867a854f9e4c94656a0773',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::sGetFlags(const void *inTriangleStart, int inTriangleIndex)']]], + ['sgetgroup_296',['sGetGroup',['../class_object_layer_pair_filter_mask.html#a3b6c480afe541160011ae06980a0a29c',1,'ObjectLayerPairFilterMask']]], + ['sgetinstance_297',['sGetInstance',['../class_profile_thread.html#a90519c92e016925589a4866b3dc916b7',1,'ProfileThread']]], + ['sgetinvinitialorientation_298',['sgetinvinitialorientation',['../class_rotation_euler_constraint_part.html#a40c10735335691be99e7911139dc2884',1,'RotationEulerConstraintPart::sGetInvInitialOrientation()'],['../class_rotation_quat_constraint_part.html#a8ab9f2a8f10bdbbe8000f7af5f0b7b5b',1,'RotationQuatConstraintPart::sGetInvInitialOrientation()']]], + ['sgetinvinitialorientationxy_299',['sGetInvInitialOrientationXY',['../class_rotation_euler_constraint_part.html#a6757c3b96eff4a145d9228fb1679222d',1,'RotationEulerConstraintPart']]], + ['sgetinvinitialorientationxz_300',['sGetInvInitialOrientationXZ',['../class_rotation_euler_constraint_part.html#ae84f7a33a2d609dd5138c9a7f3f82f65',1,'RotationEulerConstraintPart']]], + ['sgetitem_301',['sGetItem',['../class_large_island_splitter_1_1_splits.html#a3646186cdee64780aeb70ae237e3f0f3',1,'LargeIslandSplitter::Splits']]], + ['sgetiteration_302',['sGetIteration',['../class_large_island_splitter_1_1_splits.html#a8628a9e2d3eed8f7799dbc5a08c233dd',1,'LargeIslandSplitter::Splits']]], + ['sgetmask_303',['sGetMask',['../class_object_layer_pair_filter_mask.html#aa81f6ca1410dca3bcbf434a72a9403fd',1,'ObjectLayerPairFilterMask']]], + ['sgetmortoncode_304',['sGetMortonCode',['../class_morton_code.html#ac960ce088e48d87bb6957434cbf56115',1,'MortonCode']]], + ['sgetobjectlayer_305',['sGetObjectLayer',['../class_object_layer_pair_filter_mask.html#ae7310c04f7b7631e83d9bfe3a4a4278f',1,'ObjectLayerPairFilterMask']]], + ['sgetsplit_306',['sGetSplit',['../class_large_island_splitter_1_1_splits.html#aeeae8922407bff3fb6b24585fdc6359e',1,'LargeIslandSplitter::Splits']]], + ['sgettriangleblockstart_307',['sGetTriangleBlockStart',['../class_node_codec_quad_tree_half_float_1_1_decoding_context.html#a6897b5f58d055fde378516056dec1836',1,'NodeCodecQuadTreeHalfFloat::DecodingContext']]], + ['sgreater_308',['sgreater',['../class_d_vec3.html#a60c87539167a77817e6298bd8cdb1386',1,'DVec3::sGreater()'],['../class_vec3.html#a8eae791f0661b2c625a42034f6480bd1',1,'Vec3::sGreater()'],['../class_vec4.html#a0f083eb84bb57838bafaa1074a5c292e',1,'Vec4::sGreater()'],['../class_vec8.html#aa38a759ebef47cb63db5adc0f569d1c0',1,'Vec8::sGreater()']]], + ['sgreaterorequal_309',['sgreaterorequal',['../class_d_vec3.html#a382ba05ac29dcc57d91370768e3fc7de',1,'DVec3::sGreaterOrEqual()'],['../class_vec3.html#a3a5e5fc2d3bf17a05723d4e411e4202d',1,'Vec3::sGreaterOrEqual()'],['../class_vec4.html#a81da488f59d4a7a84b8ad78fb9d9832d',1,'Vec4::sGreaterOrEqual()']]], + ['sgreen_310',['sGreen',['../class_color.html#a36eb714e97155bdeda7bc276acf007e2',1,'Color']]], + ['sgrey_311',['sGrey',['../class_color.html#adbb787dece4b7f18b70590bdff300a4b',1,'Color']]], + ['shape_312',['shape',['../md__docs_2_release_notes.html#autotoc_md25',1,'HeightField Shape'],['../class_shape.html',1,'Shape'],['../class_shape.html#a23734c9a65732276c51b77ba8542291d',1,'Shape::Shape(EShapeType inType, EShapeSubType inSubType)'],['../class_shape.html#a5c9ae4999b05e4334aede38781a536ad',1,'Shape::Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)']]], + ['shape_2ecpp_313',['Shape.cpp',['../_shape_8cpp.html',1,'']]], + ['shape_2eh_314',['Shape.h',['../_shape_8h.html',1,'']]], + ['shapecast_315',['ShapeCast',['../struct_shape_cast.html',1,'']]], + ['shapecast_2eh_316',['ShapeCast.h',['../_shape_cast_8h.html',1,'']]], + ['shapecastresult_317',['shapecastresult',['../class_shape_cast_result.html',1,'ShapeCastResult'],['../class_shape_cast_result.html#a79089f4b310168c5bfa51cc0bcf134dd',1,'ShapeCastResult::ShapeCastResult()=default'],['../class_shape_cast_result.html#afb01699f4368bbbeec678f0c3c21108d',1,'ShapeCastResult::ShapeCastResult(float inFraction, Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inContactNormalOrPenetrationDepth, bool inBackFaceHit, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2)']]], + ['shapecastsettings_318',['ShapeCastSettings',['../class_shape_cast_settings.html',1,'']]], + ['shapecastt_319',['shapecastt',['../struct_shape_cast_t.html#a72512e9621d9b3ecf84e215bef9ee535',1,'ShapeCastT::ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection)'],['../struct_shape_cast_t.html#a2b2b79fda0cdbef648d9ee22d348334f',1,'ShapeCastT::ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection, const AABox &inWorldSpaceBounds)'],['../struct_shape_cast_t.html',1,'ShapeCastT< Vec, Mat, ShapeCastType >']]], + ['shapecastt_3c_20rvec3_2c_20rmat44_2c_20rshapecast_20_3e_320',['ShapeCastT< RVec3, RMat44, RShapeCast >',['../struct_shape_cast_t.html',1,'']]], + ['shapecastt_3c_20vec3_2c_20mat44_2c_20shapecast_20_3e_321',['ShapeCastT< Vec3, Mat44, ShapeCast >',['../struct_shape_cast_t.html',1,'']]], + ['shapefilter_322',['ShapeFilter',['../class_shape_filter.html',1,'']]], + ['shapefilter_2eh_323',['ShapeFilter.h',['../_shape_filter_8h.html',1,'']]], + ['shapefunctions_324',['ShapeFunctions',['../class_shape_functions.html',1,'']]], + ['shapelist_325',['ShapeList',['../_shape_8h.html#aa3428b3d5af96a1e2200ae7d14057d3c',1,'Shape.h']]], + ['shaperefc_326',['ShapeRefC',['../_shape_8h.html#a840e6a4efc782d25701f730eb48ef249',1,'Shape.h']]], + ['shaperesult_327',['shaperesult',['../class_shape_settings.html#a988ca04438dfad8edfe4e16d5394b6a8',1,'ShapeSettings::ShapeResult'],['../class_shape.html#a11c1ce0984dccb67176566d78331375e',1,'Shape::ShapeResult']]], + ['shapes_328',['shapes',['../index.html#creating-custom-shapes',1,'Creating Custom Shapes'],['../index.html#creating-shapes',1,'Creating Shapes'],['../index.html#dynamic-mesh-shapes',1,'Dynamic Mesh Shapes'],['../index.html#saving-shapes',1,'Saving Shapes'],['../index.html#scaling-shapes',1,'Scaling Shapes'],['../index.html#shapes',1,'Shapes']]], + ['shapes_20scaled_20shapes_329',['Shapes & Scaled Shapes',['../md__docs_2_samples.html#autotoc_md16',1,'']]], + ['shapesettings_330',['ShapeSettings',['../class_shape_settings.html',1,'']]], + ['shapetoidmap_331',['shapetoidmap',['../class_body_creation_settings.html#af26faa1cd67cfc60a3f9ebe90873f446',1,'BodyCreationSettings::ShapeToIDMap'],['../class_shape.html#a5944ae14aeacc70bb42a38d7c3a31220',1,'Shape::ShapeToIDMap']]], + ['shapetypecolor_332',['ShapeTypeColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2ae474501d8e6be0d0983214885896073a',1,'BodyManager']]], + ['sharedlock_333',['sharedlock',['../class_shared_lock.html#a423a99cd3233c75dbf47e664351bab08',1,'SharedLock::SharedLock()'],['../class_shared_lock.html',1,'SharedLock< LockType >']]], + ['sharedmutex_334',['SharedMutex',['../class_shared_mutex.html',1,'']]], + ['sharedmutexbase_335',['SharedMutexBase',['../_mutex_8h.html#a452048983cf5a9a9466e19d9f26cd8fd',1,'Mutex.h']]], + ['sharedsettingstoidmap_336',['sharedsettingstoidmap',['../class_soft_body_creation_settings.html#a1f5861a5fc161cfee540201082d121c1',1,'SoftBodyCreationSettings::SharedSettingsToIDMap'],['../class_soft_body_shared_settings.html#afa2f5681547b8f3f32503225c5ebdc41',1,'SoftBodySharedSettings::SharedSettingsToIDMap']]], + ['shiftcomponents4minus_337',['ShiftComponents4Minus',['../class_u_vec4.html#a8d9ff8b435e5475505c944e96d872b2b',1,'UVec4']]], + ['shouldabort_338',['shouldabort',['../struct_compound_shape_1_1_cast_ray_visitor.html#a7668a1ea39d30feee8636f90626320c4',1,'CompoundShape::CastRayVisitor::ShouldAbort()'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a0514f8498006d248fc1ca54e5420ba41',1,'CompoundShape::CollectTransformedShapesVisitor::ShouldAbort()'],['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#adcc33d30649befa932d49742db59986d',1,'CompoundShape::CastRayVisitorCollector::ShouldAbort()'],['../struct_compound_shape_1_1_collide_point_visitor.html#aab907c8ad14bf917323ed88160cd861d',1,'CompoundShape::CollidePointVisitor::ShouldAbort()'],['../struct_compound_shape_1_1_cast_shape_visitor.html#a11687e8851b02a264d77bfa665822398',1,'CompoundShape::CastShapeVisitor::ShouldAbort()'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a135fbf1825c7dfbfc0556005b92bc5c1',1,'CompoundShape::CollideCompoundVsShapeVisitor::ShouldAbort()'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a017c33d9b6a4dee82d757dc499999c01',1,'CompoundShape::CollideShapeVsCompoundVisitor::ShouldAbort()'],['../struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a0747547a9895a7dc598391e602ae67e6',1,'CompoundShape::GetIntersectingSubShapesVisitor::ShouldAbort()'],['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#aa94c265db390c8d863f5e92d1b334241',1,'HeightFieldShape::HSGetTrianglesContext::ShouldAbort()'],['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#a1ad05ea27186c07aebbc4f6d99bc859c',1,'MeshShape::MSGetTrianglesContext::ShouldAbort()']]], + ['shouldcollide_339',['shouldcollide',['../class_object_vs_broad_phase_layer_filter_mask.html#ab6ba91976c330c45c088aa4fb1a5414e',1,'ObjectVsBroadPhaseLayerFilterMask::ShouldCollide()'],['../class_object_layer_filter.html#aa5d1889ba4f6adf8f7f4c46e57cd166b',1,'ObjectLayerFilter::ShouldCollide()'],['../class_object_vs_broad_phase_layer_filter_table.html#afe9699576b8dc801762a73e7d5244ff6',1,'ObjectVsBroadPhaseLayerFilterTable::ShouldCollide()'],['../class_body_filter.html#af6f1c46fdb171ad70570c1ca83b0eab7',1,'BodyFilter::ShouldCollide()'],['../class_default_object_layer_filter.html#a454d7b668f25a6301eba8a0a17276b79',1,'DefaultObjectLayerFilter::ShouldCollide()'],['../class_broad_phase_layer_interface_mask.html#ae96ef540e10bbd5d1dbed4260d8d179a',1,'BroadPhaseLayerInterfaceMask::ShouldCollide()'],['../class_ignore_single_body_filter.html#a7b0ecbbf0eb0826fbee8e3e4d346a5c0',1,'IgnoreSingleBodyFilter::ShouldCollide()'],['../class_object_layer_pair_filter.html#a81cbe75cceb74bc262199206ac129c88',1,'ObjectLayerPairFilter::ShouldCollide()'],['../class_ignore_multiple_bodies_filter.html#a137d43d99694c431af49bcf1e1398b79',1,'IgnoreMultipleBodiesFilter::ShouldCollide()'],['../class_ignore_single_body_filter_chained.html#ad94457a47665f2ef204f382f2812393d',1,'IgnoreSingleBodyFilterChained::ShouldCollide()'],['../class_object_vs_broad_phase_layer_filter.html#a6004607941fda1b8c6a88471440e0e86',1,'ObjectVsBroadPhaseLayerFilter::ShouldCollide()'],['../class_broad_phase_layer_filter.html#ac1ac3c869de6ebfe9fa1ded56faddb55',1,'BroadPhaseLayerFilter::ShouldCollide()'],['../class_default_broad_phase_layer_filter.html#af08a7bc5141b24385c4fc1a731657cda',1,'DefaultBroadPhaseLayerFilter::ShouldCollide()'],['../class_specified_broad_phase_layer_filter.html#aedde7395b8b32b17168accd40be9860d',1,'SpecifiedBroadPhaseLayerFilter::ShouldCollide()'],['../class_specified_object_layer_filter.html#a14426a684c2264c1120bd2c60460057b',1,'SpecifiedObjectLayerFilter::ShouldCollide()'],['../class_object_layer_pair_filter_mask.html#a23e66d271d3cfa3977432941f767e994',1,'ObjectLayerPairFilterMask::ShouldCollide()'],['../class_object_layer_pair_filter_table.html#a77261471bc7057de4c292e22c645d718',1,'ObjectLayerPairFilterTable::ShouldCollide()'],['../class_shape_filter.html#a34e0af56ee8eff11096ed8926e87f2c5',1,'ShapeFilter::ShouldCollide(const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const'],['../class_shape_filter.html#a5e0b842fca969a0b6fee6e531273db51',1,'ShapeFilter::ShouldCollide(const Shape *inShape1, const SubShapeID &inSubShapeIDOfShape1, const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const'],['../class_reversed_shape_filter.html#a0da8f32256715a06181081750a1d6229',1,'ReversedShapeFilter::ShouldCollide(const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const override'],['../class_reversed_shape_filter.html#a78f5767dd29b71003df33a9743b3bb73',1,'ReversedShapeFilter::ShouldCollide(const Shape *inShape1, const SubShapeID &inSubShapeIDOfShape1, const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const override']]], + ['shouldcollidelocked_340',['shouldcollidelocked',['../class_body_filter.html#a1236e4cc531ca2268fb4fbb0d2c3e8f6',1,'BodyFilter::ShouldCollideLocked()'],['../class_ignore_single_body_filter_chained.html#ae841943960b45091f0fb253f086c6a12',1,'IgnoreSingleBodyFilterChained::ShouldCollideLocked()']]], + ['shoulddraw_341',['ShouldDraw',['../class_body_draw_filter.html#a46dc16be92346884c4c857af56763435',1,'BodyDrawFilter']]], + ['shouldearlyout_342',['ShouldEarlyOut',['../class_collision_collector.html#a45cb1cfbb5ec957d3c66b65d2333d825',1,'CollisionCollector']]], + ['shouldearlyoutfraction_343',['shouldearlyoutfraction',['../class_collision_collector_traits_cast_ray.html#afa6f91ce29ad08f2e10f02de6b6f88c8',1,'CollisionCollectorTraitsCastRay::ShouldEarlyOutFraction'],['../class_collision_collector_traits_cast_shape.html#a0e140c58d35f83e0992dd50e7f51bb20',1,'CollisionCollectorTraitsCastShape::ShouldEarlyOutFraction'],['../class_collision_collector_traits_collide_shape.html#ae17bd05b85c1d2e11adcbd1dad050299',1,'CollisionCollectorTraitsCollideShape::ShouldEarlyOutFraction']]], + ['shouldsavebody_344',['ShouldSaveBody',['../class_state_recorder_filter.html#af6eb66653cea36732871dbc269e8a59c',1,'StateRecorderFilter']]], + ['shouldsaveconstraint_345',['ShouldSaveConstraint',['../class_state_recorder_filter.html#a77644ce7e05d4a272178c705be69f3cc',1,'StateRecorderFilter']]], + ['shouldsavecontact_346',['ShouldSaveContact',['../class_state_recorder_filter.html#aa53d221987a810e76efd1e62484c922d',1,'StateRecorderFilter']]], + ['shouldvisitnode_347',['ShouldVisitNode',['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#ab48cfff2bdc317341376ff83be3138d4',1,'MeshShape::MSGetTrianglesContext']]], + ['shouldvisitrangeblock_348',['ShouldVisitRangeBlock',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a256be48964a14190655ca1327185acf1',1,'HeightFieldShape::HSGetTrianglesContext']]], + ['shrink_5fto_5ffit_349',['shrink_to_fit',['../class_array.html#aa0b6ed6d3fb2d6b28086e05f46ff8819',1,'Array']]], + ['sidentity_350',['sidentity',['../class_matrix.html#a80273dfe4027f98733b402245010c427',1,'Matrix::sIdentity()'],['../class_mat44.html#a1b8c82590f5034e8c7f35157fdfd944f',1,'Mat44::sIdentity()'],['../class_d_mat44.html#a643e38a7aff102e856cb17593d2fb368',1,'DMat44::sIdentity()'],['../class_quat.html#a73a43fe262fbbbc0b1872d238b972794',1,'Quat::sIdentity()']]], + ['sign_351',['Sign',['../_math_8h.html#a34ee8d229d5ba32162857cf660526a86',1,'Math.h']]], + ['signeddistance_352',['SignedDistance',['../class_plane.html#a96f5ba7b329fcccd22eaa63a7e282605',1,'Plane']]], + ['simulate_353',['Soft Body Simulate',['../index.html#soft-body-simulate',1,'']]], + ['simulation_354',['simulation',['../index.html#deterministic-simulation',1,'Deterministic Simulation'],['../index.html#rolling-back-a-simulation',1,'Rolling Back a Simulation'],['../md__docs_2_release_notes.html#autotoc_md44',1,'Simulation']]], + ['simulation_20step_355',['The Simulation Step',['../index.html#the-simulation-step',1,'']]], + ['simulation_20step_20in_20detail_356',['The Simulation Step in Detail',['../index.html#the-simulation-step-in-detail',1,'']]], + ['sin_357',['Sin',['../_trigonometry_8h.html#a89091907eb3da97f690e324849d773cb',1,'Trigonometry.h']]], + ['sincos_358',['SinCos',['../class_vec4.html#af7e7da5ada5c3e85aac45d62871a867c',1,'Vec4']]], + ['single_20threaded_20access_359',['Single Threaded Access',['../index.html#single-threaded-access',1,'']]], + ['sinit_360',['sInit',['../class_collision_dispatch.html#a78989af31a71c0421249c9074b94a2e0',1,'CollisionDispatch']]], + ['sinstance_361',['sinstance',['../class_factory.html#afdbac3e3e59f7981d7dec696e914e69f',1,'Factory::sInstance'],['../class_profiler.html#a804901c292686e870e221a0fa0621dbe',1,'Profiler::sInstance'],['../class_debug_renderer.html#ab03458cbd419bc22da1d176b27ce74ea',1,'DebugRenderer::sInstance']]], + ['sinternalgetrefcountoffset_362',['sInternalGetRefCountOffset',['../class_ref_target.html#a58b5a94748691b18ecf651ce918ae743',1,'RefTarget']]], + ['sintersectplanes_363',['sIntersectPlanes',['../class_plane.html#abffae87f2329df22fc511aaf4a40fb6e',1,'Plane']]], + ['sinverserotationtranslation_364',['sinverserotationtranslation',['../class_mat44.html#ac8be820a7eeb44bf570abb8dc01f4c59',1,'Mat44::sInverseRotationTranslation()'],['../class_d_mat44.html#a843dd24a84756b0d776f47913e510b41',1,'DMat44::sInverseRotationTranslation()']]], + ['sisvalidbodypointer_365',['sIsValidBodyPointer',['../class_body_manager.html#a2a95afcef6b2166321d1ba21dce19158',1,'BodyManager']]], + ['sixdof_366',['SixDOF',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dac3d163397733dea0f5563f2b7b3fa4a2',1,'Constraint.h']]], + ['sixdofconstraint_367',['sixdofconstraint',['../class_six_d_o_f_constraint.html',1,'SixDOFConstraint'],['../class_six_d_o_f_constraint.html#a3002dc33540a30ce549738faa272f868',1,'SixDOFConstraint::SixDOFConstraint()']]], + ['sixdofconstraint_2ecpp_368',['SixDOFConstraint.cpp',['../_six_d_o_f_constraint_8cpp.html',1,'']]], + ['sixdofconstraint_2eh_369',['SixDOFConstraint.h',['../_six_d_o_f_constraint_8h.html',1,'']]], + ['sixdofconstraintsettings_370',['SixDOFConstraintSettings',['../class_six_d_o_f_constraint_settings.html',1,'']]], + ['size_371',['size',['../class_static_array.html#aea449055e7dab910eca1a4af05d53b6f',1,'StaticArray::size()'],['../class_array.html#a9d2ab10879978f2c32e760a92fa0d585',1,'Array::size()']]], + ['size_5ftype_372',['size_type',['../class_s_t_l_temp_allocator.html#adffaee1b8b044dae6b8390cf013eced8',1,'STLTempAllocator::size_type'],['../class_s_t_l_allocator.html#aac44f3272ab922012ffbc4f79b5916f1',1,'STLAllocator::size_type'],['../class_s_t_l_aligned_allocator.html#a0004fb3a233bcaa84924f839156d06b3',1,'STLAlignedAllocator::size_type'],['../class_static_array.html#a69859b5a0e6cd32048fc1f3188982f3b',1,'StaticArray::size_type'],['../class_array.html#a4a40aef148c8e577471a1371e336da00',1,'Array::size_type']]], + ['skeletalanimation_373',['SkeletalAnimation',['../class_skeletal_animation.html',1,'']]], + ['skeletalanimation_2ecpp_374',['SkeletalAnimation.cpp',['../_skeletal_animation_8cpp.html',1,'']]], + ['skeletalanimation_2eh_375',['SkeletalAnimation.h',['../_skeletal_animation_8h.html',1,'']]], + ['skeleton_376',['Skeleton',['../class_skeleton.html',1,'']]], + ['skeleton_2ecpp_377',['Skeleton.cpp',['../_skeleton_8cpp.html',1,'']]], + ['skeleton_2eh_378',['Skeleton.h',['../_skeleton_8h.html',1,'']]], + ['skeletonmapper_379',['SkeletonMapper',['../class_skeleton_mapper.html',1,'']]], + ['skeletonmapper_2ecpp_380',['SkeletonMapper.cpp',['../_skeleton_mapper_8cpp.html',1,'']]], + ['skeletonmapper_2eh_381',['SkeletonMapper.h',['../_skeleton_mapper_8h.html',1,'']]], + ['skeletonpose_382',['SkeletonPose',['../class_skeleton_pose.html',1,'']]], + ['skeletonpose_2ecpp_383',['SkeletonPose.cpp',['../_skeleton_pose_8cpp.html',1,'']]], + ['skeletonpose_2eh_384',['SkeletonPose.h',['../_skeleton_pose_8h.html',1,'']]], + ['skeletonresult_385',['SkeletonResult',['../class_skeleton.html#a5c20e8863abf01154331314d8e72c75e',1,'Skeleton']]], + ['skinned_386',['skinned',['../class_soft_body_shared_settings_1_1_skinned.html',1,'SoftBodySharedSettings::Skinned'],['../class_soft_body_motion_properties.html#a18d7bb8ddc939b3e9fe20a57cd99d722',1,'SoftBodyMotionProperties::Skinned'],['../class_soft_body_shared_settings_1_1_skinned.html#a544c250206111b01d89f27da60f3e6bf',1,'SoftBodySharedSettings::Skinned::Skinned()=default'],['../class_soft_body_shared_settings_1_1_skinned.html#a914dc545507fc78d06f6acaa7d7f9049',1,'SoftBodySharedSettings::Skinned::Skinned(uint32 inVertex, float inMaxDistance, float inBackStopDistance, float inBackStopRadius)']]], + ['skinning_20soft_20bodies_387',['Skinning Soft Bodies',['../index.html#skinning-soft-bodies',1,'']]], + ['skinvertices_388',['SkinVertices',['../class_soft_body_motion_properties.html#a790161d0d5a2b34be8b3ab40376a62c6',1,'SoftBodyMotionProperties']]], + ['skinweight_389',['skinweight',['../class_soft_body_shared_settings_1_1_skin_weight.html',1,'SoftBodySharedSettings::SkinWeight'],['../class_soft_body_motion_properties.html#a1a429c3683fb36c70ff13f57c8084f2f',1,'SoftBodyMotionProperties::SkinWeight'],['../class_soft_body_shared_settings_1_1_skin_weight.html#a813145d1064289c66eb407ab43b1c807',1,'SoftBodySharedSettings::SkinWeight::SkinWeight()=default'],['../class_soft_body_shared_settings_1_1_skin_weight.html#ac3e68d2f34d7a4919a064cde2a16b20a',1,'SoftBodySharedSettings::SkinWeight::SkinWeight(uint32 inInvBindIndex, float inWeight)']]], + ['skipattributedata_390',['SkipAttributeData',['../class_object_stream_in.html#af6fad54cdc53d20f00a438c2b41af54b',1,'ObjectStreamIn']]], + ['sleepcolor_391',['SleepColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2ac00cf17870a7f30bd11fb50ca2b66709',1,'BodyManager']]], + ['sleeping_392',['Sleeping',['../index.html#sleeping-bodies',1,'']]], + ['slerp_393',['SLERP',['../class_quat.html#afc3276d69ac8713afddf3cf970c27371',1,'Quat']]], + ['sless_394',['sless',['../class_d_vec3.html#a0055c9056c703cfb53e306a702843edb',1,'DVec3::sLess()'],['../class_vec3.html#ad376453f8dddd6653c2ead9c02951c48',1,'Vec3::sLess()'],['../class_vec4.html#a4c8600bd26d971542437d4f31258dea4',1,'Vec4::sLess()'],['../class_vec8.html#a239c0570785757c04ada2de8164df6f9',1,'Vec8::sLess()']]], + ['slessorequal_395',['slessorequal',['../class_d_vec3.html#aaf7417eac9dc51d1786a791ca94f4556',1,'DVec3::sLessOrEqual()'],['../class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762',1,'Vec4::sLessOrEqual()'],['../class_vec3.html#a483dc7054df9a3f8c48303a31be6c1e0',1,'Vec3::sLessOrEqual()']]], + ['slider_396',['Slider',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da2d9b9a764fb0be4be10e1b2fce63f561',1,'Constraint.h']]], + ['sliderconstraint_397',['sliderconstraint',['../class_slider_constraint.html#ad70ecf5382d028c817f4ac1544927285',1,'SliderConstraint::SliderConstraint()'],['../class_slider_constraint.html',1,'SliderConstraint']]], + ['sliderconstraint_2ecpp_398',['SliderConstraint.cpp',['../_slider_constraint_8cpp.html',1,'']]], + ['sliderconstraint_2eh_399',['SliderConstraint.h',['../_slider_constraint_8h.html',1,'']]], + ['sliderconstraintsettings_400',['SliderConstraintSettings',['../class_slider_constraint_settings.html',1,'']]], + ['slightgrey_401',['sLightGrey',['../class_color.html#a952b07c63d2b23a6b3c81efcd9fad9fe',1,'Color']]], + ['sloaddouble3unsafe_402',['sLoadDouble3Unsafe',['../class_d_vec3.html#ac19d415377cf91a317d29cc99d319134',1,'DVec3']]], + ['sloadfloat3unsafe_403',['sloadfloat3unsafe',['../class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e',1,'Vec3::sLoadFloat3Unsafe()'],['../class_quat.html#a60c11537faec1e7517a957f02afc4b6d',1,'Quat::sLoadFloat3Unsafe()']]], + ['sloadfloat4_404',['sLoadFloat4',['../class_vec4.html#aae23cc21ead458bce2968440134f350f',1,'Vec4']]], + ['sloadfloat4aligned_405',['sLoadFloat4Aligned',['../class_vec4.html#a1f1c3d12bab2296d6313caf8a9929919',1,'Vec4']]], + ['sloadfloat4x4_406',['sLoadFloat4x4',['../class_mat44.html#a3e2a056f901661fd715528c325df455d',1,'Mat44']]], + ['sloadfloat4x4aligned_407',['sLoadFloat4x4Aligned',['../class_mat44.html#a8bcbeea9029c5251ff4ea9bd4d518f4c',1,'Mat44']]], + ['sloadfloat8_408',['sLoadFloat8',['../class_vec8.html#af75fe8a764ca70357fbc20786fd1909b',1,'Vec8']]], + ['sloadfloat8aligned_409',['sLoadFloat8Aligned',['../class_vec8.html#a9078055cdd0cbcf99c3d2ddc0cfeaaab',1,'Vec8']]], + ['sloadint_410',['sLoadInt',['../class_u_vec4.html#a1fbc23618b7d0936c948c359fe5433e2',1,'UVec4']]], + ['sloadint4_411',['sLoadInt4',['../class_u_vec4.html#ab85dca4074b1a0cb400b92b2e50993c1',1,'UVec4']]], + ['sloadint4aligned_412',['sLoadInt4Aligned',['../class_u_vec4.html#ab7c6d553246416fecc7ad386ec247562',1,'UVec4']]], + ['slock_413',['sLock',['../class_physics_lock.html#ae103305ffa4e008ab2511866b88fc782',1,'PhysicsLock']]], + ['slockshared_414',['sLockShared',['../class_physics_lock.html#a625ab9c9ade9d679ea4b4fc9693f8f7d',1,'PhysicsLock']]], + ['slookat_415',['sLookAt',['../class_mat44.html#a48f32e1e7f27b3eeaa8913d53b2c808f',1,'Mat44']]], + ['sloppy_20while_20still_20being_20deterministic_416',['Being Sloppy While Still Being Deterministic',['../index.html#sloppy-determinism',1,'']]], + ['smax_417',['smax',['../class_vec8.html#a688b26c034b1554a636581deaa721c08',1,'Vec8::sMax()'],['../class_vec4.html#ad41f746bf922376846050d932c0de23d',1,'Vec4::sMax()'],['../class_vec3.html#a0d01523ff685cea4e0c5173fac13fc61',1,'Vec3::sMax()'],['../class_u_vec4.html#a9b6f9b567c5b18179eff43ec527ef82d',1,'UVec4::sMax()'],['../class_d_vec3.html#a034bd1560d516612ff248c5b6eb5f245',1,'DVec3::sMax(DVec3Arg inV1, DVec3Arg inV2)']]], + ['smin_418',['smin',['../class_d_vec3.html#a110aacf67e0556aaf2fdad2e86578715',1,'DVec3::sMin()'],['../class_vec8.html#ad98f554b3a8aa0bbaccbf6a73e5f6509',1,'Vec8::sMin()'],['../class_vec4.html#a85510ae45bcc02e079547de4bf4b6983',1,'Vec4::sMin()'],['../class_vec3.html#a20b4cc5ec27717e3ee651536e2a41a29',1,'Vec3::sMin()'],['../class_u_vec4.html#a158ea0e79cd9b012856caa45a79e9463',1,'UVec4::sMin()']]], + ['snan_419',['snan',['../class_d_vec3.html#a597fd4ed4cbf7af0c17bbd374afb4727',1,'DVec3::sNaN()'],['../class_mat44.html#a5c6898814660114482bbfc4908c3ad37',1,'Mat44::sNaN()'],['../class_vec3.html#aee68177ac267822e1823a9a0f7525014',1,'Vec3::sNaN()'],['../class_vec4.html#ae55a1d16541b4d01f0904784dda18f54',1,'Vec4::sNaN()']]], + ['snot_420',['sNot',['../class_u_vec4.html#a089b92931aa8ae271a79f6c3684e647c',1,'UVec4']]], + ['snullidentifier_421',['sNullIdentifier',['../class_object_stream.html#afb1b32a3aff83d99a4ac14c5cb828778',1,'ObjectStream']]], + ['soft_20bodies_422',['soft bodies',['../index.html#skinning-soft-bodies',1,'Skinning Soft Bodies'],['../index.html#soft-bodies',1,'Soft Bodies']]], + ['soft_20body_423',['soft body',['../md__docs_2_release_notes.html#autotoc_md24',1,'Soft Body'],['../md__docs_2_release_notes.html#autotoc_md36',1,'Soft Body'],['../md__docs_2_samples.html#autotoc_md9',1,'Soft Body']]], + ['soft_20body_20collide_424',['Soft Body Collide',['../index.html#soft-body-collide',1,'']]], + ['soft_20body_20contact_20listeners_425',['Soft Body Contact Listeners',['../index.html#soft-body-contact-listener',1,'']]], + ['soft_20body_20finalize_426',['Soft Body Finalize',['../index.html#soft-body-finalize',1,'']]], + ['soft_20body_20prepare_427',['Soft Body Prepare',['../index.html#soft-body-prepare',1,'']]], + ['soft_20body_20simulate_428',['Soft Body Simulate',['../index.html#soft-body-simulate',1,'']]], + ['soft_20body_20work_20in_20progress_429',['Soft Body Work In Progress',['../index.html#soft-body-wip',1,'']]], + ['softbody_430',['softbody',['../_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666aaae0baf0b48c5dcbb8097a4b857f077d',1,'SoftBody: BodyType.h'],['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5aaae0baf0b48c5dcbb8097a4b857f077d',1,'SoftBody: Shape.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551baaae0baf0b48c5dcbb8097a4b857f077d',1,'SoftBody: Shape.h']]], + ['softbodycontactlistener_431',['SoftBodyContactListener',['../class_soft_body_contact_listener.html',1,'']]], + ['softbodycontactlistener_2eh_432',['SoftBodyContactListener.h',['../_soft_body_contact_listener_8h.html',1,'']]], + ['softbodycontactsettings_433',['SoftBodyContactSettings',['../class_soft_body_contact_settings.html',1,'']]], + ['softbodycreationsettings_434',['softbodycreationsettings',['../class_soft_body_creation_settings.html',1,'SoftBodyCreationSettings'],['../class_soft_body_creation_settings.html#a30778a139b72cd3eb8688798abc1d329',1,'SoftBodyCreationSettings::SoftBodyCreationSettings(const SoftBodySharedSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, ObjectLayer inObjectLayer)'],['../class_soft_body_creation_settings.html#ac5668582f2c4cd10a4d7b15d5aa57be9',1,'SoftBodyCreationSettings::SoftBodyCreationSettings()=default']]], + ['softbodycreationsettings_2ecpp_435',['SoftBodyCreationSettings.cpp',['../_soft_body_creation_settings_8cpp.html',1,'']]], + ['softbodycreationsettings_2eh_436',['SoftBodyCreationSettings.h',['../_soft_body_creation_settings_8h.html',1,'']]], + ['softbodymanifold_437',['softbodymanifold',['../class_soft_body_motion_properties.html#a733acf8aae3ee3af252725fd38bcc12a',1,'SoftBodyMotionProperties::SoftBodyManifold'],['../class_soft_body_manifold.html',1,'SoftBodyManifold']]], + ['softbodymanifold_2eh_438',['SoftBodyManifold.h',['../_soft_body_manifold_8h.html',1,'']]], + ['softbodymotionproperties_439',['softbodymotionproperties',['../class_soft_body_motion_properties.html',1,'SoftBodyMotionProperties'],['../class_soft_body_shared_settings.html#aa52bab293ad7cec288c33c81d5f38ea9',1,'SoftBodySharedSettings::SoftBodyMotionProperties'],['../class_soft_body_manifold.html#aa52bab293ad7cec288c33c81d5f38ea9',1,'SoftBodyManifold::SoftBodyMotionProperties']]], + ['softbodymotionproperties_2ecpp_440',['SoftBodyMotionProperties.cpp',['../_soft_body_motion_properties_8cpp.html',1,'']]], + ['softbodymotionproperties_2eh_441',['SoftBodyMotionProperties.h',['../_soft_body_motion_properties_8h.html',1,'']]], + ['softbodyshape_442',['softbodyshape',['../class_soft_body_shape.html#a4536dbf0d8d3cf1d44639bf82edf3496',1,'SoftBodyShape::SoftBodyShape()'],['../class_soft_body_shape.html',1,'SoftBodyShape']]], + ['softbodyshape_2ecpp_443',['SoftBodyShape.cpp',['../_soft_body_shape_8cpp.html',1,'']]], + ['softbodyshape_2eh_444',['SoftBodyShape.h',['../_soft_body_shape_8h.html',1,'']]], + ['softbodysharedsettings_445',['SoftBodySharedSettings',['../class_soft_body_shared_settings.html',1,'']]], + ['softbodysharedsettings_2ecpp_446',['SoftBodySharedSettings.cpp',['../_soft_body_shared_settings_8cpp.html',1,'']]], + ['softbodysharedsettings_2eh_447',['SoftBodySharedSettings.h',['../_soft_body_shared_settings_8h.html',1,'']]], + ['softbodyupdatecontext_448',['SoftBodyUpdateContext',['../class_soft_body_update_context.html',1,'']]], + ['softbodyupdatecontext_2eh_449',['SoftBodyUpdateContext.h',['../_soft_body_update_context_8h.html',1,'']]], + ['softbodyvalidateresult_450',['SoftBodyValidateResult',['../_soft_body_contact_listener_8h.html#a146313e7653a5364d1e51eccb325abaa',1,'SoftBodyContactListener.h']]], + ['softbodyvertex_451',['SoftBodyVertex',['../class_soft_body_vertex.html',1,'']]], + ['softbodyvertex_2eh_452',['SoftBodyVertex.h',['../_soft_body_vertex_8h.html',1,'']]], + ['softbodywithmotionpropertiesandshape_453',['softbodywithmotionpropertiesandshape',['../class_soft_body_with_motion_properties_and_shape.html#ac1b6418cacec69cc1b1b9bb168250ffa',1,'SoftBodyWithMotionPropertiesAndShape::SoftBodyWithMotionPropertiesAndShape()'],['../class_body.html#adce65bfd20d74b92a90a53883a218dee',1,'Body::SoftBodyWithMotionPropertiesAndShape'],['../class_soft_body_with_motion_properties_and_shape.html',1,'SoftBodyWithMotionPropertiesAndShape']]], + ['solid_454',['Solid',['../class_debug_renderer.html#ab9951f7e2a6dd10b4e8f3b40f01bba32ae41480b6bbfbf7407974a88d3d34f4fa',1,'DebugRenderer']]], + ['solve_20position_20constraints_20update_20bodies_20broad_20phase_455',['Solve Position Constraints, Update Bodies Broad Phase',['../index.html#solve-position-constraints',1,'']]], + ['solve_20velocity_20constraints_456',['Solve Velocity Constraints',['../index.html#solve-velocity-constraints',1,'']]], + ['solvelateralconstraintpart_457',['SolveLateralConstraintPart',['../class_wheel.html#a155778dd99828ddbcc6b4e34305b40f5',1,'Wheel']]], + ['solvelongitudinalandlateralconstraints_458',['solvelongitudinalandlateralconstraints',['../class_wheeled_vehicle_controller.html#a00e70f705f6b7770e3e1e8461998e0bb',1,'WheeledVehicleController::SolveLongitudinalAndLateralConstraints()'],['../class_vehicle_controller.html#abb6de4527ea93a58f69791c7c7093846',1,'VehicleController::SolveLongitudinalAndLateralConstraints()'],['../class_tracked_vehicle_controller.html#a8fdb8ceb2f023e60141688cd680bc0aa',1,'TrackedVehicleController::SolveLongitudinalAndLateralConstraints()'],['../class_motorcycle_controller.html#a2cbe39aef2e451e60fb0a021e8d31d92',1,'MotorcycleController::SolveLongitudinalAndLateralConstraints()']]], + ['solvelongitudinalconstraintpart_459',['SolveLongitudinalConstraintPart',['../class_wheel.html#aca0c965685dee3f84fb830d76a4a00ba',1,'Wheel']]], + ['solvepositionconstraint_460',['solvepositionconstraint',['../class_hinge_rotation_constraint_part.html#a0f4c769c027f4efb2511d74f9658d8eb',1,'HingeRotationConstraintPart::SolvePositionConstraint()'],['../class_gear_constraint_part.html#ad9da946340f02066a9031124bec183af',1,'GearConstraintPart::SolvePositionConstraint()'],['../class_dual_axis_constraint_part.html#a61414f76e664b04fc7b99b4a96cfe032',1,'DualAxisConstraintPart::SolvePositionConstraint()'],['../class_axis_constraint_part.html#a12a0588911733208e89fa65de7e2b2fc',1,'AxisConstraintPart::SolvePositionConstraint()'],['../class_independent_axis_constraint_part.html#a75f7e8a6d760c806d8aadc911965ecce',1,'IndependentAxisConstraintPart::SolvePositionConstraint()'],['../class_point_constraint_part.html#a123b2fd3e83ea307dfd8a946f6b7a449',1,'PointConstraintPart::SolvePositionConstraint()'],['../class_rack_and_pinion_constraint_part.html#acbff5e3cb39103c349d9a2a3866a8475',1,'RackAndPinionConstraintPart::SolvePositionConstraint()'],['../class_rotation_euler_constraint_part.html#ab2276b37dd0f8eaf4229469def2627b6',1,'RotationEulerConstraintPart::SolvePositionConstraint()'],['../class_rotation_quat_constraint_part.html#a598d2320bf1b6d19985a183d06183f13',1,'RotationQuatConstraintPart::SolvePositionConstraint()'],['../class_swing_twist_constraint_part.html#ae8a947eca657db9a653b0d3de921e7c1',1,'SwingTwistConstraintPart::SolvePositionConstraint()'],['../class_distance_constraint.html#a31ec535ef21936a97b305508858f862b',1,'DistanceConstraint::SolvePositionConstraint()'],['../class_fixed_constraint.html#a654022483ce0d0a4e0cd2574b0846cc1',1,'FixedConstraint::SolvePositionConstraint()'],['../class_gear_constraint.html#a4c71050abebf55fe2a8f1c5ad7d0e4ee',1,'GearConstraint::SolvePositionConstraint()'],['../class_hinge_constraint.html#a3ca88c214e95ffdd5b8725d456c23eee',1,'HingeConstraint::SolvePositionConstraint()'],['../class_path_constraint.html#a9041487754a378e24a54414325f214ef',1,'PathConstraint::SolvePositionConstraint()'],['../class_point_constraint.html#aac96ad33ba2e2218f72333a54580ab70',1,'PointConstraint::SolvePositionConstraint()'],['../class_pulley_constraint.html#a87b18f6a3e5e289beb7967227bd11e16',1,'PulleyConstraint::SolvePositionConstraint()'],['../class_rack_and_pinion_constraint.html#af9a89e5738bd0b01041dd67f57dcdb75',1,'RackAndPinionConstraint::SolvePositionConstraint()'],['../class_six_d_o_f_constraint.html#a636d378bc45470f3182c71e0a7b6ba59',1,'SixDOFConstraint::SolvePositionConstraint()'],['../class_slider_constraint.html#a3a2b09378bb8bf731279c89ab15152b0',1,'SliderConstraint::SolvePositionConstraint()'],['../class_swing_twist_constraint.html#a4b881638e8d9fbd49223ae4f3e649f4e',1,'SwingTwistConstraint::SolvePositionConstraint()'],['../class_vehicle_constraint.html#af344b4fb6def1c50f03f1c30d9fca3c2',1,'VehicleConstraint::SolvePositionConstraint()'],['../class_angle_constraint_part.html#a11bb8ed0daf36021dc407fd13cbfde90',1,'AngleConstraintPart::SolvePositionConstraint()'],['../class_constraint.html#adeae5677da3f7d76ca6af382be14e4eb',1,'Constraint::SolvePositionConstraint()'],['../class_cone_constraint.html#a1a39e014d33bfd39d6a22b951c2fbd65',1,'ConeConstraint::SolvePositionConstraint()']]], + ['solvepositionconstraints_461',['SolvePositionConstraints',['../class_contact_constraint_manager.html#a45d8cb39a9e2a3644149661f4e01d2bd',1,'ContactConstraintManager']]], + ['solvepositionconstraintwithmassoverride_462',['SolvePositionConstraintWithMassOverride',['../class_axis_constraint_part.html#a981dad22bd1333ed2147264f3285c112',1,'AxisConstraintPart']]], + ['solvevelocityconstraint_463',['solvevelocityconstraint',['../class_six_d_o_f_constraint.html#a37a955943b8f78e7ff8d98e044981b58',1,'SixDOFConstraint::SolveVelocityConstraint()'],['../class_swing_twist_constraint.html#ae841a8acf92617eca1192909d2885f41',1,'SwingTwistConstraint::SolveVelocityConstraint()'],['../class_vehicle_constraint.html#a3706f414ea9608bcffc2b481f6a88549',1,'VehicleConstraint::SolveVelocityConstraint()'],['../class_slider_constraint.html#a7271357391f44e2ebc647a98fc0ce01b',1,'SliderConstraint::SolveVelocityConstraint()'],['../class_rotation_euler_constraint_part.html#af9a7e556643d4162eb300045d9a40df1',1,'RotationEulerConstraintPart::SolveVelocityConstraint()'],['../class_rack_and_pinion_constraint.html#a1e19ef61ebcf132ce1dd056e8c3bfe92',1,'RackAndPinionConstraint::SolveVelocityConstraint()'],['../class_pulley_constraint.html#a66e0ee2a47361e24d981cb27e5791bbe',1,'PulleyConstraint::SolveVelocityConstraint()'],['../class_point_constraint.html#a341bc9c8983b9988ec60e166caed0afe',1,'PointConstraint::SolveVelocityConstraint()'],['../class_path_constraint.html#a4a217906d4d990d4222d2dfbd3e3de5b',1,'PathConstraint::SolveVelocityConstraint()'],['../class_hinge_constraint.html#ab4b3e0e2e12a3c79f7c7dfd4b01be004',1,'HingeConstraint::SolveVelocityConstraint()'],['../class_gear_constraint.html#ad15d60113726c103c9971694c47ef58b',1,'GearConstraint::SolveVelocityConstraint()'],['../class_fixed_constraint.html#afd06d88db92460bdf49fb4bf5c4e0e99',1,'FixedConstraint::SolveVelocityConstraint()'],['../class_distance_constraint.html#affedf1d2ef0d92264ffaeb579073d5b8',1,'DistanceConstraint::SolveVelocityConstraint()'],['../class_swing_twist_constraint_part.html#ad62155a6ac18bfc95a038b72df927e02',1,'SwingTwistConstraintPart::SolveVelocityConstraint()'],['../class_rotation_quat_constraint_part.html#ad464b428f6994ee02ac203b29c561324',1,'RotationQuatConstraintPart::SolveVelocityConstraint()'],['../class_cone_constraint.html#a6d9ec2215d7e54abb3277386ca1201f5',1,'ConeConstraint::SolveVelocityConstraint()'],['../class_rack_and_pinion_constraint_part.html#a34c658b3b5b4a4fd6e2072e48f625f6f',1,'RackAndPinionConstraintPart::SolveVelocityConstraint()'],['../class_point_constraint_part.html#a217800970665e456d24664aad0b860a6',1,'PointConstraintPart::SolveVelocityConstraint()'],['../class_independent_axis_constraint_part.html#a715a99f78d1e0f0cb03752d4279b4d05',1,'IndependentAxisConstraintPart::SolveVelocityConstraint()'],['../class_hinge_rotation_constraint_part.html#aabd46260672295ed6df506bf81a2f326',1,'HingeRotationConstraintPart::SolveVelocityConstraint()'],['../class_gear_constraint_part.html#a59066c4f97a31d73d74dc5ec277ca43e',1,'GearConstraintPart::SolveVelocityConstraint()'],['../class_dual_axis_constraint_part.html#a05cd7b92a7bdf55e64e1e924fe941a29',1,'DualAxisConstraintPart::SolveVelocityConstraint()'],['../class_axis_constraint_part.html#a0f72dffd609be0cba29f2619c5a2c63a',1,'AxisConstraintPart::SolveVelocityConstraint()'],['../class_angle_constraint_part.html#aab9cd08fa77ca04f5ab6a6d5cfd78538',1,'AngleConstraintPart::SolveVelocityConstraint()'],['../class_constraint.html#a30636bfbf85cd0898a8ee3c543bf675f',1,'Constraint::SolveVelocityConstraint()']]], + ['solvevelocityconstraints_464',['SolveVelocityConstraints',['../class_contact_constraint_manager.html#a6be90138088b291b35baed7974887729',1,'ContactConstraintManager']]], + ['solvevelocityconstraintwithmassoverride_465',['SolveVelocityConstraintWithMassOverride',['../class_axis_constraint_part.html#aac25bbc0f7371f640c6e2af6a94c5cfc',1,'AxisConstraintPart']]], + ['sor_466',['sor',['../class_d_vec3.html#a7355bb9b4f08f3b419a9ff1d82356992',1,'DVec3::sOr()'],['../class_u_vec4.html#a7a3a55e425174799fab88e508c62fa64',1,'UVec4::sOr()'],['../class_u_vec8.html#abaa2dd18e4ff3fee6465bb322733e7e6',1,'UVec8::sOr()'],['../class_vec3.html#a86d172de30a6cbd55d82a2b54272533e',1,'Vec3::sOr()'],['../class_vec4.html#abf9062770dd98c683fc21edc2a2e8511',1,'Vec4::sOr()']]], + ['sorange_467',['sOrange',['../class_color.html#a990ba9412e70ae76b1108c2447b62744',1,'Color']]], + ['sort_468',['sort',['../class_linear_curve.html#ad78f856bc64b3249ffd1982a29e0178c',1,'LinearCurve::Sort()'],['../class_all_hit_collision_collector.html#a6301883d4dfcfd89e61ac4cd62e5c92a',1,'AllHitCollisionCollector::Sort()']]], + ['sortcontacts_469',['SortContacts',['../class_contact_constraint_manager.html#af45077f4de2c4ec57ebecf450e9b88f0',1,'ContactConstraintManager']]], + ['sortreverseandstore_470',['SortReverseAndStore',['../_sort_reverse_and_store_8h.html#ad8b5bed860245d59f9b986771e3a1a13',1,'SortReverseAndStore.h']]], + ['sortreverseandstore_2eh_471',['SortReverseAndStore.h',['../_sort_reverse_and_store_8h.html',1,'']]], + ['souterproduct_472',['sOuterProduct',['../class_mat44.html#a44ee960223f2270ce7ea2840418e3c72',1,'Mat44']]], + ['specifiedbroadphaselayerfilter_473',['specifiedbroadphaselayerfilter',['../class_specified_broad_phase_layer_filter.html',1,'SpecifiedBroadPhaseLayerFilter'],['../class_specified_broad_phase_layer_filter.html#a61d243a9465b8e0f3e71ae585df1d18c',1,'SpecifiedBroadPhaseLayerFilter::SpecifiedBroadPhaseLayerFilter()']]], + ['specifiedobjectlayerfilter_474',['specifiedobjectlayerfilter',['../class_specified_object_layer_filter.html#a3eea28cfe96db770a84b2bea3f39f08a',1,'SpecifiedObjectLayerFilter::SpecifiedObjectLayerFilter()'],['../class_specified_object_layer_filter.html',1,'SpecifiedObjectLayerFilter']]], + ['sperspective_475',['sPerspective',['../class_mat44.html#aef3d368ff37b2b927b1f74573371a06e',1,'Mat44']]], + ['sphere_476',['sphere',['../class_sphere.html#a1c4a9559681c92e3520ba68310805a06',1,'Sphere::Sphere()=default'],['../class_sphere.html#aad6e2c3173f9261f5aa87a10a03aef94',1,'Sphere::Sphere(const Float3 &inCenter, float inRadius)'],['../class_sphere.html#aa60bc919d16366e674f90fb6b37bd7a8',1,'Sphere::Sphere(Vec3Arg inCenter, float inRadius)'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551bab7095f057db3fefa7325ad93a04e14fd',1,'Sphere: Shape.h'],['../class_sphere.html',1,'Sphere']]], + ['sphere_2eh_477',['Sphere.h',['../_sphere_8h.html',1,'']]], + ['spherenoconvex_478',['spherenoconvex',['../class_sphere_shape_1_1_sphere_no_convex.html',1,'SphereShape::SphereNoConvex'],['../class_sphere_shape_1_1_sphere_no_convex.html#af220bf4b31e425741bbc587f13bf3eb2',1,'SphereShape::SphereNoConvex::SphereNoConvex()']]], + ['sphereshape_479',['sphereshape',['../class_sphere_shape.html#a6a7e1d71ee2a8f08aa3fe20e079c586e',1,'SphereShape::SphereShape()'],['../class_sphere_shape.html#a9a858fa962e57907a10dff50bca7b8b5',1,'SphereShape::SphereShape(const SphereShapeSettings &inSettings, ShapeResult &outResult)'],['../class_sphere_shape.html#a500c89d354a98bdec5597e302f9babf3',1,'SphereShape::SphereShape(float inRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_sphere_shape.html',1,'SphereShape']]], + ['sphereshape_2ecpp_480',['SphereShape.cpp',['../_sphere_shape_8cpp.html',1,'']]], + ['sphereshape_2eh_481',['SphereShape.h',['../_sphere_shape_8h.html',1,'']]], + ['sphereshapesettings_482',['sphereshapesettings',['../class_sphere_shape_settings.html#a33357c22dbf0b662617360972a88a796',1,'SphereShapeSettings::SphereShapeSettings(float inRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_sphere_shape_settings.html#a63f7177c89598cccf4f1852d2a828076',1,'SphereShapeSettings::SphereShapeSettings()=default'],['../class_sphere_shape_settings.html',1,'SphereShapeSettings']]], + ['spherewithconvex_483',['spherewithconvex',['../class_sphere_shape_1_1_sphere_with_convex.html',1,'SphereShape::SphereWithConvex'],['../class_sphere_shape_1_1_sphere_with_convex.html#ac0c40365985e261513777a19d486b6d8',1,'SphereShape::SphereWithConvex::SphereWithConvex()']]], + ['splatw_484',['splatw',['../class_vec4.html#aa890d45169669b6845a2770a72166fcf',1,'Vec4::SplatW()'],['../class_u_vec4.html#aa387ab2fa75ac96fa21f35f119c60f8a',1,'UVec4::SplatW() const']]], + ['splatx_485',['splatx',['../class_u_vec4.html#a434119d6c7174e6efda8bf7a9bfab3e7',1,'UVec4::SplatX()'],['../class_vec3.html#a1b03f087ce2755a85ccba4ba56f1e64b',1,'Vec3::SplatX()'],['../class_vec4.html#a02525e7f8473c93268058324115eeb02',1,'Vec4::SplatX()']]], + ['splaty_486',['splaty',['../class_u_vec4.html#a1dad43e9c11de6562500394e3c07a491',1,'UVec4::SplatY()'],['../class_vec3.html#aad5b4211a6d98be56362559eefd9b029',1,'Vec3::SplatY()'],['../class_vec4.html#a7ea3bcf62a6055b45527f720a51d0005',1,'Vec4::SplatY()']]], + ['splatz_487',['splatz',['../class_u_vec4.html#a9e56056fab7838ecd3017281a974755d',1,'UVec4::SplatZ()'],['../class_vec3.html#a81f4448e17219aafda0e3b886709d1f4',1,'Vec3::SplatZ()'],['../class_vec4.html#a8fcd8e6ed1b4cf308656cca7cf68d5ee',1,'Vec4::SplatZ()']]], + ['split_488',['split',['../class_triangle_splitter_morton.html#af5f1aebe70225e7be5d67573ef7dd63e',1,'TriangleSplitterMorton::Split()'],['../class_triangle_splitter_mean.html#a8b8904aefe3c646d907b89a55730f9a9',1,'TriangleSplitterMean::Split()'],['../struct_large_island_splitter_1_1_split.html',1,'LargeIslandSplitter::Split'],['../class_triangle_splitter.html#ad9cb9d125c24255c964427e186e5076e',1,'TriangleSplitter::Split()'],['../class_triangle_splitter_binning.html#a03fd4c136a8b0e6a5eb6220723239490',1,'TriangleSplitterBinning::Split()'],['../class_triangle_splitter_fixed_leaf_size.html#a3c4cf349a59b88d2bed3656d82fa5ead',1,'TriangleSplitterFixedLeafSize::Split()'],['../class_triangle_splitter_longest_axis.html#a6e0fd86ca2d38f41bd6faffcd94e08a4',1,'TriangleSplitterLongestAxis::Split()']]], + ['splitinternal_489',['SplitInternal',['../class_triangle_splitter.html#a1264db44ab782cdb4d8e3b7857422c1a',1,'TriangleSplitter']]], + ['splitisland_490',['SplitIsland',['../class_large_island_splitter.html#a0e0435f6f000b574ec4e9649400f38cd',1,'LargeIslandSplitter']]], + ['splits_491',['Splits',['../class_large_island_splitter_1_1_splits.html',1,'LargeIslandSplitter']]], + ['springpart_492',['SpringPart',['../class_spring_part.html',1,'']]], + ['springpart_2eh_493',['SpringPart.h',['../_spring_part_8h.html',1,'']]], + ['springsettings_494',['springsettings',['../class_spring_settings.html',1,'SpringSettings'],['../class_spring_settings.html#a3cf17470851be12c258e0c2f200f27e4',1,'SpringSettings::SpringSettings(ESpringMode inMode, float inFrequencyOrStiffness, float inDamping)'],['../class_spring_settings.html#ad21b30d2d06ed66e8660ccfc14403827',1,'SpringSettings::SpringSettings(const SpringSettings &)=default'],['../class_spring_settings.html#aefa8b0caa0840d58f74b297ad275c1cf',1,'SpringSettings::SpringSettings()=default']]], + ['springsettings_2ecpp_495',['SpringSettings.cpp',['../_spring_settings_8cpp.html',1,'']]], + ['springsettings_2eh_496',['SpringSettings.h',['../_spring_settings_8h.html',1,'']]], + ['spurple_497',['sPurple',['../class_color.html#a34ab2471dec755f2317e02acae189efb',1,'Color']]], + ['sqrt_498',['sqrt',['../class_vec4.html#a904d46bea744b136e86a786a73199fcb',1,'Vec4::Sqrt()'],['../class_vec3.html#ae3693c78a72d92e9ab821025f8ed28cf',1,'Vec3::Sqrt()'],['../class_d_vec3.html#a286f436889f911c0fcf7f58692bb039d',1,'DVec3::Sqrt()']]], + ['square_499',['Square',['../_math_8h.html#a61379b8b743a16fe823daeebc1482570',1,'Math.h']]], + ['squatleftmultiply_500',['sQuatLeftMultiply',['../class_mat44.html#adca3adc84118200afa5f4203164d241f',1,'Mat44']]], + ['squatrightmultiply_501',['sQuatRightMultiply',['../class_mat44.html#a2b688da0262b9096bfac9ddfa2c27e52',1,'Mat44']]], + ['srandom_502',['srandom',['../class_vec3.html#a2786cc1d2f3b3891dc2d41077a2ee12f',1,'Vec3::sRandom()'],['../class_quat.html#a0686810998da92e9ab857b314b282d91',1,'Quat::sRandom()']]], + ['sreadobject_503',['sreadobject',['../class_object_stream_in.html#af0d35e52cfcbba526cb92f2f703c0ae7',1,'ObjectStreamIn::sReadObject(const char *inFileName, Ref< T > &outObject)'],['../class_object_stream_in.html#a9eb8ce4c6197d5589bb984e5599c59c9',1,'ObjectStreamIn::sReadObject(const char *inFileName, T *&outObject)'],['../class_object_stream_in.html#aaa03094c441e2189fde008fa0cab5c9f',1,'ObjectStreamIn::sReadObject(istream &inStream, Ref< T > &outObject)'],['../class_object_stream_in.html#aefafcdd9389ca4f08e6d966ced1dcffa',1,'ObjectStreamIn::sReadObject(istream &inStream, T *&outObject)']]], + ['sred_504',['sRed',['../class_color.html#afa2aabd04284f9231b26176663f67083',1,'Color']]], + ['sregister_505',['sregister',['../class_compound_shape.html#a76f5b0d6e064aa361723e20870874c0e',1,'CompoundShape::sRegister()'],['../class_soft_body_shape.html#a6a4dd933461dfb1d7bde91eed5a4dc6f',1,'SoftBodyShape::sRegister()'],['../class_triangle_shape.html#aa885e991ed9af4f6f0e30b9436157f9e',1,'TriangleShape::sRegister()'],['../class_tapered_cylinder_shape.html#a179858c48ee826db8881f132671d8efd',1,'TaperedCylinderShape::sRegister()'],['../class_tapered_capsule_shape.html#a3aa3504c24de44b20a5335e2e0f38a3d',1,'TaperedCapsuleShape::sRegister()'],['../class_static_compound_shape.html#abf647cf5959f82ceee6a99775d327546',1,'StaticCompoundShape::sRegister()'],['../class_sphere_shape.html#a437ffa58df3010d0acf7fe4127dc5b10',1,'SphereShape::sRegister()'],['../class_scaled_shape.html#a02cfebf2c001533beb2f08ef9aa5b59f',1,'ScaledShape::sRegister()'],['../class_rotated_translated_shape.html#a97e601971075a0df64de311c4ca408b4',1,'RotatedTranslatedShape::sRegister()'],['../class_plane_shape.html#a4029bfa803f2f44539c4096f6dca17ce',1,'PlaneShape::sRegister()'],['../class_offset_center_of_mass_shape.html#a75c33e6898de385e4574746247ccdf10',1,'OffsetCenterOfMassShape::sRegister()'],['../class_mutable_compound_shape.html#a1c9b4561e27c2a0180c51eea489cf9b9',1,'MutableCompoundShape::sRegister()'],['../class_mesh_shape.html#a7c65cb780134f5d289b977dab3993e5b',1,'MeshShape::sRegister()'],['../class_height_field_shape.html#af3dccac7e8316932c5def85fde0689da',1,'HeightFieldShape::sRegister()'],['../class_cylinder_shape.html#a37bdf0cb950d2e64dad83345ab8798d4',1,'CylinderShape::sRegister()'],['../class_convex_shape.html#aa7fa38607feb65b18ff6554b6b095f3e',1,'ConvexShape::sRegister()'],['../class_convex_hull_shape.html#a56ffb5845b2036bea29d1651ffa6e5a1',1,'ConvexHullShape::sRegister()'],['../class_capsule_shape.html#a04197ebb51d8fb880b9ebd4ca3e2f156',1,'CapsuleShape::sRegister()'],['../class_box_shape.html#a00674282972d39ea632c2cf1f4478ec6',1,'BoxShape::sRegister()']]], + ['sregistercastshape_506',['sRegisterCastShape',['../class_collision_dispatch.html#a211b05424a9e6e7bff777af77edad6be',1,'CollisionDispatch']]], + ['sregistercollideshape_507',['sRegisterCollideShape',['../class_collision_dispatch.html#a20d56fd7360a0b72be7803eef2d616ed',1,'CollisionDispatch']]], + ['sremovedependencies_508',['sremovedependencies',['../class_job_system_1_1_job_handle.html#a0daface7b509f0f9bd5b03a33554b6c4',1,'JobSystem::JobHandle::sRemoveDependencies(const JobHandle *inHandles, uint inNumHandles, int inCount=1)'],['../class_job_system_1_1_job_handle.html#a822d3ea702c61fe9aa32b2c6e6925749',1,'JobSystem::JobHandle::sRemoveDependencies(StaticArray< JobHandle, N > &inHandles, int inCount=1)']]], + ['sreplicate_509',['sreplicate',['../class_d_vec3.html#aacd317439be46d73edb9c0272b9445d6',1,'DVec3::sReplicate()'],['../class_u_vec4.html#a4287a7bd825aaf6111f310e0c92bd152',1,'UVec4::sReplicate()'],['../class_u_vec8.html#a980a0e87ee35f33a2778022f6e95e50f',1,'UVec8::sReplicate()'],['../class_vec3.html#ad6be51ce14811d6c196784d20cb39b98',1,'Vec3::sReplicate()'],['../class_vec4.html#af18f350dd2885dc48ff7e7cbf4b8bc9d',1,'Vec4::sReplicate()'],['../class_vec8.html#affc8f77dd2b5411c7b27e8f037c2dcee',1,'Vec8::sReplicate()']]], + ['srestorefrombinarystate_510',['srestorefrombinarystate',['../class_physics_material.html#affe6eea0b427cc98523f32e5d1e494f9',1,'PhysicsMaterial::sRestoreFromBinaryState()'],['../class_skeleton.html#a3429d0d7e38215ebc548ec1668e5835f',1,'Skeleton::sRestoreFromBinaryState()'],['../class_ragdoll_settings.html#a290920d5a22f05282117b81a842504b0',1,'RagdollSettings::sRestoreFromBinaryState()'],['../class_physics_scene.html#a887f36659b18acde327e0d9741d8bbda',1,'PhysicsScene::sRestoreFromBinaryState()'],['../class_path_constraint_path.html#ac6fa79b918e711e6cd800463d9506663',1,'PathConstraintPath::sRestoreFromBinaryState()'],['../class_constraint_settings.html#a0e806046f09625624a7ecdec52aafa8b',1,'ConstraintSettings::sRestoreFromBinaryState()'],['../class_shape.html#a6e4794eda984be9d44335e38824eb1bb',1,'Shape::sRestoreFromBinaryState()'],['../class_group_filter.html#ab6ed0c1e98ac928c80b669dc82d7eed7',1,'GroupFilter::sRestoreFromBinaryState()']]], + ['srestorewithchildren_511',['srestorewithchildren',['../class_body_creation_settings.html#ace0c4cc07ee02c076d09ec966f510860',1,'BodyCreationSettings::sRestoreWithChildren()'],['../class_soft_body_creation_settings.html#a1900ac31f68ba7ff3ed27d9cf7f5d382',1,'SoftBodyCreationSettings::sRestoreWithChildren()'],['../class_shape.html#a439b98c1569fb5d44570446306823f5e',1,'Shape::sRestoreWithChildren()']]], + ['srestorewithmaterials_512',['sRestoreWithMaterials',['../class_soft_body_shared_settings.html#ae8be307a9bf23c82e7bf12575873973e',1,'SoftBodySharedSettings']]], + ['sreversedcastshape_513',['sReversedCastShape',['../class_collision_dispatch.html#a559aa7de19de882317f52329f88182ea',1,'CollisionDispatch']]], + ['sreversedcollideshape_514',['sReversedCollideShape',['../class_collision_dispatch.html#a931dfb0bf6aeeed8acc7d6c6907f903b',1,'CollisionDispatch']]], + ['srevision_515',['sRevision',['../class_object_stream.html#a9b50736a6c66df50ba7274ca6a3c0686',1,'ObjectStream']]], + ['srotation_516',['srotation',['../class_d_mat44.html#a748b82fc1980e7470c0da6a82ddb94b9',1,'DMat44::sRotation()'],['../class_mat44.html#ac3109f2d950061c0b4de57e76a132634',1,'Mat44::sRotation(Vec3Arg inAxis, float inAngle)'],['../class_mat44.html#a57c9e6198fcf68a50cb33609fac0980a',1,'Mat44::sRotation(QuatArg inQuat)'],['../class_quat.html#a3ac594bf7be610138e90735ae99ff8e9',1,'Quat::sRotation()']]], + ['srotationtranslation_517',['srotationtranslation',['../class_d_mat44.html#a2ff705d6cc881693661b4f30fe06a7d2',1,'DMat44::sRotationTranslation()'],['../class_mat44.html#aba5427f45393b40263d52ec614cfa985',1,'Mat44::sRotationTranslation(QuatArg inR, Vec3Arg inT)']]], + ['srotationx_518',['sRotationX',['../class_mat44.html#af243335b6d6acec2cf71d4cdc79bdff4',1,'Mat44']]], + ['srotationy_519',['sRotationY',['../class_mat44.html#afc881fca3e2d653815f0e7742ad4dce8',1,'Mat44']]], + ['srotationz_520',['sRotationZ',['../class_mat44.html#a3d393e34a43a22b0fbd2aba60f364434',1,'Mat44']]], + ['sscale_521',['sscale',['../class_d_mat44.html#a58693b06de99f17817c09a4c43bfe294',1,'DMat44::sScale()'],['../class_mat44.html#a858ecd5c9c124039f5c7adab5bcf5041',1,'Mat44::sScale(float inScale)'],['../class_mat44.html#a6059fd2921e0dc33405fe05a2d3aaa76',1,'Mat44::sScale(Vec3Arg inV)']]], + ['sselect_522',['sselect',['../class_vec4.html#a6ae67a60e24b50c1b59050ef3d171228',1,'Vec4::sSelect()'],['../class_vec8.html#ace631572dfd1ef87806ef62714d3fd89',1,'Vec8::sSelect()'],['../class_u_vec4.html#ae71c2806661a22cb3a5c880a280f30c0',1,'UVec4::sSelect()'],['../class_u_vec8.html#af6073e4bae8355de6c0965306f3d8c02',1,'UVec8::sSelect()'],['../class_vec3.html#a9f893b7c7bc6ef51c19ceeb3c195dd22',1,'Vec3::sSelect()'],['../class_d_vec3.html#a7a3873b0b6c20ede5c47eb88b237125e',1,'DVec3::sSelect()']]], + ['ssetinstance_523',['sSetInstance',['../class_profile_thread.html#ad957acc068d3fd9af54ba3d3e6f80d8f',1,'ProfileThread']]], + ['ssetupvelocityconstraints_524',['sSetupVelocityConstraints',['../class_constraint_manager.html#afe238a7b8236da9b32ab8f5d2805a9b0',1,'ConstraintManager']]], + ['ssolvepositionconstraints_525',['sSolvePositionConstraints',['../class_constraint_manager.html#a4229723017436afa53da329e916f35be',1,'ConstraintManager']]], + ['ssolvevelocityconstraints_526',['sSolveVelocityConstraints',['../class_constraint_manager.html#ac5b062e8c716c39c1ab6a9596cf38e27',1,'ConstraintManager']]], + ['ssort4_527',['sSort4',['../class_vec4.html#a07960f2e43abb163fe7ded729c3cac16',1,'Vec4']]], + ['ssort4reverse_528',['sSort4Reverse',['../class_vec4.html#a5474af2152aa33e6b02048aa2b279ece',1,'Vec4']]], + ['ssort4true_529',['sSort4True',['../class_u_vec4.html#a2c26ee49875159becb637c976cd7b589',1,'UVec4']]], + ['ssortconstraints_530',['sSortConstraints',['../class_constraint_manager.html#a2757e3b3d0529dc17e18f973962189a0',1,'ConstraintManager']]], + ['ssplatx_531',['ssplatx',['../class_u_vec8.html#a8feae856c89191c68f06b805203df53f',1,'UVec8::sSplatX()'],['../class_vec8.html#a33fb5192697f9c095b075025a067c4f4',1,'Vec8::sSplatX()']]], + ['ssplaty_532',['ssplaty',['../class_u_vec8.html#a7f27a397508f57859f2e8c87c4be3d3b',1,'UVec8::sSplatY()'],['../class_vec8.html#a6204d9f1086b05b6e5a6932337b12c80',1,'Vec8::sSplatY()']]], + ['ssplatz_533',['ssplatz',['../class_u_vec8.html#a284219a34c2eef183e1b66bfe96ae186',1,'UVec8::sSplatZ()'],['../class_vec8.html#ade8178e79b24927bb220857640b09bc0',1,'Vec8::sSplatZ()']]], + ['stabilize_534',['Stabilize',['../class_ragdoll_settings.html#ab47bfb4b4c4c9dc780307449f9907bae',1,'RagdollSettings']]], + ['stacksize_535',['StackSize',['../class_node_codec_quad_tree_half_float.html#a0299d198512c2ae170389ea9f5c80561',1,'NodeCodecQuadTreeHalfFloat']]], + ['startfirstbatch_536',['StartFirstBatch',['../class_large_island_splitter_1_1_splits.html#a42483726c98f92ac6b1c915da0fa8868',1,'LargeIslandSplitter::Splits']]], + ['startvertex_537',['StartVertex',['../class_collide_soft_body_vertices_vs_triangles.html#af5a3ecc5d8027b5e5ea5a313f3cd30cc',1,'CollideSoftBodyVerticesVsTriangles']]], + ['staterecorder_538',['staterecorder',['../class_state_recorder.html#ae41b09b37188ba73227dae4e070c53a8',1,'StateRecorder::StateRecorder()=default'],['../class_state_recorder.html#a3818f8d05147108719da00491da8569a',1,'StateRecorder::StateRecorder(const StateRecorder &inRHS)'],['../class_state_recorder.html',1,'StateRecorder']]], + ['staterecorder_2eh_539',['StateRecorder.h',['../_state_recorder_8h.html',1,'']]], + ['staterecorderfilter_540',['StateRecorderFilter',['../class_state_recorder_filter.html',1,'']]], + ['staterecorderimpl_541',['staterecorderimpl',['../class_state_recorder_impl.html#ac2062cdb1fffa9de6f0a4ca56c610573',1,'StateRecorderImpl::StateRecorderImpl(StateRecorderImpl &&inRHS)'],['../class_state_recorder_impl.html#a032ad810f2ab41da508ff62b35a93286',1,'StateRecorderImpl::StateRecorderImpl()=default'],['../class_state_recorder_impl.html',1,'StateRecorderImpl']]], + ['staterecorderimpl_2ecpp_542',['StateRecorderImpl.cpp',['../_state_recorder_impl_8cpp.html',1,'']]], + ['staterecorderimpl_2eh_543',['StateRecorderImpl.h',['../_state_recorder_impl_8h.html',1,'']]], + ['static_544',['Static',['../_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16',1,'MotionType.h']]], + ['staticarray_545',['staticarray',['../class_static_array.html#a0b1020145a67d2f11ef8b6e21e56efda',1,'StaticArray::StaticArray()'],['../class_static_array.html',1,'StaticArray< T, N >'],['../class_static_array.html#a9be0006e3a1a001893645dbd5b34b355',1,'StaticArray::StaticArray(const StaticArray< T, N > &inRHS)'],['../class_static_array.html#a4289f014eadc8aa60ff6785dabe32f11',1,'StaticArray::StaticArray(std::initializer_list< T > inList)']]], + ['staticarray_2eh_546',['StaticArray.h',['../_static_array_8h.html',1,'']]], + ['staticarray_3c_20bodypairqueue_2c_20cmaxconcurrency_20_3e_547',['StaticArray< BodyPairQueue, cMaxConcurrency >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20collideshaperesult_2c_20cmaxdelayedresults_20_3e_548',['StaticArray< CollideShapeResult, cMaxDelayedResults >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20impulse_2c_20contactpoints_3a_3acapacity_20_3e_549',['StaticArray< Impulse, ContactPoints::Capacity >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20jobhandle_2c_20cmaxconcurrency_20_3e_550',['StaticArray< JobHandle, cMaxConcurrency >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20part_2c_203_20_3e_551',['StaticArray< Part, 3 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20rtti_3a_3abaseclass_2c_204_20_3e_552',['StaticArray< RTTI::BaseClass, 4 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20serializableattribute_2c_2032_20_3e_553',['StaticArray< SerializableAttribute, 32 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20vec3_2c_201026_20_3e_554',['StaticArray< Vec3, 1026 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20vec3_2c_2032_20_3e_555',['StaticArray< Vec3, 32 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20vec3_2c_20384_20_3e_556',['StaticArray< Vec3, 384 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20vec3_2c_2064_20_3e_557',['StaticArray< Vec3, 64 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20vec3_2c_20cmaxpointsinhull_20_3e_558',['StaticArray< Vec3, cMaxPointsInHull >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20voided_2c_20cmaxvoidedfeatures_20_3e_559',['StaticArray< Voided, cMaxVoidedFeatures >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20worldcontactpoint_2c_20maxcontactpoints_20_3e_560',['StaticArray< WorldContactPoint, MaxContactPoints >',['../class_static_array.html',1,'']]], + ['staticcast_561',['staticcast',['../_r_t_t_i_8h.html#a30570b0c6bee40ac6353ddc6d6e22468',1,'StaticCast(const SrcType *inObject): RTTI.h'],['../_r_t_t_i_8h.html#ac0e76c143b5261a65c20f554bc37cab1',1,'StaticCast(SrcType *inObject): RTTI.h'],['../_r_t_t_i_8h.html#ad3e3c54382d1f619141d317cedfe5e5d',1,'StaticCast(const RefConst< SrcType > &inObject): RTTI.h'],['../_r_t_t_i_8h.html#ac456886504eedda859d757767b43b913',1,'StaticCast(const Ref< SrcType > &inObject): RTTI.h']]], + ['staticcompound_562',['StaticCompound',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba1bc847c331f1918fd1fa8b0231517f18',1,'Shape.h']]], + ['staticcompoundshape_563',['staticcompoundshape',['../class_static_compound_shape.html#a15254cd1ef605397c34cd1455c3ce317',1,'StaticCompoundShape::StaticCompoundShape()'],['../class_static_compound_shape.html',1,'StaticCompoundShape'],['../class_static_compound_shape.html#a38f22b35f96ae12c1b41d6503d47faf7',1,'StaticCompoundShape::StaticCompoundShape()']]], + ['staticcompoundshape_2ecpp_564',['StaticCompoundShape.cpp',['../_static_compound_shape_8cpp.html',1,'']]], + ['staticcompoundshape_2eh_565',['StaticCompoundShape.h',['../_static_compound_shape_8h.html',1,'']]], + ['staticcompoundshapesettings_566',['StaticCompoundShapeSettings',['../class_static_compound_shape_settings.html',1,'']]], + ['stats_567',['stats',['../struct_shape_1_1_stats.html#a61e3cd06a767754cbc5150fe93f1e5fb',1,'Shape::Stats::Stats()'],['../struct_shape_1_1_stats.html',1,'Shape::Stats'],['../struct_triangle_splitter_1_1_stats.html',1,'TriangleSplitter::Stats']]], + ['statusitemmask_568',['StatusItemMask',['../class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005cca6ebc6cfc716ad231b90225fd44b41a42',1,'LargeIslandSplitter::Splits']]], + ['statusiterationmask_569',['StatusIterationMask',['../class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005ccaca28e7abb484f9fb2cba5125cde7b3b4',1,'LargeIslandSplitter::Splits']]], + ['statusiterationshift_570',['StatusIterationShift',['../class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005ccacb5adee1be4eaa632656d84c84327343',1,'LargeIslandSplitter::Splits']]], + ['statussplitmask_571',['StatusSplitMask',['../class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005cca5f10b6f1afc0952ac2cda6048d1ef685',1,'LargeIslandSplitter::Splits']]], + ['statussplitshift_572',['StatusSplitShift',['../class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005ccaa6e1ccf30b354c5c1accdf92a42009f9',1,'LargeIslandSplitter::Splits']]], + ['std_573',['std',['../namespacestd.html',1,'']]], + ['step_574',['step',['../struct_physics_update_context_1_1_step.html',1,'PhysicsUpdateContext::Step'],['../struct_physics_update_context_1_1_step.html#a9ec562500a7a59cafbf7d6ce138f702a',1,'PhysicsUpdateContext::Step::Step()=default'],['../struct_physics_update_context_1_1_step.html#a806fa33748fb5724711d2244c55ac119',1,'PhysicsUpdateContext::Step::Step(const Step &)'],['../index.html#the-simulation-step',1,'The Simulation Step']]], + ['step_20in_20detail_575',['The Simulation Step in Detail',['../index.html#the-simulation-step-in-detail',1,'']]], + ['step_20listeners_576',['Step Listeners',['../index.html#step-listeners-update',1,'']]], + ['stepcallback_577',['StepCallback',['../class_vehicle_constraint.html#afbba50dfdf1338531619fe6304fe8ca2',1,'VehicleConstraint']]], + ['steps_578',['Steps',['../class_physics_update_context.html#aa97b7e6fa45894cb5849705b921f03da',1,'PhysicsUpdateContext']]], + ['sticktofloor_579',['StickToFloor',['../class_character_virtual.html#a994b7c0aa38c4930117253eafdd9c9b9',1,'CharacterVirtual']]], + ['stiffnessanddamping_580',['StiffnessAndDamping',['../_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512da80c2dd5c28197f2baebff76bf0299d47',1,'SpringSettings.h']]], + ['still_20being_20deterministic_581',['Being Sloppy While Still Being Deterministic',['../index.html#sloppy-determinism',1,'']]], + ['stlalignedallocator_582',['stlalignedallocator',['../class_s_t_l_aligned_allocator.html#a490bc5212d1eaa558cd629b920f7ab4f',1,'STLAlignedAllocator::STLAlignedAllocator()=default'],['../class_s_t_l_aligned_allocator.html#adcbf21beef1553bd11174da4a4a4a274',1,'STLAlignedAllocator::STLAlignedAllocator(const STLAlignedAllocator< T2, N > &)'],['../class_s_t_l_aligned_allocator.html',1,'STLAlignedAllocator< T, N >']]], + ['stlalignedallocator_2eh_583',['STLAlignedAllocator.h',['../_s_t_l_aligned_allocator_8h.html',1,'']]], + ['stlallocator_584',['stlallocator',['../class_s_t_l_allocator.html#aca939c9a9e8a37dbc3ace546d3c843a5',1,'STLAllocator::STLAllocator(const STLAllocator< T2 > &)'],['../class_s_t_l_allocator.html#a0971631bbfb181b844ee4f1f6cf987d8',1,'STLAllocator::STLAllocator()=default'],['../class_s_t_l_allocator.html',1,'STLAllocator< T >']]], + ['stlallocator_2eh_585',['STLAllocator.h',['../_s_t_l_allocator_8h.html',1,'']]], + ['stlallocator_3c_20additionalconstraint_20_3e_586',['STLAllocator< AdditionalConstraint >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20animatedjoint_20_3e_587',['STLAllocator< AnimatedJoint >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20attributedescription_20_3e_588',['STLAllocator< AttributeDescription >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20bin_20_3e_589',['STLAllocator< Bin >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20body_20_2a_20_3e_590',['STLAllocator< Body * >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20bodycreationsettings_20_3e_591',['STLAllocator< BodyCreationSettings >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20bodyid_20_3e_592',['STLAllocator< BodyID >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20bodyidxpair_20_3e_593',['STLAllocator< BodyIdxPair >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20bounds_20_3e_594',['STLAllocator< Bounds >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20broadphaselayer_20_3e_595',['STLAllocator< BroadPhaseLayer >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20chain_20_3e_596',['STLAllocator< Chain >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20charactervirtual_20_2a_20_3e_597',['STLAllocator< CharacterVirtual * >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20closestkinematic_20_3e_598',['STLAllocator< ClosestKinematic >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20collidingshape_20_3e_599',['STLAllocator< CollidingShape >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20const_20char_20_2a_20_3e_600',['STLAllocator< const char * >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20contact_20_3e_601',['STLAllocator< Contact >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20coplanar_20_3e_602',['STLAllocator< Coplanar >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20debugrenderer_3a_3alod_20_3e_603',['STLAllocator< DebugRenderer::LOD >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20debugrendererrecorder_3a_3aframe_20_3e_604',['STLAllocator< DebugRendererRecorder::Frame >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20debugrendererrecorder_3a_3ageometryblob_20_3e_605',['STLAllocator< DebugRendererRecorder::GeometryBlob >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20debugrendererrecorder_3a_3alineblob_20_3e_606',['STLAllocator< DebugRendererRecorder::LineBlob >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20debugrendererrecorder_3a_3atextblob_20_3e_607',['STLAllocator< DebugRendererRecorder::TextBlob >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20debugrendererrecorder_3a_3atriangleblob_20_3e_608',['STLAllocator< DebugRendererRecorder::TriangleBlob >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20face_20_2a_20_3e_609',['STLAllocator< Face * >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20face_20_3e_610',['STLAllocator< Face >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20float_20_3e_611',['STLAllocator< float >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20float3_20_3e_612',['STLAllocator< Float3 >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20indexedtriangle_20_3e_613',['STLAllocator< IndexedTriangle >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20int_20_3e_614',['STLAllocator< int >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20joint_20_3e_615',['STLAllocator< Joint >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20jointstate_20_3e_616',['STLAllocator< JointState >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20keyframe_20_3e_617',['STLAllocator< Keyframe >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20link_20_3e_618',['STLAllocator< Link >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20locked_20_3e_619',['STLAllocator< Locked >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20mapping_20_3e_620',['STLAllocator< Mapping >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20mat44_20_3e_621',['STLAllocator< Mat44 >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20node_20_3e_622',['STLAllocator< Node >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20part_20_3e_623',['STLAllocator< Part >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20physicsscene_3a_3aconnectedconstraint_20_3e_624',['STLAllocator< PhysicsScene::ConnectedConstraint >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20physicssteplistener_20_2a_20_3e_625',['STLAllocator< PhysicsStepListener * >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20plane_20_3e_626',['STLAllocator< Plane >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20point_20_3e_627',['STLAllocator< Point >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20profilethread_20_2a_20_3e_628',['STLAllocator< ProfileThread * >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20ref_20_3e_629',['STLAllocator< Ref >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20ref_3c_20constraint_20_3e_20_3e_630',['STLAllocator< Ref< Constraint > >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20ref_3c_20twobodyconstraint_20_3e_20_3e_631',['STLAllocator< Ref< TwoBodyConstraint > >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20ref_3c_20wheelsettings_20_3e_20_3e_632',['STLAllocator< Ref< WheelSettings > >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20refconst_3c_20physicsmaterial_20_3e_20_3e_633',['STLAllocator< RefConst< PhysicsMaterial > >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20resulttype_20_3e_634',['STLAllocator< ResultType >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20skinstate_20_3e_635',['STLAllocator< SkinState >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodycreationsettings_20_3e_636',['STLAllocator< SoftBodyCreationSettings >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3adihedralbend_20_3e_637',['STLAllocator< SoftBodySharedSettings::DihedralBend >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3aedge_20_3e_638',['STLAllocator< SoftBodySharedSettings::Edge >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3aface_20_3e_639',['STLAllocator< SoftBodySharedSettings::Face >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3ainvbind_20_3e_640',['STLAllocator< SoftBodySharedSettings::InvBind >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3alra_20_3e_641',['STLAllocator< SoftBodySharedSettings::LRA >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3askinned_20_3e_642',['STLAllocator< SoftBodySharedSettings::Skinned >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3avertex_20_3e_643',['STLAllocator< SoftBodySharedSettings::Vertex >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3avolume_20_3e_644',['STLAllocator< SoftBodySharedSettings::Volume >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodyvertex_20_3e_645',['STLAllocator< SoftBodyVertex >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20subshape_20_3e_646',['STLAllocator< SubShape >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20subshapesettings_20_3e_647',['STLAllocator< SubShapeSettings >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20thread_20_3e_648',['STLAllocator< thread >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20triangle_20_3e_649',['STLAllocator< Triangle >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20uint_20_3e_650',['STLAllocator< uint >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20uint32_20_3e_651',['STLAllocator< uint32 >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20uint8_20_3e_652',['STLAllocator< uint8 >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20unmapped_20_3e_653',['STLAllocator< Unmapped >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20updategroup_20_3e_654',['STLAllocator< UpdateGroup >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20vec3_20_3e_655',['STLAllocator< Vec3 >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20vehicleantirollbar_20_3e_656',['STLAllocator< VehicleAntiRollBar >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20vehicledifferentialsettings_20_3e_657',['STLAllocator< VehicleDifferentialSettings >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20wheel_20_2a_20_3e_658',['STLAllocator< Wheel * >',['../class_s_t_l_allocator.html',1,'']]], + ['stltempallocator_659',['stltempallocator',['../class_s_t_l_temp_allocator.html',1,'STLTempAllocator< T >'],['../class_s_t_l_temp_allocator.html#a96f2c3cf503f75f1deb7b97ce2d677e2',1,'STLTempAllocator::STLTempAllocator(TempAllocator &inAllocator)'],['../class_s_t_l_temp_allocator.html#a584223fe52d48aafd4ab2b9f3d30ecd8',1,'STLTempAllocator::STLTempAllocator(const STLTempAllocator< T2 > &inRHS)']]], + ['stltempallocator_2eh_660',['STLTempAllocator.h',['../_s_t_l_temp_allocator_8h.html',1,'']]], + ['stltempallocator_3c_20step_20_3e_661',['STLTempAllocator< Step >',['../class_s_t_l_temp_allocator.html',1,'']]], + ['storage_662',['Storage',['../struct_static_array_1_1_storage.html',1,'StaticArray']]], + ['storeappliedimpulses_663',['StoreAppliedImpulses',['../class_contact_constraint_manager.html#ac825a74176ec59d9e2995e67fc8d43c1',1,'ContactConstraintManager']]], + ['storedouble3_664',['StoreDouble3',['../class_d_vec3.html#a660cd286454202510b44fa18c2283d4d',1,'DVec3']]], + ['storefloat3_665',['storefloat3',['../class_quat.html#ae95e7b6c9f4167b91b674a696c681c6e',1,'Quat::StoreFloat3()'],['../class_vec3.html#ab22c62c48d2de13947c0cd3413018364',1,'Vec3::StoreFloat3()']]], + ['storefloat4_666',['StoreFloat4',['../class_vec4.html#afdfae50fe6a7d86e7d1684fc71be7ed0',1,'Vec4']]], + ['storefloat4x4_667',['StoreFloat4x4',['../class_mat44.html#a1f51050b35215131c7da9a7de78a3e1e',1,'Mat44']]], + ['storeint4_668',['StoreInt4',['../class_u_vec4.html#aa7b95daa78a51ef877eca777c0389023',1,'UVec4']]], + ['storeint4aligned_669',['StoreInt4Aligned',['../class_u_vec4.html#af62228e490b01b95d5b008a54746473c',1,'UVec4']]], + ['stostring_670',['sToString',['../class_character_base.html#a269b97a0088e3651387c10f350d792cd',1,'CharacterBase']]], + ['stranslation_671',['stranslation',['../class_d_mat44.html#a891c6a1cbe12676aedc8788ff5ec0b8a',1,'DMat44::sTranslation()'],['../class_mat44.html#a8cc7184902ce670d0822a28a8906df52',1,'Mat44::sTranslation()']]], + ['streamin_672',['StreamIn',['../class_stream_in.html',1,'']]], + ['streamin_2eh_673',['StreamIn.h',['../_stream_in_8h.html',1,'']]], + ['streaminwrapper_674',['streaminwrapper',['../class_stream_in_wrapper.html#a520dc1917ebc617092afe68cbaa4ed6b',1,'StreamInWrapper::StreamInWrapper()'],['../class_stream_in_wrapper.html',1,'StreamInWrapper']]], + ['streamout_675',['StreamOut',['../class_stream_out.html',1,'']]], + ['streamout_2eh_676',['StreamOut.h',['../_stream_out_8h.html',1,'']]], + ['streamoutwrapper_677',['streamoutwrapper',['../class_stream_out_wrapper.html#a31c8f3fb2fae07e695d9d7ab7bad604d',1,'StreamOutWrapper::StreamOutWrapper()'],['../class_stream_out_wrapper.html',1,'StreamOutWrapper']]], + ['streamutils_678',['StreamUtils',['../namespace_stream_utils.html',1,'']]], + ['streamutils_2eh_679',['StreamUtils.h',['../_stream_utils_8h.html',1,'']]], + ['streamwrapper_2eh_680',['StreamWrapper.h',['../_stream_wrapper_8h.html',1,'']]], + ['striangleblockidbits_681',['sTriangleBlockIDBits',['../class_node_codec_quad_tree_half_float_1_1_decoding_context.html#a90be34ac29998cfd210f0c1d28956a9c',1,'NodeCodecQuadTreeHalfFloat::DecodingContext']]], + ['strianglesorter_682',['sTriangleSorter',['../class_e_p_a_convex_hull_builder_1_1_triangle_queue.html#abcdf1b5b997b6520dc8123ac8e9bf84f',1,'EPAConvexHullBuilder::TriangleQueue']]], + ['string_683',['String',['../_s_t_l_allocator_8h.html#a0dacf8f805f8da23c2a50d9f7eb41ece',1,'STLAllocator.h']]], + ['stringformat_684',['stringformat',['../_string_tools_8h.html#a9829a5cb529d81ee7d6d6de1c294200c',1,'StringFormat(const char *inFMT,...): StringTools.cpp'],['../_string_tools_8cpp.html#acb1471934488a8e403995034bbc3d8b0',1,'StringFormat(const char *inFMT,...): StringTools.cpp']]], + ['stringreplace_685',['stringreplace',['../_string_tools_8h.html#abdea20f54434c5c987489835602a2668',1,'StringReplace(String &ioString, const string_view &inSearch, const string_view &inReplace): StringTools.cpp'],['../_string_tools_8cpp.html#a3cb1fdfee4bb3f11e76d9c0a5f690eec',1,'StringReplace(String &ioString, const string_view &inSearch, const string_view &inReplace): StringTools.cpp']]], + ['stringtools_2ecpp_686',['StringTools.cpp',['../_string_tools_8cpp.html',1,'']]], + ['stringtools_2eh_687',['StringTools.h',['../_string_tools_8h.html',1,'']]], + ['stringtovector_688',['stringtovector',['../_string_tools_8h.html#a6d6e2c32ceb88a41e7ab8623735a4a77',1,'StringToVector(const string_view &inString, Array< String > &outVector, const string_view &inDelimiter=",", bool inClearVector=true): StringTools.cpp'],['../_string_tools_8cpp.html#a353e97cf17bc7c6645c9354539f736d3',1,'StringToVector(const string_view &inString, Array< String > &outVector, const string_view &inDelimiter, bool inClearVector): StringTools.cpp']]], + ['subangularvelocitystep_689',['SubAngularVelocityStep',['../class_motion_properties.html#a98672fc0c6884643944e570e1d78ac07',1,'MotionProperties']]], + ['subgroupid_690',['SubGroupID',['../class_collision_group.html#ae26aaf0a13015f02f01c0e128ccebcfd',1,'CollisionGroup']]], + ['sublinearvelocitystep_691',['SubLinearVelocityStep',['../class_motion_properties.html#a81a597bd1f9f40f3fbf36991203a5280',1,'MotionProperties']]], + ['subpositionstep_692',['SubPositionStep',['../class_body.html#a3c0a6198eb89412439dfcaef56eadade',1,'Body']]], + ['subrotationstep_693',['SubRotationStep',['../class_body.html#ab0df53d82e3a8356fac91d178b30c369',1,'Body']]], + ['subshape_694',['SubShape',['../struct_compound_shape_1_1_sub_shape.html',1,'CompoundShape']]], + ['subshapeid_695',['subshapeid',['../class_sub_shape_i_d.html#af367dd3acaba3f507a19ba0d27abd299',1,'SubShapeID::SubShapeID()'],['../class_sub_shape_i_d.html',1,'SubShapeID']]], + ['subshapeid_2eh_696',['SubShapeID.h',['../_sub_shape_i_d_8h.html',1,'']]], + ['subshapeidcreator_697',['subshapeidcreator',['../class_sub_shape_i_d.html#a2ce5af4bbd248b1e44de16419d09beee',1,'SubShapeID::SubShapeIDCreator'],['../class_sub_shape_i_d_creator.html',1,'SubShapeIDCreator']]], + ['subshapeidpair_698',['subshapeidpair',['../class_sub_shape_i_d_pair.html#abecaface9b0fca0e2724d1777cce12a8',1,'SubShapeIDPair::SubShapeIDPair(const SubShapeIDPair &)=default'],['../class_sub_shape_i_d_pair.html#abc493f2b834301d7787650dcf28752c1',1,'SubShapeIDPair::SubShapeIDPair(const BodyID &inBody1ID, const SubShapeID &inSubShapeID1, const BodyID &inBody2ID, const SubShapeID &inSubShapeID2)'],['../class_sub_shape_i_d_pair.html',1,'SubShapeIDPair'],['../class_sub_shape_i_d_pair.html#a899aaabfed0fe32af496bf293e446228',1,'SubShapeIDPair::SubShapeIDPair()']]], + ['subshapeidpair_2eh_699',['SubShapeIDPair.h',['../_sub_shape_i_d_pair_8h.html',1,'']]], + ['subshapes_700',['subshapes',['../class_compound_shape_settings.html#ac4842f25ad3eada96183eb8a0e1efdac',1,'CompoundShapeSettings::SubShapes'],['../class_compound_shape.html#a55fbd4f496242427b0e62d788a597e5b',1,'CompoundShape::SubShapes']]], + ['subshapesettings_701',['SubShapeSettings',['../struct_compound_shape_settings_1_1_sub_shape_settings.html',1,'CompoundShapeSettings']]], + ['succeeded_702',['Succeeded',['../class_body_lock_base.html#a8ee09ef1fb31697b4f965c8e5ee09e5f',1,'BodyLockBase']]], + ['succeededandisinbroadphase_703',['SucceededAndIsInBroadPhase',['../class_body_lock_base.html#a9ed231a8aea3cfa9e1e721707dcd08fb',1,'BodyLockBase']]], + ['success_704',['success',['../class_convex_hull_builder2_d.html#a249cc4fd8288bd1cf447d3d820e9dcd0a505a83f220c02df2f85c3810cd9ceb38',1,'ConvexHullBuilder2D::Success'],['../class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa505a83f220c02df2f85c3810cd9ceb38',1,'ConvexHullBuilder::Success']]], + ['sunitsphere_705',['sUnitSphere',['../class_vec3.html#afc091778f74022132499d75cb8a0f43d',1,'Vec3']]], + ['sunitspheretriangles_706',['sUnitSphereTriangles',['../class_convex_shape.html#acd6b81242e1e64191d3d5f77ce17f764',1,'ConvexShape']]], + ['sunitspherical_707',['sUnitSpherical',['../class_vec3.html#aa1ab73a18c3b8b69303bde72cf8bc171',1,'Vec3']]], + ['sunlock_708',['sUnlock',['../class_physics_lock.html#a93408c0ca5bd7bd4668c3c78dbf49966',1,'PhysicsLock']]], + ['sunlockshared_709',['sUnlockShared',['../class_physics_lock.html#ab42fb21e1412524a772aa26b9f7411b3',1,'PhysicsLock']]], + ['support_710',['Support',['../class_convex_shape_1_1_support.html',1,'ConvexShape']]], + ['supportbuffer_711',['SupportBuffer',['../class_convex_shape_1_1_support_buffer.html',1,'ConvexShape']]], + ['supported_20compilers_712',['New supported compilers',['../md__docs_2_release_notes.html#autotoc_md63',1,'']]], + ['supported_20platforms_713',['supported platforms',['../md__docs_2_release_notes.html#autotoc_md57',1,'New supported platforms'],['../md__docs_2_release_notes.html#autotoc_md64',1,'New supported platforms']]], + ['supportfunction_714',['SupportFunction',['../class_debug_renderer.html#af1cf6a05ac6c0387b26aebe24fe0a0d9',1,'DebugRenderer']]], + ['supportingface_715',['SupportingFace',['../class_shape.html#a95d3060318d33c1ef314c5b856a70cb8',1,'Shape']]], + ['svalue_716',['svalue',['../struct_allocator_has_reallocate_3_01_s_t_l_allocator_3_01_t_01_4_01_4.html#a73bbcf686e73cd8b9c3bc905780f3af1',1,'AllocatorHasReallocate< STLAllocator< T > >::sValue'],['../struct_allocator_has_reallocate.html#ae70f528cd65b77e5ad75316300a3c7d5',1,'AllocatorHasReallocate::sValue']]], + ['sversion_717',['sVersion',['../class_object_stream.html#af44c611aa03b15ebaf81e50dc244151c',1,'ObjectStream']]], + ['swap_718',['swap',['../class_array.html#a8a91e5ebc333d5fc2373fe0fc597b6d3',1,'Array']]], + ['swapshapes_719',['SwapShapes',['../class_contact_manifold.html#a48787ecfb82e124dfa8cd1de71ed8027',1,'ContactManifold']]], + ['swarmstartvelocityconstraints_720',['sWarmStartVelocityConstraints',['../class_constraint_manager.html#ae6bcface0a71b17d95c48e2dddac5741',1,'ConstraintManager']]], + ['swhite_721',['sWhite',['../class_color.html#a6cb92698ec2b1bd630695716aaaf3bbd',1,'Color']]], + ['swingtwist_722',['SwingTwist',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da45c50d709bcdfc9e1733315ce452aeb2',1,'Constraint.h']]], + ['swingtwistconstraint_723',['swingtwistconstraint',['../class_swing_twist_constraint.html#a68c8e6f8d1f25c3d593c7304d6804b6e',1,'SwingTwistConstraint::SwingTwistConstraint()'],['../class_swing_twist_constraint.html',1,'SwingTwistConstraint']]], + ['swingtwistconstraint_2ecpp_724',['SwingTwistConstraint.cpp',['../_swing_twist_constraint_8cpp.html',1,'']]], + ['swingtwistconstraint_2eh_725',['SwingTwistConstraint.h',['../_swing_twist_constraint_8h.html',1,'']]], + ['swingtwistconstraintpart_726',['SwingTwistConstraintPart',['../class_swing_twist_constraint_part.html',1,'']]], + ['swingtwistconstraintpart_2eh_727',['SwingTwistConstraintPart.h',['../_swing_twist_constraint_part_8h.html',1,'']]], + ['swingtwistconstraintsettings_728',['SwingTwistConstraintSettings',['../class_swing_twist_constraint_settings.html',1,'']]], + ['swizzle_729',['swizzle',['../class_u_vec4.html#a03d1ddee4a58319e1fd6fb7a8c599874',1,'UVec4::Swizzle()'],['../class_vec4.html#abc7417303ad93e9bbe7506e7cd045724',1,'Vec4::Swizzle()'],['../class_vec8.html#afa43e457f8368acb7b249d9f13e484eb',1,'Vec8::Swizzle()'],['../class_u_vec4.html#aebec00b09795b4b0bfb3acfdc9a52b3f',1,'UVec4::Swizzle()'],['../class_u_vec8.html#a907862ab1fd7c2886e2b75a1c6a2e9ac',1,'UVec8::Swizzle()'],['../class_vec3.html#aeeadce7b9b442cccab2d2f3cbde2ccb9',1,'Vec3::Swizzle()'],['../class_u_vec8.html#a2e355553378c7ecbac97bf9a52760f20',1,'UVec8::Swizzle()'],['../class_vec3.html#afd477997c0834bd3080156e730ced38d',1,'Vec3::Swizzle()'],['../class_vec8.html#a7e104be6684316118f94a6a0f2a8f488',1,'Vec8::Swizzle()'],['../class_vec4.html#af28ba6db045e3e38be66dfdc93c78bda',1,'Vec4::Swizzle()']]], + ['swizzle_2eh_730',['Swizzle.h',['../_swizzle_8h.html',1,'']]], + ['swizzle_5funused_731',['SWIZZLE_UNUSED',['../_swizzle_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57aabca44adc50a0374d19509131edd0042',1,'Swizzle.h']]], + ['swizzle_5fw_732',['SWIZZLE_W',['../_swizzle_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a820def45b2f7468e331d0abe1880dd6a',1,'Swizzle.h']]], + ['swizzle_5fx_733',['SWIZZLE_X',['../_swizzle_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57aa27e48fb4ae47daab960f563f660dfea',1,'Swizzle.h']]], + ['swizzle_5fy_734',['SWIZZLE_Y',['../_swizzle_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57afd291953004304db41e7893449a2ff08',1,'Swizzle.h']]], + ['swizzle_5fz_735',['SWIZZLE_Z',['../_swizzle_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a193cb4a0d68ee0b032d86ae28008aa63',1,'Swizzle.h']]], + ['swriteobject_736',['swriteobject',['../class_object_stream_out.html#a05f2b21699e0b6f60be034761681fdf6',1,'ObjectStreamOut::sWriteObject(const char *inFileName, ObjectStream::EStreamType inType, const T &inObject)'],['../class_object_stream_out.html#aa2b5606b21a4dc250385941cda2ab26f',1,'ObjectStreamOut::sWriteObject(ostream &inStream, ObjectStream::EStreamType inType, const T &inObject)']]], + ['sxor_737',['sxor',['../class_u_vec4.html#abd3a979865d0b6df8f8ef5ce6410e583',1,'UVec4::sXor()'],['../class_d_vec3.html#a2f3ad4f64ebffb752360f19225186886',1,'DVec3::sXor()'],['../class_vec3.html#a3327f133140fbd8cf8e0adaa59480ab3',1,'Vec3::sXor()'],['../class_u_vec8.html#ac76cd233870c4735b88b298883e0569e',1,'UVec8::sXor()'],['../class_vec4.html#a31e9dd5a7d6d4dc05efb55a36a8e80d9',1,'Vec4::sXor()']]], + ['syellow_738',['sYellow',['../class_color.html#afbce637a66704fc3e3cf7d26819d4ab5',1,'Color']]], + ['symbol_739',['Link Error: Unresolved External Symbol',['../md__build_2_r_e_a_d_m_e.html#autotoc_md78',1,'']]], + ['syncleftrighttracks_740',['SyncLeftRightTracks',['../class_tracked_vehicle_controller.html#ab5064addb31d8c35e87492b48221503c',1,'TrackedVehicleController']]], + ['systems_741',['Working With Multiple Physics Systems',['../index.html#working-with-multiple-physics-systems',1,'']]], + ['szero_742',['szero',['../class_quat.html#aed30764b796cee2d0169b126c3839bc1',1,'Quat::sZero()'],['../class_d_mat44.html#a46c73fc4d7a4955c1173e8e210e92e6c',1,'DMat44::sZero()'],['../class_d_vec3.html#a7b43808613023c4439455b887c566246',1,'DVec3::sZero()'],['../class_mat44.html#a1e3a8da1cf3a631ffaf478ca3f6bb1ed',1,'Mat44::sZero()'],['../class_matrix.html#a0ff410c865209df6d236e3bd8ca50863',1,'Matrix::sZero()'],['../class_vector.html#ae70acad7587a3fa83a27f2ece2ba79b8',1,'Vector::sZero()'],['../class_vec8.html#abb275faf149d6f691487dcd3055a0898',1,'Vec8::sZero()'],['../class_vec4.html#ab3d9624594386baa4ebd8c1d340ce924',1,'Vec4::sZero()'],['../class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51',1,'Vec3::sZero()'],['../class_u_vec4.html#ac95737616e92901bf3ebf5746a861233',1,'UVec4::sZero()']]] +]; diff --git a/search/all_16.js b/search/all_16.js new file mode 100644 index 000000000..c4684472b --- /dev/null +++ b/search/all_16.js @@ -0,0 +1,144 @@ +var searchData= +[ + ['tan_0',['tan',['../class_vec4.html#a3769f486156183d3cbecb6a37291fe5c',1,'Vec4::Tan()'],['../_trigonometry_8h.html#a138c843d7c7c5f89c1757b159a86eb00',1,'Tan(): Trigonometry.h']]], + ['taperedcapsule_1',['taperedcapsule',['../class_tapered_capsule_shape_1_1_tapered_capsule.html#a065b71c0f63e9ecfd7cfb30d8b724365',1,'TaperedCapsuleShape::TaperedCapsule::TaperedCapsule()'],['../class_tapered_capsule_shape_1_1_tapered_capsule.html',1,'TaperedCapsuleShape::TaperedCapsule'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba24effac8f5b99ca770d8f0ad5c23279d',1,'TaperedCapsule: Shape.h']]], + ['taperedcapsuleshape_2',['taperedcapsuleshape',['../class_tapered_capsule_shape.html',1,'TaperedCapsuleShape'],['../class_tapered_capsule_shape.html#a26e7343399e7002fa535d95b208d6d55',1,'TaperedCapsuleShape::TaperedCapsuleShape()'],['../class_tapered_capsule_shape.html#a632f3cfdfb0c81974230eee592c47c97',1,'TaperedCapsuleShape::TaperedCapsuleShape(const TaperedCapsuleShapeSettings &inSettings, ShapeResult &outResult)']]], + ['taperedcapsuleshape_2ecpp_3',['TaperedCapsuleShape.cpp',['../_tapered_capsule_shape_8cpp.html',1,'']]], + ['taperedcapsuleshape_2eh_4',['TaperedCapsuleShape.h',['../_tapered_capsule_shape_8h.html',1,'']]], + ['taperedcapsuleshapesettings_5',['TaperedCapsuleShapeSettings',['../class_tapered_capsule_shape_settings.html',1,'']]], + ['taperedcylinder_6',['taperedcylinder',['../class_tapered_cylinder_shape_1_1_tapered_cylinder.html#afe58c3a31719ae32daf115455ff5ae7c',1,'TaperedCylinderShape::TaperedCylinder::TaperedCylinder()'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba020daae016a7d88e6b77470e235d9dc8',1,'TaperedCylinder: Shape.h'],['../class_tapered_cylinder_shape_1_1_tapered_cylinder.html',1,'TaperedCylinderShape::TaperedCylinder']]], + ['taperedcylindershape_7',['taperedcylindershape',['../class_tapered_cylinder_shape.html#a536246606d4ade28265a07058fc6fe1c',1,'TaperedCylinderShape::TaperedCylinderShape(const TaperedCylinderShapeSettings &inSettings, ShapeResult &outResult)'],['../class_tapered_cylinder_shape.html#af06fbca036211e78798e2605a8a70fd5',1,'TaperedCylinderShape::TaperedCylinderShape()'],['../class_tapered_cylinder_shape.html',1,'TaperedCylinderShape']]], + ['taperedcylindershape_2ecpp_8',['TaperedCylinderShape.cpp',['../_tapered_cylinder_shape_8cpp.html',1,'']]], + ['taperedcylindershape_2eh_9',['TaperedCylinderShape.h',['../_tapered_cylinder_shape_8h.html',1,'']]], + ['taperedcylindershapesettings_10',['TaperedCylinderShapeSettings',['../class_tapered_cylinder_shape_settings.html',1,'']]], + ['tcsgettrianglescontext_11',['tcsgettrianglescontext',['../class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html#a53e2d1e06cfd558ec2629b5cf74014b2',1,'TaperedCylinderShape::TCSGetTrianglesContext::TCSGetTrianglesContext()'],['../class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html',1,'TaperedCylinderShape::TCSGetTrianglesContext']]], + ['tempallocator_12',['TempAllocator',['../class_temp_allocator.html',1,'']]], + ['tempallocator_2eh_13',['TempAllocator.h',['../_temp_allocator_8h.html',1,'']]], + ['tempallocatorimpl_14',['tempallocatorimpl',['../class_temp_allocator_impl.html#a9edf09cdde4563a221184b0a8653b97a',1,'TempAllocatorImpl::TempAllocatorImpl()'],['../class_temp_allocator_impl.html',1,'TempAllocatorImpl']]], + ['tempallocatorimplwithmallocfallback_15',['tempallocatorimplwithmallocfallback',['../class_temp_allocator_impl_with_malloc_fallback.html#a1dde46a11157eaac198e43fb63be9d82',1,'TempAllocatorImplWithMallocFallback::TempAllocatorImplWithMallocFallback()'],['../class_temp_allocator_impl_with_malloc_fallback.html',1,'TempAllocatorImplWithMallocFallback']]], + ['tempallocatormalloc_16',['TempAllocatorMalloc',['../class_temp_allocator_malloc.html',1,'']]], + ['tempcontactlist_17',['TempContactList',['../class_character_virtual.html#acbd32e2c0649cdf4f15677ad0d98a8e9',1,'CharacterVirtual']]], + ['templatedcalculateconstraintproperties_18',['TemplatedCalculateConstraintProperties',['../class_axis_constraint_part.html#a5a8bc2c7a35f60b63e233ed13db1749b',1,'AxisConstraintPart']]], + ['templatedsolvevelocityconstraint_19',['TemplatedSolveVelocityConstraint',['../class_axis_constraint_part.html#a24593248d2181c548e9621817beab264',1,'AxisConstraintPart']]], + ['templatedsolvevelocityconstraintapplylambda_20',['TemplatedSolveVelocityConstraintApplyLambda',['../class_axis_constraint_part.html#aaf10ea43c5acaac802523b68dfbaf51d',1,'AxisConstraintPart']]], + ['templatedsolvevelocityconstraintgettotallambda_21',['TemplatedSolveVelocityConstraintGetTotalLambda',['../class_axis_constraint_part.html#a9f2617fd84fcdd5a77f4502c6e327143',1,'AxisConstraintPart']]], + ['templatedwarmstart_22',['TemplatedWarmStart',['../class_axis_constraint_part.html#adb5b5d041b1261d227b2d657a93cabd9',1,'AxisConstraintPart']]], + ['test_23',['Performance Test',['../md__docs_2_performance_test.html',1,'']]], + ['testalltrue_24',['testalltrue',['../class_u_vec8.html#a3269b59051bb75bdb3c9f22ceb272492',1,'UVec8::TestAllTrue()'],['../class_u_vec4.html#a48549afaeaba00fc4b45a10c50656c9f',1,'UVec4::TestAllTrue()'],['../class_d_vec3.html#a7c7ae9dc9ebecde0e653c872fd6aad58',1,'DVec3::TestAllTrue()']]], + ['testallxyztrue_25',['TestAllXYZTrue',['../class_u_vec4.html#a8a5a4714c700cab249106fe37bf1f74f',1,'UVec4']]], + ['testanytrue_26',['testanytrue',['../class_u_vec4.html#afa8f229eccfd643197d92382bf8877f7',1,'UVec4::TestAnyTrue()'],['../class_u_vec8.html#a7cc280bb498d1da896005b682a768db9',1,'UVec8::TestAnyTrue()'],['../class_d_vec3.html#a0f06147fe78e9b54a1865579401fe97f',1,'DVec3::TestAnyTrue()']]], + ['testanyxyztrue_27',['TestAnyXYZTrue',['../class_u_vec4.html#a57a26ddd10bb99e07e68096eb10d1244',1,'UVec4']]], + ['testbounds_28',['testbounds',['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#ae2e78802ce43915c117bc1e0d91d08b5',1,'CompoundShape::CollectTransformedShapesVisitor::TestBounds()'],['../struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a0271b87f4c7610b317b82a77d7d255c6',1,'CompoundShape::GetIntersectingSubShapesVisitor::TestBounds()'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a7ee379618c3c642c3b84b1bdb6be6bb1',1,'CompoundShape::CollideShapeVsCompoundVisitor::TestBounds()'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#af43a759ff857d5f3ee1246425e146851',1,'CompoundShape::CollideCompoundVsShapeVisitor::TestBounds()'],['../struct_compound_shape_1_1_cast_shape_visitor.html#aa89ca00f54a79ed5ead44eebbc25f41e',1,'CompoundShape::CastShapeVisitor::TestBounds()'],['../struct_compound_shape_1_1_collide_point_visitor.html#a462fecb2d7a11225bc4b89015a4c6e9b',1,'CompoundShape::CollidePointVisitor::TestBounds()'],['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#a814152f9307136c005f19c36131746d2',1,'CompoundShape::CastRayVisitorCollector::TestBounds()'],['../struct_compound_shape_1_1_cast_ray_visitor.html#a45ca32b8515b057633bdea8c47f3f044',1,'CompoundShape::CastRayVisitor::TestBounds()']]], + ['testray_29',['TestRay',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#ae532afd31a81a660a2602ce779449b23',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext']]], + ['tests_30',['The Tests',['../md__docs_2_samples.html#autotoc_md4',1,'']]], + ['text_31',['Text',['../class_object_stream.html#a5feef3b87da292623ebf2a04c7c3482ea9dffbf69ffba8bc38bc4e01abf4b1675',1,'ObjectStream']]], + ['textblob_32',['textblob',['../struct_debug_renderer_recorder_1_1_text_blob.html#a651d2fd99b808d04a93e0cda2894d244',1,'DebugRendererRecorder::TextBlob::TextBlob()=default'],['../struct_debug_renderer_recorder_1_1_text_blob.html#ab4f54cc8990295747f0ea8953345a64a',1,'DebugRendererRecorder::TextBlob::TextBlob(RVec3Arg inPosition, const string_view &inString, ColorArg inColor, float inHeight)'],['../struct_debug_renderer_recorder_1_1_text_blob.html',1,'DebugRendererRecorder::TextBlob']]], + ['the_20simulation_20step_33',['The Simulation Step',['../index.html#the-simulation-step',1,'']]], + ['the_20simulation_20step_20in_20detail_34',['The Simulation Step in Detail',['../index.html#the-simulation-step-in-detail',1,'']]], + ['the_20tests_35',['The Tests',['../md__docs_2_samples.html#autotoc_md4',1,'']]], + ['threaded_20access_36',['Single Threaded Access',['../index.html#single-threaded-access',1,'']]], + ['tickcounter_2ecpp_37',['TickCounter.cpp',['../_tick_counter_8cpp.html',1,'']]], + ['tickcounter_2eh_38',['TickCounter.h',['../_tick_counter_8h.html',1,'']]], + ['tiremaximpulsecallback_39',['TireMaxImpulseCallback',['../class_wheeled_vehicle_controller.html#a0503d8b97090455578f6db2be92e980f',1,'WheeledVehicleController']]], + ['toconstraintsettings_40',['ToConstraintSettings',['../class_constraint.html#aa117730922a803f0a12321bcd68583ab',1,'Constraint']]], + ['tofloat_41',['tofloat',['../class_u_vec4.html#aec14683a4f6c1c34bb27e7119a813184',1,'UVec4::ToFloat()'],['../class_u_vec8.html#aca1ec9006b80aa9845b81cdef795731d',1,'UVec8::ToFloat()'],['../namespace_half_float_conversion.html#a25cf44e188c51d03e061f23e1eabe36a',1,'HalfFloatConversion::ToFloat(UVec4Arg inValue)']]], + ['tofloatfallback_42',['ToFloatFallback',['../namespace_half_float_conversion.html#a222fa9e87d5e494aa324defa2925d03e',1,'HalfFloatConversion']]], + ['tohandle_43',['ToHandle',['../class_lock_free_hash_map.html#ae1a2bd3a51575e8353470750d0ea9f4b',1,'LockFreeHashMap']]], + ['toint_44',['toint',['../class_vec4.html#a37a85cfb52ff5a074877db484772cc63',1,'Vec4::ToInt()'],['../class_vec3.html#aa3c728704083c719616638ceb698b2f1',1,'Vec3::ToInt()']]], + ['tolower_45',['tolower',['../_string_tools_8h.html#a0d6b59714c2e6686fdfc0535bffcd22d',1,'ToLower(const string_view &inString): StringTools.cpp'],['../_string_tools_8cpp.html#ac3399e40a8c21096dc8203af6a7519cc',1,'ToLower(const string_view &inString): StringTools.cpp']]], + ['tomat44_46',['tomat44',['../class_d_mat44.html#a358f19401d6b1d71fb10fbf2c1ff355e',1,'DMat44::ToMat44()'],['../class_mat44.html#a3445a728646fe8ad80381a0e55ea2289',1,'Mat44::ToMat44()']]], + ['tomatrix_47',['ToMatrix',['../class_skeletal_animation_1_1_joint_state.html#a9f73687fd3e02751c32b6815aa9293c4',1,'SkeletalAnimation::JointState']]], + ['toofewfaces_48',['TooFewFaces',['../class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa04477b2749feb6999bd3cb1c9f6fd963',1,'ConvexHullBuilder']]], + ['toofewpoints_49',['TooFewPoints',['../class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa675071632f91d793892ece6ed205483f',1,'ConvexHullBuilder']]], + ['tooffset_50',['ToOffset',['../class_l_f_h_m_allocator.html#a5b71c811049f9598a499cc58a1f2e8c0',1,'LFHMAllocator']]], + ['tools_51',['Other Build Tools',['../md__build_2_r_e_a_d_m_e.html#autotoc_md75',1,'']]], + ['tovec3rounddown_52',['ToVec3RoundDown',['../class_d_vec3.html#a10a315fe487a61ec9fd93810a18477f5',1,'DVec3']]], + ['tovec3roundup_53',['ToVec3RoundUp',['../class_d_vec3.html#a825111b9afec36c79cfc63fa855f5cb1',1,'DVec3']]], + ['tovec4_54',['ToVec4',['../class_color.html#ab2a95c51874ddeb032fb6c08fd663873',1,'Color']]], + ['trace_55',['trace',['../_issue_reporting_8cpp.html#a5b9da8153a0850dccf744d526486ebd2',1,'Trace: IssueReporting.cpp'],['../_issue_reporting_8h.html#abbd5e9e508c6f8a64ef45df75343a404',1,'Trace: IssueReporting.cpp']]], + ['tracefunction_56',['TraceFunction',['../_issue_reporting_8h.html#a03ddf203a4df1ac894a3b193accc2729',1,'IssueReporting.h']]], + ['trackedvehiclecontroller_57',['trackedvehiclecontroller',['../class_tracked_vehicle_controller.html',1,'TrackedVehicleController'],['../class_tracked_vehicle_controller.html#a6a5ee14fd6717b24367090fa9efb52a3',1,'TrackedVehicleController::TrackedVehicleController()']]], + ['trackedvehiclecontroller_2ecpp_58',['TrackedVehicleController.cpp',['../_tracked_vehicle_controller_8cpp.html',1,'']]], + ['trackedvehiclecontroller_2eh_59',['TrackedVehicleController.h',['../_tracked_vehicle_controller_8h.html',1,'']]], + ['trackedvehiclecontrollersettings_60',['trackedvehiclecontrollersettings',['../class_tracked_vehicle_controller_settings.html#a3e6e286db5b9b87b0300b81b4c5b33ea',1,'TrackedVehicleControllerSettings::TrackedVehicleControllerSettings()'],['../class_tracked_vehicle_controller_settings.html',1,'TrackedVehicleControllerSettings']]], + ['tracking_61',['tracking',['../struct_quad_tree_1_1_tracking.html#ace40c7c746daea352249919d962f3fc5',1,'QuadTree::Tracking::Tracking()=default'],['../struct_quad_tree_1_1_tracking.html#a49de4bd747c49f2b0c9dc0017740ec14',1,'QuadTree::Tracking::Tracking(const Tracking &inRHS)'],['../struct_quad_tree_1_1_tracking.html',1,'QuadTree::Tracking']]], + ['trackingvector_62',['TrackingVector',['../class_quad_tree.html#ad70bd0403f84927b007159eeaebf85c1',1,'QuadTree']]], + ['transformed_63',['transformed',['../class_a_a_box.html#abd7316d2e960c1a365acc924b1492ff3',1,'AABox::Transformed(Mat44Arg inMatrix) const'],['../class_a_a_box.html#a8be97ca2e05200438519a73994ca26a9',1,'AABox::Transformed(DMat44Arg inMatrix) const'],['../struct_ray_cast_t.html#a89d5ea77b4b5f8c92e1ec515ea70d14b',1,'RayCastT::Transformed()']]], + ['transformedconvexobject_64',['transformedconvexobject',['../struct_transformed_convex_object.html#aee084d15cbc724e8a28b88298a557573',1,'TransformedConvexObject::TransformedConvexObject()'],['../struct_transformed_convex_object.html',1,'TransformedConvexObject< ConvexObject >']]], + ['transformedshape_65',['transformedshape',['../class_transformed_shape.html#aa2bca98098fc17f1d18ea542a619eff0',1,'TransformedShape::TransformedShape()=default'],['../class_transformed_shape.html#a8a62ed0edd25b3a64ecdcaab55de237e',1,'TransformedShape::TransformedShape(RVec3Arg inPositionCOM, QuatArg inRotation, const Shape *inShape, const BodyID &inBodyID, const SubShapeIDCreator &inSubShapeIDCreator=SubShapeIDCreator())'],['../class_transformed_shape.html',1,'TransformedShape']]], + ['transformedshape_2ecpp_66',['TransformedShape.cpp',['../_transformed_shape_8cpp.html',1,'']]], + ['transformedshape_2eh_67',['TransformedShape.h',['../_transformed_shape_8h.html',1,'']]], + ['transformedshapecollector_68',['TransformedShapeCollector',['../_shape_8h.html#ac1f1a1681fa4d69dfbc6cd9cc08c2ee4',1,'Shape.h']]], + ['transformscale_69',['TransformScale',['../struct_compound_shape_1_1_sub_shape.html#a92de7326e077355d680f2d6ce860d7fc',1,'CompoundShape::SubShape']]], + ['transformshape_70',['transformshape',['../class_shape.html#a4b4b180a41ffdf7369f79706b0e27570',1,'Shape::TransformShape()'],['../class_scaled_shape.html#a9da292ba3e1f73783abacc9918f47607',1,'ScaledShape::TransformShape()'],['../class_rotated_translated_shape.html#a6d9ccc84cd701f0a90703f634a3aa09a',1,'RotatedTranslatedShape::TransformShape()'],['../class_offset_center_of_mass_shape.html#a9d00bab2ce478091ebef5d20168988ac',1,'OffsetCenterOfMassShape::TransformShape()'],['../class_compound_shape.html#a10919d4b9069ed45d39e765f94e44b2c',1,'CompoundShape::TransformShape()']]], + ['translate_71',['translate',['../class_a_a_box.html#a2a472cf66982e1eb113185ccb8fde0f4',1,'AABox::Translate(DVec3Arg inTranslation)'],['../class_a_a_box.html#ad20ec5f347a638536bdcbeb91f8993f5',1,'AABox::Translate(Vec3Arg inTranslation)'],['../class_mass_properties.html#aaa1db421f180e9955103953b822ad22c',1,'MassProperties::Translate()']]], + ['translated_72',['Translated',['../struct_ray_cast_t.html#a469b4e1823ef597e3a9d616634144c0c',1,'RayCastT']]], + ['translationx_73',['translationx',['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913adf25457a4acbb8220b36cbd34903fc06',1,'TranslationX: AllowedDOFs.h'],['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cdaaa3c8b3e737aa478570057e143c88036',1,'SixDOFConstraintSettings::TranslationX']]], + ['translationy_74',['translationy',['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a5958d0bb6455dfb87376b3c24eeb9a46',1,'TranslationY: AllowedDOFs.h'],['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cda3473af06b46b9425a1df5eebef6aeb4d',1,'SixDOFConstraintSettings::TranslationY']]], + ['translationz_75',['translationz',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cda439ec6cb6451b42d32733372922adda7',1,'SixDOFConstraintSettings::TranslationZ'],['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a7eac98e7f2c74960a4aa9a2a92a8874d',1,'TranslationZ: AllowedDOFs.h']]], + ['transposed_76',['transposed',['../class_mat44.html#a388723db2d35de31efcee6ff0cfb711d',1,'Mat44::Transposed()'],['../class_matrix.html#aeb5a5dc25f6b890a27af8f0dbe55cf6d',1,'Matrix::Transposed()']]], + ['transposed3x3_77',['transposed3x3',['../class_d_mat44.html#a37bfd4712353f46ee35b3fe0717cbda8',1,'DMat44::Transposed3x3()'],['../class_mat44.html#a29830ba9d80d31e00d30abcc0c099e7c',1,'Mat44::Transposed3x3()']]], + ['triangle_78',['triangle',['../class_debug_renderer_1_1_triangle.html',1,'DebugRenderer::Triangle'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba5e5500cb2b82eb72d550de644bd1b64b',1,'Triangle: Shape.h'],['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a92c48e626fb4a9870c5aa18dd01cba3e',1,'EPAConvexHullBuilder::Triangle::Triangle()'],['../class_triangle.html#ab77028569270c58b230bade2e050f0e8',1,'Triangle::Triangle()=default'],['../class_triangle.html#a63e1c516f7be617386e6fb7ba751e559',1,'Triangle::Triangle(const Float3 &inV1, const Float3 &inV2, const Float3 &inV3, uint32 inMaterialIndex=0, uint32 inUserData=0)'],['../class_triangle.html#afa9373651d38b12839903be6a01ccc6f',1,'Triangle::Triangle(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, uint32 inMaterialIndex=0, uint32 inUserData=0)'],['../class_debug_renderer_1_1_triangle.html#abb7298cfaf2d3cd85d5407969b626c36',1,'DebugRenderer::Triangle::Triangle()=default'],['../class_debug_renderer_1_1_triangle.html#ae6c997de70442ae4c2940f1a04a0fb9d',1,'DebugRenderer::Triangle::Triangle(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, ColorArg inColor)'],['../class_debug_renderer_1_1_triangle.html#a6cf43c4aef393778a403a3f5659e3a97',1,'DebugRenderer::Triangle::Triangle(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, ColorArg inColor, Vec3Arg inUVOrigin, Vec3Arg inUVDirection)'],['../class_triangle.html',1,'Triangle'],['../class_e_p_a_convex_hull_builder_1_1_triangle.html',1,'EPAConvexHullBuilder::Triangle']]], + ['triangle_2eh_79',['Triangle.h',['../_triangle_8h.html',1,'']]], + ['triangle_5fcount_5fbits_80',['TRIANGLE_COUNT_BITS',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24a1deb17a718e1ad968b1ca2f2abd25edb',1,'NodeCodecQuadTreeHalfFloat']]], + ['triangle_5fcount_5fmask_81',['TRIANGLE_COUNT_MASK',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24a7c3a77377faf491bde2712602c832909',1,'NodeCodecQuadTreeHalfFloat']]], + ['triangle_5fcount_5fshift_82',['TRIANGLE_COUNT_SHIFT',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24a4d526ca781439bb52fff5cb7c4ee91f6',1,'NodeCodecQuadTreeHalfFloat']]], + ['triangleblob_83',['TriangleBlob',['../struct_debug_renderer_recorder_1_1_triangle_blob.html',1,'DebugRendererRecorder']]], + ['triangleblock_84',['TriangleBlock',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.html',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['triangleblockheader_85',['TriangleBlockHeader',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['trianglecodec_86',['TriangleCodec',['../_mesh_shape_8cpp.html#ac66250df9dfa2a3f10fb26f55e72c608',1,'MeshShape.cpp']]], + ['trianglecodecindexed8bitpacksoa4flags_87',['TriangleCodecIndexed8BitPackSOA4Flags',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html',1,'']]], + ['trianglecodecindexed8bitpacksoa4flags_2eh_88',['TriangleCodecIndexed8BitPackSOA4Flags.h',['../_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h.html',1,'']]], + ['triangleconvexsupport_89',['triangleconvexsupport',['../struct_triangle_convex_support.html#aff7b77e932e636e0fe582cd01c5c05fa',1,'TriangleConvexSupport::TriangleConvexSupport()'],['../struct_triangle_convex_support.html',1,'TriangleConvexSupport']]], + ['trianglefactory_90',['TriangleFactory',['../class_e_p_a_convex_hull_builder_1_1_triangle_factory.html',1,'EPAConvexHullBuilder']]], + ['trianglegrouper_91',['TriangleGrouper',['../class_triangle_grouper.html',1,'']]], + ['trianglegrouper_2eh_92',['TriangleGrouper.h',['../_triangle_grouper_8h.html',1,'']]], + ['trianglegrouperclosestcentroid_93',['TriangleGrouperClosestCentroid',['../class_triangle_grouper_closest_centroid.html',1,'']]], + ['trianglegrouperclosestcentroid_2ecpp_94',['TriangleGrouperClosestCentroid.cpp',['../_triangle_grouper_closest_centroid_8cpp.html',1,'']]], + ['trianglegrouperclosestcentroid_2eh_95',['TriangleGrouperClosestCentroid.h',['../_triangle_grouper_closest_centroid_8h.html',1,'']]], + ['trianglegroupermorton_96',['TriangleGrouperMorton',['../class_triangle_grouper_morton.html',1,'']]], + ['trianglegroupermorton_2ecpp_97',['TriangleGrouperMorton.cpp',['../_triangle_grouper_morton_8cpp.html',1,'']]], + ['trianglegroupermorton_2eh_98',['TriangleGrouperMorton.h',['../_triangle_grouper_morton_8h.html',1,'']]], + ['triangleheader_99',['triangleheader',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader'],['../class_a_a_b_b_tree_to_buffer.html#a72146720e95aebf8168fd00cd7ef0f1f',1,'AABBTreeToBuffer::TriangleHeader']]], + ['triangleheadersize_100',['triangleheadersize',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a7685e55750d8ba3c748d97b3eecdc57b',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeaderSize'],['../class_a_a_b_b_tree_to_buffer.html#a25ee3d505ab8451bdc9742466a95ff29',1,'AABBTreeToBuffer::TriangleHeaderSize']]], + ['trianglelist_101',['TriangleList',['../_triangle_8h.html#af3a43a2425da3896c3d20b8ea8098af1',1,'Triangle.h']]], + ['trianglenoconvex_102',['trianglenoconvex',['../class_triangle_shape_1_1_triangle_no_convex.html',1,'TriangleShape::TriangleNoConvex'],['../class_triangle_shape_1_1_triangle_no_convex.html#af59be04eb9c46c649d12f0d14463e64a',1,'TriangleShape::TriangleNoConvex::TriangleNoConvex()']]], + ['trianglequeue_103',['TriangleQueue',['../class_e_p_a_convex_hull_builder_1_1_triangle_queue.html',1,'EPAConvexHullBuilder']]], + ['triangles_104',['Triangles',['../class_e_p_a_convex_hull_builder.html#aea0c331a90c44fd535337c5d0841103e',1,'EPAConvexHullBuilder']]], + ['triangleshape_105',['triangleshape',['../class_triangle_shape.html',1,'TriangleShape'],['../class_triangle_shape.html#a8f50dd711b5be7bb02a0dd06e954a8d4',1,'TriangleShape::TriangleShape()'],['../class_triangle_shape.html#a00bc42b4bae3128d2aab79799d0ff223',1,'TriangleShape::TriangleShape(const TriangleShapeSettings &inSettings, ShapeResult &outResult)'],['../class_triangle_shape.html#a178af266e6fc0452b5ba413851b3a7c8',1,'TriangleShape::TriangleShape(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, float inConvexRadius=0.0f, const PhysicsMaterial *inMaterial=nullptr)']]], + ['triangleshape_2ecpp_106',['TriangleShape.cpp',['../_triangle_shape_8cpp.html',1,'']]], + ['triangleshape_2eh_107',['TriangleShape.h',['../_triangle_shape_8h.html',1,'']]], + ['triangleshapesettings_108',['triangleshapesettings',['../class_triangle_shape_settings.html#abbb22ef04b44f97c24dfbd48b8446dbc',1,'TriangleShapeSettings::TriangleShapeSettings()'],['../class_triangle_shape_settings.html',1,'TriangleShapeSettings'],['../class_triangle_shape_settings.html#af98052e609dd5012dc60dc23e6fc811d',1,'TriangleShapeSettings::TriangleShapeSettings()']]], + ['trianglesplitter_109',['trianglesplitter',['../class_triangle_splitter.html#a3c2194216f5d24f127479da12dcd5cdf',1,'TriangleSplitter::TriangleSplitter()'],['../class_triangle_splitter.html',1,'TriangleSplitter']]], + ['trianglesplitter_2ecpp_110',['TriangleSplitter.cpp',['../_triangle_splitter_8cpp.html',1,'']]], + ['trianglesplitter_2eh_111',['TriangleSplitter.h',['../_triangle_splitter_8h.html',1,'']]], + ['trianglesplitterbinning_112',['trianglesplitterbinning',['../class_triangle_splitter_binning.html',1,'TriangleSplitterBinning'],['../class_triangle_splitter_binning.html#a8000c311893ad133eb6fbe7a95ef2fe7',1,'TriangleSplitterBinning::TriangleSplitterBinning()']]], + ['trianglesplitterbinning_2ecpp_113',['TriangleSplitterBinning.cpp',['../_triangle_splitter_binning_8cpp.html',1,'']]], + ['trianglesplitterbinning_2eh_114',['TriangleSplitterBinning.h',['../_triangle_splitter_binning_8h.html',1,'']]], + ['trianglesplitterfixedleafsize_115',['trianglesplitterfixedleafsize',['../class_triangle_splitter_fixed_leaf_size.html#a755f2d5fdd0b659ea5691be45fa1ede9',1,'TriangleSplitterFixedLeafSize::TriangleSplitterFixedLeafSize()'],['../class_triangle_splitter_fixed_leaf_size.html',1,'TriangleSplitterFixedLeafSize']]], + ['trianglesplitterfixedleafsize_2ecpp_116',['TriangleSplitterFixedLeafSize.cpp',['../_triangle_splitter_fixed_leaf_size_8cpp.html',1,'']]], + ['trianglesplitterfixedleafsize_2eh_117',['TriangleSplitterFixedLeafSize.h',['../_triangle_splitter_fixed_leaf_size_8h.html',1,'']]], + ['trianglesplitterlongestaxis_118',['trianglesplitterlongestaxis',['../class_triangle_splitter_longest_axis.html#a922ae63ab23366905d3a15f5e7c06630',1,'TriangleSplitterLongestAxis::TriangleSplitterLongestAxis()'],['../class_triangle_splitter_longest_axis.html',1,'TriangleSplitterLongestAxis']]], + ['trianglesplitterlongestaxis_2ecpp_119',['TriangleSplitterLongestAxis.cpp',['../_triangle_splitter_longest_axis_8cpp.html',1,'']]], + ['trianglesplitterlongestaxis_2eh_120',['TriangleSplitterLongestAxis.h',['../_triangle_splitter_longest_axis_8h.html',1,'']]], + ['trianglesplittermean_121',['trianglesplittermean',['../class_triangle_splitter_mean.html#a24f3c71cb6b178fc31c5e1c3d71240be',1,'TriangleSplitterMean::TriangleSplitterMean()'],['../class_triangle_splitter_mean.html',1,'TriangleSplitterMean']]], + ['trianglesplittermean_2ecpp_122',['TriangleSplitterMean.cpp',['../_triangle_splitter_mean_8cpp.html',1,'']]], + ['trianglesplittermean_2eh_123',['TriangleSplitterMean.h',['../_triangle_splitter_mean_8h.html',1,'']]], + ['trianglesplittermorton_124',['trianglesplittermorton',['../class_triangle_splitter_morton.html',1,'TriangleSplitterMorton'],['../class_triangle_splitter_morton.html#a5216ad05fe273a370120be3bb7025c43',1,'TriangleSplitterMorton::TriangleSplitterMorton()']]], + ['trianglesplittermorton_2ecpp_125',['TriangleSplitterMorton.cpp',['../_triangle_splitter_morton_8cpp.html',1,'']]], + ['trianglesplittermorton_2eh_126',['TriangleSplitterMorton.h',['../_triangle_splitter_morton_8h.html',1,'']]], + ['trianglewithconvex_127',['trianglewithconvex',['../class_triangle_shape_1_1_triangle_with_convex.html#a027145a2149945bd88bd362e1e6a25d0',1,'TriangleShape::TriangleWithConvex::TriangleWithConvex()'],['../class_triangle_shape_1_1_triangle_with_convex.html',1,'TriangleShape::TriangleWithConvex']]], + ['trigonometry_2eh_128',['Trigonometry.h',['../_trigonometry_8h.html',1,'']]], + ['try_5flock_129',['try_lock',['../class_shared_mutex.html#ae1867755a6f5457bc8bc24823373c66d',1,'SharedMutex::try_lock()'],['../class_mutex.html#a85bdf2b7c3d9ce789c61f8bc2a127c8a',1,'Mutex::try_lock()']]], + ['trygetbody_130',['trygetbody',['../class_body_manager.html#a57535e1d1645cc00b57fb7e8ecccc259',1,'BodyManager::TryGetBody(const BodyID &inID)'],['../class_body_manager.html#ac441f5d6015c113423972740f3e2815f',1,'BodyManager::TryGetBody(const BodyID &inID) const'],['../class_body_lock_interface.html#a69aba1e1549e9bc55c1ccd4b68cc171a',1,'BodyLockInterface::TryGetBody()']]], + ['tsgettrianglescontext_131',['tsgettrianglescontext',['../class_triangle_shape_1_1_t_s_get_triangles_context.html',1,'TriangleShape::TSGetTrianglesContext'],['../class_triangle_shape_1_1_t_s_get_triangles_context.html#aca666669db38498306a8dc3a29a39c9c',1,'TriangleShape::TSGetTrianglesContext::TSGetTrianglesContext()']]], + ['twobodyconstraint_132',['twobodyconstraint',['../class_two_body_constraint.html',1,'TwoBodyConstraint'],['../class_two_body_constraint.html#a8b370c3d2689b9ae1270b1dfc8f9c290',1,'TwoBodyConstraint::TwoBodyConstraint()'],['../_constraint_8h.html#a2a4cc5b25efd5f8862f80eb2f5fcdc47a279848af426fbf128cc3620da5bd99bd',1,'TwoBodyConstraint: Constraint.h']]], + ['twobodyconstraint_2ecpp_133',['TwoBodyConstraint.cpp',['../_two_body_constraint_8cpp.html',1,'']]], + ['twobodyconstraint_2eh_134',['TwoBodyConstraint.h',['../_two_body_constraint_8h.html',1,'']]], + ['twobodyconstraintsettings_135',['TwoBodyConstraintSettings',['../class_two_body_constraint_settings.html',1,'']]], + ['type_136',['type',['../class_vec4.html#ab1cfa85755b56ebed7f92a1360e7006d',1,'Vec4::Type'],['../class_vec3.html#a113d94ab6f5a2f4fd236b64b9ad7cddc',1,'Vec3::Type'],['../class_broad_phase_layer.html#a9b1092d1684a4570ec8a44b853b668b0',1,'BroadPhaseLayer::Type'],['../class_mat44.html#a3aa8910fb3ed0cba6463518fe7d52328',1,'Mat44::Type'],['../class_sub_shape_i_d.html#a242b350b7f76646203b8f71879e260b3',1,'SubShapeID::Type'],['../class_u_vec4.html#a69cef3d586cde7b42830b7b220149b0c',1,'UVec4::Type'],['../class_d_mat44.html#ad8feb59fac486ac540e532367671442d',1,'DMat44::Type'],['../class_d_vec3.html#a0a3ef3994c70fdfda40134a0a0c679cc',1,'DVec3::Type']]], + ['typearg_137',['TypeArg',['../class_d_vec3.html#a534f0bd3a829454ca3f6c00d60068b27',1,'DVec3']]], + ['typedeclarations_2ecpp_138',['TypeDeclarations.cpp',['../_type_declarations_8cpp.html',1,'']]], + ['typedeclarations_2eh_139',['TypeDeclarations.h',['../_type_declarations_8h.html',1,'']]], + ['types_140',['types',['../md__build_2_r_e_a_d_m_e.html#autotoc_md69',1,'Build Types'],['../index.html#body-types',1,'Types']]] +]; diff --git a/search/all_17.js b/search/all_17.js new file mode 100644 index 000000000..f131c86c0 --- /dev/null +++ b/search/all_17.js @@ -0,0 +1,67 @@ +var searchData= +[ + ['uint_0',['uint',['../_core_8h.html#a69aa29b598b851b0640aa225a9e5d61d',1,'Core.h']]], + ['uint16_1',['uint16',['../_core_8h.html#aea9840dd402bd5d5201bef4633398cb3',1,'Core.h']]], + ['uint32_2',['uint32',['../_core_8h.html#a8f95e75e58492e87412191fabadd8ca8',1,'Core.h']]], + ['uint64_3',['uint64',['../_core_8h.html#a60e8696a4678cd348e991a1f172e53f7',1,'Core.h']]], + ['uint8_4',['uint8',['../_core_8h.html#a115946cb5fc5879545e9ccea096a6031',1,'Core.h']]], + ['unassignbodyid_5',['UnassignBodyID',['../class_body_interface.html#a90516454ed80b9ffd59dccb2dbcd8f2b',1,'BodyInterface']]], + ['unassignbodyids_6',['UnassignBodyIDs',['../class_body_interface.html#a88613a7d9e6ba099b3a02faf842ac7d7',1,'BodyInterface']]], + ['uniquelock_7',['uniquelock',['../class_unique_lock.html',1,'UniqueLock< LockType >'],['../class_unique_lock.html#a6883cf8bdf6a648a540e5714f49a9605',1,'UniqueLock::UniqueLock()']]], + ['unlock_8',['unlock',['../class_shared_mutex.html#a72e10c237bf7e8e771c864e4d800d9be',1,'SharedMutex::unlock()'],['../class_mutex.html#a546a5b797ba29959357586aa2b3740a8',1,'Mutex::unlock()']]], + ['unlockall_9',['UnlockAll',['../class_mutex_array.html#a454120af29f8004e1dd3a81ea110d5b1',1,'MutexArray']]], + ['unlockallbodies_10',['UnlockAllBodies',['../class_body_manager.html#a5bfccfc12e83e13bc8ed0ceacff6ccc3',1,'BodyManager']]], + ['unlockallconstraints_11',['UnlockAllConstraints',['../class_constraint_manager.html#aef2a29f192caeb1209dfc1a6db0afb96',1,'ConstraintManager']]], + ['unlockmodifications_12',['unlockmodifications',['../class_broad_phase_quad_tree.html#aa60691ada837fd47ffcb53a969682661',1,'BroadPhaseQuadTree::UnlockModifications()'],['../class_broad_phase.html#a588463ac5567b3cc721c45cdb90138d6',1,'BroadPhase::UnlockModifications()']]], + ['unlockread_13',['unlockread',['../class_body_lock_interface_no_lock.html#a4d836b80b0c07e560833952731ccf407',1,'BodyLockInterfaceNoLock::UnlockRead()'],['../class_body_lock_interface.html#a702e6d9dba53f21d054dc51397bd9c39',1,'BodyLockInterface::UnlockRead()'],['../class_body_lock_interface_no_lock.html#ae073928dc06535a51719369ca70dda2f',1,'BodyLockInterfaceNoLock::UnlockRead()'],['../class_body_lock_interface_locking.html#a523d0b2ec0c63a14964ff67b407cf8dd',1,'BodyLockInterfaceLocking::UnlockRead(SharedMutex *inMutex) const override'],['../class_body_lock_interface_locking.html#a23ed101c9ed1d8266dc7742f002f908b',1,'BodyLockInterfaceLocking::UnlockRead(MutexMask inMutexMask) const override'],['../class_body_manager.html#a3cfb772a46e7495234f6f14bff09ba99',1,'BodyManager::UnlockRead()'],['../class_body_lock_interface.html#a01f2a12bf7200265b64aae3effd3a82d',1,'BodyLockInterface::UnlockRead()']]], + ['unlockwrite_14',['unlockwrite',['../class_body_manager.html#a27ee56a1128b6d9df49d56ea8308d95b',1,'BodyManager::UnlockWrite()'],['../class_body_lock_interface_locking.html#a25822b34a4987988f2100790c1279eb2',1,'BodyLockInterfaceLocking::UnlockWrite(MutexMask inMutexMask) const override'],['../class_body_lock_interface_locking.html#a0651763a01d010609627cf84153b65d9',1,'BodyLockInterfaceLocking::UnlockWrite(SharedMutex *inMutex) const override'],['../class_body_lock_interface.html#a786e43ce709b4214d7ebda26961d4725',1,'BodyLockInterface::UnlockWrite(SharedMutex *inMutex) const =0'],['../class_body_lock_interface.html#ae7ab56617d45d42ee2935b0eaf9b57e6',1,'BodyLockInterface::UnlockWrite(MutexMask inMutexMask) const =0'],['../class_body_lock_interface_no_lock.html#a6ecbc0cbe52514464956d3a49b73d79f',1,'BodyLockInterfaceNoLock::UnlockWrite(SharedMutex *inMutex) const override'],['../class_body_lock_interface_no_lock.html#ab745b6ced33c003efdc5877c6756128d',1,'BodyLockInterfaceNoLock::UnlockWrite(MutexMask inMutexMask) const override']]], + ['unmapped_15',['unmapped',['../class_skeleton_mapper_1_1_unmapped.html#a59408695490b38ff289316be1b90c8e2',1,'SkeletonMapper::Unmapped::Unmapped()'],['../class_skeleton_mapper_1_1_unmapped.html',1,'SkeletonMapper::Unmapped'],['../class_skeleton_mapper_1_1_unmapped.html#a2420a9dbf237dfdd9fb74c7b8bd1eec0',1,'SkeletonMapper::Unmapped::Unmapped()']]], + ['unmappedvector_16',['UnmappedVector',['../class_skeleton_mapper.html#ae6baa7f85525bc34f52e77ac6cd2bbeb',1,'SkeletonMapper']]], + ['unorderedmap_17',['UnorderedMap',['../_unordered_map_8h.html#a847f6a36a0c058f016689ae051d0e7c6',1,'UnorderedMap.h']]], + ['unorderedmap_2eh_18',['UnorderedMap.h',['../_unordered_map_8h.html',1,'']]], + ['unorderedset_19',['UnorderedSet',['../_unordered_set_8h.html#af38f023af851a9cf630868e218f28285',1,'UnorderedSet.h']]], + ['unorderedset_2eh_20',['UnorderedSet.h',['../_unordered_set_8h.html',1,'']]], + ['unpack_21',['unpack',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#ada5a0630058e85675e03c6d054b5bff2',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::Unpack(const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles) const'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#ab2f3679c65f018d1dcb3e462dad0eef0',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::Unpack(const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles, uint8 *outTriangleFlags) const']]], + ['unregistertypes_22',['unregistertypes',['../_register_types_8h.html#a1e0db6031789e773039c7fc15ef47057',1,'UnregisterTypes(): RegisterTypes.cpp'],['../_register_types_8cpp.html#a10487599cc35b86cfef75fae22227a8b',1,'UnregisterTypes(): RegisterTypes.cpp']]], + ['unreleased_20changes_23',['Unreleased changes',['../md__docs_2_release_notes.html#autotoc_md17',1,'']]], + ['unresolved_20external_20symbol_24',['Link Error: Unresolved External Symbol',['../md__build_2_r_e_a_d_m_e.html#autotoc_md78',1,'']]], + ['update_25',['update',['../class_character_virtual.html#ab9ce165035699a776a9d0b3e570def01',1,'CharacterVirtual::Update()'],['../class_physics_system.html#a4cdc76b2486dfaecfc9319d040e5e5f3',1,'PhysicsSystem::Update()'],['../class_wheel_t_v.html#a4c2e4c332e9e4e69c1431a1d19ae6bce',1,'WheelTV::Update()'],['../class_vehicle_transmission.html#abd88a375576b8d35f854a5f687bf8acb',1,'VehicleTransmission::Update()'],['../class_wheel_w_v.html#a5ac5b89c371660f4899a5fd4062599cb',1,'WheelWV::Update()']]], + ['update_20bodies_20broad_20phase_26',['Solve Position Constraints, Update Bodies Broad Phase',['../index.html#solve-position-constraints',1,'']]], + ['update_20finalize_27',['Broad Phase Update Finalize',['../index.html#broad-phase-update-finalize',1,'']]], + ['update_20prepare_28',['Broad Phase Update Prepare',['../index.html#broad-phase-update-prepare',1,'']]], + ['updatecenterofmassinternal_29',['UpdateCenterOfMassInternal',['../class_body.html#a0c81be8ceb81f10124d14a45b670ea9a',1,'Body']]], + ['updateearlyoutfraction_30',['UpdateEarlyOutFraction',['../class_collision_collector.html#ac46233c07f2d69db516879fbbcef8be1',1,'CollisionCollector']]], + ['updatefinalize_31',['updatefinalize',['../class_quad_tree.html#a95788f7c5352a8b053be1ac426d5536d',1,'QuadTree::UpdateFinalize()'],['../class_broad_phase.html#ab78bec1eb43c0ff847eaf489bd2e95a2',1,'BroadPhase::UpdateFinalize()'],['../class_broad_phase_quad_tree.html#a851b5a33060fbd112d44cb3707829252',1,'BroadPhaseQuadTree::UpdateFinalize()']]], + ['updategroundvelocity_32',['UpdateGroundVelocity',['../class_character_virtual.html#a5817d937424e252d406f71f0ba8771da',1,'CharacterVirtual']]], + ['updateprepare_33',['updateprepare',['../class_broad_phase.html#af28614224a9ae6463bce9f2039468852',1,'BroadPhase::UpdatePrepare()'],['../class_broad_phase_quad_tree.html#a5a9eb444b1947b066fe77fc66d7899ff',1,'BroadPhaseQuadTree::UpdatePrepare()'],['../class_quad_tree.html#ad819632f6a3b9912462c731eb017cd4f',1,'QuadTree::UpdatePrepare()']]], + ['updaterigidbodyvelocities_34',['UpdateRigidBodyVelocities',['../class_soft_body_motion_properties.html#ab64fe12fb4966612d3de96f79a3e6991',1,'SoftBodyMotionProperties']]], + ['updatesleepstateinternal_35',['UpdateSleepStateInternal',['../class_body.html#a047680ce755ba6d66aa078b317bb037f',1,'Body']]], + ['updatestate_36',['updatestate',['../struct_broad_phase_1_1_update_state.html',1,'BroadPhase::UpdateState'],['../struct_quad_tree_1_1_update_state.html',1,'QuadTree::UpdateState']]], + ['uppervec4_37',['uppervec4',['../class_u_vec8.html#a11d69b0b6000ceac965236eb6ff5a4da',1,'UVec8::UpperVec4()'],['../class_vec8.html#a176799d71ae225bcdc87f3c9ed821a4d',1,'Vec8::UpperVec4()']]], + ['user1_38',['user1',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a6b908b785fdba05a6446347dae08d8c5',1,'User1: Shape.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba6b908b785fdba05a6446347dae08d8c5',1,'User1: Shape.h'],['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da6b908b785fdba05a6446347dae08d8c5',1,'User1: Constraint.h']]], + ['user2_39',['user2',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2daa09bccf2b2963982b34dc0e08d8b582a',1,'User2: Constraint.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551baa09bccf2b2963982b34dc0e08d8b582a',1,'User2: Shape.h'],['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5aa09bccf2b2963982b34dc0e08d8b582a',1,'User2: Shape.h']]], + ['user3_40',['user3',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dae5d2ad241ec44cf155bc78ae8d11f715',1,'User3: Constraint.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551bae5d2ad241ec44cf155bc78ae8d11f715',1,'User3: Shape.h'],['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5ae5d2ad241ec44cf155bc78ae8d11f715',1,'User3: Shape.h']]], + ['user4_41',['user4',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da5ad55d96abf0e50647d6de116530d6df',1,'User4: Constraint.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba5ad55d96abf0e50647d6de116530d6df',1,'User4: Shape.h'],['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a5ad55d96abf0e50647d6de116530d6df',1,'User4: Shape.h']]], + ['user5_42',['User5',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba50c22602b70659dde2893f3a2ba0ab82',1,'Shape.h']]], + ['user6_43',['User6',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba10ddead5bb8bcfaa4d62090acd7cdfb2',1,'Shape.h']]], + ['user7_44',['User7',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba98cd5d17f0660baca7d652995f0d17b6',1,'Shape.h']]], + ['user8_45',['User8',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551bad306313ac03787c5f5f41641773bfb9a',1,'Shape.h']]], + ['userconvex1_46',['UserConvex1',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba56ee3e0d63e9daae01eaf439a3dafab4',1,'Shape.h']]], + ['userconvex2_47',['UserConvex2',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba4a787d586139ae508ca8f27d7d32e083',1,'Shape.h']]], + ['userconvex3_48',['UserConvex3',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551bab4f03368b09d3feb8d20d904cf32e092',1,'Shape.h']]], + ['userconvex4_49',['UserConvex4',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba4a905595a667bd91c94bae0a412175ae',1,'Shape.h']]], + ['userconvex5_50',['UserConvex5',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba54159e0e550120a39f15d154ffc68bb4',1,'Shape.h']]], + ['userconvex6_51',['UserConvex6',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551baff9a08797f6cb96a2c4411bd74b9a965',1,'Shape.h']]], + ['userconvex7_52',['UserConvex7',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba17843305369ea498e0b73fc07a427090',1,'Shape.h']]], + ['userconvex8_53',['UserConvex8',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba065f8314f9f081cee519694eacc54e04',1,'Shape.h']]], + ['using_20jolt_54',['Projects Using Jolt',['../md__docs_2_projects_using_jolt.html',1,'']]], + ['using_20jolt_20physics_55',['Building and Using Jolt Physics',['../md__build_2_r_e_a_d_m_e.html',1,'']]], + ['uvec4_56',['uvec4',['../class_u_vec4.html#a371ddfa754dc61e11f2c75f565eab0f9',1,'UVec4::UVec4(uint32 inX, uint32 inY, uint32 inZ, uint32 inW)'],['../class_u_vec4.html#ad935c0ba8397f8e1d7fbba4d70e519dd',1,'UVec4::UVec4(Type inRHS)'],['../class_u_vec4.html',1,'UVec4'],['../class_u_vec4.html#aadc81adaffb695788b5c0859ae3071d3',1,'UVec4::UVec4(const UVec4 &inRHS)=default'],['../class_u_vec4.html#ade18dcf5276cb800f91e55993f1f5270',1,'UVec4::UVec4()=default']]], + ['uvec4_2eh_57',['UVec4.h',['../_u_vec4_8h.html',1,'']]], + ['uvec4_2einl_58',['UVec4.inl',['../_u_vec4_8inl.html',1,'']]], + ['uvec4arg_59',['UVec4Arg',['../_math_types_8h.html#afe962105a594eb55fe13daa266182a7e',1,'MathTypes.h']]], + ['uvec8_60',['uvec8',['../class_u_vec8.html#a8e85ff9a76203b1907bdf9fd43620512',1,'UVec8::UVec8(__m256i inRHS)'],['../class_u_vec8.html#a01713cf88c3edb46c73aca8927447be3',1,'UVec8::UVec8()=default'],['../class_u_vec8.html',1,'UVec8'],['../class_u_vec8.html#a99e3f32c276a508019f29aea02853158',1,'UVec8::UVec8(const UVec8 &inRHS)=default'],['../class_u_vec8.html#a364573a06edffdbc4b6bcf321932aa2f',1,'UVec8::UVec8(UVec4Arg inLo, UVec4Arg inHi)']]], + ['uvec8_2eh_61',['UVec8.h',['../_u_vec8_8h.html',1,'']]], + ['uvec8_2einl_62',['UVec8.inl',['../_u_vec8_8inl.html',1,'']]], + ['uvec8arg_63',['UVec8Arg',['../_math_types_8h.html#a903b017c65cfb9beb323b3527cb2bc25',1,'MathTypes.h']]] +]; diff --git a/search/all_18.js b/search/all_18.js new file mode 100644 index 000000000..24d5eef44 --- /dev/null +++ b/search/all_18.js @@ -0,0 +1,98 @@ +var searchData= +[ + ['v0_200_200_20and_20v1_200_200_0',['Changes between v0.0.0 and v1.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md40',1,'']]], + ['v1_200_200_1',['v1 0 0',['../md__docs_2_a_p_i_changes.html#autotoc_md40',1,'Changes between v0.0.0 and v1.0.0'],['../md__docs_2_release_notes.html#autotoc_md66',1,'v1.0.0']]], + ['v1_200_200_20and_20v1_201_200_2',['Changes between v1.0.0 and v1.1.0',['../md__docs_2_a_p_i_changes.html#autotoc_md39',1,'']]], + ['v1_201_200_3',['v1.1.0',['../md__docs_2_release_notes.html#autotoc_md65',1,'']]], + ['v1_201_200_20and_20v2_200_200_4',['Changes between v1.1.0 and v2.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md37',1,'']]], + ['v2_200_200_5',['v2 0 0',['../md__docs_2_a_p_i_changes.html#autotoc_md37',1,'Changes between v1.1.0 and v2.0.0'],['../md__docs_2_release_notes.html#autotoc_md61',1,'v2.0.0']]], + ['v2_200_201_6',['v2.0.1',['../md__docs_2_release_notes.html#autotoc_md60',1,'']]], + ['v2_200_201_20and_20v3_200_200_7',['Changes between v2.0.1 and v3.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md33',1,'']]], + ['v3_200_200_8',['v3 0 0',['../md__docs_2_a_p_i_changes.html#autotoc_md33',1,'Changes between v2.0.1 and v3.0.0'],['../md__docs_2_release_notes.html#autotoc_md59',1,'v3.0.0']]], + ['v3_200_201_20and_20v4_200_200_9',['Changes between v3.0.1 and v4.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md32',1,'']]], + ['v4_200_200_10',['v4 0 0',['../md__docs_2_a_p_i_changes.html#autotoc_md32',1,'Changes between v3.0.1 and v4.0.0'],['../md__docs_2_release_notes.html#autotoc_md54',1,'v4.0.0']]], + ['v4_200_200_20and_20v4_200_202_11',['Changes between v4.0.0 and v4.0.2',['../md__docs_2_a_p_i_changes.html#autotoc_md30',1,'']]], + ['v4_200_201_12',['v4.0.1',['../md__docs_2_release_notes.html#autotoc_md51',1,'']]], + ['v4_200_202_13',['v4.0.2',['../md__docs_2_release_notes.html#autotoc_md48',1,'']]], + ['v4_200_202_20and_20v5_200_200_14',['Changes between v4.0.2 and v5.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md27',1,'']]], + ['v5_200_200_15',['v5 0 0',['../md__docs_2_a_p_i_changes.html#autotoc_md27',1,'Changes between v4.0.2 and v5.0.0'],['../md__docs_2_release_notes.html#autotoc_md34',1,'v5.0.0']]], + ['v5_200_200_20and_20v5_201_200_16',['Changes between v5.0.0 and v5.1.0',['../md__docs_2_a_p_i_changes.html#autotoc_md21',1,'']]], + ['v5_201_200_17',['v5.1.0',['../md__docs_2_release_notes.html#autotoc_md22',1,'']]], + ['v5_201_200_20and_20latest_18',['Changes between v5.1.0 and latest',['../md__docs_2_a_p_i_changes.html#autotoc_md18',1,'']]], + ['validatecontactcacheforallbodies_19',['ValidateContactCacheForAllBodies',['../class_body_manager.html#a4e5f1bfab762cd561b21320d97ef0594',1,'BodyManager']]], + ['validatecontactcacheinternal_20',['ValidateContactCacheInternal',['../class_body.html#aed0987087ec4b3c3571c6a6a339361ad',1,'Body']]], + ['validatecontactpoint_21',['ValidateContactPoint',['../class_contact_constraint_manager.html#a4abd47f225871f02cd3a0c964106439d',1,'ContactConstraintManager']]], + ['validateresult_22',['ValidateResult',['../_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93c',1,'ContactListener.h']]], + ['validationcontext_23',['validationcontext',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html',1,'TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html#adfe6c83baebc97d4103fad27e121e8c1',1,'TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext::ValidationContext()']]], + ['value_5ftype_24',['value_type',['../class_s_t_l_temp_allocator.html#af1444dc5e5d16500e2e638e41f44e72f',1,'STLTempAllocator::value_type'],['../class_s_t_l_allocator.html#aa77f889273432238722b3cb6ee8d54e3',1,'STLAllocator::value_type'],['../class_s_t_l_aligned_allocator.html#a4457facc139621863361195814d170df',1,'STLAlignedAllocator::value_type'],['../class_static_array.html#a367362d6d72603626006bf09590b5e73',1,'StaticArray::value_type'],['../class_array.html#ae43095e19f7836cb66d85f50c6b12f2d',1,'Array::value_type']]], + ['various_25',['various',['../md__docs_2_release_notes.html#autotoc_md45',1,'Various'],['../md__docs_2_release_notes.html#autotoc_md29',1,'Various']]], + ['vec2_26',['vec2',['../class_hinge_rotation_constraint_part.html#ac0464fe586004502d840466631aaa7b0',1,'HingeRotationConstraintPart::Vec2'],['../class_dual_axis_constraint_part.html#a6eab2fd65edd7457de26d07cd77f4797',1,'DualAxisConstraintPart::Vec2']]], + ['vec3_27',['vec3',['../class_vec3.html',1,'Vec3'],['../class_vec3.html#a0faea2347673a7eb375a071b9190b74e',1,'Vec3::Vec3(float inX, float inY, float inZ)'],['../class_vec3.html#ac3696d27478b928d1cefab61a5178933',1,'Vec3::Vec3(const Float3 &inV)'],['../class_vec3.html#a67ff481d7a24cf569cb694519dc3ff63',1,'Vec3::Vec3(Type inRHS)'],['../class_vec3.html#aeecf02c008ca1e3a1695d8962a5b24da',1,'Vec3::Vec3()=default'],['../class_vec3.html#a268ea0715fd0914ffde63ca7451bde61',1,'Vec3::Vec3(const Vec3 &inRHS)=default'],['../class_vec3.html#a3ab8c224fb2c6be708e58e45fd0ee987',1,'Vec3::Vec3(Vec4Arg inRHS)']]], + ['vec3_2ecpp_28',['Vec3.cpp',['../_vec3_8cpp.html',1,'']]], + ['vec3_2eh_29',['Vec3.h',['../_vec3_8h.html',1,'']]], + ['vec3_2einl_30',['Vec3.inl',['../_vec3_8inl.html',1,'']]], + ['vec3arg_31',['Vec3Arg',['../_math_types_8h.html#a6bc57c31f15cea47640b580d03737c68',1,'MathTypes.h']]], + ['vec4_32',['vec4',['../class_vec4.html#aef2bc5c8bacf84051fa67b015a52f7e0',1,'Vec4::Vec4(float inX, float inY, float inZ, float inW)'],['../class_vec4.html#a89dc3aa052aaedf229ad80c875ba625a',1,'Vec4::Vec4(const Vec4 &inRHS)=default'],['../class_vec4.html#a1940f74df37f29ae6cf77e11bb2e46cd',1,'Vec4::Vec4()=default'],['../class_vec4.html',1,'Vec4'],['../class_vec4.html#a7dcd153f6972570d02a9ec9504ca67bf',1,'Vec4::Vec4(Vec3Arg inRHS)'],['../class_vec4.html#a6615f4d5141a41f8c16a10734fc52391',1,'Vec4::Vec4(Vec3Arg inRHS, float inW)'],['../class_vec4.html#a6843f786e555729f18b3a07dc869029a',1,'Vec4::Vec4(Type inRHS)']]], + ['vec4_2eh_33',['Vec4.h',['../_vec4_8h.html',1,'']]], + ['vec4_2einl_34',['Vec4.inl',['../_vec4_8inl.html',1,'']]], + ['vec4arg_35',['Vec4Arg',['../_math_types_8h.html#a2f6a6bbc069039fb4bc5813de8e77aa1',1,'MathTypes.h']]], + ['vec8_36',['vec8',['../class_vec8.html#a535af944b1f32c306fb37a393ec16bd4',1,'Vec8::Vec8(Vec4Arg inLo, Vec4Arg inHi)'],['../class_vec8.html#a87dec3a15cde53d9ab439daa4ffe95d3',1,'Vec8::Vec8(__m256 inRHS)'],['../class_vec8.html#a3af12a0d40c2e64712a16b6e5d596eac',1,'Vec8::Vec8(const Vec8 &inRHS)=default'],['../class_vec8.html',1,'Vec8'],['../class_vec8.html#abbdb68a45ef818a365f358803a2d5820',1,'Vec8::Vec8()']]], + ['vec8_2eh_37',['Vec8.h',['../_vec8_8h.html',1,'']]], + ['vec8_2einl_38',['Vec8.inl',['../_vec8_8inl.html',1,'']]], + ['vec8arg_39',['Vec8Arg',['../_math_types_8h.html#a03b74680637c25ce6c910ede734ef253',1,'MathTypes.h']]], + ['vector_40',['vector',['../class_vector.html#a9a11f44af42ffd08e2eb58b1fd38c613',1,'Vector::Vector(const Vector &)=default'],['../class_vector.html#acdfe438fc30b6e340cfecfd8bb04ab19',1,'Vector::Vector()=default'],['../class_vector.html',1,'Vector< Rows >']]], + ['vector_2eh_41',['Vector.h',['../_vector_8h.html',1,'']]], + ['vector_3c_202_20_3e_42',['Vector< 2 >',['../class_vector.html',1,'']]], + ['vectortostring_43',['vectortostring',['../_string_tools_8h.html#a3b31af4468a8347daef1aaa582dba39e',1,'VectorToString(const Array< String > &inVector, String &outString, const string_view &inDelimiter=","): StringTools.cpp'],['../_string_tools_8cpp.html#ae400232cec435a77c4b2526c82fe197a',1,'VectorToString(const Array< String > &inVector, String &outString, const string_view &inDelimiter): StringTools.cpp']]], + ['vehicle_44',['Vehicle',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dad6af9c1eaff2a89ebd3f8d0c542be12b',1,'Constraint.h']]], + ['vehicleantirollbar_45',['VehicleAntiRollBar',['../class_vehicle_anti_roll_bar.html',1,'']]], + ['vehicleantirollbar_2ecpp_46',['VehicleAntiRollBar.cpp',['../_vehicle_anti_roll_bar_8cpp.html',1,'']]], + ['vehicleantirollbar_2eh_47',['VehicleAntiRollBar.h',['../_vehicle_anti_roll_bar_8h.html',1,'']]], + ['vehiclecollisiontester_48',['vehiclecollisiontester',['../class_vehicle_collision_tester.html#a69adc68284ed5dae7c4b5a1ca7568aca',1,'VehicleCollisionTester::VehicleCollisionTester()=default'],['../class_vehicle_collision_tester.html#a787dc72b49f3d3681d41785b54f9d33f',1,'VehicleCollisionTester::VehicleCollisionTester(ObjectLayer inObjectLayer)'],['../class_vehicle_collision_tester.html',1,'VehicleCollisionTester']]], + ['vehiclecollisiontester_2ecpp_49',['VehicleCollisionTester.cpp',['../_vehicle_collision_tester_8cpp.html',1,'']]], + ['vehiclecollisiontester_2eh_50',['VehicleCollisionTester.h',['../_vehicle_collision_tester_8h.html',1,'']]], + ['vehiclecollisiontestercastcylinder_51',['vehiclecollisiontestercastcylinder',['../class_vehicle_collision_tester_cast_cylinder.html#a416a774b8cf740d496abe37d67d223ff',1,'VehicleCollisionTesterCastCylinder::VehicleCollisionTesterCastCylinder()'],['../class_vehicle_collision_tester_cast_cylinder.html',1,'VehicleCollisionTesterCastCylinder']]], + ['vehiclecollisiontestercastsphere_52',['vehiclecollisiontestercastsphere',['../class_vehicle_collision_tester_cast_sphere.html#a6b514d0516167670bc2358b5073ba62d',1,'VehicleCollisionTesterCastSphere::VehicleCollisionTesterCastSphere()'],['../class_vehicle_collision_tester_cast_sphere.html',1,'VehicleCollisionTesterCastSphere']]], + ['vehiclecollisiontesterray_53',['vehiclecollisiontesterray',['../class_vehicle_collision_tester_ray.html',1,'VehicleCollisionTesterRay'],['../class_vehicle_collision_tester_ray.html#a05872b64dc0fc8b3206f24b513da2a91',1,'VehicleCollisionTesterRay::VehicleCollisionTesterRay()']]], + ['vehicleconstraint_54',['vehicleconstraint',['../class_vehicle_controller.html#a30b73bf12f0dea921ce21318d08cb7c0',1,'VehicleController::VehicleConstraint'],['../class_wheel.html#a30b73bf12f0dea921ce21318d08cb7c0',1,'Wheel::VehicleConstraint'],['../class_vehicle_constraint.html#af1d28eee52fc3cb7a2f8b8a81edfc464',1,'VehicleConstraint::VehicleConstraint()'],['../class_vehicle_constraint.html',1,'VehicleConstraint']]], + ['vehicleconstraint_2ecpp_55',['VehicleConstraint.cpp',['../_vehicle_constraint_8cpp.html',1,'']]], + ['vehicleconstraint_2eh_56',['VehicleConstraint.h',['../_vehicle_constraint_8h.html',1,'']]], + ['vehicleconstraintsettings_57',['VehicleConstraintSettings',['../class_vehicle_constraint_settings.html',1,'']]], + ['vehiclecontroller_58',['vehiclecontroller',['../class_vehicle_controller.html',1,'VehicleController'],['../class_vehicle_controller.html#ad5cad3b5a580aaf05e36e4c350db37cb',1,'VehicleController::VehicleController()']]], + ['vehiclecontroller_2ecpp_59',['VehicleController.cpp',['../_vehicle_controller_8cpp.html',1,'']]], + ['vehiclecontroller_2eh_60',['VehicleController.h',['../_vehicle_controller_8h.html',1,'']]], + ['vehiclecontrollersettings_61',['VehicleControllerSettings',['../class_vehicle_controller_settings.html',1,'']]], + ['vehicledifferential_2ecpp_62',['VehicleDifferential.cpp',['../_vehicle_differential_8cpp.html',1,'']]], + ['vehicledifferential_2eh_63',['VehicleDifferential.h',['../_vehicle_differential_8h.html',1,'']]], + ['vehicledifferentialsettings_64',['VehicleDifferentialSettings',['../class_vehicle_differential_settings.html',1,'']]], + ['vehicleengine_65',['VehicleEngine',['../class_vehicle_engine.html',1,'']]], + ['vehicleengine_2ecpp_66',['VehicleEngine.cpp',['../_vehicle_engine_8cpp.html',1,'']]], + ['vehicleengine_2eh_67',['VehicleEngine.h',['../_vehicle_engine_8h.html',1,'']]], + ['vehicleenginesettings_68',['vehicleenginesettings',['../class_vehicle_engine_settings.html',1,'VehicleEngineSettings'],['../class_vehicle_engine_settings.html#aa326151c7c343427669a4790b84d7697',1,'VehicleEngineSettings::VehicleEngineSettings()']]], + ['vehicles_69',['vehicles',['../md__docs_2_release_notes.html#autotoc_md38',1,'Vehicles'],['../md__docs_2_release_notes.html#autotoc_md28',1,'Vehicles'],['../md__docs_2_samples.html#autotoc_md5',1,'Vehicles']]], + ['vehicletrack_70',['VehicleTrack',['../class_vehicle_track.html',1,'']]], + ['vehicletrack_2ecpp_71',['VehicleTrack.cpp',['../_vehicle_track_8cpp.html',1,'']]], + ['vehicletrack_2eh_72',['VehicleTrack.h',['../_vehicle_track_8h.html',1,'']]], + ['vehicletracks_73',['VehicleTracks',['../_vehicle_track_8h.html#ac48aa2b382da4e4d33f022c79f598719',1,'VehicleTrack.h']]], + ['vehicletracksettings_74',['VehicleTrackSettings',['../class_vehicle_track_settings.html',1,'']]], + ['vehicletransmission_75',['VehicleTransmission',['../class_vehicle_transmission.html',1,'']]], + ['vehicletransmission_2ecpp_76',['VehicleTransmission.cpp',['../_vehicle_transmission_8cpp.html',1,'']]], + ['vehicletransmission_2eh_77',['VehicleTransmission.h',['../_vehicle_transmission_8h.html',1,'']]], + ['vehicletransmissionsettings_78',['VehicleTransmissionSettings',['../class_vehicle_transmission_settings.html',1,'']]], + ['velocities_79',['Integrate & Clamp Velocities',['../index.html#integrate-and-clamp-velocities',1,'']]], + ['velocity_80',['Velocity',['../_motor_settings_8h.html#a691a2387946263d993fa8e1c9488bc2ba88156d46910a2d733443c339a9231d12',1,'MotorSettings.h']]], + ['velocity_20constraints_81',['velocity constraints',['../index.html#setup-velocity-constraints',1,'Setup Velocity Constraints'],['../index.html#solve-velocity-constraints',1,'Solve Velocity Constraints']]], + ['verifyjoltversionid_82',['VerifyJoltVersionID',['../_register_types_8h.html#a5f4143a97d828fbf326eaf25a5323e17',1,'RegisterTypes.h']]], + ['verifyjoltversionidinternal_83',['verifyjoltversionidinternal',['../_register_types_8cpp.html#a3e619944349d251d8d720677175a809e',1,'VerifyJoltVersionIDInternal(uint64 inVersionID): RegisterTypes.cpp'],['../_register_types_8h.html#a620b2773885e137277e118ddfee651bf',1,'VerifyJoltVersionIDInternal(uint64 inVersionID): RegisterTypes.cpp']]], + ['vertex_84',['vertex',['../struct_soft_body_shared_settings_1_1_vertex.html',1,'SoftBodySharedSettings::Vertex'],['../class_debug_renderer_1_1_vertex.html',1,'DebugRenderer::Vertex'],['../class_soft_body_motion_properties.html#a75df336bf9ce1b362efe2777604debbe',1,'SoftBodyMotionProperties::Vertex'],['../struct_soft_body_shared_settings_1_1_vertex.html#ade523b548f25eefba83b33cc7632ee52',1,'SoftBodySharedSettings::Vertex::Vertex()=default'],['../struct_soft_body_shared_settings_1_1_vertex.html#a72596eb07dd2135d0908053327fe8b27',1,'SoftBodySharedSettings::Vertex::Vertex(const Float3 &inPosition, const Float3 &inVelocity=Float3(0, 0, 0), float inInvMass=1.0f)']]], + ['vertexattributes_85',['vertexattributes',['../struct_soft_body_shared_settings_1_1_vertex_attributes.html',1,'SoftBodySharedSettings::VertexAttributes'],['../struct_soft_body_shared_settings_1_1_vertex_attributes.html#a1fa560e1cb843e4cd51b58413f2befef',1,'SoftBodySharedSettings::VertexAttributes::VertexAttributes()=default'],['../struct_soft_body_shared_settings_1_1_vertex_attributes.html#a76a52d275de7b0362f5b0eba392b4479',1,'SoftBodySharedSettings::VertexAttributes::VertexAttributes(float inCompliance, float inShearCompliance, float inBendCompliance, ELRAType inLRAType=ELRAType::None, float inLRAMaxDistanceMultiplier=1.0f)']]], + ['vertexdata_86',['VertexData',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.html',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['vertexlist_87',['VertexList',['../_float3_8h.html#a32da0440c866d584cf09520c5eb11c17',1,'Float3.h']]], + ['visitedshapes_88',['VisitedShapes',['../class_shape.html#afff02f0117147a8f7eb43e9c5a50e969',1,'Shape']]], + ['visitnodes_89',['VisitNodes',['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#adba28fd45a275f92e03276643f058eb7',1,'MeshShape::MSGetTrianglesContext']]], + ['visitrangeblock_90',['VisitRangeBlock',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#abf84f1c35c412054c33815b39bcdd2ba',1,'HeightFieldShape::HSGetTrianglesContext']]], + ['visitshape_91',['visitshape',['../struct_compound_shape_1_1_cast_shape_visitor.html#aa834797c904738fc3bee984367a46df4',1,'CompoundShape::CastShapeVisitor::VisitShape()'],['../struct_compound_shape_1_1_collide_point_visitor.html#aeeb14c482931fed4f18e825ee8bba908',1,'CompoundShape::CollidePointVisitor::VisitShape()'],['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#a295365cb216ebe0c673cddae6fe7fcc6',1,'CompoundShape::CastRayVisitorCollector::VisitShape()'],['../struct_compound_shape_1_1_cast_ray_visitor.html#abcfb06db0c470f7b887bd1ccbdf293e9',1,'CompoundShape::CastRayVisitor::VisitShape()'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#ac29444555250eaf5cafdf944efadde2f',1,'CompoundShape::CollideShapeVsCompoundVisitor::VisitShape()'],['../struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a611d2a998517551ba3d1ad3355033135',1,'CompoundShape::GetIntersectingSubShapesVisitor::VisitShape()'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a40155b16c19875b30971665976d2b3be',1,'CompoundShape::CollectTransformedShapesVisitor::VisitShape()'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#af575d07fd175a53c7c9039c9b91a060a',1,'CompoundShape::CollideCompoundVsShapeVisitor::VisitShape()']]], + ['visittriangle_92',['VisitTriangle',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a6a195ee4d6b586ddff6cdceb48fa0371',1,'HeightFieldShape::HSGetTrianglesContext']]], + ['visittriangles_93',['VisitTriangles',['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#a361618c0f911d1d49692df906bf5f890',1,'MeshShape::MSGetTrianglesContext']]], + ['volume_94',['volume',['../class_soft_body_motion_properties.html#abb014fb4190d9ac04aa5c3faa1556214',1,'SoftBodyMotionProperties::Volume'],['../struct_soft_body_shared_settings_1_1_volume.html',1,'SoftBodySharedSettings::Volume'],['../struct_soft_body_shared_settings_1_1_volume.html#ae65d5d8fdfd059c396403e6ac23d7f8f',1,'SoftBodySharedSettings::Volume::Volume()=default'],['../struct_soft_body_shared_settings_1_1_volume.html#a60318d30fe02f4f64f4c00d9f7ac67cb',1,'SoftBodySharedSettings::Volume::Volume(uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inVertex4, float inCompliance=0.0f)']]] +]; diff --git a/search/all_19.js b/search/all_19.js new file mode 100644 index 000000000..e7e4b0dc2 --- /dev/null +++ b/search/all_19.js @@ -0,0 +1,49 @@ +var searchData= +[ + ['w_0',['w',['../class_float4.html#a6d5d9754a656360d126abe8eb5cd2f52',1,'Float4']]], + ['waitforjobs_1',['waitforjobs',['../class_job_system_with_barrier.html#af33b27708e9ab2b343a0658cf14efe56',1,'JobSystemWithBarrier::WaitForJobs()'],['../class_job_system_single_threaded.html#aa491ca6999f7f2285a79b114b696e6ac',1,'JobSystemSingleThreaded::WaitForJobs()'],['../class_job_system.html#a32e93cf0a95e8893978cf1ee92eb41d7',1,'JobSystem::WaitForJobs()']]], + ['waitingforbatch_2',['WaitingForBatch',['../class_large_island_splitter.html#aa7b284b561bd630d6d288bb706439f68a01811fa00be6bc53249ea970efb0cc9f',1,'LargeIslandSplitter']]], + ['walkheightfield_3',['WalkHeightField',['../class_height_field_shape_1_1_decoding_context.html#ada72d7edafb747b4b35afedb29670f1b',1,'HeightFieldShape::DecodingContext']]], + ['walkstairs_4',['WalkStairs',['../class_character_virtual.html#a7b92d577e9abb6193f971e26df9964f7',1,'CharacterVirtual']]], + ['walksubshapes_5',['WalkSubShapes',['../class_mutable_compound_shape.html#a3fc3b41a717b952d323ea9062e917693',1,'MutableCompoundShape']]], + ['walktree_6',['walktree',['../class_static_compound_shape.html#a38ab691279f331aff75ebbafc6ed31b8',1,'StaticCompoundShape::WalkTree()'],['../class_mesh_shape.html#ac4c96f9f280e727af47d95a0acccd61f',1,'MeshShape::WalkTree()'],['../class_node_codec_quad_tree_half_float_1_1_decoding_context.html#a084241df274ee41e4bb4908b8bd5c943',1,'NodeCodecQuadTreeHalfFloat::DecodingContext::WalkTree()']]], + ['walktreepertriangle_7',['WalkTreePerTriangle',['../class_mesh_shape.html#aa5e17d589f629cee9660984f03adf2ad',1,'MeshShape']]], + ['warmstart_8',['warmstart',['../class_swing_twist_constraint_part.html#a507f0506fd29b63f244e73670d85d55d',1,'SwingTwistConstraintPart::WarmStart()'],['../class_angle_constraint_part.html#a8b54544706a1005ac865db7c445b76f1',1,'AngleConstraintPart::WarmStart()'],['../class_axis_constraint_part.html#a60befc8c7707dd567b633ecd7b870446',1,'AxisConstraintPart::WarmStart()'],['../class_dual_axis_constraint_part.html#a5eb24d0267626b638b94b33f09efa53b',1,'DualAxisConstraintPart::WarmStart()'],['../class_gear_constraint_part.html#a3886e068476d7e0d700dcec934ac6250',1,'GearConstraintPart::WarmStart()'],['../class_hinge_rotation_constraint_part.html#aa71c15ea49da0d82a70d8edf787f612b',1,'HingeRotationConstraintPart::WarmStart()'],['../class_independent_axis_constraint_part.html#a6ec13ff5361ad148d405ee79bbaedc6c',1,'IndependentAxisConstraintPart::WarmStart()'],['../class_point_constraint_part.html#a5d4d5fcf514dd0d2ea3b26e2071ee75e',1,'PointConstraintPart::WarmStart()'],['../class_rack_and_pinion_constraint_part.html#a8dbe4e1891bffacf4575ddabd1df9699',1,'RackAndPinionConstraintPart::WarmStart()'],['../class_rotation_euler_constraint_part.html#a492a0801dd2881d0ab58f9c8b0abfec8',1,'RotationEulerConstraintPart::WarmStart()'],['../class_rotation_quat_constraint_part.html#a05fa3097154059e8d7814370182a7aa5',1,'RotationQuatConstraintPart::WarmStart()']]], + ['warmstartvelocityconstraint_9',['warmstartvelocityconstraint',['../class_cone_constraint.html#adeefa918b20db08c73d87cac71e93cfd',1,'ConeConstraint::WarmStartVelocityConstraint()'],['../class_constraint.html#abb0ee6b5bf11fb8b8aeb45271b24f1a7',1,'Constraint::WarmStartVelocityConstraint()'],['../class_distance_constraint.html#a459aed04f96a767cb395b114bb1860bb',1,'DistanceConstraint::WarmStartVelocityConstraint()'],['../class_fixed_constraint.html#ac1bb8544bfebcf9b43d428c44b75809f',1,'FixedConstraint::WarmStartVelocityConstraint()'],['../class_gear_constraint.html#a17abbcffc7110afc9caa7c169733ff60',1,'GearConstraint::WarmStartVelocityConstraint()'],['../class_hinge_constraint.html#a3c1c14996144a0a8dacaed226a6278f8',1,'HingeConstraint::WarmStartVelocityConstraint()'],['../class_path_constraint.html#a827e48452a23237e05665d3eeb668255',1,'PathConstraint::WarmStartVelocityConstraint()'],['../class_point_constraint.html#a51737835feb28bf1f774976ba3fabf5d',1,'PointConstraint::WarmStartVelocityConstraint()'],['../class_pulley_constraint.html#aef2753289be51db340b80fe44fbfb87f',1,'PulleyConstraint::WarmStartVelocityConstraint()'],['../class_rack_and_pinion_constraint.html#a68595c6143a8c238780ee6327cd77a01',1,'RackAndPinionConstraint::WarmStartVelocityConstraint()'],['../class_six_d_o_f_constraint.html#a94451dc994375a631e767e76cc08fbb5',1,'SixDOFConstraint::WarmStartVelocityConstraint()'],['../class_slider_constraint.html#aeb34063ed62a9f400374f2ed6fb830c4',1,'SliderConstraint::WarmStartVelocityConstraint()'],['../class_swing_twist_constraint.html#acf698847ac574454093180b23cc74a4e',1,'SwingTwistConstraint::WarmStartVelocityConstraint()'],['../class_vehicle_constraint.html#a74f3a452490769c8e1a110a967dc02ff',1,'VehicleConstraint::WarmStartVelocityConstraint()']]], + ['warmstartvelocityconstraints_10',['WarmStartVelocityConstraints',['../class_contact_constraint_manager.html#abaf06f1f9eb408cf99a8231bc8801e8f',1,'ContactConstraintManager']]], + ['water_11',['Water',['../md__docs_2_samples.html#autotoc_md11',1,'']]], + ['werebodiesincontact_12',['werebodiesincontact',['../class_contact_constraint_manager.html#a46532b93dfd2edb0b45be8e5af4a7111',1,'ContactConstraintManager::WereBodiesInContact()'],['../class_physics_system.html#ad8f5849a90549504d9f1705c324a9a83',1,'PhysicsSystem::WereBodiesInContact()']]], + ['wheel_13',['wheel',['../class_wheel.html#a1b32822acc30f1afc25f57de681c7389',1,'Wheel::Wheel()'],['../class_wheel.html',1,'Wheel']]], + ['wheel_2ecpp_14',['Wheel.cpp',['../_wheel_8cpp.html',1,'']]], + ['wheel_2eh_15',['Wheel.h',['../_wheel_8h.html',1,'']]], + ['wheeledvehiclecontroller_16',['wheeledvehiclecontroller',['../class_wheeled_vehicle_controller.html#ad00936264e25f1902bed6e7c86f198dc',1,'WheeledVehicleController::WheeledVehicleController()'],['../class_wheeled_vehicle_controller.html',1,'WheeledVehicleController']]], + ['wheeledvehiclecontroller_2ecpp_17',['WheeledVehicleController.cpp',['../_wheeled_vehicle_controller_8cpp.html',1,'']]], + ['wheeledvehiclecontroller_2eh_18',['WheeledVehicleController.h',['../_wheeled_vehicle_controller_8h.html',1,'']]], + ['wheeledvehiclecontrollersettings_19',['WheeledVehicleControllerSettings',['../class_wheeled_vehicle_controller_settings.html',1,'']]], + ['wheels_20',['Wheels',['../_wheel_8h.html#a177d95c47064f7e2adb44ca634cd550d',1,'Wheel.h']]], + ['wheelsettings_21',['WheelSettings',['../class_wheel_settings.html',1,'']]], + ['wheelsettingstv_22',['WheelSettingsTV',['../class_wheel_settings_t_v.html',1,'']]], + ['wheelsettingswv_23',['wheelsettingswv',['../class_wheel_settings_w_v.html',1,'WheelSettingsWV'],['../class_wheel_settings_w_v.html#abc4a4ace195d5bc7c6e3a2c40ebad100',1,'WheelSettingsWV::WheelSettingsWV()']]], + ['wheeltv_24',['wheeltv',['../class_wheel_t_v.html',1,'WheelTV'],['../class_wheel_t_v.html#a84f1cd74d7ee96248d68efe0ddb6fe3f',1,'WheelTV::WheelTV()']]], + ['wheelwv_25',['wheelwv',['../class_wheel_w_v.html',1,'WheelWV'],['../class_wheel_w_v.html#a5824fc9dc6c81f4bd1d03b8a51f1fcb8',1,'WheelWV::WheelWV()']]], + ['while_20still_20being_20deterministic_26',['Being Sloppy While Still Being Deterministic',['../index.html#sloppy-determinism',1,'']]], + ['windows_27',['Doxygen on Windows',['../md__build_2_r_e_a_d_m_e.html#autotoc_md81',1,'']]], + ['wireframe_28',['Wireframe',['../class_debug_renderer.html#ab9951f7e2a6dd10b4e8f3b40f01bba32a33e42d0f3b166a4c405127e4412fbef2',1,'DebugRenderer']]], + ['with_20multiple_20physics_20systems_29',['Working With Multiple Physics Systems',['../index.html#working-with-multiple-physics-systems',1,'']]], + ['work_20in_20progress_30',['Soft Body Work In Progress',['../index.html#soft-body-wip',1,'']]], + ['working_20with_20multiple_20physics_20systems_31',['Working With Multiple Physics Systems',['../index.html#working-with-multiple-physics-systems',1,'']]], + ['worlds_32',['Big Worlds',['../index.html#big-worlds',1,'']]], + ['worldspace_33',['WorldSpace',['../_constraint_8h.html#a5951578637c20f8aad819c13ad09b1bea43c5bd4a88c440bd0862f954e4faa177',1,'Constraint.h']]], + ['write_34',['write',['../class_stream_out.html#a076687e0453908f83336761c13b75f19',1,'StreamOut::Write(const DMat44 &inVec)'],['../class_stream_out.html#a879dce6c6c6ca5e63835fe61cc745966',1,'StreamOut::Write(const T &inT)'],['../class_stream_out.html#a8e42be27dba5676379ba723df9171c4f',1,'StreamOut::Write(const Array< T, A > &inT)'],['../class_stream_out.html#ae1b1f7fee2bcf46896c198ff13eabf10',1,'StreamOut::Write(const std::basic_string< Type, Traits, Allocator > &inString)'],['../class_stream_out.html#a29fc4077677e5c0fea89194178326684',1,'StreamOut::Write(const Array< T, A > &inT, const F &inWriteElement)'],['../class_stream_out.html#a067f43db7805fa22f5ffefbefac23b13',1,'StreamOut::Write(const Vec3 &inVec)'],['../class_stream_out.html#a5c9dec0ec5fb4af10a3258f03fa99bb1',1,'StreamOut::Write(const DVec3 &inVec)'],['../class_object_stream_out.html#a00ac10a63cae82e5aa420739d243bb5e',1,'ObjectStreamOut::Write()']]], + ['writebytes_35',['writebytes',['../class_stream_out.html#aa80bff3216178ef392693f1997803d99',1,'StreamOut::WriteBytes()'],['../class_stream_out_wrapper.html#a9021148d55d478d1431b9196e96c8125',1,'StreamOutWrapper::WriteBytes()'],['../class_state_recorder_impl.html#acb747a3036d744b372bc5c5ec5fda143',1,'StateRecorderImpl::WriteBytes()']]], + ['writeclassdata_36',['writeclassdata',['../class_i_object_stream_out.html#a671047916b3ab1dad2565d482437af88',1,'IObjectStreamOut::WriteClassData()'],['../class_object_stream_out.html#a3b57667e92d4f96bff979fb7a3d4f971',1,'ObjectStreamOut::WriteClassData()']]], + ['writecount_37',['writecount',['../class_object_stream_text_out.html#ae879ce81e2b436adc60a15dfd60ce6f7',1,'ObjectStreamTextOut::WriteCount()'],['../class_i_object_stream_out.html#a8610a84161fd3f60736b3403f972ee8f',1,'IObjectStreamOut::WriteCount()'],['../class_object_stream_binary_out.html#a9a8860b8189ef78d0ed13b4d06bb2086',1,'ObjectStreamBinaryOut::WriteCount()']]], + ['writedata_38',['WriteData',['../class_serializable_attribute.html#a2d75640f1636e85a47da938b71b3a736',1,'SerializableAttribute']]], + ['writedatatype_39',['writedatatype',['../class_i_object_stream_out.html#a6ff7df2bcd8b3a6808f14aea3250a09d',1,'IObjectStreamOut::WriteDataType()'],['../class_object_stream_binary_out.html#a3e4c46b7af4d61764078ce1f0910e1e1',1,'ObjectStreamBinaryOut::WriteDataType()'],['../class_object_stream_text_out.html#a27ba41722490a37f58523464135861eb',1,'ObjectStreamTextOut::WriteDataType()'],['../class_serializable_attribute.html#a30c9f23371b5552485ebf5bfea47afef',1,'SerializableAttribute::WriteDataType()']]], + ['writeidentifier_40',['writeidentifier',['../class_i_object_stream_out.html#a687b981cf61a2004438e534b87e3e91d',1,'IObjectStreamOut::WriteIdentifier()'],['../class_object_stream_binary_out.html#afc5f227a73e002dbf0e7fd61e6bfa041',1,'ObjectStreamBinaryOut::WriteIdentifier()'],['../class_object_stream_text_out.html#a7825ca05bdb8a4af27f109ede048d761',1,'ObjectStreamTextOut::WriteIdentifier(Identifier inIdentifier) override']]], + ['writename_41',['writename',['../class_object_stream_text_out.html#a9aa76251bab9b55c4d341da5193c3bff',1,'ObjectStreamTextOut::WriteName()'],['../class_i_object_stream_out.html#a96c7eeb4771f2a811aa36c6fd42cd781',1,'IObjectStreamOut::WriteName()'],['../class_object_stream_binary_out.html#a49bb92e7db5bc0206b8784456b20a34e',1,'ObjectStreamBinaryOut::WriteName()']]], + ['writeobject_42',['WriteObject',['../class_object_stream_out.html#a9277b8858ca05bb673daefecab467901',1,'ObjectStreamOut']]], + ['writepointerdata_43',['writepointerdata',['../class_i_object_stream_out.html#a176de45169c84baf875bee08790745c3',1,'IObjectStreamOut::WritePointerData()'],['../class_object_stream_out.html#a66b354aaac147096b7e213d5f32a3ea3',1,'ObjectStreamOut::WritePointerData()']]], + ['writeprimitivedata_44',['writeprimitivedata',['../class_i_object_stream_out.html#ac5d377beb07d9dfacf1d4e0700bb8c0d',1,'IObjectStreamOut::WritePrimitiveData()'],['../class_object_stream_text_out.html#a89ab9b82784f3d5effaa0271d1908859',1,'ObjectStreamTextOut::WritePrimitiveData(const uint8 &inPrimitive) override'],['../class_object_stream_text_out.html#a27dc6c86eae3dfea32f2510372929eb4',1,'ObjectStreamTextOut::WritePrimitiveData(const uint16 &inPrimitive) override'],['../class_object_stream_text_out.html#ab60c8760dfdb5bc2234ea78c7bbeec7f',1,'ObjectStreamTextOut::WritePrimitiveData(const int &inPrimitive) override'],['../class_object_stream_text_out.html#ab64ddb49218167cc914987fc158f052c',1,'ObjectStreamTextOut::WritePrimitiveData(const uint32 &inPrimitive) override'],['../class_object_stream_text_out.html#a10331f7980083d8c57d404091df88922',1,'ObjectStreamTextOut::WritePrimitiveData(const uint64 &inPrimitive) override'],['../class_object_stream_text_out.html#ae89da6b62649f9e90a14e9c36ea05549',1,'ObjectStreamTextOut::WritePrimitiveData(const float &inPrimitive) override'],['../class_object_stream_text_out.html#ae565ad15b730b986a4502a3bb8f98f7e',1,'ObjectStreamTextOut::WritePrimitiveData(const double &inPrimitive) override'],['../class_object_stream_text_out.html#ab2ca6f858d4f8f4101407705879a9d0d',1,'ObjectStreamTextOut::WritePrimitiveData(const bool &inPrimitive) override'],['../class_object_stream_text_out.html#a4b039dd07dfc79c9af1aaa680f5c9e7d',1,'ObjectStreamTextOut::WritePrimitiveData(const String &inPrimitive) override'],['../class_object_stream_text_out.html#a22b16b26d56a883b07fac755cdc8aaeb',1,'ObjectStreamTextOut::WritePrimitiveData(const Float3 &inPrimitive) override'],['../class_object_stream_text_out.html#a0b5b19e45beaded140033d1cb9a5959d',1,'ObjectStreamTextOut::WritePrimitiveData(const Double3 &inPrimitive) override'],['../class_object_stream_text_out.html#ae9e5c7c394023611aeb2913c1747424f',1,'ObjectStreamTextOut::WritePrimitiveData(const Vec3 &inPrimitive) override'],['../class_object_stream_text_out.html#ad4b59875d5fe76496c323922967438e6',1,'ObjectStreamTextOut::WritePrimitiveData(const DVec3 &inPrimitive) override'],['../class_object_stream_text_out.html#ab709b722d2a2b7ea2b5f867ae387849d',1,'ObjectStreamTextOut::WritePrimitiveData(const Vec4 &inPrimitive) override'],['../class_object_stream_text_out.html#abcd26a7be4af7a8c2e5240d173bb8622',1,'ObjectStreamTextOut::WritePrimitiveData(const Quat &inPrimitive) override'],['../class_object_stream_text_out.html#aa108e6984ae10e3df0f26aae50103e1a',1,'ObjectStreamTextOut::WritePrimitiveData(const Mat44 &inPrimitive) override'],['../class_object_stream_text_out.html#a91250a7c43130df76420d0646dd9b27d',1,'ObjectStreamTextOut::WritePrimitiveData(const DMat44 &inPrimitive) override'],['../class_i_object_stream_out.html#ad1b81ff8b55799d95a6a9d8476b5e64a',1,'IObjectStreamOut::WritePrimitiveData(const double &inPrimitive)=0'],['../class_i_object_stream_out.html#a04ca1de7c6bd48ffab508b1db889ec09',1,'IObjectStreamOut::WritePrimitiveData(const float &inPrimitive)=0'],['../class_i_object_stream_out.html#aecfe9968add8789f6e26723b6e9e651d',1,'IObjectStreamOut::WritePrimitiveData(const uint64 &inPrimitive)=0'],['../class_i_object_stream_out.html#a66b6becb60ad5aec76867394d52e6cfd',1,'IObjectStreamOut::WritePrimitiveData(const uint32 &inPrimitive)=0'],['../class_i_object_stream_out.html#a01c3723b59d67ad5e75a3dc56f7737cb',1,'IObjectStreamOut::WritePrimitiveData(const int &inPrimitive)=0'],['../class_i_object_stream_out.html#ab17016faad9181b3d6dfbda9a48bd335',1,'IObjectStreamOut::WritePrimitiveData(const uint16 &inPrimitive)=0'],['../class_i_object_stream_out.html#a45d8dc1ea62d053e6e48cb2e44395968',1,'IObjectStreamOut::WritePrimitiveData(const uint8 &inPrimitive)=0'],['../class_object_stream_binary_out.html#a948818cfda871440e31731647328e9ed',1,'ObjectStreamBinaryOut::WritePrimitiveData()'],['../class_i_object_stream_out.html#a38350c40a7079608bdc92e4a1df7725c',1,'IObjectStreamOut::WritePrimitiveData(const String &inPrimitive)=0'],['../class_i_object_stream_out.html#a4b0132cf1e5ee6662efcbae07f39274c',1,'IObjectStreamOut::WritePrimitiveData(const Float3 &inPrimitive)=0'],['../class_i_object_stream_out.html#af0a7dc3485d1567a452bba37303d9976',1,'IObjectStreamOut::WritePrimitiveData(const Double3 &inPrimitive)=0'],['../class_i_object_stream_out.html#a053365595f486c12414c3e41532494e7',1,'IObjectStreamOut::WritePrimitiveData(const Vec3 &inPrimitive)=0'],['../class_i_object_stream_out.html#a24e68fa892ff29e52c4e71e137da272e',1,'IObjectStreamOut::WritePrimitiveData(const DVec3 &inPrimitive)=0'],['../class_i_object_stream_out.html#a6b47c5c4e89dd367b09a1de57c21bdbc',1,'IObjectStreamOut::WritePrimitiveData(const Vec4 &inPrimitive)=0'],['../class_i_object_stream_out.html#a397870b50706aeb7f390dd96e08dac3c',1,'IObjectStreamOut::WritePrimitiveData(const Quat &inPrimitive)=0'],['../class_i_object_stream_out.html#a5b5c4763d26fbda8fc7649e30fe99ea0',1,'IObjectStreamOut::WritePrimitiveData(const Mat44 &inPrimitive)=0'],['../class_i_object_stream_out.html#a5f9f86a460a4591dde4be795ad8259ef',1,'IObjectStreamOut::WritePrimitiveData(const DMat44 &inPrimitive)=0'],['../class_object_stream_binary_out.html#a3f2f8e67717d77df91eaee0f98655665',1,'ObjectStreamBinaryOut::WritePrimitiveData(const uint8 &inPrimitive) override'],['../class_object_stream_binary_out.html#a92b6ddd19e11fc94fced9470def2b1f1',1,'ObjectStreamBinaryOut::WritePrimitiveData(const uint16 &inPrimitive) override'],['../class_object_stream_binary_out.html#aa719c9bf4e43173378e68477ff585f20',1,'ObjectStreamBinaryOut::WritePrimitiveData(const int &inPrimitive) override'],['../class_object_stream_binary_out.html#ae9fa7ac7be4c0b5bdbb24e6166a50784',1,'ObjectStreamBinaryOut::WritePrimitiveData(const DMat44 &inPrimitive) override'],['../class_object_stream_binary_out.html#a26f4c299ed2d5bdeb5dc3c8e182707df',1,'ObjectStreamBinaryOut::WritePrimitiveData(const uint64 &inPrimitive) override'],['../class_object_stream_binary_out.html#a2f1235bff136e028485875babbddde82',1,'ObjectStreamBinaryOut::WritePrimitiveData(const float &inPrimitive) override'],['../class_object_stream_binary_out.html#ae62c55f8ae870ffa024555ba8248f6a1',1,'ObjectStreamBinaryOut::WritePrimitiveData(const double &inPrimitive) override'],['../class_object_stream_binary_out.html#a61fa64a09b0a198016555a219a3cea19',1,'ObjectStreamBinaryOut::WritePrimitiveData(const bool &inPrimitive) override'],['../class_object_stream_binary_out.html#a9ea4d57d098b29425e9b4385157e1802',1,'ObjectStreamBinaryOut::WritePrimitiveData(const String &inPrimitive) override'],['../class_object_stream_binary_out.html#a2d229729283be8d8eee6b58468bfee65',1,'ObjectStreamBinaryOut::WritePrimitiveData(const Float3 &inPrimitive) override'],['../class_object_stream_binary_out.html#acf7a62f3df473c6b9f48ee7e86c9123f',1,'ObjectStreamBinaryOut::WritePrimitiveData(const Double3 &inPrimitive) override'],['../class_object_stream_binary_out.html#a342eeda59cdc448a0ecf28efd8e80aee',1,'ObjectStreamBinaryOut::WritePrimitiveData(const Vec3 &inPrimitive) override'],['../class_object_stream_binary_out.html#a7826f066654d0ac41a72f1695c07dc75',1,'ObjectStreamBinaryOut::WritePrimitiveData(const DVec3 &inPrimitive) override'],['../class_object_stream_binary_out.html#a87116604bea691da09f99454b324e85c',1,'ObjectStreamBinaryOut::WritePrimitiveData(const Vec4 &inPrimitive) override'],['../class_object_stream_binary_out.html#ae06af7cf0a39921c7dc8088037ee41d4',1,'ObjectStreamBinaryOut::WritePrimitiveData(const Quat &inPrimitive) override'],['../class_object_stream_binary_out.html#a7de7aaffbb11f6e6fc0a08812e0eef42',1,'ObjectStreamBinaryOut::WritePrimitiveData(const Mat44 &inPrimitive) override']]], + ['writertti_45',['WriteRTTI',['../class_object_stream_out.html#a959db81abfcbd73830c56f52cc953a41',1,'ObjectStreamOut']]] +]; diff --git a/search/all_1a.js b/search/all_1a.js new file mode 100644 index 000000000..82c882909 --- /dev/null +++ b/search/all_1a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['x_0',['x',['../class_double3.html#ab8e77991d31c9f90c05b78e70e1027f1',1,'Double3::x'],['../class_float2.html#a9f4577102bc9a7bdf9355b5776301485',1,'Float2::x'],['../class_float3.html#ac596e0cf37e992db116ebe169ec6cd2d',1,'Float3::x'],['../class_float4.html#a1d8d54947f537668f63257dabc353ee9',1,'Float4::x']]] +]; diff --git a/search/all_1b.js b/search/all_1b.js new file mode 100644 index 000000000..df531fba7 --- /dev/null +++ b/search/all_1b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['y_0',['y',['../class_double3.html#a7cdca7980db4588511c4851369dd9f2c',1,'Double3::y'],['../class_float2.html#a53deb463e8335f53a8f5454c9c3c0503',1,'Float2::y'],['../class_float3.html#a86c923e4acaf36c9d325bca554b3f3a9',1,'Float3::y'],['../class_float4.html#a1dd630bc54c845b6513791b7b43de1c0',1,'Float4::y']]] +]; diff --git a/search/all_1c.js b/search/all_1c.js new file mode 100644 index 000000000..cea05132e --- /dev/null +++ b/search/all_1c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['z_0',['z',['../class_double3.html#a06ddc2a509b14e50e6d69acbc07b0bd3',1,'Double3::z'],['../class_float3.html#a921399d2713f5b390fcf6060d7ccac00',1,'Float3::z'],['../class_float4.html#a67246a6a476dc5966564d861ed637d56',1,'Float4::z']]] +]; diff --git a/search/all_1d.js b/search/all_1d.js new file mode 100644 index 000000000..10a59b190 --- /dev/null +++ b/search/all_1d.js @@ -0,0 +1,82 @@ +var searchData= +[ + ['_7earray_0',['~Array',['../class_array.html#a4aa206b27627450f5cfa5dbbc7b57c14',1,'Array']]], + ['_7ebarrier_1',['~Barrier',['../class_job_system_1_1_barrier.html#aa7553c8c987ca8bb810c2715ef8ffbbd',1,'JobSystem::Barrier']]], + ['_7ebodiestosleep_2',['~BodiesToSleep',['../class_physics_system_1_1_bodies_to_sleep.html#a6bd0148a631571a8996661f4246a5c42',1,'PhysicsSystem::BodiesToSleep']]], + ['_7ebodyactivationlistener_3',['~BodyActivationListener',['../class_body_activation_listener.html#a1fad22d1fc6b3dd2a7b31e7e230abca3',1,'BodyActivationListener']]], + ['_7ebodydrawfilter_4',['~BodyDrawFilter',['../class_body_draw_filter.html#af5f4640284a83886f0896d313126ad6d',1,'BodyDrawFilter']]], + ['_7ebodyfilter_5',['~BodyFilter',['../class_body_filter.html#a8a5a1a0ff7c5f292c8e90b0648fd4f9b',1,'BodyFilter']]], + ['_7ebodylockbase_6',['~BodyLockBase',['../class_body_lock_base.html#a30194dac9c9d2ca469894dd7c5719d40',1,'BodyLockBase']]], + ['_7ebodylockinterface_7',['~BodyLockInterface',['../class_body_lock_interface.html#ad019e65f235b7cc04199696fa0ef1fc2',1,'BodyLockInterface']]], + ['_7ebodylockmultibase_8',['~BodyLockMultiBase',['../class_body_lock_multi_base.html#a609defeb89fbcc31c19ee6af88844601',1,'BodyLockMultiBase']]], + ['_7ebodymanager_9',['~BodyManager',['../class_body_manager.html#afad1dc5c74c430f9210a84e553d259ee',1,'BodyManager']]], + ['_7ebroadphaselayerfilter_10',['~BroadPhaseLayerFilter',['../class_broad_phase_layer_filter.html#a925a1ef794d370861c3daa4c2aad3f97',1,'BroadPhaseLayerFilter']]], + ['_7ebroadphaselayerinterface_11',['~BroadPhaseLayerInterface',['../class_broad_phase_layer_interface.html#aefc74492347f08d653121e2f4af91e59',1,'BroadPhaseLayerInterface']]], + ['_7ebroadphasequadtree_12',['~BroadPhaseQuadTree',['../class_broad_phase_quad_tree.html#a0345666a910f38b25ec943d17a3131b5',1,'BroadPhaseQuadTree']]], + ['_7ebroadphasequery_13',['~BroadPhaseQuery',['../class_broad_phase_query.html#a3eb1b1cf5421ba7785cff7e7aa4bd702',1,'BroadPhaseQuery']]], + ['_7echaracter_14',['~Character',['../class_character.html#a5e399f512bf22a9e8558a4bae1ec9555',1,'Character']]], + ['_7echaracterbase_15',['~CharacterBase',['../class_character_base.html#a5e0ba80e28b9e012acf7b8c1fa605ef5',1,'CharacterBase']]], + ['_7echaracterbasesettings_16',['~CharacterBaseSettings',['../class_character_base_settings.html#adf1f42bae7e622c2c3a0ae2273f6f5f5',1,'CharacterBaseSettings']]], + ['_7echaractercontactlistener_17',['~CharacterContactListener',['../class_character_contact_listener.html#a1cbf56ca2333e878c3d7da75b9dfc0ba',1,'CharacterContactListener']]], + ['_7echaractervirtual_18',['~CharacterVirtual',['../class_character_virtual.html#ad932d26de4902065092ee3c6c30bc9de',1,'CharacterVirtual']]], + ['_7echaractervscharactercollision_19',['~CharacterVsCharacterCollision',['../class_character_vs_character_collision.html#ac761e9773325df331eb599af2f498525',1,'CharacterVsCharacterCollision']]], + ['_7ecollisioncollector_20',['~CollisionCollector',['../class_collision_collector.html#a428497d94c0d54c4fb4e7ce6a016fc0d',1,'CollisionCollector']]], + ['_7econstraint_21',['~Constraint',['../class_constraint.html#a1608cc2c7d701d0e9dbcb5656d5845bb',1,'Constraint']]], + ['_7econtactconstraintmanager_22',['~ContactConstraintManager',['../class_contact_constraint_manager.html#a99bbf2c00ef2ee156223858f2a2d6597',1,'ContactConstraintManager']]], + ['_7econtactlistener_23',['~ContactListener',['../class_contact_listener.html#a577b31dbf6d6e5a6ada2864a0b3f70bd',1,'ContactListener']]], + ['_7econvexhullbuilder_24',['~ConvexHullBuilder',['../class_convex_hull_builder.html#a3182f05659156aba23773cd1cdb5c0cd',1,'ConvexHullBuilder']]], + ['_7econvexhullbuilder2d_25',['~ConvexHullBuilder2D',['../class_convex_hull_builder2_d.html#a9fd6172b0d35d0f66114514b6a8a31b0',1,'ConvexHullBuilder2D']]], + ['_7edebugrenderer_26',['~DebugRenderer',['../class_debug_renderer.html#a4374b7c1ce3ee04f86f6f910c82aff09',1,'DebugRenderer']]], + ['_7eface_27',['~Face',['../class_convex_hull_builder_1_1_face.html#a76369d0554260d6e1405544d01422bec',1,'ConvexHullBuilder::Face']]], + ['_7efixedsizefreelist_28',['~FixedSizeFreeList',['../class_fixed_size_free_list.html#a71571a26f9bc002d714f0178e46177ba',1,'FixedSizeFreeList']]], + ['_7egroupfilter_29',['~GroupFilter',['../class_group_filter.html#aa8329399534ab5ced6cd41bac0fc511a',1,'GroupFilter']]], + ['_7eheightfieldshape_30',['~HeightFieldShape',['../class_height_field_shape.html#aa0ea34b1e8028766f96bdacebe06d62c',1,'HeightFieldShape']]], + ['_7eislandbuilder_31',['~IslandBuilder',['../class_island_builder.html#a88fd7d9e6a6982dc394fd7d647df41cb',1,'IslandBuilder']]], + ['_7ejobsystem_32',['~JobSystem',['../class_job_system.html#aaaf28c0a93f2d52eb2c936807f9e8ec9',1,'JobSystem']]], + ['_7ejobsystemthreadpool_33',['~JobSystemThreadPool',['../class_job_system_thread_pool.html#a56f9475443e5598d7176d9b94da6bdff',1,'JobSystemThreadPool']]], + ['_7ejobsystemwithbarrier_34',['~JobSystemWithBarrier',['../class_job_system_with_barrier.html#a7d3ef17ce10d2556e776375bef948b75',1,'JobSystemWithBarrier']]], + ['_7elargeislandsplitter_35',['~LargeIslandSplitter',['../class_large_island_splitter.html#a6453331c5fb852bb201b04f14dc9a281',1,'LargeIslandSplitter']]], + ['_7elfhmallocator_36',['~LFHMAllocator',['../class_l_f_h_m_allocator.html#a97034c25b38fd7a1c3e3cf59b818afbb',1,'LFHMAllocator']]], + ['_7elockfreehashmap_37',['~LockFreeHashMap',['../class_lock_free_hash_map.html#a9b01ab8548173830e9a1652cd7c16172',1,'LockFreeHashMap']]], + ['_7emutexarray_38',['~MutexArray',['../class_mutex_array.html#a15da55df0a388b4cbdabdedefb425af0',1,'MutexArray']]], + ['_7enode_39',['~Node',['../class_a_a_b_b_tree_builder_1_1_node.html#ac377068485ba4e2055d0b65d50bbb344',1,'AABBTreeBuilder::Node']]], + ['_7eobjectlayerfilter_40',['~ObjectLayerFilter',['../class_object_layer_filter.html#ac0a280c2c4c6d44714282f517899b6ef',1,'ObjectLayerFilter']]], + ['_7eobjectlayerpairfilter_41',['~ObjectLayerPairFilter',['../class_object_layer_pair_filter.html#aa5eb712c7da546d32b812ed018c714bb',1,'ObjectLayerPairFilter']]], + ['_7eobjectstream_42',['~ObjectStream',['../class_object_stream.html#a0a01e88706acdcadf4b7cc7af99a008e',1,'ObjectStream']]], + ['_7eobjectvsbroadphaselayerfilter_43',['~ObjectVsBroadPhaseLayerFilter',['../class_object_vs_broad_phase_layer_filter.html#a8da487435d0000d4106f63ba40ab4090',1,'ObjectVsBroadPhaseLayerFilter']]], + ['_7epathconstraintpath_44',['~PathConstraintPath',['../class_path_constraint_path.html#aff085b5af851482956c8696d0e87f73d',1,'PathConstraintPath']]], + ['_7ephysicsmaterial_45',['~PhysicsMaterial',['../class_physics_material.html#af9a5ad5383917d85f97bc81db9786948',1,'PhysicsMaterial']]], + ['_7ephysicssteplistener_46',['~PhysicsStepListener',['../class_physics_step_listener.html#ad977d0eae86ac63814eb9742f896ad4b',1,'PhysicsStepListener']]], + ['_7ephysicssystem_47',['~PhysicsSystem',['../class_physics_system.html#a2f13afc2b367634112f155934af9227e',1,'PhysicsSystem']]], + ['_7ephysicsupdatecontext_48',['~PhysicsUpdateContext',['../class_physics_update_context.html#a05bed2dc4226ffbf55b962da48ec1749',1,'PhysicsUpdateContext']]], + ['_7eprofilemeasurement_49',['~ProfileMeasurement',['../class_profile_measurement.html#a7c37dee2ce575e7324bdd1531ab6a3c6',1,'ProfileMeasurement']]], + ['_7eprofilethread_50',['~ProfileThread',['../class_profile_thread.html#a6d9ed54e26b6b8e37967a8dce6226e66',1,'ProfileThread']]], + ['_7equadtree_51',['~QuadTree',['../class_quad_tree.html#a236dde2058a3ccf2babbe4a289327b30',1,'QuadTree']]], + ['_7eragdoll_52',['~Ragdoll',['../class_ragdoll.html#afbd932bcd7ceae5811204c5c1219d5ac',1,'Ragdoll']]], + ['_7eref_53',['~Ref',['../class_ref.html#a607d75703495e2c67a6aa33b6d943ab5',1,'Ref']]], + ['_7erefconst_54',['~RefConst',['../class_ref_const.html#a3961f15d3f64693477de9f91684916a8',1,'RefConst']]], + ['_7ereftarget_55',['~RefTarget',['../class_ref_target.html#ac3110b9f511287f881d7afaf26871e1b',1,'RefTarget']]], + ['_7ereftargetvirtual_56',['~RefTargetVirtual',['../class_ref_target_virtual.html#a716938dd06b8a5be71588e501c8c2b7d',1,'RefTargetVirtual']]], + ['_7eresult_57',['~Result',['../class_result.html#ace4aa7515162bb6ca532d3be78150328',1,'Result']]], + ['_7escopeexit_58',['~ScopeExit',['../class_scope_exit.html#a02f185effcec724a51fc0c6d5b073340',1,'ScopeExit']]], + ['_7esemaphore_59',['~Semaphore',['../class_semaphore.html#a633658a6fde276bffc912028725c6ade',1,'Semaphore']]], + ['_7eserializableobject_60',['~SerializableObject',['../class_serializable_object.html#afad98c73b77e9cef11cf5083a5866d49',1,'SerializableObject']]], + ['_7eshape_61',['~Shape',['../class_shape.html#ac8ad2fd02e1e94beeb98e65ab795cd56',1,'Shape']]], + ['_7eshapefilter_62',['~ShapeFilter',['../class_shape_filter.html#acdf737ff32ada90df769acf6b25cc86a',1,'ShapeFilter']]], + ['_7esharedlock_63',['~SharedLock',['../class_shared_lock.html#ab0010e08e97ed9b28b93785fcc3c20c3',1,'SharedLock']]], + ['_7esoftbodycontactlistener_64',['~SoftBodyContactListener',['../class_soft_body_contact_listener.html#aec0e10073fc4e61069a7246717c4dda8',1,'SoftBodyContactListener']]], + ['_7estaterecorderfilter_65',['~StateRecorderFilter',['../class_state_recorder_filter.html#aa9561fad643e206c9b464e0ba954299a',1,'StateRecorderFilter']]], + ['_7estaticarray_66',['~StaticArray',['../class_static_array.html#afa25bd44899d047990eb77e996031756',1,'StaticArray']]], + ['_7estreamin_67',['~StreamIn',['../class_stream_in.html#a294d4a6d12c54b6bd31b67a627075c34',1,'StreamIn']]], + ['_7estreamout_68',['~StreamOut',['../class_stream_out.html#aed2cfe74214f89965cb640ac9d1bbb8d',1,'StreamOut']]], + ['_7esupport_69',['~Support',['../class_convex_shape_1_1_support.html#a24c8452338cbc755fb69f04aca229a4c',1,'ConvexShape::Support']]], + ['_7etempallocator_70',['~TempAllocator',['../class_temp_allocator.html#ad2799eadcc5b5972a55118e6c4156e25',1,'TempAllocator']]], + ['_7etempallocatorimpl_71',['~TempAllocatorImpl',['../class_temp_allocator_impl.html#a7ced1650e61db4a4917ac8eb2e1cbe30',1,'TempAllocatorImpl']]], + ['_7etrianglegrouper_72',['~TriangleGrouper',['../class_triangle_grouper.html#a5c9c53e78df6ff8a53cb144e42458cfa',1,'TriangleGrouper']]], + ['_7etrianglesplitter_73',['~TriangleSplitter',['../class_triangle_splitter.html#a29fdff34f24303ee9d3c52dec0ad73b3',1,'TriangleSplitter']]], + ['_7euniquelock_74',['~UniqueLock',['../class_unique_lock.html#ab6a03388e3040483ea88e86e9aa2aaae',1,'UniqueLock']]], + ['_7evehiclecollisiontester_75',['~VehicleCollisionTester',['../class_vehicle_collision_tester.html#a7c6e0505cf0d7741f501a03ac3228bb6',1,'VehicleCollisionTester']]], + ['_7evehicleconstraint_76',['~VehicleConstraint',['../class_vehicle_constraint.html#a9ea9a006933b3e0b1938b3b247957830',1,'VehicleConstraint']]], + ['_7evehiclecontroller_77',['~VehicleController',['../class_vehicle_controller.html#adaf1b8a1da0e7b167c8849e13743809c',1,'VehicleController']]], + ['_7ewheel_78',['~Wheel',['../class_wheel.html#aa6087eae383e857b8615993388ba8a5f',1,'Wheel']]] +]; diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 000000000..b10eca168 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['2_0',['2',['../md__docs_2_a_p_i_changes.html#autotoc_md30',1,'Changes between v4.0.0 and v4.0.2'],['../md__docs_2_release_notes.html#autotoc_md48',1,'v4.0.2']]], + ['2_20and_20v5_200_200_1',['Changes between v4.0.2 and v5.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md27',1,'']]] +]; diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 000000000..260804b5b --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,229 @@ +var searchData= +[ + ['a_0',['a',['../class_color.html#a729ed4dcbc4fc228bf764851fd28f913',1,'Color']]], + ['a_20simulation_1',['Rolling Back a Simulation',['../index.html#rolling-back-a-simulation',1,'']]], + ['aabbtreebuilder_2',['aabbtreebuilder',['../class_a_a_b_b_tree_builder_1_1_node.html#a27094b8ce6a5cd4a6edb184d2ae9b302',1,'AABBTreeBuilder::Node::AABBTreeBuilder'],['../class_a_a_b_b_tree_builder.html',1,'AABBTreeBuilder'],['../class_a_a_b_b_tree_builder.html#a3a44b40e58b23523baab7698ed9eb117',1,'AABBTreeBuilder::AABBTreeBuilder()']]], + ['aabbtreebuilder_2ecpp_3',['AABBTreeBuilder.cpp',['../_a_a_b_b_tree_builder_8cpp.html',1,'']]], + ['aabbtreebuilder_2eh_4',['AABBTreeBuilder.h',['../_a_a_b_b_tree_builder_8h.html',1,'']]], + ['aabbtreebuilderstats_5',['AABBTreeBuilderStats',['../struct_a_a_b_b_tree_builder_stats.html',1,'']]], + ['aabbtreetobuffer_6',['AABBTreeToBuffer',['../class_a_a_b_b_tree_to_buffer.html',1,'']]], + ['aabbtreetobuffer_2eh_7',['AABBTreeToBuffer.h',['../_a_a_b_b_tree_to_buffer_8h.html',1,'']]], + ['aabox_8',['aabox',['../class_a_a_box.html#a0982651a7b0ed25cab78537cdeba982a',1,'AABox::AABox()'],['../class_a_a_box.html#a8431a72347bfdb1a77ae45dcbba9c35b',1,'AABox::AABox(Vec3Arg inMin, Vec3Arg inMax)'],['../class_a_a_box.html#ac70f850fdf8680f4fa8a3f7fdb60cfbd',1,'AABox::AABox(DVec3Arg inMin, DVec3Arg inMax)'],['../class_a_a_box.html#aa7799618a0616c960b4f912ceac17d19',1,'AABox::AABox(Vec3Arg inCenter, float inRadius)'],['../class_a_a_box.html',1,'AABox']]], + ['aabox_2eh_9',['AABox.h',['../_a_a_box_8h.html',1,'']]], + ['aabox4_2eh_10',['AABox4.h',['../_a_a_box4_8h.html',1,'']]], + ['aabox4distancesqtopoint_11',['aabox4distancesqtopoint',['../_a_a_box4_8h.html#af96966fc2a109dea8d4a109e541bea80',1,'AABox4DistanceSqToPoint(Vec4Arg inPointX, Vec4Arg inPointY, Vec4Arg inPointZ, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ): AABox4.h'],['../_a_a_box4_8h.html#a6af0b6b352ebed5e3c0911b6fd716e65',1,'AABox4DistanceSqToPoint(Vec3 inPoint, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ): AABox4.h']]], + ['aabox4enlargewithextent_12',['AABox4EnlargeWithExtent',['../_a_a_box4_8h.html#afc6a0849cd38d215de0f02ee553de99f',1,'AABox4.h']]], + ['aabox4scale_13',['AABox4Scale',['../_a_a_box4_8h.html#afdbaad9921240fb3b210eab09cede242',1,'AABox4.h']]], + ['aabox4vsbox_14',['aabox4vsbox',['../_a_a_box4_8h.html#a99b05cb64dcecc32ddc482050e45321c',1,'AABox4VsBox(const AABox &inBox1, Vec4Arg inBox2MinX, Vec4Arg inBox2MinY, Vec4Arg inBox2MinZ, Vec4Arg inBox2MaxX, Vec4Arg inBox2MaxY, Vec4Arg inBox2MaxZ): AABox4.h'],['../_a_a_box4_8h.html#a365fbed5e6017361416cd81c4fb3c175',1,'AABox4VsBox(Mat44Arg inOrientation, Vec3Arg inHalfExtents, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, float inEpsilon=1.0e-6f): AABox4.h'],['../_a_a_box4_8h.html#af230429f2bab61ca7328aa79a2a4da93',1,'AABox4VsBox(const OrientedBox &inBox, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, float inEpsilon=1.0e-6f): AABox4.h']]], + ['aabox4vspoint_15',['AABox4VsPoint',['../_a_a_box4_8h.html#a96c8ee8d10ad0b3971de242ea1217cb9',1,'AABox4.h']]], + ['aabox4vssphere_16',['aabox4vssphere',['../_a_a_box4_8h.html#a0a8ee1599da3fa8b3ea6dc868a6cba19',1,'AABox4VsSphere(Vec4Arg inCenterX, Vec4Arg inCenterY, Vec4Arg inCenterZ, Vec4Arg inRadiusSq, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ): AABox4.h'],['../_a_a_box4_8h.html#a6f08a548d80cd6a9c6209f1f2db4fde2',1,'AABox4VsSphere(Vec3Arg inCenter, float inRadiusSq, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ): AABox4.h']]], + ['aaboxcast_17',['AABoxCast',['../struct_a_a_box_cast.html',1,'']]], + ['aaboxcast_2eh_18',['AABoxCast.h',['../_a_a_box_cast_8h.html',1,'']]], + ['abs_19',['abs',['../class_vec4.html#a321bcfc691705ad313b11822c8b13332',1,'Vec4::Abs()'],['../class_vec8.html#a606b5595b25bd34a37820541b9e14c3e',1,'Vec8::Abs()'],['../class_vec3.html#a60c863c1cdad322a1af54e77a4af8f02',1,'Vec3::Abs()'],['../class_d_vec3.html#a1df9be6cc25048acd0c184f60535189b',1,'DVec3::Abs()']]], + ['acceptallcontactsforthisbodypair_20',['AcceptAllContactsForThisBodyPair',['../_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93ca8796185ae90c58f159c3940f24112507',1,'ContactListener.h']]], + ['acceptcontact_21',['acceptcontact',['../_soft_body_contact_listener_8h.html#a146313e7653a5364d1e51eccb325abaaac965aae814c53bfa33f418d5187d4cdc',1,'AcceptContact: SoftBodyContactListener.h'],['../_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93cac965aae814c53bfa33f418d5187d4cdc',1,'AcceptContact: ContactListener.h']]], + ['access_22',['access',['../index.html#autotoc_md82',1,'Multithreaded Access'],['../index.html#single-threaded-access',1,'Single Threaded Access']]], + ['accumulatesleeptime_23',['AccumulateSleepTime',['../class_motion_properties.html#a1342087f5bae51bc6d46542ae29bca66',1,'MotionProperties']]], + ['acos_24',['acos',['../class_vec4.html#ae56c43bab7d034799def2a0cd588f971',1,'Vec4::ACos()'],['../_trigonometry_8h.html#a4d69678f84c03b333e32ca716998db39',1,'ACos(float inX): Trigonometry.h']]], + ['acosapproximate_25',['ACosApproximate',['../_trigonometry_8h.html#a1dec7e1e2e84f4362a0a65d390a51ee0',1,'Trigonometry.h']]], + ['acquire_26',['Acquire',['../class_semaphore.html#a81c1cbdab78310c8b13e7052572e599d',1,'Semaphore']]], + ['activate_27',['activate',['../_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6aa13367a8e2a3f3bf4f3409079e3fdf87',1,'Activate: EActivation.h'],['../class_character.html#a66a9abe442b15eaf3aab219facb5dbb4',1,'Character::Activate()'],['../class_ragdoll.html#a584d5a41fd6118589b420ed96272827b',1,'Ragdoll::Activate()']]], + ['activatebodies_28',['activatebodies',['../class_body_interface.html#aa9ac89ba91cff574fb148dfe155c272e',1,'BodyInterface::ActivateBodies()'],['../class_body_manager.html#aecdc4718d0c9ccf33f9eaf2a42c6ab79',1,'BodyManager::ActivateBodies()']]], + ['activatebodiesinaabox_29',['ActivateBodiesInAABox',['../class_body_interface.html#a0397e4e0c43023b4c55d171d944dc430',1,'BodyInterface']]], + ['activatebody_30',['ActivateBody',['../class_body_interface.html#ab6ccbc72a1df04bd16c5dc5dee7bdf30',1,'BodyInterface']]], + ['activateconstraint_31',['ActivateConstraint',['../class_body_interface.html#a7b4ab713c9ed9369f43930510791562b',1,'BodyInterface']]], + ['active_20constraints_32',['Determine Active Constraints',['../index.html#determine-active-constraints',1,'']]], + ['activeedgemode_2eh_33',['ActiveEdgeMode.h',['../_active_edge_mode_8h.html',1,'']]], + ['activeedges_34',['ActiveEdges',['../namespace_active_edges.html',1,'']]], + ['activeedges_2eh_35',['ActiveEdges.h',['../_active_edges_8h.html',1,'']]], + ['add_36',['add',['../class_character_vs_character_collision_simple.html#a1c9a2607b50bd68ced9c7262d01cad67',1,'CharacterVsCharacterCollisionSimple::Add()'],['../class_constraint_manager.html#ae323401f2d9039dd330b070808c494f7',1,'ConstraintManager::Add()']]], + ['addangularimpulse_37',['addangularimpulse',['../class_body.html#aa797042eec783ed27333f529b66221a3',1,'Body::AddAngularImpulse()'],['../class_body_interface.html#a6d26f5967fd267e154b014a3c3af9c2e',1,'BodyInterface::AddAngularImpulse()']]], + ['addangularvelocitystep_38',['AddAngularVelocityStep',['../class_motion_properties.html#afb12aa823a651145b46b271570a7af59',1,'MotionProperties']]], + ['addattribute_39',['AddAttribute',['../class_r_t_t_i.html#a5672a76cf4f12f280889d711341b2b32',1,'RTTI']]], + ['addbaseclass_40',['AddBaseClass',['../class_r_t_t_i.html#ae4671375bc88cf535f4de98414c84405',1,'RTTI']]], + ['addbodiesabort_41',['addbodiesabort',['../class_body_interface.html#abc4f7a8cfd9e27064365eef9753bfa27',1,'BodyInterface::AddBodiesAbort()'],['../class_broad_phase.html#a031638360b44d1a9b2176590796eb2a6',1,'BroadPhase::AddBodiesAbort()'],['../class_broad_phase_quad_tree.html#a7873fb8f52203413346e4ba2fbf6859c',1,'BroadPhaseQuadTree::AddBodiesAbort()'],['../class_quad_tree.html#a3f04fc0ab8ec76c39e7e4ac4679e6ffa',1,'QuadTree::AddBodiesAbort()']]], + ['addbodiesfinalize_42',['addbodiesfinalize',['../class_body_interface.html#a64e1dd1d09088ca5a07384397f77f0aa',1,'BodyInterface::AddBodiesFinalize()'],['../class_broad_phase.html#a07f0fba42d45520a9bc2d22f2a636584',1,'BroadPhase::AddBodiesFinalize()'],['../class_broad_phase_brute_force.html#a75b3feb54f2c3710b20b27c5379ad55e',1,'BroadPhaseBruteForce::AddBodiesFinalize()'],['../class_broad_phase_quad_tree.html#a5f3d5a38786504df32579eb87b5c5eb8',1,'BroadPhaseQuadTree::AddBodiesFinalize()'],['../class_quad_tree.html#aaf165671ff225afec0336dca906f9219',1,'QuadTree::AddBodiesFinalize()']]], + ['addbodiesprepare_43',['addbodiesprepare',['../class_broad_phase_quad_tree.html#a0069028e847115d1adf3558bb09cb5a8',1,'BroadPhaseQuadTree::AddBodiesPrepare()'],['../class_quad_tree.html#a79ce6a7e423da6a09ff4be8e7f6d453c',1,'QuadTree::AddBodiesPrepare()'],['../class_broad_phase.html#adc636ae60807c46011ed3674b6a983c2',1,'BroadPhase::AddBodiesPrepare()'],['../class_body_interface.html#aab69381ebd96bc19d152bc8a928e9902',1,'BodyInterface::AddBodiesPrepare(BodyID *ioBodies, int inNumber)']]], + ['addbody_44',['addbody',['../class_body_interface.html#a4ba54993b7bbc05f1a6ffccbc46f0397',1,'BodyInterface::AddBody()'],['../class_body_manager.html#aa7e0cc82ef6c860655af523205fd9cb6',1,'BodyManager::AddBody()'],['../class_physics_scene.html#ae93df4adcf5c772085936c03137e169f',1,'PhysicsScene::AddBody()']]], + ['addbodypair_45',['AddBodyPair',['../class_contact_constraint_manager.html#a1527877d78511ca6896722d9416e09d1',1,'ContactConstraintManager']]], + ['addbodywithcustomid_46',['AddBodyWithCustomID',['../class_body_manager.html#ad8c3c4c7e6257244b81cfa8bc590149b',1,'BodyManager']]], + ['addconstraint_47',['addconstraint',['../class_physics_scene.html#a87a55664598b0e1130b9b90ea0cd87fb',1,'PhysicsScene::AddConstraint()'],['../class_physics_system.html#a6a1378c13080b5ad3af2c61be87ca40c',1,'PhysicsSystem::AddConstraint(Constraint *inConstraint)']]], + ['addconstraints_48',['AddConstraints',['../class_physics_system.html#ad83534f99aa4e7fc78e6ede84576b59c',1,'PhysicsSystem']]], + ['addcontactconstraint_49',['AddContactConstraint',['../class_contact_constraint_manager.html#ad54fa2fc8b0cbc1cd6cb5c5846e781be',1,'ContactConstraintManager']]], + ['addconvexradius_50',['addconvexradius',['../struct_add_convex_radius.html#a7483095d1f4aaf1f8003adb2696d37f6',1,'AddConvexRadius::AddConvexRadius()'],['../struct_add_convex_radius.html',1,'AddConvexRadius< ConvexObject >']]], + ['adddependency_51',['adddependency',['../class_job_system_1_1_job.html#a7686a4762d0dfe746f0b46edfcae3d6d',1,'JobSystem::Job::AddDependency()'],['../class_job_system_1_1_job_handle.html#af0a10c0398474dbf0ffe9b5866775abb',1,'JobSystem::JobHandle::AddDependency()']]], + ['addface_52',['addface',['../class_soft_body_shared_settings.html#ad408fb4eb7803dbba02dc8b669822fd2',1,'SoftBodySharedSettings::AddFace()'],['../class_polyhedron_submerged_volume_calculator.html#a2174180424e99b757f2eb63969557afc',1,'PolyhedronSubmergedVolumeCalculator::AddFace()']]], + ['addforce_53',['addforce',['../class_body.html#a330c986c992c3fdc142194e870e3b8d3',1,'Body::AddForce(Vec3Arg inForce, RVec3Arg inPosition)'],['../class_body.html#add8352d484a2805f114400159151185b',1,'Body::AddForce(Vec3Arg inForce)'],['../class_body_interface.html#a14f052076561426a785052193f1407b4',1,'BodyInterface::AddForce(const BodyID &inBodyID, Vec3Arg inForce, RVec3Arg inPoint, EActivation inActivationMode=EActivation::Activate)'],['../class_body_interface.html#a9ecde691e54928413bc001db60830488',1,'BodyInterface::AddForce(const BodyID &inBodyID, Vec3Arg inForce, EActivation inActivationMode=EActivation::Activate)']]], + ['addforceandtorque_54',['AddForceAndTorque',['../class_body_interface.html#acd2ec8e3ed17843a62f671a206e9688f',1,'BodyInterface']]], + ['addhit_55',['addhit',['../class_closest_hit_collision_collector.html#a59e5b29507bc2aa633fe55c0bb08ff3e',1,'ClosestHitCollisionCollector::AddHit()'],['../class_internal_edge_removing_collector.html#ad489b749cb2bacbf1596c1da229ff1a1',1,'InternalEdgeRemovingCollector::AddHit()'],['../class_any_hit_collision_collector.html#a405568a565f6b818c6fd08a14983b921',1,'AnyHitCollisionCollector::AddHit()'],['../class_all_hit_collision_collector.html#ae581ce1300189f781fafe702951dbf96',1,'AllHitCollisionCollector::AddHit()'],['../class_collision_collector.html#a762c35402676662897e50dd8224e496e',1,'CollisionCollector::AddHit()']]], + ['addimpulse_56',['addimpulse',['../class_body.html#af4e42e6ae915ca4fcaee1c988eeba0f7',1,'Body::AddImpulse(Vec3Arg inImpulse)'],['../class_body.html#aca6076501cd66dedd2618166fdf1750a',1,'Body::AddImpulse(Vec3Arg inImpulse, RVec3Arg inPosition)'],['../class_body_interface.html#add7aa9b7c776237b53d79e95d0d71c40',1,'BodyInterface::AddImpulse(const BodyID &inBodyID, Vec3Arg inImpulse)'],['../class_body_interface.html#a7bff4d600e56557afed4417b21f6c8e4',1,'BodyInterface::AddImpulse(const BodyID &inBodyID, Vec3Arg inImpulse, RVec3Arg inPoint)'],['../class_character.html#aa33a41b66f31c085eeb3f262f09972b7',1,'Character::AddImpulse()'],['../class_ragdoll.html#a5ea2bcad36c7346ffd9a81dee6ab03d1',1,'Ragdoll::AddImpulse()']]], + ['additionalconstraint_57',['additionalconstraint',['../class_ragdoll_settings_1_1_additional_constraint.html#a4edf70ad4617e7f369fafa7da3e4194a',1,'RagdollSettings::AdditionalConstraint::AdditionalConstraint()'],['../class_ragdoll_settings_1_1_additional_constraint.html',1,'RagdollSettings::AdditionalConstraint'],['../class_ragdoll_settings_1_1_additional_constraint.html#ad853912a3308a5439261bc80ff4f12c7',1,'RagdollSettings::AdditionalConstraint::AdditionalConstraint()']]], + ['additionalconstraintvector_58',['AdditionalConstraintVector',['../class_ragdoll_settings.html#a9b2cdf3b1dc8ca01105aed3e626dce7f',1,'RagdollSettings']]], + ['addjob_59',['addjob',['../class_job_system_1_1_barrier.html#afcf8f345a7a19e1399c4899942ed49c4',1,'JobSystem::Barrier::AddJob()'],['../class_job_system_single_threaded_1_1_barrier_impl.html#a777f9190686403c3a8d0796c0fe56077',1,'JobSystemSingleThreaded::BarrierImpl::AddJob()']]], + ['addjobs_60',['addjobs',['../class_job_system_1_1_barrier.html#ad62875b2d5b89282bfaae824cac1a476',1,'JobSystem::Barrier::AddJobs()'],['../class_job_system_single_threaded_1_1_barrier_impl.html#a124bc867efebec305deb57931370dc28',1,'JobSystemSingleThreaded::BarrierImpl::AddJobs()']]], + ['addjoint_61',['addjoint',['../class_skeleton.html#aa058a06eb2f163d14b481bbd8d602be6',1,'Skeleton::AddJoint(const string_view &inName, const string_view &inParentName=string_view())'],['../class_skeleton.html#ae52ee99ff637c0ceea37d46ba3b2d712',1,'Skeleton::AddJoint(const string_view &inName, int inParentIndex)']]], + ['addlinearandangularvelocity_62',['AddLinearAndAngularVelocity',['../class_body_interface.html#a7e4f5dc5ce2c8a045a008a93f141204b',1,'BodyInterface']]], + ['addlinearvelocity_63',['addlinearvelocity',['../class_character.html#af00e186740a38260f2987984045051c0',1,'Character::AddLinearVelocity()'],['../class_ragdoll.html#abcf8c32f6b7cbdf98bc29e2bf7075ba7',1,'Ragdoll::AddLinearVelocity()'],['../class_body_interface.html#a9a665d14b83fe63e236a0adce30d9877',1,'BodyInterface::AddLinearVelocity()']]], + ['addlinearvelocitystep_64',['AddLinearVelocityStep',['../class_motion_properties.html#a5b570eb5488b3ca5f0c1b48ef0cf6dbe',1,'MotionProperties']]], + ['addobjecttobatch_65',['AddObjectToBatch',['../class_fixed_size_free_list.html#afed6e2529117da02be0ddbcc41a509a9',1,'FixedSizeFreeList']]], + ['addpart_66',['AddPart',['../class_get_triangles_context_multi_vertex_list.html#a9cdb357887665b8efc68598c949fbd90',1,'GetTrianglesContextMultiVertexList']]], + ['addpoint_67',['addpoint',['../class_linear_curve.html#aa5b4a499837cb2a3a0c3b9b5eb618a53',1,'LinearCurve::AddPoint()'],['../class_path_constraint_path_hermite.html#a66a08dc34277969fc1f4dc3cbbca9682',1,'PathConstraintPathHermite::AddPoint()'],['../class_e_p_a_convex_hull_builder.html#ae1b6e6eb12d8723eeab4265f9510b7c2',1,'EPAConvexHullBuilder::AddPoint()']]], + ['addpositionstep_68',['AddPositionStep',['../class_body.html#af98f831df76bd7e54eeb92d79fa3c8cd',1,'Body']]], + ['addref_69',['addref',['../class_ref_target_virtual.html#ac09162a129dc035c18ea99c7450aa94d',1,'RefTargetVirtual::AddRef()'],['../class_ref_target.html#acf02c18a343bc9de9d6afb7c966f0363',1,'RefTarget::AddRef()'],['../class_job_system_1_1_job.html#ac6b5861562063d42cfa3c68f45c12b2d',1,'JobSystem::Job::AddRef()']]], + ['addrotationstep_70',['AddRotationStep',['../class_body.html#a3385650a73d75c7d9c16d13ea2d5519f',1,'Body']]], + ['addserializableattributeenum_71',['AddSerializableAttributeEnum',['../_serializable_attribute_enum_8h.html#aefe6ccc5c9b8967b4a9de188db2be3f1',1,'SerializableAttributeEnum.h']]], + ['addserializableattributetyped_72',['AddSerializableAttributeTyped',['../_serializable_attribute_typed_8h.html#a3d653de5dabcb867e559260596e8ac43',1,'SerializableAttributeTyped.h']]], + ['addshape_73',['addshape',['../class_mutable_compound_shape.html#a66c4e1e058a06ddb1718604254d15c4d',1,'MutableCompoundShape::AddShape()'],['../class_compound_shape_settings.html#ac0822915d29caf55fc61d749ab4dd10e',1,'CompoundShapeSettings::AddShape(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape, uint32 inUserData=0)'],['../class_compound_shape_settings.html#aeda2764beb7bc3fcb85d957df93a1431',1,'CompoundShapeSettings::AddShape(Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape, uint32 inUserData=0)']]], + ['addsoftbody_74',['AddSoftBody',['../class_physics_scene.html#af857154af1abd73338e4d3fbf277fae5',1,'PhysicsScene']]], + ['addstate_75',['addstate',['../class_broad_phase.html#ae7d00a18a41401f177a2a1d111265b10',1,'BroadPhase::AddState'],['../class_body_interface.html#af4706607b933c4e7d04aace99feca333',1,'BodyInterface::AddState'],['../struct_quad_tree_1_1_add_state.html',1,'QuadTree::AddState']]], + ['addsteplistener_76',['AddStepListener',['../class_physics_system.html#a0964d49514b7447981dcc7438876e988',1,'PhysicsSystem']]], + ['addthread_77',['AddThread',['../class_profiler.html#a72d49949a95f3bad23a8c288bd54d0f4',1,'Profiler']]], + ['addtophysicssystem_78',['addtophysicssystem',['../class_character.html#ad4ce42b7ef3dbd8a9a864033d3c71e14',1,'Character::AddToPhysicsSystem()'],['../class_ragdoll.html#a3c419f92dd96329ba429ed6f8fe9a74e',1,'Ragdoll::AddToPhysicsSystem()']]], + ['addtorque_79',['addtorque',['../class_body.html#aec30d437f934327d261e8ebdc23a2c8c',1,'Body::AddTorque()'],['../class_body_interface.html#abc6f86e75b2c5b77afd8b066b4d51a52',1,'BodyInterface::AddTorque()']]], + ['adjointed3x3_80',['Adjointed3x3',['../class_mat44.html#a3b9c1e6d186b9ad59e81255c64049f22',1,'Mat44']]], + ['adjustcenterofmass_81',['AdjustCenterOfMass',['../class_mutable_compound_shape.html#aadb711e8d328adc04397be0cf44d4f4c',1,'MutableCompoundShape']]], + ['align_82',['Align',['../class_byte_buffer.html#ad30809667592e1c5b70ecd023017b692',1,'ByteBuffer']]], + ['alignedallocate_83',['alignedallocate',['../_memory_8cpp.html#ae8854fb6cfcc5836d8e9f6103a3a6c68',1,'AlignedAllocate: Memory.cpp'],['../_memory_8cpp.html#a7705eeb62110cc73e82a1de675272c62',1,'AlignedAllocate(size_t inSize, size_t inAlignment): Memory.cpp'],['../_memory_8h.html#a3aa09280dba8f254af17a487b8e407ff',1,'AlignedAllocate: Memory.cpp']]], + ['alignedallocatefunction_84',['AlignedAllocateFunction',['../_memory_8h.html#a34745708a4f5ea89b7059f8f5952d3d6',1,'Memory.h']]], + ['alignedfree_85',['alignedfree',['../_memory_8cpp.html#add39c49c5cd22c9ddbc25aae2c01b5f3',1,'AlignedFree: Memory.cpp'],['../_memory_8cpp.html#a0d4c36d6296044ad0a715118d04585d5',1,'AlignedFree(void *inBlock): Memory.cpp'],['../_memory_8h.html#ade432661f00567a883e31a67e8d6dbb9',1,'AlignedFree: Memory.cpp']]], + ['alignedfreefunction_86',['AlignedFreeFunction',['../_memory_8h.html#ae5117b9da25ff2a21dfd5c159b36f1e1',1,'Memory.h']]], + ['alignup_87',['AlignUp',['../_math_8h.html#af4d371fa6a518ca5b81757dc225fae4d',1,'Math.h']]], + ['all_88',['all',['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ab1c94ca2fbc3e78fc30069c8d0f01680',1,'All: AllowedDOFs.h'],['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4ab1c94ca2fbc3e78fc30069c8d0f01680',1,'All: StateRecorder.h']]], + ['allbatchesdone_89',['AllBatchesDone',['../class_large_island_splitter.html#aa7b284b561bd630d6d288bb706439f68a6d9a123e6f06ce621f7ad5f18f9392c4',1,'LargeIslandSplitter']]], + ['allhitcollisioncollector_90',['AllHitCollisionCollector',['../class_all_hit_collision_collector.html',1,'']]], + ['allocate_91',['allocate',['../class_s_t_l_allocator.html#a186cb0b0dae1eda7cf0436e4bc8a964b',1,'STLAllocator::allocate()'],['../class_temp_allocator_impl.html#adf9ef85969afed92a4fb14b1e6ff1ac5',1,'TempAllocatorImpl::Allocate()'],['../class_s_t_l_aligned_allocator.html#a3e191bdbfbb57772ab22df9ec23a6996',1,'STLAlignedAllocator::allocate()'],['../class_s_t_l_temp_allocator.html#a5e6754289f3e5c92f7d3a94aaf4d9488',1,'STLTempAllocator::allocate()'],['../class_temp_allocator_malloc.html#a985a35b24e08ce333e10a712578458e6',1,'TempAllocatorMalloc::Allocate()'],['../class_temp_allocator_impl_with_malloc_fallback.html#ac20fa2756768654e3228e40b17ed6656',1,'TempAllocatorImplWithMallocFallback::Allocate()'],['../class_temp_allocator.html#aa62f890910ee965efea7244953f3c65e',1,'TempAllocator::Allocate()'],['../_memory_8cpp.html#a96c45c12d905a3480cc161bc38cd7287',1,'Allocate(size_t inSize): Memory.cpp'],['../_memory_8h.html#a8e44cb80cb8870970bc028513801205d',1,'Allocate: Memory.cpp'],['../_memory_8cpp.html#a409c61ab5ebd84e8aee6d9f930175a00',1,'Allocate: Memory.cpp'],['../class_l_f_h_m_allocator_context.html#afc85e525f6ca72b286aea4cdf693ac7f',1,'LFHMAllocatorContext::Allocate()'],['../class_byte_buffer.html#a6fc1274ad81be5609f1f1e807be7cf6b',1,'ByteBuffer::Allocate()'],['../class_l_f_h_m_allocator.html#aca5503a8c5d7c9ac25b4f1baa89c5317',1,'LFHMAllocator::Allocate()']]], + ['allocatebody_92',['AllocateBody',['../class_body_manager.html#ab90b6879d9b21e0301102dd1f5791cb2',1,'BodyManager']]], + ['allocatefunction_93',['AllocateFunction',['../_memory_8h.html#af18828908838938f4deb92fbde4b3015',1,'Memory.h']]], + ['allocatesoftbody_94',['AllocateSoftBody',['../class_body_manager.html#a003634616068c3e51029c38e77de7fec',1,'BodyManager']]], + ['allocator_95',['allocator',['../class_quad_tree.html#aec53c63c36f1185bd75623cbc27830d6',1,'QuadTree::Allocator'],['../md__build_2_r_e_a_d_m_e.html#autotoc_md73',1,'Custom Memory Allocator']]], + ['allocatorhasreallocate_96',['AllocatorHasReallocate',['../struct_allocator_has_reallocate.html',1,'']]], + ['allocatorhasreallocate_3c_20stlallocator_3c_20t_20_3e_20_3e_97',['AllocatorHasReallocate< STLAllocator< T > >',['../struct_allocator_has_reallocate_3_01_s_t_l_allocator_3_01_t_01_4_01_4.html',1,'']]], + ['alloweddofs_2eh_98',['AllowedDOFs.h',['../_allowed_d_o_fs_8h.html',1,'']]], + ['allowsleep_99',['allowsleep',['../class_wheeled_vehicle_controller.html#a93a56d516b3760052815ac323844d574',1,'WheeledVehicleController::AllowSleep()'],['../class_vehicle_transmission.html#a237601b6ae13f2d8b31ff20981b7ac9c',1,'VehicleTransmission::AllowSleep()'],['../class_vehicle_engine.html#a542f9131ecce2c3f41526c44759b913b',1,'VehicleEngine::AllowSleep()'],['../class_vehicle_controller.html#a036140f704fc850f06f8c4072c91276c',1,'VehicleController::AllowSleep()'],['../class_tracked_vehicle_controller.html#a6f6642ab7fa5b3fa90ddebcad0d07ec4',1,'TrackedVehicleController::AllowSleep()']]], + ['and_20latest_100',['Changes between v5.1.0 and latest',['../md__docs_2_a_p_i_changes.html#autotoc_md18',1,'']]], + ['and_20limits_101',['Conventions and Limits',['../index.html#conventions-and-limits',1,'']]], + ['and_20using_20jolt_20physics_102',['Building and Using Jolt Physics',['../md__build_2_r_e_a_d_m_e.html',1,'']]], + ['and_20v1_200_200_103',['Changes between v0.0.0 and v1.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md40',1,'']]], + ['and_20v1_201_200_104',['Changes between v1.0.0 and v1.1.0',['../md__docs_2_a_p_i_changes.html#autotoc_md39',1,'']]], + ['and_20v2_200_200_105',['Changes between v1.1.0 and v2.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md37',1,'']]], + ['and_20v3_200_200_106',['Changes between v2.0.1 and v3.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md33',1,'']]], + ['and_20v4_200_200_107',['Changes between v3.0.1 and v4.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md32',1,'']]], + ['and_20v4_200_202_108',['Changes between v4.0.0 and v4.0.2',['../md__docs_2_a_p_i_changes.html#autotoc_md30',1,'']]], + ['and_20v5_200_200_109',['Changes between v4.0.2 and v5.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md27',1,'']]], + ['and_20v5_201_200_110',['Changes between v5.0.0 and v5.1.0',['../md__docs_2_a_p_i_changes.html#autotoc_md21',1,'']]], + ['angleconstraintpart_111',['AngleConstraintPart',['../class_angle_constraint_part.html',1,'']]], + ['angleconstraintpart_2eh_112',['AngleConstraintPart.h',['../_angle_constraint_part_8h.html',1,'']]], + ['animatedjoint_113',['AnimatedJoint',['../class_skeletal_animation_1_1_animated_joint.html',1,'SkeletalAnimation']]], + ['animatedjointvector_114',['AnimatedJointVector',['../class_skeletal_animation.html#afcf962a25906787e317084b81e4d4435',1,'SkeletalAnimation']]], + ['anyhitcollisioncollector_115',['AnyHitCollisionCollector',['../class_any_hit_collision_collector.html',1,'']]], + ['api_20changes_116',['Breaking API Changes',['../md__docs_2_a_p_i_changes.html',1,'']]], + ['apichanges_2emd_117',['APIChanges.md',['../_a_p_i_changes_8md.html',1,'']]], + ['appendvector_118',['AppendVector',['../class_byte_buffer.html#ac1f1080abfd6e0dce2133c7781b46fee',1,'ByteBuffer']]], + ['apply_20gravity_119',['Apply Gravity',['../index.html#apply-gravity-update',1,'']]], + ['applybuoyancyimpulse_120',['applybuoyancyimpulse',['../class_body.html#a7797f43ac6078b682b4c9cb6c7b9b18e',1,'Body::ApplyBuoyancyImpulse()'],['../class_body_interface.html#af12108f11ee689a1ebc8320a1ac45e87',1,'BodyInterface::ApplyBuoyancyImpulse()']]], + ['applyconstraints_121',['ApplyConstraints',['../class_soft_body_update_context.html#aeef08cf407990a9950c06a5418bd11e5ae16652901cd4816adf8c10e8468fb172',1,'SoftBodyUpdateContext']]], + ['applydamping_122',['ApplyDamping',['../class_vehicle_engine.html#ad61683b9088153079e3e47334c2caf1a',1,'VehicleEngine']]], + ['applyforcetorqueanddraginternal_123',['ApplyForceTorqueAndDragInternal',['../class_motion_properties.html#ae1d0e7670106211909852cd6844286d9',1,'MotionProperties']]], + ['applygyroscopicforceinternal_124',['ApplyGyroscopicForceInternal',['../class_motion_properties.html#a78c58cb27772068a0aa3cbe286ddaf0b',1,'MotionProperties']]], + ['applytorque_125',['applytorque',['../class_vehicle_engine.html#af916ceb8c4a323cee68c72465627901e',1,'VehicleEngine::ApplyTorque()'],['../class_wheel_w_v.html#a8d82611fb63ebf51e726d0aff2db4cab',1,'WheelWV::ApplyTorque()']]], + ['architecture_20of_20jolt_20physics_126',['Architecture of Jolt Physics',['../index.html#architecture-jolt-physics',1,'']]], + ['architecture_2emd_127',['Architecture.md',['../_architecture_8md.html',1,'']]], + ['areallabove_128',['AreAllAbove',['../class_polyhedron_submerged_volume_calculator.html#afd8348d65dfed4f7eb40ee92eb74742a',1,'PolyhedronSubmergedVolumeCalculator']]], + ['areallbelow_129',['AreAllBelow',['../class_polyhedron_submerged_volume_calculator.html#aac9438428e9b0508fbac276161acae83',1,'PolyhedronSubmergedVolumeCalculator']]], + ['arejointscorrectlyordered_130',['AreJointsCorrectlyOrdered',['../class_skeleton.html#aac4965d2cd0cf26b47ddc769e51c62fe',1,'Skeleton']]], + ['argtype_131',['argtype',['../class_d_mat44.html#a235b5e953be54f540205706098809fcb',1,'DMat44::ArgType'],['../class_d_vec3.html#adb8357872b8bcac73ffb3c85bffa9f13',1,'DVec3::ArgType'],['../class_mat44.html#af683e408c0736cfaeabba6c87f6308ea',1,'Mat44::ArgType'],['../class_vec3.html#a8f7af7dfc65ee331b1819023c1724c97',1,'Vec3::ArgType']]], + ['arithmeticshiftright_132',['arithmeticshiftright',['../class_u_vec4.html#acfceebc6fc876a55c008bff9fc78b005',1,'UVec4::ArithmeticShiftRight()'],['../class_u_vec8.html#a49a21bc576313ae676fb2064904ed506',1,'UVec8::ArithmeticShiftRight()'],['../class_u_vec4.html#a44d2f7bb6b7c51b7cfcf5bb5f261cac7',1,'UVec4::ArithmeticShiftRight()'],['../class_u_vec8.html#ab477a12a379656e5aeb518621b308854',1,'UVec8::ArithmeticShiftRight()']]], + ['armneon_2eh_133',['ARMNeon.h',['../_a_r_m_neon_8h.html',1,'']]], + ['array_134',['array',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa4410ec34d9e6c1a68100ca0ce033fb17',1,'Array: SerializableAttribute.h'],['../class_array.html',1,'Array< T, Allocator >'],['../class_array.html#a9faa45c57a1bd643eae7d6b7017c606e',1,'Array::Array(Array< T, Allocator > &&inRHS) noexcept'],['../class_array.html#afb8c4cdc7722694c43d9e0661e774e08',1,'Array::Array(const Array< T, Allocator > &inRHS)'],['../class_array.html#aef00de2a2e4817b0faeea0906b87b8b9',1,'Array::Array(const_iterator inBegin, const_iterator inEnd, const Allocator &inAllocator={ })'],['../class_array.html#a98bf0be959b81ee4ecc69fd68fa98b9f',1,'Array::Array(std::initializer_list< T > inList, const Allocator &inAllocator={ })'],['../class_array.html#a8da2d23aa24ffc66a29cea60ae6b39d9',1,'Array::Array(size_type inLength, const T &inValue, const Allocator &inAllocator={ })'],['../class_array.html#ac0757293b0dd92c58cbcc79b1d4a588a',1,'Array::Array(size_type inLength, const Allocator &inAllocator={ })'],['../class_array.html#a4595444b3f64178f76b4c26066397d95',1,'Array::Array(const Allocator &inAllocator)'],['../class_array.html#a16d387784beee3e4ed9928a9edadc089',1,'Array::Array()=default']]], + ['array_2eh_135',['Array.h',['../_array_8h.html',1,'']]], + ['array_3c_20additionalconstraint_20_3e_136',['Array< AdditionalConstraint >',['../class_array.html',1,'']]], + ['array_3c_20animatedjoint_20_3e_137',['Array< AnimatedJoint >',['../class_array.html',1,'']]], + ['array_3c_20attributedescription_20_3e_138',['Array< AttributeDescription >',['../class_array.html',1,'']]], + ['array_3c_20bin_20_3e_139',['Array< Bin >',['../class_array.html',1,'']]], + ['array_3c_20body_20_2a_20_3e_140',['Array< Body * >',['../class_array.html',1,'']]], + ['array_3c_20bodycreationsettings_20_3e_141',['Array< BodyCreationSettings >',['../class_array.html',1,'']]], + ['array_3c_20bodyid_20_3e_142',['Array< BodyID >',['../class_array.html',1,'']]], + ['array_3c_20bodyidxpair_20_3e_143',['Array< BodyIdxPair >',['../class_array.html',1,'']]], + ['array_3c_20bounds_20_3e_144',['Array< Bounds >',['../class_array.html',1,'']]], + ['array_3c_20broadphaselayer_20_3e_145',['Array< BroadPhaseLayer >',['../class_array.html',1,'']]], + ['array_3c_20chain_20_3e_146',['Array< Chain >',['../class_array.html',1,'']]], + ['array_3c_20charactervirtual_20_2a_20_3e_147',['Array< CharacterVirtual * >',['../class_array.html',1,'']]], + ['array_3c_20closestkinematic_20_3e_148',['Array< ClosestKinematic >',['../class_array.html',1,'']]], + ['array_3c_20collidingshape_20_3e_149',['Array< CollidingShape >',['../class_array.html',1,'']]], + ['array_3c_20const_20char_20_2a_20_3e_150',['Array< const char * >',['../class_array.html',1,'']]], + ['array_3c_20contact_20_3e_151',['Array< Contact >',['../class_array.html',1,'']]], + ['array_3c_20coplanar_20_3e_152',['Array< Coplanar >',['../class_array.html',1,'']]], + ['array_3c_20debugrenderer_3a_3alod_20_3e_153',['Array< DebugRenderer::LOD >',['../class_array.html',1,'']]], + ['array_3c_20debugrendererrecorder_3a_3aframe_20_3e_154',['Array< DebugRendererRecorder::Frame >',['../class_array.html',1,'']]], + ['array_3c_20debugrendererrecorder_3a_3ageometryblob_20_3e_155',['Array< DebugRendererRecorder::GeometryBlob >',['../class_array.html',1,'']]], + ['array_3c_20debugrendererrecorder_3a_3alineblob_20_3e_156',['Array< DebugRendererRecorder::LineBlob >',['../class_array.html',1,'']]], + ['array_3c_20debugrendererrecorder_3a_3atextblob_20_3e_157',['Array< DebugRendererRecorder::TextBlob >',['../class_array.html',1,'']]], + ['array_3c_20debugrendererrecorder_3a_3atriangleblob_20_3e_158',['Array< DebugRendererRecorder::TriangleBlob >',['../class_array.html',1,'']]], + ['array_3c_20face_20_2a_20_3e_159',['Array< Face * >',['../class_array.html',1,'']]], + ['array_3c_20face_20_3e_160',['Array< Face >',['../class_array.html',1,'']]], + ['array_3c_20float_20_3e_161',['Array< float >',['../class_array.html',1,'']]], + ['array_3c_20float3_20_3e_162',['Array< Float3 >',['../class_array.html',1,'']]], + ['array_3c_20indexedtriangle_20_3e_163',['Array< IndexedTriangle >',['../class_array.html',1,'']]], + ['array_3c_20int_20_3e_164',['Array< int >',['../class_array.html',1,'']]], + ['array_3c_20joint_20_3e_165',['Array< Joint >',['../class_array.html',1,'']]], + ['array_3c_20jointstate_20_3e_166',['Array< JointState >',['../class_array.html',1,'']]], + ['array_3c_20keyframe_20_3e_167',['Array< Keyframe >',['../class_array.html',1,'']]], + ['array_3c_20link_20_3e_168',['Array< Link >',['../class_array.html',1,'']]], + ['array_3c_20locked_20_3e_169',['Array< Locked >',['../class_array.html',1,'']]], + ['array_3c_20mapping_20_3e_170',['Array< Mapping >',['../class_array.html',1,'']]], + ['array_3c_20mat44_20_3e_171',['Array< Mat44 >',['../class_array.html',1,'']]], + ['array_3c_20node_20_3e_172',['Array< Node >',['../class_array.html',1,'']]], + ['array_3c_20part_20_3e_173',['Array< Part >',['../class_array.html',1,'']]], + ['array_3c_20physicsscene_3a_3aconnectedconstraint_20_3e_174',['Array< PhysicsScene::ConnectedConstraint >',['../class_array.html',1,'']]], + ['array_3c_20physicssteplistener_20_2a_20_3e_175',['Array< PhysicsStepListener * >',['../class_array.html',1,'']]], + ['array_3c_20plane_20_3e_176',['Array< Plane >',['../class_array.html',1,'']]], + ['array_3c_20point_20_3e_177',['Array< Point >',['../class_array.html',1,'']]], + ['array_3c_20profilethread_20_2a_20_3e_178',['Array< ProfileThread * >',['../class_array.html',1,'']]], + ['array_3c_20ref_20_3e_179',['Array< Ref >',['../class_array.html',1,'']]], + ['array_3c_20ref_3c_20constraint_20_3e_20_3e_180',['Array< Ref< Constraint > >',['../class_array.html',1,'']]], + ['array_3c_20ref_3c_20twobodyconstraint_20_3e_20_3e_181',['Array< Ref< TwoBodyConstraint > >',['../class_array.html',1,'']]], + ['array_3c_20ref_3c_20wheelsettings_20_3e_20_3e_182',['Array< Ref< WheelSettings > >',['../class_array.html',1,'']]], + ['array_3c_20refconst_3c_20physicsmaterial_20_3e_20_3e_183',['Array< RefConst< PhysicsMaterial > >',['../class_array.html',1,'']]], + ['array_3c_20resulttype_20_3e_184',['Array< ResultType >',['../class_array.html',1,'']]], + ['array_3c_20skinstate_20_3e_185',['Array< SkinState >',['../class_array.html',1,'']]], + ['array_3c_20softbodycreationsettings_20_3e_186',['Array< SoftBodyCreationSettings >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3adihedralbend_20_3e_187',['Array< SoftBodySharedSettings::DihedralBend >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3aedge_20_3e_188',['Array< SoftBodySharedSettings::Edge >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3aface_20_3e_189',['Array< SoftBodySharedSettings::Face >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3ainvbind_20_3e_190',['Array< SoftBodySharedSettings::InvBind >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3alra_20_3e_191',['Array< SoftBodySharedSettings::LRA >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3askinned_20_3e_192',['Array< SoftBodySharedSettings::Skinned >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3avertex_20_3e_193',['Array< SoftBodySharedSettings::Vertex >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3avolume_20_3e_194',['Array< SoftBodySharedSettings::Volume >',['../class_array.html',1,'']]], + ['array_3c_20softbodyvertex_20_3e_195',['Array< SoftBodyVertex >',['../class_array.html',1,'']]], + ['array_3c_20step_2c_20stltempallocator_3c_20step_20_3e_20_3e_196',['Array< Step, STLTempAllocator< Step > >',['../class_array.html',1,'']]], + ['array_3c_20subshape_20_3e_197',['Array< SubShape >',['../class_array.html',1,'']]], + ['array_3c_20subshapesettings_20_3e_198',['Array< SubShapeSettings >',['../class_array.html',1,'']]], + ['array_3c_20thread_20_3e_199',['Array< thread >',['../class_array.html',1,'']]], + ['array_3c_20triangle_20_3e_200',['Array< Triangle >',['../class_array.html',1,'']]], + ['array_3c_20uint_20_3e_201',['Array< uint >',['../class_array.html',1,'']]], + ['array_3c_20uint32_20_3e_202',['Array< uint32 >',['../class_array.html',1,'']]], + ['array_3c_20uint8_20_3e_203',['Array< uint8 >',['../class_array.html',1,'']]], + ['array_3c_20unmapped_20_3e_204',['Array< Unmapped >',['../class_array.html',1,'']]], + ['array_3c_20updategroup_20_3e_205',['Array< UpdateGroup >',['../class_array.html',1,'']]], + ['array_3c_20vec3_20_3e_206',['Array< Vec3 >',['../class_array.html',1,'']]], + ['array_3c_20vehicleantirollbar_20_3e_207',['Array< VehicleAntiRollBar >',['../class_array.html',1,'']]], + ['array_3c_20vehicledifferentialsettings_20_3e_208',['Array< VehicleDifferentialSettings >',['../class_array.html',1,'']]], + ['array_3c_20wheel_20_2a_20_3e_209',['Array< Wheel * >',['../class_array.html',1,'']]], + ['asin_210',['asin',['../_trigonometry_8h.html#a8d14d3276803ebb781ac40821491c959',1,'ASin(): Trigonometry.h'],['../class_vec4.html#a2e71650ce94e6f72312f8820af419db5',1,'Vec4::ASin()']]], + ['asserting_211',['Logging & Asserting',['../md__build_2_r_e_a_d_m_e.html#autotoc_md72',1,'']]], + ['assign_212',['assign',['../class_array.html#af7a4d07255a8cfd0b90d171c12427d0d',1,'Array::assign(std::initializer_list< T > inList)'],['../class_array.html#ae1283a9f0de42a16a3f526726a366fee',1,'Array::assign(Iterator inBegin, Iterator inEnd)']]], + ['assignbodyid_213',['assignbodyid',['../class_body_interface.html#a7669d5c31627d2c99fac69723fb1a219',1,'BodyInterface::AssignBodyID(Body *ioBody, const BodyID &inBodyID)'],['../class_body_interface.html#a4247f0851fb8dfbe92f5b83a41863595',1,'BodyInterface::AssignBodyID(Body *ioBody)']]], + ['assignsplit_214',['AssignSplit',['../class_large_island_splitter.html#abdd73c85801b06752d297cf36df1b44f',1,'LargeIslandSplitter']]], + ['assigntononparallelsplit_215',['AssignToNonParallelSplit',['../class_large_island_splitter.html#a1b2ef7ebff94911ee008f25f6c0c741b',1,'LargeIslandSplitter']]], + ['at_216',['at',['../class_array.html#ad43d0fa1083ae9004b7a4de150f9a7f5',1,'Array::at(size_type inIdx)'],['../class_array.html#aeeca660e7d286155dc31eb356525673a',1,'Array::at(size_type inIdx) const'],['../class_static_array.html#a83ed073e3ed2248da10cef0277beeb23',1,'StaticArray::at(size_type inIdx)'],['../class_static_array.html#af9191dafffff11ec4008b9378fd4dd05',1,'StaticArray::at(size_type inIdx) const']]], + ['atan_217',['atan',['../_trigonometry_8h.html#a8d7d50cdb10f600d1493bd8a36c4029e',1,'ATan(): Trigonometry.h'],['../class_vec4.html#a0c3d97968c479dcc0a08b98134c95e02',1,'Vec4::ATan()']]], + ['atan2_218',['ATan2',['../_trigonometry_8h.html#a64f4ce00d99917535c674ec5172ccf78',1,'Trigonometry.h']]], + ['atomicmax_219',['AtomicMax',['../_atomics_8h.html#adda37c39156e9dc280788421bf35f7bf',1,'Atomics.h']]], + ['atomicmin_220',['AtomicMin',['../_atomics_8h.html#af71f53f1d43bb24611bd60d7c634a207',1,'Atomics.h']]], + ['atomics_2eh_221',['Atomics.h',['../_atomics_8h.html',1,'']]], + ['auto_222',['Auto',['../_vehicle_transmission_8h.html#ad3e125d6d786c09fddfa10be390f851da06b9281e396db002010bde1de57262eb',1,'VehicleTransmission.h']]], + ['availablejobs_223',['AvailableJobs',['../class_job_system_single_threaded.html#ae327b71ac563cfe1d2c5623511291450',1,'JobSystemSingleThreaded']]], + ['axisconstraintpart_224',['AxisConstraintPart',['../class_axis_constraint_part.html',1,'']]], + ['axisconstraintpart_2eh_225',['AxisConstraintPart.h',['../_axis_constraint_part_8h.html',1,'']]] +]; diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 000000000..76327e40e --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,132 @@ +var searchData= +[ + ['b_0',['b',['../class_color.html#a177ce5853f9bb12fda1c545dfb6f4ddf',1,'Color']]], + ['back_1',['back',['../class_array.html#a4c0bf34f85afda89306030b0a1f9c032',1,'Array::back() const'],['../class_array.html#ac884e13d12d2f321df09467c121a909f',1,'Array::back()'],['../class_static_array.html#a6b5e0b0984bd82a6f09660206a1b4914',1,'StaticArray::back() const'],['../class_static_array.html#ab423e08f9f4dedd513bb61b9fec4e326',1,'StaticArray::back()']]], + ['back_20a_20simulation_2',['Rolling Back a Simulation',['../index.html#rolling-back-a-simulation',1,'']]], + ['backfacemode_2eh_3',['BackFaceMode.h',['../_back_face_mode_8h.html',1,'']]], + ['barrier_4',['Barrier',['../class_job_system_1_1_barrier.html',1,'JobSystem']]], + ['barrierimpl_5',['BarrierImpl',['../class_job_system_single_threaded_1_1_barrier_impl.html',1,'JobSystemSingleThreaded']]], + ['baseclass_6',['BaseClass',['../struct_r_t_t_i_1_1_base_class.html',1,'RTTI']]], + ['batch_7',['batch',['../struct_fixed_size_free_list_1_1_batch.html',1,'FixedSizeFreeList< Object >::Batch'],['../class_debug_renderer.html#a13e2a97f3432cf0ab57473c688d65a1c',1,'DebugRenderer::Batch']]], + ['batchretrieved_8',['BatchRetrieved',['../class_large_island_splitter.html#aa7b284b561bd630d6d288bb706439f68a39b684c3a6067a4e201699e906bd4af1',1,'LargeIslandSplitter']]], + ['bcsresult_9',['BCSResult',['../class_body_creation_settings.html#a3d7ae6cc90958bea23ab0383b6b90cc1',1,'BodyCreationSettings']]], + ['begin_10',['begin',['../class_static_array.html#a671ecdfc35c476a8efd5b11536a1712f',1,'StaticArray::begin() const'],['../class_static_array.html#a39b29025d859bb426416085c054dfb89',1,'StaticArray::begin()'],['../class_lock_free_hash_map.html#a0ecc7b5f560d02210a707b1099f8b99e',1,'LockFreeHashMap::begin()'],['../class_array.html#a7cf4b2db22a30a247af7e3b2839a385a',1,'Array::begin()'],['../class_array.html#a5ca209989bad1f51065a8f7d9a73d3af',1,'Array::begin() const']]], + ['being_20sloppy_20while_20still_20being_20deterministic_11',['Being Sloppy While Still Being Deterministic',['../index.html#sloppy-determinism',1,'']]], + ['between_20v0_200_200_20and_20v1_200_200_12',['Changes between v0.0.0 and v1.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md40',1,'']]], + ['between_20v1_200_200_20and_20v1_201_200_13',['Changes between v1.0.0 and v1.1.0',['../md__docs_2_a_p_i_changes.html#autotoc_md39',1,'']]], + ['between_20v1_201_200_20and_20v2_200_200_14',['Changes between v1.1.0 and v2.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md37',1,'']]], + ['between_20v2_200_201_20and_20v3_200_200_15',['Changes between v2.0.1 and v3.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md33',1,'']]], + ['between_20v3_200_201_20and_20v4_200_200_16',['Changes between v3.0.1 and v4.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md32',1,'']]], + ['between_20v4_200_200_20and_20v4_200_202_17',['Changes between v4.0.0 and v4.0.2',['../md__docs_2_a_p_i_changes.html#autotoc_md30',1,'']]], + ['between_20v4_200_202_20and_20v5_200_200_18',['Changes between v4.0.2 and v5.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md27',1,'']]], + ['between_20v5_200_200_20and_20v5_201_200_19',['Changes between v5.0.0 and v5.1.0',['../md__docs_2_a_p_i_changes.html#autotoc_md21',1,'']]], + ['between_20v5_201_200_20and_20latest_20',['Changes between v5.1.0 and latest',['../md__docs_2_a_p_i_changes.html#autotoc_md18',1,'']]], + ['big_20worlds_21',['Big Worlds',['../index.html#big-worlds',1,'']]], + ['biggertype_22',['BiggerType',['../class_sub_shape_i_d.html#af668479f6a45736649f0881db72637a7',1,'SubShapeID']]], + ['binary_23',['Binary',['../class_object_stream.html#a5feef3b87da292623ebf2a04c7c3482ea6ce976e8f061b2b5cfe4d0c50c3405dd',1,'ObjectStream']]], + ['bitcast_24',['BitCast',['../_math_8h.html#ab2cbe30946edbf23887cfc1291025866',1,'Math.h']]], + ['bodies_25',['bodies',['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4a2510bc0dd63bb7e0108708a98837f19d',1,'Bodies: StateRecorder.h'],['../index.html#bodies',1,'Bodies'],['../index.html#creating-bodies',1,'Creating Bodies'],['../index.html#skinning-soft-bodies',1,'Skinning Soft Bodies'],['../index.html#soft-bodies',1,'Soft Bodies']]], + ['bodies_20broad_20phase_26',['Solve Position Constraints, Update Bodies Broad Phase',['../index.html#solve-position-constraints',1,'']]], + ['bodiestosleep_27',['bodiestosleep',['../class_physics_system_1_1_bodies_to_sleep.html#af3da3598afb660ad1a21de8ba2467a5e',1,'PhysicsSystem::BodiesToSleep::BodiesToSleep()'],['../class_physics_system_1_1_bodies_to_sleep.html',1,'PhysicsSystem::BodiesToSleep']]], + ['body_28',['body',['../class_motion_properties.html#a8858f397a273114ddc1443880bb5540e',1,'MotionProperties::Body'],['../class_body.html',1,'Body'],['../md__docs_2_samples.html#autotoc_md9',1,'Soft Body'],['../md__docs_2_release_notes.html#autotoc_md36',1,'Soft Body'],['../md__docs_2_release_notes.html#autotoc_md24',1,'Soft Body']]], + ['body_20collide_29',['Soft Body Collide',['../index.html#soft-body-collide',1,'']]], + ['body_20contact_20listeners_30',['Soft Body Contact Listeners',['../index.html#soft-body-contact-listener',1,'']]], + ['body_20finalize_31',['Soft Body Finalize',['../index.html#soft-body-finalize',1,'']]], + ['body_20island_20idx_32',['Set Body Island Idx',['../index.html#set-body-island-idx',1,'']]], + ['body_20prepare_33',['Soft Body Prepare',['../index.html#soft-body-prepare',1,'']]], + ['body_20simulate_34',['Soft Body Simulate',['../index.html#soft-body-simulate',1,'']]], + ['body_20work_20in_20progress_35',['Soft Body Work In Progress',['../index.html#soft-body-wip',1,'']]], + ['body_2ecpp_36',['Body.cpp',['../_body_8cpp.html',1,'']]], + ['body_2eh_37',['Body.h',['../_body_8h.html',1,'']]], + ['body_2einl_38',['Body.inl',['../_body_8inl.html',1,'']]], + ['bodyaccess_2ecpp_39',['BodyAccess.cpp',['../_body_access_8cpp.html',1,'']]], + ['bodyaccess_2eh_40',['BodyAccess.h',['../_body_access_8h.html',1,'']]], + ['bodyactivationlistener_41',['BodyActivationListener',['../class_body_activation_listener.html',1,'']]], + ['bodyactivationlistener_2eh_42',['BodyActivationListener.h',['../_body_activation_listener_8h.html',1,'']]], + ['bodycreationsettings_43',['bodycreationsettings',['../class_body_creation_settings.html#a807ecf473d73ab8a468ee4126f5ac79b',1,'BodyCreationSettings::BodyCreationSettings()'],['../class_body_creation_settings.html',1,'BodyCreationSettings'],['../class_body_creation_settings.html#a6926eec582c4902d3040637ff5ff2332',1,'BodyCreationSettings::BodyCreationSettings(const ShapeSettings *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)'],['../class_body_creation_settings.html#aec5d90393812f5354e8505f70f4b00c9',1,'BodyCreationSettings::BodyCreationSettings()=default']]], + ['bodycreationsettings_2ecpp_44',['BodyCreationSettings.cpp',['../_body_creation_settings_8cpp.html',1,'']]], + ['bodycreationsettings_2eh_45',['BodyCreationSettings.h',['../_body_creation_settings_8h.html',1,'']]], + ['bodydrawfilter_46',['BodyDrawFilter',['../class_body_draw_filter.html',1,'']]], + ['bodyfilter_47',['BodyFilter',['../class_body_filter.html',1,'']]], + ['bodyfilter_2eh_48',['BodyFilter.h',['../_body_filter_8h.html',1,'']]], + ['bodyid_49',['bodyid',['../class_body_i_d.html#a4e601acab1a7ff5d5742673f8bd36530',1,'BodyID::BodyID()'],['../class_body_i_d.html',1,'BodyID'],['../class_body_i_d.html#a702d36c88f9ee8f41b349330e30b46b7',1,'BodyID::BodyID(uint32 inID, uint8 inSequenceNumber)'],['../class_body_i_d.html#a43c06446ee70f43cb4516600cb6285f4',1,'BodyID::BodyID()']]], + ['bodyid_2eh_50',['BodyID.h',['../_body_i_d_8h.html',1,'']]], + ['bodyidvector_51',['BodyIDVector',['../_body_manager_8h.html#afc1c8d959352d66db407f29003a66bb8',1,'BodyManager.h']]], + ['bodyidxpair_52',['BodyIdxPair',['../class_ragdoll_settings.html#a36195b8e16b3bc71bcace6dc5ab207e8',1,'RagdollSettings']]], + ['bodyinterface_53',['BodyInterface',['../class_body_interface.html',1,'']]], + ['bodyinterface_2ecpp_54',['BodyInterface.cpp',['../_body_interface_8cpp.html',1,'']]], + ['bodyinterface_2eh_55',['BodyInterface.h',['../_body_interface_8h.html',1,'']]], + ['bodylock_2eh_56',['BodyLock.h',['../_body_lock_8h.html',1,'']]], + ['bodylockbase_57',['bodylockbase',['../class_body_lock_base.html#a6567f612e029f57f4a49aebcf54334a9',1,'BodyLockBase::BodyLockBase()'],['../class_body_lock_base.html',1,'BodyLockBase< Write, BodyType >']]], + ['bodylockbase_3c_20false_2c_20const_20body_20_3e_58',['BodyLockBase< false, const Body >',['../class_body_lock_base.html',1,'']]], + ['bodylockbase_3c_20true_2c_20body_20_3e_59',['BodyLockBase< true, Body >',['../class_body_lock_base.html',1,'']]], + ['bodylockinterface_60',['bodylockinterface',['../class_body_lock_interface_locking.html#a502df83afc4e8e8e77d7a8b2993c1f8e',1,'BodyLockInterfaceLocking::BodyLockInterface()'],['../class_body_lock_interface_no_lock.html#a502df83afc4e8e8e77d7a8b2993c1f8e',1,'BodyLockInterfaceNoLock::BodyLockInterface()'],['../class_body_lock_interface.html#a502df83afc4e8e8e77d7a8b2993c1f8e',1,'BodyLockInterface::BodyLockInterface()'],['../class_body_lock_interface.html',1,'BodyLockInterface']]], + ['bodylockinterface_2eh_61',['BodyLockInterface.h',['../_body_lock_interface_8h.html',1,'']]], + ['bodylockinterfacelocking_62',['BodyLockInterfaceLocking',['../class_body_lock_interface_locking.html',1,'']]], + ['bodylockinterfacenolock_63',['BodyLockInterfaceNoLock',['../class_body_lock_interface_no_lock.html',1,'']]], + ['bodylockmulti_2eh_64',['BodyLockMulti.h',['../_body_lock_multi_8h.html',1,'']]], + ['bodylockmultibase_65',['bodylockmultibase',['../class_body_lock_multi_base.html',1,'BodyLockMultiBase< Write, BodyType >'],['../class_body_lock_multi_base.html#a64d2906481b4018d8394f0d8cb199cc8',1,'BodyLockMultiBase::BodyLockMultiBase()']]], + ['bodylockmultibase_3c_20false_2c_20const_20body_20_3e_66',['BodyLockMultiBase< false, const Body >',['../class_body_lock_multi_base.html',1,'']]], + ['bodylockmultibase_3c_20true_2c_20body_20_3e_67',['BodyLockMultiBase< true, Body >',['../class_body_lock_multi_base.html',1,'']]], + ['bodylockmultiread_68',['BodyLockMultiRead',['../class_body_lock_multi_read.html',1,'']]], + ['bodylockmultiwrite_69',['BodyLockMultiWrite',['../class_body_lock_multi_write.html',1,'']]], + ['bodylockread_70',['BodyLockRead',['../class_body_lock_read.html',1,'']]], + ['bodylockwrite_71',['BodyLockWrite',['../class_body_lock_write.html',1,'']]], + ['bodymanager_72',['bodymanager',['../class_motion_properties.html#a58dc89a83d8c4dc28bd5f6e8c0ed35c8',1,'MotionProperties::BodyManager'],['../class_soft_body_shape.html#a58dc89a83d8c4dc28bd5f6e8c0ed35c8',1,'SoftBodyShape::BodyManager'],['../class_body.html#a58dc89a83d8c4dc28bd5f6e8c0ed35c8',1,'Body::BodyManager'],['../class_body_manager.html',1,'BodyManager']]], + ['bodymanager_2ecpp_73',['BodyManager.cpp',['../_body_manager_8cpp.html',1,'']]], + ['bodymanager_2eh_74',['BodyManager.h',['../_body_manager_8h.html',1,'']]], + ['bodypair_75',['bodypair',['../struct_body_pair.html',1,'BodyPair'],['../struct_body_pair.html#af07fc6b828c249ac30e5ad5f406016f8',1,'BodyPair::BodyPair()=default'],['../struct_body_pair.html#a89d92908491717f39027b1f51a50088c',1,'BodyPair::BodyPair(BodyID inA, BodyID inB)']]], + ['bodypair_2eh_76',['BodyPair.h',['../_body_pair_8h.html',1,'']]], + ['bodypaircachefull_77',['BodyPairCacheFull',['../_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1a35c89f6a1eb10c72daa6336df0374fa1',1,'EPhysicsUpdateError.h']]], + ['bodypaircollector_78',['BodyPairCollector',['../_broad_phase_8h.html#a79c28d9ca80b345aca4b3ab03ab8f82a',1,'BroadPhase.h']]], + ['bodypairhandle_79',['BodyPairHandle',['../class_contact_constraint_manager.html#a5d7bb30c442d466ba19b92f8b5ffb754',1,'ContactConstraintManager']]], + ['bodypairqueue_80',['BodyPairQueue',['../struct_physics_update_context_1_1_body_pair_queue.html',1,'PhysicsUpdateContext']]], + ['bodypairqueues_81',['BodyPairQueues',['../class_physics_update_context.html#a1a8cbbf5b9b0f8bf54cdd936b2a6516e',1,'PhysicsUpdateContext']]], + ['bodystats_82',['bodystats',['../class_physics_system.html#a8298f68e3a5a5990ea4c5391750b3d90',1,'PhysicsSystem::BodyStats'],['../struct_body_manager_1_1_body_stats.html',1,'BodyManager::BodyStats']]], + ['bodytype_2eh_83',['BodyType.h',['../_body_type_8h.html',1,'']]], + ['bodyvector_84',['BodyVector',['../_body_manager_8h.html#ae4e246af993ca15dd65cd797e6bf7640',1,'BodyManager.h']]], + ['bodywithmotionproperties_85',['bodywithmotionproperties',['../class_body.html#a9e3350c41c89f980a2198b359ba62857',1,'Body::BodyWithMotionProperties'],['../class_body_with_motion_properties.html',1,'BodyWithMotionProperties']]], + ['box_86',['box',['../class_box_shape_1_1_box.html',1,'BoxShape::Box'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba3cfce651e667ab85486dd42a8185f98a',1,'Box: Shape.h'],['../class_box_shape_1_1_box.html#af913f6873feba3de236ec74247bf0298',1,'BoxShape::Box::Box()']]], + ['boxshape_87',['boxshape',['../class_box_shape.html',1,'BoxShape'],['../class_box_shape.html#a4004360f2a7438e69fa3d0a252fc8f28',1,'BoxShape::BoxShape()'],['../class_box_shape.html#a2088320f53aad4bffd21eac9317e0848',1,'BoxShape::BoxShape(const BoxShapeSettings &inSettings, ShapeResult &outResult)'],['../class_box_shape.html#a4ccbcc1c06232059f4b8711cb54d21f8',1,'BoxShape::BoxShape(Vec3Arg inHalfExtent, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)']]], + ['boxshape_2ecpp_88',['BoxShape.cpp',['../_box_shape_8cpp.html',1,'']]], + ['boxshape_2eh_89',['BoxShape.h',['../_box_shape_8h.html',1,'']]], + ['boxshapesettings_90',['boxshapesettings',['../class_box_shape_settings.html',1,'BoxShapeSettings'],['../class_box_shape_settings.html#a4c1e144d10ffefdcd6f31ddf46feffc1',1,'BoxShapeSettings::BoxShapeSettings()=default'],['../class_box_shape_settings.html#a0c622692b801fef15ec5aaf849cca94c',1,'BoxShapeSettings::BoxShapeSettings(Vec3Arg inHalfExtent, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)']]], + ['breakable_20constraints_91',['Breakable Constraints',['../index.html#breakable-constraints',1,'']]], + ['breaking_20api_20changes_92',['Breaking API Changes',['../md__docs_2_a_p_i_changes.html',1,'']]], + ['broad_20phase_93',['broad phase',['../index.html#broad-phase',1,'Broad Phase'],['../index.html#solve-position-constraints',1,'Solve Position Constraints, Update Bodies Broad Phase']]], + ['broad_20phase_20update_20finalize_94',['Broad Phase Update Finalize',['../index.html#broad-phase-update-finalize',1,'']]], + ['broad_20phase_20update_20prepare_95',['Broad Phase Update Prepare',['../index.html#broad-phase-update-prepare',1,'']]], + ['broad_5fphase_96',['BROAD_PHASE',['../_physics_system_8cpp.html#aad55d1aa02fb095e428393a1b19c814f',1,'PhysicsSystem.cpp']]], + ['broadphase_97',['BroadPhase',['../class_broad_phase.html',1,'']]], + ['broadphase_2ecpp_98',['BroadPhase.cpp',['../_broad_phase_8cpp.html',1,'']]], + ['broadphase_2eh_99',['BroadPhase.h',['../_broad_phase_8h.html',1,'']]], + ['broadphasebruteforce_100',['BroadPhaseBruteForce',['../class_broad_phase_brute_force.html',1,'']]], + ['broadphasebruteforce_2ecpp_101',['BroadPhaseBruteForce.cpp',['../_broad_phase_brute_force_8cpp.html',1,'']]], + ['broadphasebruteforce_2eh_102',['BroadPhaseBruteForce.h',['../_broad_phase_brute_force_8h.html',1,'']]], + ['broadphasecastresult_103',['BroadPhaseCastResult',['../class_broad_phase_cast_result.html',1,'']]], + ['broadphaselayer_104',['broadphaselayer',['../class_broad_phase_layer.html',1,'BroadPhaseLayer'],['../class_broad_phase_layer.html#a5a745cab41c36b5acda7ba4332abd068',1,'BroadPhaseLayer::BroadPhaseLayer()=default'],['../class_broad_phase_layer.html#ab22a0985d4594f952096da14ab4560d8',1,'BroadPhaseLayer::BroadPhaseLayer(const BroadPhaseLayer &)=default'],['../class_broad_phase_layer.html#a731f26e18a30c3bbb274df1296e78a9e',1,'BroadPhaseLayer::BroadPhaseLayer(Type inValue)']]], + ['broadphaselayer_2eh_105',['BroadPhaseLayer.h',['../_broad_phase_layer_8h.html',1,'']]], + ['broadphaselayerfilter_106',['BroadPhaseLayerFilter',['../class_broad_phase_layer_filter.html',1,'']]], + ['broadphaselayerinterface_107',['BroadPhaseLayerInterface',['../class_broad_phase_layer_interface.html',1,'']]], + ['broadphaselayerinterfacemask_108',['broadphaselayerinterfacemask',['../class_broad_phase_layer_interface_mask.html',1,'BroadPhaseLayerInterfaceMask'],['../class_broad_phase_layer_interface_mask.html#a91a0c2af42acacfefdb8901fc1bc9696',1,'BroadPhaseLayerInterfaceMask::BroadPhaseLayerInterfaceMask()']]], + ['broadphaselayerinterfacemask_2eh_109',['BroadPhaseLayerInterfaceMask.h',['../_broad_phase_layer_interface_mask_8h.html',1,'']]], + ['broadphaselayerinterfacetable_110',['broadphaselayerinterfacetable',['../class_broad_phase_layer_interface_table.html#accae5298efb3880af7dd16c8ba4a9e72',1,'BroadPhaseLayerInterfaceTable::BroadPhaseLayerInterfaceTable()'],['../class_broad_phase_layer_interface_table.html',1,'BroadPhaseLayerInterfaceTable']]], + ['broadphaselayerinterfacetable_2eh_111',['BroadPhaseLayerInterfaceTable.h',['../_broad_phase_layer_interface_table_8h.html',1,'']]], + ['broadphasequadtree_112',['BroadPhaseQuadTree',['../class_broad_phase_quad_tree.html',1,'']]], + ['broadphasequadtree_2ecpp_113',['BroadPhaseQuadTree.cpp',['../_broad_phase_quad_tree_8cpp.html',1,'']]], + ['broadphasequadtree_2eh_114',['BroadPhaseQuadTree.h',['../_broad_phase_quad_tree_8h.html',1,'']]], + ['broadphasequery_115',['BroadPhaseQuery',['../class_broad_phase_query.html',1,'']]], + ['broadphasequery_2eh_116',['BroadPhaseQuery.h',['../_broad_phase_query_8h.html',1,'']]], + ['bug_20fixes_117',['bug fixes',['../md__docs_2_release_notes.html#autotoc_md20',1,'Bug fixes'],['../md__docs_2_release_notes.html#autotoc_md58',1,'Bug fixes'],['../md__docs_2_release_notes.html#autotoc_md53',1,'Bug fixes'],['../md__docs_2_release_notes.html#autotoc_md50',1,'Bug fixes'],['../md__docs_2_release_notes.html#autotoc_md47',1,'Bug fixes'],['../md__docs_2_release_notes.html#autotoc_md31',1,'Bug fixes']]], + ['build_118',['Build',['../class_a_a_b_b_tree_builder.html#a82efdb085cf7ee8b64188c28c0f854d7',1,'AABBTreeBuilder']]], + ['build_20islands_20from_20constraints_119',['Build Islands from Constraints',['../index.html#build-islands-from-constraints',1,'']]], + ['build_20tools_120',['Other Build Tools',['../md__build_2_r_e_a_d_m_e.html#autotoc_md75',1,'']]], + ['build_20types_121',['Build Types',['../md__build_2_r_e_a_d_m_e.html#autotoc_md69',1,'']]], + ['building_122',['Building',['../md__build_2_r_e_a_d_m_e.html#autotoc_md74',1,'']]], + ['building_20and_20using_20jolt_20physics_123',['Building and Using Jolt Physics',['../md__build_2_r_e_a_d_m_e.html',1,'']]], + ['buildislands_124',['buildislands',['../class_constraint.html#af62388f6f234f8cd7d24af34e49180fd',1,'Constraint::BuildIslands()'],['../class_two_body_constraint.html#ae5b2ede88a6180a8bff9fe873ff38619',1,'TwoBodyConstraint::BuildIslands()'],['../class_vehicle_constraint.html#ad04e72e964c227c63e9c2c264de269c9',1,'VehicleConstraint::BuildIslands(uint32 inConstraintIndex, IslandBuilder &ioBuilder, BodyManager &inBodyManager) override']]], + ['buildislandsplits_125',['buildislandsplits',['../class_vehicle_constraint.html#a3e1637cfc4d982db7ba9116da7986adf',1,'VehicleConstraint::BuildIslandSplits()'],['../class_constraint.html#a6388265dbe8e1a92980d796006879798',1,'Constraint::BuildIslandSplits()'],['../class_two_body_constraint.html#a19ff8913100799b94972336188ed7c7f',1,'TwoBodyConstraint::BuildIslandSplits()']]], + ['bytebuffer_126',['ByteBuffer',['../class_byte_buffer.html',1,'']]], + ['bytebuffer_2eh_127',['ByteBuffer.h',['../_byte_buffer_8h.html',1,'']]], + ['bytebuffervector_128',['ByteBufferVector',['../_byte_buffer_8h.html#add9a56154edb042637c21f9d3544bf81',1,'ByteBuffer.h']]] +]; diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 000000000..07ec19de3 --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,387 @@ +var searchData= +[ + ['cache_20contact_20removed_20callbacks_0',['Finalize Contact Cache, Contact Removed Callbacks',['../index.html#finalize-contact-cache',1,'']]], + ['calculateangularvelocity_1',['CalculateAngularVelocity',['../class_wheel_t_v.html#a91b1fa8cf9b528c3ce45a5512afc106c',1,'WheelTV']]], + ['calculatebendconstraintconstants_2',['CalculateBendConstraintConstants',['../class_soft_body_shared_settings.html#a8bfed6fd17411a0638ad963f9ed083ea',1,'SoftBodySharedSettings']]], + ['calculatebitspersampleforerror_3',['CalculateBitsPerSampleForError',['../class_height_field_shape_settings.html#afa8076803d2d512fbe625d0eb9c90811',1,'HeightFieldShapeSettings']]], + ['calculatebodyindextoconstraintindex_4',['CalculateBodyIndexToConstraintIndex',['../class_ragdoll_settings.html#a1e23b51741e51dd17319254ab2314e8f',1,'RagdollSettings']]], + ['calculateconstraintindextobodyidxpair_5',['CalculateConstraintIndexToBodyIdxPair',['../class_ragdoll_settings.html#a549e9e4d95b8bb57fa1feb91fa142002',1,'RagdollSettings']]], + ['calculateconstraintproperties_6',['calculateconstraintproperties',['../class_rotation_quat_constraint_part.html#a0c752c045f216b2d9c0570faf3f71c44',1,'RotationQuatConstraintPart::CalculateConstraintProperties()'],['../class_swing_twist_constraint_part.html#aaf0e7de8bc6c556f7d1a1d2ef4c32317',1,'SwingTwistConstraintPart::CalculateConstraintProperties()'],['../class_rotation_euler_constraint_part.html#af37f613895af10af42c71f644fe3f2f5',1,'RotationEulerConstraintPart::CalculateConstraintProperties()'],['../class_rack_and_pinion_constraint_part.html#a02dfafdb136417f096927cc6cca34b3c',1,'RackAndPinionConstraintPart::CalculateConstraintProperties()'],['../class_point_constraint_part.html#abd3afc9ccf62aea6e07029b35d718a75',1,'PointConstraintPart::CalculateConstraintProperties()'],['../class_independent_axis_constraint_part.html#a0b42c35e39bcfe122954e5a2052dfafd',1,'IndependentAxisConstraintPart::CalculateConstraintProperties()'],['../class_gear_constraint_part.html#aa3a9c219aa2baf19edc577265ae2404f',1,'GearConstraintPart::CalculateConstraintProperties()'],['../class_dual_axis_constraint_part.html#af13f5a570f5b9f26edf310cf4eab5f23',1,'DualAxisConstraintPart::CalculateConstraintProperties()'],['../class_axis_constraint_part.html#aeff890db41d91de6fddb9a2872d9e146',1,'AxisConstraintPart::CalculateConstraintProperties()'],['../class_hinge_rotation_constraint_part.html#a41471ce4cbe4f3b915ba40f883a3f924',1,'HingeRotationConstraintPart::CalculateConstraintProperties()'],['../class_angle_constraint_part.html#a4db6fb3120c161301e04ee92276544d4',1,'AngleConstraintPart::CalculateConstraintProperties(const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)']]], + ['calculateconstraintpropertieswithfrequencyanddamping_7',['calculateconstraintpropertieswithfrequencyanddamping',['../class_angle_constraint_part.html#ace82e23e9129e1c30c93134a2d75504e',1,'AngleConstraintPart::CalculateConstraintPropertiesWithFrequencyAndDamping()'],['../class_axis_constraint_part.html#a5b0fcca001a8673716a9e6acaaf030a4',1,'AxisConstraintPart::CalculateConstraintPropertiesWithFrequencyAndDamping(float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inFrequency, float inDamping)']]], + ['calculateconstraintpropertieswithmassoverride_8',['CalculateConstraintPropertiesWithMassOverride',['../class_axis_constraint_part.html#a747c6cfe29af60b2e718af65f8066712',1,'AxisConstraintPart']]], + ['calculateconstraintpropertieswithsettings_9',['calculateconstraintpropertieswithsettings',['../class_axis_constraint_part.html#a0fa7dab4d8e1aa0b78e38ba24d926a9b',1,'AxisConstraintPart::CalculateConstraintPropertiesWithSettings()'],['../class_angle_constraint_part.html#ac8eb562a067ed5596aca09e04ffc32d1',1,'AngleConstraintPart::CalculateConstraintPropertiesWithSettings(float inDeltaTime, const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, const SpringSettings &inSpringSettings)']]], + ['calculateconstraintpropertieswithstiffnessanddamping_10',['calculateconstraintpropertieswithstiffnessanddamping',['../class_angle_constraint_part.html#a13c8d05c1aef17b2edc81da4ea754404',1,'AngleConstraintPart::CalculateConstraintPropertiesWithStiffnessAndDamping()'],['../class_axis_constraint_part.html#ae8c4a8375c2a6f88e2adf1398743bed3',1,'AxisConstraintPart::CalculateConstraintPropertiesWithStiffnessAndDamping()']]], + ['calculateedgelengths_11',['CalculateEdgeLengths',['../class_soft_body_shared_settings.html#a519313d5c58141ceb18011defc5db644',1,'SoftBodySharedSettings']]], + ['calculateinertia_12',['CalculateInertia',['../_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a71aee60a0e48bbd1bd2020f47b7d7682',1,'BodyCreationSettings.h']]], + ['calculateinnerradius_13',['CalculateInnerRadius',['../class_compound_shape.html#ab1a1657fdb82a4b135872bacbca9ceaa',1,'CompoundShape']]], + ['calculatejointmatrices_14',['CalculateJointMatrices',['../class_skeleton_pose.html#a5ede20d56bfae3b3be7c26165a34fdbc',1,'SkeletonPose']]], + ['calculatejointstates_15',['CalculateJointStates',['../class_skeleton_pose.html#a39706bc656fd0c4907689bad870a45af',1,'SkeletonPose']]], + ['calculatelocalspacejointmatrices_16',['CalculateLocalSpaceJointMatrices',['../class_skeleton_pose.html#abbbb73391837675160aa67daba69c2eb',1,'SkeletonPose']]], + ['calculatelralengths_17',['CalculateLRALengths',['../class_soft_body_shared_settings.html#a6dd86b0bbeac51b146b3fcca5736510e',1,'SoftBodySharedSettings']]], + ['calculatemassandinertia_18',['calculatemassandinertia',['../class_soft_body_motion_properties.html#a9ad11aed026f33e1f26807870ccd1316',1,'SoftBodyMotionProperties::CalculateMassAndInertia()'],['../_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a945736934966a328b226aea49bb2ead6',1,'CalculateMassAndInertia: BodyCreationSettings.h']]], + ['calculatenormalandcentroid_19',['CalculateNormalAndCentroid',['../class_convex_hull_builder_1_1_face.html#a96233d9beb894b8c85c834b13868a4e1',1,'ConvexHullBuilder::Face']]], + ['calculateparentjointindices_20',['CalculateParentJointIndices',['../class_skeleton.html#a79ade25d7ec74a8bd21c87062844e21e',1,'Skeleton']]], + ['calculatesahcost_21',['CalculateSAHCost',['../class_a_a_b_b_tree_builder_1_1_node.html#af66f1c559bb11897ba3d2d996b931e5d',1,'AABBTreeBuilder::Node']]], + ['calculateskinnedconstraintnormals_22',['CalculateSkinnedConstraintNormals',['../class_soft_body_shared_settings.html#a4a2fd7676a705063111d0f429d2bdce9',1,'SoftBodySharedSettings']]], + ['calculatesolversteps_23',['calculatesolversteps',['../class_calculate_solver_steps.html#a0729dfc06ab52170861d1494fe051087',1,'CalculateSolverSteps::CalculateSolverSteps()'],['../class_calculate_solver_steps.html',1,'CalculateSolverSteps']]], + ['calculatesolversteps_2eh_24',['CalculateSolverSteps.h',['../_calculate_solver_steps_8h.html',1,'']]], + ['calculatespringpropertieswithbias_25',['CalculateSpringPropertiesWithBias',['../class_spring_part.html#a75d1d4a45e975a5b9b0ad99525c9f52f',1,'SpringPart']]], + ['calculatespringpropertieswithfrequencyanddamping_26',['CalculateSpringPropertiesWithFrequencyAndDamping',['../class_spring_part.html#a0414048df549022dee152c2b18b31126',1,'SpringPart']]], + ['calculatespringpropertieswithstiffnessanddamping_27',['CalculateSpringPropertiesWithStiffnessAndDamping',['../class_spring_part.html#a318ab5426c6b10a8ceebd3258144d20a',1,'SpringPart']]], + ['calculatetorqueratio_28',['CalculateTorqueRatio',['../class_vehicle_differential_settings.html#adcf68680b07ae1a917bfa0a9ff0be829',1,'VehicleDifferentialSettings']]], + ['calculatevolumeconstraintvolumes_29',['CalculateVolumeConstraintVolumes',['../class_soft_body_shared_settings.html#a6541281d6fc5bd27579b71774fd4745a',1,'SoftBodySharedSettings']]], + ['calculateworldspaceboundsinternal_30',['CalculateWorldSpaceBoundsInternal',['../class_body.html#a1aace226a07f37492739bf10fd16a720',1,'Body']]], + ['callbacks_31',['Finalize Contact Cache, Contact Removed Callbacks',['../index.html#finalize-contact-cache',1,'']]], + ['canallocate_32',['CanAllocate',['../class_temp_allocator_impl.html#ac698ca89fe759ecd74899cd93d4028a6',1,'TempAllocatorImpl']]], + ['canbeexecuted_33',['CanBeExecuted',['../class_job_system_1_1_job.html#aaa223bb40f3b9a54e69440ae309a661f',1,'JobSystem::Job']]], + ['canbekinematicordynamic_34',['CanBeKinematicOrDynamic',['../class_body.html#a97addaa630b716fbc5b21ba19fdcf6ec',1,'Body']]], + ['canbeupdated_35',['CanBeUpdated',['../class_quad_tree.html#aa88f08218784b62ffdf8596c74f690d6',1,'QuadTree']]], + ['cancelvelocitytowardssteepslopes_36',['CancelVelocityTowardsSteepSlopes',['../class_character_virtual.html#a1e8c56bb848a852be4e63806fe6a74c6',1,'CharacterVirtual']]], + ['cancollide_37',['cancollide',['../class_collision_group.html#aa7e60aa0b9f6e5563ab4ca690c8e2b56',1,'CollisionGroup::CanCollide()'],['../class_group_filter.html#a92d09279f5e311f401635dcb868ba838',1,'GroupFilter::CanCollide()'],['../class_group_filter_table.html#a9a654e5e8db25dc647563a10a47d3ab4',1,'GroupFilterTable::CanCollide()']]], + ['cangularvelocitytorpm_38',['cAngularVelocityToRPM',['../class_vehicle_engine.html#a0e023a5dd52ec73e3fc43071e52296b2',1,'VehicleEngine']]], + ['canmapjoint_39',['CanMapJoint',['../class_skeleton_mapper.html#a6d56bcd1cbaecd9f2b9013e6e04b7bf8',1,'SkeletonMapper']]], + ['cannotsleep_40',['CannotSleep',['../_motion_properties_8h.html#a97f69c4b07965ef22ebe08465e1c3db0af6565583dd53a537e5c7376048299104',1,'MotionProperties.h']]], + ['canscaleberotated_41',['CanScaleBeRotated',['../namespace_scale_helpers.html#a024fa9a3c672218ce6b7aaa97d953ae1',1,'ScaleHelpers']]], + ['cansleep_42',['CanSleep',['../_motion_properties_8h.html#a97f69c4b07965ef22ebe08465e1c3db0a93264bf5e739b984ef79c2fbc76863c6',1,'MotionProperties.h']]], + ['canwalkstairs_43',['CanWalkStairs',['../class_character_virtual.html#af44f8072c8e2687bbc20452b608fc5fe',1,'CharacterVirtual']]], + ['capacity_44',['capacity',['../class_array.html#a42a530879c2fc250dfffdb6cfb275846',1,'Array::capacity()'],['../class_static_array.html#a1313d0f5827afac5751b7a0a6fc23f83',1,'StaticArray::capacity() const'],['../class_static_array.html#a3266e60197f5c0faa753dd24dc2ef491',1,'StaticArray::Capacity']]], + ['capsule_45',['Capsule',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba4880c0f12c06dd6d142e7a40b041bf1a',1,'Shape.h']]], + ['capsulenoconvex_46',['capsulenoconvex',['../class_capsule_shape_1_1_capsule_no_convex.html#a19beb7b16e30ad38c472ef12f35debce',1,'CapsuleShape::CapsuleNoConvex::CapsuleNoConvex()'],['../class_capsule_shape_1_1_capsule_no_convex.html',1,'CapsuleShape::CapsuleNoConvex']]], + ['capsuleshape_47',['capsuleshape',['../class_capsule_shape.html#ab5b3085112fe4348a5831f9e94441f7c',1,'CapsuleShape::CapsuleShape(float inHalfHeightOfCylinder, float inRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_capsule_shape.html#a28722612eca063d47b2e99c5d1a2e16c',1,'CapsuleShape::CapsuleShape(const CapsuleShapeSettings &inSettings, ShapeResult &outResult)'],['../class_capsule_shape.html',1,'CapsuleShape'],['../class_capsule_shape.html#acd06172be8b996ff941844f1aa3ce35b',1,'CapsuleShape::CapsuleShape()']]], + ['capsuleshape_2ecpp_48',['CapsuleShape.cpp',['../_capsule_shape_8cpp.html',1,'']]], + ['capsuleshape_2eh_49',['CapsuleShape.h',['../_capsule_shape_8h.html',1,'']]], + ['capsuleshapesettings_50',['CapsuleShapeSettings',['../class_capsule_shape_settings.html',1,'']]], + ['capsulewithconvex_51',['capsulewithconvex',['../class_capsule_shape_1_1_capsule_with_convex.html',1,'CapsuleShape::CapsuleWithConvex'],['../class_capsule_shape_1_1_capsule_with_convex.html#ab43fab2b559ee221f84cfff5038aba0d',1,'CapsuleShape::CapsuleWithConvex::CapsuleWithConvex()']]], + ['cast_52',['cast',['../class_cast_convex_vs_triangles.html#a50f5c573fd6198c72639e72cde71ca96',1,'CastConvexVsTriangles::Cast()'],['../class_cast_sphere_vs_triangles.html#ade8de510194b2a8bed2474f3b9605a80',1,'CastSphereVsTriangles::Cast()']]], + ['castaabox_53',['castaabox',['../class_broad_phase_brute_force.html#a56f59ffbc87333de2af4c7d995a048a3',1,'BroadPhaseBruteForce::CastAABox()'],['../class_broad_phase_quad_tree.html#abff5df5af5ebe792ad05fec8d7e8beb2',1,'BroadPhaseQuadTree::CastAABox()'],['../class_broad_phase_query.html#a8df87b27367ff5e9911f7966359d326a',1,'BroadPhaseQuery::CastAABox()'],['../class_quad_tree.html#aa28951f663c136f9b3faee823393cc1b',1,'QuadTree::CastAABox()']]], + ['castaaboxnolock_54',['castaaboxnolock',['../class_broad_phase.html#a324830206fb4032c6a6670fea6c15143',1,'BroadPhase::CastAABoxNoLock()'],['../class_broad_phase_brute_force.html#a039672aad27d2a635e3f8ffccb3b7a69',1,'BroadPhaseBruteForce::CastAABoxNoLock()'],['../class_broad_phase_quad_tree.html#a91f3216a3baed7d4ee6cea9dea879d9a',1,'BroadPhaseQuadTree::CastAABoxNoLock()']]], + ['castcharacter_55',['castcharacter',['../class_character_vs_character_collision.html#acaecf7e7bdb70d2cade8e585b64a1b82',1,'CharacterVsCharacterCollision::CastCharacter()'],['../class_character_vs_character_collision_simple.html#a3b514db9cada6a4fbb66cae3d39201bf',1,'CharacterVsCharacterCollisionSimple::CastCharacter()']]], + ['castconvexvstriangles_56',['castconvexvstriangles',['../class_cast_convex_vs_triangles.html#a242808830324f2586b4d4b747dac87e5',1,'CastConvexVsTriangles::CastConvexVsTriangles()'],['../class_cast_convex_vs_triangles.html',1,'CastConvexVsTriangles']]], + ['castconvexvstriangles_2ecpp_57',['CastConvexVsTriangles.cpp',['../_cast_convex_vs_triangles_8cpp.html',1,'']]], + ['castconvexvstriangles_2eh_58',['CastConvexVsTriangles.h',['../_cast_convex_vs_triangles_8h.html',1,'']]], + ['castray_59',['castray',['../class_g_j_k_closest_point.html#ade3cde48252b6f77f749f9ac29685ec7',1,'GJKClosestPoint::CastRay()'],['../class_broad_phase_brute_force.html#aa802d83be23764261a739ad0dce2dd6d',1,'BroadPhaseBruteForce::CastRay()'],['../class_broad_phase_quad_tree.html#a15e9cc48cbd4838fb1f5f64faee99b80',1,'BroadPhaseQuadTree::CastRay()'],['../class_broad_phase_query.html#a1c74037652396c3584021f9b99341397',1,'BroadPhaseQuery::CastRay()'],['../class_quad_tree.html#a0f4c8a4eaa9c665153582c4a1e974457',1,'QuadTree::CastRay()'],['../class_narrow_phase_query.html#a820937ebfc2c8ab46daade8e007f2269',1,'NarrowPhaseQuery::CastRay(const RRayCast &inRay, RayCastResult &ioHit, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }) const'],['../class_narrow_phase_query.html#a6ef59f16467096fbb0ab9f476e15c8f3',1,'NarrowPhaseQuery::CastRay(const RRayCast &inRay, const RayCastSettings &inRayCastSettings, CastRayCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }, const ShapeFilter &inShapeFilter={ }) const'],['../class_box_shape.html#afb509d4c0094c0f58a54590e5b801a0f',1,'BoxShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_box_shape.html#a9c2aaae3c5b69a6154a5ef68b0faf764',1,'BoxShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_capsule_shape.html#a4db465fc9986e3c869fa5c0b65733403',1,'CapsuleShape::CastRay()'],['../class_convex_shape.html#af2943e795c49300d95d68950231de8a3',1,'ConvexShape::CastRay()'],['../class_convex_hull_shape.html#a4bd9f4df37b021fb520b8acfaa441794',1,'ConvexHullShape::CastRay()'],['../class_transformed_shape.html#acd5399c06080e74de7f1ad8c61f9465a',1,'TransformedShape::CastRay()'],['../class_shape.html#a955ec1953bc94c6c910dc4dc16114732',1,'Shape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const =0'],['../class_shape.html#a54b33219a3685aa4b964f6b69a2cfa7d',1,'Shape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0'],['../class_sphere_shape.html#a961b5b5d30f21ea75df8bd1ef4ea7577',1,'SphereShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_sphere_shape.html#a355bc794c757307e88159557d0f43d79',1,'SphereShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_static_compound_shape.html#a7704a962778d0a00b4f808fa448c49c5',1,'StaticCompoundShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_static_compound_shape.html#a76efaa0b18ed8367a5865ce826a1b445',1,'StaticCompoundShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_triangle_shape.html#aadffe4301ac4d7a85693978a441b6c08',1,'TriangleShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_triangle_shape.html#a6095d8ea98d3e69ea17834a82ca1126e',1,'TriangleShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_scaled_shape.html#a4687967e5d1fdceabfd3bae64584eca8',1,'ScaledShape::CastRay()'],['../class_transformed_shape.html#ae4af56e1fa6544074e06b589de4d77b9',1,'TransformedShape::CastRay()'],['../class_soft_body_shape.html#ac35d3b8df54c178044c0960d56691c9f',1,'SoftBodyShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_soft_body_shape.html#a851380d12087292cc55c87097b9afea5',1,'SoftBodyShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_capsule_shape.html#af2943e795c49300d95d68950231de8a3',1,'CapsuleShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_capsule_shape.html#ae1a5536cb1e4855bdd86433e08496b3b',1,'CapsuleShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_cylinder_shape.html#af2943e795c49300d95d68950231de8a3',1,'CylinderShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_cylinder_shape.html#ae1a5536cb1e4855bdd86433e08496b3b',1,'CylinderShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_scaled_shape.html#add12e8276eda4a003e528e1646836bec',1,'ScaledShape::CastRay()'],['../class_convex_shape.html#ae1a5536cb1e4855bdd86433e08496b3b',1,'ConvexShape::CastRay()'],['../class_cylinder_shape.html#a6685737b774a4fdbcc626aae25f27770',1,'CylinderShape::CastRay()'],['../class_height_field_shape.html#a370b1fb907c0e7e7a5b4e03eeea4a220',1,'HeightFieldShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_height_field_shape.html#a64c5d6f9050de88be123f9d35512f7a7',1,'HeightFieldShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_mesh_shape.html#a70a6a50967decae2c6bbb3b435857893',1,'MeshShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_mesh_shape.html#a6a7068bc26b41c75a7ccee0f4bf71cf2',1,'MeshShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_mutable_compound_shape.html#afd8f121a563bf40c32b8169765636a2b',1,'MutableCompoundShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_mutable_compound_shape.html#ab09749afef2d856a1a9b8834857ee5fa',1,'MutableCompoundShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_offset_center_of_mass_shape.html#a5d0b1db48c88428b7be626d822e0599b',1,'OffsetCenterOfMassShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_offset_center_of_mass_shape.html#a624b715dc926521f7865d86e932cce7d',1,'OffsetCenterOfMassShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_plane_shape.html#a3bab1a182a2fcf42c0e76a2f3842c208',1,'PlaneShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_plane_shape.html#aa1ba28d2a8910ea410a5bc0a27762179',1,'PlaneShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_rotated_translated_shape.html#ac9ed2a8c195640f6b0b65a06749b3f33',1,'RotatedTranslatedShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_rotated_translated_shape.html#a397f3571c6e9f7f027b1acd2abaaac35',1,'RotatedTranslatedShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_convex_hull_shape.html#aebdc497b84304d41defc52341ff57dee',1,'ConvexHullShape::CastRay()']]], + ['castraycollector_60',['CastRayCollector',['../_shape_8h.html#a09896ea7755d75dc0c2c3e7058a6b85b',1,'Shape.h']]], + ['castrayvisitor_61',['castrayvisitor',['../struct_compound_shape_1_1_cast_ray_visitor.html#a7adfe292a88805c33097245c07d2d529',1,'CompoundShape::CastRayVisitor::CastRayVisitor()'],['../struct_compound_shape_1_1_cast_ray_visitor.html',1,'CompoundShape::CastRayVisitor']]], + ['castrayvisitorcollector_62',['castrayvisitorcollector',['../struct_compound_shape_1_1_cast_ray_visitor_collector.html',1,'CompoundShape::CastRayVisitorCollector'],['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#af17b4ee8b0f590e72d35ced0d45563f0',1,'CompoundShape::CastRayVisitorCollector::CastRayVisitorCollector()']]], + ['castresult_2eh_63',['CastResult.h',['../_cast_result_8h.html',1,'']]], + ['castshape_64',['castshape',['../class_collision_dispatch.html#a9b0ecb3f10cdac7c5cf648cb2fa0b8e8',1,'CollisionDispatch::CastShape'],['../class_e_p_a_penetration_depth.html#a37aeff94cc5402fd0a98bb299803f543',1,'EPAPenetrationDepth::CastShape()'],['../class_g_j_k_closest_point.html#a66d20557ad6d34a1c1f29b6df058b523',1,'GJKClosestPoint::CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float &ioLambda)'],['../class_g_j_k_closest_point.html#aa5b19da7e23744cb5c1af8fe2fee2940',1,'GJKClosestPoint::CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float inConvexRadiusA, float inConvexRadiusB, float &ioLambda, Vec3 &outPointA, Vec3 &outPointB, Vec3 &outSeparatingAxis)'],['../class_narrow_phase_query.html#a5d9ab53431ed38e7d143d5cab9df08cb',1,'NarrowPhaseQuery::CastShape()'],['../class_transformed_shape.html#ab9b03e726e2992e5a4ca1df568d5ae75',1,'TransformedShape::CastShape()']]], + ['castshapebodycollector_65',['CastShapeBodyCollector',['../_broad_phase_query_8h.html#adec8e742b1ef969e096cfd4e19902353',1,'BroadPhaseQuery.h']]], + ['castshapecollector_66',['CastShapeCollector',['../_shape_8h.html#a501dee38fc3089311c7c9408ceda7401',1,'Shape.h']]], + ['castshapevisitor_67',['castshapevisitor',['../struct_compound_shape_1_1_cast_shape_visitor.html',1,'CompoundShape::CastShapeVisitor'],['../struct_compound_shape_1_1_cast_shape_visitor.html#abbd8f9db973ff8289d6e7ec10374670b',1,'CompoundShape::CastShapeVisitor::CastShapeVisitor()']]], + ['castspherevstriangles_68',['castspherevstriangles',['../class_cast_sphere_vs_triangles.html',1,'CastSphereVsTriangles'],['../class_cast_sphere_vs_triangles.html#ae273e921a49cb110b61ab9f1c1480174',1,'CastSphereVsTriangles::CastSphereVsTriangles()']]], + ['castspherevstriangles_2ecpp_69',['CastSphereVsTriangles.cpp',['../_cast_sphere_vs_triangles_8cpp.html',1,'']]], + ['castspherevstriangles_2eh_70',['CastSphereVsTriangles.h',['../_cast_sphere_vs_triangles_8h.html',1,'']]], + ['castto_71',['CastTo',['../class_r_t_t_i.html#a762f7b979423d8cbbc5aa6796611f190',1,'RTTI']]], + ['cbarrierdonestate_72',['cBarrierDoneState',['../class_job_system_1_1_job.html#a0d1be0a8e2bcb376eee7915050b17739',1,'JobSystem::Job']]], + ['cbarycentricepsilon_73',['cBarycentricEpsilon',['../class_e_p_a_convex_hull_builder.html#a637ebd7296fad44e0342a5aadfd84a5d',1,'EPAConvexHullBuilder']]], + ['cbegin_74',['cbegin',['../class_array.html#a601b37256e5fffc49ce74a8c8b997c58',1,'Array']]], + ['cbodiestosleepsize_75',['cBodiesToSleepSize',['../class_physics_system_1_1_bodies_to_sleep.html#a8653925e5e798fa5d8d1c55fc14df92b',1,'PhysicsSystem::BodiesToSleep']]], + ['cbroadphasebit_76',['cBroadPhaseBit',['../class_body_i_d.html#a934cd29a300722fea1f36408f934fb9d',1,'BodyID']]], + ['ccd_20contacts_77',['ccd contacts',['../index.html#find-ccd-contacts',1,'Find CCD Contacts'],['../index.html#resolve-ccd-contacts',1,'Resolve CCD Contacts']]], + ['ccdbody_78',['ccdbody',['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html',1,'PhysicsUpdateContext::Step::CCDBody'],['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#acee03461decafebae0a2c85eea974a82',1,'PhysicsUpdateContext::Step::CCDBody::CCDBody()']]], + ['cclampedswingymax_79',['cClampedSwingYMax',['../class_swing_twist_constraint_part.html#a480178e78f7f5c4bd4dd9043bcea0f03',1,'SwingTwistConstraintPart']]], + ['cclampedswingymin_80',['cClampedSwingYMin',['../class_swing_twist_constraint_part.html#a9b80a201af6ea27d2d35b485c88c9b0e',1,'SwingTwistConstraintPart']]], + ['cclampedswingzmax_81',['cClampedSwingZMax',['../class_swing_twist_constraint_part.html#ac96e6d6e42458d8ca8d230763c451321',1,'SwingTwistConstraintPart']]], + ['cclampedswingzmin_82',['cClampedSwingZMin',['../class_swing_twist_constraint_part.html#a808d818a63cd8380799ace91d9a2b94c',1,'SwingTwistConstraintPart']]], + ['cclampedtwistmax_83',['cClampedTwistMax',['../class_swing_twist_constraint_part.html#a6b558e5a79ffce7ef3fcc4a10df1c932',1,'SwingTwistConstraintPart']]], + ['cclampedtwistmin_84',['cClampedTwistMin',['../class_swing_twist_constraint_part.html#a52114d8a17117ba0e7db21c6d65ac317',1,'SwingTwistConstraintPart']]], + ['cdefaultcollisiontolerance_85',['cDefaultCollisionTolerance',['../_physics_settings_8h.html#a4199156431c225865fda0e5e6bc593fd',1,'PhysicsSettings.h']]], + ['cdefaultconvexradius_86',['cDefaultConvexRadius',['../_physics_settings_8h.html#aeef9aad6ecef0a70378bbe649f08720e',1,'PhysicsSettings.h']]], + ['cdefaulthalfextent_87',['cDefaultHalfExtent',['../class_plane_shape_settings.html#a581671fd5f17403723d905d380114533',1,'PlaneShapeSettings']]], + ['cdefaultpenetrationtolerance_88',['cDefaultPenetrationTolerance',['../_physics_settings_8h.html#adeaa0f0b4cc2e2de1021f3669d5d83d9',1,'PhysicsSettings.h']]], + ['cdonestate_89',['cDoneState',['../class_job_system_1_1_job.html#aa36ca70b191d31c36707cf642167b926',1,'JobSystem::Job']]], + ['cembedded_90',['cEmbedded',['../class_ref_target.html#ad37db773efa3c8756f6d95df3862b875',1,'RefTarget']]], + ['cend_91',['cend',['../class_array.html#aa33f1fdcc692237993dd9df99768ebc7',1,'Array']]], + ['center_20of_20mass_92',['Center of Mass',['../index.html#center-of-mass',1,'']]], + ['centeranglearoundzero_93',['CenterAngleAroundZero',['../_math_8h.html#a50121c6b962bb60d907d4f4c596935c4',1,'Math.h']]], + ['cexecutingstate_94',['cExecutingState',['../class_job_system_1_1_job.html#add5d0be4f40149e9b66ebaf3ed99f96b',1,'JobSystem::Job']]], + ['cfalse_95',['cFalse',['../class_d_vec3.html#afbee9e9a9f30370826e55f6c81ed9951',1,'DVec3']]], + ['cfixedtoworld_96',['cFixedToWorld',['../class_physics_scene.html#abd0015fb95f8100ef9664c9e0d191575',1,'PhysicsScene']]], + ['cgettrianglesmintrianglesrequested_97',['cGetTrianglesMinTrianglesRequested',['../class_shape.html#a69184c6cd6ddf309ee9b789300accbb6',1,'Shape']]], + ['chain_98',['chain',['../class_skeleton_mapper_1_1_chain.html',1,'SkeletonMapper::Chain'],['../class_skeleton_mapper_1_1_chain.html#aa5e326215c38ea7bd849bc4ba3b8704c',1,'SkeletonMapper::Chain::Chain()=default'],['../class_skeleton_mapper_1_1_chain.html#a064edb182617eff4faefced1027cf9ad',1,'SkeletonMapper::Chain::Chain(Array< int > &&inJointIndices1, Array< int > &&inJointIndices2)']]], + ['chainvector_99',['ChainVector',['../class_skeleton_mapper.html#a33aaf112a5908982c45a27b4c80155ea',1,'SkeletonMapper']]], + ['changes_100',['changes',['../md__docs_2_a_p_i_changes.html',1,'Breaking API Changes'],['../md__docs_2_release_notes.html#autotoc_md17',1,'Unreleased changes']]], + ['changes_20between_20v0_200_200_20and_20v1_200_200_101',['Changes between v0.0.0 and v1.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md40',1,'']]], + ['changes_20between_20v1_200_200_20and_20v1_201_200_102',['Changes between v1.0.0 and v1.1.0',['../md__docs_2_a_p_i_changes.html#autotoc_md39',1,'']]], + ['changes_20between_20v1_201_200_20and_20v2_200_200_103',['Changes between v1.1.0 and v2.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md37',1,'']]], + ['changes_20between_20v2_200_201_20and_20v3_200_200_104',['Changes between v2.0.1 and v3.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md33',1,'']]], + ['changes_20between_20v3_200_201_20and_20v4_200_200_105',['Changes between v3.0.1 and v4.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md32',1,'']]], + ['changes_20between_20v4_200_200_20and_20v4_200_202_106',['Changes between v4.0.0 and v4.0.2',['../md__docs_2_a_p_i_changes.html#autotoc_md30',1,'']]], + ['changes_20between_20v4_200_202_20and_20v5_200_200_107',['Changes between v4.0.2 and v5.0.0',['../md__docs_2_a_p_i_changes.html#autotoc_md27',1,'']]], + ['changes_20between_20v5_200_200_20and_20v5_201_200_108',['Changes between v5.0.0 and v5.1.0',['../md__docs_2_a_p_i_changes.html#autotoc_md21',1,'']]], + ['changes_20between_20v5_201_200_20and_20latest_109',['Changes between v5.1.0 and latest',['../md__docs_2_a_p_i_changes.html#autotoc_md18',1,'']]], + ['changesoffsetonpack_110',['ChangesOffsetOnPack',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a6bcee096cce9bd21231620f20ab90f10',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['character_111',['character',['../class_character.html#a7201fef809d55c2a7272634b373ead2c',1,'Character::Character()'],['../class_character.html',1,'Character'],['../md__docs_2_samples.html#autotoc_md10',1,'Character'],['../md__docs_2_release_notes.html#autotoc_md41',1,'Character'],['../md__docs_2_release_notes.html#autotoc_md26',1,'Character']]], + ['character_20controllers_112',['Character Controllers',['../index.html#character-controllers',1,'']]], + ['character_2ecpp_113',['Character.cpp',['../_character_8cpp.html',1,'']]], + ['character_2eh_114',['Character.h',['../_character_8h.html',1,'']]], + ['characterbase_115',['characterbase',['../class_character_base.html#ae105fe52be09ccb14a7e7aa57b83e8ca',1,'CharacterBase::CharacterBase()'],['../class_character_base.html',1,'CharacterBase']]], + ['characterbase_2ecpp_116',['CharacterBase.cpp',['../_character_base_8cpp.html',1,'']]], + ['characterbase_2eh_117',['CharacterBase.h',['../_character_base_8h.html',1,'']]], + ['characterbasesettings_118',['characterbasesettings',['../class_character_base_settings.html',1,'CharacterBaseSettings'],['../class_character_base_settings.html#ae04306c946170955be1189d60c562155',1,'CharacterBaseSettings::CharacterBaseSettings(const CharacterBaseSettings &inSettings)=default'],['../class_character_base_settings.html#aef4e52d5c83775b714f3c6f545ab032b',1,'CharacterBaseSettings::CharacterBaseSettings()=default']]], + ['charactercontactlistener_119',['CharacterContactListener',['../class_character_contact_listener.html',1,'']]], + ['charactercontactsettings_120',['CharacterContactSettings',['../class_character_contact_settings.html',1,'']]], + ['charactersettings_121',['CharacterSettings',['../class_character_settings.html',1,'']]], + ['charactervirtual_122',['charactervirtual',['../class_character_virtual.html',1,'CharacterVirtual'],['../class_character_virtual.html#ab1970bba46b2522707111bec95fa9e07',1,'CharacterVirtual::CharacterVirtual(const CharacterVirtualSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, PhysicsSystem *inSystem)'],['../class_character_virtual.html#a13f67f142bec57745727eb33250c1e01',1,'CharacterVirtual::CharacterVirtual(const CharacterVirtualSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, uint64 inUserData, PhysicsSystem *inSystem)']]], + ['charactervirtual_2ecpp_123',['CharacterVirtual.cpp',['../_character_virtual_8cpp.html',1,'']]], + ['charactervirtual_2eh_124',['CharacterVirtual.h',['../_character_virtual_8h.html',1,'']]], + ['charactervirtualsettings_125',['CharacterVirtualSettings',['../class_character_virtual_settings.html',1,'']]], + ['charactervscharactercollision_126',['CharacterVsCharacterCollision',['../class_character_vs_character_collision.html',1,'']]], + ['charactervscharactercollisionsimple_127',['CharacterVsCharacterCollisionSimple',['../class_character_vs_character_collision_simple.html',1,'']]], + ['checkcollision_128',['checkcollision',['../class_character.html#a1b1549f27b1b533f1b44c839ebdf3ed2',1,'Character::CheckCollision()'],['../class_character_virtual.html#ae70222c609c35c1acd94b9fc24e03681',1,'CharacterVirtual::CheckCollision()']]], + ['checkw_129',['checkw',['../class_vec3.html#a9dc70ce592b9de527bdf81b835b2e8f5',1,'Vec3::CheckW()'],['../class_d_vec3.html#a95c9295adcf9cea2990be8d4c6b71891',1,'DVec3::CheckW()']]], + ['chsgettrianglescontext_130',['chsgettrianglescontext',['../class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html#a3c02ac3528dc01b7d2450eb4e19c1d95',1,'ConvexHullShape::CHSGetTrianglesContext::CHSGetTrianglesContext()'],['../class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html',1,'ConvexHullShape::CHSGetTrianglesContext']]], + ['cinactiveindex_131',['cinactiveindex',['../class_body.html#a636e301ffa9150e9df74895863394ee4',1,'Body::cInactiveIndex'],['../class_motion_properties.html#aacb0f4e9211a3b16ae353726f0b2895b',1,'MotionProperties::cInactiveIndex']]], + ['cinvalidbodyid_132',['cInvalidBodyID',['../class_body_i_d.html#afdcec75f1be1cceeb20d728bde4d4f83',1,'BodyID']]], + ['cinvalidbodylocation_133',['cInvalidBodyLocation',['../struct_quad_tree_1_1_tracking.html#a313fd07dc88b7806204e7dd69a7b0a57',1,'QuadTree::Tracking']]], + ['cinvalidgroup_134',['cInvalidGroup',['../class_collision_group.html#a5d5f66e30eaab92fc7dd332b0fa768ad',1,'CollisionGroup']]], + ['cinvalidhandle_135',['cInvalidHandle',['../class_lock_free_hash_map.html#afba2f355a6948c3c97ed5183c0b704e9',1,'LockFreeHashMap']]], + ['cinvalidobjectindex_136',['cInvalidObjectIndex',['../class_fixed_size_free_list.html#aa52c28cff499eeeb733b9b2f421a6f80',1,'FixedSizeFreeList']]], + ['cinvalidsubgroup_137',['cInvalidSubGroup',['../class_collision_group.html#a8c7bb47aa601f240989362da21f116e8',1,'CollisionGroup']]], + ['clamp_138',['Clamp',['../_math_8h.html#a05be8f8200a1a67cbfacd3d16b17ac21',1,'Math.h']]], + ['clamp_20velocities_139',['Integrate & Clamp Velocities',['../index.html#integrate-and-clamp-velocities',1,'']]], + ['clampangularvelocity_140',['ClampAngularVelocity',['../class_motion_properties.html#a098c27b3679ec968b9400a64c53f90c9',1,'MotionProperties']]], + ['clamplinearvelocity_141',['ClampLinearVelocity',['../class_motion_properties.html#a2cc70977a90ef8a3bed8a60902f3c2db',1,'MotionProperties']]], + ['clamprpm_142',['ClampRPM',['../class_vehicle_engine.html#a10cc014bfd4c08086fc83ef73948c7ba',1,'VehicleEngine']]], + ['clampswingtwist_143',['ClampSwingTwist',['../class_swing_twist_constraint_part.html#a63a4870b93b5bb0d90555edbacbf5229',1,'SwingTwistConstraintPart']]], + ['clargeislandtreshold_144',['cLargeIslandTreshold',['../class_large_island_splitter.html#a86a79602d9b93ec4a0c5837465a70b0a',1,'LargeIslandSplitter']]], + ['clear_145',['clear',['../class_factory.html#a8797d6707e3873ad2a3482d04782dc6a',1,'Factory::Clear()'],['../class_linear_curve.html#aff2fa573a7368134091a91bd01274fca',1,'LinearCurve::Clear()'],['../class_l_f_h_m_allocator.html#add8458530312383491f936a7147a8ce3',1,'LFHMAllocator::Clear()'],['../class_lock_free_hash_map.html#afe0dc35025cb64372c9aef71ee997a0d',1,'LockFreeHashMap::Clear()'],['../class_result.html#a14eed4aba60f359e04f44980adcf6125',1,'Result::Clear()'],['../class_e_p_a_convex_hull_builder_1_1_triangle_factory.html#afbc2d65081b44d5574cdfa81e6b908ea',1,'EPAConvexHullBuilder::TriangleFactory::Clear()'],['../class_ignore_multiple_bodies_filter.html#afc300f42ae1b503867a2c2da86cecc4a',1,'IgnoreMultipleBodiesFilter::Clear()'],['../class_state_recorder_impl.html#a77d8f8732e3193c3d785845147870806',1,'StateRecorderImpl::Clear()'],['../class_array.html#aa16b46005583854b8db4570eaee59134',1,'Array::clear()'],['../class_static_array.html#a2cac2948666824fe7fee27bcf845f17b',1,'StaticArray::clear()']]], + ['clearcachedresult_146',['ClearCachedResult',['../class_shape_settings.html#aa965a759e6c4cbc43ebf0aa8bd1f2d30',1,'ShapeSettings']]], + ['clevelshift_147',['cLevelShift',['../namespace_height_field_shape_constants.html#ae34b30dc951d3c321c88b41bc4ac40e0',1,'HeightFieldShapeConstants']]], + ['clippoly_2eh_148',['ClipPoly.h',['../_clip_poly_8h.html',1,'']]], + ['clippolyvsaabox_149',['ClipPolyVsAABox',['../_clip_poly_8h.html#acce14d72c569854e088c08101fc77f9f',1,'ClipPoly.h']]], + ['clippolyvsedge_150',['ClipPolyVsEdge',['../_clip_poly_8h.html#a3091df734384a4e35e6e73df4bd3778d',1,'ClipPoly.h']]], + ['clippolyvsplane_151',['ClipPolyVsPlane',['../_clip_poly_8h.html#a1e329aac71675f1c682331399d3cc86c',1,'ClipPoly.h']]], + ['clippolyvspoly_152',['ClipPolyVsPoly',['../_clip_poly_8h.html#a16e399a850db50914749f07fa7d3e38d',1,'ClipPoly.h']]], + ['clone_153',['clone',['../class_mutable_compound_shape.html#a00b71825b8bf3d4b4dfb577b061a2576',1,'MutableCompoundShape::Clone()'],['../class_soft_body_shared_settings.html#a3fcb933a19ef5e1d717de25e040f2b4f',1,'SoftBodySharedSettings::Clone()'],['../class_height_field_shape.html#a545611b0c6e3538e9dd1948ebf0af5f6',1,'HeightFieldShape::Clone()']]], + ['closesthitcollisioncollector_154',['ClosestHitCollisionCollector',['../class_closest_hit_collision_collector.html',1,'']]], + ['closestpoint_155',['ClosestPoint',['../namespace_closest_point.html',1,'']]], + ['closestpoint_2eh_156',['ClosestPoint.h',['../_closest_point_8h.html',1,'']]], + ['cmask_157',['cMask',['../class_object_layer_pair_filter_mask.html#af117276e8e25f3424be4423d219a2a7c',1,'ObjectLayerPairFilterMask']]], + ['cmaskbitsxy_158',['cMaskBitsXY',['../namespace_height_field_shape_constants.html#a1e58ce4b74ca86c27a71f785d9a2ec35',1,'HeightFieldShapeConstants']]], + ['cmaxbodiestoputinbuffer_159',['cMaxBodiesToPutInBuffer',['../class_physics_system_1_1_bodies_to_sleep.html#aa826cc7a6730078791238beb7809ec13',1,'PhysicsSystem::BodiesToSleep']]], + ['cmaxbodyindex_160',['cMaxBodyIndex',['../class_body_i_d.html#a89af35f2dfe916c6fa348175c3fb131b',1,'BodyID']]], + ['cmaxconcurrency_161',['cMaxConcurrency',['../class_physics_update_context.html#a914eeb78829e0177ad07274a1472aa70',1,'PhysicsUpdateContext']]], + ['cmaxedgelength_162',['cMaxEdgeLength',['../class_e_p_a_convex_hull_builder.html#a745bd64c5b95a736c502901a1bd3d7c0',1,'EPAConvexHullBuilder']]], + ['cmaxheightvalue16_163',['cMaxHeightValue16',['../namespace_height_field_shape_constants.html#aa0b10266b35328efd7344f83bd4d9e8c',1,'HeightFieldShapeConstants']]], + ['cmaxphysicsbarriers_164',['cMaxPhysicsBarriers',['../_physics_settings_8h.html#a559bcb71de078738aede3ed80cd394f8',1,'PhysicsSettings.h']]], + ['cmaxphysicsjobs_165',['cMaxPhysicsJobs',['../_physics_settings_8h.html#a0db4388fe9fc48dbc7b8dd7d43f86825',1,'PhysicsSettings.h']]], + ['cmaxpoints_166',['cMaxPoints',['../class_e_p_a_convex_hull_builder.html#a6968898ef16408b14c1000bebf2f2576',1,'EPAConvexHullBuilder']]], + ['cmaxpointsinhull_167',['cMaxPointsInHull',['../class_convex_hull_shape.html#a2f25098cbaf55bf1d2768df8c8b76ebf',1,'ConvexHullShape']]], + ['cmaxsamples_168',['cMaxSamples',['../class_profile_thread.html#af045dc3280abc3cb73e0f0915bd83a5f',1,'ProfileThread']]], + ['cmaxsequencenumber_169',['cMaxSequenceNumber',['../class_body_i_d.html#ab397b404a7a9ab8ea97bfd5e2e70ce11',1,'BodyID']]], + ['cmaxskinweights_170',['cMaxSkinWeights',['../class_soft_body_shared_settings_1_1_skinned.html#aa786a1f3525e03f942e6915f1a7bd149',1,'SoftBodySharedSettings::Skinned']]], + ['cmaxtriangles_171',['cMaxTriangles',['../class_e_p_a_convex_hull_builder.html#a4513da2adce7a49aff9314455b8e669d',1,'EPAConvexHullBuilder']]], + ['cmintrianglearea_172',['cMinTriangleArea',['../class_e_p_a_convex_hull_builder.html#a4aa8fa12b1aa66a498dcca309be791bb',1,'EPAConvexHullBuilder']]], + ['cnocollisionvalue_173',['cNoCollisionValue',['../namespace_height_field_shape_constants.html#ab430dbc1ec621a77f590c281791c0922',1,'HeightFieldShapeConstants']]], + ['cnocollisionvalue16_174',['cNoCollisionValue16',['../namespace_height_field_shape_constants.html#ac7f85b459fc57cd090cdd118a0072d4b',1,'HeightFieldShapeConstants']]], + ['cnomaxslopeangle_175',['cNoMaxSlopeAngle',['../class_character_base.html#a32bda1f36a6c2ba0eb1fec77dfcbb078',1,'CharacterBase']]], + ['cnonparallelsplitidx_176',['cNonParallelSplitIdx',['../class_large_island_splitter.html#ada535de30d7ab4bdb2bc630b7b28d81f',1,'LargeIslandSplitter']]], + ['cnumbits_177',['cNumBits',['../class_object_layer_pair_filter_mask.html#a76aefde878b262fd96c67a0a98862663',1,'ObjectLayerPairFilterMask']]], + ['cnumbitsxy_178',['cNumBitsXY',['../namespace_height_field_shape_constants.html#a19db7caf3f2b0d72c438471292289306',1,'HeightFieldShapeConstants']]], + ['cnumsplits_179',['cNumSplits',['../class_large_island_splitter.html#a5280cc4c5d98d6e65f339c7187c7cc80',1,'LargeIslandSplitter']]], + ['collectfaces_180',['CollectFaces',['../_collect_faces_mode_8h.html#a43f9b52c7b53fe169fd83842e75935b6a745d09152cc2f19f8d94f805226bae7e',1,'CollectFacesMode.h']]], + ['collectfacesmode_2eh_181',['CollectFacesMode.h',['../_collect_faces_mode_8h.html',1,'']]], + ['collecttransformedshapes_182',['collecttransformedshapes',['../class_rotated_translated_shape.html#a99bfa78dc0fc1967212e73dd3894f648',1,'RotatedTranslatedShape::CollectTransformedShapes()'],['../class_narrow_phase_query.html#a9cb6ed9faecacb191cb15088e6c0de1e',1,'NarrowPhaseQuery::CollectTransformedShapes()'],['../class_mutable_compound_shape.html#a1d0db8584b022b03077a13f3d632e22c',1,'MutableCompoundShape::CollectTransformedShapes()'],['../class_offset_center_of_mass_shape.html#a188ffe92a93f632954f03730fc1f1aed',1,'OffsetCenterOfMassShape::CollectTransformedShapes()'],['../class_scaled_shape.html#a1a005f193965690c37b87fc7365f962a',1,'ScaledShape::CollectTransformedShapes()'],['../class_shape.html#a3ed865e7eb30221b418cfd61d1430173',1,'Shape::CollectTransformedShapes()'],['../class_static_compound_shape.html#a48ff6b3a60b5da73dfac93fb8d1318bc',1,'StaticCompoundShape::CollectTransformedShapes()'],['../class_transformed_shape.html#a5379d6bf4807440be14c96829e7fa5bd',1,'TransformedShape::CollectTransformedShapes()']]], + ['collecttransformedshapesvisitor_183',['collecttransformedshapesvisitor',['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a68b2dd66eeaafdf0fcb240f1bfd66b44',1,'CompoundShape::CollectTransformedShapesVisitor::CollectTransformedShapesVisitor()'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html',1,'CompoundShape::CollectTransformedShapesVisitor']]], + ['collide_184',['collide',['../class_collide_convex_vs_triangles.html#ab9cbc3709c7d17d812ca1eba57f8f436',1,'CollideConvexVsTriangles::Collide()'],['../class_vehicle_collision_tester.html#a2af9d0d5ab81d3321133ec0b408752b7',1,'VehicleCollisionTester::Collide()'],['../class_collide_sphere_vs_triangles.html#af95dc49f0b89ed30a49892cf5b881aa0',1,'CollideSphereVsTriangles::Collide()'],['../class_vehicle_collision_tester_ray.html#abd279ac97d41c77e78c3a2db35cfc874',1,'VehicleCollisionTesterRay::Collide()'],['../class_vehicle_collision_tester_cast_sphere.html#a90248c4019ec139a1a6519d87b50e30f',1,'VehicleCollisionTesterCastSphere::Collide()'],['../class_vehicle_collision_tester_cast_cylinder.html#abdc5564939bc37738299098769cbbcbc',1,'VehicleCollisionTesterCastCylinder::Collide()'],['../index.html#soft-body-collide',1,'Soft Body Collide']]], + ['collideaabox_185',['collideaabox',['../class_quad_tree.html#a894acaffc70d6ef992626359b3c65284',1,'QuadTree::CollideAABox()'],['../class_broad_phase_query.html#a4a63335c1c6b386af32b22d4e74dbf5a',1,'BroadPhaseQuery::CollideAABox()'],['../class_broad_phase_quad_tree.html#ababb4885596fb1dd266438a0d57fe16f',1,'BroadPhaseQuadTree::CollideAABox()'],['../class_broad_phase_brute_force.html#a942ee7721ab6b973d1ff0f84c5ec3c39',1,'BroadPhaseBruteForce::CollideAABox()']]], + ['collidecharacter_186',['collidecharacter',['../class_character_vs_character_collision_simple.html#a7785735e8caff3effb04f2325d661d46',1,'CharacterVsCharacterCollisionSimple::CollideCharacter()'],['../class_character_vs_character_collision.html#a1336885e4964801d0812b3089faa674b',1,'CharacterVsCharacterCollision::CollideCharacter()']]], + ['collidecompoundvsshapevisitor_187',['collidecompoundvsshapevisitor',['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#aadc26efc419ef5f50163fcbb07d7d404',1,'CompoundShape::CollideCompoundVsShapeVisitor::CollideCompoundVsShapeVisitor()'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html',1,'CompoundShape::CollideCompoundVsShapeVisitor']]], + ['collideconvexvstriangles_188',['collideconvexvstriangles',['../class_collide_convex_vs_triangles.html#ade596a8c8b3a18d72739ead25ef0e569',1,'CollideConvexVsTriangles::CollideConvexVsTriangles()'],['../class_collide_convex_vs_triangles.html',1,'CollideConvexVsTriangles']]], + ['collideconvexvstriangles_2ecpp_189',['CollideConvexVsTriangles.cpp',['../_collide_convex_vs_triangles_8cpp.html',1,'']]], + ['collideconvexvstriangles_2eh_190',['CollideConvexVsTriangles.h',['../_collide_convex_vs_triangles_8h.html',1,'']]], + ['collideonlywithactive_191',['CollideOnlyWithActive',['../_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183a505c6aab0af57196fa3df673d7325917',1,'ActiveEdgeMode.h']]], + ['collideorientedbox_192',['collideorientedbox',['../class_quad_tree.html#a3bcf63c8fc180d29f75794e979399756',1,'QuadTree::CollideOrientedBox()'],['../class_broad_phase_query.html#aeec59baf944dd3f63f172dbf732768b2',1,'BroadPhaseQuery::CollideOrientedBox()'],['../class_broad_phase_quad_tree.html#a0b2255def43618e472f268d426596a46',1,'BroadPhaseQuadTree::CollideOrientedBox()'],['../class_broad_phase_brute_force.html#a7e8ac19b326adf19996bd1288089018b',1,'BroadPhaseBruteForce::CollideOrientedBox()']]], + ['collidepoint_193',['collidepoint',['../class_sphere_shape.html#ab8223102d141ca2fda0343ddfcb07ab4',1,'SphereShape::CollidePoint()'],['../class_broad_phase_brute_force.html#af8ccb4b811426b36bfb2e51e1e61b92b',1,'BroadPhaseBruteForce::CollidePoint()'],['../class_broad_phase_quad_tree.html#af5143b02d37873e6527da51ca6af9255',1,'BroadPhaseQuadTree::CollidePoint()'],['../class_static_compound_shape.html#ab2e2ccd7bd10816f6f919ca6aa3a405e',1,'StaticCompoundShape::CollidePoint()'],['../class_tapered_cylinder_shape.html#a369ff304ba00c6f9a8165ce7bc19d7ea',1,'TaperedCylinderShape::CollidePoint()'],['../class_triangle_shape.html#a30e75a8329213c0df77088b28af7858d',1,'TriangleShape::CollidePoint()'],['../class_transformed_shape.html#ad589cfe7574f79645c39f917e15aff08',1,'TransformedShape::CollidePoint()'],['../class_soft_body_shape.html#ada1aa746b6692793aa8658a316967bb3',1,'SoftBodyShape::CollidePoint()'],['../class_offset_center_of_mass_shape.html#a2acee14056b7beb439004b66f9f76c13',1,'OffsetCenterOfMassShape::CollidePoint()'],['../class_broad_phase_query.html#a191877420623144ad7ba7a78db56baa9',1,'BroadPhaseQuery::CollidePoint()'],['../class_quad_tree.html#ab5538217d4a9a42986da28d64b65740d',1,'QuadTree::CollidePoint()'],['../class_narrow_phase_query.html#afcfabe1320517d1bdc956cded95f0f8a',1,'NarrowPhaseQuery::CollidePoint()'],['../class_box_shape.html#ac79f1b2e03b7c9c374f8f8dbeb3104bb',1,'BoxShape::CollidePoint()'],['../class_capsule_shape.html#a8474d2a38ac14d1d950829f284a0ca97',1,'CapsuleShape::CollidePoint()'],['../class_convex_hull_shape.html#a735042a5743c3f86f5a57efdf0326c85',1,'ConvexHullShape::CollidePoint()'],['../class_convex_shape.html#a6257c07e716aa0654965b5a72ac31d39',1,'ConvexShape::CollidePoint()'],['../class_cylinder_shape.html#ae24a72e2cc4218687cd7ab1bc1baaa4a',1,'CylinderShape::CollidePoint()'],['../class_height_field_shape.html#a3dd607a4ac0f540c51a60e49cf84e224',1,'HeightFieldShape::CollidePoint()'],['../class_mesh_shape.html#a9f8a2bd04e4f014f21cf5da738909fa1',1,'MeshShape::CollidePoint()'],['../class_mutable_compound_shape.html#aa145b08202a26df921533b5f2db9f55f',1,'MutableCompoundShape::CollidePoint()'],['../class_plane_shape.html#a1c5ada52854f738733c1820abd848888',1,'PlaneShape::CollidePoint()'],['../class_rotated_translated_shape.html#ae878ff562cc8dbd769853db0b1fa7271',1,'RotatedTranslatedShape::CollidePoint()'],['../class_scaled_shape.html#ae5cef908731fb835103a01b2089aa361',1,'ScaledShape::CollidePoint()'],['../class_shape.html#af6e77d16736434769d72152bf059a126',1,'Shape::CollidePoint()']]], + ['collidepointcollector_194',['CollidePointCollector',['../_shape_8h.html#aebaf36faa66f5b466411acbe12342d70',1,'Shape.h']]], + ['collidepointresult_195',['CollidePointResult',['../class_collide_point_result.html',1,'']]], + ['collidepointresult_2eh_196',['CollidePointResult.h',['../_collide_point_result_8h.html',1,'']]], + ['collidepointvisitor_197',['collidepointvisitor',['../struct_compound_shape_1_1_collide_point_visitor.html',1,'CompoundShape::CollidePointVisitor'],['../struct_compound_shape_1_1_collide_point_visitor.html#a832d09b2ee2731828915fb29183b5960',1,'CompoundShape::CollidePointVisitor::CollidePointVisitor()']]], + ['collidesettingsbase_198',['CollideSettingsBase',['../class_collide_settings_base.html',1,'']]], + ['collideshape_199',['collideshape',['../class_narrow_phase_query.html#a6874ff06a6884c2706a1bbf8ed2590a8',1,'NarrowPhaseQuery::CollideShape()'],['../class_collision_dispatch.html#ad1a72bfcb8688f4eaf881aad847c2319',1,'CollisionDispatch::CollideShape'],['../class_transformed_shape.html#ad302129a3ff14b43463ec6514a79f988',1,'TransformedShape::CollideShape()']]], + ['collideshape_2eh_200',['CollideShape.h',['../_collide_shape_8h.html',1,'']]], + ['collideshapebodycollector_201',['CollideShapeBodyCollector',['../_broad_phase_query_8h.html#acb6931761cab44f04e48cfb6ebc7fa7b',1,'BroadPhaseQuery.h']]], + ['collideshapecollector_202',['CollideShapeCollector',['../_shape_8h.html#af33744a7638d2c8e3ba97737b069f8d2',1,'Shape.h']]], + ['collideshaperesult_203',['collideshaperesult',['../class_collide_shape_result.html#a7fe57d79718e199535fa4d9601e646ff',1,'CollideShapeResult::CollideShapeResult()=default'],['../class_collide_shape_result.html#a89e76885c988cdc177f121c6bb18801d',1,'CollideShapeResult::CollideShapeResult(Vec3Arg inContactPointOn1, Vec3Arg inContactPointOn2, Vec3Arg inPenetrationAxis, float inPenetrationDepth, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2)'],['../class_collide_shape_result.html',1,'CollideShapeResult']]], + ['collideshapesettings_204',['CollideShapeSettings',['../class_collide_shape_settings.html',1,'']]], + ['collideshapevscompoundvisitor_205',['collideshapevscompoundvisitor',['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#af99172bf5598b022f42e3b071d7dd7e9',1,'CompoundShape::CollideShapeVsCompoundVisitor::CollideShapeVsCompoundVisitor()'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html',1,'CompoundShape::CollideShapeVsCompoundVisitor']]], + ['collidesoftbodyvertices_206',['collidesoftbodyvertices',['../class_scaled_shape.html#a53065cdbb98b72f751b2a7349172a1eb',1,'ScaledShape::CollideSoftBodyVertices()'],['../class_convex_hull_shape.html#ad18b9b99f430af79e5d4ea67a90cb9fd',1,'ConvexHullShape::CollideSoftBodyVertices()'],['../class_soft_body_shape.html#a7bba88197d25665160207c137e9a741e',1,'SoftBodyShape::CollideSoftBodyVertices()'],['../class_triangle_shape.html#af59dc4e9b420698bca4944751a866627',1,'TriangleShape::CollideSoftBodyVertices()'],['../class_tapered_cylinder_shape.html#aa9bc27b1e8dd94f290a9ab497d755365',1,'TaperedCylinderShape::CollideSoftBodyVertices()'],['../class_tapered_capsule_shape.html#ab88253790d7cff61bd92d7cf317092eb',1,'TaperedCapsuleShape::CollideSoftBodyVertices()'],['../class_sphere_shape.html#a6a1d356c6756e27d8a6780fc56c5717c',1,'SphereShape::CollideSoftBodyVertices()'],['../class_shape.html#ac351f347171376cd988ec415748a78ff',1,'Shape::CollideSoftBodyVertices()'],['../class_mesh_shape.html#aa27e85bf5246ff4d4456b42164eb8c62',1,'MeshShape::CollideSoftBodyVertices()'],['../class_rotated_translated_shape.html#ace49d7035c03331da9999356bbc5b574',1,'RotatedTranslatedShape::CollideSoftBodyVertices()'],['../class_box_shape.html#a959bd34253ac2ce5b13986ee2e1da393',1,'BoxShape::CollideSoftBodyVertices()'],['../class_capsule_shape.html#a86ec075742fb7f9f617b81216ff59e68',1,'CapsuleShape::CollideSoftBodyVertices()'],['../class_compound_shape.html#add02d7783abadeb5c303c55aae10c11b',1,'CompoundShape::CollideSoftBodyVertices()'],['../class_cylinder_shape.html#a22b362194bf9ad37d323ac646bc271be',1,'CylinderShape::CollideSoftBodyVertices()'],['../class_plane_shape.html#a87873f0ba100b55cd2f53e4edd4873ae',1,'PlaneShape::CollideSoftBodyVertices()'],['../class_offset_center_of_mass_shape.html#aea5299762988ab387c53e4a071342477',1,'OffsetCenterOfMassShape::CollideSoftBodyVertices()'],['../class_height_field_shape.html#aa521e6c10159a6cd54075b45ac0e2371',1,'HeightFieldShape::CollideSoftBodyVertices()']]], + ['collidesoftbodyverticesvstriangles_207',['collidesoftbodyverticesvstriangles',['../class_collide_soft_body_vertices_vs_triangles.html',1,'CollideSoftBodyVerticesVsTriangles'],['../class_collide_soft_body_vertices_vs_triangles.html#a801e7995617c6fb1b447d75fd703ed4b',1,'CollideSoftBodyVerticesVsTriangles::CollideSoftBodyVerticesVsTriangles()']]], + ['collidesoftbodyverticesvstriangles_2eh_208',['CollideSoftBodyVerticesVsTriangles.h',['../_collide_soft_body_vertices_vs_triangles_8h.html',1,'']]], + ['collidesphere_209',['collidesphere',['../class_quad_tree.html#ab83e557e1224ba241789ce7d7da982de',1,'QuadTree::CollideSphere()'],['../class_broad_phase_query.html#afb74ce9d61cf7048e3ea8a48a2997d38',1,'BroadPhaseQuery::CollideSphere()'],['../class_broad_phase_quad_tree.html#ae7611ff0242bf2fa18f035db22a28d5a',1,'BroadPhaseQuadTree::CollideSphere()'],['../class_broad_phase_brute_force.html#a1550bc80cf969b9db8c1acc327902b00',1,'BroadPhaseBruteForce::CollideSphere()']]], + ['collidespherevstriangles_210',['collidespherevstriangles',['../class_collide_sphere_vs_triangles.html',1,'CollideSphereVsTriangles'],['../class_collide_sphere_vs_triangles.html#a5201a21ae7222f10f6bb06b0c4e70bbb',1,'CollideSphereVsTriangles::CollideSphereVsTriangles()']]], + ['collidespherevstriangles_2ecpp_211',['CollideSphereVsTriangles.cpp',['../_collide_sphere_vs_triangles_8cpp.html',1,'']]], + ['collidespherevstriangles_2eh_212',['CollideSphereVsTriangles.h',['../_collide_sphere_vs_triangles_8h.html',1,'']]], + ['collidewithall_213',['CollideWithAll',['../_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183a48ac126dfa7b1b9eeeb736b03305ad48',1,'ActiveEdgeMode.h']]], + ['collidewithbackfaces_214',['CollideWithBackFaces',['../_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70a7a77865372b008d1495ee006663e08ab',1,'BackFaceMode.h']]], + ['colliding_215',['Colliding',['../class_e_p_a_penetration_depth.html#aab59ecfbbefc06c5ac96f9cdc24252d0ae0f4d0dafbcf08dd28d80154056ad0d8',1,'EPAPenetrationDepth']]], + ['collision_20detection_216',['collision detection',['../index.html#collision-detection',1,'Collision Detection'],['../md__docs_2_release_notes.html#autotoc_md43',1,'Collision Detection'],['../index.html#continuous-collision-detection',1,'Continuous Collision Detection']]], + ['collision_20filtering_217',['Collision Filtering',['../index.html#collision-filtering',1,'']]], + ['collisioncollector_218',['collisioncollector',['../class_collision_collector.html',1,'CollisionCollector< ResultTypeArg, TraitsType >'],['../class_collision_collector.html#a9ece66bb7cac504d660f412ded03e024',1,'CollisionCollector::CollisionCollector(const CollisionCollector< ResultTypeArg, TraitsType > &inRHS)=default'],['../class_collision_collector.html#a1da599bacd865c579f31e64676e36206',1,'CollisionCollector::CollisionCollector()=default'],['../class_collision_collector.html#a7d7b02e890a7ea24b0030027ce4851f9',1,'CollisionCollector::CollisionCollector(const CollisionCollector< ResultTypeArg2, TraitsType > &inRHS)']]], + ['collisioncollector_2eh_219',['CollisionCollector.h',['../_collision_collector_8h.html',1,'']]], + ['collisioncollectorimpl_2eh_220',['CollisionCollectorImpl.h',['../_collision_collector_impl_8h.html',1,'']]], + ['collisioncollectortraitscastray_221',['CollisionCollectorTraitsCastRay',['../class_collision_collector_traits_cast_ray.html',1,'']]], + ['collisioncollectortraitscastshape_222',['CollisionCollectorTraitsCastShape',['../class_collision_collector_traits_cast_shape.html',1,'']]], + ['collisioncollectortraitscollidepoint_223',['CollisionCollectorTraitsCollidePoint',['../_collision_collector_8h.html#a752023f1ea66323b2045dc2331831284',1,'CollisionCollector.h']]], + ['collisioncollectortraitscollideshape_224',['CollisionCollectorTraitsCollideShape',['../class_collision_collector_traits_collide_shape.html',1,'']]], + ['collisiondispatch_225',['CollisionDispatch',['../class_collision_dispatch.html',1,'']]], + ['collisiondispatch_2ecpp_226',['CollisionDispatch.cpp',['../_collision_dispatch_8cpp.html',1,'']]], + ['collisiondispatch_2eh_227',['CollisionDispatch.h',['../_collision_dispatch_8h.html',1,'']]], + ['collisionestimationresult_228',['CollisionEstimationResult',['../struct_collision_estimation_result.html',1,'']]], + ['collisiongroup_229',['collisiongroup',['../class_collision_group.html',1,'CollisionGroup'],['../class_collision_group.html#ad9f6cce170470d571b3927c44d7104ec',1,'CollisionGroup::CollisionGroup()=default'],['../class_collision_group.html#a5428cf2e49b467026e833c0955d35b30',1,'CollisionGroup::CollisionGroup(const GroupFilter *inFilter, GroupID inGroupID, SubGroupID inSubGroupID)']]], + ['collisiongroup_2ecpp_230',['CollisionGroup.cpp',['../_collision_group_8cpp.html',1,'']]], + ['collisiongroup_2eh_231',['CollisionGroup.h',['../_collision_group_8h.html',1,'']]], + ['collisions_232',['collisions',['../index.html#find-collisions',1,'Find Collisions'],['../index.html#ghost-collisions',1,'Ghost Collisions']]], + ['color_233',['color',['../class_color.html#ab0984656578d1e7f385df33e89b5cea3',1,'Color::Color()'],['../class_color.html',1,'Color'],['../class_color.html#a6fae8aa8b75d27cb134234e75b41caf2',1,'Color::Color()=default'],['../class_color.html#a79a97521474802216413085579b5ac25',1,'Color::Color(uint32 inColor)'],['../class_color.html#affa4da76e6fbf13ef771c90473426362',1,'Color::Color(uint8 inRed, uint8 inGreen, uint8 inBlue, uint8 inAlpha=255)'],['../class_color.html#a2f0eb176e87b5a207f349b8117695091',1,'Color::Color(ColorArg inRHS, uint8 inAlpha)']]], + ['color_2ecpp_234',['Color.cpp',['../_color_8cpp.html',1,'']]], + ['color_2eh_235',['Color.h',['../_color_8h.html',1,'']]], + ['colorarg_236',['ColorArg',['../_color_8h.html#a3daf1ee578b30da1860ff132c70474b5',1,'Color.h']]], + ['combinefunction_237',['combinefunction',['../class_contact_constraint_manager.html#ad0b40a0f57d994f32b069744541fce56',1,'ContactConstraintManager::CombineFunction'],['../class_vehicle_constraint.html#a98e6b9822af90bf4d3a513d04acd5bc8',1,'VehicleConstraint::CombineFunction']]], + ['commandline_20options_238',['Commandline options',['../md__docs_2_performance_test.html#autotoc_md3',1,'']]], + ['compilers_239',['New supported compilers',['../md__docs_2_release_notes.html#autotoc_md63',1,'']]], + ['component_5fbits_240',['COMPONENT_BITS',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a9ae76041d1be874601839088c1e62befa3e9951b9dbde0cc6bbad1d93bb559b74',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fmask_241',['COMPONENT_MASK',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a9ae76041d1be874601839088c1e62befa6423600be728f5706df8c5cd299e6784',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fx_242',['COMPONENT_X',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#ad85eb72dec6aa3c370e9ad969c46c4d2a0fce898e2e747fa56fcfe948c75bcf4c',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fy1_243',['COMPONENT_Y1',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#ad85eb72dec6aa3c370e9ad969c46c4d2adc0bffc5e83c98f99afe8fe18bdfc77e',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fy1_5fbits_244',['COMPONENT_Y1_BITS',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#ad85eb72dec6aa3c370e9ad969c46c4d2af5671f311a0c7314908173cd02da9229',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fy2_245',['COMPONENT_Y2',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#adf7b4eade64871b3f53059bdacf9aaceae4bc48542d03b13ac031fc67f9eaa79c',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fy2_5fbits_246',['COMPONENT_Y2_BITS',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#adf7b4eade64871b3f53059bdacf9aacea61adc7a5c7a546e8f686916fe0f0029a',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fz_247',['COMPONENT_Z',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#adf7b4eade64871b3f53059bdacf9aacea20bbfa39a2c203daad6afc217b354199',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['compound_248',['Compound',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a26154ea007c65f860de5333a555a56cf',1,'Shape.h']]], + ['compoundshape_249',['compoundshape',['../class_compound_shape.html#a6e087096097e738d9cb0547d1be060c9',1,'CompoundShape::CompoundShape(EShapeSubType inSubType)'],['../class_compound_shape.html#ac6d8a7e5c9f6758682f1a85437b09014',1,'CompoundShape::CompoundShape(EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)'],['../class_compound_shape.html',1,'CompoundShape']]], + ['compoundshape_2ecpp_250',['CompoundShape.cpp',['../_compound_shape_8cpp.html',1,'']]], + ['compoundshape_2eh_251',['CompoundShape.h',['../_compound_shape_8h.html',1,'']]], + ['compoundshapesettings_252',['compoundshapesettings',['../class_compound_shape_settings.html#a203d5072fa51f2c61b999cfb76ed9867',1,'CompoundShapeSettings::CompoundShapeSettings()'],['../class_compound_shape_settings.html',1,'CompoundShapeSettings']]], + ['compoundshapevisitors_2eh_253',['CompoundShapeVisitors.h',['../_compound_shape_visitors_8h.html',1,'']]], + ['cone_254',['cone',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dacd2c8bc6e5f1ea17c918ccaf89660104',1,'Cone: Constraint.h'],['../_swing_twist_constraint_part_8h.html#add9e89df628b33308461ef46e1b796b6acd2c8bc6e5f1ea17c918ccaf89660104',1,'Cone: SwingTwistConstraintPart.h']]], + ['coneconstraint_255',['coneconstraint',['../class_cone_constraint.html#a2fcce97ba85a4eba463a59524d9b9f8c',1,'ConeConstraint::ConeConstraint()'],['../class_cone_constraint.html',1,'ConeConstraint']]], + ['coneconstraint_2ecpp_256',['ConeConstraint.cpp',['../_cone_constraint_8cpp.html',1,'']]], + ['coneconstraint_2eh_257',['ConeConstraint.h',['../_cone_constraint_8h.html',1,'']]], + ['coneconstraintsettings_258',['ConeConstraintSettings',['../class_cone_constraint_settings.html',1,'']]], + ['configurationstring_2eh_259',['ConfigurationString.h',['../_configuration_string_8h.html',1,'']]], + ['configurelayer_260',['ConfigureLayer',['../class_broad_phase_layer_interface_mask.html#a01a9ec0c57462e3cda401b73edbf3573',1,'BroadPhaseLayerInterfaceMask']]], + ['conflictlist_261',['ConflictList',['../class_convex_hull_builder.html#ace24021747e9c5b273b5ed357622564c',1,'ConvexHullBuilder']]], + ['conjugated_262',['Conjugated',['../class_quat.html#ac69dfd8cdf79a19b8c3f385125ff5ddc',1,'Quat']]], + ['connectedconstraint_263',['connectedconstraint',['../class_physics_scene_1_1_connected_constraint.html#abc1ce879afcaa745d1a73d4e6a793f84',1,'PhysicsScene::ConnectedConstraint::ConnectedConstraint()'],['../class_physics_scene_1_1_connected_constraint.html',1,'PhysicsScene::ConnectedConstraint'],['../class_physics_scene_1_1_connected_constraint.html#a8bfeb5b065806f40ace0e0a28e054a0a',1,'PhysicsScene::ConnectedConstraint::ConnectedConstraint()']]], + ['const_5fiterator_264',['const_iterator',['../class_static_array.html#a4831bf13fa486b656ac85e932a829dc3',1,'StaticArray::const_iterator'],['../class_array.html#a56e441292c5696ddb5dbf22f6dc49efc',1,'Array::const_iterator']]], + ['const_5fpointer_265',['const_pointer',['../class_s_t_l_aligned_allocator.html#aebb20b18116799083cdb1c21bd5bd298',1,'STLAlignedAllocator::const_pointer'],['../class_s_t_l_allocator.html#af20979f6a464bc75ff11d09063e97ab7',1,'STLAllocator::const_pointer'],['../class_array.html#a7d73213bece8dcc069e12d49120e310d',1,'Array::const_pointer'],['../class_s_t_l_temp_allocator.html#abdc3ba35d2c24ea49e434a22eb3473da',1,'STLTempAllocator::const_pointer']]], + ['const_5freference_266',['const_reference',['../class_s_t_l_temp_allocator.html#ab5efc1d80f0e3c255c1a916474a0920d',1,'STLTempAllocator::const_reference'],['../class_array.html#ac8f52920730f4869d98d20d3b927e2f1',1,'Array::const_reference'],['../class_s_t_l_aligned_allocator.html#af511fc1b1dddec672d902e3ef16d0f39',1,'STLAlignedAllocator::const_reference'],['../class_s_t_l_allocator.html#a76d224a25fd13aab0e650c27fa0a667f',1,'STLAllocator::const_reference']]], + ['constrainaroundbinormal_267',['ConstrainAroundBinormal',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51bac47ca6b2c57b8f6f71ffc3447b2bc732',1,'PathConstraint.h']]], + ['constrainaroundnormal_268',['ConstrainAroundNormal',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51bab302156e1f72f50fcaf8f21a79175edb',1,'PathConstraint.h']]], + ['constrainaroundtangent_269',['ConstrainAroundTangent',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51bae683cb817d9b6df8318feeff63c0dc7a',1,'PathConstraint.h']]], + ['constraint_270',['constraint',['../_constraint_8h.html#a2a4cc5b25efd5f8862f80eb2f5fcdc47a5573c74299e0af37fd558445022c4b15',1,'Constraint: Constraint.h'],['../class_constraint.html#ae16420a87c4410ab9586397805c909bb',1,'Constraint::Constraint()'],['../class_constraint.html',1,'Constraint']]], + ['constraint_20motors_271',['Constraint Motors',['../index.html#constraint-motors',1,'']]], + ['constraint_2ecpp_272',['Constraint.cpp',['../_constraint_8cpp.html',1,'']]], + ['constraint_2eh_273',['Constraint.h',['../_constraint_8h.html',1,'']]], + ['constraintgroup_274',['ConstraintGroup',['../_body_manager_8h.html#af3216c8a98a28ccd29f5e19f037a59e2a76f95f1dbe57491e9abdeb1a4baa6e92',1,'BodyManager.h']]], + ['constraintmanager_275',['constraintmanager',['../class_constraint.html#ad0bf54a2be7863a42cdd8ee748f89582',1,'Constraint::ConstraintManager'],['../class_constraint_manager.html',1,'ConstraintManager']]], + ['constraintmanager_2ecpp_276',['ConstraintManager.cpp',['../_constraint_manager_8cpp.html',1,'']]], + ['constraintmanager_2eh_277',['ConstraintManager.h',['../_constraint_manager_8h.html',1,'']]], + ['constraintopath_278',['ConstrainToPath',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51ba073f41f446822810e8d12d203367a61f',1,'PathConstraint.h']]], + ['constraintorder_279',['ConstraintOrder',['../_body_manager_8h.html#af3216c8a98a28ccd29f5e19f037a59e2ae268207a2077e72a6a83030f885a1e43',1,'BodyManager.h']]], + ['constraintresult_280',['ConstraintResult',['../class_constraint_settings.html#a67f1344ed1a315ab9bb8af855d0a82b5',1,'ConstraintSettings']]], + ['constraints_281',['constraints',['../index.html#breakable-constraints',1,'Breakable Constraints'],['../index.html#build-islands-from-constraints',1,'Build Islands from Constraints'],['../md__docs_2_samples.html#autotoc_md13',1,'Constraints'],['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4aa5d083fbfc0611e061663c6b1a8ba698',1,'Constraints: StateRecorder.h'],['../_constraint_manager_8h.html#acbbaf4aa1ca19ae6a91452046a99062c',1,'Constraints: ConstraintManager.h'],['../md__docs_2_release_notes.html#autotoc_md42',1,'Constraints'],['../index.html#constraints',1,'Constraints'],['../index.html#determine-active-constraints',1,'Determine Active Constraints'],['../index.html#setup-velocity-constraints',1,'Setup Velocity Constraints'],['../index.html#solve-velocity-constraints',1,'Solve Velocity Constraints']]], + ['constraints_20update_20bodies_20broad_20phase_282',['Solve Position Constraints, Update Bodies Broad Phase',['../index.html#solve-position-constraints',1,'']]], + ['constraintsettings_283',['ConstraintSettings',['../class_constraint_settings.html',1,'']]], + ['constrainttype_284',['ConstraintType',['../_body_manager_8h.html#af3216c8a98a28ccd29f5e19f037a59e2a69d368f8d2fdfe82b285196816193865',1,'BodyManager.h']]], + ['constructcontroller_285',['constructcontroller',['../class_wheeled_vehicle_controller_settings.html#a6ab2f1877dd58bc447f4392b553bfb6a',1,'WheeledVehicleControllerSettings::ConstructController()'],['../class_tracked_vehicle_controller_settings.html#a7148f42436e98a8be5b3e877e2a52d99',1,'TrackedVehicleControllerSettings::ConstructController()'],['../class_motorcycle_controller_settings.html#a182ceaeed3e3c7f76d507ecf9ef5a4ef',1,'MotorcycleControllerSettings::ConstructController()'],['../class_vehicle_controller_settings.html#a463f96865e70f8ebecaa95b4e71a4c4d',1,'VehicleControllerSettings::ConstructController()']]], + ['constructobject_286',['ConstructObject',['../class_fixed_size_free_list.html#a54bb676ae1632d32f3f07dea3e5b4ba8',1,'FixedSizeFreeList']]], + ['constructwheel_287',['constructwheel',['../class_wheeled_vehicle_controller.html#a87526c2489ef5c417f2ef34a69d19cbb',1,'WheeledVehicleController::ConstructWheel()'],['../class_vehicle_controller.html#a67f4c989e175054bb615082afef27c45',1,'VehicleController::ConstructWheel()'],['../class_tracked_vehicle_controller.html#a66ae1eabf51f75a52b2c53f43228454d',1,'TrackedVehicleController::ConstructWheel()']]], + ['contact_288',['Contact',['../struct_character_virtual_1_1_contact.html',1,'CharacterVirtual']]], + ['contact_20cache_20contact_20removed_20callbacks_289',['Finalize Contact Cache, Contact Removed Callbacks',['../index.html#finalize-contact-cache',1,'']]], + ['contact_20listeners_290',['Soft Body Contact Listeners',['../index.html#soft-body-contact-listener',1,'']]], + ['contactallocator_291',['ContactAllocator',['../class_contact_constraint_manager_1_1_contact_allocator.html',1,'ContactConstraintManager']]], + ['contactconstraintmanager_292',['contactconstraintmanager',['../class_contact_constraint_manager.html#ad99d5188de106b071b28914b4bece25f',1,'ContactConstraintManager::ContactConstraintManager()'],['../class_contact_constraint_manager.html',1,'ContactConstraintManager']]], + ['contactconstraintmanager_2ecpp_293',['ContactConstraintManager.cpp',['../_contact_constraint_manager_8cpp.html',1,'']]], + ['contactconstraintmanager_2eh_294',['ContactConstraintManager.h',['../_contact_constraint_manager_8h.html',1,'']]], + ['contactconstraintsfull_295',['ContactConstraintsFull',['../_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1ac8ef9103ce98948ba4d14f7318cf05e2',1,'EPhysicsUpdateError.h']]], + ['contactlist_296',['ContactList',['../class_character_virtual.html#a8f4e50aacdfa032e1c4ce049c06703c0',1,'CharacterVirtual']]], + ['contactlistener_297',['ContactListener',['../class_contact_listener.html',1,'']]], + ['contactlistener_2eh_298',['ContactListener.h',['../_contact_listener_8h.html',1,'']]], + ['contactmanifold_299',['ContactManifold',['../class_contact_manifold.html',1,'']]], + ['contactpoints_300',['ContactPoints',['../_contact_listener_8h.html#ac6f5f34116f161cc13203803010c37c1',1,'ContactListener.h']]], + ['contacts_301',['contacts',['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4a9aa698f602b1e5694855cee73a683488',1,'Contacts: StateRecorder.h'],['../index.html#find-ccd-contacts',1,'Find CCD Contacts'],['../index.html#resolve-ccd-contacts',1,'Resolve CCD Contacts']]], + ['contactsettings_302',['ContactSettings',['../class_contact_settings.html',1,'']]], + ['contains_303',['contains',['../class_a_a_box.html#ae52734145d3a50ef7536bda72b553797',1,'AABox::Contains(const AABox &inOther) const'],['../class_a_a_box.html#a374d1dc1d0889a919b9c3fbaea694750',1,'AABox::Contains(Vec3Arg inOther) const'],['../class_a_a_box.html#af09ba30f5f27874bbd9f407341a2dc42',1,'AABox::Contains(DVec3Arg inOther) const']]], + ['containsface_304',['ContainsFace',['../class_convex_hull_builder.html#a423d9e378746f1e9d6edb19bb2afa11f',1,'ConvexHullBuilder']]], + ['continuous_20collision_20detection_305',['Continuous Collision Detection',['../index.html#continuous-collision-detection',1,'']]], + ['controllers_306',['Character Controllers',['../index.html#character-controllers',1,'']]], + ['controls_307',['General Controls',['../md__docs_2_samples.html#autotoc_md2',1,'']]], + ['conventions_20and_20limits_308',['Conventions and Limits',['../index.html#conventions-and-limits',1,'']]], + ['convert_309',['Convert',['../class_a_a_b_b_tree_to_buffer.html#aaabe4187b0d51fd57d3922ded7b450fc',1,'AABBTreeToBuffer']]], + ['convertrpmtoangle_310',['ConvertRPMToAngle',['../class_vehicle_engine.html#a39842ae2cd4c9520f0d194814c92d3d1',1,'VehicleEngine']]], + ['convertshapesettings_311',['ConvertShapeSettings',['../class_body_creation_settings.html#ac3bf8e14319df094679f6644f6b80e48',1,'BodyCreationSettings']]], + ['converttostring_312',['ConvertToString',['../_string_tools_8h.html#a12b5bdab675fcd7004cbf9dbf2197538',1,'StringTools.h']]], + ['convex_313',['Convex',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a766cae017fab4bcc1d1e83fbb9af87c3',1,'Shape.h']]], + ['convex_20radius_314',['Convex Radius',['../index.html#convex-radius',1,'']]], + ['convexhull_315',['ConvexHull',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba3e1ee9920ed982b5da9becaf4b5463e5',1,'Shape.h']]], + ['convexhullbuilder_316',['convexhullbuilder',['../class_convex_hull_builder.html#a245e3c9f2ac5137c9ee5d66c9f7a7b9d',1,'ConvexHullBuilder::ConvexHullBuilder()'],['../class_convex_hull_builder.html',1,'ConvexHullBuilder']]], + ['convexhullbuilder_2ecpp_317',['ConvexHullBuilder.cpp',['../_convex_hull_builder_8cpp.html',1,'']]], + ['convexhullbuilder_2eh_318',['ConvexHullBuilder.h',['../_convex_hull_builder_8h.html',1,'']]], + ['convexhullbuilder2d_319',['convexhullbuilder2d',['../class_convex_hull_builder2_d.html#ab299706e0b4a473b763116a31ff234c8',1,'ConvexHullBuilder2D::ConvexHullBuilder2D()'],['../class_convex_hull_builder2_d.html',1,'ConvexHullBuilder2D']]], + ['convexhullbuilder2d_2ecpp_320',['ConvexHullBuilder2D.cpp',['../_convex_hull_builder2_d_8cpp.html',1,'']]], + ['convexhullbuilder2d_2eh_321',['ConvexHullBuilder2D.h',['../_convex_hull_builder2_d_8h.html',1,'']]], + ['convexhullshape_322',['convexhullshape',['../class_convex_hull_shape.html#ab2c0f1f214f4542f932fc0de78ad9312',1,'ConvexHullShape::ConvexHullShape()'],['../class_convex_hull_shape.html',1,'ConvexHullShape'],['../class_convex_hull_shape.html#aad25bb2ae100d80bf90b5f2a4a3f2436',1,'ConvexHullShape::ConvexHullShape()']]], + ['convexhullshape_2ecpp_323',['ConvexHullShape.cpp',['../_convex_hull_shape_8cpp.html',1,'']]], + ['convexhullshape_2eh_324',['ConvexHullShape.h',['../_convex_hull_shape_8h.html',1,'']]], + ['convexhullshapesettings_325',['convexhullshapesettings',['../class_convex_hull_shape_settings.html',1,'ConvexHullShapeSettings'],['../class_convex_hull_shape_settings.html#a3922b9c1f60a1e6b49fd1600304ed9dd',1,'ConvexHullShapeSettings::ConvexHullShapeSettings(const Array< Vec3 > &inPoints, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_convex_hull_shape_settings.html#aa1f2ab646bf6c5b3dfed2733d59d5a3b',1,'ConvexHullShapeSettings::ConvexHullShapeSettings(const Vec3 *inPoints, int inNumPoints, float inMaxConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_convex_hull_shape_settings.html#a524da03e0e78e8bd774c322547e97e2b',1,'ConvexHullShapeSettings::ConvexHullShapeSettings()=default']]], + ['convexshape_326',['convexshape',['../class_convex_shape.html',1,'ConvexShape'],['../class_convex_shape.html#a6454ef09933ded91976c8f77bec976db',1,'ConvexShape::ConvexShape(EShapeSubType inSubType)'],['../class_convex_shape.html#a99d3262f306f702b0e6ae40ab53e6b34',1,'ConvexShape::ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial)'],['../class_convex_shape.html#a221da2b420dd837cee4aeb37dd3e7078',1,'ConvexShape::ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)']]], + ['convexshape_2ecpp_327',['ConvexShape.cpp',['../_convex_shape_8cpp.html',1,'']]], + ['convexshape_2eh_328',['ConvexShape.h',['../_convex_shape_8h.html',1,'']]], + ['convexshapesettings_329',['convexshapesettings',['../class_convex_shape_settings.html',1,'ConvexShapeSettings'],['../class_convex_shape_settings.html#a80f5baa702dc1c5733daca4f72529cd1',1,'ConvexShapeSettings::ConvexShapeSettings(const PhysicsMaterial *inMaterial)'],['../class_convex_shape_settings.html#a88a8f361fef655ab590b7bda895f6461',1,'ConvexShapeSettings::ConvexShapeSettings()=default']]], + ['convexsupport_2eh_330',['ConvexSupport.h',['../_convex_support_8h.html',1,'']]], + ['copypart_331',['copypart',['../class_vector.html#ac3bd9feb76f783d2e4168f2cf9fb3b2a',1,'Vector::CopyPart()'],['../class_matrix.html#a5e445d50e6137117917385b43e3bbe42',1,'Matrix::CopyPart()']]], + ['core_2eh_332',['Core.h',['../_core_8h.html',1,'']]], + ['cos_333',['Cos',['../_trigonometry_8h.html#a40fafb1c427199b6855d704fc79cd1cf',1,'Trigonometry.h']]], + ['count_334',['Count',['../struct_triangle_splitter_1_1_range.html#ac12fcc73a1363b85a915d255f01dd176',1,'TriangleSplitter::Range']]], + ['countandsorttrues_335',['CountAndSortTrues',['../_sort_reverse_and_store_8h.html#ac0cd431ab99bf4ad6169c0583c65675d',1,'SortReverseAndStore.h']]], + ['countbits_336',['CountBits',['../_math_8h.html#a59413d7cb307df1856ec71deb3cc1a5b',1,'Math.h']]], + ['countleadingzeros_337',['CountLeadingZeros',['../_math_8h.html#abd13b5df498e6de8a050b25766543658',1,'Math.h']]], + ['counttrailingzeros_338',['CountTrailingZeros',['../_math_8h.html#aacba3fe18847d926ab86e86dbf94d219',1,'Math.h']]], + ['counttrues_339',['CountTrues',['../class_u_vec4.html#a1b44f57941f0fd3237bc0c6ff638e91e',1,'UVec4']]], + ['create_340',['create',['../class_lock_free_hash_map.html#a9a758f6a4dbf7bb4e25bac764a948266',1,'LockFreeHashMap::Create()'],['../class_triangle_shape_settings.html#ae2a8bff03ce1978d9e0f04b97e6c7966',1,'TriangleShapeSettings::Create()'],['../class_static_compound_shape_settings.html#a354d96bbea984e976b4e0bba6d8e659a',1,'StaticCompoundShapeSettings::Create(TempAllocator &inTempAllocator) const'],['../class_static_compound_shape_settings.html#ad12438b5a92461663171c7295cc9d756',1,'StaticCompoundShapeSettings::Create() const override'],['../class_sphere_shape_settings.html#a8559852faf9a10923a7e5e0cca89d600',1,'SphereShapeSettings::Create()'],['../class_shape_settings.html#a21e53b5758542a5527c7941d61d838fa',1,'ShapeSettings::Create()'],['../class_rotated_translated_shape_settings.html#ada2d2b814d70fe2935f1cc2b6bba2382',1,'RotatedTranslatedShapeSettings::Create()'],['../class_plane_shape_settings.html#a988344346e7e5bf5253ea56c7b79ee59',1,'PlaneShapeSettings::Create()'],['../class_offset_center_of_mass_shape_settings.html#a641fb6993b220f935bed063a509acf38',1,'OffsetCenterOfMassShapeSettings::Create()'],['../class_distance_constraint_settings.html#aee6dc14294bbf16036e149724f01c6e8',1,'DistanceConstraintSettings::Create()'],['../class_mesh_shape_settings.html#a637b6c63fe4144952b553754b2463a58',1,'MeshShapeSettings::Create()'],['../class_box_shape_settings.html#a25dd77e367eb83a372690aab9c9e744a',1,'BoxShapeSettings::Create()'],['../class_convex_hull_shape_settings.html#ad3143893a432135229b6780d3ff379a2',1,'ConvexHullShapeSettings::Create()'],['../class_cylinder_shape_settings.html#a39406c7bd89e09425edf21b209a1519a',1,'CylinderShapeSettings::Create()'],['../class_height_field_shape_settings.html#aba3ca652ae38def1bcdc999738eb7b61',1,'HeightFieldShapeSettings::Create()'],['../class_mutable_compound_shape_settings.html#a3f60b9fb32be86347adb1bfafb5bfd77',1,'MutableCompoundShapeSettings::Create()'],['../class_slider_constraint_settings.html#abf465eb2615ffac5ecb0047f682a31c2',1,'SliderConstraintSettings::Create()'],['../class_cone_constraint_settings.html#ad1912e12def073c5c5c9c93fbfb76298',1,'ConeConstraintSettings::Create()'],['../class_two_body_constraint_settings.html#a42e353e736b0254b02008b050a28f55b',1,'TwoBodyConstraintSettings::Create()'],['../class_swing_twist_constraint_settings.html#af22ef48647d68461c43534fc1f808e83',1,'SwingTwistConstraintSettings::Create()'],['../class_six_d_o_f_constraint_settings.html#a81635495977742c547f592996574fada',1,'SixDOFConstraintSettings::Create()'],['../class_rack_and_pinion_constraint_settings.html#a7d110449eb5677dff23aa5199ab97929',1,'RackAndPinionConstraintSettings::Create()'],['../class_pulley_constraint_settings.html#a803fa3c6f15331888d3189918deb52f8',1,'PulleyConstraintSettings::Create()'],['../class_point_constraint_settings.html#ae907012c2cecdd8df49afe781b66c1a3',1,'PointConstraintSettings::Create()'],['../class_path_constraint_settings.html#ab49bfcf55710c49a87f060e7b4593fad',1,'PathConstraintSettings::Create()'],['../class_hinge_constraint_settings.html#a9c33cc4f73d2d92dac9b270e1e15a216',1,'HingeConstraintSettings::Create()'],['../class_gear_constraint_settings.html#a798d52ae206f83abe6a8ec362348a4a0',1,'GearConstraintSettings::Create()'],['../class_fixed_constraint_settings.html#a5633cc7f7c00e518fe57a2623b725256',1,'FixedConstraintSettings::Create()']]], + ['createandaddbody_341',['CreateAndAddBody',['../class_body_interface.html#a1484650a796607c688529fe600dc9e9f',1,'BodyInterface']]], + ['createandaddsoftbody_342',['CreateAndAddSoftBody',['../class_body_interface.html#a0424b908e93229e76b8e2577931abe3f',1,'BodyInterface']]], + ['createbarrier_343',['createbarrier',['../class_job_system.html#a2bd7c3efdc8f934b728ee1787e0bd58e',1,'JobSystem::CreateBarrier()'],['../class_job_system_single_threaded.html#ade901f3e457e5f60b071388bc6557778',1,'JobSystemSingleThreaded::CreateBarrier()'],['../class_job_system_with_barrier.html#a19401113c3246594dd83bc4563823ec5',1,'JobSystemWithBarrier::CreateBarrier()']]], + ['createbatch_344',['CreateBatch',['../class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3eab6c90a015802ce8024f5e6ce5b5f87d1',1,'DebugRendererRecorder']]], + ['createbatchindexed_345',['CreateBatchIndexed',['../class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3ea6e08a23df5a6495af4cfb4d55f9d83c4',1,'DebugRendererRecorder']]], + ['createbodies_346',['CreateBodies',['../class_physics_scene.html#a279e3c7758abc7691ab0ecf067083f1e',1,'PhysicsScene']]], + ['createbody_347',['CreateBody',['../class_body_interface.html#ae0205e33e033e932177183c7b20da0f1',1,'BodyInterface']]], + ['createbodywithid_348',['CreateBodyWithID',['../class_body_interface.html#a6ce6c1e2646429777f65e66e7a21e05b',1,'BodyInterface']]], + ['createbodywithoutid_349',['CreateBodyWithoutID',['../class_body_interface.html#abb17d2706f2ee0c0aac4c82d774bece2',1,'BodyInterface']]], + ['createconstraint_350',['CreateConstraint',['../class_body_interface.html#ac5d2f3a832968329c91af032409abc68',1,'BodyInterface']]], + ['createconstraints_351',['CreateConstraints',['../class_soft_body_shared_settings.html#a9880c4cadc96bb24402b3cf3021aff2b',1,'SoftBodySharedSettings']]], + ['creategeometry_352',['CreateGeometry',['../class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3ea5df7e8a3875ba02c58449385c4caa956',1,'DebugRendererRecorder']]], + ['createjob_353',['createjob',['../class_job_system.html#a0766c8acd5ed9ef0e6baf1c2b8f3c38b',1,'JobSystem::CreateJob()'],['../class_job_system_single_threaded.html#ac183b901c9be0f04f21ff493cb5b2ec7',1,'JobSystemSingleThreaded::CreateJob()'],['../class_job_system_thread_pool.html#aa345080efb7aec00011c102b37988fa3',1,'JobSystemThreadPool::CreateJob()']]], + ['createobject_354',['createobject',['../class_r_t_t_i.html#a97cb905567f96a8e766aa8f769394ee0',1,'RTTI::CreateObject()'],['../class_factory.html#a8952fd138cc4a7625f009fda6d47f078',1,'Factory::CreateObject()']]], + ['createragdoll_355',['CreateRagdoll',['../class_ragdoll_settings.html#a6f5c2dd947c77b071431f91a1f1b6251',1,'RagdollSettings']]], + ['createrttiplane_356',['CreateRTTIPlane',['../class_plane.html#a20fe6b1c13e76385b9ea63d022cc1c89',1,'Plane']]], + ['createsoftbody_357',['CreateSoftBody',['../class_body_interface.html#ab96c4bc3e0015772d42d48c094b72388',1,'BodyInterface']]], + ['createsoftbodywithid_358',['CreateSoftBodyWithID',['../class_body_interface.html#a06ffc5520f0460fed075bced2c4de434',1,'BodyInterface']]], + ['createsoftbodywithoutid_359',['CreateSoftBodyWithoutID',['../class_body_interface.html#ad6e464f89f991661c201fecad8dbe324',1,'BodyInterface']]], + ['createtriangle_360',['CreateTriangle',['../class_e_p_a_convex_hull_builder_1_1_triangle_factory.html#a10150659d6967c3da5444f42b257eda8',1,'EPAConvexHullBuilder::TriangleFactory']]], + ['createtrianglebatch_361',['createtrianglebatch',['../class_debug_renderer_simple.html#a159b563111495231a05b7c7143336954',1,'DebugRendererSimple::CreateTriangleBatch()'],['../class_debug_renderer_recorder.html#afa424a96fbae0b56050b27dffa2c4b02',1,'DebugRendererRecorder::CreateTriangleBatch()'],['../class_debug_renderer_simple.html#a7f93b6ccb5960002544ce00fc743dd87',1,'DebugRendererSimple::CreateTriangleBatch()'],['../class_debug_renderer_recorder.html#ad67f25e318187c3098011124ea5875a2',1,'DebugRendererRecorder::CreateTriangleBatch()'],['../class_debug_renderer.html#aaff229ea353f72b38b70771612de7ae2',1,'DebugRenderer::CreateTriangleBatch(const VertexList &inVertices, const IndexedTriangleNoMaterialList &inTriangles)'],['../class_debug_renderer.html#ac3bd1caeea7a7e42085927d729336d19',1,'DebugRenderer::CreateTriangleBatch(const Array< Vertex > &inVertices, const Array< uint32 > &inIndices)'],['../class_debug_renderer.html#ab85edd30ad2f32371df796353b6ebdca',1,'DebugRenderer::CreateTriangleBatch(const Array< Triangle > &inTriangles)'],['../class_debug_renderer.html#a8dcd601e14892e4d00a6fbb9c6781fc7',1,'DebugRenderer::CreateTriangleBatch(const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount)=0'],['../class_debug_renderer.html#a9537e347fe16d3d0c55e8409299a1979',1,'DebugRenderer::CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount)=0']]], + ['createtrianglebatchforconvex_362',['CreateTriangleBatchForConvex',['../class_debug_renderer.html#a0bad1eb221a0bb765405b76a69de51d7',1,'DebugRenderer']]], + ['createtrianglegeometryforconvex_363',['CreateTriangleGeometryForConvex',['../class_debug_renderer.html#a10539e59c9323113348a85744d1ca054',1,'DebugRenderer']]], + ['creating_20bodies_364',['Creating Bodies',['../index.html#creating-bodies',1,'']]], + ['creating_20custom_20shapes_365',['Creating Custom Shapes',['../index.html#creating-custom-shapes',1,'']]], + ['creating_20shapes_366',['Creating Shapes',['../index.html#creating-shapes',1,'']]], + ['cross_367',['cross',['../class_vec3.html#a224811af391ccfd1e05282eda22d1de8',1,'Vec3::Cross()'],['../class_d_vec3.html#adcd2e18b680e40bbd4ac71c6b0463bd3',1,'DVec3::Cross()']]], + ['csgettrianglescontext_368',['csgettrianglescontext',['../class_convex_shape_1_1_c_s_get_triangles_context.html#a894b10f5caa797d008eff4064a563b28',1,'ConvexShape::CSGetTrianglesContext::CSGetTrianglesContext()'],['../class_convex_shape_1_1_c_s_get_triangles_context.html',1,'ConvexShape::CSGetTrianglesContext']]], + ['cstacksize_369',['cStackSize',['../namespace_height_field_shape_constants.html#a37ca4958b8fd6b37a4982941ca479a85',1,'HeightFieldShapeConstants']]], + ['ctrue_370',['cTrue',['../class_d_vec3.html#a85ae33d3486f8af0b5b95d79f99acc00',1,'DVec3']]], + ['cubed_371',['Cubed',['../_math_8h.html#a6a1a326c0e5f6b61307d2458bcce0eb8',1,'Math.h']]], + ['cullbackface_372',['CullBackFace',['../class_debug_renderer.html#a54c5367f9b1f976cfe292dfa9ad2160aa770a11f4b59edd066dda0effd9752ce5',1,'DebugRenderer']]], + ['cullfrontface_373',['CullFrontFace',['../class_debug_renderer.html#a54c5367f9b1f976cfe292dfa9ad2160aac69988cb34d8fbd7f5678a95ac79e425',1,'DebugRenderer']]], + ['custom_20memory_20allocator_374',['Custom Memory Allocator',['../md__build_2_r_e_a_d_m_e.html#autotoc_md73',1,'']]], + ['custom_20shapes_375',['Creating Custom Shapes',['../index.html#creating-custom-shapes',1,'']]], + ['customupdate_376',['CustomUpdate',['../class_soft_body_motion_properties.html#ad4d7a9296f3a573698a253763391a2ef',1,'SoftBodyMotionProperties']]], + ['cvertexcollisionbatch_377',['cVertexCollisionBatch',['../class_soft_body_update_context.html#af008cc95bb849ed4b84ee656f775ead1',1,'SoftBodyUpdateContext']]], + ['cvertexconstraintbatch_378',['cVertexConstraintBatch',['../class_soft_body_update_context.html#addc053173e04c44f92ab87d88a60d23b',1,'SoftBodyUpdateContext']]], + ['cylinder_379',['cylinder',['../class_cylinder_shape_1_1_cylinder.html',1,'CylinderShape::Cylinder'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba2ec2c2961c7ce5a114d969c1f562a563',1,'Cylinder: Shape.h'],['../class_cylinder_shape_1_1_cylinder.html#a932e1101233f69024d2ba24094d3a7c2',1,'CylinderShape::Cylinder::Cylinder()']]], + ['cylindershape_380',['cylindershape',['../class_cylinder_shape.html#afcb1b0ed67b7cfbfd8d85bdad5744808',1,'CylinderShape::CylinderShape(float inHalfHeight, float inRadius, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_cylinder_shape.html#a1079164769598081f54bd33700747b57',1,'CylinderShape::CylinderShape(const CylinderShapeSettings &inSettings, ShapeResult &outResult)'],['../class_cylinder_shape.html#ada372990ab7de7c92a34c81a01cd37d5',1,'CylinderShape::CylinderShape()'],['../class_cylinder_shape.html',1,'CylinderShape']]], + ['cylindershape_2ecpp_381',['CylinderShape.cpp',['../_cylinder_shape_8cpp.html',1,'']]], + ['cylindershape_2eh_382',['CylinderShape.h',['../_cylinder_shape_8h.html',1,'']]], + ['cylindershapesettings_383',['cylindershapesettings',['../class_cylinder_shape_settings.html#a4933a4e035e0f25e3c4bacbb3a6a355c',1,'CylinderShapeSettings::CylinderShapeSettings()=default'],['../class_cylinder_shape_settings.html#ab24905d9ebd23c56f21db0233bf606e9',1,'CylinderShapeSettings::CylinderShapeSettings(float inHalfHeight, float inRadius, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_cylinder_shape_settings.html',1,'CylinderShapeSettings']]] +]; diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 000000000..755c75f05 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,143 @@ +var searchData= +[ + ['data_0',['data',['../class_array.html#a981fa99850b2f859c24c554596a19cfb',1,'Array::data() const'],['../class_array.html#a5b7aadb17c283136252c6d0c4bb92009',1,'Array::data()'],['../class_static_array.html#a7698b4e3e7cf608eeba5a48f25c284d9',1,'StaticArray::data() const'],['../class_static_array.html#a28fd92f5eed107bfaef2e94f23ce4f12',1,'StaticArray::data()']]], + ['deactivate_1',['deactivate',['../class_gear_constraint_part.html#ab05807faf3573b42a9a7a0a280aed05c',1,'GearConstraintPart::Deactivate()'],['../class_independent_axis_constraint_part.html#a75a0e94426831c24d9a05022788a33a0',1,'IndependentAxisConstraintPart::Deactivate()'],['../class_point_constraint_part.html#a79eddd21eea247c5560ab8208a627019',1,'PointConstraintPart::Deactivate()'],['../class_rack_and_pinion_constraint_part.html#ae283f92c8107a3ce86212c2885f4ea5f',1,'RackAndPinionConstraintPart::Deactivate()'],['../class_rotation_euler_constraint_part.html#ab5ff022582eb45db942a196a32795661',1,'RotationEulerConstraintPart::Deactivate()'],['../class_rotation_quat_constraint_part.html#a6fbaaa5c64ed9b01753780cbad3efb8b',1,'RotationQuatConstraintPart::Deactivate()'],['../class_swing_twist_constraint_part.html#ae76162c3dfe72782a020162752a7ccf5',1,'SwingTwistConstraintPart::Deactivate()'],['../class_hinge_rotation_constraint_part.html#a4ae072cae1beb84f1e87eafff60f0022',1,'HingeRotationConstraintPart::Deactivate()'],['../class_dual_axis_constraint_part.html#ad42c35a8c5bd8b609c1a3910a71194f6',1,'DualAxisConstraintPart::Deactivate()'],['../class_axis_constraint_part.html#a6b2103009bf467876c92689dc3fec29d',1,'AxisConstraintPart::Deactivate()'],['../class_angle_constraint_part.html#a27c8bf9c172f0d3867c1a489aa08c840',1,'AngleConstraintPart::Deactivate()']]], + ['deactivatebodies_2',['deactivatebodies',['../class_body_manager.html#ac8e13efcbe3e2fab505e2c9047f9d2ef',1,'BodyManager::DeactivateBodies()'],['../class_body_interface.html#a0dea3b8edb237b9dd29fb05da84a1331',1,'BodyInterface::DeactivateBodies(const BodyID *inBodyIDs, int inNumber)']]], + ['deactivatebody_3',['DeactivateBody',['../class_body_interface.html#a62255f9678f727b3838fc7f25d3c47e0',1,'BodyInterface']]], + ['deallocate_4',['deallocate',['../class_s_t_l_aligned_allocator.html#a7ee785ea3499d6b21ce7872cb66988eb',1,'STLAlignedAllocator::deallocate()'],['../class_s_t_l_allocator.html#aabc649e7365a3815c5f7fdd9f9d2b2df',1,'STLAllocator::deallocate()'],['../class_s_t_l_temp_allocator.html#ac9000fbc979ae4fc5f7bd9f978781128',1,'STLTempAllocator::deallocate()']]], + ['debug_20rendering_5',['Debug Rendering',['../index.html#debug-rendering',1,'']]], + ['debugrenderer_6',['debugrenderer',['../class_debug_renderer.html',1,'DebugRenderer'],['../class_debug_renderer.html#a6e3bda3b06b01b6f8e4257ef02cb435f',1,'DebugRenderer::DebugRenderer()']]], + ['debugrenderer_2ecpp_7',['DebugRenderer.cpp',['../_debug_renderer_8cpp.html',1,'']]], + ['debugrenderer_2eh_8',['DebugRenderer.h',['../_debug_renderer_8h.html',1,'']]], + ['debugrendererplayback_9',['debugrendererplayback',['../class_debug_renderer_playback.html',1,'DebugRendererPlayback'],['../class_debug_renderer_playback.html#a33c8fd5a6bbdf90c9710f5aa625ac6a4',1,'DebugRendererPlayback::DebugRendererPlayback()']]], + ['debugrendererplayback_2ecpp_10',['DebugRendererPlayback.cpp',['../_debug_renderer_playback_8cpp.html',1,'']]], + ['debugrendererplayback_2eh_11',['DebugRendererPlayback.h',['../_debug_renderer_playback_8h.html',1,'']]], + ['debugrendererrecorder_12',['debugrendererrecorder',['../class_debug_renderer_recorder.html#ae016c0c6e1951199b26be47d0e58e2e4',1,'DebugRendererRecorder::DebugRendererRecorder()'],['../class_debug_renderer_recorder.html',1,'DebugRendererRecorder']]], + ['debugrendererrecorder_2ecpp_13',['DebugRendererRecorder.cpp',['../_debug_renderer_recorder_8cpp.html',1,'']]], + ['debugrendererrecorder_2eh_14',['DebugRendererRecorder.h',['../_debug_renderer_recorder_8h.html',1,'']]], + ['debugrenderersimple_15',['debugrenderersimple',['../class_debug_renderer_simple.html#a9af1945bf20facfc39310fff5b692d9b',1,'DebugRendererSimple::DebugRendererSimple()'],['../class_debug_renderer_simple.html',1,'DebugRendererSimple']]], + ['debugrenderersimple_2ecpp_16',['DebugRendererSimple.cpp',['../_debug_renderer_simple_8cpp.html',1,'']]], + ['debugrenderersimple_2eh_17',['DebugRendererSimple.h',['../_debug_renderer_simple_8h.html',1,'']]], + ['declare_18',['Declare',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa2709046ed364cc54b91f908e85e512ed',1,'SerializableAttribute.h']]], + ['decodingcontext_19',['decodingcontext',['../class_height_field_shape_1_1_decoding_context.html#a7622cbd7f7338a38654def62a270dd34',1,'HeightFieldShape::DecodingContext::DecodingContext()'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext'],['../class_node_codec_quad_tree_half_float_1_1_decoding_context.html',1,'NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext'],['../class_height_field_shape_1_1_decoding_context.html',1,'HeightFieldShape::DecodingContext'],['../class_node_codec_quad_tree_half_float_1_1_decoding_context.html#aa3ed16d2ad735587cc31672b2db9c6f4',1,'NodeCodecQuadTreeHalfFloat::DecodingContext::DecodingContext()'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#af84b416ab6da3ec2c8b3285e18537dc0',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::DecodingContext()']]], + ['decompose_20',['decompose',['../class_d_mat44.html#ac179f093b7e89e2b71f9d5cea1c84d90',1,'DMat44::Decompose()'],['../class_mat44.html#aa11f571efdce00289f87a65317fbdd58',1,'Mat44::Decompose()']]], + ['decomposeprincipalmomentsofinertia_21',['DecomposePrincipalMomentsOfInertia',['../class_mass_properties.html#a37bb3a2b21209e7da35c5fbc4102d8de',1,'MassProperties']]], + ['decorated_22',['Decorated',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a37c71f1e0f41cdad32aa3d4add9f2f86',1,'Shape.h']]], + ['decoratedshape_23',['decoratedshape',['../class_decorated_shape.html',1,'DecoratedShape'],['../class_decorated_shape.html#a1c95daf857b7433b85e88da194e53147',1,'DecoratedShape::DecoratedShape(EShapeSubType inSubType, const DecoratedShapeSettings &inSettings, ShapeResult &outResult)'],['../class_decorated_shape.html#abacdd80b00fe8afc00c50db7eac53a28',1,'DecoratedShape::DecoratedShape(EShapeSubType inSubType, const Shape *inInnerShape)'],['../class_decorated_shape.html#a9619e07b18da28f6c4cb04bf931e4c15',1,'DecoratedShape::DecoratedShape(EShapeSubType inSubType)']]], + ['decoratedshape_2ecpp_24',['DecoratedShape.cpp',['../_decorated_shape_8cpp.html',1,'']]], + ['decoratedshape_2eh_25',['DecoratedShape.h',['../_decorated_shape_8h.html',1,'']]], + ['decoratedshapesettings_26',['DecoratedShapeSettings',['../class_decorated_shape_settings.html',1,'']]], + ['default_27',['Default',['../class_convex_shape.html#a4cd6e2f87f30d108faf1f119dd73a06ba7a1920d61156abc05a60135aefe8bc67',1,'ConvexShape']]], + ['defaultbroadphaselayerfilter_28',['defaultbroadphaselayerfilter',['../class_default_broad_phase_layer_filter.html#a6df10c5326c2190b934694510851d7b0',1,'DefaultBroadPhaseLayerFilter::DefaultBroadPhaseLayerFilter()'],['../class_default_broad_phase_layer_filter.html',1,'DefaultBroadPhaseLayerFilter']]], + ['defaultobjectlayerfilter_29',['defaultobjectlayerfilter',['../class_default_object_layer_filter.html#abeeea7ecb8636d9c103ed66cf016fcbd',1,'DefaultObjectLayerFilter::DefaultObjectLayerFilter(const DefaultObjectLayerFilter &inRHS)'],['../class_default_object_layer_filter.html#aadd5a15cd5f3f980b89a95a843155a51',1,'DefaultObjectLayerFilter::DefaultObjectLayerFilter(const ObjectLayerPairFilter &inObjectLayerPairFilter, ObjectLayer inLayer)'],['../class_default_object_layer_filter.html',1,'DefaultObjectLayerFilter']]], + ['defines_30',['Defines',['../md__build_2_r_e_a_d_m_e.html#autotoc_md71',1,'']]], + ['degenerate_31',['Degenerate',['../class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa24c813faee6d26cc144bec89a984824d',1,'ConvexHullBuilder']]], + ['degreestoradians_32',['DegreesToRadians',['../_math_8h.html#a636689581f2a6ce1d3030dc4dd83b2f5',1,'Math.h']]], + ['deindexify_33',['deindexify',['../_indexify_8h.html#a2914ee656dfa981f96f1c6bcd70e1c4b',1,'Deindexify(const VertexList &inVertices, const IndexedTriangleList &inTriangles, TriangleList &outTriangles): Indexify.cpp'],['../_indexify_8cpp.html#ac61c7f9c3b965f9cbff3cc10733988ec',1,'Deindexify(const VertexList &inVertices, const IndexedTriangleList &inTriangles, TriangleList &outTriangles): Indexify.cpp']]], + ['deque_34',['Deque',['../_a_a_b_b_tree_to_buffer_8h.html#a67d026216193591fdc45e5ac1abebac9',1,'AABBTreeToBuffer.h']]], + ['destroybarrier_35',['destroybarrier',['../class_job_system_single_threaded.html#a9333b0d4cb69ade4b4045b518c77a120',1,'JobSystemSingleThreaded::DestroyBarrier()'],['../class_job_system.html#a51c615924cf4f8eefb8e3fbe72041373',1,'JobSystem::DestroyBarrier()'],['../class_job_system_with_barrier.html#a4827161974dbd03dff9c84424d75107e',1,'JobSystemWithBarrier::DestroyBarrier()']]], + ['destroybodies_36',['destroybodies',['../class_body_manager.html#a5c0cc30ec7f2c4a5bcd1119906a6632e',1,'BodyManager::DestroyBodies()'],['../class_body_interface.html#a95b819fbbcd8a85c25cbce1a319a9037',1,'BodyInterface::DestroyBodies(const BodyID *inBodyIDs, int inNumber)']]], + ['destroybody_37',['DestroyBody',['../class_body_interface.html#a43fb4ffc35661c67642ffa804d1dad8a',1,'BodyInterface']]], + ['destroybodywithoutid_38',['DestroyBodyWithoutID',['../class_body_interface.html#a6263a2b21c5544789bdf4040deacc377',1,'BodyInterface']]], + ['destructobject_39',['destructobject',['../class_r_t_t_i.html#a224cbb3037f84324f9604ecd4218674e',1,'RTTI::DestructObject()'],['../class_fixed_size_free_list.html#a80ff23d54800cfa02da08d6e77171397',1,'FixedSizeFreeList::DestructObject(Object *inObject)'],['../class_fixed_size_free_list.html#a7446e6f32dac053462c14dfefcb467a0',1,'FixedSizeFreeList::DestructObject(uint32 inObjectIndex)']]], + ['destructobjectbatch_40',['DestructObjectBatch',['../class_fixed_size_free_list.html#a0bf25bd9e2c35e584e0bc14d40054bc2',1,'FixedSizeFreeList']]], + ['detail_41',['The Simulation Step in Detail',['../index.html#the-simulation-step-in-detail',1,'']]], + ['detection_42',['detection',['../index.html#collision-detection',1,'Collision Detection'],['../md__docs_2_release_notes.html#autotoc_md43',1,'Collision Detection'],['../index.html#continuous-collision-detection',1,'Continuous Collision Detection']]], + ['determine_20active_20constraints_43',['Determine Active Constraints',['../index.html#determine-active-constraints',1,'']]], + ['determinecollidingshapes_44',['DetermineCollidingShapes',['../class_soft_body_motion_properties.html#ac769f97c554975c25bd37860946d63cb',1,'SoftBodyMotionProperties']]], + ['determinecollisionplanes_45',['DetermineCollisionPlanes',['../class_soft_body_update_context.html#aeef08cf407990a9950c06a5418bd11e5a6985815cf22d36349d3183058c186205',1,'SoftBodyUpdateContext']]], + ['determinemaxerror_46',['DetermineMaxError',['../class_convex_hull_builder.html#aae519c2ae09443413ef0c9e91dd26076',1,'ConvexHullBuilder']]], + ['determineminandmaxsample_47',['DetermineMinAndMaxSample',['../class_height_field_shape_settings.html#a461c9c2289620877314186af163ebf73',1,'HeightFieldShapeSettings']]], + ['determinismlog_2ecpp_48',['DeterminismLog.cpp',['../_determinism_log_8cpp.html',1,'']]], + ['determinismlog_2eh_49',['DeterminismLog.h',['../_determinism_log_8h.html',1,'']]], + ['deterministic_50',['Being Sloppy While Still Being Deterministic',['../index.html#sloppy-determinism',1,'']]], + ['deterministic_20simulation_51',['Deterministic Simulation',['../index.html#deterministic-simulation',1,'']]], + ['didwork_52',['DidWork',['../class_soft_body_motion_properties.html#a0f968ca89a547af5c8978c966e327682a8474fcf555e5d4cfd9ac45e7f2d6396e',1,'SoftBodyMotionProperties']]], + ['difference_5ftype_53',['difference_type',['../class_s_t_l_aligned_allocator.html#a2a9287cbd8ce3d27c67aeb33a20ff9ba',1,'STLAlignedAllocator::difference_type'],['../class_s_t_l_allocator.html#af1e0065d57c697896991790b3bc0b507',1,'STLAllocator::difference_type'],['../class_s_t_l_temp_allocator.html#a53ff9f68e553b59d0a80e9115d3d8205',1,'STLTempAllocator::difference_type']]], + ['differentials_54',['Differentials',['../class_wheeled_vehicle_controller.html#ac37470c3ca61d99d2ab55e6c851410d0',1,'WheeledVehicleController']]], + ['dihedral_55',['Dihedral',['../class_soft_body_shared_settings.html#a38d5a75fdb0d962975fbf2c01b15ba32a15aa29eb5f33d765183c9512f11f6643',1,'SoftBodySharedSettings']]], + ['dihedralbend_56',['dihedralbend',['../struct_soft_body_shared_settings_1_1_dihedral_bend.html#afe227a4f69c416f8047b276dcf350585',1,'SoftBodySharedSettings::DihedralBend::DihedralBend(uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inVertex4, float inCompliance=0.0f)'],['../struct_soft_body_shared_settings_1_1_dihedral_bend.html#abe9fe03ca75f96fea20b8ee693a2f873',1,'SoftBodySharedSettings::DihedralBend::DihedralBend()=default'],['../class_soft_body_motion_properties.html#a3d2f1db97c2adadf7b27190e0486192a',1,'SoftBodyMotionProperties::DihedralBend'],['../struct_soft_body_shared_settings_1_1_dihedral_bend.html',1,'SoftBodySharedSettings::DihedralBend']]], + ['directx_20error_57',['DirectX Error',['../md__build_2_r_e_a_d_m_e.html#autotoc_md79',1,'']]], + ['disablecollision_58',['disablecollision',['../class_group_filter_table.html#a21f49a18fb98bbd35151022505fe275f',1,'GroupFilterTable::DisableCollision()'],['../class_object_layer_pair_filter_table.html#a24646de71a6a06550b0db5addf81b78e',1,'ObjectLayerPairFilterTable::DisableCollision()']]], + ['disableparentchildcollisions_59',['DisableParentChildCollisions',['../class_ragdoll_settings.html#a4fa33727be725de16620f446fbb420f6',1,'RagdollSettings']]], + ['discardoldtree_60',['DiscardOldTree',['../class_quad_tree.html#a6e7b9e3242b2af8c7ba11d9b6eeb0d64',1,'QuadTree']]], + ['discrete_61',['Discrete',['../_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3aa4984667940802dedc139aa7a430a6553',1,'MotionQuality.h']]], + ['distance_62',['distance',['../class_soft_body_shared_settings.html#a38d5a75fdb0d962975fbf2c01b15ba32a0aa6f4210bf373c95eda00232e93cd98',1,'SoftBodySharedSettings::Distance'],['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da0aa6f4210bf373c95eda00232e93cd98',1,'Distance: Constraint.h']]], + ['distanceconstraint_63',['distanceconstraint',['../class_distance_constraint.html',1,'DistanceConstraint'],['../class_distance_constraint.html#a341078be34cb228a4ab7402c960aacb5',1,'DistanceConstraint::DistanceConstraint()']]], + ['distanceconstraint_2ecpp_64',['DistanceConstraint.cpp',['../_distance_constraint_8cpp.html',1,'']]], + ['distanceconstraint_2eh_65',['DistanceConstraint.h',['../_distance_constraint_8h.html',1,'']]], + ['distanceconstraintsettings_66',['DistanceConstraintSettings',['../class_distance_constraint_settings.html',1,'']]], + ['dmat44_67',['dmat44',['../class_d_mat44.html#ac36f72aa17f21f89ef16a9a419c2646e',1,'DMat44::DMat44(const DMat44 &inM2)=default'],['../class_d_mat44.html#a5a0ebccf6fd317512f2be4ea790f29e9',1,'DMat44::DMat44(Mat44Arg inM)'],['../class_d_mat44.html#a60e1e9ecc98846282182af2d3e5f5f54',1,'DMat44::DMat44(Mat44Arg inRot, DVec3Arg inT)'],['../class_d_mat44.html#a52a39db3b4bfe06308b9daecf707d72d',1,'DMat44::DMat44(Type inC1, Type inC2, Type inC3, DTypeArg inC4)'],['../class_d_mat44.html#adf1f915521ba1e3409213613c6286a04',1,'DMat44::DMat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, DVec3Arg inC4)'],['../class_d_mat44.html#a61262e4bb014f696551e9513fd19808e',1,'DMat44::DMat44()=default'],['../class_d_mat44.html',1,'DMat44']]], + ['dmat44_2eh_68',['DMat44.h',['../_d_mat44_8h.html',1,'']]], + ['dmat44_2einl_69',['DMat44.inl',['../_d_mat44_8inl.html',1,'']]], + ['dmat44arg_70',['DMat44Arg',['../_math_types_8h.html#aaf37cd542ccb684a70ab8e9123af8df5',1,'MathTypes.h']]], + ['done_71',['done',['../class_soft_body_motion_properties.html#a0f968ca89a547af5c8978c966e327682af92965e2c8a7afb3c1b9a5c09a263636',1,'SoftBodyMotionProperties::Done'],['../class_soft_body_update_context.html#aeef08cf407990a9950c06a5418bd11e5af92965e2c8a7afb3c1b9a5c09a263636',1,'SoftBodyUpdateContext::Done']]], + ['dontactivate_72',['DontActivate',['../_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6ac332d31032ba5ee48cf9a0dd42916743',1,'EActivation.h']]], + ['dot_73',['dot',['../class_d_vec3.html#aa0634b13605c6233650f7ccac571be75',1,'DVec3::Dot()'],['../class_vector.html#ad187891cbfdaad7c7b9ed6d496ef0606',1,'Vector::Dot()'],['../class_quat.html#aa95ff0fd4a249749b023c32a5be3a44f',1,'Quat::Dot()'],['../class_vec4.html#ad6b9e883a8a97a115e9d98017c9849a9',1,'Vec4::Dot()'],['../class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff',1,'Vec3::Dot(Vec3Arg inV2) const']]], + ['dotv_74',['dotv',['../class_vec3.html#ae94bad18d2f3d3b2a75f69022f67c7e0',1,'Vec3::DotV()'],['../class_vec4.html#aac21b2e88ff0e543a11fd1c4e2c743d8',1,'Vec4::DotV()']]], + ['dotv4_75',['DotV4',['../class_vec3.html#a609366221e50c7b3134d80a80d963312',1,'Vec3']]], + ['double3_76',['double3',['../class_double3.html',1,'Double3'],['../class_double3.html#acc10e82457b89d0ce6100ba58922735f',1,'Double3::Double3(double inX, double inY, double inZ)'],['../class_double3.html#ab5aa082b210fbdd05635916c0ae50be9',1,'Double3::Double3(const Double3 &inRHS)=default'],['../class_double3.html#ab0081bc08f995dd22c3b96f48ae491d1',1,'Double3::Double3()=default']]], + ['double3_2eh_77',['Double3.h',['../_double3_8h.html',1,'']]], + ['doxygen_20on_20windows_78',['Doxygen on Windows',['../md__build_2_r_e_a_d_m_e.html#autotoc_md81',1,'']]], + ['draw_79',['draw',['../class_soft_body_shape.html#a4259140bb1fef6e7d7d2692d7dcd8577',1,'SoftBodyShape::Draw()'],['../class_skeleton_pose.html#af5874cab5f76ecc0df0d7d9e93b2eaf8',1,'SkeletonPose::Draw()'],['../class_wheeled_vehicle_controller.html#a254e0402efc01e79154b4bde178918a4',1,'WheeledVehicleController::Draw()'],['../class_vehicle_controller.html#a274a1450cbb816e3150d26237bf3725a',1,'VehicleController::Draw()'],['../class_tracked_vehicle_controller.html#a9f56bbde7c73183fb8b2a6cb122976af',1,'TrackedVehicleController::Draw()'],['../class_motorcycle_controller.html#ad6cec4ca1b528d91c5ff6e5d6f225b2b',1,'MotorcycleController::Draw()'],['../class_triangle_shape.html#a3d39b9ad69e1da9c16eb1f0a9221090b',1,'TriangleShape::Draw()'],['../class_body_manager.html#a877463f0189e8e131edec5d83413726b',1,'BodyManager::Draw()'],['../class_box_shape.html#a4d5f89d904e7044077b0b187aa74e474',1,'BoxShape::Draw()'],['../class_capsule_shape.html#a4e38d9480d6ce322203bc484f5ec9b12',1,'CapsuleShape::Draw()'],['../class_compound_shape.html#ae6d820f0033d6933b35babdd50cabe29',1,'CompoundShape::Draw()'],['../class_convex_hull_shape.html#a539ee8eb075e2011e67dfd10292f0c12',1,'ConvexHullShape::Draw()'],['../class_cylinder_shape.html#a216fefbc620f08d2e40a7c2ea4d5aa90',1,'CylinderShape::Draw()'],['../class_height_field_shape.html#a996a3f59d7ad00c4df53f817254f5ae1',1,'HeightFieldShape::Draw()'],['../class_mesh_shape.html#afb09372cb71fdbe4cca9718557e144d0',1,'MeshShape::Draw()'],['../class_offset_center_of_mass_shape.html#a24398fdf876a5577fc6261429af7e66a',1,'OffsetCenterOfMassShape::Draw()'],['../class_plane_shape.html#a22d45c2285a901e1334383ea4ee3a19b',1,'PlaneShape::Draw()'],['../class_rotated_translated_shape.html#a896a8828b726e57a15b696e85ce7f1c7',1,'RotatedTranslatedShape::Draw()'],['../class_scaled_shape.html#aef8f4170bcd5d01f62862f08c3af3ce0',1,'ScaledShape::Draw()'],['../class_shape.html#af00149d141125f15e56d9aa82f07b6d4',1,'Shape::Draw()'],['../class_sphere_shape.html#a278bd4a5d3c605638c48438eacc80124',1,'SphereShape::Draw()'],['../class_tapered_capsule_shape.html#ace616f13de2f3cb7acf8f66194c01442',1,'TaperedCapsuleShape::Draw()'],['../class_tapered_cylinder_shape.html#a47be7d0b3613f8a0b16d7eef11a2dafc',1,'TaperedCylinderShape::Draw()']]], + ['drawarrow_80',['DrawArrow',['../class_debug_renderer.html#ad3208b1f011a70927082d734591c0e83',1,'DebugRenderer']]], + ['drawbendconstraints_81',['DrawBendConstraints',['../class_soft_body_motion_properties.html#abeca8c133c3aadb669b31f69cf70a2cf',1,'SoftBodyMotionProperties']]], + ['drawbodies_82',['DrawBodies',['../class_physics_system.html#a8d4eda1c25d2c2e57a6964167870fe93',1,'PhysicsSystem']]], + ['drawbox_83',['drawbox',['../class_debug_renderer.html#acdb1f479a56884e8744f5f08104f556b',1,'DebugRenderer::DrawBox(RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)'],['../class_debug_renderer.html#a47b78c771e85a3d8931b911417737591',1,'DebugRenderer::DrawBox(const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)']]], + ['drawcapsule_84',['DrawCapsule',['../class_debug_renderer.html#a124eec53b294b9d6e2ef72cea8fb760f',1,'DebugRenderer']]], + ['drawconstraint_85',['drawconstraint',['../class_gear_constraint.html#a235385454fa5996217ddd2f7085f47d5',1,'GearConstraint::DrawConstraint()'],['../class_vehicle_constraint.html#af2493620d3e9d960b3cbf0641c182251',1,'VehicleConstraint::DrawConstraint()'],['../class_fixed_constraint.html#afebbb16e9900672eebfcfa9d10e01b5b',1,'FixedConstraint::DrawConstraint()'],['../class_hinge_constraint.html#ab73c3ac05525ab37e8dd8875ce74ac74',1,'HingeConstraint::DrawConstraint()'],['../class_path_constraint.html#a538c03ec9bda5767332e77595d1dab9c',1,'PathConstraint::DrawConstraint()'],['../class_point_constraint.html#ab49bd368d3d5042348299f4bf76dd6d7',1,'PointConstraint::DrawConstraint()'],['../class_pulley_constraint.html#a7ae0d37c406ebdf990d0596028945409',1,'PulleyConstraint::DrawConstraint()'],['../class_rack_and_pinion_constraint.html#a69a8d281fdc1f250625d718dabbc18ed',1,'RackAndPinionConstraint::DrawConstraint()'],['../class_six_d_o_f_constraint.html#a3e482be52b58ddefa10fd4fe941b4e79',1,'SixDOFConstraint::DrawConstraint()'],['../class_slider_constraint.html#a09317cd6ab2f56cb7a15a950a420f5f8',1,'SliderConstraint::DrawConstraint()'],['../class_distance_constraint.html#a77a9f420d8b2e91f852af61cbcecceb0',1,'DistanceConstraint::DrawConstraint()'],['../class_constraint.html#acd05177b26e3251b1a9aff9dded18701',1,'Constraint::DrawConstraint()'],['../class_cone_constraint.html#ab5002a97909c7f2c8d4b7b589ee93a46',1,'ConeConstraint::DrawConstraint()'],['../class_swing_twist_constraint.html#a7ac554fd24b5b89297f13405808991a6',1,'SwingTwistConstraint::DrawConstraint()']]], + ['drawconstraintlimits_86',['drawconstraintlimits',['../class_cone_constraint.html#ab9c5d6d9a767242a2d593d5592ca83e2',1,'ConeConstraint::DrawConstraintLimits()'],['../class_vehicle_constraint.html#aa5ecf61104253599b367ce944f9a3dba',1,'VehicleConstraint::DrawConstraintLimits()'],['../class_physics_system.html#a58612f2c07412ae75580710d0b0047d9',1,'PhysicsSystem::DrawConstraintLimits()'],['../class_swing_twist_constraint.html#a820235859442463871552b2f24eaf499',1,'SwingTwistConstraint::DrawConstraintLimits()'],['../class_slider_constraint.html#ae1378d973e0d535040c6bb36eb368dc5',1,'SliderConstraint::DrawConstraintLimits()'],['../class_six_d_o_f_constraint.html#ad7cf9ea81cc6d05443936cff5f9f63e0',1,'SixDOFConstraint::DrawConstraintLimits()'],['../class_hinge_constraint.html#a7fbe9f4f52961a1fa196122c735249d7',1,'HingeConstraint::DrawConstraintLimits()'],['../class_constraint_manager.html#ada42a650942ca12b4ffef3bc772ccaed',1,'ConstraintManager::DrawConstraintLimits()'],['../class_constraint.html#a528e67a83b796e469b10d5c473dc195f',1,'Constraint::DrawConstraintLimits()']]], + ['drawconstraintreferenceframe_87',['drawconstraintreferenceframe',['../class_physics_system.html#a0535d433ffd7c3d00595ba784ada4f91',1,'PhysicsSystem::DrawConstraintReferenceFrame()'],['../class_two_body_constraint.html#aab88ca80622557a5a14cbc1f2e6d0ec0',1,'TwoBodyConstraint::DrawConstraintReferenceFrame()'],['../class_constraint_manager.html#a8e8f3c781d808b7676cb6a7e8e377a3b',1,'ConstraintManager::DrawConstraintReferenceFrame()'],['../class_constraint.html#a9789129d9dcf3f78e84322b374d0a2c9',1,'Constraint::DrawConstraintReferenceFrame()']]], + ['drawconstraints_88',['drawconstraints',['../class_constraint_manager.html#acbfe993a9253a89c1a75f1fa8318a706',1,'ConstraintManager::DrawConstraints()'],['../class_physics_system.html#a4fa500f710dcc423062fd1514fe07780',1,'PhysicsSystem::DrawConstraints()']]], + ['drawcoordinatesystem_89',['DrawCoordinateSystem',['../class_debug_renderer.html#a7d64d230d835d560b34282b5402ae05e',1,'DebugRenderer']]], + ['drawcylinder_90',['DrawCylinder',['../class_debug_renderer.html#adf3acc6633c87d5dc00a4db27646586f',1,'DebugRenderer']]], + ['drawedgeconstraints_91',['DrawEdgeConstraints',['../class_soft_body_motion_properties.html#a0a5b90a07601d664cabf9bc51d335307',1,'SoftBodyMotionProperties']]], + ['drawframe_92',['DrawFrame',['../class_debug_renderer_playback.html#a7253cd6ee053738333ffada2a28c5d70',1,'DebugRendererPlayback']]], + ['drawgeometry_93',['drawgeometry',['../class_debug_renderer.html#a9542e23f59dcb2dbe19d5cc870e1efcf',1,'DebugRenderer::DrawGeometry()'],['../class_debug_renderer_simple.html#a745b3cf4af4cf5e61c18945940dd5fa6',1,'DebugRendererSimple::DrawGeometry()'],['../class_debug_renderer_recorder.html#af551847dd6e112a52b7830acb7f639c6',1,'DebugRendererRecorder::DrawGeometry()'],['../class_debug_renderer.html#ac548f9103671727c4f750f4d21fa0972',1,'DebugRenderer::DrawGeometry()']]], + ['drawgetsupportfunction_94',['drawgetsupportfunction',['../class_shape.html#aba9738d09ec43b40f10e32d1793b7ef5',1,'Shape::DrawGetSupportFunction()'],['../class_scaled_shape.html#a5150fdb5370cf6aeb27d975cc1ef5c6f',1,'ScaledShape::DrawGetSupportFunction()'],['../class_rotated_translated_shape.html#aa38b6b32591db13a3848b2eb4bbdfbe6',1,'RotatedTranslatedShape::DrawGetSupportFunction()'],['../class_offset_center_of_mass_shape.html#a76d792b27cb24f5e39358c58cbb8d92e',1,'OffsetCenterOfMassShape::DrawGetSupportFunction()'],['../class_convex_shape.html#a6b8a3a589361aaa51d2bb77c70fea79f',1,'ConvexShape::DrawGetSupportFunction()'],['../class_compound_shape.html#afe32beff5208c480e33fd9177ab8a6be',1,'CompoundShape::DrawGetSupportFunction()']]], + ['drawgetsupportingface_95',['drawgetsupportingface',['../class_rotated_translated_shape.html#a111ac2a8df9ae1a243f1eceda27a8d76',1,'RotatedTranslatedShape::DrawGetSupportingFace()'],['../class_compound_shape.html#ad881834415dfef9c84b044402818d7fd',1,'CompoundShape::DrawGetSupportingFace()'],['../class_convex_shape.html#ad53dad63ff9dccff4c3feb90d79091ae',1,'ConvexShape::DrawGetSupportingFace()'],['../class_offset_center_of_mass_shape.html#a3bf3f16aa5100aa0a9e63c74e570b6dd',1,'OffsetCenterOfMassShape::DrawGetSupportingFace()'],['../class_shape.html#a4feaa49afdf6c19764d939dc0bb2698d',1,'Shape::DrawGetSupportingFace()'],['../class_scaled_shape.html#a4768be2571bafce12be7fc759bb666af',1,'ScaledShape::DrawGetSupportingFace()']]], + ['drawline_96',['drawline',['../class_debug_renderer_recorder.html#adac560af23095581dd49d670b7d608f5',1,'DebugRendererRecorder::DrawLine()'],['../class_debug_renderer.html#acea9470f13a1d50b677e2aaaeb9eeaed',1,'DebugRenderer::DrawLine()']]], + ['drawlraconstraints_97',['DrawLRAConstraints',['../class_soft_body_motion_properties.html#a814e392c5f59ad3879f102f7576e79fe',1,'SoftBodyMotionProperties']]], + ['drawmarker_98',['DrawMarker',['../class_debug_renderer.html#a146eec1ac4bb44258fc748e66cd154ba',1,'DebugRenderer']]], + ['drawopencone_99',['DrawOpenCone',['../class_debug_renderer.html#ac2121da7fd301d74c83d4dc3291101e6',1,'DebugRenderer']]], + ['drawpath_100',['DrawPath',['../class_path_constraint_path.html#a666c1696bf4a1f468efb89a87ca7461b',1,'PathConstraintPath']]], + ['drawpie_101',['DrawPie',['../class_debug_renderer.html#a9bb950c4d28eb5130df08b3050dd5db8',1,'DebugRenderer']]], + ['drawplane_102',['DrawPlane',['../class_debug_renderer.html#a1478418243e18bf7ce002e35ff6706b7',1,'DebugRenderer']]], + ['drawpredictedbounds_103',['DrawPredictedBounds',['../class_soft_body_motion_properties.html#abf1d47bf116f2efc6d8d0cc7f5dac806',1,'SoftBodyMotionProperties']]], + ['drawrpm_104',['DrawRPM',['../class_vehicle_engine.html#a1b616470faf6ab7c46026706a7c708df',1,'VehicleEngine']]], + ['drawsettings_105',['drawsettings',['../struct_skeleton_pose_1_1_draw_settings.html',1,'SkeletonPose::DrawSettings'],['../struct_body_manager_1_1_draw_settings.html',1,'BodyManager::DrawSettings']]], + ['drawshrunkshape_106',['DrawShrunkShape',['../class_convex_hull_shape.html#ac286a6da6e3f7df5e7dc8fb507f80e2e',1,'ConvexHullShape']]], + ['drawskinconstraints_107',['DrawSkinConstraints',['../class_soft_body_motion_properties.html#ad7ecbec356136a9cb231fb0695a07720',1,'SoftBodyMotionProperties']]], + ['drawsphere_108',['DrawSphere',['../class_debug_renderer.html#a582b69ddbe6fe2481716729b6330422d',1,'DebugRenderer']]], + ['drawswingconelimits_109',['DrawSwingConeLimits',['../class_debug_renderer.html#ae7f33744765068114b22875784511e6d',1,'DebugRenderer']]], + ['drawswingpyramidlimits_110',['DrawSwingPyramidLimits',['../class_debug_renderer.html#ae56eecfee8d7539571edfe613c00b159',1,'DebugRenderer']]], + ['drawtaperedcylinder_111',['DrawTaperedCylinder',['../class_debug_renderer.html#a4ded1b55c66d08e643043680145d0dc8',1,'DebugRenderer']]], + ['drawtext3d_112',['drawtext3d',['../class_debug_renderer_recorder.html#a2956edbe34418b7546424c68e9dc6132',1,'DebugRendererRecorder::DrawText3D()'],['../class_debug_renderer.html#a0caa614c01a9879eed46e55755884c75',1,'DebugRenderer::DrawText3D()']]], + ['drawtriangle_113',['drawtriangle',['../class_debug_renderer_simple.html#a8fd3084fc71d7e361d8744bf90db7a1d',1,'DebugRendererSimple::DrawTriangle()'],['../class_debug_renderer_recorder.html#a4b0a137f2f193e8ce732be37ff906fab',1,'DebugRendererRecorder::DrawTriangle()'],['../class_debug_renderer.html#afc6b62590e5a26de8cbd98a29bf8b1a3',1,'DebugRenderer::DrawTriangle(RVec3Arg inV1, RVec3Arg inV2, RVec3Arg inV3, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::Off)=0']]], + ['drawunitsphere_114',['DrawUnitSphere',['../class_debug_renderer.html#af23920b42208da32b57c2de2c45de78f',1,'DebugRenderer']]], + ['drawvertexvelocities_115',['DrawVertexVelocities',['../class_soft_body_motion_properties.html#afe71edf0ec3dad256fffa93c845e866c',1,'SoftBodyMotionProperties']]], + ['drawvertices_116',['DrawVertices',['../class_soft_body_motion_properties.html#a064819f04932e34d238692905175a9d5',1,'SoftBodyMotionProperties']]], + ['drawvolumeconstraints_117',['DrawVolumeConstraints',['../class_soft_body_motion_properties.html#a8514cb206c911c1b6ecd39754fb49e33',1,'SoftBodyMotionProperties']]], + ['drawwirebox_118',['drawwirebox',['../class_debug_renderer.html#ab53b82d3cf818165e290e21691271de0',1,'DebugRenderer::DrawWireBox(const AABox &inBox, ColorArg inColor)'],['../class_debug_renderer.html#a00aa83bcc27424dde91b6ee53962cd41',1,'DebugRenderer::DrawWireBox(RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor)'],['../class_debug_renderer.html#abbb732acdeee7ae2bb597e3b7abe01de',1,'DebugRenderer::DrawWireBox(const OrientedBox &inBox, ColorArg inColor)']]], + ['drawwirepolygon_119',['DrawWirePolygon',['../class_debug_renderer.html#aca22a303524616a95259d7ab3df65eb9',1,'DebugRenderer']]], + ['drawwiresphere_120',['DrawWireSphere',['../class_debug_renderer.html#aa2e758e772dd9b51ea778cb74265090e',1,'DebugRenderer']]], + ['drawwiretriangle_121',['DrawWireTriangle',['../class_debug_renderer.html#a54813e4e95f78cdfc22d938ba15bcb8d',1,'DebugRenderer']]], + ['drawwireunitsphere_122',['DrawWireUnitSphere',['../class_debug_renderer.html#a08387fe20ef6b38d160f97ec902072ce',1,'DebugRenderer']]], + ['drivetoposeusingkinematics_123',['drivetoposeusingkinematics',['../class_ragdoll.html#a1a25f99af9c3a3d8eb7a069143db34e6',1,'Ragdoll::DriveToPoseUsingKinematics(RVec3Arg inRootOffset, const Mat44 *inJointMatrices, float inDeltaTime, bool inLockBodies=true)'],['../class_ragdoll.html#a5708fad69260914b0fdfd6d80a834d23',1,'Ragdoll::DriveToPoseUsingKinematics(const SkeletonPose &inPose, float inDeltaTime, bool inLockBodies=true)']]], + ['drivetoposeusingmotors_124',['DriveToPoseUsingMotors',['../class_ragdoll.html#a367f16f5385eb377e5419d12457c22c6',1,'Ragdoll']]], + ['dtype_125',['DType',['../class_d_mat44.html#a1559a40274c45f8e0f456e7fd53c2c25',1,'DMat44']]], + ['dtypearg_126',['DTypeArg',['../class_d_mat44.html#a1d9483a11578c2f22e1d2198f27c85fb',1,'DMat44']]], + ['dualaxisconstraintpart_127',['DualAxisConstraintPart',['../class_dual_axis_constraint_part.html',1,'']]], + ['dualaxisconstraintpart_2eh_128',['DualAxisConstraintPart.h',['../_dual_axis_constraint_part_8h.html',1,'']]], + ['dummycalculatesolversteps_129',['DummyCalculateSolverSteps',['../class_dummy_calculate_solver_steps.html',1,'']]], + ['dump_130',['Dump',['../class_profiler.html#a4a8f82d68bd5c67cf7ad8259487bb821',1,'Profiler']]], + ['dvec3_131',['dvec3',['../class_d_vec3.html',1,'DVec3'],['../class_d_vec3.html#a14bb3fa7ea76c4c32d2ff6066a8e0732',1,'DVec3::DVec3(const Double3 &inV)'],['../class_d_vec3.html#ac908a3c045ea6d465602de318ccc2423',1,'DVec3::DVec3(double inX, double inY, double inZ)'],['../class_d_vec3.html#a8dee0ba62485a3b2fe924f1fa582c269',1,'DVec3::DVec3()=default'],['../class_d_vec3.html#ae4beefad0c345ffc3516f9f2dcb7abba',1,'DVec3::DVec3(const DVec3 &inRHS)=default'],['../class_d_vec3.html#aae9ec5d5349d1d8139cc4eb4943187f9',1,'DVec3::DVec3(Vec3Arg inRHS)'],['../class_d_vec3.html#aab5b5eca15f3f129ff6781cb0e2c27a7',1,'DVec3::DVec3(Vec4Arg inRHS)'],['../class_d_vec3.html#a286758dc45b39340db99639276d229a6',1,'DVec3::DVec3(TypeArg inRHS)']]], + ['dvec3_2eh_132',['DVec3.h',['../_d_vec3_8h.html',1,'']]], + ['dvec3_2einl_133',['DVec3.inl',['../_d_vec3_8inl.html',1,'']]], + ['dvec3arg_134',['DVec3Arg',['../_math_types_8h.html#a943465464cdfbc4fedad29af409c31ff',1,'MathTypes.h']]], + ['dynamic_135',['Dynamic',['../_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c',1,'MotionType.h']]], + ['dynamic_20mesh_20shapes_136',['Dynamic Mesh Shapes',['../index.html#dynamic-mesh-shapes',1,'']]], + ['dynamiccast_137',['dynamiccast',['../_r_t_t_i_8h.html#a0fb0ad7ca393258307fd76c11cd3383c',1,'DynamicCast(const Ref< SrcType > &inObject): RTTI.h'],['../_r_t_t_i_8h.html#ae21beea7a22545176b0ba9af79acb36c',1,'DynamicCast(const RefConst< SrcType > &inObject): RTTI.h'],['../_r_t_t_i_8h.html#a71969ae61cdfe78b730ae80bfde295b3',1,'DynamicCast(SrcType *inObject): RTTI.h'],['../_r_t_t_i_8h.html#ae90cb64879c34484002e2b1dffa6cfe3',1,'DynamicCast(const SrcType *inObject): RTTI.h']]], + ['dynmatrix_138',['dynmatrix',['../class_dyn_matrix.html#a0cb3ea3a8ccc5abca8edbbe6b8d22031',1,'DynMatrix::DynMatrix(const DynMatrix &)=default'],['../class_dyn_matrix.html#a765a9a91db4ca8fd8789a9529809c478',1,'DynMatrix::DynMatrix(uint inRows, uint inCols)'],['../class_dyn_matrix.html',1,'DynMatrix']]], + ['dynmatrix_2eh_139',['DynMatrix.h',['../_dyn_matrix_8h.html',1,'']]] +]; diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 000000000..10ec478cd --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,93 @@ +var searchData= +[ + ['eactivation_0',['EActivation',['../_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6',1,'EActivation.h']]], + ['eactivation_2eh_1',['EActivation.h',['../_e_activation_8h.html',1,'']]], + ['eactiveedgemode_2',['EActiveEdgeMode',['../_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183',1,'ActiveEdgeMode.h']]], + ['ealloweddofs_3',['EAllowedDOFs',['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913',1,'AllowedDOFs.h']]], + ['eaxis_4',['eaxis',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cd',1,'SixDOFConstraintSettings::EAxis'],['../class_six_d_o_f_constraint.html#a6ae2f17a4c67f08fb49cacab7ec0d501',1,'SixDOFConstraint::EAxis']]], + ['ebackfacemode_5',['EBackFaceMode',['../_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70',1,'BackFaceMode.h']]], + ['ebendtype_6',['EBendType',['../class_soft_body_shared_settings.html#a38d5a75fdb0d962975fbf2c01b15ba32',1,'SoftBodySharedSettings']]], + ['ebodytype_7',['EBodyType',['../_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666',1,'BodyType.h']]], + ['ecansleep_8',['ECanSleep',['../_motion_properties_8h.html#a97f69c4b07965ef22ebe08465e1c3db0',1,'MotionProperties.h']]], + ['ecastshadow_9',['ECastShadow',['../class_debug_renderer.html#aa24dcdedf792593f83eb1091d7e456b9',1,'DebugRenderer']]], + ['ecollectfacesmode_10',['ECollectFacesMode',['../_collect_faces_mode_8h.html#a43f9b52c7b53fe169fd83842e75935b6',1,'CollectFacesMode.h']]], + ['ecommand_11',['ECommand',['../class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3e',1,'DebugRendererRecorder']]], + ['ecomponentdata_12',['EComponentData',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a9ae76041d1be874601839088c1e62bef',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['econstraintspace_13',['EConstraintSpace',['../_constraint_8h.html#a5951578637c20f8aad819c13ad09b1be',1,'Constraint.h']]], + ['econstraintsubtype_14',['EConstraintSubType',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2d',1,'Constraint.h']]], + ['econstrainttype_15',['EConstraintType',['../_constraint_8h.html#a2a4cc5b25efd5f8862f80eb2f5fcdc47',1,'Constraint.h']]], + ['ecullmode_16',['ECullMode',['../class_debug_renderer.html#a54c5367f9b1f976cfe292dfa9ad2160a',1,'DebugRenderer']]], + ['edge_17',['edge',['../class_soft_body_motion_properties.html#a25971eb4086d1c55443efcb298cc89e6',1,'SoftBodyMotionProperties::Edge'],['../class_convex_hull_builder_1_1_edge.html#a0d350bab8acf2ad5360554e87c2c5b0e',1,'ConvexHullBuilder::Edge::Edge()'],['../struct_soft_body_shared_settings_1_1_edge.html#a6330e512065ff11935b9fb0f04b5db6c',1,'SoftBodySharedSettings::Edge::Edge()=default'],['../struct_soft_body_shared_settings_1_1_edge.html#a88c7b84c4d66a6bcfd19939c30c837ac',1,'SoftBodySharedSettings::Edge::Edge(uint32 inVertex1, uint32 inVertex2, float inCompliance=0.0f)'],['../class_convex_hull_builder_1_1_edge.html',1,'ConvexHullBuilder::Edge'],['../class_e_p_a_convex_hull_builder_1_1_edge.html',1,'EPAConvexHullBuilder::Edge'],['../struct_soft_body_shared_settings_1_1_edge.html',1,'SoftBodySharedSettings::Edge']]], + ['edges_18',['edges',['../class_convex_hull_builder2_d.html#a5827b465379b2d68b9bf2e6968565df5',1,'ConvexHullBuilder2D::Edges'],['../class_e_p_a_convex_hull_builder.html#a469e8ddcebb3e76c06176c9580fc186e',1,'EPAConvexHullBuilder::Edges']]], + ['edrawmode_19',['EDrawMode',['../class_debug_renderer.html#ab9951f7e2a6dd10b4e8f3b40f01bba32',1,'DebugRenderer']]], + ['egroundstate_20',['EGroundState',['../class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77e',1,'CharacterBase']]], + ['eigenvaluesymmetric_21',['EigenValueSymmetric',['../_eigen_value_symmetric_8h.html#a63488e363acda8a1bd4cd3d297bf4d54',1,'EigenValueSymmetric.h']]], + ['eigenvaluesymmetric_2eh_22',['EigenValueSymmetric.h',['../_eigen_value_symmetric_8h.html',1,'']]], + ['eiterationstatus_23',['EIterationStatus',['../class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005cc',1,'LargeIslandSplitter::Splits']]], + ['ellipse_24',['ellipse',['../class_ellipse.html',1,'Ellipse'],['../class_ellipse.html#a35e3c1cc223333a5e227ea0ff9b120de',1,'Ellipse::Ellipse()']]], + ['ellipse_2eh_25',['Ellipse.h',['../_ellipse_8h.html',1,'']]], + ['elratype_26',['ELRAType',['../class_soft_body_shared_settings.html#a288bafac0b3882214b806d7483e84419',1,'SoftBodySharedSettings']]], + ['emotionquality_27',['EMotionQuality',['../_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3a',1,'MotionQuality.h']]], + ['emotiontype_28',['EMotionType',['../_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8',1,'MotionType.h']]], + ['emotorstate_29',['EMotorState',['../_motor_settings_8h.html#a691a2387946263d993fa8e1c9488bc2b',1,'MotorSettings.h']]], + ['emplace_5fback_30',['emplace_back',['../class_static_array.html#a80c134d64d82df7e26efc48dc629389f',1,'StaticArray::emplace_back()'],['../class_array.html#aaae2b09589c5ac4cf96d98aa5df75f61',1,'Array::emplace_back(A &&... inValue)']]], + ['empty_31',['empty',['../class_array.html#a3184fd974ff46c9a1bccbc6428008c93',1,'Array::empty()'],['../class_static_array.html#a90462c290631eb3139ea41b91a14f99a',1,'StaticArray::empty()']]], + ['enablecollision_32',['enablecollision',['../class_group_filter_table.html#a6b25689191afbfdb272feb4e57df4035',1,'GroupFilterTable::EnableCollision()'],['../class_object_layer_pair_filter_table.html#a92530da6280163ab73c27304dd911167',1,'ObjectLayerPairFilterTable::EnableCollision()']]], + ['enableleancontroller_33',['EnableLeanController',['../class_motorcycle_controller.html#ac0d6c78cc5ee2dd850f535a972875df8',1,'MotorcycleController']]], + ['enableleansteeringlimit_34',['EnableLeanSteeringLimit',['../class_motorcycle_controller.html#a70f9325f8dde2c3ef76148f45332fc1a',1,'MotorcycleController']]], + ['encapsulate_35',['encapsulate',['../class_a_a_box.html#af29df5ecf944d7ec92eea7d016e49320',1,'AABox::Encapsulate(const Triangle &inRHS)'],['../class_a_a_box.html#a88aa8b06db963335016bcb124091feec',1,'AABox::Encapsulate(const VertexList &inVertices, const IndexedTriangle &inTriangle)'],['../class_a_a_box.html#a83d2f26869e8870c2d6dfd41804d5438',1,'AABox::Encapsulate(const AABox &inRHS)'],['../class_a_a_box.html#addccf5b511ece1be10dbae4818d4aaa0',1,'AABox::Encapsulate(Vec3Arg inPos)']]], + ['encapsulatepoint_36',['EncapsulatePoint',['../class_sphere.html#ae662c4e0d3f338fe5c5bfa844aaa22ea',1,'Sphere']]], + ['encodingcontext_37',['encodingcontext',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#a1a7a9c8bdd917bf0e4b95a88694c8630',1,'TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::EncodingContext()'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html',1,'TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext'],['../class_node_codec_quad_tree_half_float_1_1_encoding_context.html',1,'NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext']]], + ['end_38',['end',['../class_array.html#a660a72e00524f911c812c9c69206c75f',1,'Array::end()'],['../class_static_array.html#a26023a8948ef582b35b2d808f95915b4',1,'StaticArray::end()'],['../class_static_array.html#acc8368b80a4756c0ea7f5354dad6b2df',1,'StaticArray::end() const'],['../class_lock_free_hash_map.html#af90c81d993eb139aded4c89bff98998d',1,'LockFreeHashMap::end()'],['../class_array.html#aeb0fa5a613a57fab1931331f95c61908',1,'Array::end()']]], + ['endframe_39',['endframe',['../class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3ea6c1645a468ccfce0975fc95587b97adf',1,'DebugRendererRecorder::EndFrame'],['../class_debug_renderer_recorder.html#a1beee4021111b00774e99dd134716b44',1,'DebugRendererRecorder::EndFrame()']]], + ['ensureminimaledgelength_40',['EnsureMinimalEdgeLength',['../class_a_a_box.html#a377eb9ef3dfdd76f62d0faf6e0a54525',1,'AABox']]], + ['ensurewpositive_41',['EnsureWPositive',['../class_quat.html#a9f563ca8c8a8b71a0aa340d12080c2ef',1,'Quat']]], + ['eosdatatype_42',['EOSDataType',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974a',1,'SerializableAttribute.h']]], + ['eoverridemassproperties_43',['EOverrideMassProperties',['../_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38',1,'BodyCreationSettings.h']]], + ['epaconvexhullbuilder_44',['epaconvexhullbuilder',['../class_e_p_a_convex_hull_builder.html',1,'EPAConvexHullBuilder'],['../class_e_p_a_convex_hull_builder.html#ae55b89fd27a0cab9a97a1475245dec9d',1,'EPAConvexHullBuilder::EPAConvexHullBuilder()']]], + ['epaconvexhullbuilder_2eh_45',['EPAConvexHullBuilder.h',['../_e_p_a_convex_hull_builder_8h.html',1,'']]], + ['epapenetrationdepth_46',['EPAPenetrationDepth',['../class_e_p_a_penetration_depth.html',1,'']]], + ['epapenetrationdepth_2eh_47',['EPAPenetrationDepth.h',['../_e_p_a_penetration_depth_8h.html',1,'']]], + ['epathrotationconstrainttype_48',['EPathRotationConstraintType',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51b',1,'PathConstraint.h']]], + ['ephysicsupdateerror_49',['EPhysicsUpdateError',['../_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1',1,'EPhysicsUpdateError.h']]], + ['ephysicsupdateerror_2eh_50',['EPhysicsUpdateError.h',['../_e_physics_update_error_8h.html',1,'']]], + ['erase_51',['erase',['../class_array.html#a6ad56d9150990119cd932d750b06f83d',1,'Array::erase(const_iterator inBegin, const_iterator inEnd)'],['../class_array.html#ae826452f2c7b1e7fa97cb5ad6aaf17c8',1,'Array::erase(const_iterator inIter)'],['../class_static_array.html#a61742c51d0d5ab0a7a4593e1f907bc2b',1,'StaticArray::erase(const_iterator inIter)'],['../class_static_array.html#a8160d86021d1033d74e9e434458517ef',1,'StaticArray::erase(const_iterator inBegin, const_iterator inEnd)']]], + ['eresult_52',['eresult',['../class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469a',1,'ConvexHullBuilder::EResult'],['../class_convex_hull_builder2_d.html#a249cc4fd8288bd1cf447d3d820e9dcd0',1,'ConvexHullBuilder2D::EResult']]], + ['eroundingmode_53',['ERoundingMode',['../namespace_half_float_conversion.html#aa3241cac5bd296cd04f7600e353eb1a4',1,'HalfFloatConversion']]], + ['error_54',['error',['../md__build_2_r_e_a_d_m_e.html#autotoc_md79',1,'DirectX Error'],['../md__build_2_r_e_a_d_m_e.html#autotoc_md80',1,'Illegal Instruction Error']]], + ['error_3a_20file_20format_20not_20recognized_55',['Link Error: File Format Not Recognized',['../md__build_2_r_e_a_d_m_e.html#autotoc_md77',1,'']]], + ['error_3a_20unresolved_20external_20symbol_56',['Link Error: Unresolved External Symbol',['../md__build_2_r_e_a_d_m_e.html#autotoc_md78',1,'']]], + ['errors_57',['Errors',['../md__build_2_r_e_a_d_m_e.html#autotoc_md76',1,'']]], + ['eshapecolor_58',['EShapeColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2',1,'BodyManager']]], + ['eshapesubtype_59',['EShapeSubType',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551b',1,'Shape.h']]], + ['eshapetype_60',['EShapeType',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5',1,'Shape.h']]], + ['esoftbodyconstraintcolor_61',['ESoftBodyConstraintColor',['../_body_manager_8h.html#af3216c8a98a28ccd29f5e19f037a59e2',1,'BodyManager.h']]], + ['espringmode_62',['ESpringMode',['../_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512d',1,'SpringSettings.h']]], + ['estate_63',['EState',['../class_soft_body_update_context.html#aeef08cf407990a9950c06a5418bd11e5',1,'SoftBodyUpdateContext']]], + ['estaterecorderstate_64',['EStateRecorderState',['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4',1,'StateRecorder.h']]], + ['estatus_65',['estatus',['../class_soft_body_motion_properties.html#a0f968ca89a547af5c8978c966e327682',1,'SoftBodyMotionProperties::EStatus'],['../class_large_island_splitter.html#aa7b284b561bd630d6d288bb706439f68',1,'LargeIslandSplitter::EStatus'],['../class_e_p_a_penetration_depth.html#aab59ecfbbefc06c5ac96f9cdc24252d0',1,'EPAPenetrationDepth::EStatus']]], + ['estimatecollisionresponse_66',['estimatecollisionresponse',['../_estimate_collision_response_8h.html#aca51bbbf4aaefaa7850fd9b0365b031c',1,'EstimateCollisionResponse(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, CollisionEstimationResult &outResult, float inCombinedFriction, float inCombinedRestitution, float inMinVelocityForRestitution=1.0f, uint inNumIterations=10): EstimateCollisionResponse.cpp'],['../_estimate_collision_response_8cpp.html#a64da30a754090f2e72e7cb37b55b035f',1,'EstimateCollisionResponse(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, CollisionEstimationResult &outResult, float inCombinedFriction, float inCombinedRestitution, float inMinVelocityForRestitution, uint inNumIterations): EstimateCollisionResponse.cpp']]], + ['estimatecollisionresponse_2ecpp_67',['EstimateCollisionResponse.cpp',['../_estimate_collision_response_8cpp.html',1,'']]], + ['estimatecollisionresponse_2eh_68',['EstimateCollisionResponse.h',['../_estimate_collision_response_8h.html',1,'']]], + ['estreamtype_69',['EStreamType',['../class_object_stream.html#a5feef3b87da292623ebf2a04c7c3482e',1,'ObjectStream']]], + ['esupportmode_70',['ESupportMode',['../class_convex_shape.html#a4cd6e2f87f30d108faf1f119dd73a06b',1,'ConvexShape']]], + ['eswingtype_71',['ESwingType',['../_swing_twist_constraint_part_8h.html#add9e89df628b33308461ef46e1b796b6',1,'SwingTwistConstraintPart.h']]], + ['etrackside_72',['ETrackSide',['../_vehicle_track_8h.html#a8008ce273c0da3c40bc613d9495818d2',1,'VehicleTrack.h']]], + ['etransmissionmode_73',['ETransmissionMode',['../_vehicle_transmission_8h.html#ad3e125d6d786c09fddfa10be390f851d',1,'VehicleTransmission.h']]], + ['etriangleblockheaderflags_74',['ETriangleBlockHeaderFlags',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['euclideandistance_75',['EuclideanDistance',['../class_soft_body_shared_settings.html#a288bafac0b3882214b806d7483e84419a5ab2b5492eebb9fffe14c94278372bff',1,'SoftBodySharedSettings']]], + ['evertexxy_76',['EVertexXY',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#ad85eb72dec6aa3c370e9ad969c46c4d2',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['evertexzy_77',['EVertexZY',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#adf7b4eade64871b3f53059bdacf9aace',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['excludeconvexradius_78',['ExcludeConvexRadius',['../class_convex_shape.html#a4cd6e2f87f30d108faf1f119dd73a06bafc1094532d8eef9e23613fe6846685c1',1,'ConvexShape']]], + ['execute_79',['Execute',['../class_job_system_1_1_job.html#a51718f809ac43edfcd1a3ae87acc2bd4',1,'JobSystem::Job']]], + ['expand4byte0_80',['Expand4Byte0',['../class_u_vec4.html#a4e1d53e419791f3a1d73e96fe905cb9a',1,'UVec4']]], + ['expand4byte12_81',['Expand4Byte12',['../class_u_vec4.html#ab90115fc1e9f272b053cd5e593eefecd',1,'UVec4']]], + ['expand4byte4_82',['Expand4Byte4',['../class_u_vec4.html#a43c0348b32fe2a8a8a3fe3e82adbf4e1',1,'UVec4']]], + ['expand4byte8_83',['Expand4Byte8',['../class_u_vec4.html#ab576b5e89a741b942e5a0eee30221fff',1,'UVec4']]], + ['expand4uint16hi_84',['Expand4Uint16Hi',['../class_u_vec4.html#ac7ecdcc40c2437edb94d824902084471',1,'UVec4']]], + ['expand4uint16lo_85',['Expand4Uint16Lo',['../class_u_vec4.html#a231db23152af3fc49272a7842432b2d8',1,'UVec4']]], + ['expandby_86',['ExpandBy',['../class_a_a_box.html#a7023c1c28f073fa0d14ecee0f5fc8ee8',1,'AABox']]], + ['extendedupdate_87',['ExtendedUpdate',['../class_character_virtual.html#ae03c43c12e8eb6496b8c8044c70b591f',1,'CharacterVirtual']]], + ['extendedupdatesettings_88',['ExtendedUpdateSettings',['../struct_character_virtual_1_1_extended_update_settings.html',1,'CharacterVirtual']]], + ['external_20symbol_89',['Link Error: Unresolved External Symbol',['../md__build_2_r_e_a_d_m_e.html#autotoc_md78',1,'']]] +]; diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 000000000..ac5d55fe5 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,70 @@ +var searchData= +[ + ['face_0',['face',['../struct_soft_body_shared_settings_1_1_face.html',1,'SoftBodySharedSettings::Face'],['../class_collide_shape_result.html#a5cdb68a0447b40ffa2cfd725c1896356',1,'CollideShapeResult::Face'],['../class_soft_body_motion_properties.html#a3016ae78b7466b87d8695c82df9f2663',1,'SoftBodyMotionProperties::Face'],['../struct_soft_body_shared_settings_1_1_face.html#a0eeac3e099f764d8b9697888b1603aa1',1,'SoftBodySharedSettings::Face::Face()=default'],['../struct_soft_body_shared_settings_1_1_face.html#a5206e7ff17d5f1912738717c8527f944',1,'SoftBodySharedSettings::Face::Face(uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inMaterialIndex=0)'],['../class_convex_hull_builder_1_1_face.html',1,'ConvexHullBuilder::Face']]], + ['faces_1',['Faces',['../class_convex_hull_builder.html#ae9f7a2eb095de53f76a7d3ea9198f7b4',1,'ConvexHullBuilder']]], + ['factory_2',['Factory',['../class_factory.html',1,'']]], + ['factory_2ecpp_3',['Factory.cpp',['../_factory_8cpp.html',1,'']]], + ['factory_2eh_4',['Factory.h',['../_factory_8h.html',1,'']]], + ['fetchnextbatch_5',['fetchnextbatch',['../class_large_island_splitter.html#a3f35114156b5519b85f82988fe3944b9',1,'LargeIslandSplitter::FetchNextBatch()'],['../class_large_island_splitter_1_1_splits.html#a6757c784f684e5fb2ac4ce79f3c0a2f0',1,'LargeIslandSplitter::Splits::FetchNextBatch()']]], + ['file_20format_20not_20recognized_6',['Link Error: File Format Not Recognized',['../md__build_2_r_e_a_d_m_e.html#autotoc_md77',1,'']]], + ['filtering_7',['Collision Filtering',['../index.html#collision-filtering',1,'']]], + ['finalize_8',['finalize',['../index.html#broad-phase-update-finalize',1,'Broad Phase Update Finalize'],['../class_island_builder.html#af8e0ac69b3e021ab24317116ded1c622',1,'IslandBuilder::Finalize()'],['../class_calculate_solver_steps.html#a589b3b000f0552ebbaf507f133d73046',1,'CalculateSolverSteps::Finalize()'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#a795673261b70c6dcf35cc2b95cc6e901',1,'TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::Finalize()'],['../class_node_codec_quad_tree_half_float_1_1_encoding_context.html#a744d6e02ea549980927d888129f8fc79',1,'NodeCodecQuadTreeHalfFloat::EncodingContext::Finalize()'],['../index.html#soft-body-finalize',1,'Soft Body Finalize']]], + ['finalize_20contact_20cache_20contact_20removed_20callbacks_9',['Finalize Contact Cache, Contact Removed Callbacks',['../index.html#finalize-contact-cache',1,'']]], + ['finalize_20islands_10',['Finalize Islands',['../index.html#finalize-islands',1,'']]], + ['finalizecontactcacheandcallcontactpointremovedcallbacks_11',['FinalizeContactCacheAndCallContactPointRemovedCallbacks',['../class_contact_constraint_manager.html#a3b9cf92154e49319463950b66e692f56',1,'ContactConstraintManager']]], + ['find_12',['find',['../class_factory.html#a87756d7feaaeabb5cf29b95266ea418b',1,'Factory::Find(const char *inName)'],['../class_factory.html#a962c9d57a3bce85b649c3ebd1259b9a0',1,'Factory::Find(uint32 inHash)'],['../class_lock_free_hash_map.html#abf0f1e866eba5975400db74cc3da6913',1,'LockFreeHashMap::Find()']]], + ['find_20ccd_20contacts_13',['Find CCD Contacts',['../index.html#find-ccd-contacts',1,'']]], + ['find_20collisions_14',['Find Collisions',['../index.html#find-collisions',1,'']]], + ['findcollidingpairs_15',['findcollidingpairs',['../class_quad_tree.html#a1752afb7a82b6ca130cfbad4f4f02c4e',1,'QuadTree::FindCollidingPairs()'],['../class_broad_phase_quad_tree.html#af5fd975a61944a35c8ea2ea1daaa22de',1,'BroadPhaseQuadTree::FindCollidingPairs()'],['../class_broad_phase_brute_force.html#a2d0f339251687a983a58b516350e93ac',1,'BroadPhaseBruteForce::FindCollidingPairs()'],['../class_broad_phase.html#aecd92cc792c15c624b97eeeac11cc468',1,'BroadPhase::FindCollidingPairs()']]], + ['findfacingtriangle_16',['FindFacingTriangle',['../class_e_p_a_convex_hull_builder.html#aba8a5ac94c67e4c96e5eb533dfca3a83',1,'EPAConvexHullBuilder']]], + ['findroot_17',['FindRoot',['../_find_root_8h.html#a3bec219d038a3c84a22b1c07b49b9eca',1,'FindRoot.h']]], + ['findroot_2eh_18',['FindRoot.h',['../_find_root_8h.html',1,'']]], + ['finishconstraintbuffer_19',['FinishConstraintBuffer',['../class_contact_constraint_manager.html#a08550dcab7e85e7f82fcc0c7658baa32',1,'ContactConstraintManager']]], + ['finishvertex_20',['FinishVertex',['../class_collide_soft_body_vertices_vs_triangles.html#ace145cd2baa9706d2b2ebb786db53066',1,'CollideSoftBodyVerticesVsTriangles']]], + ['fixed_21',['Fixed',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da4457d440870ad6d42bab9082d9bf9b61',1,'Constraint.h']]], + ['fixedconstraint_22',['fixedconstraint',['../class_fixed_constraint.html#a570a3365a0a9e3017075d5169cf3344c',1,'FixedConstraint::FixedConstraint()'],['../class_fixed_constraint.html',1,'FixedConstraint']]], + ['fixedconstraint_2ecpp_23',['FixedConstraint.cpp',['../_fixed_constraint_8cpp.html',1,'']]], + ['fixedconstraint_2eh_24',['FixedConstraint.h',['../_fixed_constraint_8h.html',1,'']]], + ['fixedconstraintsettings_25',['FixedConstraintSettings',['../class_fixed_constraint_settings.html',1,'']]], + ['fixedsizefreelist_26',['FixedSizeFreeList',['../class_fixed_size_free_list.html',1,'']]], + ['fixedsizefreelist_2eh_27',['FixedSizeFreeList.h',['../_fixed_size_free_list_8h.html',1,'']]], + ['fixedsizefreelist_2einl_28',['FixedSizeFreeList.inl',['../_fixed_size_free_list_8inl.html',1,'']]], + ['fixedsizefreelist_3c_20job_20_3e_29',['FixedSizeFreeList< Job >',['../class_fixed_size_free_list.html',1,'']]], + ['fixedsizefreelist_3c_20node_20_3e_30',['FixedSizeFreeList< Node >',['../class_fixed_size_free_list.html',1,'']]], + ['fixes_31',['fixes',['../md__docs_2_release_notes.html#autotoc_md50',1,'Bug fixes'],['../md__docs_2_release_notes.html#autotoc_md53',1,'Bug fixes'],['../md__docs_2_release_notes.html#autotoc_md47',1,'Bug fixes'],['../md__docs_2_release_notes.html#autotoc_md31',1,'Bug fixes'],['../md__docs_2_release_notes.html#autotoc_md20',1,'Bug fixes'],['../md__docs_2_release_notes.html#autotoc_md58',1,'Bug fixes']]], + ['fixinvalidscales_32',['FixInvalidScales',['../class_physics_scene.html#a5d76aa6b4a1c9166bc905b13f99faabe',1,'PhysicsScene']]], + ['float2_33',['float2',['../class_float2.html',1,'Float2'],['../class_float2.html#abb998c59ebedddb6fe8742b7e7f8e990',1,'Float2::Float2(float inX, float inY)'],['../class_float2.html#a242b0c3c7ee3f270ad64a0a3ee6e0286',1,'Float2::Float2(const Float2 &inRHS)=default'],['../class_float2.html#a31453e22a3a71b53b16f33c8ea050fa3',1,'Float2::Float2()=default']]], + ['float2_2eh_34',['Float2.h',['../_float2_8h.html',1,'']]], + ['float3_35',['float3',['../class_float3.html#aba5b9d056afa088269bfe243c44380b7',1,'Float3::Float3()=default'],['../class_float3.html#ae71f5544521095ffdeed2109dbf54d96',1,'Float3::Float3(const Float3 &inRHS)=default'],['../class_float3.html#a4d2277dc1efc95eb284c72c1313809fc',1,'Float3::Float3(float inX, float inY, float inZ)'],['../class_float3.html',1,'Float3']]], + ['float3_2eh_36',['Float3.h',['../_float3_8h.html',1,'']]], + ['float4_37',['float4',['../class_float4.html#ad5656578ebf1056a5763c1d5c33dd75c',1,'Float4::Float4()=default'],['../class_float4.html#a767b3a966085ef9e5a0909df91cee272',1,'Float4::Float4(float inX, float inY, float inZ, float inW)'],['../class_float4.html#a541c6d53368a661afb71418ce24776e4',1,'Float4::Float4(const Float4 &inRHS)=default'],['../class_float4.html',1,'Float4']]], + ['float4_2eh_38',['Float4.h',['../_float4_8h.html',1,'']]], + ['flush_39',['Flush',['../class_internal_edge_removing_collector.html#a33af5c7be55c31c27215b2bffd7d1428',1,'InternalEdgeRemovingCollector']]], + ['forceearlyout_40',['ForceEarlyOut',['../class_collision_collector.html#a04a9260170d7c96389b50c6f6843c8b5',1,'CollisionCollector']]], + ['format_20not_20recognized_41',['Link Error: File Format Not Recognized',['../md__build_2_r_e_a_d_m_e.html#autotoc_md77',1,'']]], + ['fpcontrolword_2eh_42',['FPControlWord.h',['../_f_p_control_word_8h.html',1,'']]], + ['fpexception_2eh_43',['FPException.h',['../_f_p_exception_8h.html',1,'']]], + ['fpexceptiondisabledivbyzero_44',['FPExceptionDisableDivByZero',['../class_f_p_exception_disable_div_by_zero.html',1,'']]], + ['fpexceptiondisableinvalid_45',['FPExceptionDisableInvalid',['../class_f_p_exception_disable_invalid.html',1,'']]], + ['fpexceptionsenable_46',['FPExceptionsEnable',['../class_f_p_exceptions_enable.html',1,'']]], + ['fpflushdenormals_2eh_47',['FPFlushDenormals.h',['../_f_p_flush_denormals_8h.html',1,'']]], + ['frame_48',['Frame',['../struct_debug_renderer_recorder_1_1_frame.html',1,'DebugRendererRecorder']]], + ['framesync_49',['framesync',['../class_broad_phase.html#a4772ae4d99f16342a494b7c1e0066d8d',1,'BroadPhase::FrameSync()'],['../class_broad_phase_quad_tree.html#aed698682cac2d4b1ab94dcd65ccd5ebf',1,'BroadPhaseQuadTree::FrameSync()']]], + ['free_50',['free',['../class_temp_allocator_impl_with_malloc_fallback.html#a2cdead10d53265be2316934e55684b29',1,'TempAllocatorImplWithMallocFallback::Free()'],['../class_temp_allocator_malloc.html#a03b9827f7300d701f22d6ca53ba9d686',1,'TempAllocatorMalloc::Free()'],['../_memory_8cpp.html#acb8618ad315c24ed37db3ad6b2ff60fc',1,'Free: Memory.cpp'],['../_memory_8h.html#afff7dd3001cffbed9e362e4012b7f3af',1,'Free: Memory.cpp'],['../_memory_8cpp.html#a186d7d4171081fcb2fe0434d2267bf39',1,'Free(void *inBlock): Memory.cpp'],['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51bab24ce0cd392a5b0b8dedc66c25213594',1,'Free: PathConstraint.h'],['../class_temp_allocator_impl.html#aa7b2ea67b67c57c776d4c2a415b430ba',1,'TempAllocatorImpl::Free()'],['../class_temp_allocator.html#a1d9399cbf93c253a7f03d8ffea249bfe',1,'TempAllocator::Free()']]], + ['freebody_51',['FreeBody',['../class_body_manager.html#ac9b3fea305ee74fb2cb1d70d4773aee0',1,'BodyManager']]], + ['freefunction_52',['FreeFunction',['../_memory_8h.html#a57f7cd4691f45cd3537b6e8fd3705eb0',1,'Memory.h']]], + ['freejob_53',['freejob',['../class_job_system.html#aa74329d956a01e3f2f219ea22bdc5097',1,'JobSystem::FreeJob()'],['../class_job_system_thread_pool.html#af916eac26591613c671484a3b60ab047',1,'JobSystemThreadPool::FreeJob()'],['../class_job_system_single_threaded.html#abb23fc08db8c653059c7ab32e44fd7fd',1,'JobSystemSingleThreaded::FreeJob()']]], + ['freetriangle_54',['freetriangle',['../class_e_p_a_convex_hull_builder_1_1_triangle_factory.html#a9a830ace866a248b1238eed4157e8925',1,'EPAConvexHullBuilder::TriangleFactory::FreeTriangle()'],['../class_e_p_a_convex_hull_builder.html#a8a5be413b034888eeb3ccc384e1ca9ec',1,'EPAConvexHullBuilder::FreeTriangle()']]], + ['frequencyanddamping_55',['FrequencyAndDamping',['../_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512da52630869b4ed10261d514c91e9c9c018',1,'SpringSettings.h']]], + ['from_20constraints_56',['Build Islands from Constraints',['../index.html#build-islands-from-constraints',1,'']]], + ['fromfloat_57',['FromFloat',['../namespace_half_float_conversion.html#a65b0aba81626b49a45fb9ac238c04d2d',1,'HalfFloatConversion']]], + ['fromfloatfallback_58',['FromFloatFallback',['../namespace_half_float_conversion.html#af81e63a2dc6f5cdfeb150d4dab3fdcbc',1,'HalfFloatConversion']]], + ['fromhandle_59',['FromHandle',['../class_lock_free_hash_map.html#a0705a68e432c61be72d5f6fdfffb2d85',1,'LockFreeHashMap']]], + ['frommatrix_60',['FromMatrix',['../class_skeletal_animation_1_1_joint_state.html#a1481a144208ed55cecd270be18ff0744',1,'SkeletalAnimation::JointState']]], + ['fromoffset_61',['FromOffset',['../class_l_f_h_m_allocator.html#abcf9394d71567a53088ce79cf96ed0e1',1,'LFHMAllocator']]], + ['fromphysicssystem_62',['FromPhysicsSystem',['../class_physics_scene.html#a1d9c48d1813a7109550be1b5f8d94c20',1,'PhysicsScene']]], + ['fromsettings_63',['FromSettings',['../struct_compound_shape_1_1_sub_shape.html#a2ea825bfb79c5d059768e60d7b8997d2',1,'CompoundShape::SubShape']]], + ['front_64',['front',['../class_array.html#ad8c3916e62ff98cbe99f94be4dbaeb5a',1,'Array::front()'],['../class_static_array.html#a519467de065745ac462b4bb3878ef8a3',1,'StaticArray::front()'],['../class_static_array.html#aa0626580d53d352633f0a1f5af5ecb12',1,'StaticArray::front() const'],['../class_array.html#aed0c6709d99c58e1fa69467d44b7c933',1,'Array::front()']]], + ['fullyconstrained_65',['FullyConstrained',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51ba22d4f54f5a2001373cac7b8d8f246f11',1,'PathConstraint.h']]], + ['functionality_66',['functionality',['../md__docs_2_release_notes.html#autotoc_md62',1,'Major new functionality'],['../md__docs_2_release_notes.html#autotoc_md55',1,'New functionality'],['../md__docs_2_release_notes.html#autotoc_md52',1,'New functionality'],['../md__docs_2_release_notes.html#autotoc_md49',1,'New functionality'],['../md__docs_2_release_notes.html#autotoc_md35',1,'New Functionality'],['../md__docs_2_release_notes.html#autotoc_md23',1,'New functionality'],['../md__docs_2_release_notes.html#autotoc_md19',1,'New functionality'],['../md__docs_2_release_notes.html#autotoc_md56',1,'Removed functionality'],['../md__docs_2_release_notes.html#autotoc_md46',1,'Removed functionality']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 000000000..2c213c983 --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,546 @@ +var searchData= +[ + ['g_0',['g',['../class_color.html#a895f2e61ca018a91877f52021f8748bd',1,'Color']]], + ['gaussianelimination_1',['GaussianElimination',['../_gaussian_elimination_8h.html#a292d56457a5c67858f083798c34b111c',1,'GaussianElimination.h']]], + ['gaussianelimination_2eh_2',['GaussianElimination.h',['../_gaussian_elimination_8h.html',1,'']]], + ['gear_3',['Gear',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dafb845762a66c26782f477febab5344dc',1,'Constraint.h']]], + ['gearconstraint_4',['gearconstraint',['../class_gear_constraint.html',1,'GearConstraint'],['../class_gear_constraint.html#a0eedf414f9aa01e1ceab2a400c2b2a02',1,'GearConstraint::GearConstraint()']]], + ['gearconstraint_2ecpp_5',['GearConstraint.cpp',['../_gear_constraint_8cpp.html',1,'']]], + ['gearconstraint_2eh_6',['GearConstraint.h',['../_gear_constraint_8h.html',1,'']]], + ['gearconstraintpart_7',['GearConstraintPart',['../class_gear_constraint_part.html',1,'']]], + ['gearconstraintpart_2eh_8',['GearConstraintPart.h',['../_gear_constraint_part_8h.html',1,'']]], + ['gearconstraintsettings_9',['GearConstraintSettings',['../class_gear_constraint_settings.html',1,'']]], + ['general_10',['General',['../md__docs_2_samples.html#autotoc_md14',1,'']]], + ['general_20controls_11',['General Controls',['../md__docs_2_samples.html#autotoc_md2',1,'']]], + ['geodesicdistance_12',['GeodesicDistance',['../class_soft_body_shared_settings.html#a288bafac0b3882214b806d7483e84419a57d05fb9844ead3595f0162bdbe65ce2',1,'SoftBodySharedSettings']]], + ['geometry_13',['geometry',['../class_debug_renderer_1_1_geometry.html#adbeec8d400a76ce450aa03945fb3e68f',1,'DebugRenderer::Geometry::Geometry(const Batch &inBatch, const AABox &inBounds)'],['../class_debug_renderer_1_1_geometry.html#ab8b592353d4dc5893906a109bfaf7a5c',1,'DebugRenderer::Geometry::Geometry(const AABox &inBounds)'],['../class_debug_renderer_1_1_geometry.html',1,'DebugRenderer::Geometry']]], + ['geometryblob_14',['GeometryBlob',['../struct_debug_renderer_recorder_1_1_geometry_blob.html',1,'DebugRendererRecorder']]], + ['geometryref_15',['GeometryRef',['../class_debug_renderer.html#a14f985628f2a9b8fe574ba2ba6e2c1bb',1,'DebugRenderer']]], + ['get_16',['get',['../class_byte_buffer.html#a502a857a7380d4ef9cdf880563a426ef',1,'ByteBuffer::Get(size_t inPosition)'],['../class_byte_buffer.html#afc33bc408efa8e38051debb2c4f64aa8',1,'ByteBuffer::Get(size_t inPosition) const'],['../class_fixed_size_free_list.html#accd9130a85781885d0d5f669ce0a86f1',1,'FixedSizeFreeList::Get()'],['../class_result.html#ab3d845db638a6a51467760867bfc472a',1,'Result::Get()'],['../class_fixed_size_free_list.html#afcfce9ec76b8df6291beac70ab699080',1,'FixedSizeFreeList::Get()']]], + ['get_5fallocator_17',['get_allocator',['../class_array.html#aa786807555ceba5b3ba76839aff2a92b',1,'Array::get_allocator() const'],['../class_array.html#ae5fb070c8068c0ac54d5c7f62d8f39dc',1,'Array::get_allocator()']]], + ['getaccumulatedforce_18',['getaccumulatedforce',['../class_motion_properties.html#ab2db20476c9ab24b796a9f5877caaea5',1,'MotionProperties::GetAccumulatedForce()'],['../class_body.html#ad6c366c23710a8f103f6504cfccccc93',1,'Body::GetAccumulatedForce()']]], + ['getaccumulatedtorque_19',['getaccumulatedtorque',['../class_motion_properties.html#a73cef0ab26c9bc15a2908e632c953bc2',1,'MotionProperties::GetAccumulatedTorque()'],['../class_body.html#a9294deeff168fbb210f24f25e063fb38',1,'Body::GetAccumulatedTorque()']]], + ['getactivebodies_20',['getactivebodies',['../class_physics_system.html#aac0c682798c1fc5c78977b0dc4b24b7d',1,'PhysicsSystem::GetActiveBodies()'],['../class_body_manager.html#aae54df1753149fbac33cb8ea6f930da7',1,'BodyManager::GetActiveBodies()']]], + ['getactivebodiesunsafe_21',['getactivebodiesunsafe',['../class_physics_system.html#ae3f5ce308a831074e1e0fff453862584',1,'PhysicsSystem::GetActiveBodiesUnsafe()'],['../class_body_manager.html#ac646f95e699a7d4525d65407ee3bea69',1,'BodyManager::GetActiveBodiesUnsafe()']]], + ['getactiveconstraints_22',['GetActiveConstraints',['../class_constraint_manager.html#a6620266366dc35c2bf3877530a0d0c2a',1,'ConstraintManager']]], + ['getactivecontacts_23',['GetActiveContacts',['../class_character_virtual.html#a2fcecdf5b3e0f584f2bb7ec5a128dbe6',1,'CharacterVirtual']]], + ['getaffectedbodies_24',['GetAffectedBodies',['../class_contact_constraint_manager.html#a81dea14ac1bd33f74a07085690095403',1,'ContactConstraintManager']]], + ['getallbodiesmutexmask_25',['getallbodiesmutexmask',['../class_body_lock_interface.html#a76bee9cac091824dea84407a94a557f6',1,'BodyLockInterface::GetAllBodiesMutexMask()'],['../class_body_manager.html#a4e54107c92d7ac62098e267ab8d16eb2',1,'BodyManager::GetAllBodiesMutexMask()']]], + ['getallclasses_26',['GetAllClasses',['../class_factory.html#aa67bdc2e09c649caf997ffbe9ce32fa5',1,'Factory']]], + ['getallkeyvalues_27',['GetAllKeyValues',['../class_lock_free_hash_map.html#a483d330f8722f8ad6f6398b1d4d81653',1,'LockFreeHashMap']]], + ['getallocator_28',['GetAllocator',['../class_s_t_l_temp_allocator.html#ae25b34d6dc7cb58c9108f4ba197353f2',1,'STLTempAllocator']]], + ['getalloweddofs_29',['GetAllowedDOFs',['../class_motion_properties.html#ae2bc5e1e111514783c9df29987815516',1,'MotionProperties']]], + ['getallowsleeping_30',['getallowsleeping',['../class_body.html#a1de301b3077fe2ae6339b910573ef3c6',1,'Body::GetAllowSleeping()'],['../class_motion_properties.html#ae85a09814d25c0550eb408d3798e7f08',1,'MotionProperties::GetAllowSleeping() const']]], + ['getangulardamping_31',['GetAngularDamping',['../class_motion_properties.html#a778022ed795539ac55eb26f7bd4080e6',1,'MotionProperties']]], + ['getangulardofsmask_32',['GetAngularDOFsMask',['../class_motion_properties.html#ae0c08282aaf3b1a38cd958c32840e329',1,'MotionProperties']]], + ['getangularvelocity_33',['getangularvelocity',['../class_body.html#adb1bb49db094ac2ef7c4951d07ba8417',1,'Body::GetAngularVelocity()'],['../class_body_interface.html#a0e14c414d534c2eefc77b218bb36c197',1,'BodyInterface::GetAngularVelocity()'],['../class_motion_properties.html#a66348339a05a43b730e1591273aace18',1,'MotionProperties::GetAngularVelocity()'],['../class_vehicle_engine.html#ae6735223f4b1d1fc898309e671504731',1,'VehicleEngine::GetAngularVelocity()'],['../class_wheel.html#ad2da83076a68424179c3928b123c086c',1,'Wheel::GetAngularVelocity()']]], + ['getanimatedjoints_34',['getanimatedjoints',['../class_skeletal_animation.html#a97437c1bae4626bb0c1e289db73dd712',1,'SkeletalAnimation::GetAnimatedJoints() const'],['../class_skeletal_animation.html#a364b26f699464be275b70b5cf9f4f76c',1,'SkeletalAnimation::GetAnimatedJoints()']]], + ['getapplygyroscopicforce_35',['GetApplyGyroscopicForce',['../class_body.html#af7a0aaf1d49d9be5ffb7d6f195d3c74a',1,'Body']]], + ['getattribute_36',['GetAttribute',['../class_r_t_t_i.html#af400a619d0e542926dba2f0a557bcd4b',1,'RTTI']]], + ['getattributecount_37',['GetAttributeCount',['../class_r_t_t_i.html#a0fbba51204c3fbdef9a3ca57ed1951e7',1,'RTTI']]], + ['getaxisangle_38',['GetAxisAngle',['../class_quat.html#a618a8eb64122263b8c64109f03ac47b5',1,'Quat']]], + ['getaxisx_39',['getaxisx',['../class_mat44.html#aa71942f9a684cf2e0e55f8c9ba8f5b99',1,'Mat44::GetAxisX()'],['../class_d_mat44.html#ab5982c4a0d185632cb8a734741b74f69',1,'DMat44::GetAxisX()']]], + ['getaxisy_40',['getaxisy',['../class_mat44.html#a03967bba6efbe4a03e6f1b888e1436a7',1,'Mat44::GetAxisY()'],['../class_d_mat44.html#aea9981dbffac1c05f195bf1ad1391523',1,'DMat44::GetAxisY()']]], + ['getaxisz_41',['getaxisz',['../class_mat44.html#a19fc28cb3d425e8b4f462c939bc595fa',1,'Mat44::GetAxisZ()'],['../class_d_mat44.html#ae8a76e5a80b166da697b2581567ff5af',1,'DMat44::GetAxisZ()']]], + ['getbarycentriccoordinates_42',['getbarycentriccoordinates',['../namespace_closest_point.html#a194f91c80641bfd1071c5316705a2c85',1,'ClosestPoint::GetBaryCentricCoordinates(Vec3Arg inA, Vec3Arg inB, float &outU, float &outV)'],['../namespace_closest_point.html#ae01251b466c3944d7c9cc6a9e01ce915',1,'ClosestPoint::GetBaryCentricCoordinates(Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, float &outU, float &outV, float &outW)']]], + ['getbaseclass_43',['GetBaseClass',['../class_r_t_t_i.html#a381b52d75fb6242d201da76ff685412c',1,'RTTI']]], + ['getbaseclasscount_44',['GetBaseClassCount',['../class_r_t_t_i.html#a99d67628c5549e56c77ba1ef5294d64f',1,'RTTI']]], + ['getbias_45',['GetBias',['../class_spring_part.html#a42a39d96e15ae84419256c35067e12ad',1,'SpringPart']]], + ['getblocksize_46',['GetBlockSize',['../class_height_field_shape.html#ad67c93d5bb0e12774afb528509767a7e',1,'HeightFieldShape']]], + ['getbodies_47',['getbodies',['../class_physics_scene.html#aeceb248f05ae64111f2d05f223cfbeed',1,'PhysicsScene::GetBodies()'],['../class_physics_system.html#a01018de422e55bc7e23a17f318ecdd1f',1,'PhysicsSystem::GetBodies()'],['../class_physics_scene.html#a181babf1dcea362ab2077564b0f98b97',1,'PhysicsScene::GetBodies()'],['../class_body_manager.html#ace4bb400f2a6b4f17e04aa10134dee4f',1,'BodyManager::GetBodies()'],['../class_body_manager.html#ac6c6a208195a666e62fc3bd9c4456bfa',1,'BodyManager::GetBodies() const']]], + ['getbodiesinisland_48',['GetBodiesInIsland',['../class_island_builder.html#ace0201e247b5fcb9639bba23b385e718',1,'IslandBuilder']]], + ['getbody_49',['getbody',['../class_body_lock_base.html#aa79bd3d8f64b4f92a2744737eddc6e59',1,'BodyLockBase::GetBody()'],['../class_body_lock_multi_base.html#a4598ff93b693a8679203b4fc72965786',1,'BodyLockMultiBase::GetBody()'],['../class_body_manager.html#ae89bc88048a56cbf21d70e78ec142a18',1,'BodyManager::GetBody(const BodyID &inID) const'],['../class_body_manager.html#a2ac7db2095cb425b04bdad508e2acc4f',1,'BodyManager::GetBody(const BodyID &inID)']]], + ['getbody1_50',['GetBody1',['../class_two_body_constraint.html#ae09dc01720e01f71e480f2ce3da32918',1,'TwoBodyConstraint']]], + ['getbody1id_51',['GetBody1ID',['../class_sub_shape_i_d_pair.html#a990a2912033187dda623e9ed0c265f9b',1,'SubShapeIDPair']]], + ['getbody2_52',['GetBody2',['../class_two_body_constraint.html#a9ede1df27455ff0177a7a4501bf3342a',1,'TwoBodyConstraint']]], + ['getbody2id_53',['GetBody2ID',['../class_sub_shape_i_d_pair.html#af3c86ba7be149254f34e9244e83e8914',1,'SubShapeIDPair']]], + ['getbodyactivationlistener_54',['getbodyactivationlistener',['../class_physics_system.html#a8fd2362a6a9377d74902653f42e83170',1,'PhysicsSystem::GetBodyActivationListener()'],['../class_body_manager.html#a3bb9c3e62332a39fd9ac1eac4c12ca52',1,'BodyManager::GetBodyActivationListener()']]], + ['getbodycount_55',['GetBodyCount',['../class_ragdoll.html#a6395143c1655e5272eccdf0895d57c53',1,'Ragdoll']]], + ['getbodycreationsettings_56',['GetBodyCreationSettings',['../class_body.html#aad1ce1d84e95cab008fb239465b3496f',1,'Body']]], + ['getbodyfilter_57',['GetBodyFilter',['../class_vehicle_collision_tester.html#a939d34aac9aaf7f481c4959784597605',1,'VehicleCollisionTester']]], + ['getbodyid_58',['getbodyid',['../class_ragdoll.html#ac57cdfcd77dc9dce4679fcb45012083a',1,'Ragdoll::GetBodyID()'],['../class_character.html#a3d54e80af16da4731c1ec83f2a2f06f2',1,'Character::GetBodyID()']]], + ['getbodyids_59',['getbodyids',['../class_ragdoll.html#a98603396696b276256ffe74283a26fca',1,'Ragdoll::GetBodyIDs()'],['../class_body_manager.html#aa65000b18f18a1d02bf432446dff7c05',1,'BodyManager::GetBodyIDs()']]], + ['getbodyindextoconstraintindex_60',['GetBodyIndexToConstraintIndex',['../class_ragdoll_settings.html#a0d32abac6067ec311bb89c65f1fd6e3e',1,'RagdollSettings']]], + ['getbodyindicesforconstraintindex_61',['GetBodyIndicesForConstraintIndex',['../class_ragdoll_settings.html#abf5abd1cf5ac17cd649c7ad69366b63e',1,'RagdollSettings']]], + ['getbodyinterface_62',['getbodyinterface',['../class_physics_system.html#a35474557b977d2a03e7b5e7c920bf2ee',1,'PhysicsSystem::GetBodyInterface() const'],['../class_physics_system.html#a579bc839c332cf3523c3eb2b03c98e3e',1,'PhysicsSystem::GetBodyInterface()']]], + ['getbodyinterfacenolock_63',['getbodyinterfacenolock',['../class_physics_system.html#a55216f4cfc718d052548baac4ba098d7',1,'PhysicsSystem::GetBodyInterfaceNoLock() const'],['../class_physics_system.html#a9da48916fec4a9b9af533a84785aa455',1,'PhysicsSystem::GetBodyInterfaceNoLock()']]], + ['getbodylockinterface_64',['GetBodyLockInterface',['../class_physics_system.html#a3ec396058f674026726e59dc7ad20609',1,'PhysicsSystem']]], + ['getbodylockinterfacenolock_65',['GetBodyLockInterfaceNoLock',['../class_physics_system.html#ad381ea5bd5568b20ae05c1229dbff49e',1,'PhysicsSystem']]], + ['getbodystats_66',['getbodystats',['../class_body_manager.html#a63c55f1d5d3ed30c4aa6a19ad14713ac',1,'BodyManager::GetBodyStats()'],['../class_physics_system.html#ad826f67ef4fd3a1457cf9d8d6892d5cb',1,'PhysicsSystem::GetBodyStats()']]], + ['getbodytype_67',['getbodytype',['../class_body.html#a864a31f176da8e3329f83cb65c23f3d6',1,'Body::GetBodyType()'],['../class_body_interface.html#abeb48122f4f459d13cea20f1f4dbaf07',1,'BodyInterface::GetBodyType()']]], + ['getbottomradius_68',['GetBottomRadius',['../class_tapered_cylinder_shape.html#aaee64d4f2c1c12cb97908be7872dbd66',1,'TaperedCylinderShape']]], + ['getbounds_69',['getbounds',['../class_physics_system.html#a7f87f05d94f62054d6f3e975b613d2f0',1,'PhysicsSystem::GetBounds()'],['../class_quad_tree.html#a809502262f3bd9d11318763758ae6e7e',1,'QuadTree::GetBounds()'],['../class_broad_phase_quad_tree.html#ab985dcdd61af886d4bcfbb3858fb1b1d',1,'BroadPhaseQuadTree::GetBounds()'],['../class_broad_phase_brute_force.html#a64c0008d13703a25a0bfb3f3d1556f5d',1,'BroadPhaseBruteForce::GetBounds()'],['../class_broad_phase.html#ac1c7ee25257e8b1c1e89f6bd610d77fb',1,'BroadPhase::GetBounds()']]], + ['getbrakeinput_70',['getbrakeinput',['../class_wheeled_vehicle_controller.html#aa087571387d316eee2e8ed7fb500b291',1,'WheeledVehicleController::GetBrakeInput()'],['../class_tracked_vehicle_controller.html#a3643a17beaee68e91eb2777b8a6639c7',1,'TrackedVehicleController::GetBrakeInput()']]], + ['getbroadphaselayer_71',['getbroadphaselayer',['../class_body.html#a4b9b625f789caa55cc9a3c7663644011',1,'Body::GetBroadPhaseLayer()'],['../class_broad_phase_layer_interface.html#a5007c9b9beab5c16af36e89b48cd06cb',1,'BroadPhaseLayerInterface::GetBroadPhaseLayer()'],['../class_broad_phase_layer_interface_mask.html#a75300021e8d32e840ec8eb0d4a292b5a',1,'BroadPhaseLayerInterfaceMask::GetBroadPhaseLayer()'],['../class_broad_phase_layer_interface_table.html#a0606a1dec4b344e326ed643f97929d2f',1,'BroadPhaseLayerInterfaceTable::GetBroadPhaseLayer()']]], + ['getbroadphaselayerfilter_72',['GetBroadPhaseLayerFilter',['../class_vehicle_collision_tester.html#aab2fe07b1c74654b925b64409d5a6210',1,'VehicleCollisionTester']]], + ['getbroadphaselayername_73',['getbroadphaselayername',['../class_broad_phase_layer_interface.html#af599bec360da5437bfc74cb0fd749225',1,'BroadPhaseLayerInterface::GetBroadPhaseLayerName()'],['../class_broad_phase_layer_interface_mask.html#aaf3574120e2a6941af759af7feec9746',1,'BroadPhaseLayerInterfaceMask::GetBroadPhaseLayerName()'],['../class_broad_phase_layer_interface_table.html#ac85f1b6915faa433719b8d6a28886428',1,'BroadPhaseLayerInterfaceTable::GetBroadPhaseLayerName()']]], + ['getbroadphasequery_74',['GetBroadPhaseQuery',['../class_physics_system.html#a3d621cc72c69b73cdcc13bdb3b0dddc4',1,'PhysicsSystem']]], + ['getbuffer_75',['getbuffer',['../class_a_a_b_b_tree_to_buffer.html#a841bb385899da6eb30c41c225ff61ddf',1,'AABBTreeToBuffer::GetBuffer() const'],['../class_a_a_b_b_tree_to_buffer.html#acae333f2766987a53f64a7beea67904b',1,'AABBTreeToBuffer::GetBuffer()']]], + ['getcenter_76',['getcenter',['../class_a_a_box.html#ae39e3c3fee87093735787b4c3fd58a8d',1,'AABox::GetCenter()'],['../class_sphere.html#a58cd6715b3ab45d6ad8baaa369f31fd1',1,'Sphere::GetCenter()']]], + ['getcenterofmass_77',['getcenterofmass',['../class_compound_shape.html#aeec4b7c1a31225a01b314f2528f27b24',1,'CompoundShape::GetCenterOfMass()'],['../class_convex_hull_shape.html#a0f05c53d66e43a401aca34de00d700c1',1,'ConvexHullShape::GetCenterOfMass()'],['../class_decorated_shape.html#aa17a9fb29ce78eafc01cc8140d754dd6',1,'DecoratedShape::GetCenterOfMass()'],['../class_offset_center_of_mass_shape.html#a9479ac77a9f53c5664f85b7a93135d95',1,'OffsetCenterOfMassShape::GetCenterOfMass()'],['../class_rotated_translated_shape.html#a7d7b6b0edc6dd89125cab13d77eb3585',1,'RotatedTranslatedShape::GetCenterOfMass()'],['../class_scaled_shape.html#af9e8b8bdbc341d1b0f0caa497505d0f7',1,'ScaledShape::GetCenterOfMass()'],['../class_shape.html#a7e34b0626a40c31db0b2a761922adb1a',1,'Shape::GetCenterOfMass()'],['../class_tapered_capsule_shape.html#a66f2f00aa6cbbc1fe683d15993c3e736',1,'TaperedCapsuleShape::GetCenterOfMass()'],['../class_tapered_cylinder_shape.html#aeb0b2e5422e70ba7e8c707f3445e960a',1,'TaperedCylinderShape::GetCenterOfMass()'],['../class_soft_body_shape.html#ade435c48ffcf2c054b84dedd23e87148',1,'SoftBodyShape::GetCenterOfMass()']]], + ['getcenterofmassandvolume_78',['GetCenterOfMassAndVolume',['../class_convex_hull_builder.html#a4e3fbe324250233f9a3d527004d08c09',1,'ConvexHullBuilder']]], + ['getcenterofmassposition_79',['getcenterofmassposition',['../class_body.html#a10bf9dd2b7c39a93568e8eb3ada8da2a',1,'Body::GetCenterOfMassPosition()'],['../class_body_interface.html#a2d3c9157b54b0dad58af5d90056a1334',1,'BodyInterface::GetCenterOfMassPosition()'],['../class_character.html#a9c169077da6b5931e1f0bb2431e8f02f',1,'Character::GetCenterOfMassPosition()'],['../class_character_virtual.html#a44dfb8aa6d88860b6a4ff094d211871e',1,'CharacterVirtual::GetCenterOfMassPosition()']]], + ['getcenterofmasstransform_80',['getcenterofmasstransform',['../class_body.html#a9431bfa66a018714074fe149c7a65ac5',1,'Body::GetCenterOfMassTransform()'],['../class_character_virtual.html#aad9788892410b982d43bbd34ef8a016c',1,'CharacterVirtual::GetCenterOfMassTransform()'],['../class_body_interface.html#a4a0420af0583a689216522fb1c367edc',1,'BodyInterface::GetCenterOfMassTransform()'],['../class_transformed_shape.html#afba760db30ccff8c59547cce78bd97a4',1,'TransformedShape::GetCenterOfMassTransform()']]], + ['getcentroid_81',['getcentroid',['../class_indexed_triangle_no_material.html#a279fe96ec89d38fe6eaafa515ff27cb1',1,'IndexedTriangleNoMaterial::GetCentroid()'],['../class_triangle.html#a680a9a904aaad1f8a495f8ec667fbf70',1,'Triangle::GetCentroid()']]], + ['getchains_82',['getchains',['../class_skeleton_mapper.html#a5438aa5e4ec00c89a000a12db4d4c8d4',1,'SkeletonMapper::GetChains()'],['../class_skeleton_mapper.html#ad60ebc6d5ff4c2d1402199c56f698c4a',1,'SkeletonMapper::GetChains() const']]], + ['getcharacterpadding_83',['GetCharacterPadding',['../class_character_virtual.html#a643ed04caa01ba9e4e4fc9d5058dc3d7',1,'CharacterVirtual']]], + ['getclosestpoint_84',['getclosestpoint',['../class_path_constraint_path_hermite.html#a9675ad7e14e9cc9f7b07b9df0d6cfffc',1,'PathConstraintPathHermite::GetClosestPoint()'],['../class_path_constraint_path.html#aa84329614fd89561c555e2af0d4381a2',1,'PathConstraintPath::GetClosestPoint()'],['../class_ellipse.html#a07b49662cd16799da0e0b1a1d67a8d84',1,'Ellipse::GetClosestPoint()'],['../class_a_a_box.html#aac4e2dce7616f266b7ef3ae25a9a9aac',1,'AABox::GetClosestPoint()']]], + ['getclosestpointonline_85',['GetClosestPointOnLine',['../namespace_closest_point.html#ad687ef98922a03b7128a5d3a5a64ab39',1,'ClosestPoint']]], + ['getclosestpointontetrahedron_86',['GetClosestPointOnTetrahedron',['../namespace_closest_point.html#abafebdbe3dea0fe6674c20fc9ccc8540',1,'ClosestPoint']]], + ['getclosestpointontriangle_87',['GetClosestPointOnTriangle',['../namespace_closest_point.html#a25fcaaf786d8724b11d02406ab74e0bc',1,'ClosestPoint']]], + ['getclosestpoints_88',['GetClosestPoints',['../class_g_j_k_closest_point.html#abb7cfdd49d708007d75b4c2e9b90ebb9',1,'GJKClosestPoint']]], + ['getclosestpointssimplex_89',['GetClosestPointsSimplex',['../class_g_j_k_closest_point.html#a73d6f276fb275026a0126ca7361fb2bf',1,'GJKClosestPoint']]], + ['getclutchfriction_90',['GetClutchFriction',['../class_vehicle_transmission.html#a2dc82e524311127f8bb8d5fe2cd63809',1,'VehicleTransmission']]], + ['getcollidekinematicvsnondynamic_91',['GetCollideKinematicVsNonDynamic',['../class_body.html#a8bb48012c114b300a9bfdd296cfe0546',1,'Body']]], + ['getcollisiongroup_92',['getcollisiongroup',['../class_body.html#a5865492b92c7c2e321c6916e80f5b7cb',1,'Body::GetCollisionGroup() const'],['../class_body.html#aca55936886e8c9d4dc072efa6e7baa47',1,'Body::GetCollisionGroup()']]], + ['getcols_93',['getcols',['../class_dyn_matrix.html#a14b89bcd36316ecbf0fd94ea6a7d255e',1,'DynMatrix::GetCols()'],['../class_matrix.html#a45bd49a18dec51ca82c58aa5d12572be',1,'Matrix::GetCols() const']]], + ['getcolumn_94',['getcolumn',['../class_matrix.html#a82a128d3923926e678aa6acc94f2f05d',1,'Matrix::GetColumn(int inIdx)'],['../class_matrix.html#a92a370676cc7e0788bc217a358170b4a',1,'Matrix::GetColumn(int inIdx) const']]], + ['getcolumn3_95',['getcolumn3',['../class_mat44.html#a4d34298d2040673cfd9b86c5cb83a5b9',1,'Mat44::GetColumn3()'],['../class_d_mat44.html#ae81ea58eee1dbea2c92d11272b9e8f7b',1,'DMat44::GetColumn3()']]], + ['getcolumn4_96',['getcolumn4',['../class_mat44.html#a97c469ed78611039f85415381a67f312',1,'Mat44::GetColumn4()'],['../class_d_mat44.html#a2b3ddba8891381c2728bba83638a1003',1,'DMat44::GetColumn4()']]], + ['getcombinefriction_97',['getcombinefriction',['../class_vehicle_constraint.html#a2d6d79ed657818da23c2ede0bc326f13',1,'VehicleConstraint::GetCombineFriction()'],['../class_physics_system.html#ae19842257ae5c36c88dd4dbead21e55f',1,'PhysicsSystem::GetCombineFriction()'],['../class_contact_constraint_manager.html#a2f9d4fe92f6b8a2952b51acb10f55258',1,'ContactConstraintManager::GetCombineFriction() const']]], + ['getcombinerestitution_98',['getcombinerestitution',['../class_contact_constraint_manager.html#a3e9f74aa49c583d6656430fa421326ab',1,'ContactConstraintManager::GetCombineRestitution()'],['../class_physics_system.html#aad39e9dd77faf9b578460b66451334e7',1,'PhysicsSystem::GetCombineRestitution()']]], + ['getcompounduserdata_99',['GetCompoundUserData',['../class_compound_shape.html#a596eae9a25f8ed13ac35f2a58b318368',1,'CompoundShape']]], + ['getconfigurationstring_100',['GetConfigurationString',['../_configuration_string_8h.html#afe111af004398b9269362467f062bf75',1,'ConfigurationString.h']]], + ['getconstant_101',['GetConstant',['../class_plane.html#a3510818ed64a5d821041da28102fc4d1',1,'Plane']]], + ['getconstraint_102',['getconstraint',['../class_ragdoll.html#a86b347f11599361d0cf8bddcacad4295',1,'Ragdoll::GetConstraint(int inConstraintIndex)'],['../class_ragdoll.html#a001b9a360f16a8a24d7cc547c763bbd8',1,'Ragdoll::GetConstraint(int inConstraintIndex) const']]], + ['getconstraintcount_103',['GetConstraintCount',['../class_ragdoll.html#a4aed9348c613c386d5cf32c25e3931f2',1,'Ragdoll']]], + ['getconstraintindexforbodyindex_104',['GetConstraintIndexForBodyIndex',['../class_ragdoll_settings.html#a1749cda0e9b21d71951d950561eed206',1,'RagdollSettings']]], + ['getconstraintindextobodyidxpair_105',['GetConstraintIndexToBodyIdxPair',['../class_ragdoll_settings.html#a7e1760aeb58718b818dc1c30f7049678',1,'RagdollSettings']]], + ['getconstraintpriority_106',['GetConstraintPriority',['../class_constraint.html#a6c75250d651da3854eda9e929193e585',1,'Constraint']]], + ['getconstraints_107',['getconstraints',['../class_physics_system.html#a69c9f67351312d43f8e1c1f5d23fdf99',1,'PhysicsSystem::GetConstraints()'],['../class_physics_scene.html#ad728df0dcebeab7a8796f6e0bb44a97f',1,'PhysicsScene::GetConstraints()'],['../class_physics_scene.html#ab95da1c01a9f35cc651d383308cc9de1',1,'PhysicsScene::GetConstraints() const'],['../class_constraint_manager.html#a28696554e9f5f7b0b2169fa523e80440',1,'ConstraintManager::GetConstraints()']]], + ['getconstraintsettings_108',['getconstraintsettings',['../class_point_constraint.html#a8214c8380eabc71845572309a3f49f53',1,'PointConstraint::GetConstraintSettings()'],['../class_path_constraint.html#a88bfac1b3c744a15f78dbce0d31a4b08',1,'PathConstraint::GetConstraintSettings()'],['../class_swing_twist_constraint.html#ad3c1a46d28973d5ce39917aa2b7a32b0',1,'SwingTwistConstraint::GetConstraintSettings()'],['../class_hinge_constraint.html#aba9c90a3d3565e738758d6ee5b17dcba',1,'HingeConstraint::GetConstraintSettings()'],['../class_pulley_constraint.html#a56ea0bb8295e74fff225c54325df0bb4',1,'PulleyConstraint::GetConstraintSettings()'],['../class_rack_and_pinion_constraint.html#ade013a7ea7be65d4d9001e852ff4782d',1,'RackAndPinionConstraint::GetConstraintSettings()'],['../class_six_d_o_f_constraint.html#aec39d055e72169c5f805a00c16b12ff1',1,'SixDOFConstraint::GetConstraintSettings()'],['../class_slider_constraint.html#a79e425837bce0b6d9955ce61fba14c43',1,'SliderConstraint::GetConstraintSettings()'],['../class_gear_constraint.html#a43c6cb408e182a507528fc2397480a62',1,'GearConstraint::GetConstraintSettings()'],['../class_fixed_constraint.html#a038968466ddd1ca74b02572145a7a7dc',1,'FixedConstraint::GetConstraintSettings()'],['../class_distance_constraint.html#adaee116897c67e802f2c294c44df106d',1,'DistanceConstraint::GetConstraintSettings()'],['../class_constraint.html#a2cb32f0fbbc03050fd09c975e01277d2',1,'Constraint::GetConstraintSettings()'],['../class_cone_constraint.html#aa88d6b874c14c0bfb2d435100fef4c04',1,'ConeConstraint::GetConstraintSettings()'],['../class_vehicle_constraint.html#af953060386f731482956bb772840262c',1,'VehicleConstraint::GetConstraintSettings()']]], + ['getconstraintsinisland_109',['GetConstraintsInIsland',['../class_island_builder.html#abb0ec0d343289ee4294fa3abbde16a82',1,'IslandBuilder']]], + ['getconstraintsinsplit_110',['GetConstraintsInSplit',['../class_large_island_splitter_1_1_splits.html#a45545f0a9f20090f2992a09b015c494c',1,'LargeIslandSplitter::Splits']]], + ['getconstrainttobody1_111',['GetConstraintToBody1',['../class_swing_twist_constraint.html#a4b15b5eed50bb023141968a6eb05a307',1,'SwingTwistConstraint']]], + ['getconstrainttobody1matrix_112',['getconstrainttobody1matrix',['../class_pulley_constraint.html#a8afedbd3de6a5484fda155337ee04b64',1,'PulleyConstraint::GetConstraintToBody1Matrix()'],['../class_point_constraint.html#a11b6acce9456cc5d0c2f34ecaf224f30',1,'PointConstraint::GetConstraintToBody1Matrix()'],['../class_six_d_o_f_constraint.html#a93b7ceef3c7017e4a1a0bc53e29c93d8',1,'SixDOFConstraint::GetConstraintToBody1Matrix()'],['../class_path_constraint.html#a7fd4ca9762f295af3146258606a6e22a',1,'PathConstraint::GetConstraintToBody1Matrix()'],['../class_rack_and_pinion_constraint.html#a0f1f6f27b197ba607c5c4d8d20e7c193',1,'RackAndPinionConstraint::GetConstraintToBody1Matrix()'],['../class_two_body_constraint.html#a0edd748869643b1c904a7bc1314dad7a',1,'TwoBodyConstraint::GetConstraintToBody1Matrix()'],['../class_swing_twist_constraint.html#ab89ec6165c3789f22964700f21695c32',1,'SwingTwistConstraint::GetConstraintToBody1Matrix()'],['../class_slider_constraint.html#aa61f48ae475bbe2130bb1053e4358f24',1,'SliderConstraint::GetConstraintToBody1Matrix()'],['../class_gear_constraint.html#a6e107e42ffd882394b0affda86ef6008',1,'GearConstraint::GetConstraintToBody1Matrix()'],['../class_fixed_constraint.html#a852ac2a355651a1ba586554d1551bcbc',1,'FixedConstraint::GetConstraintToBody1Matrix()'],['../class_distance_constraint.html#affc0247d5a56e7448372aea456e0bd04',1,'DistanceConstraint::GetConstraintToBody1Matrix()'],['../class_cone_constraint.html#a90969c19baeb56184ffed487ecca0864',1,'ConeConstraint::GetConstraintToBody1Matrix()'],['../class_hinge_constraint.html#a2b528317cc292b5538af7df466934016',1,'HingeConstraint::GetConstraintToBody1Matrix()']]], + ['getconstrainttobody2_113',['GetConstraintToBody2',['../class_swing_twist_constraint.html#a79760736ee2bc3afecdf80dfe703fa45',1,'SwingTwistConstraint']]], + ['getconstrainttobody2matrix_114',['getconstrainttobody2matrix',['../class_swing_twist_constraint.html#a2ada7d7eadcc3f9d235cb1d8c75f3e4a',1,'SwingTwistConstraint::GetConstraintToBody2Matrix()'],['../class_slider_constraint.html#a364ce918555ae4df05f788b9e5e041ca',1,'SliderConstraint::GetConstraintToBody2Matrix()'],['../class_six_d_o_f_constraint.html#a92d86c092002bec9d22d529f8616aa29',1,'SixDOFConstraint::GetConstraintToBody2Matrix()'],['../class_rack_and_pinion_constraint.html#a06a84a89bfdc1be4679f60e56defe18a',1,'RackAndPinionConstraint::GetConstraintToBody2Matrix()'],['../class_pulley_constraint.html#aab9c03ae617d8c20d3844f499b33463f',1,'PulleyConstraint::GetConstraintToBody2Matrix()'],['../class_point_constraint.html#a03ec92ce018cfae4900a11ac65032988',1,'PointConstraint::GetConstraintToBody2Matrix()'],['../class_path_constraint.html#aefa354c9926217e88db8741736121f20',1,'PathConstraint::GetConstraintToBody2Matrix()'],['../class_hinge_constraint.html#aae6aa9af08443b65a7ea85323876dde4',1,'HingeConstraint::GetConstraintToBody2Matrix()'],['../class_gear_constraint.html#a100fdd22b7dc94df36529b4be8c27b60',1,'GearConstraint::GetConstraintToBody2Matrix()'],['../class_fixed_constraint.html#a7782ad778c9f110835e6be7a299bfcc7',1,'FixedConstraint::GetConstraintToBody2Matrix()'],['../class_distance_constraint.html#a32c46e7b4a137df6a68f9bd7752ee0cc',1,'DistanceConstraint::GetConstraintToBody2Matrix()'],['../class_cone_constraint.html#a49faa7b82a46f13d0cddec8ee9a1986e',1,'ConeConstraint::GetConstraintToBody2Matrix()'],['../class_two_body_constraint.html#a0966503073a315b6087f10208e8a61ff',1,'TwoBodyConstraint::GetConstraintToBody2Matrix()']]], + ['getcontactallocator_115',['GetContactAllocator',['../class_contact_constraint_manager.html#ae52944ca4945e6255a0f31794cf2aed5',1,'ContactConstraintManager']]], + ['getcontactbodyid_116',['getcontactbodyid',['../class_wheel.html#acc31f12c9bf9049d98397fc721219d10',1,'Wheel::GetContactBodyID()'],['../class_soft_body_manifold.html#a417c2c3d01bddd24f9115fa7641a3baf',1,'SoftBodyManifold::GetContactBodyID()']]], + ['getcontactlateral_117',['GetContactLateral',['../class_wheel.html#a23056c4f6164ec0b1e7a0448a54135c3',1,'Wheel']]], + ['getcontactlistener_118',['getcontactlistener',['../class_contact_constraint_manager.html#a7aa47c7b4d7470e83735deb74eae608d',1,'ContactConstraintManager::GetContactListener()'],['../class_physics_system.html#ae7f5894935da5a4652a6d7ac60ad82e0',1,'PhysicsSystem::GetContactListener()']]], + ['getcontactlongitudinal_119',['GetContactLongitudinal',['../class_wheel.html#a4f4df6da668a8f3d147ee53a3c46910c',1,'Wheel']]], + ['getcontactnormal_120',['getcontactnormal',['../class_soft_body_manifold.html#abb6aad92c3678d927ab04481e30850db',1,'SoftBodyManifold::GetContactNormal()'],['../class_wheel.html#aaff3b5c0de2d6becbebbdbd886b2c7cf',1,'Wheel::GetContactNormal() const']]], + ['getcontactpointvelocity_121',['GetContactPointVelocity',['../class_wheel.html#a909988d11cc3e43ba357a1f9b1d4f101',1,'Wheel']]], + ['getcontactposition_122',['GetContactPosition',['../class_wheel.html#afe7cd7933c99164aefd66c9d5fe2a3eb',1,'Wheel']]], + ['getcontactsfromcache_123',['GetContactsFromCache',['../class_contact_constraint_manager.html#ac438b9748b641a504658e700f0e43305',1,'ContactConstraintManager']]], + ['getcontactsinisland_124',['GetContactsInIsland',['../class_island_builder.html#a39454ff17c3dc0d7b133c79ac2d0d7e0',1,'IslandBuilder']]], + ['getcontactsinsplit_125',['GetContactsInSplit',['../class_large_island_splitter_1_1_splits.html#a9cc12d58718a4c7da7f6ea2508e8b8fc',1,'LargeIslandSplitter::Splits']]], + ['getcontactsubshapeid_126',['GetContactSubShapeID',['../class_wheel.html#a4ed45e80dae82a05fe3a07bd8f81d96f',1,'Wheel']]], + ['getcontext_127',['GetContext',['../class_collision_collector.html#ab9bfe5f6799afc12509d8dbad2c5b90b',1,'CollisionCollector']]], + ['getcontroller_128',['getcontroller',['../class_vehicle_constraint.html#ab0b1fdc09970442c9cb800cbadcf9643',1,'VehicleConstraint::GetController() const'],['../class_vehicle_constraint.html#a4f55ac332056282078f054e099b147cc',1,'VehicleConstraint::GetController()']]], + ['getconvexradius_129',['getconvexradius',['../class_sphere_shape_1_1_sphere_no_convex.html#afd8c26363093475f569d9b01710e66d9',1,'SphereShape::SphereNoConvex::GetConvexRadius()'],['../class_convex_shape_1_1_support.html#ab6255a297bd904ef2c09a9cce6c3c05b',1,'ConvexShape::Support::GetConvexRadius()'],['../class_sphere_shape_1_1_sphere_with_convex.html#a63950fdd2ab3281634f5521a08fb6793',1,'SphereShape::SphereWithConvex::GetConvexRadius()'],['../class_cylinder_shape.html#a4c725b9796a592daafff0476543c4629',1,'CylinderShape::GetConvexRadius()'],['../class_cylinder_shape_1_1_cylinder.html#a0427aea83069b39420bcc5d84e02e11a',1,'CylinderShape::Cylinder::GetConvexRadius()'],['../class_tapered_cylinder_shape.html#a626dfe4f1a56689fa8e3792c2c2f47b1',1,'TaperedCylinderShape::GetConvexRadius()'],['../class_triangle_shape.html#ad05039d8e56aca9a7f1e83453f4e897e',1,'TriangleShape::GetConvexRadius()'],['../class_tapered_capsule_shape_1_1_tapered_capsule.html#a44fd5dde5c0b781753c7d58005272a5b',1,'TaperedCapsuleShape::TaperedCapsule::GetConvexRadius()'],['../class_tapered_cylinder_shape_1_1_tapered_cylinder.html#a1a34aff6da2ce5e2a274d484a8460cb4',1,'TaperedCylinderShape::TaperedCylinder::GetConvexRadius()'],['../class_triangle_shape_1_1_triangle_with_convex.html#ac62eb3e67195f25c99f68e752afb7082',1,'TriangleShape::TriangleWithConvex::GetConvexRadius()'],['../class_capsule_shape_1_1_capsule_no_convex.html#ac5c3f5013f55a44ca8a27f4f26bcdd7e',1,'CapsuleShape::CapsuleNoConvex::GetConvexRadius()'],['../class_triangle_shape_1_1_triangle_no_convex.html#a9a3136e6697ef368555225a6e12f0149',1,'TriangleShape::TriangleNoConvex::GetConvexRadius()'],['../class_convex_hull_shape_1_1_hull_with_convex_scaled.html#a35a3f457cbdae6352227be61c356bba1',1,'ConvexHullShape::HullWithConvexScaled::GetConvexRadius()'],['../class_convex_hull_shape_1_1_hull_with_convex.html#a069ec0a55025c42b3496246b949cd596',1,'ConvexHullShape::HullWithConvex::GetConvexRadius()'],['../class_convex_hull_shape_1_1_hull_no_convex.html#a9eb3d10a97e5ff7728db7f2ab218eff5',1,'ConvexHullShape::HullNoConvex::GetConvexRadius()'],['../class_capsule_shape_1_1_capsule_with_convex.html#a8848a4436820ea01656a3dc6f0700c12',1,'CapsuleShape::CapsuleWithConvex::GetConvexRadius()'],['../class_box_shape.html#a3e4280756f0e7d044f6473224f5e5097',1,'BoxShape::GetConvexRadius()'],['../class_box_shape_1_1_box.html#aae4ca0e522c6bf8bfd05b2ac5a8f3657',1,'BoxShape::Box::GetConvexRadius()'],['../class_convex_hull_shape.html#ae130c8434054b8c5778bde9eee608598',1,'ConvexHullShape::GetConvexRadius()']]], + ['getcoshalfconeangle_130',['GetCosHalfConeAngle',['../class_cone_constraint.html#a0f739908f826f4db4600278ebd0e05ba',1,'ConeConstraint']]], + ['getcosmaxslopeangle_131',['GetCosMaxSlopeAngle',['../class_character_base.html#aa7d43079f3b6c40c3fa1ccc30a8682bf',1,'CharacterBase']]], + ['getcurrentangle_132',['GetCurrentAngle',['../class_hinge_constraint.html#a7184e290eab00d8b27ad6366adb131f3',1,'HingeConstraint']]], + ['getcurrentgear_133',['GetCurrentGear',['../class_vehicle_transmission.html#a2770cd2da41162587a2addd366ba4535',1,'VehicleTransmission']]], + ['getcurrentlength_134',['GetCurrentLength',['../class_pulley_constraint.html#a2e6fd4f7a548c5fe09497fd31a27af02',1,'PulleyConstraint']]], + ['getcurrentposition_135',['GetCurrentPosition',['../class_slider_constraint.html#ac30befccebcc95bcaaab4ff784f3867f',1,'SliderConstraint']]], + ['getcurrentratio_136',['GetCurrentRatio',['../class_vehicle_transmission.html#aa58a4bc8d9ede0b99f622a0f20b36012',1,'VehicleTransmission']]], + ['getcurrentrpm_137',['GetCurrentRPM',['../class_vehicle_engine.html#ac1f11f381d186b50721cbc058931a2b5',1,'VehicleEngine']]], + ['getdata_138',['GetData',['../class_state_recorder_impl.html#a369ad05841edbb115007fe8632ce963f',1,'StateRecorderImpl']]], + ['getdebugcolor_139',['getdebugcolor',['../class_physics_material.html#af8673b7c2cefec46b38fd90fb8fe7784',1,'PhysicsMaterial::GetDebugColor()'],['../class_physics_material_simple.html#a753a983d027c83d1758d8f89e79d3c7e',1,'PhysicsMaterialSimple::GetDebugColor()']]], + ['getdebugname_140',['getdebugname',['../class_physics_material.html#a1ace7fb4d595955c50f02bd67a108446',1,'PhysicsMaterial::GetDebugName()'],['../class_physics_material_simple.html#ae6e3111c1feb14e0494a168ed783c43e',1,'PhysicsMaterialSimple::GetDebugName()']]], + ['getdefaultbroadphaselayerfilter_141',['GetDefaultBroadPhaseLayerFilter',['../class_physics_system.html#a9473bc5d3e3cd861b58b0db3240b4f1d',1,'PhysicsSystem']]], + ['getdefaultlayerfilter_142',['GetDefaultLayerFilter',['../class_physics_system.html#adaf3b2dbc230ee329461e47f096ef467',1,'PhysicsSystem']]], + ['getdensity_143',['GetDensity',['../class_convex_shape.html#a25975ed48abd058648020ee11498ce4e',1,'ConvexShape']]], + ['getdeterminant3x3_144',['GetDeterminant3x3',['../class_mat44.html#a2b5ba5e6c68b059ae61a1bbc1b7fbb87',1,'Mat44']]], + ['getdiagonal3_145',['GetDiagonal3',['../class_mat44.html#a6eb3cbc676f2ce57f63bcee9d0b40171',1,'Mat44']]], + ['getdiagonal4_146',['GetDiagonal4',['../class_mat44.html#aefb86266992d843e5de8e53cdbc5bdc6',1,'Mat44']]], + ['getdifferentiallimitedslipratio_147',['GetDifferentialLimitedSlipRatio',['../class_wheeled_vehicle_controller.html#a54518ef2b442bd0a1fe7a871d36d167f',1,'WheeledVehicleController']]], + ['getdifferentials_148',['getdifferentials',['../class_wheeled_vehicle_controller.html#abc5128d2c64bd0081380279ed025e2ed',1,'WheeledVehicleController::GetDifferentials()'],['../class_wheeled_vehicle_controller.html#a7364b136c27cf5330968729518859a1d',1,'WheeledVehicleController::GetDifferentials() const']]], + ['getdirectionpreservingmatrix_149',['getdirectionpreservingmatrix',['../class_d_mat44.html#a276e9d5393c45b4dbba222c23db3a58c',1,'DMat44::GetDirectionPreservingMatrix()'],['../class_mat44.html#a2bb16051fdd324325ac9be5e5e7619b7',1,'Mat44::GetDirectionPreservingMatrix()']]], + ['getdrawconstraintsize_150',['GetDrawConstraintSize',['../class_constraint.html#a719b99d4d20e0c67d5412fb40a00ada3',1,'Constraint']]], + ['getduration_151',['GetDuration',['../class_skeletal_animation.html#abfab43ab605ec8a52b89adc38e1e092d',1,'SkeletalAnimation']]], + ['getearlyoutfraction_152',['getearlyoutfraction',['../class_collide_shape_result.html#abe452fa6ddc8670a0c020d5420a92f3b',1,'CollideShapeResult::GetEarlyOutFraction()'],['../class_collide_point_result.html#a2fe473a4baa681ab11ce3a291d8a26a8',1,'CollidePointResult::GetEarlyOutFraction()'],['../class_collision_collector.html#ab972bb0e68e602c5eea898dfb7166d07',1,'CollisionCollector::GetEarlyOutFraction()'],['../class_shape_cast_result.html#a0b91d796ee4e127cac91c9d82f292e57',1,'ShapeCastResult::GetEarlyOutFraction()'],['../class_broad_phase_cast_result.html#a06287289bf870782bbfc79f5ea3ac2bc',1,'BroadPhaseCastResult::GetEarlyOutFraction()']]], + ['getenabled_153',['GetEnabled',['../class_constraint.html#a2e0b8708469ecb3ea071c1b37ca8ea26',1,'Constraint']]], + ['getenableskinconstraints_154',['GetEnableSkinConstraints',['../class_soft_body_motion_properties.html#a0211a0376f1d3fcbe20eb246d3ba01db',1,'SoftBodyMotionProperties']]], + ['getengine_155',['getengine',['../class_tracked_vehicle_controller.html#a8e4de97e46ec73d36fce4d32d38f6ed2',1,'TrackedVehicleController::GetEngine() const'],['../class_tracked_vehicle_controller.html#acb2deddabb17190a97fbeee604d6a845',1,'TrackedVehicleController::GetEngine()'],['../class_wheeled_vehicle_controller.html#a459374f72146ee0bfe05ead3151d346c',1,'WheeledVehicleController::GetEngine() const'],['../class_wheeled_vehicle_controller.html#acf0f3be1d9270518b59691310c28769b',1,'WheeledVehicleController::GetEngine()']]], + ['getenhancedinternaledgeremoval_156',['getenhancedinternaledgeremoval',['../class_character_virtual.html#a9e39a28dbce389399848347dbf95956a',1,'CharacterVirtual::GetEnhancedInternalEdgeRemoval()'],['../class_body.html#aa32a2192fa7e0ad595c63113e367d606',1,'Body::GetEnhancedInternalEdgeRemoval() const']]], + ['getenhancedinternaledgeremovalwithbody_157',['GetEnhancedInternalEdgeRemovalWithBody',['../class_body.html#a264f4c99047d880e0ec05ba558f64ee9',1,'Body']]], + ['geterror_158',['GetError',['../class_result.html#a3d0fc76c48e6db9cf5918dcc248ee4cb',1,'Result']]], + ['geteulerangles_159',['GetEulerAngles',['../class_quat.html#ae0e71415ee746c38c27b04e7dbc9b4ed',1,'Quat']]], + ['getextent_160',['GetExtent',['../class_a_a_box.html#a094a8548424826014024349fd7b96766',1,'AABox']]], + ['getface_161',['GetFace',['../class_soft_body_motion_properties.html#afcbcb8a86be08dddf2f33027741d321b',1,'SoftBodyMotionProperties']]], + ['getfaceindex_162',['GetFaceIndex',['../class_soft_body_shape.html#ad5f6a2eb0f01c7d83d8aa630559c4d7b',1,'SoftBodyShape']]], + ['getfaces_163',['getfaces',['../class_convex_hull_builder.html#a2eade6ba63e25c3bda4eaf159d1128ce',1,'ConvexHullBuilder::GetFaces()'],['../class_soft_body_motion_properties.html#a8166377ba1eaf8dea4589bc90e8baf23',1,'SoftBodyMotionProperties::GetFaces()']]], + ['getfacevertices_164',['GetFaceVertices',['../class_convex_hull_shape.html#a264fca49465c3fcfd2b261b6ee795f3a',1,'ConvexHullShape']]], + ['getforwardinput_165',['getforwardinput',['../class_tracked_vehicle_controller.html#ab6609714cd395abb6a9d29552dc5fb85',1,'TrackedVehicleController::GetForwardInput()'],['../class_wheeled_vehicle_controller.html#a781e75a695c39395e56b91cfcd780bdc',1,'WheeledVehicleController::GetForwardInput()']]], + ['getfriction_166',['getfriction',['../class_body.html#abb35a0778672e9f3622d8cfa93b428b3',1,'Body::GetFriction()'],['../class_body_interface.html#a098e8a339528606a7d3f41c5ba5da8a2',1,'BodyInterface::GetFriction()']]], + ['getgravity_167',['GetGravity',['../class_physics_system.html#a73776df14d1f0f10ba9a5fa033eefafd',1,'PhysicsSystem']]], + ['getgravityfactor_168',['getgravityfactor',['../class_motion_properties.html#a512531eb6b5f90a69deca6a0d0889243',1,'MotionProperties::GetGravityFactor()'],['../class_body_interface.html#a2e3bf749aa0626529b43f173437a9ec0',1,'BodyInterface::GetGravityFactor()']]], + ['getgravityoverride_169',['GetGravityOverride',['../class_vehicle_constraint.html#a557d0f6ff57dd2b6aa3a2f6da7e38f8e',1,'VehicleConstraint']]], + ['getgroundbodyid_170',['GetGroundBodyID',['../class_character_base.html#ab677215920d0b4cd10874b3a56a35026',1,'CharacterBase']]], + ['getgroundmaterial_171',['GetGroundMaterial',['../class_character_base.html#ac4771494235c54165b6b4c9ad64dcdc8',1,'CharacterBase']]], + ['getgroundnormal_172',['GetGroundNormal',['../class_character_base.html#adde62ba706430b59595bb8d56731eaa8',1,'CharacterBase']]], + ['getgroundposition_173',['GetGroundPosition',['../class_character_base.html#a0ecc9be497c5fc46bef4277a734a691a',1,'CharacterBase']]], + ['getgroundstate_174',['GetGroundState',['../class_character_base.html#ab8ce7589bd0e97901030bceeda7a513b',1,'CharacterBase']]], + ['getgroundsubshapeid_175',['GetGroundSubShapeID',['../class_character_base.html#a2ab264ce1b5888134b38177f71a81f91',1,'CharacterBase']]], + ['getgrounduserdata_176',['GetGroundUserData',['../class_character_base.html#ae8c2a236d46c2e362021c1ab3364c432',1,'CharacterBase']]], + ['getgroundvelocity_177',['GetGroundVelocity',['../class_character_base.html#a692578285569b48d19d53684360a5656',1,'CharacterBase']]], + ['getgroupfilter_178',['GetGroupFilter',['../class_collision_group.html#abcda9f0cd8d5d8b2ee42bee0a19430a7',1,'CollisionGroup']]], + ['getgroupid_179',['GetGroupID',['../class_collision_group.html#a1521cec7d03c83265aecca64ec684433',1,'CollisionGroup']]], + ['gethalfextent_180',['gethalfextent',['../class_box_shape.html#a44e8965153d83d24e534d6278f9d6e0d',1,'BoxShape::GetHalfExtent()'],['../class_plane_shape.html#a964fc4a57ddf2bea8c52ea18e4b4e7f0',1,'PlaneShape::GetHalfExtent()']]], + ['gethalfheight_181',['gethalfheight',['../class_cylinder_shape.html#a6ed4653b983e5e91e0a86f16b4186a25',1,'CylinderShape::GetHalfHeight()'],['../class_tapered_cylinder_shape.html#af7c1b08a97e16176cdaf429accaade8b',1,'TaperedCylinderShape::GetHalfHeight()']]], + ['gethalfheightofcylinder_182',['GetHalfHeightOfCylinder',['../class_capsule_shape.html#a24208af1f0e53c7de6e62c821699a2c3',1,'CapsuleShape']]], + ['gethandbrakeinput_183',['GetHandBrakeInput',['../class_wheeled_vehicle_controller.html#a785dc39a5b664a71b5c08ca00db4886d',1,'WheeledVehicleController']]], + ['gethash_184',['gethash',['../struct_body_pair.html#a5c584f3eda9897aa691047f585fdde06',1,'BodyPair::GetHash()'],['../class_r_t_t_i.html#ad5a67a7623941aeb6a7a75fc89082a92',1,'RTTI::GetHash()'],['../class_sub_shape_i_d_pair.html#a88b839da3754801d6bfe6f6f2734a026',1,'SubShapeIDPair::GetHash()']]], + ['getheights_185',['GetHeights',['../class_height_field_shape.html#ad7197b2f27b98899bc5b4b66b0fd9a27',1,'HeightFieldShape']]], + ['gethighestcomponentindex_186',['GetHighestComponentIndex',['../class_vec3.html#aefba3895f1a98e1a5854b7e79598a408',1,'Vec3']]], + ['gethitreductioncosmaxangle_187',['GetHitReductionCosMaxAngle',['../class_character_virtual.html#ae8dcc6de2efd2ad646722e92ed1ba38a',1,'CharacterVirtual']]], + ['getid_188',['getid',['../class_body.html#acbcb599679bb6a330a7ea3427fe90604',1,'Body::GetID()'],['../class_sub_shape_i_d_creator.html#a54023c5ee7e3547f2211e7a5ae9d620b',1,'SubShapeIDCreator::GetID()']]], + ['getindex_189',['GetIndex',['../class_body_i_d.html#ae7455ec3e8eec8ec963fb99ea4176fd6',1,'BodyID']]], + ['getindexandsequencenumber_190',['GetIndexAndSequenceNumber',['../class_body_i_d.html#aaff1cc7e76b557c1ce750bea2286290c',1,'BodyID']]], + ['getindexinactivebodiesinternal_191',['getindexinactivebodiesinternal',['../class_body.html#a61c94ac7d927ff8e5b3c980fc11af5a1',1,'Body::GetIndexInActiveBodiesInternal()'],['../class_motion_properties.html#a8f27aeee8dec3e0e94479bd233ca9d2f',1,'MotionProperties::GetIndexInActiveBodiesInternal() const']]], + ['getinertiarotation_192',['GetInertiaRotation',['../class_motion_properties.html#a300d1a36925946850e301155c70b7bef',1,'MotionProperties']]], + ['getinfo_193',['GetInfo',['../class_object_stream_in.html#a728e6ca9a1dbcadbf185768421f392ae',1,'ObjectStreamIn']]], + ['getinitialrange_194',['GetInitialRange',['../class_triangle_splitter.html#afdc1efd952e2db0b80a3a29af8e5da9e',1,'TriangleSplitter']]], + ['getinnerbodyid_195',['GetInnerBodyID',['../class_character_virtual.html#a7d6637e5d42ab04152b831b609014af1',1,'CharacterVirtual']]], + ['getinnerradius_196',['getinnerradius',['../class_offset_center_of_mass_shape.html#a032a8fc143be25c8194a28c3a491c702',1,'OffsetCenterOfMassShape::GetInnerRadius()'],['../class_scaled_shape.html#ac7caaa3409a215d6b7dd97ef08c1309b',1,'ScaledShape::GetInnerRadius()'],['../class_rotated_translated_shape.html#a2d4eb8d7ec3b1b8e68fccd31bd6ffda9',1,'RotatedTranslatedShape::GetInnerRadius()'],['../class_plane_shape.html#acf2b5b3f2bf76cb25f19cfd254992c6f',1,'PlaneShape::GetInnerRadius()'],['../class_tapered_capsule_shape.html#a84f84f37f87624d107b363e1fe0f54a6',1,'TaperedCapsuleShape::GetInnerRadius()'],['../class_shape.html#a249fa4e0fc7fdd25071be9f45db6a25a',1,'Shape::GetInnerRadius()'],['../class_sphere_shape.html#afb194e610fbe0025a2edebf8b0c20be3',1,'SphereShape::GetInnerRadius()'],['../class_soft_body_shape.html#a5c4e7f0e89d968da93b5759b642d5493',1,'SoftBodyShape::GetInnerRadius()'],['../class_triangle_shape.html#a0810f695ee3695e5206e9c8b4d506727',1,'TriangleShape::GetInnerRadius()'],['../class_tapered_cylinder_shape.html#a147aacad19ced7e278abd34f6fcf2dd8',1,'TaperedCylinderShape::GetInnerRadius()'],['../class_height_field_shape.html#a6546d622ca1ff86ea3c3cf7dc39753d3',1,'HeightFieldShape::GetInnerRadius()'],['../class_mesh_shape.html#a7c2e775c8d2691c71de1243732dc702a',1,'MeshShape::GetInnerRadius()'],['../class_box_shape.html#a50c713511a3e73d2c69cb03843eb06e8',1,'BoxShape::GetInnerRadius()'],['../class_capsule_shape.html#aff824c6f74dbd43d6ddbb577e2324e50',1,'CapsuleShape::GetInnerRadius()'],['../class_compound_shape.html#ae17025f3ed04cdf063dc0f3b180468a4',1,'CompoundShape::GetInnerRadius()'],['../class_convex_hull_shape.html#a43f64b08407a44d5c441f41ce520dfe5',1,'ConvexHullShape::GetInnerRadius()'],['../class_cylinder_shape.html#ad0434b32d80b3256e9ad76524604598c',1,'CylinderShape::GetInnerRadius()']]], + ['getinnershape_197',['GetInnerShape',['../class_decorated_shape.html#a23b4182bc69407c3c9f6e33419a8cbed',1,'DecoratedShape']]], + ['getintensity_198',['GetIntensity',['../class_color.html#afca651317831a93dba25464c5325f0ce',1,'Color']]], + ['getintersectingsubshapes_199',['getintersectingsubshapes',['../class_compound_shape.html#abe5c3a8558c840abba213a6a48149f85',1,'CompoundShape::GetIntersectingSubShapes(const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const =0'],['../class_compound_shape.html#a3f38b90e13eccc4d52de7bbc2cbcb9aa',1,'CompoundShape::GetIntersectingSubShapes(const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const =0'],['../class_mutable_compound_shape.html#a384f4371999246795c2e3f84ad75eca0',1,'MutableCompoundShape::GetIntersectingSubShapes(const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override'],['../class_mutable_compound_shape.html#ad254423b72d228ee50b548c9d4b52696',1,'MutableCompoundShape::GetIntersectingSubShapes(const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override'],['../class_static_compound_shape.html#a5e78840b9d9ba2b080352b8366f3472c',1,'StaticCompoundShape::GetIntersectingSubShapes(const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override'],['../class_static_compound_shape.html#a4cd2a844ebd860f507e798199dd77583',1,'StaticCompoundShape::GetIntersectingSubShapes(const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override']]], + ['getintersectingsubshapesvisitor_200',['getintersectingsubshapesvisitor',['../struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html',1,'CompoundShape::GetIntersectingSubShapesVisitor< BoxType >'],['../struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a0f676ecd2951cd9c1abd7d3ebfa24561',1,'CompoundShape::GetIntersectingSubShapesVisitor::GetIntersectingSubShapesVisitor()']]], + ['getinversecenterofmasstransform_201',['getinversecenterofmasstransform',['../class_body.html#a9c317394889f2064a20693935036eeb3',1,'Body::GetInverseCenterOfMassTransform()'],['../class_transformed_shape.html#a928f396b885e8fea11417ba0e651c678',1,'TransformedShape::GetInverseCenterOfMassTransform()']]], + ['getinverseinertia_202',['getinverseinertia',['../class_body.html#a731f2a92e9e215ff87efc831999e0e6e',1,'Body::GetInverseInertia()'],['../class_body_interface.html#a9f6a8905527bc1a025eda4f97f76f573',1,'BodyInterface::GetInverseInertia()']]], + ['getinverseinertiadiagonal_203',['GetInverseInertiaDiagonal',['../class_motion_properties.html#a4a60f30bee17d06efaa9fa368f70e260',1,'MotionProperties']]], + ['getinverseinertiaforrotation_204',['GetInverseInertiaForRotation',['../class_motion_properties.html#ab95f2b1c9b6bd9b6082f8cee8a7e1858',1,'MotionProperties']]], + ['getinversemass_205',['GetInverseMass',['../class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8',1,'MotionProperties']]], + ['getinversemassunchecked_206',['GetInverseMassUnchecked',['../class_motion_properties.html#a5f3ae7ce5fe716cf9dc83f05553164b0',1,'MotionProperties']]], + ['getislandindex_207',['GetIslandIndex',['../class_large_island_splitter.html#a9c0c434f77d1e58d2fce4fbe9247236e',1,'LargeIslandSplitter']]], + ['getislandindexinternal_208',['GetIslandIndexInternal',['../class_motion_properties.html#a0907c71717fa56d6af7dfc642bc56e2b',1,'MotionProperties']]], + ['getjobsystem_209',['GetJobSystem',['../class_job_system_1_1_job.html#aa3922bb7442e7e778cec6a8ea984f454',1,'JobSystem::Job']]], + ['getjoint_210',['getjoint',['../class_skeleton_pose.html#a91f801a519aa40ed65e4ff2aee71bc93',1,'SkeletonPose::GetJoint(int inJoint)'],['../class_skeleton_pose.html#ae567801b0a70313f684d36c3137328ec',1,'SkeletonPose::GetJoint(int inJoint) const'],['../class_skeleton.html#aec4d0e10a2ea5d08f7ea2ab4c40263c7',1,'Skeleton::GetJoint(int inJoint) const'],['../class_skeleton.html#a707d5fe6d41b2d5c2e8ecd1778c96551',1,'Skeleton::GetJoint(int inJoint)']]], + ['getjointcount_211',['getjointcount',['../class_skeleton.html#a42baf00a00f27baa28254ebcd638ecd3',1,'Skeleton::GetJointCount()'],['../class_skeleton_pose.html#ada9b4b8c72f7573109277f36c5ad5eb0',1,'SkeletonPose::GetJointCount()']]], + ['getjointindex_212',['GetJointIndex',['../class_skeleton.html#a8cd408fd1003399fcdd91c9272ccf06d',1,'Skeleton']]], + ['getjointmatrices_213',['getjointmatrices',['../class_skeleton_pose.html#a123163a0e50b7f76a7cb208df96d59b3',1,'SkeletonPose::GetJointMatrices() const'],['../class_skeleton_pose.html#aa8669194e2646ec9de2fbab978e299be',1,'SkeletonPose::GetJointMatrices()']]], + ['getjointmatrix_214',['getjointmatrix',['../class_skeleton_pose.html#a9c8491b64eb337b033003d67f9c1d962',1,'SkeletonPose::GetJointMatrix(int inJoint) const'],['../class_skeleton_pose.html#a067c1fa5353fa017050c331a43aeb63c',1,'SkeletonPose::GetJointMatrix(int inJoint)']]], + ['getjoints_215',['getjoints',['../class_skeleton_pose.html#a7c8c656a80fb4b9509744d5a991cc34c',1,'SkeletonPose::GetJoints() const'],['../class_skeleton_pose.html#a62ddf1ab02eaf223875eeebcb2dfa617',1,'SkeletonPose::GetJoints()'],['../class_skeleton.html#a9f6a4cc9a5272704684dc07cea7e2fd9',1,'Skeleton::GetJoints()'],['../class_skeleton.html#a70591341dd88358d31e0b8dd442c0ac2',1,'Skeleton::GetJoints() const']]], + ['getkey_216',['GetKey',['../class_lock_free_hash_map_1_1_key_value.html#a0f063445f1fc087c20061ecf8ad157cb',1,'LockFreeHashMap::KeyValue']]], + ['getlaterallambda_217',['GetLateralLambda',['../class_wheel.html#a3a6c1824707b2851548c01bb3bcaceec',1,'Wheel']]], + ['getlayer_218',['GetLayer',['../class_character.html#a58a00716728ad3592066cb999b33ecdc',1,'Character']]], + ['getleafnodecount_219',['GetLeafNodeCount',['../class_a_a_b_b_tree_builder_1_1_node.html#a26388038bedeaa6f463327ca1542fb06',1,'AABBTreeBuilder::Node']]], + ['getleafshape_220',['getleafshape',['../class_shape.html#a11453c55f44f37cf405eee79afdbfe00',1,'Shape::GetLeafShape()'],['../class_decorated_shape.html#a3b29a28fcd37ade91f30f6e85640c688',1,'DecoratedShape::GetLeafShape()'],['../class_compound_shape.html#a40578c3218a3282bb4a39e858f01e4b0',1,'CompoundShape::GetLeafShape()']]], + ['getleansmoothingfactor_221',['GetLeanSmoothingFactor',['../class_motorcycle_controller.html#a9d7a05e2d9311d373f33354e4d75e543',1,'MotorcycleController']]], + ['getleanspringconstant_222',['GetLeanSpringConstant',['../class_motorcycle_controller.html#a7e63f90a4b0c4a787374c1724d3999d6',1,'MotorcycleController']]], + ['getleanspringdamping_223',['GetLeanSpringDamping',['../class_motorcycle_controller.html#adfe9afcb3c52f6f6012f61e55cb9fc1d',1,'MotorcycleController']]], + ['getleanspringintegrationcoefficient_224',['GetLeanSpringIntegrationCoefficient',['../class_motorcycle_controller.html#ad4a48da07b7959ee53165b149d82c7e9',1,'MotorcycleController']]], + ['getleanspringintegrationcoefficientdecay_225',['GetLeanSpringIntegrationCoefficientDecay',['../class_motorcycle_controller.html#a52a7c8e605868fe0905235c8baa598b0',1,'MotorcycleController']]], + ['getleftratio_226',['GetLeftRatio',['../class_tracked_vehicle_controller.html#a21f5ddb54144f1978e08491e236f2969',1,'TrackedVehicleController']]], + ['getlimitsmax_227',['getlimitsmax',['../class_hinge_constraint.html#a519d665c4924aa96430f28b082f0075f',1,'HingeConstraint::GetLimitsMax()'],['../class_six_d_o_f_constraint.html#a78e19363677045ac960e57d0deb166e6',1,'SixDOFConstraint::GetLimitsMax()'],['../class_slider_constraint.html#a9788e92ed539c24ab428e2e7195fe8de',1,'SliderConstraint::GetLimitsMax()']]], + ['getlimitsmin_228',['getlimitsmin',['../class_six_d_o_f_constraint.html#a19166b2e56147da794b2651896007294',1,'SixDOFConstraint::GetLimitsMin()'],['../class_slider_constraint.html#a309ff85b227384666212461ae2a31256',1,'SliderConstraint::GetLimitsMin()'],['../class_hinge_constraint.html#a88442c3ae9fa433d4aed1484704d3b6a',1,'HingeConstraint::GetLimitsMin()']]], + ['getlimitsspringsettings_229',['getlimitsspringsettings',['../class_distance_constraint.html#a1f191ffd4cf8e11747be8b483a71f298',1,'DistanceConstraint::GetLimitsSpringSettings() const'],['../class_distance_constraint.html#aff807f66dc7ea24c932ac32c94d37ec4',1,'DistanceConstraint::GetLimitsSpringSettings()'],['../class_hinge_constraint.html#a24ef12595b64ec30ec2a49470b83b55f',1,'HingeConstraint::GetLimitsSpringSettings() const'],['../class_hinge_constraint.html#a4291ba13c80bfe5a166c5125d541c796',1,'HingeConstraint::GetLimitsSpringSettings()'],['../class_six_d_o_f_constraint.html#a70687b51cd67ed48ec11975e8799fcc5',1,'SixDOFConstraint::GetLimitsSpringSettings()'],['../class_slider_constraint.html#acb556b36d40cbc06845355442e62b32b',1,'SliderConstraint::GetLimitsSpringSettings() const'],['../class_slider_constraint.html#a8a6cd36dd2dfa9c9ed970222fd86ac6a',1,'SliderConstraint::GetLimitsSpringSettings()']]], + ['getlinearandangularvelocity_230',['GetLinearAndAngularVelocity',['../class_body_interface.html#ab10d8f90079351e23596e1abadfe7e5d',1,'BodyInterface']]], + ['getlineardamping_231',['GetLinearDamping',['../class_motion_properties.html#a8f94e1d248e0ff62aa7496e2092924a8',1,'MotionProperties']]], + ['getlineardofsmask_232',['GetLinearDOFsMask',['../class_motion_properties.html#a8da4f3c3b9d4afe28293492923f1dee0',1,'MotionProperties']]], + ['getlinearvelocity_233',['getlinearvelocity',['../class_character_virtual.html#a9f8aca4dbbb9c926e52ca8b7337c4c71',1,'CharacterVirtual::GetLinearVelocity()'],['../class_character.html#a38468a2f17e15c84019c98496909c7a9',1,'Character::GetLinearVelocity()'],['../class_body.html#a6451197a038f1d99b4b92beae4656842',1,'Body::GetLinearVelocity()'],['../class_body_interface.html#a3e25561a23fd268d649e3c968b9ffada',1,'BodyInterface::GetLinearVelocity()'],['../class_motion_properties.html#a6478c1ccabfc23ee9ce98faa0643c080',1,'MotionProperties::GetLinearVelocity()']]], + ['getlistener_234',['GetListener',['../class_character_virtual.html#aacf19c0b42216d6dc497c20556b642e7',1,'CharacterVirtual']]], + ['getlocalbounds_235',['getlocalbounds',['../class_shape.html#a30ea165596e01df087f6e4980ed6b0cb',1,'Shape::GetLocalBounds()'],['../class_plane_shape.html#a6e50ca0c9466229d8a15275bde03c2e0',1,'PlaneShape::GetLocalBounds()'],['../class_sphere_shape.html#a1941ec6970a8a1daf084f5cbbf173094',1,'SphereShape::GetLocalBounds()'],['../class_rotated_translated_shape.html#adaffc4cb4b4ecb75c984b4dd655f8e53',1,'RotatedTranslatedShape::GetLocalBounds()'],['../class_scaled_shape.html#a98bf01077d911fb1ece20a2c11aa6d8c',1,'ScaledShape::GetLocalBounds()'],['../class_tapered_capsule_shape.html#abd2b0eee5fe8019f104f3fa8db182ef0',1,'TaperedCapsuleShape::GetLocalBounds()'],['../class_tapered_cylinder_shape.html#a60b656f7b68e0418f44baad933706675',1,'TaperedCylinderShape::GetLocalBounds()'],['../class_triangle_shape.html#acb85ccdd921dcc7f1018bafd6cc54af0',1,'TriangleShape::GetLocalBounds()'],['../class_soft_body_motion_properties.html#a9e0c2b0a3a39fb1d97c1318c7b65f9f0',1,'SoftBodyMotionProperties::GetLocalBounds()'],['../class_soft_body_shape.html#aa6cb675060af07d4d24c6e7d6fca3d3d',1,'SoftBodyShape::GetLocalBounds()'],['../class_capsule_shape.html#ac70e898196e639abb8602e67fed64848',1,'CapsuleShape::GetLocalBounds()'],['../class_mesh_shape.html#a81ce8f3c413f4a72f2a5a5fb00fcc256',1,'MeshShape::GetLocalBounds()'],['../class_height_field_shape.html#aee35a24a90e88fd6858a648fcc3e8928',1,'HeightFieldShape::GetLocalBounds()'],['../class_cylinder_shape.html#a2a80687423f2a189488cb20e3b8b0b18',1,'CylinderShape::GetLocalBounds()'],['../class_convex_hull_shape.html#a49b4086adc746e5b69c772b4607cd2ec',1,'ConvexHullShape::GetLocalBounds()'],['../class_compound_shape.html#aed1247824e7919d8a948293f586b15dc',1,'CompoundShape::GetLocalBounds()'],['../class_offset_center_of_mass_shape.html#a68d4124fd359bd6f37718080371617f0',1,'OffsetCenterOfMassShape::GetLocalBounds()'],['../class_box_shape.html#a5abe98f791addef880ea73ea813ec372',1,'BoxShape::GetLocalBounds()']]], + ['getlocalcontactpoint_236',['GetLocalContactPoint',['../class_soft_body_manifold.html#a1df540bbc021bfd1c7e14caa2f1c77aa',1,'SoftBodyManifold']]], + ['getlocalforward_237',['GetLocalForward',['../class_vehicle_constraint.html#a5a54f4f23549e7d828e4a2e51fcfc312',1,'VehicleConstraint']]], + ['getlocalspacehingeaxis1_238',['GetLocalSpaceHingeAxis1',['../class_hinge_constraint.html#ac42523160446c880453eacb77d0453fa',1,'HingeConstraint']]], + ['getlocalspacehingeaxis2_239',['GetLocalSpaceHingeAxis2',['../class_hinge_constraint.html#aa3feb036294982548963aa7351b14981',1,'HingeConstraint']]], + ['getlocalspaceinverseinertia_240',['GetLocalSpaceInverseInertia',['../class_motion_properties.html#ad52e9ac8d614918a8dc9c80f22b4847e',1,'MotionProperties']]], + ['getlocalspaceinverseinertiaunchecked_241',['GetLocalSpaceInverseInertiaUnchecked',['../class_motion_properties.html#a994dad1b2bf71b0f0394bec77fcb9b8e',1,'MotionProperties']]], + ['getlocalspacenormalaxis1_242',['GetLocalSpaceNormalAxis1',['../class_hinge_constraint.html#a9dc2dd124efb401c50169f67c0958b81',1,'HingeConstraint']]], + ['getlocalspacenormalaxis2_243',['GetLocalSpaceNormalAxis2',['../class_hinge_constraint.html#a4c3ac4ceae329cf7910f28d2bcf9c8bf',1,'HingeConstraint']]], + ['getlocalspacepoint1_244',['getlocalspacepoint1',['../class_hinge_constraint.html#af0cd2640d5ea0e2c8fecd6af90d90a0a',1,'HingeConstraint::GetLocalSpacePoint1()'],['../class_point_constraint.html#a8fcc860c0b8ee43e08d599d8c3aaa3cd',1,'PointConstraint::GetLocalSpacePoint1()']]], + ['getlocalspacepoint2_245',['getlocalspacepoint2',['../class_hinge_constraint.html#a86cca7ab010c4fe5ef29c514a2b3e651',1,'HingeConstraint::GetLocalSpacePoint2()'],['../class_point_constraint.html#aec29f6eef0cbafd0b0f9a97caa50b83a',1,'PointConstraint::GetLocalSpacePoint2()']]], + ['getlocalspaceposition1_246',['GetLocalSpacePosition1',['../class_swing_twist_constraint.html#a5cf8ea24972bf6fd7c614d8e5a851b37',1,'SwingTwistConstraint']]], + ['getlocalspaceposition2_247',['GetLocalSpacePosition2',['../class_swing_twist_constraint.html#ab2ddd5c601f20912ceeaeb2cd01cc601',1,'SwingTwistConstraint']]], + ['getlocaltransformnoscale_248',['GetLocalTransformNoScale',['../struct_compound_shape_1_1_sub_shape.html#a18ba22cc1d5ad095bce61a7fcfcbcc25',1,'CompoundShape::SubShape']]], + ['getlocalup_249',['GetLocalUp',['../class_vehicle_constraint.html#a9e88c415ed7c4ae5cea93506fd53ae28',1,'VehicleConstraint']]], + ['getlockedtranslations_250',['getlockedtranslations',['../class_skeleton_mapper.html#ae866ae2bc8b6461888f555b6a9be0d16',1,'SkeletonMapper::GetLockedTranslations() const'],['../class_skeleton_mapper.html#a9e9a4605520a2d38d190e0f651b3b6c2',1,'SkeletonMapper::GetLockedTranslations()']]], + ['getlod_251',['GetLOD',['../class_debug_renderer_1_1_geometry.html#a1e5eb47480d97915873308ba4fa97ed9',1,'DebugRenderer::Geometry']]], + ['getlongitudinallambda_252',['GetLongitudinalLambda',['../class_wheel.html#acb42426249dba7e845b7ea288cda99dd',1,'Wheel']]], + ['getlowestcomponentindex_253',['GetLowestComponentIndex',['../class_vec3.html#a502453ae3005d5b84a221adf80721f92',1,'Vec3']]], + ['getlowestindexfirst_254',['GetLowestIndexFirst',['../class_indexed_triangle.html#ab22b9836ef1955232fd0ec1099d69965',1,'IndexedTriangle']]], + ['getmappedjointidx_255',['GetMappedJointIdx',['../class_skeleton_mapper.html#a21b16b76b464cf207878aa382c6cfde4',1,'SkeletonMapper']]], + ['getmappings_256',['getmappings',['../class_skeleton_mapper.html#a120855b77dff525cd820068b115e101f',1,'SkeletonMapper::GetMappings()'],['../class_skeleton_mapper.html#a13fa458d09dbb5f053aff54bb009d0eb',1,'SkeletonMapper::GetMappings() const']]], + ['getmass_257',['GetMass',['../class_character_virtual.html#a1ae032d5f31f955686e3c519abfaa1a4',1,'CharacterVirtual']]], + ['getmassproperties_258',['getmassproperties',['../class_height_field_shape.html#ae44d36f0e2b925556c4f6f2f30803b62',1,'HeightFieldShape::GetMassProperties()'],['../class_triangle_shape.html#aed1e73c2a8e181beb5c775bd5bddca6f',1,'TriangleShape::GetMassProperties()'],['../class_tapered_cylinder_shape.html#a2b7b27c9244c7e2812161608125fbebd',1,'TaperedCylinderShape::GetMassProperties()'],['../class_tapered_capsule_shape.html#ad3455a4df764b73c9b62450ab39ee7e0',1,'TaperedCapsuleShape::GetMassProperties()'],['../class_sphere_shape.html#a1febf0517dfc8b724d1bd3b3c2decf55',1,'SphereShape::GetMassProperties()'],['../class_shape.html#a00d0953c120d9e175960c9e6629f108f',1,'Shape::GetMassProperties()'],['../class_scaled_shape.html#a8e96fae113643ee75eb5f6355abd5425',1,'ScaledShape::GetMassProperties()'],['../class_rotated_translated_shape.html#a05206d318c8849d711695b1ae36c98b2',1,'RotatedTranslatedShape::GetMassProperties()'],['../class_plane_shape.html#a079aa97d19c887ae416439fcbd55388d',1,'PlaneShape::GetMassProperties()'],['../class_offset_center_of_mass_shape.html#ac1699a722db6d84580b59a3058af572c',1,'OffsetCenterOfMassShape::GetMassProperties()'],['../class_mesh_shape.html#aeb665b7fb7702d516f965441b421f997',1,'MeshShape::GetMassProperties()'],['../class_cylinder_shape.html#ac3f61c0e5ec4913f57a7842fcd8569fe',1,'CylinderShape::GetMassProperties()'],['../class_convex_hull_shape.html#aef499d89aadc1f62c7d2acc527d54e4f',1,'ConvexHullShape::GetMassProperties()'],['../class_compound_shape.html#a24b8501f64dae77c9cb4cfa408fc7537',1,'CompoundShape::GetMassProperties()'],['../class_capsule_shape.html#a5eb19a20ae866f171dbbb7b2d5449d1c',1,'CapsuleShape::GetMassProperties()'],['../class_box_shape.html#a2a6f91fa07d5ef9ef2541c0acfcdf9e8',1,'BoxShape::GetMassProperties()'],['../class_body_creation_settings.html#acce5eaf6c72e325d23d8d791039c6954',1,'BodyCreationSettings::GetMassProperties()'],['../class_soft_body_shape.html#ac8e3e81fea2706ab86fcf9aa9302d40d',1,'SoftBodyShape::GetMassProperties()']]], + ['getmaterial_259',['getmaterial',['../class_mesh_shape.html#a78ab194a4c2f30c0e0f22160ba06fd37',1,'MeshShape::GetMaterial()'],['../class_height_field_shape.html#a0a17b135a1676e5588f012978824316b',1,'HeightFieldShape::GetMaterial(const SubShapeID &inSubShapeID) const override'],['../class_height_field_shape.html#aceccce9f2e21821c5e4f34c6f1e556b1',1,'HeightFieldShape::GetMaterial(uint inX, uint inY) const'],['../class_soft_body_shape.html#a3123c23cde35ee4b94cfa9639321193d',1,'SoftBodyShape::GetMaterial()'],['../class_plane_shape.html#ab0b17f6459d40f97980bcf004eff5cdb',1,'PlaneShape::GetMaterial()'],['../class_shape.html#a7f92a050d292158b83ef016eb5d3f168',1,'Shape::GetMaterial()'],['../class_transformed_shape.html#a8995638ea07aab36ba41e63bce603002',1,'TransformedShape::GetMaterial()'],['../class_decorated_shape.html#a14df32d1573050287d989ce5171a1a86',1,'DecoratedShape::GetMaterial()'],['../class_convex_shape.html#a7c9d827d2e8d38b5ba1ed2d4f9263b15',1,'ConvexShape::GetMaterial() const'],['../class_convex_shape.html#a7a9e29e9a33f123f0ab8b25dd4e04cc0',1,'ConvexShape::GetMaterial(const SubShapeID &inSubShapeID) const override'],['../class_compound_shape.html#a53e888da6c84a5a7a8b96bacd0a12f92',1,'CompoundShape::GetMaterial()'],['../class_body_interface.html#a4b76f55d8fcbb5bb8c170069d03c1f79',1,'BodyInterface::GetMaterial()']]], + ['getmaterialindex_260',['GetMaterialIndex',['../class_mesh_shape.html#affe7babd3e7126cb8cb089b7a33d3410',1,'MeshShape']]], + ['getmateriallist_261',['getmateriallist',['../class_height_field_shape.html#a22b4896fe8cc6cce3f0553dc7d81922b',1,'HeightFieldShape::GetMaterialList()'],['../class_mesh_shape.html#abc932809f3332fac2caafb8cb9ff6daf',1,'MeshShape::GetMaterialList()']]], + ['getmaterials_262',['getmaterials',['../class_soft_body_motion_properties.html#a1fc5838f0275d998d9431767dc516a71',1,'SoftBodyMotionProperties::GetMaterials()'],['../class_height_field_shape.html#aa9f1b2b52ce3e1475c70d79f4befd5d8',1,'HeightFieldShape::GetMaterials()']]], + ['getmaxangularvelocity_263',['GetMaxAngularVelocity',['../class_motion_properties.html#a5c7901aaa430061775c7c39af08168db',1,'MotionProperties']]], + ['getmaxbodies_264',['getmaxbodies',['../class_body_manager.html#ad54b2a378ee3653de2130da1ab3f69a5',1,'BodyManager::GetMaxBodies()'],['../class_physics_system.html#a77646a1768d1cfc892b6238bf614ed9f',1,'PhysicsSystem::GetMaxBodies()']]], + ['getmaxbuckets_265',['GetMaxBuckets',['../class_lock_free_hash_map.html#a99097bb01c8c980e4fe1be3bc63c8415',1,'LockFreeHashMap']]], + ['getmaxconcurrency_266',['getmaxconcurrency',['../class_job_system_single_threaded.html#a4e99aebfb2308cf3c4bdd8e54bb71799',1,'JobSystemSingleThreaded::GetMaxConcurrency()'],['../class_job_system_thread_pool.html#ad9d1ead2ffc5ab1ec9aa6e06948c98ac',1,'JobSystemThreadPool::GetMaxConcurrency()'],['../class_job_system.html#a5953ad34be5c47e7896b87ac7409b7d7',1,'JobSystem::GetMaxConcurrency()'],['../class_physics_update_context.html#a26f629d14c71383b17923a0544158680',1,'PhysicsUpdateContext::GetMaxConcurrency()']]], + ['getmaxconstraints_267',['GetMaxConstraints',['../class_contact_constraint_manager.html#a50938b07679f8a97fff61e98a209c87c',1,'ContactConstraintManager']]], + ['getmaxdepth_268',['GetMaxDepth',['../class_a_a_b_b_tree_builder_1_1_node.html#aef9d9d0695306595e4b6f16b2b47e60c',1,'AABBTreeBuilder::Node']]], + ['getmaxdistance_269',['GetMaxDistance',['../class_distance_constraint.html#a4ed1c3635f00b8f94624290bb7b11f4f',1,'DistanceConstraint']]], + ['getmaxfriction_270',['GetMaxFriction',['../class_six_d_o_f_constraint.html#a874ef6ddc1368b003ba0eb2808adf17c',1,'SixDOFConstraint']]], + ['getmaxfrictionforce_271',['getmaxfrictionforce',['../class_slider_constraint.html#ae28f6bc1a08e8d68beee8ad0678a7c23',1,'SliderConstraint::GetMaxFrictionForce()'],['../class_path_constraint.html#a0de4a86654e7757baf2e0715aae9e221',1,'PathConstraint::GetMaxFrictionForce()']]], + ['getmaxfrictiontorque_272',['getmaxfrictiontorque',['../class_hinge_constraint.html#a9695f177868118de9520091ac2eb8585',1,'HingeConstraint::GetMaxFrictionTorque()'],['../class_swing_twist_constraint.html#a663ea09e2e7019d0d43fec36cd3b89f1',1,'SwingTwistConstraint::GetMaxFrictionTorque()']]], + ['getmaxheightvalue_273',['GetMaxHeightValue',['../class_height_field_shape.html#a802b254c4c64f55ddfe84b399dae0a1b',1,'HeightFieldShape']]], + ['getmaxhitsexceeded_274',['GetMaxHitsExceeded',['../class_character_virtual.html#a4bcaf2938288d8a8cbf907f74851b109',1,'CharacterVirtual']]], + ['getmaxlength_275',['GetMaxLength',['../class_pulley_constraint.html#aabb79ec76059c338d98d5ca9b2cd2d98',1,'PulleyConstraint']]], + ['getmaxlinearvelocity_276',['GetMaxLinearVelocity',['../class_motion_properties.html#a322397545544a5b330d68fa894e021cf',1,'MotionProperties']]], + ['getmaxnumhits_277',['GetMaxNumHits',['../class_character_virtual.html#a6b037237b95355079f9aca7904899004',1,'CharacterVirtual']]], + ['getmaxstrength_278',['GetMaxStrength',['../class_character_virtual.html#a6d11baa32abe7ab7f75100daca4fda2c',1,'CharacterVirtual']]], + ['getmaxx_279',['GetMaxX',['../class_linear_curve.html#aa92a24bc4fff522ea56c5a0dadbf6ff4',1,'LinearCurve']]], + ['getmemberpointer_280',['getmemberpointer',['../class_serializable_attribute.html#a835cd7db4edd6bd36f2130e9498122c2',1,'SerializableAttribute::GetMemberPointer(void *inObject) const'],['../class_serializable_attribute.html#a72008d94009acc09cec81d10486783eb',1,'SerializableAttribute::GetMemberPointer(const void *inObject) const']]], + ['getmemberprimitivetype_281',['GetMemberPrimitiveType',['../class_serializable_attribute.html#a6738344c9c5ddbf28680db6511dda210',1,'SerializableAttribute']]], + ['getmindepth_282',['GetMinDepth',['../class_a_a_b_b_tree_builder_1_1_node.html#a22a2cb2691825e2935516c36bc936875',1,'AABBTreeBuilder::Node']]], + ['getmindistance_283',['GetMinDistance',['../class_distance_constraint.html#a4417a1efabd5ff92a82b5657479eab93',1,'DistanceConstraint']]], + ['getminheightvalue_284',['GetMinHeightValue',['../class_height_field_shape.html#a9111226dd889b546f466da2b53d1a01b',1,'HeightFieldShape']]], + ['getminlength_285',['GetMinLength',['../class_pulley_constraint.html#a7736c362467fcdcc9e1922b6847cd77a',1,'PulleyConstraint']]], + ['getminvertexindex_286',['getminvertexindex',['../struct_soft_body_shared_settings_1_1_dihedral_bend.html#af40fcceebc4074cd387372bb8bd60044',1,'SoftBodySharedSettings::DihedralBend::GetMinVertexIndex()'],['../struct_soft_body_shared_settings_1_1_volume.html#a57d932ebc0d377fd39b109991ebbc51c',1,'SoftBodySharedSettings::Volume::GetMinVertexIndex()'],['../class_soft_body_shared_settings_1_1_l_r_a.html#a084ffb68e51232e9462952f97effea6d',1,'SoftBodySharedSettings::LRA::GetMinVertexIndex()'],['../struct_soft_body_shared_settings_1_1_edge.html#a2542e95a101443bb88ef41b38e569a8d',1,'SoftBodySharedSettings::Edge::GetMinVertexIndex()']]], + ['getminx_287',['GetMinX',['../class_linear_curve.html#ac23b16f88bf858f9ff79e9a94500b549',1,'LinearCurve']]], + ['getmotionproperties_288',['getmotionproperties',['../class_body.html#a0d39987255227c4221fcea66cb1fc041',1,'Body::GetMotionProperties() const'],['../class_body.html#aa9e634771e2ed719757a71cb9751b353',1,'Body::GetMotionProperties()']]], + ['getmotionpropertiesunchecked_289',['getmotionpropertiesunchecked',['../class_body.html#abe012219037c12313c7ef1116ee74865',1,'Body::GetMotionPropertiesUnchecked() const'],['../class_body.html#ad0cc27e6920daa31fc9e42a7824d2d02',1,'Body::GetMotionPropertiesUnchecked()']]], + ['getmotionquality_290',['getmotionquality',['../class_body_interface.html#a3b3b74fdcf84502aaa693303bf0a91a5',1,'BodyInterface::GetMotionQuality()'],['../class_motion_properties.html#acd43aa954cec19be744724fd633f892a',1,'MotionProperties::GetMotionQuality()']]], + ['getmotiontype_291',['getmotiontype',['../class_body.html#a146a4745ed28c3d9b06abe02ee3d3490',1,'Body::GetMotionType()'],['../class_body_interface.html#a28dc9afdb017050075993e360cfc83ec',1,'BodyInterface::GetMotionType()']]], + ['getmotorsettings_292',['getmotorsettings',['../class_hinge_constraint.html#a41dac9c0b4fcaf494aea48d3347203fd',1,'HingeConstraint::GetMotorSettings()'],['../class_six_d_o_f_constraint.html#a3e4372d1567140760e6cf46710108675',1,'SixDOFConstraint::GetMotorSettings(EAxis inAxis)'],['../class_six_d_o_f_constraint.html#a12db08dc07d7ae6cf63acdb8e17547b7',1,'SixDOFConstraint::GetMotorSettings(EAxis inAxis) const'],['../class_hinge_constraint.html#a7fe69abe4b705d335b485eaa97b13ef1',1,'HingeConstraint::GetMotorSettings()'],['../class_slider_constraint.html#ad920e0c8e131f4c9e3eae8be918daea2',1,'SliderConstraint::GetMotorSettings()'],['../class_slider_constraint.html#a312b98bfdc4c378cdbabdbd7c34e5458',1,'SliderConstraint::GetMotorSettings() const']]], + ['getmotorstate_293',['getmotorstate',['../class_hinge_constraint.html#a1dd81b1a4fa3416340a80680124dce2a',1,'HingeConstraint::GetMotorState()'],['../class_six_d_o_f_constraint.html#adcda93c3a6ca21bf6ed39b264a020f38',1,'SixDOFConstraint::GetMotorState()'],['../class_slider_constraint.html#af4b5d7b41aa1514342586fef277fabd5',1,'SliderConstraint::GetMotorState()']]], + ['getmutexbyindex_294',['GetMutexByIndex',['../class_mutex_array.html#ab1837f7f0a9b0ce63ccbf6d34ca26058',1,'MutexArray']]], + ['getmutexbyobjectindex_295',['GetMutexByObjectIndex',['../class_mutex_array.html#a39bf8c118d368c256e5a5c09b39a42be',1,'MutexArray']]], + ['getmutexforbody_296',['GetMutexForBody',['../class_body_manager.html#a608703b173fa10233dfd617150a2db67',1,'BodyManager']]], + ['getmutexindex_297',['GetMutexIndex',['../class_mutex_array.html#a149c27328334bbe38b64230f2a5251f8',1,'MutexArray']]], + ['getmutexmask_298',['getmutexmask',['../class_body_lock_interface_no_lock.html#a49bd93a0cda1adce88e20921774d94a6',1,'BodyLockInterfaceNoLock::GetMutexMask()'],['../class_body_lock_interface_locking.html#ad5654fb1a33df17e9bc1aada33b5dcab',1,'BodyLockInterfaceLocking::GetMutexMask()'],['../class_body_manager.html#a447a132451ef5c4def8e0c51450b2701',1,'BodyManager::GetMutexMask()'],['../class_body_lock_interface.html#a3bfe95981277029552253f953f5e2179',1,'BodyLockInterface::GetMutexMask()']]], + ['getname_299',['getname',['../class_job_system_1_1_job.html#a426bcf2faa48d1ba4cf7874a32910f83',1,'JobSystem::Job::GetName()'],['../class_r_t_t_i.html#a0d8d743280e7d661ef74c26b8b45e3a9',1,'RTTI::GetName()'],['../class_serializable_attribute.html#aeef84793af0dbf4397f0e0ca4590a39c',1,'SerializableAttribute::GetName()'],['../class_quad_tree.html#a06027549b2942685a32f433f9c304d03',1,'QuadTree::GetName()']]], + ['getnarrowphasequery_300',['GetNarrowPhaseQuery',['../class_physics_system.html#a1ced58861f3fbb7cfea901128bb7a84d',1,'PhysicsSystem']]], + ['getnarrowphasequerynolock_301',['GetNarrowPhaseQueryNoLock',['../class_physics_system.html#a472f122c70806d1a2b88fbb441be42e0',1,'PhysicsSystem']]], + ['getnchildren_302',['GetNChildren',['../class_a_a_b_b_tree_builder_1_1_node.html#a8babc5943488e1ca48b9768c647f599a',1,'AABBTreeBuilder::Node']]], + ['getnextedge_303',['GetNextEdge',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a6a342146811919c9bdd18ee827e1ee87',1,'EPAConvexHullBuilder::Triangle']]], + ['getnextpowerof2_304',['GetNextPowerOf2',['../_math_8h.html#ae0004008e30f155d5c7b71eafe3c4790',1,'Math.h']]], + ['getnodecount_305',['GetNodeCount',['../class_a_a_b_b_tree_builder_1_1_node.html#ae1245ceb7193257c465b0916c9c19f10',1,'AABBTreeBuilder::Node']]], + ['getnodeheader_306',['GetNodeHeader',['../class_a_a_b_b_tree_to_buffer.html#ab50a5ee87130c340d6b3cf8816ebf249',1,'AABBTreeToBuffer']]], + ['getnormal_307',['getnormal',['../class_ellipse.html#a827cce3196e44e983b0fb525eb9d52ac',1,'Ellipse::GetNormal()'],['../class_plane.html#a70e66a46d4eb8b334c929ad71c48ba42',1,'Plane::GetNormal()']]], + ['getnormalhalfconeangle_308',['GetNormalHalfConeAngle',['../class_swing_twist_constraint.html#a01fffaa54b35ffbe9321bd6549346b4d',1,'SwingTwistConstraint']]], + ['getnormalizedperpendicular_309',['GetNormalizedPerpendicular',['../class_vec3.html#a24a96972fdbe04ae9a3e340fd4c39b81',1,'Vec3']]], + ['getnumactivebodies_310',['getnumactivebodies',['../class_physics_system.html#a294887e565856fe5305419aa4432e33e',1,'PhysicsSystem::GetNumActiveBodies()'],['../class_body_manager.html#afc847edf3623bce165d4c872f0dc4d68',1,'BodyManager::GetNumActiveBodies(EBodyType inType) const']]], + ['getnumactiveccdbodies_311',['GetNumActiveCCDBodies',['../class_body_manager.html#a462f40b51e2bbdae500c62584d0376be',1,'BodyManager']]], + ['getnumbitswritten_312',['GetNumBitsWritten',['../class_sub_shape_i_d_creator.html#a788289a4af585ce7f0bc7416d6b5d93c',1,'SubShapeIDCreator']]], + ['getnumbodies_313',['getnumbodies',['../class_physics_system.html#a25eb1c752bffdd53c2c7cd610f2708f7',1,'PhysicsSystem::GetNumBodies()'],['../class_body_manager.html#a28e008be233691bbccef7d17e20d113d',1,'BodyManager::GetNumBodies()'],['../class_physics_scene.html#acfb0a143a8984c6ca97f010c9ea94a08',1,'PhysicsScene::GetNumBodies()']]], + ['getnumbroadphaselayers_314',['getnumbroadphaselayers',['../class_broad_phase_layer_interface.html#a3eeb469199592955036a5b24633b8f53',1,'BroadPhaseLayerInterface::GetNumBroadPhaseLayers()'],['../class_broad_phase_layer_interface_mask.html#a5c4d1d6ac5321a8bd30ddd54be36f24d',1,'BroadPhaseLayerInterfaceMask::GetNumBroadPhaseLayers()'],['../class_broad_phase_layer_interface_table.html#a0b15a05cfa5251b19bd3f1e5c14b38f3',1,'BroadPhaseLayerInterfaceTable::GetNumBroadPhaseLayers()']]], + ['getnumbuckets_315',['GetNumBuckets',['../class_lock_free_hash_map.html#ab0b1ca4bac3c00813a024ed4b462e44d',1,'LockFreeHashMap']]], + ['getnumconstraints_316',['getnumconstraints',['../class_physics_scene.html#a62a1ad6dbbb7d6ef95f3556608be1717',1,'PhysicsScene::GetNumConstraints()'],['../class_constraint_manager.html#acd910b293c763c5c5a6f7c29a37721fb',1,'ConstraintManager::GetNumConstraints()'],['../class_contact_constraint_manager.html#aad540014a518a8f5942842e1a347447f',1,'ContactConstraintManager::GetNumConstraints()'],['../struct_large_island_splitter_1_1_split.html#a7be7a84dab98a3ec965a98117dde3267',1,'LargeIslandSplitter::Split::GetNumConstraints() const']]], + ['getnumcontacts_317',['GetNumContacts',['../struct_large_island_splitter_1_1_split.html#abf23d7df82ca57e028f02e98b0dc578b',1,'LargeIslandSplitter::Split']]], + ['getnumfaces_318',['GetNumFaces',['../class_convex_hull_shape.html#a93a52de78a436f3c3a54c72a9c9e1e05',1,'ConvexHullShape']]], + ['getnumframes_319',['GetNumFrames',['../class_debug_renderer_playback.html#afd7aac14421906d07df334e1d3a8f31c',1,'DebugRendererPlayback']]], + ['getnumislands_320',['GetNumIslands',['../class_island_builder.html#a6f0d6d67425a9d02cf561a06784431f4',1,'IslandBuilder']]], + ['getnumitems_321',['GetNumItems',['../struct_large_island_splitter_1_1_split.html#a360a0aa43dfc7ff2943a77d99f4c3513',1,'LargeIslandSplitter::Split']]], + ['getnumiterations_322',['GetNumIterations',['../class_soft_body_motion_properties.html#adc98275db06cee84d06be488a9806ca5',1,'SoftBodyMotionProperties']]], + ['getnummutexes_323',['GetNumMutexes',['../class_mutex_array.html#afa901f85cfe3dff0c32edc0d8a852813',1,'MutexArray']]], + ['getnumobjectlayers_324',['GetNumObjectLayers',['../class_object_layer_pair_filter_table.html#a1f1540757a584e5409d8dd8f6d8c64b4',1,'ObjectLayerPairFilterTable']]], + ['getnumpoints_325',['GetNumPoints',['../class_convex_hull_shape.html#adb56ee374395d692a32d08975e8d91ff',1,'ConvexHullShape']]], + ['getnumpositionsteps_326',['getnumpositionsteps',['../class_calculate_solver_steps.html#acdbd82e652ad5f8e4f1ebd10081dbae3',1,'CalculateSolverSteps::GetNumPositionSteps()'],['../class_island_builder.html#a213561deca43cb4c9bde6560bed5a0e1',1,'IslandBuilder::GetNumPositionSteps()']]], + ['getnumpositionstepsoverride_327',['getnumpositionstepsoverride',['../class_motion_properties.html#a4e7820bc189da3db3f2135686bfa0e9d',1,'MotionProperties::GetNumPositionStepsOverride()'],['../class_constraint.html#ad2530947a5b0c4c24e965ab85fdf9ec8',1,'Constraint::GetNumPositionStepsOverride()']]], + ['getnumresults_328',['GetNumResults',['../struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a61d8a2add21106dc7b21b46cab11bc93',1,'CompoundShape::GetIntersectingSubShapesVisitor']]], + ['getnumsoftbodies_329',['GetNumSoftBodies',['../class_physics_scene.html#a53902e4b6f7f482fb490bb9f4219ed78',1,'PhysicsScene']]], + ['getnumsplits_330',['GetNumSplits',['../class_large_island_splitter_1_1_splits.html#a9a7977a12a99fe498e1ca8445eb73409',1,'LargeIslandSplitter::Splits']]], + ['getnumstepsbetweencollisiontestactive_331',['GetNumStepsBetweenCollisionTestActive',['../class_vehicle_constraint.html#aa5612804e5026fcc8c90b0bfab6aba48',1,'VehicleConstraint']]], + ['getnumstepsbetweencollisiontestinactive_332',['GetNumStepsBetweenCollisionTestInactive',['../class_vehicle_constraint.html#a261afc478f9af64ffbf377f86b705f55',1,'VehicleConstraint']]], + ['getnumsubshapes_333',['GetNumSubShapes',['../class_compound_shape.html#abe1e5333a667ccd80b6146b951abf918',1,'CompoundShape']]], + ['getnumvelocitysteps_334',['GetNumVelocitySteps',['../class_calculate_solver_steps.html#a262debb9c3b307d430c154b91306268a',1,'CalculateSolverSteps']]], + ['getnumvelocitystepsoverride_335',['getnumvelocitystepsoverride',['../class_motion_properties.html#a5f3564a6a505e92239eea4ba544fc119',1,'MotionProperties::GetNumVelocityStepsOverride()'],['../class_constraint.html#a56624d10dcf6dd18fa8903897fcc2a03',1,'Constraint::GetNumVelocityStepsOverride()']]], + ['getnumverticesinface_336',['GetNumVerticesInFace',['../class_convex_hull_shape.html#a57b08042d580d3cecbef5cb5e7dd179f',1,'ConvexHullShape']]], + ['getnumverticesused_337',['GetNumVerticesUsed',['../class_convex_hull_builder.html#af5deecbd010d00845107696af6797e63',1,'ConvexHullBuilder']]], + ['getobjectlayer_338',['getobjectlayer',['../class_body.html#a652dca18d0969696d5a4a589c30eddc2',1,'Body::GetObjectLayer()'],['../class_body_interface.html#a4b8d499ac748154a6bdaf948377a0071',1,'BodyInterface::GetObjectLayer()'],['../class_vehicle_collision_tester.html#a168d396a1e2431a984b36e83c2affe07',1,'VehicleCollisionTester::GetObjectLayer() const']]], + ['getobjectlayerfilter_339',['GetObjectLayerFilter',['../class_vehicle_collision_tester.html#ae02f257dee03c198b8ae2acd26143236',1,'VehicleCollisionTester']]], + ['getoffset_340',['GetOffset',['../class_offset_center_of_mass_shape.html#a39dd403b80dac228ece27bae9f03cf90',1,'OffsetCenterOfMassShape']]], + ['getpath_341',['GetPath',['../class_path_constraint.html#ab2fd78b89e5df020c5ed865c900326d4',1,'PathConstraint']]], + ['getpathfraction_342',['GetPathFraction',['../class_path_constraint.html#af0f434b2bb5e416a6efc402aaa5eba22',1,'PathConstraint']]], + ['getpathmaxfraction_343',['getpathmaxfraction',['../class_path_constraint_path.html#aae9ea1aede3ece72c5620bf88776757d',1,'PathConstraintPath::GetPathMaxFraction()'],['../class_path_constraint_path_hermite.html#aafea15f5e08786a10baea9f92e01426c',1,'PathConstraintPathHermite::GetPathMaxFraction()']]], + ['getpenetrationdepth_344',['GetPenetrationDepth',['../class_e_p_a_penetration_depth.html#a8368ab4825b799eb57d6f6cf841087e2',1,'EPAPenetrationDepth']]], + ['getpenetrationdepthstepepa_345',['GetPenetrationDepthStepEPA',['../class_e_p_a_penetration_depth.html#acff8a6121c0896e3aabbe3a18019f201',1,'EPAPenetrationDepth']]], + ['getpenetrationdepthstepgjk_346',['GetPenetrationDepthStepGJK',['../class_e_p_a_penetration_depth.html#a903dc39955aae9b4e9eced5a396eb5a7',1,'EPAPenetrationDepth']]], + ['getpenetrationrecoveryspeed_347',['GetPenetrationRecoverySpeed',['../class_character_virtual.html#a2407cd5fec2965214f0d9c3c27eb47ca',1,'CharacterVirtual']]], + ['getperpendicular_348',['GetPerpendicular',['../class_quat.html#abba5ae611cba89b67e967945ffe32c8f',1,'Quat']]], + ['getpessimisticmemoryestimate_349',['getpessimisticmemoryestimate',['../class_node_codec_quad_tree_half_float_1_1_encoding_context.html#a743407baa5c478e69bb3f36dcd4b0e5e',1,'NodeCodecQuadTreeHalfFloat::EncodingContext::GetPessimisticMemoryEstimate()'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#ae8eb05b5245787f87587b5d24aa4f469',1,'TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::GetPessimisticMemoryEstimate()']]], + ['getphysicssettings_350',['GetPhysicsSettings',['../class_physics_system.html#a54b6d93365bca8fda1edf68997c29b9e',1,'PhysicsSystem']]], + ['getplane_351',['GetPlane',['../class_plane_shape.html#a036800bdcab80d0612d530a1fef3de7e',1,'PlaneShape']]], + ['getplanehalfconeangle_352',['GetPlaneHalfConeAngle',['../class_swing_twist_constraint.html#a6529b62b9a91f1f1093116a789f1d5ca',1,'SwingTwistConstraint']]], + ['getplanes_353',['GetPlanes',['../class_convex_hull_shape.html#a82497cbbe81983826a5f13a0dd0f3b2b',1,'ConvexHullShape']]], + ['getpoint_354',['GetPoint',['../class_convex_hull_shape.html#a611a3efc9d9016c15917bf329eadf2ec',1,'ConvexHullShape']]], + ['getpointonpath_355',['getpointonpath',['../class_path_constraint_path.html#aa0dc6d3e2b57196ca90da9c10d37f9ea',1,'PathConstraintPath::GetPointOnPath()'],['../class_path_constraint_path_hermite.html#a5645f67f35fd20fe9a966a40a19d0eb8',1,'PathConstraintPathHermite::GetPointOnPath()']]], + ['getpointonray_356',['getpointonray',['../struct_shape_cast_t.html#a90dcaf5d1e22122cf08862b9da811c96',1,'ShapeCastT::GetPointOnRay()'],['../struct_ray_cast_t.html#abe1d2e9b088ca71ca732e0b5234696fd',1,'RayCastT::GetPointOnRay()']]], + ['getpoints_357',['getpoints',['../class_convex_hull_shape_1_1_hull_no_convex.html#ae04c0e70e714f921fadc87f564dba26e',1,'ConvexHullShape::HullNoConvex::GetPoints()'],['../class_convex_hull_shape_1_1_hull_no_convex.html#a92d3e4199e5b0f75fb4726659a67b4f3',1,'ConvexHullShape::HullNoConvex::GetPoints() const']]], + ['getpointvelocity_358',['getpointvelocity',['../class_body.html#a04705ba7fe0c4cfac8bda79a43421beb',1,'Body::GetPointVelocity()'],['../class_body_interface.html#a0861d123b1e074d35c8f9e0151e391d6',1,'BodyInterface::GetPointVelocity()']]], + ['getpointvelocitycom_359',['getpointvelocitycom',['../class_body.html#a19540cae81c6338eb7023bb9c923b0d4',1,'Body::GetPointVelocityCOM()'],['../class_motion_properties.html#a3b3277de19d5dc081a6e15111f7dc14c',1,'MotionProperties::GetPointVelocityCOM()']]], + ['getpose_360',['getpose',['../class_ragdoll.html#aeb6b26fdc0eefbb815af1d06c9e5da69',1,'Ragdoll::GetPose(SkeletonPose &outPose, bool inLockBodies=true)'],['../class_ragdoll.html#a9c9a6d0791b776f4360d0cd9ddfc6f84',1,'Ragdoll::GetPose(RVec3 &outRootOffset, Mat44 *outJointMatrices, bool inLockBodies=true)']]], + ['getposition_361',['getposition',['../class_rotated_translated_shape.html#ab7cda756537d468e9260ed98a9ddb523',1,'RotatedTranslatedShape::GetPosition()'],['../class_character.html#abb9ac0e79c04c6e1016511a162bc0855',1,'Character::GetPosition()'],['../class_character_virtual.html#a24f025912ca62c15e830bd6213129d6b',1,'CharacterVirtual::GetPosition()'],['../class_height_field_shape.html#a402509e2c2280d728b9e0a1290e680ba',1,'HeightFieldShape::GetPosition()'],['../class_body_interface.html#a97f114a5663f7a5e9461c73c01d4b2af',1,'BodyInterface::GetPosition()'],['../class_body.html#adce53bad2dc9f79804d6a01d435c06e0',1,'Body::GetPosition()']]], + ['getpositionandrotation_362',['getpositionandrotation',['../class_body_interface.html#a48912c55b281718dbd1cb25e6797c46e',1,'BodyInterface::GetPositionAndRotation()'],['../class_character.html#acbe6e08d5f65047764e825dad49c8cc3',1,'Character::GetPositionAndRotation()']]], + ['getpositioncom_363',['GetPositionCOM',['../struct_compound_shape_1_1_sub_shape.html#ac3fea8705474011f4f5681c18fcdaaa2',1,'CompoundShape::SubShape']]], + ['getpositionmotorsettings_364',['getpositionmotorsettings',['../class_path_constraint.html#aae30cd39beec4628b22295eec9fdb66b',1,'PathConstraint::GetPositionMotorSettings()'],['../class_path_constraint.html#afe1f87898534471bb7dc888dd9676262',1,'PathConstraint::GetPositionMotorSettings() const']]], + ['getpositionmotorstate_365',['GetPositionMotorState',['../class_path_constraint.html#a2d073636288d7a79e0453fff543c0660',1,'PathConstraint']]], + ['getpositiveearlyoutfraction_366',['GetPositiveEarlyOutFraction',['../class_collision_collector.html#aeb1fb262127298ec8bc296ead30a2e77',1,'CollisionCollector']]], + ['getpostcollidecallback_367',['GetPostCollideCallback',['../class_vehicle_constraint.html#aa666c4c14ae6b42d5d578ce3c425726b',1,'VehicleConstraint']]], + ['getpoststepcallback_368',['GetPostStepCallback',['../class_vehicle_constraint.html#a55c495a44c94d98437ea4254ee8ecfb7',1,'VehicleConstraint']]], + ['getpressure_369',['GetPressure',['../class_soft_body_motion_properties.html#ae15a2a2fdf14951fe7d9cd22e9e848e6',1,'SoftBodyMotionProperties']]], + ['getprestepcallback_370',['GetPreStepCallback',['../class_vehicle_constraint.html#a06c77bdf083e33a1814e09b9cdaa74f9',1,'VehicleConstraint']]], + ['getpreviousedge_371',['GetPreviousEdge',['../class_convex_hull_builder_1_1_edge.html#af8a79bb1db1fa4f8cdbc67dc04261563',1,'ConvexHullBuilder::Edge']]], + ['getprimitivetypeoftype_372',['getprimitivetypeoftype',['../_get_primitive_type_of_type_8h.html#afcbff43d21c5b1818c1663b88b724ebe',1,'GetPrimitiveTypeOfType(T(*)[N]): GetPrimitiveTypeOfType.h'],['../_get_primitive_type_of_type_8h.html#a333329c022169319150ccbed1266cee5',1,'GetPrimitiveTypeOfType(RefConst< T > *): GetPrimitiveTypeOfType.h'],['../_get_primitive_type_of_type_8h.html#aeac5a3169dddfc36ae8112d8a152133e',1,'GetPrimitiveTypeOfType(Array< T, A > *): GetPrimitiveTypeOfType.h'],['../_get_primitive_type_of_type_8h.html#a28bd8139f78b17ea7c2c3c8dac5ad754',1,'GetPrimitiveTypeOfType(StaticArray< T, N > *): GetPrimitiveTypeOfType.h'],['../_get_primitive_type_of_type_8h.html#a98487e1613e4448be96935228a098209',1,'GetPrimitiveTypeOfType(Ref< T > *): GetPrimitiveTypeOfType.h'],['../_get_primitive_type_of_type_8h.html#a8261b0b71c3f84b13c6ab396ba807993',1,'GetPrimitiveTypeOfType(T **): GetPrimitiveTypeOfType.h'],['../_get_primitive_type_of_type_8h.html#ae02d0a3c24fabff8ce59cd5394e337e0',1,'GetPrimitiveTypeOfType(T *): GetPrimitiveTypeOfType.h']]], + ['getprimitivetypeoftype_2eh_373',['GetPrimitiveTypeOfType.h',['../_get_primitive_type_of_type_8h.html',1,'']]], + ['getprocessortickcount_374',['GetProcessorTickCount',['../_tick_counter_8h.html#ae23ab4860bcfb31beb5c9905f23426c1',1,'TickCounter.h']]], + ['getptr_375',['getptr',['../class_ref_const.html#a1dcd19b921fc3022e10cbde1c5ac36e2',1,'RefConst::GetPtr()'],['../class_ref.html#a11ddc0decf3451568dc47178bed5e2aa',1,'Ref::GetPtr()']]], + ['getquaternion_376',['getquaternion',['../class_mat44.html#a1e977c53b5f6a0c03f8da33ebef2c05a',1,'Mat44::GetQuaternion()'],['../class_d_mat44.html#a73d9f99570455f596fb3b7fcd1937b29',1,'DMat44::GetQuaternion()']]], + ['getradius_377',['getradius',['../class_sphere_shape.html#a05f8c7b1d7501c040804bb14c7d9ea84',1,'SphereShape::GetRadius()'],['../class_capsule_shape.html#aa8b10abff70cdeb364e5663344a4c793',1,'CapsuleShape::GetRadius()'],['../class_sphere.html#a1be9f865028172ade600ed25ca0aee4f',1,'Sphere::GetRadius()'],['../class_cylinder_shape.html#aaff85dbcc24db20b60dc9e75363f1c04',1,'CylinderShape::GetRadius()']]], + ['getragdollsettings_378',['GetRagdollSettings',['../class_ragdoll.html#adf2f2237288c30779260c4b1e744a76d',1,'Ragdoll']]], + ['getrefcount_379',['GetRefCount',['../class_ref_target.html#acaf07366183c51cd8460c7d3dcd07c2d',1,'RefTarget']]], + ['getreferencepointidx_380',['GetReferencePointIdx',['../class_polyhedron_submerged_volume_calculator.html#af52627bf533a56d1b951f32030010eeb',1,'PolyhedronSubmergedVolumeCalculator']]], + ['getrestitution_381',['getrestitution',['../class_body_interface.html#a4a4947d638e0d8b6663f50824c9cbd58',1,'BodyInterface::GetRestitution()'],['../class_body.html#a5657cc63a5fd9ee1e4a8408ac51affcc',1,'Body::GetRestitution()']]], + ['getresult_382',['GetResult',['../class_polyhedron_submerged_volume_calculator.html#a5a1c107b68d02c02bde9493400549faf',1,'PolyhedronSubmergedVolumeCalculator']]], + ['getrightinput_383',['GetRightInput',['../class_wheeled_vehicle_controller.html#a3fa4fcaa580f6bb5c47894858144397d',1,'WheeledVehicleController']]], + ['getrightratio_384',['GetRightRatio',['../class_tracked_vehicle_controller.html#a56d16548d8180759d16746c4e4024ba5',1,'TrackedVehicleController']]], + ['getroot_385',['GetRoot',['../class_a_a_b_b_tree_to_buffer.html#ae2034a353c9336f3e7df4bcdf9f97d8c',1,'AABBTreeToBuffer']]], + ['getrootoffset_386',['GetRootOffset',['../class_skeleton_pose.html#ace1c753663d81c68c7896c95c34a6b2a',1,'SkeletonPose']]], + ['getroottransform_387',['GetRootTransform',['../class_ragdoll.html#ab6ccff7d0aee7c9931a308c722614fff',1,'Ragdoll']]], + ['getrotation_388',['getrotation',['../struct_compound_shape_1_1_sub_shape.html#a13d700b0e7064e9ecdf99afdc0262eae',1,'CompoundShape::SubShape::GetRotation()'],['../class_body_interface.html#a1afec2cfd709e9f48e21f1112da9b21b',1,'BodyInterface::GetRotation()'],['../class_character.html#a5e63091e4ec6920b9054a835d5a1e93e',1,'Character::GetRotation()'],['../class_body.html#aaee24bfb5e32e756f50113b9d1f45a2c',1,'Body::GetRotation()'],['../class_mat44.html#a4cc37dcc7b9be4ab8f8e94bf49e06204',1,'Mat44::GetRotation()'],['../class_d_mat44.html#ad488caa68ce5121590b731778edac0d6',1,'DMat44::GetRotation()'],['../class_character_virtual.html#afdec9f01a8b449ba9b29f39c42afe0d8',1,'CharacterVirtual::GetRotation()'],['../class_rotated_translated_shape.html#a6d164a126cd4dea6185b8fb4ec918199',1,'RotatedTranslatedShape::GetRotation()']]], + ['getrotationangle_389',['getrotationangle',['../class_wheel.html#a06226466b8c4ff0f65ae329bb3b7a3b2',1,'Wheel::GetRotationAngle()'],['../class_quat.html#ac72ff53fa4780399aa0755e2ca31b450',1,'Quat::GetRotationAngle()']]], + ['getrotationinconstraintspace_390',['getrotationinconstraintspace',['../class_swing_twist_constraint.html#adef556a69c073651dc5370213dff405e',1,'SwingTwistConstraint::GetRotationInConstraintSpace()'],['../class_six_d_o_f_constraint.html#ae4af627f61bd4bd61d242756dd7f838a',1,'SixDOFConstraint::GetRotationInConstraintSpace() const']]], + ['getrotationlimitsmax_391',['GetRotationLimitsMax',['../class_six_d_o_f_constraint.html#a9d5cd3757370c1c95a19828cfe8ed7ce',1,'SixDOFConstraint']]], + ['getrotationlimitsmin_392',['GetRotationLimitsMin',['../class_six_d_o_f_constraint.html#ae130846346f47a470d08e7e916955bf6',1,'SixDOFConstraint']]], + ['getrotationsafe_393',['GetRotationSafe',['../class_mat44.html#a564ee35616cca9a01624760e58bfb9ca',1,'Mat44']]], + ['getrows_394',['getrows',['../class_dyn_matrix.html#a6cacfcbd4295e7cb5a40a8a8dc51bd01',1,'DynMatrix::GetRows()'],['../class_matrix.html#a295baf4af956351b6bf05548e16887ee',1,'Matrix::GetRows()'],['../class_vector.html#a8c1387fdaa60b9569f5e9acb1363b7fb',1,'Vector::GetRows()']]], + ['getsamplecount_395',['GetSampleCount',['../class_height_field_shape.html#a574a78817c0d2bfe1b46dc7e1ca2c9a5',1,'HeightFieldShape']]], + ['getscale_396',['GetScale',['../class_scaled_shape.html#a7324baba8e06fe9ed476bd5644f8f34e',1,'ScaledShape']]], + ['getsequencenumber_397',['GetSequenceNumber',['../class_body_i_d.html#af327d342cd7e2a6be188bc836270ba51',1,'BodyID']]], + ['getsettings_398',['getsettings',['../class_wheel_w_v.html#a3c72a249175961c0cb86b691b2980d06',1,'WheelWV::GetSettings()'],['../class_wheel.html#ab93b1087453249915b72e74733ea2af3',1,'Wheel::GetSettings()'],['../class_wheel_t_v.html#a7189cbd04b92e8babd4fc9e01826d030',1,'WheelTV::GetSettings()'],['../class_soft_body_motion_properties.html#af56ddceaa1945447bf214647d44ca8f1',1,'SoftBodyMotionProperties::GetSettings()']]], + ['getshape_399',['getshape',['../class_body.html#a45950d9b3f8f28aafa13a81374912bf1',1,'Body::GetShape()'],['../class_character_base.html#afe046cfb3333be1fcb186f42821ddb19',1,'CharacterBase::GetShape()'],['../class_body_interface.html#af67cf1a0f9c7fa744d4e2387d63e04ba',1,'BodyInterface::GetShape()'],['../class_body_creation_settings.html#ab668ffb9415e2e9d8790bb532b83bf53',1,'BodyCreationSettings::GetShape()']]], + ['getshapeoffset_400',['GetShapeOffset',['../class_character_virtual.html#ad36f1869421eeee298f3230d27841071',1,'CharacterVirtual']]], + ['getshapescale_401',['GetShapeScale',['../class_transformed_shape.html#a9f0559c4106b9b17becd5f401389b354',1,'TransformedShape']]], + ['getshapesettings_402',['GetShapeSettings',['../class_body_creation_settings.html#a35093b07ed1677438e4f3d004d0d8a2e',1,'BodyCreationSettings']]], + ['getsign_403',['getsign',['../class_vec4.html#a28b864dcc901d9bd5061b34e9551346c',1,'Vec4::GetSign()'],['../class_d_vec3.html#a298f2bc29cc4d55a9f9d30a9512cada3',1,'DVec3::GetSign()'],['../class_vec3.html#aecf767007e342e11f109b83a09449c7f',1,'Vec3::GetSign()']]], + ['getsignbits_404',['GetSignBits',['../class_vec4.html#aeccf9a2f8d2742fba6c62d4419cfa5d6',1,'Vec4']]], + ['getsize_405',['getsize',['../class_a_a_box.html#a376b8319c2ac3e843b1dfac1b8288e94',1,'AABox::GetSize()'],['../class_temp_allocator_impl.html#ac8ffac8efe60b8922f9da58082f7dcae',1,'TempAllocatorImpl::GetSize()'],['../class_r_t_t_i.html#a84f77151d163bb24c230c0af4a5c2682',1,'RTTI::GetSize()']]], + ['getsizeref_406',['GetSizeRef',['../class_e_p_a_convex_hull_builder_1_1_points.html#a5b85570fd72e9b7e9575981fe7464383',1,'EPAConvexHullBuilder::Points']]], + ['getskeleton_407',['getskeleton',['../class_skeleton_pose.html#a2e60e72ebf66740c7d9d99274b70efe7',1,'SkeletonPose::GetSkeleton()'],['../class_ragdoll_settings.html#a10ee1dfde20a1031ba99268be5b60157',1,'RagdollSettings::GetSkeleton()'],['../class_ragdoll_settings.html#a5f7c10c07d5cdaa2800bda61897f8852',1,'RagdollSettings::GetSkeleton() const']]], + ['getskinnedmaxdistancemultiplier_408',['GetSkinnedMaxDistanceMultiplier',['../class_soft_body_motion_properties.html#a6201339ce0eaf31374525cf645c7babb',1,'SoftBodyMotionProperties']]], + ['getsoftbodies_409',['getsoftbodies',['../class_physics_scene.html#abcb7d9317c3e8d91d3e9b0799a7596f8',1,'PhysicsScene::GetSoftBodies()'],['../class_physics_scene.html#afe41447c0b307d2844a16e288fd412af',1,'PhysicsScene::GetSoftBodies() const']]], + ['getsoftbodycontactlistener_410',['GetSoftBodyContactListener',['../class_physics_system.html#ae0014dc0eb3cf650db692bb24e0c3f75',1,'PhysicsSystem']]], + ['getsoftbodycreationsettings_411',['GetSoftBodyCreationSettings',['../class_body.html#a61a0607212ae03156e55dbfdabceb886',1,'Body']]], + ['getsqdistanceto_412',['GetSqDistanceTo',['../class_a_a_box.html#a9d68bc754580c6a3055ce4e6a305460f',1,'AABox']]], + ['getstats_413',['getstats',['../class_mutable_compound_shape.html#aabd799e121f048e83a6ef43490422fbe',1,'MutableCompoundShape::GetStats()'],['../class_height_field_shape.html#a9d3783be079e3d425bf049abf2c6a9e4',1,'HeightFieldShape::GetStats()'],['../class_cylinder_shape.html#a30d8aeffc7430806287324f7f55eb5a5',1,'CylinderShape::GetStats()'],['../class_convex_hull_shape.html#abdfd4a2a43587db1b5d726c78d3ee2b5',1,'ConvexHullShape::GetStats()'],['../class_capsule_shape.html#a274bd9ad407e747585488727e4697357',1,'CapsuleShape::GetStats()'],['../class_box_shape.html#aa47cad6cf56f35a41e8626c3fd587fb3',1,'BoxShape::GetStats()'],['../class_mesh_shape.html#a9996003623615ba708c420e90e86349e',1,'MeshShape::GetStats()'],['../class_triangle_splitter_morton.html#a874a5423ed55acbabc662812a0a5ec4f',1,'TriangleSplitterMorton::GetStats()'],['../class_triangle_splitter_mean.html#a32235dae954e916c9e3235ebe3704345',1,'TriangleSplitterMean::GetStats()'],['../class_triangle_splitter_longest_axis.html#a45cde2072d3a6c30b46c6afa0e9bec51',1,'TriangleSplitterLongestAxis::GetStats()'],['../class_triangle_splitter_fixed_leaf_size.html#a6d3cb63db9a9f4d5f48fc0db60ef4717',1,'TriangleSplitterFixedLeafSize::GetStats()'],['../class_triangle_splitter_binning.html#a528500c9d8c6ba8225ec945e135c9588',1,'TriangleSplitterBinning::GetStats()'],['../class_soft_body_shape.html#ae275b4c0b3e23b493bda12687d93970c',1,'SoftBodyShape::GetStats()'],['../class_offset_center_of_mass_shape.html#a656e5b4eee8f07b32ef59fb20858771b',1,'OffsetCenterOfMassShape::GetStats()'],['../class_plane_shape.html#a8a1251dffea8135e57a8863160d49828',1,'PlaneShape::GetStats()'],['../class_rotated_translated_shape.html#a33919b6a211cae9bd392914c25923111',1,'RotatedTranslatedShape::GetStats()'],['../class_scaled_shape.html#a1d1237076dc542497e7ca6b917cc7d68',1,'ScaledShape::GetStats()'],['../class_shape.html#a87ae161e649ab6af75a60fe130dd195b',1,'Shape::GetStats()'],['../class_sphere_shape.html#adff6e55656d0dc2048f40b3dad359fd8',1,'SphereShape::GetStats()'],['../class_static_compound_shape.html#ad973e13f69ffa355e172f8a37d5fc347',1,'StaticCompoundShape::GetStats()'],['../class_tapered_capsule_shape.html#a5f3e2462c74c498511d4b010797ddbab',1,'TaperedCapsuleShape::GetStats()'],['../class_tapered_cylinder_shape.html#a8807be9437040acbac4cdd69baa20635',1,'TaperedCylinderShape::GetStats()'],['../class_triangle_shape.html#a41afaef8725be99a40861e777de22119',1,'TriangleShape::GetStats()'],['../class_triangle_splitter.html#ad58e7ea8a806e7e9df8ea5117ff2ebe8',1,'TriangleSplitter::GetStats()']]], + ['getstatsrecursive_414',['getstatsrecursive',['../class_shape.html#ae90566019bdce3edf3be921044b38ea6',1,'Shape::GetStatsRecursive()'],['../class_decorated_shape.html#a24a5fc486a279b6afaf2cada33f28272',1,'DecoratedShape::GetStatsRecursive()'],['../class_compound_shape.html#acd0cdb69e92db34899880f3f6b596bec',1,'CompoundShape::GetStatsRecursive()']]], + ['getsteerangle_415',['GetSteerAngle',['../class_wheel.html#a1972924bef7c43ef8544a7ba2dc28c07',1,'Wheel']]], + ['getsubgroupid_416',['GetSubGroupID',['../class_collision_group.html#a156fd729674403783be12fe41ee5b288',1,'CollisionGroup']]], + ['getsubmergedvolume_417',['getsubmergedvolume',['../class_convex_hull_shape.html#ab050ca44e34a8329d661019c379b39c6',1,'ConvexHullShape::GetSubmergedVolume()'],['../class_soft_body_shape.html#aa1909263e9c7099933d817f6a6d5eab0',1,'SoftBodyShape::GetSubmergedVolume()'],['../class_triangle_shape.html#aaf0e4efd78402e813ebd25d219020773',1,'TriangleShape::GetSubmergedVolume()'],['../class_shape.html#a99f077aa0ffef0d518ced9b69ca21d18',1,'Shape::GetSubmergedVolume()'],['../class_scaled_shape.html#aca3913c54c796de4014330c508484005',1,'ScaledShape::GetSubmergedVolume()'],['../class_compound_shape.html#a9a5f3e80546cee592d5a79cd4e3561ee',1,'CompoundShape::GetSubmergedVolume()'],['../class_sphere_shape.html#accef575dd77414652ae4c1c0f68b6c88',1,'SphereShape::GetSubmergedVolume()'],['../class_rotated_translated_shape.html#a6c89e34ea8f2407b0821aa5e340a1d3e',1,'RotatedTranslatedShape::GetSubmergedVolume()'],['../class_plane_shape.html#a270b08b26cc533e7cfb04ca85f5abaff',1,'PlaneShape::GetSubmergedVolume()'],['../class_offset_center_of_mass_shape.html#a5f9a701d7ec907aaf816abf05ec25805',1,'OffsetCenterOfMassShape::GetSubmergedVolume()'],['../class_mesh_shape.html#a08a4d8b005fedbf05db4082bdb39b1aa',1,'MeshShape::GetSubmergedVolume()'],['../class_height_field_shape.html#ab7cc33f5afd734cf43238fe8550cc069',1,'HeightFieldShape::GetSubmergedVolume()'],['../class_convex_shape.html#a49e7da39c873a9b8e3c3ffde94d31972',1,'ConvexShape::GetSubmergedVolume()']]], + ['getsubshape_418',['GetSubShape',['../class_compound_shape.html#af70b012c88d2bedfb9541d40e6e46fb2',1,'CompoundShape']]], + ['getsubshapecoordinates_419',['GetSubShapeCoordinates',['../class_height_field_shape.html#aa98bc099a0466ff6e4284d5942b738ce',1,'HeightFieldShape']]], + ['getsubshapeid1_420',['GetSubShapeID1',['../class_sub_shape_i_d_pair.html#ada31f15601de55a64463899ed5ec67b8',1,'SubShapeIDPair']]], + ['getsubshapeid2_421',['GetSubShapeID2',['../class_sub_shape_i_d_pair.html#a6fd1caef92ab138b72a0663030ba1b14',1,'SubShapeIDPair']]], + ['getsubshapeidbits_422',['getsubshapeidbits',['../class_soft_body_shape.html#ae83f9a5588e05aab0dd66f96750a3b15',1,'SoftBodyShape::GetSubShapeIDBits()'],['../class_compound_shape.html#a3f4a71f903b9b37eb61262257ca268f2',1,'CompoundShape::GetSubShapeIDBits() const']]], + ['getsubshapeidbitsrecursive_423',['getsubshapeidbitsrecursive',['../class_compound_shape.html#ab0cb754108355742e26e08614beaaec1',1,'CompoundShape::GetSubShapeIDBitsRecursive()'],['../class_mesh_shape.html#a7e26f8abf395dc62026f5c4789e3c378',1,'MeshShape::GetSubShapeIDBitsRecursive()'],['../class_height_field_shape.html#ab7c2e6fc0f60fa4290474d758473b3ab',1,'HeightFieldShape::GetSubShapeIDBitsRecursive()'],['../class_decorated_shape.html#a0369b0f4e52b29f3625022bfd98a6924',1,'DecoratedShape::GetSubShapeIDBitsRecursive()'],['../class_convex_shape.html#aeda184c70bca8f98105bd58df579eb87',1,'ConvexShape::GetSubShapeIDBitsRecursive()'],['../class_plane_shape.html#af2df250d4d28fd2efe1f432126b15d2d',1,'PlaneShape::GetSubShapeIDBitsRecursive()'],['../class_shape.html#aee463ecaa01e871524f5396871b5e8c6',1,'Shape::GetSubShapeIDBitsRecursive()'],['../class_soft_body_shape.html#a3ff7ce4976bb19746e58ac06d90f1695',1,'SoftBodyShape::GetSubShapeIDBitsRecursive()']]], + ['getsubshapeidfromindex_424',['GetSubShapeIDFromIndex',['../class_compound_shape.html#a66ae55d5b737c492d73286dff4615215',1,'CompoundShape']]], + ['getsubshapeindexfromid_425',['GetSubShapeIndexFromID',['../class_compound_shape.html#a6ff804957bb05620ab762532d2f2ab3d',1,'CompoundShape']]], + ['getsubshapes_426',['GetSubShapes',['../class_compound_shape.html#a3c4efdc6b41fc47e604ee8154425a80a',1,'CompoundShape']]], + ['getsubshapetransformedshape_427',['getsubshapetransformedshape',['../class_transformed_shape.html#a8ef1a33902094dcdd6f20f63868c5ea2',1,'TransformedShape::GetSubShapeTransformedShape()'],['../class_shape.html#acf8d5f8e430acc87c88fbd558407efc7',1,'Shape::GetSubShapeTransformedShape()'],['../class_scaled_shape.html#adc6c23ae1479cd048a6b6c87b8b0aa2a',1,'ScaledShape::GetSubShapeTransformedShape()'],['../class_rotated_translated_shape.html#a28982c9e515052eed5e3e6663b020cb8',1,'RotatedTranslatedShape::GetSubShapeTransformedShape()'],['../class_offset_center_of_mass_shape.html#adcef4fa526642a2cdd565352f278c9f5',1,'OffsetCenterOfMassShape::GetSubShapeTransformedShape()'],['../class_compound_shape.html#ae21a8dff0919f928ae1d282293018a8c',1,'CompoundShape::GetSubShapeTransformedShape()']]], + ['getsubshapeuserdata_428',['getsubshapeuserdata',['../class_transformed_shape.html#a98ca3c64d2bc65548a4845085c53eba5',1,'TransformedShape::GetSubShapeUserData()'],['../class_shape.html#a29de5bb2f770d7e521f0d939436faa1b',1,'Shape::GetSubShapeUserData()'],['../class_decorated_shape.html#afdcd8fb7a79bc210ca792d2db1fdfe09',1,'DecoratedShape::GetSubShapeUserData()'],['../class_compound_shape.html#adf93c781343189f225f39656a64240db',1,'CompoundShape::GetSubShapeUserData()']]], + ['getsubtype_429',['getsubtype',['../class_point_constraint.html#a0993bfa066a32b159d45cf54b346163f',1,'PointConstraint::GetSubType()'],['../class_vehicle_constraint.html#a989fc35253ed8da61981107b0fc19fba',1,'VehicleConstraint::GetSubType()'],['../class_swing_twist_constraint.html#a259cdffe333947fb29e1455619b81dd5',1,'SwingTwistConstraint::GetSubType()'],['../class_slider_constraint.html#a4655336347868e54cf484f9f43a830fe',1,'SliderConstraint::GetSubType()'],['../class_rack_and_pinion_constraint.html#ae8c15998c1efe563c3153b27c58ab87a',1,'RackAndPinionConstraint::GetSubType()'],['../class_shape.html#a864cef23ca0a3add699adea26ed1fef7',1,'Shape::GetSubType()'],['../class_cone_constraint.html#a174c2fdca09d8ceddbf14f71384791b7',1,'ConeConstraint::GetSubType()'],['../class_constraint.html#a632a8161ad49c443c2e3a8b600a730a1',1,'Constraint::GetSubType()'],['../class_distance_constraint.html#aca72385bb8b1dede13ca841681e37cae',1,'DistanceConstraint::GetSubType()'],['../class_fixed_constraint.html#ae4a226e769a4bab140f41f72a2aff9b5',1,'FixedConstraint::GetSubType()'],['../class_gear_constraint.html#ad760c5afd1f0a52d595b4788247d892c',1,'GearConstraint::GetSubType()'],['../class_hinge_constraint.html#ac6c68736fa26f85a973b0aa95daa7674',1,'HingeConstraint::GetSubType()'],['../class_path_constraint.html#a73052367b302ac8b30a9505aa1901795',1,'PathConstraint::GetSubType()'],['../class_pulley_constraint.html#a175acacfe8fcc7518a90d7b29e0ad8eb',1,'PulleyConstraint::GetSubType()'],['../class_six_d_o_f_constraint.html#ae13f824a4eddf95835fdeffe61c7ffba',1,'SixDOFConstraint::GetSubType()']]], + ['getsupport_430',['getsupport',['../class_tapered_cylinder_shape_1_1_tapered_cylinder.html#a450d358fbfb9f7313c000bfad68142b5',1,'TaperedCylinderShape::TaperedCylinder::GetSupport()'],['../class_triangle_shape_1_1_triangle_with_convex.html#addb17c65c6b1c99b7a4b2862ac796446',1,'TriangleShape::TriangleWithConvex::GetSupport()'],['../class_triangle_shape_1_1_triangle_no_convex.html#a03cf50acfaaafb83ae5f2c1efc445c7c',1,'TriangleShape::TriangleNoConvex::GetSupport()'],['../class_tapered_capsule_shape_1_1_tapered_capsule.html#a91c8bdbd45deec0013bf3f383adcb149',1,'TaperedCapsuleShape::TaperedCapsule::GetSupport()'],['../class_sphere_shape_1_1_sphere_with_convex.html#a503b8f57aa6e001cda690534f3c723a1',1,'SphereShape::SphereWithConvex::GetSupport()'],['../class_sphere_shape_1_1_sphere_no_convex.html#a38a13c00c2b11db056767b4f67241845',1,'SphereShape::SphereNoConvex::GetSupport()'],['../class_cylinder_shape_1_1_cylinder.html#ac2fbf97f298eabff324fe1200d1e6974',1,'CylinderShape::Cylinder::GetSupport()'],['../class_convex_hull_shape_1_1_hull_with_convex_scaled.html#aad0e71dae0215de9d65abee32e3d5bb7',1,'ConvexHullShape::HullWithConvexScaled::GetSupport()'],['../class_convex_hull_shape_1_1_hull_with_convex.html#a0abf6518afb0203d73ed2308d3bb83b1',1,'ConvexHullShape::HullWithConvex::GetSupport()'],['../class_convex_hull_shape_1_1_hull_no_convex.html#ac12140f541d4dcf2b1c6a58108c0b026',1,'ConvexHullShape::HullNoConvex::GetSupport()'],['../class_capsule_shape_1_1_capsule_with_convex.html#a15a15b4961f231684a30f4fbcdbee693',1,'CapsuleShape::CapsuleWithConvex::GetSupport()'],['../class_a_a_box.html#aaea4b8b5fc160778df59859a1c4dc69b',1,'AABox::GetSupport()'],['../class_capsule_shape_1_1_capsule_no_convex.html#a0be6a5849883349f4d1e7bfa2107b4c6',1,'CapsuleShape::CapsuleNoConvex::GetSupport()'],['../class_box_shape_1_1_box.html#addae08ce81d2c3eaca0acd914c2fe662',1,'BoxShape::Box::GetSupport()'],['../class_convex_shape_1_1_support.html#ab2a715898d419c03321366a009539ae0',1,'ConvexShape::Support::GetSupport()'],['../class_sphere.html#a3ccfa118fbdbd2c7346d3f7f9d29595e',1,'Sphere::GetSupport()'],['../struct_polygon_convex_support.html#a4e117627d895a0466b06b76f267aa605',1,'PolygonConvexSupport::GetSupport()'],['../struct_triangle_convex_support.html#ac824e6c13d9702af6699e7ba4beccb4c',1,'TriangleConvexSupport::GetSupport()'],['../struct_point_convex_support.html#af9f294c5aa22abc2f9c826cbb8e2b05a',1,'PointConvexSupport::GetSupport()'],['../struct_minkowski_difference.html#ad9e15e934b19be1df6e09a926a1e26dd',1,'MinkowskiDifference::GetSupport()'],['../struct_add_convex_radius.html#a77576ad6fd2ef0aafc34d245b578ef59',1,'AddConvexRadius::GetSupport()'],['../struct_transformed_convex_object.html#a0fa745b8d15e71629ebb719716d16fa8',1,'TransformedConvexObject::GetSupport()']]], + ['getsupportfunction_431',['getsupportfunction',['../class_triangle_shape.html#a218f85b8e0fe0e50bb8dbf6de81b1986',1,'TriangleShape::GetSupportFunction()'],['../class_tapered_cylinder_shape.html#a2522fd2429951460c394308a0545440d',1,'TaperedCylinderShape::GetSupportFunction()'],['../class_tapered_capsule_shape.html#a5d84081d417194e6a80742162a9e5361',1,'TaperedCapsuleShape::GetSupportFunction()'],['../class_sphere_shape.html#a69de38369e7a6e0927d7bbcce1ae5759',1,'SphereShape::GetSupportFunction()'],['../class_cylinder_shape.html#af7f045327fa7c9e506bd304bb78ba781',1,'CylinderShape::GetSupportFunction()'],['../class_convex_shape.html#ae043918f1de4d0049c6cb2a92b545e06',1,'ConvexShape::GetSupportFunction()'],['../class_convex_hull_shape.html#ae343a96fe9cce1424f7ddeb7a98a393b',1,'ConvexHullShape::GetSupportFunction()'],['../class_capsule_shape.html#a5f226d8512e8a2612438200932d3986c',1,'CapsuleShape::GetSupportFunction()'],['../class_box_shape.html#a8078cbdc696e4fb8e65fb7c312dfb1f6',1,'BoxShape::GetSupportFunction()']]], + ['getsupportingface_432',['getsupportingface',['../class_decorated_shape.html#abda124dcb2cd84b591101a32544e1c94',1,'DecoratedShape::GetSupportingFace()'],['../class_soft_body_shape.html#a034dea7c47610c270711b8c4a19f8b87',1,'SoftBodyShape::GetSupportingFace()'],['../class_transformed_shape.html#abf8db8122d754ad62720f3da6f67be4d',1,'TransformedShape::GetSupportingFace()'],['../class_triangle_shape.html#ad35f626bfc8807441d6b200ebf74e216',1,'TriangleShape::GetSupportingFace()'],['../class_tapered_cylinder_shape.html#a7974bcb9e5385af82984e0b7a478c839',1,'TaperedCylinderShape::GetSupportingFace()'],['../class_tapered_capsule_shape.html#a9634a3049b0006aefe65e52c72f3b3d1',1,'TaperedCapsuleShape::GetSupportingFace()'],['../class_sphere_shape.html#a9619a007d4bd51efef15792e464d8c0f',1,'SphereShape::GetSupportingFace()'],['../class_shape.html#a4f6591e1a1329278568bc99b035c9928',1,'Shape::GetSupportingFace()'],['../class_rotated_translated_shape.html#abab2852c1625584a5849d7a9ef96efcb',1,'RotatedTranslatedShape::GetSupportingFace()'],['../class_a_a_box.html#a8ebca3740082c6ad5359d8c42d6c5f69',1,'AABox::GetSupportingFace()'],['../struct_transformed_convex_object.html#ae7e5d51b4cbb01eb146274711eec26e2',1,'TransformedConvexObject::GetSupportingFace()'],['../struct_triangle_convex_support.html#ab06eab6917e292cdf749432e50ac9159',1,'TriangleConvexSupport::GetSupportingFace()'],['../struct_polygon_convex_support.html#a25e370fc7ce4db9df032a10e3caee238',1,'PolygonConvexSupport::GetSupportingFace()'],['../class_box_shape.html#a10628c6c084267e249ef86fa924ac620',1,'BoxShape::GetSupportingFace()'],['../class_capsule_shape.html#ae0226a091e853142536c48e5462ee463',1,'CapsuleShape::GetSupportingFace()'],['../class_compound_shape.html#aaa7ac5ce56a586d8179181add8af60fa',1,'CompoundShape::GetSupportingFace()'],['../class_convex_hull_shape.html#a9707b7f687ecaac45496dc111535782e',1,'ConvexHullShape::GetSupportingFace()'],['../class_cylinder_shape.html#aa2ef3b2d1a7889c6a55d868ac8549280',1,'CylinderShape::GetSupportingFace()'],['../class_height_field_shape.html#a39e1a2fa721479131b1fefe0b2ea98a7',1,'HeightFieldShape::GetSupportingFace()'],['../class_mesh_shape.html#ac15cb5e42c9123d08b5dfd7d5928bcad',1,'MeshShape::GetSupportingFace()'],['../class_offset_center_of_mass_shape.html#aa18209657783f704b64fa02351c29fca',1,'OffsetCenterOfMassShape::GetSupportingFace()'],['../class_plane_shape.html#acb01f52337cecc64b73cff24348b0b47',1,'PlaneShape::GetSupportingFace()'],['../class_scaled_shape.html#aacf906339a566563005b35af3a474385',1,'ScaledShape::GetSupportingFace()']]], + ['getsurfacearea_433',['GetSurfaceArea',['../class_a_a_box.html#ace160fe5908ca1b3125b757bdfde8d22',1,'AABox']]], + ['getsurfacenormal_434',['getsurfacenormal',['../class_soft_body_shape.html#af8f830edd7a8620969c68da8c4ff40f8',1,'SoftBodyShape::GetSurfaceNormal()'],['../class_triangle_shape.html#af2073f91655595dde2662482e5821006',1,'TriangleShape::GetSurfaceNormal()'],['../class_tapered_cylinder_shape.html#ac4cf24a6fd1f49bea27939615891c332',1,'TaperedCylinderShape::GetSurfaceNormal()'],['../class_tapered_capsule_shape.html#ac8a542296217b1a4ccad96133c07a35e',1,'TaperedCapsuleShape::GetSurfaceNormal()'],['../class_sphere_shape.html#a2ae3fdc9da393a59106c6f4f75c20b25',1,'SphereShape::GetSurfaceNormal()'],['../class_scaled_shape.html#a8d44329b0d06995572b38bbe3f23879f',1,'ScaledShape::GetSurfaceNormal()'],['../class_mesh_shape.html#aad9c34de931c5c15d19cfc7ac200583a',1,'MeshShape::GetSurfaceNormal()'],['../class_shape.html#adc7c6aeed1cde2ae1be099a4a5a4bd0c',1,'Shape::GetSurfaceNormal()'],['../class_height_field_shape.html#ad652d9d9e8fc9a987722d222077b111a',1,'HeightFieldShape::GetSurfaceNormal()'],['../class_cylinder_shape.html#a33a3dcb04ee6b0905b2992936acaa71c',1,'CylinderShape::GetSurfaceNormal()'],['../class_convex_hull_shape.html#a586cf0e80d2f705fb104d4b6c3cb5d13',1,'ConvexHullShape::GetSurfaceNormal()'],['../class_compound_shape.html#a4f1bcd2e95e17efeff42556cbc729110',1,'CompoundShape::GetSurfaceNormal()'],['../class_capsule_shape.html#ac8ed07dee809bbe362b3dd4ec286aa35',1,'CapsuleShape::GetSurfaceNormal()'],['../class_box_shape.html#ae279a012b515691509f4d15927925664',1,'BoxShape::GetSurfaceNormal()'],['../class_rotated_translated_shape.html#afb856f2a26b063d3f6d4aff131ce1a31',1,'RotatedTranslatedShape::GetSurfaceNormal()'],['../class_offset_center_of_mass_shape.html#a0af1704c7f1a2109f9b55343c4a6db7d',1,'OffsetCenterOfMassShape::GetSurfaceNormal()'],['../class_plane_shape.html#a5a720f71f09b5c2cecb0c45b3cb0d571',1,'PlaneShape::GetSurfaceNormal()']]], + ['getsuspensionlambda_435',['GetSuspensionLambda',['../class_wheel.html#af1a126080ae277a8b3578b8f3f6854e7',1,'Wheel']]], + ['getsuspensionlength_436',['GetSuspensionLength',['../class_wheel.html#ad03e749022ce451237c8731a7b59eb79',1,'Wheel']]], + ['getswingmotorsettings_437',['getswingmotorsettings',['../class_swing_twist_constraint.html#adc142775611a925dfdc755c0fa35bdbc',1,'SwingTwistConstraint::GetSwingMotorSettings()'],['../class_swing_twist_constraint.html#a62867e2044909678e7eb8ae1a60fc30e',1,'SwingTwistConstraint::GetSwingMotorSettings() const']]], + ['getswingmotorstate_438',['GetSwingMotorState',['../class_swing_twist_constraint.html#aff96015babd85fab3b262eee70a2a283',1,'SwingTwistConstraint']]], + ['getswingtwist_439',['GetSwingTwist',['../class_quat.html#a7bb8b016622e5ad8f361c52f9037f1aa',1,'Quat']]], + ['getswingtype_440',['GetSwingType',['../class_swing_twist_constraint_part.html#a1e8cca76a13bf4490e18086adfe44fb5',1,'SwingTwistConstraintPart']]], + ['gettargetangle_441',['GetTargetAngle',['../class_hinge_constraint.html#a952152a6165614d7e000cc61e8820edf',1,'HingeConstraint']]], + ['gettargetangularvelocity_442',['GetTargetAngularVelocity',['../class_hinge_constraint.html#ad05474eff39452c49ee10c70b780f687',1,'HingeConstraint']]], + ['gettargetangularvelocitycs_443',['gettargetangularvelocitycs',['../class_six_d_o_f_constraint.html#aa8906a979a8a5bfcb1887997849d3f0c',1,'SixDOFConstraint::GetTargetAngularVelocityCS()'],['../class_swing_twist_constraint.html#a7ba465390161d081cbfa4f6d313308e5',1,'SwingTwistConstraint::GetTargetAngularVelocityCS() const']]], + ['gettargetorientationcs_444',['gettargetorientationcs',['../class_swing_twist_constraint.html#ab490bdbf00a2c76b00b2d3d2afe19419',1,'SwingTwistConstraint::GetTargetOrientationCS()'],['../class_six_d_o_f_constraint.html#ab3f325802dc065ba6fbeeea76884e0c8',1,'SixDOFConstraint::GetTargetOrientationCS()']]], + ['gettargetpathfraction_445',['GetTargetPathFraction',['../class_path_constraint.html#a48f8818d18d5c46c27a6ba69d91c36b3',1,'PathConstraint']]], + ['gettargetposition_446',['GetTargetPosition',['../class_slider_constraint.html#ac1c0aa099da5599ddc21d7f0519c72f7',1,'SliderConstraint']]], + ['gettargetpositioncs_447',['GetTargetPositionCS',['../class_six_d_o_f_constraint.html#a5e3a3ca4dd727cabe3fbc97a43fffc1d',1,'SixDOFConstraint']]], + ['gettargetvelocity_448',['gettargetvelocity',['../class_slider_constraint.html#ad704564787a3b73406849659c29f3a6b',1,'SliderConstraint::GetTargetVelocity()'],['../class_path_constraint.html#a9c6d88045a77cb4f442e3ef239b20d84',1,'PathConstraint::GetTargetVelocity()']]], + ['gettargetvelocitycs_449',['GetTargetVelocityCS',['../class_six_d_o_f_constraint.html#adea943442830716a4e865fe336910729',1,'SixDOFConstraint']]], + ['gettiremaximpulsecallback_450',['GetTireMaxImpulseCallback',['../class_wheeled_vehicle_controller.html#a9f0a4d01b9c0db904d5e6aa79484bc63',1,'WheeledVehicleController']]], + ['gettopradius_451',['GetTopRadius',['../class_tapered_cylinder_shape.html#a4327c117bf16630693b65d1a8f2edd7e',1,'TaperedCylinderShape']]], + ['gettorque_452',['GetTorque',['../class_vehicle_engine.html#a22815f9d97cb6318b0b6a3df66e0f6d5',1,'VehicleEngine']]], + ['gettotallambda_453',['gettotallambda',['../class_angle_constraint_part.html#af482295498d9ca4f6fcdd0c034d0fb90',1,'AngleConstraintPart::GetTotalLambda()'],['../class_rack_and_pinion_constraint.html#a10684549bb08d47150e26754db83179d',1,'RackAndPinionConstraint::GetTotalLambda()'],['../class_gear_constraint.html#a0e2ee073695aedec977446582365ed3b',1,'GearConstraint::GetTotalLambda()'],['../class_rotation_euler_constraint_part.html#aada1e7c8fcf62c1674aa5080cd70687e',1,'RotationEulerConstraintPart::GetTotalLambda()'],['../class_axis_constraint_part.html#a012581aad01dbf091d9f8e2cf0ea6605',1,'AxisConstraintPart::GetTotalLambda()'],['../class_dual_axis_constraint_part.html#a89e53a1884747a98a2b2e8647f219c2c',1,'DualAxisConstraintPart::GetTotalLambda()'],['../class_gear_constraint_part.html#a0884cffe567c6cfe93e555996ba8bad9',1,'GearConstraintPart::GetTotalLambda()'],['../class_hinge_rotation_constraint_part.html#aa99c7f68df35ac1e3bef098c7e20225b',1,'HingeRotationConstraintPart::GetTotalLambda()'],['../class_independent_axis_constraint_part.html#a14a6dfff54b12cacff9f4794c5fa4fa8',1,'IndependentAxisConstraintPart::GetTotalLambda()'],['../class_point_constraint_part.html#a268ba07c6a229a0b8d2c3504566c355d',1,'PointConstraintPart::GetTotalLambda()'],['../class_rack_and_pinion_constraint_part.html#a87e64ffdc1897211336d35bc8077ebcc',1,'RackAndPinionConstraintPart::GetTotalLambda()'],['../class_rotation_quat_constraint_part.html#a4aaed47e0905087e32e5dc82f6c4dca5',1,'RotationQuatConstraintPart::GetTotalLambda()']]], + ['gettotallambdamotor_454',['gettotallambdamotor',['../class_swing_twist_constraint.html#a41ac135d5eb9c233fe50ff9fc8b3d40e',1,'SwingTwistConstraint::GetTotalLambdaMotor()'],['../class_slider_constraint.html#a8f67a775520b7f735c77b4aabb9187e4',1,'SliderConstraint::GetTotalLambdaMotor()'],['../class_path_constraint.html#ad9f21a4ed20007ceb8181db0bf999ce3',1,'PathConstraint::GetTotalLambdaMotor()'],['../class_hinge_constraint.html#ac9320fb87c8a7de22bc822f0f9cf2f74',1,'HingeConstraint::GetTotalLambdaMotor()']]], + ['gettotallambdamotorrotation_455',['GetTotalLambdaMotorRotation',['../class_six_d_o_f_constraint.html#a84ad5f919ccfff953b8de5ae421425b4',1,'SixDOFConstraint']]], + ['gettotallambdamotortranslation_456',['GetTotalLambdaMotorTranslation',['../class_six_d_o_f_constraint.html#a244e5b919415ca1feec2d707e3ad64bf',1,'SixDOFConstraint']]], + ['gettotallambdaposition_457',['gettotallambdaposition',['../class_pulley_constraint.html#adac156b26e519ea9f183609b731b81b5',1,'PulleyConstraint::GetTotalLambdaPosition()'],['../class_swing_twist_constraint.html#a82b21f86dc816c6a989df827c04d2a7b',1,'SwingTwistConstraint::GetTotalLambdaPosition()'],['../class_six_d_o_f_constraint.html#a01a2d0f0a38d57af09fb86f5432df79b',1,'SixDOFConstraint::GetTotalLambdaPosition()'],['../class_point_constraint.html#a393464647f68f5dbfcdb034b00d4b1d1',1,'PointConstraint::GetTotalLambdaPosition()'],['../class_path_constraint.html#aad8272de843a287e26bf320fdf2755a3',1,'PathConstraint::GetTotalLambdaPosition()'],['../class_hinge_constraint.html#af03b0287d856815e5a9cff82588d2578',1,'HingeConstraint::GetTotalLambdaPosition()'],['../class_fixed_constraint.html#a1f2e160cf0bac4e5a08a10a4db32fe27',1,'FixedConstraint::GetTotalLambdaPosition()'],['../class_distance_constraint.html#a9c2f0f9859df29f33e5688f42e14471d',1,'DistanceConstraint::GetTotalLambdaPosition()'],['../class_cone_constraint.html#af2d889a7774303768a6cde6dee342378',1,'ConeConstraint::GetTotalLambdaPosition()'],['../class_slider_constraint.html#a7e004ec04d0e7a7fe00ba2b0a8840b6a',1,'SliderConstraint::GetTotalLambdaPosition()']]], + ['gettotallambdapositionlimits_458',['gettotallambdapositionlimits',['../class_path_constraint.html#afef42c01cab96ed8cb32c607a6a0baf8',1,'PathConstraint::GetTotalLambdaPositionLimits()'],['../class_slider_constraint.html#a75ac80302b69828523d3fe1aa55348a5',1,'SliderConstraint::GetTotalLambdaPositionLimits()']]], + ['gettotallambdarotation_459',['gettotallambdarotation',['../class_hinge_constraint.html#a69121251820ce4c305f3275b15242f7a',1,'HingeConstraint::GetTotalLambdaRotation()'],['../class_path_constraint.html#a7dc7086987fb9a1761fc9fab81ceadb3',1,'PathConstraint::GetTotalLambdaRotation()'],['../class_six_d_o_f_constraint.html#a660cc3a7a434504917d71b2c463cef47',1,'SixDOFConstraint::GetTotalLambdaRotation()'],['../class_slider_constraint.html#a10e5c1d92324b6df087498f75b4f83e4',1,'SliderConstraint::GetTotalLambdaRotation()'],['../class_fixed_constraint.html#a28f17b6379474d45e29faebfef63e670',1,'FixedConstraint::GetTotalLambdaRotation()'],['../class_cone_constraint.html#a08b441d44cc4d9adbad89d88d6d48d91',1,'ConeConstraint::GetTotalLambdaRotation()']]], + ['gettotallambdarotationhinge_460',['GetTotalLambdaRotationHinge',['../class_path_constraint.html#abb7f43813e7aa47c1719550303e8b768',1,'PathConstraint']]], + ['gettotallambdarotationlimits_461',['GetTotalLambdaRotationLimits',['../class_hinge_constraint.html#a689cbcabdb90d98b59fcdffc5417a3e7',1,'HingeConstraint']]], + ['gettotallambdaswingy_462',['GetTotalLambdaSwingY',['../class_swing_twist_constraint.html#a0c2292aef09fef869c8264e0735a6f26',1,'SwingTwistConstraint']]], + ['gettotallambdaswingz_463',['GetTotalLambdaSwingZ',['../class_swing_twist_constraint.html#a2e87742bbeac9f5b0b0ee75050326c7b',1,'SwingTwistConstraint']]], + ['gettotallambdatwist_464',['GetTotalLambdaTwist',['../class_swing_twist_constraint.html#afc81f0c8d931210044e2a05cea0988c6',1,'SwingTwistConstraint']]], + ['gettotalswingylambda_465',['GetTotalSwingYLambda',['../class_swing_twist_constraint_part.html#a16832ee912d335e0865e78f37fe7ad81',1,'SwingTwistConstraintPart']]], + ['gettotalswingzlambda_466',['GetTotalSwingZLambda',['../class_swing_twist_constraint_part.html#a31a518f141eab3f601906193d7b56ada',1,'SwingTwistConstraintPart']]], + ['gettotaltwistlambda_467',['GetTotalTwistLambda',['../class_swing_twist_constraint_part.html#a45a880db0765176f7e807f4aba08da6e',1,'SwingTwistConstraintPart']]], + ['gettracks_468',['gettracks',['../class_tracked_vehicle_controller.html#a778d53e87c6d3c769079b71961123745',1,'TrackedVehicleController::GetTracks()'],['../class_tracked_vehicle_controller.html#a197ca759987300cb86170ac747e34d61',1,'TrackedVehicleController::GetTracks() const']]], + ['gettransformed_469',['GetTransformed',['../class_plane.html#a23c3f6c2eaf6344447cb5e0a8a52d63d',1,'Plane']]], + ['gettransformedshape_470',['gettransformedshape',['../class_body.html#ab29a0e2490187a1e08d21c4e9235f2a3',1,'Body::GetTransformedShape()'],['../class_character_virtual.html#a181bbafd30966b7ecc4313283c3a1252',1,'CharacterVirtual::GetTransformedShape()'],['../class_character.html#a494c0f369f5aa12f2b5933b4cf4ba102',1,'Character::GetTransformedShape()'],['../class_body_interface.html#ae468b34e460759f4cf4e76486e404ee4',1,'BodyInterface::GetTransformedShape()']]], + ['gettranslation_471',['gettranslation',['../class_d_mat44.html#ac47b990d006488e24ad4c0512cdaf9b1',1,'DMat44::GetTranslation()'],['../class_mat44.html#abd89da8ac7b4e4c5b87c02caabbf10b8',1,'Mat44::GetTranslation()']]], + ['gettranslationlimitsmax_472',['GetTranslationLimitsMax',['../class_six_d_o_f_constraint.html#a9dc7e49353c01c96388125cc6510bb92',1,'SixDOFConstraint']]], + ['gettranslationlimitsmin_473',['GetTranslationLimitsMin',['../class_six_d_o_f_constraint.html#adca299a0d75c785bb120d381cdb1e6ee',1,'SixDOFConstraint']]], + ['gettransmission_474',['gettransmission',['../class_tracked_vehicle_controller.html#a18af9ade5be94c6740c888b61c922419',1,'TrackedVehicleController::GetTransmission() const'],['../class_tracked_vehicle_controller.html#af251172b17a496ce895bd39709b86065',1,'TrackedVehicleController::GetTransmission()'],['../class_wheeled_vehicle_controller.html#a3a14cc53afb7a84709927cd9b5fc863b',1,'WheeledVehicleController::GetTransmission() const'],['../class_wheeled_vehicle_controller.html#a8c3ab1fdbdcec9b95237e2b727c378ac',1,'WheeledVehicleController::GetTransmission()']]], + ['gettriangle_475',['gettriangle',['../class_triangle_splitter.html#aec081c5b0f705cbee59ed5de06436122',1,'TriangleSplitter::GetTriangle()'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#a3fb4bf3fda3a5fe7fede50bdfad3ed17',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::GetTriangle()']]], + ['gettriangleblock_476',['GetTriangleBlock',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html#a9965a86ef8ae2822aeb95ee98f4811fd',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader']]], + ['gettrianglecount_477',['GetTriangleCount',['../class_a_a_b_b_tree_builder_1_1_node.html#ab9f14f78dc59d08126ca910121c173e0',1,'AABBTreeBuilder::Node']]], + ['gettrianglecountintree_478',['GetTriangleCountInTree',['../class_a_a_b_b_tree_builder_1_1_node.html#ad4227473a354d52097ead61c6fa8d992',1,'AABBTreeBuilder::Node']]], + ['gettrianglecountpernode_479',['GetTriangleCountPerNode',['../class_a_a_b_b_tree_builder_1_1_node.html#a03a6ef7fe1cfc46cb4cb85d49c0188ed',1,'AABBTreeBuilder::Node']]], + ['gettriangleheader_480',['GetTriangleHeader',['../class_a_a_b_b_tree_to_buffer.html#aabe86791c5d2da2af6dcba505090b989',1,'AABBTreeToBuffer']]], + ['gettrianglescontext_481',['gettrianglescontext',['../class_transformed_shape.html#aca84b10055165beff1ca288bf6ccfd34',1,'TransformedShape::GetTrianglesContext'],['../struct_shape_1_1_get_triangles_context.html',1,'Shape::GetTrianglesContext']]], + ['gettrianglescontext_2eh_482',['GetTrianglesContext.h',['../_get_triangles_context_8h.html',1,'']]], + ['gettrianglescontextmultivertexlist_483',['gettrianglescontextmultivertexlist',['../class_get_triangles_context_multi_vertex_list.html',1,'GetTrianglesContextMultiVertexList'],['../class_get_triangles_context_multi_vertex_list.html#aa9cd165a98d96373c2d112a9c8ec258f',1,'GetTrianglesContextMultiVertexList::GetTrianglesContextMultiVertexList()']]], + ['gettrianglescontextvertexlist_484',['gettrianglescontextvertexlist',['../class_get_triangles_context_vertex_list.html#ad42b38dbd910b48adc48cbeb2e7d3eee',1,'GetTrianglesContextVertexList::GetTrianglesContextVertexList()'],['../class_get_triangles_context_vertex_list.html',1,'GetTrianglesContextVertexList']]], + ['gettrianglesnext_485',['gettrianglesnext',['../class_height_field_shape.html#a08fee5448036495db2d6154bb4632a65',1,'HeightFieldShape::GetTrianglesNext()'],['../class_get_triangles_context_multi_vertex_list.html#adb9476df77af2728b5054c8c1ec6c0bb',1,'GetTrianglesContextMultiVertexList::GetTrianglesNext()'],['../class_get_triangles_context_vertex_list.html#ac42ac006966e5e9819b97f3764be4fc4',1,'GetTrianglesContextVertexList::GetTrianglesNext()'],['../class_cylinder_shape.html#a6cfbb512a0c4dc1a9f02d4a830829721',1,'CylinderShape::GetTrianglesNext()'],['../class_convex_shape.html#ac067fd156edf8fa249c8ed65bc9f5f18',1,'ConvexShape::GetTrianglesNext()'],['../class_convex_hull_shape.html#a7def260c11540094261de145227efa04',1,'ConvexHullShape::GetTrianglesNext()'],['../class_compound_shape.html#a86dbc7e794fdf43a39fed13e60731a0b',1,'CompoundShape::GetTrianglesNext()'],['../class_capsule_shape.html#ac735140fc6d8d36ca5c598deba432ae2',1,'CapsuleShape::GetTrianglesNext()'],['../class_box_shape.html#a90ed6d83a46a7311750bfa7877d72def',1,'BoxShape::GetTrianglesNext()'],['../class_soft_body_shape.html#aef58794da013b5ec5993744dab56f4b5',1,'SoftBodyShape::GetTrianglesNext()'],['../class_transformed_shape.html#a7f4d127145d57e13ff41523a3c8ecd9e',1,'TransformedShape::GetTrianglesNext()'],['../class_triangle_shape.html#aea1cb87c9bdf927b353459aec286218f',1,'TriangleShape::GetTrianglesNext()'],['../class_tapered_cylinder_shape.html#a20441e1137b077b87cd592679377cf62',1,'TaperedCylinderShape::GetTrianglesNext()'],['../class_sphere_shape.html#aab3a1e57553613d5ce94557f6175ca93',1,'SphereShape::GetTrianglesNext()'],['../class_shape.html#a4b6ba637f676d38c24bdb5da9a2f345f',1,'Shape::GetTrianglesNext()'],['../class_scaled_shape.html#ad222933cc81e3136f2b02cc70db545d9',1,'ScaledShape::GetTrianglesNext()'],['../class_rotated_translated_shape.html#a2ecf8af0d2d44459c7fbce83d6323eb3',1,'RotatedTranslatedShape::GetTrianglesNext()'],['../class_plane_shape.html#a87e30ad80dcbb0987323b236e85d02a6',1,'PlaneShape::GetTrianglesNext()'],['../class_offset_center_of_mass_shape.html#a5a7033c9950e7ec7253047e8a257c360',1,'OffsetCenterOfMassShape::GetTrianglesNext()'],['../class_mesh_shape.html#a9c170a3cbeccfbfa9349038d0aa5f10c',1,'MeshShape::GetTrianglesNext()']]], + ['gettrianglesstart_486',['gettrianglesstart',['../class_capsule_shape.html#ac5f59452b7a3fc2c31ba77f2997ec493',1,'CapsuleShape::GetTrianglesStart()'],['../class_box_shape.html#a287e16289c491cd9dbd980e59ca7725b',1,'BoxShape::GetTrianglesStart()'],['../class_soft_body_shape.html#a28d58a8068af4f051eb33f5545524f8d',1,'SoftBodyShape::GetTrianglesStart()'],['../class_transformed_shape.html#ab5c4bf71ad1569f890bccf3b71248b43',1,'TransformedShape::GetTrianglesStart()'],['../class_tapered_cylinder_shape.html#a2aca46ff56852aa97e3734a9fff25bb8',1,'TaperedCylinderShape::GetTrianglesStart()'],['../class_height_field_shape.html#a03ddda27200f07afc08f6439ce36d491',1,'HeightFieldShape::GetTrianglesStart()'],['../class_mesh_shape.html#a409b6ac0a7548e275d6f1f2a9b57a19d',1,'MeshShape::GetTrianglesStart()'],['../class_offset_center_of_mass_shape.html#a928422bd2dd3f8a9ac2107bdf503446e',1,'OffsetCenterOfMassShape::GetTrianglesStart()'],['../class_plane_shape.html#a1f75622c86ebecaf63bde5430b00eb55',1,'PlaneShape::GetTrianglesStart()'],['../class_rotated_translated_shape.html#a801257f7a7ea6c26a728170cbd7ba55f',1,'RotatedTranslatedShape::GetTrianglesStart()'],['../class_scaled_shape.html#af3c0586193bee5223c9a94556ee019de',1,'ScaledShape::GetTrianglesStart()'],['../class_shape.html#a703f5419cf3f3cb216cbe0433ce1a625',1,'Shape::GetTrianglesStart()'],['../class_cylinder_shape.html#aabb7fa62446dd36b1d18f149cef8fb22',1,'CylinderShape::GetTrianglesStart()'],['../class_convex_shape.html#a063b182d0bc6eddcde2b3fd422fca7a7',1,'ConvexShape::GetTrianglesStart()'],['../class_convex_hull_shape.html#a6c4c9fd637e19f6d7d7aa32a0389a6a6',1,'ConvexHullShape::GetTrianglesStart()'],['../class_compound_shape.html#a1e3571fbe4835d1bfec50d9d7a1a2b1f',1,'CompoundShape::GetTrianglesStart()'],['../class_triangle_shape.html#a3fe954485d3333b502acd074ebd3d405',1,'TriangleShape::GetTrianglesStart()'],['../class_sphere_shape.html#ae00fa28f36870678e33dc16085cafc5b',1,'SphereShape::GetTrianglesStart()']]], + ['gettriangleuserdata_487',['GetTriangleUserData',['../class_mesh_shape.html#a3f4c544b5cab768beeefe4d8c8639cff',1,'MeshShape']]], + ['gettrues_488',['gettrues',['../class_u_vec4.html#a4e62bc4e8238a1742d9cde03a0520252',1,'UVec4::GetTrues()'],['../class_d_vec3.html#a11971a6122b035009707efe51f5a1169',1,'DVec3::GetTrues()']]], + ['gettwist_489',['GetTwist',['../class_quat.html#aa30f29eff5df0de717de979bf3aae295',1,'Quat']]], + ['gettwistmaxangle_490',['GetTwistMaxAngle',['../class_swing_twist_constraint.html#a167f8f552fae981543530a4bd225b763',1,'SwingTwistConstraint']]], + ['gettwistminangle_491',['GetTwistMinAngle',['../class_swing_twist_constraint.html#ae2220254397365c2d99a026cdfeb5243',1,'SwingTwistConstraint']]], + ['gettwistmotorsettings_492',['gettwistmotorsettings',['../class_swing_twist_constraint.html#aec236c29d446311925a62f2004ae6974',1,'SwingTwistConstraint::GetTwistMotorSettings()'],['../class_swing_twist_constraint.html#ae63b6cda1826e0b1aa6b6960780e92e3',1,'SwingTwistConstraint::GetTwistMotorSettings() const']]], + ['gettwistmotorstate_493',['GetTwistMotorState',['../class_swing_twist_constraint.html#a44ce1ccf1c4d95f88bb6ab2571035196',1,'SwingTwistConstraint']]], + ['gettype_494',['gettype',['../class_constraint.html#a6e290088c6049b1f1d1fb26df96dce3a',1,'Constraint::GetType()'],['../class_two_body_constraint.html#a25655ebd463476c1ada660d3a292d3c7',1,'TwoBodyConstraint::GetType()'],['../class_shape.html#a35b8f1a8a02f90d3edc02db22f03932a',1,'Shape::GetType()']]], + ['getuint32_495',['GetUInt32',['../class_color.html#aedcaed2b19d4b10e7c994ed8ab1ac58d',1,'Color']]], + ['getunmapped_496',['getunmapped',['../class_skeleton_mapper.html#a4b67e8a430be5b9150676f5103ef0974',1,'SkeletonMapper::GetUnmapped() const'],['../class_skeleton_mapper.html#ae5c8deb7c2eebbfd0f2088c33f991ec8',1,'SkeletonMapper::GetUnmapped()']]], + ['getup_497',['GetUp',['../class_character_base.html#a2a437049ade0a3ab8ab7aeafb64f5163',1,'CharacterBase']]], + ['getupdateposition_498',['GetUpdatePosition',['../class_soft_body_motion_properties.html#ac798aa56fce5a89d404e164c4b483ddd',1,'SoftBodyMotionProperties']]], + ['getusage_499',['GetUsage',['../class_temp_allocator_impl.html#af2fadcba643a00f16de5f59e0cee0579',1,'TempAllocatorImpl']]], + ['getusemanifoldreduction_500',['getusemanifoldreduction',['../class_body_interface.html#af83d47bf486a2e3c70b485ede215b412',1,'BodyInterface::GetUseManifoldReduction()'],['../class_body.html#ae2732111d3d846bfceb19459fa2ee963',1,'Body::GetUseManifoldReduction() const']]], + ['getusemanifoldreductionwithbody_501',['GetUseManifoldReductionWithBody',['../class_body.html#a602ae16f05ab73cd5cae80c2fd9b4a0d',1,'Body']]], + ['getuserdata_502',['getuserdata',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html#ad05b875676147545245c4086c4588ca7',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader::GetUserData()'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#a556ef7c4049df729a89803a23a210d4c',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::GetUserData()'],['../class_body.html#a48b9455aae90fe4d73302389f6c7d9b5',1,'Body::GetUserData()'],['../class_body_interface.html#a34942329fd9b3230e938f4418302138c',1,'BodyInterface::GetUserData()'],['../class_character_virtual.html#acc49b466797667ae5f4bb1ee44e83b2e',1,'CharacterVirtual::GetUserData()'],['../class_shape.html#a7146c658ddb5c7b0fec4489535ca664f',1,'Shape::GetUserData()'],['../class_constraint.html#a51361e09906d05f85d341d1bad2cecd5',1,'Constraint::GetUserData()']]], + ['getvalue_503',['getvalue',['../class_semaphore.html#a8e4d787c14be5d3191ba1353594267e4',1,'Semaphore::GetValue()'],['../class_linear_curve.html#a24eda4be408b24e5dfeba9bf94edb295',1,'LinearCurve::GetValue()'],['../class_lock_free_hash_map_1_1_key_value.html#a7998c182167f381dcb2bfe6d1932bad8',1,'LockFreeHashMap::KeyValue::GetValue()'],['../class_sub_shape_i_d.html#a93de7475867625a7b2dc053d2af57c2b',1,'SubShapeID::GetValue()'],['../class_broad_phase_layer.html#a88ef7f609071bbf53e1c018966e65c36',1,'BroadPhaseLayer::GetValue()'],['../class_lock_free_hash_map_1_1_key_value.html#ae392d930ad47864c4121fbdf4444044e',1,'LockFreeHashMap::KeyValue::GetValue()']]], + ['getvehiclebody_504',['GetVehicleBody',['../class_vehicle_constraint.html#a402cd50d87d5f478036104b9185fb2db',1,'VehicleConstraint']]], + ['getvertex_505',['getvertex',['../class_soft_body_motion_properties.html#a043b0f7b9bcc457d12af67a184c82b8e',1,'SoftBodyMotionProperties::GetVertex(uint inIndex)'],['../class_soft_body_motion_properties.html#aa2581182a2773f19f17bb868419eced1',1,'SoftBodyMotionProperties::GetVertex(uint inIndex) const']]], + ['getvertexdata_506',['GetVertexData',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html#a065d0f2f856b48f8ae6c44a7f7ec8a0f',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader']]], + ['getvertices_507',['getvertices',['../class_triangle_splitter.html#a4ca9c0334863bd8615fbe9e498cfde44',1,'TriangleSplitter::GetVertices()'],['../class_soft_body_motion_properties.html#a14aaefdff39da80c5d00f3733618bebb',1,'SoftBodyMotionProperties::GetVertices()'],['../class_soft_body_motion_properties.html#a39f8a1dd664ca0cdbbaed3893885e60a',1,'SoftBodyMotionProperties::GetVertices() const'],['../class_soft_body_manifold.html#aa00527a000cd0b485d7a838ac5e288a8',1,'SoftBodyManifold::GetVertices()']]], + ['getvolume_508',['getvolume',['../class_soft_body_shape.html#aa6126864f8ab7dc383063d46f9f89a4a',1,'SoftBodyShape::GetVolume()'],['../class_soft_body_motion_properties.html#acfcc07bc8fe8e5a34767df2383eaf7ff',1,'SoftBodyMotionProperties::GetVolume()'],['../class_triangle_shape.html#ae85456e8f22b77ebef19e814221b9ec9',1,'TriangleShape::GetVolume()'],['../class_tapered_cylinder_shape.html#a59bf42adddb7139199282ee755299782',1,'TaperedCylinderShape::GetVolume()'],['../class_sphere_shape.html#a67684ecf3156eed16a5da749fcaad002',1,'SphereShape::GetVolume()'],['../class_tapered_capsule_shape.html#a7899c1aa1dbb08bd5b79c2b8d01711a0',1,'TaperedCapsuleShape::GetVolume()'],['../class_rotated_translated_shape.html#a551123649d86e6cef5a8499c4318aa6d',1,'RotatedTranslatedShape::GetVolume()'],['../class_plane_shape.html#a401cd22b9f6fbc2f79d565f4e8eb33ba',1,'PlaneShape::GetVolume()'],['../class_offset_center_of_mass_shape.html#a92a8fbf01df9c36b9176c18889b92f58',1,'OffsetCenterOfMassShape::GetVolume()'],['../class_mesh_shape.html#a69ed9404f75cceb172a608c746994c09',1,'MeshShape::GetVolume()'],['../class_height_field_shape.html#aefe0c0c9d3017a94ac8835e84e698e9a',1,'HeightFieldShape::GetVolume()'],['../class_cylinder_shape.html#a85e3891076275d55c6274d3cfd480b18',1,'CylinderShape::GetVolume()'],['../class_convex_hull_shape.html#a0f6066d340c3db1d1d06373fa18b4691',1,'ConvexHullShape::GetVolume()'],['../class_compound_shape.html#a2c66ad490f6662e3ef81e44cabee11fa',1,'CompoundShape::GetVolume()'],['../class_capsule_shape.html#aeeab148856a7d53ddf1a42934fbb048c',1,'CapsuleShape::GetVolume()'],['../class_box_shape.html#a22a7afcc6db8041d6e0f335bfee62ec0',1,'BoxShape::GetVolume()'],['../class_a_a_box.html#aab14f598d69dfa94daf74cc8d7721a21',1,'AABox::GetVolume()'],['../class_shape.html#a2b07e3d1b554ff77d18e86af7cd451b7',1,'Shape::GetVolume()'],['../class_scaled_shape.html#ae0c292389243763cf6abd92048200cf3',1,'ScaledShape::GetVolume()']]], + ['getw_509',['getw',['../class_vec4.html#a3779a0a05de85b286afeb12f65d08090',1,'Vec4::GetW()'],['../class_u_vec4.html#a8524d1d2a92eb5b564976d7d2a5f8a57',1,'UVec4::GetW()'],['../class_quat.html#a13d0159a54a94e6a90dc5952f454b09e',1,'Quat::GetW()']]], + ['getwheel_510',['getwheel',['../class_vehicle_constraint.html#a205699c8c9916b774790a8f87a43d61c',1,'VehicleConstraint::GetWheel(uint inIdx) const'],['../class_vehicle_constraint.html#a6d90f054b9fa121d8ec9b1e2f0dcba65',1,'VehicleConstraint::GetWheel(uint inIdx)']]], + ['getwheelbase_511',['GetWheelBase',['../class_motorcycle_controller.html#ab3fdaf44396f6325dccb7cc1e8aab6a7',1,'MotorcycleController']]], + ['getwheellocalbasis_512',['GetWheelLocalBasis',['../class_vehicle_constraint.html#ad752f73785ddd88b0e4776101d914f38',1,'VehicleConstraint']]], + ['getwheellocaltransform_513',['GetWheelLocalTransform',['../class_vehicle_constraint.html#a26fa80f7292448dd869df47c46a30adf',1,'VehicleConstraint']]], + ['getwheels_514',['getwheels',['../class_vehicle_constraint.html#a5b39b845e91504642e180a4f35df0a45',1,'VehicleConstraint::GetWheels()'],['../class_vehicle_constraint.html#af2a24975a01de3cf22ab55ba2ac6ed74',1,'VehicleConstraint::GetWheels() const']]], + ['getwheelspeedatclutch_515',['GetWheelSpeedAtClutch',['../class_wheeled_vehicle_controller.html#a0ef079b5815d391cedacbceb40105c6f',1,'WheeledVehicleController']]], + ['getwheelworldtransform_516',['GetWheelWorldTransform',['../class_vehicle_constraint.html#ab4e43b201b7379b643820447daae173c',1,'VehicleConstraint']]], + ['getworldspacebounds_517',['getworldspacebounds',['../class_triangle_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'TriangleShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_triangle_shape.html#a9f8379fa338802436700b86a07fab3be',1,'TriangleShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_tapered_capsule_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'TaperedCapsuleShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_tapered_capsule_shape.html#a9f8379fa338802436700b86a07fab3be',1,'TaperedCapsuleShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_sphere_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'SphereShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_sphere_shape.html#a9f8379fa338802436700b86a07fab3be',1,'SphereShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_scaled_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'ScaledShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_scaled_shape.html#a9f8379fa338802436700b86a07fab3be',1,'ScaledShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_rotated_translated_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'RotatedTranslatedShape::GetWorldSpaceBounds()'],['../class_offset_center_of_mass_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'OffsetCenterOfMassShape::GetWorldSpaceBounds()'],['../class_triangle_shape.html#aa28d229f86caa87f195cf1bf9b0529f2',1,'TriangleShape::GetWorldSpaceBounds()'],['../class_tapered_capsule_shape.html#a1372f0cdbfcc07e4946972a7aa275ea1',1,'TaperedCapsuleShape::GetWorldSpaceBounds()'],['../class_sphere_shape.html#a637eb08a63c6bd5e8cc57c0f7e5c08a7',1,'SphereShape::GetWorldSpaceBounds()'],['../class_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'Shape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_shape.html#a9f8379fa338802436700b86a07fab3be',1,'Shape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_scaled_shape.html#a1873be9425e42d2af4aece1ddd24cf35',1,'ScaledShape::GetWorldSpaceBounds()'],['../class_rotated_translated_shape.html#af35a0921b0454466b5a24882acba7ddb',1,'RotatedTranslatedShape::GetWorldSpaceBounds()'],['../class_offset_center_of_mass_shape.html#aa7cf35aee4a9d6b6e1afaf4e0a67a457',1,'OffsetCenterOfMassShape::GetWorldSpaceBounds()'],['../class_compound_shape.html#a4c52ac0245dea72dd6fc63c7f6f2ef4b',1,'CompoundShape::GetWorldSpaceBounds()'],['../class_capsule_shape.html#ae745928604f1c1a87d3b6f60e4b25224',1,'CapsuleShape::GetWorldSpaceBounds()'],['../class_body.html#a2be34f0150bb5f520f21330ee6b7cb41',1,'Body::GetWorldSpaceBounds()'],['../class_rotated_translated_shape.html#a9f8379fa338802436700b86a07fab3be',1,'RotatedTranslatedShape::GetWorldSpaceBounds()'],['../class_offset_center_of_mass_shape.html#a9f8379fa338802436700b86a07fab3be',1,'OffsetCenterOfMassShape::GetWorldSpaceBounds()'],['../class_compound_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'CompoundShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_compound_shape.html#a9f8379fa338802436700b86a07fab3be',1,'CompoundShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_capsule_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'CapsuleShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_capsule_shape.html#a9f8379fa338802436700b86a07fab3be',1,'CapsuleShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_ragdoll.html#a8ab1cc3715aafa05d4b04647c54282a3',1,'Ragdoll::GetWorldSpaceBounds()'],['../class_transformed_shape.html#a33b12d09ebaf2071dd49a3873978ac0a',1,'TransformedShape::GetWorldSpaceBounds()']]], + ['getworldspacecontactpointon1_518',['GetWorldSpaceContactPointOn1',['../class_contact_manifold.html#a1112cfe6df7934c56e585d5985d2870a',1,'ContactManifold']]], + ['getworldspacecontactpointon2_519',['GetWorldSpaceContactPointOn2',['../class_contact_manifold.html#a28d3d860f9bb992c0c581b7a68df6681',1,'ContactManifold']]], + ['getworldspacesurfacenormal_520',['getworldspacesurfacenormal',['../class_body.html#a12422310c7aa9ec72e2376d08fbee6b5',1,'Body::GetWorldSpaceSurfaceNormal()'],['../class_transformed_shape.html#a38fdd1585da3137083b8ee9f9bdcdd98',1,'TransformedShape::GetWorldSpaceSurfaceNormal()']]], + ['getworldtransform_521',['getworldtransform',['../class_body.html#a4bab5d07f84d5a9d38119a1923298b5c',1,'Body::GetWorldTransform()'],['../class_transformed_shape.html#af233e9488d9738108c192ab850758cd9',1,'TransformedShape::GetWorldTransform()'],['../class_character_virtual.html#a36a2e0c44e55954fbc62aed4e030ab01',1,'CharacterVirtual::GetWorldTransform()'],['../class_character.html#a860a13343fac533562e20f01a0b5ca2d',1,'Character::GetWorldTransform()'],['../class_body_interface.html#a8409d75ef7758e7c61675be89629cb6c',1,'BodyInterface::GetWorldTransform()']]], + ['getworldup_522',['GetWorldUp',['../class_vehicle_constraint.html#a6f86aee9e1cde819a5cbe56fa0a6aa4e',1,'VehicleConstraint']]], + ['getx_523',['getx',['../class_vec4.html#aad89aa3a9c4215f45c0dbe1fb65830c3',1,'Vec4::GetX()'],['../class_vec3.html#a284e29f161ae7709a934f402bd2a848c',1,'Vec3::GetX()'],['../class_u_vec4.html#ab2f2894975c86cd37303d8454aa37fcf',1,'UVec4::GetX()'],['../class_quat.html#a3fb43a7bca4b20ce7573030fd826aa96',1,'Quat::GetX()'],['../class_d_vec3.html#afb533f92f55c1e9dc3e7eece73e87dda',1,'DVec3::GetX()']]], + ['getxyz_524',['GetXYZ',['../class_quat.html#afa7fe10bf8a457fb2d524791ccd79ec4',1,'Quat']]], + ['getxyzw_525',['GetXYZW',['../class_quat.html#a7800c0c4cb017273d86793d8a09bf136',1,'Quat']]], + ['gety_526',['gety',['../class_d_vec3.html#ad5aa83813d9db92bd0f04610ff6da1d4',1,'DVec3::GetY()'],['../class_vec4.html#aee5a8598cce851f687263d9b3a163989',1,'Vec4::GetY()'],['../class_vec3.html#aac08ebd63b9ab4fa089a5ed3224a8679',1,'Vec3::GetY()'],['../class_u_vec4.html#a33a55cd5fde9b7bfdbb408faafc1f11b',1,'UVec4::GetY()'],['../class_quat.html#a21f44684684b475d9f5d02ed9c580def',1,'Quat::GetY()']]], + ['getz_527',['getz',['../class_vec4.html#ae5f0ef8f9fd4deb1359806fac122f309',1,'Vec4::GetZ()'],['../class_vec3.html#aeca36d050a7c2b41d3ac0438874d8c60',1,'Vec3::GetZ()'],['../class_u_vec4.html#a0eeba4ed35bd749af316be5bc0949a0a',1,'UVec4::GetZ()'],['../class_quat.html#a38dfc20f7628eee4492125a41ad91764',1,'Quat::GetZ()'],['../class_d_vec3.html#a829a6fd58f3d3bd2da8f4f56f09df728',1,'DVec3::GetZ()']]], + ['ghost_20collisions_528',['Ghost Collisions',['../index.html#ghost-collisions',1,'']]], + ['gjkclosestpoint_529',['GJKClosestPoint',['../class_g_j_k_closest_point.html',1,'']]], + ['gjkclosestpoint_2eh_530',['GJKClosestPoint.h',['../_g_j_k_closest_point_8h.html',1,'']]], + ['global_531',['Global',['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4a4cc6684df7b4a92b1dec6fce3264fac8',1,'StateRecorder.h']]], + ['gravity_532',['Apply Gravity',['../index.html#apply-gravity-update',1,'']]], + ['group_533',['group',['../class_triangle_grouper_morton.html#ac20ae93a828b828b47e20f1b0630c4fb',1,'TriangleGrouperMorton::Group()'],['../class_triangle_grouper_closest_centroid.html#a41cf43b8c59cd10eedf1fafbca09fd42',1,'TriangleGrouperClosestCentroid::Group()'],['../class_triangle_grouper.html#a002940499a58b60dafdcdedb7e26fbb5',1,'TriangleGrouper::Group()']]], + ['groupfilter_534',['GroupFilter',['../class_group_filter.html',1,'']]], + ['groupfilter_2ecpp_535',['GroupFilter.cpp',['../_group_filter_8cpp.html',1,'']]], + ['groupfilter_2eh_536',['GroupFilter.h',['../_group_filter_8h.html',1,'']]], + ['groupfilterresult_537',['GroupFilterResult',['../class_group_filter.html#aeb0b5a6c4c4c4d2d08c8df62942a7525',1,'GroupFilter']]], + ['groupfiltertable_538',['groupfiltertable',['../class_group_filter_table.html',1,'GroupFilterTable'],['../class_group_filter_table.html#a91ed666a7043cd932da78adce8e8920e',1,'GroupFilterTable::GroupFilterTable(const GroupFilterTable &inRHS)'],['../class_group_filter_table.html#ace82879585ebeb7f322700733349fa37',1,'GroupFilterTable::GroupFilterTable(uint inNumSubGroups=0)']]], + ['groupfiltertable_2ecpp_539',['GroupFilterTable.cpp',['../_group_filter_table_8cpp.html',1,'']]], + ['groupfiltertable_2eh_540',['GroupFilterTable.h',['../_group_filter_table_8h.html',1,'']]], + ['groupfiltertoidmap_541',['groupfiltertoidmap',['../class_soft_body_creation_settings.html#a62610a1d2969412b195344477ecd1891',1,'SoftBodyCreationSettings::GroupFilterToIDMap'],['../class_body_creation_settings.html#a1b23e021697957516526baf59f549f0e',1,'BodyCreationSettings::GroupFilterToIDMap']]], + ['groupid_542',['GroupID',['../class_collision_group.html#ab44e31c9fa83c4818b1560d71c15dddd',1,'CollisionGroup']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 000000000..62af581e0 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,49 @@ +var searchData= +[ + ['hadhit_0',['hadhit',['../class_all_hit_collision_collector.html#abb747117423ae48dc5e4f661084ef32a',1,'AllHitCollisionCollector::HadHit()'],['../class_closest_hit_collision_collector.html#aa9679e95456d67c8f813e6f13de6e65c',1,'ClosestHitCollisionCollector::HadHit()'],['../class_any_hit_collision_collector.html#a91c5757d891295842942599a359fdf36',1,'AnyHitCollisionCollector::HadHit()']]], + ['halffloat_1',['HalfFloat',['../_half_float_8h.html#ad1bfc12994d4af290926964a4eaee88d',1,'HalfFloat.h']]], + ['halffloat_2eh_2',['HalfFloat.h',['../_half_float_8h.html',1,'']]], + ['halffloatconversion_3',['HalfFloatConversion',['../namespace_half_float_conversion.html',1,'']]], + ['has_5freallocate_4',['has_reallocate',['../class_s_t_l_allocator.html#a537d1759c088ef656c537b834635c0dd',1,'STLAllocator']]], + ['hasbodies_5',['HasBodies',['../class_quad_tree.html#a0f40b5da772779a14a6d6aedd28ae8a0',1,'QuadTree']]], + ['haschildren_6',['HasChildren',['../class_a_a_b_b_tree_builder_1_1_node.html#ae10ed18604852aa130a4770fe72c9240',1,'AABBTreeBuilder::Node']]], + ['hascollidedwith_7',['hascollidedwith',['../class_character_virtual.html#adacc8eaa741dfd330fbf2d58fa4b7541',1,'CharacterVirtual::HasCollidedWith(const CharacterVirtual *inCharacter) const'],['../class_character_virtual.html#a59a36680856b7f106bbad79345c1525b',1,'CharacterVirtual::HasCollidedWith(const BodyID &inBody) const']]], + ['hascontact_8',['hascontact',['../class_soft_body_manifold.html#a05c6d3d048b62669bde92ad457317523',1,'SoftBodyManifold::HasContact()'],['../class_wheel.html#ad5ab9bb3ed8151044ad41de572945eac',1,'Wheel::HasContact()']]], + ['haserror_9',['HasError',['../class_result.html#a2de3e8315a673e4fc3e627eafad42586',1,'Result']]], + ['hash64_10',['Hash64',['../_hash_combine_8h.html#a8ce241fe287672b4a559499d341d2ee7',1,'HashCombine.h']]], + ['hash_3c_20jph_3a_3astaticarray_3c_20t_2c_20n_20_3e_20_3e_11',['hash< JPH::StaticArray< T, N > >',['../structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.html',1,'std']]], + ['hash_3c_20jph_3a_3astring_20_3e_12',['hash< JPH::String >',['../structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.html',1,'std']]], + ['hashbytes_13',['HashBytes',['../_hash_combine_8h.html#a396c677c4eb61f19e11cc202aac23c38',1,'HashCombine.h']]], + ['hashcombine_14',['HashCombine',['../_hash_combine_8h.html#a4c51b5041a1dac503b2bcadfb351c3a4',1,'HashCombine.h']]], + ['hashcombine_2eh_15',['HashCombine.h',['../_hash_combine_8h.html',1,'']]], + ['hashcombinehelper_16',['HashCombineHelper',['../_hash_combine_8h.html#a6f53710c5b84fefd0968e1ebc5810bd3',1,'HashCombine.h']]], + ['hashithardpoint_17',['HasHitHardPoint',['../class_wheel.html#a61eabff8238d2b284c9a286309e05806',1,'Wheel']]], + ['hashstring_18',['HashString',['../_string_tools_8h.html#aa8f608a4239b6a863e405b05f5318fe6',1,'StringTools.h']]], + ['haslimits_19',['haslimits',['../class_hinge_constraint.html#af1934023ab6d537ecc04cb605c6fada3',1,'HingeConstraint::HasLimits()'],['../class_slider_constraint.html#a7b5b4709994b7a7f4133e0e7d129d3c5',1,'SliderConstraint::HasLimits()']]], + ['hasmassproperties_20',['HasMassProperties',['../class_body_creation_settings.html#a9386fbbcc940bfb89b8442f342748e32',1,'BodyCreationSettings']]], + ['hasnexttriangle_21',['HasNextTriangle',['../class_e_p_a_convex_hull_builder.html#a233403c7274da823fb6b96b539dc5f95',1,'EPAConvexHullBuilder']]], + ['hasstiffness_22',['HasStiffness',['../class_spring_settings.html#afb683eddb2db25f62403a6af6410eebb',1,'SpringSettings']]], + ['header_23',['Header',['../struct_node_codec_quad_tree_half_float_1_1_header.html',1,'NodeCodecQuadTreeHalfFloat']]], + ['headersize_24',['headersize',['../class_node_codec_quad_tree_half_float.html#a1baa2067968afa2567f2e6081926f80b',1,'NodeCodecQuadTreeHalfFloat::HeaderSize'],['../class_a_a_b_b_tree_to_buffer.html#a950a3efaf390fd647e012bc2179e79ac',1,'AABBTreeToBuffer::HeaderSize']]], + ['heightfield_25',['heightfield',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba9a7e8772035f8412fc62cd830d0ba944',1,'HeightField: Shape.h'],['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a9a7e8772035f8412fc62cd830d0ba944',1,'HeightField: Shape.h']]], + ['heightfield_20shape_26',['HeightField Shape',['../md__docs_2_release_notes.html#autotoc_md25',1,'']]], + ['heightfieldshape_27',['heightfieldshape',['../class_height_field_shape.html#a1f6a09590e095c6950e7afff423aa0a7',1,'HeightFieldShape::HeightFieldShape(const HeightFieldShapeSettings &inSettings, ShapeResult &outResult)'],['../class_height_field_shape.html#aa3defa4f1ee1a3e606a4dbe41cd6f515',1,'HeightFieldShape::HeightFieldShape()'],['../class_height_field_shape.html',1,'HeightFieldShape']]], + ['heightfieldshape_2ecpp_28',['HeightFieldShape.cpp',['../_height_field_shape_8cpp.html',1,'']]], + ['heightfieldshape_2eh_29',['HeightFieldShape.h',['../_height_field_shape_8h.html',1,'']]], + ['heightfieldshapeconstants_30',['HeightFieldShapeConstants',['../namespace_height_field_shape_constants.html',1,'']]], + ['heightfieldshapesettings_31',['heightfieldshapesettings',['../class_height_field_shape_settings.html',1,'HeightFieldShapeSettings'],['../class_height_field_shape_settings.html#adf01e409660816defec790e752348cc0',1,'HeightFieldShapeSettings::HeightFieldShapeSettings(const float *inSamples, Vec3Arg inOffset, Vec3Arg inScale, uint32 inSampleCount, const uint8 *inMaterialIndices=nullptr, const PhysicsMaterialList &inMaterialList=PhysicsMaterialList())'],['../class_height_field_shape_settings.html#a3bd65c794f1651b192e95a4fc7c60576',1,'HeightFieldShapeSettings::HeightFieldShapeSettings()=default']]], + ['hinge_32',['Hinge',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da18205404fe6507d42b3b2d25aaf62f21',1,'Constraint.h']]], + ['hingeconstraint_33',['hingeconstraint',['../class_hinge_constraint.html#a7337c51b877bbc1c3848d3de7b3dae8f',1,'HingeConstraint::HingeConstraint()'],['../class_hinge_constraint.html',1,'HingeConstraint']]], + ['hingeconstraint_2ecpp_34',['HingeConstraint.cpp',['../_hinge_constraint_8cpp.html',1,'']]], + ['hingeconstraint_2eh_35',['HingeConstraint.h',['../_hinge_constraint_8h.html',1,'']]], + ['hingeconstraintsettings_36',['HingeConstraintSettings',['../class_hinge_constraint_settings.html',1,'']]], + ['hingerotationconstraintpart_37',['HingeRotationConstraintPart',['../class_hinge_rotation_constraint_part.html',1,'']]], + ['hingerotationconstraintpart_2eh_38',['HingeRotationConstraintPart.h',['../_hinge_rotation_constraint_part_8h.html',1,'']]], + ['hintindentdown_39',['hintindentdown',['../class_i_object_stream_out.html#ad8f41874c06223db415f29a57f72caa1',1,'IObjectStreamOut::HintIndentDown()'],['../class_object_stream_text_out.html#abb8c8ed67d0c0093551de3e8e35f1602',1,'ObjectStreamTextOut::HintIndentDown()']]], + ['hintindentup_40',['hintindentup',['../class_i_object_stream_out.html#ac24c86e1d5fba43f2dcfdd3557269a3d',1,'IObjectStreamOut::HintIndentUp()'],['../class_object_stream_text_out.html#a9fc1cac8ca74e8897ec19b2df8de1eb9',1,'ObjectStreamTextOut::HintIndentUp() override']]], + ['hintnextitem_41',['hintnextitem',['../class_object_stream_text_out.html#acc5aff4eec5365eaf3b43070cd893485',1,'ObjectStreamTextOut::HintNextItem()'],['../class_i_object_stream_out.html#aa414a76c2459d6346da50c61b279f6f3',1,'IObjectStreamOut::HintNextItem()']]], + ['hsgettrianglescontext_42',['hsgettrianglescontext',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html',1,'HeightFieldShape::HSGetTrianglesContext'],['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a59ff92ab62ae7b8de0fa381aed8e54b6',1,'HeightFieldShape::HSGetTrianglesContext::HSGetTrianglesContext()']]], + ['hullnoconvex_43',['hullnoconvex',['../class_convex_hull_shape_1_1_hull_no_convex.html#a652a6ba8e320db5f9bd800be8a09b383',1,'ConvexHullShape::HullNoConvex::HullNoConvex()'],['../class_convex_hull_shape_1_1_hull_no_convex.html',1,'ConvexHullShape::HullNoConvex']]], + ['hullwithconvex_44',['hullwithconvex',['../class_convex_hull_shape_1_1_hull_with_convex.html#a2cc182e90ba06f5fdf0db6824c4173ee',1,'ConvexHullShape::HullWithConvex::HullWithConvex()'],['../class_convex_hull_shape_1_1_hull_with_convex.html',1,'ConvexHullShape::HullWithConvex']]], + ['hullwithconvexscaled_45',['hullwithconvexscaled',['../class_convex_hull_shape_1_1_hull_with_convex_scaled.html#a909efa72b31f796f8b86bc2fbe00d620',1,'ConvexHullShape::HullWithConvexScaled::HullWithConvexScaled()'],['../class_convex_hull_shape_1_1_hull_with_convex_scaled.html',1,'ConvexHullShape::HullWithConvexScaled']]] +]; diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 000000000..fb68eed66 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,133 @@ +var searchData= +[ + ['identifier_0',['Identifier',['../class_object_stream.html#a03085cd2aa375ca2c773579947434455',1,'ObjectStream']]], + ['idtogroupfiltermap_1',['idtogroupfiltermap',['../class_body_creation_settings.html#a0489d76cdd3ec9368ef0edfd99878c92',1,'BodyCreationSettings::IDToGroupFilterMap'],['../class_soft_body_creation_settings.html#ad1f40b177b4f27efcd0ab66f42ba4c88',1,'SoftBodyCreationSettings::IDToGroupFilterMap']]], + ['idtomaterialmap_2',['idtomaterialmap',['../class_body_creation_settings.html#ada70b5de55b8cc6ea9f93e67b0d98227',1,'BodyCreationSettings::IDToMaterialMap'],['../class_shape.html#a045656fa1693fed85254f1dd3975f5da',1,'Shape::IDToMaterialMap'],['../class_soft_body_creation_settings.html#a3a2067077df858114c6864c2d126b211',1,'SoftBodyCreationSettings::IDToMaterialMap'],['../class_soft_body_shared_settings.html#aa48c93ede2e6d3c177fa46d1bd5f4553',1,'SoftBodySharedSettings::IDToMaterialMap']]], + ['idtoobjectmap_3',['IDToObjectMap',['../namespace_stream_utils.html#a31d9aa36bf98b7db87aa8490e9b5d1c3',1,'StreamUtils']]], + ['idtoshapemap_4',['idtoshapemap',['../class_shape.html#a06ba83cf87213a408c508acbc786d2fe',1,'Shape::IDToShapeMap'],['../class_body_creation_settings.html#a38d63e9e7f85d16ecca1db06ca0dabc8',1,'BodyCreationSettings::IDToShapeMap']]], + ['idtosharedsettingsmap_5',['idtosharedsettingsmap',['../class_soft_body_creation_settings.html#a6b219acbdeca620a6fecb352b422a64d',1,'SoftBodyCreationSettings::IDToSharedSettingsMap'],['../class_soft_body_shared_settings.html#a80460f3819b755482ca58b63b254995c',1,'SoftBodySharedSettings::IDToSharedSettingsMap']]], + ['idx_6',['Set Body Island Idx',['../index.html#set-body-island-idx',1,'']]], + ['ignorebackfaces_7',['IgnoreBackFaces',['../_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70af6243a236f136f9c790a0d9cfd71c408',1,'BackFaceMode.h']]], + ['ignorebody_8',['IgnoreBody',['../class_ignore_multiple_bodies_filter.html#ad3bfab720ac4fcd05cef194b6ec0106a',1,'IgnoreMultipleBodiesFilter']]], + ['ignoremultiplebodiesfilter_9',['IgnoreMultipleBodiesFilter',['../class_ignore_multiple_bodies_filter.html',1,'']]], + ['ignoresinglebodyfilter_10',['ignoresinglebodyfilter',['../class_ignore_single_body_filter.html#adcc8cbdc3b3cd657ce832f13b6b4bf68',1,'IgnoreSingleBodyFilter::IgnoreSingleBodyFilter()'],['../class_ignore_single_body_filter.html',1,'IgnoreSingleBodyFilter']]], + ['ignoresinglebodyfilterchained_11',['ignoresinglebodyfilterchained',['../class_ignore_single_body_filter_chained.html#a92bbf17cd704ae6e64c4d7c86bfcf7fc',1,'IgnoreSingleBodyFilterChained::IgnoreSingleBodyFilterChained()'],['../class_ignore_single_body_filter_chained.html',1,'IgnoreSingleBodyFilterChained']]], + ['illegal_20instruction_20error_12',['Illegal Instruction Error',['../md__build_2_r_e_a_d_m_e.html#autotoc_md80',1,'']]], + ['impulse_13',['Impulse',['../struct_collision_estimation_result_1_1_impulse.html',1,'CollisionEstimationResult']]], + ['impulses_14',['Impulses',['../struct_collision_estimation_result.html#ae20ee6182689df63b71afc3edb34dbbb',1,'CollisionEstimationResult']]], + ['in_20detail_15',['The Simulation Step in Detail',['../index.html#the-simulation-step-in-detail',1,'']]], + ['in_20progress_16',['Soft Body Work In Progress',['../index.html#soft-body-wip',1,'']]], + ['inair_17',['InAir',['../class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77eaee4e669a07b061d70b9b79dfed9cb5e7',1,'CharacterBase']]], + ['includeconvexradius_18',['IncludeConvexRadius',['../class_convex_shape.html#a4cd6e2f87f30d108faf1f119dd73a06badc738ebd4ba89322ae44c2d1ec8cda9f',1,'ConvexShape']]], + ['includes_19',['Includes',['../md__build_2_r_e_a_d_m_e.html#autotoc_md70',1,'']]], + ['independentaxisconstraintpart_20',['IndependentAxisConstraintPart',['../class_independent_axis_constraint_part.html',1,'']]], + ['independentaxisconstraintpart_2eh_21',['IndependentAxisConstraintPart.h',['../_independent_axis_constraint_part_8h.html',1,'']]], + ['indeterminate_22',['Indeterminate',['../class_e_p_a_penetration_depth.html#aab59ecfbbefc06c5ac96f9cdc24252d0aa2d00c353d1f9a5f07852650030dbd53',1,'EPAPenetrationDepth']]], + ['indexedtriangle_23',['indexedtriangle',['../class_indexed_triangle.html#afa13a5b9104c4fe6f17c848a786f66b6',1,'IndexedTriangle::IndexedTriangle()'],['../class_indexed_triangle.html',1,'IndexedTriangle']]], + ['indexedtriangle_2eh_24',['IndexedTriangle.h',['../_indexed_triangle_8h.html',1,'']]], + ['indexedtrianglelist_25',['IndexedTriangleList',['../_indexed_triangle_8h.html#a36dddc469fdd08411ce6fb341a59f7bd',1,'IndexedTriangle.h']]], + ['indexedtrianglenomaterial_26',['indexedtrianglenomaterial',['../class_indexed_triangle_no_material.html#a23f00d353bda9289c5a686975d443a81',1,'IndexedTriangleNoMaterial::IndexedTriangleNoMaterial()=default'],['../class_indexed_triangle_no_material.html#aa602ab6944f42f9103f36ce13b47d7cd',1,'IndexedTriangleNoMaterial::IndexedTriangleNoMaterial(uint32 inI1, uint32 inI2, uint32 inI3)'],['../class_indexed_triangle.html#a23f00d353bda9289c5a686975d443a81',1,'IndexedTriangle::IndexedTriangleNoMaterial()'],['../class_indexed_triangle_no_material.html',1,'IndexedTriangleNoMaterial'],['../class_indexed_triangle.html#aa602ab6944f42f9103f36ce13b47d7cd',1,'IndexedTriangle::IndexedTriangleNoMaterial()']]], + ['indexedtrianglenomateriallist_27',['IndexedTriangleNoMaterialList',['../_indexed_triangle_8h.html#a2d74380960608d52a301172e577ab9e3',1,'IndexedTriangle.h']]], + ['indexify_28',['indexify',['../_indexify_8cpp.html#ab6b21642fd35795ec65d252b58614f0f',1,'Indexify(const TriangleList &inTriangles, VertexList &outVertices, IndexedTriangleList &outTriangles, float inVertexWeldDistance): Indexify.cpp'],['../_indexify_8h.html#ab7b184ebf9ddcef48642e7cfea156909',1,'Indexify(const TriangleList &inTriangles, VertexList &outVertices, IndexedTriangleList &outTriangles, float inVertexWeldDistance=1.0e-4f): Indexify.cpp']]], + ['indexify_2ecpp_29',['Indexify.cpp',['../_indexify_8cpp.html',1,'']]], + ['indexify_2eh_30',['Indexify.h',['../_indexify_8h.html',1,'']]], + ['init_31',['init',['../class_job_system_single_threaded.html#a9a7a97646eaa417b4860df72739a64d9',1,'JobSystemSingleThreaded::Init()'],['../class_physics_system.html#ae578fcd0c58f678156b7cd8b44f811a6',1,'PhysicsSystem::Init()'],['../class_island_builder.html#a060b323839a30c3096ec581b4684290d',1,'IslandBuilder::Init()'],['../class_contact_constraint_manager.html#a8225433cfdf9f63fa149fdac25e0a263',1,'ContactConstraintManager::Init()'],['../class_narrow_phase_query.html#a85be5810a9b3d96dcb527767f499c852',1,'NarrowPhaseQuery::Init()'],['../class_quad_tree.html#a61023e566be172a288dfcd728118ec46',1,'QuadTree::Init()'],['../class_broad_phase_quad_tree.html#aff006c957ae78fae8652ed352f7f1bc2',1,'BroadPhaseQuadTree::Init()'],['../class_broad_phase.html#ad7d7ba03cddb7946ad487176458ffce4',1,'BroadPhase::Init()'],['../class_body_manager.html#a2d0f5cce4bc65b5dd60e79edc37fd0d9',1,'BodyManager::Init()'],['../class_mutex_array.html#a882ec12f80ee295c78857d266cb69340',1,'MutexArray::Init()'],['../class_lock_free_hash_map.html#a64add1094aa66c55413b2488e8ae8d16',1,'LockFreeHashMap::Init()'],['../class_l_f_h_m_allocator.html#a9eda23a0f8dd6fac54adab81b97e7c60',1,'LFHMAllocator::Init()'],['../class_job_system_with_barrier.html#a07c53b2eecf2984531affd3867815214',1,'JobSystemWithBarrier::Init()'],['../class_job_system_thread_pool.html#ad8d40e63f28b99fcffdbb2e237864482',1,'JobSystemThreadPool::Init()'],['../class_body_interface.html#a53d3b19282c77d972f684abeb16b42a8',1,'BodyInterface::Init()'],['../class_fixed_size_free_list.html#a083084370fcf7fde019f6d4d8b99378e',1,'FixedSizeFreeList::Init()']]], + ['initexitfunction_32',['InitExitFunction',['../class_job_system_thread_pool.html#a380fb336206bb8188b5a68979ac432ab',1,'JobSystemThreadPool']]], + ['initialearlyoutfraction_33',['initialearlyoutfraction',['../class_collision_collector_traits_collide_shape.html#ab3c91ac7a729d543b263c51194826488',1,'CollisionCollectorTraitsCollideShape::InitialEarlyOutFraction'],['../class_collision_collector_traits_cast_shape.html#a05bb7735aee24a1dbb7da03e0b43323d',1,'CollisionCollectorTraitsCastShape::InitialEarlyOutFraction'],['../class_collision_collector_traits_cast_ray.html#ad2a01c00dc5dc3fae86b1b2c08ddfae6',1,'CollisionCollectorTraitsCastRay::InitialEarlyOutFraction']]], + ['initialize_34',['initialize',['../class_convex_hull_builder_1_1_face.html#ad7bd1a953fcc40b6987a3d51c90f61ce',1,'ConvexHullBuilder::Face::Initialize()'],['../class_convex_hull_builder.html#afa4a4a97fc8ae9e58c039b3c36d10c54',1,'ConvexHullBuilder::Initialize()'],['../class_convex_hull_builder2_d.html#aa7047be80b54c2b14497e3d34c3dd956',1,'ConvexHullBuilder2D::Initialize()'],['../class_e_p_a_convex_hull_builder.html#ac6b69723ed9d2c1b815769f9953ef8e7',1,'EPAConvexHullBuilder::Initialize()'],['../class_soft_body_motion_properties.html#a999ca42bb024698adfa2bac1cf971d02',1,'SoftBodyMotionProperties::Initialize()'],['../class_debug_renderer.html#a1ca028ffb521cc342e2d34cfc03f5d46',1,'DebugRenderer::Initialize()'],['../class_skeleton_mapper.html#a4c6938fe3c8557ea55e10cc3c8bfc387',1,'SkeletonMapper::Initialize()']]], + ['initializeupdatecontext_35',['InitializeUpdateContext',['../class_soft_body_motion_properties.html#aec0e4f9a14bad868339c95357a8c37ab',1,'SoftBodyMotionProperties']]], + ['insert_36',['insert',['../class_array.html#a621b4ce6e5e1bdc2e158ba276b89aeae',1,'Array::insert(const_iterator inPos, Iterator inBegin, Iterator inEnd)'],['../class_array.html#ac6af5bac62e99ef93d1ab63077eeda24',1,'Array::insert(const_iterator inPos, const T &inValue)']]], + ['insertionsort_37',['insertionsort',['../_insertion_sort_8h.html#a80e0fb97467b162da908954c2625ddbc',1,'InsertionSort(Iterator inBegin, Iterator inEnd): InsertionSort.h'],['../_insertion_sort_8h.html#a1c833812e3ce3c4848ccd57826ab2463',1,'InsertionSort(Iterator inBegin, Iterator inEnd, Compare inCompare): InsertionSort.h']]], + ['insertionsort_2eh_38',['InsertionSort.h',['../_insertion_sort_8h.html',1,'']]], + ['instance_39',['Instance',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aad9a17c1c9e8ef6866e4dbeef41c741b2',1,'SerializableAttribute.h']]], + ['instancecolor_40',['InstanceColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2a99ee1c53265abeecfe720f4bc3fc44a6',1,'BodyManager']]], + ['instruction_20error_41',['Illegal Instruction Error',['../md__build_2_r_e_a_d_m_e.html#autotoc_md80',1,'']]], + ['integrate_42',['integrate',['../index.html#post-integrate',1,'Post Integrate'],['../index.html#pre-integrate',1,'Pre Integrate']]], + ['integrate_20clamp_20velocities_43',['Integrate & Clamp Velocities',['../index.html#integrate-and-clamp-velocities',1,'']]], + ['internaledgeremovingcollector_44',['internaledgeremovingcollector',['../class_internal_edge_removing_collector.html',1,'InternalEdgeRemovingCollector'],['../class_internal_edge_removing_collector.html#a871712a392dc701428cd3da7e872cd6d',1,'InternalEdgeRemovingCollector::InternalEdgeRemovingCollector()']]], + ['internaledgeremovingcollector_2eh_45',['InternalEdgeRemovingCollector.h',['../_internal_edge_removing_collector_8h.html',1,'']]], + ['internalgetpointer_46',['internalgetpointer',['../class_ref.html#a77d70f3060879921e889cb1bb14c676f',1,'Ref::InternalGetPointer()'],['../class_ref_const.html#a87a9a9c835eaabab406c8015c8ef2033',1,'RefConst::InternalGetPointer()']]], + ['intersect_47',['Intersect',['../class_a_a_box.html#a5dfffd69562c679b789599bb3b30f736',1,'AABox']]], + ['intersects_48',['Intersects',['../class_g_j_k_closest_point.html#a20ab4d36efcf62ceae244ec75eb4bc23',1,'GJKClosestPoint']]], + ['invalid_49',['Invalid',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa4bbb8f967da6d1a610596d7257179c2b',1,'SerializableAttribute.h']]], + ['invalidatecontactcache_50',['InvalidateContactCache',['../class_body_interface.html#af554a69ffbdfb5290c03cc9562ed21e5',1,'BodyInterface']]], + ['invalidatecontactcacheforbody_51',['InvalidateContactCacheForBody',['../class_body_manager.html#a2d9975b3a1fb311c3956820eae65b7ce',1,'BodyManager']]], + ['invalidatecontactcacheinternal_52',['InvalidateContactCacheInternal',['../class_body.html#a469ea05f3200587491082a0f11f54fc6',1,'Body']]], + ['invbind_53',['invbind',['../class_soft_body_motion_properties.html#aca958392d6456c1d9cff6f4d54cac4f9',1,'SoftBodyMotionProperties::InvBind'],['../class_soft_body_shared_settings_1_1_inv_bind.html#a8545f4208959bc7ca55c73ecb595ac71',1,'SoftBodySharedSettings::InvBind::InvBind()'],['../class_soft_body_shared_settings_1_1_inv_bind.html',1,'SoftBodySharedSettings::InvBind'],['../class_soft_body_shared_settings_1_1_inv_bind.html#a9fd7d2b0a344f06e51c2ff0b86224a58',1,'SoftBodySharedSettings::InvBind::InvBind()']]], + ['inversed_54',['inversed',['../class_d_mat44.html#a9dd1f19d169fa56c3797b3160ec6e01e',1,'DMat44::Inversed()'],['../class_mat44.html#aae48032b0b6d27778617b8546135b057',1,'Mat44::Inversed()'],['../class_matrix.html#ad36508b39c6773cc40fdd6a27f14b4eb',1,'Matrix::Inversed()'],['../class_quat.html#ac04a00570e1a5e96d49398d40d493bf3',1,'Quat::Inversed()']]], + ['inversed3x3_55',['Inversed3x3',['../class_mat44.html#ad9f5df546296a7bdc816e6be5627926b',1,'Mat44']]], + ['inversedrotationtranslation_56',['inversedrotationtranslation',['../class_mat44.html#af962ad0ed20cb6112f8249cb9573c233',1,'Mat44::InversedRotationTranslation()'],['../class_d_mat44.html#a99c3fff7120735262343accfb677cca0',1,'DMat44::InversedRotationTranslation()']]], + ['inverserotate_57',['InverseRotate',['../class_quat.html#a108350bfce9aa53b1af87fbe2698f6f4',1,'Quat']]], + ['invoke_58',['Invoke',['../class_scope_exit.html#a634992233a59f3f178d921cf141584d8',1,'ScopeExit']]], + ['iobjectstreamin_59',['IObjectStreamIn',['../class_i_object_stream_in.html',1,'']]], + ['iobjectstreamout_60',['IObjectStreamOut',['../class_i_object_stream_out.html',1,'']]], + ['is_5falways_5fequal_61',['is_always_equal',['../class_s_t_l_aligned_allocator.html#af538a14e83578101a7d7cdcc8bb0ccbd',1,'STLAlignedAllocator::is_always_equal'],['../class_s_t_l_allocator.html#aa4525a121f902e3456ee4d4c58aedf0e',1,'STLAllocator::is_always_equal'],['../class_s_t_l_temp_allocator.html#a130ebd28aed525b631e26371c7e851bb',1,'STLTempAllocator::is_always_equal']]], + ['isabstract_62',['IsAbstract',['../class_r_t_t_i.html#a8d9df5eaf6fce27b44ccc4c2bb728fd7',1,'RTTI']]], + ['isactive_63',['isactive',['../class_independent_axis_constraint_part.html#a564752c8c4a381de55000c66debc8b0f',1,'IndependentAxisConstraintPart::IsActive()'],['../class_body.html#ae172c10ebdda3e473ae54f7e35c62cd1',1,'Body::IsActive()'],['../class_body_interface.html#a762f492665332fe71e31d0e37d4355c7',1,'BodyInterface::IsActive()'],['../class_constraint.html#a2181f0c1fdc1de4b22afcd42e1b2273a',1,'Constraint::IsActive()'],['../class_angle_constraint_part.html#a470e2813d397af02acc6bf8e8373431c',1,'AngleConstraintPart::IsActive()'],['../class_axis_constraint_part.html#a20095a523dff24e09134b315841f1fcb',1,'AxisConstraintPart::IsActive()'],['../class_dual_axis_constraint_part.html#abb7c86b1b65526e284e71c3b126a53e1',1,'DualAxisConstraintPart::IsActive()'],['../class_gear_constraint_part.html#a5e5f8097c8a062b98d9bedcfa37859c5',1,'GearConstraintPart::IsActive()'],['../class_point_constraint_part.html#a9b183e233b8fc258ab72f447499c5ad8',1,'PointConstraintPart::IsActive()'],['../class_rack_and_pinion_constraint_part.html#aecf166daf465d11438885115f506d1b6',1,'RackAndPinionConstraintPart::IsActive()'],['../class_rotation_euler_constraint_part.html#a5580f01673bcbbde31fd75108d2866b4',1,'RotationEulerConstraintPart::IsActive()'],['../class_rotation_quat_constraint_part.html#ab38b8a217a4dc990ed58e9dc7210e2fc',1,'RotationQuatConstraintPart::IsActive()'],['../class_spring_part.html#a9dbe7d09f4a6aaf7f5edd106fb6fe335',1,'SpringPart::IsActive()'],['../class_swing_twist_constraint_part.html#af3c12b4e902bc93120df5ec5a706de99',1,'SwingTwistConstraintPart::IsActive()'],['../class_path_constraint.html#a5f6d3c7d860ee5c715f8fef818fd4f1f',1,'PathConstraint::IsActive()'],['../class_two_body_constraint.html#a9ec4e14ada31bf5172141c2d50663e76',1,'TwoBodyConstraint::IsActive()'],['../class_ragdoll.html#aa86e5cf49f753abc4ad077440d08faa0',1,'Ragdoll::IsActive()'],['../class_vehicle_constraint.html#a44c4c794a9bc8e0812e72ee67644418e',1,'VehicleConstraint::IsActive()']]], + ['isadded_64',['IsAdded',['../class_body_interface.html#a1a67ebf158316c8ce40768aab624680b',1,'BodyInterface']]], + ['isaligned_65',['IsAligned',['../_math_8h.html#a92bab343999851b4ded776dd2a70c742',1,'Math.h']]], + ['isclose_66',['isclose',['../class_mat44.html#a69e383afe2897a0179fdeb7a418d961d',1,'Mat44::IsClose()'],['../class_d_mat44.html#ad27b57cba8e9b24759bb4d6f83160da7',1,'DMat44::IsClose()'],['../class_d_vec3.html#a4841bd14fcbce5a9a03edde10d9c6b30',1,'DVec3::IsClose()'],['../class_quat.html#a9c0afa78ae80b13a6c8adf1240a7c95e',1,'Quat::IsClose()'],['../class_vec3.html#a0b134a58f09912cb5cac913313487fad',1,'Vec3::IsClose()'],['../class_vec4.html#aad49c5695caae942208e05168c10f086',1,'Vec4::IsClose()'],['../class_vector.html#af792d9902858de9e315caa8eddd89f29',1,'Vector::IsClose()']]], + ['iscollisioncacheinvalid_67',['IsCollisionCacheInvalid',['../class_body.html#a6e13ebc7a47c0170acc0c976f7724ea8',1,'Body']]], + ['iscollisionenabled_68',['IsCollisionEnabled',['../class_group_filter_table.html#acfa23ff8483cdeec0926623ebb9dd8f3',1,'GroupFilterTable']]], + ['isdegenerate_69',['isdegenerate',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html#a516aa9477446fe411a4d0eaab643f0d8',1,'TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext::IsDegenerate()'],['../class_indexed_triangle_no_material.html#a439540e1770cfdda6ef0a663ef5eff3c',1,'IndexedTriangleNoMaterial::IsDegenerate()'],['../struct_soft_body_shared_settings_1_1_face.html#ae962b7b0a75c52698410e6dfd8aba428',1,'SoftBodySharedSettings::Face::IsDegenerate()']]], + ['isdirty_70',['IsDirty',['../class_quad_tree.html#a92ac4f8879ce137be588d0c9f1d0582c',1,'QuadTree']]], + ['isdone_71',['isdone',['../class_job_system_1_1_job_handle.html#a787e04af05eea5f3eda568956cca9f10',1,'JobSystem::JobHandle::IsDone()'],['../class_job_system_1_1_job.html#abd9fad54e1b18a2a0c9795e86e222875',1,'JobSystem::Job::IsDone()']]], + ['isdonewalking_72',['isdonewalking',['../class_height_field_shape_1_1_decoding_context.html#a07f0c967d33e29768081ff5eded07452',1,'HeightFieldShape::DecodingContext::IsDoneWalking()'],['../class_node_codec_quad_tree_half_float_1_1_decoding_context.html#a497beb4af569cc217d1b6d8b311f89ae',1,'NodeCodecQuadTreeHalfFloat::DecodingContext::IsDoneWalking()']]], + ['isdynamic_73',['IsDynamic',['../class_body.html#a1b21c30907c8c9ce30c176a054057bef',1,'Body']]], + ['isempty_74',['isempty',['../class_result.html#a596c71aec4992abce2ecda10cf827573',1,'Result::IsEmpty()'],['../class_temp_allocator_impl.html#ac998e260e54f25b3493d30e24b15bef2',1,'TempAllocatorImpl::IsEmpty()'],['../class_sub_shape_i_d.html#a353cb40946046c09d50b31d73c122729',1,'SubShapeID::IsEmpty()']]], + ['iseof_75',['iseof',['../class_stream_in.html#a9a2a616b63703ec5c80423ad2692d06e',1,'StreamIn::IsEOF()'],['../class_stream_in_wrapper.html#ae426f7046722abc95d5e1a9205d535da',1,'StreamInWrapper::IsEOF()'],['../class_state_recorder_impl.html#a3b68bb167e95e3bfe5777fc1c6f5b398',1,'StateRecorderImpl::IsEOF() const override']]], + ['isequal_76',['IsEqual',['../class_state_recorder_impl.html#aeb311a860d29ccff107125d907359466',1,'StateRecorderImpl']]], + ['isequivalent_77',['IsEquivalent',['../class_indexed_triangle_no_material.html#ac0ae1c29594b849761b0db20c1f84fb9',1,'IndexedTriangleNoMaterial']]], + ['isfacing_78',['isfacing',['../class_convex_hull_builder_1_1_face.html#ab6cda375e944b9d24410dab0ee120c4e',1,'ConvexHullBuilder::Face::IsFacing()'],['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a60543dea65ee8e56fa77132610302412',1,'EPAConvexHullBuilder::Triangle::IsFacing(Vec3Arg inPosition) const']]], + ['isfacingorigin_79',['IsFacingOrigin',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a7c793273642a25acaf54c8b2a63a5c3a',1,'EPAConvexHullBuilder::Triangle']]], + ['isfailed_80',['isfailed',['../class_state_recorder_impl.html#a30053c8a2baa5e3cb4e5e26c37afda05',1,'StateRecorderImpl::IsFailed()'],['../class_stream_in.html#abda7a049c94885abd04a6e583e4c5b37',1,'StreamIn::IsFailed()'],['../class_stream_out.html#a30c9fa2d50a64c0da4d6dc5ae614e756',1,'StreamOut::IsFailed()'],['../class_stream_out_wrapper.html#a2da7c93d54165f7cbab4678fe83abb32',1,'StreamOutWrapper::IsFailed()'],['../class_stream_in_wrapper.html#a239494d64eb786bb0d4b0fb55cc621e0',1,'StreamInWrapper::IsFailed()']]], + ['isfixedaxis_81',['isfixedaxis',['../class_six_d_o_f_constraint_settings.html#a8b211ad9cdf8dee7b453b10f2f747a89',1,'SixDOFConstraintSettings::IsFixedAxis()'],['../class_six_d_o_f_constraint.html#a9388c6c3c237389fa77aec2862fba244',1,'SixDOFConstraint::IsFixedAxis()']]], + ['isfreeaxis_82',['isfreeaxis',['../class_six_d_o_f_constraint_settings.html#afd2fee3c13a064451e982eb6f375f71c',1,'SixDOFConstraintSettings::IsFreeAxis()'],['../class_six_d_o_f_constraint.html#aaa234472e01794bfa881cf59d0c5d6be',1,'SixDOFConstraint::IsFreeAxis()']]], + ['isgravityoverridden_83',['IsGravityOverridden',['../class_vehicle_constraint.html#a47a9c30e28487e4a50e88b618168c01b',1,'VehicleConstraint']]], + ['isidentity_84',['IsIdentity',['../class_matrix.html#a35353d8c2a5a249e5368e654bca5fc79',1,'Matrix']]], + ['isinbroadphase_85',['IsInBroadPhase',['../class_body.html#a0d17f6ccde9ed070cdead2585ee87446',1,'Body']]], + ['isinside_86',['IsInside',['../class_ellipse.html#a5592d2e8e6bb560567b3c9236babd545',1,'Ellipse']]], + ['isinsideout_87',['IsInsideOut',['../namespace_scale_helpers.html#a968d814e04071d431f79a2ba4e9d4da1',1,'ScaleHelpers']]], + ['isinvalid_88',['IsInvalid',['../class_body_i_d.html#a0967deb4e1f200037bf32e14c4fec9e1',1,'BodyID']]], + ['isjointtranslationlocked_89',['IsJointTranslationLocked',['../class_skeleton_mapper.html#a6fcd34ef9c18a53f65679b5d671e6147',1,'SkeletonMapper']]], + ['iskindof_90',['iskindof',['../_r_t_t_i_8h.html#a5776b9c127f537d17eb0fe3c859dec5d',1,'IsKindOf(const Ref< Type > &inObject, const RTTI *inRTTI): RTTI.h'],['../_r_t_t_i_8h.html#a6fa76c579cc82e306b9bdcf2bfea470c',1,'IsKindOf(const RefConst< Type > &inObject, const RTTI *inRTTI): RTTI.h'],['../_r_t_t_i_8h.html#a7c84a67a84c5fd402ed48a5e8301e1d1',1,'IsKindOf(const Type *inObject, const RTTI *inRTTI): RTTI.h'],['../class_r_t_t_i.html#a91cf4ad4740ffd16fe63e945ef288315',1,'RTTI::IsKindOf()']]], + ['iskinematic_91',['IsKinematic',['../class_body.html#ab49045bc1738e110dea9cbc020528338',1,'Body']]], + ['island_20idx_92',['Set Body Island Idx',['../index.html#set-body-island-idx',1,'']]], + ['islandbuilder_93',['IslandBuilder',['../class_island_builder.html',1,'']]], + ['islandbuilder_2ecpp_94',['IslandBuilder.cpp',['../_island_builder_8cpp.html',1,'']]], + ['islandbuilder_2eh_95',['IslandBuilder.h',['../_island_builder_8h.html',1,'']]], + ['islandcolor_96',['IslandColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2a3396ca60625ec56b88b34019e16d5121',1,'BodyManager']]], + ['islands_97',['Finalize Islands',['../index.html#finalize-islands',1,'']]], + ['islands_20from_20constraints_98',['Build Islands from Constraints',['../index.html#build-islands-from-constraints',1,'']]], + ['isleancontrollerenabled_99',['IsLeanControllerEnabled',['../class_motorcycle_controller.html#a45023171410fa8b5abcdce36068dd10c',1,'MotorcycleController']]], + ['isleansteeringlimitenabled_100',['IsLeanSteeringLimitEnabled',['../class_motorcycle_controller.html#ab992be424860c4da8e88968ca7cbe45b',1,'MotorcycleController']]], + ['islooping_101',['IsLooping',['../class_path_constraint_path.html#a8ec3b671b2e5abaa571a24baa0fae9fa',1,'PathConstraintPath']]], + ['isnan_102',['isnan',['../class_d_vec3.html#a8215efb6695dc1ff3d1d3c6625bfb977',1,'DVec3::IsNaN()'],['../class_quat.html#a62b95b1c1d36ecbd6f9732ca4789a7bf',1,'Quat::IsNaN()'],['../class_vec3.html#ae2ae38edbb4672657e92bf1c67bb7bea',1,'Vec3::IsNaN()'],['../class_vec4.html#ade30350c3a4167764d6b44b43f78e1db',1,'Vec4::IsNaN()']]], + ['isnearzero_103',['isnearzero',['../class_d_vec3.html#aed8a5c005467d9089c5e2397529a1c53',1,'DVec3::IsNearZero()'],['../class_vec3.html#acee93ea875b86bc0f63edebe2b592dbc',1,'Vec3::IsNearZero()']]], + ['isnocollision_104',['IsNoCollision',['../class_height_field_shape.html#abc679be9c4d45bd5217dc7ef9a1b1511',1,'HeightFieldShape']]], + ['isnormalized_105',['isnormalized',['../class_d_vec3.html#a4f71719e4f963c925c4981ea049c3f15',1,'DVec3::IsNormalized()'],['../class_vector.html#a5420a12386bf0d4cdba1c3605929b6ba',1,'Vector::IsNormalized()'],['../class_vec4.html#a9b1dca50b3e7fb2408064eb24a7196ae',1,'Vec4::IsNormalized()'],['../class_vec3.html#a2f10743d69960eaac721399e4ede190a',1,'Vec3::IsNormalized()'],['../class_quat.html#ae628a9685f0be008f18752ea9302b4e4',1,'Quat::IsNormalized()']]], + ['isnotscaled_106',['IsNotScaled',['../namespace_scale_helpers.html#abf3b185a98bea874b96fa82a0db2d7e2',1,'ScaleHelpers']]], + ['isopposite_107',['IsOpposite',['../class_indexed_triangle_no_material.html#ac117960e5b26bec04ed736d18b99219d',1,'IndexedTriangleNoMaterial']]], + ['ispowerof2_108',['IsPowerOf2',['../_math_8h.html#a531058b1613a4e5123a68a704673e1a2',1,'Math.h']]], + ['isrigidbody_109',['IsRigidBody',['../class_body.html#a8365154663e94343e1045893ee3b4c16',1,'Body']]], + ['issamebody_110',['IsSameBody',['../struct_character_virtual_1_1_contact.html#aa812c74d8ef437c690bafc818fb62c50',1,'CharacterVirtual::Contact']]], + ['issensor_111',['IsSensor',['../class_body.html#a251e1c9d8c9c7e40ddabc73420ac9ab1',1,'Body']]], + ['isslopetoosteep_112',['IsSlopeTooSteep',['../class_character_base.html#a87e7e3bcc174d5e498844dcac7f7f173',1,'CharacterBase']]], + ['issoftbody_113',['IsSoftBody',['../class_body.html#a454781f1340576ad7f752b51dd8a179d',1,'Body']]], + ['isstatic_114',['IsStatic',['../class_body.html#a83748a3d5a5b0a5b0242ba91875b8e13',1,'Body']]], + ['issubshapeidvalid_115',['IsSubShapeIDValid',['../class_compound_shape.html#a3fd5589e3e33b94b8c112393b431152b',1,'CompoundShape']]], + ['issuereporting_2ecpp_116',['IssueReporting.cpp',['../_issue_reporting_8cpp.html',1,'']]], + ['issuereporting_2eh_117',['IssueReporting.h',['../_issue_reporting_8h.html',1,'']]], + ['issupported_118',['IsSupported',['../class_character_base.html#a700e706b9c1710409fc16c6f9a083e0b',1,'CharacterBase']]], + ['isswitchinggear_119',['IsSwitchingGear',['../class_vehicle_transmission.html#aebbd24ac8a0b55f474d7654507739059',1,'VehicleTransmission']]], + ['istringstream_120',['IStringStream',['../_s_t_l_allocator_8h.html#a9c1541a8d5ffcc9c2dbf26154ff11a18',1,'STLAllocator.h']]], + ['istype_121',['istype',['../class_serializable_attribute.html#ab928f1de1446823484b4437a79214924',1,'SerializableAttribute::IsType()'],['../_r_t_t_i_8h.html#a7a5bbd60ebd3ba5f69f0afccf05a4d08',1,'IsType(const Type *inObject, const RTTI *inRTTI): RTTI.h'],['../_r_t_t_i_8h.html#a4f2ba2fa904f27bafd5046ffa01a370d',1,'IsType(const Ref< Type > &inObject, const RTTI *inRTTI): RTTI.h'],['../_r_t_t_i_8h.html#ae4426a9694f255b1b6151e97186512a8',1,'IsType(const RefConst< Type > &inObject, const RTTI *inRTTI): RTTI.h']]], + ['isuniformscale_122',['IsUniformScale',['../namespace_scale_helpers.html#a8ff2f9310527acbb4b02a00150fe02fe',1,'ScaleHelpers']]], + ['isuniformscalexz_123',['IsUniformScaleXZ',['../namespace_scale_helpers.html#ab4d95f2ecd59a1a77263a3be465fd34e',1,'ScaleHelpers']]], + ['isvalid_124',['isvalid',['../class_motor_settings.html#a86075f9a0d21b35897e7f6f7e9c50fbc',1,'MotorSettings::IsValid()'],['../class_result.html#a06b7e3b8ea77cb4b1fc5ecfa45494167',1,'Result::IsValid()'],['../class_a_a_box.html#ad68947562ff18e440f87d50265001647',1,'AABox::IsValid()'],['../class_job_system_1_1_job_handle.html#a8f060c8caed0f0d1a5cfa45490790529',1,'JobSystem::JobHandle::IsValid()']]], + ['isvalidating_125',['IsValidating',['../class_state_recorder.html#a347912d4c7bbcb1e1c1e3689a3fccd56',1,'StateRecorder']]], + ['isvalidscale_126',['isvalidscale',['../class_shape.html#a59f32110193561295a7d721909e07adc',1,'Shape::IsValidScale()'],['../class_capsule_shape.html#aaf0e3b1687a9af015aaf19ccc214f8a2',1,'CapsuleShape::IsValidScale()'],['../struct_compound_shape_1_1_sub_shape.html#a33448959f96311ef875a912b8a104dcf',1,'CompoundShape::SubShape::IsValidScale()'],['../class_compound_shape.html#a8d582144c0bcce878f9a956aaf116c79',1,'CompoundShape::IsValidScale()'],['../class_cylinder_shape.html#a588bfdea87ca78a28f2c02c4d9d05630',1,'CylinderShape::IsValidScale()'],['../class_decorated_shape.html#a778d6bb612a571ba44001768efca994c',1,'DecoratedShape::IsValidScale()'],['../class_rotated_translated_shape.html#ab85aaba12f9b0080fb7eee3a49530efe',1,'RotatedTranslatedShape::IsValidScale()'],['../class_triangle_shape.html#aa130f6df7eb934713fce70d29bd5d526',1,'TriangleShape::IsValidScale()'],['../class_tapered_cylinder_shape.html#af79a03631dba5393a3964064aafc661f',1,'TaperedCylinderShape::IsValidScale()'],['../class_tapered_capsule_shape.html#ab5112ce12b79437d76b676c5554a81a2',1,'TaperedCapsuleShape::IsValidScale()'],['../class_sphere_shape.html#a94316a5849ea7c0bdbd55b9cf9da1195',1,'SphereShape::IsValidScale()'],['../class_scaled_shape.html#aaa13e40988ae29754e637e5baa31a868',1,'ScaledShape::IsValidScale()']]], + ['iszero_127',['iszero',['../class_vector.html#ab1368364228755bfe9e64af3654ea995',1,'Vector::IsZero()'],['../class_matrix.html#a8d6bed263967c53112cafe858e32eb9e',1,'Matrix::IsZero()']]], + ['iszeroscale_128',['IsZeroScale',['../namespace_scale_helpers.html#a3f452edeafb5aeb1ea965c1a2b1d9912',1,'ScaleHelpers']]], + ['iterator_129',['iterator',['../struct_lock_free_hash_map_1_1_iterator.html',1,'LockFreeHashMap< Key, Value >::Iterator'],['../class_static_array.html#a495ba6aabb5a08ba1a06add667182f12',1,'StaticArray::iterator'],['../class_array.html#ab021b8f27be055471331c9bb98bfd702',1,'Array::iterator']]] +]; diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 000000000..3fd9652be --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,140 @@ +var searchData= +[ + ['job_0',['job',['../class_job_system_1_1_job.html#a50f9de63538bb632101548fef86258e1',1,'JobSystem::Job::Job()'],['../class_job_system_1_1_barrier.html#a965d805cf4fa6e7ef721cfad15d99bcd',1,'JobSystem::Barrier::Job'],['../class_job_system_1_1_job.html',1,'JobSystem::Job']]], + ['jobfunction_1',['JobFunction',['../class_job_system.html#ae31ef61a509934f03d4705aec19c61f5',1,'JobSystem']]], + ['jobhandle_2',['jobhandle',['../class_job_system_1_1_job_handle.html',1,'JobSystem::JobHandle'],['../_job_system_8h.html#a1417608577c1b4286e945e4d8b01aa53',1,'JobHandle: JobSystem.h'],['../class_job_system_1_1_job_handle.html#a08f33876c4c56f09acc8447c68af002a',1,'JobSystem::JobHandle::JobHandle(Job *inJob)'],['../class_job_system_1_1_job_handle.html#a5324a68c829e11b6f9cfbcb27ec6451d',1,'JobSystem::JobHandle::JobHandle(JobHandle &&inHandle) noexcept'],['../class_job_system_1_1_job_handle.html#a968f1e7b128e82c864214452ad9ae168',1,'JobSystem::JobHandle::JobHandle(const JobHandle &inHandle)=default'],['../class_job_system_1_1_job_handle.html#a07f9178968f17e7bcb8b876f46ee916d',1,'JobSystem::JobHandle::JobHandle()=default']]], + ['jobhandlearray_3',['JobHandleArray',['../class_physics_update_context.html#abfb8bdd22591660d9452affe8a51ff43',1,'PhysicsUpdateContext']]], + ['jobmask_4',['JobMask',['../class_physics_update_context.html#a57722f8a1c879b71ae19337e61600b3d',1,'PhysicsUpdateContext']]], + ['jobsystem_5',['JobSystem',['../class_job_system.html',1,'']]], + ['jobsystem_2eh_6',['JobSystem.h',['../_job_system_8h.html',1,'']]], + ['jobsystem_2einl_7',['JobSystem.inl',['../_job_system_8inl.html',1,'']]], + ['jobsystemsinglethreaded_8',['jobsystemsinglethreaded',['../class_job_system_single_threaded.html#a9c9d96208c3ff6d3fc601da994b56198',1,'JobSystemSingleThreaded::JobSystemSingleThreaded(uint inMaxJobs)'],['../class_job_system_single_threaded.html#ac04954b37964301fdc8c569fff04a6eb',1,'JobSystemSingleThreaded::JobSystemSingleThreaded()=default'],['../class_job_system_single_threaded.html',1,'JobSystemSingleThreaded']]], + ['jobsystemsinglethreaded_2ecpp_9',['JobSystemSingleThreaded.cpp',['../_job_system_single_threaded_8cpp.html',1,'']]], + ['jobsystemsinglethreaded_2eh_10',['JobSystemSingleThreaded.h',['../_job_system_single_threaded_8h.html',1,'']]], + ['jobsystemthreadpool_11',['jobsystemthreadpool',['../class_job_system_thread_pool.html',1,'JobSystemThreadPool'],['../class_job_system_thread_pool.html#acf4a8888977261556ec87fea4ceb64aa',1,'JobSystemThreadPool::JobSystemThreadPool()=default'],['../class_job_system_thread_pool.html#adaccd4fc1faa23f3883c2d16e32d0382',1,'JobSystemThreadPool::JobSystemThreadPool(uint inMaxJobs, uint inMaxBarriers, int inNumThreads=-1)']]], + ['jobsystemthreadpool_2ecpp_12',['JobSystemThreadPool.cpp',['../_job_system_thread_pool_8cpp.html',1,'']]], + ['jobsystemthreadpool_2eh_13',['JobSystemThreadPool.h',['../_job_system_thread_pool_8h.html',1,'']]], + ['jobsystemwithbarrier_14',['jobsystemwithbarrier',['../class_job_system_with_barrier.html',1,'JobSystemWithBarrier'],['../class_job_system_with_barrier.html#a8bb3d115433cfb6bb59eea3105e1c8e1',1,'JobSystemWithBarrier::JobSystemWithBarrier(uint inMaxBarriers)'],['../class_job_system_with_barrier.html#aaf97f3f021e97a501e5383f55c3625e6',1,'JobSystemWithBarrier::JobSystemWithBarrier()=default']]], + ['jobsystemwithbarrier_2ecpp_15',['JobSystemWithBarrier.cpp',['../_job_system_with_barrier_8cpp.html',1,'']]], + ['jobsystemwithbarrier_2eh_16',['JobSystemWithBarrier.h',['../_job_system_with_barrier_8h.html',1,'']]], + ['joint_17',['joint',['../class_skeleton_1_1_joint.html',1,'Skeleton::Joint'],['../class_skeleton_1_1_joint.html#a87e1ff289639d959858305f1fb06635f',1,'Skeleton::Joint::Joint()=default'],['../class_skeleton_1_1_joint.html#aa9efa0126fb47778e2a95f81c512ad0b',1,'Skeleton::Joint::Joint(const string_view &inName, const string_view &inParentName, int inParentJointIndex)']]], + ['jointstate_18',['jointstate',['../class_skeletal_animation_1_1_joint_state.html',1,'SkeletalAnimation::JointState'],['../class_skeleton_pose.html#ac2a127126bcbac1a033e75e7371ba94b',1,'SkeletonPose::JointState']]], + ['jointstatevector_19',['JointStateVector',['../class_skeleton_pose.html#a9e4d521e23999bef15f0a0fd2b5f4c91',1,'SkeletonPose']]], + ['jointvector_20',['JointVector',['../class_skeleton.html#abc73ae3dc3fae778e7da6cea24f0897a',1,'Skeleton']]], + ['jolt_21',['Projects Using Jolt',['../md__docs_2_projects_using_jolt.html',1,'']]], + ['jolt_20physics_22',['jolt physics',['../index.html#architecture-jolt-physics',1,'Architecture of Jolt Physics'],['../md__build_2_r_e_a_d_m_e.html',1,'Building and Using Jolt Physics'],['../index.html',1,'Jolt Physics']]], + ['jolt_20physics_20samples_23',['Jolt Physics Samples',['../md__docs_2_samples.html',1,'']]], + ['jolt_2eh_24',['Jolt.h',['../_jolt_8h.html',1,'']]], + ['jph_5fadd_5fattribute_25',['JPH_ADD_ATTRIBUTE',['../_serializable_attribute_typed_8h.html#a564e5bd12360a28431c73574690dd1b8',1,'SerializableAttributeTyped.h']]], + ['jph_5fadd_5fattribute_5fwith_5falias_26',['JPH_ADD_ATTRIBUTE_WITH_ALIAS',['../_serializable_attribute_typed_8h.html#a861c3d62109332e36799a2e86d160c99',1,'SerializableAttributeTyped.h']]], + ['jph_5fadd_5fbase_5fclass_27',['JPH_ADD_BASE_CLASS',['../_r_t_t_i_8h.html#a6b6dec4b6f44b7b759575042b90f1e0e',1,'RTTI.h']]], + ['jph_5fadd_5fenum_5fattribute_28',['JPH_ADD_ENUM_ATTRIBUTE',['../_serializable_attribute_enum_8h.html#a3b22fbca3340e9995ee02ec11447515d',1,'SerializableAttributeEnum.h']]], + ['jph_5fadd_5fenum_5fattribute_5fwith_5falias_29',['JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS',['../_serializable_attribute_enum_8h.html#a60dd3c12ea0bb4c809e96221d8ff0025',1,'SerializableAttributeEnum.h']]], + ['jph_5falloc_5ffn_30',['JPH_ALLOC_FN',['../_memory_8cpp.html#a668fcc255ab2023c923b60b30de9282e',1,'Memory.cpp']]], + ['jph_5falloc_5fscope_31',['JPH_ALLOC_SCOPE',['../_memory_8cpp.html#aaca87e834c41d0cd09b639ad58d377d4',1,'Memory.cpp']]], + ['jph_5fassert_32',['JPH_ASSERT',['../_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd',1,'IssueReporting.h']]], + ['jph_5fbase_5fclass_5foffset_33',['JPH_BASE_CLASS_OFFSET',['../_r_t_t_i_8h.html#a668438b38455c6832cd177af4462cdec',1,'RTTI.h']]], + ['jph_5fbreakpoint_34',['JPH_BREAKPOINT',['../_core_8h.html#a252846bbcc9c2281dba7ad4673e708ce',1,'Core.h']]], + ['jph_5fcache_5fline_5fsize_35',['JPH_CACHE_LINE_SIZE',['../_core_8h.html#a2eca4e00d11d8fdbbd04c4a23a244278',1,'Core.h']]], + ['jph_5fclang_5f13_5fplus_5fsuppress_5fwarning_36',['JPH_CLANG_13_PLUS_SUPPRESS_WARNING',['../_core_8h.html#a56b2f8bbe701eb1d5abb795108938d94',1,'Core.h']]], + ['jph_5fclang_5f16_5fplus_5fsuppress_5fwarning_37',['JPH_CLANG_16_PLUS_SUPPRESS_WARNING',['../_core_8h.html#a8fdd598df1d0bcd8ef890ece041ec39e',1,'Core.h']]], + ['jph_5fclang_5fsuppress_5fwarning_38',['JPH_CLANG_SUPPRESS_WARNING',['../_core_8h.html#a7e4d18d1740a496e87b0b745a83175e1',1,'Core.h']]], + ['jph_5fdebug_39',['JPH_DEBUG',['../_core_8h.html#a06f6299732e98a727ed302e921611d56',1,'Core.h']]], + ['jph_5fdebug_5frenderer_5fexport_40',['JPH_DEBUG_RENDERER_EXPORT',['../_debug_renderer_8h.html#a1eb8c8b4d1d3d0232455eed4ac196289',1,'DebugRenderer.h']]], + ['jph_5fdeclare_5fprimitive_41',['jph_declare_primitive',['../_object_stream_8cpp.html#a7d32f5239cd276fd0012072a2a4ccd23',1,'JPH_DECLARE_PRIMITIVE: ObjectStream.cpp'],['../_object_stream_8h.html#a7d32f5239cd276fd0012072a2a4ccd23',1,'JPH_DECLARE_PRIMITIVE: ObjectStream.h'],['../_object_stream_out_8cpp.html#a7d32f5239cd276fd0012072a2a4ccd23',1,'JPH_DECLARE_PRIMITIVE: ObjectStreamOut.cpp'],['../_serializable_attribute_8h.html#a7d32f5239cd276fd0012072a2a4ccd23',1,'JPH_DECLARE_PRIMITIVE: SerializableAttribute.h'],['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa988ddd4859f990b5618fb95f0dbfdaf6',1,'JPH_DECLARE_PRIMITIVE: SerializableAttribute.h']]], + ['jph_5fdeclare_5frtti_5fabstract_42',['JPH_DECLARE_RTTI_ABSTRACT',['../_r_t_t_i_8h.html#aa342df4c27afe127c91c78a18524e149',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5fabstract_5fbase_43',['JPH_DECLARE_RTTI_ABSTRACT_BASE',['../_r_t_t_i_8h.html#a3ff0a59480ae32ece4f84604c58571d9',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5ffor_5ffactory_44',['JPH_DECLARE_RTTI_FOR_FACTORY',['../_r_t_t_i_8h.html#a6730e0db6d896ebec02feaf2fb1962e2',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5fhelper_45',['JPH_DECLARE_RTTI_HELPER',['../_r_t_t_i_8h.html#a90f2450c61a3aacfebc11258ac919432',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5fnon_5fvirtual_46',['JPH_DECLARE_RTTI_NON_VIRTUAL',['../_r_t_t_i_8h.html#a030cbf2601458db3a9f2ea1bf181b005',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5foutside_5fclass_47',['jph_declare_rtti_outside_class',['../_type_declarations_8h.html#a06065058d89eb12bed3964edef601a05',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, uint32): TypeDeclarations.h'],['../_r_t_t_i_8h.html#a4a4f092ae66bfd23b475ed2bbe015e76',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS: RTTI.h'],['../_type_declarations_8h.html#a6fdb6f424008bf062968d001645ba55b',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, uint8): TypeDeclarations.h'],['../_type_declarations_8h.html#a2cd12a5e336b2c97efa2937a9bb8edc2',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, uint16): TypeDeclarations.h'],['../_type_declarations_8h.html#adaba06ca5abfb45048832e78d55bfaed',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, DMat44): TypeDeclarations.h'],['../_type_declarations_8h.html#a1a8c7c60f7c3128fe7218e02ba9acfc4',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, Mat44): TypeDeclarations.h'],['../_type_declarations_8h.html#a086d80a51af31bdeb74cb6bacde605ee',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, Quat): TypeDeclarations.h'],['../_type_declarations_8h.html#a73b1f26e619891542ef0f9be9c7cd7e3',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, Vec4): TypeDeclarations.h'],['../_type_declarations_8h.html#a272e1bdcd39d7965dfb3fb42656ef299',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, Vec3): TypeDeclarations.h'],['../_type_declarations_8h.html#a8f9ef9e4c01f888b64b76fc06c440a25',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, int): TypeDeclarations.h'],['../_type_declarations_8h.html#a2fc933ca3173ed626632e00eacdf8ce3',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, uint64): TypeDeclarations.h'],['../_type_declarations_8h.html#ad74edb5e5392c4131cd54b55d54acc3f',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, float): TypeDeclarations.h'],['../_type_declarations_8h.html#afb5600d9c1155a5b4946275be8a46083',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, double): TypeDeclarations.h'],['../_type_declarations_8h.html#a8fa8a1bb547d4ea5dbf4be01b474a825',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, bool): TypeDeclarations.h'],['../_type_declarations_8h.html#a2dada4edc12396d421aad54fd3a880a0',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, DVec3): TypeDeclarations.h'],['../_type_declarations_8h.html#a2704d2ff1bdac3b5b820248cc72cc875',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, Double3): TypeDeclarations.h'],['../_type_declarations_8h.html#a7c4ea05a76fed4b97d6855db129fa69e',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, Float3): TypeDeclarations.h'],['../_type_declarations_8h.html#afe2e6efd40a082563570a021ccbb1f6f',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, String): TypeDeclarations.h']]], + ['jph_5fdeclare_5frtti_5fvirtual_48',['JPH_DECLARE_RTTI_VIRTUAL',['../_r_t_t_i_8h.html#a13d46ae1d3df8685d4f6d2f02d44f076',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5fvirtual_5fbase_49',['JPH_DECLARE_RTTI_VIRTUAL_BASE',['../_r_t_t_i_8h.html#af64324d36799d7c7827a7fc1c7773e7b',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5fwith_5fnamespace_5ffor_5ffactory_50',['JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY',['../_r_t_t_i_8h.html#a50aad6dd20dc88522774eb2e267f6ddd',1,'RTTI.h']]], + ['jph_5fdeclare_5fserializable_5fabstract_51',['JPH_DECLARE_SERIALIZABLE_ABSTRACT',['../_serializable_object_8h.html#ac317eaf55d6ffd3bc0c67521bc33d617',1,'SerializableObject.h']]], + ['jph_5fdeclare_5fserializable_5fabstract_5fbase_52',['JPH_DECLARE_SERIALIZABLE_ABSTRACT_BASE',['../_serializable_object_8h.html#ae930e54dc186e23ef194e0c89681bf9f',1,'SerializableObject.h']]], + ['jph_5fdeclare_5fserializable_5fnon_5fvirtual_53',['JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL',['../_serializable_object_8h.html#accc27ff8b37777018bc2d93207412b71',1,'SerializableObject.h']]], + ['jph_5fdeclare_5fserializable_5foutside_5fclass_54',['jph_declare_serializable_outside_class',['../_type_declarations_8h.html#afce6572cad2ba9edd1d52d86f50fc357',1,'JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(JPH_EXPORT, Triangle): TypeDeclarations.h'],['../_serializable_object_8h.html#aa0ae52235ce05a3559fac744c0c5cb21',1,'JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS: SerializableObject.h'],['../_type_declarations_8h.html#a768396b208134898d9b3f3d871b75c40',1,'JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(JPH_EXPORT, Color): TypeDeclarations.h'],['../_type_declarations_8h.html#a9c4abaf178f1c1c6ab48d44c02c3bf4b',1,'JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(JPH_EXPORT, AABox): TypeDeclarations.h'],['../_type_declarations_8h.html#aa8644cc8a0f9f5f4082156a79d8fd20d',1,'JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(JPH_EXPORT, IndexedTriangle): TypeDeclarations.h'],['../_type_declarations_8h.html#a899ce9c69d02389a49b27a56e225f5ee',1,'JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(JPH_EXPORT, Plane): TypeDeclarations.h']]], + ['jph_5fdeclare_5fserializable_5fvirtual_55',['JPH_DECLARE_SERIALIZABLE_VIRTUAL',['../_serializable_object_8h.html#ad80cbee2b256f570ee204534dec05da4',1,'SerializableObject.h']]], + ['jph_5fdeclare_5fserializable_5fvirtual_5fbase_56',['JPH_DECLARE_SERIALIZABLE_VIRTUAL_BASE',['../_serializable_object_8h.html#aa933697d79529904b1027a806ed94b0f',1,'SerializableObject.h']]], + ['jph_5fdeclare_5fserialization_5ffunctions_57',['JPH_DECLARE_SERIALIZATION_FUNCTIONS',['../_serializable_object_8h.html#a7e157da66f2e52b03f01ab235487fde4',1,'SerializableObject.h']]], + ['jph_5fdet_5flog_58',['JPH_DET_LOG',['../_determinism_log_8h.html#a61c37041df47384bded07d7067fc8cf7',1,'DeterminismLog.h']]], + ['jph_5fel_59',['JPH_EL',['../_mat44_8inl.html#a7d2c3dded3b7d624fb4cde097f294fa7',1,'Mat44.inl']]], + ['jph_5fevs_5frotate_60',['JPH_EVS_ROTATE',['../_eigen_value_symmetric_8h.html#a7de93add3597eb0ea0e78c5cd45f9725',1,'EigenValueSymmetric.h']]], + ['jph_5fexport_61',['JPH_EXPORT',['../_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8',1,'Core.h']]], + ['jph_5fexport_5fgcc_5fbug_5fworkaround_62',['JPH_EXPORT_GCC_BUG_WORKAROUND',['../_core_8h.html#a99479aa3165acf219093ab9549833cf9',1,'Core.h']]], + ['jph_5fgcc_5fsuppress_5fwarning_63',['JPH_GCC_SUPPRESS_WARNING',['../_core_8h.html#a46d791d2b1f95fa056399441a2ad8667',1,'Core.h']]], + ['jph_5fif_5fdebug_64',['JPH_IF_DEBUG',['../_core_8h.html#a3feba9adfefa0cf951f6b4aeb4990fb4',1,'Core.h']]], + ['jph_5fif_5fdebug_5frenderer_65',['JPH_IF_DEBUG_RENDERER',['../_core_8h.html#ab6d002cadb39841b46bb93fe8a20e00e',1,'Core.h']]], + ['jph_5fif_5fdouble_5fprecision_66',['JPH_IF_DOUBLE_PRECISION',['../_core_8h.html#a53c63d069a8c5c75085ed00c3725e0ab',1,'Core.h']]], + ['jph_5fif_5fenable_5fasserts_67',['JPH_IF_ENABLE_ASSERTS',['../_issue_reporting_8h.html#a9189784257d6995aa3ecbafbf8bc5bd5',1,'IssueReporting.h']]], + ['jph_5fif_5ffloating_5fpoint_5fexceptions_5fenabled_68',['JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED',['../_core_8h.html#a9f995afb38a0d149ed20606b43a3e2fb',1,'Core.h']]], + ['jph_5fif_5fnot_5fandroid_69',['JPH_IF_NOT_ANDROID',['../_core_8h.html#aac5e592f9e714fda0c006772758e3c6f',1,'Core.h']]], + ['jph_5fif_5fnot_5fdebug_70',['JPH_IF_NOT_DEBUG',['../_core_8h.html#a19cd70ae9b66fee2faf10a0d00fe8a13',1,'Core.h']]], + ['jph_5fif_5fnot_5fdebug_5frenderer_71',['JPH_IF_NOT_DEBUG_RENDERER',['../_core_8h.html#a5f790aaecc28630723d8d68801ce8865',1,'Core.h']]], + ['jph_5fif_5fsingle_5fprecision_72',['JPH_IF_SINGLE_PRECISION',['../_core_8h.html#a2b44b10d432bafc0db7e105e3c246425',1,'Core.h']]], + ['jph_5fif_5fsingle_5fprecision_5felse_73',['JPH_IF_SINGLE_PRECISION_ELSE',['../_core_8h.html#aa004a0f7df4c0472bb33a149fce1f21c',1,'Core.h']]], + ['jph_5fif_5ftrack_5fbroadphase_5fstats_74',['JPH_IF_TRACK_BROADPHASE_STATS',['../_broad_phase_8h.html#a1fd93e96654ff2092f35485924d94df9',1,'BroadPhase.h']]], + ['jph_5fif_5ftrack_5fnarrowphase_5fstats_75',['JPH_IF_TRACK_NARROWPHASE_STATS',['../_narrow_phase_stats_8h.html#a338a08d1bae50a8368cce3eaa218f1b1',1,'NarrowPhaseStats.h']]], + ['jph_5fimplement_5frtti_5fabstract_76',['JPH_IMPLEMENT_RTTI_ABSTRACT',['../_r_t_t_i_8h.html#ad1ef48680348ecc0d318544e49e59efb',1,'RTTI.h']]], + ['jph_5fimplement_5frtti_5fabstract_5fbase_77',['JPH_IMPLEMENT_RTTI_ABSTRACT_BASE',['../_r_t_t_i_8h.html#ac209c74f11bc4a8893baa3abe9839139',1,'RTTI.h']]], + ['jph_5fimplement_5frtti_5fnon_5fvirtual_78',['JPH_IMPLEMENT_RTTI_NON_VIRTUAL',['../_r_t_t_i_8h.html#acc74973e1a6c6be43135c2e52693428f',1,'RTTI.h']]], + ['jph_5fimplement_5frtti_5foutside_5fclass_79',['jph_implement_rtti_outside_class',['../_r_t_t_i_8h.html#a4a641a155ee1c2a238734f69e69f2e5f',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS: RTTI.h'],['../_type_declarations_8cpp.html#a11182afe7612145c69d171d7a70e6ca8',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(DMat44): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a2b010525b68e5c2a57eb1025be64d97f',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(Mat44): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a9b9cfd1ad3f7bc0cebce9c1b56cb6269',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(Quat): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a6b0342b461d651a6b91d2d5d44c82c5c',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(Vec4): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#ac80a9f367fc05d3611c29302c735bd4d',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(DVec3): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#ab260e46e7681343e510c92433d3580a1',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(Vec3): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#af343628ba183647c57887e6775472ac7',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(Float3): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a930470ec4ef64437920078ecfbf35bb3',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(uint8): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a6e266be4d9b6001f95cdc7f0c00a1466',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(uint16): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a0d364d20a949b53123721b4a1dadd211',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(int): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a2cb138a68f4b62b2f2eca331965db174',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(uint32): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a221b2591d49ca3ada970057fcc3f2225',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(uint64): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a2c44a516ef07f3c1c2751a2708d58d1e',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(Double3): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a4669015ea8629e3740f310ae91eef460',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(String): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#aeb0656ddcc6a028148147995151f00b3',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(bool): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a68f66008287ed2cbc9c1bd96514d9eba',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(double): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#ac9b74fbe4f4d9a2d54cb2b38a1c886eb',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(float): TypeDeclarations.cpp']]], + ['jph_5fimplement_5frtti_5fvirtual_80',['JPH_IMPLEMENT_RTTI_VIRTUAL',['../_r_t_t_i_8h.html#a10066d3dbecb1f07b1c5250773537b86',1,'RTTI.h']]], + ['jph_5fimplement_5frtti_5fvirtual_5fbase_81',['JPH_IMPLEMENT_RTTI_VIRTUAL_BASE',['../_r_t_t_i_8h.html#adb200046bbf9e46a9870dc1862e8cc15',1,'RTTI.h']]], + ['jph_5fimplement_5fserializable_5fabstract_82',['jph_implement_serializable_abstract',['../_two_body_constraint_8cpp.html#ab5fb5645c9d70816376dbc17a2ef8319',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(TwoBodyConstraintSettings): TwoBodyConstraint.cpp'],['../_serializable_object_8h.html#aa0df3cb355e5b6fa66051046f5590a5e',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT: SerializableObject.h'],['../_serializable_object_8cpp.html#a2c9c50d8b76d16955954601525c1f0fd',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(SerializableObject): SerializableObject.cpp'],['../_compound_shape_8cpp.html#abc5239a29f3d49bd5cdc17e9d593f020',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(CompoundShapeSettings): CompoundShape.cpp'],['../_convex_shape_8cpp.html#a9cf42585bb42addd8eabed35352f18bc',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(ConvexShapeSettings): ConvexShape.cpp'],['../_decorated_shape_8cpp.html#a8370ba1be883863dbda714bda7dc109e',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(DecoratedShapeSettings): DecoratedShape.cpp'],['../_vehicle_controller_8cpp.html#aaab0104360bd2a64084fdc7cc3a8e5b9',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(VehicleControllerSettings): VehicleController.cpp'],['../_path_constraint_path_8cpp.html#afeb55065feac7e761af72ad1ece4f881',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(PathConstraintPath): PathConstraintPath.cpp']]], + ['jph_5fimplement_5fserializable_5fabstract_5fbase_83',['jph_implement_serializable_abstract_base',['../_shape_8cpp.html#a952cf80ba8a1269fe371badfa12fbfc4',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE(ShapeSettings): Shape.cpp'],['../_serializable_object_8h.html#ada2ccb45b6d52e1c8a1785bc62b412e4',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE: SerializableObject.h'],['../_group_filter_8cpp.html#a8dee56aaf9f404b0a43cb140076ac750',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE(GroupFilter): GroupFilter.cpp']]], + ['jph_5fimplement_5fserializable_5fnon_5fvirtual_84',['jph_implement_serializable_non_virtual',['../_skeletal_animation_8cpp.html#aa35a66aa122a627a187f615e67ea292b',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SkeletalAnimation): SkeletalAnimation.cpp'],['../_path_constraint_path_hermite_8cpp.html#a396455a934fe536ea1ce7bdc58e70af4',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(PathConstraintPathHermite::Point): PathConstraintPathHermite.cpp'],['../_vehicle_transmission_8cpp.html#a65a211b8b63e58b3974b9cf5dce4943c',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(VehicleTransmissionSettings): VehicleTransmission.cpp'],['../_spring_settings_8cpp.html#a833aa2302db474872ff674d47d4504df',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SpringSettings): SpringSettings.cpp'],['../_skeletal_animation_8cpp.html#a3fb4e2d9ae2adffc561671eebfdbd741',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SkeletalAnimation::Keyframe): SkeletalAnimation.cpp'],['../_mass_properties_8cpp.html#ad44a914c8e4dc302d0d1772c2576f202',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(MassProperties): MassProperties.cpp'],['../_physics_scene_8cpp.html#a10ab4cf4963e09c967fb295fa6b9c8d0',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(PhysicsScene): PhysicsScene.cpp'],['../_soft_body_shared_settings_8cpp.html#a9694e07edcc17e8a412d31cf4702fb67',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::Face): SoftBodySharedSettings.cpp'],['../_soft_body_shared_settings_8cpp.html#a12fcdd1fd56a0281ddf5b3b216e7d875',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::Volume): SoftBodySharedSettings.cpp'],['../_vehicle_track_8cpp.html#a98e0dcbeb9696e18946fcf90bb3a303f',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(VehicleTrackSettings): VehicleTrack.cpp'],['../_skeleton_8cpp.html#a66c2401b3f742ef958235469e069214f',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(Skeleton::Joint): Skeleton.cpp'],['../_motor_settings_8cpp.html#a18cea24767f7614ea127a8c84a93514e',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(MotorSettings): MotorSettings.cpp'],['../_skeletal_animation_8cpp.html#a2fe8f4fd6f63d6b4c2db4f93507704fd',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SkeletalAnimation::JointState): SkeletalAnimation.cpp'],['../_soft_body_shared_settings_8cpp.html#af3f8d69825ce7e23c14a9b6171fe8522',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::InvBind): SoftBodySharedSettings.cpp'],['../_soft_body_shared_settings_8cpp.html#a3b6fc8c7eaaad65967efe1c2d9c99df6',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::Skinned): SoftBodySharedSettings.cpp'],['../_collision_group_8cpp.html#a3e7fe78695055e5ca077341741e349e0',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(CollisionGroup): CollisionGroup.cpp'],['../_serializable_object_8h.html#af1893434ccaa3c9d7eebc3f1c8c83290',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL: SerializableObject.h'],['../_physics_scene_8cpp.html#a9c81bd82f76a31a2144094340bbe869f',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(PhysicsScene::ConnectedConstraint): PhysicsScene.cpp'],['../_soft_body_shared_settings_8cpp.html#afaccb21a4bbd49131642bc49dbf2603d',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings): SoftBodySharedSettings.cpp'],['../_soft_body_shared_settings_8cpp.html#a02e0760eed402a4d64bf9ec84e8cd905',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::Edge): SoftBodySharedSettings.cpp'],['../_vehicle_engine_8cpp.html#a2ab35424822ea37f7e7619790fb8b4fc',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(VehicleEngineSettings): VehicleEngine.cpp'],['../_ragdoll_8cpp.html#aa82ef8ce262899911ba7fdc45f209afa',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(RagdollSettings::Part): Ragdoll.cpp'],['../_skeleton_8cpp.html#a7aca54fb94c9423d77c04278237fab25',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(Skeleton): Skeleton.cpp'],['../_soft_body_shared_settings_8cpp.html#a046b7f7838890eeac5f938d4623c0a61',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::DihedralBend): SoftBodySharedSettings.cpp'],['../_compound_shape_8cpp.html#a6da7739bc136c8ca3cb6c48c5c339d56',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(CompoundShapeSettings::SubShapeSettings): CompoundShape.cpp'],['../_soft_body_shared_settings_8cpp.html#a1d597c7362d005d1300da695068b51ba',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::LRA): SoftBodySharedSettings.cpp'],['../_soft_body_shared_settings_8cpp.html#aa5d42a7512a1465b8b4fd39c222c4f50',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::SkinWeight): SoftBodySharedSettings.cpp'],['../_vehicle_differential_8cpp.html#a50cc79d549a72c59bef3260836a30b46',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(VehicleDifferentialSettings): VehicleDifferential.cpp'],['../_ragdoll_8cpp.html#a156cb7c4ba37a5088a457802db82e9cc',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(RagdollSettings::AdditionalConstraint): Ragdoll.cpp'],['../_soft_body_shared_settings_8cpp.html#adfaa805a48d870efa8197431b2734bef',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::Vertex): SoftBodySharedSettings.cpp'],['../_soft_body_creation_settings_8cpp.html#a4942de1919bd58e6ca881e54995c32b7',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodyCreationSettings): SoftBodyCreationSettings.cpp'],['../_linear_curve_8cpp.html#a92de0d7f032f46f2861e2c288235e149',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(LinearCurve::Point): LinearCurve.cpp'],['../_vehicle_anti_roll_bar_8cpp.html#a191ec6adc8e236ae5ff9b6297d247ce1',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(VehicleAntiRollBar): VehicleAntiRollBar.cpp'],['../_skeletal_animation_8cpp.html#af8f3be7ebc9fd400cc0079158c7c7b2b',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SkeletalAnimation::AnimatedJoint): SkeletalAnimation.cpp'],['../_body_creation_settings_8cpp.html#a68abc39f80927978924c4fa79c9a04de',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(BodyCreationSettings): BodyCreationSettings.cpp'],['../_linear_curve_8cpp.html#a754b0eff0f4aa2d91c8fb20b90eea023',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(LinearCurve): LinearCurve.cpp'],['../_ragdoll_8cpp.html#a3f5bf275d929461fa92729fc389ecde8',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(RagdollSettings): Ragdoll.cpp']]], + ['jph_5fimplement_5fserializable_5foutside_5fclass_85',['jph_implement_serializable_outside_class',['../_type_declarations_8cpp.html#abbf30c5c8ff9ec0d405fad2199843d0c',1,'JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS(Color): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#ad81c2911255e517b2e2b8112832839b1',1,'JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS(IndexedTriangle): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#acd8339b06e15d4f5eca371cbc12c27fc',1,'JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS(Plane): TypeDeclarations.cpp'],['../_serializable_object_8h.html#a8d52ce16aca23d1e5a6933b4607f7f8a',1,'JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS: SerializableObject.h'],['../_type_declarations_8cpp.html#a5c2ee98781c23edfab9859047cdf3056',1,'JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS(AABox): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a8e9b26575c4126cf92f6a53aeb8cc179',1,'JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS(Triangle): TypeDeclarations.cpp']]], + ['jph_5fimplement_5fserializable_5fvirtual_86',['jph_implement_serializable_virtual',['../_constraint_8cpp.html#ab0532b53f75294bf0bdb08fd2a71f5ed',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(ConstraintSettings): Constraint.cpp'],['../_distance_constraint_8cpp.html#ac6925a5681a34ff551aeb3276e4f06db',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(DistanceConstraintSettings): DistanceConstraint.cpp'],['../_fixed_constraint_8cpp.html#a03a99c0021002c2836af157b408dbc3c',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(FixedConstraintSettings): FixedConstraint.cpp'],['../_hinge_constraint_8cpp.html#a5be6374a3fa4b1e23c2995a196a45b44',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(HingeConstraintSettings): HingeConstraint.cpp'],['../_path_constraint_8cpp.html#a2f3d2d80cb4696ddbaf87e12784c8b20',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PathConstraintSettings): PathConstraint.cpp'],['../_path_constraint_path_hermite_8cpp.html#aba02114ddc7cb36ea05d3f34d26cd84e',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PathConstraintPathHermite): PathConstraintPathHermite.cpp'],['../_pulley_constraint_8cpp.html#a246a1b1100c00c0cd1c52854fe804f68',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PulleyConstraintSettings): PulleyConstraint.cpp'],['../_rack_and_pinion_constraint_8cpp.html#a47a53e6c2d586af41ae6ae3acbea1b1a',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(RackAndPinionConstraintSettings): RackAndPinionConstraint.cpp'],['../_six_d_o_f_constraint_8cpp.html#a76c5c26fda576727a88c3fd50f75bea4',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(SixDOFConstraintSettings): SixDOFConstraint.cpp'],['../_cone_constraint_8cpp.html#a3d8d9451b39e9e1813644586363f1c03',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(ConeConstraintSettings): ConeConstraint.cpp'],['../_slider_constraint_8cpp.html#a6f65997071022bfad771bb529bb21d5f',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(SliderConstraintSettings): SliderConstraint.cpp'],['../_swing_twist_constraint_8cpp.html#a1513293e8c5fb785aa7142d42159c3f2',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(SwingTwistConstraintSettings): SwingTwistConstraint.cpp'],['../_motorcycle_controller_8cpp.html#aa283374558777814feb8215807c1f470',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(MotorcycleControllerSettings): MotorcycleController.cpp'],['../_tracked_vehicle_controller_8cpp.html#a2f27e133cbe090ced4a2382ffe497b11',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(TrackedVehicleControllerSettings): TrackedVehicleController.cpp'],['../_gear_constraint_8cpp.html#a121621e2af4057b49d6e5d846a63e6f5',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(GearConstraintSettings): GearConstraint.cpp'],['../_vehicle_constraint_8cpp.html#ad9be5dcb275ef54ffd9f94e0f8dcc17d',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(VehicleConstraintSettings): VehicleConstraint.cpp'],['../_wheel_8cpp.html#aae9ec94c4fcc6c80a0e8004da1e2d0f8',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(WheelSettings): Wheel.cpp'],['../_wheeled_vehicle_controller_8cpp.html#a0afad877c24e4be183c0adcff929113f',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(WheeledVehicleControllerSettings): WheeledVehicleController.cpp'],['../_wheeled_vehicle_controller_8cpp.html#ab7e91fcc1e60b7a9b1feba7b85213e50',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(WheelSettingsWV): WheeledVehicleController.cpp'],['../_point_constraint_8cpp.html#ab260ca2f1fec0fa18e1a43e15616b14a',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PointConstraintSettings): PointConstraint.cpp'],['../_serializable_object_8h.html#ad9a7708c6cfef4f2b257db2f06f17b6b',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL: SerializableObject.h'],['../_group_filter_table_8cpp.html#a6275781c1018ee14c6e4080444c2a415',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(GroupFilterTable): GroupFilterTable.cpp'],['../_physics_material_8cpp.html#a54dbb763e103e61c3a27f508a63aa6aa',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PhysicsMaterial): PhysicsMaterial.cpp'],['../_physics_material_simple_8cpp.html#acd50f300ea4f0614243ab5ebd721c0cd',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PhysicsMaterialSimple): PhysicsMaterialSimple.cpp'],['../_box_shape_8cpp.html#ad8b757db11e2517ae31d0751931502bf',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(BoxShapeSettings): BoxShape.cpp'],['../_capsule_shape_8cpp.html#a1089f509712863264e2a34c91c82c1f1',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(CapsuleShapeSettings): CapsuleShape.cpp'],['../_tracked_vehicle_controller_8cpp.html#a0749145a349e1a00cb3a991296540235',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(WheelSettingsTV): TrackedVehicleController.cpp'],['../_convex_hull_shape_8cpp.html#a1117da9e9762ac1d9953954311651b38',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(ConvexHullShapeSettings): ConvexHullShape.cpp'],['../_cylinder_shape_8cpp.html#aa2d67f34026bab44416c0d170da0864a',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(CylinderShapeSettings): CylinderShape.cpp'],['../_height_field_shape_8cpp.html#a248be81259944632d64acf6f25ecc449',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(HeightFieldShapeSettings): HeightFieldShape.cpp'],['../_mesh_shape_8cpp.html#a08ddf233bf0bd05ab5e4c1a3a3ffea7a',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(MeshShapeSettings): MeshShape.cpp'],['../_mutable_compound_shape_8cpp.html#ac8f982526acd7284d64a445a2ac95488',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(MutableCompoundShapeSettings): MutableCompoundShape.cpp'],['../_offset_center_of_mass_shape_8cpp.html#ad754d091ac34e946817ffb47e030bbf5',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(OffsetCenterOfMassShapeSettings): OffsetCenterOfMassShape.cpp'],['../_plane_shape_8cpp.html#aba8509e05ae5bdfd29eb71dd427f0038',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PlaneShapeSettings): PlaneShape.cpp'],['../_rotated_translated_shape_8cpp.html#ae5f217944c30117a567d080357de864c',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(RotatedTranslatedShapeSettings): RotatedTranslatedShape.cpp'],['../_scaled_shape_8cpp.html#a90a7b7c9fc2cf88380027f5fc3cfaf60',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(ScaledShapeSettings): ScaledShape.cpp'],['../_sphere_shape_8cpp.html#adc7645fc4173fbca96e3d74b6beca4e5',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(SphereShapeSettings): SphereShape.cpp'],['../_static_compound_shape_8cpp.html#ac5f468c0b9fc344b1bfc578a0e4d04a7',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(StaticCompoundShapeSettings): StaticCompoundShape.cpp'],['../_tapered_capsule_shape_8cpp.html#ae25b5dc9fc5b3a1ae324484315ac8c93',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(TaperedCapsuleShapeSettings): TaperedCapsuleShape.cpp'],['../_tapered_cylinder_shape_8cpp.html#a8fc8ae859ee63bf3d3502a32a9d2adee',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(TaperedCylinderShapeSettings): TaperedCylinderShape.cpp'],['../_triangle_shape_8cpp.html#ac6189fd63691be735ece12b15f32d0f5',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(TriangleShapeSettings): TriangleShape.cpp']]], + ['jph_5fimplement_5fserializable_5fvirtual_5fbase_87',['JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL_BASE',['../_serializable_object_8h.html#aa59eb84cc23028203085e2c3fce663d2',1,'SerializableObject.h']]], + ['jph_5fimplement_5fserialization_5ffunctions_88',['JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS',['../_serializable_object_8h.html#a9ff80255cadbb579a6be539451245df7',1,'SerializableObject.h']]], + ['jph_5fmake_5fhash_5fstruct_89',['JPH_MAKE_HASH_STRUCT',['../_hash_combine_8h.html#aedd0cd83dae14bf34f99338587ab043d',1,'HashCombine.h']]], + ['jph_5fmake_5fhashable_90',['jph_make_hashable',['../_hash_combine_8h.html#acb214eb23a4f6646330f74bc5f72c938',1,'JPH_MAKE_HASHABLE: HashCombine.h'],['../_d_vec3_8inl.html#ad63a526073dd7f77a10ad035f668caed',1,'JPH_MAKE_HASHABLE(JPH::DVec3, t.GetX(), t.GetY(), t.GetZ()) JPH_NAMESPACE_BEGIN DVec3: DVec3.inl'],['../_vec3_8inl.html#abc96ec3d90dc5dc02f759c39265376ee',1,'JPH_MAKE_HASHABLE(JPH::Vec3, t.GetX(), t.GetY(), t.GetZ()) JPH_NAMESPACE_BEGIN void Vec3: Vec3.inl']]], + ['jph_5fmsvc2019_5fsuppress_5fwarning_91',['JPH_MSVC2019_SUPPRESS_WARNING',['../_core_8h.html#abbf86de84b7cb1817f2be1e28b6b754f',1,'Core.h']]], + ['jph_5fmsvc_5fsuppress_5fwarning_92',['JPH_MSVC_SUPPRESS_WARNING',['../_core_8h.html#a7e50ac7352b8f5948a91b543756c84a8',1,'Core.h']]], + ['jph_5fnamespace_5fbegin_93',['JPH_NAMESPACE_BEGIN',['../_core_8h.html#ad14098b68b8c44ea6112601031268405',1,'Core.h']]], + ['jph_5fnamespace_5fend_94',['JPH_NAMESPACE_END',['../_core_8h.html#a73da8725998b00321a9db341202d650d',1,'Core.h']]], + ['jph_5fno_5fexport_95',['JPH_NO_EXPORT',['../_core_8h.html#ac2c075faa1ac3c9c5263a6729726c931',1,'Core.h']]], + ['jph_5fobject_5flayer_5fbits_96',['JPH_OBJECT_LAYER_BITS',['../_object_layer_8h.html#a744c7588b7b9c9d897854299a8682c66',1,'ObjectLayer.h']]], + ['jph_5foverride_5fnew_5fdelete_97',['JPH_OVERRIDE_NEW_DELETE',['../_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0',1,'Memory.h']]], + ['jph_5fplatform_5fwindows_98',['JPH_PLATFORM_WINDOWS',['../_core_8h.html#a06421dbef09f6a781ed52965f5f5eac8',1,'Core.h']]], + ['jph_5fplatform_5fwindows_5fuwp_99',['JPH_PLATFORM_WINDOWS_UWP',['../_core_8h.html#a32aff07e497254f9fbe9bbe669c94bcf',1,'Core.h']]], + ['jph_5fprofile_100',['JPH_PROFILE',['../_profiler_8h.html#aeea975f69380f934d24a9169e43bac9b',1,'Profiler.h']]], + ['jph_5fprofile_5fdump_101',['JPH_PROFILE_DUMP',['../_profiler_8h.html#a7fd763325a27ec4b58e54119dbf08acb',1,'Profiler.h']]], + ['jph_5fprofile_5fend_102',['JPH_PROFILE_END',['../_profiler_8h.html#ad4065f7f547ab9ee221c76b6dc313425',1,'Profiler.h']]], + ['jph_5fprofile_5ffunction_103',['JPH_PROFILE_FUNCTION',['../_profiler_8h.html#a9d22d20c7f03e2ec7bf058811b12cb4e',1,'Profiler.h']]], + ['jph_5fprofile_5fnextframe_104',['JPH_PROFILE_NEXTFRAME',['../_profiler_8h.html#ac158343dbc5927ea288d3ef011feb288',1,'Profiler.h']]], + ['jph_5fprofile_5fstart_105',['JPH_PROFILE_START',['../_profiler_8h.html#a565915a1416629f5e8fd84ab2cbe7a14',1,'Profiler.h']]], + ['jph_5fprofile_5ftag_106',['JPH_PROFILE_TAG',['../_profiler_8h.html#ad70c118d5a68a0e7996f9e9e4bb04af8',1,'Profiler.h']]], + ['jph_5fprofile_5ftag2_107',['JPH_PROFILE_TAG2',['../_profiler_8h.html#a25c67544eb8ec8c174946341070a4ec0',1,'Profiler.h']]], + ['jph_5fprofile_5fthread_5fend_108',['JPH_PROFILE_THREAD_END',['../_profiler_8h.html#acdb6d6bc05aad36435219ee5f631efc8',1,'Profiler.h']]], + ['jph_5fprofile_5fthread_5fstart_109',['JPH_PROFILE_THREAD_START',['../_profiler_8h.html#a5455272d603b90d629b74c0d64338173',1,'Profiler.h']]], + ['jph_5frename_5fclass_110',['JPH_RENAME_CLASS',['../_r_t_t_i_8h.html#aec1da7ef8dc2aa9668cd7cb65e543941',1,'RTTI.h']]], + ['jph_5frtti_111',['JPH_RTTI',['../_r_t_t_i_8h.html#a96bfac00708a5a1649b5581b3d082d12',1,'RTTI.h']]], + ['jph_5frvector_5falignment_112',['JPH_RVECTOR_ALIGNMENT',['../_real_8h.html#ac6a49178acb5c5ecdbab2424aca0e474',1,'Real.h']]], + ['jph_5fscope_5fexit_113',['JPH_SCOPE_EXIT',['../_scope_exit_8h.html#a839a77790fe3ad876d339661b0dedc82',1,'ScopeExit.h']]], + ['jph_5fscope_5fexit_5ftag_114',['JPH_SCOPE_EXIT_TAG',['../_scope_exit_8h.html#a34f8b40943318ef531e67cda41e687b9',1,'ScopeExit.h']]], + ['jph_5fscope_5fexit_5ftag2_115',['JPH_SCOPE_EXIT_TAG2',['../_scope_exit_8h.html#af3b6234fdd42f0f27a584738fb79b60a',1,'ScopeExit.h']]], + ['jph_5fstack_5falloc_116',['JPH_STACK_ALLOC',['../_core_8h.html#a438e7b853f86742bcbdf0faeaa2094a2',1,'Core.h']]], + ['jph_5fsuppress_5fwarnings_117',['JPH_SUPPRESS_WARNINGS',['../_core_8h.html#a0e5e358b4576bd9e1692d2ce14088702',1,'Core.h']]], + ['jph_5fsuppress_5fwarnings_5fstd_5fbegin_118',['JPH_SUPPRESS_WARNINGS_STD_BEGIN',['../_core_8h.html#a4ac413403e9ca00d24a3e2f244cf5456',1,'Core.h']]], + ['jph_5fsuppress_5fwarnings_5fstd_5fend_119',['JPH_SUPPRESS_WARNINGS_STD_END',['../_core_8h.html#a5f6b64537a538d9204b253532b799467',1,'Core.h']]], + ['jph_5funused_120',['JPH_UNUSED',['../_core_8h.html#a719a73b9e445920bf5969f05d01ce69c',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f1_121',['JPH_VERSION_FEATURE_BIT_1',['../_core_8h.html#a7fdb6c3ad10d37a8e64b98aaa2bea89b',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f10_122',['JPH_VERSION_FEATURE_BIT_10',['../_core_8h.html#a69c4f6512bd5a3cd5625e1841162198d',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f11_123',['JPH_VERSION_FEATURE_BIT_11',['../_core_8h.html#ad0fafdd184b95c8932542acd32ae9d90',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f2_124',['JPH_VERSION_FEATURE_BIT_2',['../_core_8h.html#a5a41e47408cd3e5bc9164210ef9b9fd6',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f3_125',['JPH_VERSION_FEATURE_BIT_3',['../_core_8h.html#a4c2959424fe3c6d654334c4e9826c56e',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f4_126',['JPH_VERSION_FEATURE_BIT_4',['../_core_8h.html#ab3724ebc5d00bb7dbe874d35b25b07e8',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f5_127',['JPH_VERSION_FEATURE_BIT_5',['../_core_8h.html#a3a29a20b88a94c0a2618546d1c3e361e',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f6_128',['JPH_VERSION_FEATURE_BIT_6',['../_core_8h.html#a628e5cc2f7334d21fd9c519989735933',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f7_129',['JPH_VERSION_FEATURE_BIT_7',['../_core_8h.html#adb1f1905de0e1144e41db647cc72c6e7',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f8_130',['JPH_VERSION_FEATURE_BIT_8',['../_core_8h.html#ac10d408390f93609210bc469945a653a',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f9_131',['JPH_VERSION_FEATURE_BIT_9',['../_core_8h.html#a34ad201212816f7bbc8441654be0f7b1',1,'Core.h']]], + ['jph_5fversion_5ffeatures_132',['JPH_VERSION_FEATURES',['../_core_8h.html#abac97305fdb6c1af52b2d54b68a8ecb2',1,'Core.h']]], + ['jph_5fversion_5fid_133',['JPH_VERSION_ID',['../_core_8h.html#a551c9a48a48d58a1c50f1c86a9d8f768',1,'Core.h']]], + ['jph_5fversion_5fmajor_134',['JPH_VERSION_MAJOR',['../_core_8h.html#adaf29d8692253d347af230caf6a23d62',1,'Core.h']]], + ['jph_5fversion_5fminor_135',['JPH_VERSION_MINOR',['../_core_8h.html#a58a399239375f51b002e0c9efd7a20e8',1,'Core.h']]], + ['jph_5fversion_5fpatch_136',['JPH_VERSION_PATCH',['../_core_8h.html#ad43713eef248686b3d0eab591804c769',1,'Core.h']]] +]; diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 000000000..252d66960 --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['keyframe_0',['Keyframe',['../class_skeletal_animation_1_1_keyframe.html',1,'SkeletalAnimation']]], + ['keyframevector_1',['KeyframeVector',['../class_skeletal_animation.html#ae9603ef068dbb1fde3b1dde64fe232cc',1,'SkeletalAnimation']]], + ['keyvalue_2',['KeyValue',['../class_lock_free_hash_map_1_1_key_value.html',1,'LockFreeHashMap']]], + ['kinematic_3',['Kinematic',['../_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e',1,'MotionType.h']]] +]; diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 000000000..788650549 --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,52 @@ +var searchData= +[ + ['largeislandsplitter_0',['LargeIslandSplitter',['../class_large_island_splitter.html',1,'']]], + ['largeislandsplitter_2ecpp_1',['LargeIslandSplitter.cpp',['../_large_island_splitter_8cpp.html',1,'']]], + ['largeislandsplitter_2eh_2',['LargeIslandSplitter.h',['../_large_island_splitter_8h.html',1,'']]], + ['latest_3',['Changes between v5.1.0 and latest',['../md__docs_2_a_p_i_changes.html#autotoc_md18',1,'']]], + ['left_4',['Left',['../_vehicle_track_8h.html#a8008ce273c0da3c40bc613d9495818d2a945d5e233cf7d6240f6b783b36a374ff',1,'VehicleTrack.h']]], + ['length_5',['length',['../class_vector.html#a83748e43a3d85e50140c24f0aa093cb9',1,'Vector::Length()'],['../class_d_vec3.html#a7d1feb75db248b954ef774ee33e46014',1,'DVec3::Length()'],['../class_quat.html#ab93ff288ad62172d343e11ce4fbf07d0',1,'Quat::Length()'],['../class_vec3.html#a38a9efffc3f9413f3dd702abc73eb9a2',1,'Vec3::Length()'],['../class_vec4.html#a4eb731c3e56eb2eab155f38a1c888834',1,'Vec4::Length()']]], + ['lengthsq_6',['lengthsq',['../class_d_vec3.html#a95fe01b11cc216e8d718d1122392a018',1,'DVec3::LengthSq()'],['../class_quat.html#a60f30c650e027a892e699c156c7eca67',1,'Quat::LengthSq()'],['../class_vec3.html#aba501a6a474028084799f871c9083dc1',1,'Vec3::LengthSq()'],['../class_vec4.html#acff7d4f95f6dcce1d825c0bfb3798c9a',1,'Vec4::LengthSq()'],['../class_vector.html#afa80dcde530acc7b7911526d921b60e8',1,'Vector::LengthSq()']]], + ['lerp_7',['LERP',['../class_quat.html#a54dc8061046dd6ba3fb3a1965cf7319c',1,'Quat']]], + ['lfhmallocator_8',['LFHMAllocator',['../class_l_f_h_m_allocator.html',1,'']]], + ['lfhmallocatorcontext_9',['lfhmallocatorcontext',['../class_l_f_h_m_allocator_context.html',1,'LFHMAllocatorContext'],['../class_l_f_h_m_allocator_context.html#a4937e72fe7c08c45687b9deb3c3dba32',1,'LFHMAllocatorContext::LFHMAllocatorContext()'],['../class_contact_constraint_manager_1_1_contact_allocator.html#a4937e72fe7c08c45687b9deb3c3dba32',1,'ContactConstraintManager::ContactAllocator::LFHMAllocatorContext()']]], + ['limits_10',['Conventions and Limits',['../index.html#conventions-and-limits',1,'']]], + ['linearcast_11',['LinearCast',['../_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3aa38f63d197afcc4a4965d98f9401c36e0',1,'MotionQuality.h']]], + ['linearcurve_12',['LinearCurve',['../class_linear_curve.html',1,'']]], + ['linearcurve_2ecpp_13',['LinearCurve.cpp',['../_linear_curve_8cpp.html',1,'']]], + ['linearcurve_2eh_14',['LinearCurve.h',['../_linear_curve_8h.html',1,'']]], + ['lineblob_15',['LineBlob',['../struct_debug_renderer_recorder_1_1_line_blob.html',1,'DebugRendererRecorder']]], + ['link_20error_3a_20file_20format_20not_20recognized_16',['Link Error: File Format Not Recognized',['../md__build_2_r_e_a_d_m_e.html#autotoc_md77',1,'']]], + ['link_20error_3a_20unresolved_20external_20symbol_17',['Link Error: Unresolved External Symbol',['../md__build_2_r_e_a_d_m_e.html#autotoc_md78',1,'']]], + ['linkbodies_18',['LinkBodies',['../class_island_builder.html#ad3c6e43cef523989bab88ed8cc11575f',1,'IslandBuilder']]], + ['linkconstraint_19',['LinkConstraint',['../class_island_builder.html#a323b5204fe8c9fdb7a15791469780259',1,'IslandBuilder']]], + ['linkcontact_20',['LinkContact',['../class_island_builder.html#a32b2a16b2eca88110ad2604e2b129132',1,'IslandBuilder']]], + ['listeners_21',['listeners',['../index.html#soft-body-contact-listener',1,'Soft Body Contact Listeners'],['../index.html#step-listeners-update',1,'Step Listeners']]], + ['literals_22',['literals',['../namespaceliterals.html',1,'']]], + ['localtobodycom_23',['LocalToBodyCOM',['../_constraint_8h.html#a5951578637c20f8aad819c13ad09b1bea337c8a797ceff07104efbfcdea102759',1,'Constraint.h']]], + ['lock_24',['lock',['../class_mutex.html#ad91be808bf0a60a16f10b897ec246d3a',1,'Mutex::lock()'],['../class_shared_mutex.html#a9fa5be0817cac255fc1a1b57046468ec',1,'SharedMutex::lock()']]], + ['lock_5fshared_25',['lock_shared',['../class_shared_mutex.html#a39d069ffca3b0e8e42a72c756d4dbae1',1,'SharedMutex']]], + ['lockall_26',['LockAll',['../class_mutex_array.html#a6b7192bee3d37aa5fcc12074081a66a6',1,'MutexArray']]], + ['lockallbodies_27',['LockAllBodies',['../class_body_manager.html#a425eaf59b68a237d6821267ed1474f35',1,'BodyManager']]], + ['lockallconstraints_28',['LockAllConstraints',['../class_constraint_manager.html#ae8d4baabaedc6f26b774d40b71b6bf85',1,'ConstraintManager']]], + ['lockalltranslations_29',['LockAllTranslations',['../class_skeleton_mapper.html#abbaa0b7c3a89c8332342c2cc6aa74262',1,'SkeletonMapper']]], + ['lockangular_30',['LockAngular',['../class_motion_properties.html#a6bfec52a7ff3345d6fefd3f84faf6be7',1,'MotionProperties']]], + ['locked_31',['Locked',['../class_skeleton_mapper_1_1_locked.html',1,'SkeletonMapper']]], + ['lockedvector_32',['LockedVector',['../class_skeleton_mapper.html#a82c3843686fa3822fd9a5747be2a4b93',1,'SkeletonMapper']]], + ['lockfreehashmap_33',['lockfreehashmap',['../class_lock_free_hash_map.html#a99cc8576eb24e276e64a720f51516d62',1,'LockFreeHashMap::LockFreeHashMap()'],['../class_lock_free_hash_map.html',1,'LockFreeHashMap< Key, Value >'],['../class_lock_free_hash_map_1_1_key_value.html#a5652d2eccd527298f2252a27fbd3b489',1,'LockFreeHashMap::KeyValue::LockFreeHashMap']]], + ['lockfreehashmap_2eh_34',['LockFreeHashMap.h',['../_lock_free_hash_map_8h.html',1,'']]], + ['lockfreehashmap_2einl_35',['LockFreeHashMap.inl',['../_lock_free_hash_map_8inl.html',1,'']]], + ['lockfreehashmap_3c_20bodypair_2c_20cachedbodypair_20_3e_36',['LockFreeHashMap< BodyPair, CachedBodyPair >',['../class_lock_free_hash_map.html',1,'']]], + ['lockfreehashmap_3c_20subshapeidpair_2c_20cachedmanifold_20_3e_37',['LockFreeHashMap< SubShapeIDPair, CachedManifold >',['../class_lock_free_hash_map.html',1,'']]], + ['lockmodifications_38',['lockmodifications',['../class_broad_phase.html#a09a84eceb64acb6636984a06bbb7a73a',1,'BroadPhase::LockModifications()'],['../class_broad_phase_quad_tree.html#a7d387d77d1d6e8f388dde9470458da81',1,'BroadPhaseQuadTree::LockModifications()']]], + ['lockread_39',['lockread',['../class_body_manager.html#ab9fe4438ea3c96fa4b2cbc724f425024',1,'BodyManager::LockRead()'],['../class_body_lock_interface.html#a8a771b3c89803fee5e6d1c90f2f96a07',1,'BodyLockInterface::LockRead(const BodyID &inBodyID) const =0'],['../class_body_lock_interface.html#ae146eecd6e18c0b9b5e19f72a2696572',1,'BodyLockInterface::LockRead(MutexMask inMutexMask) const =0'],['../class_body_lock_interface_no_lock.html#a53465d00162795f90dd2fba3910723bd',1,'BodyLockInterfaceNoLock::LockRead(const BodyID &inBodyID) const override'],['../class_body_lock_interface_no_lock.html#ae134b2fa9fc485ed7b6db8283d6b2088',1,'BodyLockInterfaceNoLock::LockRead(MutexMask inMutexMask) const override'],['../class_body_lock_interface_locking.html#a5324dd788c8358e092527e3c68d9a682',1,'BodyLockInterfaceLocking::LockRead(const BodyID &inBodyID) const override'],['../class_body_lock_interface_locking.html#adedab6f41d8e601a0780462678235b19',1,'BodyLockInterfaceLocking::LockRead(MutexMask inMutexMask) const override']]], + ['locktranslation_40',['LockTranslation',['../class_motion_properties.html#ab7168117a82829c137798ff843900104',1,'MotionProperties']]], + ['locktranslations_41',['LockTranslations',['../class_skeleton_mapper.html#a2741193b04cb2cbe14996962fbf71b97',1,'SkeletonMapper']]], + ['lockwrite_42',['lockwrite',['../class_body_manager.html#a21232e25b634203c299d6192180b6fe6',1,'BodyManager::LockWrite()'],['../class_body_lock_interface.html#a9d17ddb805293e6495f3569a4ed32969',1,'BodyLockInterface::LockWrite(const BodyID &inBodyID) const =0'],['../class_body_lock_interface.html#a8ec7191e60755953798e570d01c0b30b',1,'BodyLockInterface::LockWrite(MutexMask inMutexMask) const =0'],['../class_body_lock_interface_no_lock.html#a785146858bb1499ca0af9a45aeaeef2f',1,'BodyLockInterfaceNoLock::LockWrite(const BodyID &inBodyID) const override'],['../class_body_lock_interface_no_lock.html#a235037dc08d8880dab6ab247f4066b8a',1,'BodyLockInterfaceNoLock::LockWrite(MutexMask inMutexMask) const override'],['../class_body_lock_interface_locking.html#a109d30a7639dde11979c5e1ccb62707c',1,'BodyLockInterfaceLocking::LockWrite(const BodyID &inBodyID) const override'],['../class_body_lock_interface_locking.html#a518e5c21911dbfd54f7f2c6390dc7d35',1,'BodyLockInterfaceLocking::LockWrite(MutexMask inMutexMask) const override']]], + ['lod_43',['LOD',['../class_debug_renderer_1_1_l_o_d.html',1,'DebugRenderer']]], + ['logging_20asserting_44',['Logging & Asserting',['../md__build_2_r_e_a_d_m_e.html#autotoc_md72',1,'']]], + ['logicalshiftleft_45',['logicalshiftleft',['../class_u_vec4.html#a159c5fb6e8cb1c49a87a48d3977b50b6',1,'UVec4::LogicalShiftLeft()'],['../class_u_vec8.html#a5f5de5fcc8c6ac9e44b2bc79f82df48c',1,'UVec8::LogicalShiftLeft()'],['../class_u_vec4.html#a2ef3289c1b66cfad1da798a5d3cd412b',1,'UVec4::LogicalShiftLeft()'],['../class_u_vec8.html#af26e70e8e238b9765bc5ab12b817e5d1',1,'UVec8::LogicalShiftLeft() const']]], + ['logicalshiftright_46',['logicalshiftright',['../class_u_vec8.html#a6ec179075eeb442c9fde60f6a997c414',1,'UVec8::LogicalShiftRight()'],['../class_u_vec4.html#a529d377fac0983a7c590d7df16db3f36',1,'UVec4::LogicalShiftRight()'],['../class_u_vec8.html#a4d13b9d84a398e856caf4f072483bf0d',1,'UVec8::LogicalShiftRight()'],['../class_u_vec4.html#a42597d44e823feee9c343624b72ece79',1,'UVec4::LogicalShiftRight()']]], + ['lowervec4_47',['lowervec4',['../class_vec8.html#ac6b079a5fb892087e7f29eb49d8de0ed',1,'Vec8::LowerVec4()'],['../class_u_vec8.html#ac1befe2c88fff8ac646f1c34bedbc9d3',1,'UVec8::LowerVec4()']]], + ['lra_48',['lra',['../class_soft_body_motion_properties.html#a5e65775ab2b941a5ea195e714b07eb4e',1,'SoftBodyMotionProperties::LRA'],['../class_soft_body_shared_settings_1_1_l_r_a.html#a4aab07b503827f2a165ec62c83ab531b',1,'SoftBodySharedSettings::LRA::LRA()=default'],['../class_soft_body_shared_settings_1_1_l_r_a.html#af3f3a0e0a0948ff3dd1a4ec850019dd2',1,'SoftBodySharedSettings::LRA::LRA(uint32 inVertex1, uint32 inVertex2, float inMaxDistance)'],['../class_soft_body_shared_settings_1_1_l_r_a.html',1,'SoftBodySharedSettings::LRA']]] +]; diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 000000000..2ed8e0c33 --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,831 @@ +var searchData= +[ + ['mabovesurface_0',['mAboveSurface',['../class_polyhedron_submerged_volume_calculator_1_1_point.html#aec79909846ca6d2021c468a724fa872a',1,'PolyhedronSubmergedVolumeCalculator::Point']]], + ['mactivebodyreadidx_1',['mActiveBodyReadIdx',['../struct_physics_update_context_1_1_step.html#a5f32b22178d4cc044a96d59d41250916',1,'PhysicsUpdateContext::Step']]], + ['mactivebodytoccdbody_2',['mActiveBodyToCCDBody',['../struct_physics_update_context_1_1_step.html#aef1c5722bfe92d852c8525347e175f3d',1,'PhysicsUpdateContext::Step']]], + ['mactiveconstraints_3',['mActiveConstraints',['../class_physics_update_context.html#a06f3d5772169584520a19f7d85820206',1,'PhysicsUpdateContext']]], + ['mactiveedgecosthresholdangle_4',['mactiveedgecosthresholdangle',['../class_height_field_shape_settings.html#ac600befce41089e57309054090c889c8',1,'HeightFieldShapeSettings::mActiveEdgeCosThresholdAngle'],['../class_mesh_shape_settings.html#ae9cfeaf937adb172ad5fff81997beede',1,'MeshShapeSettings::mActiveEdgeCosThresholdAngle']]], + ['mactiveedgemode_5',['mActiveEdgeMode',['../class_collide_settings_base.html#a15b85d50667172c651f917096a99a54e',1,'CollideSettingsBase']]], + ['mactiveedgemovementdirection_6',['mActiveEdgeMovementDirection',['../class_collide_settings_base.html#aede854538605c943e5076753ac2ff9e2',1,'CollideSettingsBase']]], + ['mactivefindcollisionjobs_7',['mActiveFindCollisionJobs',['../struct_physics_update_context_1_1_step.html#aa3ef4344525797671470875550d736fc',1,'PhysicsUpdateContext::Step']]], + ['madditionalconstraints_8',['mAdditionalConstraints',['../class_ragdoll_settings.html#aa5b99482d05587d747351f962780f91f',1,'RagdollSettings']]], + ['major_20new_20functionality_9',['Major new functionality',['../md__docs_2_release_notes.html#autotoc_md62',1,'']]], + ['make_5fface_10',['MAKE_FACE',['../_convex_shape_8cpp.html#a96549debc24a06a6c11ca18a1e11d35f',1,'ConvexShape.cpp']]], + ['makefixedaxis_11',['MakeFixedAxis',['../class_six_d_o_f_constraint_settings.html#ad7888719516a85b67a8fc957c9158144',1,'SixDOFConstraintSettings']]], + ['makefreeaxis_12',['MakeFreeAxis',['../class_six_d_o_f_constraint_settings.html#ad5cff2e8b147d7697aa317df476dcddf',1,'SixDOFConstraintSettings']]], + ['makenonzeroscale_13',['MakeNonZeroScale',['../namespace_scale_helpers.html#a7445e71cd125deb818c71e867ea9275e',1,'ScaleHelpers']]], + ['makescalevalid_14',['makescalevalid',['../class_sphere_shape.html#a2c0027a034604bb763ef0b8092f13eda',1,'SphereShape::MakeScaleValid()'],['../class_triangle_shape.html#a425faa91c050f75c9e1e4bfb1f0e6ca6',1,'TriangleShape::MakeScaleValid()'],['../class_capsule_shape.html#a27e36ca5e59ea1a3846a4160404b600a',1,'CapsuleShape::MakeScaleValid()'],['../class_compound_shape.html#a7c3c686e436b80d627b038ccac943b48',1,'CompoundShape::MakeScaleValid()'],['../class_cylinder_shape.html#ac0a0648f2d6fe2f16f5fc19cd028c7b4',1,'CylinderShape::MakeScaleValid()'],['../class_decorated_shape.html#ab8608332a025b38ae101d50f31365187',1,'DecoratedShape::MakeScaleValid()'],['../class_rotated_translated_shape.html#a01f12883df324277825192ce1a1e121e',1,'RotatedTranslatedShape::MakeScaleValid()'],['../class_tapered_cylinder_shape.html#ab6d103843721053ea6e010723c32460b',1,'TaperedCylinderShape::MakeScaleValid()'],['../class_scaled_shape.html#abc64b66c45b52bd4248ffee1823c3c2d',1,'ScaledShape::MakeScaleValid()'],['../class_shape.html#a92b9228a95f194e9e1e2962bed861e22',1,'Shape::MakeScaleValid()'],['../class_tapered_capsule_shape.html#af38c3d6f322fc99ab1cc4b2199b44cb3',1,'TaperedCapsuleShape::MakeScaleValid()']]], + ['makesubshapeidrelativetoshape_15',['MakeSubShapeIDRelativeToShape',['../class_transformed_shape.html#a1ac86317085e88189d1b8a2635dcec44',1,'TransformedShape']]], + ['makeuniformscale_16',['MakeUniformScale',['../namespace_scale_helpers.html#a1eeb857fb92f13a5ddd9dac662146b96',1,'ScaleHelpers']]], + ['makeuniformscalexz_17',['MakeUniformScaleXZ',['../namespace_scale_helpers.html#a18833eca6231a55b302eaa70c81b5162',1,'ScaleHelpers']]], + ['mallowdynamicorkinematic_18',['mAllowDynamicOrKinematic',['../class_body_creation_settings.html#afe686c8d207fb99499a89e19d1780158',1,'BodyCreationSettings']]], + ['malloweddofs_19',['mAllowedDOFs',['../class_body_creation_settings.html#a871979dfec392313a4fe00760ff9ae07',1,'BodyCreationSettings']]], + ['mallowsleeping_20',['mallowsleeping',['../class_body_creation_settings.html#a23d76509d285d785fbc84c7573343be8',1,'BodyCreationSettings::mAllowSleeping'],['../struct_physics_settings.html#a5386b79ed560a23cdbe06482b5a58de6',1,'PhysicsSettings::mAllowSleeping'],['../class_soft_body_creation_settings.html#a99411944efd35848fb25bbd628b459f1',1,'SoftBodyCreationSettings::mAllowSleeping']]], + ['management_21',['Memory Management',['../index.html#memory-management',1,'']]], + ['mangle_22',['mAngle',['../class_wheel.html#ad21c087228b643377f809e61c14fdf1d',1,'Wheel']]], + ['mangulardamping_23',['mangulardamping',['../class_vehicle_track_settings.html#affda379a129ca982243cdb36017d690e',1,'VehicleTrackSettings::mAngularDamping'],['../class_body_creation_settings.html#ac900bf31bcafa1dd0d5dfe42969687dd',1,'BodyCreationSettings::mAngularDamping'],['../class_vehicle_engine_settings.html#a721c1a1f97766d41844a337ca4ba1e0b',1,'VehicleEngineSettings::mAngularDamping'],['../class_wheel_settings_w_v.html#a5ee74ed3ed81596c5401879f3acb420a',1,'WheelSettingsWV::mAngularDamping']]], + ['mangularvelocity_24',['mangularvelocity',['../class_body_creation_settings.html#a390f9572645214782004c8296f0e90cf',1,'BodyCreationSettings::mAngularVelocity'],['../class_vehicle_track.html#a5f6ed5aff504c081d9ad67fc3dc8edec',1,'VehicleTrack::mAngularVelocity'],['../class_wheel.html#a240115cc48bddcf81b10c426c3802fe7',1,'Wheel::mAngularVelocity']]], + ['mangularvelocity1_25',['mAngularVelocity1',['../struct_collision_estimation_result.html#a2dda95e1b040950e758d2a15b3cc0aef',1,'CollisionEstimationResult']]], + ['mangularvelocity2_26',['mAngularVelocity2',['../struct_collision_estimation_result.html#af8db3dcccbc454c945d0bc6e6b21dec6',1,'CollisionEstimationResult']]], + ['manifoldbetweentwofaces_27',['manifoldbetweentwofaces',['../_manifold_between_two_faces_8cpp.html#a61f6c9a0571c93ab42d6c33342b1d4f9',1,'ManifoldBetweenTwoFaces(Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inPenetrationAxis, float inMaxContactDistanceSq, const ConvexShape::SupportingFace &inShape1Face, const ConvexShape::SupportingFace &inShape2Face, ContactPoints &outContactPoints1, ContactPoints &outContactPoints2 JPH_IF_DEBUG_RENDERER(, RVec3Arg inCenterOfMass)): ManifoldBetweenTwoFaces.cpp'],['../_manifold_between_two_faces_8h.html#a3507ddf0602b2e30aba85a652b7d1105',1,'ManifoldBetweenTwoFaces(Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inPenetrationAxis, float inMaxContactDistanceSq, const ConvexShape::SupportingFace &inShape1Face, const ConvexShape::SupportingFace &inShape2Face, ContactPoints &outContactPoints1, ContactPoints &outContactPoints2, RVec3Arg inCenterOfMass): ManifoldBetweenTwoFaces.h']]], + ['manifoldbetweentwofaces_2ecpp_28',['ManifoldBetweenTwoFaces.cpp',['../_manifold_between_two_faces_8cpp.html',1,'']]], + ['manifoldbetweentwofaces_2eh_29',['ManifoldBetweenTwoFaces.h',['../_manifold_between_two_faces_8h.html',1,'']]], + ['manifoldcachefull_30',['ManifoldCacheFull',['../_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1af70fe751732841aff62ebf25b54b16c0',1,'EPhysicsUpdateError.h']]], + ['mantirollbarimpulse_31',['mAntiRollBarImpulse',['../class_wheel.html#a201340ce33a37ff9eb3cc26cf8ae4cc8',1,'Wheel']]], + ['mantirollbars_32',['mAntiRollBars',['../class_vehicle_constraint_settings.html#a6d0f45021a83347450f96d6d597dd922',1,'VehicleConstraintSettings']]], + ['manual_33',['Manual',['../_vehicle_transmission_8h.html#ad3e125d6d786c09fddfa10be390f851dae1ba155a9f2e8c3be94020eef32a0301',1,'VehicleTransmission.h']]], + ['map_34',['Map',['../class_skeleton_mapper.html#aa5ea82586d40fbdc0d2930e51b008c9c',1,'SkeletonMapper']]], + ['mapobjecttobroadphaselayer_35',['MapObjectToBroadPhaseLayer',['../class_broad_phase_layer_interface_table.html#a1c93b211dfb3e39b7c4cfed49ce961ad',1,'BroadPhaseLayerInterfaceTable']]], + ['mapping_36',['mapping',['../class_skeleton_mapper_1_1_mapping.html',1,'SkeletonMapper::Mapping'],['../class_skeleton_mapper_1_1_mapping.html#ad74f176d784c420dc3816c47f100a91f',1,'SkeletonMapper::Mapping::Mapping(int inJointIdx1, int inJointIdx2, Mat44Arg inJoint1To2)'],['../class_skeleton_mapper_1_1_mapping.html#a4fa976d827f778a48ce2ab5f24b9c9b5',1,'SkeletonMapper::Mapping::Mapping()=default']]], + ['mappingvector_37',['MappingVector',['../class_skeleton_mapper.html#a6f36fb9bc8686b8ec810c5435c03f419',1,'SkeletonMapper']]], + ['mappliedimpulse_38',['mAppliedImpulse',['../class_motorcycle_controller.html#ad9e7a708da11a8da6e91bbb4c56b08d7',1,'MotorcycleController']]], + ['mapplygravity_39',['mApplyGravity',['../struct_physics_update_context_1_1_step.html#a6c7ca3641f8ae1ab1f8b808b6cf25356',1,'PhysicsUpdateContext::Step']]], + ['mapplygravityreadidx_40',['mApplyGravityReadIdx',['../struct_physics_update_context_1_1_step.html#ad8016f86c45bb3092259e91ff0f6c426',1,'PhysicsUpdateContext::Step']]], + ['mapplygyroscopicforce_41',['mApplyGyroscopicForce',['../class_body_creation_settings.html#a4bfa019a5f9d834392c7c8243c885396',1,'BodyCreationSettings']]], + ['mapreverse_42',['MapReverse',['../class_skeleton_mapper.html#a64ebec9cb8e8f0f7a4ec68fa0c30bfd6',1,'SkeletonMapper']]], + ['maptype_43',['MapType',['../class_lock_free_hash_map.html#a638496ae9d7758bfb0f12b6e477647dc',1,'LockFreeHashMap']]], + ['markbatchprocessed_44',['markbatchprocessed',['../class_large_island_splitter_1_1_splits.html#a44bf9c63b7a2e97e385d4fb5160735ae',1,'LargeIslandSplitter::Splits::MarkBatchProcessed()'],['../class_large_island_splitter.html#a2934ec09e8492356eab6360ba6091fb4',1,'LargeIslandSplitter::MarkBatchProcessed()']]], + ['mass_45',['Center of Mass',['../index.html#center-of-mass',1,'']]], + ['massandinertiaprovided_46',['MassAndInertiaProvided',['../_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a851f1413e004fb968effbb7c8e8d5965',1,'BodyCreationSettings.h']]], + ['massproperties_47',['MassProperties',['../class_mass_properties.html',1,'']]], + ['massproperties_2ecpp_48',['MassProperties.cpp',['../_mass_properties_8cpp.html',1,'']]], + ['massproperties_2eh_49',['MassProperties.h',['../_mass_properties_8h.html',1,'']]], + ['mat22_50',['mat22',['../class_dual_axis_constraint_part.html#a435800bba261861cda7de7879cfb7259',1,'DualAxisConstraintPart::Mat22'],['../class_hinge_rotation_constraint_part.html#ab1f18a0c76566111d337d6d175b8bbc6',1,'HingeRotationConstraintPart::Mat22']]], + ['mat44_51',['mat44',['../class_mat44.html',1,'Mat44'],['../class_mat44.html#ad95a3b3f36bf3216574383e3dfb927ed',1,'Mat44::Mat44()=default'],['../class_mat44.html#a9e544288786bacea509de796f7a2a224',1,'Mat44::Mat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec4Arg inC4)'],['../class_mat44.html#a5448dda46fe8a36d0ae9b6168607e3cb',1,'Mat44::Mat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec3Arg inC4)'],['../class_mat44.html#ab804bcb6a2583f7bf966d3d5a3a24161',1,'Mat44::Mat44(const Mat44 &inM2)=default'],['../class_mat44.html#af8719f405d2de3e6310ba091f79aa518',1,'Mat44::Mat44(Type inC1, Type inC2, Type inC3, Type inC4)']]], + ['mat44_2eh_52',['Mat44.h',['../_mat44_8h.html',1,'']]], + ['mat44_2einl_53',['Mat44.inl',['../_mat44_8inl.html',1,'']]], + ['mat44arg_54',['Mat44Arg',['../_math_types_8h.html#af10dd31c5ad4acb62aba8025732597e6',1,'MathTypes.h']]], + ['mat44vector_55',['Mat44Vector',['../class_skeleton_pose.html#a8539fe080abaa69f63d4a071404c320d',1,'SkeletonPose']]], + ['materialcolor_56',['MaterialColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2ae4a9ebce3bde9cd56c2cccdf58d392a0',1,'BodyManager']]], + ['materialtoidmap_57',['materialtoidmap',['../class_body_creation_settings.html#a2cb4b24152969669d6f2193e2f9f7b76',1,'BodyCreationSettings::MaterialToIDMap'],['../class_shape.html#a78cea5d82e89748412a5dca2f1352de1',1,'Shape::MaterialToIDMap'],['../class_soft_body_creation_settings.html#a89fffeafeb3327d73110e59988f864f8',1,'SoftBodyCreationSettings::MaterialToIDMap'],['../class_soft_body_shared_settings.html#a2c32a713f6e2ebe1ab07bb45c9c9ae49',1,'SoftBodySharedSettings::MaterialToIDMap']]], + ['math_2eh_58',['Math.h',['../_math_8h.html',1,'']]], + ['mathtypes_2eh_59',['MathTypes.h',['../_math_types_8h.html',1,'']]], + ['matrix_60',['matrix',['../class_matrix.html',1,'Matrix< Rows, Cols >'],['../class_matrix.html#a90d5c7ad748e454acb4391cd1686ed36',1,'Matrix::Matrix(const Matrix &inM2)'],['../class_matrix.html#a70866296048d7f18cf1cf92d480f5023',1,'Matrix::Matrix()=default']]], + ['matrix_2eh_61',['Matrix.h',['../_matrix_8h.html',1,'']]], + ['matrix_3c_202_2c_202_20_3e_62',['Matrix< 2, 2 >',['../class_matrix.html',1,'']]], + ['mattributes_63',['mAttributes',['../class_r_t_t_i.html#a20a73c736f31ff30735518525af8b8f8',1,'RTTI']]], + ['mautodetectpoint_64',['mautodetectpoint',['../class_slider_constraint_settings.html#abfe850cd8587a0738fbf6d7ed60c5e44',1,'SliderConstraintSettings::mAutoDetectPoint'],['../class_fixed_constraint_settings.html#a0e99692883e84c77f1f30de2b266ef6f',1,'FixedConstraintSettings::mAutoDetectPoint']]], + ['maxbits_65',['MaxBits',['../class_sub_shape_i_d.html#a74d6785fe41b99c0d783fb6e66c39f4d',1,'SubShapeID']]], + ['maxcontactpoints_66',['MaxContactPoints',['../class_contact_constraint_manager.html#a18911ccd070e4d6d0d3c74605c0d211c',1,'ContactConstraintManager']]], + ['maxisx1_67',['maxisx1',['../class_six_d_o_f_constraint_settings.html#afb4725190d803a84af4626aeaf371063',1,'SixDOFConstraintSettings::mAxisX1'],['../class_fixed_constraint_settings.html#ae6bfde77eec2f9421c1af7670900bb70',1,'FixedConstraintSettings::mAxisX1']]], + ['maxisx2_68',['maxisx2',['../class_six_d_o_f_constraint_settings.html#ad96be46141ae5232d5a0b1d941fa28cd',1,'SixDOFConstraintSettings::mAxisX2'],['../class_fixed_constraint_settings.html#a335f3fa823a9ce1f7a501a659e2764a3',1,'FixedConstraintSettings::mAxisX2']]], + ['maxisy1_69',['maxisy1',['../class_fixed_constraint_settings.html#accdfcbf32adb921cbb6e09afdcf94f64',1,'FixedConstraintSettings::mAxisY1'],['../class_six_d_o_f_constraint_settings.html#a5a0b4ba44def5ca8a0935b6d3856b2ce',1,'SixDOFConstraintSettings::mAxisY1']]], + ['maxisy2_70',['maxisy2',['../class_fixed_constraint_settings.html#a16437f93ded1ac0e3f7f2651c850950c',1,'FixedConstraintSettings::mAxisY2'],['../class_six_d_o_f_constraint_settings.html#a373e56a53fca7a5ccfc88dbf79a0080f',1,'SixDOFConstraintSettings::mAxisY2']]], + ['maxleplaneconstant_71',['mAxlePlaneConstant',['../class_wheel.html#aa6aeace443bfd6580ad54a938342ac67',1,'Wheel']]], + ['maxverticesreached_72',['maxverticesreached',['../class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa7cc57ee56f4f29991173f4efa7a469e9',1,'ConvexHullBuilder::MaxVerticesReached'],['../class_convex_hull_builder2_d.html#a249cc4fd8288bd1cf447d3d820e9dcd0a7cc57ee56f4f29991173f4efa7a469e9',1,'ConvexHullBuilder2D::MaxVerticesReached']]], + ['mbackfacemode_73',['mbackfacemode',['../class_collide_shape_settings.html#a6fd0a08fc31725386fc3bef0b9aee212',1,'CollideShapeSettings::mBackFaceMode'],['../class_character_virtual_settings.html#adc60ceaa1f25e2cd6853b319499f82d1',1,'CharacterVirtualSettings::mBackFaceMode']]], + ['mbackfacemodeconvex_74',['mbackfacemodeconvex',['../class_ray_cast_settings.html#adfbe37689112850a164f7fd3c1517924',1,'RayCastSettings::mBackFaceModeConvex'],['../class_shape_cast_settings.html#a3f2bb437820c80a4ba4e2952fe9742d0',1,'ShapeCastSettings::mBackFaceModeConvex']]], + ['mbackfacemodetriangles_75',['mbackfacemodetriangles',['../class_ray_cast_settings.html#a6dc75db6a7e9eab529fe2691f40c43ec',1,'RayCastSettings::mBackFaceModeTriangles'],['../class_shape_cast_settings.html#a0c654586ce060400b7276a7ebb4adcdc',1,'ShapeCastSettings::mBackFaceModeTriangles']]], + ['mbackstopdistance_76',['mBackStopDistance',['../class_soft_body_shared_settings_1_1_skinned.html#a2f3d49c4f3fff9becd3fe72d890f738e',1,'SoftBodySharedSettings::Skinned']]], + ['mbackstopradius_77',['mBackStopRadius',['../class_soft_body_shared_settings_1_1_skinned.html#a0a64d6d45114dfd3ba4b54c821a6d678',1,'SoftBodySharedSettings::Skinned']]], + ['mbarrier_78',['mBarrier',['../class_physics_update_context.html#a26472dbbba0458cc803a6adda1d71b5f',1,'PhysicsUpdateContext']]], + ['mbaseclasses_79',['mBaseClasses',['../class_r_t_t_i.html#a65f6d7c79be320fd28dd08784682bb78',1,'RTTI']]], + ['mbaseoffset_80',['mBaseOffset',['../class_contact_manifold.html#a7411bc12e55f88b3e2855fe8dc57a05e',1,'ContactManifold']]], + ['mbaumgarte_81',['mBaumgarte',['../struct_physics_settings.html#ae1969d17d76a46e36471e1289d02355f',1,'PhysicsSettings']]], + ['mbegin_82',['mBegin',['../struct_triangle_splitter_1_1_range.html#aca70a315ff7dcbd97b4171751dd97afd',1,'TriangleSplitter::Range']]], + ['mbendcompliance_83',['mBendCompliance',['../struct_soft_body_shared_settings_1_1_vertex_attributes.html#a08bc90b80ef1a8af33dc8b7cebae8367',1,'SoftBodySharedSettings::VertexAttributes']]], + ['mbitspersample_84',['mBitsPerSample',['../class_height_field_shape_settings.html#a7f87d207da7948e2a36a22be55143ad0',1,'HeightFieldShapeSettings']]], + ['mblocksize_85',['mBlockSize',['../class_height_field_shape_settings.html#a8e99fb8a4d1444569a307ac2b9712e31',1,'HeightFieldShapeSettings']]], + ['mbody_86',['mBody',['../class_soft_body_update_context.html#a88b6c3a98493e002dc691f90520ad05b',1,'SoftBodyUpdateContext']]], + ['mbody1_87',['mbody1',['../class_two_body_constraint.html#af27aa0e2707d6b96ecbdeb8da8068ea8',1,'TwoBodyConstraint::mBody1'],['../class_physics_scene_1_1_connected_constraint.html#a2ff2b062c06abb5e821961e88d898eef',1,'PhysicsScene::ConnectedConstraint::mBody1']]], + ['mbody2_88',['mbody2',['../class_physics_scene_1_1_connected_constraint.html#ae99295ba06234ebb109d000f4dd771d3',1,'PhysicsScene::ConnectedConstraint::mBody2'],['../class_two_body_constraint.html#a180665fea57c98679a6a25a89057ed06',1,'TwoBodyConstraint::mBody2']]], + ['mbodya_89',['mBodyA',['../struct_body_pair.html#a9071ec4a6f8552717d3a397528e3b2b8',1,'BodyPair']]], + ['mbodyb_90',['mbodyb',['../struct_body_pair.html#aeb1186aac2ffbb99da346a15569f1855',1,'BodyPair::mBodyB'],['../struct_character_virtual_1_1_contact.html#a96b288a9886ddc8003154087e32a10ab',1,'CharacterVirtual::Contact::mBodyB']]], + ['mbodyfilter_91',['mBodyFilter',['../class_vehicle_collision_tester.html#a53aceef23d5a984d0d1bdc05ecd83844',1,'VehicleCollisionTester']]], + ['mbodyid_92',['mbodyid',['../class_broad_phase_cast_result.html#ad65b00f9908c1418c385964e5815800c',1,'BroadPhaseCastResult::mBodyID'],['../class_collide_point_result.html#af82d1a1ce22fddff9c57c5970b6f4de3',1,'CollidePointResult::mBodyID'],['../class_transformed_shape.html#ae45d21f8b2ee5407c3ca2264ab2a5ebe',1,'TransformedShape::mBodyID']]], + ['mbodyid1_93',['mBodyID1',['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#aec632d3b29f373db9f7e948315e1509c',1,'PhysicsUpdateContext::Step::CCDBody']]], + ['mbodyid2_94',['mbodyid2',['../class_shape_filter.html#acfbd3ed4accf1e4e5d74129d203650ed',1,'ShapeFilter::mBodyID2'],['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a795af390323d8a3fa5611c87c75c376f',1,'PhysicsUpdateContext::Step::CCDBody::mBodyID2'],['../class_collide_shape_result.html#a22e33232d0af6889b6715dfaa460ebbb',1,'CollideShapeResult::mBodyID2']]], + ['mbodyidx_95',['mBodyIdx',['../class_ragdoll_settings_1_1_additional_constraint.html#ade1f373302098cee84000e7fb9253561',1,'RagdollSettings::AdditionalConstraint']]], + ['mbodylocation_96',['mBodyLocation',['../struct_quad_tree_1_1_tracking.html#a8ae18cd9469f2da62366feede85b7ea1',1,'QuadTree::Tracking']]], + ['mbodymanager_97',['mbodymanager',['../class_body_lock_interface.html#a061f3644dbda5115a837f9acbf0d3f6e',1,'BodyLockInterface::mBodyManager'],['../class_broad_phase.html#a7789150cb00a308ed3da284decedb169',1,'BroadPhase::mBodyManager']]], + ['mbodypaircachecosmaxdeltarotationdiv2_98',['mBodyPairCacheCosMaxDeltaRotationDiv2',['../struct_physics_settings.html#ac56cd29f1987d79e105e5bf443254c3e',1,'PhysicsSettings']]], + ['mbodypaircachemaxdeltapositionsq_99',['mBodyPairCacheMaxDeltaPositionSq',['../struct_physics_settings.html#a739d00b8a125095ee04c70981244f1be',1,'PhysicsSettings']]], + ['mbodypairqueues_100',['mBodyPairQueues',['../struct_physics_update_context_1_1_step.html#af8fbffcba6d3b5adbdeb98c1d63903fe',1,'PhysicsUpdateContext::Step']]], + ['mbodypairs_101',['mBodyPairs',['../class_physics_update_context.html#a8b9c15a6ef1a5072d539c18a45ae457f',1,'PhysicsUpdateContext']]], + ['mbodypoint1_102',['mBodyPoint1',['../class_pulley_constraint_settings.html#ad2c59a16803fd25fd268d73c96f2d018',1,'PulleyConstraintSettings']]], + ['mbodypoint2_103',['mBodyPoint2',['../class_pulley_constraint_settings.html#aa87b3d01226cbad269a41eb603ca2324',1,'PulleyConstraintSettings']]], + ['mbodysetislandindex_104',['mBodySetIslandIndex',['../struct_physics_update_context_1_1_step.html#aa88b6bb72d389f72577406ed0f96cfbb',1,'PhysicsUpdateContext::Step']]], + ['mbounds_105',['mbounds',['../class_a_a_b_b_tree_builder_1_1_node.html#a4549ed8b447ff95b86f267118f229f49',1,'AABBTreeBuilder::Node::mBounds'],['../class_debug_renderer_1_1_geometry.html#a165db66b8c806916e93a5dbdb149f051',1,'DebugRenderer::Geometry::mBounds']]], + ['mboundsmaxx_106',['mBoundsMaxX',['../struct_node_codec_quad_tree_half_float_1_1_node.html#a664881f33b2c72d863669f597a08b5f1',1,'NodeCodecQuadTreeHalfFloat::Node']]], + ['mboundsmaxy_107',['mBoundsMaxY',['../struct_node_codec_quad_tree_half_float_1_1_node.html#a1f661d07d95917d39d42d92fe3ae4afe',1,'NodeCodecQuadTreeHalfFloat::Node']]], + ['mboundsmaxz_108',['mBoundsMaxZ',['../struct_node_codec_quad_tree_half_float_1_1_node.html#af97feaea54b713343bb32a1c9fe0b833',1,'NodeCodecQuadTreeHalfFloat::Node']]], + ['mboundsminx_109',['mBoundsMinX',['../struct_node_codec_quad_tree_half_float_1_1_node.html#a260bf9fa0305ae1201ab7ee903c24219',1,'NodeCodecQuadTreeHalfFloat::Node']]], + ['mboundsminy_110',['mBoundsMinY',['../struct_node_codec_quad_tree_half_float_1_1_node.html#ae9185f05be2d2e73b535cb62842dca44',1,'NodeCodecQuadTreeHalfFloat::Node']]], + ['mboundsminz_111',['mBoundsMinZ',['../struct_node_codec_quad_tree_half_float_1_1_node.html#a303fe22d2d9d469d7e58a3b96fcec103',1,'NodeCodecQuadTreeHalfFloat::Node']]], + ['mboundsof1_112',['mBoundsOf1',['../class_collide_convex_vs_triangles.html#a596f47c1410024dc4b388fbe734bf8a7',1,'CollideConvexVsTriangles']]], + ['mboundsof1inspaceof2_113',['mboundsof1inspaceof2',['../class_collide_convex_vs_triangles.html#a97a9af3d0958130bfbcbce4b5f3c81ae',1,'CollideConvexVsTriangles::mBoundsOf1InSpaceOf2'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a6e2e736800b3999118fe4ba13a500f26',1,'CompoundShape::CollideShapeVsCompoundVisitor::mBoundsOf1InSpaceOf2']]], + ['mboundsof2inspaceof1_114',['mBoundsOf2InSpaceOf1',['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#ade932f2552ec9da071d7c588fd4bde34',1,'CompoundShape::CollideCompoundVsShapeVisitor']]], + ['mbox_115',['mbox',['../struct_a_a_box_cast.html#ab9e386d215fdea363fb71ca846edb992',1,'AABoxCast::mBox'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a55cc06cb9e9d00cc51e902e0b038d96e',1,'CompoundShape::CollectTransformedShapesVisitor::mBox']]], + ['mboxcenter_116',['mBoxCenter',['../struct_compound_shape_1_1_cast_shape_visitor.html#abc86dba5d2e4f85caf6e84e0926fae26',1,'CompoundShape::CastShapeVisitor']]], + ['mboxextent_117',['mBoxExtent',['../struct_compound_shape_1_1_cast_shape_visitor.html#a6fa233b683235d32096365a5d9ac5894',1,'CompoundShape::CastShapeVisitor']]], + ['mbrakeimpulse_118',['mbrakeimpulse',['../class_wheel_t_v.html#a0f5121e16dd00f307f6ea682660c51ac',1,'WheelTV::mBrakeImpulse'],['../class_wheel_w_v.html#af5db5f73435db5c8f5d0422aea901897',1,'WheelWV::mBrakeImpulse']]], + ['mbrakeinput_119',['mbrakeinput',['../class_tracked_vehicle_controller.html#ae1eed09587eafa6e49d744ffa180d6ae',1,'TrackedVehicleController::mBrakeInput'],['../class_wheeled_vehicle_controller.html#a88aa09d54f227962f6ccfb84f764e4c3',1,'WheeledVehicleController::mBrakeInput']]], + ['mbroadphaselayer_120',['mBroadPhaseLayer',['../struct_quad_tree_1_1_tracking.html#a004a8ed217c3b5d7ddc2364cf4884adb',1,'QuadTree::Tracking']]], + ['mbroadphaselayerfilter_121',['mBroadPhaseLayerFilter',['../class_vehicle_collision_tester.html#a4b2a65db4174dffb7dc46ee44f7b6ab0',1,'VehicleCollisionTester']]], + ['mbroadphaseprepare_122',['mBroadPhasePrepare',['../struct_physics_update_context_1_1_step.html#aff65a027fe90606d02f82dec03e62c3c',1,'PhysicsUpdateContext::Step']]], + ['mbroadphaseupdatestate_123',['mBroadPhaseUpdateState',['../struct_physics_update_context_1_1_step.html#af2f3ce30f63e94c229d1363a43da9aca',1,'PhysicsUpdateContext::Step']]], + ['mbucket_124',['mBucket',['../struct_lock_free_hash_map_1_1_iterator.html#ab977da84511df37816a8856402dfef60',1,'LockFreeHashMap::Iterator']]], + ['mbufferexcvxradius_125',['mBufferExCvxRadius',['../class_collide_convex_vs_triangles.html#a02e46e4e5290250e02a6937168ccec6b',1,'CollideConvexVsTriangles']]], + ['mbufferinccvxradius_126',['mBufferIncCvxRadius',['../class_collide_convex_vs_triangles.html#a9783d040f7efa2ebd16d4ac12790156c',1,'CollideConvexVsTriangles']]], + ['mbuildislandsfromconstraints_127',['mBuildIslandsFromConstraints',['../struct_physics_update_context_1_1_step.html#a3176929769d4b2fa200a279beb127d33',1,'PhysicsUpdateContext::Step']]], + ['mcachedresult_128',['mCachedResult',['../class_shape_settings.html#ac8e243f3e923ee07d58111a0dd88c547',1,'ShapeSettings']]], + ['mcanpushcharacter_129',['mcanpushcharacter',['../class_character_contact_settings.html#a08d217d923d36ad868fa83b8d1851833',1,'CharacterContactSettings::mCanPushCharacter'],['../struct_character_virtual_1_1_contact.html#ab702ce98262a29981d4bd1c5f6e86ca5',1,'CharacterVirtual::Contact::mCanPushCharacter']]], + ['mcanreceiveimpulses_130',['mCanReceiveImpulses',['../class_character_contact_settings.html#a9e1a4f9fb9e52f755a15af2066cf441b',1,'CharacterContactSettings']]], + ['mcansleep_131',['mCanSleep',['../class_soft_body_update_context.html#af78fae54587cbbc41f185d1c4e477925',1,'SoftBodyUpdateContext']]], + ['mcastshadow_132',['mcastshadow',['../struct_debug_renderer_recorder_1_1_triangle_blob.html#a80df9fb9a4b0f775f631a3a391f0fca1',1,'DebugRendererRecorder::TriangleBlob::mCastShadow'],['../struct_debug_renderer_recorder_1_1_geometry_blob.html#a806c5e30a1c544659e24664d62b32516',1,'DebugRendererRecorder::GeometryBlob::mCastShadow']]], + ['mccdbodies_133',['mCCDBodies',['../struct_physics_update_context_1_1_step.html#a895ea4985300d99b5aa9e042fe1e3f70',1,'PhysicsUpdateContext::Step']]], + ['mccdbodiescapacity_134',['mCCDBodiesCapacity',['../struct_physics_update_context_1_1_step.html#a2d6f2ae1c7e3744a5189bc8ecc958978',1,'PhysicsUpdateContext::Step']]], + ['mcenterofmass_135',['mCenterOfMass',['../class_compound_shape.html#a6f0173f4441e35a94b5faa7e95062234',1,'CompoundShape']]], + ['mcenterofmassstart_136',['mCenterOfMassStart',['../struct_shape_cast_t.html#accfdbb9a3a66304f8cec4c918f83ce87',1,'ShapeCastT']]], + ['mcenterofmasstransform_137',['mcenterofmasstransform',['../struct_soft_body_shape_1_1_s_b_s_get_triangles_context.html#ab9255dc35a9feceec9b35236099a0582',1,'SoftBodyShape::SBSGetTrianglesContext::mCenterOfMassTransform'],['../class_soft_body_update_context.html#a7a6a0aecd66518f1b46cbde25f522c34',1,'SoftBodyUpdateContext::mCenterOfMassTransform']]], + ['mcenterofmasstransform2_138',['mcenterofmasstransform2',['../class_cast_convex_vs_triangles.html#abd1a020012d0dc31bf29f954c42da71b',1,'CastConvexVsTriangles::mCenterOfMassTransform2'],['../class_cast_sphere_vs_triangles.html#a03488d3918d45962d2b31d3b14e16f46',1,'CastSphereVsTriangles::mCenterOfMassTransform2'],['../struct_compound_shape_1_1_cast_shape_visitor.html#af4a7cfe31a9090b41b803e94f6a35ed5',1,'CompoundShape::CastShapeVisitor::mCenterOfMassTransform2']]], + ['mcentroid_139',['mcentroid',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a0452b1c401d15dcc561dad66766d45a9',1,'EPAConvexHullBuilder::Triangle::mCentroid'],['../class_convex_hull_builder_1_1_face.html#aac39b755e92c80eff3b7a24ccfc54306',1,'ConvexHullBuilder::Face::mCentroid']]], + ['mcentroids_140',['mCentroids',['../class_triangle_splitter.html#a164a63157cb133c324cd2664f6b6f678',1,'TriangleSplitter']]], + ['mcharacterb_141',['mCharacterB',['../struct_character_virtual_1_1_contact.html#a9039e3eae10f46b3ae0199dee5d1c83c',1,'CharacterVirtual::Contact']]], + ['mcharacterpadding_142',['mCharacterPadding',['../class_character_virtual_settings.html#a9799feb816f4df4f956ffed435d18b4c',1,'CharacterVirtualSettings']]], + ['mcharacters_143',['mCharacters',['../class_character_vs_character_collision_simple.html#ab7c49c006037265b684bccd7d9b4cd22',1,'CharacterVsCharacterCollisionSimple']]], + ['mcheckactiveedges_144',['mCheckActiveEdges',['../struct_physics_settings.html#ad5b9533124cc07d57c5dd7ff050caba7',1,'PhysicsSettings']]], + ['mchild_145',['mChild',['../class_a_a_b_b_tree_builder_1_1_node.html#adfba523204796d8e9d9e0871cf0e51a6',1,'AABBTreeBuilder::Node']]], + ['mclosestdistancesq_146',['mClosestDistanceSq',['../class_collide_soft_body_vertices_vs_triangles.html#aae3d91df7e34600c0fc1f6b5025dd97c',1,'CollideSoftBodyVerticesVsTriangles']]], + ['mclosestlensq_147',['mClosestLenSq',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a89216110b3cac04a274376acaf28d7ae',1,'EPAConvexHullBuilder::Triangle']]], + ['mclosestpoint_148',['mClosestPoint',['../class_collide_soft_body_vertices_vs_triangles.html#acc8d25a6bde60a6594038c35d5899083',1,'CollideSoftBodyVerticesVsTriangles']]], + ['mclosestpointinterior_149',['mClosestPointInterior',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a0b20e81cb148777b56012bbaf28fb18b',1,'EPAConvexHullBuilder::Triangle']]], + ['mclutchreleasetime_150',['mClutchReleaseTime',['../class_vehicle_transmission_settings.html#a06bfd0f8f234b58488615250e7cc5703',1,'VehicleTransmissionSettings']]], + ['mclutchstrength_151',['mClutchStrength',['../class_vehicle_transmission_settings.html#a86105ca9b3215ec2a6208815f4e10740',1,'VehicleTransmissionSettings']]], + ['mcol_152',['mCol',['../class_matrix.html#a536e1df6f18300e3ad1a5b2af3663e22',1,'Matrix']]], + ['mcollectfacesmode_153',['mCollectFacesMode',['../class_collide_settings_base.html#a0c9c32e2267f57dcc73952e3469512bd',1,'CollideSettingsBase']]], + ['mcollector_154',['mcollector',['../struct_compound_shape_1_1_collide_point_visitor.html#ac192bb3d8ea53f93de9e6fb523b2949a',1,'CompoundShape::CollidePointVisitor::mCollector'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a3592c0f8c400489c4545be9f65db26c5',1,'CompoundShape::CollideShapeVsCompoundVisitor::mCollector'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a0baf1b449eed819cb072a676d72398cd',1,'CompoundShape::CollideCompoundVsShapeVisitor::mCollector'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a888023b455a023aa817178a3ccc50797',1,'CompoundShape::CollectTransformedShapesVisitor::mCollector'],['../struct_compound_shape_1_1_cast_shape_visitor.html#a290ab12059bcc67d2a199f8a57a69027',1,'CompoundShape::CastShapeVisitor::mCollector'],['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#aa482aff5292c183077270554b7053fb5',1,'CompoundShape::CastRayVisitorCollector::mCollector'],['../class_collide_sphere_vs_triangles.html#a460823cc00792faff84a226c694a68ba',1,'CollideSphereVsTriangles::mCollector'],['../class_collide_convex_vs_triangles.html#a3f3d24787366a4941beaba991c5649c9',1,'CollideConvexVsTriangles::mCollector'],['../class_cast_sphere_vs_triangles.html#a8764255c552586baff1eb0790b7e30ca',1,'CastSphereVsTriangles::mCollector'],['../class_cast_convex_vs_triangles.html#aa541b629f013a34846b0b497e991b679',1,'CastConvexVsTriangles::mCollector']]], + ['mcollidekinematicvsnondynamic_155',['mCollideKinematicVsNonDynamic',['../class_body_creation_settings.html#a824e71e8ce2673afc3a7716411016ee6',1,'BodyCreationSettings']]], + ['mcollideshapesettings_156',['mcollideshapesettings',['../class_collide_convex_vs_triangles.html#a69acefd643423ee75a0ba2177d0973a8',1,'CollideConvexVsTriangles::mCollideShapeSettings'],['../class_collide_sphere_vs_triangles.html#af299e3ed6996c856a01661a80a8f9151',1,'CollideSphereVsTriangles::mCollideShapeSettings'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a350f11e56d89c4f9200163a131f3f444',1,'CompoundShape::CollideCompoundVsShapeVisitor::mCollideShapeSettings'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a20a3312bd10ca3d58c70f963a279f76b',1,'CompoundShape::CollideShapeVsCompoundVisitor::mCollideShapeSettings']]], + ['mcollidingshapeindex_157',['mCollidingShapeIndex',['../class_soft_body_vertex.html#a887112c6a59e554fd15aac62b7e84dfe',1,'SoftBodyVertex']]], + ['mcollisiongroup_158',['mcollisiongroup',['../class_body_creation_settings.html#ae0a1420ed9449ccae2b1b58715f6fe41',1,'BodyCreationSettings::mCollisionGroup'],['../class_soft_body_creation_settings.html#af0f54d456a3f22e36ad6c1c429b9ee4c',1,'SoftBodyCreationSettings::mCollisionGroup']]], + ['mcollisionplane_159',['mCollisionPlane',['../class_soft_body_vertex.html#ad875325c3ade4ca33d6b96716b8a2b07',1,'SoftBodyVertex']]], + ['mcollisiontolerance_160',['mcollisiontolerance',['../class_character_virtual_settings.html#ace6da7c342df36edfce5a7aac44b1664',1,'CharacterVirtualSettings::mCollisionTolerance'],['../class_collide_settings_base.html#a0b92708903a65cb2bcc412a49b080736',1,'CollideSettingsBase::mCollisionTolerance']]], + ['mcolor_161',['mcolor',['../struct_debug_renderer_recorder_1_1_line_blob.html#a8989fefbef3d5563bf87be98e29eca7e',1,'DebugRendererRecorder::LineBlob::mColor'],['../struct_debug_renderer_recorder_1_1_text_blob.html#ad6271bb0149760a239bdf01038714243',1,'DebugRendererRecorder::TextBlob::mColor'],['../struct_debug_renderer_recorder_1_1_triangle_blob.html#a25ce9acc7f799de155e66f799a84def9',1,'DebugRendererRecorder::TriangleBlob::mColor'],['../class_debug_renderer_1_1_vertex.html#a8f0f691b5c2f1caeca86c04eeb13c3bc',1,'DebugRenderer::Vertex::mColor'],['../class_shape_functions.html#a054634bc3e0037afe94af128994d5261',1,'ShapeFunctions::mColor'],['../class_profile_sample.html#a02343312f37163bd02faf4f9751fe4a9',1,'ProfileSample::mColor']]], + ['mcombinedfriction_162',['mCombinedFriction',['../class_contact_settings.html#a7a6722d38f6dd9f504412e3663400a2d',1,'ContactSettings']]], + ['mcombinedlateralfriction_163',['mcombinedlateralfriction',['../class_wheel_t_v.html#a51f513ce9b5eaac7dafdc7ed64b8c57a',1,'WheelTV::mCombinedLateralFriction'],['../class_wheel_w_v.html#af4a4bb2b7d6fbc7100be7a6b9d189ea7',1,'WheelWV::mCombinedLateralFriction']]], + ['mcombinedlongitudinalfriction_164',['mcombinedlongitudinalfriction',['../class_wheel_t_v.html#a36519514c439deca6343db4a2b22d76a',1,'WheelTV::mCombinedLongitudinalFriction'],['../class_wheel_w_v.html#a6f359594d9d3a9844a1b5c17960974d2',1,'WheelWV::mCombinedLongitudinalFriction']]], + ['mcombinedrestitution_165',['mCombinedRestitution',['../class_contact_settings.html#ade2482177e9dd9c8596a4a1cc6338979',1,'ContactSettings']]], + ['mcompliance_166',['mcompliance',['../struct_soft_body_shared_settings_1_1_vertex_attributes.html#a041f1223d302ca1f2314f07d15a24d06',1,'SoftBodySharedSettings::VertexAttributes::mCompliance'],['../struct_soft_body_shared_settings_1_1_dihedral_bend.html#ae2c290464bd3a9c43f12c48c8548b76d',1,'SoftBodySharedSettings::DihedralBend::mCompliance'],['../struct_soft_body_shared_settings_1_1_volume.html#abd571991d3bc19d1ab150a65553b29c4',1,'SoftBodySharedSettings::Volume::mCompliance'],['../struct_soft_body_shared_settings_1_1_edge.html#a2a10f9d5aad98552ac275597a4f991fb',1,'SoftBodySharedSettings::Edge::mCompliance']]], + ['mconflictlist_167',['mConflictList',['../class_convex_hull_builder_1_1_face.html#af009d8104d2c16039128bd10007cdeac',1,'ConvexHullBuilder::Face']]], + ['mconstraint_168',['mconstraint',['../class_ragdoll_settings_1_1_additional_constraint.html#a6939cc6d84304810abc9adfce5cc70e4',1,'RagdollSettings::AdditionalConstraint::mConstraint'],['../class_vehicle_controller.html#af93ef5080e32c5558d6b594da7080896',1,'VehicleController::mConstraint']]], + ['mconstraintbufferbegin_169',['mConstraintBufferBegin',['../struct_large_island_splitter_1_1_split.html#a28c42cf9312a3e37c131ebdc1ad81479',1,'LargeIslandSplitter::Split']]], + ['mconstraintbufferend_170',['mConstraintBufferEnd',['../struct_large_island_splitter_1_1_split.html#af7738261a4e5e40816c3be9db89b6500',1,'LargeIslandSplitter::Split']]], + ['mconstraintpriority_171',['mConstraintPriority',['../class_constraint_settings.html#ab01ba90506d17f415054bfa6208a4939',1,'ConstraintSettings']]], + ['mconstraintwarmstart_172',['mConstraintWarmStart',['../struct_physics_settings.html#ad477a1ff8add4e1f8684b131c1485480',1,'PhysicsSettings']]], + ['mconstruct_173',['mConstruct',['../class_shape_functions.html#a8865bcab9eba36b1e456b94cf1268789',1,'ShapeFunctions']]], + ['mcontactbody_174',['mContactBody',['../class_wheel.html#acb44fa757ea9d2447e1b2de4f65954ca',1,'Wheel']]], + ['mcontactbodyid_175',['mContactBodyID',['../class_wheel.html#a53ae6143cfd91eba78398b03f427c7ed',1,'Wheel']]], + ['mcontactbufferbegin_176',['mContactBufferBegin',['../struct_large_island_splitter_1_1_split.html#aeace1bcbc7c914f22476358a9851daba',1,'LargeIslandSplitter::Split']]], + ['mcontactbufferend_177',['mContactBufferEnd',['../struct_large_island_splitter_1_1_split.html#a6a88a677ec69868a94fbb451ab253342',1,'LargeIslandSplitter::Split']]], + ['mcontactimpulse_178',['mContactImpulse',['../struct_collision_estimation_result_1_1_impulse.html#ad672fbc096b11969fc9ef19a0ba5a225',1,'CollisionEstimationResult::Impulse']]], + ['mcontactlateral_179',['mContactLateral',['../class_wheel.html#ad8cea661025b8c99b3fbd07f67880ebb',1,'Wheel']]], + ['mcontactlistener_180',['mContactListener',['../class_soft_body_update_context.html#a19e196d17741280f4ba21d9b7bc4bb86',1,'SoftBodyUpdateContext']]], + ['mcontactlongitudinal_181',['mContactLongitudinal',['../class_wheel.html#a452fc2b42bb7fb3ffb296008ff19ff84',1,'Wheel']]], + ['mcontactnormal_182',['mcontactnormal',['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a977f14cb8637f2f5cfe80e7fa7a30909',1,'PhysicsUpdateContext::Step::CCDBody::mContactNormal'],['../class_wheel.html#a1e753efe90d09796fa717079a15b6b59',1,'Wheel::mContactNormal'],['../struct_character_virtual_1_1_contact.html#a3e0e1203d15a972c0b52b08940439664',1,'CharacterVirtual::Contact::mContactNormal']]], + ['mcontactnormalcosmaxdeltarotation_183',['mContactNormalCosMaxDeltaRotation',['../struct_physics_settings.html#aefc600483ad1234713fbd572f80f00da',1,'PhysicsSettings']]], + ['mcontactpointon1_184',['mContactPointOn1',['../class_collide_shape_result.html#a76dd6be632967ea1f0348eca8155be44',1,'CollideShapeResult']]], + ['mcontactpointon2_185',['mcontactpointon2',['../class_collide_shape_result.html#a2f09d3bbc9e1563c974836c2327f73a7',1,'CollideShapeResult::mContactPointOn2'],['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a3a66d945cc9f9f778d4309be685af2df',1,'PhysicsUpdateContext::Step::CCDBody::mContactPointOn2']]], + ['mcontactpointpreservelambdamaxdistsq_186',['mContactPointPreserveLambdaMaxDistSq',['../struct_physics_settings.html#a69350ac3ff30bca78c45d402938a3ebf',1,'PhysicsSettings']]], + ['mcontactpointvelocity_187',['mContactPointVelocity',['../class_wheel.html#a7d348b3098f9316f308173fe87c81783',1,'Wheel']]], + ['mcontactposition_188',['mContactPosition',['../class_wheel.html#ac30ace148260fc1280c40224cb51c34f',1,'Wheel']]], + ['mcontactremovedcallbacks_189',['mContactRemovedCallbacks',['../struct_physics_update_context_1_1_step.html#a2fc477198ee62afd4f842070754fe46e',1,'PhysicsUpdateContext::Step']]], + ['mcontactsettings_190',['mContactSettings',['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a993db6e5c8993fdc978f813fea921759',1,'PhysicsUpdateContext::Step::CCDBody']]], + ['mcontactsubshapeid_191',['mContactSubShapeID',['../class_wheel.html#af93d7137c196e5dc6107963bdc06c5ba',1,'Wheel']]], + ['mcontext_192',['mContext',['../struct_physics_update_context_1_1_step.html#acfb1fe9af1d8ea1e6c10964a1a73915d',1,'PhysicsUpdateContext::Step']]], + ['mcontroller_193',['mController',['../class_vehicle_constraint_settings.html#a0d879ac8a47fb2584e23c6d0c5254d53',1,'VehicleConstraintSettings']]], + ['mconvexradius_194',['mconvexradius',['../class_box_shape_settings.html#aecc49db555c063a396538e9b9fb988fd',1,'BoxShapeSettings::mConvexRadius'],['../class_cylinder_shape_settings.html#a90e07951e230eb0c246043e3d4f452c2',1,'CylinderShapeSettings::mConvexRadius'],['../class_triangle_shape_settings.html#af83ef4f5df583764de2506f2903c2e7b',1,'TriangleShapeSettings::mConvexRadius']]], + ['mcosmaxslopeangle_195',['mCosMaxSlopeAngle',['../class_character_base.html#a9da1e29d9257f3cce909487da437a0c9',1,'CharacterBase']]], + ['mcreate_196',['mCreate',['../class_r_t_t_i.html#a0bc70d14c290f62bb071ce8c3439d09b',1,'RTTI']]], + ['mcullmode_197',['mCullMode',['../struct_debug_renderer_recorder_1_1_geometry_blob.html#a7e4f7ad0aa55d37149b5c53636282569',1,'DebugRendererRecorder::GeometryBlob']]], + ['mcurrentface_198',['mCurrentFace',['../class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html#afbd620fc52b4916635309d3f7e16338c',1,'ConvexHullShape::CHSGetTrianglesContext']]], + ['mcurrentsample_199',['mCurrentSample',['../class_profile_thread.html#a6afefb40b099dcc6db1170655ac90295',1,'ProfileThread']]], + ['mcurrentvertex_200',['mCurrentVertex',['../class_convex_shape_1_1_c_s_get_triangles_context.html#adb9196e2efacc406e508aff493209d17',1,'ConvexShape::CSGetTrianglesContext']]], + ['mdamping_201',['mDamping',['../class_spring_settings.html#a72165bbe14974afb17df18e88f6d205e',1,'SpringSettings']]], + ['mdata_202',['mdata',['../struct_shape_1_1_get_triangles_context.html#a762a72b95f7fc1f801dc05bc9aaa755c',1,'Shape::GetTrianglesContext::mData'],['../class_convex_shape_1_1_support_buffer.html#a618fb8977591351e952be032d21d0e13',1,'ConvexShape::SupportBuffer::mData'],['../struct_broad_phase_1_1_update_state.html#a8460ba8beb83aa9919bf50eac7134ff1',1,'BroadPhase::UpdateState::mData'],['../struct_static_array_1_1_storage.html#a5f53efe1f6db4285e85139037cb7d7d5',1,'StaticArray::Storage::mData']]], + ['mdecodectx_203',['mdecodectx',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#aeee3a7f20977ea6d9480486c123a684b',1,'HeightFieldShape::HSGetTrianglesContext::mDecodeCtx'],['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#a4e096804b145a331076fc7b8102bc7e4',1,'MeshShape::MSGetTrianglesContext::mDecodeCtx']]], + ['mdeltaposition_204',['mdeltaposition',['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a600b083a1951ed5d7d5bb3e622474477',1,'PhysicsUpdateContext::Step::CCDBody::mDeltaPosition'],['../class_soft_body_update_context.html#a6cce0079d538ff50a6a77688e44116e1',1,'SoftBodyUpdateContext::mDeltaPosition']]], + ['mdeltatime_205',['mDeltaTime',['../class_soft_body_update_context.html#a74ad9a6e4da4c7e81d669d0d2643417d',1,'SoftBodyUpdateContext']]], + ['mdensity_206',['mDensity',['../class_convex_shape_settings.html#a174f774be405a5f445b429c921946957',1,'ConvexShapeSettings']]], + ['mdepth_207',['mDepth',['../class_profile_sample.html#add124282af00ea60608ac83c683787e2',1,'ProfileSample']]], + ['mdestruct_208',['mDestruct',['../class_r_t_t_i.html#a05e1a68c508992c39107dcdde015138b',1,'RTTI']]], + ['mdetermineactiveconstraintreadidx_209',['mDetermineActiveConstraintReadIdx',['../struct_physics_update_context_1_1_step.html#af1cea849e2511fadd96fec484c84ab43',1,'PhysicsUpdateContext::Step']]], + ['mdetermineactiveconstraints_210',['mDetermineActiveConstraints',['../struct_physics_update_context_1_1_step.html#aeb981c58858a0e99712f3561f12d72e9',1,'PhysicsUpdateContext::Step']]], + ['mdeterministicsimulation_211',['mDeterministicSimulation',['../struct_physics_settings.html#aee2d7c40a127dc9c347d3b84b24ab4e3',1,'PhysicsSettings']]], + ['mdifferentiallimitedslipratio_212',['mdifferentiallimitedslipratio',['../class_wheeled_vehicle_controller_settings.html#a956258093f2aa7604630d1a025d3054a',1,'WheeledVehicleControllerSettings::mDifferentialLimitedSlipRatio'],['../class_wheeled_vehicle_controller.html#aa389a6d0e57e4eb69c7d238be20c6575',1,'WheeledVehicleController::mDifferentialLimitedSlipRatio']]], + ['mdifferentialratio_213',['mdifferentialratio',['../class_vehicle_differential_settings.html#a172648d9abd2125049692c9562488498',1,'VehicleDifferentialSettings::mDifferentialRatio'],['../class_vehicle_track_settings.html#adfc2a350504c7850a1c544f6dc06f6ab',1,'VehicleTrackSettings::mDifferentialRatio']]], + ['mdifferentials_214',['mdifferentials',['../class_wheeled_vehicle_controller_settings.html#a1546de08a8e3f54375fd5acbc20de0aa',1,'WheeledVehicleControllerSettings::mDifferentials'],['../class_wheeled_vehicle_controller.html#a3d1069e60f64ca74c667e120f06d34bf',1,'WheeledVehicleController::mDifferentials']]], + ['mdihedralbendconstraints_215',['mDihedralBendConstraints',['../class_soft_body_shared_settings.html#a85f461f7bf9ef7d881c6b2b05e137ad4',1,'SoftBodySharedSettings']]], + ['mdihedralbendremap_216',['mDihedralBendRemap',['../class_soft_body_shared_settings_1_1_optimization_results.html#a948b4614afd98cc8ba6f6556d1f987f8',1,'SoftBodySharedSettings::OptimizationResults']]], + ['mdirection_217',['mdirection',['../struct_a_a_box_cast.html#aeace724c59e69d8bcee630641cdab310',1,'AABoxCast::mDirection'],['../class_cast_sphere_vs_triangles.html#a55eca94a671eb829c77a28ea4ce2c38a',1,'CastSphereVsTriangles::mDirection'],['../struct_ray_cast_t.html#a7eb5c3b516f95411ede61d7fd282bbd9',1,'RayCastT::mDirection'],['../struct_shape_cast_t.html#a4b45c3421b2f87e1553bb3325ca64752',1,'ShapeCastT::mDirection']]], + ['mdisplacementduetogravity_218',['mDisplacementDueToGravity',['../class_soft_body_update_context.html#ac0b07375d564d77c2ecf16cd4a619896',1,'SoftBodyUpdateContext']]], + ['mdistance_219',['mdistance',['../struct_character_virtual_1_1_contact.html#abbbf77d2cdfb572d1f637812bbca93e9',1,'CharacterVirtual::Contact::mDistance'],['../class_debug_renderer_1_1_l_o_d.html#a492ece9b61c9ddb9fbee6e52a95e37a1',1,'DebugRenderer::LOD::mDistance']]], + ['mdistancetosurface_220',['mDistanceToSurface',['../class_polyhedron_submerged_volume_calculator_1_1_point.html#ae11b26a886ee27b6f818cf1685d151d2',1,'PolyhedronSubmergedVolumeCalculator::Point']]], + ['mdone_221',['mDone',['../struct_plane_shape_1_1_p_s_get_triangles_context.html#afda286ce7a439dee77e585919216e040',1,'PlaneShape::PSGetTrianglesContext']]], + ['mdrawboundingbox_222',['mDrawBoundingBox',['../struct_body_manager_1_1_draw_settings.html#af0e9db05229aeed5c25593b5f8825a41',1,'BodyManager::DrawSettings']]], + ['mdrawcenterofmasstransform_223',['mDrawCenterOfMassTransform',['../struct_body_manager_1_1_draw_settings.html#abc6a0e739e3880499a5172aab73b412f',1,'BodyManager::DrawSettings']]], + ['mdrawconstraintsize_224',['mdrawconstraintsize',['../class_constraint_settings.html#ad2e3913b76c52d885bf88b9e9dc2bfd3',1,'ConstraintSettings::mDrawConstraintSize'],['../class_constraint.html#af5f5c736eb3830ff27ec07200399dc46',1,'Constraint::mDrawConstraintSize']]], + ['mdrawgetsupportfunction_225',['mDrawGetSupportFunction',['../struct_body_manager_1_1_draw_settings.html#a00eee185fb605003647a3f9838a69510',1,'BodyManager::DrawSettings']]], + ['mdrawgetsupportingface_226',['mDrawGetSupportingFace',['../struct_body_manager_1_1_draw_settings.html#a549281bbff3273af8fc2ee6a1abd5c06',1,'BodyManager::DrawSettings']]], + ['mdrawjointnames_227',['mDrawJointNames',['../struct_skeleton_pose_1_1_draw_settings.html#a8ea7aef6d43a09142d91848226741da3',1,'SkeletonPose::DrawSettings']]], + ['mdrawjointorientations_228',['mDrawJointOrientations',['../struct_skeleton_pose_1_1_draw_settings.html#a13dc9b1ccd594f04c92c6a4b70147d04',1,'SkeletonPose::DrawSettings']]], + ['mdrawjoints_229',['mDrawJoints',['../struct_skeleton_pose_1_1_draw_settings.html#a986b1e3a3989766f0584e092cde44eaa',1,'SkeletonPose::DrawSettings']]], + ['mdrawmassandinertia_230',['mDrawMassAndInertia',['../struct_body_manager_1_1_draw_settings.html#a8e21880e28252a47283a9915a48de982',1,'BodyManager::DrawSettings']]], + ['mdrawmode_231',['mDrawMode',['../struct_debug_renderer_recorder_1_1_geometry_blob.html#a1ca5b00a5c93d6b65a2fc76b6576133e',1,'DebugRendererRecorder::GeometryBlob']]], + ['mdrawshape_232',['mDrawShape',['../struct_body_manager_1_1_draw_settings.html#ad08ed37f301e239df4c10965332f327c',1,'BodyManager::DrawSettings']]], + ['mdrawshapecolor_233',['mDrawShapeColor',['../struct_body_manager_1_1_draw_settings.html#a5ac74c40c61db70320bc76b745e691ca',1,'BodyManager::DrawSettings']]], + ['mdrawshapewireframe_234',['mDrawShapeWireframe',['../struct_body_manager_1_1_draw_settings.html#a45faca582ce3ba4844789bccf736a965',1,'BodyManager::DrawSettings']]], + ['mdrawsleepstats_235',['mDrawSleepStats',['../struct_body_manager_1_1_draw_settings.html#ab4521660f84ef2ddb7422686794564fb',1,'BodyManager::DrawSettings']]], + ['mdrawsoftbodybendconstraints_236',['mDrawSoftBodyBendConstraints',['../struct_body_manager_1_1_draw_settings.html#acde7730c0b8928f053355afdb3cbe33f',1,'BodyManager::DrawSettings']]], + ['mdrawsoftbodyconstraintcolor_237',['mDrawSoftBodyConstraintColor',['../struct_body_manager_1_1_draw_settings.html#a3fe361c5c4aa4c1d59d1f891c52cbee6',1,'BodyManager::DrawSettings']]], + ['mdrawsoftbodyedgeconstraints_238',['mDrawSoftBodyEdgeConstraints',['../struct_body_manager_1_1_draw_settings.html#aae6f634585850b102c3f276302d0d4a7',1,'BodyManager::DrawSettings']]], + ['mdrawsoftbodylraconstraints_239',['mDrawSoftBodyLRAConstraints',['../struct_body_manager_1_1_draw_settings.html#a6fced0ff434161eaa1ddbf79faa5cf15',1,'BodyManager::DrawSettings']]], + ['mdrawsoftbodypredictedbounds_240',['mDrawSoftBodyPredictedBounds',['../struct_body_manager_1_1_draw_settings.html#a55d3594fa72dc4a59c2cffb9828c31f7',1,'BodyManager::DrawSettings']]], + ['mdrawsoftbodyskinconstraints_241',['mDrawSoftBodySkinConstraints',['../struct_body_manager_1_1_draw_settings.html#af152e8b07ea06d5b62501a598ce9aacb',1,'BodyManager::DrawSettings']]], + ['mdrawsoftbodyvertexvelocities_242',['mDrawSoftBodyVertexVelocities',['../struct_body_manager_1_1_draw_settings.html#ae342c75ee4e3c72bd39f378b41e5d6f9',1,'BodyManager::DrawSettings']]], + ['mdrawsoftbodyvertices_243',['mDrawSoftBodyVertices',['../struct_body_manager_1_1_draw_settings.html#a586529cbe14b25bb864ef4736db1d950',1,'BodyManager::DrawSettings']]], + ['mdrawsoftbodyvolumeconstraints_244',['mDrawSoftBodyVolumeConstraints',['../struct_body_manager_1_1_draw_settings.html#a6142b1847878d24a4e7f7ac831d610bb',1,'BodyManager::DrawSettings']]], + ['mdrawsupportdirection_245',['mDrawSupportDirection',['../struct_body_manager_1_1_draw_settings.html#af16847645d9fd741e363740c7f329812',1,'BodyManager::DrawSettings']]], + ['mdrawvelocity_246',['mDrawVelocity',['../struct_body_manager_1_1_draw_settings.html#a69ad1647a82e8904b2387981351a95f5',1,'BodyManager::DrawSettings']]], + ['mdrawworldtransform_247',['mDrawWorldTransform',['../struct_body_manager_1_1_draw_settings.html#a0355178c88d216e7c933ba8320d94498',1,'BodyManager::DrawSettings']]], + ['mdrivenwheel_248',['mDrivenWheel',['../class_vehicle_track_settings.html#aff65474e817507daa9d777ebc47d4aa1',1,'VehicleTrackSettings']]], + ['mdummybarrier_249',['mDummyBarrier',['../class_job_system_single_threaded.html#a0ef030c1327f4ebf4eb7c5ef383003d1',1,'JobSystemSingleThreaded']]], + ['medge_250',['mEdge',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a73f39336e0cda2338ca31459de675f4f',1,'EPAConvexHullBuilder::Triangle']]], + ['medgeconstraints_251',['mEdgeConstraints',['../class_soft_body_shared_settings.html#aac3d26e90a9bceedf9f030b2ae9ae1e6',1,'SoftBodySharedSettings']]], + ['medgeremap_252',['mEdgeRemap',['../class_soft_body_shared_settings_1_1_optimization_results.html#ac418fc1840c4b8339e09092d52924af1',1,'SoftBodySharedSettings::OptimizationResults']]], + ['melements_253',['mElements',['../class_static_array.html#a86389c0d1eb544f4c0e202693eff70ba',1,'StaticArray']]], + ['memory_20allocator_254',['Custom Memory Allocator',['../md__build_2_r_e_a_d_m_e.html#autotoc_md73',1,'']]], + ['memory_20management_255',['Memory Management',['../index.html#memory-management',1,'']]], + ['memory_2ecpp_256',['Memory.cpp',['../_memory_8cpp.html',1,'']]], + ['memory_2eh_257',['Memory.h',['../_memory_8h.html',1,'']]], + ['menabled_258',['mEnabled',['../class_constraint_settings.html#a190607bdccb3df5a2fef3d6cc60c4eae',1,'ConstraintSettings']]], + ['menableleancontroller_259',['mEnableLeanController',['../class_motorcycle_controller.html#a2d5d508db4203835f4b683a1eea97615',1,'MotorcycleController']]], + ['menableleansteeringlimit_260',['mEnableLeanSteeringLimit',['../class_motorcycle_controller.html#ad3494edd19039ec352b2454a9fc883e3',1,'MotorcycleController']]], + ['menablesuspensionforcepoint_261',['mEnableSuspensionForcePoint',['../class_wheel_settings.html#a6958c6097a36cfe3e3a5ad4e8930ec1d',1,'WheelSettings']]], + ['mend_262',['mEnd',['../struct_triangle_splitter_1_1_range.html#a360b002f40882d5fa400954934efec22',1,'TriangleSplitter::Range']]], + ['mendcycle_263',['mEndCycle',['../class_profile_sample.html#a49970a1931c5764ce97d388ac4516113',1,'ProfileSample']]], + ['mengine_264',['mengine',['../class_wheeled_vehicle_controller_settings.html#a4feb45c9b8ece24445bd8d3b2db8879b',1,'WheeledVehicleControllerSettings::mEngine'],['../class_tracked_vehicle_controller.html#a03666420e6389d5678d3b9756c381914',1,'TrackedVehicleController::mEngine'],['../class_tracked_vehicle_controller_settings.html#af4d3d6e0f083cac4e6df2d116047469a',1,'TrackedVehicleControllerSettings::mEngine'],['../class_wheeled_vehicle_controller.html#a4f7bcd7200890610de12f3eb207541e5',1,'WheeledVehicleController::mEngine']]], + ['menginetorqueratio_265',['mEngineTorqueRatio',['../class_vehicle_differential_settings.html#ac0d4ed7b362ab81c9d0e0e4422e40519',1,'VehicleDifferentialSettings']]], + ['menhancedinternaledgeremoval_266',['menhancedinternaledgeremoval',['../class_body_creation_settings.html#a3ff57f2892a515d062718701434601c9',1,'BodyCreationSettings::mEnhancedInternalEdgeRemoval'],['../class_character_base_settings.html#a203e7cb826ccd98d6f3551f2aa198ee3',1,'CharacterBaseSettings::mEnhancedInternalEdgeRemoval']]], + ['merror_267',['mError',['../class_result.html#ada2c3d37778adbf318df78b5bd427e17',1,'Result']]], + ['merrors_268',['merrors',['../class_physics_update_context.html#a57bb8d85178c1a1082cfabed7334fa75',1,'PhysicsUpdateContext::mErrors'],['../class_contact_constraint_manager_1_1_contact_allocator.html#a1968130257ab4041d6e18c676869fdd3',1,'ContactConstraintManager::ContactAllocator::mErrors']]], + ['mesh_269',['mesh',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a710fdb6adb881b408116ef95335e1961',1,'Mesh: Shape.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba710fdb6adb881b408116ef95335e1961',1,'Mesh: Shape.h']]], + ['mesh_20shapes_270',['Dynamic Mesh Shapes',['../index.html#dynamic-mesh-shapes',1,'']]], + ['meshshape_271',['meshshape',['../class_mesh_shape.html',1,'MeshShape'],['../class_mesh_shape.html#abf6a6e3387b360337377a77659e9e24d',1,'MeshShape::MeshShape(const MeshShapeSettings &inSettings, ShapeResult &outResult)'],['../class_mesh_shape.html#a1a765e94540451cae2d8d01e44f3cf14',1,'MeshShape::MeshShape()']]], + ['meshshape_2ecpp_272',['MeshShape.cpp',['../_mesh_shape_8cpp.html',1,'']]], + ['meshshape_2eh_273',['MeshShape.h',['../_mesh_shape_8h.html',1,'']]], + ['meshshapesettings_274',['meshshapesettings',['../class_mesh_shape_settings.html#a4349489150b22e58ecaf7047ea1f71ef',1,'MeshShapeSettings::MeshShapeSettings()'],['../class_mesh_shape_settings.html',1,'MeshShapeSettings'],['../class_mesh_shape_settings.html#a53088eb2ee555b196c0e50cd5972e07b',1,'MeshShapeSettings::MeshShapeSettings()=default'],['../class_mesh_shape_settings.html#a1d3907cc9968cdaff1b6b02dd82a1440',1,'MeshShapeSettings::MeshShapeSettings(VertexList inVertices, IndexedTriangleList inTriangles, PhysicsMaterialList inMaterials=PhysicsMaterialList())']]], + ['mf32_275',['mf32',['../class_vec4.html#a11992deca442bea5ba8c474274f17086',1,'Vec4::mF32'],['../class_vec3.html#aca3385f3736a2231ace7de3a558d2863',1,'Vec3::mF32'],['../class_vec8.html#a50640aa38e3cd80153dbac7f98fe111b',1,'Vec8::mF32'],['../class_vector.html#a9068b99f1e6ca351876bea81de170b29',1,'Vector::mF32']]], + ['mf64_276',['mF64',['../class_d_vec3.html#a02eda6f310f59ac7faf07b6b21de4fd5',1,'DVec3']]], + ['mface_277',['mFace',['../class_convex_hull_builder_1_1_edge.html#abfc9e0d70adde9c5c0118cccaace8677',1,'ConvexHullBuilder::Edge']]], + ['mfaces_278',['mFaces',['../class_soft_body_shared_settings.html#a80e68641c026a174fe3839d841901f43',1,'SoftBodySharedSettings']]], + ['mfinalizeislands_279',['mFinalizeIslands',['../struct_physics_update_context_1_1_step.html#aac4325e64e7bb9a135478c4378185dcf',1,'PhysicsUpdateContext::Step']]], + ['mfindcollisions_280',['mFindCollisions',['../struct_physics_update_context_1_1_step.html#a07546c1e4391dbf65e4d5a615f5432b4',1,'PhysicsUpdateContext::Step']]], + ['mfirstedge_281',['mFirstEdge',['../class_convex_hull_builder_1_1_face.html#a6c4d1af7b20e96a40a47b541c509bd1e',1,'ConvexHullBuilder::Face']]], + ['mfirstobjectindex_282',['mFirstObjectIndex',['../struct_fixed_size_free_list_1_1_batch.html#a381cfe3af06bf97888cfbe25909acdae',1,'FixedSizeFreeList::Batch']]], + ['mfixedpoint1_283',['mFixedPoint1',['../class_pulley_constraint_settings.html#a5d17666f846c10f4673814444a5da2b4',1,'PulleyConstraintSettings']]], + ['mfixedpoint2_284',['mFixedPoint2',['../class_pulley_constraint_settings.html#a196fe3b35ce1efccbc5169755973b51b',1,'PulleyConstraintSettings']]], + ['mflags_285',['mflags',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.html#a60f89a38a5a24637c79e79e7283afcff',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlock::mFlags'],['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html#a4f9d7524935e5df1acbdea40b2ccbd19',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader::mFlags']]], + ['mforward_286',['mForward',['../class_vehicle_constraint_settings.html#a8b5ce772889e8a121a3975f09dc511a0',1,'VehicleConstraintSettings']]], + ['mforwardinput_287',['mforwardinput',['../class_tracked_vehicle_controller.html#ad44aa72b04fbd715a4690cc9343b0693',1,'TrackedVehicleController::mForwardInput'],['../class_wheeled_vehicle_controller.html#a0a8a164e3c506f3763973ac2ae4cc656',1,'WheeledVehicleController::mForwardInput']]], + ['mfraction_288',['mfraction',['../struct_character_virtual_1_1_contact.html#a85abb6cf7ff39090dba7f596603c8f23',1,'CharacterVirtual::Contact::mFraction'],['../class_shape_cast_result.html#a8c1f5167202e5071cca22085350b0471',1,'ShapeCastResult::mFraction'],['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#ad8fd1d07aa868351147166971b648163',1,'PhysicsUpdateContext::Step::CCDBody::mFraction'],['../class_broad_phase_cast_result.html#a3336f4d32762bcbcb6bcfd2b6fcbf7fb',1,'BroadPhaseCastResult::mFraction']]], + ['mfractionplusslop_289',['mFractionPlusSlop',['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#ae085ff6f3acdcca6fb1aae40d191bf37',1,'PhysicsUpdateContext::Step::CCDBody']]], + ['mfrequency_290',['mFrequency',['../class_spring_settings.html#acea8e3f5767edbfaffa01417733b5dc0',1,'SpringSettings']]], + ['mfriction_291',['mfriction',['../class_character_settings.html#ae969662f5e8bf47dc1837922dc80aa85',1,'CharacterSettings::mFriction'],['../class_body_creation_settings.html#a43650f269088d8351a1ad5a1da8824c0',1,'BodyCreationSettings::mFriction'],['../class_soft_body_creation_settings.html#a2ab6ae93bb76e4033c1bd949671db613',1,'SoftBodyCreationSettings::mFriction']]], + ['mfrictionimpulse1_292',['mFrictionImpulse1',['../struct_collision_estimation_result_1_1_impulse.html#aebeff7b76e005ba545aa77eb670f11e7',1,'CollisionEstimationResult::Impulse']]], + ['mfrictionimpulse2_293',['mFrictionImpulse2',['../struct_collision_estimation_result_1_1_impulse.html#a2cb7bb86ca170e986cb89a85e5abf354',1,'CollisionEstimationResult::Impulse']]], + ['mfrom_294',['mFrom',['../struct_debug_renderer_recorder_1_1_line_blob.html#a343f8c5de1b54cea546e3e4c1c85f657',1,'DebugRendererRecorder::LineBlob']]], + ['mfurthestpointdistancesq_295',['mFurthestPointDistanceSq',['../class_convex_hull_builder_1_1_face.html#acefff13e1b81ab41edd158c68132c797',1,'ConvexHullBuilder::Face']]], + ['mgearratios_296',['mGearRatios',['../class_vehicle_transmission_settings.html#a3632548e7e09e7eb2fc8594ff039265e',1,'VehicleTransmissionSettings']]], + ['mgeometries_297',['mGeometries',['../struct_debug_renderer_recorder_1_1_frame.html#a82fd5de8dc097519fa4b70ca850e37af',1,'DebugRendererRecorder::Frame']]], + ['mgeometryid_298',['mGeometryID',['../struct_debug_renderer_recorder_1_1_geometry_blob.html#a3f71849ede55ddf41f62c291d2f0e720',1,'DebugRendererRecorder::GeometryBlob']]], + ['mgravity_299',['mGravity',['../class_soft_body_update_context.html#aa8cc078898b92ddb1f55822b01ccac66',1,'SoftBodyUpdateContext']]], + ['mgravityfactor_300',['mgravityfactor',['../class_character_settings.html#a3110e7b55981e0764c21c67351cb2115',1,'CharacterSettings::mGravityFactor'],['../class_soft_body_creation_settings.html#a9d292988c11dd960487870c88b31fd93',1,'SoftBodyCreationSettings::mGravityFactor'],['../class_body_creation_settings.html#a428f8482f140f5bd09e542d6d9c699c2',1,'BodyCreationSettings::mGravityFactor']]], + ['mgroundbodyid_301',['mGroundBodyID',['../class_character_base.html#a893268ea23759f36ebe8e317a54afa7e',1,'CharacterBase']]], + ['mgroundbodysubshapeid_302',['mGroundBodySubShapeID',['../class_character_base.html#afa16450cf4dc265231e0f616aa5eeec9',1,'CharacterBase']]], + ['mgroundmaterial_303',['mGroundMaterial',['../class_character_base.html#a2586c1571ba8e5adc511d71f413de2c1',1,'CharacterBase']]], + ['mgroundnormal_304',['mGroundNormal',['../class_character_base.html#a3537f13f2e427573266d9f591f1aadf3',1,'CharacterBase']]], + ['mgroundposition_305',['mGroundPosition',['../class_character_base.html#a2b9e9d8616bb0c7c8cb6ba59f5c7bf8a',1,'CharacterBase']]], + ['mgroundstate_306',['mGroundState',['../class_character_base.html#a1cf96842849baa268527dfa548219510',1,'CharacterBase']]], + ['mgrounduserdata_307',['mGroundUserData',['../class_character_base.html#acf9a8bdf6fa420d9615206d196794135',1,'CharacterBase']]], + ['mgroundvelocity_308',['mGroundVelocity',['../class_character_base.html#add543ae2333820dbf77e23009dfe4367',1,'CharacterBase']]], + ['mhadcollision_309',['mHadCollision',['../struct_character_virtual_1_1_contact.html#a90d33cabd5e7e175186d781efa42031f',1,'CharacterVirtual::Contact']]], + ['mhalfconeangle_310',['mHalfConeAngle',['../class_cone_constraint_settings.html#a066cd8f6efad21fe6f8bb0ead8e21c5d',1,'ConeConstraintSettings']]], + ['mhalfextent_311',['mhalfextent',['../class_box_shape_settings.html#a67b8492124d92c0a1021ffd9e87726cd',1,'BoxShapeSettings::mHalfExtent'],['../class_plane_shape_settings.html#a3a23d6998fdb06983bfeb395a366c88c',1,'PlaneShapeSettings::mHalfExtent']]], + ['mhalfextents_312',['mHalfExtents',['../class_oriented_box.html#aea20adbf3c48427f78ea4c6dfa61fb60',1,'OrientedBox']]], + ['mhalfheight_313',['mHalfHeight',['../class_cylinder_shape_settings.html#ad1e7c1388f75ba686cdedfb79b8effc8',1,'CylinderShapeSettings']]], + ['mhandbrakeinput_314',['mHandBrakeInput',['../class_wheeled_vehicle_controller.html#a064bc3d019a1997828bc46c9201a0283',1,'WheeledVehicleController']]], + ['mhascontact_315',['mHasContact',['../class_soft_body_vertex.html#a7a7cadb5a9910d419f7e42ad78079c67',1,'SoftBodyVertex']]], + ['mheight_316',['mHeight',['../struct_debug_renderer_recorder_1_1_text_blob.html#aabc4e3cc9c5a27ee8b151cbea90e20e3',1,'DebugRendererRecorder::TextBlob']]], + ['mheightfieldscale_317',['mHeightFieldScale',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#af095f971b28c201d485692e5899d6651',1,'HeightFieldShape::HSGetTrianglesContext']]], + ['mheightsamples_318',['mHeightSamples',['../class_height_field_shape_settings.html#a7e55509101c2c09001a431825ca0c82a',1,'HeightFieldShapeSettings']]], + ['mhingeaxis_319',['mHingeAxis',['../class_rack_and_pinion_constraint_settings.html#a7cde5d26bc397387ca93ed5de06dcadb',1,'RackAndPinionConstraintSettings']]], + ['mhingeaxis1_320',['mhingeaxis1',['../class_gear_constraint_settings.html#a5fb2af5b7aacc6b5d9c093b20fcabfe9',1,'GearConstraintSettings::mHingeAxis1'],['../class_hinge_constraint_settings.html#a745bb6b35b86180af4a193dba23f07ef',1,'HingeConstraintSettings::mHingeAxis1']]], + ['mhingeaxis2_321',['mhingeaxis2',['../class_gear_constraint_settings.html#a7064ccff3e5ee1826b469487e56abe94',1,'GearConstraintSettings::mHingeAxis2'],['../class_hinge_constraint_settings.html#a4069dacb8fa8c749be023b0817592b3c',1,'HingeConstraintSettings::mHingeAxis2']]], + ['mhit_322',['mhit',['../class_closest_hit_collision_collector.html#a770bdcdb6dc04ab4070aad443395e642',1,'ClosestHitCollisionCollector::mHit'],['../class_any_hit_collision_collector.html#a97c636d4025873517dae7ade6fc362c5',1,'AnyHitCollisionCollector::mHit'],['../struct_compound_shape_1_1_cast_ray_visitor.html#aa4f2babd360c7683d26e6d089179999e',1,'CompoundShape::CastRayVisitor::mHit']]], + ['mhitreductioncosmaxangle_323',['mHitReductionCosMaxAngle',['../class_character_virtual_settings.html#ae797247a9a90a161abd965a8f56ae584',1,'CharacterVirtualSettings']]], + ['mhits_324',['mHits',['../class_all_hit_collision_collector.html#ad55540177fc266c38b2170b4105bed54',1,'AllHitCollisionCollector']]], + ['mhulltolerance_325',['mHullTolerance',['../class_convex_hull_shape_settings.html#aa006dbe7352d17185c87bc21e04c32d7',1,'ConvexHullShapeSettings']]], + ['midx_326',['mIdx',['../class_indexed_triangle_no_material.html#a2d7f4d72033977f2f5de6a540dbe1faf',1,'IndexedTriangleNoMaterial']]], + ['mimpulses_327',['mImpulses',['../struct_collision_estimation_result.html#a5d4cfce2e09e021aef88daca461111fa',1,'CollisionEstimationResult']]], + ['mindexedtriangles_328',['mIndexedTriangles',['../class_mesh_shape_settings.html#a0a95e9bfa23d0743cfb4960874eae5f6',1,'MeshShapeSettings']]], + ['mindices_329',['mIndices',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.html#a68cd4254b336df34bec84b1f2a01a781',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlock']]], + ['minertia_330',['minertia',['../class_vehicle_track_settings.html#aa8f02b8434926bcb503772b9cf798d00',1,'VehicleTrackSettings::mInertia'],['../class_vehicle_engine_settings.html#abe75cc5c2522753f6f5e4ffc6035a183',1,'VehicleEngineSettings::mInertia'],['../class_wheel_settings_w_v.html#a0a0be2bb26687a4778426e9797f2bbb5',1,'WheelSettingsWV::mInertia'],['../class_mass_properties.html#a4772a70dff90b8dc68ff137e2590e3ef',1,'MassProperties::mInertia']]], + ['minertiamultiplier_331',['mInertiaMultiplier',['../class_body_creation_settings.html#a4bd85f028390274d79f291ea20f7c9f5',1,'BodyCreationSettings']]], + ['minitialangle_332',['mInitialAngle',['../struct_soft_body_shared_settings_1_1_dihedral_bend.html#a24ecaca4a5cb72ca51eef8a9fa739ea5',1,'SoftBodySharedSettings::DihedralBend']]], + ['minkowskidifference_333',['minkowskidifference',['../struct_minkowski_difference.html#a057663b9fae33081006e0ae3c51bbffb',1,'MinkowskiDifference::MinkowskiDifference()'],['../struct_minkowski_difference.html',1,'MinkowskiDifference< ConvexObjectA, ConvexObjectB >']]], + ['minnerbodylayer_334',['mInnerBodyLayer',['../class_character_virtual_settings.html#a699ed6e9c6b175c50ec3f0a349969904',1,'CharacterVirtualSettings']]], + ['minnerbodyshape_335',['mInnerBodyShape',['../class_character_virtual_settings.html#a894dfc1bbdcf975b2878430ed7df33ec',1,'CharacterVirtualSettings']]], + ['minnerradius_336',['mInnerRadius',['../class_compound_shape.html#a3218b42376c5d2e7958d01010fb4a326',1,'CompoundShape']]], + ['minnershape_337',['mInnerShape',['../class_decorated_shape.html#a776a5391c3d5f4a78f2e81934bc19110',1,'DecoratedShape']]], + ['minqueue_338',['mInQueue',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#aba25cdfa6f65d1725a9138cc062e98ea',1,'EPAConvexHullBuilder::Triangle']]], + ['mintegratevelocity_339',['mIntegrateVelocity',['../struct_physics_update_context_1_1_step.html#a6acbdc84376f0eb1eb55e0f24bd704ec',1,'PhysicsUpdateContext::Step']]], + ['mintegratevelocityreadidx_340',['mIntegrateVelocityReadIdx',['../struct_physics_update_context_1_1_step.html#aeb6a6b1469da472e0c419341085c12e1',1,'PhysicsUpdateContext::Step']]], + ['minvbind_341',['mInvBind',['../class_soft_body_shared_settings_1_1_inv_bind.html#a51d4596db847f6dcc78ea4a5cb1b3ec4',1,'SoftBodySharedSettings::InvBind']]], + ['minvbindindex_342',['mInvBindIndex',['../class_soft_body_shared_settings_1_1_skin_weight.html#a53c08815fb24f6bbf43a534b3cdcd61b',1,'SoftBodySharedSettings::SkinWeight']]], + ['minvbindmatrices_343',['mInvBindMatrices',['../class_soft_body_shared_settings.html#aad1cd9322a09772b71599421af704b49',1,'SoftBodySharedSettings']]], + ['minvdirection_344',['minvdirection',['../class_ray_inv_direction.html#a093897689117556a3a61eaaf15b543c2',1,'RayInvDirection::mInvDirection'],['../struct_compound_shape_1_1_cast_ray_visitor.html#a848fb221cd472001c314498be3ad4f71',1,'CompoundShape::CastRayVisitor::mInvDirection'],['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#afe91b86d85eebf7f35660efeb535ae9d',1,'CompoundShape::CastRayVisitorCollector::mInvDirection'],['../struct_compound_shape_1_1_cast_shape_visitor.html#ae3d1ce73b6255f42f50e9acb10608477',1,'CompoundShape::CastShapeVisitor::mInvDirection']]], + ['minvinertiascale1_345',['mInvInertiaScale1',['../class_contact_settings.html#aaf521121674ff2c72b762c87bfabed11',1,'ContactSettings']]], + ['minvinertiascale2_346',['minvinertiascale2',['../class_contact_settings.html#a699874a8c427e9861a83b993c55b1ee8',1,'ContactSettings::mInvInertiaScale2'],['../class_soft_body_contact_settings.html#a269db11f19bdd0b046d262a3eca1f9f3',1,'SoftBodyContactSettings::mInvInertiaScale2']]], + ['minvmass_347',['minvmass',['../struct_soft_body_shared_settings_1_1_vertex.html#aadc3a31d93e636681372f53ed66df26c',1,'SoftBodySharedSettings::Vertex::mInvMass'],['../class_soft_body_vertex.html#a43d59fd48a3f5955b220d29e2b3bb3f6',1,'SoftBodyVertex::mInvMass']]], + ['minvmassscale1_348',['minvmassscale1',['../class_contact_settings.html#a6b2c4b599362d4e3837120571af2c3ce',1,'ContactSettings::mInvMassScale1'],['../class_soft_body_contact_settings.html#a7e2a6ccb37566e38c25aa4841abbbead',1,'SoftBodyContactSettings::mInvMassScale1']]], + ['minvmassscale2_349',['minvmassscale2',['../class_contact_settings.html#a37639a208ebcf5ca37462c3689c73828',1,'ContactSettings::mInvMassScale2'],['../class_soft_body_contact_settings.html#a31f103e2af52af1d40468f5a5e4ce538',1,'SoftBodyContactSettings::mInvMassScale2']]], + ['minvtransform_350',['mInvTransform',['../class_collide_soft_body_vertices_vs_triangles.html#a6b17a54ebb55638f9b3bec43b352cc5c',1,'CollideSoftBodyVerticesVsTriangles']]], + ['misbackfacehit_351',['mIsBackFaceHit',['../class_shape_cast_result.html#a1b87f661ac91360c311fd96684f1d293',1,'ShapeCastResult']]], + ['misdone_352',['mIsDone',['../class_triangle_shape_1_1_t_s_get_triangles_context.html#a8c57dd14077aa690d0dde4d1454aaf90',1,'TriangleShape::TSGetTrianglesContext']]], + ['misfirst_353',['mIsFirst',['../struct_physics_update_context_1_1_step.html#a88d7397f7a46e0455738d46efa50a1ac',1,'PhysicsUpdateContext::Step']]], + ['misinsideout_354',['misinsideout',['../class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html#a2fddbc85a34e6e1dfa5e49624dde0f47',1,'ConvexHullShape::CHSGetTrianglesContext::mIsInsideOut'],['../class_convex_shape_1_1_c_s_get_triangles_context.html#a17b70d3851175bf3454059a58b32dadf',1,'ConvexShape::CSGetTrianglesContext::mIsInsideOut'],['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a55fbabce067d73ce77dde891c6ba347a',1,'HeightFieldShape::HSGetTrianglesContext::mIsInsideOut'],['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#add05557242b27f0f618b6da317445f21',1,'MeshShape::MSGetTrianglesContext::mIsInsideOut']]], + ['mislandbuilder_355',['mIslandBuilder',['../class_physics_update_context.html#afa015c9ca2db6ffc71181cb809cdb30a',1,'PhysicsUpdateContext']]], + ['mislandindex_356',['mIslandIndex',['../class_large_island_splitter_1_1_splits.html#a7ba0459819cd7fefc065ed06d30086ae',1,'LargeIslandSplitter::Splits']]], + ['mislast_357',['mIsLast',['../struct_physics_update_context_1_1_step.html#a0ec883309d690e463275cb9932cb64c1',1,'PhysicsUpdateContext::Step']]], + ['misparallel_358',['mIsParallel',['../class_ray_inv_direction.html#a0188d384cbde315c79e1986a67efd7ce',1,'RayInvDirection']]], + ['misrotationidentity_359',['mIsRotationIdentity',['../struct_compound_shape_1_1_sub_shape.html#a25c797febba76594f53b5303867fe0fb',1,'CompoundShape::SubShape']]], + ['missensor_360',['missensor',['../class_body_creation_settings.html#ad327b3b479e63fe5bfbecf0510d69d44',1,'BodyCreationSettings::mIsSensor'],['../class_contact_settings.html#a1c5f448521399a40a9384dcc1aa1474f',1,'ContactSettings::mIsSensor'],['../class_soft_body_contact_settings.html#a26a9a0351652cc687f190524e4f49532',1,'SoftBodyContactSettings::mIsSensor']]], + ['missensorb_361',['mIsSensorB',['../struct_character_virtual_1_1_contact.html#ae19592c8bdfb0e4fc0b22b88e12f3ebd',1,'CharacterVirtual::Contact']]], + ['mitemsprocessed_362',['mItemsProcessed',['../class_large_island_splitter_1_1_splits.html#a39339a4cb247742be9ae64489c2758e7',1,'LargeIslandSplitter::Splits']]], + ['mjobs_363',['mJobs',['../class_job_system_single_threaded.html#a46ee269e0b3c8933cade0f12dbd47d88',1,'JobSystemSingleThreaded']]], + ['mjobsystem_364',['mJobSystem',['../class_physics_update_context.html#a736edcba88a4a7bd3bc37d417e317ed7',1,'PhysicsUpdateContext']]], + ['mjoint1to2_365',['mJoint1To2',['../class_skeleton_mapper_1_1_mapping.html#a15f95111d1d250ca13a5de5e27f55409',1,'SkeletonMapper::Mapping']]], + ['mjoint2to1_366',['mJoint2To1',['../class_skeleton_mapper_1_1_mapping.html#a508b9a2e6f5072665751b14c66b1a426',1,'SkeletonMapper::Mapping']]], + ['mjointidx_367',['mjointidx',['../class_skeleton_mapper_1_1_unmapped.html#a2fc5f1a02042bc53fe51ce0e76b88225',1,'SkeletonMapper::Unmapped::mJointIdx'],['../class_skeleton_mapper_1_1_locked.html#a3f7fd92624a86f0fcd323e594e336e7b',1,'SkeletonMapper::Locked::mJointIdx']]], + ['mjointidx1_368',['mJointIdx1',['../class_skeleton_mapper_1_1_mapping.html#ad9c3aee5f9212c14890160465b4b5e76',1,'SkeletonMapper::Mapping']]], + ['mjointidx2_369',['mJointIdx2',['../class_skeleton_mapper_1_1_mapping.html#afb9eae211c89b42d0fbafcba3c83dc9a',1,'SkeletonMapper::Mapping']]], + ['mjointindex_370',['mJointIndex',['../class_soft_body_shared_settings_1_1_inv_bind.html#ae63919d3bba07a52bc9832d228531077',1,'SoftBodySharedSettings::InvBind']]], + ['mjointindices1_371',['mJointIndices1',['../class_skeleton_mapper_1_1_chain.html#a0ab11a6d71e15f14ba33bfcf2656aa1d',1,'SkeletonMapper::Chain']]], + ['mjointindices2_372',['mJointIndices2',['../class_skeleton_mapper_1_1_chain.html#a7dc7efb54107e58e7c82d2e49eeec139',1,'SkeletonMapper::Chain']]], + ['mjointname_373',['mJointName',['../class_skeletal_animation_1_1_animated_joint.html#acef5a5583e808f599a7a018329f2b1c1',1,'SkeletalAnimation::AnimatedJoint']]], + ['mkeyframes_374',['mKeyframes',['../class_skeletal_animation_1_1_animated_joint.html#a6f522c5bab57cda9b07238a6eed41637',1,'SkeletalAnimation::AnimatedJoint']]], + ['mlambda_375',['mLambda',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#abf3e8715dbc37a34783e322dc2211074',1,'EPAConvexHullBuilder::Triangle']]], + ['mlambdarelativeto0_376',['mLambdaRelativeTo0',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#ad717cb9534ef44896e91c33ab4d5ba0c',1,'EPAConvexHullBuilder::Triangle']]], + ['mlargestpenetration_377',['mLargestPenetration',['../class_soft_body_vertex.html#a8277ada20f83ca568c1e6173720fbf23',1,'SoftBodyVertex']]], + ['mlastobjectindex_378',['mLastObjectIndex',['../struct_fixed_size_free_list_1_1_batch.html#ae7d23513b20b319c101f195c86a94a79',1,'FixedSizeFreeList::Batch']]], + ['mlateralfriction_379',['mlateralfriction',['../class_wheel_settings_w_v.html#a352e4f9e4960e63fd95257d7649db932',1,'WheelSettingsWV::mLateralFriction'],['../class_wheel_settings_t_v.html#aa156b84b239ea05d5c93527422398de2',1,'WheelSettingsTV::mLateralFriction']]], + ['mlateralpart_380',['mLateralPart',['../class_wheel.html#a3e466a6ec5a4dc839c86586fb0e0dd6c',1,'Wheel']]], + ['mlateralslip_381',['mLateralSlip',['../class_wheel_w_v.html#ad9555d3a3c1a7bc1eb6e77d4b4fb0f24',1,'WheelWV']]], + ['mlayer_382',['mLayer',['../class_character_settings.html#a6ae08196eebfbd6121386a6838848dbd',1,'CharacterSettings']]], + ['mleafbounds_383',['mLeafBounds',['../struct_quad_tree_1_1_add_state.html#a1b7c0c242edfab856c4ccf10bd514f44',1,'QuadTree::AddState']]], + ['mleafid_384',['mLeafID',['../struct_quad_tree_1_1_add_state.html#a789c4af727fb9a0ab0a0fac83c57ac5f',1,'QuadTree::AddState']]], + ['mleafnodecount_385',['mLeafNodeCount',['../struct_a_a_b_b_tree_builder_stats.html#a62c8f089af5a357cf40d50d27961ee1b',1,'AABBTreeBuilderStats']]], + ['mleafsize_386',['mLeafSize',['../struct_triangle_splitter_1_1_stats.html#a33499dd8acab67cf3456bf92b774c1b7',1,'TriangleSplitter::Stats']]], + ['mleansmoothingfactor_387',['mleansmoothingfactor',['../class_motorcycle_controller_settings.html#ab432e48f3f8bf7836d0b6c2ea9745a8f',1,'MotorcycleControllerSettings::mLeanSmoothingFactor'],['../class_motorcycle_controller.html#a7196a7d0932e3e537e39514385e7184c',1,'MotorcycleController::mLeanSmoothingFactor']]], + ['mleanspringconstant_388',['mleanspringconstant',['../class_motorcycle_controller_settings.html#a89d4563cd7e9659a4fcdc2c7b34832d9',1,'MotorcycleControllerSettings::mLeanSpringConstant'],['../class_motorcycle_controller.html#a688718567a63ba567e52c13dab088373',1,'MotorcycleController::mLeanSpringConstant']]], + ['mleanspringdamping_389',['mleanspringdamping',['../class_motorcycle_controller_settings.html#a1b4a9d49c0305c91955ce074881d46b0',1,'MotorcycleControllerSettings::mLeanSpringDamping'],['../class_motorcycle_controller.html#a97fa55bb4283d82101118a7cb3c789b8',1,'MotorcycleController::mLeanSpringDamping']]], + ['mleanspringintegrateddeltaangle_390',['mLeanSpringIntegratedDeltaAngle',['../class_motorcycle_controller.html#a0fef8cc24d8f3afa9ec59a015fbd0639',1,'MotorcycleController']]], + ['mleanspringintegrationcoefficient_391',['mleanspringintegrationcoefficient',['../class_motorcycle_controller_settings.html#a1dbe2b657773dabc46548a4b14a09446',1,'MotorcycleControllerSettings::mLeanSpringIntegrationCoefficient'],['../class_motorcycle_controller.html#a159abc09d514573ce94519c424244a11',1,'MotorcycleController::mLeanSpringIntegrationCoefficient']]], + ['mleanspringintegrationcoefficientdecay_392',['mleanspringintegrationcoefficientdecay',['../class_motorcycle_controller_settings.html#ab0a0e9d685c79d159bfab4736a578273',1,'MotorcycleControllerSettings::mLeanSpringIntegrationCoefficientDecay'],['../class_motorcycle_controller.html#a745a8a1838cf92a9bf7a993dc105e541',1,'MotorcycleController::mLeanSpringIntegrationCoefficientDecay']]], + ['mleftratio_393',['mLeftRatio',['../class_tracked_vehicle_controller.html#a09bd9910c15055a76e5d524fef8c9f0f',1,'TrackedVehicleController']]], + ['mleftrightsplit_394',['mLeftRightSplit',['../class_vehicle_differential_settings.html#a85f84f17c3b26d4cef5b1036e3da9728',1,'VehicleDifferentialSettings']]], + ['mleftwheel_395',['mleftwheel',['../class_vehicle_anti_roll_bar.html#ae4afc75ffe5f9652d5539064069d4271',1,'VehicleAntiRollBar::mLeftWheel'],['../class_vehicle_differential_settings.html#a55fb4d9bec462184471ba37ec367bd90',1,'VehicleDifferentialSettings::mLeftWheel']]], + ['mlimitedslipratio_396',['mLimitedSlipRatio',['../class_vehicle_differential_settings.html#ad5556c4beadddfc653931faeafddbc18',1,'VehicleDifferentialSettings']]], + ['mlimitmax_397',['mLimitMax',['../class_six_d_o_f_constraint_settings.html#a9921157d87173da02847e55fd49d21f0',1,'SixDOFConstraintSettings']]], + ['mlimitmin_398',['mLimitMin',['../class_six_d_o_f_constraint_settings.html#a647d4f74164c943a3a57cd7e2de765d0',1,'SixDOFConstraintSettings']]], + ['mlimitsmax_399',['mlimitsmax',['../class_hinge_constraint_settings.html#a9611cf15f448a12d21191490b9628316',1,'HingeConstraintSettings::mLimitsMax'],['../class_slider_constraint_settings.html#a91634e77db65bc26c41edf00df74d2af',1,'SliderConstraintSettings::mLimitsMax']]], + ['mlimitsmin_400',['mlimitsmin',['../class_hinge_constraint_settings.html#a269eb742fd612f668946d21161a182ac',1,'HingeConstraintSettings::mLimitsMin'],['../class_slider_constraint_settings.html#abe9a0acdb04a3edde746680d7656e388',1,'SliderConstraintSettings::mLimitsMin']]], + ['mlimitsspringsettings_401',['mlimitsspringsettings',['../class_distance_constraint_settings.html#a09758da3857c1883a7fcd1e128bdb175',1,'DistanceConstraintSettings::mLimitsSpringSettings'],['../class_hinge_constraint_settings.html#aefad4492ec92f4998a466087b5a89c8c',1,'HingeConstraintSettings::mLimitsSpringSettings'],['../class_six_d_o_f_constraint_settings.html#a43f8dc31c115124722b98689fce631f7',1,'SixDOFConstraintSettings::mLimitsSpringSettings'],['../class_slider_constraint_settings.html#acdba7344cb45b5f2097c0cb458e3a271',1,'SliderConstraintSettings::mLimitsSpringSettings']]], + ['mlinearcastmaxpenetration_402',['mLinearCastMaxPenetration',['../struct_physics_settings.html#aa5090787a0d12a9e7519da9e752de0e7',1,'PhysicsSettings']]], + ['mlinearcastthreshold_403',['mLinearCastThreshold',['../struct_physics_settings.html#ab5580db2e8580b84eb6be01a24cc54c4',1,'PhysicsSettings']]], + ['mlinearcastthresholdsq_404',['mLinearCastThresholdSq',['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a3dab2c4142f45798d20aa1d77012099a',1,'PhysicsUpdateContext::Step::CCDBody']]], + ['mlineardamping_405',['mlineardamping',['../class_body_creation_settings.html#acda69c9b63d5be31be48b13059d3d438',1,'BodyCreationSettings::mLinearDamping'],['../class_soft_body_creation_settings.html#a22002363e2b432c4e009b204df1f4f81',1,'SoftBodyCreationSettings::mLinearDamping']]], + ['mlinearvelocity_406',['mlinearvelocity',['../class_body_creation_settings.html#a31f029773df5278a498c417d0a7e2c83',1,'BodyCreationSettings::mLinearVelocity'],['../struct_character_virtual_1_1_contact.html#ab4c53990ab4c51b1b7f9abe59de0775c',1,'CharacterVirtual::Contact::mLinearVelocity']]], + ['mlinearvelocity1_407',['mLinearVelocity1',['../struct_collision_estimation_result.html#ac162c5b8c86cd927de472acbe76adae0',1,'CollisionEstimationResult']]], + ['mlinearvelocity2_408',['mLinearVelocity2',['../struct_collision_estimation_result.html#a24e229dac9d990dd915e0365c34d0167',1,'CollisionEstimationResult']]], + ['mlines_409',['mLines',['../struct_debug_renderer_recorder_1_1_frame.html#a0fde95e5dfd6877e0f6b56cba94dd58b',1,'DebugRendererRecorder::Frame']]], + ['mlocalbounds_410',['mLocalBounds',['../class_compound_shape.html#a230f2ff5c2d384c55f7845ff18acc8b0',1,'CompoundShape']]], + ['mlocalbox_411',['mlocalbox',['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#ae803bcfcf769987698f075c49f34708b',1,'CompoundShape::CollectTransformedShapesVisitor::mLocalBox'],['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a949f66e2b77e7cce9aff85ae630dfc74',1,'HeightFieldShape::HSGetTrianglesContext::mLocalBox'],['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#ad807e0e7e746e3f0486051df92e0d87e',1,'MeshShape::MSGetTrianglesContext::mLocalBox']]], + ['mlocalposition_412',['mLocalPosition',['../class_collide_soft_body_vertices_vs_triangles.html#a6e56ae2ebc875f2880d0e9cbea51324e',1,'CollideSoftBodyVerticesVsTriangles']]], + ['mlocaltoworld_413',['mlocaltoworld',['../class_convex_shape_1_1_c_s_get_triangles_context.html#a781c219b40131230c304766330b6d772',1,'ConvexShape::CSGetTrianglesContext::mLocalToWorld'],['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a2097185e599e86009416c769e159aa0c',1,'HeightFieldShape::HSGetTrianglesContext::mLocalToWorld'],['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#a80d76f1cb4cac85d57bd62a9f05b16cb',1,'MeshShape::MSGetTrianglesContext::mLocalToWorld']]], + ['mlods_414',['mLODs',['../class_debug_renderer_1_1_geometry.html#a63ed4efbd477ef96056db9fb3b146fb6',1,'DebugRenderer::Geometry']]], + ['mlongitudinalfriction_415',['mlongitudinalfriction',['../class_wheel_settings_t_v.html#adf00b725c4066bebdb541cc99025de76',1,'WheelSettingsTV::mLongitudinalFriction'],['../class_wheel_settings_w_v.html#a6d94d1e2a107362a82d5c525d524dafc',1,'WheelSettingsWV::mLongitudinalFriction']]], + ['mlongitudinalpart_416',['mLongitudinalPart',['../class_wheel.html#aad04d9e83a92376fb5ef078fbc1577bc',1,'Wheel']]], + ['mlongitudinalslip_417',['mLongitudinalSlip',['../class_wheel_w_v.html#ae3f4f3b52d930e58f4309199889a2342',1,'WheelWV']]], + ['mlraconstraints_418',['mLRAConstraints',['../class_soft_body_shared_settings.html#a2e0a1f92a8f29382bcf948ad9691e6d0',1,'SoftBodySharedSettings']]], + ['mlramaxdistancemultiplier_419',['mLRAMaxDistanceMultiplier',['../struct_soft_body_shared_settings_1_1_vertex_attributes.html#a11c3e0f080ed6c5b738a2e0800a07909',1,'SoftBodySharedSettings::VertexAttributes']]], + ['mlraremap_420',['mLRARemap',['../class_soft_body_shared_settings_1_1_optimization_results.html#a21d8c58c1074adcdd7ec2851859a0ec3',1,'SoftBodySharedSettings::OptimizationResults']]], + ['mlratype_421',['mLRAType',['../struct_soft_body_shared_settings_1_1_vertex_attributes.html#a450d6c1dce4eb0747df02c81529812ab',1,'SoftBodySharedSettings::VertexAttributes']]], + ['mmakerotationidentity_422',['mMakeRotationIdentity',['../class_soft_body_creation_settings.html#a87f3befe0bd9553e02b7cb248e1989dc',1,'SoftBodyCreationSettings']]], + ['mmanifoldtolerancesq_423',['mManifoldToleranceSq',['../struct_physics_settings.html#ae045877d52a061978eb78569b96b0b62',1,'PhysicsSettings']]], + ['mmap_424',['mMap',['../struct_lock_free_hash_map_1_1_iterator.html#af25da5da601250661337b73982cddde8',1,'LockFreeHashMap::Iterator']]], + ['mmass_425',['mmass',['../class_mass_properties.html#adebd439d6c8df005a64cbcced1d5ec36',1,'MassProperties::mMass'],['../class_character_settings.html#a9d6fa4613227caf468f618e34011e657',1,'CharacterSettings::mMass'],['../class_character_virtual_settings.html#a71a9f1bf58ebf5c2d8b272f62fb7c734',1,'CharacterVirtualSettings::mMass']]], + ['mmasspropertiesoverride_426',['mMassPropertiesOverride',['../class_body_creation_settings.html#af7f022cb3042750da187b24e8a242c99',1,'BodyCreationSettings']]], + ['mmaterial_427',['mmaterial',['../struct_character_virtual_1_1_contact.html#a668d987b784e7b11dd030ad79f202cab',1,'CharacterVirtual::Contact::mMaterial'],['../class_convex_shape_settings.html#a1eedf808729ed4b2d4e67088749639d8',1,'ConvexShapeSettings::mMaterial'],['../class_plane_shape_settings.html#a40e64ab3f0d0a8079c57af69298873e8',1,'PlaneShapeSettings::mMaterial']]], + ['mmaterialindex_428',['mmaterialindex',['../class_indexed_triangle.html#a6f74ac8b93d784fa3ed36ebb616f2f4a',1,'IndexedTriangle::mMaterialIndex'],['../class_triangle.html#a7f441edf952be97bf6110750c69b620a',1,'Triangle::mMaterialIndex'],['../struct_soft_body_shared_settings_1_1_face.html#a475a4ba9dfb9a957ac0d8036ca46faba',1,'SoftBodySharedSettings::Face::mMaterialIndex']]], + ['mmaterialindices_429',['mMaterialIndices',['../class_height_field_shape_settings.html#aea730c5a9dc0ebbc614448d5b6187d00',1,'HeightFieldShapeSettings']]], + ['mmaterials_430',['mmaterials',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#ad87f4db5f7a76c71bb2fa5981f1e6d3c',1,'HeightFieldShape::HSGetTrianglesContext::mMaterials'],['../class_height_field_shape_settings.html#af9c4d464234b38f19df16faab06c6f38',1,'HeightFieldShapeSettings::mMaterials'],['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#a6ef8c591e534e7c551cd807f98e4db15',1,'MeshShape::MSGetTrianglesContext::mMaterials'],['../class_mesh_shape_settings.html#ac9156bca05e60c7664d540d318dfd361',1,'MeshShapeSettings::mMaterials'],['../class_soft_body_shared_settings.html#af75bcb99fb4bb3a23d5e62479d9b168a',1,'SoftBodySharedSettings::mMaterials']]], + ['mmaterialscapacity_431',['mMaterialsCapacity',['../class_height_field_shape_settings.html#a356d9e6fda2e3fca23239b77dd86d273',1,'HeightFieldShapeSettings']]], + ['mmax_432',['mMax',['../class_a_a_box.html#afc84f3cbe23910c0651707050f8d51a1',1,'AABox']]], + ['mmaxangularvelocity_433',['mMaxAngularVelocity',['../class_body_creation_settings.html#a86ee89ede6a31b9f8df4e9c257051119',1,'BodyCreationSettings']]], + ['mmaxbodies_434',['mMaxBodies',['../struct_body_manager_1_1_body_stats.html#af523de7c042e3938507160de0377356c',1,'BodyManager::BodyStats']]], + ['mmaxbodypairsperqueue_435',['mMaxBodyPairsPerQueue',['../struct_physics_update_context_1_1_step.html#ad93f9b39dad02dee27f009f63468d5f0',1,'PhysicsUpdateContext::Step']]], + ['mmaxbraketorque_436',['mmaxbraketorque',['../class_vehicle_track_settings.html#a0bd6cbda956b1149e646733fd5791a68',1,'VehicleTrackSettings::mMaxBrakeTorque'],['../class_wheel_settings_w_v.html#a3a20101ee6ef942fc0d968243c9b7aba',1,'WheelSettingsWV::mMaxBrakeTorque']]], + ['mmaxcollisioniterations_437',['mMaxCollisionIterations',['../class_character_virtual_settings.html#a1ddf59bd95417f3b95341f03ade9812b',1,'CharacterVirtualSettings']]], + ['mmaxconstraintiterations_438',['mMaxConstraintIterations',['../class_character_virtual_settings.html#a1c5a728c9f0e095f4c76a51e61ff8bb3',1,'CharacterVirtualSettings']]], + ['mmaxconvexradius_439',['mMaxConvexRadius',['../class_convex_hull_shape_settings.html#a82032e45fa5a1d7ff889135d2ec6489f',1,'ConvexHullShapeSettings']]], + ['mmaxdepth_440',['mMaxDepth',['../struct_a_a_b_b_tree_builder_stats.html#a5722b3c6619dc1793e79e902685aaaa5',1,'AABBTreeBuilderStats']]], + ['mmaxdistance_441',['mmaxdistance',['../class_distance_constraint_settings.html#a2535335c96322853cd8243a199ce54d1',1,'DistanceConstraintSettings::mMaxDistance'],['../class_soft_body_shared_settings_1_1_skinned.html#a1e576b87460323a5a79528381102e513',1,'SoftBodySharedSettings::Skinned::mMaxDistance'],['../class_soft_body_shared_settings_1_1_l_r_a.html#a69529c085f2fdbc45e10b0c360ab07dd',1,'SoftBodySharedSettings::LRA::mMaxDistance']]], + ['mmaxerrorconvexradius_442',['mMaxErrorConvexRadius',['../class_convex_hull_shape_settings.html#ae8ff620cba66c37323776d2aa4be06da',1,'ConvexHullShapeSettings']]], + ['mmaxforcelimit_443',['mMaxForceLimit',['../class_motor_settings.html#aacf73d5d1dc3d729ed505b01f2b91425',1,'MotorSettings']]], + ['mmaxfriction_444',['mMaxFriction',['../class_six_d_o_f_constraint_settings.html#a94fa871604ea96b8db52fe4a099029f8',1,'SixDOFConstraintSettings']]], + ['mmaxfrictionforce_445',['mmaxfrictionforce',['../class_path_constraint_settings.html#ada5d4e5611d226800461d69120122538',1,'PathConstraintSettings::mMaxFrictionForce'],['../class_slider_constraint_settings.html#a00acc443c620fecba7342534d9ec50eb',1,'SliderConstraintSettings::mMaxFrictionForce']]], + ['mmaxfrictiontorque_446',['mmaxfrictiontorque',['../class_hinge_constraint_settings.html#a2f046631caa15b87030e4edfb568f248',1,'HingeConstraintSettings::mMaxFrictionTorque'],['../class_swing_twist_constraint_settings.html#af34435581700a68140347036aa5bb64d',1,'SwingTwistConstraintSettings::mMaxFrictionTorque']]], + ['mmaxhandbraketorque_447',['mMaxHandBrakeTorque',['../class_wheel_settings_w_v.html#a476d921671455235bef7d9e035584e11',1,'WheelSettingsWV']]], + ['mmaxheightvalue_448',['mMaxHeightValue',['../class_height_field_shape_settings.html#a8851f44e1c36e194a1fa033c463fedb7',1,'HeightFieldShapeSettings']]], + ['mmaxinflightbodypairs_449',['mMaxInFlightBodyPairs',['../struct_physics_settings.html#a4b51fef768d4839927757e9b3ae65177',1,'PhysicsSettings']]], + ['mmaxleanangle_450',['mmaxleanangle',['../class_motorcycle_controller_settings.html#a0dac3fbd774847fa6fa66631b7cc2e91',1,'MotorcycleControllerSettings::mMaxLeanAngle'],['../class_motorcycle_controller.html#a55d13eac40efa2eef9a7d87f23c39405',1,'MotorcycleController::mMaxLeanAngle']]], + ['mmaxlength_451',['mMaxLength',['../class_pulley_constraint_settings.html#a708a1e9d3a6408bf8db17b495a2bb9a9',1,'PulleyConstraintSettings']]], + ['mmaxlinearvelocity_452',['mmaxlinearvelocity',['../class_body_creation_settings.html#a54911a3a04da2c077dd27c5f8bca960d',1,'BodyCreationSettings::mMaxLinearVelocity'],['../class_soft_body_creation_settings.html#ab14a89101e8b96a1fee25d6d31d505a2',1,'SoftBodyCreationSettings::mMaxLinearVelocity']]], + ['mmaxnumhits_453',['mMaxNumHits',['../class_character_virtual_settings.html#afb718ba333f1f915a205d060097f8a81',1,'CharacterVirtualSettings']]], + ['mmaxpenetration_454',['mMaxPenetration',['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a006b8fd2ec68238645cc7c4b48bf43fa',1,'PhysicsUpdateContext::Step::CCDBody']]], + ['mmaxpenetrationdistance_455',['mMaxPenetrationDistance',['../struct_physics_settings.html#a85f7318d995294af04d6a5c0fe0d01a6',1,'PhysicsSettings']]], + ['mmaxpitchrollangle_456',['mMaxPitchRollAngle',['../class_vehicle_constraint_settings.html#ac9f0a4176f10867c466a9dc65b546b45',1,'VehicleConstraintSettings']]], + ['mmaxrpm_457',['mMaxRPM',['../class_vehicle_engine_settings.html#a68b6fa14900e23076bb25b3280fef3c5',1,'VehicleEngineSettings']]], + ['mmaxseparationdistance_458',['mMaxSeparationDistance',['../class_collide_shape_settings.html#a511c99470c2fe3b2e82d06ffe26c52c1',1,'CollideShapeSettings']]], + ['mmaxslopeangle_459',['mMaxSlopeAngle',['../class_character_base_settings.html#a6daeb1476d88ee8f13118e85a9c07b67',1,'CharacterBaseSettings']]], + ['mmaxsteerangle_460',['mMaxSteerAngle',['../class_wheel_settings_w_v.html#abdbf204dc70e99e88d3c58938ec2360f',1,'WheelSettingsWV']]], + ['mmaxstrength_461',['mMaxStrength',['../class_character_virtual_settings.html#a6187712f620530e0b086a0437690929f',1,'CharacterVirtualSettings']]], + ['mmaxtorque_462',['mMaxTorque',['../class_vehicle_engine_settings.html#a406aada0f8bcbf536d743de1f8f77329',1,'VehicleEngineSettings']]], + ['mmaxtorquelimit_463',['mMaxTorqueLimit',['../class_motor_settings.html#a53921d266a57d01aa6833ca3fe09c3a7',1,'MotorSettings']]], + ['mmaxtrianglesperleaf_464',['mmaxtrianglesperleaf',['../class_mesh_shape_settings.html#ae20856df51f55d782a3130333ae33a1d',1,'MeshShapeSettings::mMaxTrianglesPerLeaf'],['../struct_a_a_b_b_tree_builder_stats.html#a567b593b4f4bb7cdc2977a2a624da662',1,'AABBTreeBuilderStats::mMaxTrianglesPerLeaf']]], + ['mmaxtrianglesrequested_465',['mmaxtrianglesrequested',['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#ae533add6a3202271139f9a1e6b3b3492',1,'MeshShape::MSGetTrianglesContext::mMaxTrianglesRequested'],['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#acf57508ac110ac8582919e62b01c0b81',1,'HeightFieldShape::HSGetTrianglesContext::mMaxTrianglesRequested']]], + ['mmeshscale_466',['mMeshScale',['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#aa843a8656ead9188361add0ed4e0c20e',1,'MeshShape::MSGetTrianglesContext']]], + ['mmin_467',['mMin',['../class_a_a_box.html#a4082e61b6401d675d89d6b4944fd7911',1,'AABox']]], + ['mmindepth_468',['mMinDepth',['../struct_a_a_b_b_tree_builder_stats.html#aa59fbfa1cd92eb27ca7c1e13c4d28163',1,'AABBTreeBuilderStats']]], + ['mmindistance_469',['mMinDistance',['../class_distance_constraint_settings.html#a7dd98fea4e812f9bc4168804c1bc4742',1,'DistanceConstraintSettings']]], + ['mminforcelimit_470',['mMinForceLimit',['../class_motor_settings.html#ac8b066324ceb0052a8ff637e77d4e9c1',1,'MotorSettings']]], + ['mminheightvalue_471',['mMinHeightValue',['../class_height_field_shape_settings.html#a5a5666c8a5c77d89b4fd1f7fb555a96e',1,'HeightFieldShapeSettings']]], + ['mminlength_472',['mMinLength',['../class_pulley_constraint_settings.html#afdec90c88fa61b375bae4454fc31b689',1,'PulleyConstraintSettings']]], + ['mminrpm_473',['mMinRPM',['../class_vehicle_engine_settings.html#a0ac03e624a16d07af8d20dee5a1924bb',1,'VehicleEngineSettings']]], + ['mmintimeremaining_474',['mMinTimeRemaining',['../class_character_virtual_settings.html#a43cabe3e717a0d42ce6ba8383760c20f',1,'CharacterVirtualSettings']]], + ['mmintorquelimit_475',['mMinTorqueLimit',['../class_motor_settings.html#a7073ab453c838bef080a3386da6927bd',1,'MotorSettings']]], + ['mminvelocityforrestitution_476',['mMinVelocityForRestitution',['../struct_physics_settings.html#a3f68f35ad1244421ad126d3db5a617f3',1,'PhysicsSettings']]], + ['mmode_477',['mmode',['../class_spring_settings.html#a7d27c541e7d25d9da0c263ec99ea528a',1,'SpringSettings::mMode'],['../class_vehicle_transmission_settings.html#a57d1f98cbd50ba710d6c1941e2788e8f',1,'VehicleTransmissionSettings::mMode']]], + ['mmodelcolor_478',['mModelColor',['../struct_debug_renderer_recorder_1_1_geometry_blob.html#ab579338ada87514ef770f127b68ac54f',1,'DebugRendererRecorder::GeometryBlob']]], + ['mmodelmatrix_479',['mModelMatrix',['../struct_debug_renderer_recorder_1_1_geometry_blob.html#afed8fc1371a12e786f36fa878d76d463',1,'DebugRendererRecorder::GeometryBlob']]], + ['mmotionproperties_480',['mmotionproperties',['../class_body_with_motion_properties.html#a56d65018e9d81d40acad96fc9e5802dc',1,'BodyWithMotionProperties::mMotionProperties'],['../class_soft_body_with_motion_properties_and_shape.html#afd4fc31265249747650bb839c57f527c',1,'SoftBodyWithMotionPropertiesAndShape::mMotionProperties'],['../class_soft_body_update_context.html#a9562dabc569151bf015943cea75f2d12',1,'SoftBodyUpdateContext::mMotionProperties']]], + ['mmotionquality_481',['mMotionQuality',['../class_body_creation_settings.html#a66c8700dfa9204a90b9bd7c7db50e85f',1,'BodyCreationSettings']]], + ['mmotiontype_482',['mMotionType',['../class_body_creation_settings.html#ad8fc3740b604486c0b030b2d9d381b2f',1,'BodyCreationSettings']]], + ['mmotiontypeb_483',['mMotionTypeB',['../struct_character_virtual_1_1_contact.html#a1f227d6b89bbddbc35de63b1c8f7d306',1,'CharacterVirtual::Contact']]], + ['mmotorsettings_484',['mmotorsettings',['../class_hinge_constraint_settings.html#ada7a75c71a3f4fc0c2bf643160406971',1,'HingeConstraintSettings::mMotorSettings'],['../class_six_d_o_f_constraint_settings.html#aa78bf1257750bc3d33b7fc7352d2d07a',1,'SixDOFConstraintSettings::mMotorSettings'],['../class_slider_constraint_settings.html#a8a2773d9e0482d334b1797cb951d243f',1,'SliderConstraintSettings::mMotorSettings']]], + ['mname_485',['mname',['../class_profile_sample.html#abdc79744926fda6484f18e8bee225d1b',1,'ProfileSample::mName'],['../class_r_t_t_i.html#ac6c1ba7841379194df1ebbd9f7a7fba3',1,'RTTI::mName'],['../class_skeleton_1_1_joint.html#a49426f9af65fba0c7a0a687079d38ff3',1,'Skeleton::Joint::mName']]], + ['mneighbouredge_486',['mneighbouredge',['../class_convex_hull_builder_1_1_edge.html#a0472b2afdf6989d40f9e82067364df1d',1,'ConvexHullBuilder::Edge::mNeighbourEdge'],['../class_e_p_a_convex_hull_builder_1_1_edge.html#aebdd46a0c839c10261765f466b8fa00b',1,'EPAConvexHullBuilder::Edge::mNeighbourEdge']]], + ['mneighbourtriangle_487',['mNeighbourTriangle',['../class_e_p_a_convex_hull_builder_1_1_edge.html#a45f60a45dad1b7eb5e49d513a15229a5',1,'EPAConvexHullBuilder::Edge']]], + ['mnextccdbody_488',['mNextCCDBody',['../struct_physics_update_context_1_1_step.html#ad1486be5c2c1c60f8307cd6a2c66f1f1',1,'PhysicsUpdateContext::Step']]], + ['mnextcollisionvertex_489',['mNextCollisionVertex',['../class_soft_body_update_context.html#a01554dcdf826c0c1e71061939467f389',1,'SoftBodyUpdateContext']]], + ['mnextconstraintgroup_490',['mNextConstraintGroup',['../class_soft_body_update_context.html#a6173bf5aad150857d14094419ea93db1',1,'SoftBodyUpdateContext']]], + ['mnextedge_491',['mNextEdge',['../class_convex_hull_builder_1_1_edge.html#a6b51430691fc49292ebca40a2736b508',1,'ConvexHullBuilder::Edge']]], + ['mnextiteration_492',['mNextIteration',['../class_soft_body_update_context.html#a5016ad1e602ce57f0927262ad59ec4ef',1,'SoftBodyUpdateContext']]], + ['mnodecount_493',['mNodeCount',['../struct_a_a_b_b_tree_builder_stats.html#ab3bb28a53eb8276008b3be628713ab4e',1,'AABBTreeBuilderStats']]], + ['mnodeproperties_494',['mNodeProperties',['../struct_node_codec_quad_tree_half_float_1_1_node.html#a959db7e79da8e791a53fa9a8e9f86d1c',1,'NodeCodecQuadTreeHalfFloat::Node']]], + ['mnormal_495',['mnormal',['../class_convex_hull_builder_1_1_face.html#ad9d4de58a7e80db8bcff6ffe1f88326b',1,'ConvexHullBuilder::Face::mNormal'],['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a72b60caa9b8ba3cc6380f23b4fe72a02',1,'EPAConvexHullBuilder::Triangle::mNormal'],['../struct_path_constraint_path_hermite_1_1_point.html#aa269d2329d09267440c119c1d4b74125',1,'PathConstraintPathHermite::Point::mNormal'],['../class_debug_renderer_1_1_vertex.html#acb594645b03b2ee03c8551fca61fddaa',1,'DebugRenderer::Vertex::mNormal']]], + ['mnormalaxis1_496',['mnormalaxis1',['../class_hinge_constraint_settings.html#ac470570dce09cb9de0d81194e023145c',1,'HingeConstraintSettings::mNormalAxis1'],['../class_slider_constraint_settings.html#ab03298296694d483fbfc756c7b28433b',1,'SliderConstraintSettings::mNormalAxis1']]], + ['mnormalaxis2_497',['mnormalaxis2',['../class_hinge_constraint_settings.html#a5e9d05db3bf6b0403fd4151fdc0f34c5',1,'HingeConstraintSettings::mNormalAxis2'],['../class_slider_constraint_settings.html#a8f4226328c8052b155b772c932bcb244',1,'SliderConstraintSettings::mNormalAxis2']]], + ['mnormalhalfconeangle_498',['mNormalHalfConeAngle',['../class_swing_twist_constraint_settings.html#a4f47f4487992a1af9da193d784a9a677',1,'SwingTwistConstraintSettings']]], + ['mnormalinfo_499',['mNormalInfo',['../class_soft_body_shared_settings_1_1_skinned.html#aee00d8a1605d928042bb1b7bafcf4eb7',1,'SoftBodySharedSettings::Skinned']]], + ['mnormalizedtorque_500',['mNormalizedTorque',['../class_vehicle_engine_settings.html#a2aa42e9f8a1eabe44171c7b2344661f0',1,'VehicleEngineSettings']]], + ['mnormalsign_501',['mNormalSign',['../class_collide_soft_body_vertices_vs_triangles.html#abc7074eb47917ae835d52b39ba27eba0',1,'CollideSoftBodyVerticesVsTriangles']]], + ['mnumactivebodiesatstepstart_502',['mNumActiveBodiesAtStepStart',['../struct_physics_update_context_1_1_step.html#a6a113f4d900ccaaf2bcc52584654f569',1,'PhysicsUpdateContext::Step']]], + ['mnumactivebodiesdynamic_503',['mNumActiveBodiesDynamic',['../struct_body_manager_1_1_body_stats.html#a90093dbd0710776837eb79efe56e976d',1,'BodyManager::BodyStats']]], + ['mnumactivebodieskinematic_504',['mNumActiveBodiesKinematic',['../struct_body_manager_1_1_body_stats.html#a7ded35b48e2adbb4ce2f8ccb1740d7e8',1,'BodyManager::BodyStats']]], + ['mnumactivebodytoccdbody_505',['mNumActiveBodyToCCDBody',['../struct_physics_update_context_1_1_step.html#a0d2367602d2e7b6d33387458c0eb3e8b',1,'PhysicsUpdateContext::Step']]], + ['mnumactiveconstraints_506',['mNumActiveConstraints',['../struct_physics_update_context_1_1_step.html#af0ee5aea31c2282efaa0df4b55401424',1,'PhysicsUpdateContext::Step']]], + ['mnumactivesoftbodies_507',['mNumActiveSoftBodies',['../struct_body_manager_1_1_body_stats.html#ab35d057b00908a87b8ffc2b9bf0ff3e7',1,'BodyManager::BodyStats']]], + ['mnumbodies_508',['mNumBodies',['../struct_body_manager_1_1_body_stats.html#a92eda2694c18702a18cf0fb0655bf2d7',1,'BodyManager::BodyStats']]], + ['mnumbodiesdynamic_509',['mNumBodiesDynamic',['../struct_body_manager_1_1_body_stats.html#a511161e1cafdb900a27757884c8b909f',1,'BodyManager::BodyStats']]], + ['mnumbodieskinematic_510',['mNumBodiesKinematic',['../struct_body_manager_1_1_body_stats.html#a943216c07627d14e78c93e4d6dae668e',1,'BodyManager::BodyStats']]], + ['mnumbodiesstatic_511',['mNumBodiesStatic',['../struct_body_manager_1_1_body_stats.html#a3130890dd64c4f77e59e0e7c2d67fa7d',1,'BodyManager::BodyStats']]], + ['mnumbodypairs_512',['mnumbodypairs',['../class_contact_constraint_manager_1_1_contact_allocator.html#a1f988bcee137591463666032293d8357',1,'ContactConstraintManager::ContactAllocator::mNumBodyPairs'],['../struct_physics_update_context_1_1_step.html#a2f4b4efc242a2e45e369bbf6cc6a9d0b',1,'PhysicsUpdateContext::Step::mNumBodyPairs']]], + ['mnumccdbodies_513',['mNumCCDBodies',['../struct_physics_update_context_1_1_step.html#a25ec4e61e44004a320440ed279a8da4c',1,'PhysicsUpdateContext::Step']]], + ['mnumcollisionverticesprocessed_514',['mNumCollisionVerticesProcessed',['../class_soft_body_update_context.html#a34ccaf27bfe9bd6436fe8b933822d144',1,'SoftBodyUpdateContext']]], + ['mnumconstraintgroupsprocessed_515',['mNumConstraintGroupsProcessed',['../class_soft_body_update_context.html#a1cc676caadf68f6323d61d70cff50306',1,'SoftBodyUpdateContext']]], + ['mnumiterations_516',['mnumiterations',['../class_large_island_splitter_1_1_splits.html#a451c0785aed49009ee33316d5269495d',1,'LargeIslandSplitter::Splits::mNumIterations'],['../class_soft_body_creation_settings.html#a62d2a9e8b0e83cf1864d72f4849a02fd',1,'SoftBodyCreationSettings::mNumIterations']]], + ['mnummanifolds_517',['mnummanifolds',['../class_contact_constraint_manager_1_1_contact_allocator.html#a7a95eb0a19e0b32c637eadf107977c3c',1,'ContactConstraintManager::ContactAllocator::mNumManifolds'],['../struct_physics_update_context_1_1_step.html#a694dd2809042d7614c64b2abdf26e73f',1,'PhysicsUpdateContext::Step::mNumManifolds']]], + ['mnumobjects_518',['mNumObjects',['../struct_fixed_size_free_list_1_1_batch.html#a5ab07ee680a46976849c6d97ed0c20d3',1,'FixedSizeFreeList::Batch']]], + ['mnumpositionsteps_519',['mnumpositionsteps',['../class_large_island_splitter_1_1_splits.html#a3da2470ccef44323ffb4fc2cf90efbf4',1,'LargeIslandSplitter::Splits::mNumPositionSteps'],['../struct_physics_settings.html#a3724f8c1ef9269076dac93c4d7b7cfdb',1,'PhysicsSettings::mNumPositionSteps']]], + ['mnumpositionstepsoverride_520',['mnumpositionstepsoverride',['../class_body_creation_settings.html#a9caedbea102f60fadfbf1e96fc8cde85',1,'BodyCreationSettings::mNumPositionStepsOverride'],['../class_constraint_settings.html#a7022c1a032590883f2002aeef24adf69',1,'ConstraintSettings::mNumPositionStepsOverride']]], + ['mnumsoftbodies_521',['mnumsoftbodies',['../struct_body_manager_1_1_body_stats.html#ac2c7e1a28cc3bf544f914fcbc3b1a192',1,'BodyManager::BodyStats::mNumSoftBodies'],['../class_physics_update_context.html#adb6496db121f7c5e1248ae9688965f49',1,'PhysicsUpdateContext::mNumSoftBodies']]], + ['mnumsplits_522',['mNumSplits',['../class_large_island_splitter_1_1_splits.html#aaa044adfe3331a9c96f75921e35f44be',1,'LargeIslandSplitter::Splits']]], + ['mnumtriangles_523',['mNumTriangles',['../struct_shape_1_1_stats.html#a478540fbad3d607c5dffb39ced542429',1,'Shape::Stats']]], + ['mnumtrianglesfound_524',['mnumtrianglesfound',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a4e6aec803eb1738b1f7c90f05100b422',1,'HeightFieldShape::HSGetTrianglesContext::mNumTrianglesFound'],['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#a77dc72cce068489bf1a6514c9e8c0ba5',1,'MeshShape::MSGetTrianglesContext::mNumTrianglesFound']]], + ['mnumvelocitysteps_525',['mnumvelocitysteps',['../class_large_island_splitter_1_1_splits.html#ac4a0f32e15cb93e1c6c9e6570885664b',1,'LargeIslandSplitter::Splits::mNumVelocitySteps'],['../struct_physics_settings.html#a66af679ba7f202b402bb23d0a0e117ad',1,'PhysicsSettings::mNumVelocitySteps']]], + ['mnumvelocitystepsoverride_526',['mnumvelocitystepsoverride',['../class_body_creation_settings.html#a84ee0ecf67e26c9ffffe42ad435b8ec1',1,'BodyCreationSettings::mNumVelocityStepsOverride'],['../class_constraint_settings.html#ade4ba912369caad8d5acb9ce87c27e4f',1,'ConstraintSettings::mNumVelocityStepsOverride']]], + ['mobject_527',['mobject',['../struct_transformed_convex_object.html#a8c84c2341aa11607eea77a7c09329f63',1,'TransformedConvexObject::mObject'],['../struct_add_convex_radius.html#a2b18bb69a25bf6973cbe22024a357194',1,'AddConvexRadius::mObject']]], + ['mobjecta_528',['mObjectA',['../struct_minkowski_difference.html#a9ec95eca1b2f1e8420746f40e6544f85',1,'MinkowskiDifference']]], + ['mobjectb_529',['mObjectB',['../struct_minkowski_difference.html#af2117c9f519daa7e35d2824fa979917f',1,'MinkowskiDifference']]], + ['mobjectlayer_530',['mobjectlayer',['../class_body_creation_settings.html#a976a222257c112edca9c43805e1331cd',1,'BodyCreationSettings::mObjectLayer'],['../struct_quad_tree_1_1_tracking.html#a56e9c2be5a5d2c9ab2a06ee6be1b9a58',1,'QuadTree::Tracking::mObjectLayer'],['../class_soft_body_creation_settings.html#af2bebfa58f86de5bc428165a5f9c08d2',1,'SoftBodyCreationSettings::mObjectLayer'],['../class_vehicle_collision_tester.html#a2c9666896a28a8aa899171dfb1bf4a4e',1,'VehicleCollisionTester::mObjectLayer']]], + ['mobjectlayerfilter_531',['mObjectLayerFilter',['../class_vehicle_collision_tester.html#a1fbc50043ae7ae56b6cd96a4e0d82a32',1,'VehicleCollisionTester']]], + ['modifyshape_532',['modifyshape',['../class_mutable_compound_shape.html#a3992cb7a984307a08139812e44da14ae',1,'MutableCompoundShape::ModifyShape(uint inIndex, Vec3Arg inPosition, QuatArg inRotation)'],['../class_mutable_compound_shape.html#a6b947de024a9a91039f4b472072efdba',1,'MutableCompoundShape::ModifyShape(uint inIndex, Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)']]], + ['modifyshapes_533',['ModifyShapes',['../class_mutable_compound_shape.html#a48172d558ec67cb67e4a4d0ec7b48133',1,'MutableCompoundShape']]], + ['moffset_534',['moffset',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html#a31081b105365540e856c4e5a264dfe64',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader::mOffset'],['../struct_lock_free_hash_map_1_1_iterator.html#a1142200c7ea0ad1195007f410ccb8942',1,'LockFreeHashMap::Iterator::mOffset'],['../struct_r_t_t_i_1_1_base_class.html#a685cef473333c65c8e8b2215cb54394c',1,'RTTI::BaseClass::mOffset'],['../class_height_field_shape_settings.html#a7b2cbd09f2cd2d0c5d5381ab244a1d6a',1,'HeightFieldShapeSettings::mOffset'],['../class_offset_center_of_mass_shape_settings.html#ae5c2406922fc128679d1282a2c4b96db',1,'OffsetCenterOfMassShapeSettings::mOffset']]], + ['morientation_535',['mOrientation',['../class_oriented_box.html#a05fc57c2033ce0e75ef2bd9dbe0e0636',1,'OrientedBox']]], + ['morigin_536',['mOrigin',['../struct_ray_cast_t.html#ae66dc4b0c20b242f17bcf70cb5507e51',1,'RayCastT']]], + ['mortoncode_537',['MortonCode',['../class_morton_code.html',1,'']]], + ['mortoncode_2eh_538',['MortonCode.h',['../_morton_code_8h.html',1,'']]], + ['motionproperties_539',['MotionProperties',['../class_motion_properties.html',1,'']]], + ['motionproperties_2ecpp_540',['MotionProperties.cpp',['../_motion_properties_8cpp.html',1,'']]], + ['motionproperties_2eh_541',['MotionProperties.h',['../_motion_properties_8h.html',1,'']]], + ['motionproperties_2einl_542',['MotionProperties.inl',['../_motion_properties_8inl.html',1,'']]], + ['motionquality_2eh_543',['MotionQuality.h',['../_motion_quality_8h.html',1,'']]], + ['motiontype_2eh_544',['MotionType.h',['../_motion_type_8h.html',1,'']]], + ['motiontypecolor_545',['MotionTypeColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2ac415a727aec99b44707c3555b360c85b',1,'BodyManager']]], + ['motorcyclecontroller_546',['motorcyclecontroller',['../class_motorcycle_controller.html#aed5939c4ba195b16de315229faa5d64f',1,'MotorcycleController::MotorcycleController()'],['../class_motorcycle_controller.html',1,'MotorcycleController']]], + ['motorcyclecontroller_2ecpp_547',['MotorcycleController.cpp',['../_motorcycle_controller_8cpp.html',1,'']]], + ['motorcyclecontroller_2eh_548',['MotorcycleController.h',['../_motorcycle_controller_8h.html',1,'']]], + ['motorcyclecontrollersettings_549',['MotorcycleControllerSettings',['../class_motorcycle_controller_settings.html',1,'']]], + ['motors_550',['Constraint Motors',['../index.html#constraint-motors',1,'']]], + ['motorsettings_551',['motorsettings',['../class_motor_settings.html',1,'MotorSettings'],['../class_motor_settings.html#a81a42488fb27a4e36f3f2802bca0bdcc',1,'MotorSettings::MotorSettings(float inFrequency, float inDamping)'],['../class_motor_settings.html#a280a8c958af57873bd500de0104ef574',1,'MotorSettings::MotorSettings(float inFrequency, float inDamping, float inForceLimit, float inTorqueLimit)'],['../class_motor_settings.html#a3da51e1a3f8feb8e6a2b056c7e26d24b',1,'MotorSettings::MotorSettings(const MotorSettings &)=default'],['../class_motor_settings.html#a9931c598c884e6be4baea88a612ef59e',1,'MotorSettings::MotorSettings()=default']]], + ['motorsettings_2ecpp_552',['MotorSettings.cpp',['../_motor_settings_8cpp.html',1,'']]], + ['motorsettings_2eh_553',['MotorSettings.h',['../_motor_settings_8h.html',1,'']]], + ['movekinematic_554',['movekinematic',['../class_body.html#a015be9d70225c08eb10d01753415febd',1,'Body::MoveKinematic()'],['../class_body_interface.html#a511b9da7dae147b6d8d3227f30724334',1,'BodyInterface::MoveKinematic()'],['../class_motion_properties.html#afc2471d63f11da6c88141a1adedf6149',1,'MotionProperties::MoveKinematic()']]], + ['moverridemassproperties_555',['mOverrideMassProperties',['../class_body_creation_settings.html#aaefa0f471f73fbfaf0f288e56e20b384',1,'BodyCreationSettings']]], + ['mpadding1_556',['mpadding1',['../struct_physics_update_context_1_1_body_pair_queue.html#a6b5b5872901d9cdfa32c9507b53e4920',1,'PhysicsUpdateContext::BodyPairQueue::mPadding1'],['../struct_physics_update_context_1_1_step.html#a77e0a019809ed80613a75e3f7b5217c6',1,'PhysicsUpdateContext::Step::mPadding1']]], + ['mpadding2_557',['mpadding2',['../struct_physics_update_context_1_1_step.html#a4b8740c5f4ed9785bac06320cc762487',1,'PhysicsUpdateContext::Step::mPadding2'],['../struct_physics_update_context_1_1_body_pair_queue.html#a72e1a83841d0ef254a8f242537d93b96',1,'PhysicsUpdateContext::BodyPairQueue::mPadding2']]], + ['mpadding3_558',['mPadding3',['../struct_physics_update_context_1_1_step.html#a16b0d33b3a5f7755e033bb2c400ab8ac',1,'PhysicsUpdateContext::Step']]], + ['mpadding4_559',['mPadding4',['../struct_physics_update_context_1_1_step.html#a07c8e8051345d5106cf1cd8ee8df14d3',1,'PhysicsUpdateContext::Step']]], + ['mpadding5_560',['mPadding5',['../struct_physics_update_context_1_1_step.html#a806337c54e4bd1ef4dcb3eae0dd4ea72',1,'PhysicsUpdateContext::Step']]], + ['mpadding6_561',['mPadding6',['../struct_physics_update_context_1_1_step.html#a16066c34dd3882810d28dc9d0e8dd2d5',1,'PhysicsUpdateContext::Step']]], + ['mparentjointidx_562',['mparentjointidx',['../class_skeleton_mapper_1_1_locked.html#af041c178fc6e97c469f138ea9fb6797e',1,'SkeletonMapper::Locked::mParentJointIdx'],['../class_skeleton_mapper_1_1_unmapped.html#ad91b1fd5a34203f9aeacd6234c56da17',1,'SkeletonMapper::Unmapped::mParentJointIdx']]], + ['mparentjointindex_563',['mParentJointIndex',['../class_skeleton_1_1_joint.html#a2bf4993eb1dc238b968e3881592e9823',1,'Skeleton::Joint']]], + ['mparentname_564',['mParentName',['../class_skeleton_1_1_joint.html#a575a54eccd755c88fd484272fd3cf38d',1,'Skeleton::Joint']]], + ['mparts_565',['mParts',['../class_ragdoll_settings.html#acf5a663278bc571eb621e180abc67a3b',1,'RagdollSettings']]], + ['mpath_566',['mPath',['../class_path_constraint_settings.html#a6069d97c30057ec55fbce2b0a4058748',1,'PathConstraintSettings']]], + ['mpathfraction_567',['mPathFraction',['../class_path_constraint_settings.html#ae13a68ddfe0a452f9814993c622c3995',1,'PathConstraintSettings']]], + ['mpathposition_568',['mPathPosition',['../class_path_constraint_settings.html#ac7dada42ac3bf1276e3b970b2cc4406c',1,'PathConstraintSettings']]], + ['mpathrotation_569',['mPathRotation',['../class_path_constraint_settings.html#a74a9207faa30912010e4e1a4acd49745',1,'PathConstraintSettings']]], + ['mpenetrationaxis_570',['mPenetrationAxis',['../class_collide_shape_result.html#a3704397b8c4c6e39f2bb94bb477a7bc7',1,'CollideShapeResult']]], + ['mpenetrationdepth_571',['mpenetrationdepth',['../class_contact_manifold.html#add2819f7131894b379fd2c6f4b90099a',1,'ContactManifold::mPenetrationDepth'],['../class_collide_shape_result.html#a940adcfe5fa917a065f5ae65773de013',1,'CollideShapeResult::mPenetrationDepth']]], + ['mpenetrationrecoveryspeed_572',['mPenetrationRecoverySpeed',['../class_character_virtual_settings.html#a5a58aa76a938c5845f1b375114a4cebb',1,'CharacterVirtualSettings']]], + ['mpenetrationslop_573',['mPenetrationSlop',['../struct_physics_settings.html#a9aff2f46a311da4e48974dce7e3b4cee',1,'PhysicsSettings']]], + ['mpenetrationtolerance_574',['mPenetrationTolerance',['../class_collide_settings_base.html#a153906919e1de4a797964973d0164f44',1,'CollideSettingsBase']]], + ['mpertriangleuserdata_575',['mPerTriangleUserData',['../class_mesh_shape_settings.html#a972eb1eff546f1475d5941e68f54db76',1,'MeshShapeSettings']]], + ['mphysicssystem_576',['mPhysicsSystem',['../class_physics_update_context.html#a081d18872fcf446aa811f95c0d66b05c',1,'PhysicsUpdateContext']]], + ['mplane_577',['mPlane',['../class_plane_shape_settings.html#a0eb3d51eb7d3aaf41d1156f138f3cfb6',1,'PlaneShapeSettings']]], + ['mplaneaxis1_578',['mPlaneAxis1',['../class_swing_twist_constraint_settings.html#a2c556242704fb54589332cc3b29871b8',1,'SwingTwistConstraintSettings']]], + ['mplaneaxis2_579',['mPlaneAxis2',['../class_swing_twist_constraint_settings.html#aa8a67f8a151ed609558127f83c3ddd6a',1,'SwingTwistConstraintSettings']]], + ['mplanehalfconeangle_580',['mPlaneHalfConeAngle',['../class_swing_twist_constraint_settings.html#acebb8bf87ee7e68a0614432fcfc13197',1,'SwingTwistConstraintSettings']]], + ['mpoint_581',['mpoint',['../struct_point_convex_support.html#aa87104a74dbc5656e4937786790aa7e4',1,'PointConvexSupport::mPoint'],['../struct_compound_shape_1_1_collide_point_visitor.html#a47156e21c9dd5a4cc626690185907836',1,'CompoundShape::CollidePointVisitor::mPoint']]], + ['mpoint1_582',['mpoint1',['../class_slider_constraint_settings.html#a090c1e3dd8e6d8651d8287b4dbe5fc46',1,'SliderConstraintSettings::mPoint1'],['../class_point_constraint_settings.html#a75e5165cface9c64e3edb866b0de9b11',1,'PointConstraintSettings::mPoint1'],['../class_hinge_constraint_settings.html#aa69e0fef137c3134ff9326f02766d978',1,'HingeConstraintSettings::mPoint1'],['../class_fixed_constraint_settings.html#a14be82859ede4faa881a35deb3b7c741',1,'FixedConstraintSettings::mPoint1'],['../class_distance_constraint_settings.html#a8ca1134032fe38952fcf59be4329c939',1,'DistanceConstraintSettings::mPoint1'],['../class_cone_constraint_settings.html#a63250461238f740ff251cd7e567e7e22',1,'ConeConstraintSettings::mPoint1']]], + ['mpoint2_583',['mpoint2',['../class_slider_constraint_settings.html#a067096ef3ef94d99ba6d22b946145759',1,'SliderConstraintSettings::mPoint2'],['../class_hinge_constraint_settings.html#abef028fb756f8113e9b342ce2f102467',1,'HingeConstraintSettings::mPoint2'],['../class_fixed_constraint_settings.html#a8226bd6f6ac595c055c22b0934ae8f36',1,'FixedConstraintSettings::mPoint2'],['../class_distance_constraint_settings.html#a18e1fbea7cbb304ce9e86168c1845475',1,'DistanceConstraintSettings::mPoint2'],['../class_cone_constraint_settings.html#ac9831884f13146df159980ce13a7f108',1,'ConeConstraintSettings::mPoint2'],['../class_point_constraint_settings.html#aa7b0100193fa0754bcfa7011e2900195',1,'PointConstraintSettings::mPoint2']]], + ['mpoints_584',['mpoints',['../class_convex_hull_shape_settings.html#a3a3326f9fdbfa46abd18998e972efc6d',1,'ConvexHullShapeSettings::mPoints'],['../class_linear_curve.html#a2d5721b04dfe7c3cb67ce8ae87ff3fe3',1,'LinearCurve::mPoints']]], + ['mpointvelocitysleepthreshold_585',['mPointVelocitySleepThreshold',['../struct_physics_settings.html#aae6093b99380ed5b72f5af1cc6529785',1,'PhysicsSettings']]], + ['mposition_586',['mposition',['../struct_soft_body_shared_settings_1_1_vertex.html#aefc61e301f8ba7f7ad8209a69dabeeb1',1,'SoftBodySharedSettings::Vertex::mPosition'],['../struct_path_constraint_path_hermite_1_1_point.html#ae184b6a8fe926a6ef48bdacb1057c04e',1,'PathConstraintPathHermite::Point::mPosition'],['../class_rotated_translated_shape_settings.html#a6b478d387b165be23ab557798ea6f113',1,'RotatedTranslatedShapeSettings::mPosition'],['../class_polyhedron_submerged_volume_calculator_1_1_point.html#a7d4332e216b4c207019734c00663b754',1,'PolyhedronSubmergedVolumeCalculator::Point::mPosition'],['../struct_compound_shape_settings_1_1_sub_shape_settings.html#aaf84c1bfaed3898a81e184c11d05988d',1,'CompoundShapeSettings::SubShapeSettings::mPosition'],['../struct_character_virtual_1_1_contact.html#ae0c5dd762716d33d3c0289846b4126ff',1,'CharacterVirtual::Contact::mPosition'],['../class_body_creation_settings.html#a71bcd0c1b8798b78246f3ccb9c2ab637',1,'BodyCreationSettings::mPosition'],['../class_soft_body_creation_settings.html#a9bf07b67b3fe8e6032485fa403fbca60',1,'SoftBodyCreationSettings::mPosition'],['../struct_debug_renderer_recorder_1_1_text_blob.html#ad7e5b3d003443e4c28617ef14294dac6',1,'DebugRendererRecorder::TextBlob::mPosition'],['../class_debug_renderer_1_1_vertex.html#a4cb40671496d950e8fc832f97771793b',1,'DebugRenderer::Vertex::mPosition'],['../class_wheel_settings.html#a498fc7496addb2d3bb1798ffc494d1ae',1,'WheelSettings::mPosition'],['../class_soft_body_vertex.html#afad3ccc1b361c0c7607d14cbb0b61660',1,'SoftBodyVertex::mPosition']]], + ['mposition1_587',['mposition1',['../class_swing_twist_constraint_settings.html#a30793a078b7be1fa138f53ad1c57ca50',1,'SwingTwistConstraintSettings::mPosition1'],['../class_six_d_o_f_constraint_settings.html#abf8617babef063477401b6a88b4df02d',1,'SixDOFConstraintSettings::mPosition1']]], + ['mposition2_588',['mposition2',['../class_swing_twist_constraint_settings.html#a0f7ae7835e07b547eae7141543f3bbd5',1,'SwingTwistConstraintSettings::mPosition2'],['../class_six_d_o_f_constraint_settings.html#a6718d1e32b2c5933a3d1775ce564bee8',1,'SixDOFConstraintSettings::mPosition2']]], + ['mpositioncom_589',['mpositioncom',['../struct_compound_shape_1_1_sub_shape.html#a16bb59f7313e95ee322d576f5d2d85a7',1,'CompoundShape::SubShape::mPositionCOM'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a0b73160273b742d692193d37e4f5e571',1,'CompoundShape::CollectTransformedShapesVisitor::mPositionCOM']]], + ['mpositionmotorsettings_590',['mPositionMotorSettings',['../class_path_constraint_settings.html#a634e294d5b4b5f82a40cb8c2bf2cf776',1,'PathConstraintSettings']]], + ['mpostintegratevelocity_591',['mPostIntegrateVelocity',['../struct_physics_update_context_1_1_step.html#a1c491fd0b7d20d6b49e7be2b55ef48d5',1,'PhysicsUpdateContext::Step']]], + ['mpredictivecontactdistance_592',['mPredictiveContactDistance',['../class_character_virtual_settings.html#aeeefd4daed1e249cc0c98126bd8e4007',1,'CharacterVirtualSettings']]], + ['mpreintegratevelocity_593',['mPreIntegrateVelocity',['../struct_physics_update_context_1_1_step.html#a1f089199fc6b1d0fc6fb973d2750d32a',1,'PhysicsUpdateContext::Step']]], + ['mpressure_594',['mPressure',['../class_soft_body_creation_settings.html#a93bf002b1b4ab1fa7bcf846d8116aa91',1,'SoftBodyCreationSettings']]], + ['mpreviousdeltatime_595',['mPreviousDeltaTime',['../class_wheeled_vehicle_controller.html#ae362fa84fc6185aca0663ed55835d477',1,'WheeledVehicleController']]], + ['mpreviousposition_596',['mPreviousPosition',['../class_soft_body_vertex.html#a43610d9ba8e79136479fd22eb83e3ece',1,'SoftBodyVertex']]], + ['mprocessed_597',['mProcessed',['../class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html#a6682819b6e1c3b726e1cdad0603430f4',1,'TaperedCylinderShape::TCSGetTrianglesContext']]], + ['mradius_598',['mradius',['../class_collide_sphere_vs_triangles.html#a0ceac76dc9e4731e8309af5fb46bb27c',1,'CollideSphereVsTriangles::mRadius'],['../class_cylinder_shape_settings.html#a6fb07e86ae5972d56bbfd4be626d20b8',1,'CylinderShapeSettings::mRadius'],['../class_sphere_shape_settings.html#abde1ff27c7444e7fa198e9fe1c191a5a',1,'SphereShapeSettings::mRadius'],['../class_wheel_settings.html#afbcdefc252798e8ba1c9029a14a6fd84',1,'WheelSettings::mRadius'],['../class_cast_sphere_vs_triangles.html#ad228cdb4784b5a3ad14b6ba38c296d34',1,'CastSphereVsTriangles::mRadius'],['../struct_add_convex_radius.html#aa75c5abeaac64104be1a5520b8d141d1',1,'AddConvexRadius::mRadius']]], + ['mradiusplusmaxseparationsq_599',['mRadiusPlusMaxSeparationSq',['../class_collide_sphere_vs_triangles.html#aa984267713203452f765300b0b38fa2e',1,'CollideSphereVsTriangles']]], + ['mratio_600',['mratio',['../class_rack_and_pinion_constraint_settings.html#ae46a8191711ca7476217c52f651c4da5',1,'RackAndPinionConstraintSettings::mRatio'],['../class_pulley_constraint_settings.html#a5bbc85b1e7cde7416b3f2d1649b383af',1,'PulleyConstraintSettings::mRatio'],['../class_gear_constraint_settings.html#a81c6ec84001d897ae53d900a2cf11d33',1,'GearConstraintSettings::mRatio']]], + ['mray_601',['mray',['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#a27e6f90c97311cb2274d1c15b7088367',1,'CompoundShape::CastRayVisitorCollector::mRay'],['../struct_compound_shape_1_1_cast_ray_visitor.html#a67db40d3d39442109dff46d6c8962f6e',1,'CompoundShape::CastRayVisitor::mRay']]], + ['mraycastsettings_602',['mRayCastSettings',['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#a279153b159b17f4bf1fb7a1a4df46122',1,'CompoundShape::CastRayVisitorCollector']]], + ['mreadidx_603',['mReadIdx',['../struct_physics_update_context_1_1_body_pair_queue.html#a2022c7c479b154d1c42d4351c8d12ea4',1,'PhysicsUpdateContext::BodyPairQueue']]], + ['mrefcount_604',['mRefCount',['../class_ref_target.html#a12afba0bdae7706a0afd4d96ac128231',1,'RefTarget']]], + ['mrelativeangularsurfacevelocity_605',['mRelativeAngularSurfaceVelocity',['../class_contact_settings.html#a5f18a7a0fa71d91b1bd75481ea549de9',1,'ContactSettings']]], + ['mrelativecontactpointson1_606',['mRelativeContactPointsOn1',['../class_contact_manifold.html#ab878d752ba8167d0e1292ddded15f153',1,'ContactManifold']]], + ['mrelativecontactpointson2_607',['mRelativeContactPointsOn2',['../class_contact_manifold.html#a82c0a5937e977e8ce4169d39e1a3d64c',1,'ContactManifold']]], + ['mrelativelinearsurfacevelocity_608',['mRelativeLinearSurfaceVelocity',['../class_contact_settings.html#a42f0680fb14771132aab269491c217ff',1,'ContactSettings']]], + ['mremoved_609',['mremoved',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#aec2b4eeafa28ea5ea8a04789e944ae4d',1,'EPAConvexHullBuilder::Triangle::mRemoved'],['../class_convex_hull_builder_1_1_face.html#abf031b64af208beebf2e41403b7869bf',1,'ConvexHullBuilder::Face::mRemoved']]], + ['mresolveccdcontacts_610',['mResolveCCDContacts',['../struct_physics_update_context_1_1_step.html#a6bd9110000ab8f670192a1c91677571f',1,'PhysicsUpdateContext::Step']]], + ['mrestitution_611',['mrestitution',['../class_soft_body_creation_settings.html#ab4e95c56fff028fa8b81804488076890',1,'SoftBodyCreationSettings::mRestitution'],['../class_body_creation_settings.html#ad248781dc0ad8671c19af02106c9f054',1,'BodyCreationSettings::mRestitution']]], + ['mrestlength_612',['mRestLength',['../struct_soft_body_shared_settings_1_1_edge.html#a4a1fbe8d069c6c9c13a12dc8f951959a',1,'SoftBodySharedSettings::Edge']]], + ['mresult_613',['mResult',['../class_result.html#a2540c24a649431bd9bdc679737c7df1d',1,'Result']]], + ['mreturndeepestpoint_614',['mReturnDeepestPoint',['../class_shape_cast_settings.html#a38fe76bbe3df55bb0ea0f9aa031bcc6e',1,'ShapeCastSettings']]], + ['mreturnvalue_615',['mReturnValue',['../struct_compound_shape_1_1_cast_ray_visitor.html#a8b14b4e32934a67cbd94a7ff0f362ac5',1,'CompoundShape::CastRayVisitor']]], + ['mreversegearratios_616',['mReverseGearRatios',['../class_vehicle_transmission_settings.html#ac0a9ec4f7eb2fa4d2bfbb5c49c46171d',1,'VehicleTransmissionSettings']]], + ['mrightinput_617',['mRightInput',['../class_wheeled_vehicle_controller.html#a5138b0898fa52c09e75c3f583459c519',1,'WheeledVehicleController']]], + ['mrightratio_618',['mRightRatio',['../class_tracked_vehicle_controller.html#ae051ddbdc41f87fb80f32f72e829729d',1,'TrackedVehicleController']]], + ['mrightwheel_619',['mrightwheel',['../class_vehicle_differential_settings.html#ad6b9ff3394079722a2255b9ec20ecbfd',1,'VehicleDifferentialSettings::mRightWheel'],['../class_vehicle_anti_roll_bar.html#a1c60e3cb529234e906aba43dacd04271',1,'VehicleAntiRollBar::mRightWheel']]], + ['mrootboundsmax_620',['mRootBoundsMax',['../struct_node_codec_quad_tree_half_float_1_1_header.html#a13661d6f0399e913b49c25e53aa03883',1,'NodeCodecQuadTreeHalfFloat::Header']]], + ['mrootboundsmin_621',['mRootBoundsMin',['../struct_node_codec_quad_tree_half_float_1_1_header.html#a0b88f06ad8cd0a0cd782637c66bb04bc',1,'NodeCodecQuadTreeHalfFloat::Header']]], + ['mrootnodeid_622',['mRootNodeID',['../struct_quad_tree_1_1_update_state.html#a66a138d55a9cfc44fd213bdace17b4a6',1,'QuadTree::UpdateState']]], + ['mrootproperties_623',['mRootProperties',['../struct_node_codec_quad_tree_half_float_1_1_header.html#a815f737e0b69facd9b5aac34ea911232',1,'NodeCodecQuadTreeHalfFloat::Header']]], + ['mrotation_624',['mrotation',['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a47b09d94bdefcf6a75a756f3e37c339f',1,'CompoundShape::CollectTransformedShapesVisitor::mRotation'],['../class_skeletal_animation_1_1_joint_state.html#a402db12a064bb22585d499010239d1ce',1,'SkeletalAnimation::JointState::mRotation'],['../class_soft_body_creation_settings.html#a80535dd782a3f7368cd6e74cd3ccda6a',1,'SoftBodyCreationSettings::mRotation'],['../class_rotated_translated_shape_settings.html#a3e1fba24e7b35c08a2fe248882a31e14',1,'RotatedTranslatedShapeSettings::mRotation'],['../struct_compound_shape_1_1_sub_shape.html#a42a1dc09f0d3bd15367f87d26452bd44',1,'CompoundShape::SubShape::mRotation'],['../struct_compound_shape_settings_1_1_sub_shape_settings.html#a865bfef885778f2221f8a4dccf0e941e',1,'CompoundShapeSettings::SubShapeSettings::mRotation'],['../class_body_creation_settings.html#a8b4eaa2eceb1493a1a70d3bef422e3ad',1,'BodyCreationSettings::mRotation']]], + ['mrotationconstrainttype_625',['mRotationConstraintType',['../class_path_constraint_settings.html#afe6bb172faac97fcd47d8c9282ca1a19',1,'PathConstraintSettings']]], + ['mrpmmeterposition_626',['mrpmmeterposition',['../class_wheeled_vehicle_controller.html#ae747e5529bef6e7f5d5c9ada5fa195b4',1,'WheeledVehicleController::mRPMMeterPosition'],['../class_tracked_vehicle_controller.html#a1f801cb40d081779ce0f8ddbd4c1e5b6',1,'TrackedVehicleController::mRPMMeterPosition']]], + ['mrpmmetersize_627',['mrpmmetersize',['../class_wheeled_vehicle_controller.html#a7f88075b9e61d9a50c6edc663267f73b',1,'WheeledVehicleController::mRPMMeterSize'],['../class_tracked_vehicle_controller.html#a2c6dab3a895b281053876fc3c2fb2d8a',1,'TrackedVehicleController::mRPMMeterSize']]], + ['mrtti_628',['mRTTI',['../struct_r_t_t_i_1_1_base_class.html#a21424ceac4d2a12c5af3fc6f7d5833af',1,'RTTI::BaseClass']]], + ['msahcost_629',['mSAHCost',['../struct_a_a_b_b_tree_builder_stats.html#a3864a59872b7d9ae1241a9e2d9561b04',1,'AABBTreeBuilderStats']]], + ['msamplecount_630',['mSampleCount',['../class_height_field_shape_settings.html#a8028cb21d400d589b670f0a88d25e4b8',1,'HeightFieldShapeSettings']]], + ['msamples_631',['mSamples',['../class_profile_thread.html#a083636a930ffaea9862ef59d28a98395',1,'ProfileThread']]], + ['mscale_632',['mscale',['../class_cast_sphere_vs_triangles.html#ab317c8a940b4398351ccb4e3f4477688',1,'CastSphereVsTriangles::mScale'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html#ab4e4d57f7c4750037a52136fa23d6c5c',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleHeader::mScale'],['../class_cast_convex_vs_triangles.html#a888e9e6de829076e3e90e5c3b414aaff',1,'CastConvexVsTriangles::mScale'],['../struct_compound_shape_1_1_cast_shape_visitor.html#a012a8f770d2d7c6722d0ea074a0ce272',1,'CompoundShape::CastShapeVisitor::mScale'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a760002fad6044539aaa17b42c293032c',1,'CompoundShape::CollectTransformedShapesVisitor::mScale'],['../class_height_field_shape_settings.html#abdaa8bfc9ee9392b6813519a989f089e',1,'HeightFieldShapeSettings::mScale'],['../struct_shape_cast_t.html#aed62d5fadde28ac5dea4f8a44d3dddf2',1,'ShapeCastT::mScale']]], + ['mscale1_633',['mscale1',['../class_collide_convex_vs_triangles.html#a147a2531a2e1a590e84349ea90143d84',1,'CollideConvexVsTriangles::mScale1'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a7b3698ab299d4e1f2881337c09892cd5',1,'CompoundShape::CollideCompoundVsShapeVisitor::mScale1'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a78626c6f58d5682180522b6304e9aa5e',1,'CompoundShape::CollideShapeVsCompoundVisitor::mScale1']]], + ['mscale2_634',['mscale2',['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a7c826e2194c6d76f3022473123346869',1,'CompoundShape::CollideShapeVsCompoundVisitor::mScale2'],['../class_collide_convex_vs_triangles.html#a13228a63f38c3ba1b6cf83671456f6e5',1,'CollideConvexVsTriangles::mScale2'],['../class_collide_sphere_vs_triangles.html#afb2ca480a98d76d118b9d3d6f789fddd',1,'CollideSphereVsTriangles::mScale2'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a80a7872b09611c352c0c02cf18a0fa67',1,'CompoundShape::CollideCompoundVsShapeVisitor::mScale2']]], + ['mscalesign2_635',['mscalesign2',['../class_collide_sphere_vs_triangles.html#a2b8e001093de41ada6fb3f32a02162b1',1,'CollideSphereVsTriangles::mScaleSign2'],['../class_collide_convex_vs_triangles.html#a031ebb813c9dbe4a24299bc474bc264b',1,'CollideConvexVsTriangles::mScaleSign2']]], + ['mset_636',['mSet',['../class_collide_soft_body_vertices_vs_triangles.html#a686bf253a9b480309cbf6bb8f9ace6b1',1,'CollideSoftBodyVerticesVsTriangles']]], + ['msettings_637',['msettings',['../class_wheel.html#a024cd676398378408f174ebdd8fefd6c',1,'Wheel::mSettings'],['../class_soft_body_creation_settings.html#ad5221bd51bf042c883473a55ab0b3956',1,'SoftBodyCreationSettings::mSettings'],['../class_physics_scene_1_1_connected_constraint.html#a4789e195999b6df47c152bd239e09b4e',1,'PhysicsScene::ConnectedConstraint::mSettings']]], + ['msetupvelocityconstraints_638',['mSetupVelocityConstraints',['../struct_physics_update_context_1_1_step.html#aa342675e2a78c65451953075a0facbb8',1,'PhysicsUpdateContext::Step']]], + ['msetupvelocityconstraintsreadidx_639',['mSetupVelocityConstraintsReadIdx',['../struct_physics_update_context_1_1_step.html#a6be869a18ebbdd1cc59cd2b27da5e488',1,'PhysicsUpdateContext::Step']]], + ['msgettrianglescontext_640',['msgettrianglescontext',['../struct_mesh_shape_1_1_m_s_get_triangles_context.html',1,'MeshShape::MSGetTrianglesContext'],['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#ad92277aa44b23b015efb63d110824297',1,'MeshShape::MSGetTrianglesContext::MSGetTrianglesContext()']]], + ['mshape_641',['mshape',['../class_soft_body_with_motion_properties_and_shape.html#a08d76f7806779975538f6cb4ba8d1768',1,'SoftBodyWithMotionPropertiesAndShape::mShape'],['../class_character_base_settings.html#aee9be06866efe751ab7e2df57edee6b1',1,'CharacterBaseSettings::mShape'],['../class_character_base.html#a5c10220e06a8a5bb274a4b02c28cb0b6',1,'CharacterBase::mShape'],['../struct_compound_shape_settings_1_1_sub_shape_settings.html#aa79a4e31ee31e2d2760a15e01de76a71',1,'CompoundShapeSettings::SubShapeSettings::mShape'],['../struct_compound_shape_1_1_sub_shape.html#af0e288762fbe4fcdec676ce1836d5375',1,'CompoundShape::SubShape::mShape'],['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a2f023479973ac88867b30298c209df5a',1,'HeightFieldShape::HSGetTrianglesContext::mShape'],['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#aed1c23e9ef77d2d26bbe50f2094164f8',1,'MeshShape::MSGetTrianglesContext::mShape'],['../struct_shape_cast_t.html#a68df269e004434dd4c2dec18e29b1f8d',1,'ShapeCastT::mShape'],['../class_transformed_shape.html#ac6aaf976fee41c402c791012e4a2a3f9',1,'TransformedShape::mShape']]], + ['mshape1_642',['mshape1',['../class_collide_sphere_vs_triangles.html#a49702fc34c4a8b6bf866605f02a3e95d',1,'CollideSphereVsTriangles::mShape1'],['../class_collide_convex_vs_triangles.html#a323951ad9eea3102241913f2fc38184b',1,'CollideConvexVsTriangles::mShape1'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a0692931a0b827d909c886b3b9cd1c94e',1,'CompoundShape::CollideShapeVsCompoundVisitor::mShape1']]], + ['mshape1excvxradius_643',['mShape1ExCvxRadius',['../class_collide_convex_vs_triangles.html#ab7f021a387977244b9bf2364c2e0f1b9',1,'CollideConvexVsTriangles']]], + ['mshape1face_644',['mShape1Face',['../class_collide_shape_result.html#aa79b80c5eca1d8e7bf57771421bc3acc',1,'CollideShapeResult']]], + ['mshape1inccvxradius_645',['mShape1IncCvxRadius',['../class_collide_convex_vs_triangles.html#a76b3b285e2401983415ad2183e501655',1,'CollideConvexVsTriangles']]], + ['mshape2_646',['mShape2',['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#af4eac4c381d05d1c7cfb1512a2f202f7',1,'CompoundShape::CollideCompoundVsShapeVisitor']]], + ['mshape2face_647',['mShape2Face',['../class_collide_shape_result.html#ae69726442e6d35051405f8d437003316',1,'CollideShapeResult']]], + ['mshapecast_648',['mshapecast',['../class_cast_convex_vs_triangles.html#ade82995516a037d9229d24150ccc2020',1,'CastConvexVsTriangles::mShapeCast'],['../struct_compound_shape_1_1_cast_shape_visitor.html#a7bcdd12bb40a5694b8cea6c6b72ee730',1,'CompoundShape::CastShapeVisitor::mShapeCast']]], + ['mshapecastsettings_649',['mshapecastsettings',['../struct_compound_shape_1_1_cast_shape_visitor.html#a31cf68987698a4a4d01d6c3db7a25bb8',1,'CompoundShape::CastShapeVisitor::mShapeCastSettings'],['../class_cast_convex_vs_triangles.html#aecef46503b69985f8ce93474d7d9a59a',1,'CastConvexVsTriangles::mShapeCastSettings'],['../class_cast_sphere_vs_triangles.html#aedd22f079116eb249e674bb2350b283e',1,'CastSphereVsTriangles::mShapeCastSettings']]], + ['mshapefilter_650',['mshapefilter',['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a1078f83004c82a93a7674180fe0e0667',1,'CompoundShape::CollideShapeVsCompoundVisitor::mShapeFilter'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a63d01e5f27bd4944b066e6a33c3f4698',1,'CompoundShape::CollideCompoundVsShapeVisitor::mShapeFilter'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#ab0b166da6e14b8694b567f68605c3225',1,'CompoundShape::CollectTransformedShapesVisitor::mShapeFilter'],['../struct_compound_shape_1_1_cast_shape_visitor.html#a87b65ee6239d12e86511a22e35911181',1,'CompoundShape::CastShapeVisitor::mShapeFilter'],['../struct_compound_shape_1_1_collide_point_visitor.html#aef8c2ccc7305949bb69db4cfcc56cf85',1,'CompoundShape::CollidePointVisitor::mShapeFilter'],['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#a085af308c94408bd9f45fb3195402ba1',1,'CompoundShape::CastRayVisitorCollector::mShapeFilter']]], + ['mshapeoffset_651',['mShapeOffset',['../class_character_virtual_settings.html#a71029078959636aa6a6bca8ab72f31e3',1,'CharacterVirtualSettings']]], + ['mshapepositioncom_652',['mShapePositionCOM',['../class_transformed_shape.html#a37f8180dfc1c74cf7d97aca0eca7a0f5',1,'TransformedShape']]], + ['mshapeptr_653',['mShapePtr',['../struct_compound_shape_settings_1_1_sub_shape_settings.html#ae1a012a16565000879fbe836e22c5a07',1,'CompoundShapeSettings::SubShapeSettings']]], + ['mshaperotation_654',['mShapeRotation',['../class_transformed_shape.html#a329c136e38910229e39c31971819a34b',1,'TransformedShape']]], + ['mshapescale_655',['mShapeScale',['../class_transformed_shape.html#ad0e68878e0a74dcced58313f161b11f8',1,'TransformedShape']]], + ['mshapeworldbounds_656',['mShapeWorldBounds',['../struct_shape_cast_t.html#aef82ae03a83e2026e3af3d2f18d9710c',1,'ShapeCastT']]], + ['mshearcompliance_657',['mShearCompliance',['../struct_soft_body_shared_settings_1_1_vertex_attributes.html#a2b7dc88022a2596675aa9b551aa67d98',1,'SoftBodySharedSettings::VertexAttributes']]], + ['mshiftdownrpm_658',['mShiftDownRPM',['../class_vehicle_transmission_settings.html#a9c89ba7571dd3ba9e5dff909a379ab3f',1,'VehicleTransmissionSettings']]], + ['mshiftuprpm_659',['mShiftUpRPM',['../class_vehicle_transmission_settings.html#a928b1aea1e5cae37d92bd18ccc3ab74c',1,'VehicleTransmissionSettings']]], + ['mshouldabort_660',['mshouldabort',['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#a96602baa292532ce49ae7b808e42fe2c',1,'MeshShape::MSGetTrianglesContext::mShouldAbort'],['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a0ad068a4a5602db56c266019226226d0',1,'HeightFieldShape::HSGetTrianglesContext::mShouldAbort']]], + ['msixrestvolume_661',['mSixRestVolume',['../struct_soft_body_shared_settings_1_1_volume.html#adc67607f0f6f7f6e5e8ff1b77c463c2d',1,'SoftBodySharedSettings::Volume']]], + ['msize_662',['msize',['../class_static_array.html#ae10f00d23245f312c77e053defaa925e',1,'StaticArray::mSize'],['../class_r_t_t_i.html#ae1bedbd6bc7047937339f32647aa624c',1,'RTTI::mSize']]], + ['msizebytes_663',['mSizeBytes',['../struct_shape_1_1_stats.html#a97505a3dbba1ee77a2e59c845f7a571a',1,'Shape::Stats']]], + ['mskeleton_664',['mSkeleton',['../class_ragdoll_settings.html#ad4fed891ce9688ea6e65b84d913be3b8',1,'RagdollSettings']]], + ['mskinnedconstraints_665',['mSkinnedConstraints',['../class_soft_body_shared_settings.html#a4949040aee93ede22dcf720a4b8a5825',1,'SoftBodySharedSettings']]], + ['mskinnedremap_666',['mSkinnedRemap',['../class_soft_body_shared_settings_1_1_optimization_results.html#a9a71a19af3ff2567b4902e08657e6f5c',1,'SoftBodySharedSettings::OptimizationResults']]], + ['mslideraxis_667',['mSliderAxis',['../class_rack_and_pinion_constraint_settings.html#abab8a200eefd72f3518611ad2c80cbab',1,'RackAndPinionConstraintSettings']]], + ['mslideraxis1_668',['mSliderAxis1',['../class_slider_constraint_settings.html#a674de926b2858e971516a15d93e168c0',1,'SliderConstraintSettings']]], + ['mslideraxis2_669',['mSliderAxis2',['../class_slider_constraint_settings.html#af4319ce1c0bddddfa419bb361565f2e4',1,'SliderConstraintSettings']]], + ['msoftbodycollide_670',['mSoftBodyCollide',['../struct_physics_update_context_1_1_step.html#a15902e388880930871d31f3c93e509fa',1,'PhysicsUpdateContext::Step']]], + ['msoftbodyfinalize_671',['mSoftBodyFinalize',['../struct_physics_update_context_1_1_step.html#a5b44a2bcca8b605084adaa148bcfa090',1,'PhysicsUpdateContext::Step']]], + ['msoftbodyprepare_672',['mSoftBodyPrepare',['../struct_physics_update_context_1_1_step.html#afce2da019e38496dac8112213ca0cbf9',1,'PhysicsUpdateContext::Step']]], + ['msoftbodysimulate_673',['mSoftBodySimulate',['../struct_physics_update_context_1_1_step.html#acd7047a6c7f6bcf496cdf8250f143780',1,'PhysicsUpdateContext::Step']]], + ['msoftbodytocollide_674',['mSoftBodyToCollide',['../class_physics_update_context.html#aafa3f183df8ebb23b0ac564402a383c0',1,'PhysicsUpdateContext']]], + ['msoftbodyupdatecontexts_675',['mSoftBodyUpdateContexts',['../class_physics_update_context.html#a06ba290db66584bb880ebe95a26b67bf',1,'PhysicsUpdateContext']]], + ['msolvepositionconstraints_676',['mSolvePositionConstraints',['../struct_physics_update_context_1_1_step.html#a42542a887195fdbe5451a4c6dc38d4f9',1,'PhysicsUpdateContext::Step']]], + ['msolvepositionconstraintsnextisland_677',['mSolvePositionConstraintsNextIsland',['../struct_physics_update_context_1_1_step.html#a664416b66a92b704fa6557311862c9e0',1,'PhysicsUpdateContext::Step']]], + ['msolvevelocityconstraints_678',['mSolveVelocityConstraints',['../struct_physics_update_context_1_1_step.html#a17baea78265815e3873c968326eb08e6',1,'PhysicsUpdateContext::Step']]], + ['msolvevelocityconstraintsnextisland_679',['mSolveVelocityConstraintsNextIsland',['../struct_physics_update_context_1_1_step.html#a0a81eaf0dd6d5042c7ad171c626b8ecb',1,'PhysicsUpdateContext::Step']]], + ['msortedtriangleidx_680',['mSortedTriangleIdx',['../class_triangle_splitter.html#ae62e9b953580dd5abf55e50985418829',1,'TriangleSplitter']]], + ['mspace_681',['mspace',['../class_six_d_o_f_constraint_settings.html#a6cf826e6c54d7f54f704c8579d586001',1,'SixDOFConstraintSettings::mSpace'],['../class_pulley_constraint_settings.html#ab784f151989a5ae138261a415654290f',1,'PulleyConstraintSettings::mSpace'],['../class_point_constraint_settings.html#abebac3d7da7808a7430f01398a1d817a',1,'PointConstraintSettings::mSpace'],['../class_hinge_constraint_settings.html#a725ff18567624814960e708b5e3729ce',1,'HingeConstraintSettings::mSpace'],['../class_gear_constraint_settings.html#a0cc02f07332e14d49c7e280639cde9d8',1,'GearConstraintSettings::mSpace'],['../class_fixed_constraint_settings.html#a971cd8f2570d3236744b0d3a85e23422',1,'FixedConstraintSettings::mSpace'],['../class_distance_constraint_settings.html#a09098a011c7b8061c47260953e49e48b',1,'DistanceConstraintSettings::mSpace'],['../class_cone_constraint_settings.html#ac479688fa75bbf306dc300bc35ae19a2',1,'ConeConstraintSettings::mSpace'],['../class_rack_and_pinion_constraint_settings.html#a13d28a9be1de9f098094d5b06d2b21a6',1,'RackAndPinionConstraintSettings::mSpace'],['../class_swing_twist_constraint_settings.html#a72b4b2d4679bb816c48947ef24f3153e',1,'SwingTwistConstraintSettings::mSpace'],['../class_slider_constraint_settings.html#afc5127fe325c86046c4765ed89dce4fe',1,'SliderConstraintSettings::mSpace']]], + ['mspeculativecontactdistance_682',['mSpeculativeContactDistance',['../struct_physics_settings.html#a9d7cb8a2c982e6c63e4def8fcd88d7fb',1,'PhysicsSettings']]], + ['mspherecenterin2_683',['mSphereCenterIn2',['../class_collide_sphere_vs_triangles.html#a1ba538db910e96e6bbeee5f29c7518ed',1,'CollideSphereVsTriangles']]], + ['msplits_684',['mSplits',['../class_large_island_splitter_1_1_splits.html#aa3d8218f5eefc7a12e3d884f8a52034f',1,'LargeIslandSplitter::Splits']]], + ['msplittername_685',['mSplitterName',['../struct_triangle_splitter_1_1_stats.html#ab1f9c15898ed3aa0fa0586ef851e0863',1,'TriangleSplitter::Stats']]], + ['msplitterstats_686',['mSplitterStats',['../struct_a_a_b_b_tree_builder_stats.html#ab1b2df872750bdff4622582ab59b1aa3',1,'AABBTreeBuilderStats']]], + ['mspringsettings_687',['mSpringSettings',['../class_motor_settings.html#a5a51d3f04aa12947eb85d08a1f01dab6',1,'MotorSettings']]], + ['mstart_688',['mStart',['../class_cast_sphere_vs_triangles.html#a97177eb99d17fdaba69e79d5a1e6be9b',1,'CastSphereVsTriangles']]], + ['mstartcycle_689',['mStartCycle',['../class_profile_sample.html#ae91dc9a0769eb9f97e061682021adcc0',1,'ProfileSample']]], + ['mstartidx_690',['mstartidx',['../class_e_p_a_convex_hull_builder_1_1_edge.html#a3198dfe7323ed3f875dca4e00821a53c',1,'EPAConvexHullBuilder::Edge::mStartIdx'],['../class_convex_hull_builder_1_1_edge.html#ab10d2e518b78941d3a5a4cb8854e30df',1,'ConvexHullBuilder::Edge::mStartIdx']]], + ['mstartnextstep_691',['mStartNextStep',['../struct_physics_update_context_1_1_step.html#a8648fd2c91cb4f4fc003682c09a56779',1,'PhysicsUpdateContext::Step']]], + ['mstate_692',['mState',['../class_soft_body_update_context.html#a17a280895e22b255d4938b2504f4a850',1,'SoftBodyUpdateContext']]], + ['mstatus_693',['mStatus',['../class_large_island_splitter_1_1_splits.html#ab22709004602365875473ce64ee5cd22',1,'LargeIslandSplitter::Splits']]], + ['msteerangle_694',['mSteerAngle',['../class_wheel.html#ae6d6847e2825c5e6b1f3203d8fe559fa',1,'Wheel']]], + ['msteeringaxis_695',['mSteeringAxis',['../class_wheel_settings.html#aa3ee3a56dcf0f0c4b679d9be1b44e4bb',1,'WheelSettings']]], + ['mstepdeltatime_696',['mStepDeltaTime',['../class_physics_update_context.html#a2f93d5ea4f409db1b4fcb5e353093276',1,'PhysicsUpdateContext']]], + ['msteplistenerbatchesperjob_697',['mStepListenerBatchesPerJob',['../struct_physics_settings.html#af9a3ca565935d36351a646e82ffe0867',1,'PhysicsSettings']]], + ['msteplistenerreadidx_698',['mStepListenerReadIdx',['../struct_physics_update_context_1_1_step.html#a295a55ea8456a023f402bdd731b59922',1,'PhysicsUpdateContext::Step']]], + ['msteplisteners_699',['mStepListeners',['../struct_physics_update_context_1_1_step.html#ab660abd26126a1e92afee5e2d08dc4d5',1,'PhysicsUpdateContext::Step']]], + ['msteplistenersbatchsize_700',['mStepListenersBatchSize',['../struct_physics_settings.html#a646cc49b1095c6c682189ba15d4de67f',1,'PhysicsSettings']]], + ['msteps_701',['mSteps',['../class_physics_update_context.html#a28312d2f14f0c11540c28f7162f927ce',1,'PhysicsUpdateContext']]], + ['msticktofloorstepdown_702',['mStickToFloorStepDown',['../struct_character_virtual_1_1_extended_update_settings.html#a1c5ed3a437d5b284f4ce9b271bfebbf8',1,'CharacterVirtual::ExtendedUpdateSettings']]], + ['mstiffness_703',['mstiffness',['../class_vehicle_anti_roll_bar.html#a834b3f779e7beeb0cc7109d74bcf54b7',1,'VehicleAntiRollBar::mStiffness'],['../class_spring_settings.html#a688815c0e85518f1ac42f1d077415472',1,'SpringSettings::mStiffness']]], + ['mstream_704',['mstream',['../class_object_stream_out.html#ae8ab7835a47259ec7fc0d8bbeb2c3e8f',1,'ObjectStreamOut::mStream'],['../class_object_stream_in.html#af192dd2e7103ba17cf40d13bed1ee123',1,'ObjectStreamIn::mStream']]], + ['mstring_705',['mString',['../struct_debug_renderer_recorder_1_1_text_blob.html#a7f42273b0a4ed68bf7a3ae6322bc925e',1,'DebugRendererRecorder::TextBlob']]], + ['msubshapebits_706',['msubshapebits',['../struct_compound_shape_1_1_cast_shape_visitor.html#a71060cc2b409ddda0dd6a8d6da5086a7',1,'CompoundShape::CastShapeVisitor::mSubShapeBits'],['../struct_compound_shape_1_1_cast_ray_visitor.html#a3d68ed7fbf5ccbb853e1ef47e45e72bb',1,'CompoundShape::CastRayVisitor::mSubShapeBits'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a5b0a740a68fd32de56518ab00e2d5afa',1,'CompoundShape::CollideCompoundVsShapeVisitor::mSubShapeBits'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a05854f0c5dc41a5e299b988edb4936d8',1,'CompoundShape::CollideShapeVsCompoundVisitor::mSubShapeBits'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#ae36c22c62df54bfaabe0272463b0b32c',1,'CompoundShape::CollectTransformedShapesVisitor::mSubShapeBits'],['../struct_compound_shape_1_1_collide_point_visitor.html#adb322db658c73032656a070fad686949',1,'CompoundShape::CollidePointVisitor::mSubShapeBits'],['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#a77fc1dbc8b79d5ec9cb3bf6803f9ca33',1,'CompoundShape::CastRayVisitorCollector::mSubShapeBits']]], + ['msubshapeid1_707',['msubshapeid1',['../class_contact_manifold.html#ad02e3fa2a71653627234207197f2038a',1,'ContactManifold::mSubShapeID1'],['../class_collide_sphere_vs_triangles.html#a7da1606e9e21e89e87680088a542058b',1,'CollideSphereVsTriangles::mSubShapeID1'],['../class_collide_shape_result.html#a0a62402355f85f878a6444bbcbba31c4',1,'CollideShapeResult::mSubShapeID1'],['../class_collide_convex_vs_triangles.html#ac938fe2d5f06a8acc3dca0ea0034d7d1',1,'CollideConvexVsTriangles::mSubShapeID1']]], + ['msubshapeid2_708',['msubshapeid2',['../class_ray_cast_result.html#ab40012f9ad5377a0d517fa51b23b385e',1,'RayCastResult::mSubShapeID2'],['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a645c052846be8d140657dbe261829ad3',1,'PhysicsUpdateContext::Step::CCDBody::mSubShapeID2'],['../class_contact_manifold.html#a4daf9a7c0e11fcbfe1a65ffcea1a5fb1',1,'ContactManifold::mSubShapeID2'],['../class_collide_shape_result.html#ab12cb1e36b125a536229698328e30d9a',1,'CollideShapeResult::mSubShapeID2'],['../class_collide_point_result.html#afb9f97847ff73066b54793e15ebb2aa8',1,'CollidePointResult::mSubShapeID2']]], + ['msubshapeidb_709',['mSubShapeIDB',['../struct_character_virtual_1_1_contact.html#a9bf8135c5166ab8a22092656b2f6ebb1',1,'CharacterVirtual::Contact']]], + ['msubshapeidcreator_710',['msubshapeidcreator',['../struct_compound_shape_1_1_cast_ray_visitor.html#a5d6fbbcbcb0a268582642c731d542c8f',1,'CompoundShape::CastRayVisitor::mSubShapeIDCreator'],['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#a3a9a5655d3583d15e247d7c3ce94da35',1,'CompoundShape::CastRayVisitorCollector::mSubShapeIDCreator'],['../struct_compound_shape_1_1_collide_point_visitor.html#a7f36227c8d0f4ad5e2cf940616f41670',1,'CompoundShape::CollidePointVisitor::mSubShapeIDCreator'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a613d75816ac10978847612943afa504e',1,'CompoundShape::CollectTransformedShapesVisitor::mSubShapeIDCreator'],['../class_transformed_shape.html#a3d0b38db0aacff1c3188a0c20f45e713',1,'TransformedShape::mSubShapeIDCreator']]], + ['msubshapeidcreator1_711',['msubshapeidcreator1',['../struct_compound_shape_1_1_cast_shape_visitor.html#a88be6d8856ed44ab1bce0e18c6716f69',1,'CompoundShape::CastShapeVisitor::mSubShapeIDCreator1'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a9746a70a1987e1a6bf752cd959559335',1,'CompoundShape::CollideShapeVsCompoundVisitor::mSubShapeIDCreator1'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#afd4c304df5e719a22c21e479fbfffa32',1,'CompoundShape::CollideCompoundVsShapeVisitor::mSubShapeIDCreator1'],['../class_cast_sphere_vs_triangles.html#a24ea3c9bbd79ad02885b38316b1e38cd',1,'CastSphereVsTriangles::mSubShapeIDCreator1'],['../class_cast_convex_vs_triangles.html#ac22fb7d322f54265651f5a46ea07a070',1,'CastConvexVsTriangles::mSubShapeIDCreator1']]], + ['msubshapeidcreator2_712',['msubshapeidcreator2',['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a7d54b29e53e0fb097be48c090307afa2',1,'CompoundShape::CollideCompoundVsShapeVisitor::mSubShapeIDCreator2'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a1c496d4fffaa54a2bb1119811ead6906',1,'CompoundShape::CollideShapeVsCompoundVisitor::mSubShapeIDCreator2'],['../struct_compound_shape_1_1_cast_shape_visitor.html#a6e39d022fd61dff3cd0572c0a76c0894',1,'CompoundShape::CastShapeVisitor::mSubShapeIDCreator2']]], + ['msubshapes_713',['msubshapes',['../class_compound_shape.html#ad0a3a145f580f2d8f5fabb2495a8eb7c',1,'CompoundShape::mSubShapes'],['../class_compound_shape_settings.html#a1fcf910b218527bcd856bf017b8ea6f3',1,'CompoundShapeSettings::mSubShapes']]], + ['msubstepdeltatime_714',['mSubStepDeltaTime',['../class_soft_body_update_context.html#a0900465027d74b085a1a3138cb2e84f6',1,'SoftBodyUpdateContext']]], + ['msupport_715',['mSupport',['../class_convex_shape_1_1_c_s_get_triangles_context.html#ac64202470dce73526cf31cae7fab85ba',1,'ConvexShape::CSGetTrianglesContext']]], + ['msupportbuffer_716',['mSupportBuffer',['../class_convex_shape_1_1_c_s_get_triangles_context.html#a45f81810720d3e76a07ef3af08cba37c',1,'ConvexShape::CSGetTrianglesContext']]], + ['msupportingvolume_717',['msupportingvolume',['../class_character_base.html#ae9fb45e5980787c5f7f718f6e7703797',1,'CharacterBase::mSupportingVolume'],['../class_character_base_settings.html#a31c6c2f0de04f45c657b0932319b6bfb',1,'CharacterBaseSettings::mSupportingVolume']]], + ['msurfacenormal_718',['mSurfaceNormal',['../struct_character_virtual_1_1_contact.html#ac8573f10d6b69928672603e63490d450',1,'CharacterVirtual::Contact']]], + ['msuspensiondirection_719',['mSuspensionDirection',['../class_wheel_settings.html#a1901645636d97056d9966bdcff58d3f4',1,'WheelSettings']]], + ['msuspensionforcepoint_720',['mSuspensionForcePoint',['../class_wheel_settings.html#a3981fc1b27c64cadc8a8a5e0d0e66521',1,'WheelSettings']]], + ['msuspensionlength_721',['mSuspensionLength',['../class_wheel.html#a49fc75e7639dbf0a484ccd9bf1968ae4',1,'Wheel']]], + ['msuspensionmaxlength_722',['mSuspensionMaxLength',['../class_wheel_settings.html#a29632dde4d9c95457019aa478e415345',1,'WheelSettings']]], + ['msuspensionmaxuppart_723',['mSuspensionMaxUpPart',['../class_wheel.html#a568fed5d0dd04fd63020e9253801a34c',1,'Wheel']]], + ['msuspensionminlength_724',['mSuspensionMinLength',['../class_wheel_settings.html#afde39534b2ab075300c88a6284aeb904',1,'WheelSettings']]], + ['msuspensionpart_725',['mSuspensionPart',['../class_wheel.html#a9e9df1e9246d38363edc02b9d1c81ef4',1,'Wheel']]], + ['msuspensionpreloadlength_726',['mSuspensionPreloadLength',['../class_wheel_settings.html#a10cfbcf5f888bf21d046c75cbdd63c67',1,'WheelSettings']]], + ['msuspensionspring_727',['mSuspensionSpring',['../class_wheel_settings.html#a778e1295b5e6187b4435a66f8812be4e',1,'WheelSettings']]], + ['mswingmotorsettings_728',['mSwingMotorSettings',['../class_swing_twist_constraint_settings.html#a3e07516a7bee2dd0552197bb46663289',1,'SwingTwistConstraintSettings']]], + ['mswingtype_729',['mswingtype',['../class_six_d_o_f_constraint_settings.html#a9d539e9b7ea81892b587426c4dd77d1d',1,'SixDOFConstraintSettings::mSwingType'],['../class_swing_twist_constraint_settings.html#a56b16117463f015b513fd91666efe623',1,'SwingTwistConstraintSettings::mSwingType']]], + ['mswitchlatency_730',['mSwitchLatency',['../class_vehicle_transmission_settings.html#a8c1734a64d58ae36d49082c56d563986',1,'VehicleTransmissionSettings']]], + ['mswitchtime_731',['mSwitchTime',['../class_vehicle_transmission_settings.html#ad890effc2f497795fb22fd56da27888e',1,'VehicleTransmissionSettings']]], + ['msystem_732',['mSystem',['../class_character_base.html#ac6c3f8f7a2492d0c0f2eac85a9cc5a01',1,'CharacterBase']]], + ['mtangent_733',['mTangent',['../struct_path_constraint_path_hermite_1_1_point.html#a4cd15236568584e92fdd3807a7a50231',1,'PathConstraintPathHermite::Point']]], + ['mtangent1_734',['mTangent1',['../struct_collision_estimation_result.html#a4bbba50d9d52cc075e49fc3c9f65b7a3',1,'CollisionEstimationResult']]], + ['mtangent2_735',['mTangent2',['../struct_collision_estimation_result.html#a48883412273db08fa7bd1d2e1d219ee4',1,'CollisionEstimationResult']]], + ['mtargetlean_736',['mTargetLean',['../class_motorcycle_controller.html#a9b83a81c63978a8048d781e9dc4ceddb',1,'MotorcycleController']]], + ['mtempallocator_737',['mTempAllocator',['../class_physics_update_context.html#a849d877684ec2ecc251defcfe8c62e91',1,'PhysicsUpdateContext']]], + ['mtexts_738',['mTexts',['../struct_debug_renderer_recorder_1_1_frame.html#a558929bf365bb2a6ca152fc58426f0c9',1,'DebugRendererRecorder::Frame']]], + ['mthreadname_739',['mThreadName',['../class_profile_thread.html#aa442ddaa639a059c3a99f40186ffe676',1,'ProfileThread']]], + ['mtime_740',['mTime',['../class_skeletal_animation_1_1_keyframe.html#a75e2a3808d0cf210cafa3bd083769340',1,'SkeletalAnimation::Keyframe']]], + ['mtimebeforesleep_741',['mTimeBeforeSleep',['../struct_physics_settings.html#a0bd7d6eb98c547488f874a9577fff451',1,'PhysicsSettings']]], + ['mtiremaximpulsecallback_742',['mTireMaxImpulseCallback',['../class_wheeled_vehicle_controller.html#a9bea13499ea34379be661071f6d3fa2a',1,'WheeledVehicleController']]], + ['mto_743',['mTo',['../struct_debug_renderer_recorder_1_1_line_blob.html#a1f5c643be8a76700f8196487f3387bbb',1,'DebugRendererRecorder::LineBlob']]], + ['mtoparent_744',['mToParent',['../class_ragdoll_settings_1_1_part.html#afb73a8b66a2623b865346823710b68c1',1,'RagdollSettings::Part']]], + ['mtrackindex_745',['mTrackIndex',['../class_wheel_t_v.html#a79ab021cdfe7a345e7e72abcfb418679',1,'WheelTV']]], + ['mtracks_746',['mtracks',['../class_tracked_vehicle_controller.html#a1488f414bfa1cd59e4165b1157e42858',1,'TrackedVehicleController::mTracks'],['../class_tracked_vehicle_controller_settings.html#adbe8e52a437dcdb57ac4078958f2dece',1,'TrackedVehicleControllerSettings::mTracks']]], + ['mtransform_747',['mtransform',['../class_collide_soft_body_vertices_vs_triangles.html#ad5e739e65afabaeec273f234c5041595',1,'CollideSoftBodyVerticesVsTriangles::mTransform'],['../struct_transformed_convex_object.html#a4314714041c688936d9c9078af6c37e1',1,'TransformedConvexObject::mTransform'],['../class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html#ac7fb2a99b543d33c12bd22fae1469532',1,'ConvexHullShape::CHSGetTrianglesContext::mTransform'],['../class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html#ab4f1e69130b52eca9b315c2e2a808202',1,'TaperedCylinderShape::TCSGetTrianglesContext::mTransform']]], + ['mtransform1_748',['mtransform1',['../class_collide_convex_vs_triangles.html#a8dc5e32b75220d7216387f253d1356c6',1,'CollideConvexVsTriangles::mTransform1'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a10a2d8ac67f9978eeacf09dae77c894b',1,'CompoundShape::CollideCompoundVsShapeVisitor::mTransform1'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a5aaf192557a3ec7462f9615d2982f21e',1,'CompoundShape::CollideShapeVsCompoundVisitor::mTransform1']]], + ['mtransform2_749',['mtransform2',['../class_collide_sphere_vs_triangles.html#a4813b78df4e0eb5493ae90ca519155ba',1,'CollideSphereVsTriangles::mTransform2'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a3e53fc715eeb683b4b753c43923f5839',1,'CompoundShape::CollideCompoundVsShapeVisitor::mTransform2'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#acecad887d6ab8d8d243679afcb0146eb',1,'CompoundShape::CollideShapeVsCompoundVisitor::mTransform2']]], + ['mtransform2to1_750',['mTransform2To1',['../class_collide_convex_vs_triangles.html#aae5e07005177f17412f4102c2a8440b6',1,'CollideConvexVsTriangles']]], + ['mtranslation_751',['mtranslation',['../class_skeleton_mapper_1_1_locked.html#a8c531c4839b8a2c8afd287eed3118faf',1,'SkeletonMapper::Locked::mTranslation'],['../class_skeletal_animation_1_1_joint_state.html#af8e19b9f29f42e33163c89ddd57fe5c4',1,'SkeletalAnimation::JointState::mTranslation']]], + ['mtransmission_752',['mtransmission',['../class_wheeled_vehicle_controller.html#a22bd29e8d76290ee6fbfb10b8c207f83',1,'WheeledVehicleController::mTransmission'],['../class_wheeled_vehicle_controller_settings.html#a4cef336c9cfcecd52ade9a0ca4e10315',1,'WheeledVehicleControllerSettings::mTransmission'],['../class_tracked_vehicle_controller.html#a56eef9473ecf210d41d0c7a3994c79cd',1,'TrackedVehicleController::mTransmission'],['../class_tracked_vehicle_controller_settings.html#af67a8a4259f517164fb035582696dd6c',1,'TrackedVehicleControllerSettings::mTransmission']]], + ['mtreatconvexassolid_753',['mTreatConvexAsSolid',['../class_ray_cast_settings.html#ad275ebcd622dc43bc695426c55fb02f7',1,'RayCastSettings']]], + ['mtreeavgtrianglesperleaf_754',['mTreeAvgTrianglesPerLeaf',['../struct_a_a_b_b_tree_builder_stats.html#a7d0f12dbcbee2af06c05d40ae3df5f93',1,'AABBTreeBuilderStats']]], + ['mtreemaxtrianglesperleaf_755',['mTreeMaxTrianglesPerLeaf',['../struct_a_a_b_b_tree_builder_stats.html#aee50ad973c7fe3651d81dcd0377b5299',1,'AABBTreeBuilderStats']]], + ['mtreemintrianglesperleaf_756',['mTreeMinTrianglesPerLeaf',['../struct_a_a_b_b_tree_builder_stats.html#a18bfd03d4c5760089e7a6900965a7dc1',1,'AABBTreeBuilderStats']]], + ['mtrianglebatch_757',['mTriangleBatch',['../class_debug_renderer_1_1_l_o_d.html#a1f3a7c8804db5cbb7ea672f971f675eb',1,'DebugRenderer::LOD']]], + ['mtriangleindex_758',['mTriangleIndex',['../struct_soft_body_shape_1_1_s_b_s_get_triangles_context.html#a6b26488a2950bf9da8780a30d7e6bfc0',1,'SoftBodyShape::SBSGetTrianglesContext']]], + ['mtriangles_759',['mtriangles',['../class_triangle_splitter.html#ae13f91686abe55d9a87f2f5685b6268e',1,'TriangleSplitter::mTriangles'],['../struct_debug_renderer_recorder_1_1_frame.html#a87c788213b449661626611c59b917560',1,'DebugRendererRecorder::Frame::mTriangles'],['../class_a_a_b_b_tree_builder_1_1_node.html#a4ddf63bc140eacd04b11913f745b2e2f',1,'AABBTreeBuilder::Node::mTriangles']]], + ['mtrianglevertices_760',['mtrianglevertices',['../class_mesh_shape_settings.html#a53fa50eb7385917c8b1e68e44d746a35',1,'MeshShapeSettings::mTriangleVertices'],['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#a16014a0cba1dc41756ad4cb65d155163',1,'MeshShape::MSGetTrianglesContext::mTriangleVertices'],['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a728e112e9c545273d009368eaf893b1d',1,'HeightFieldShape::HSGetTrianglesContext::mTriangleVertices']]], + ['mtwistaxis1_761',['mtwistaxis1',['../class_swing_twist_constraint_settings.html#af7e277bd57e8b30ad5e61a440f55c923',1,'SwingTwistConstraintSettings::mTwistAxis1'],['../class_cone_constraint_settings.html#abd15590482096d82b4ca8c8d4013cccf',1,'ConeConstraintSettings::mTwistAxis1']]], + ['mtwistaxis2_762',['mtwistaxis2',['../class_cone_constraint_settings.html#a3143db81034d1f0268764f1fe44f5c19',1,'ConeConstraintSettings::mTwistAxis2'],['../class_swing_twist_constraint_settings.html#ad43e13d0d38989e96d77efb2cef48e5c',1,'SwingTwistConstraintSettings::mTwistAxis2']]], + ['mtwistmaxangle_763',['mTwistMaxAngle',['../class_swing_twist_constraint_settings.html#a839558fbacc1371853779f96720bbb9a',1,'SwingTwistConstraintSettings']]], + ['mtwistminangle_764',['mTwistMinAngle',['../class_swing_twist_constraint_settings.html#a12cd470644a292469f6d548e81554152',1,'SwingTwistConstraintSettings']]], + ['mtwistmotorsettings_765',['mTwistMotorSettings',['../class_swing_twist_constraint_settings.html#a72373f006ab5f1785c363bc03db5f5c0',1,'SwingTwistConstraintSettings']]], + ['mu32_766',['mu32',['../class_u_vec8.html#a5a296db57439c7b0bedad1e8390e82cb',1,'UVec8::mU32'],['../class_u_vec4.html#afd0bc3823152808c01e8e8ad80ac694a',1,'UVec4::mU32'],['../class_color.html#a24745df31385c2a1d46335a75c48dcfb',1,'Color::mU32']]], + ['multiple_20physics_20systems_767',['Working With Multiple Physics Systems',['../index.html#working-with-multiple-physics-systems',1,'']]], + ['multiply3x3_768',['multiply3x3',['../class_mat44.html#a03490bf0526b79cc14125d9e6500576e',1,'Mat44::Multiply3x3(Mat44Arg inM) const'],['../class_mat44.html#ab599aaeab3e4b832f7f4097816650b14',1,'Mat44::Multiply3x3(Vec3Arg inV) const'],['../class_d_mat44.html#accf6a572b4d458e23a882db2e7bd8449',1,'DMat44::Multiply3x3(DVec3Arg inV) const'],['../class_d_mat44.html#a7782f799086b0eabe8095a65475018b7',1,'DMat44::Multiply3x3(Vec3Arg inV) const']]], + ['multiply3x3lefttransposed_769',['Multiply3x3LeftTransposed',['../class_mat44.html#a1c302e1f10c6c5a233aed4a540e0f598',1,'Mat44']]], + ['multiply3x3righttransposed_770',['Multiply3x3RightTransposed',['../class_mat44.html#a595ae3cf26d9fb87761e20b6b35d3d10',1,'Mat44']]], + ['multiply3x3transposed_771',['multiply3x3transposed',['../class_d_mat44.html#a3e74c4052e9dbbdc87f1d865d6679e74',1,'DMat44::Multiply3x3Transposed()'],['../class_mat44.html#a3ed66bc4c5e8e010657bd5bb109f1406',1,'Mat44::Multiply3x3Transposed()']]], + ['multiplyworldspaceinverseinertiabyvector_772',['MultiplyWorldSpaceInverseInertiaByVector',['../class_motion_properties.html#aa8a73ea7940a316151262ed9a28c4fbb',1,'MotionProperties']]], + ['multithreaded_20access_773',['Multithreaded Access',['../index.html#autotoc_md82',1,'']]], + ['munused_774',['mUnused',['../class_profile_sample.html#a1be9087e2cefdd32f178ce64ea46c349',1,'ProfileSample']]], + ['mup_775',['mup',['../class_character_base_settings.html#a97272d417a1fa07e4c9c6213e7d5c291',1,'CharacterBaseSettings::mUp'],['../class_character_base.html#a5f637f449a17fb6a1b10297764de48b4',1,'CharacterBase::mUp'],['../class_vehicle_constraint_settings.html#a90697fd39e19d071664f0fec05d75764',1,'VehicleConstraintSettings::mUp']]], + ['mupdatebroadphasefinalize_776',['mUpdateBroadphaseFinalize',['../struct_physics_update_context_1_1_step.html#abd9bafeccce1674c48d08f4edc56e739',1,'PhysicsUpdateContext::Step']]], + ['mupdateposition_777',['mUpdatePosition',['../class_soft_body_creation_settings.html#a96746df6942b462ac41a576819e078ec',1,'SoftBodyCreationSettings']]], + ['musebodypaircontactcache_778',['mUseBodyPairContactCache',['../struct_physics_settings.html#a5a6d3286936ff2f74d1cf106e8ebf3f6',1,'PhysicsSettings']]], + ['muselargeislandsplitter_779',['mUseLargeIslandSplitter',['../struct_physics_settings.html#ad391d29bbd9cd0cc0ce6358adb501e97',1,'PhysicsSettings']]], + ['musemanifoldreduction_780',['musemanifoldreduction',['../class_body_creation_settings.html#a50e9e038bb9df7acfe71dbb56480271c',1,'BodyCreationSettings::mUseManifoldReduction'],['../struct_physics_settings.html#af715e8c12331e908a82768501d09db97',1,'PhysicsSettings::mUseManifoldReduction']]], + ['muserdata_781',['muserdata',['../struct_character_virtual_1_1_contact.html#a904ea0676f8406e735f23ff45fa2d57a',1,'CharacterVirtual::Contact::mUserData'],['../class_indexed_triangle.html#a67837ce659824271f923fe5432ff6361',1,'IndexedTriangle::mUserData'],['../class_triangle.html#aafe91e923394d83ed4ee872bc2164ca5',1,'Triangle::mUserData'],['../class_soft_body_creation_settings.html#adbd6f1e62fecded89813ddab4e233e73',1,'SoftBodyCreationSettings::mUserData'],['../class_constraint_settings.html#a5f1b930fc3798cce17979e631a2a8a05',1,'ConstraintSettings::mUserData'],['../class_shape_settings.html#acd32835291c84d23e49c15194c1b0424',1,'ShapeSettings::mUserData'],['../struct_compound_shape_1_1_sub_shape.html#a8528ca1f6ee3908b418283517762bd57',1,'CompoundShape::SubShape::mUserData'],['../struct_compound_shape_settings_1_1_sub_shape_settings.html#a05791518abbef530de3bc631efa4d8dc',1,'CompoundShapeSettings::SubShapeSettings::mUserData'],['../class_body_creation_settings.html#aca747cc540a625d75c5a5abf0ad68216',1,'BodyCreationSettings::mUserData']]], + ['museshrunkenshapeandconvexradius_782',['mUseShrunkenShapeAndConvexRadius',['../class_shape_cast_settings.html#ac3cb9da5f5cce51f465609ac117f643e',1,'ShapeCastSettings']]], + ['mustbestatic_783',['mustbestatic',['../class_decorated_shape.html#ae68d25802b5bbe3e86cb3cb71698b78b',1,'DecoratedShape::MustBeStatic()'],['../class_soft_body_shape.html#ab0e06455cdee319947603a03d4d653fe',1,'SoftBodyShape::MustBeStatic()'],['../class_shape.html#a6abbf113475435c0c694d3199e352c3a',1,'Shape::MustBeStatic()'],['../class_plane_shape.html#ad42d77da7871ee1b6658faffeae0b93a',1,'PlaneShape::MustBeStatic()'],['../class_mesh_shape.html#a99a0706d71a876e3fd589a09a438f84f',1,'MeshShape::MustBeStatic()'],['../class_height_field_shape.html#ab850b5af741a24d3abc431d4b73d7caf',1,'HeightFieldShape::MustBeStatic()'],['../class_compound_shape.html#a1fe017e41afb14b1192689a5fa81ad2e',1,'CompoundShape::MustBeStatic()']]], + ['mutablecompound_784',['MutableCompound',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba7cfb218c3d7c5b405065bbe36510734c',1,'Shape.h']]], + ['mutablecompoundshape_785',['mutablecompoundshape',['../class_mutable_compound_shape.html',1,'MutableCompoundShape'],['../class_mutable_compound_shape.html#aa1412a6fbb245ef5476d7c72597f7aa9',1,'MutableCompoundShape::MutableCompoundShape(const MutableCompoundShapeSettings &inSettings, ShapeResult &outResult)'],['../class_mutable_compound_shape.html#a661ed40beb5af222c420b5746c16f431',1,'MutableCompoundShape::MutableCompoundShape()']]], + ['mutablecompoundshape_2ecpp_786',['MutableCompoundShape.cpp',['../_mutable_compound_shape_8cpp.html',1,'']]], + ['mutablecompoundshape_2eh_787',['MutableCompoundShape.h',['../_mutable_compound_shape_8h.html',1,'']]], + ['mutablecompoundshapesettings_788',['MutableCompoundShapeSettings',['../class_mutable_compound_shape_settings.html',1,'']]], + ['mutex_789',['Mutex',['../class_mutex.html',1,'']]], + ['mutex_2eh_790',['Mutex.h',['../_mutex_8h.html',1,'']]], + ['mutexarray_791',['mutexarray',['../class_mutex_array.html#a7440b62f6b4d1a8bfd608f88a26299e8',1,'MutexArray::MutexArray()=default'],['../class_mutex_array.html#a04bd4348871aea46fe2d567e5fa83861',1,'MutexArray::MutexArray(uint inNumMutexes)'],['../class_mutex_array.html',1,'MutexArray< MutexType >']]], + ['mutexarray_2eh_792',['MutexArray.h',['../_mutex_array_8h.html',1,'']]], + ['mutexarray_3c_20sharedmutex_20_3e_793',['MutexArray< SharedMutex >',['../class_mutex_array.html',1,'']]], + ['mutexbase_794',['MutexBase',['../_mutex_8h.html#af650aa8998011ee0a2881e766e812234',1,'Mutex.h']]], + ['mutexmask_795',['mutexmask',['../class_body_lock_interface.html#a771acdfb6a269ae145b3b7867b560ebb',1,'BodyLockInterface::MutexMask'],['../class_body_lock_multi_base.html#aed093a87a311d01a99c7818f4e766570',1,'BodyLockMultiBase::MutexMask'],['../class_body_manager.html#aee0d75a5176680f7c00728fa33cbe9e2',1,'BodyManager::MutexMask']]], + ['muv_796',['mUV',['../class_debug_renderer_1_1_vertex.html#a8dd2a6d51a9370b7c7a2a09d482f1414',1,'DebugRenderer::Vertex']]], + ['mv_797',['mv',['../class_triangle.html#add833346b63769a08d6d868195c9b6a5',1,'Triangle::mV'],['../class_debug_renderer_1_1_triangle.html#a0f8cb8accc7c2d34c0ea04b41c39e2b7',1,'DebugRenderer::Triangle::mV']]], + ['mv0_798',['mV0',['../class_collide_soft_body_vertices_vs_triangles.html#af25a1c81f66dd091515540878e130f59',1,'CollideSoftBodyVerticesVsTriangles']]], + ['mv1_799',['mv1',['../struct_triangle_convex_support.html#a50d0969071796932f1e6463f44d6265d',1,'TriangleConvexSupport::mV1'],['../class_collide_soft_body_vertices_vs_triangles.html#ad1bb010ce70cfec0aa0e060a0ea1d413',1,'CollideSoftBodyVerticesVsTriangles::mV1'],['../class_triangle_shape_1_1_t_s_get_triangles_context.html#ad673b007a0573a667df6b9198774f75d',1,'TriangleShape::TSGetTrianglesContext::mV1'],['../class_triangle_shape_settings.html#ace7ea628317505174644ccca3da1974e',1,'TriangleShapeSettings::mV1'],['../struct_debug_renderer_recorder_1_1_triangle_blob.html#a0e4f340eeb4bc951608c839d125706b7',1,'DebugRendererRecorder::TriangleBlob::mV1']]], + ['mv2_800',['mv2',['../struct_debug_renderer_recorder_1_1_triangle_blob.html#ad9b9200852056347b72aab08a003e314',1,'DebugRendererRecorder::TriangleBlob::mV2'],['../struct_triangle_convex_support.html#af687a449850628811fad039fe5d7e308',1,'TriangleConvexSupport::mV2'],['../class_collide_soft_body_vertices_vs_triangles.html#a8ccc0079644faa1068d3b40a0de22f71',1,'CollideSoftBodyVerticesVsTriangles::mV2'],['../class_triangle_shape_1_1_t_s_get_triangles_context.html#abb0734ba3ab26c205de6f4c3a87e7fe9',1,'TriangleShape::TSGetTrianglesContext::mV2'],['../class_triangle_shape_settings.html#afdc5c0d06ca166fe0bf4fbec095588e3',1,'TriangleShapeSettings::mV2']]], + ['mv3_801',['mv3',['../struct_triangle_convex_support.html#a9ffeaa522b588040a0e6ccb36904ec99',1,'TriangleConvexSupport::mV3'],['../class_triangle_shape_1_1_t_s_get_triangles_context.html#a7c18cf40db6033cf16d259d679c76004',1,'TriangleShape::TSGetTrianglesContext::mV3'],['../class_triangle_shape_settings.html#a4f21dc83442b7f3ebafa9fd5f2e84d66',1,'TriangleShapeSettings::mV3'],['../struct_debug_renderer_recorder_1_1_triangle_blob.html#a31f1167b7d3996c0c402d54ebfa0a9d7',1,'DebugRendererRecorder::TriangleBlob::mV3']]], + ['mvalue_802',['mvalue',['../class_vec8.html#ae0db0da7d3c6ce86e916b3e31825c4e0',1,'Vec8::mValue'],['../class_vec4.html#ac25b6ecd8f3fa3afe02509da4a155e5c',1,'Vec4::mValue'],['../class_vec3.html#aa84e1ff8ea2e1cea4b73c7768966fa03',1,'Vec3::mValue'],['../class_u_vec8.html#aa58cb5d101744a6d174afc8cad1e2d98',1,'UVec8::mValue'],['../class_u_vec4.html#a9eaa6e208405d15d1e5df9cb5dac184f',1,'UVec4::mValue'],['../class_quat.html#afad087a5997d1318f544b5c9819c4d9b',1,'Quat::mValue'],['../class_d_vec3.html#a2b0ef89bdfb754e256a43a9505075060',1,'DVec3::mValue']]], + ['mvelocity_803',['mvelocity',['../struct_soft_body_shared_settings_1_1_vertex.html#a2f830cc1795b028e3ca2043ce2cf5a63',1,'SoftBodySharedSettings::Vertex::mVelocity'],['../class_soft_body_vertex.html#a5cb33a0b7a5c5085ddffe35daadd784c',1,'SoftBodyVertex::mVelocity']]], + ['mvertex_804',['mvertex',['../struct_soft_body_shared_settings_1_1_face.html#af289ee75cdbf4d3204ef06f385a2eafd',1,'SoftBodySharedSettings::Face::mVertex'],['../struct_soft_body_shared_settings_1_1_edge.html#a10368fe4bdfd3de764f0e5cbbf48371c',1,'SoftBodySharedSettings::Edge::mVertex'],['../struct_soft_body_shared_settings_1_1_dihedral_bend.html#a8a2a36d080d6ca92f8badb53ef6e7f83',1,'SoftBodySharedSettings::DihedralBend::mVertex'],['../struct_soft_body_shared_settings_1_1_volume.html#ac93843ad9233c36b55ae93cc522773bd',1,'SoftBodySharedSettings::Volume::mVertex'],['../class_soft_body_shared_settings_1_1_skinned.html#a6a6d06b82ef34f2a262681bb04b44e53',1,'SoftBodySharedSettings::Skinned::mVertex'],['../class_soft_body_shared_settings_1_1_l_r_a.html#a40ed7466722bd0a9e17b399117e00d8d',1,'SoftBodySharedSettings::LRA::mVertex']]], + ['mvertexradius_805',['mVertexRadius',['../class_soft_body_shared_settings.html#ae46ebad87cc50beaf39fbe451e1dbef1',1,'SoftBodySharedSettings']]], + ['mvertexxy_806',['mVertexXY',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.html#ad2e1750c341249ae3793b2db7c68648a',1,'TriangleCodecIndexed8BitPackSOA4Flags::VertexData']]], + ['mvertexzy_807',['mVertexZY',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.html#ae2776c91a44cddc8ee6daa495c725e2f',1,'TriangleCodecIndexed8BitPackSOA4Flags::VertexData']]], + ['mvertices_808',['mvertices',['../struct_plane_shape_1_1_p_s_get_triangles_context.html#ad19e185ae61b748f9d2e67d0248ebca3',1,'PlaneShape::PSGetTrianglesContext::mVertices'],['../struct_polygon_convex_support.html#ab038bf1e11e180f9663d1a5f877c4ee7',1,'PolygonConvexSupport::mVertices'],['../class_soft_body_shared_settings.html#a0bd7da7039e73883ca75053b37a3c872',1,'SoftBodySharedSettings::mVertices'],['../class_triangle_splitter.html#a537998b55d090598c884630c73bde5f1',1,'TriangleSplitter::mVertices']]], + ['mvolumeconstraints_809',['mVolumeConstraints',['../class_soft_body_shared_settings.html#a900de005e0c55c3000fa154a019e6e9b',1,'SoftBodySharedSettings']]], + ['mvolumeremap_810',['mVolumeRemap',['../class_soft_body_shared_settings_1_1_optimization_results.html#a7fd9a24ecc5f4ebd5a4b88990d114162',1,'SoftBodySharedSettings::OptimizationResults']]], + ['mwalkstairscosangleforwardcontact_811',['mWalkStairsCosAngleForwardContact',['../struct_character_virtual_1_1_extended_update_settings.html#aa1710035a7d1b96b4b1d2ba526452528',1,'CharacterVirtual::ExtendedUpdateSettings']]], + ['mwalkstairsminstepforward_812',['mWalkStairsMinStepForward',['../struct_character_virtual_1_1_extended_update_settings.html#a175073b371406a720d7e381fc9103110',1,'CharacterVirtual::ExtendedUpdateSettings']]], + ['mwalkstairsstepdownextra_813',['mWalkStairsStepDownExtra',['../struct_character_virtual_1_1_extended_update_settings.html#a8cd00377425d16b8b2fbee1eb8dc97dc',1,'CharacterVirtual::ExtendedUpdateSettings']]], + ['mwalkstairsstepforwardtest_814',['mWalkStairsStepForwardTest',['../struct_character_virtual_1_1_extended_update_settings.html#a773f3fecf53db30cd8a6381b307a3cb4',1,'CharacterVirtual::ExtendedUpdateSettings']]], + ['mwalkstairsstepup_815',['mWalkStairsStepUp',['../struct_character_virtual_1_1_extended_update_settings.html#ac716eaa1338501e45efa6b6d0100e931',1,'CharacterVirtual::ExtendedUpdateSettings']]], + ['mwarmstartimpulseratio_816',['mWarmStartImpulseRatio',['../class_physics_update_context.html#a52d38e3dd5e6fbe7beb3a90b4ea27e1f',1,'PhysicsUpdateContext']]], + ['mwasdiscarded_817',['mWasDiscarded',['../struct_character_virtual_1_1_contact.html#a8137b339f63f6693ed3bb5449ea18ec0',1,'CharacterVirtual::Contact']]], + ['mweight_818',['mWeight',['../class_soft_body_shared_settings_1_1_skin_weight.html#a6ef599e2bf0fe4501cab6643a3ed94e9',1,'SoftBodySharedSettings::SkinWeight']]], + ['mweights_819',['mWeights',['../class_soft_body_shared_settings_1_1_skinned.html#a0fb7ce72e3c7289105c2f0b785a354ff',1,'SoftBodySharedSettings::Skinned']]], + ['mwheelforward_820',['mWheelForward',['../class_wheel_settings.html#af591b9f4e43a65991bff1706ad62031f',1,'WheelSettings']]], + ['mwheels_821',['mwheels',['../class_vehicle_constraint_settings.html#a16448108c04763f3b069d0e2b2169403',1,'VehicleConstraintSettings::mWheels'],['../class_vehicle_track_settings.html#abdcb4574025a04f9779c86d8bf3f24a4',1,'VehicleTrackSettings::mWheels']]], + ['mwheelup_822',['mWheelUp',['../class_wheel_settings.html#a80888c1fe230a769b72eed7885fe6878',1,'WheelSettings']]], + ['mwidth_823',['mWidth',['../class_wheel_settings.html#a3384bb6aef1272f1f36c56c6397232f1',1,'WheelSettings']]], + ['mworldspacenormal_824',['mWorldSpaceNormal',['../class_contact_manifold.html#ab90dc956aa8b9936495992212fa64487',1,'ContactManifold']]], + ['mwriteidx_825',['mWriteIdx',['../struct_physics_update_context_1_1_body_pair_queue.html#abbf11d72c4fe4c3e5f7558f1b87c0495',1,'PhysicsUpdateContext::BodyPairQueue']]], + ['mx_826',['mX',['../class_linear_curve_1_1_point.html#a77d490988ee3376130ca5baa86bb1669',1,'LinearCurve::Point']]], + ['my_827',['mY',['../class_linear_curve_1_1_point.html#a25487f72780ffd1b6984c8e6e5547f0c',1,'LinearCurve::Point']]] +]; diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 000000000..529fd906c --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,93 @@ +var searchData= +[ + ['aabbtreebuilder_0',['AABBTreeBuilder',['../class_a_a_b_b_tree_builder.html',1,'']]], + ['aabbtreebuilderstats_1',['AABBTreeBuilderStats',['../struct_a_a_b_b_tree_builder_stats.html',1,'']]], + ['aabbtreetobuffer_2',['AABBTreeToBuffer',['../class_a_a_b_b_tree_to_buffer.html',1,'']]], + ['aabox_3',['AABox',['../class_a_a_box.html',1,'']]], + ['aaboxcast_4',['AABoxCast',['../struct_a_a_box_cast.html',1,'']]], + ['addconvexradius_5',['AddConvexRadius',['../struct_add_convex_radius.html',1,'']]], + ['additionalconstraint_6',['AdditionalConstraint',['../class_ragdoll_settings_1_1_additional_constraint.html',1,'RagdollSettings']]], + ['addstate_7',['AddState',['../struct_quad_tree_1_1_add_state.html',1,'QuadTree']]], + ['allhitcollisioncollector_8',['AllHitCollisionCollector',['../class_all_hit_collision_collector.html',1,'']]], + ['allocatorhasreallocate_9',['AllocatorHasReallocate',['../struct_allocator_has_reallocate.html',1,'']]], + ['allocatorhasreallocate_3c_20stlallocator_3c_20t_20_3e_20_3e_10',['AllocatorHasReallocate< STLAllocator< T > >',['../struct_allocator_has_reallocate_3_01_s_t_l_allocator_3_01_t_01_4_01_4.html',1,'']]], + ['angleconstraintpart_11',['AngleConstraintPart',['../class_angle_constraint_part.html',1,'']]], + ['animatedjoint_12',['AnimatedJoint',['../class_skeletal_animation_1_1_animated_joint.html',1,'SkeletalAnimation']]], + ['anyhitcollisioncollector_13',['AnyHitCollisionCollector',['../class_any_hit_collision_collector.html',1,'']]], + ['array_14',['Array',['../class_array.html',1,'']]], + ['array_3c_20additionalconstraint_20_3e_15',['Array< AdditionalConstraint >',['../class_array.html',1,'']]], + ['array_3c_20animatedjoint_20_3e_16',['Array< AnimatedJoint >',['../class_array.html',1,'']]], + ['array_3c_20attributedescription_20_3e_17',['Array< AttributeDescription >',['../class_array.html',1,'']]], + ['array_3c_20bin_20_3e_18',['Array< Bin >',['../class_array.html',1,'']]], + ['array_3c_20body_20_2a_20_3e_19',['Array< Body * >',['../class_array.html',1,'']]], + ['array_3c_20bodycreationsettings_20_3e_20',['Array< BodyCreationSettings >',['../class_array.html',1,'']]], + ['array_3c_20bodyid_20_3e_21',['Array< BodyID >',['../class_array.html',1,'']]], + ['array_3c_20bodyidxpair_20_3e_22',['Array< BodyIdxPair >',['../class_array.html',1,'']]], + ['array_3c_20bounds_20_3e_23',['Array< Bounds >',['../class_array.html',1,'']]], + ['array_3c_20broadphaselayer_20_3e_24',['Array< BroadPhaseLayer >',['../class_array.html',1,'']]], + ['array_3c_20chain_20_3e_25',['Array< Chain >',['../class_array.html',1,'']]], + ['array_3c_20charactervirtual_20_2a_20_3e_26',['Array< CharacterVirtual * >',['../class_array.html',1,'']]], + ['array_3c_20closestkinematic_20_3e_27',['Array< ClosestKinematic >',['../class_array.html',1,'']]], + ['array_3c_20collidingshape_20_3e_28',['Array< CollidingShape >',['../class_array.html',1,'']]], + ['array_3c_20const_20char_20_2a_20_3e_29',['Array< const char * >',['../class_array.html',1,'']]], + ['array_3c_20contact_20_3e_30',['Array< Contact >',['../class_array.html',1,'']]], + ['array_3c_20coplanar_20_3e_31',['Array< Coplanar >',['../class_array.html',1,'']]], + ['array_3c_20debugrenderer_3a_3alod_20_3e_32',['Array< DebugRenderer::LOD >',['../class_array.html',1,'']]], + ['array_3c_20debugrendererrecorder_3a_3aframe_20_3e_33',['Array< DebugRendererRecorder::Frame >',['../class_array.html',1,'']]], + ['array_3c_20debugrendererrecorder_3a_3ageometryblob_20_3e_34',['Array< DebugRendererRecorder::GeometryBlob >',['../class_array.html',1,'']]], + ['array_3c_20debugrendererrecorder_3a_3alineblob_20_3e_35',['Array< DebugRendererRecorder::LineBlob >',['../class_array.html',1,'']]], + ['array_3c_20debugrendererrecorder_3a_3atextblob_20_3e_36',['Array< DebugRendererRecorder::TextBlob >',['../class_array.html',1,'']]], + ['array_3c_20debugrendererrecorder_3a_3atriangleblob_20_3e_37',['Array< DebugRendererRecorder::TriangleBlob >',['../class_array.html',1,'']]], + ['array_3c_20face_20_2a_20_3e_38',['Array< Face * >',['../class_array.html',1,'']]], + ['array_3c_20face_20_3e_39',['Array< Face >',['../class_array.html',1,'']]], + ['array_3c_20float_20_3e_40',['Array< float >',['../class_array.html',1,'']]], + ['array_3c_20float3_20_3e_41',['Array< Float3 >',['../class_array.html',1,'']]], + ['array_3c_20indexedtriangle_20_3e_42',['Array< IndexedTriangle >',['../class_array.html',1,'']]], + ['array_3c_20int_20_3e_43',['Array< int >',['../class_array.html',1,'']]], + ['array_3c_20joint_20_3e_44',['Array< Joint >',['../class_array.html',1,'']]], + ['array_3c_20jointstate_20_3e_45',['Array< JointState >',['../class_array.html',1,'']]], + ['array_3c_20keyframe_20_3e_46',['Array< Keyframe >',['../class_array.html',1,'']]], + ['array_3c_20link_20_3e_47',['Array< Link >',['../class_array.html',1,'']]], + ['array_3c_20locked_20_3e_48',['Array< Locked >',['../class_array.html',1,'']]], + ['array_3c_20mapping_20_3e_49',['Array< Mapping >',['../class_array.html',1,'']]], + ['array_3c_20mat44_20_3e_50',['Array< Mat44 >',['../class_array.html',1,'']]], + ['array_3c_20node_20_3e_51',['Array< Node >',['../class_array.html',1,'']]], + ['array_3c_20part_20_3e_52',['Array< Part >',['../class_array.html',1,'']]], + ['array_3c_20physicsscene_3a_3aconnectedconstraint_20_3e_53',['Array< PhysicsScene::ConnectedConstraint >',['../class_array.html',1,'']]], + ['array_3c_20physicssteplistener_20_2a_20_3e_54',['Array< PhysicsStepListener * >',['../class_array.html',1,'']]], + ['array_3c_20plane_20_3e_55',['Array< Plane >',['../class_array.html',1,'']]], + ['array_3c_20point_20_3e_56',['Array< Point >',['../class_array.html',1,'']]], + ['array_3c_20profilethread_20_2a_20_3e_57',['Array< ProfileThread * >',['../class_array.html',1,'']]], + ['array_3c_20ref_20_3e_58',['Array< Ref >',['../class_array.html',1,'']]], + ['array_3c_20ref_3c_20constraint_20_3e_20_3e_59',['Array< Ref< Constraint > >',['../class_array.html',1,'']]], + ['array_3c_20ref_3c_20twobodyconstraint_20_3e_20_3e_60',['Array< Ref< TwoBodyConstraint > >',['../class_array.html',1,'']]], + ['array_3c_20ref_3c_20wheelsettings_20_3e_20_3e_61',['Array< Ref< WheelSettings > >',['../class_array.html',1,'']]], + ['array_3c_20refconst_3c_20physicsmaterial_20_3e_20_3e_62',['Array< RefConst< PhysicsMaterial > >',['../class_array.html',1,'']]], + ['array_3c_20resulttype_20_3e_63',['Array< ResultType >',['../class_array.html',1,'']]], + ['array_3c_20skinstate_20_3e_64',['Array< SkinState >',['../class_array.html',1,'']]], + ['array_3c_20softbodycreationsettings_20_3e_65',['Array< SoftBodyCreationSettings >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3adihedralbend_20_3e_66',['Array< SoftBodySharedSettings::DihedralBend >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3aedge_20_3e_67',['Array< SoftBodySharedSettings::Edge >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3aface_20_3e_68',['Array< SoftBodySharedSettings::Face >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3ainvbind_20_3e_69',['Array< SoftBodySharedSettings::InvBind >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3alra_20_3e_70',['Array< SoftBodySharedSettings::LRA >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3askinned_20_3e_71',['Array< SoftBodySharedSettings::Skinned >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3avertex_20_3e_72',['Array< SoftBodySharedSettings::Vertex >',['../class_array.html',1,'']]], + ['array_3c_20softbodysharedsettings_3a_3avolume_20_3e_73',['Array< SoftBodySharedSettings::Volume >',['../class_array.html',1,'']]], + ['array_3c_20softbodyvertex_20_3e_74',['Array< SoftBodyVertex >',['../class_array.html',1,'']]], + ['array_3c_20step_2c_20stltempallocator_3c_20step_20_3e_20_3e_75',['Array< Step, STLTempAllocator< Step > >',['../class_array.html',1,'']]], + ['array_3c_20subshape_20_3e_76',['Array< SubShape >',['../class_array.html',1,'']]], + ['array_3c_20subshapesettings_20_3e_77',['Array< SubShapeSettings >',['../class_array.html',1,'']]], + ['array_3c_20thread_20_3e_78',['Array< thread >',['../class_array.html',1,'']]], + ['array_3c_20triangle_20_3e_79',['Array< Triangle >',['../class_array.html',1,'']]], + ['array_3c_20uint_20_3e_80',['Array< uint >',['../class_array.html',1,'']]], + ['array_3c_20uint32_20_3e_81',['Array< uint32 >',['../class_array.html',1,'']]], + ['array_3c_20uint8_20_3e_82',['Array< uint8 >',['../class_array.html',1,'']]], + ['array_3c_20unmapped_20_3e_83',['Array< Unmapped >',['../class_array.html',1,'']]], + ['array_3c_20updategroup_20_3e_84',['Array< UpdateGroup >',['../class_array.html',1,'']]], + ['array_3c_20vec3_20_3e_85',['Array< Vec3 >',['../class_array.html',1,'']]], + ['array_3c_20vehicleantirollbar_20_3e_86',['Array< VehicleAntiRollBar >',['../class_array.html',1,'']]], + ['array_3c_20vehicledifferentialsettings_20_3e_87',['Array< VehicleDifferentialSettings >',['../class_array.html',1,'']]], + ['array_3c_20wheel_20_2a_20_3e_88',['Array< Wheel * >',['../class_array.html',1,'']]], + ['axisconstraintpart_89',['AxisConstraintPart',['../class_axis_constraint_part.html',1,'']]] +]; diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 000000000..01afd7fde --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['barrier_0',['Barrier',['../class_job_system_1_1_barrier.html',1,'JobSystem']]], + ['barrierimpl_1',['BarrierImpl',['../class_job_system_single_threaded_1_1_barrier_impl.html',1,'JobSystemSingleThreaded']]], + ['baseclass_2',['BaseClass',['../struct_r_t_t_i_1_1_base_class.html',1,'RTTI']]], + ['batch_3',['Batch',['../struct_fixed_size_free_list_1_1_batch.html',1,'FixedSizeFreeList']]], + ['bodiestosleep_4',['BodiesToSleep',['../class_physics_system_1_1_bodies_to_sleep.html',1,'PhysicsSystem']]], + ['body_5',['Body',['../class_body.html',1,'']]], + ['bodyactivationlistener_6',['BodyActivationListener',['../class_body_activation_listener.html',1,'']]], + ['bodycreationsettings_7',['BodyCreationSettings',['../class_body_creation_settings.html',1,'']]], + ['bodydrawfilter_8',['BodyDrawFilter',['../class_body_draw_filter.html',1,'']]], + ['bodyfilter_9',['BodyFilter',['../class_body_filter.html',1,'']]], + ['bodyid_10',['BodyID',['../class_body_i_d.html',1,'']]], + ['bodyinterface_11',['BodyInterface',['../class_body_interface.html',1,'']]], + ['bodylockbase_12',['BodyLockBase',['../class_body_lock_base.html',1,'']]], + ['bodylockbase_3c_20false_2c_20const_20body_20_3e_13',['BodyLockBase< false, const Body >',['../class_body_lock_base.html',1,'']]], + ['bodylockbase_3c_20true_2c_20body_20_3e_14',['BodyLockBase< true, Body >',['../class_body_lock_base.html',1,'']]], + ['bodylockinterface_15',['BodyLockInterface',['../class_body_lock_interface.html',1,'']]], + ['bodylockinterfacelocking_16',['BodyLockInterfaceLocking',['../class_body_lock_interface_locking.html',1,'']]], + ['bodylockinterfacenolock_17',['BodyLockInterfaceNoLock',['../class_body_lock_interface_no_lock.html',1,'']]], + ['bodylockmultibase_18',['BodyLockMultiBase',['../class_body_lock_multi_base.html',1,'']]], + ['bodylockmultibase_3c_20false_2c_20const_20body_20_3e_19',['BodyLockMultiBase< false, const Body >',['../class_body_lock_multi_base.html',1,'']]], + ['bodylockmultibase_3c_20true_2c_20body_20_3e_20',['BodyLockMultiBase< true, Body >',['../class_body_lock_multi_base.html',1,'']]], + ['bodylockmultiread_21',['BodyLockMultiRead',['../class_body_lock_multi_read.html',1,'']]], + ['bodylockmultiwrite_22',['BodyLockMultiWrite',['../class_body_lock_multi_write.html',1,'']]], + ['bodylockread_23',['BodyLockRead',['../class_body_lock_read.html',1,'']]], + ['bodylockwrite_24',['BodyLockWrite',['../class_body_lock_write.html',1,'']]], + ['bodymanager_25',['BodyManager',['../class_body_manager.html',1,'']]], + ['bodypair_26',['BodyPair',['../struct_body_pair.html',1,'']]], + ['bodypairqueue_27',['BodyPairQueue',['../struct_physics_update_context_1_1_body_pair_queue.html',1,'PhysicsUpdateContext']]], + ['bodystats_28',['BodyStats',['../struct_body_manager_1_1_body_stats.html',1,'BodyManager']]], + ['bodywithmotionproperties_29',['BodyWithMotionProperties',['../class_body_with_motion_properties.html',1,'']]], + ['box_30',['Box',['../class_box_shape_1_1_box.html',1,'BoxShape']]], + ['boxshape_31',['BoxShape',['../class_box_shape.html',1,'']]], + ['boxshapesettings_32',['BoxShapeSettings',['../class_box_shape_settings.html',1,'']]], + ['broadphase_33',['BroadPhase',['../class_broad_phase.html',1,'']]], + ['broadphasebruteforce_34',['BroadPhaseBruteForce',['../class_broad_phase_brute_force.html',1,'']]], + ['broadphasecastresult_35',['BroadPhaseCastResult',['../class_broad_phase_cast_result.html',1,'']]], + ['broadphaselayer_36',['BroadPhaseLayer',['../class_broad_phase_layer.html',1,'']]], + ['broadphaselayerfilter_37',['BroadPhaseLayerFilter',['../class_broad_phase_layer_filter.html',1,'']]], + ['broadphaselayerinterface_38',['BroadPhaseLayerInterface',['../class_broad_phase_layer_interface.html',1,'']]], + ['broadphaselayerinterfacemask_39',['BroadPhaseLayerInterfaceMask',['../class_broad_phase_layer_interface_mask.html',1,'']]], + ['broadphaselayerinterfacetable_40',['BroadPhaseLayerInterfaceTable',['../class_broad_phase_layer_interface_table.html',1,'']]], + ['broadphasequadtree_41',['BroadPhaseQuadTree',['../class_broad_phase_quad_tree.html',1,'']]], + ['broadphasequery_42',['BroadPhaseQuery',['../class_broad_phase_query.html',1,'']]], + ['bytebuffer_43',['ByteBuffer',['../class_byte_buffer.html',1,'']]] +]; diff --git a/search/classes_10.js b/search/classes_10.js new file mode 100644 index 000000000..6dd5da8fe --- /dev/null +++ b/search/classes_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['quadtree_0',['QuadTree',['../class_quad_tree.html',1,'']]], + ['quat_1',['Quat',['../class_quat.html',1,'']]] +]; diff --git a/search/classes_11.js b/search/classes_11.js new file mode 100644 index 000000000..613393703 --- /dev/null +++ b/search/classes_11.js @@ -0,0 +1,74 @@ +var searchData= +[ + ['rackandpinionconstraint_0',['RackAndPinionConstraint',['../class_rack_and_pinion_constraint.html',1,'']]], + ['rackandpinionconstraintpart_1',['RackAndPinionConstraintPart',['../class_rack_and_pinion_constraint_part.html',1,'']]], + ['rackandpinionconstraintsettings_2',['RackAndPinionConstraintSettings',['../class_rack_and_pinion_constraint_settings.html',1,'']]], + ['ragdoll_3',['Ragdoll',['../class_ragdoll.html',1,'']]], + ['ragdollsettings_4',['RagdollSettings',['../class_ragdoll_settings.html',1,'']]], + ['range_5',['Range',['../struct_triangle_splitter_1_1_range.html',1,'TriangleSplitter']]], + ['raycast_6',['RayCast',['../struct_ray_cast.html',1,'']]], + ['raycastresult_7',['RayCastResult',['../class_ray_cast_result.html',1,'']]], + ['raycastsettings_8',['RayCastSettings',['../class_ray_cast_settings.html',1,'']]], + ['raycastt_9',['RayCastT',['../struct_ray_cast_t.html',1,'']]], + ['raycastt_3c_20rvec3_2c_20rmat44_2c_20rraycast_20_3e_10',['RayCastT< RVec3, RMat44, RRayCast >',['../struct_ray_cast_t.html',1,'']]], + ['raycastt_3c_20vec3_2c_20mat44_2c_20raycast_20_3e_11',['RayCastT< Vec3, Mat44, RayCast >',['../struct_ray_cast_t.html',1,'']]], + ['rayinvdirection_12',['RayInvDirection',['../class_ray_inv_direction.html',1,'']]], + ['rebind_13',['rebind',['../struct_s_t_l_aligned_allocator_1_1rebind.html',1,'STLAlignedAllocator< T, N >::rebind< T2 >'],['../struct_s_t_l_allocator_1_1rebind.html',1,'STLAllocator< T >::rebind< T2 >'],['../struct_s_t_l_temp_allocator_1_1rebind.html',1,'STLTempAllocator< T >::rebind< T2 >']]], + ['ref_14',['Ref',['../class_ref.html',1,'']]], + ['ref_3c_20constraint_20_3e_15',['Ref< Constraint >',['../class_ref.html',1,'']]], + ['ref_3c_20geometry_20_3e_16',['Ref< Geometry >',['../class_ref.html',1,'']]], + ['ref_3c_20job_20_3e_17',['Ref< Job >',['../class_ref.html',1,'']]], + ['ref_3c_20reftargetvirtual_20_3e_18',['Ref< RefTargetVirtual >',['../class_ref.html',1,'']]], + ['ref_3c_20shape_20_3e_19',['Ref< Shape >',['../class_ref.html',1,'']]], + ['ref_3c_20skeleton_20_3e_20',['Ref< Skeleton >',['../class_ref.html',1,'']]], + ['ref_3c_20twobodyconstraint_20_3e_21',['Ref< TwoBodyConstraint >',['../class_ref.html',1,'']]], + ['ref_3c_20twobodyconstraintsettings_20_3e_22',['Ref< TwoBodyConstraintSettings >',['../class_ref.html',1,'']]], + ['ref_3c_20vehiclecontrollersettings_20_3e_23',['Ref< VehicleControllerSettings >',['../class_ref.html',1,'']]], + ['ref_3c_20wheelsettings_20_3e_24',['Ref< WheelSettings >',['../class_ref.html',1,'']]], + ['refconst_25',['RefConst',['../class_ref_const.html',1,'']]], + ['refconst_3c_20constraint_20_3e_26',['RefConst< Constraint >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20groupfilter_20_3e_27',['RefConst< GroupFilter >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20pathconstraintpath_20_3e_28',['RefConst< PathConstraintPath >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20physicsmaterial_20_3e_29',['RefConst< PhysicsMaterial >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20ragdollsettings_20_3e_30',['RefConst< RagdollSettings >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20shape_20_3e_31',['RefConst< Shape >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20shapesettings_20_3e_32',['RefConst< ShapeSettings >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20skeleton_20_3e_33',['RefConst< Skeleton >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20softbodysharedsettings_20_3e_34',['RefConst< SoftBodySharedSettings >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20twobodyconstraintsettings_20_3e_35',['RefConst< TwoBodyConstraintSettings >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20vehiclecollisiontester_20_3e_36',['RefConst< VehicleCollisionTester >',['../class_ref_const.html',1,'']]], + ['refconst_3c_20wheelsettings_20_3e_37',['RefConst< WheelSettings >',['../class_ref_const.html',1,'']]], + ['reftarget_38',['RefTarget',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20characterbase_20_3e_39',['RefTarget< CharacterBase >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20characterbasesettings_20_3e_40',['RefTarget< CharacterBaseSettings >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20constraint_20_3e_41',['RefTarget< Constraint >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20constraintsettings_20_3e_42',['RefTarget< ConstraintSettings >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20geometry_20_3e_43',['RefTarget< Geometry >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20groupfilter_20_3e_44',['RefTarget< GroupFilter >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20pathconstraintpath_20_3e_45',['RefTarget< PathConstraintPath >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20physicsmaterial_20_3e_46',['RefTarget< PhysicsMaterial >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20physicsscene_20_3e_47',['RefTarget< PhysicsScene >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20ragdoll_20_3e_48',['RefTarget< Ragdoll >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20ragdollsettings_20_3e_49',['RefTarget< RagdollSettings >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20shape_20_3e_50',['RefTarget< Shape >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20shapesettings_20_3e_51',['RefTarget< ShapeSettings >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20skeletalanimation_20_3e_52',['RefTarget< SkeletalAnimation >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20skeleton_20_3e_53',['RefTarget< Skeleton >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20skeletonmapper_20_3e_54',['RefTarget< SkeletonMapper >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20softbodysharedsettings_20_3e_55',['RefTarget< SoftBodySharedSettings >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20vehiclecollisiontester_20_3e_56',['RefTarget< VehicleCollisionTester >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20vehiclecontroller_20_3e_57',['RefTarget< VehicleController >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20vehiclecontrollersettings_20_3e_58',['RefTarget< VehicleControllerSettings >',['../class_ref_target.html',1,'']]], + ['reftarget_3c_20wheelsettings_20_3e_59',['RefTarget< WheelSettings >',['../class_ref_target.html',1,'']]], + ['reftargetvirtual_60',['RefTargetVirtual',['../class_ref_target_virtual.html',1,'']]], + ['result_61',['Result',['../class_result.html',1,'']]], + ['result_3c_20ref_3c_20shape_20_3e_20_3e_62',['Result< Ref< Shape > >',['../class_result.html',1,'']]], + ['reversedshapefilter_63',['ReversedShapeFilter',['../class_reversed_shape_filter.html',1,'']]], + ['rotatedtranslatedshape_64',['RotatedTranslatedShape',['../class_rotated_translated_shape.html',1,'']]], + ['rotatedtranslatedshapesettings_65',['RotatedTranslatedShapeSettings',['../class_rotated_translated_shape_settings.html',1,'']]], + ['rotationeulerconstraintpart_66',['RotationEulerConstraintPart',['../class_rotation_euler_constraint_part.html',1,'']]], + ['rotationquatconstraintpart_67',['RotationQuatConstraintPart',['../class_rotation_quat_constraint_part.html',1,'']]], + ['rraycast_68',['RRayCast',['../struct_r_ray_cast.html',1,'']]], + ['rshapecast_69',['RShapeCast',['../struct_r_shape_cast.html',1,'']]], + ['rtti_70',['RTTI',['../class_r_t_t_i.html',1,'']]] +]; diff --git a/search/classes_12.js b/search/classes_12.js new file mode 100644 index 000000000..b168682d0 --- /dev/null +++ b/search/classes_12.js @@ -0,0 +1,167 @@ +var searchData= +[ + ['sbsgettrianglescontext_0',['SBSGetTrianglesContext',['../struct_soft_body_shape_1_1_s_b_s_get_triangles_context.html',1,'SoftBodyShape']]], + ['scaledshape_1',['ScaledShape',['../class_scaled_shape.html',1,'']]], + ['scaledshapesettings_2',['ScaledShapeSettings',['../class_scaled_shape_settings.html',1,'']]], + ['scopeexit_3',['ScopeExit',['../class_scope_exit.html',1,'']]], + ['semaphore_4',['Semaphore',['../class_semaphore.html',1,'']]], + ['serializableattribute_5',['SerializableAttribute',['../class_serializable_attribute.html',1,'']]], + ['serializableobject_6',['SerializableObject',['../class_serializable_object.html',1,'']]], + ['shape_7',['Shape',['../class_shape.html',1,'']]], + ['shapecast_8',['ShapeCast',['../struct_shape_cast.html',1,'']]], + ['shapecastresult_9',['ShapeCastResult',['../class_shape_cast_result.html',1,'']]], + ['shapecastsettings_10',['ShapeCastSettings',['../class_shape_cast_settings.html',1,'']]], + ['shapecastt_11',['ShapeCastT',['../struct_shape_cast_t.html',1,'']]], + ['shapecastt_3c_20rvec3_2c_20rmat44_2c_20rshapecast_20_3e_12',['ShapeCastT< RVec3, RMat44, RShapeCast >',['../struct_shape_cast_t.html',1,'']]], + ['shapecastt_3c_20vec3_2c_20mat44_2c_20shapecast_20_3e_13',['ShapeCastT< Vec3, Mat44, ShapeCast >',['../struct_shape_cast_t.html',1,'']]], + ['shapefilter_14',['ShapeFilter',['../class_shape_filter.html',1,'']]], + ['shapefunctions_15',['ShapeFunctions',['../class_shape_functions.html',1,'']]], + ['shapesettings_16',['ShapeSettings',['../class_shape_settings.html',1,'']]], + ['sharedlock_17',['SharedLock',['../class_shared_lock.html',1,'']]], + ['sharedmutex_18',['SharedMutex',['../class_shared_mutex.html',1,'']]], + ['sixdofconstraint_19',['SixDOFConstraint',['../class_six_d_o_f_constraint.html',1,'']]], + ['sixdofconstraintsettings_20',['SixDOFConstraintSettings',['../class_six_d_o_f_constraint_settings.html',1,'']]], + ['skeletalanimation_21',['SkeletalAnimation',['../class_skeletal_animation.html',1,'']]], + ['skeleton_22',['Skeleton',['../class_skeleton.html',1,'']]], + ['skeletonmapper_23',['SkeletonMapper',['../class_skeleton_mapper.html',1,'']]], + ['skeletonpose_24',['SkeletonPose',['../class_skeleton_pose.html',1,'']]], + ['skinned_25',['Skinned',['../class_soft_body_shared_settings_1_1_skinned.html',1,'SoftBodySharedSettings']]], + ['skinweight_26',['SkinWeight',['../class_soft_body_shared_settings_1_1_skin_weight.html',1,'SoftBodySharedSettings']]], + ['sliderconstraint_27',['SliderConstraint',['../class_slider_constraint.html',1,'']]], + ['sliderconstraintsettings_28',['SliderConstraintSettings',['../class_slider_constraint_settings.html',1,'']]], + ['softbodycontactlistener_29',['SoftBodyContactListener',['../class_soft_body_contact_listener.html',1,'']]], + ['softbodycontactsettings_30',['SoftBodyContactSettings',['../class_soft_body_contact_settings.html',1,'']]], + ['softbodycreationsettings_31',['SoftBodyCreationSettings',['../class_soft_body_creation_settings.html',1,'']]], + ['softbodymanifold_32',['SoftBodyManifold',['../class_soft_body_manifold.html',1,'']]], + ['softbodymotionproperties_33',['SoftBodyMotionProperties',['../class_soft_body_motion_properties.html',1,'']]], + ['softbodyshape_34',['SoftBodyShape',['../class_soft_body_shape.html',1,'']]], + ['softbodysharedsettings_35',['SoftBodySharedSettings',['../class_soft_body_shared_settings.html',1,'']]], + ['softbodyupdatecontext_36',['SoftBodyUpdateContext',['../class_soft_body_update_context.html',1,'']]], + ['softbodyvertex_37',['SoftBodyVertex',['../class_soft_body_vertex.html',1,'']]], + ['softbodywithmotionpropertiesandshape_38',['SoftBodyWithMotionPropertiesAndShape',['../class_soft_body_with_motion_properties_and_shape.html',1,'']]], + ['specifiedbroadphaselayerfilter_39',['SpecifiedBroadPhaseLayerFilter',['../class_specified_broad_phase_layer_filter.html',1,'']]], + ['specifiedobjectlayerfilter_40',['SpecifiedObjectLayerFilter',['../class_specified_object_layer_filter.html',1,'']]], + ['sphere_41',['Sphere',['../class_sphere.html',1,'']]], + ['spherenoconvex_42',['SphereNoConvex',['../class_sphere_shape_1_1_sphere_no_convex.html',1,'SphereShape']]], + ['sphereshape_43',['SphereShape',['../class_sphere_shape.html',1,'']]], + ['sphereshapesettings_44',['SphereShapeSettings',['../class_sphere_shape_settings.html',1,'']]], + ['spherewithconvex_45',['SphereWithConvex',['../class_sphere_shape_1_1_sphere_with_convex.html',1,'SphereShape']]], + ['split_46',['Split',['../struct_large_island_splitter_1_1_split.html',1,'LargeIslandSplitter']]], + ['splits_47',['Splits',['../class_large_island_splitter_1_1_splits.html',1,'LargeIslandSplitter']]], + ['springpart_48',['SpringPart',['../class_spring_part.html',1,'']]], + ['springsettings_49',['SpringSettings',['../class_spring_settings.html',1,'']]], + ['staterecorder_50',['StateRecorder',['../class_state_recorder.html',1,'']]], + ['staterecorderfilter_51',['StateRecorderFilter',['../class_state_recorder_filter.html',1,'']]], + ['staterecorderimpl_52',['StateRecorderImpl',['../class_state_recorder_impl.html',1,'']]], + ['staticarray_53',['StaticArray',['../class_static_array.html',1,'']]], + ['staticarray_3c_20bodypairqueue_2c_20cmaxconcurrency_20_3e_54',['StaticArray< BodyPairQueue, cMaxConcurrency >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20collideshaperesult_2c_20cmaxdelayedresults_20_3e_55',['StaticArray< CollideShapeResult, cMaxDelayedResults >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20impulse_2c_20contactpoints_3a_3acapacity_20_3e_56',['StaticArray< Impulse, ContactPoints::Capacity >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20jobhandle_2c_20cmaxconcurrency_20_3e_57',['StaticArray< JobHandle, cMaxConcurrency >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20part_2c_203_20_3e_58',['StaticArray< Part, 3 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20rtti_3a_3abaseclass_2c_204_20_3e_59',['StaticArray< RTTI::BaseClass, 4 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20serializableattribute_2c_2032_20_3e_60',['StaticArray< SerializableAttribute, 32 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20vec3_2c_201026_20_3e_61',['StaticArray< Vec3, 1026 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20vec3_2c_2032_20_3e_62',['StaticArray< Vec3, 32 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20vec3_2c_20384_20_3e_63',['StaticArray< Vec3, 384 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20vec3_2c_2064_20_3e_64',['StaticArray< Vec3, 64 >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20vec3_2c_20cmaxpointsinhull_20_3e_65',['StaticArray< Vec3, cMaxPointsInHull >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20voided_2c_20cmaxvoidedfeatures_20_3e_66',['StaticArray< Voided, cMaxVoidedFeatures >',['../class_static_array.html',1,'']]], + ['staticarray_3c_20worldcontactpoint_2c_20maxcontactpoints_20_3e_67',['StaticArray< WorldContactPoint, MaxContactPoints >',['../class_static_array.html',1,'']]], + ['staticcompoundshape_68',['StaticCompoundShape',['../class_static_compound_shape.html',1,'']]], + ['staticcompoundshapesettings_69',['StaticCompoundShapeSettings',['../class_static_compound_shape_settings.html',1,'']]], + ['stats_70',['stats',['../struct_shape_1_1_stats.html',1,'Shape::Stats'],['../struct_triangle_splitter_1_1_stats.html',1,'TriangleSplitter::Stats']]], + ['step_71',['Step',['../struct_physics_update_context_1_1_step.html',1,'PhysicsUpdateContext']]], + ['stlalignedallocator_72',['STLAlignedAllocator',['../class_s_t_l_aligned_allocator.html',1,'']]], + ['stlallocator_73',['STLAllocator',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20additionalconstraint_20_3e_74',['STLAllocator< AdditionalConstraint >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20animatedjoint_20_3e_75',['STLAllocator< AnimatedJoint >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20attributedescription_20_3e_76',['STLAllocator< AttributeDescription >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20bin_20_3e_77',['STLAllocator< Bin >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20body_20_2a_20_3e_78',['STLAllocator< Body * >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20bodycreationsettings_20_3e_79',['STLAllocator< BodyCreationSettings >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20bodyid_20_3e_80',['STLAllocator< BodyID >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20bodyidxpair_20_3e_81',['STLAllocator< BodyIdxPair >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20bounds_20_3e_82',['STLAllocator< Bounds >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20broadphaselayer_20_3e_83',['STLAllocator< BroadPhaseLayer >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20chain_20_3e_84',['STLAllocator< Chain >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20charactervirtual_20_2a_20_3e_85',['STLAllocator< CharacterVirtual * >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20closestkinematic_20_3e_86',['STLAllocator< ClosestKinematic >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20collidingshape_20_3e_87',['STLAllocator< CollidingShape >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20const_20char_20_2a_20_3e_88',['STLAllocator< const char * >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20contact_20_3e_89',['STLAllocator< Contact >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20coplanar_20_3e_90',['STLAllocator< Coplanar >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20debugrenderer_3a_3alod_20_3e_91',['STLAllocator< DebugRenderer::LOD >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20debugrendererrecorder_3a_3aframe_20_3e_92',['STLAllocator< DebugRendererRecorder::Frame >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20debugrendererrecorder_3a_3ageometryblob_20_3e_93',['STLAllocator< DebugRendererRecorder::GeometryBlob >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20debugrendererrecorder_3a_3alineblob_20_3e_94',['STLAllocator< DebugRendererRecorder::LineBlob >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20debugrendererrecorder_3a_3atextblob_20_3e_95',['STLAllocator< DebugRendererRecorder::TextBlob >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20debugrendererrecorder_3a_3atriangleblob_20_3e_96',['STLAllocator< DebugRendererRecorder::TriangleBlob >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20face_20_2a_20_3e_97',['STLAllocator< Face * >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20face_20_3e_98',['STLAllocator< Face >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20float_20_3e_99',['STLAllocator< float >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20float3_20_3e_100',['STLAllocator< Float3 >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20indexedtriangle_20_3e_101',['STLAllocator< IndexedTriangle >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20int_20_3e_102',['STLAllocator< int >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20joint_20_3e_103',['STLAllocator< Joint >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20jointstate_20_3e_104',['STLAllocator< JointState >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20keyframe_20_3e_105',['STLAllocator< Keyframe >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20link_20_3e_106',['STLAllocator< Link >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20locked_20_3e_107',['STLAllocator< Locked >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20mapping_20_3e_108',['STLAllocator< Mapping >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20mat44_20_3e_109',['STLAllocator< Mat44 >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20node_20_3e_110',['STLAllocator< Node >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20part_20_3e_111',['STLAllocator< Part >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20physicsscene_3a_3aconnectedconstraint_20_3e_112',['STLAllocator< PhysicsScene::ConnectedConstraint >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20physicssteplistener_20_2a_20_3e_113',['STLAllocator< PhysicsStepListener * >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20plane_20_3e_114',['STLAllocator< Plane >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20point_20_3e_115',['STLAllocator< Point >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20profilethread_20_2a_20_3e_116',['STLAllocator< ProfileThread * >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20ref_20_3e_117',['STLAllocator< Ref >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20ref_3c_20constraint_20_3e_20_3e_118',['STLAllocator< Ref< Constraint > >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20ref_3c_20twobodyconstraint_20_3e_20_3e_119',['STLAllocator< Ref< TwoBodyConstraint > >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20ref_3c_20wheelsettings_20_3e_20_3e_120',['STLAllocator< Ref< WheelSettings > >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20refconst_3c_20physicsmaterial_20_3e_20_3e_121',['STLAllocator< RefConst< PhysicsMaterial > >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20resulttype_20_3e_122',['STLAllocator< ResultType >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20skinstate_20_3e_123',['STLAllocator< SkinState >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodycreationsettings_20_3e_124',['STLAllocator< SoftBodyCreationSettings >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3adihedralbend_20_3e_125',['STLAllocator< SoftBodySharedSettings::DihedralBend >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3aedge_20_3e_126',['STLAllocator< SoftBodySharedSettings::Edge >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3aface_20_3e_127',['STLAllocator< SoftBodySharedSettings::Face >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3ainvbind_20_3e_128',['STLAllocator< SoftBodySharedSettings::InvBind >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3alra_20_3e_129',['STLAllocator< SoftBodySharedSettings::LRA >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3askinned_20_3e_130',['STLAllocator< SoftBodySharedSettings::Skinned >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3avertex_20_3e_131',['STLAllocator< SoftBodySharedSettings::Vertex >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodysharedsettings_3a_3avolume_20_3e_132',['STLAllocator< SoftBodySharedSettings::Volume >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20softbodyvertex_20_3e_133',['STLAllocator< SoftBodyVertex >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20subshape_20_3e_134',['STLAllocator< SubShape >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20subshapesettings_20_3e_135',['STLAllocator< SubShapeSettings >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20thread_20_3e_136',['STLAllocator< thread >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20triangle_20_3e_137',['STLAllocator< Triangle >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20uint_20_3e_138',['STLAllocator< uint >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20uint32_20_3e_139',['STLAllocator< uint32 >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20uint8_20_3e_140',['STLAllocator< uint8 >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20unmapped_20_3e_141',['STLAllocator< Unmapped >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20updategroup_20_3e_142',['STLAllocator< UpdateGroup >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20vec3_20_3e_143',['STLAllocator< Vec3 >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20vehicleantirollbar_20_3e_144',['STLAllocator< VehicleAntiRollBar >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20vehicledifferentialsettings_20_3e_145',['STLAllocator< VehicleDifferentialSettings >',['../class_s_t_l_allocator.html',1,'']]], + ['stlallocator_3c_20wheel_20_2a_20_3e_146',['STLAllocator< Wheel * >',['../class_s_t_l_allocator.html',1,'']]], + ['stltempallocator_147',['STLTempAllocator',['../class_s_t_l_temp_allocator.html',1,'']]], + ['stltempallocator_3c_20step_20_3e_148',['STLTempAllocator< Step >',['../class_s_t_l_temp_allocator.html',1,'']]], + ['storage_149',['Storage',['../struct_static_array_1_1_storage.html',1,'StaticArray']]], + ['streamin_150',['StreamIn',['../class_stream_in.html',1,'']]], + ['streaminwrapper_151',['StreamInWrapper',['../class_stream_in_wrapper.html',1,'']]], + ['streamout_152',['StreamOut',['../class_stream_out.html',1,'']]], + ['streamoutwrapper_153',['StreamOutWrapper',['../class_stream_out_wrapper.html',1,'']]], + ['subshape_154',['SubShape',['../struct_compound_shape_1_1_sub_shape.html',1,'CompoundShape']]], + ['subshapeid_155',['SubShapeID',['../class_sub_shape_i_d.html',1,'']]], + ['subshapeidcreator_156',['SubShapeIDCreator',['../class_sub_shape_i_d_creator.html',1,'']]], + ['subshapeidpair_157',['SubShapeIDPair',['../class_sub_shape_i_d_pair.html',1,'']]], + ['subshapesettings_158',['SubShapeSettings',['../struct_compound_shape_settings_1_1_sub_shape_settings.html',1,'CompoundShapeSettings']]], + ['support_159',['Support',['../class_convex_shape_1_1_support.html',1,'ConvexShape']]], + ['supportbuffer_160',['SupportBuffer',['../class_convex_shape_1_1_support_buffer.html',1,'ConvexShape']]], + ['swingtwistconstraint_161',['SwingTwistConstraint',['../class_swing_twist_constraint.html',1,'']]], + ['swingtwistconstraintpart_162',['SwingTwistConstraintPart',['../class_swing_twist_constraint_part.html',1,'']]], + ['swingtwistconstraintsettings_163',['SwingTwistConstraintSettings',['../class_swing_twist_constraint_settings.html',1,'']]] +]; diff --git a/search/classes_13.js b/search/classes_13.js new file mode 100644 index 000000000..71fd86d40 --- /dev/null +++ b/search/classes_13.js @@ -0,0 +1,45 @@ +var searchData= +[ + ['taperedcapsule_0',['TaperedCapsule',['../class_tapered_capsule_shape_1_1_tapered_capsule.html',1,'TaperedCapsuleShape']]], + ['taperedcapsuleshape_1',['TaperedCapsuleShape',['../class_tapered_capsule_shape.html',1,'']]], + ['taperedcapsuleshapesettings_2',['TaperedCapsuleShapeSettings',['../class_tapered_capsule_shape_settings.html',1,'']]], + ['taperedcylinder_3',['TaperedCylinder',['../class_tapered_cylinder_shape_1_1_tapered_cylinder.html',1,'TaperedCylinderShape']]], + ['taperedcylindershape_4',['TaperedCylinderShape',['../class_tapered_cylinder_shape.html',1,'']]], + ['taperedcylindershapesettings_5',['TaperedCylinderShapeSettings',['../class_tapered_cylinder_shape_settings.html',1,'']]], + ['tcsgettrianglescontext_6',['TCSGetTrianglesContext',['../class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html',1,'TaperedCylinderShape']]], + ['tempallocator_7',['TempAllocator',['../class_temp_allocator.html',1,'']]], + ['tempallocatorimpl_8',['TempAllocatorImpl',['../class_temp_allocator_impl.html',1,'']]], + ['tempallocatorimplwithmallocfallback_9',['TempAllocatorImplWithMallocFallback',['../class_temp_allocator_impl_with_malloc_fallback.html',1,'']]], + ['tempallocatormalloc_10',['TempAllocatorMalloc',['../class_temp_allocator_malloc.html',1,'']]], + ['textblob_11',['TextBlob',['../struct_debug_renderer_recorder_1_1_text_blob.html',1,'DebugRendererRecorder']]], + ['trackedvehiclecontroller_12',['TrackedVehicleController',['../class_tracked_vehicle_controller.html',1,'']]], + ['trackedvehiclecontrollersettings_13',['TrackedVehicleControllerSettings',['../class_tracked_vehicle_controller_settings.html',1,'']]], + ['tracking_14',['Tracking',['../struct_quad_tree_1_1_tracking.html',1,'QuadTree']]], + ['transformedconvexobject_15',['TransformedConvexObject',['../struct_transformed_convex_object.html',1,'']]], + ['transformedshape_16',['TransformedShape',['../class_transformed_shape.html',1,'']]], + ['triangle_17',['triangle',['../class_debug_renderer_1_1_triangle.html',1,'DebugRenderer::Triangle'],['../class_e_p_a_convex_hull_builder_1_1_triangle.html',1,'EPAConvexHullBuilder::Triangle'],['../class_triangle.html',1,'Triangle']]], + ['triangleblob_18',['TriangleBlob',['../struct_debug_renderer_recorder_1_1_triangle_blob.html',1,'DebugRendererRecorder']]], + ['triangleblock_19',['TriangleBlock',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.html',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['triangleblockheader_20',['TriangleBlockHeader',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['trianglecodecindexed8bitpacksoa4flags_21',['TriangleCodecIndexed8BitPackSOA4Flags',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html',1,'']]], + ['triangleconvexsupport_22',['TriangleConvexSupport',['../struct_triangle_convex_support.html',1,'']]], + ['trianglefactory_23',['TriangleFactory',['../class_e_p_a_convex_hull_builder_1_1_triangle_factory.html',1,'EPAConvexHullBuilder']]], + ['trianglegrouper_24',['TriangleGrouper',['../class_triangle_grouper.html',1,'']]], + ['trianglegrouperclosestcentroid_25',['TriangleGrouperClosestCentroid',['../class_triangle_grouper_closest_centroid.html',1,'']]], + ['trianglegroupermorton_26',['TriangleGrouperMorton',['../class_triangle_grouper_morton.html',1,'']]], + ['triangleheader_27',['TriangleHeader',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_header.html',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['trianglenoconvex_28',['TriangleNoConvex',['../class_triangle_shape_1_1_triangle_no_convex.html',1,'TriangleShape']]], + ['trianglequeue_29',['TriangleQueue',['../class_e_p_a_convex_hull_builder_1_1_triangle_queue.html',1,'EPAConvexHullBuilder']]], + ['triangleshape_30',['TriangleShape',['../class_triangle_shape.html',1,'']]], + ['triangleshapesettings_31',['TriangleShapeSettings',['../class_triangle_shape_settings.html',1,'']]], + ['trianglesplitter_32',['TriangleSplitter',['../class_triangle_splitter.html',1,'']]], + ['trianglesplitterbinning_33',['TriangleSplitterBinning',['../class_triangle_splitter_binning.html',1,'']]], + ['trianglesplitterfixedleafsize_34',['TriangleSplitterFixedLeafSize',['../class_triangle_splitter_fixed_leaf_size.html',1,'']]], + ['trianglesplitterlongestaxis_35',['TriangleSplitterLongestAxis',['../class_triangle_splitter_longest_axis.html',1,'']]], + ['trianglesplittermean_36',['TriangleSplitterMean',['../class_triangle_splitter_mean.html',1,'']]], + ['trianglesplittermorton_37',['TriangleSplitterMorton',['../class_triangle_splitter_morton.html',1,'']]], + ['trianglewithconvex_38',['TriangleWithConvex',['../class_triangle_shape_1_1_triangle_with_convex.html',1,'TriangleShape']]], + ['tsgettrianglescontext_39',['TSGetTrianglesContext',['../class_triangle_shape_1_1_t_s_get_triangles_context.html',1,'TriangleShape']]], + ['twobodyconstraint_40',['TwoBodyConstraint',['../class_two_body_constraint.html',1,'']]], + ['twobodyconstraintsettings_41',['TwoBodyConstraintSettings',['../class_two_body_constraint_settings.html',1,'']]] +]; diff --git a/search/classes_14.js b/search/classes_14.js new file mode 100644 index 000000000..b82337e03 --- /dev/null +++ b/search/classes_14.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['uniquelock_0',['UniqueLock',['../class_unique_lock.html',1,'']]], + ['unmapped_1',['Unmapped',['../class_skeleton_mapper_1_1_unmapped.html',1,'SkeletonMapper']]], + ['updatestate_2',['updatestate',['../struct_broad_phase_1_1_update_state.html',1,'BroadPhase::UpdateState'],['../struct_quad_tree_1_1_update_state.html',1,'QuadTree::UpdateState']]], + ['uvec4_3',['UVec4',['../class_u_vec4.html',1,'']]], + ['uvec8_4',['UVec8',['../class_u_vec8.html',1,'']]] +]; diff --git a/search/classes_15.js b/search/classes_15.js new file mode 100644 index 000000000..62bbc81fb --- /dev/null +++ b/search/classes_15.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['validationcontext_0',['ValidationContext',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['vec3_1',['Vec3',['../class_vec3.html',1,'']]], + ['vec4_2',['Vec4',['../class_vec4.html',1,'']]], + ['vec8_3',['Vec8',['../class_vec8.html',1,'']]], + ['vector_4',['Vector',['../class_vector.html',1,'']]], + ['vector_3c_202_20_3e_5',['Vector< 2 >',['../class_vector.html',1,'']]], + ['vehicleantirollbar_6',['VehicleAntiRollBar',['../class_vehicle_anti_roll_bar.html',1,'']]], + ['vehiclecollisiontester_7',['VehicleCollisionTester',['../class_vehicle_collision_tester.html',1,'']]], + ['vehiclecollisiontestercastcylinder_8',['VehicleCollisionTesterCastCylinder',['../class_vehicle_collision_tester_cast_cylinder.html',1,'']]], + ['vehiclecollisiontestercastsphere_9',['VehicleCollisionTesterCastSphere',['../class_vehicle_collision_tester_cast_sphere.html',1,'']]], + ['vehiclecollisiontesterray_10',['VehicleCollisionTesterRay',['../class_vehicle_collision_tester_ray.html',1,'']]], + ['vehicleconstraint_11',['VehicleConstraint',['../class_vehicle_constraint.html',1,'']]], + ['vehicleconstraintsettings_12',['VehicleConstraintSettings',['../class_vehicle_constraint_settings.html',1,'']]], + ['vehiclecontroller_13',['VehicleController',['../class_vehicle_controller.html',1,'']]], + ['vehiclecontrollersettings_14',['VehicleControllerSettings',['../class_vehicle_controller_settings.html',1,'']]], + ['vehicledifferentialsettings_15',['VehicleDifferentialSettings',['../class_vehicle_differential_settings.html',1,'']]], + ['vehicleengine_16',['VehicleEngine',['../class_vehicle_engine.html',1,'']]], + ['vehicleenginesettings_17',['VehicleEngineSettings',['../class_vehicle_engine_settings.html',1,'']]], + ['vehicletrack_18',['VehicleTrack',['../class_vehicle_track.html',1,'']]], + ['vehicletracksettings_19',['VehicleTrackSettings',['../class_vehicle_track_settings.html',1,'']]], + ['vehicletransmission_20',['VehicleTransmission',['../class_vehicle_transmission.html',1,'']]], + ['vehicletransmissionsettings_21',['VehicleTransmissionSettings',['../class_vehicle_transmission_settings.html',1,'']]], + ['vertex_22',['vertex',['../class_debug_renderer_1_1_vertex.html',1,'DebugRenderer::Vertex'],['../struct_soft_body_shared_settings_1_1_vertex.html',1,'SoftBodySharedSettings::Vertex']]], + ['vertexattributes_23',['VertexAttributes',['../struct_soft_body_shared_settings_1_1_vertex_attributes.html',1,'SoftBodySharedSettings']]], + ['vertexdata_24',['VertexData',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.html',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['volume_25',['Volume',['../struct_soft_body_shared_settings_1_1_volume.html',1,'SoftBodySharedSettings']]] +]; diff --git a/search/classes_16.js b/search/classes_16.js new file mode 100644 index 000000000..86c37aae5 --- /dev/null +++ b/search/classes_16.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['wheel_0',['Wheel',['../class_wheel.html',1,'']]], + ['wheeledvehiclecontroller_1',['WheeledVehicleController',['../class_wheeled_vehicle_controller.html',1,'']]], + ['wheeledvehiclecontrollersettings_2',['WheeledVehicleControllerSettings',['../class_wheeled_vehicle_controller_settings.html',1,'']]], + ['wheelsettings_3',['WheelSettings',['../class_wheel_settings.html',1,'']]], + ['wheelsettingstv_4',['WheelSettingsTV',['../class_wheel_settings_t_v.html',1,'']]], + ['wheelsettingswv_5',['WheelSettingsWV',['../class_wheel_settings_w_v.html',1,'']]], + ['wheeltv_6',['WheelTV',['../class_wheel_t_v.html',1,'']]], + ['wheelwv_7',['WheelWV',['../class_wheel_w_v.html',1,'']]] +]; diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 000000000..09fff135d --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,70 @@ +var searchData= +[ + ['calculatesolversteps_0',['CalculateSolverSteps',['../class_calculate_solver_steps.html',1,'']]], + ['capsulenoconvex_1',['CapsuleNoConvex',['../class_capsule_shape_1_1_capsule_no_convex.html',1,'CapsuleShape']]], + ['capsuleshape_2',['CapsuleShape',['../class_capsule_shape.html',1,'']]], + ['capsuleshapesettings_3',['CapsuleShapeSettings',['../class_capsule_shape_settings.html',1,'']]], + ['capsulewithconvex_4',['CapsuleWithConvex',['../class_capsule_shape_1_1_capsule_with_convex.html',1,'CapsuleShape']]], + ['castconvexvstriangles_5',['CastConvexVsTriangles',['../class_cast_convex_vs_triangles.html',1,'']]], + ['castrayvisitor_6',['CastRayVisitor',['../struct_compound_shape_1_1_cast_ray_visitor.html',1,'CompoundShape']]], + ['castrayvisitorcollector_7',['CastRayVisitorCollector',['../struct_compound_shape_1_1_cast_ray_visitor_collector.html',1,'CompoundShape']]], + ['castshapevisitor_8',['CastShapeVisitor',['../struct_compound_shape_1_1_cast_shape_visitor.html',1,'CompoundShape']]], + ['castspherevstriangles_9',['CastSphereVsTriangles',['../class_cast_sphere_vs_triangles.html',1,'']]], + ['ccdbody_10',['CCDBody',['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html',1,'PhysicsUpdateContext::Step']]], + ['chain_11',['Chain',['../class_skeleton_mapper_1_1_chain.html',1,'SkeletonMapper']]], + ['character_12',['Character',['../class_character.html',1,'']]], + ['characterbase_13',['CharacterBase',['../class_character_base.html',1,'']]], + ['characterbasesettings_14',['CharacterBaseSettings',['../class_character_base_settings.html',1,'']]], + ['charactercontactlistener_15',['CharacterContactListener',['../class_character_contact_listener.html',1,'']]], + ['charactercontactsettings_16',['CharacterContactSettings',['../class_character_contact_settings.html',1,'']]], + ['charactersettings_17',['CharacterSettings',['../class_character_settings.html',1,'']]], + ['charactervirtual_18',['CharacterVirtual',['../class_character_virtual.html',1,'']]], + ['charactervirtualsettings_19',['CharacterVirtualSettings',['../class_character_virtual_settings.html',1,'']]], + ['charactervscharactercollision_20',['CharacterVsCharacterCollision',['../class_character_vs_character_collision.html',1,'']]], + ['charactervscharactercollisionsimple_21',['CharacterVsCharacterCollisionSimple',['../class_character_vs_character_collision_simple.html',1,'']]], + ['chsgettrianglescontext_22',['CHSGetTrianglesContext',['../class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html',1,'ConvexHullShape']]], + ['closesthitcollisioncollector_23',['ClosestHitCollisionCollector',['../class_closest_hit_collision_collector.html',1,'']]], + ['collecttransformedshapesvisitor_24',['CollectTransformedShapesVisitor',['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html',1,'CompoundShape']]], + ['collidecompoundvsshapevisitor_25',['CollideCompoundVsShapeVisitor',['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html',1,'CompoundShape']]], + ['collideconvexvstriangles_26',['CollideConvexVsTriangles',['../class_collide_convex_vs_triangles.html',1,'']]], + ['collidepointresult_27',['CollidePointResult',['../class_collide_point_result.html',1,'']]], + ['collidepointvisitor_28',['CollidePointVisitor',['../struct_compound_shape_1_1_collide_point_visitor.html',1,'CompoundShape']]], + ['collidesettingsbase_29',['CollideSettingsBase',['../class_collide_settings_base.html',1,'']]], + ['collideshaperesult_30',['CollideShapeResult',['../class_collide_shape_result.html',1,'']]], + ['collideshapesettings_31',['CollideShapeSettings',['../class_collide_shape_settings.html',1,'']]], + ['collideshapevscompoundvisitor_32',['CollideShapeVsCompoundVisitor',['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html',1,'CompoundShape']]], + ['collidesoftbodyverticesvstriangles_33',['CollideSoftBodyVerticesVsTriangles',['../class_collide_soft_body_vertices_vs_triangles.html',1,'']]], + ['collidespherevstriangles_34',['CollideSphereVsTriangles',['../class_collide_sphere_vs_triangles.html',1,'']]], + ['collisioncollector_35',['CollisionCollector',['../class_collision_collector.html',1,'']]], + ['collisioncollectortraitscastray_36',['CollisionCollectorTraitsCastRay',['../class_collision_collector_traits_cast_ray.html',1,'']]], + ['collisioncollectortraitscastshape_37',['CollisionCollectorTraitsCastShape',['../class_collision_collector_traits_cast_shape.html',1,'']]], + ['collisioncollectortraitscollideshape_38',['CollisionCollectorTraitsCollideShape',['../class_collision_collector_traits_collide_shape.html',1,'']]], + ['collisiondispatch_39',['CollisionDispatch',['../class_collision_dispatch.html',1,'']]], + ['collisionestimationresult_40',['CollisionEstimationResult',['../struct_collision_estimation_result.html',1,'']]], + ['collisiongroup_41',['CollisionGroup',['../class_collision_group.html',1,'']]], + ['color_42',['Color',['../class_color.html',1,'']]], + ['compoundshape_43',['CompoundShape',['../class_compound_shape.html',1,'']]], + ['compoundshapesettings_44',['CompoundShapeSettings',['../class_compound_shape_settings.html',1,'']]], + ['coneconstraint_45',['ConeConstraint',['../class_cone_constraint.html',1,'']]], + ['coneconstraintsettings_46',['ConeConstraintSettings',['../class_cone_constraint_settings.html',1,'']]], + ['connectedconstraint_47',['ConnectedConstraint',['../class_physics_scene_1_1_connected_constraint.html',1,'PhysicsScene']]], + ['constraint_48',['Constraint',['../class_constraint.html',1,'']]], + ['constraintmanager_49',['ConstraintManager',['../class_constraint_manager.html',1,'']]], + ['constraintsettings_50',['ConstraintSettings',['../class_constraint_settings.html',1,'']]], + ['contact_51',['Contact',['../struct_character_virtual_1_1_contact.html',1,'CharacterVirtual']]], + ['contactallocator_52',['ContactAllocator',['../class_contact_constraint_manager_1_1_contact_allocator.html',1,'ContactConstraintManager']]], + ['contactconstraintmanager_53',['ContactConstraintManager',['../class_contact_constraint_manager.html',1,'']]], + ['contactlistener_54',['ContactListener',['../class_contact_listener.html',1,'']]], + ['contactmanifold_55',['ContactManifold',['../class_contact_manifold.html',1,'']]], + ['contactsettings_56',['ContactSettings',['../class_contact_settings.html',1,'']]], + ['convexhullbuilder_57',['ConvexHullBuilder',['../class_convex_hull_builder.html',1,'']]], + ['convexhullbuilder2d_58',['ConvexHullBuilder2D',['../class_convex_hull_builder2_d.html',1,'']]], + ['convexhullshape_59',['ConvexHullShape',['../class_convex_hull_shape.html',1,'']]], + ['convexhullshapesettings_60',['ConvexHullShapeSettings',['../class_convex_hull_shape_settings.html',1,'']]], + ['convexshape_61',['ConvexShape',['../class_convex_shape.html',1,'']]], + ['convexshapesettings_62',['ConvexShapeSettings',['../class_convex_shape_settings.html',1,'']]], + ['csgettrianglescontext_63',['CSGetTrianglesContext',['../class_convex_shape_1_1_c_s_get_triangles_context.html',1,'ConvexShape']]], + ['cylinder_64',['Cylinder',['../class_cylinder_shape_1_1_cylinder.html',1,'CylinderShape']]], + ['cylindershape_65',['CylinderShape',['../class_cylinder_shape.html',1,'']]], + ['cylindershapesettings_66',['CylinderShapeSettings',['../class_cylinder_shape_settings.html',1,'']]] +]; diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 000000000..70f89f896 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['debugrenderer_0',['DebugRenderer',['../class_debug_renderer.html',1,'']]], + ['debugrendererplayback_1',['DebugRendererPlayback',['../class_debug_renderer_playback.html',1,'']]], + ['debugrendererrecorder_2',['DebugRendererRecorder',['../class_debug_renderer_recorder.html',1,'']]], + ['debugrenderersimple_3',['DebugRendererSimple',['../class_debug_renderer_simple.html',1,'']]], + ['decodingcontext_4',['decodingcontext',['../class_height_field_shape_1_1_decoding_context.html',1,'HeightFieldShape::DecodingContext'],['../class_node_codec_quad_tree_half_float_1_1_decoding_context.html',1,'NodeCodecQuadTreeHalfFloat< Alignment >::DecodingContext'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext']]], + ['decoratedshape_5',['DecoratedShape',['../class_decorated_shape.html',1,'']]], + ['decoratedshapesettings_6',['DecoratedShapeSettings',['../class_decorated_shape_settings.html',1,'']]], + ['defaultbroadphaselayerfilter_7',['DefaultBroadPhaseLayerFilter',['../class_default_broad_phase_layer_filter.html',1,'']]], + ['defaultobjectlayerfilter_8',['DefaultObjectLayerFilter',['../class_default_object_layer_filter.html',1,'']]], + ['dihedralbend_9',['DihedralBend',['../struct_soft_body_shared_settings_1_1_dihedral_bend.html',1,'SoftBodySharedSettings']]], + ['distanceconstraint_10',['DistanceConstraint',['../class_distance_constraint.html',1,'']]], + ['distanceconstraintsettings_11',['DistanceConstraintSettings',['../class_distance_constraint_settings.html',1,'']]], + ['dmat44_12',['DMat44',['../class_d_mat44.html',1,'']]], + ['double3_13',['Double3',['../class_double3.html',1,'']]], + ['drawsettings_14',['drawsettings',['../struct_body_manager_1_1_draw_settings.html',1,'BodyManager::DrawSettings'],['../struct_skeleton_pose_1_1_draw_settings.html',1,'SkeletonPose::DrawSettings']]], + ['dualaxisconstraintpart_15',['DualAxisConstraintPart',['../class_dual_axis_constraint_part.html',1,'']]], + ['dummycalculatesolversteps_16',['DummyCalculateSolverSteps',['../class_dummy_calculate_solver_steps.html',1,'']]], + ['dvec3_17',['DVec3',['../class_d_vec3.html',1,'']]], + ['dynmatrix_18',['DynMatrix',['../class_dyn_matrix.html',1,'']]] +]; diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 000000000..d9820ac2c --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['edge_0',['edge',['../class_convex_hull_builder_1_1_edge.html',1,'ConvexHullBuilder::Edge'],['../class_e_p_a_convex_hull_builder_1_1_edge.html',1,'EPAConvexHullBuilder::Edge'],['../struct_soft_body_shared_settings_1_1_edge.html',1,'SoftBodySharedSettings::Edge']]], + ['ellipse_1',['Ellipse',['../class_ellipse.html',1,'']]], + ['encodingcontext_2',['encodingcontext',['../class_node_codec_quad_tree_half_float_1_1_encoding_context.html',1,'NodeCodecQuadTreeHalfFloat< Alignment >::EncodingContext'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html',1,'TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext']]], + ['epaconvexhullbuilder_3',['EPAConvexHullBuilder',['../class_e_p_a_convex_hull_builder.html',1,'']]], + ['epapenetrationdepth_4',['EPAPenetrationDepth',['../class_e_p_a_penetration_depth.html',1,'']]], + ['extendedupdatesettings_5',['ExtendedUpdateSettings',['../struct_character_virtual_1_1_extended_update_settings.html',1,'CharacterVirtual']]] +]; diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 000000000..7b3af649c --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['face_0',['face',['../class_convex_hull_builder_1_1_face.html',1,'ConvexHullBuilder::Face'],['../struct_soft_body_shared_settings_1_1_face.html',1,'SoftBodySharedSettings::Face']]], + ['factory_1',['Factory',['../class_factory.html',1,'']]], + ['fixedconstraint_2',['FixedConstraint',['../class_fixed_constraint.html',1,'']]], + ['fixedconstraintsettings_3',['FixedConstraintSettings',['../class_fixed_constraint_settings.html',1,'']]], + ['fixedsizefreelist_4',['FixedSizeFreeList',['../class_fixed_size_free_list.html',1,'']]], + ['fixedsizefreelist_3c_20job_20_3e_5',['FixedSizeFreeList< Job >',['../class_fixed_size_free_list.html',1,'']]], + ['fixedsizefreelist_3c_20node_20_3e_6',['FixedSizeFreeList< Node >',['../class_fixed_size_free_list.html',1,'']]], + ['float2_7',['Float2',['../class_float2.html',1,'']]], + ['float3_8',['Float3',['../class_float3.html',1,'']]], + ['float4_9',['Float4',['../class_float4.html',1,'']]], + ['fpexceptiondisabledivbyzero_10',['FPExceptionDisableDivByZero',['../class_f_p_exception_disable_div_by_zero.html',1,'']]], + ['fpexceptiondisableinvalid_11',['FPExceptionDisableInvalid',['../class_f_p_exception_disable_invalid.html',1,'']]], + ['fpexceptionsenable_12',['FPExceptionsEnable',['../class_f_p_exceptions_enable.html',1,'']]], + ['frame_13',['Frame',['../struct_debug_renderer_recorder_1_1_frame.html',1,'DebugRendererRecorder']]] +]; diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 000000000..8bf958a0a --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['gearconstraint_0',['GearConstraint',['../class_gear_constraint.html',1,'']]], + ['gearconstraintpart_1',['GearConstraintPart',['../class_gear_constraint_part.html',1,'']]], + ['gearconstraintsettings_2',['GearConstraintSettings',['../class_gear_constraint_settings.html',1,'']]], + ['geometry_3',['Geometry',['../class_debug_renderer_1_1_geometry.html',1,'DebugRenderer']]], + ['geometryblob_4',['GeometryBlob',['../struct_debug_renderer_recorder_1_1_geometry_blob.html',1,'DebugRendererRecorder']]], + ['getintersectingsubshapesvisitor_5',['GetIntersectingSubShapesVisitor',['../struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html',1,'CompoundShape']]], + ['gettrianglescontext_6',['GetTrianglesContext',['../struct_shape_1_1_get_triangles_context.html',1,'Shape']]], + ['gettrianglescontextmultivertexlist_7',['GetTrianglesContextMultiVertexList',['../class_get_triangles_context_multi_vertex_list.html',1,'']]], + ['gettrianglescontextvertexlist_8',['GetTrianglesContextVertexList',['../class_get_triangles_context_vertex_list.html',1,'']]], + ['gjkclosestpoint_9',['GJKClosestPoint',['../class_g_j_k_closest_point.html',1,'']]], + ['groupfilter_10',['GroupFilter',['../class_group_filter.html',1,'']]], + ['groupfiltertable_11',['GroupFilterTable',['../class_group_filter_table.html',1,'']]] +]; diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 000000000..a3ea12e24 --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['hash_3c_20jph_3a_3astaticarray_3c_20t_2c_20n_20_3e_20_3e_0',['hash< JPH::StaticArray< T, N > >',['../structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.html',1,'std']]], + ['hash_3c_20jph_3a_3astring_20_3e_1',['hash< JPH::String >',['../structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.html',1,'std']]], + ['header_2',['Header',['../struct_node_codec_quad_tree_half_float_1_1_header.html',1,'NodeCodecQuadTreeHalfFloat']]], + ['heightfieldshape_3',['HeightFieldShape',['../class_height_field_shape.html',1,'']]], + ['heightfieldshapesettings_4',['HeightFieldShapeSettings',['../class_height_field_shape_settings.html',1,'']]], + ['hingeconstraint_5',['HingeConstraint',['../class_hinge_constraint.html',1,'']]], + ['hingeconstraintsettings_6',['HingeConstraintSettings',['../class_hinge_constraint_settings.html',1,'']]], + ['hingerotationconstraintpart_7',['HingeRotationConstraintPart',['../class_hinge_rotation_constraint_part.html',1,'']]], + ['hsgettrianglescontext_8',['HSGetTrianglesContext',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html',1,'HeightFieldShape']]], + ['hullnoconvex_9',['HullNoConvex',['../class_convex_hull_shape_1_1_hull_no_convex.html',1,'ConvexHullShape']]], + ['hullwithconvex_10',['HullWithConvex',['../class_convex_hull_shape_1_1_hull_with_convex.html',1,'ConvexHullShape']]], + ['hullwithconvexscaled_11',['HullWithConvexScaled',['../class_convex_hull_shape_1_1_hull_with_convex_scaled.html',1,'ConvexHullShape']]] +]; diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 000000000..775c0984b --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['ignoremultiplebodiesfilter_0',['IgnoreMultipleBodiesFilter',['../class_ignore_multiple_bodies_filter.html',1,'']]], + ['ignoresinglebodyfilter_1',['IgnoreSingleBodyFilter',['../class_ignore_single_body_filter.html',1,'']]], + ['ignoresinglebodyfilterchained_2',['IgnoreSingleBodyFilterChained',['../class_ignore_single_body_filter_chained.html',1,'']]], + ['impulse_3',['Impulse',['../struct_collision_estimation_result_1_1_impulse.html',1,'CollisionEstimationResult']]], + ['independentaxisconstraintpart_4',['IndependentAxisConstraintPart',['../class_independent_axis_constraint_part.html',1,'']]], + ['indexedtriangle_5',['IndexedTriangle',['../class_indexed_triangle.html',1,'']]], + ['indexedtrianglenomaterial_6',['IndexedTriangleNoMaterial',['../class_indexed_triangle_no_material.html',1,'']]], + ['internaledgeremovingcollector_7',['InternalEdgeRemovingCollector',['../class_internal_edge_removing_collector.html',1,'']]], + ['invbind_8',['InvBind',['../class_soft_body_shared_settings_1_1_inv_bind.html',1,'SoftBodySharedSettings']]], + ['iobjectstreamin_9',['IObjectStreamIn',['../class_i_object_stream_in.html',1,'']]], + ['iobjectstreamout_10',['IObjectStreamOut',['../class_i_object_stream_out.html',1,'']]], + ['islandbuilder_11',['IslandBuilder',['../class_island_builder.html',1,'']]], + ['iterator_12',['Iterator',['../struct_lock_free_hash_map_1_1_iterator.html',1,'LockFreeHashMap']]] +]; diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 000000000..47045944c --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['job_0',['Job',['../class_job_system_1_1_job.html',1,'JobSystem']]], + ['jobhandle_1',['JobHandle',['../class_job_system_1_1_job_handle.html',1,'JobSystem']]], + ['jobsystem_2',['JobSystem',['../class_job_system.html',1,'']]], + ['jobsystemsinglethreaded_3',['JobSystemSingleThreaded',['../class_job_system_single_threaded.html',1,'']]], + ['jobsystemthreadpool_4',['JobSystemThreadPool',['../class_job_system_thread_pool.html',1,'']]], + ['jobsystemwithbarrier_5',['JobSystemWithBarrier',['../class_job_system_with_barrier.html',1,'']]], + ['joint_6',['Joint',['../class_skeleton_1_1_joint.html',1,'Skeleton']]], + ['jointstate_7',['JointState',['../class_skeletal_animation_1_1_joint_state.html',1,'SkeletalAnimation']]] +]; diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 000000000..9a7802414 --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['keyframe_0',['Keyframe',['../class_skeletal_animation_1_1_keyframe.html',1,'SkeletalAnimation']]], + ['keyvalue_1',['KeyValue',['../class_lock_free_hash_map_1_1_key_value.html',1,'LockFreeHashMap']]] +]; diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 000000000..ef7b657cd --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['largeislandsplitter_0',['LargeIslandSplitter',['../class_large_island_splitter.html',1,'']]], + ['lfhmallocator_1',['LFHMAllocator',['../class_l_f_h_m_allocator.html',1,'']]], + ['lfhmallocatorcontext_2',['LFHMAllocatorContext',['../class_l_f_h_m_allocator_context.html',1,'']]], + ['linearcurve_3',['LinearCurve',['../class_linear_curve.html',1,'']]], + ['lineblob_4',['LineBlob',['../struct_debug_renderer_recorder_1_1_line_blob.html',1,'DebugRendererRecorder']]], + ['locked_5',['Locked',['../class_skeleton_mapper_1_1_locked.html',1,'SkeletonMapper']]], + ['lockfreehashmap_6',['LockFreeHashMap',['../class_lock_free_hash_map.html',1,'']]], + ['lockfreehashmap_3c_20bodypair_2c_20cachedbodypair_20_3e_7',['LockFreeHashMap< BodyPair, CachedBodyPair >',['../class_lock_free_hash_map.html',1,'']]], + ['lockfreehashmap_3c_20subshapeidpair_2c_20cachedmanifold_20_3e_8',['LockFreeHashMap< SubShapeIDPair, CachedManifold >',['../class_lock_free_hash_map.html',1,'']]], + ['lod_9',['LOD',['../class_debug_renderer_1_1_l_o_d.html',1,'DebugRenderer']]], + ['lra_10',['LRA',['../class_soft_body_shared_settings_1_1_l_r_a.html',1,'SoftBodySharedSettings']]] +]; diff --git a/search/classes_c.js b/search/classes_c.js new file mode 100644 index 000000000..2416d11f1 --- /dev/null +++ b/search/classes_c.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['mapping_0',['Mapping',['../class_skeleton_mapper_1_1_mapping.html',1,'SkeletonMapper']]], + ['massproperties_1',['MassProperties',['../class_mass_properties.html',1,'']]], + ['mat44_2',['Mat44',['../class_mat44.html',1,'']]], + ['matrix_3',['Matrix',['../class_matrix.html',1,'']]], + ['matrix_3c_202_2c_202_20_3e_4',['Matrix< 2, 2 >',['../class_matrix.html',1,'']]], + ['meshshape_5',['MeshShape',['../class_mesh_shape.html',1,'']]], + ['meshshapesettings_6',['MeshShapeSettings',['../class_mesh_shape_settings.html',1,'']]], + ['minkowskidifference_7',['MinkowskiDifference',['../struct_minkowski_difference.html',1,'']]], + ['mortoncode_8',['MortonCode',['../class_morton_code.html',1,'']]], + ['motionproperties_9',['MotionProperties',['../class_motion_properties.html',1,'']]], + ['motorcyclecontroller_10',['MotorcycleController',['../class_motorcycle_controller.html',1,'']]], + ['motorcyclecontrollersettings_11',['MotorcycleControllerSettings',['../class_motorcycle_controller_settings.html',1,'']]], + ['motorsettings_12',['MotorSettings',['../class_motor_settings.html',1,'']]], + ['msgettrianglescontext_13',['MSGetTrianglesContext',['../struct_mesh_shape_1_1_m_s_get_triangles_context.html',1,'MeshShape']]], + ['mutablecompoundshape_14',['MutableCompoundShape',['../class_mutable_compound_shape.html',1,'']]], + ['mutablecompoundshapesettings_15',['MutableCompoundShapeSettings',['../class_mutable_compound_shape_settings.html',1,'']]], + ['mutex_16',['Mutex',['../class_mutex.html',1,'']]], + ['mutexarray_17',['MutexArray',['../class_mutex_array.html',1,'']]], + ['mutexarray_3c_20sharedmutex_20_3e_18',['MutexArray< SharedMutex >',['../class_mutex_array.html',1,'']]] +]; diff --git a/search/classes_d.js b/search/classes_d.js new file mode 100644 index 000000000..cf8c62ae5 --- /dev/null +++ b/search/classes_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['narrowphasequery_0',['NarrowPhaseQuery',['../class_narrow_phase_query.html',1,'']]], + ['node_1',['node',['../class_a_a_b_b_tree_builder_1_1_node.html',1,'AABBTreeBuilder::Node'],['../struct_node_codec_quad_tree_half_float_1_1_node.html',1,'NodeCodecQuadTreeHalfFloat< Alignment >::Node']]], + ['nodecodecquadtreehalffloat_2',['NodeCodecQuadTreeHalfFloat',['../class_node_codec_quad_tree_half_float.html',1,'']]], + ['noncopyable_3',['NonCopyable',['../class_non_copyable.html',1,'']]] +]; diff --git a/search/classes_e.js b/search/classes_e.js new file mode 100644 index 000000000..2e81e4f11 --- /dev/null +++ b/search/classes_e.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['objectlayerfilter_0',['ObjectLayerFilter',['../class_object_layer_filter.html',1,'']]], + ['objectlayerpairfilter_1',['ObjectLayerPairFilter',['../class_object_layer_pair_filter.html',1,'']]], + ['objectlayerpairfiltermask_2',['ObjectLayerPairFilterMask',['../class_object_layer_pair_filter_mask.html',1,'']]], + ['objectlayerpairfiltertable_3',['ObjectLayerPairFilterTable',['../class_object_layer_pair_filter_table.html',1,'']]], + ['objectstream_4',['ObjectStream',['../class_object_stream.html',1,'']]], + ['objectstreambinaryin_5',['ObjectStreamBinaryIn',['../class_object_stream_binary_in.html',1,'']]], + ['objectstreambinaryout_6',['ObjectStreamBinaryOut',['../class_object_stream_binary_out.html',1,'']]], + ['objectstreamin_7',['ObjectStreamIn',['../class_object_stream_in.html',1,'']]], + ['objectstreamout_8',['ObjectStreamOut',['../class_object_stream_out.html',1,'']]], + ['objectstreamtextin_9',['ObjectStreamTextIn',['../class_object_stream_text_in.html',1,'']]], + ['objectstreamtextout_10',['ObjectStreamTextOut',['../class_object_stream_text_out.html',1,'']]], + ['objectvsbroadphaselayerfilter_11',['ObjectVsBroadPhaseLayerFilter',['../class_object_vs_broad_phase_layer_filter.html',1,'']]], + ['objectvsbroadphaselayerfiltermask_12',['ObjectVsBroadPhaseLayerFilterMask',['../class_object_vs_broad_phase_layer_filter_mask.html',1,'']]], + ['objectvsbroadphaselayerfiltertable_13',['ObjectVsBroadPhaseLayerFilterTable',['../class_object_vs_broad_phase_layer_filter_table.html',1,'']]], + ['offsetcenterofmassshape_14',['OffsetCenterOfMassShape',['../class_offset_center_of_mass_shape.html',1,'']]], + ['offsetcenterofmassshapesettings_15',['OffsetCenterOfMassShapeSettings',['../class_offset_center_of_mass_shape_settings.html',1,'']]], + ['optimizationresults_16',['OptimizationResults',['../class_soft_body_shared_settings_1_1_optimization_results.html',1,'SoftBodySharedSettings']]], + ['orientedbox_17',['OrientedBox',['../class_oriented_box.html',1,'']]] +]; diff --git a/search/classes_f.js b/search/classes_f.js new file mode 100644 index 000000000..21ea9919c --- /dev/null +++ b/search/classes_f.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['part_0',['Part',['../class_ragdoll_settings_1_1_part.html',1,'RagdollSettings']]], + ['pathconstraint_1',['PathConstraint',['../class_path_constraint.html',1,'']]], + ['pathconstraintpath_2',['PathConstraintPath',['../class_path_constraint_path.html',1,'']]], + ['pathconstraintpathhermite_3',['PathConstraintPathHermite',['../class_path_constraint_path_hermite.html',1,'']]], + ['pathconstraintsettings_4',['PathConstraintSettings',['../class_path_constraint_settings.html',1,'']]], + ['physicslock_5',['PhysicsLock',['../class_physics_lock.html',1,'']]], + ['physicsmaterial_6',['PhysicsMaterial',['../class_physics_material.html',1,'']]], + ['physicsmaterialsimple_7',['PhysicsMaterialSimple',['../class_physics_material_simple.html',1,'']]], + ['physicsscene_8',['PhysicsScene',['../class_physics_scene.html',1,'']]], + ['physicssettings_9',['PhysicsSettings',['../struct_physics_settings.html',1,'']]], + ['physicssteplistener_10',['PhysicsStepListener',['../class_physics_step_listener.html',1,'']]], + ['physicssystem_11',['PhysicsSystem',['../class_physics_system.html',1,'']]], + ['physicsupdatecontext_12',['PhysicsUpdateContext',['../class_physics_update_context.html',1,'']]], + ['plane_13',['Plane',['../class_plane.html',1,'']]], + ['planeshape_14',['PlaneShape',['../class_plane_shape.html',1,'']]], + ['planeshapesettings_15',['PlaneShapeSettings',['../class_plane_shape_settings.html',1,'']]], + ['point_16',['point',['../class_linear_curve_1_1_point.html',1,'LinearCurve::Point'],['../class_polyhedron_submerged_volume_calculator_1_1_point.html',1,'PolyhedronSubmergedVolumeCalculator::Point'],['../struct_path_constraint_path_hermite_1_1_point.html',1,'PathConstraintPathHermite::Point']]], + ['pointconstraint_17',['PointConstraint',['../class_point_constraint.html',1,'']]], + ['pointconstraintpart_18',['PointConstraintPart',['../class_point_constraint_part.html',1,'']]], + ['pointconstraintsettings_19',['PointConstraintSettings',['../class_point_constraint_settings.html',1,'']]], + ['pointconvexsupport_20',['PointConvexSupport',['../struct_point_convex_support.html',1,'']]], + ['points_21',['Points',['../class_e_p_a_convex_hull_builder_1_1_points.html',1,'EPAConvexHullBuilder']]], + ['polygonconvexsupport_22',['PolygonConvexSupport',['../struct_polygon_convex_support.html',1,'']]], + ['polyhedronsubmergedvolumecalculator_23',['PolyhedronSubmergedVolumeCalculator',['../class_polyhedron_submerged_volume_calculator.html',1,'']]], + ['profilemeasurement_24',['ProfileMeasurement',['../class_profile_measurement.html',1,'']]], + ['profiler_25',['Profiler',['../class_profiler.html',1,'']]], + ['profilesample_26',['ProfileSample',['../class_profile_sample.html',1,'']]], + ['profilethread_27',['ProfileThread',['../class_profile_thread.html',1,'']]], + ['psgettrianglescontext_28',['PSGetTrianglesContext',['../struct_plane_shape_1_1_p_s_get_triangles_context.html',1,'PlaneShape']]], + ['pulleyconstraint_29',['PulleyConstraint',['../class_pulley_constraint.html',1,'']]], + ['pulleyconstraintsettings_30',['PulleyConstraintSettings',['../class_pulley_constraint_settings.html',1,'']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 000000000..337d6cc13 --- /dev/null +++ b/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/search/defines_0.js b/search/defines_0.js new file mode 100644 index 000000000..0ca56bc9e --- /dev/null +++ b/search/defines_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['broad_5fphase_0',['BROAD_PHASE',['../_physics_system_8cpp.html#aad55d1aa02fb095e428393a1b19c814f',1,'PhysicsSystem.cpp']]] +]; diff --git a/search/defines_1.js b/search/defines_1.js new file mode 100644 index 000000000..d1f560100 --- /dev/null +++ b/search/defines_1.js @@ -0,0 +1,115 @@ +var searchData= +[ + ['jph_5fadd_5fattribute_0',['JPH_ADD_ATTRIBUTE',['../_serializable_attribute_typed_8h.html#a564e5bd12360a28431c73574690dd1b8',1,'SerializableAttributeTyped.h']]], + ['jph_5fadd_5fattribute_5fwith_5falias_1',['JPH_ADD_ATTRIBUTE_WITH_ALIAS',['../_serializable_attribute_typed_8h.html#a861c3d62109332e36799a2e86d160c99',1,'SerializableAttributeTyped.h']]], + ['jph_5fadd_5fbase_5fclass_2',['JPH_ADD_BASE_CLASS',['../_r_t_t_i_8h.html#a6b6dec4b6f44b7b759575042b90f1e0e',1,'RTTI.h']]], + ['jph_5fadd_5fenum_5fattribute_3',['JPH_ADD_ENUM_ATTRIBUTE',['../_serializable_attribute_enum_8h.html#a3b22fbca3340e9995ee02ec11447515d',1,'SerializableAttributeEnum.h']]], + ['jph_5fadd_5fenum_5fattribute_5fwith_5falias_4',['JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS',['../_serializable_attribute_enum_8h.html#a60dd3c12ea0bb4c809e96221d8ff0025',1,'SerializableAttributeEnum.h']]], + ['jph_5falloc_5ffn_5',['JPH_ALLOC_FN',['../_memory_8cpp.html#a668fcc255ab2023c923b60b30de9282e',1,'Memory.cpp']]], + ['jph_5falloc_5fscope_6',['JPH_ALLOC_SCOPE',['../_memory_8cpp.html#aaca87e834c41d0cd09b639ad58d377d4',1,'Memory.cpp']]], + ['jph_5fassert_7',['JPH_ASSERT',['../_issue_reporting_8h.html#aaf6b1df827e11b7ca5f6f8778bd8f8cd',1,'IssueReporting.h']]], + ['jph_5fbase_5fclass_5foffset_8',['JPH_BASE_CLASS_OFFSET',['../_r_t_t_i_8h.html#a668438b38455c6832cd177af4462cdec',1,'RTTI.h']]], + ['jph_5fbreakpoint_9',['JPH_BREAKPOINT',['../_core_8h.html#a252846bbcc9c2281dba7ad4673e708ce',1,'Core.h']]], + ['jph_5fcache_5fline_5fsize_10',['JPH_CACHE_LINE_SIZE',['../_core_8h.html#a2eca4e00d11d8fdbbd04c4a23a244278',1,'Core.h']]], + ['jph_5fclang_5f13_5fplus_5fsuppress_5fwarning_11',['JPH_CLANG_13_PLUS_SUPPRESS_WARNING',['../_core_8h.html#a56b2f8bbe701eb1d5abb795108938d94',1,'Core.h']]], + ['jph_5fclang_5f16_5fplus_5fsuppress_5fwarning_12',['JPH_CLANG_16_PLUS_SUPPRESS_WARNING',['../_core_8h.html#a8fdd598df1d0bcd8ef890ece041ec39e',1,'Core.h']]], + ['jph_5fclang_5fsuppress_5fwarning_13',['JPH_CLANG_SUPPRESS_WARNING',['../_core_8h.html#a7e4d18d1740a496e87b0b745a83175e1',1,'Core.h']]], + ['jph_5fdebug_14',['JPH_DEBUG',['../_core_8h.html#a06f6299732e98a727ed302e921611d56',1,'Core.h']]], + ['jph_5fdebug_5frenderer_5fexport_15',['JPH_DEBUG_RENDERER_EXPORT',['../_debug_renderer_8h.html#a1eb8c8b4d1d3d0232455eed4ac196289',1,'DebugRenderer.h']]], + ['jph_5fdeclare_5fprimitive_16',['jph_declare_primitive',['../_object_stream_8h.html#a7d32f5239cd276fd0012072a2a4ccd23',1,'JPH_DECLARE_PRIMITIVE: ObjectStream.h'],['../_serializable_attribute_8h.html#a7d32f5239cd276fd0012072a2a4ccd23',1,'JPH_DECLARE_PRIMITIVE: SerializableAttribute.h'],['../_object_stream_out_8cpp.html#a7d32f5239cd276fd0012072a2a4ccd23',1,'JPH_DECLARE_PRIMITIVE: ObjectStreamOut.cpp'],['../_object_stream_8cpp.html#a7d32f5239cd276fd0012072a2a4ccd23',1,'JPH_DECLARE_PRIMITIVE: ObjectStream.cpp']]], + ['jph_5fdeclare_5frtti_5fabstract_17',['JPH_DECLARE_RTTI_ABSTRACT',['../_r_t_t_i_8h.html#aa342df4c27afe127c91c78a18524e149',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5fabstract_5fbase_18',['JPH_DECLARE_RTTI_ABSTRACT_BASE',['../_r_t_t_i_8h.html#a3ff0a59480ae32ece4f84604c58571d9',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5ffor_5ffactory_19',['JPH_DECLARE_RTTI_FOR_FACTORY',['../_r_t_t_i_8h.html#a6730e0db6d896ebec02feaf2fb1962e2',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5fhelper_20',['JPH_DECLARE_RTTI_HELPER',['../_r_t_t_i_8h.html#a90f2450c61a3aacfebc11258ac919432',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5fnon_5fvirtual_21',['JPH_DECLARE_RTTI_NON_VIRTUAL',['../_r_t_t_i_8h.html#a030cbf2601458db3a9f2ea1bf181b005',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5foutside_5fclass_22',['JPH_DECLARE_RTTI_OUTSIDE_CLASS',['../_r_t_t_i_8h.html#a4a4f092ae66bfd23b475ed2bbe015e76',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5fvirtual_23',['JPH_DECLARE_RTTI_VIRTUAL',['../_r_t_t_i_8h.html#a13d46ae1d3df8685d4f6d2f02d44f076',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5fvirtual_5fbase_24',['JPH_DECLARE_RTTI_VIRTUAL_BASE',['../_r_t_t_i_8h.html#af64324d36799d7c7827a7fc1c7773e7b',1,'RTTI.h']]], + ['jph_5fdeclare_5frtti_5fwith_5fnamespace_5ffor_5ffactory_25',['JPH_DECLARE_RTTI_WITH_NAMESPACE_FOR_FACTORY',['../_r_t_t_i_8h.html#a50aad6dd20dc88522774eb2e267f6ddd',1,'RTTI.h']]], + ['jph_5fdeclare_5fserializable_5fabstract_26',['JPH_DECLARE_SERIALIZABLE_ABSTRACT',['../_serializable_object_8h.html#ac317eaf55d6ffd3bc0c67521bc33d617',1,'SerializableObject.h']]], + ['jph_5fdeclare_5fserializable_5fabstract_5fbase_27',['JPH_DECLARE_SERIALIZABLE_ABSTRACT_BASE',['../_serializable_object_8h.html#ae930e54dc186e23ef194e0c89681bf9f',1,'SerializableObject.h']]], + ['jph_5fdeclare_5fserializable_5fnon_5fvirtual_28',['JPH_DECLARE_SERIALIZABLE_NON_VIRTUAL',['../_serializable_object_8h.html#accc27ff8b37777018bc2d93207412b71',1,'SerializableObject.h']]], + ['jph_5fdeclare_5fserializable_5foutside_5fclass_29',['JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS',['../_serializable_object_8h.html#aa0ae52235ce05a3559fac744c0c5cb21',1,'SerializableObject.h']]], + ['jph_5fdeclare_5fserializable_5fvirtual_30',['JPH_DECLARE_SERIALIZABLE_VIRTUAL',['../_serializable_object_8h.html#ad80cbee2b256f570ee204534dec05da4',1,'SerializableObject.h']]], + ['jph_5fdeclare_5fserializable_5fvirtual_5fbase_31',['JPH_DECLARE_SERIALIZABLE_VIRTUAL_BASE',['../_serializable_object_8h.html#aa933697d79529904b1027a806ed94b0f',1,'SerializableObject.h']]], + ['jph_5fdeclare_5fserialization_5ffunctions_32',['JPH_DECLARE_SERIALIZATION_FUNCTIONS',['../_serializable_object_8h.html#a7e157da66f2e52b03f01ab235487fde4',1,'SerializableObject.h']]], + ['jph_5fdet_5flog_33',['JPH_DET_LOG',['../_determinism_log_8h.html#a61c37041df47384bded07d7067fc8cf7',1,'DeterminismLog.h']]], + ['jph_5fel_34',['JPH_EL',['../_mat44_8inl.html#a7d2c3dded3b7d624fb4cde097f294fa7',1,'Mat44.inl']]], + ['jph_5fevs_5frotate_35',['JPH_EVS_ROTATE',['../_eigen_value_symmetric_8h.html#a7de93add3597eb0ea0e78c5cd45f9725',1,'EigenValueSymmetric.h']]], + ['jph_5fexport_36',['JPH_EXPORT',['../_core_8h.html#a2712a9b0f778ab9d1aa5118b4e8e6bd8',1,'Core.h']]], + ['jph_5fexport_5fgcc_5fbug_5fworkaround_37',['JPH_EXPORT_GCC_BUG_WORKAROUND',['../_core_8h.html#a99479aa3165acf219093ab9549833cf9',1,'Core.h']]], + ['jph_5fgcc_5fsuppress_5fwarning_38',['JPH_GCC_SUPPRESS_WARNING',['../_core_8h.html#a46d791d2b1f95fa056399441a2ad8667',1,'Core.h']]], + ['jph_5fif_5fdebug_39',['JPH_IF_DEBUG',['../_core_8h.html#a3feba9adfefa0cf951f6b4aeb4990fb4',1,'Core.h']]], + ['jph_5fif_5fdebug_5frenderer_40',['JPH_IF_DEBUG_RENDERER',['../_core_8h.html#ab6d002cadb39841b46bb93fe8a20e00e',1,'Core.h']]], + ['jph_5fif_5fdouble_5fprecision_41',['JPH_IF_DOUBLE_PRECISION',['../_core_8h.html#a53c63d069a8c5c75085ed00c3725e0ab',1,'Core.h']]], + ['jph_5fif_5fenable_5fasserts_42',['JPH_IF_ENABLE_ASSERTS',['../_issue_reporting_8h.html#a9189784257d6995aa3ecbafbf8bc5bd5',1,'IssueReporting.h']]], + ['jph_5fif_5ffloating_5fpoint_5fexceptions_5fenabled_43',['JPH_IF_FLOATING_POINT_EXCEPTIONS_ENABLED',['../_core_8h.html#a9f995afb38a0d149ed20606b43a3e2fb',1,'Core.h']]], + ['jph_5fif_5fnot_5fandroid_44',['JPH_IF_NOT_ANDROID',['../_core_8h.html#aac5e592f9e714fda0c006772758e3c6f',1,'Core.h']]], + ['jph_5fif_5fnot_5fdebug_45',['JPH_IF_NOT_DEBUG',['../_core_8h.html#a19cd70ae9b66fee2faf10a0d00fe8a13',1,'Core.h']]], + ['jph_5fif_5fnot_5fdebug_5frenderer_46',['JPH_IF_NOT_DEBUG_RENDERER',['../_core_8h.html#a5f790aaecc28630723d8d68801ce8865',1,'Core.h']]], + ['jph_5fif_5fsingle_5fprecision_47',['JPH_IF_SINGLE_PRECISION',['../_core_8h.html#a2b44b10d432bafc0db7e105e3c246425',1,'Core.h']]], + ['jph_5fif_5fsingle_5fprecision_5felse_48',['JPH_IF_SINGLE_PRECISION_ELSE',['../_core_8h.html#aa004a0f7df4c0472bb33a149fce1f21c',1,'Core.h']]], + ['jph_5fif_5ftrack_5fbroadphase_5fstats_49',['JPH_IF_TRACK_BROADPHASE_STATS',['../_broad_phase_8h.html#a1fd93e96654ff2092f35485924d94df9',1,'BroadPhase.h']]], + ['jph_5fif_5ftrack_5fnarrowphase_5fstats_50',['JPH_IF_TRACK_NARROWPHASE_STATS',['../_narrow_phase_stats_8h.html#a338a08d1bae50a8368cce3eaa218f1b1',1,'NarrowPhaseStats.h']]], + ['jph_5fimplement_5frtti_5fabstract_51',['JPH_IMPLEMENT_RTTI_ABSTRACT',['../_r_t_t_i_8h.html#ad1ef48680348ecc0d318544e49e59efb',1,'RTTI.h']]], + ['jph_5fimplement_5frtti_5fabstract_5fbase_52',['JPH_IMPLEMENT_RTTI_ABSTRACT_BASE',['../_r_t_t_i_8h.html#ac209c74f11bc4a8893baa3abe9839139',1,'RTTI.h']]], + ['jph_5fimplement_5frtti_5fnon_5fvirtual_53',['JPH_IMPLEMENT_RTTI_NON_VIRTUAL',['../_r_t_t_i_8h.html#acc74973e1a6c6be43135c2e52693428f',1,'RTTI.h']]], + ['jph_5fimplement_5frtti_5foutside_5fclass_54',['JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS',['../_r_t_t_i_8h.html#a4a641a155ee1c2a238734f69e69f2e5f',1,'RTTI.h']]], + ['jph_5fimplement_5frtti_5fvirtual_55',['JPH_IMPLEMENT_RTTI_VIRTUAL',['../_r_t_t_i_8h.html#a10066d3dbecb1f07b1c5250773537b86',1,'RTTI.h']]], + ['jph_5fimplement_5frtti_5fvirtual_5fbase_56',['JPH_IMPLEMENT_RTTI_VIRTUAL_BASE',['../_r_t_t_i_8h.html#adb200046bbf9e46a9870dc1862e8cc15',1,'RTTI.h']]], + ['jph_5fimplement_5fserializable_5fabstract_57',['JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT',['../_serializable_object_8h.html#aa0df3cb355e5b6fa66051046f5590a5e',1,'SerializableObject.h']]], + ['jph_5fimplement_5fserializable_5fabstract_5fbase_58',['JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE',['../_serializable_object_8h.html#ada2ccb45b6d52e1c8a1785bc62b412e4',1,'SerializableObject.h']]], + ['jph_5fimplement_5fserializable_5fnon_5fvirtual_59',['JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL',['../_serializable_object_8h.html#af1893434ccaa3c9d7eebc3f1c8c83290',1,'SerializableObject.h']]], + ['jph_5fimplement_5fserializable_5foutside_5fclass_60',['JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS',['../_serializable_object_8h.html#a8d52ce16aca23d1e5a6933b4607f7f8a',1,'SerializableObject.h']]], + ['jph_5fimplement_5fserializable_5fvirtual_61',['JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL',['../_serializable_object_8h.html#ad9a7708c6cfef4f2b257db2f06f17b6b',1,'SerializableObject.h']]], + ['jph_5fimplement_5fserializable_5fvirtual_5fbase_62',['JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL_BASE',['../_serializable_object_8h.html#aa59eb84cc23028203085e2c3fce663d2',1,'SerializableObject.h']]], + ['jph_5fimplement_5fserialization_5ffunctions_63',['JPH_IMPLEMENT_SERIALIZATION_FUNCTIONS',['../_serializable_object_8h.html#a9ff80255cadbb579a6be539451245df7',1,'SerializableObject.h']]], + ['jph_5fmake_5fhash_5fstruct_64',['JPH_MAKE_HASH_STRUCT',['../_hash_combine_8h.html#aedd0cd83dae14bf34f99338587ab043d',1,'HashCombine.h']]], + ['jph_5fmake_5fhashable_65',['JPH_MAKE_HASHABLE',['../_hash_combine_8h.html#acb214eb23a4f6646330f74bc5f72c938',1,'HashCombine.h']]], + ['jph_5fmsvc2019_5fsuppress_5fwarning_66',['JPH_MSVC2019_SUPPRESS_WARNING',['../_core_8h.html#abbf86de84b7cb1817f2be1e28b6b754f',1,'Core.h']]], + ['jph_5fmsvc_5fsuppress_5fwarning_67',['JPH_MSVC_SUPPRESS_WARNING',['../_core_8h.html#a7e50ac7352b8f5948a91b543756c84a8',1,'Core.h']]], + ['jph_5fnamespace_5fbegin_68',['JPH_NAMESPACE_BEGIN',['../_core_8h.html#ad14098b68b8c44ea6112601031268405',1,'Core.h']]], + ['jph_5fnamespace_5fend_69',['JPH_NAMESPACE_END',['../_core_8h.html#a73da8725998b00321a9db341202d650d',1,'Core.h']]], + ['jph_5fno_5fexport_70',['JPH_NO_EXPORT',['../_core_8h.html#ac2c075faa1ac3c9c5263a6729726c931',1,'Core.h']]], + ['jph_5fobject_5flayer_5fbits_71',['JPH_OBJECT_LAYER_BITS',['../_object_layer_8h.html#a744c7588b7b9c9d897854299a8682c66',1,'ObjectLayer.h']]], + ['jph_5foverride_5fnew_5fdelete_72',['JPH_OVERRIDE_NEW_DELETE',['../_memory_8h.html#a91074fb218fe28954a0938c099ddd9e0',1,'Memory.h']]], + ['jph_5fplatform_5fwindows_73',['JPH_PLATFORM_WINDOWS',['../_core_8h.html#a06421dbef09f6a781ed52965f5f5eac8',1,'Core.h']]], + ['jph_5fplatform_5fwindows_5fuwp_74',['JPH_PLATFORM_WINDOWS_UWP',['../_core_8h.html#a32aff07e497254f9fbe9bbe669c94bcf',1,'Core.h']]], + ['jph_5fprofile_75',['JPH_PROFILE',['../_profiler_8h.html#aeea975f69380f934d24a9169e43bac9b',1,'Profiler.h']]], + ['jph_5fprofile_5fdump_76',['JPH_PROFILE_DUMP',['../_profiler_8h.html#a7fd763325a27ec4b58e54119dbf08acb',1,'Profiler.h']]], + ['jph_5fprofile_5fend_77',['JPH_PROFILE_END',['../_profiler_8h.html#ad4065f7f547ab9ee221c76b6dc313425',1,'Profiler.h']]], + ['jph_5fprofile_5ffunction_78',['JPH_PROFILE_FUNCTION',['../_profiler_8h.html#a9d22d20c7f03e2ec7bf058811b12cb4e',1,'Profiler.h']]], + ['jph_5fprofile_5fnextframe_79',['JPH_PROFILE_NEXTFRAME',['../_profiler_8h.html#ac158343dbc5927ea288d3ef011feb288',1,'Profiler.h']]], + ['jph_5fprofile_5fstart_80',['JPH_PROFILE_START',['../_profiler_8h.html#a565915a1416629f5e8fd84ab2cbe7a14',1,'Profiler.h']]], + ['jph_5fprofile_5ftag_81',['JPH_PROFILE_TAG',['../_profiler_8h.html#ad70c118d5a68a0e7996f9e9e4bb04af8',1,'Profiler.h']]], + ['jph_5fprofile_5ftag2_82',['JPH_PROFILE_TAG2',['../_profiler_8h.html#a25c67544eb8ec8c174946341070a4ec0',1,'Profiler.h']]], + ['jph_5fprofile_5fthread_5fend_83',['JPH_PROFILE_THREAD_END',['../_profiler_8h.html#acdb6d6bc05aad36435219ee5f631efc8',1,'Profiler.h']]], + ['jph_5fprofile_5fthread_5fstart_84',['JPH_PROFILE_THREAD_START',['../_profiler_8h.html#a5455272d603b90d629b74c0d64338173',1,'Profiler.h']]], + ['jph_5frename_5fclass_85',['JPH_RENAME_CLASS',['../_r_t_t_i_8h.html#aec1da7ef8dc2aa9668cd7cb65e543941',1,'RTTI.h']]], + ['jph_5frtti_86',['JPH_RTTI',['../_r_t_t_i_8h.html#a96bfac00708a5a1649b5581b3d082d12',1,'RTTI.h']]], + ['jph_5frvector_5falignment_87',['JPH_RVECTOR_ALIGNMENT',['../_real_8h.html#ac6a49178acb5c5ecdbab2424aca0e474',1,'Real.h']]], + ['jph_5fscope_5fexit_88',['JPH_SCOPE_EXIT',['../_scope_exit_8h.html#a839a77790fe3ad876d339661b0dedc82',1,'ScopeExit.h']]], + ['jph_5fscope_5fexit_5ftag_89',['JPH_SCOPE_EXIT_TAG',['../_scope_exit_8h.html#a34f8b40943318ef531e67cda41e687b9',1,'ScopeExit.h']]], + ['jph_5fscope_5fexit_5ftag2_90',['JPH_SCOPE_EXIT_TAG2',['../_scope_exit_8h.html#af3b6234fdd42f0f27a584738fb79b60a',1,'ScopeExit.h']]], + ['jph_5fstack_5falloc_91',['JPH_STACK_ALLOC',['../_core_8h.html#a438e7b853f86742bcbdf0faeaa2094a2',1,'Core.h']]], + ['jph_5fsuppress_5fwarnings_92',['JPH_SUPPRESS_WARNINGS',['../_core_8h.html#a0e5e358b4576bd9e1692d2ce14088702',1,'Core.h']]], + ['jph_5fsuppress_5fwarnings_5fstd_5fbegin_93',['JPH_SUPPRESS_WARNINGS_STD_BEGIN',['../_core_8h.html#a4ac413403e9ca00d24a3e2f244cf5456',1,'Core.h']]], + ['jph_5fsuppress_5fwarnings_5fstd_5fend_94',['JPH_SUPPRESS_WARNINGS_STD_END',['../_core_8h.html#a5f6b64537a538d9204b253532b799467',1,'Core.h']]], + ['jph_5funused_95',['JPH_UNUSED',['../_core_8h.html#a719a73b9e445920bf5969f05d01ce69c',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f1_96',['JPH_VERSION_FEATURE_BIT_1',['../_core_8h.html#a7fdb6c3ad10d37a8e64b98aaa2bea89b',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f10_97',['JPH_VERSION_FEATURE_BIT_10',['../_core_8h.html#a69c4f6512bd5a3cd5625e1841162198d',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f11_98',['JPH_VERSION_FEATURE_BIT_11',['../_core_8h.html#ad0fafdd184b95c8932542acd32ae9d90',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f2_99',['JPH_VERSION_FEATURE_BIT_2',['../_core_8h.html#a5a41e47408cd3e5bc9164210ef9b9fd6',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f3_100',['JPH_VERSION_FEATURE_BIT_3',['../_core_8h.html#a4c2959424fe3c6d654334c4e9826c56e',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f4_101',['JPH_VERSION_FEATURE_BIT_4',['../_core_8h.html#ab3724ebc5d00bb7dbe874d35b25b07e8',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f5_102',['JPH_VERSION_FEATURE_BIT_5',['../_core_8h.html#a3a29a20b88a94c0a2618546d1c3e361e',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f6_103',['JPH_VERSION_FEATURE_BIT_6',['../_core_8h.html#a628e5cc2f7334d21fd9c519989735933',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f7_104',['JPH_VERSION_FEATURE_BIT_7',['../_core_8h.html#adb1f1905de0e1144e41db647cc72c6e7',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f8_105',['JPH_VERSION_FEATURE_BIT_8',['../_core_8h.html#ac10d408390f93609210bc469945a653a',1,'Core.h']]], + ['jph_5fversion_5ffeature_5fbit_5f9_106',['JPH_VERSION_FEATURE_BIT_9',['../_core_8h.html#a34ad201212816f7bbc8441654be0f7b1',1,'Core.h']]], + ['jph_5fversion_5ffeatures_107',['JPH_VERSION_FEATURES',['../_core_8h.html#abac97305fdb6c1af52b2d54b68a8ecb2',1,'Core.h']]], + ['jph_5fversion_5fid_108',['JPH_VERSION_ID',['../_core_8h.html#a551c9a48a48d58a1c50f1c86a9d8f768',1,'Core.h']]], + ['jph_5fversion_5fmajor_109',['JPH_VERSION_MAJOR',['../_core_8h.html#adaf29d8692253d347af230caf6a23d62',1,'Core.h']]], + ['jph_5fversion_5fminor_110',['JPH_VERSION_MINOR',['../_core_8h.html#a58a399239375f51b002e0c9efd7a20e8',1,'Core.h']]], + ['jph_5fversion_5fpatch_111',['JPH_VERSION_PATCH',['../_core_8h.html#ad43713eef248686b3d0eab591804c769',1,'Core.h']]] +]; diff --git a/search/defines_2.js b/search/defines_2.js new file mode 100644 index 000000000..3e4e8acb1 --- /dev/null +++ b/search/defines_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['make_5fface_0',['MAKE_FACE',['../_convex_shape_8cpp.html#a96549debc24a06a6c11ca18a1e11d35f',1,'ConvexShape.cpp']]] +]; diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 000000000..487eb14e4 --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,48 @@ +var searchData= +[ + ['eactivation_0',['EActivation',['../_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6',1,'EActivation.h']]], + ['eactiveedgemode_1',['EActiveEdgeMode',['../_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183',1,'ActiveEdgeMode.h']]], + ['ealloweddofs_2',['EAllowedDOFs',['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913',1,'AllowedDOFs.h']]], + ['eaxis_3',['EAxis',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cd',1,'SixDOFConstraintSettings']]], + ['ebackfacemode_4',['EBackFaceMode',['../_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70',1,'BackFaceMode.h']]], + ['ebendtype_5',['EBendType',['../class_soft_body_shared_settings.html#a38d5a75fdb0d962975fbf2c01b15ba32',1,'SoftBodySharedSettings']]], + ['ebodytype_6',['EBodyType',['../_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666',1,'BodyType.h']]], + ['ecansleep_7',['ECanSleep',['../_motion_properties_8h.html#a97f69c4b07965ef22ebe08465e1c3db0',1,'MotionProperties.h']]], + ['ecastshadow_8',['ECastShadow',['../class_debug_renderer.html#aa24dcdedf792593f83eb1091d7e456b9',1,'DebugRenderer']]], + ['ecollectfacesmode_9',['ECollectFacesMode',['../_collect_faces_mode_8h.html#a43f9b52c7b53fe169fd83842e75935b6',1,'CollectFacesMode.h']]], + ['ecommand_10',['ECommand',['../class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3e',1,'DebugRendererRecorder']]], + ['ecomponentdata_11',['EComponentData',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a9ae76041d1be874601839088c1e62bef',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['econstraintspace_12',['EConstraintSpace',['../_constraint_8h.html#a5951578637c20f8aad819c13ad09b1be',1,'Constraint.h']]], + ['econstraintsubtype_13',['EConstraintSubType',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2d',1,'Constraint.h']]], + ['econstrainttype_14',['EConstraintType',['../_constraint_8h.html#a2a4cc5b25efd5f8862f80eb2f5fcdc47',1,'Constraint.h']]], + ['ecullmode_15',['ECullMode',['../class_debug_renderer.html#a54c5367f9b1f976cfe292dfa9ad2160a',1,'DebugRenderer']]], + ['edrawmode_16',['EDrawMode',['../class_debug_renderer.html#ab9951f7e2a6dd10b4e8f3b40f01bba32',1,'DebugRenderer']]], + ['egroundstate_17',['EGroundState',['../class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77e',1,'CharacterBase']]], + ['eiterationstatus_18',['EIterationStatus',['../class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005cc',1,'LargeIslandSplitter::Splits']]], + ['elratype_19',['ELRAType',['../class_soft_body_shared_settings.html#a288bafac0b3882214b806d7483e84419',1,'SoftBodySharedSettings']]], + ['emotionquality_20',['EMotionQuality',['../_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3a',1,'MotionQuality.h']]], + ['emotiontype_21',['EMotionType',['../_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8',1,'MotionType.h']]], + ['emotorstate_22',['EMotorState',['../_motor_settings_8h.html#a691a2387946263d993fa8e1c9488bc2b',1,'MotorSettings.h']]], + ['eosdatatype_23',['EOSDataType',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974a',1,'SerializableAttribute.h']]], + ['eoverridemassproperties_24',['EOverrideMassProperties',['../_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38',1,'BodyCreationSettings.h']]], + ['epathrotationconstrainttype_25',['EPathRotationConstraintType',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51b',1,'PathConstraint.h']]], + ['ephysicsupdateerror_26',['EPhysicsUpdateError',['../_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1',1,'EPhysicsUpdateError.h']]], + ['eresult_27',['eresult',['../class_convex_hull_builder2_d.html#a249cc4fd8288bd1cf447d3d820e9dcd0',1,'ConvexHullBuilder2D::EResult'],['../class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469a',1,'ConvexHullBuilder::EResult']]], + ['eroundingmode_28',['ERoundingMode',['../namespace_half_float_conversion.html#aa3241cac5bd296cd04f7600e353eb1a4',1,'HalfFloatConversion']]], + ['eshapecolor_29',['EShapeColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2',1,'BodyManager']]], + ['eshapesubtype_30',['EShapeSubType',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551b',1,'Shape.h']]], + ['eshapetype_31',['EShapeType',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5',1,'Shape.h']]], + ['esoftbodyconstraintcolor_32',['ESoftBodyConstraintColor',['../_body_manager_8h.html#af3216c8a98a28ccd29f5e19f037a59e2',1,'BodyManager.h']]], + ['espringmode_33',['ESpringMode',['../_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512d',1,'SpringSettings.h']]], + ['estate_34',['EState',['../class_soft_body_update_context.html#aeef08cf407990a9950c06a5418bd11e5',1,'SoftBodyUpdateContext']]], + ['estaterecorderstate_35',['EStateRecorderState',['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4',1,'StateRecorder.h']]], + ['estatus_36',['estatus',['../class_e_p_a_penetration_depth.html#aab59ecfbbefc06c5ac96f9cdc24252d0',1,'EPAPenetrationDepth::EStatus'],['../class_large_island_splitter.html#aa7b284b561bd630d6d288bb706439f68',1,'LargeIslandSplitter::EStatus'],['../class_soft_body_motion_properties.html#a0f968ca89a547af5c8978c966e327682',1,'SoftBodyMotionProperties::EStatus']]], + ['estreamtype_37',['EStreamType',['../class_object_stream.html#a5feef3b87da292623ebf2a04c7c3482e',1,'ObjectStream']]], + ['esupportmode_38',['ESupportMode',['../class_convex_shape.html#a4cd6e2f87f30d108faf1f119dd73a06b',1,'ConvexShape']]], + ['eswingtype_39',['ESwingType',['../_swing_twist_constraint_part_8h.html#add9e89df628b33308461ef46e1b796b6',1,'SwingTwistConstraintPart.h']]], + ['etrackside_40',['ETrackSide',['../_vehicle_track_8h.html#a8008ce273c0da3c40bc613d9495818d2',1,'VehicleTrack.h']]], + ['etransmissionmode_41',['ETransmissionMode',['../_vehicle_transmission_8h.html#ad3e125d6d786c09fddfa10be390f851d',1,'VehicleTransmission.h']]], + ['etriangleblockheaderflags_42',['ETriangleBlockHeaderFlags',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['evertexxy_43',['EVertexXY',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#ad85eb72dec6aa3c370e9ad969c46c4d2',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['evertexzy_44',['EVertexZY',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#adf7b4eade64871b3f53059bdacf9aace',1,'TriangleCodecIndexed8BitPackSOA4Flags']]] +]; diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 000000000..23ab50b59 --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['softbodyvalidateresult_0',['SoftBodyValidateResult',['../_soft_body_contact_listener_8h.html#a146313e7653a5364d1e51eccb325abaa',1,'SoftBodyContactListener.h']]] +]; diff --git a/search/enums_2.js b/search/enums_2.js new file mode 100644 index 000000000..6258655bc --- /dev/null +++ b/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['validateresult_0',['ValidateResult',['../_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93c',1,'ContactListener.h']]] +]; diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js new file mode 100644 index 000000000..aea6614a5 --- /dev/null +++ b/search/enumvalues_0.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['acceptallcontactsforthisbodypair_0',['AcceptAllContactsForThisBodyPair',['../_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93ca8796185ae90c58f159c3940f24112507',1,'ContactListener.h']]], + ['acceptcontact_1',['acceptcontact',['../_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93cac965aae814c53bfa33f418d5187d4cdc',1,'AcceptContact: ContactListener.h'],['../_soft_body_contact_listener_8h.html#a146313e7653a5364d1e51eccb325abaaac965aae814c53bfa33f418d5187d4cdc',1,'AcceptContact: SoftBodyContactListener.h']]], + ['activate_2',['Activate',['../_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6aa13367a8e2a3f3bf4f3409079e3fdf87',1,'EActivation.h']]], + ['all_3',['all',['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ab1c94ca2fbc3e78fc30069c8d0f01680',1,'All: AllowedDOFs.h'],['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4ab1c94ca2fbc3e78fc30069c8d0f01680',1,'All: StateRecorder.h']]], + ['allbatchesdone_4',['AllBatchesDone',['../class_large_island_splitter.html#aa7b284b561bd630d6d288bb706439f68a6d9a123e6f06ce621f7ad5f18f9392c4',1,'LargeIslandSplitter']]], + ['applyconstraints_5',['ApplyConstraints',['../class_soft_body_update_context.html#aeef08cf407990a9950c06a5418bd11e5ae16652901cd4816adf8c10e8468fb172',1,'SoftBodyUpdateContext']]], + ['array_6',['Array',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa4410ec34d9e6c1a68100ca0ce033fb17',1,'SerializableAttribute.h']]], + ['auto_7',['Auto',['../_vehicle_transmission_8h.html#ad3e125d6d786c09fddfa10be390f851da06b9281e396db002010bde1de57262eb',1,'VehicleTransmission.h']]] +]; diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js new file mode 100644 index 000000000..d2c87f155 --- /dev/null +++ b/search/enumvalues_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['batchretrieved_0',['BatchRetrieved',['../class_large_island_splitter.html#aa7b284b561bd630d6d288bb706439f68a39b684c3a6067a4e201699e906bd4af1',1,'LargeIslandSplitter']]], + ['binary_1',['Binary',['../class_object_stream.html#a5feef3b87da292623ebf2a04c7c3482ea6ce976e8f061b2b5cfe4d0c50c3405dd',1,'ObjectStream']]], + ['bodies_2',['Bodies',['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4a2510bc0dd63bb7e0108708a98837f19d',1,'StateRecorder.h']]], + ['bodypaircachefull_3',['BodyPairCacheFull',['../_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1a35c89f6a1eb10c72daa6336df0374fa1',1,'EPhysicsUpdateError.h']]], + ['box_4',['Box',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba3cfce651e667ab85486dd42a8185f98a',1,'Shape.h']]] +]; diff --git a/search/enumvalues_10.js b/search/enumvalues_10.js new file mode 100644 index 000000000..f6db92d5a --- /dev/null +++ b/search/enumvalues_10.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['rackandpinion_0',['RackAndPinion',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da8ee4f481186dec454e1fac31c622045e',1,'Constraint.h']]], + ['rejectallcontactsforthisbodypair_1',['RejectAllContactsForThisBodyPair',['../_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93ca0e08391f08898fa9bd658afcbd26e2c0',1,'ContactListener.h']]], + ['rejectcontact_2',['rejectcontact',['../_contact_listener_8h.html#a996dd20903cf7428fc11a70e8676b93ca4c312fb94f5fa9ebabb3968b56ed0221',1,'RejectContact: ContactListener.h'],['../_soft_body_contact_listener_8h.html#a146313e7653a5364d1e51eccb325abaaa4c312fb94f5fa9ebabb3968b56ed0221',1,'RejectContact: SoftBodyContactListener.h']]], + ['right_3',['Right',['../_vehicle_track_8h.html#a8008ce273c0da3c40bc613d9495818d2a92b09c7c48c520c3c55e497875da437c',1,'VehicleTrack.h']]], + ['rigidbody_4',['RigidBody',['../_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666a81db01c2775d4446d91c2caba27c53e8',1,'BodyType.h']]], + ['rotatedtranslated_5',['RotatedTranslated',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba2215a85eb4276343896831176daa98fd',1,'Shape.h']]], + ['rotationx_6',['rotationx',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cda3bb18dfab58908c6fe0a34212574e804',1,'SixDOFConstraintSettings::RotationX'],['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a14dcec09ce1f4dfaac5955bc70825ebc',1,'RotationX: AllowedDOFs.h']]], + ['rotationy_7',['rotationy',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cdab473d487df9caec2fc6c2f2e5c7f0a40',1,'SixDOFConstraintSettings::RotationY'],['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a7527ced5a5153f3b21e31c4b177c2ea7',1,'RotationY: AllowedDOFs.h']]], + ['rotationz_8',['rotationz',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cdaf83d5f4c529f5ff08c44a4a229536c7e',1,'SixDOFConstraintSettings::RotationZ'],['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ae967cae1a9d601b4335123e013328d34',1,'RotationZ: AllowedDOFs.h']]], + ['round_5fto_5fnearest_9',['ROUND_TO_NEAREST',['../namespace_half_float_conversion.html#aa3241cac5bd296cd04f7600e353eb1a4aaa7855ec8f43c914312cd51064ad0f64',1,'HalfFloatConversion']]], + ['round_5fto_5fneg_5finf_10',['ROUND_TO_NEG_INF',['../namespace_half_float_conversion.html#aa3241cac5bd296cd04f7600e353eb1a4a469f1ba56ff2b3d2cb1b8f5bbba127d9',1,'HalfFloatConversion']]], + ['round_5fto_5fpos_5finf_11',['ROUND_TO_POS_INF',['../namespace_half_float_conversion.html#aa3241cac5bd296cd04f7600e353eb1a4a73c8f88f26cb5185803bc16adb69fbd6',1,'HalfFloatConversion']]] +]; diff --git a/search/enumvalues_11.js b/search/enumvalues_11.js new file mode 100644 index 000000000..869403637 --- /dev/null +++ b/search/enumvalues_11.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['scaled_0',['Scaled',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba7380ae6c5e1189eef50cfd0557d74e99',1,'Shape.h']]], + ['shapetypecolor_1',['ShapeTypeColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2ae474501d8e6be0d0983214885896073a',1,'BodyManager']]], + ['sixdof_2',['SixDOF',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dac3d163397733dea0f5563f2b7b3fa4a2',1,'Constraint.h']]], + ['sleepcolor_3',['SleepColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2ac00cf17870a7f30bd11fb50ca2b66709',1,'BodyManager']]], + ['slider_4',['Slider',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da2d9b9a764fb0be4be10e1b2fce63f561',1,'Constraint.h']]], + ['softbody_5',['softbody',['../_body_type_8h.html#ab494e27db6c263f9e31556ad388eb666aaae0baf0b48c5dcbb8097a4b857f077d',1,'SoftBody: BodyType.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551baaae0baf0b48c5dcbb8097a4b857f077d',1,'SoftBody: Shape.h'],['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5aaae0baf0b48c5dcbb8097a4b857f077d',1,'SoftBody: Shape.h']]], + ['solid_6',['Solid',['../class_debug_renderer.html#ab9951f7e2a6dd10b4e8f3b40f01bba32ae41480b6bbfbf7407974a88d3d34f4fa',1,'DebugRenderer']]], + ['sphere_7',['Sphere',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551bab7095f057db3fefa7325ad93a04e14fd',1,'Shape.h']]], + ['static_8',['Static',['../_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a84a8921b25f505d0d2077aeb5db4bc16',1,'MotionType.h']]], + ['staticcompound_9',['StaticCompound',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba1bc847c331f1918fd1fa8b0231517f18',1,'Shape.h']]], + ['statusitemmask_10',['StatusItemMask',['../class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005cca6ebc6cfc716ad231b90225fd44b41a42',1,'LargeIslandSplitter::Splits']]], + ['statusiterationmask_11',['StatusIterationMask',['../class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005ccaca28e7abb484f9fb2cba5125cde7b3b4',1,'LargeIslandSplitter::Splits']]], + ['statusiterationshift_12',['StatusIterationShift',['../class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005ccacb5adee1be4eaa632656d84c84327343',1,'LargeIslandSplitter::Splits']]], + ['statussplitmask_13',['StatusSplitMask',['../class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005cca5f10b6f1afc0952ac2cda6048d1ef685',1,'LargeIslandSplitter::Splits']]], + ['statussplitshift_14',['StatusSplitShift',['../class_large_island_splitter_1_1_splits.html#a0f8293e7c474ba25adfc13487fc005ccaa6e1ccf30b354c5c1accdf92a42009f9',1,'LargeIslandSplitter::Splits']]], + ['stiffnessanddamping_15',['StiffnessAndDamping',['../_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512da80c2dd5c28197f2baebff76bf0299d47',1,'SpringSettings.h']]], + ['success_16',['success',['../class_convex_hull_builder2_d.html#a249cc4fd8288bd1cf447d3d820e9dcd0a505a83f220c02df2f85c3810cd9ceb38',1,'ConvexHullBuilder2D::Success'],['../class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa505a83f220c02df2f85c3810cd9ceb38',1,'ConvexHullBuilder::Success']]], + ['swingtwist_17',['SwingTwist',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da45c50d709bcdfc9e1733315ce452aeb2',1,'Constraint.h']]], + ['swizzle_5funused_18',['SWIZZLE_UNUSED',['../_swizzle_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57aabca44adc50a0374d19509131edd0042',1,'Swizzle.h']]], + ['swizzle_5fw_19',['SWIZZLE_W',['../_swizzle_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a820def45b2f7468e331d0abe1880dd6a',1,'Swizzle.h']]], + ['swizzle_5fx_20',['SWIZZLE_X',['../_swizzle_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57aa27e48fb4ae47daab960f563f660dfea',1,'Swizzle.h']]], + ['swizzle_5fy_21',['SWIZZLE_Y',['../_swizzle_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57afd291953004304db41e7893449a2ff08',1,'Swizzle.h']]], + ['swizzle_5fz_22',['SWIZZLE_Z',['../_swizzle_8h.html#ab04a0655cd1e3bcac5e8f48c18df1a57a193cb4a0d68ee0b032d86ae28008aa63',1,'Swizzle.h']]] +]; diff --git a/search/enumvalues_12.js b/search/enumvalues_12.js new file mode 100644 index 000000000..262a86289 --- /dev/null +++ b/search/enumvalues_12.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['taperedcapsule_0',['TaperedCapsule',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba24effac8f5b99ca770d8f0ad5c23279d',1,'Shape.h']]], + ['taperedcylinder_1',['TaperedCylinder',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba020daae016a7d88e6b77470e235d9dc8',1,'Shape.h']]], + ['text_2',['Text',['../class_object_stream.html#a5feef3b87da292623ebf2a04c7c3482ea9dffbf69ffba8bc38bc4e01abf4b1675',1,'ObjectStream']]], + ['toofewfaces_3',['TooFewFaces',['../class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa04477b2749feb6999bd3cb1c9f6fd963',1,'ConvexHullBuilder']]], + ['toofewpoints_4',['TooFewPoints',['../class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa675071632f91d793892ece6ed205483f',1,'ConvexHullBuilder']]], + ['translationx_5',['translationx',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cdaaa3c8b3e737aa478570057e143c88036',1,'SixDOFConstraintSettings::TranslationX'],['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913adf25457a4acbb8220b36cbd34903fc06',1,'TranslationX: AllowedDOFs.h']]], + ['translationy_6',['translationy',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cda3473af06b46b9425a1df5eebef6aeb4d',1,'SixDOFConstraintSettings::TranslationY'],['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a5958d0bb6455dfb87376b3c24eeb9a46',1,'TranslationY: AllowedDOFs.h']]], + ['translationz_7',['translationz',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cda439ec6cb6451b42d32733372922adda7',1,'SixDOFConstraintSettings::TranslationZ'],['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a7eac98e7f2c74960a4aa9a2a92a8874d',1,'TranslationZ: AllowedDOFs.h']]], + ['triangle_8',['Triangle',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba5e5500cb2b82eb72d550de644bd1b64b',1,'Shape.h']]], + ['triangle_5fcount_5fbits_9',['TRIANGLE_COUNT_BITS',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24a1deb17a718e1ad968b1ca2f2abd25edb',1,'NodeCodecQuadTreeHalfFloat']]], + ['triangle_5fcount_5fmask_10',['TRIANGLE_COUNT_MASK',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24a7c3a77377faf491bde2712602c832909',1,'NodeCodecQuadTreeHalfFloat']]], + ['triangle_5fcount_5fshift_11',['TRIANGLE_COUNT_SHIFT',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24a4d526ca781439bb52fff5cb7c4ee91f6',1,'NodeCodecQuadTreeHalfFloat']]], + ['twobodyconstraint_12',['TwoBodyConstraint',['../_constraint_8h.html#a2a4cc5b25efd5f8862f80eb2f5fcdc47a279848af426fbf128cc3620da5bd99bd',1,'Constraint.h']]] +]; diff --git a/search/enumvalues_13.js b/search/enumvalues_13.js new file mode 100644 index 000000000..43b512867 --- /dev/null +++ b/search/enumvalues_13.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['user1_0',['user1',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba6b908b785fdba05a6446347dae08d8c5',1,'User1: Shape.h'],['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da6b908b785fdba05a6446347dae08d8c5',1,'User1: Constraint.h'],['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a6b908b785fdba05a6446347dae08d8c5',1,'User1: Shape.h']]], + ['user2_1',['user2',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5aa09bccf2b2963982b34dc0e08d8b582a',1,'User2: Shape.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551baa09bccf2b2963982b34dc0e08d8b582a',1,'User2: Shape.h'],['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2daa09bccf2b2963982b34dc0e08d8b582a',1,'User2: Constraint.h']]], + ['user3_2',['user3',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5ae5d2ad241ec44cf155bc78ae8d11f715',1,'User3: Shape.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551bae5d2ad241ec44cf155bc78ae8d11f715',1,'User3: Shape.h'],['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dae5d2ad241ec44cf155bc78ae8d11f715',1,'User3: Constraint.h']]], + ['user4_3',['user4',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a5ad55d96abf0e50647d6de116530d6df',1,'User4: Shape.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba5ad55d96abf0e50647d6de116530d6df',1,'User4: Shape.h'],['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da5ad55d96abf0e50647d6de116530d6df',1,'User4: Constraint.h']]], + ['user5_4',['User5',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba50c22602b70659dde2893f3a2ba0ab82',1,'Shape.h']]], + ['user6_5',['User6',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba10ddead5bb8bcfaa4d62090acd7cdfb2',1,'Shape.h']]], + ['user7_6',['User7',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba98cd5d17f0660baca7d652995f0d17b6',1,'Shape.h']]], + ['user8_7',['User8',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551bad306313ac03787c5f5f41641773bfb9a',1,'Shape.h']]], + ['userconvex1_8',['UserConvex1',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba56ee3e0d63e9daae01eaf439a3dafab4',1,'Shape.h']]], + ['userconvex2_9',['UserConvex2',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba4a787d586139ae508ca8f27d7d32e083',1,'Shape.h']]], + ['userconvex3_10',['UserConvex3',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551bab4f03368b09d3feb8d20d904cf32e092',1,'Shape.h']]], + ['userconvex4_11',['UserConvex4',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba4a905595a667bd91c94bae0a412175ae',1,'Shape.h']]], + ['userconvex5_12',['UserConvex5',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba54159e0e550120a39f15d154ffc68bb4',1,'Shape.h']]], + ['userconvex6_13',['UserConvex6',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551baff9a08797f6cb96a2c4411bd74b9a965',1,'Shape.h']]], + ['userconvex7_14',['UserConvex7',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba17843305369ea498e0b73fc07a427090',1,'Shape.h']]], + ['userconvex8_15',['UserConvex8',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba065f8314f9f081cee519694eacc54e04',1,'Shape.h']]] +]; diff --git a/search/enumvalues_14.js b/search/enumvalues_14.js new file mode 100644 index 000000000..f685f867a --- /dev/null +++ b/search/enumvalues_14.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vehicle_0',['Vehicle',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dad6af9c1eaff2a89ebd3f8d0c542be12b',1,'Constraint.h']]], + ['velocity_1',['Velocity',['../_motor_settings_8h.html#a691a2387946263d993fa8e1c9488bc2ba88156d46910a2d733443c339a9231d12',1,'MotorSettings.h']]] +]; diff --git a/search/enumvalues_15.js b/search/enumvalues_15.js new file mode 100644 index 000000000..45fe76e0c --- /dev/null +++ b/search/enumvalues_15.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['waitingforbatch_0',['WaitingForBatch',['../class_large_island_splitter.html#aa7b284b561bd630d6d288bb706439f68a01811fa00be6bc53249ea970efb0cc9f',1,'LargeIslandSplitter']]], + ['wireframe_1',['Wireframe',['../class_debug_renderer.html#ab9951f7e2a6dd10b4e8f3b40f01bba32a33e42d0f3b166a4c405127e4412fbef2',1,'DebugRenderer']]], + ['worldspace_2',['WorldSpace',['../_constraint_8h.html#a5951578637c20f8aad819c13ad09b1bea43c5bd4a88c440bd0862f954e4faa177',1,'Constraint.h']]] +]; diff --git a/search/enumvalues_2.js b/search/enumvalues_2.js new file mode 100644 index 000000000..3aaa3e480 --- /dev/null +++ b/search/enumvalues_2.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['calculateinertia_0',['CalculateInertia',['../_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a71aee60a0e48bbd1bd2020f47b7d7682',1,'BodyCreationSettings.h']]], + ['calculatemassandinertia_1',['CalculateMassAndInertia',['../_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a945736934966a328b226aea49bb2ead6',1,'BodyCreationSettings.h']]], + ['cannotsleep_2',['CannotSleep',['../_motion_properties_8h.html#a97f69c4b07965ef22ebe08465e1c3db0af6565583dd53a537e5c7376048299104',1,'MotionProperties.h']]], + ['cansleep_3',['CanSleep',['../_motion_properties_8h.html#a97f69c4b07965ef22ebe08465e1c3db0a93264bf5e739b984ef79c2fbc76863c6',1,'MotionProperties.h']]], + ['capsule_4',['Capsule',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba4880c0f12c06dd6d142e7a40b041bf1a',1,'Shape.h']]], + ['collectfaces_5',['CollectFaces',['../_collect_faces_mode_8h.html#a43f9b52c7b53fe169fd83842e75935b6a745d09152cc2f19f8d94f805226bae7e',1,'CollectFacesMode.h']]], + ['collideonlywithactive_6',['CollideOnlyWithActive',['../_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183a505c6aab0af57196fa3df673d7325917',1,'ActiveEdgeMode.h']]], + ['collidewithall_7',['CollideWithAll',['../_active_edge_mode_8h.html#a4405632c58efc7502bf1295038080183a48ac126dfa7b1b9eeeb736b03305ad48',1,'ActiveEdgeMode.h']]], + ['collidewithbackfaces_8',['CollideWithBackFaces',['../_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70a7a77865372b008d1495ee006663e08ab',1,'BackFaceMode.h']]], + ['colliding_9',['Colliding',['../class_e_p_a_penetration_depth.html#aab59ecfbbefc06c5ac96f9cdc24252d0ae0f4d0dafbcf08dd28d80154056ad0d8',1,'EPAPenetrationDepth']]], + ['component_5fbits_10',['COMPONENT_BITS',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a9ae76041d1be874601839088c1e62befa3e9951b9dbde0cc6bbad1d93bb559b74',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fmask_11',['COMPONENT_MASK',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#a9ae76041d1be874601839088c1e62befa6423600be728f5706df8c5cd299e6784',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fx_12',['COMPONENT_X',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#ad85eb72dec6aa3c370e9ad969c46c4d2a0fce898e2e747fa56fcfe948c75bcf4c',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fy1_13',['COMPONENT_Y1',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#ad85eb72dec6aa3c370e9ad969c46c4d2adc0bffc5e83c98f99afe8fe18bdfc77e',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fy1_5fbits_14',['COMPONENT_Y1_BITS',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#ad85eb72dec6aa3c370e9ad969c46c4d2af5671f311a0c7314908173cd02da9229',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fy2_15',['COMPONENT_Y2',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#adf7b4eade64871b3f53059bdacf9aaceae4bc48542d03b13ac031fc67f9eaa79c',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fy2_5fbits_16',['COMPONENT_Y2_BITS',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#adf7b4eade64871b3f53059bdacf9aacea61adc7a5c7a546e8f686916fe0f0029a',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['component_5fz_17',['COMPONENT_Z',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#adf7b4eade64871b3f53059bdacf9aacea20bbfa39a2c203daad6afc217b354199',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['compound_18',['Compound',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a26154ea007c65f860de5333a555a56cf',1,'Shape.h']]], + ['cone_19',['cone',['../_swing_twist_constraint_part_8h.html#add9e89df628b33308461ef46e1b796b6acd2c8bc6e5f1ea17c918ccaf89660104',1,'Cone: SwingTwistConstraintPart.h'],['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dacd2c8bc6e5f1ea17c918ccaf89660104',1,'Cone: Constraint.h']]], + ['constrainaroundbinormal_20',['ConstrainAroundBinormal',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51bac47ca6b2c57b8f6f71ffc3447b2bc732',1,'PathConstraint.h']]], + ['constrainaroundnormal_21',['ConstrainAroundNormal',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51bab302156e1f72f50fcaf8f21a79175edb',1,'PathConstraint.h']]], + ['constrainaroundtangent_22',['ConstrainAroundTangent',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51bae683cb817d9b6df8318feeff63c0dc7a',1,'PathConstraint.h']]], + ['constraint_23',['Constraint',['../_constraint_8h.html#a2a4cc5b25efd5f8862f80eb2f5fcdc47a5573c74299e0af37fd558445022c4b15',1,'Constraint.h']]], + ['constraintgroup_24',['ConstraintGroup',['../_body_manager_8h.html#af3216c8a98a28ccd29f5e19f037a59e2a76f95f1dbe57491e9abdeb1a4baa6e92',1,'BodyManager.h']]], + ['constraintopath_25',['ConstrainToPath',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51ba073f41f446822810e8d12d203367a61f',1,'PathConstraint.h']]], + ['constraintorder_26',['ConstraintOrder',['../_body_manager_8h.html#af3216c8a98a28ccd29f5e19f037a59e2ae268207a2077e72a6a83030f885a1e43',1,'BodyManager.h']]], + ['constraints_27',['Constraints',['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4aa5d083fbfc0611e061663c6b1a8ba698',1,'StateRecorder.h']]], + ['constrainttype_28',['ConstraintType',['../_body_manager_8h.html#af3216c8a98a28ccd29f5e19f037a59e2a69d368f8d2fdfe82b285196816193865',1,'BodyManager.h']]], + ['contactconstraintsfull_29',['ContactConstraintsFull',['../_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1ac8ef9103ce98948ba4d14f7318cf05e2',1,'EPhysicsUpdateError.h']]], + ['contacts_30',['Contacts',['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4a9aa698f602b1e5694855cee73a683488',1,'StateRecorder.h']]], + ['convex_31',['Convex',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a766cae017fab4bcc1d1e83fbb9af87c3',1,'Shape.h']]], + ['convexhull_32',['ConvexHull',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba3e1ee9920ed982b5da9becaf4b5463e5',1,'Shape.h']]], + ['createbatch_33',['CreateBatch',['../class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3eab6c90a015802ce8024f5e6ce5b5f87d1',1,'DebugRendererRecorder']]], + ['createbatchindexed_34',['CreateBatchIndexed',['../class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3ea6e08a23df5a6495af4cfb4d55f9d83c4',1,'DebugRendererRecorder']]], + ['creategeometry_35',['CreateGeometry',['../class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3ea5df7e8a3875ba02c58449385c4caa956',1,'DebugRendererRecorder']]], + ['cullbackface_36',['CullBackFace',['../class_debug_renderer.html#a54c5367f9b1f976cfe292dfa9ad2160aa770a11f4b59edd066dda0effd9752ce5',1,'DebugRenderer']]], + ['cullfrontface_37',['CullFrontFace',['../class_debug_renderer.html#a54c5367f9b1f976cfe292dfa9ad2160aac69988cb34d8fbd7f5678a95ac79e425',1,'DebugRenderer']]], + ['cylinder_38',['Cylinder',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba2ec2c2961c7ce5a114d969c1f562a563',1,'Shape.h']]] +]; diff --git a/search/enumvalues_3.js b/search/enumvalues_3.js new file mode 100644 index 000000000..3eb2f8037 --- /dev/null +++ b/search/enumvalues_3.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['declare_0',['Declare',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa2709046ed364cc54b91f908e85e512ed',1,'SerializableAttribute.h']]], + ['decorated_1',['Decorated',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a37c71f1e0f41cdad32aa3d4add9f2f86',1,'Shape.h']]], + ['default_2',['Default',['../class_convex_shape.html#a4cd6e2f87f30d108faf1f119dd73a06ba7a1920d61156abc05a60135aefe8bc67',1,'ConvexShape']]], + ['degenerate_3',['Degenerate',['../class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa24c813faee6d26cc144bec89a984824d',1,'ConvexHullBuilder']]], + ['determinecollisionplanes_4',['DetermineCollisionPlanes',['../class_soft_body_update_context.html#aeef08cf407990a9950c06a5418bd11e5a6985815cf22d36349d3183058c186205',1,'SoftBodyUpdateContext']]], + ['didwork_5',['DidWork',['../class_soft_body_motion_properties.html#a0f968ca89a547af5c8978c966e327682a8474fcf555e5d4cfd9ac45e7f2d6396e',1,'SoftBodyMotionProperties']]], + ['dihedral_6',['Dihedral',['../class_soft_body_shared_settings.html#a38d5a75fdb0d962975fbf2c01b15ba32a15aa29eb5f33d765183c9512f11f6643',1,'SoftBodySharedSettings']]], + ['discrete_7',['Discrete',['../_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3aa4984667940802dedc139aa7a430a6553',1,'MotionQuality.h']]], + ['distance_8',['distance',['../class_soft_body_shared_settings.html#a38d5a75fdb0d962975fbf2c01b15ba32a0aa6f4210bf373c95eda00232e93cd98',1,'SoftBodySharedSettings::Distance'],['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da0aa6f4210bf373c95eda00232e93cd98',1,'Distance: Constraint.h']]], + ['done_9',['done',['../class_soft_body_motion_properties.html#a0f968ca89a547af5c8978c966e327682af92965e2c8a7afb3c1b9a5c09a263636',1,'SoftBodyMotionProperties::Done'],['../class_soft_body_update_context.html#aeef08cf407990a9950c06a5418bd11e5af92965e2c8a7afb3c1b9a5c09a263636',1,'SoftBodyUpdateContext::Done']]], + ['dontactivate_10',['DontActivate',['../_e_activation_8h.html#a4a0a592959c9a1beb4221e8908fce4a6ac332d31032ba5ee48cf9a0dd42916743',1,'EActivation.h']]], + ['dynamic_11',['Dynamic',['../_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a971fd8cc345d8bd9f92e9f7d88fdf20c',1,'MotionType.h']]] +]; diff --git a/search/enumvalues_4.js b/search/enumvalues_4.js new file mode 100644 index 000000000..f835eba24 --- /dev/null +++ b/search/enumvalues_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['endframe_0',['EndFrame',['../class_debug_renderer_recorder.html#ab209b97db9eb9c3d5ee0735f7e1b4b3ea6c1645a468ccfce0975fc95587b97adf',1,'DebugRendererRecorder']]], + ['euclideandistance_1',['EuclideanDistance',['../class_soft_body_shared_settings.html#a288bafac0b3882214b806d7483e84419a5ab2b5492eebb9fffe14c94278372bff',1,'SoftBodySharedSettings']]], + ['excludeconvexradius_2',['ExcludeConvexRadius',['../class_convex_shape.html#a4cd6e2f87f30d108faf1f119dd73a06bafc1094532d8eef9e23613fe6846685c1',1,'ConvexShape']]] +]; diff --git a/search/enumvalues_5.js b/search/enumvalues_5.js new file mode 100644 index 000000000..272cbf786 --- /dev/null +++ b/search/enumvalues_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['fixed_0',['Fixed',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da4457d440870ad6d42bab9082d9bf9b61',1,'Constraint.h']]], + ['free_1',['Free',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51bab24ce0cd392a5b0b8dedc66c25213594',1,'PathConstraint.h']]], + ['frequencyanddamping_2',['FrequencyAndDamping',['../_spring_settings_8h.html#ac805e5e93f24003512d2ca7e0d71512da52630869b4ed10261d514c91e9c9c018',1,'SpringSettings.h']]], + ['fullyconstrained_3',['FullyConstrained',['../_path_constraint_8h.html#ad9f01f2f5231cdacf562f04aefbba51ba22d4f54f5a2001373cac7b8d8f246f11',1,'PathConstraint.h']]] +]; diff --git a/search/enumvalues_6.js b/search/enumvalues_6.js new file mode 100644 index 000000000..fda5e17fa --- /dev/null +++ b/search/enumvalues_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['gear_0',['Gear',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2dafb845762a66c26782f477febab5344dc',1,'Constraint.h']]], + ['geodesicdistance_1',['GeodesicDistance',['../class_soft_body_shared_settings.html#a288bafac0b3882214b806d7483e84419a57d05fb9844ead3595f0162bdbe65ce2',1,'SoftBodySharedSettings']]], + ['global_2',['Global',['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4a4cc6684df7b4a92b1dec6fce3264fac8',1,'StateRecorder.h']]] +]; diff --git a/search/enumvalues_7.js b/search/enumvalues_7.js new file mode 100644 index 000000000..83f87c482 --- /dev/null +++ b/search/enumvalues_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['heightfield_0',['heightfield',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a9a7e8772035f8412fc62cd830d0ba944',1,'HeightField: Shape.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba9a7e8772035f8412fc62cd830d0ba944',1,'HeightField: Shape.h']]], + ['hinge_1',['Hinge',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da18205404fe6507d42b3b2d25aaf62f21',1,'Constraint.h']]] +]; diff --git a/search/enumvalues_8.js b/search/enumvalues_8.js new file mode 100644 index 000000000..e15098d48 --- /dev/null +++ b/search/enumvalues_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['ignorebackfaces_0',['IgnoreBackFaces',['../_back_face_mode_8h.html#a3f6892e7ae9fb32f745f39d0fb911d70af6243a236f136f9c790a0d9cfd71c408',1,'BackFaceMode.h']]], + ['inair_1',['InAir',['../class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77eaee4e669a07b061d70b9b79dfed9cb5e7',1,'CharacterBase']]], + ['includeconvexradius_2',['IncludeConvexRadius',['../class_convex_shape.html#a4cd6e2f87f30d108faf1f119dd73a06badc738ebd4ba89322ae44c2d1ec8cda9f',1,'ConvexShape']]], + ['indeterminate_3',['Indeterminate',['../class_e_p_a_penetration_depth.html#aab59ecfbbefc06c5ac96f9cdc24252d0aa2d00c353d1f9a5f07852650030dbd53',1,'EPAPenetrationDepth']]], + ['instance_4',['Instance',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aad9a17c1c9e8ef6866e4dbeef41c741b2',1,'SerializableAttribute.h']]], + ['instancecolor_5',['InstanceColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2a99ee1c53265abeecfe720f4bc3fc44a6',1,'BodyManager']]], + ['invalid_6',['Invalid',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa4bbb8f967da6d1a610596d7257179c2b',1,'SerializableAttribute.h']]], + ['islandcolor_7',['IslandColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2a3396ca60625ec56b88b34019e16d5121',1,'BodyManager']]] +]; diff --git a/search/enumvalues_9.js b/search/enumvalues_9.js new file mode 100644 index 000000000..487bb0b98 --- /dev/null +++ b/search/enumvalues_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jph_5fdeclare_5fprimitive_0',['JPH_DECLARE_PRIMITIVE',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa988ddd4859f990b5618fb95f0dbfdaf6',1,'SerializableAttribute.h']]] +]; diff --git a/search/enumvalues_a.js b/search/enumvalues_a.js new file mode 100644 index 000000000..a21c37963 --- /dev/null +++ b/search/enumvalues_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kinematic_0',['Kinematic',['../_motion_type_8h.html#a328245ddbb758681fad3c44c9d488fd8a40c78b58b86002ee38fad2d3c9dd787e',1,'MotionType.h']]] +]; diff --git a/search/enumvalues_b.js b/search/enumvalues_b.js new file mode 100644 index 000000000..76af8e1bc --- /dev/null +++ b/search/enumvalues_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['left_0',['Left',['../_vehicle_track_8h.html#a8008ce273c0da3c40bc613d9495818d2a945d5e233cf7d6240f6b783b36a374ff',1,'VehicleTrack.h']]], + ['linearcast_1',['LinearCast',['../_motion_quality_8h.html#af43db3453103c2e62526f54dd8542d3aa38f63d197afcc4a4965d98f9401c36e0',1,'MotionQuality.h']]], + ['localtobodycom_2',['LocalToBodyCOM',['../_constraint_8h.html#a5951578637c20f8aad819c13ad09b1bea337c8a797ceff07104efbfcdea102759',1,'Constraint.h']]] +]; diff --git a/search/enumvalues_c.js b/search/enumvalues_c.js new file mode 100644 index 000000000..36992a20c --- /dev/null +++ b/search/enumvalues_c.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['manifoldcachefull_0',['ManifoldCacheFull',['../_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1af70fe751732841aff62ebf25b54b16c0',1,'EPhysicsUpdateError.h']]], + ['manual_1',['Manual',['../_vehicle_transmission_8h.html#ad3e125d6d786c09fddfa10be390f851dae1ba155a9f2e8c3be94020eef32a0301',1,'VehicleTransmission.h']]], + ['massandinertiaprovided_2',['MassAndInertiaProvided',['../_body_creation_settings_8h.html#a758835911f67742d0ad74841f6bdbe38a851f1413e004fb968effbb7c8e8d5965',1,'BodyCreationSettings.h']]], + ['materialcolor_3',['MaterialColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2ae4a9ebce3bde9cd56c2cccdf58d392a0',1,'BodyManager']]], + ['maxverticesreached_4',['maxverticesreached',['../class_convex_hull_builder.html#aa49a23c340decb519ae98cfa2a9e469aa7cc57ee56f4f29991173f4efa7a469e9',1,'ConvexHullBuilder::MaxVerticesReached'],['../class_convex_hull_builder2_d.html#a249cc4fd8288bd1cf447d3d820e9dcd0a7cc57ee56f4f29991173f4efa7a469e9',1,'ConvexHullBuilder2D::MaxVerticesReached']]], + ['mesh_5',['mesh',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a710fdb6adb881b408116ef95335e1961',1,'Mesh: Shape.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba710fdb6adb881b408116ef95335e1961',1,'Mesh: Shape.h']]], + ['motiontypecolor_6',['MotionTypeColor',['../class_body_manager.html#ae1f52f80ea3133d1b767f007f83350e2ac415a727aec99b44707c3555b360c85b',1,'BodyManager']]], + ['mutablecompound_7',['MutableCompound',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba7cfb218c3d7c5b405065bbe36510734c',1,'Shape.h']]] +]; diff --git a/search/enumvalues_d.js b/search/enumvalues_d.js new file mode 100644 index 000000000..14844067e --- /dev/null +++ b/search/enumvalues_d.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['nofaces_0',['NoFaces',['../_collect_faces_mode_8h.html#a43f9b52c7b53fe169fd83842e75935b6af92940cc2936d4efee54451acd04e6b8',1,'CollectFacesMode.h']]], + ['none_1',['none',['../class_soft_body_shared_settings.html#a38d5a75fdb0d962975fbf2c01b15ba32a6adf97f83acf6453d4a6a4b1070f3754',1,'SoftBodySharedSettings::None'],['../class_soft_body_shared_settings.html#a288bafac0b3882214b806d7483e84419a6adf97f83acf6453d4a6a4b1070f3754',1,'SoftBodySharedSettings::None'],['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913a6adf97f83acf6453d4a6a4b1070f3754',1,'None: AllowedDOFs.h'],['../_e_physics_update_error_8h.html#a1df3f14c5cc9f3be49f239b17470aaa1a6adf97f83acf6453d4a6a4b1070f3754',1,'None: EPhysicsUpdateError.h'],['../_state_recorder_8h.html#ac746db0a34def4dfd77ccd487ae36eb4a6adf97f83acf6453d4a6a4b1070f3754',1,'None: StateRecorder.h']]], + ['notcolliding_2',['NotColliding',['../class_e_p_a_penetration_depth.html#aab59ecfbbefc06c5ac96f9cdc24252d0a0497a652be066f6f966a97fa6c67c9c0',1,'EPAPenetrationDepth']]], + ['notsupported_3',['NotSupported',['../class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77ea9ed2d871602556951e39f3cebd08d6cb',1,'CharacterBase']]], + ['nowork_4',['NoWork',['../class_soft_body_motion_properties.html#a0f968ca89a547af5c8978c966e327682a4478afeb3b0fbabb01bc08e8ca92e691',1,'SoftBodyMotionProperties']]], + ['num_5',['num',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cdabf8fb5a75f02a8ed4c0d14cb3e9f41d2',1,'SixDOFConstraintSettings::Num'],['../_vehicle_track_8h.html#a8008ce273c0da3c40bc613d9495818d2ab3e3076d9b3c53bede50d468b647b109',1,'Num: VehicleTrack.h']]], + ['numtranslation_6',['NumTranslation',['../class_six_d_o_f_constraint_settings.html#ad5d80ef30a4a99d4876b244e55fc10cda8dce276a8243615282b784869418ba66',1,'SixDOFConstraintSettings']]] +]; diff --git a/search/enumvalues_e.js b/search/enumvalues_e.js new file mode 100644 index 000000000..5e2c0a22f --- /dev/null +++ b/search/enumvalues_e.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['object_0',['Object',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa497031794414a552435f90151ac3b54b',1,'SerializableAttribute.h']]], + ['off_1',['off',['../class_debug_renderer.html#aa24dcdedf792593f83eb1091d7e456b9ad15305d7a4e34e02489c74a5ef542f36',1,'DebugRenderer::Off'],['../class_debug_renderer.html#a54c5367f9b1f976cfe292dfa9ad2160aad15305d7a4e34e02489c74a5ef542f36',1,'DebugRenderer::Off'],['../_motor_settings_8h.html#a691a2387946263d993fa8e1c9488bc2bad15305d7a4e34e02489c74a5ef542f36',1,'Off: MotorSettings.h']]], + ['offset_5fbits_2',['OFFSET_BITS',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24a3983ab643fc0d11bebad14350cd906e0',1,'NodeCodecQuadTreeHalfFloat']]], + ['offset_5fmask_3',['OFFSET_MASK',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24a98a92ae3f6d8bd16ee274dfed86dcaa2',1,'NodeCodecQuadTreeHalfFloat']]], + ['offset_5fnon_5fsignificant_5fbits_4',['OFFSET_NON_SIGNIFICANT_BITS',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24aa9ff785da9e00767a0b75c453653e1bf',1,'NodeCodecQuadTreeHalfFloat']]], + ['offset_5fnon_5fsignificant_5fmask_5',['OFFSET_NON_SIGNIFICANT_MASK',['../class_node_codec_quad_tree_half_float.html#ad5f38f690477649954508735e66e8f24ab451c34f42d704469b6a7a77af4c5d01',1,'NodeCodecQuadTreeHalfFloat']]], + ['offset_5fto_5fuserdata_5fbits_6',['OFFSET_TO_USERDATA_BITS',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7a6008b679de593dd3bada966a054cfdf5',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['offset_5fto_5fuserdata_5fmask_7',['OFFSET_TO_USERDATA_MASK',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7a686b6aec5fcb6a420e1fab1ad4a156cd',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['offset_5fto_5fvertices_5fbits_8',['OFFSET_TO_VERTICES_BITS',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7af4813a4d11b084820b1822b849a4417c',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['offset_5fto_5fvertices_5fmask_9',['OFFSET_TO_VERTICES_MASK',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags.html#aba0ce878fb1bfe022ccba4c9c724a2f7a8ee2cdd53a4c605008ef9cfaecf00211',1,'TriangleCodecIndexed8BitPackSOA4Flags']]], + ['offsetcenterofmass_10',['OffsetCenterOfMass',['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551bab56bddbe57bc36e5e91ea827e57d3adc',1,'Shape.h']]], + ['on_11',['On',['../class_debug_renderer.html#aa24dcdedf792593f83eb1091d7e456b9a521c36a31c2762741cf0f8890cbe05e3',1,'DebugRenderer']]], + ['onground_12',['OnGround',['../class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77ea2b9beed57034f5727573d7ded76cf777',1,'CharacterBase']]], + ['onsteepground_13',['OnSteepGround',['../class_character_base.html#a82dfb80348cdbf3a08f97d54b225f77ea50f80f8d96a6d65de73ba8a6b9910761',1,'CharacterBase']]] +]; diff --git a/search/enumvalues_f.js b/search/enumvalues_f.js new file mode 100644 index 000000000..b443b0219 --- /dev/null +++ b/search/enumvalues_f.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['path_0',['Path',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2daac70412e939d72a9234cdebb1af5867b',1,'Constraint.h']]], + ['plane_1',['plane',['../_shape_8h.html#ad64a1c665070a3100e456e54073554a5a0d3adee051531c15b3509b4d4d75ce7b',1,'Plane: Shape.h'],['../_shape_8h.html#aa332e0529e75b83aad91881c8d32551ba0d3adee051531c15b3509b4d4d75ce7b',1,'Plane: Shape.h']]], + ['plane2d_2',['Plane2D',['../_allowed_d_o_fs_8h.html#a47bc570d6b4f457c417078ebab07d913ab4428ecae408554a5383fb2c4a24ffa6',1,'AllowedDOFs.h']]], + ['point_3',['Point',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2da2a3cd5946cfd317eb99c3d32e35e2d4c',1,'Constraint.h']]], + ['pointer_4',['Pointer',['../_serializable_attribute_8h.html#a1c4e088742cfa4700da8d88eacf5974aa61cf8510205077b6f5491d38cd44c0f7',1,'SerializableAttribute.h']]], + ['position_5',['Position',['../_motor_settings_8h.html#a691a2387946263d993fa8e1c9488bc2ba52f5e0bc3859bc5f5e25130b6c7e8881',1,'MotorSettings.h']]], + ['pulley_6',['Pulley',['../_constraint_8h.html#adfc8350888df0c3a51714b7f372baf2daba41903d01ed39b1b98768512c8e65f5',1,'Constraint.h']]], + ['pyramid_7',['Pyramid',['../_swing_twist_constraint_part_8h.html#add9e89df628b33308461ef46e1b796b6a5e5b0d93bab61584149905b5e5dc71a0',1,'SwingTwistConstraintPart.h']]] +]; diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 000000000..d7f878d89 --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['aabbtreebuilder_2ecpp_0',['AABBTreeBuilder.cpp',['../_a_a_b_b_tree_builder_8cpp.html',1,'']]], + ['aabbtreebuilder_2eh_1',['AABBTreeBuilder.h',['../_a_a_b_b_tree_builder_8h.html',1,'']]], + ['aabbtreetobuffer_2eh_2',['AABBTreeToBuffer.h',['../_a_a_b_b_tree_to_buffer_8h.html',1,'']]], + ['aabox_2eh_3',['AABox.h',['../_a_a_box_8h.html',1,'']]], + ['aabox4_2eh_4',['AABox4.h',['../_a_a_box4_8h.html',1,'']]], + ['aaboxcast_2eh_5',['AABoxCast.h',['../_a_a_box_cast_8h.html',1,'']]], + ['activeedgemode_2eh_6',['ActiveEdgeMode.h',['../_active_edge_mode_8h.html',1,'']]], + ['activeedges_2eh_7',['ActiveEdges.h',['../_active_edges_8h.html',1,'']]], + ['alloweddofs_2eh_8',['AllowedDOFs.h',['../_allowed_d_o_fs_8h.html',1,'']]], + ['angleconstraintpart_2eh_9',['AngleConstraintPart.h',['../_angle_constraint_part_8h.html',1,'']]], + ['apichanges_2emd_10',['APIChanges.md',['../_a_p_i_changes_8md.html',1,'']]], + ['architecture_2emd_11',['Architecture.md',['../_architecture_8md.html',1,'']]], + ['armneon_2eh_12',['ARMNeon.h',['../_a_r_m_neon_8h.html',1,'']]], + ['array_2eh_13',['Array.h',['../_array_8h.html',1,'']]], + ['atomics_2eh_14',['Atomics.h',['../_atomics_8h.html',1,'']]], + ['axisconstraintpart_2eh_15',['AxisConstraintPart.h',['../_axis_constraint_part_8h.html',1,'']]] +]; diff --git a/search/files_1.js b/search/files_1.js new file mode 100644 index 000000000..ce8b01062 --- /dev/null +++ b/search/files_1.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['backfacemode_2eh_0',['BackFaceMode.h',['../_back_face_mode_8h.html',1,'']]], + ['body_2ecpp_1',['Body.cpp',['../_body_8cpp.html',1,'']]], + ['body_2eh_2',['Body.h',['../_body_8h.html',1,'']]], + ['body_2einl_3',['Body.inl',['../_body_8inl.html',1,'']]], + ['bodyaccess_2ecpp_4',['BodyAccess.cpp',['../_body_access_8cpp.html',1,'']]], + ['bodyaccess_2eh_5',['BodyAccess.h',['../_body_access_8h.html',1,'']]], + ['bodyactivationlistener_2eh_6',['BodyActivationListener.h',['../_body_activation_listener_8h.html',1,'']]], + ['bodycreationsettings_2ecpp_7',['BodyCreationSettings.cpp',['../_body_creation_settings_8cpp.html',1,'']]], + ['bodycreationsettings_2eh_8',['BodyCreationSettings.h',['../_body_creation_settings_8h.html',1,'']]], + ['bodyfilter_2eh_9',['BodyFilter.h',['../_body_filter_8h.html',1,'']]], + ['bodyid_2eh_10',['BodyID.h',['../_body_i_d_8h.html',1,'']]], + ['bodyinterface_2ecpp_11',['BodyInterface.cpp',['../_body_interface_8cpp.html',1,'']]], + ['bodyinterface_2eh_12',['BodyInterface.h',['../_body_interface_8h.html',1,'']]], + ['bodylock_2eh_13',['BodyLock.h',['../_body_lock_8h.html',1,'']]], + ['bodylockinterface_2eh_14',['BodyLockInterface.h',['../_body_lock_interface_8h.html',1,'']]], + ['bodylockmulti_2eh_15',['BodyLockMulti.h',['../_body_lock_multi_8h.html',1,'']]], + ['bodymanager_2ecpp_16',['BodyManager.cpp',['../_body_manager_8cpp.html',1,'']]], + ['bodymanager_2eh_17',['BodyManager.h',['../_body_manager_8h.html',1,'']]], + ['bodypair_2eh_18',['BodyPair.h',['../_body_pair_8h.html',1,'']]], + ['bodytype_2eh_19',['BodyType.h',['../_body_type_8h.html',1,'']]], + ['boxshape_2ecpp_20',['BoxShape.cpp',['../_box_shape_8cpp.html',1,'']]], + ['boxshape_2eh_21',['BoxShape.h',['../_box_shape_8h.html',1,'']]], + ['broadphase_2ecpp_22',['BroadPhase.cpp',['../_broad_phase_8cpp.html',1,'']]], + ['broadphase_2eh_23',['BroadPhase.h',['../_broad_phase_8h.html',1,'']]], + ['broadphasebruteforce_2ecpp_24',['BroadPhaseBruteForce.cpp',['../_broad_phase_brute_force_8cpp.html',1,'']]], + ['broadphasebruteforce_2eh_25',['BroadPhaseBruteForce.h',['../_broad_phase_brute_force_8h.html',1,'']]], + ['broadphaselayer_2eh_26',['BroadPhaseLayer.h',['../_broad_phase_layer_8h.html',1,'']]], + ['broadphaselayerinterfacemask_2eh_27',['BroadPhaseLayerInterfaceMask.h',['../_broad_phase_layer_interface_mask_8h.html',1,'']]], + ['broadphaselayerinterfacetable_2eh_28',['BroadPhaseLayerInterfaceTable.h',['../_broad_phase_layer_interface_table_8h.html',1,'']]], + ['broadphasequadtree_2ecpp_29',['BroadPhaseQuadTree.cpp',['../_broad_phase_quad_tree_8cpp.html',1,'']]], + ['broadphasequadtree_2eh_30',['BroadPhaseQuadTree.h',['../_broad_phase_quad_tree_8h.html',1,'']]], + ['broadphasequery_2eh_31',['BroadPhaseQuery.h',['../_broad_phase_query_8h.html',1,'']]], + ['bytebuffer_2eh_32',['ByteBuffer.h',['../_byte_buffer_8h.html',1,'']]] +]; diff --git a/search/files_10.js b/search/files_10.js new file mode 100644 index 000000000..7fb314cfb --- /dev/null +++ b/search/files_10.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['rackandpinionconstraint_2ecpp_0',['RackAndPinionConstraint.cpp',['../_rack_and_pinion_constraint_8cpp.html',1,'']]], + ['rackandpinionconstraint_2eh_1',['RackAndPinionConstraint.h',['../_rack_and_pinion_constraint_8h.html',1,'']]], + ['rackandpinionconstraintpart_2eh_2',['RackAndPinionConstraintPart.h',['../_rack_and_pinion_constraint_part_8h.html',1,'']]], + ['ragdoll_2ecpp_3',['Ragdoll.cpp',['../_ragdoll_8cpp.html',1,'']]], + ['ragdoll_2eh_4',['Ragdoll.h',['../_ragdoll_8h.html',1,'']]], + ['rayaabox_2eh_5',['RayAABox.h',['../_ray_a_a_box_8h.html',1,'']]], + ['rayaabox8_2eh_6',['RayAABox8.h',['../_ray_a_a_box8_8h.html',1,'']]], + ['raycapsule_2eh_7',['RayCapsule.h',['../_ray_capsule_8h.html',1,'']]], + ['raycast_2eh_8',['RayCast.h',['../_ray_cast_8h.html',1,'']]], + ['raycylinder_2eh_9',['RayCylinder.h',['../_ray_cylinder_8h.html',1,'']]], + ['raysphere_2eh_10',['RaySphere.h',['../_ray_sphere_8h.html',1,'']]], + ['raytriangle_2eh_11',['RayTriangle.h',['../_ray_triangle_8h.html',1,'']]], + ['raytriangle8_2eh_12',['RayTriangle8.h',['../_ray_triangle8_8h.html',1,'']]], + ['readme_2emd_13',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]], + ['real_2eh_14',['Real.h',['../_real_8h.html',1,'']]], + ['reference_2eh_15',['Reference.h',['../_reference_8h.html',1,'']]], + ['registertypes_2ecpp_16',['RegisterTypes.cpp',['../_register_types_8cpp.html',1,'']]], + ['registertypes_2eh_17',['RegisterTypes.h',['../_register_types_8h.html',1,'']]], + ['releasenotes_2emd_18',['ReleaseNotes.md',['../_release_notes_8md.html',1,'']]], + ['result_2eh_19',['Result.h',['../_result_8h.html',1,'']]], + ['rotatedtranslatedshape_2ecpp_20',['RotatedTranslatedShape.cpp',['../_rotated_translated_shape_8cpp.html',1,'']]], + ['rotatedtranslatedshape_2eh_21',['RotatedTranslatedShape.h',['../_rotated_translated_shape_8h.html',1,'']]], + ['rotationeulerconstraintpart_2eh_22',['RotationEulerConstraintPart.h',['../_rotation_euler_constraint_part_8h.html',1,'']]], + ['rotationquatconstraintpart_2eh_23',['RotationQuatConstraintPart.h',['../_rotation_quat_constraint_part_8h.html',1,'']]], + ['rtti_2ecpp_24',['RTTI.cpp',['../_r_t_t_i_8cpp.html',1,'']]], + ['rtti_2eh_25',['RTTI.h',['../_r_t_t_i_8h.html',1,'']]] +]; diff --git a/search/files_11.js b/search/files_11.js new file mode 100644 index 000000000..3bae97e7c --- /dev/null +++ b/search/files_11.js @@ -0,0 +1,71 @@ +var searchData= +[ + ['samples_2emd_0',['Samples.md',['../_samples_8md.html',1,'']]], + ['scaledshape_2ecpp_1',['ScaledShape.cpp',['../_scaled_shape_8cpp.html',1,'']]], + ['scaledshape_2eh_2',['ScaledShape.h',['../_scaled_shape_8h.html',1,'']]], + ['scalehelpers_2eh_3',['ScaleHelpers.h',['../_scale_helpers_8h.html',1,'']]], + ['scopeexit_2eh_4',['ScopeExit.h',['../_scope_exit_8h.html',1,'']]], + ['semaphore_2ecpp_5',['Semaphore.cpp',['../_semaphore_8cpp.html',1,'']]], + ['semaphore_2eh_6',['Semaphore.h',['../_semaphore_8h.html',1,'']]], + ['serializableattribute_2eh_7',['SerializableAttribute.h',['../_serializable_attribute_8h.html',1,'']]], + ['serializableattributeenum_2eh_8',['SerializableAttributeEnum.h',['../_serializable_attribute_enum_8h.html',1,'']]], + ['serializableattributetyped_2eh_9',['SerializableAttributeTyped.h',['../_serializable_attribute_typed_8h.html',1,'']]], + ['serializableobject_2ecpp_10',['SerializableObject.cpp',['../_serializable_object_8cpp.html',1,'']]], + ['serializableobject_2eh_11',['SerializableObject.h',['../_serializable_object_8h.html',1,'']]], + ['shape_2ecpp_12',['Shape.cpp',['../_shape_8cpp.html',1,'']]], + ['shape_2eh_13',['Shape.h',['../_shape_8h.html',1,'']]], + ['shapecast_2eh_14',['ShapeCast.h',['../_shape_cast_8h.html',1,'']]], + ['shapefilter_2eh_15',['ShapeFilter.h',['../_shape_filter_8h.html',1,'']]], + ['sixdofconstraint_2ecpp_16',['SixDOFConstraint.cpp',['../_six_d_o_f_constraint_8cpp.html',1,'']]], + ['sixdofconstraint_2eh_17',['SixDOFConstraint.h',['../_six_d_o_f_constraint_8h.html',1,'']]], + ['skeletalanimation_2ecpp_18',['SkeletalAnimation.cpp',['../_skeletal_animation_8cpp.html',1,'']]], + ['skeletalanimation_2eh_19',['SkeletalAnimation.h',['../_skeletal_animation_8h.html',1,'']]], + ['skeleton_2ecpp_20',['Skeleton.cpp',['../_skeleton_8cpp.html',1,'']]], + ['skeleton_2eh_21',['Skeleton.h',['../_skeleton_8h.html',1,'']]], + ['skeletonmapper_2ecpp_22',['SkeletonMapper.cpp',['../_skeleton_mapper_8cpp.html',1,'']]], + ['skeletonmapper_2eh_23',['SkeletonMapper.h',['../_skeleton_mapper_8h.html',1,'']]], + ['skeletonpose_2ecpp_24',['SkeletonPose.cpp',['../_skeleton_pose_8cpp.html',1,'']]], + ['skeletonpose_2eh_25',['SkeletonPose.h',['../_skeleton_pose_8h.html',1,'']]], + ['sliderconstraint_2ecpp_26',['SliderConstraint.cpp',['../_slider_constraint_8cpp.html',1,'']]], + ['sliderconstraint_2eh_27',['SliderConstraint.h',['../_slider_constraint_8h.html',1,'']]], + ['softbodycontactlistener_2eh_28',['SoftBodyContactListener.h',['../_soft_body_contact_listener_8h.html',1,'']]], + ['softbodycreationsettings_2ecpp_29',['SoftBodyCreationSettings.cpp',['../_soft_body_creation_settings_8cpp.html',1,'']]], + ['softbodycreationsettings_2eh_30',['SoftBodyCreationSettings.h',['../_soft_body_creation_settings_8h.html',1,'']]], + ['softbodymanifold_2eh_31',['SoftBodyManifold.h',['../_soft_body_manifold_8h.html',1,'']]], + ['softbodymotionproperties_2ecpp_32',['SoftBodyMotionProperties.cpp',['../_soft_body_motion_properties_8cpp.html',1,'']]], + ['softbodymotionproperties_2eh_33',['SoftBodyMotionProperties.h',['../_soft_body_motion_properties_8h.html',1,'']]], + ['softbodyshape_2ecpp_34',['SoftBodyShape.cpp',['../_soft_body_shape_8cpp.html',1,'']]], + ['softbodyshape_2eh_35',['SoftBodyShape.h',['../_soft_body_shape_8h.html',1,'']]], + ['softbodysharedsettings_2ecpp_36',['SoftBodySharedSettings.cpp',['../_soft_body_shared_settings_8cpp.html',1,'']]], + ['softbodysharedsettings_2eh_37',['SoftBodySharedSettings.h',['../_soft_body_shared_settings_8h.html',1,'']]], + ['softbodyupdatecontext_2eh_38',['SoftBodyUpdateContext.h',['../_soft_body_update_context_8h.html',1,'']]], + ['softbodyvertex_2eh_39',['SoftBodyVertex.h',['../_soft_body_vertex_8h.html',1,'']]], + ['sortreverseandstore_2eh_40',['SortReverseAndStore.h',['../_sort_reverse_and_store_8h.html',1,'']]], + ['sphere_2eh_41',['Sphere.h',['../_sphere_8h.html',1,'']]], + ['sphereshape_2ecpp_42',['SphereShape.cpp',['../_sphere_shape_8cpp.html',1,'']]], + ['sphereshape_2eh_43',['SphereShape.h',['../_sphere_shape_8h.html',1,'']]], + ['springpart_2eh_44',['SpringPart.h',['../_spring_part_8h.html',1,'']]], + ['springsettings_2ecpp_45',['SpringSettings.cpp',['../_spring_settings_8cpp.html',1,'']]], + ['springsettings_2eh_46',['SpringSettings.h',['../_spring_settings_8h.html',1,'']]], + ['staterecorder_2eh_47',['StateRecorder.h',['../_state_recorder_8h.html',1,'']]], + ['staterecorderimpl_2ecpp_48',['StateRecorderImpl.cpp',['../_state_recorder_impl_8cpp.html',1,'']]], + ['staterecorderimpl_2eh_49',['StateRecorderImpl.h',['../_state_recorder_impl_8h.html',1,'']]], + ['staticarray_2eh_50',['StaticArray.h',['../_static_array_8h.html',1,'']]], + ['staticcompoundshape_2ecpp_51',['StaticCompoundShape.cpp',['../_static_compound_shape_8cpp.html',1,'']]], + ['staticcompoundshape_2eh_52',['StaticCompoundShape.h',['../_static_compound_shape_8h.html',1,'']]], + ['stlalignedallocator_2eh_53',['STLAlignedAllocator.h',['../_s_t_l_aligned_allocator_8h.html',1,'']]], + ['stlallocator_2eh_54',['STLAllocator.h',['../_s_t_l_allocator_8h.html',1,'']]], + ['stltempallocator_2eh_55',['STLTempAllocator.h',['../_s_t_l_temp_allocator_8h.html',1,'']]], + ['streamin_2eh_56',['StreamIn.h',['../_stream_in_8h.html',1,'']]], + ['streamout_2eh_57',['StreamOut.h',['../_stream_out_8h.html',1,'']]], + ['streamutils_2eh_58',['StreamUtils.h',['../_stream_utils_8h.html',1,'']]], + ['streamwrapper_2eh_59',['StreamWrapper.h',['../_stream_wrapper_8h.html',1,'']]], + ['stringtools_2ecpp_60',['StringTools.cpp',['../_string_tools_8cpp.html',1,'']]], + ['stringtools_2eh_61',['StringTools.h',['../_string_tools_8h.html',1,'']]], + ['subshapeid_2eh_62',['SubShapeID.h',['../_sub_shape_i_d_8h.html',1,'']]], + ['subshapeidpair_2eh_63',['SubShapeIDPair.h',['../_sub_shape_i_d_pair_8h.html',1,'']]], + ['swingtwistconstraint_2ecpp_64',['SwingTwistConstraint.cpp',['../_swing_twist_constraint_8cpp.html',1,'']]], + ['swingtwistconstraint_2eh_65',['SwingTwistConstraint.h',['../_swing_twist_constraint_8h.html',1,'']]], + ['swingtwistconstraintpart_2eh_66',['SwingTwistConstraintPart.h',['../_swing_twist_constraint_part_8h.html',1,'']]], + ['swizzle_2eh_67',['Swizzle.h',['../_swizzle_8h.html',1,'']]] +]; diff --git a/search/files_12.js b/search/files_12.js new file mode 100644 index 000000000..381cef0bb --- /dev/null +++ b/search/files_12.js @@ -0,0 +1,40 @@ +var searchData= +[ + ['taperedcapsuleshape_2ecpp_0',['TaperedCapsuleShape.cpp',['../_tapered_capsule_shape_8cpp.html',1,'']]], + ['taperedcapsuleshape_2eh_1',['TaperedCapsuleShape.h',['../_tapered_capsule_shape_8h.html',1,'']]], + ['taperedcylindershape_2ecpp_2',['TaperedCylinderShape.cpp',['../_tapered_cylinder_shape_8cpp.html',1,'']]], + ['taperedcylindershape_2eh_3',['TaperedCylinderShape.h',['../_tapered_cylinder_shape_8h.html',1,'']]], + ['tempallocator_2eh_4',['TempAllocator.h',['../_temp_allocator_8h.html',1,'']]], + ['tickcounter_2ecpp_5',['TickCounter.cpp',['../_tick_counter_8cpp.html',1,'']]], + ['tickcounter_2eh_6',['TickCounter.h',['../_tick_counter_8h.html',1,'']]], + ['trackedvehiclecontroller_2ecpp_7',['TrackedVehicleController.cpp',['../_tracked_vehicle_controller_8cpp.html',1,'']]], + ['trackedvehiclecontroller_2eh_8',['TrackedVehicleController.h',['../_tracked_vehicle_controller_8h.html',1,'']]], + ['transformedshape_2ecpp_9',['TransformedShape.cpp',['../_transformed_shape_8cpp.html',1,'']]], + ['transformedshape_2eh_10',['TransformedShape.h',['../_transformed_shape_8h.html',1,'']]], + ['triangle_2eh_11',['Triangle.h',['../_triangle_8h.html',1,'']]], + ['trianglecodecindexed8bitpacksoa4flags_2eh_12',['TriangleCodecIndexed8BitPackSOA4Flags.h',['../_triangle_codec_indexed8_bit_pack_s_o_a4_flags_8h.html',1,'']]], + ['trianglegrouper_2eh_13',['TriangleGrouper.h',['../_triangle_grouper_8h.html',1,'']]], + ['trianglegrouperclosestcentroid_2ecpp_14',['TriangleGrouperClosestCentroid.cpp',['../_triangle_grouper_closest_centroid_8cpp.html',1,'']]], + ['trianglegrouperclosestcentroid_2eh_15',['TriangleGrouperClosestCentroid.h',['../_triangle_grouper_closest_centroid_8h.html',1,'']]], + ['trianglegroupermorton_2ecpp_16',['TriangleGrouperMorton.cpp',['../_triangle_grouper_morton_8cpp.html',1,'']]], + ['trianglegroupermorton_2eh_17',['TriangleGrouperMorton.h',['../_triangle_grouper_morton_8h.html',1,'']]], + ['triangleshape_2ecpp_18',['TriangleShape.cpp',['../_triangle_shape_8cpp.html',1,'']]], + ['triangleshape_2eh_19',['TriangleShape.h',['../_triangle_shape_8h.html',1,'']]], + ['trianglesplitter_2ecpp_20',['TriangleSplitter.cpp',['../_triangle_splitter_8cpp.html',1,'']]], + ['trianglesplitter_2eh_21',['TriangleSplitter.h',['../_triangle_splitter_8h.html',1,'']]], + ['trianglesplitterbinning_2ecpp_22',['TriangleSplitterBinning.cpp',['../_triangle_splitter_binning_8cpp.html',1,'']]], + ['trianglesplitterbinning_2eh_23',['TriangleSplitterBinning.h',['../_triangle_splitter_binning_8h.html',1,'']]], + ['trianglesplitterfixedleafsize_2ecpp_24',['TriangleSplitterFixedLeafSize.cpp',['../_triangle_splitter_fixed_leaf_size_8cpp.html',1,'']]], + ['trianglesplitterfixedleafsize_2eh_25',['TriangleSplitterFixedLeafSize.h',['../_triangle_splitter_fixed_leaf_size_8h.html',1,'']]], + ['trianglesplitterlongestaxis_2ecpp_26',['TriangleSplitterLongestAxis.cpp',['../_triangle_splitter_longest_axis_8cpp.html',1,'']]], + ['trianglesplitterlongestaxis_2eh_27',['TriangleSplitterLongestAxis.h',['../_triangle_splitter_longest_axis_8h.html',1,'']]], + ['trianglesplittermean_2ecpp_28',['TriangleSplitterMean.cpp',['../_triangle_splitter_mean_8cpp.html',1,'']]], + ['trianglesplittermean_2eh_29',['TriangleSplitterMean.h',['../_triangle_splitter_mean_8h.html',1,'']]], + ['trianglesplittermorton_2ecpp_30',['TriangleSplitterMorton.cpp',['../_triangle_splitter_morton_8cpp.html',1,'']]], + ['trianglesplittermorton_2eh_31',['TriangleSplitterMorton.h',['../_triangle_splitter_morton_8h.html',1,'']]], + ['trigonometry_2eh_32',['Trigonometry.h',['../_trigonometry_8h.html',1,'']]], + ['twobodyconstraint_2ecpp_33',['TwoBodyConstraint.cpp',['../_two_body_constraint_8cpp.html',1,'']]], + ['twobodyconstraint_2eh_34',['TwoBodyConstraint.h',['../_two_body_constraint_8h.html',1,'']]], + ['typedeclarations_2ecpp_35',['TypeDeclarations.cpp',['../_type_declarations_8cpp.html',1,'']]], + ['typedeclarations_2eh_36',['TypeDeclarations.h',['../_type_declarations_8h.html',1,'']]] +]; diff --git a/search/files_13.js b/search/files_13.js new file mode 100644 index 000000000..072fb9b49 --- /dev/null +++ b/search/files_13.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['unorderedmap_2eh_0',['UnorderedMap.h',['../_unordered_map_8h.html',1,'']]], + ['unorderedset_2eh_1',['UnorderedSet.h',['../_unordered_set_8h.html',1,'']]], + ['uvec4_2eh_2',['UVec4.h',['../_u_vec4_8h.html',1,'']]], + ['uvec4_2einl_3',['UVec4.inl',['../_u_vec4_8inl.html',1,'']]], + ['uvec8_2eh_4',['UVec8.h',['../_u_vec8_8h.html',1,'']]], + ['uvec8_2einl_5',['UVec8.inl',['../_u_vec8_8inl.html',1,'']]] +]; diff --git a/search/files_14.js b/search/files_14.js new file mode 100644 index 000000000..600595c5d --- /dev/null +++ b/search/files_14.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['vec3_2ecpp_0',['Vec3.cpp',['../_vec3_8cpp.html',1,'']]], + ['vec3_2eh_1',['Vec3.h',['../_vec3_8h.html',1,'']]], + ['vec3_2einl_2',['Vec3.inl',['../_vec3_8inl.html',1,'']]], + ['vec4_2eh_3',['Vec4.h',['../_vec4_8h.html',1,'']]], + ['vec4_2einl_4',['Vec4.inl',['../_vec4_8inl.html',1,'']]], + ['vec8_2eh_5',['Vec8.h',['../_vec8_8h.html',1,'']]], + ['vec8_2einl_6',['Vec8.inl',['../_vec8_8inl.html',1,'']]], + ['vector_2eh_7',['Vector.h',['../_vector_8h.html',1,'']]], + ['vehicleantirollbar_2ecpp_8',['VehicleAntiRollBar.cpp',['../_vehicle_anti_roll_bar_8cpp.html',1,'']]], + ['vehicleantirollbar_2eh_9',['VehicleAntiRollBar.h',['../_vehicle_anti_roll_bar_8h.html',1,'']]], + ['vehiclecollisiontester_2ecpp_10',['VehicleCollisionTester.cpp',['../_vehicle_collision_tester_8cpp.html',1,'']]], + ['vehiclecollisiontester_2eh_11',['VehicleCollisionTester.h',['../_vehicle_collision_tester_8h.html',1,'']]], + ['vehicleconstraint_2ecpp_12',['VehicleConstraint.cpp',['../_vehicle_constraint_8cpp.html',1,'']]], + ['vehicleconstraint_2eh_13',['VehicleConstraint.h',['../_vehicle_constraint_8h.html',1,'']]], + ['vehiclecontroller_2ecpp_14',['VehicleController.cpp',['../_vehicle_controller_8cpp.html',1,'']]], + ['vehiclecontroller_2eh_15',['VehicleController.h',['../_vehicle_controller_8h.html',1,'']]], + ['vehicledifferential_2ecpp_16',['VehicleDifferential.cpp',['../_vehicle_differential_8cpp.html',1,'']]], + ['vehicledifferential_2eh_17',['VehicleDifferential.h',['../_vehicle_differential_8h.html',1,'']]], + ['vehicleengine_2ecpp_18',['VehicleEngine.cpp',['../_vehicle_engine_8cpp.html',1,'']]], + ['vehicleengine_2eh_19',['VehicleEngine.h',['../_vehicle_engine_8h.html',1,'']]], + ['vehicletrack_2ecpp_20',['VehicleTrack.cpp',['../_vehicle_track_8cpp.html',1,'']]], + ['vehicletrack_2eh_21',['VehicleTrack.h',['../_vehicle_track_8h.html',1,'']]], + ['vehicletransmission_2ecpp_22',['VehicleTransmission.cpp',['../_vehicle_transmission_8cpp.html',1,'']]], + ['vehicletransmission_2eh_23',['VehicleTransmission.h',['../_vehicle_transmission_8h.html',1,'']]] +]; diff --git a/search/files_15.js b/search/files_15.js new file mode 100644 index 000000000..2cea1104b --- /dev/null +++ b/search/files_15.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['wheel_2ecpp_0',['Wheel.cpp',['../_wheel_8cpp.html',1,'']]], + ['wheel_2eh_1',['Wheel.h',['../_wheel_8h.html',1,'']]], + ['wheeledvehiclecontroller_2ecpp_2',['WheeledVehicleController.cpp',['../_wheeled_vehicle_controller_8cpp.html',1,'']]], + ['wheeledvehiclecontroller_2eh_3',['WheeledVehicleController.h',['../_wheeled_vehicle_controller_8h.html',1,'']]] +]; diff --git a/search/files_2.js b/search/files_2.js new file mode 100644 index 000000000..d0c63abd7 --- /dev/null +++ b/search/files_2.js @@ -0,0 +1,60 @@ +var searchData= +[ + ['calculatesolversteps_2eh_0',['CalculateSolverSteps.h',['../_calculate_solver_steps_8h.html',1,'']]], + ['capsuleshape_2ecpp_1',['CapsuleShape.cpp',['../_capsule_shape_8cpp.html',1,'']]], + ['capsuleshape_2eh_2',['CapsuleShape.h',['../_capsule_shape_8h.html',1,'']]], + ['castconvexvstriangles_2ecpp_3',['CastConvexVsTriangles.cpp',['../_cast_convex_vs_triangles_8cpp.html',1,'']]], + ['castconvexvstriangles_2eh_4',['CastConvexVsTriangles.h',['../_cast_convex_vs_triangles_8h.html',1,'']]], + ['castresult_2eh_5',['CastResult.h',['../_cast_result_8h.html',1,'']]], + ['castspherevstriangles_2ecpp_6',['CastSphereVsTriangles.cpp',['../_cast_sphere_vs_triangles_8cpp.html',1,'']]], + ['castspherevstriangles_2eh_7',['CastSphereVsTriangles.h',['../_cast_sphere_vs_triangles_8h.html',1,'']]], + ['character_2ecpp_8',['Character.cpp',['../_character_8cpp.html',1,'']]], + ['character_2eh_9',['Character.h',['../_character_8h.html',1,'']]], + ['characterbase_2ecpp_10',['CharacterBase.cpp',['../_character_base_8cpp.html',1,'']]], + ['characterbase_2eh_11',['CharacterBase.h',['../_character_base_8h.html',1,'']]], + ['charactervirtual_2ecpp_12',['CharacterVirtual.cpp',['../_character_virtual_8cpp.html',1,'']]], + ['charactervirtual_2eh_13',['CharacterVirtual.h',['../_character_virtual_8h.html',1,'']]], + ['clippoly_2eh_14',['ClipPoly.h',['../_clip_poly_8h.html',1,'']]], + ['closestpoint_2eh_15',['ClosestPoint.h',['../_closest_point_8h.html',1,'']]], + ['collectfacesmode_2eh_16',['CollectFacesMode.h',['../_collect_faces_mode_8h.html',1,'']]], + ['collideconvexvstriangles_2ecpp_17',['CollideConvexVsTriangles.cpp',['../_collide_convex_vs_triangles_8cpp.html',1,'']]], + ['collideconvexvstriangles_2eh_18',['CollideConvexVsTriangles.h',['../_collide_convex_vs_triangles_8h.html',1,'']]], + ['collidepointresult_2eh_19',['CollidePointResult.h',['../_collide_point_result_8h.html',1,'']]], + ['collideshape_2eh_20',['CollideShape.h',['../_collide_shape_8h.html',1,'']]], + ['collidesoftbodyverticesvstriangles_2eh_21',['CollideSoftBodyVerticesVsTriangles.h',['../_collide_soft_body_vertices_vs_triangles_8h.html',1,'']]], + ['collidespherevstriangles_2ecpp_22',['CollideSphereVsTriangles.cpp',['../_collide_sphere_vs_triangles_8cpp.html',1,'']]], + ['collidespherevstriangles_2eh_23',['CollideSphereVsTriangles.h',['../_collide_sphere_vs_triangles_8h.html',1,'']]], + ['collisioncollector_2eh_24',['CollisionCollector.h',['../_collision_collector_8h.html',1,'']]], + ['collisioncollectorimpl_2eh_25',['CollisionCollectorImpl.h',['../_collision_collector_impl_8h.html',1,'']]], + ['collisiondispatch_2ecpp_26',['CollisionDispatch.cpp',['../_collision_dispatch_8cpp.html',1,'']]], + ['collisiondispatch_2eh_27',['CollisionDispatch.h',['../_collision_dispatch_8h.html',1,'']]], + ['collisiongroup_2ecpp_28',['CollisionGroup.cpp',['../_collision_group_8cpp.html',1,'']]], + ['collisiongroup_2eh_29',['CollisionGroup.h',['../_collision_group_8h.html',1,'']]], + ['color_2ecpp_30',['Color.cpp',['../_color_8cpp.html',1,'']]], + ['color_2eh_31',['Color.h',['../_color_8h.html',1,'']]], + ['compoundshape_2ecpp_32',['CompoundShape.cpp',['../_compound_shape_8cpp.html',1,'']]], + ['compoundshape_2eh_33',['CompoundShape.h',['../_compound_shape_8h.html',1,'']]], + ['compoundshapevisitors_2eh_34',['CompoundShapeVisitors.h',['../_compound_shape_visitors_8h.html',1,'']]], + ['coneconstraint_2ecpp_35',['ConeConstraint.cpp',['../_cone_constraint_8cpp.html',1,'']]], + ['coneconstraint_2eh_36',['ConeConstraint.h',['../_cone_constraint_8h.html',1,'']]], + ['configurationstring_2eh_37',['ConfigurationString.h',['../_configuration_string_8h.html',1,'']]], + ['constraint_2ecpp_38',['Constraint.cpp',['../_constraint_8cpp.html',1,'']]], + ['constraint_2eh_39',['Constraint.h',['../_constraint_8h.html',1,'']]], + ['constraintmanager_2ecpp_40',['ConstraintManager.cpp',['../_constraint_manager_8cpp.html',1,'']]], + ['constraintmanager_2eh_41',['ConstraintManager.h',['../_constraint_manager_8h.html',1,'']]], + ['contactconstraintmanager_2ecpp_42',['ContactConstraintManager.cpp',['../_contact_constraint_manager_8cpp.html',1,'']]], + ['contactconstraintmanager_2eh_43',['ContactConstraintManager.h',['../_contact_constraint_manager_8h.html',1,'']]], + ['contactlistener_2eh_44',['ContactListener.h',['../_contact_listener_8h.html',1,'']]], + ['convexhullbuilder_2ecpp_45',['ConvexHullBuilder.cpp',['../_convex_hull_builder_8cpp.html',1,'']]], + ['convexhullbuilder_2eh_46',['ConvexHullBuilder.h',['../_convex_hull_builder_8h.html',1,'']]], + ['convexhullbuilder2d_2ecpp_47',['ConvexHullBuilder2D.cpp',['../_convex_hull_builder2_d_8cpp.html',1,'']]], + ['convexhullbuilder2d_2eh_48',['ConvexHullBuilder2D.h',['../_convex_hull_builder2_d_8h.html',1,'']]], + ['convexhullshape_2ecpp_49',['ConvexHullShape.cpp',['../_convex_hull_shape_8cpp.html',1,'']]], + ['convexhullshape_2eh_50',['ConvexHullShape.h',['../_convex_hull_shape_8h.html',1,'']]], + ['convexshape_2ecpp_51',['ConvexShape.cpp',['../_convex_shape_8cpp.html',1,'']]], + ['convexshape_2eh_52',['ConvexShape.h',['../_convex_shape_8h.html',1,'']]], + ['convexsupport_2eh_53',['ConvexSupport.h',['../_convex_support_8h.html',1,'']]], + ['core_2eh_54',['Core.h',['../_core_8h.html',1,'']]], + ['cylindershape_2ecpp_55',['CylinderShape.cpp',['../_cylinder_shape_8cpp.html',1,'']]], + ['cylindershape_2eh_56',['CylinderShape.h',['../_cylinder_shape_8h.html',1,'']]] +]; diff --git a/search/files_3.js b/search/files_3.js new file mode 100644 index 000000000..a6fb62be4 --- /dev/null +++ b/search/files_3.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['debugrenderer_2ecpp_0',['DebugRenderer.cpp',['../_debug_renderer_8cpp.html',1,'']]], + ['debugrenderer_2eh_1',['DebugRenderer.h',['../_debug_renderer_8h.html',1,'']]], + ['debugrendererplayback_2ecpp_2',['DebugRendererPlayback.cpp',['../_debug_renderer_playback_8cpp.html',1,'']]], + ['debugrendererplayback_2eh_3',['DebugRendererPlayback.h',['../_debug_renderer_playback_8h.html',1,'']]], + ['debugrendererrecorder_2ecpp_4',['DebugRendererRecorder.cpp',['../_debug_renderer_recorder_8cpp.html',1,'']]], + ['debugrendererrecorder_2eh_5',['DebugRendererRecorder.h',['../_debug_renderer_recorder_8h.html',1,'']]], + ['debugrenderersimple_2ecpp_6',['DebugRendererSimple.cpp',['../_debug_renderer_simple_8cpp.html',1,'']]], + ['debugrenderersimple_2eh_7',['DebugRendererSimple.h',['../_debug_renderer_simple_8h.html',1,'']]], + ['decoratedshape_2ecpp_8',['DecoratedShape.cpp',['../_decorated_shape_8cpp.html',1,'']]], + ['decoratedshape_2eh_9',['DecoratedShape.h',['../_decorated_shape_8h.html',1,'']]], + ['determinismlog_2ecpp_10',['DeterminismLog.cpp',['../_determinism_log_8cpp.html',1,'']]], + ['determinismlog_2eh_11',['DeterminismLog.h',['../_determinism_log_8h.html',1,'']]], + ['distanceconstraint_2ecpp_12',['DistanceConstraint.cpp',['../_distance_constraint_8cpp.html',1,'']]], + ['distanceconstraint_2eh_13',['DistanceConstraint.h',['../_distance_constraint_8h.html',1,'']]], + ['dmat44_2eh_14',['DMat44.h',['../_d_mat44_8h.html',1,'']]], + ['dmat44_2einl_15',['DMat44.inl',['../_d_mat44_8inl.html',1,'']]], + ['double3_2eh_16',['Double3.h',['../_double3_8h.html',1,'']]], + ['dualaxisconstraintpart_2eh_17',['DualAxisConstraintPart.h',['../_dual_axis_constraint_part_8h.html',1,'']]], + ['dvec3_2eh_18',['DVec3.h',['../_d_vec3_8h.html',1,'']]], + ['dvec3_2einl_19',['DVec3.inl',['../_d_vec3_8inl.html',1,'']]], + ['dynmatrix_2eh_20',['DynMatrix.h',['../_dyn_matrix_8h.html',1,'']]] +]; diff --git a/search/files_4.js b/search/files_4.js new file mode 100644 index 000000000..fb60561ce --- /dev/null +++ b/search/files_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['eactivation_2eh_0',['EActivation.h',['../_e_activation_8h.html',1,'']]], + ['eigenvaluesymmetric_2eh_1',['EigenValueSymmetric.h',['../_eigen_value_symmetric_8h.html',1,'']]], + ['ellipse_2eh_2',['Ellipse.h',['../_ellipse_8h.html',1,'']]], + ['epaconvexhullbuilder_2eh_3',['EPAConvexHullBuilder.h',['../_e_p_a_convex_hull_builder_8h.html',1,'']]], + ['epapenetrationdepth_2eh_4',['EPAPenetrationDepth.h',['../_e_p_a_penetration_depth_8h.html',1,'']]], + ['ephysicsupdateerror_2eh_5',['EPhysicsUpdateError.h',['../_e_physics_update_error_8h.html',1,'']]], + ['estimatecollisionresponse_2ecpp_6',['EstimateCollisionResponse.cpp',['../_estimate_collision_response_8cpp.html',1,'']]], + ['estimatecollisionresponse_2eh_7',['EstimateCollisionResponse.h',['../_estimate_collision_response_8h.html',1,'']]] +]; diff --git a/search/files_5.js b/search/files_5.js new file mode 100644 index 000000000..67f721a09 --- /dev/null +++ b/search/files_5.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['factory_2ecpp_0',['Factory.cpp',['../_factory_8cpp.html',1,'']]], + ['factory_2eh_1',['Factory.h',['../_factory_8h.html',1,'']]], + ['findroot_2eh_2',['FindRoot.h',['../_find_root_8h.html',1,'']]], + ['fixedconstraint_2ecpp_3',['FixedConstraint.cpp',['../_fixed_constraint_8cpp.html',1,'']]], + ['fixedconstraint_2eh_4',['FixedConstraint.h',['../_fixed_constraint_8h.html',1,'']]], + ['fixedsizefreelist_2eh_5',['FixedSizeFreeList.h',['../_fixed_size_free_list_8h.html',1,'']]], + ['fixedsizefreelist_2einl_6',['FixedSizeFreeList.inl',['../_fixed_size_free_list_8inl.html',1,'']]], + ['float2_2eh_7',['Float2.h',['../_float2_8h.html',1,'']]], + ['float3_2eh_8',['Float3.h',['../_float3_8h.html',1,'']]], + ['float4_2eh_9',['Float4.h',['../_float4_8h.html',1,'']]], + ['fpcontrolword_2eh_10',['FPControlWord.h',['../_f_p_control_word_8h.html',1,'']]], + ['fpexception_2eh_11',['FPException.h',['../_f_p_exception_8h.html',1,'']]], + ['fpflushdenormals_2eh_12',['FPFlushDenormals.h',['../_f_p_flush_denormals_8h.html',1,'']]] +]; diff --git a/search/files_6.js b/search/files_6.js new file mode 100644 index 000000000..ad10b9a9a --- /dev/null +++ b/search/files_6.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['gaussianelimination_2eh_0',['GaussianElimination.h',['../_gaussian_elimination_8h.html',1,'']]], + ['gearconstraint_2ecpp_1',['GearConstraint.cpp',['../_gear_constraint_8cpp.html',1,'']]], + ['gearconstraint_2eh_2',['GearConstraint.h',['../_gear_constraint_8h.html',1,'']]], + ['gearconstraintpart_2eh_3',['GearConstraintPart.h',['../_gear_constraint_part_8h.html',1,'']]], + ['getprimitivetypeoftype_2eh_4',['GetPrimitiveTypeOfType.h',['../_get_primitive_type_of_type_8h.html',1,'']]], + ['gettrianglescontext_2eh_5',['GetTrianglesContext.h',['../_get_triangles_context_8h.html',1,'']]], + ['gjkclosestpoint_2eh_6',['GJKClosestPoint.h',['../_g_j_k_closest_point_8h.html',1,'']]], + ['groupfilter_2ecpp_7',['GroupFilter.cpp',['../_group_filter_8cpp.html',1,'']]], + ['groupfilter_2eh_8',['GroupFilter.h',['../_group_filter_8h.html',1,'']]], + ['groupfiltertable_2ecpp_9',['GroupFilterTable.cpp',['../_group_filter_table_8cpp.html',1,'']]], + ['groupfiltertable_2eh_10',['GroupFilterTable.h',['../_group_filter_table_8h.html',1,'']]] +]; diff --git a/search/files_7.js b/search/files_7.js new file mode 100644 index 000000000..f409c3bb6 --- /dev/null +++ b/search/files_7.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['halffloat_2eh_0',['HalfFloat.h',['../_half_float_8h.html',1,'']]], + ['hashcombine_2eh_1',['HashCombine.h',['../_hash_combine_8h.html',1,'']]], + ['heightfieldshape_2ecpp_2',['HeightFieldShape.cpp',['../_height_field_shape_8cpp.html',1,'']]], + ['heightfieldshape_2eh_3',['HeightFieldShape.h',['../_height_field_shape_8h.html',1,'']]], + ['hingeconstraint_2ecpp_4',['HingeConstraint.cpp',['../_hinge_constraint_8cpp.html',1,'']]], + ['hingeconstraint_2eh_5',['HingeConstraint.h',['../_hinge_constraint_8h.html',1,'']]], + ['hingerotationconstraintpart_2eh_6',['HingeRotationConstraintPart.h',['../_hinge_rotation_constraint_part_8h.html',1,'']]] +]; diff --git a/search/files_8.js b/search/files_8.js new file mode 100644 index 000000000..e80cbd5af --- /dev/null +++ b/search/files_8.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['independentaxisconstraintpart_2eh_0',['IndependentAxisConstraintPart.h',['../_independent_axis_constraint_part_8h.html',1,'']]], + ['indexedtriangle_2eh_1',['IndexedTriangle.h',['../_indexed_triangle_8h.html',1,'']]], + ['indexify_2ecpp_2',['Indexify.cpp',['../_indexify_8cpp.html',1,'']]], + ['indexify_2eh_3',['Indexify.h',['../_indexify_8h.html',1,'']]], + ['insertionsort_2eh_4',['InsertionSort.h',['../_insertion_sort_8h.html',1,'']]], + ['internaledgeremovingcollector_2eh_5',['InternalEdgeRemovingCollector.h',['../_internal_edge_removing_collector_8h.html',1,'']]], + ['islandbuilder_2ecpp_6',['IslandBuilder.cpp',['../_island_builder_8cpp.html',1,'']]], + ['islandbuilder_2eh_7',['IslandBuilder.h',['../_island_builder_8h.html',1,'']]], + ['issuereporting_2ecpp_8',['IssueReporting.cpp',['../_issue_reporting_8cpp.html',1,'']]], + ['issuereporting_2eh_9',['IssueReporting.h',['../_issue_reporting_8h.html',1,'']]] +]; diff --git a/search/files_9.js b/search/files_9.js new file mode 100644 index 000000000..71e25b7ff --- /dev/null +++ b/search/files_9.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['jobsystem_2eh_0',['JobSystem.h',['../_job_system_8h.html',1,'']]], + ['jobsystem_2einl_1',['JobSystem.inl',['../_job_system_8inl.html',1,'']]], + ['jobsystemsinglethreaded_2ecpp_2',['JobSystemSingleThreaded.cpp',['../_job_system_single_threaded_8cpp.html',1,'']]], + ['jobsystemsinglethreaded_2eh_3',['JobSystemSingleThreaded.h',['../_job_system_single_threaded_8h.html',1,'']]], + ['jobsystemthreadpool_2ecpp_4',['JobSystemThreadPool.cpp',['../_job_system_thread_pool_8cpp.html',1,'']]], + ['jobsystemthreadpool_2eh_5',['JobSystemThreadPool.h',['../_job_system_thread_pool_8h.html',1,'']]], + ['jobsystemwithbarrier_2ecpp_6',['JobSystemWithBarrier.cpp',['../_job_system_with_barrier_8cpp.html',1,'']]], + ['jobsystemwithbarrier_2eh_7',['JobSystemWithBarrier.h',['../_job_system_with_barrier_8h.html',1,'']]], + ['jolt_2eh_8',['Jolt.h',['../_jolt_8h.html',1,'']]] +]; diff --git a/search/files_a.js b/search/files_a.js new file mode 100644 index 000000000..f92283bd7 --- /dev/null +++ b/search/files_a.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['largeislandsplitter_2ecpp_0',['LargeIslandSplitter.cpp',['../_large_island_splitter_8cpp.html',1,'']]], + ['largeislandsplitter_2eh_1',['LargeIslandSplitter.h',['../_large_island_splitter_8h.html',1,'']]], + ['linearcurve_2ecpp_2',['LinearCurve.cpp',['../_linear_curve_8cpp.html',1,'']]], + ['linearcurve_2eh_3',['LinearCurve.h',['../_linear_curve_8h.html',1,'']]], + ['lockfreehashmap_2eh_4',['LockFreeHashMap.h',['../_lock_free_hash_map_8h.html',1,'']]], + ['lockfreehashmap_2einl_5',['LockFreeHashMap.inl',['../_lock_free_hash_map_8inl.html',1,'']]] +]; diff --git a/search/files_b.js b/search/files_b.js new file mode 100644 index 000000000..9a3cee031 --- /dev/null +++ b/search/files_b.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['manifoldbetweentwofaces_2ecpp_0',['ManifoldBetweenTwoFaces.cpp',['../_manifold_between_two_faces_8cpp.html',1,'']]], + ['manifoldbetweentwofaces_2eh_1',['ManifoldBetweenTwoFaces.h',['../_manifold_between_two_faces_8h.html',1,'']]], + ['massproperties_2ecpp_2',['MassProperties.cpp',['../_mass_properties_8cpp.html',1,'']]], + ['massproperties_2eh_3',['MassProperties.h',['../_mass_properties_8h.html',1,'']]], + ['mat44_2eh_4',['Mat44.h',['../_mat44_8h.html',1,'']]], + ['mat44_2einl_5',['Mat44.inl',['../_mat44_8inl.html',1,'']]], + ['math_2eh_6',['Math.h',['../_math_8h.html',1,'']]], + ['mathtypes_2eh_7',['MathTypes.h',['../_math_types_8h.html',1,'']]], + ['matrix_2eh_8',['Matrix.h',['../_matrix_8h.html',1,'']]], + ['memory_2ecpp_9',['Memory.cpp',['../_memory_8cpp.html',1,'']]], + ['memory_2eh_10',['Memory.h',['../_memory_8h.html',1,'']]], + ['meshshape_2ecpp_11',['MeshShape.cpp',['../_mesh_shape_8cpp.html',1,'']]], + ['meshshape_2eh_12',['MeshShape.h',['../_mesh_shape_8h.html',1,'']]], + ['mortoncode_2eh_13',['MortonCode.h',['../_morton_code_8h.html',1,'']]], + ['motionproperties_2ecpp_14',['MotionProperties.cpp',['../_motion_properties_8cpp.html',1,'']]], + ['motionproperties_2eh_15',['MotionProperties.h',['../_motion_properties_8h.html',1,'']]], + ['motionproperties_2einl_16',['MotionProperties.inl',['../_motion_properties_8inl.html',1,'']]], + ['motionquality_2eh_17',['MotionQuality.h',['../_motion_quality_8h.html',1,'']]], + ['motiontype_2eh_18',['MotionType.h',['../_motion_type_8h.html',1,'']]], + ['motorcyclecontroller_2ecpp_19',['MotorcycleController.cpp',['../_motorcycle_controller_8cpp.html',1,'']]], + ['motorcyclecontroller_2eh_20',['MotorcycleController.h',['../_motorcycle_controller_8h.html',1,'']]], + ['motorsettings_2ecpp_21',['MotorSettings.cpp',['../_motor_settings_8cpp.html',1,'']]], + ['motorsettings_2eh_22',['MotorSettings.h',['../_motor_settings_8h.html',1,'']]], + ['mutablecompoundshape_2ecpp_23',['MutableCompoundShape.cpp',['../_mutable_compound_shape_8cpp.html',1,'']]], + ['mutablecompoundshape_2eh_24',['MutableCompoundShape.h',['../_mutable_compound_shape_8h.html',1,'']]], + ['mutex_2eh_25',['Mutex.h',['../_mutex_8h.html',1,'']]], + ['mutexarray_2eh_26',['MutexArray.h',['../_mutex_array_8h.html',1,'']]] +]; diff --git a/search/files_c.js b/search/files_c.js new file mode 100644 index 000000000..e7c6140ba --- /dev/null +++ b/search/files_c.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['narrowphasequery_2ecpp_0',['NarrowPhaseQuery.cpp',['../_narrow_phase_query_8cpp.html',1,'']]], + ['narrowphasequery_2eh_1',['NarrowPhaseQuery.h',['../_narrow_phase_query_8h.html',1,'']]], + ['narrowphasestats_2ecpp_2',['NarrowPhaseStats.cpp',['../_narrow_phase_stats_8cpp.html',1,'']]], + ['narrowphasestats_2eh_3',['NarrowPhaseStats.h',['../_narrow_phase_stats_8h.html',1,'']]], + ['nodecodecquadtreehalffloat_2eh_4',['NodeCodecQuadTreeHalfFloat.h',['../_node_codec_quad_tree_half_float_8h.html',1,'']]], + ['noncopyable_2eh_5',['NonCopyable.h',['../_non_copyable_8h.html',1,'']]] +]; diff --git a/search/files_d.js b/search/files_d.js new file mode 100644 index 000000000..711722741 --- /dev/null +++ b/search/files_d.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['objectlayer_2eh_0',['ObjectLayer.h',['../_object_layer_8h.html',1,'']]], + ['objectlayerpairfiltermask_2eh_1',['ObjectLayerPairFilterMask.h',['../_object_layer_pair_filter_mask_8h.html',1,'']]], + ['objectlayerpairfiltertable_2eh_2',['ObjectLayerPairFilterTable.h',['../_object_layer_pair_filter_table_8h.html',1,'']]], + ['objectstream_2ecpp_3',['ObjectStream.cpp',['../_object_stream_8cpp.html',1,'']]], + ['objectstream_2eh_4',['ObjectStream.h',['../_object_stream_8h.html',1,'']]], + ['objectstreambinaryin_2ecpp_5',['ObjectStreamBinaryIn.cpp',['../_object_stream_binary_in_8cpp.html',1,'']]], + ['objectstreambinaryin_2eh_6',['ObjectStreamBinaryIn.h',['../_object_stream_binary_in_8h.html',1,'']]], + ['objectstreambinaryout_2ecpp_7',['ObjectStreamBinaryOut.cpp',['../_object_stream_binary_out_8cpp.html',1,'']]], + ['objectstreambinaryout_2eh_8',['ObjectStreamBinaryOut.h',['../_object_stream_binary_out_8h.html',1,'']]], + ['objectstreamin_2ecpp_9',['ObjectStreamIn.cpp',['../_object_stream_in_8cpp.html',1,'']]], + ['objectstreamin_2eh_10',['ObjectStreamIn.h',['../_object_stream_in_8h.html',1,'']]], + ['objectstreamout_2ecpp_11',['ObjectStreamOut.cpp',['../_object_stream_out_8cpp.html',1,'']]], + ['objectstreamout_2eh_12',['ObjectStreamOut.h',['../_object_stream_out_8h.html',1,'']]], + ['objectstreamtextin_2ecpp_13',['ObjectStreamTextIn.cpp',['../_object_stream_text_in_8cpp.html',1,'']]], + ['objectstreamtextin_2eh_14',['ObjectStreamTextIn.h',['../_object_stream_text_in_8h.html',1,'']]], + ['objectstreamtextout_2ecpp_15',['ObjectStreamTextOut.cpp',['../_object_stream_text_out_8cpp.html',1,'']]], + ['objectstreamtextout_2eh_16',['ObjectStreamTextOut.h',['../_object_stream_text_out_8h.html',1,'']]], + ['objectstreamtypes_2eh_17',['ObjectStreamTypes.h',['../_object_stream_types_8h.html',1,'']]], + ['objectvsbroadphaselayerfiltermask_2eh_18',['ObjectVsBroadPhaseLayerFilterMask.h',['../_object_vs_broad_phase_layer_filter_mask_8h.html',1,'']]], + ['objectvsbroadphaselayerfiltertable_2eh_19',['ObjectVsBroadPhaseLayerFilterTable.h',['../_object_vs_broad_phase_layer_filter_table_8h.html',1,'']]], + ['offsetcenterofmassshape_2ecpp_20',['OffsetCenterOfMassShape.cpp',['../_offset_center_of_mass_shape_8cpp.html',1,'']]], + ['offsetcenterofmassshape_2eh_21',['OffsetCenterOfMassShape.h',['../_offset_center_of_mass_shape_8h.html',1,'']]], + ['orientedbox_2ecpp_22',['OrientedBox.cpp',['../_oriented_box_8cpp.html',1,'']]], + ['orientedbox_2eh_23',['OrientedBox.h',['../_oriented_box_8h.html',1,'']]] +]; diff --git a/search/files_e.js b/search/files_e.js new file mode 100644 index 000000000..426f4c6ed --- /dev/null +++ b/search/files_e.js @@ -0,0 +1,38 @@ +var searchData= +[ + ['pathconstraint_2ecpp_0',['PathConstraint.cpp',['../_path_constraint_8cpp.html',1,'']]], + ['pathconstraint_2eh_1',['PathConstraint.h',['../_path_constraint_8h.html',1,'']]], + ['pathconstraintpath_2ecpp_2',['PathConstraintPath.cpp',['../_path_constraint_path_8cpp.html',1,'']]], + ['pathconstraintpath_2eh_3',['PathConstraintPath.h',['../_path_constraint_path_8h.html',1,'']]], + ['pathconstraintpathhermite_2ecpp_4',['PathConstraintPathHermite.cpp',['../_path_constraint_path_hermite_8cpp.html',1,'']]], + ['pathconstraintpathhermite_2eh_5',['PathConstraintPathHermite.h',['../_path_constraint_path_hermite_8h.html',1,'']]], + ['performancetest_2emd_6',['PerformanceTest.md',['../_performance_test_8md.html',1,'']]], + ['physicslock_2ecpp_7',['PhysicsLock.cpp',['../_physics_lock_8cpp.html',1,'']]], + ['physicslock_2eh_8',['PhysicsLock.h',['../_physics_lock_8h.html',1,'']]], + ['physicsmaterial_2ecpp_9',['PhysicsMaterial.cpp',['../_physics_material_8cpp.html',1,'']]], + ['physicsmaterial_2eh_10',['PhysicsMaterial.h',['../_physics_material_8h.html',1,'']]], + ['physicsmaterialsimple_2ecpp_11',['PhysicsMaterialSimple.cpp',['../_physics_material_simple_8cpp.html',1,'']]], + ['physicsmaterialsimple_2eh_12',['PhysicsMaterialSimple.h',['../_physics_material_simple_8h.html',1,'']]], + ['physicsscene_2ecpp_13',['PhysicsScene.cpp',['../_physics_scene_8cpp.html',1,'']]], + ['physicsscene_2eh_14',['PhysicsScene.h',['../_physics_scene_8h.html',1,'']]], + ['physicssettings_2eh_15',['PhysicsSettings.h',['../_physics_settings_8h.html',1,'']]], + ['physicssteplistener_2eh_16',['PhysicsStepListener.h',['../_physics_step_listener_8h.html',1,'']]], + ['physicssystem_2ecpp_17',['PhysicsSystem.cpp',['../_physics_system_8cpp.html',1,'']]], + ['physicssystem_2eh_18',['PhysicsSystem.h',['../_physics_system_8h.html',1,'']]], + ['physicssystemupdate_2esvg_19',['PhysicsSystemUpdate.svg',['../_physics_system_update_8svg.html',1,'']]], + ['physicsupdatecontext_2ecpp_20',['PhysicsUpdateContext.cpp',['../_physics_update_context_8cpp.html',1,'']]], + ['physicsupdatecontext_2eh_21',['PhysicsUpdateContext.h',['../_physics_update_context_8h.html',1,'']]], + ['plane_2eh_22',['Plane.h',['../_plane_8h.html',1,'']]], + ['planeshape_2ecpp_23',['PlaneShape.cpp',['../_plane_shape_8cpp.html',1,'']]], + ['planeshape_2eh_24',['PlaneShape.h',['../_plane_shape_8h.html',1,'']]], + ['pointconstraint_2ecpp_25',['PointConstraint.cpp',['../_point_constraint_8cpp.html',1,'']]], + ['pointconstraint_2eh_26',['PointConstraint.h',['../_point_constraint_8h.html',1,'']]], + ['pointconstraintpart_2eh_27',['PointConstraintPart.h',['../_point_constraint_part_8h.html',1,'']]], + ['polyhedronsubmergedvolumecalculator_2eh_28',['PolyhedronSubmergedVolumeCalculator.h',['../_polyhedron_submerged_volume_calculator_8h.html',1,'']]], + ['profiler_2ecpp_29',['Profiler.cpp',['../_profiler_8cpp.html',1,'']]], + ['profiler_2eh_30',['Profiler.h',['../_profiler_8h.html',1,'']]], + ['profiler_2einl_31',['Profiler.inl',['../_profiler_8inl.html',1,'']]], + ['projectsusingjolt_2emd_32',['ProjectsUsingJolt.md',['../_projects_using_jolt_8md.html',1,'']]], + ['pulleyconstraint_2ecpp_33',['PulleyConstraint.cpp',['../_pulley_constraint_8cpp.html',1,'']]], + ['pulleyconstraint_2eh_34',['PulleyConstraint.h',['../_pulley_constraint_8h.html',1,'']]] +]; diff --git a/search/files_f.js b/search/files_f.js new file mode 100644 index 000000000..e887c7c6e --- /dev/null +++ b/search/files_f.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['quadtree_2ecpp_0',['QuadTree.cpp',['../_quad_tree_8cpp.html',1,'']]], + ['quadtree_2eh_1',['QuadTree.h',['../_quad_tree_8h.html',1,'']]], + ['quat_2eh_2',['Quat.h',['../_quat_8h.html',1,'']]], + ['quat_2einl_3',['Quat.inl',['../_quat_8inl.html',1,'']]], + ['quicksort_2eh_4',['QuickSort.h',['../_quick_sort_8h.html',1,'']]] +]; diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 000000000..eabec47af --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,94 @@ +var searchData= +[ + ['aabbtreebuilder_0',['AABBTreeBuilder',['../class_a_a_b_b_tree_builder.html#a3a44b40e58b23523baab7698ed9eb117',1,'AABBTreeBuilder']]], + ['aabox_1',['aabox',['../class_a_a_box.html#a0982651a7b0ed25cab78537cdeba982a',1,'AABox::AABox()'],['../class_a_a_box.html#a8431a72347bfdb1a77ae45dcbba9c35b',1,'AABox::AABox(Vec3Arg inMin, Vec3Arg inMax)'],['../class_a_a_box.html#ac70f850fdf8680f4fa8a3f7fdb60cfbd',1,'AABox::AABox(DVec3Arg inMin, DVec3Arg inMax)'],['../class_a_a_box.html#aa7799618a0616c960b4f912ceac17d19',1,'AABox::AABox(Vec3Arg inCenter, float inRadius)']]], + ['aabox4distancesqtopoint_2',['aabox4distancesqtopoint',['../_a_a_box4_8h.html#af96966fc2a109dea8d4a109e541bea80',1,'AABox4DistanceSqToPoint(Vec4Arg inPointX, Vec4Arg inPointY, Vec4Arg inPointZ, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ): AABox4.h'],['../_a_a_box4_8h.html#a6af0b6b352ebed5e3c0911b6fd716e65',1,'AABox4DistanceSqToPoint(Vec3 inPoint, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ): AABox4.h']]], + ['aabox4enlargewithextent_3',['AABox4EnlargeWithExtent',['../_a_a_box4_8h.html#afc6a0849cd38d215de0f02ee553de99f',1,'AABox4.h']]], + ['aabox4scale_4',['AABox4Scale',['../_a_a_box4_8h.html#afdbaad9921240fb3b210eab09cede242',1,'AABox4.h']]], + ['aabox4vsbox_5',['aabox4vsbox',['../_a_a_box4_8h.html#af230429f2bab61ca7328aa79a2a4da93',1,'AABox4VsBox(const OrientedBox &inBox, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, float inEpsilon=1.0e-6f): AABox4.h'],['../_a_a_box4_8h.html#a365fbed5e6017361416cd81c4fb3c175',1,'AABox4VsBox(Mat44Arg inOrientation, Vec3Arg inHalfExtents, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ, float inEpsilon=1.0e-6f): AABox4.h'],['../_a_a_box4_8h.html#a99b05cb64dcecc32ddc482050e45321c',1,'AABox4VsBox(const AABox &inBox1, Vec4Arg inBox2MinX, Vec4Arg inBox2MinY, Vec4Arg inBox2MinZ, Vec4Arg inBox2MaxX, Vec4Arg inBox2MaxY, Vec4Arg inBox2MaxZ): AABox4.h']]], + ['aabox4vspoint_6',['AABox4VsPoint',['../_a_a_box4_8h.html#a96c8ee8d10ad0b3971de242ea1217cb9',1,'AABox4.h']]], + ['aabox4vssphere_7',['aabox4vssphere',['../_a_a_box4_8h.html#a6f08a548d80cd6a9c6209f1f2db4fde2',1,'AABox4VsSphere(Vec3Arg inCenter, float inRadiusSq, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ): AABox4.h'],['../_a_a_box4_8h.html#a0a8ee1599da3fa8b3ea6dc868a6cba19',1,'AABox4VsSphere(Vec4Arg inCenterX, Vec4Arg inCenterY, Vec4Arg inCenterZ, Vec4Arg inRadiusSq, Vec4Arg inBoxMinX, Vec4Arg inBoxMinY, Vec4Arg inBoxMinZ, Vec4Arg inBoxMaxX, Vec4Arg inBoxMaxY, Vec4Arg inBoxMaxZ): AABox4.h']]], + ['abs_8',['abs',['../class_vec8.html#a606b5595b25bd34a37820541b9e14c3e',1,'Vec8::Abs()'],['../class_vec3.html#a60c863c1cdad322a1af54e77a4af8f02',1,'Vec3::Abs()'],['../class_vec4.html#a321bcfc691705ad313b11822c8b13332',1,'Vec4::Abs()'],['../class_d_vec3.html#a1df9be6cc25048acd0c184f60535189b',1,'DVec3::Abs()']]], + ['accumulatesleeptime_9',['AccumulateSleepTime',['../class_motion_properties.html#a1342087f5bae51bc6d46542ae29bca66',1,'MotionProperties']]], + ['acos_10',['acos',['../class_vec4.html#ae56c43bab7d034799def2a0cd588f971',1,'Vec4::ACos()'],['../_trigonometry_8h.html#a4d69678f84c03b333e32ca716998db39',1,'ACos(float inX): Trigonometry.h']]], + ['acosapproximate_11',['ACosApproximate',['../_trigonometry_8h.html#a1dec7e1e2e84f4362a0a65d390a51ee0',1,'Trigonometry.h']]], + ['acquire_12',['Acquire',['../class_semaphore.html#a81c1cbdab78310c8b13e7052572e599d',1,'Semaphore']]], + ['activate_13',['activate',['../class_ragdoll.html#a584d5a41fd6118589b420ed96272827b',1,'Ragdoll::Activate()'],['../class_character.html#a66a9abe442b15eaf3aab219facb5dbb4',1,'Character::Activate()']]], + ['activatebodies_14',['activatebodies',['../class_body_manager.html#aecdc4718d0c9ccf33f9eaf2a42c6ab79',1,'BodyManager::ActivateBodies()'],['../class_body_interface.html#aa9ac89ba91cff574fb148dfe155c272e',1,'BodyInterface::ActivateBodies(const BodyID *inBodyIDs, int inNumber)']]], + ['activatebodiesinaabox_15',['ActivateBodiesInAABox',['../class_body_interface.html#a0397e4e0c43023b4c55d171d944dc430',1,'BodyInterface']]], + ['activatebody_16',['ActivateBody',['../class_body_interface.html#ab6ccbc72a1df04bd16c5dc5dee7bdf30',1,'BodyInterface']]], + ['activateconstraint_17',['ActivateConstraint',['../class_body_interface.html#a7b4ab713c9ed9369f43930510791562b',1,'BodyInterface']]], + ['add_18',['add',['../class_character_vs_character_collision_simple.html#a1c9a2607b50bd68ced9c7262d01cad67',1,'CharacterVsCharacterCollisionSimple::Add()'],['../class_constraint_manager.html#ae323401f2d9039dd330b070808c494f7',1,'ConstraintManager::Add()']]], + ['addangularimpulse_19',['addangularimpulse',['../class_body.html#aa797042eec783ed27333f529b66221a3',1,'Body::AddAngularImpulse()'],['../class_body_interface.html#a6d26f5967fd267e154b014a3c3af9c2e',1,'BodyInterface::AddAngularImpulse()']]], + ['addangularvelocitystep_20',['AddAngularVelocityStep',['../class_motion_properties.html#afb12aa823a651145b46b271570a7af59',1,'MotionProperties']]], + ['addattribute_21',['AddAttribute',['../class_r_t_t_i.html#a5672a76cf4f12f280889d711341b2b32',1,'RTTI']]], + ['addbaseclass_22',['AddBaseClass',['../class_r_t_t_i.html#ae4671375bc88cf535f4de98414c84405',1,'RTTI']]], + ['addbodiesabort_23',['addbodiesabort',['../class_body_interface.html#abc4f7a8cfd9e27064365eef9753bfa27',1,'BodyInterface::AddBodiesAbort()'],['../class_broad_phase.html#a031638360b44d1a9b2176590796eb2a6',1,'BroadPhase::AddBodiesAbort()'],['../class_broad_phase_quad_tree.html#a7873fb8f52203413346e4ba2fbf6859c',1,'BroadPhaseQuadTree::AddBodiesAbort()'],['../class_quad_tree.html#a3f04fc0ab8ec76c39e7e4ac4679e6ffa',1,'QuadTree::AddBodiesAbort()']]], + ['addbodiesfinalize_24',['addbodiesfinalize',['../class_body_interface.html#a64e1dd1d09088ca5a07384397f77f0aa',1,'BodyInterface::AddBodiesFinalize()'],['../class_broad_phase.html#a07f0fba42d45520a9bc2d22f2a636584',1,'BroadPhase::AddBodiesFinalize()'],['../class_broad_phase_brute_force.html#a75b3feb54f2c3710b20b27c5379ad55e',1,'BroadPhaseBruteForce::AddBodiesFinalize()'],['../class_quad_tree.html#aaf165671ff225afec0336dca906f9219',1,'QuadTree::AddBodiesFinalize()'],['../class_broad_phase_quad_tree.html#a5f3d5a38786504df32579eb87b5c5eb8',1,'BroadPhaseQuadTree::AddBodiesFinalize()']]], + ['addbodiesprepare_25',['addbodiesprepare',['../class_quad_tree.html#a79ce6a7e423da6a09ff4be8e7f6d453c',1,'QuadTree::AddBodiesPrepare()'],['../class_body_interface.html#aab69381ebd96bc19d152bc8a928e9902',1,'BodyInterface::AddBodiesPrepare()'],['../class_broad_phase.html#adc636ae60807c46011ed3674b6a983c2',1,'BroadPhase::AddBodiesPrepare()'],['../class_broad_phase_quad_tree.html#a0069028e847115d1adf3558bb09cb5a8',1,'BroadPhaseQuadTree::AddBodiesPrepare()']]], + ['addbody_26',['addbody',['../class_physics_scene.html#ae93df4adcf5c772085936c03137e169f',1,'PhysicsScene::AddBody()'],['../class_body_manager.html#aa7e0cc82ef6c860655af523205fd9cb6',1,'BodyManager::AddBody()'],['../class_body_interface.html#a4ba54993b7bbc05f1a6ffccbc46f0397',1,'BodyInterface::AddBody()']]], + ['addbodypair_27',['AddBodyPair',['../class_contact_constraint_manager.html#a1527877d78511ca6896722d9416e09d1',1,'ContactConstraintManager']]], + ['addbodywithcustomid_28',['AddBodyWithCustomID',['../class_body_manager.html#ad8c3c4c7e6257244b81cfa8bc590149b',1,'BodyManager']]], + ['addconstraint_29',['addconstraint',['../class_physics_scene.html#a87a55664598b0e1130b9b90ea0cd87fb',1,'PhysicsScene::AddConstraint()'],['../class_physics_system.html#a6a1378c13080b5ad3af2c61be87ca40c',1,'PhysicsSystem::AddConstraint(Constraint *inConstraint)']]], + ['addconstraints_30',['AddConstraints',['../class_physics_system.html#ad83534f99aa4e7fc78e6ede84576b59c',1,'PhysicsSystem']]], + ['addcontactconstraint_31',['AddContactConstraint',['../class_contact_constraint_manager.html#ad54fa2fc8b0cbc1cd6cb5c5846e781be',1,'ContactConstraintManager']]], + ['addconvexradius_32',['AddConvexRadius',['../struct_add_convex_radius.html#a7483095d1f4aaf1f8003adb2696d37f6',1,'AddConvexRadius']]], + ['adddependency_33',['adddependency',['../class_job_system_1_1_job.html#a7686a4762d0dfe746f0b46edfcae3d6d',1,'JobSystem::Job::AddDependency()'],['../class_job_system_1_1_job_handle.html#af0a10c0398474dbf0ffe9b5866775abb',1,'JobSystem::JobHandle::AddDependency()']]], + ['addface_34',['addface',['../class_soft_body_shared_settings.html#ad408fb4eb7803dbba02dc8b669822fd2',1,'SoftBodySharedSettings::AddFace()'],['../class_polyhedron_submerged_volume_calculator.html#a2174180424e99b757f2eb63969557afc',1,'PolyhedronSubmergedVolumeCalculator::AddFace()']]], + ['addforce_35',['addforce',['../class_body.html#a330c986c992c3fdc142194e870e3b8d3',1,'Body::AddForce()'],['../class_body_interface.html#a14f052076561426a785052193f1407b4',1,'BodyInterface::AddForce(const BodyID &inBodyID, Vec3Arg inForce, RVec3Arg inPoint, EActivation inActivationMode=EActivation::Activate)'],['../class_body_interface.html#a9ecde691e54928413bc001db60830488',1,'BodyInterface::AddForce(const BodyID &inBodyID, Vec3Arg inForce, EActivation inActivationMode=EActivation::Activate)'],['../class_body.html#add8352d484a2805f114400159151185b',1,'Body::AddForce()']]], + ['addforceandtorque_36',['AddForceAndTorque',['../class_body_interface.html#acd2ec8e3ed17843a62f671a206e9688f',1,'BodyInterface']]], + ['addhit_37',['addhit',['../class_collision_collector.html#a762c35402676662897e50dd8224e496e',1,'CollisionCollector::AddHit()'],['../class_all_hit_collision_collector.html#ae581ce1300189f781fafe702951dbf96',1,'AllHitCollisionCollector::AddHit()'],['../class_closest_hit_collision_collector.html#a59e5b29507bc2aa633fe55c0bb08ff3e',1,'ClosestHitCollisionCollector::AddHit()'],['../class_any_hit_collision_collector.html#a405568a565f6b818c6fd08a14983b921',1,'AnyHitCollisionCollector::AddHit()'],['../class_internal_edge_removing_collector.html#ad489b749cb2bacbf1596c1da229ff1a1',1,'InternalEdgeRemovingCollector::AddHit()']]], + ['addimpulse_38',['addimpulse',['../class_character.html#aa33a41b66f31c085eeb3f262f09972b7',1,'Character::AddImpulse()'],['../class_body.html#af4e42e6ae915ca4fcaee1c988eeba0f7',1,'Body::AddImpulse(Vec3Arg inImpulse)'],['../class_body.html#aca6076501cd66dedd2618166fdf1750a',1,'Body::AddImpulse(Vec3Arg inImpulse, RVec3Arg inPosition)'],['../class_body_interface.html#add7aa9b7c776237b53d79e95d0d71c40',1,'BodyInterface::AddImpulse(const BodyID &inBodyID, Vec3Arg inImpulse)'],['../class_body_interface.html#a7bff4d600e56557afed4417b21f6c8e4',1,'BodyInterface::AddImpulse(const BodyID &inBodyID, Vec3Arg inImpulse, RVec3Arg inPoint)'],['../class_ragdoll.html#a5ea2bcad36c7346ffd9a81dee6ab03d1',1,'Ragdoll::AddImpulse()']]], + ['additionalconstraint_39',['additionalconstraint',['../class_ragdoll_settings_1_1_additional_constraint.html#ad853912a3308a5439261bc80ff4f12c7',1,'RagdollSettings::AdditionalConstraint::AdditionalConstraint(int inBodyIdx1, int inBodyIdx2, TwoBodyConstraintSettings *inConstraint)'],['../class_ragdoll_settings_1_1_additional_constraint.html#a4edf70ad4617e7f369fafa7da3e4194a',1,'RagdollSettings::AdditionalConstraint::AdditionalConstraint()=default']]], + ['addjob_40',['addjob',['../class_job_system_single_threaded_1_1_barrier_impl.html#a777f9190686403c3a8d0796c0fe56077',1,'JobSystemSingleThreaded::BarrierImpl::AddJob()'],['../class_job_system_1_1_barrier.html#afcf8f345a7a19e1399c4899942ed49c4',1,'JobSystem::Barrier::AddJob()']]], + ['addjobs_41',['addjobs',['../class_job_system_single_threaded_1_1_barrier_impl.html#a124bc867efebec305deb57931370dc28',1,'JobSystemSingleThreaded::BarrierImpl::AddJobs()'],['../class_job_system_1_1_barrier.html#ad62875b2d5b89282bfaae824cac1a476',1,'JobSystem::Barrier::AddJobs()']]], + ['addjoint_42',['addjoint',['../class_skeleton.html#ae52ee99ff637c0ceea37d46ba3b2d712',1,'Skeleton::AddJoint(const string_view &inName, int inParentIndex)'],['../class_skeleton.html#aa058a06eb2f163d14b481bbd8d602be6',1,'Skeleton::AddJoint(const string_view &inName, const string_view &inParentName=string_view())']]], + ['addlinearandangularvelocity_43',['AddLinearAndAngularVelocity',['../class_body_interface.html#a7e4f5dc5ce2c8a045a008a93f141204b',1,'BodyInterface']]], + ['addlinearvelocity_44',['addlinearvelocity',['../class_ragdoll.html#abcf8c32f6b7cbdf98bc29e2bf7075ba7',1,'Ragdoll::AddLinearVelocity()'],['../class_character.html#af00e186740a38260f2987984045051c0',1,'Character::AddLinearVelocity()'],['../class_body_interface.html#a9a665d14b83fe63e236a0adce30d9877',1,'BodyInterface::AddLinearVelocity()']]], + ['addlinearvelocitystep_45',['AddLinearVelocityStep',['../class_motion_properties.html#a5b570eb5488b3ca5f0c1b48ef0cf6dbe',1,'MotionProperties']]], + ['addobjecttobatch_46',['AddObjectToBatch',['../class_fixed_size_free_list.html#afed6e2529117da02be0ddbcc41a509a9',1,'FixedSizeFreeList']]], + ['addpart_47',['AddPart',['../class_get_triangles_context_multi_vertex_list.html#a9cdb357887665b8efc68598c949fbd90',1,'GetTrianglesContextMultiVertexList']]], + ['addpoint_48',['addpoint',['../class_path_constraint_path_hermite.html#a66a08dc34277969fc1f4dc3cbbca9682',1,'PathConstraintPathHermite::AddPoint()'],['../class_e_p_a_convex_hull_builder.html#ae1b6e6eb12d8723eeab4265f9510b7c2',1,'EPAConvexHullBuilder::AddPoint()'],['../class_linear_curve.html#aa5b4a499837cb2a3a0c3b9b5eb618a53',1,'LinearCurve::AddPoint()']]], + ['addpositionstep_49',['AddPositionStep',['../class_body.html#af98f831df76bd7e54eeb92d79fa3c8cd',1,'Body']]], + ['addref_50',['addref',['../class_ref_target_virtual.html#ac09162a129dc035c18ea99c7450aa94d',1,'RefTargetVirtual::AddRef()'],['../class_ref_target.html#acf02c18a343bc9de9d6afb7c966f0363',1,'RefTarget::AddRef()'],['../class_job_system_1_1_job.html#ac6b5861562063d42cfa3c68f45c12b2d',1,'JobSystem::Job::AddRef()']]], + ['addrotationstep_51',['AddRotationStep',['../class_body.html#a3385650a73d75c7d9c16d13ea2d5519f',1,'Body']]], + ['addserializableattributeenum_52',['AddSerializableAttributeEnum',['../_serializable_attribute_enum_8h.html#aefe6ccc5c9b8967b4a9de188db2be3f1',1,'SerializableAttributeEnum.h']]], + ['addserializableattributetyped_53',['AddSerializableAttributeTyped',['../_serializable_attribute_typed_8h.html#a3d653de5dabcb867e559260596e8ac43',1,'SerializableAttributeTyped.h']]], + ['addshape_54',['addshape',['../class_mutable_compound_shape.html#a66c4e1e058a06ddb1718604254d15c4d',1,'MutableCompoundShape::AddShape()'],['../class_compound_shape_settings.html#ac0822915d29caf55fc61d749ab4dd10e',1,'CompoundShapeSettings::AddShape(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape, uint32 inUserData=0)'],['../class_compound_shape_settings.html#aeda2764beb7bc3fcb85d957df93a1431',1,'CompoundShapeSettings::AddShape(Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape, uint32 inUserData=0)']]], + ['addsoftbody_55',['AddSoftBody',['../class_physics_scene.html#af857154af1abd73338e4d3fbf277fae5',1,'PhysicsScene']]], + ['addsteplistener_56',['AddStepListener',['../class_physics_system.html#a0964d49514b7447981dcc7438876e988',1,'PhysicsSystem']]], + ['addthread_57',['AddThread',['../class_profiler.html#a72d49949a95f3bad23a8c288bd54d0f4',1,'Profiler']]], + ['addtophysicssystem_58',['addtophysicssystem',['../class_ragdoll.html#a3c419f92dd96329ba429ed6f8fe9a74e',1,'Ragdoll::AddToPhysicsSystem()'],['../class_character.html#ad4ce42b7ef3dbd8a9a864033d3c71e14',1,'Character::AddToPhysicsSystem()']]], + ['addtorque_59',['addtorque',['../class_body.html#aec30d437f934327d261e8ebdc23a2c8c',1,'Body::AddTorque()'],['../class_body_interface.html#abc6f86e75b2c5b77afd8b066b4d51a52',1,'BodyInterface::AddTorque()']]], + ['adjointed3x3_60',['Adjointed3x3',['../class_mat44.html#a3b9c1e6d186b9ad59e81255c64049f22',1,'Mat44']]], + ['adjustcenterofmass_61',['AdjustCenterOfMass',['../class_mutable_compound_shape.html#aadb711e8d328adc04397be0cf44d4f4c',1,'MutableCompoundShape']]], + ['align_62',['Align',['../class_byte_buffer.html#ad30809667592e1c5b70ecd023017b692',1,'ByteBuffer']]], + ['alignedallocate_63',['AlignedAllocate',['../_memory_8cpp.html#a7705eeb62110cc73e82a1de675272c62',1,'Memory.cpp']]], + ['alignedfree_64',['AlignedFree',['../_memory_8cpp.html#a0d4c36d6296044ad0a715118d04585d5',1,'Memory.cpp']]], + ['alignup_65',['AlignUp',['../_math_8h.html#af4d371fa6a518ca5b81757dc225fae4d',1,'Math.h']]], + ['allocate_66',['allocate',['../class_l_f_h_m_allocator.html#aca5503a8c5d7c9ac25b4f1baa89c5317',1,'LFHMAllocator::Allocate()'],['../class_l_f_h_m_allocator_context.html#afc85e525f6ca72b286aea4cdf693ac7f',1,'LFHMAllocatorContext::Allocate()'],['../class_temp_allocator.html#aa62f890910ee965efea7244953f3c65e',1,'TempAllocator::Allocate()'],['../class_temp_allocator_impl.html#adf9ef85969afed92a4fb14b1e6ff1ac5',1,'TempAllocatorImpl::Allocate()'],['../class_temp_allocator_malloc.html#a985a35b24e08ce333e10a712578458e6',1,'TempAllocatorMalloc::Allocate()'],['../class_temp_allocator_impl_with_malloc_fallback.html#ac20fa2756768654e3228e40b17ed6656',1,'TempAllocatorImplWithMallocFallback::Allocate()'],['../class_s_t_l_aligned_allocator.html#a3e191bdbfbb57772ab22df9ec23a6996',1,'STLAlignedAllocator::allocate()'],['../class_s_t_l_allocator.html#a186cb0b0dae1eda7cf0436e4bc8a964b',1,'STLAllocator::allocate()'],['../class_s_t_l_temp_allocator.html#a5e6754289f3e5c92f7d3a94aaf4d9488',1,'STLTempAllocator::allocate()'],['../_memory_8cpp.html#a96c45c12d905a3480cc161bc38cd7287',1,'Allocate(): Memory.cpp'],['../class_byte_buffer.html#a6fc1274ad81be5609f1f1e807be7cf6b',1,'ByteBuffer::Allocate()']]], + ['allocatebody_67',['AllocateBody',['../class_body_manager.html#ab90b6879d9b21e0301102dd1f5791cb2',1,'BodyManager']]], + ['allocatesoftbody_68',['AllocateSoftBody',['../class_body_manager.html#a003634616068c3e51029c38e77de7fec',1,'BodyManager']]], + ['allowsleep_69',['allowsleep',['../class_vehicle_controller.html#a036140f704fc850f06f8c4072c91276c',1,'VehicleController::AllowSleep()'],['../class_vehicle_engine.html#a542f9131ecce2c3f41526c44759b913b',1,'VehicleEngine::AllowSleep()'],['../class_vehicle_transmission.html#a237601b6ae13f2d8b31ff20981b7ac9c',1,'VehicleTransmission::AllowSleep()'],['../class_wheeled_vehicle_controller.html#a93a56d516b3760052815ac323844d574',1,'WheeledVehicleController::AllowSleep()'],['../class_tracked_vehicle_controller.html#a6f6642ab7fa5b3fa90ddebcad0d07ec4',1,'TrackedVehicleController::AllowSleep()']]], + ['appendvector_70',['AppendVector',['../class_byte_buffer.html#ac1f1080abfd6e0dce2133c7781b46fee',1,'ByteBuffer']]], + ['applybuoyancyimpulse_71',['applybuoyancyimpulse',['../class_body_interface.html#af12108f11ee689a1ebc8320a1ac45e87',1,'BodyInterface::ApplyBuoyancyImpulse()'],['../class_body.html#a7797f43ac6078b682b4c9cb6c7b9b18e',1,'Body::ApplyBuoyancyImpulse()']]], + ['applydamping_72',['ApplyDamping',['../class_vehicle_engine.html#ad61683b9088153079e3e47334c2caf1a',1,'VehicleEngine']]], + ['applyforcetorqueanddraginternal_73',['ApplyForceTorqueAndDragInternal',['../class_motion_properties.html#ae1d0e7670106211909852cd6844286d9',1,'MotionProperties']]], + ['applygyroscopicforceinternal_74',['ApplyGyroscopicForceInternal',['../class_motion_properties.html#a78c58cb27772068a0aa3cbe286ddaf0b',1,'MotionProperties']]], + ['applytorque_75',['applytorque',['../class_vehicle_engine.html#af916ceb8c4a323cee68c72465627901e',1,'VehicleEngine::ApplyTorque()'],['../class_wheel_w_v.html#a8d82611fb63ebf51e726d0aff2db4cab',1,'WheelWV::ApplyTorque()']]], + ['areallabove_76',['AreAllAbove',['../class_polyhedron_submerged_volume_calculator.html#afd8348d65dfed4f7eb40ee92eb74742a',1,'PolyhedronSubmergedVolumeCalculator']]], + ['areallbelow_77',['AreAllBelow',['../class_polyhedron_submerged_volume_calculator.html#aac9438428e9b0508fbac276161acae83',1,'PolyhedronSubmergedVolumeCalculator']]], + ['arejointscorrectlyordered_78',['AreJointsCorrectlyOrdered',['../class_skeleton.html#aac4965d2cd0cf26b47ddc769e51c62fe',1,'Skeleton']]], + ['arithmeticshiftright_79',['arithmeticshiftright',['../class_u_vec8.html#ab477a12a379656e5aeb518621b308854',1,'UVec8::ArithmeticShiftRight()'],['../class_u_vec4.html#a44d2f7bb6b7c51b7cfcf5bb5f261cac7',1,'UVec4::ArithmeticShiftRight()'],['../class_u_vec8.html#a49a21bc576313ae676fb2064904ed506',1,'UVec8::ArithmeticShiftRight()'],['../class_u_vec4.html#acfceebc6fc876a55c008bff9fc78b005',1,'UVec4::ArithmeticShiftRight()']]], + ['array_80',['array',['../class_array.html#a8da2d23aa24ffc66a29cea60ae6b39d9',1,'Array::Array(size_type inLength, const T &inValue, const Allocator &inAllocator={ })'],['../class_array.html#a16d387784beee3e4ed9928a9edadc089',1,'Array::Array()=default'],['../class_array.html#a4595444b3f64178f76b4c26066397d95',1,'Array::Array(const Allocator &inAllocator)'],['../class_array.html#ac0757293b0dd92c58cbcc79b1d4a588a',1,'Array::Array(size_type inLength, const Allocator &inAllocator={ })'],['../class_array.html#a9faa45c57a1bd643eae7d6b7017c606e',1,'Array::Array(Array< T, Allocator > &&inRHS) noexcept'],['../class_array.html#afb8c4cdc7722694c43d9e0661e774e08',1,'Array::Array(const Array< T, Allocator > &inRHS)'],['../class_array.html#aef00de2a2e4817b0faeea0906b87b8b9',1,'Array::Array(const_iterator inBegin, const_iterator inEnd, const Allocator &inAllocator={ })'],['../class_array.html#a98bf0be959b81ee4ecc69fd68fa98b9f',1,'Array::Array(std::initializer_list< T > inList, const Allocator &inAllocator={ })']]], + ['asin_81',['asin',['../_trigonometry_8h.html#a8d14d3276803ebb781ac40821491c959',1,'ASin(): Trigonometry.h'],['../class_vec4.html#a2e71650ce94e6f72312f8820af419db5',1,'Vec4::ASin()']]], + ['assign_82',['assign',['../class_array.html#af7a4d07255a8cfd0b90d171c12427d0d',1,'Array::assign(std::initializer_list< T > inList)'],['../class_array.html#ae1283a9f0de42a16a3f526726a366fee',1,'Array::assign(Iterator inBegin, Iterator inEnd)']]], + ['assignbodyid_83',['assignbodyid',['../class_body_interface.html#a7669d5c31627d2c99fac69723fb1a219',1,'BodyInterface::AssignBodyID(Body *ioBody, const BodyID &inBodyID)'],['../class_body_interface.html#a4247f0851fb8dfbe92f5b83a41863595',1,'BodyInterface::AssignBodyID(Body *ioBody)']]], + ['assignsplit_84',['AssignSplit',['../class_large_island_splitter.html#abdd73c85801b06752d297cf36df1b44f',1,'LargeIslandSplitter']]], + ['assigntononparallelsplit_85',['AssignToNonParallelSplit',['../class_large_island_splitter.html#a1b2ef7ebff94911ee008f25f6c0c741b',1,'LargeIslandSplitter']]], + ['at_86',['at',['../class_static_array.html#af9191dafffff11ec4008b9378fd4dd05',1,'StaticArray::at()'],['../class_array.html#ad43d0fa1083ae9004b7a4de150f9a7f5',1,'Array::at(size_type inIdx)'],['../class_array.html#aeeca660e7d286155dc31eb356525673a',1,'Array::at(size_type inIdx) const'],['../class_static_array.html#a83ed073e3ed2248da10cef0277beeb23',1,'StaticArray::at()']]], + ['atan_87',['atan',['../class_vec4.html#a0c3d97968c479dcc0a08b98134c95e02',1,'Vec4::ATan()'],['../_trigonometry_8h.html#a8d7d50cdb10f600d1493bd8a36c4029e',1,'ATan(float inX): Trigonometry.h']]], + ['atan2_88',['ATan2',['../_trigonometry_8h.html#a64f4ce00d99917535c674ec5172ccf78',1,'Trigonometry.h']]], + ['atomicmax_89',['AtomicMax',['../_atomics_8h.html#adda37c39156e9dc280788421bf35f7bf',1,'Atomics.h']]], + ['atomicmin_90',['AtomicMin',['../_atomics_8h.html#af71f53f1d43bb24611bd60d7c634a207',1,'Atomics.h']]] +]; diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 000000000..fe4871863 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['back_0',['back',['../class_array.html#ac884e13d12d2f321df09467c121a909f',1,'Array::back()'],['../class_static_array.html#a6b5e0b0984bd82a6f09660206a1b4914',1,'StaticArray::back() const'],['../class_static_array.html#ab423e08f9f4dedd513bb61b9fec4e326',1,'StaticArray::back()'],['../class_array.html#a4c0bf34f85afda89306030b0a1f9c032',1,'Array::back() const']]], + ['begin_1',['begin',['../class_array.html#a5ca209989bad1f51065a8f7d9a73d3af',1,'Array::begin() const'],['../class_array.html#a7cf4b2db22a30a247af7e3b2839a385a',1,'Array::begin()'],['../class_lock_free_hash_map.html#a0ecc7b5f560d02210a707b1099f8b99e',1,'LockFreeHashMap::begin()'],['../class_static_array.html#a671ecdfc35c476a8efd5b11536a1712f',1,'StaticArray::begin() const'],['../class_static_array.html#a39b29025d859bb426416085c054dfb89',1,'StaticArray::begin()']]], + ['bitcast_2',['BitCast',['../_math_8h.html#ab2cbe30946edbf23887cfc1291025866',1,'Math.h']]], + ['bodiestosleep_3',['BodiesToSleep',['../class_physics_system_1_1_bodies_to_sleep.html#af3da3598afb660ad1a21de8ba2467a5e',1,'PhysicsSystem::BodiesToSleep']]], + ['bodycreationsettings_4',['bodycreationsettings',['../class_body_creation_settings.html#a6926eec582c4902d3040637ff5ff2332',1,'BodyCreationSettings::BodyCreationSettings(const ShapeSettings *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)'],['../class_body_creation_settings.html#a807ecf473d73ab8a468ee4126f5ac79b',1,'BodyCreationSettings::BodyCreationSettings(const Shape *inShape, RVec3Arg inPosition, QuatArg inRotation, EMotionType inMotionType, ObjectLayer inObjectLayer)'],['../class_body_creation_settings.html#aec5d90393812f5354e8505f70f4b00c9',1,'BodyCreationSettings::BodyCreationSettings()=default']]], + ['bodyid_5',['bodyid',['../class_body_i_d.html#a43c06446ee70f43cb4516600cb6285f4',1,'BodyID::BodyID()'],['../class_body_i_d.html#a702d36c88f9ee8f41b349330e30b46b7',1,'BodyID::BodyID(uint32 inID, uint8 inSequenceNumber)'],['../class_body_i_d.html#a4e601acab1a7ff5d5742673f8bd36530',1,'BodyID::BodyID(uint32 inID)']]], + ['bodylockbase_6',['BodyLockBase',['../class_body_lock_base.html#a6567f612e029f57f4a49aebcf54334a9',1,'BodyLockBase']]], + ['bodylockinterface_7',['bodylockinterface',['../class_body_lock_interface_locking.html#a502df83afc4e8e8e77d7a8b2993c1f8e',1,'BodyLockInterfaceLocking::BodyLockInterface()'],['../class_body_lock_interface.html#a502df83afc4e8e8e77d7a8b2993c1f8e',1,'BodyLockInterface::BodyLockInterface()'],['../class_body_lock_interface_no_lock.html#a502df83afc4e8e8e77d7a8b2993c1f8e',1,'BodyLockInterfaceNoLock::BodyLockInterface()']]], + ['bodylockmultibase_8',['BodyLockMultiBase',['../class_body_lock_multi_base.html#a64d2906481b4018d8394f0d8cb199cc8',1,'BodyLockMultiBase']]], + ['bodypair_9',['bodypair',['../struct_body_pair.html#af07fc6b828c249ac30e5ad5f406016f8',1,'BodyPair::BodyPair()=default'],['../struct_body_pair.html#a89d92908491717f39027b1f51a50088c',1,'BodyPair::BodyPair(BodyID inA, BodyID inB)']]], + ['box_10',['Box',['../class_box_shape_1_1_box.html#af913f6873feba3de236ec74247bf0298',1,'BoxShape::Box']]], + ['boxshape_11',['boxshape',['../class_box_shape.html#a4004360f2a7438e69fa3d0a252fc8f28',1,'BoxShape::BoxShape()'],['../class_box_shape.html#a4ccbcc1c06232059f4b8711cb54d21f8',1,'BoxShape::BoxShape(Vec3Arg inHalfExtent, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_box_shape.html#a2088320f53aad4bffd21eac9317e0848',1,'BoxShape::BoxShape(const BoxShapeSettings &inSettings, ShapeResult &outResult)']]], + ['boxshapesettings_12',['boxshapesettings',['../class_box_shape_settings.html#a4c1e144d10ffefdcd6f31ddf46feffc1',1,'BoxShapeSettings::BoxShapeSettings()=default'],['../class_box_shape_settings.html#a0c622692b801fef15ec5aaf849cca94c',1,'BoxShapeSettings::BoxShapeSettings(Vec3Arg inHalfExtent, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)']]], + ['broadphaselayer_13',['broadphaselayer',['../class_broad_phase_layer.html#a5a745cab41c36b5acda7ba4332abd068',1,'BroadPhaseLayer::BroadPhaseLayer()=default'],['../class_broad_phase_layer.html#a731f26e18a30c3bbb274df1296e78a9e',1,'BroadPhaseLayer::BroadPhaseLayer(Type inValue)'],['../class_broad_phase_layer.html#ab22a0985d4594f952096da14ab4560d8',1,'BroadPhaseLayer::BroadPhaseLayer(const BroadPhaseLayer &)=default']]], + ['broadphaselayerinterfacemask_14',['BroadPhaseLayerInterfaceMask',['../class_broad_phase_layer_interface_mask.html#a91a0c2af42acacfefdb8901fc1bc9696',1,'BroadPhaseLayerInterfaceMask']]], + ['broadphaselayerinterfacetable_15',['BroadPhaseLayerInterfaceTable',['../class_broad_phase_layer_interface_table.html#accae5298efb3880af7dd16c8ba4a9e72',1,'BroadPhaseLayerInterfaceTable']]], + ['build_16',['Build',['../class_a_a_b_b_tree_builder.html#a82efdb085cf7ee8b64188c28c0f854d7',1,'AABBTreeBuilder']]], + ['buildislands_17',['buildislands',['../class_constraint.html#af62388f6f234f8cd7d24af34e49180fd',1,'Constraint::BuildIslands()'],['../class_two_body_constraint.html#ae5b2ede88a6180a8bff9fe873ff38619',1,'TwoBodyConstraint::BuildIslands()'],['../class_vehicle_constraint.html#ad04e72e964c227c63e9c2c264de269c9',1,'VehicleConstraint::BuildIslands()']]], + ['buildislandsplits_18',['buildislandsplits',['../class_constraint.html#a6388265dbe8e1a92980d796006879798',1,'Constraint::BuildIslandSplits()'],['../class_two_body_constraint.html#a19ff8913100799b94972336188ed7c7f',1,'TwoBodyConstraint::BuildIslandSplits()'],['../class_vehicle_constraint.html#a3e1637cfc4d982db7ba9116da7986adf',1,'VehicleConstraint::BuildIslandSplits()']]] +]; diff --git a/search/functions_10.js b/search/functions_10.js new file mode 100644 index 000000000..c5f8bb90d --- /dev/null +++ b/search/functions_10.js @@ -0,0 +1,95 @@ +var searchData= +[ + ['rackandpinionconstraint_0',['RackAndPinionConstraint',['../class_rack_and_pinion_constraint.html#ad207aecc0e885cc3ddffe123194ce903',1,'RackAndPinionConstraint']]], + ['radianstodegrees_1',['RadiansToDegrees',['../_math_8h.html#a6ecf6194532e807dd457ef28defa1991',1,'Math.h']]], + ['ragdoll_2',['Ragdoll',['../class_ragdoll.html#abf6b6eb34e63af813cc4e394b536208e',1,'Ragdoll']]], + ['range_3',['range',['../struct_triangle_splitter_1_1_range.html#afb985794a6e2aec93427d7336f308753',1,'TriangleSplitter::Range::Range()=default'],['../struct_triangle_splitter_1_1_range.html#a82090fe51800c354e7b86c60aade57d8',1,'TriangleSplitter::Range::Range(uint inBegin, uint inEnd)']]], + ['rayaabox_4',['rayaabox',['../_ray_a_a_box_8h.html#ab0c5d92b5381f2045127c1c41fe1e3d9',1,'RayAABox(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax, float &outMin, float &outMax): RayAABox.h'],['../_ray_a_a_box_8h.html#afc8148e5f92f5793a720b3de6fb38094',1,'RayAABox(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax): RayAABox.h']]], + ['rayaabox4_5',['RayAABox4',['../_ray_a_a_box_8h.html#a47b273497f8309ea15797696f48f41ad',1,'RayAABox.h']]], + ['rayaabox8_6',['RayAABox8',['../_ray_a_a_box8_8h.html#a206c515c138809481c54c52af48355f1',1,'RayAABox8.h']]], + ['rayaaboxhits_7',['rayaaboxhits',['../_ray_a_a_box_8h.html#a796855b2528b68631ec2a0e4e4a7e936',1,'RayAABoxHits(Vec3Arg inOrigin, Vec3Arg inDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax): RayAABox.h'],['../_ray_a_a_box_8h.html#ad5c6851778bfb25190803b57f3b156fe',1,'RayAABoxHits(Vec3Arg inOrigin, const RayInvDirection &inInvDirection, Vec3Arg inBoundsMin, Vec3Arg inBoundsMax, float inClosest): RayAABox.h']]], + ['raycapsule_8',['RayCapsule',['../_ray_capsule_8h.html#a98c52ef6615d1b0452962366c52afc9d',1,'RayCapsule.h']]], + ['raycastt_9',['raycastt',['../struct_ray_cast_t.html#a3d875537a981684b35d6a1a1cf2e59d2',1,'RayCastT::RayCastT()=default'],['../struct_ray_cast_t.html#a1347e0a1a6182923730a694a0f9d4b6e',1,'RayCastT::RayCastT(const RayCastT< Vec, Mat, RayCastType > &)=default'],['../struct_ray_cast_t.html#a721f50a5edf395ccc83bbe68e90de3c4',1,'RayCastT::RayCastT(typename Vec::ArgType inOrigin, Vec3Arg inDirection)']]], + ['raycylinder_10',['raycylinder',['../_ray_cylinder_8h.html#a273dc91d43f5a44d0a1c6af044a70c0e',1,'RayCylinder(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCylinderHalfHeight, float inCylinderRadius): RayCylinder.h'],['../_ray_cylinder_8h.html#a73e90eb1e3af7294c5b0248ddf7d1317',1,'RayCylinder(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, float inCylinderRadius): RayCylinder.h']]], + ['rayinvdirection_11',['rayinvdirection',['../class_ray_inv_direction.html#a33b00fe0da252d7b5aa1801ffb7e5c56',1,'RayInvDirection::RayInvDirection(Vec3Arg inDirection)'],['../class_ray_inv_direction.html#a5609464debfaa939e4c947f083a84556',1,'RayInvDirection::RayInvDirection()=default']]], + ['raysphere_12',['raysphere',['../_ray_sphere_8h.html#a7d756cc06fb7721b3e657d9f31916b74',1,'RaySphere(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, Vec3Arg inSphereCenter, float inSphereRadius, float &outMinFraction, float &outMaxFraction): RaySphere.h'],['../_ray_sphere_8h.html#ae0d53ac665a580da61a2fe0a08f5197c',1,'RaySphere(Vec3Arg inRayOrigin, Vec3Arg inRayDirection, Vec3Arg inSphereCenter, float inSphereRadius): RaySphere.h']]], + ['raytriangle_13',['RayTriangle',['../_ray_triangle_8h.html#a11da2f2945abb380af4d7ffe97b66ba6',1,'RayTriangle.h']]], + ['raytriangle4_14',['RayTriangle4',['../_ray_triangle_8h.html#a78f049474454fce771b6c23635462a8c',1,'RayTriangle.h']]], + ['raytriangle8_15',['RayTriangle8',['../_ray_triangle8_8h.html#af137e1ad4776843baf3c4b22a0acc7e4',1,'RayTriangle8.h']]], + ['read_16',['read',['../class_stream_in.html#a5ae9304c310edfc5ef1c67a95e36b1f3',1,'StreamIn::Read(T &outT)'],['../class_stream_in.html#ad746a4bb01b4d67767bf1bd200edcb01',1,'StreamIn::Read(Array< T, A > &outT)'],['../class_stream_in.html#a6f7322ce8d07d787701f3417aa46f265',1,'StreamIn::Read(std::basic_string< Type, Traits, Allocator > &outString)'],['../class_stream_in.html#a685f7e59d2108a0c61dad52c042d7e45',1,'StreamIn::Read(Array< T, A > &outT, const F &inReadElement)'],['../class_stream_in.html#a73a1ab9b7b8c0807e88b9b969acb24bf',1,'StreamIn::Read(Vec3 &outVec)'],['../class_stream_in.html#ae2a6c51ed1848c45cd9974cec509020e',1,'StreamIn::Read(DVec3 &outVec)'],['../class_stream_in.html#ad4bea0c5775a7c29522359528d98c654',1,'StreamIn::Read(DMat44 &outVec)'],['../class_object_stream_in.html#a25483a52f49c350e7d439f7965180558',1,'ObjectStreamIn::Read()']]], + ['readbytes_17',['readbytes',['../class_stream_in.html#a85303621b160dd9280ca9b7ff67d8217',1,'StreamIn::ReadBytes()'],['../class_stream_in_wrapper.html#aa4c627cf650ea91887ae92d43d46dada',1,'StreamInWrapper::ReadBytes()'],['../class_state_recorder_impl.html#a0fe47b7eaf3a83449182ee8460fd99a1',1,'StateRecorderImpl::ReadBytes()']]], + ['readclassdata_18',['readclassdata',['../class_i_object_stream_in.html#ac5a63b973dfde6d1834c27ec81fa2b45',1,'IObjectStreamIn::ReadClassData()'],['../class_object_stream_in.html#aa2e0d94864596b86c7c9df2befa84e14',1,'ObjectStreamIn::ReadClassData(const char *inClassName, void *inInstance) override'],['../class_object_stream_in.html#a9918789956492451260e1af1fa1c2db8',1,'ObjectStreamIn::ReadClassData(const ClassDescription &inClassDesc, void *inInstance)']]], + ['readcount_19',['readcount',['../class_object_stream_text_in.html#acaef815639a4298f6a576140de8cb6a8',1,'ObjectStreamTextIn::ReadCount()'],['../class_object_stream_binary_in.html#af7e2608beec6934dd8a83fe5602a2568',1,'ObjectStreamBinaryIn::ReadCount()'],['../class_i_object_stream_in.html#abb5a026cb41f9d12c7960fe9d3a5882c',1,'IObjectStreamIn::ReadCount()']]], + ['readdata_20',['ReadData',['../class_serializable_attribute.html#ad8b999830598842432441df6647be298',1,'SerializableAttribute']]], + ['readdatatype_21',['readdatatype',['../class_object_stream_text_in.html#adc4196beb9e42a5b479b5cf7c9fbd736',1,'ObjectStreamTextIn::ReadDataType()'],['../class_object_stream_binary_in.html#a530608ffb7d8b12b9bc58afd9169d8f6',1,'ObjectStreamBinaryIn::ReadDataType()'],['../class_i_object_stream_in.html#a289dedcf7a3ae7f67d61dcde32b6282a',1,'IObjectStreamIn::ReadDataType()']]], + ['readidentifier_22',['readidentifier',['../class_object_stream_binary_in.html#aef0b7299dfe253b7824e116edd9d3257',1,'ObjectStreamBinaryIn::ReadIdentifier()'],['../class_object_stream_text_in.html#a92609c6794b05cee7bf47018ade56136',1,'ObjectStreamTextIn::ReadIdentifier()'],['../class_i_object_stream_in.html#a6f31050b3f59099b313c2560e76d18cb',1,'IObjectStreamIn::ReadIdentifier()']]], + ['readname_23',['readname',['../class_object_stream_text_in.html#a79116e71f7cc0373156904e3d9a74ac6',1,'ObjectStreamTextIn::ReadName()'],['../class_object_stream_binary_in.html#ad25681831f4d017a97df409286eb36e3',1,'ObjectStreamBinaryIn::ReadName()'],['../class_i_object_stream_in.html#aa8fd4340d4de56a5dd91fcd6ca793339',1,'IObjectStreamIn::ReadName()']]], + ['readobject_24',['ReadObject',['../class_object_stream_in.html#a27fa5f9b8e00504d57a6440c81b3f6ff',1,'ObjectStreamIn']]], + ['readpointerdata_25',['readpointerdata',['../class_i_object_stream_in.html#a548f1fbba63c0b47d2b8776075bc36fc',1,'IObjectStreamIn::ReadPointerData()'],['../class_object_stream_in.html#a771b7fa72a91f8141c74425c593723de',1,'ObjectStreamIn::ReadPointerData()']]], + ['readprimitivedata_26',['readprimitivedata',['../class_object_stream_text_in.html#ab7c8919080f8614b28e097fd11324dae',1,'ObjectStreamTextIn::ReadPrimitiveData(uint8 &outPrimitive) override'],['../class_object_stream_text_in.html#ad407eb47eed065b9f39745535715de21',1,'ObjectStreamTextIn::ReadPrimitiveData(uint16 &outPrimitive) override'],['../class_object_stream_text_in.html#adb602b716adef6cb25d1a2393adc25b9',1,'ObjectStreamTextIn::ReadPrimitiveData(int &outPrimitive) override'],['../class_object_stream_text_in.html#ae795d421fc37ecbfc8b38acfcfbeb872',1,'ObjectStreamTextIn::ReadPrimitiveData(uint32 &outPrimitive) override'],['../class_object_stream_text_in.html#a5b6bbd4b188c814bc0008e1a8730c00f',1,'ObjectStreamTextIn::ReadPrimitiveData(uint64 &outPrimitive) override'],['../class_object_stream_text_in.html#abee43bfb201ecee249daef30070b42b1',1,'ObjectStreamTextIn::ReadPrimitiveData(float &outPrimitive) override'],['../class_object_stream_text_in.html#ac9b5883bbe2ef7b8bba215fa2fecf042',1,'ObjectStreamTextIn::ReadPrimitiveData(double &outPrimitive) override'],['../class_object_stream_text_in.html#af69f711f9957bacae5aebfdac9d60b56',1,'ObjectStreamTextIn::ReadPrimitiveData(bool &outPrimitive) override'],['../class_object_stream_binary_in.html#aa74809f20beb6f9621abc3e2333c614e',1,'ObjectStreamBinaryIn::ReadPrimitiveData()'],['../class_object_stream_text_in.html#afb0ef76d9a22441970eec9a347bbb66a',1,'ObjectStreamTextIn::ReadPrimitiveData(String &outPrimitive) override'],['../class_object_stream_text_in.html#a23b4394afd8cb0aaba9a91f6adfa34ce',1,'ObjectStreamTextIn::ReadPrimitiveData(Float3 &outPrimitive) override'],['../class_object_stream_text_in.html#addcd289d1d73738db0d48f8a0f8992fd',1,'ObjectStreamTextIn::ReadPrimitiveData(Double3 &outPrimitive) override'],['../class_object_stream_text_in.html#ac5db7ff153f5b4efcd5760a21fb6723f',1,'ObjectStreamTextIn::ReadPrimitiveData(Vec3 &outPrimitive) override'],['../class_object_stream_text_in.html#aa9713b3c0ccaf7ea3c569e84021651f2',1,'ObjectStreamTextIn::ReadPrimitiveData(DVec3 &outPrimitive) override'],['../class_object_stream_text_in.html#ab52271c6de1325d7d302095812d588bf',1,'ObjectStreamTextIn::ReadPrimitiveData(Vec4 &outPrimitive) override'],['../class_object_stream_text_in.html#a26c738ce8e470bdf9e98108ead591c8a',1,'ObjectStreamTextIn::ReadPrimitiveData(Quat &outPrimitive) override'],['../class_object_stream_text_in.html#a66f3b34ded6e7856aab86ee49eb88ac0',1,'ObjectStreamTextIn::ReadPrimitiveData(Mat44 &outPrimitive) override'],['../class_object_stream_text_in.html#aa53bdd6294f7c0ead2e977e91d5c108f',1,'ObjectStreamTextIn::ReadPrimitiveData(DMat44 &outPrimitive) override'],['../class_i_object_stream_in.html#ad4e124e1a7df0b66a3b525181cde8660',1,'IObjectStreamIn::ReadPrimitiveData()'],['../class_object_stream_binary_in.html#a3efe657ff31934894cf986ddd9404c5b',1,'ObjectStreamBinaryIn::ReadPrimitiveData()'],['../class_i_object_stream_in.html#adcc4f2c5ca7449d1fca513cf6beba298',1,'IObjectStreamIn::ReadPrimitiveData(uint8 &outPrimitive)=0'],['../class_i_object_stream_in.html#ac40f7f79e36b23a9eceec318d5807541',1,'IObjectStreamIn::ReadPrimitiveData(uint16 &outPrimitive)=0'],['../class_i_object_stream_in.html#aa1c304d18b225329573b6480ecd3592f',1,'IObjectStreamIn::ReadPrimitiveData(int &outPrimitive)=0'],['../class_i_object_stream_in.html#a06eea8e1426386cba91596bad580c453',1,'IObjectStreamIn::ReadPrimitiveData(Quat &outPrimitive)=0'],['../class_i_object_stream_in.html#af5648e8c3063f2241764871d244256f8',1,'IObjectStreamIn::ReadPrimitiveData(Vec4 &outPrimitive)=0'],['../class_i_object_stream_in.html#abb1d9fe3614810e4ed6bf7169dd5c0c9',1,'IObjectStreamIn::ReadPrimitiveData(DVec3 &outPrimitive)=0'],['../class_i_object_stream_in.html#a55b583284b1fd954240fa72511261c35',1,'IObjectStreamIn::ReadPrimitiveData(Vec3 &outPrimitive)=0'],['../class_object_stream_binary_in.html#ac51f9af154643a4e5f46954245c10185',1,'ObjectStreamBinaryIn::ReadPrimitiveData()'],['../class_i_object_stream_in.html#a781398987e2c86e99bfc4d03d99c2914',1,'IObjectStreamIn::ReadPrimitiveData(Float3 &outPrimitive)=0'],['../class_i_object_stream_in.html#a58fb610ec8db85895bb31010ced4eec4',1,'IObjectStreamIn::ReadPrimitiveData(String &outPrimitive)=0'],['../class_i_object_stream_in.html#aff7f339ee88684c62fdc0d3c4842b994',1,'IObjectStreamIn::ReadPrimitiveData(bool &outPrimitive)=0'],['../class_i_object_stream_in.html#a2e0b8a75b0347fa8e015c62c2ff9f937',1,'IObjectStreamIn::ReadPrimitiveData(double &outPrimitive)=0'],['../class_i_object_stream_in.html#a8f2857838aa606be6fc63022f0956cd3',1,'IObjectStreamIn::ReadPrimitiveData(float &outPrimitive)=0'],['../class_i_object_stream_in.html#a617133ce899879a93e5274b18bef9038',1,'IObjectStreamIn::ReadPrimitiveData(uint64 &outPrimitive)=0'],['../class_i_object_stream_in.html#a83e75c9bd735481d1abfffd4606e3357',1,'IObjectStreamIn::ReadPrimitiveData(uint32 &outPrimitive)=0'],['../class_object_stream_binary_in.html#ac62f780ab97ca88d2068fb0b278e4b57',1,'ObjectStreamBinaryIn::ReadPrimitiveData(uint32 &outPrimitive) override'],['../class_object_stream_binary_in.html#a411fe818db26d5ada7802e96e87a1823',1,'ObjectStreamBinaryIn::ReadPrimitiveData(DVec3 &outPrimitive) override'],['../class_object_stream_binary_in.html#aaf2b6afb5aa25ca74c4505973c0a48f7',1,'ObjectStreamBinaryIn::ReadPrimitiveData(Vec3 &outPrimitive) override'],['../class_object_stream_binary_in.html#add5a059681d27ff452da004a20c54c97',1,'ObjectStreamBinaryIn::ReadPrimitiveData(Double3 &outPrimitive) override'],['../class_object_stream_binary_in.html#a0c83fd72a9271ee7dc014146c35ad9d1',1,'ObjectStreamBinaryIn::ReadPrimitiveData(Float3 &outPrimitive) override'],['../class_object_stream_binary_in.html#a770a1734839488af9f34a325a5ba1874',1,'ObjectStreamBinaryIn::ReadPrimitiveData(String &outPrimitive) override'],['../class_object_stream_binary_in.html#adf70a4becf6d0e5e4655666d4b4db196',1,'ObjectStreamBinaryIn::ReadPrimitiveData(double &outPrimitive) override'],['../class_object_stream_binary_in.html#ad454f1413f0c7a081d6de616336fda86',1,'ObjectStreamBinaryIn::ReadPrimitiveData(float &outPrimitive) override'],['../class_object_stream_binary_in.html#a02dd635b3049ccdd83b77de1796b8a61',1,'ObjectStreamBinaryIn::ReadPrimitiveData(uint64 &outPrimitive) override'],['../class_object_stream_binary_in.html#a132a50e88261fde7a29acad207cacd0f',1,'ObjectStreamBinaryIn::ReadPrimitiveData(int &outPrimitive) override'],['../class_object_stream_binary_in.html#a1bad705f6f3c3eec20c45c451385ed28',1,'ObjectStreamBinaryIn::ReadPrimitiveData(uint16 &outPrimitive) override'],['../class_object_stream_binary_in.html#a5b6728fc02d126c2a25235c769d56d82',1,'ObjectStreamBinaryIn::ReadPrimitiveData(uint8 &outPrimitive) override'],['../class_i_object_stream_in.html#a92921a2d611a4c8fba065ae7ba36c161',1,'IObjectStreamIn::ReadPrimitiveData()'],['../class_object_stream_binary_in.html#a55590dd27adde78a04cef4d6ff511e17',1,'ObjectStreamBinaryIn::ReadPrimitiveData(Vec4 &outPrimitive) override'],['../class_object_stream_binary_in.html#a5cd4343446658834caf6e471a0b5e1c8',1,'ObjectStreamBinaryIn::ReadPrimitiveData(Quat &outPrimitive) override'],['../class_i_object_stream_in.html#aaad93855bb8f16a3a6f58047c166e0ad',1,'IObjectStreamIn::ReadPrimitiveData()']]], + ['readrtti_27',['ReadRTTI',['../class_object_stream_in.html#aba38d15deacd14fb875da3b6d4a8f2d3',1,'ObjectStreamIn']]], + ['reallocate_28',['reallocate',['../_memory_8cpp.html#a280e4a0028cc9e9d3d69e81243bcef4b',1,'Reallocate(): Memory.cpp'],['../class_s_t_l_allocator.html#aa023ac42875d9d843380abb6986888f1',1,'STLAllocator::reallocate()']]], + ['reciprocal_29',['reciprocal',['../class_vec3.html#a6bdb4929eab084e74d1e0ea3ae29d8ad',1,'Vec3::Reciprocal()'],['../class_vec8.html#a246f5b59817c707715bd69d292e7610f',1,'Vec8::Reciprocal()'],['../class_vec4.html#a7cc579856f15646c7507f23619bbfce0',1,'Vec4::Reciprocal()'],['../class_d_vec3.html#ae4f3e3231039ea4fb254150a32a2b679',1,'DVec3::Reciprocal()']]], + ['recycleconstraintbuffer_30',['RecycleConstraintBuffer',['../class_contact_constraint_manager.html#a3ede12b173e9c63f9421176573661b27',1,'ContactConstraintManager']]], + ['reducemax_31',['reducemax',['../class_vec3.html#a3d4dc6f6807ead86b5150e7904ac80f5',1,'Vec3::ReduceMax()'],['../class_vec4.html#a753afc91d4124025cd90e79f3443834f',1,'Vec4::ReduceMax()']]], + ['reducemin_32',['reducemin',['../class_vec3.html#a3b5c2f1c893d46d390428ef8c487cc7d',1,'Vec3::ReduceMin()'],['../class_vec4.html#ac1bdb84d53942f36ac3b315ab2451600',1,'Vec4::ReduceMin()'],['../class_vec8.html#a045d854d2e5034a8fdd06b1946143c73',1,'Vec8::ReduceMin()']]], + ['ref_33',['ref',['../class_ref.html#a41cec5ec3f778e24fc24ec8d2f2cfc4e',1,'Ref::Ref()'],['../class_ref.html#ac2f49c59614fcf3cc90a4b4bb1d4ee61',1,'Ref::Ref(T *inRHS)'],['../class_ref.html#a058eb96b88278fcd99ff5ce1fef30bb8',1,'Ref::Ref(const Ref< T > &inRHS)'],['../class_ref.html#ab9c96a7f35ee47259673d12a921f7cfb',1,'Ref::Ref(Ref< T > &&inRHS) noexcept']]], + ['refconst_34',['refconst',['../class_ref_const.html#ab7be009ab78269524aa5ac6387b5ad35',1,'RefConst::RefConst(const RefConst< T > &inRHS)'],['../class_ref_const.html#a310f87cc5720b10d0059a1128b851d46',1,'RefConst::RefConst()'],['../class_ref_const.html#a423ea3dc5a5d83bf4a5e3fbcca36acf4',1,'RefConst::RefConst(const T *inRHS)'],['../class_ref_const.html#ab35b0b13bff8349d4e910b56b73cf115',1,'RefConst::RefConst(RefConst< T > &&inRHS) noexcept'],['../class_ref_const.html#a5bac911b6794527e7ae3016773f2a506',1,'RefConst::RefConst(const Ref< T > &inRHS)'],['../class_ref_const.html#ad331b640eec29970a066ff44f988ccab',1,'RefConst::RefConst(Ref< T > &&inRHS) noexcept']]], + ['refreshcontacts_35',['RefreshContacts',['../class_character_virtual.html#a09ecc3efc44b912eca30d9dbc05cc558',1,'CharacterVirtual']]], + ['reftarget_36',['reftarget',['../class_ref_target.html#a4c8a23738e2e1dd6369520a30e250b17',1,'RefTarget::RefTarget()=default'],['../class_ref_target.html#a50444e3b659c6f93c64aee224a93f6ab',1,'RefTarget::RefTarget(const RefTarget &)']]], + ['register_37',['register',['../class_factory.html#ad0d9b51fede200c603359bc2ffc8bc8f',1,'Factory::Register(const RTTI **inRTTIs, uint inNumber)'],['../class_factory.html#a2c5c5cba0d5101b5d33302cd102d8546',1,'Factory::Register(const RTTI *inRTTI)']]], + ['registerdefaultallocator_38',['registerdefaultallocator',['../_memory_8cpp.html#a833946335de93bfe993d882d5e882458',1,'RegisterDefaultAllocator(): Memory.cpp'],['../_memory_8h.html#a6ae804b1b68490f6e032ef6e7d9fc93e',1,'RegisterDefaultAllocator(): Memory.cpp']]], + ['registertypes_39',['RegisterTypes',['../_register_types_8h.html#a033e662bc8b7d5a8acd9adcc692b7cb4',1,'RegisterTypes.h']]], + ['registertypesinternal_40',['registertypesinternal',['../_register_types_8h.html#a8df860236f81c6ffec261b6bd62847ba',1,'RegisterTypesInternal(uint64 inVersionID): RegisterTypes.cpp'],['../_register_types_8cpp.html#ad79693ff726715130ca9372e7e347e22',1,'RegisterTypesInternal(uint64 inVersionID): RegisterTypes.cpp']]], + ['reinterpretasfloat_41',['ReinterpretAsFloat',['../class_u_vec4.html#af399ef91439555b5264eec1790537547',1,'UVec4']]], + ['reinterpretasint_42',['reinterpretasint',['../class_vec3.html#ae8373cd45fbf550d26729f98a68b3e4a',1,'Vec3::ReinterpretAsInt()'],['../class_vec4.html#a7f8f1783b5b18997ce18f3ed92c34aa2',1,'Vec4::ReinterpretAsInt()']]], + ['release_43',['release',['../class_job_system_1_1_job.html#a46cad8e24ec8ff788b41e8aea53a2e27',1,'JobSystem::Job::Release()'],['../class_ref_target.html#a0451661dd5d85b01f969319e767993eb',1,'RefTarget::Release()'],['../class_ref_target_virtual.html#a7f4d994acaa1d389f768fd9b75bca506',1,'RefTargetVirtual::Release()'],['../class_scope_exit.html#a0fd8970c70da23c66060320c833e6934',1,'ScopeExit::Release()'],['../class_semaphore.html#aad2d5e92add4088a741869d88fd2fc37',1,'Semaphore::Release()']]], + ['releaselock_44',['ReleaseLock',['../class_body_lock_base.html#ad55e418ae5441d32196be0d6433e4cec',1,'BodyLockBase']]], + ['remove_45',['remove',['../class_character_vs_character_collision_simple.html#a63d4e54dee0aca96e4c77e7c78a6b350',1,'CharacterVsCharacterCollisionSimple::Remove()'],['../class_constraint_manager.html#acb16102f8700cbe29811d38abf913d0a',1,'ConstraintManager::Remove()']]], + ['removebodies_46',['removebodies',['../class_quad_tree.html#ae87cda722c454860d1566a6c5f4b11dc',1,'QuadTree::RemoveBodies()'],['../class_broad_phase_quad_tree.html#aecb695ab5c29fcb219e4f5ee7e27dba8',1,'BroadPhaseQuadTree::RemoveBodies()'],['../class_broad_phase_brute_force.html#a488f130c96e125ae1b0dda672d805f65',1,'BroadPhaseBruteForce::RemoveBodies()'],['../class_broad_phase.html#adfcebfeb40995d6a122dd53730eec6fd',1,'BroadPhase::RemoveBodies()'],['../class_body_manager.html#a2a65ea34748b9f3f354d4325f905ab1c',1,'BodyManager::RemoveBodies()'],['../class_body_interface.html#a4e0007d53ba413e916a527b870b35a87',1,'BodyInterface::RemoveBodies(BodyID *ioBodies, int inNumber)']]], + ['removebody_47',['RemoveBody',['../class_body_interface.html#a522d341ddd68225e12eb510f072399f9',1,'BodyInterface']]], + ['removeconstraint_48',['RemoveConstraint',['../class_physics_system.html#a7cdf5d375a54ab6d6b29e3944d8e4266',1,'PhysicsSystem']]], + ['removeconstraints_49',['RemoveConstraints',['../class_physics_system.html#a220ed391139f4ffdb384fe83b44d6439',1,'PhysicsSystem']]], + ['removedependency_50',['removedependency',['../class_job_system_1_1_job_handle.html#a25f723a35202461e725cc3ad6cc166bb',1,'JobSystem::JobHandle::RemoveDependency()'],['../class_job_system_1_1_job.html#a59a4638f7edcbfd30f47f096f0f984f1',1,'JobSystem::Job::RemoveDependency(int inCount)']]], + ['removedependencyandqueue_51',['RemoveDependencyAndQueue',['../class_job_system_1_1_job.html#ae4411bbad4af5361b85db233bd0adb43',1,'JobSystem::Job']]], + ['removefromphysicssystem_52',['removefromphysicssystem',['../class_ragdoll.html#a76f2d87e4f41cc22ff280b9c962698cf',1,'Ragdoll::RemoveFromPhysicsSystem()'],['../class_character.html#a58a8b4717f4cbcd8dd9ba3fc77111a5d',1,'Character::RemoveFromPhysicsSystem()']]], + ['removeshape_53',['RemoveShape',['../class_mutable_compound_shape.html#ab91b4cd767b396eca6a341e98501daea',1,'MutableCompoundShape']]], + ['removesteplistener_54',['RemoveStepListener',['../class_physics_system.html#a00aeeff60505f9baa3dd1ffdfe73c2b3',1,'PhysicsSystem']]], + ['removethread_55',['RemoveThread',['../class_profiler.html#a647ca7e4e3b803986733583e2ba1fb3e',1,'Profiler']]], + ['reserve_56',['reserve',['../class_array.html#ada6d2585215a3cb5b2effbe4dfa08d7b',1,'Array::reserve()'],['../class_ignore_multiple_bodies_filter.html#a4151dd0e414f86279940306d664a6042',1,'IgnoreMultipleBodiesFilter::Reserve()'],['../class_linear_curve.html#a97a229bd7bbda997fab1f22649afcd9c',1,'LinearCurve::Reserve()']]], + ['reset_57',['reset',['../class_any_hit_collision_collector.html#a037964d4624c351fe863295ebe465c91',1,'AnyHitCollisionCollector::Reset()'],['../class_broad_phase_cast_result.html#abf6a8c98a31073d7a755df3c6d52ae7e',1,'BroadPhaseCastResult::Reset()'],['../class_collision_collector.html#a77f6668a80319dfb85f68b97c7b6d103',1,'CollisionCollector::Reset()'],['../class_all_hit_collision_collector.html#af3bfc75b183c4406c65807ff0d62dd43',1,'AllHitCollisionCollector::Reset()'],['../class_closest_hit_collision_collector.html#a14955035534ef11baa2d3785ba004eee',1,'ClosestHitCollisionCollector::Reset()'],['../class_internal_edge_removing_collector.html#acd02ac01ebc1abbedbcaa57b73426d86',1,'InternalEdgeRemovingCollector::Reset()'],['../class_large_island_splitter.html#ac5d0857609c5c1375dd9cd78a5f6148a',1,'LargeIslandSplitter::Reset()']]], + ['resetearlyoutfraction_58',['ResetEarlyOutFraction',['../class_collision_collector.html#a07e4d9859fe39cfde6674ebb3ece445a',1,'CollisionCollector']]], + ['resetforce_59',['resetforce',['../class_motion_properties.html#a98ccf77045902a10f5665ba7208b67f4',1,'MotionProperties::ResetForce()'],['../class_body.html#a91ec38c6d564c65d7dde56f315a8eb31',1,'Body::ResetForce()']]], + ['resetgravityoverride_60',['ResetGravityOverride',['../class_vehicle_constraint.html#a1093abfb21649ac7c26dffc59cb27dfe',1,'VehicleConstraint']]], + ['resetislands_61',['ResetIslands',['../class_island_builder.html#a3a23a4981c11d55933cc2533504eb38a',1,'IslandBuilder']]], + ['resetmotion_62',['resetmotion',['../class_motion_properties.html#a6e4c20984b986f7f3e474eee9d54a612',1,'MotionProperties::ResetMotion()'],['../class_body.html#ae5800f2a270af3dcf7b53c009b67ef95',1,'Body::ResetMotion()']]], + ['resetsleeptestspheres_63',['ResetSleepTestSpheres',['../class_motion_properties.html#aad3b333b7af3e3b39be95edf9b69d133',1,'MotionProperties']]], + ['resetsleeptesttimer_64',['ResetSleepTestTimer',['../class_motion_properties.html#a9cbe62f9eebdc6f63c82d9e52ef352fe',1,'MotionProperties']]], + ['resetsleeptimer_65',['resetsleeptimer',['../class_body.html#a95efc4cbe40bfab41c74b2add880fa04',1,'Body::ResetSleepTimer()'],['../class_body_interface.html#a1fba61b765e02400402899b838a7e517',1,'BodyInterface::ResetSleepTimer()']]], + ['resetstatus_66',['ResetStatus',['../class_large_island_splitter_1_1_splits.html#a0acc44089e5c254ca53a07d6aa80ffc8',1,'LargeIslandSplitter::Splits']]], + ['resettorque_67',['resettorque',['../class_body.html#ab3872c4fdcf4046aac2565bbe14061e8',1,'Body::ResetTorque()'],['../class_motion_properties.html#afed5a48ab2a5e703c00e2e9ef2e0c68a',1,'MotionProperties::ResetTorque()']]], + ['resetwarmstart_68',['resetwarmstart',['../class_fixed_constraint.html#a4e7dbb8d017aefe0771a27bc9682e009',1,'FixedConstraint::ResetWarmStart()'],['../class_swing_twist_constraint.html#af008b3e7de0f788907050c45101f1620',1,'SwingTwistConstraint::ResetWarmStart()'],['../class_cone_constraint.html#a3de043a81f61d8f612ee14b0e291ea9e',1,'ConeConstraint::ResetWarmStart()'],['../class_constraint.html#af6f6f7bc9ec10dbaf721515b19241294',1,'Constraint::ResetWarmStart()'],['../class_distance_constraint.html#a4850e4925b8de521c4afe351e28d0b2d',1,'DistanceConstraint::ResetWarmStart()'],['../class_gear_constraint.html#afac138625fdede0bd0c4775edc103878',1,'GearConstraint::ResetWarmStart()'],['../class_hinge_constraint.html#aa6308f0b4983d8bfb2e835fea7cc28b7',1,'HingeConstraint::ResetWarmStart()'],['../class_path_constraint.html#a2c947e294a99cdf061c2dc30447dcfba',1,'PathConstraint::ResetWarmStart()'],['../class_point_constraint.html#acca5a66c0b39fad225a1fb938e96a4e5',1,'PointConstraint::ResetWarmStart()'],['../class_pulley_constraint.html#aca6c3e82e979de7352e26afd14f5e277',1,'PulleyConstraint::ResetWarmStart()'],['../class_rack_and_pinion_constraint.html#a5c14ca07f19abd4066e7b49d8be0f5b5',1,'RackAndPinionConstraint::ResetWarmStart()'],['../class_six_d_o_f_constraint.html#a22c691917ea1c5166f4ea7cd6a00219f',1,'SixDOFConstraint::ResetWarmStart()'],['../class_slider_constraint.html#a754215fb80385dc95d64c59c73443b20',1,'SliderConstraint::ResetWarmStart()'],['../class_ragdoll.html#ab311adf5d4b6bd72199e6d46d04886f8',1,'Ragdoll::ResetWarmStart()'],['../class_vehicle_constraint.html#a181b7955873518cae4b3a1b5f23979d5',1,'VehicleConstraint::ResetWarmStart()']]], + ['resize_69',['resize',['../class_array.html#a1355a4e6cf533d895191b93eaa95e769',1,'Array::resize(size_type inNewSize)'],['../class_array.html#a6ef30c832102c214f54d3552f0f1d550',1,'Array::resize(size_type inNewSize, const T &inValue)'],['../class_static_array.html#af90fb922a70be2d41cc70b243cbc4c64',1,'StaticArray::resize()']]], + ['restorebinarystate_70',['restorebinarystate',['../class_vehicle_differential_settings.html#a57a075d772fdd921f8da88a9c4c2f0e7',1,'VehicleDifferentialSettings::RestoreBinaryState()'],['../class_tracked_vehicle_controller_settings.html#ad0578129c78d52535148ac87a7e27b63',1,'TrackedVehicleControllerSettings::RestoreBinaryState()'],['../class_vehicle_anti_roll_bar.html#acf4e180f4337014b2ce4e0ddcd83a7fc',1,'VehicleAntiRollBar::RestoreBinaryState()'],['../class_vehicle_constraint_settings.html#a710a5387a975c46e52fb4a860cec6c75',1,'VehicleConstraintSettings::RestoreBinaryState()'],['../class_vehicle_controller_settings.html#a5ef4840b667224faf60f1d3cc2b048e1',1,'VehicleControllerSettings::RestoreBinaryState()'],['../class_swing_twist_constraint_settings.html#aea7e8886dad7c91dd6b35eb66d040905',1,'SwingTwistConstraintSettings::RestoreBinaryState()'],['../class_wheel_settings_t_v.html#a026d2a093b4da2f93be1a50a855eac5d',1,'WheelSettingsTV::RestoreBinaryState()'],['../class_motorcycle_controller_settings.html#aecb6c2070fcb21e83a14dfa4e3157f6d',1,'MotorcycleControllerSettings::RestoreBinaryState()'],['../class_soft_body_shared_settings.html#a2f196979f67ababeaf2ab8fe85c3243c',1,'SoftBodySharedSettings::RestoreBinaryState()'],['../class_soft_body_creation_settings.html#a735fee6e846a7eab45f817ef8bf6688d',1,'SoftBodyCreationSettings::RestoreBinaryState()'],['../class_group_filter_table.html#ade5ec053f8ed440ebdbd516f31797ee3',1,'GroupFilterTable::RestoreBinaryState()'],['../class_vehicle_engine_settings.html#a07beafb1531780053169dbc05283ed26',1,'VehicleEngineSettings::RestoreBinaryState()'],['../class_vehicle_track_settings.html#a019707dd72812c4af4799ee1f7077115',1,'VehicleTrackSettings::RestoreBinaryState()'],['../class_vehicle_transmission_settings.html#a3055b6c810a88a1ae3fd2946a1683d5d',1,'VehicleTransmissionSettings::RestoreBinaryState()'],['../class_wheel_settings.html#a73a4d72105d91343f5811df864dcd4a8',1,'WheelSettings::RestoreBinaryState()'],['../class_wheel_settings_w_v.html#a30dc23071eb952eaf4ec80cdd3453c39',1,'WheelSettingsWV::RestoreBinaryState()'],['../class_wheeled_vehicle_controller_settings.html#a2521d5acd5088a1110c5abf5df948734',1,'WheeledVehicleControllerSettings::RestoreBinaryState()'],['../class_group_filter.html#a76f2d434cbc50b6eae5aab84b87b81d5',1,'GroupFilter::RestoreBinaryState()'],['../class_linear_curve.html#a1b1dc52c995b9c5ac2d890f01d2af11d',1,'LinearCurve::RestoreBinaryState()'],['../class_body_creation_settings.html#a272d105640dc6f4376a064a8ebe2c343',1,'BodyCreationSettings::RestoreBinaryState()'],['../class_mass_properties.html#ac46696a6d40a5e0b96898bb38f66e904',1,'MassProperties::RestoreBinaryState()'],['../class_collision_group.html#abff4339a09c8ad38cc7aee4449d5ecaf',1,'CollisionGroup::RestoreBinaryState()'],['../class_mutable_compound_shape.html#ad787fdba1914f3550e2cf3c4036e99b8',1,'MutableCompoundShape::RestoreBinaryState()'],['../class_triangle_shape.html#ab632b280870ff67e4c8cdfbbbb05ae64',1,'TriangleShape::RestoreBinaryState()'],['../class_tapered_cylinder_shape.html#ab19eef4bfc4b695b40c4878edf549333',1,'TaperedCylinderShape::RestoreBinaryState()'],['../class_tapered_capsule_shape.html#ab661a337941a8a5f00b77e9c342f0020',1,'TaperedCapsuleShape::RestoreBinaryState()'],['../class_static_compound_shape.html#a834536007f00d3251acbd122afffb16e',1,'StaticCompoundShape::RestoreBinaryState()'],['../class_sphere_shape.html#af3bba551144e16706f81b326559e8182',1,'SphereShape::RestoreBinaryState()'],['../class_shape.html#a98a42fc4c28896d87ac4287c38f213ad',1,'Shape::RestoreBinaryState()'],['../class_scaled_shape.html#ac5d58ba4d9241234ece710053012a18f',1,'ScaledShape::RestoreBinaryState()'],['../class_rotated_translated_shape.html#a09096c325e0e1e06111058436c710a25',1,'RotatedTranslatedShape::RestoreBinaryState()'],['../class_plane_shape.html#aeb64b45f1ef04065f2e41cfed2f0d662',1,'PlaneShape::RestoreBinaryState()'],['../class_offset_center_of_mass_shape.html#a642db1f164f7c122227d033f07785323',1,'OffsetCenterOfMassShape::RestoreBinaryState()'],['../class_slider_constraint_settings.html#ac0986c9c1bad64fbb5a4f77476e6d1ed',1,'SliderConstraintSettings::RestoreBinaryState()'],['../class_mesh_shape.html#af84c2f1f9f50380d94a63a1649dd9023',1,'MeshShape::RestoreBinaryState()'],['../class_height_field_shape.html#a9b2126b83b4ff79815efd7403ddb0c4d',1,'HeightFieldShape::RestoreBinaryState()'],['../class_cylinder_shape.html#a34b7524e8eeb624986b062a42c7af128',1,'CylinderShape::RestoreBinaryState()'],['../class_convex_shape.html#a6398de9c5aec64886a5184efb4fcca8f',1,'ConvexShape::RestoreBinaryState()'],['../class_convex_hull_shape.html#a15bb554d0dcaf667f40bdb13b07f6ccd',1,'ConvexHullShape::RestoreBinaryState()'],['../class_compound_shape.html#a117d02ee25d15fff53f59f29434b3449',1,'CompoundShape::RestoreBinaryState()'],['../class_capsule_shape.html#a716f8cb75afae9e84d3668f7c6520876',1,'CapsuleShape::RestoreBinaryState()'],['../class_box_shape.html#a5d9e2eb38ff5d85f18f838fbf3e69499',1,'BoxShape::RestoreBinaryState()'],['../class_physics_material_simple.html#a65bc6aff8e8f375058986d85ec70f611',1,'PhysicsMaterialSimple::RestoreBinaryState()'],['../class_physics_material.html#a51ea4ae0673771947b5052c9062cf267',1,'PhysicsMaterial::RestoreBinaryState()'],['../class_distance_constraint_settings.html#ad20296ac7f200e6f5515d5026f243028',1,'DistanceConstraintSettings::RestoreBinaryState()'],['../class_spring_settings.html#af6f75e6e5167b54a2cff64808a106297',1,'SpringSettings::RestoreBinaryState()'],['../class_six_d_o_f_constraint_settings.html#ac7edaa973ecaf000923b3d1d795ce9cc',1,'SixDOFConstraintSettings::RestoreBinaryState()'],['../class_rack_and_pinion_constraint_settings.html#a84da5f10be9658a7652391b0d699911f',1,'RackAndPinionConstraintSettings::RestoreBinaryState()'],['../class_pulley_constraint_settings.html#a386c539940f18601f78f5bebd85550ac',1,'PulleyConstraintSettings::RestoreBinaryState()'],['../class_point_constraint_settings.html#a280c2307c3b0dc13ee399c5a5100c020',1,'PointConstraintSettings::RestoreBinaryState()'],['../class_path_constraint_path_hermite.html#a4d0c669b370d78bccdd0fa40f6861fca',1,'PathConstraintPathHermite::RestoreBinaryState()'],['../class_path_constraint_path.html#a98e97ad6b58e3467c014a524c1062ad7',1,'PathConstraintPath::RestoreBinaryState()'],['../class_path_constraint_settings.html#a5a69dc6588941a9699e3a80755716444',1,'PathConstraintSettings::RestoreBinaryState()'],['../class_motor_settings.html#a0d171537fc44218d3c3a6159a95aab74',1,'MotorSettings::RestoreBinaryState()'],['../class_hinge_constraint_settings.html#ab9e2ce19ee6cde2921df8d3fba49d02e',1,'HingeConstraintSettings::RestoreBinaryState()'],['../class_gear_constraint_settings.html#a19e829338afbd3f7b7bd50614f1dadd7',1,'GearConstraintSettings::RestoreBinaryState()'],['../class_fixed_constraint_settings.html#a68029fead89e2efc72ddec38977086cf',1,'FixedConstraintSettings::RestoreBinaryState()'],['../class_constraint_settings.html#a71f815e6f2e1bd3e0c8be210936b0e79',1,'ConstraintSettings::RestoreBinaryState()'],['../class_cone_constraint_settings.html#a18a734d20a0d8d9fbaf697523d43a53d',1,'ConeConstraintSettings::RestoreBinaryState()']]], + ['restorebodystate_71',['restorebodystate',['../class_body_manager.html#ad1de147dfb454f5963629a98489c1159',1,'BodyManager::RestoreBodyState()'],['../class_physics_system.html#a5865e977575ab65a41ce98e098b897cc',1,'PhysicsSystem::RestoreBodyState()']]], + ['restorematerialstate_72',['restorematerialstate',['../class_convex_shape.html#aa0989125373d245ea41cbf5c1db96198',1,'ConvexShape::RestoreMaterialState()'],['../class_height_field_shape.html#a60a76ec2d43e2f91967bee14723ba270',1,'HeightFieldShape::RestoreMaterialState()'],['../class_mesh_shape.html#ab15580fc2fa9b0e6372cfc7c48f2105f',1,'MeshShape::RestoreMaterialState()'],['../class_plane_shape.html#a50ce02e27f33e0632a2f63c3fb56fbb2',1,'PlaneShape::RestoreMaterialState()'],['../class_shape.html#a6e823e7198f22ec824cacf9998d9904c',1,'Shape::RestoreMaterialState()']]], + ['restoreobject_73',['RestoreObject',['../namespace_stream_utils.html#a8e2ba0b1630f3d270dfdd4284a468ab9',1,'StreamUtils']]], + ['restoreobjectarray_74',['RestoreObjectArray',['../namespace_stream_utils.html#a388cbbe0f223267d038a57b9fd6e1571',1,'StreamUtils']]], + ['restoreobjectreference_75',['RestoreObjectReference',['../namespace_stream_utils.html#aab7d93bea0dbbfa623af7112db1bd8be',1,'StreamUtils']]], + ['restorestate_76',['restorestate',['../class_point_constraint_part.html#a019489117b367decab440da408e316b8',1,'PointConstraintPart::RestoreState()'],['../class_wheeled_vehicle_controller.html#a832989bb00f7c2577925f3bb978d116a',1,'WheeledVehicleController::RestoreState()'],['../class_vehicle_transmission.html#a1c3c2fef737c176e558081a0175f71f9',1,'VehicleTransmission::RestoreState()'],['../class_vehicle_track.html#a0252bddefcd767ca47517706f168bc00',1,'VehicleTrack::RestoreState()'],['../class_vehicle_engine.html#a1465f66b9bddf12998cd990c8ba05140',1,'VehicleEngine::RestoreState()'],['../class_vehicle_controller.html#a64cf71ec1f7bd0e92a08c4292f9f2515',1,'VehicleController::RestoreState()'],['../class_vehicle_constraint.html#a2d36c8bcd57ab5136e962bd03f1992e8',1,'VehicleConstraint::RestoreState()'],['../class_tracked_vehicle_controller.html#ac4ad788c5d39ec66561f0fde8bb5be60',1,'TrackedVehicleController::RestoreState()'],['../class_motorcycle_controller.html#a6487c412c79e33f47863ab08f2b63935',1,'MotorcycleController::RestoreState()'],['../class_swing_twist_constraint_part.html#a2964a0ed18137258a244d1b4926fa290',1,'SwingTwistConstraintPart::RestoreState()'],['../class_body.html#a5b4cf0e59625d5607d1317e8ad2de290',1,'Body::RestoreState()'],['../class_body_manager.html#af64512a91a78f48a75c5cead5552e281',1,'BodyManager::RestoreState()'],['../class_soft_body_motion_properties.html#a82ab6c1c73650cf2af92072c0fe8368d',1,'SoftBodyMotionProperties::RestoreState()'],['../class_motion_properties.html#a09a1e9e46776c7d15cdd2b19c4a146f6',1,'MotionProperties::RestoreState()'],['../class_character_base.html#ad9d1540df7d44b3aaeee88a527df7d7d',1,'CharacterBase::RestoreState()'],['../class_character_virtual.html#a34ce1577ff0641d5a326af721a3c9b71',1,'CharacterVirtual::RestoreState()'],['../struct_character_virtual_1_1_contact.html#a952dfd4d7f5eaf9c790ae88d88cdb83a',1,'CharacterVirtual::Contact::RestoreState()'],['../class_hinge_constraint.html#ab511231f1d1c0ea20d9d7e9a3d996091',1,'HingeConstraint::RestoreState()'],['../class_gear_constraint.html#acdb35bebda74e178f96d516277dda140',1,'GearConstraint::RestoreState()'],['../class_fixed_constraint.html#acf092e49dff8f3e45c4a315924ace105',1,'FixedConstraint::RestoreState()'],['../class_distance_constraint.html#a748c652cfab4475e85d97ed4caf42c79',1,'DistanceConstraint::RestoreState()'],['../class_contact_constraint_manager.html#a2bc5cc8b8d36cf641dc4217fed0e63f6',1,'ContactConstraintManager::RestoreState()'],['../class_physics_system.html#a5c0936f0d1e9cc6f05a100e48a687bb6',1,'PhysicsSystem::RestoreState()'],['../class_rotation_quat_constraint_part.html#a95e793a001df59cd2e8ea7e92c4f6263',1,'RotationQuatConstraintPart::RestoreState()'],['../class_rotation_euler_constraint_part.html#aba8f2a3ca2aa7ab982b16499cf938ee3',1,'RotationEulerConstraintPart::RestoreState()'],['../class_rack_and_pinion_constraint_part.html#ad761890faa43dd0c459e5a6869b10f7f',1,'RackAndPinionConstraintPart::RestoreState()'],['../class_independent_axis_constraint_part.html#a1b5d7adfe5abea0da836a725b91d4f85',1,'IndependentAxisConstraintPart::RestoreState()'],['../class_hinge_rotation_constraint_part.html#abf5e533e782c69c89481e4bf6e3a0a28',1,'HingeRotationConstraintPart::RestoreState()'],['../class_gear_constraint_part.html#ad3fc3cde9a29f5bbbba7db738f5715a3',1,'GearConstraintPart::RestoreState()'],['../class_dual_axis_constraint_part.html#a06562f096c62e631bb4e8571a731ffb0',1,'DualAxisConstraintPart::RestoreState()'],['../class_axis_constraint_part.html#afdaf8583a278a760eae80b8169ee6989',1,'AxisConstraintPart::RestoreState()'],['../class_angle_constraint_part.html#a80bd3ee7db86967d1a55100ab244d01c',1,'AngleConstraintPart::RestoreState()'],['../class_constraint_manager.html#aa6041abc2a70cc411e4d814c9dbf43f2',1,'ConstraintManager::RestoreState()'],['../class_constraint.html#a9a8b58f759bee231ebbfc7147041a0b7',1,'Constraint::RestoreState()'],['../class_cone_constraint.html#a1f9682febf21f688361448462dbe785c',1,'ConeConstraint::RestoreState()'],['../class_swing_twist_constraint.html#ab8a66fa8ace006007551e20f26859e60',1,'SwingTwistConstraint::RestoreState()'],['../class_six_d_o_f_constraint.html#a816d37d27455acd262a58e565445ba8d',1,'SixDOFConstraint::RestoreState()'],['../class_rack_and_pinion_constraint.html#a466997d9cdcd2cae27eca964faa5ebd3',1,'RackAndPinionConstraint::RestoreState()'],['../class_pulley_constraint.html#a292df1ddeb2b9ec1ff7c96f3742c81f7',1,'PulleyConstraint::RestoreState()'],['../class_point_constraint.html#a69f08d8239b0202d27429f0ca15de580',1,'PointConstraint::RestoreState()'],['../class_path_constraint.html#ae404de8c3ac283d010ca1e0f637873f1',1,'PathConstraint::RestoreState()'],['../class_slider_constraint.html#a9512c8658bafebac41965f0e5d8b0377',1,'SliderConstraint::RestoreState()']]], + ['restoresubshapestate_77',['restoresubshapestate',['../class_shape.html#ab4de39f5e4972919f1211ec73520b1d8',1,'Shape::RestoreSubShapeState()'],['../class_decorated_shape.html#a642be3c50a8c3b2891161aeb32f4b7df',1,'DecoratedShape::RestoreSubShapeState()'],['../class_compound_shape.html#a75ac24c967580322df489ae7afb6e87b',1,'CompoundShape::RestoreSubShapeState()']]], + ['result_78',['result',['../class_result.html#ad9e9e7780434af5bdfe5652c0b621862',1,'Result::Result(Result< Type > &&inRHS) noexcept'],['../class_result.html#a0cb5b79fcbc7a428276cec91bfc794cb',1,'Result::Result(const Result< Type > &inRHS)'],['../class_result.html#a48ea3c542aca44533bbe0467ce7edb32',1,'Result::Result()']]], + ['reversed_79',['reversed',['../class_shape_cast_result.html#ab16c921cd28c80c7acbf8005b778965f',1,'ShapeCastResult::Reversed()'],['../class_collide_shape_result.html#a84eb31fb18eea1a96cadad32a3f6fe4e',1,'CollideShapeResult::Reversed()']]], + ['reversedshapefilter_80',['ReversedShapeFilter',['../class_reversed_shape_filter.html#aa0287d910b05b97b4cdc4fed9851e0a0',1,'ReversedShapeFilter']]], + ['rewind_81',['Rewind',['../class_state_recorder_impl.html#a57c58fddc1bcaad0e06ca22b792c908d',1,'StateRecorderImpl']]], + ['rotate_82',['rotate',['../class_indexed_triangle_no_material.html#a69f086f68d6d6231ffc90033c9c1acb9',1,'IndexedTriangleNoMaterial::Rotate()'],['../class_mass_properties.html#a305b372015465387eed7b337ce84a398',1,'MassProperties::Rotate()']]], + ['rotateaxisx_83',['RotateAxisX',['../class_quat.html#ad591c3ca827733b3be275ffaf808e838',1,'Quat']]], + ['rotateaxisy_84',['RotateAxisY',['../class_quat.html#adb1d1a70ed64c0a6fadc849126306706',1,'Quat']]], + ['rotateaxisz_85',['RotateAxisZ',['../class_quat.html#ab226b2147a748e53008556bcf1a3cd76',1,'Quat']]], + ['rotatedtranslatedshape_86',['rotatedtranslatedshape',['../class_rotated_translated_shape.html#adb464f1e2b1cc92b8842b8b9c799711f',1,'RotatedTranslatedShape::RotatedTranslatedShape(const RotatedTranslatedShapeSettings &inSettings, ShapeResult &outResult)'],['../class_rotated_translated_shape.html#a2d80aa08a7ae24694dff0721c3e5cd5c',1,'RotatedTranslatedShape::RotatedTranslatedShape()'],['../class_rotated_translated_shape.html#a404c0c0433b1c4a0779d5b58ad4f9fb3',1,'RotatedTranslatedShape::RotatedTranslatedShape(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)']]], + ['rotatedtranslatedshapesettings_87',['rotatedtranslatedshapesettings',['../class_rotated_translated_shape_settings.html#a4b1d4bb9af26dc7b4839e5613be1d7e3',1,'RotatedTranslatedShapeSettings::RotatedTranslatedShapeSettings(Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)'],['../class_rotated_translated_shape_settings.html#aca284712649bfd71718d9d761fc3039f',1,'RotatedTranslatedShapeSettings::RotatedTranslatedShapeSettings(Vec3Arg inPosition, QuatArg inRotation, const ShapeSettings *inShape)'],['../class_rotated_translated_shape_settings.html#ad5285a469a3df9bfd11c8fd83dc074b9',1,'RotatedTranslatedShapeSettings::RotatedTranslatedShapeSettings()=default']]], + ['rotatescale_88',['RotateScale',['../namespace_scale_helpers.html#a317905196055a0a720d6468cbb4840b9',1,'ScaleHelpers']]], + ['rraycast_89',['RRayCast',['../struct_r_ray_cast.html#a2c5b7e63adeca394564930ff9e6d6205',1,'RRayCast']]], + ['rshapecast_90',['RShapeCast',['../struct_r_shape_cast.html#a006aae5be875eba47b5bdd3778e36e2f',1,'RShapeCast']]], + ['rtti_91',['rtti',['../class_r_t_t_i.html#a200b9e466fc9653a73e2a4f7cc5c8d11',1,'RTTI::RTTI(const char *inName, int inSize, pCreateObjectFunction inCreateObject, pDestructObjectFunction inDestructObject, pCreateRTTIFunction inCreateRTTI)'],['../class_r_t_t_i.html#aea79f36f0cf2786b1d64a46a179a009f',1,'RTTI::RTTI(const char *inName, int inSize, pCreateObjectFunction inCreateObject, pDestructObjectFunction inDestructObject)']]] +]; diff --git a/search/functions_11.js b/search/functions_11.js new file mode 100644 index 000000000..4160a2abd --- /dev/null +++ b/search/functions_11.js @@ -0,0 +1,438 @@ +var searchData= +[ + ['sample_0',['Sample',['../class_skeletal_animation.html#a1cc26e80f2a36deac4cbe3ecee10299b',1,'SkeletalAnimation']]], + ['sand_1',['sand',['../class_d_vec3.html#a1cc30fe9dbcd37737dab80818f790ae8',1,'DVec3::sAnd()'],['../class_vec4.html#a1b0f06643e493c801cdd07a18ff8b2dd',1,'Vec4::sAnd()'],['../class_vec3.html#a96e892074ac7e8638cb70ede768f08a8',1,'Vec3::sAnd()'],['../class_u_vec4.html#a69a2126a24a31ead596e3316c1285145',1,'UVec4::sAnd()'],['../class_u_vec8.html#a50253d7ab7872642a1cbe8c200759432',1,'UVec8::sAnd()']]], + ['sanitize_2',['Sanitize',['../class_mesh_shape_settings.html#a34521f76c7a01d659260902de5191553',1,'MeshShapeSettings']]], + ['satan2_3',['sATan2',['../class_vec4.html#a276178476f7db15b1925cae464f136cf',1,'Vec4']]], + ['savebinarystate_4',['savebinarystate',['../class_ragdoll_settings.html#a5ac758eeeb02faf2d90dbf70c874fda5',1,'RagdollSettings::SaveBinaryState()'],['../class_gear_constraint_settings.html#acfd729d2e49300f557a029ad14598b60',1,'GearConstraintSettings::SaveBinaryState()'],['../class_physics_scene.html#a92a0fecb9380ce4a7ac7ebe75cba8c47',1,'PhysicsScene::SaveBinaryState()'],['../class_swing_twist_constraint_settings.html#a4fe33d4d02bc21c602c0396e3e2fa981',1,'SwingTwistConstraintSettings::SaveBinaryState()'],['../class_spring_settings.html#a8da853a3005b1797148dd6c8350d0c62',1,'SpringSettings::SaveBinaryState()'],['../class_slider_constraint_settings.html#acfae9c6e70eef7f2fdb2d12fd718f187',1,'SliderConstraintSettings::SaveBinaryState()'],['../class_six_d_o_f_constraint_settings.html#a765a3475ed53ef68701c6113ba7dd46b',1,'SixDOFConstraintSettings::SaveBinaryState()'],['../class_rack_and_pinion_constraint_settings.html#a92be9cdd89c5a465323f2a770c13fef6',1,'RackAndPinionConstraintSettings::SaveBinaryState()'],['../class_pulley_constraint_settings.html#ab8b9eea11b3adb23d825581a821c4a8f',1,'PulleyConstraintSettings::SaveBinaryState()'],['../class_point_constraint_settings.html#a40d21e7ac18cc0d8a922a2d7398cd7a1',1,'PointConstraintSettings::SaveBinaryState()'],['../class_path_constraint_path_hermite.html#a5ebfbd249290a134915daf8f451ad050',1,'PathConstraintPathHermite::SaveBinaryState()'],['../class_path_constraint_path.html#a5e969d5cd0b3bede01788cb898445d36',1,'PathConstraintPath::SaveBinaryState()'],['../class_path_constraint_settings.html#a9c56f9bc1b35f6df6b7aa520a4128fdf',1,'PathConstraintSettings::SaveBinaryState()'],['../class_motor_settings.html#ac0a3de2c2c2545e381d5c00014bef682',1,'MotorSettings::SaveBinaryState()'],['../class_hinge_constraint_settings.html#ad1949141d8e31c72cd3eb6dcd8e82d28',1,'HingeConstraintSettings::SaveBinaryState()'],['../class_vehicle_track_settings.html#a22893d7c73b60b53e21885cdf65ac7ba',1,'VehicleTrackSettings::SaveBinaryState()'],['../class_soft_body_creation_settings.html#a85c901c0830e24d6d663e90ab5d109e1',1,'SoftBodyCreationSettings::SaveBinaryState()'],['../class_soft_body_shared_settings.html#a237a177ff6a49cc11207c196220f321b',1,'SoftBodySharedSettings::SaveBinaryState()'],['../class_motorcycle_controller_settings.html#a715ebed22f63c05036175346dd7aa508',1,'MotorcycleControllerSettings::SaveBinaryState()'],['../class_wheel_settings_t_v.html#aa38d108404d72d9ddac0d87be1b22e8e',1,'WheelSettingsTV::SaveBinaryState()'],['../class_tracked_vehicle_controller_settings.html#aa97756bf83a666d7e93529605679c7aa',1,'TrackedVehicleControllerSettings::SaveBinaryState()'],['../class_vehicle_anti_roll_bar.html#adef2c8bc1bce0835c229f03bafcf6c97',1,'VehicleAntiRollBar::SaveBinaryState()'],['../class_vehicle_constraint_settings.html#ad880e9519583ffb70b93bec474176fd6',1,'VehicleConstraintSettings::SaveBinaryState()'],['../class_vehicle_controller_settings.html#a8508baa59b73af00f019d542166a88cc',1,'VehicleControllerSettings::SaveBinaryState()'],['../class_vehicle_differential_settings.html#aab96aa7556774945dbf7886849015af9',1,'VehicleDifferentialSettings::SaveBinaryState()'],['../class_vehicle_engine_settings.html#a82b4677535f7f39e68081227caf4b547',1,'VehicleEngineSettings::SaveBinaryState()'],['../class_vehicle_transmission_settings.html#ac843a815cfe9ce6ad3fd4f5872d187e1',1,'VehicleTransmissionSettings::SaveBinaryState()'],['../class_wheel_settings.html#a52e5ea54df8206459139d6fce7f77503',1,'WheelSettings::SaveBinaryState()'],['../class_wheel_settings_w_v.html#a907782aa9c6e6c2dde932b9b01835796',1,'WheelSettingsWV::SaveBinaryState()'],['../class_wheeled_vehicle_controller_settings.html#ae82335336bab2f06e41dc7ae4325f394',1,'WheeledVehicleControllerSettings::SaveBinaryState()'],['../class_skeleton.html#a79a39de0388c130dd03acfb1d9e71f8d',1,'Skeleton::SaveBinaryState()'],['../class_distance_constraint_settings.html#a6ccc7f6a9630c0c6f818a82c37640943',1,'DistanceConstraintSettings::SaveBinaryState()'],['../class_fixed_constraint_settings.html#a88c2bdb8ffe59b43f61165ab2b6b5909',1,'FixedConstraintSettings::SaveBinaryState()'],['../class_linear_curve.html#a7e8f85b447ccb50d077a1fd61da102e0',1,'LinearCurve::SaveBinaryState()'],['../class_body_creation_settings.html#aabf81d68f5c180341800d69b401dddee',1,'BodyCreationSettings::SaveBinaryState()'],['../class_mass_properties.html#a31b51417175f6cd0d840d2c6bce22815',1,'MassProperties::SaveBinaryState()'],['../class_collision_group.html#a687bdb750277759925f00c5fb55b6835',1,'CollisionGroup::SaveBinaryState()'],['../class_group_filter.html#a6f3b0c5ed9ee49737c5f40b63aaac8f1',1,'GroupFilter::SaveBinaryState()'],['../class_group_filter_table.html#a0e3db9e4ef6cf71323126e6ce48fa4dc',1,'GroupFilterTable::SaveBinaryState()'],['../class_physics_material.html#a7e57e5082b30e978c7ddd6a8e77c983e',1,'PhysicsMaterial::SaveBinaryState()'],['../class_physics_material_simple.html#a686edc9c7407485b239d51e634dccd77',1,'PhysicsMaterialSimple::SaveBinaryState()'],['../class_box_shape.html#ab93fc4ffd39a648e2627478638547746',1,'BoxShape::SaveBinaryState()'],['../class_capsule_shape.html#a75a13a9c3137ac60110d6fdbc72bddf3',1,'CapsuleShape::SaveBinaryState()'],['../class_compound_shape.html#a92f328ba37c5ad9d3a5555db36e05003',1,'CompoundShape::SaveBinaryState()'],['../class_convex_hull_shape.html#a358bad64610220b2deb68c4aa821748e',1,'ConvexHullShape::SaveBinaryState()'],['../class_convex_shape.html#aa9c3915087e7b816b583a8041c5701f6',1,'ConvexShape::SaveBinaryState()'],['../class_cylinder_shape.html#ac729688b4dd3357fb1df7d4e445a25d9',1,'CylinderShape::SaveBinaryState()'],['../class_tapered_cylinder_shape.html#a4a9d2c6c60f31564e1fc79d8407bf3a3',1,'TaperedCylinderShape::SaveBinaryState()'],['../class_height_field_shape.html#acc3c82df54796217822e188dd39bd87b',1,'HeightFieldShape::SaveBinaryState()'],['../class_constraint_settings.html#a3123d8d5dc6b127c2d19c95f6fe23a74',1,'ConstraintSettings::SaveBinaryState()'],['../class_cone_constraint_settings.html#a39ca1254ca2bb8c686eec1c92cbe48a3',1,'ConeConstraintSettings::SaveBinaryState()'],['../class_triangle_shape.html#a846c245654d20a47cd41a4d01a1d035f',1,'TriangleShape::SaveBinaryState()'],['../class_tapered_capsule_shape.html#a4f7f63f0180a3b3ac54c7401bc9b32d7',1,'TaperedCapsuleShape::SaveBinaryState()'],['../class_static_compound_shape.html#ac94ac9145e77b8bbcdb36849a26db213',1,'StaticCompoundShape::SaveBinaryState()'],['../class_sphere_shape.html#a593b20c96307bfdda61738cbf6cee311',1,'SphereShape::SaveBinaryState()'],['../class_shape.html#a0035a8aa07e9e071f6a64edb45146363',1,'Shape::SaveBinaryState()'],['../class_scaled_shape.html#a44da6adb8f71a4d68041605fd0250f1b',1,'ScaledShape::SaveBinaryState()'],['../class_rotated_translated_shape.html#ad474354b85d68912f80ce757e0e9713f',1,'RotatedTranslatedShape::SaveBinaryState()'],['../class_plane_shape.html#aa43b150c8cb52005c60a2a2f3c97dffe',1,'PlaneShape::SaveBinaryState()'],['../class_offset_center_of_mass_shape.html#a2ee29aa558cfbc8a0f3b04258b4d5c73',1,'OffsetCenterOfMassShape::SaveBinaryState()'],['../class_mutable_compound_shape.html#a07aa65e4960f1ad78764007a209c13eb',1,'MutableCompoundShape::SaveBinaryState()'],['../class_mesh_shape.html#a2c264f02bc4379a0b28e90a6aa2985ea',1,'MeshShape::SaveBinaryState()']]], + ['savebodystate_5',['savebodystate',['../class_body_manager.html#ab1eb2a2bbf12bbe839475093826b6ceb',1,'BodyManager::SaveBodyState()'],['../class_physics_system.html#a29255e6d9124402e08319bfbf81b8509',1,'PhysicsSystem::SaveBodyState()']]], + ['savematerialstate_6',['savematerialstate',['../class_convex_shape.html#aa9b6442bec38456b3b263bfc8c9e0c34',1,'ConvexShape::SaveMaterialState()'],['../class_height_field_shape.html#acef4504a65c6f299d457b072dbe3789b',1,'HeightFieldShape::SaveMaterialState()'],['../class_mesh_shape.html#a8ee3f73b71810e75590dc6bf31f0a072',1,'MeshShape::SaveMaterialState()'],['../class_plane_shape.html#a6da289fe4c65f80b912ff843493a0c31',1,'PlaneShape::SaveMaterialState()'],['../class_shape.html#a6ff903d54f10469f51e1862b32406845',1,'Shape::SaveMaterialState()']]], + ['saveobjectarray_7',['SaveObjectArray',['../namespace_stream_utils.html#ac77c5ff89ac5ab2af2b924af47ba9199',1,'StreamUtils']]], + ['saveobjectreference_8',['SaveObjectReference',['../namespace_stream_utils.html#af32cd6cffeb28a74dc98d6ba952f3523',1,'StreamUtils']]], + ['savestate_9',['savestate',['../class_soft_body_motion_properties.html#aadcb5dbf36db97843bb74b18e8b02807',1,'SoftBodyMotionProperties::SaveState()'],['../class_gear_constraint.html#a31f12343d049e8c9a48136bb1a103b73',1,'GearConstraint::SaveState()'],['../class_hinge_constraint.html#a5a0a5235be47dfd889f89a4651f36993',1,'HingeConstraint::SaveState()'],['../class_path_constraint.html#a488ab67aba069c0fa0c81194afc74bd1',1,'PathConstraint::SaveState()'],['../class_point_constraint.html#aa6743d4f861f34b303b5bddadb3157d9',1,'PointConstraint::SaveState()'],['../class_pulley_constraint.html#ac37299bf924b5d34e41c8a51c621906a',1,'PulleyConstraint::SaveState()'],['../class_rack_and_pinion_constraint.html#a7af920eb7de9a8e52f80b2ca386fb8a5',1,'RackAndPinionConstraint::SaveState()'],['../class_six_d_o_f_constraint.html#ad6062bc0bb66d6bfa9a57e6e4e62fefa',1,'SixDOFConstraint::SaveState()'],['../class_slider_constraint.html#a7025971cdb5e449293df12e2f4f56e97',1,'SliderConstraint::SaveState()'],['../class_swing_twist_constraint.html#aee888f6c281abbbccc3e33d108716824',1,'SwingTwistConstraint::SaveState()'],['../class_physics_system.html#ae13975e609ff125fa02b922795777824',1,'PhysicsSystem::SaveState()'],['../class_motorcycle_controller.html#aaf36cea2087933532624f37c78052a93',1,'MotorcycleController::SaveState()'],['../class_tracked_vehicle_controller.html#acbb1cc373f9ca7da7c9d79bf8195b257',1,'TrackedVehicleController::SaveState()'],['../class_vehicle_constraint.html#a6bdcc90af7d830f5821534d34be01ff7',1,'VehicleConstraint::SaveState()'],['../class_vehicle_controller.html#ae169fc92f5bfadd69ae4afe3c81e799d',1,'VehicleController::SaveState()'],['../class_vehicle_engine.html#a14fa6274b90508346dedcc3e21864204',1,'VehicleEngine::SaveState()'],['../class_vehicle_track.html#af25ef64c8e7fcdab73dc212f4f40d383',1,'VehicleTrack::SaveState()'],['../class_vehicle_transmission.html#a9424eebce9e6a038862d1a3e66fa94ad',1,'VehicleTransmission::SaveState()'],['../class_character_base.html#ab28f7afaa654cf8461f3638dd01334e0',1,'CharacterBase::SaveState()'],['../class_wheeled_vehicle_controller.html#ad625db11394127fd656e149e5131c10a',1,'WheeledVehicleController::SaveState()'],['../class_distance_constraint.html#a8220e4b735572de4324c0cd1a181150f',1,'DistanceConstraint::SaveState()'],['../class_body.html#a64202a0bd7babbef34094157036bda8c',1,'Body::SaveState()'],['../class_body_manager.html#a5fcbaca9d9a52129a56451ce519e9598',1,'BodyManager::SaveState()'],['../class_motion_properties.html#a9e308e4fb4cbb6c7dad8fe6b65d71aca',1,'MotionProperties::SaveState()'],['../class_character_virtual.html#a4eec1547ca605d2556bf781237b40ee7',1,'CharacterVirtual::SaveState()'],['../struct_character_virtual_1_1_contact.html#ae726dbb4b578dfa2f083a74e3eb5c544',1,'CharacterVirtual::Contact::SaveState()'],['../class_cone_constraint.html#a754754ea8cf871ed812f27bed021fbc9',1,'ConeConstraint::SaveState()'],['../class_constraint.html#a829eb3dda397de5cc7a7799ce959cc8b',1,'Constraint::SaveState()'],['../class_constraint_manager.html#a77ead63fb9a81614e3a9bede90fbe730',1,'ConstraintManager::SaveState()'],['../class_angle_constraint_part.html#ab75081badd77c6854423f45825ff36ce',1,'AngleConstraintPart::SaveState()'],['../class_axis_constraint_part.html#ad17a6a0c982d958f3e96e3b460315e5f',1,'AxisConstraintPart::SaveState()'],['../class_dual_axis_constraint_part.html#a88aa1c3d00a9b0bcdcbbb3fa964dd18f',1,'DualAxisConstraintPart::SaveState()'],['../class_gear_constraint_part.html#afa8089c72687df9833186a2078cd1aa5',1,'GearConstraintPart::SaveState()'],['../class_hinge_rotation_constraint_part.html#aa35cc45b0e9cfbb7063508e24c677879',1,'HingeRotationConstraintPart::SaveState()'],['../class_independent_axis_constraint_part.html#a8982c9bb0de919245c5a463880877a32',1,'IndependentAxisConstraintPart::SaveState()'],['../class_point_constraint_part.html#ae6cd6fa33d18b3f7123a2a093a976257',1,'PointConstraintPart::SaveState()'],['../class_rack_and_pinion_constraint_part.html#ac4c35753b0bb3f976c7fdf4ec88f3ffe',1,'RackAndPinionConstraintPart::SaveState()'],['../class_rotation_euler_constraint_part.html#afda34f355272d02e5daf8103639b22bf',1,'RotationEulerConstraintPart::SaveState()'],['../class_rotation_quat_constraint_part.html#a9ca6e071472fdc3e1ce31b115bfee6e4',1,'RotationQuatConstraintPart::SaveState()'],['../class_swing_twist_constraint_part.html#a901f23c5450f15ee2c8979776fcdbf15',1,'SwingTwistConstraintPart::SaveState()'],['../class_contact_constraint_manager.html#a09b5daefc89dca1489be3afa077cfcc0',1,'ContactConstraintManager::SaveState()'],['../class_fixed_constraint.html#ae23ae7de219a75c7d80d0e9b8af6ea2c',1,'FixedConstraint::SaveState()']]], + ['savesubshapestate_10',['savesubshapestate',['../class_decorated_shape.html#a73313accd26250780d6baa06c7098197',1,'DecoratedShape::SaveSubShapeState()'],['../class_shape.html#a09215d250a425cca2e9b4bed32761bc4',1,'Shape::SaveSubShapeState()'],['../class_compound_shape.html#ac06931859e525bc0b7a2513c7c84176a',1,'CompoundShape::SaveSubShapeState()']]], + ['savewithchildren_11',['savewithchildren',['../class_shape.html#a29511616de01507e714e8187686bc9f1',1,'Shape::SaveWithChildren()'],['../class_body_creation_settings.html#a1fd7d70d7e594158940a126d69c64a77',1,'BodyCreationSettings::SaveWithChildren()'],['../class_soft_body_creation_settings.html#aad762e491883987d0023fd7613b3642b',1,'SoftBodyCreationSettings::SaveWithChildren()']]], + ['savewithmaterials_12',['SaveWithMaterials',['../class_soft_body_shared_settings.html#a04cd0a82ccf0f88cf350f08dc04721db',1,'SoftBodySharedSettings']]], + ['saxisx_13',['saxisx',['../class_d_vec3.html#a6c8bccdc7a9dfb0897f00b73284db110',1,'DVec3::sAxisX()'],['../class_vec3.html#a142cc5c79f08229eb11532c26f1a1e90',1,'Vec3::sAxisX()']]], + ['saxisy_14',['saxisy',['../class_d_vec3.html#a1af180166bc463c9b4c4aa2997399f17',1,'DVec3::sAxisY()'],['../class_vec3.html#a2819718744feddb0bc150c6ccc26fad1',1,'Vec3::sAxisY()']]], + ['saxisz_15',['saxisz',['../class_d_vec3.html#aa3bc7e15bfe4452110934ef29c984626',1,'DVec3::sAxisZ()'],['../class_vec3.html#aa16ac2747950d2e64537f8454872d174',1,'Vec3::sAxisZ()']]], + ['sbiggest_16',['sBiggest',['../class_a_a_box.html#a15167b9943311d8f05cd02a008563f7b',1,'AABox']]], + ['sbuildislands_17',['sBuildIslands',['../class_constraint_manager.html#a8d25eeed84ba6551c00751925af42d78',1,'ConstraintManager']]], + ['scalculatebounds_18',['sCalculateBounds',['../class_debug_renderer.html#a0edac3fd825b7c5498e5f957b4a9707b',1,'DebugRenderer']]], + ['scale_19',['Scale',['../class_mass_properties.html#ada0108c75189e3eb85b7aef5de1d07d8',1,'MassProperties']]], + ['scaleconvexradius_20',['ScaleConvexRadius',['../namespace_scale_helpers.html#a3c182e760f2d4a5b0985b20d50b0c870',1,'ScaleHelpers']]], + ['scaled_21',['scaled',['../class_a_a_box.html#a31ebfa8ddbf9f09cb16aee086e0bbffc',1,'AABox::Scaled()'],['../class_plane.html#ac4f910a7761fd54f014a193b4d53dfb6',1,'Plane::Scaled()']]], + ['scaledshape_22',['scaledshape',['../class_scaled_shape.html#acbf4859938f121f2defeca164a97f851',1,'ScaledShape::ScaledShape(const Shape *inShape, Vec3Arg inScale)'],['../class_scaled_shape.html#aa5ad2391b58581e0d1a12388ecf9b187',1,'ScaledShape::ScaledShape()'],['../class_scaled_shape.html#a38fd4d63da779ec4e15c459e9564a1dd',1,'ScaledShape::ScaledShape(const ScaledShapeSettings &inSettings, ShapeResult &outResult)']]], + ['scalejoints_23',['ScaleJoints',['../class_skeletal_animation.html#a2af19e78e177662f1f8c3c3e5924d55e',1,'SkeletalAnimation']]], + ['scaleshape_24',['ScaleShape',['../class_shape.html#ae4a0954ec23eabd48f0961b16eff750a',1,'Shape']]], + ['scaletomass_25',['ScaleToMass',['../class_mass_properties.html#aff72522796c853cdd8b250082e15a2cf',1,'MassProperties']]], + ['scastshapevsshapelocalspace_26',['sCastShapeVsShapeLocalSpace',['../class_collision_dispatch.html#a684c783f79569805d64cd436800b1d2a',1,'CollisionDispatch']]], + ['scastshapevsshapeworldspace_27',['sCastShapeVsShapeWorldSpace',['../class_collision_dispatch.html#a50ed5fc6de2aa13d6f48ab29f6cf0b7f',1,'CollisionDispatch']]], + ['sclamp_28',['sclamp',['../class_d_vec3.html#a10e8bf45f37556208decfad2ff76de67',1,'DVec3::sClamp()'],['../class_vec3.html#ad9e900bfd5887a8d2e4f8ed70d69ac4e',1,'Vec3::sClamp()']]], + ['scollidepointusingraycast_29',['sCollidePointUsingRayCast',['../class_shape.html#a2fff7d5dd25602bf880f69bd92049652',1,'Shape']]], + ['scollideshapevsshape_30',['scollideshapevsshape',['../class_collision_dispatch.html#a29634d08db5d24ce7c0d5c44b547c075',1,'CollisionDispatch::sCollideShapeVsShape()'],['../class_internal_edge_removing_collector.html#ab96c83ce814ad885a981906891300497',1,'InternalEdgeRemovingCollector::sCollideShapeVsShape()']]], + ['scopeexit_31',['ScopeExit',['../class_scope_exit.html#afee48c54d249f64f1301b085c343141d',1,'ScopeExit']]], + ['screatehalfunitspherebottom_32',['sCreateHalfUnitSphereBottom',['../class_get_triangles_context_vertex_list.html#a9d4eb074fec7cd3b9e13193c963d2199',1,'GetTrianglesContextVertexList']]], + ['screatehalfunitspheretop_33',['sCreateHalfUnitSphereTop',['../class_get_triangles_context_vertex_list.html#afd34abcfd17cd6cc9afdbe23bd104b0f',1,'GetTrianglesContextVertexList']]], + ['screateunitopencylinder_34',['sCreateUnitOpenCylinder',['../class_get_triangles_context_vertex_list.html#aa60e7e00f4d4af9afd41471ba8dfbbb0',1,'GetTrianglesContextVertexList']]], + ['scrossproduct_35',['sCrossProduct',['../class_mat44.html#a23d5a6de1a0058d380a0bf42d263c659',1,'Mat44']]], + ['sdefaultcanmapjoint_36',['sDefaultCanMapJoint',['../class_skeleton_mapper.html#a642ec444197fca150bddcadd5cb85bd5',1,'SkeletonMapper']]], + ['sdiagonal_37',['sDiagonal',['../class_matrix.html#ac818c6fffb4e3a42b562bae0f9fccf71',1,'Matrix']]], + ['sdistancetominshorter_38',['sDistanceToMinShorter',['../class_swing_twist_constraint_part.html#a6588973f6ab2b380c62caaa2d3658f20',1,'SwingTwistConstraintPart']]], + ['semaphore_39',['Semaphore',['../class_semaphore.html#a2bfd704fcdf7d949c23a05fd3eb74582',1,'Semaphore']]], + ['sequals_40',['sequals',['../class_vec4.html#a698a4e6c270545046633b043eb36d21f',1,'Vec4::sEquals()'],['../class_d_vec3.html#ae56eb5609346a7b025d1c6261baf54b7',1,'DVec3::sEquals()'],['../class_u_vec4.html#a7124c8dadba4fa2467bb542e33b664f1',1,'UVec4::sEquals()'],['../class_u_vec8.html#a1652f07d05b02ca36a8f6c35f18c1cb6',1,'UVec8::sEquals()'],['../class_vec3.html#acd0e4130c1b2863b203812f4922b3642',1,'Vec3::sEquals()']]], + ['serializableattribute_41',['serializableattribute',['../class_serializable_attribute.html#ab8ee3ad5a95fdf86aec0422cac3b7a42',1,'SerializableAttribute::SerializableAttribute(const char *inName, uint inMemberOffset, pGetMemberPrimitiveType inGetMemberPrimitiveType, pIsType inIsType, pReadData inReadData, pWriteData inWriteData, pWriteDataType inWriteDataType)'],['../class_serializable_attribute.html#ae8a205bb6313394469d97affd2964046',1,'SerializableAttribute::SerializableAttribute(const SerializableAttribute &inOther, int inBaseOffset)']]], + ['set_42',['set',['../class_result.html#a2e5e698448fcf24d455121278715015e',1,'Result::Set()'],['../class_vehicle_transmission.html#a4d2b3e12b61038846be21623f1c2694e',1,'VehicleTransmission::Set()'],['../class_vec4.html#aec77ea18f4103929cfd9c6237f597a8a',1,'Vec4::Set()'],['../class_quat.html#a9fb5be70301ba85a3292119d71a5e9c4',1,'Quat::Set()'],['../class_result.html#a2d4677e046c9d429f9a512342bdd479b',1,'Result::Set()'],['../class_ray_inv_direction.html#ac9569874f14ade61e966744af2abdc79',1,'RayInvDirection::Set()'],['../class_d_vec3.html#a6673601fc4d03869820519fa95cb5ed1',1,'DVec3::Set()'],['../class_vec3.html#ad124c5400eba8ee0b0cf429553c4ed2c',1,'Vec3::Set()']]], + ['setallowsleeping_43',['SetAllowSleeping',['../class_body.html#a4fcb04dbca94ff4cf4b48289f26c26b4',1,'Body']]], + ['setangulardamping_44',['SetAngularDamping',['../class_motion_properties.html#ae036052c7d094e459a17cdc6c9b8a0ce',1,'MotionProperties']]], + ['setangularvelocity_45',['setangularvelocity',['../class_body_interface.html#a4c18bf3267f16f16294385150f36824c',1,'BodyInterface::SetAngularVelocity()'],['../class_body.html#a15d802457f106f2255a6401ea0aaee9f',1,'Body::SetAngularVelocity()'],['../class_motion_properties.html#aa647afa51bbc165ebfa4f791fbb1f71f',1,'MotionProperties::SetAngularVelocity()'],['../class_wheel.html#a244412d3b7d9216cdf7d8f364d128b60',1,'Wheel::SetAngularVelocity()']]], + ['setangularvelocityclamped_46',['setangularvelocityclamped',['../class_motion_properties.html#a2b76b04c1ab039a881788d8a4ae7c115',1,'MotionProperties::SetAngularVelocityClamped()'],['../class_body.html#a9033b203f8511c35dca0dfc8ca1c25ca',1,'Body::SetAngularVelocityClamped(Vec3Arg inAngularVelocity)']]], + ['setapplygyroscopicforce_47',['SetApplyGyroscopicForce',['../class_body.html#acb02850d1a8baecc879d224f47e9ab70',1,'Body']]], + ['setaxisx_48',['setaxisx',['../class_mat44.html#a04aad46839683a6d3d82a400c3bbe576',1,'Mat44::SetAxisX()'],['../class_d_mat44.html#a2625f7239b7fd46e78686d1caa6dd49b',1,'DMat44::SetAxisX(Vec3Arg inV)']]], + ['setaxisy_49',['setaxisy',['../class_d_mat44.html#a69b208af491fd37ab80b8652f24376b8',1,'DMat44::SetAxisY()'],['../class_mat44.html#ada218e0e59422cb1b0b38a534b7379b8',1,'Mat44::SetAxisY()']]], + ['setaxisz_50',['setaxisz',['../class_d_mat44.html#a22e3581a9433d7d96eb62824d78dac2c',1,'DMat44::SetAxisZ()'],['../class_mat44.html#a469e83f0fb0c2975b4506c682721c3e3',1,'Mat44::SetAxisZ()']]], + ['setbackfacemode_51',['setbackfacemode',['../class_shape_cast_settings.html#a635da1ab982bb250bcd497213012c189',1,'ShapeCastSettings::SetBackFaceMode()'],['../class_ray_cast_settings.html#a639a4c728fbe093ed715399053bf53ae',1,'RayCastSettings::SetBackFaceMode()']]], + ['setbarrier_52',['SetBarrier',['../class_job_system_1_1_job.html#a83a4dee7e40f01cab6eafbafa53a4efc',1,'JobSystem::Job']]], + ['setbodyactivationlistener_53',['setbodyactivationlistener',['../class_physics_system.html#ae7c05e21f93638e9b9eb2c52dd6d850f',1,'PhysicsSystem::SetBodyActivationListener()'],['../class_body_manager.html#a5f4202f0ef087177b642a93c13d82d9a',1,'BodyManager::SetBodyActivationListener()']]], + ['setbodyfilter_54',['SetBodyFilter',['../class_vehicle_collision_tester.html#a46d45f0e1c06f4c8b08aba185e9279ac',1,'VehicleCollisionTester']]], + ['setbodyobjectlayerinternal_55',['SetBodyObjectLayerInternal',['../class_body_manager.html#ae42a0183320aaebe459af6b0cc937daf',1,'BodyManager']]], + ['setbrakeinput_56',['setbrakeinput',['../class_tracked_vehicle_controller.html#ae97359340349c437523f88b953a70759',1,'TrackedVehicleController::SetBrakeInput()'],['../class_wheeled_vehicle_controller.html#a274d8e6bb7aca40c3f3d467de6f744eb',1,'WheeledVehicleController::SetBrakeInput()']]], + ['setbroadphaselayerfilter_57',['SetBroadPhaseLayerFilter',['../class_vehicle_collision_tester.html#aa70cb825859a651d7693b78a906eee52',1,'VehicleCollisionTester']]], + ['setbroadphaselayername_58',['setbroadphaselayername',['../class_broad_phase_layer_interface_mask.html#a28a251385bdfff0681491b5bdabcb22a',1,'BroadPhaseLayerInterfaceMask::SetBroadPhaseLayerName()'],['../class_broad_phase_layer_interface_table.html#a62cece34b11f4cd2d37c063b7dc32116',1,'BroadPhaseLayerInterfaceTable::SetBroadPhaseLayerName()']]], + ['setcamerapos_59',['SetCameraPos',['../class_debug_renderer_simple.html#a35eeca6a1fcebb6ec2392798b6b62358',1,'DebugRendererSimple']]], + ['setcharactervscharactercollision_60',['SetCharacterVsCharacterCollision',['../class_character_virtual.html#a3982b9711188db9d30ee0dab32a81d0b',1,'CharacterVirtual']]], + ['setcollidekinematicvsnondynamic_61',['SetCollideKinematicVsNonDynamic',['../class_body.html#adefe521957195c57e06a905431160d10',1,'Body']]], + ['setcollisiongroup_62',['SetCollisionGroup',['../class_body.html#a16ebf80baa257da06fdf4996a8b22476',1,'Body']]], + ['setcolumn3_63',['setcolumn3',['../class_d_mat44.html#a1d996bd7e8890fd22829cdc6bfbc261b',1,'DMat44::SetColumn3()'],['../class_mat44.html#a1659c59725a85b2bb991e333381c87fe',1,'Mat44::SetColumn3()']]], + ['setcolumn4_64',['setcolumn4',['../class_d_mat44.html#a05be364fe7c3a73e6aae032f3a570743',1,'DMat44::SetColumn4()'],['../class_mat44.html#ace29aeaafa5bbff8a159105fee78e2d2',1,'Mat44::SetColumn4()']]], + ['setcombinefriction_65',['setcombinefriction',['../class_contact_constraint_manager.html#aae82d70c097d2c5a514faebd73ee4873',1,'ContactConstraintManager::SetCombineFriction()'],['../class_physics_system.html#ae1cc3e726b7e186f642c7da5f6c6a2c2',1,'PhysicsSystem::SetCombineFriction()'],['../class_vehicle_constraint.html#a1147d607170dca53a0b3be6747022a55',1,'VehicleConstraint::SetCombineFriction()']]], + ['setcombinerestitution_66',['setcombinerestitution',['../class_physics_system.html#aadad532dfda2006fd3b699116e9fed08',1,'PhysicsSystem::SetCombineRestitution()'],['../class_contact_constraint_manager.html#ae324c787f7d2ab43ed3adb13d3e7f24e',1,'ContactConstraintManager::SetCombineRestitution()']]], + ['setcomponent_67',['setcomponent',['../class_d_vec3.html#a5563e51b263bc4c08fcfbc2babd3a7a5',1,'DVec3::SetComponent()'],['../class_vec3.html#a1ef1f1ce4031e9ecd4545799525281d8',1,'Vec3::SetComponent()']]], + ['setcompounduserdata_68',['SetCompoundUserData',['../class_compound_shape.html#a79a6d4592f894bfc0ed0496bdce68e98',1,'CompoundShape']]], + ['setconstant_69',['SetConstant',['../class_plane.html#a25c2359dcb8d679f5730ff10119cba45',1,'Plane']]], + ['setconstraintpriority_70',['SetConstraintPriority',['../class_constraint.html#a4b32ce7efd330ecf878f8ace4e0dd151',1,'Constraint']]], + ['setconstraints_71',['setconstraints',['../class_gear_constraint.html#a7464b55c817e3ca115ea18537245ccee',1,'GearConstraint::SetConstraints()'],['../class_rack_and_pinion_constraint.html#a988486107b258cdec71cd2bff44c8080',1,'RackAndPinionConstraint::SetConstraints()']]], + ['setcontactlistener_72',['setcontactlistener',['../class_contact_constraint_manager.html#acf262d3235f4eea01cd2aa8a9a3bfe83',1,'ContactConstraintManager::SetContactListener()'],['../class_physics_system.html#ade7967ad5ff4a67d255cc6fb956943c8',1,'PhysicsSystem::SetContactListener()']]], + ['setcontext_73',['SetContext',['../class_collision_collector.html#ada5357990f959132a05d4d4d21f8c7b3',1,'CollisionCollector']]], + ['setcurrentrpm_74',['SetCurrentRPM',['../class_vehicle_engine.html#ab37d0e87f872355e595960fa18510861',1,'VehicleEngine']]], + ['setdensity_75',['setdensity',['../class_convex_shape_settings.html#a752045fcec2dba15556b60cc249590e5',1,'ConvexShapeSettings::SetDensity()'],['../class_convex_shape.html#a1ba0e0da5502685fd59888f3bc9cb73e',1,'ConvexShape::SetDensity()']]], + ['setdiagonal_76',['SetDiagonal',['../class_matrix.html#abf7221c00ea5a8e8bdcbac0c9082d38e',1,'Matrix']]], + ['setdiagonal3_77',['SetDiagonal3',['../class_mat44.html#ab385ba1f663f9de2137d816c0fc4fb3f',1,'Mat44']]], + ['setdiagonal4_78',['SetDiagonal4',['../class_mat44.html#a335f4cec86c172f07bd0667909a54a7e',1,'Mat44']]], + ['setdifferentiallimitedslipratio_79',['SetDifferentialLimitedSlipRatio',['../class_wheeled_vehicle_controller.html#a18c2ead8335924c4225b2580b2fd6f31',1,'WheeledVehicleController']]], + ['setdistance_80',['SetDistance',['../class_distance_constraint.html#acac4686ff8fd7d2e412af5cfcaea8d2c',1,'DistanceConstraint']]], + ['setdrawconstraintsize_81',['SetDrawConstraintSize',['../class_constraint.html#ae26efcf11518c9b1c2e15821ca7d8937',1,'Constraint']]], + ['setdriverinput_82',['setdriverinput',['../class_wheeled_vehicle_controller.html#a3a3b66c895677f66890ddde7b5e6f9ba',1,'WheeledVehicleController::SetDriverInput()'],['../class_tracked_vehicle_controller.html#af01b954bba5b8876b3e33d0303f516ed',1,'TrackedVehicleController::SetDriverInput()']]], + ['setembedded_83',['SetEmbedded',['../class_ref_target.html#a3befa746ea517453572f6f4f5fc3b099',1,'RefTarget']]], + ['setempty_84',['SetEmpty',['../class_a_a_box.html#a5c69aa69cf37132aa62dc0b58571e79c',1,'AABox']]], + ['setenabled_85',['SetEnabled',['../class_constraint.html#aa6621fbefd246003aece1e9be8a169cb',1,'Constraint']]], + ['setenableskinconstraints_86',['SetEnableSkinConstraints',['../class_soft_body_motion_properties.html#ae8b38e6b097ed9f37d9b8e844c200a4f',1,'SoftBodyMotionProperties']]], + ['setenhancedinternaledgeremoval_87',['setenhancedinternaledgeremoval',['../class_character_virtual.html#a1596c6b7df4854e170f59416c67aeabc',1,'CharacterVirtual::SetEnhancedInternalEdgeRemoval()'],['../class_body.html#a87c94617c51d1d35e49b64b0a29d18a4',1,'Body::SetEnhancedInternalEdgeRemoval()']]], + ['seterror_88',['seterror',['../class_result.html#a22ac380ffc00f33d49466729d22241b0',1,'Result::SetError(const char *inError)'],['../class_result.html#a07ab82eb7f68bae977f6d50dde14dc1f',1,'Result::SetError(String &&inError)'],['../class_result.html#ad71493b9c42c291fed54ffd80f9b75ab',1,'Result::SetError(const string_view &inError)']]], + ['setforcelimit_89',['SetForceLimit',['../class_motor_settings.html#a7dbbf359da6a861e6876f702650dd5ea',1,'MotorSettings']]], + ['setforcelimits_90',['SetForceLimits',['../class_motor_settings.html#a35ce9e0a888fed7059694121e7d8e66f',1,'MotorSettings']]], + ['setforwardinput_91',['setforwardinput',['../class_tracked_vehicle_controller.html#af035163b8e7f810c7c397186c35d577a',1,'TrackedVehicleController::SetForwardInput()'],['../class_wheeled_vehicle_controller.html#a219dd9b901cf12dc8e8a6eb2fa8d6915',1,'WheeledVehicleController::SetForwardInput()']]], + ['setfriction_92',['setfriction',['../class_body.html#af3576faa64307d6d9318a7c0dad47d21',1,'Body::SetFriction()'],['../class_body_interface.html#affaf38fde1489b775c179303ed67c0cc',1,'BodyInterface::SetFriction()']]], + ['setgravity_93',['SetGravity',['../class_physics_system.html#ad09c12009bbcb0d0e6dbfd9582593be4',1,'PhysicsSystem']]], + ['setgravityfactor_94',['setgravityfactor',['../class_body_interface.html#a2171a36d0ff2b98c019ed4b0bcb0db39',1,'BodyInterface::SetGravityFactor()'],['../class_motion_properties.html#a8cc6486eb03942da485948ba1cadb78c',1,'MotionProperties::SetGravityFactor()']]], + ['setgroupfilter_95',['SetGroupFilter',['../class_collision_group.html#a24632cad19f63669929509eceb904290',1,'CollisionGroup']]], + ['setgroupid_96',['setgroupid',['../class_collision_group.html#ab49afbb0cbf8526e2b1ee89d8f2a34dd',1,'CollisionGroup::SetGroupID()'],['../class_ragdoll.html#add1a811191c5e75e489598594123e85b',1,'Ragdoll::SetGroupID()']]], + ['sethalfconeangle_97',['SetHalfConeAngle',['../class_cone_constraint.html#ad50d26fc50088ee00e7bb9a7248f5fc4',1,'ConeConstraint']]], + ['sethandbrakeinput_98',['SetHandBrakeInput',['../class_wheeled_vehicle_controller.html#a7d48f4399fa3ed50e559b12017664510',1,'WheeledVehicleController']]], + ['setheights_99',['SetHeights',['../class_height_field_shape.html#a2513680991c5082396e8226ab15deb44',1,'HeightFieldShape']]], + ['sethitreductioncosmaxangle_100',['SetHitReductionCosMaxAngle',['../class_character_virtual.html#ac74cd57b392ad9570e419251ce2d70c8',1,'CharacterVirtual']]], + ['setidentity_101',['SetIdentity',['../class_matrix.html#aa38198e13dcdd62e61e60cb9b0e93337',1,'Matrix']]], + ['setinbroadphaseinternal_102',['SetInBroadPhaseInternal',['../class_body.html#aa600fe2037b7ded7a84a8bf479213ebc',1,'Body']]], + ['setinnerbodyshape_103',['SetInnerBodyShape',['../class_character_virtual.html#af94e73cd650ddac2b76b55d18dca302e',1,'CharacterVirtual']]], + ['setinversed_104',['SetInversed',['../class_matrix.html#a1e2531318f995ae102d4428c3bdba738',1,'Matrix']]], + ['setinversed3x3_105',['SetInversed3x3',['../class_mat44.html#a814c04077820ea83f444ccc5ae48299f',1,'Mat44']]], + ['setinverseinertia_106',['SetInverseInertia',['../class_motion_properties.html#a509aafb031d301cbef7e2efdd16ee3dd',1,'MotionProperties']]], + ['setinversemass_107',['SetInverseMass',['../class_motion_properties.html#a9bf9425aab99ea920b73577819e579b1',1,'MotionProperties']]], + ['setislandindexinternal_108',['SetIslandIndexInternal',['../class_motion_properties.html#a7609b8a4460b1fb13fa4079beff33e92',1,'MotionProperties']]], + ['setislooping_109',['SetIsLooping',['../class_path_constraint_path.html#aae13b9ca0a67ed16657f15c1d9b28d4b',1,'PathConstraintPath']]], + ['setissensor_110',['SetIsSensor',['../class_body.html#a5d8e1f66eed163868a633cdb93859f77',1,'Body']]], + ['setlayer_111',['SetLayer',['../class_character.html#ac1def305b85f0a56932686fcdaad764f',1,'Character']]], + ['setleansmoothingfactor_112',['SetLeanSmoothingFactor',['../class_motorcycle_controller.html#a209159d85e6c261382551e7fe12afd18',1,'MotorcycleController']]], + ['setleanspringconstant_113',['SetLeanSpringConstant',['../class_motorcycle_controller.html#aaa1568ff36c906b58c45ea69724bb67a',1,'MotorcycleController']]], + ['setleanspringdamping_114',['SetLeanSpringDamping',['../class_motorcycle_controller.html#aaf88f2fed53bad1a7fa94521097b68a5',1,'MotorcycleController']]], + ['setleanspringintegrationcoefficient_115',['SetLeanSpringIntegrationCoefficient',['../class_motorcycle_controller.html#af2c273bd46e6a59e6b818949d294d4ef',1,'MotorcycleController']]], + ['setleanspringintegrationcoefficientdecay_116',['SetLeanSpringIntegrationCoefficientDecay',['../class_motorcycle_controller.html#adc5db8e0b1290ccf6ea77676d129cb1a',1,'MotorcycleController']]], + ['setleftratio_117',['SetLeftRatio',['../class_tracked_vehicle_controller.html#a7865699eb6947060c4a117d67e39806d',1,'TrackedVehicleController']]], + ['setlength_118',['SetLength',['../class_pulley_constraint.html#a3c250975bff80256a8d79f04bed8aeaa',1,'PulleyConstraint']]], + ['setlimitedaxis_119',['SetLimitedAxis',['../class_six_d_o_f_constraint_settings.html#ad707d50d3c830f44ea2f10e3215a6789',1,'SixDOFConstraintSettings']]], + ['setlimits_120',['setlimits',['../class_swing_twist_constraint_part.html#aad526f8386b3e605f88fddf583ec215b',1,'SwingTwistConstraintPart::SetLimits()'],['../class_hinge_constraint.html#a7ca6ee7cd4daf818ce62fd868f0b0fdc',1,'HingeConstraint::SetLimits()'],['../class_slider_constraint.html#afef30c98d651fe84367f252c3f88b21f',1,'SliderConstraint::SetLimits()']]], + ['setlimitsspringsettings_121',['setlimitsspringsettings',['../class_hinge_constraint.html#a2944e53bdf5d783718b5d40dbd03b85d',1,'HingeConstraint::SetLimitsSpringSettings()'],['../class_slider_constraint.html#ac8aa5fb532cce5b5b34058534f08c004',1,'SliderConstraint::SetLimitsSpringSettings()'],['../class_six_d_o_f_constraint.html#a0a7933aafb327871eb4a45e2a2c79fc0',1,'SixDOFConstraint::SetLimitsSpringSettings()'],['../class_distance_constraint.html#a19b91e04a929e9ffac559677087875fc',1,'DistanceConstraint::SetLimitsSpringSettings()']]], + ['setlinearandangularvelocity_122',['setlinearandangularvelocity',['../class_body_interface.html#a77222f0f950004cddea8170eb825dcaa',1,'BodyInterface::SetLinearAndAngularVelocity()'],['../class_character.html#a8daf9cb1fdba5d3a75599d57e156b57b',1,'Character::SetLinearAndAngularVelocity()'],['../class_ragdoll.html#a8ba64ad182563d9110980155b86538bc',1,'Ragdoll::SetLinearAndAngularVelocity()']]], + ['setlineardamping_123',['SetLinearDamping',['../class_motion_properties.html#acebdeeddc6f51f570414a094cf668992',1,'MotionProperties']]], + ['setlinearvelocity_124',['setlinearvelocity',['../class_ragdoll.html#ac0b96e2a568868b67792889d26137ec8',1,'Ragdoll::SetLinearVelocity()'],['../class_character.html#a03d43dd12da2501fbb643bdbe7daef46',1,'Character::SetLinearVelocity()'],['../class_motion_properties.html#a083c86092c13479288dcc63c02e11f30',1,'MotionProperties::SetLinearVelocity()'],['../class_body_interface.html#a49831752041e13262dff231f4e404302',1,'BodyInterface::SetLinearVelocity()'],['../class_body.html#a603b71ad2f5dbb76fd80fa9dff8be7f9',1,'Body::SetLinearVelocity()'],['../class_character_virtual.html#a25da7eb8e9ff5316e357cbf59027b57e',1,'CharacterVirtual::SetLinearVelocity()']]], + ['setlinearvelocityclamped_125',['setlinearvelocityclamped',['../class_motion_properties.html#a5e9dad9b92aa67163bed3200709be901',1,'MotionProperties::SetLinearVelocityClamped()'],['../class_body.html#a5e1e46dac04eaf5fbaed87d6d781480d',1,'Body::SetLinearVelocityClamped()']]], + ['setlistener_126',['SetListener',['../class_character_virtual.html#af7bfe39cc6f67eeb4cd8d4d453d8b179',1,'CharacterVirtual']]], + ['setmass_127',['SetMass',['../class_character_virtual.html#a93a6110e80e08ef092d7f010a45e3bb5',1,'CharacterVirtual']]], + ['setmassandinertiaofsolidbox_128',['SetMassAndInertiaOfSolidBox',['../class_mass_properties.html#a8e7cacca84047cc12cf6aaf9f5bf2d95',1,'MassProperties']]], + ['setmassproperties_129',['SetMassProperties',['../class_motion_properties.html#ae935a749f1bb737668ba853c4b1d54df',1,'MotionProperties']]], + ['setmaterial_130',['SetMaterial',['../class_convex_shape.html#a39b6d0d9db468564c90488e41b737a08',1,'ConvexShape']]], + ['setmaterials_131',['SetMaterials',['../class_height_field_shape.html#adbd4df5017efbafc07c4187c8c6faf36',1,'HeightFieldShape']]], + ['setmaxangularvelocity_132',['SetMaxAngularVelocity',['../class_motion_properties.html#a6665e01c407036815ac084edcf28d53f',1,'MotionProperties']]], + ['setmaxfriction_133',['SetMaxFriction',['../class_six_d_o_f_constraint.html#ab28cc63599921c1b582f71549be647b3',1,'SixDOFConstraint']]], + ['setmaxfrictionforce_134',['setmaxfrictionforce',['../class_path_constraint.html#ad6901dcd63274ede819db76d1e68607e',1,'PathConstraint::SetMaxFrictionForce()'],['../class_slider_constraint.html#a029801fabc3867da63ede853dea7627f',1,'SliderConstraint::SetMaxFrictionForce()']]], + ['setmaxfrictiontorque_135',['setmaxfrictiontorque',['../class_hinge_constraint.html#ad693d37205991f105a85897e6bfe5732',1,'HingeConstraint::SetMaxFrictionTorque()'],['../class_swing_twist_constraint.html#abf0d635feedfe665fa4f7a6e566bf168',1,'SwingTwistConstraint::SetMaxFrictionTorque()']]], + ['setmaxlinearvelocity_136',['SetMaxLinearVelocity',['../class_motion_properties.html#ac452632a71e6ba6de822339be8c3ee80',1,'MotionProperties']]], + ['setmaxnumhits_137',['SetMaxNumHits',['../class_character_virtual.html#a683ab8265d9c39c512864b8041c675aa',1,'CharacterVirtual']]], + ['setmaxpitchrollangle_138',['SetMaxPitchRollAngle',['../class_vehicle_constraint.html#a54aac9425dccebec4565b02df9351641',1,'VehicleConstraint']]], + ['setmaxslopeangle_139',['SetMaxSlopeAngle',['../class_character_base.html#a0c2099dfbf12c1bd6f839a3eda5c9726',1,'CharacterBase']]], + ['setmaxstrength_140',['SetMaxStrength',['../class_character_virtual.html#a5e3e1a90e94534669194d929a4f15700',1,'CharacterVirtual']]], + ['setmotionquality_141',['setmotionquality',['../class_body_manager.html#af449412eb723ffe93a193d9b9aa86f3b',1,'BodyManager::SetMotionQuality()'],['../class_body_interface.html#a38ce02df9d2363eec48af42ba61741bf',1,'BodyInterface::SetMotionQuality()']]], + ['setmotiontype_142',['setmotiontype',['../class_body.html#ab5bda1ea540be9e8383b974c21d5771a',1,'Body::SetMotionType()'],['../class_body_interface.html#a18efc1ae5268eabc115fe7ba7ed170b9',1,'BodyInterface::SetMotionType()']]], + ['setmotorstate_143',['setmotorstate',['../class_hinge_constraint.html#ab4edc1ef87211c5b093f9690835bd2c1',1,'HingeConstraint::SetMotorState()'],['../class_six_d_o_f_constraint.html#a4294f297ae2bdf4f736eb137694ecc44',1,'SixDOFConstraint::SetMotorState()'],['../class_slider_constraint.html#aa1c23dfc17c263c4d67d42913844a6f3',1,'SliderConstraint::SetMotorState()']]], + ['setname_144',['setname',['../class_r_t_t_i.html#ab6e03f58fa10480bf87c2f91b5f374e8',1,'RTTI::SetName()'],['../class_serializable_attribute.html#a9ce63d609aeb2c8fcdff058957d4644f',1,'SerializableAttribute::SetName()'],['../class_quad_tree.html#adf7d2b7bd81dd1d8a533bfa5df4a239c',1,'QuadTree::SetName()']]], + ['setnormal_145',['SetNormal',['../class_plane.html#aa792e95ef15c14271bdf9c1d43c85d90',1,'Plane']]], + ['setnormalhalfconeangle_146',['SetNormalHalfConeAngle',['../class_swing_twist_constraint.html#a5bdb29744f4e345d3366312d3d77d85c',1,'SwingTwistConstraint']]], + ['setnumbuckets_147',['SetNumBuckets',['../class_lock_free_hash_map.html#a7c6ead3c7440e19213eac4119236964d',1,'LockFreeHashMap']]], + ['setnumiterations_148',['SetNumIterations',['../class_soft_body_motion_properties.html#aac3e3c0fc3d111fbe3765188b781c7e0',1,'SoftBodyMotionProperties']]], + ['setnumpositionsteps_149',['SetNumPositionSteps',['../class_island_builder.html#a576814bc0405702b74174635e0b44d6d',1,'IslandBuilder']]], + ['setnumpositionstepsoverride_150',['setnumpositionstepsoverride',['../class_motion_properties.html#ae261a122f450a34d6a9d06e66d21e7f0',1,'MotionProperties::SetNumPositionStepsOverride()'],['../class_constraint.html#a746a3c987f34f2573c0add9ddd56f390',1,'Constraint::SetNumPositionStepsOverride()']]], + ['setnumstepsbetweencollisiontestactive_151',['SetNumStepsBetweenCollisionTestActive',['../class_vehicle_constraint.html#a0a7585ead6b614188ac35590495843e1',1,'VehicleConstraint']]], + ['setnumstepsbetweencollisiontestinactive_152',['SetNumStepsBetweenCollisionTestInactive',['../class_vehicle_constraint.html#a441d4897905f6b4e950cc885dd4a4c63',1,'VehicleConstraint']]], + ['setnumthreads_153',['SetNumThreads',['../class_job_system_thread_pool.html#a4b7f3271d9bd98562563d4dfcaa40c9d',1,'JobSystemThreadPool']]], + ['setnumvelocitystepsoverride_154',['setnumvelocitystepsoverride',['../class_motion_properties.html#a167bd8cbbb918e630e2b297841165234',1,'MotionProperties::SetNumVelocityStepsOverride()'],['../class_constraint.html#a4c9b56bbae7de5094241daddc6975059',1,'Constraint::SetNumVelocityStepsOverride()']]], + ['setobjectlayer_155',['setobjectlayer',['../class_vehicle_collision_tester.html#af09e06e5ebd7ea9311d657f14725dd5e',1,'VehicleCollisionTester::SetObjectLayer()'],['../class_body_interface.html#a2c1a6660958d7f52b37e45587ccbab92',1,'BodyInterface::SetObjectLayer()']]], + ['setobjectlayerfilter_156',['SetObjectLayerFilter',['../class_vehicle_collision_tester.html#aea6c61dd5cc33e4e27ec5c5a3aa043bc',1,'VehicleCollisionTester']]], + ['setpath_157',['SetPath',['../class_path_constraint.html#abd2aea13b507f29abea6a5b3d8e0d6da',1,'PathConstraint']]], + ['setpenetrationrecoveryspeed_158',['SetPenetrationRecoverySpeed',['../class_character_virtual.html#ad767e40abd649085a9b2d8df813dbc8c',1,'CharacterVirtual']]], + ['setphysicssettings_159',['SetPhysicsSettings',['../class_physics_system.html#a2f81c29dfb88dd7e0711caffcd2ebc22',1,'PhysicsSystem']]], + ['setplanehalfconeangle_160',['SetPlaneHalfConeAngle',['../class_swing_twist_constraint.html#a00fb39bbe9a4ea59b363c2d60ca959ff',1,'SwingTwistConstraint']]], + ['setpoint1_161',['SetPoint1',['../class_point_constraint.html#aa6ac6b94199f9b28b59a0e2c1a07c85d',1,'PointConstraint']]], + ['setpoint2_162',['SetPoint2',['../class_point_constraint.html#a2f6aa496e61f2bf9e6cc4a11cde0159b',1,'PointConstraint']]], + ['setpose_163',['setpose',['../class_ragdoll.html#a789ec3bece447ec849e7ecb109c15a9c',1,'Ragdoll::SetPose(RVec3Arg inRootOffset, const Mat44 *inJointMatrices, bool inLockBodies=true)'],['../class_ragdoll.html#a535e76f7fb7bfee484d82570a3066ae7',1,'Ragdoll::SetPose(const SkeletonPose &inPose, bool inLockBodies=true)']]], + ['setposition_164',['setposition',['../class_character.html#a55a75b63d6ac90d08399e5bcd48346d1',1,'Character::SetPosition()'],['../class_body_interface.html#a19838143d494d7d0ddb4fb0226ca2cad',1,'BodyInterface::SetPosition()'],['../class_character_virtual.html#af3622b341d017712981d6d26de99fe5c',1,'CharacterVirtual::SetPosition()']]], + ['setpositionandrotation_165',['setpositionandrotation',['../class_body_interface.html#a369e907b665f5814d864790173062d7f',1,'BodyInterface::SetPositionAndRotation()'],['../class_character.html#a17120469ace1ad77f381e4ab2223ad65',1,'Character::SetPositionAndRotation()']]], + ['setpositionandrotationinternal_166',['SetPositionAndRotationInternal',['../class_body.html#a1f42d6ce3b4ce87fce69561a4d2a4442',1,'Body']]], + ['setpositionandrotationwhenchanged_167',['SetPositionAndRotationWhenChanged',['../class_body_interface.html#a12c9c1534c1c6441c51f663a29eb4daf',1,'BodyInterface']]], + ['setpositioncom_168',['SetPositionCOM',['../struct_compound_shape_1_1_sub_shape.html#ad02db108fee2f4caeb4d2709a4f14671',1,'CompoundShape::SubShape']]], + ['setpositionmotorstate_169',['SetPositionMotorState',['../class_path_constraint.html#a668c00d9305747b19511d13f4947ca33',1,'PathConstraint']]], + ['setpositionrotationandvelocity_170',['SetPositionRotationAndVelocity',['../class_body_interface.html#ad7e39bea301498df0e27024869a2cff9',1,'BodyInterface']]], + ['setpostcollidecallback_171',['SetPostCollideCallback',['../class_vehicle_constraint.html#ab3d5ac04f11fada0c2bc464b187a5986',1,'VehicleConstraint']]], + ['setpoststepcallback_172',['SetPostStepCallback',['../class_vehicle_constraint.html#af3e47429a8c1150b9e6c01b4b8059a5e',1,'VehicleConstraint']]], + ['setpressure_173',['SetPressure',['../class_soft_body_motion_properties.html#a6d55ac6913186e4f8e715e5b4470e657',1,'SoftBodyMotionProperties']]], + ['setprestepcallback_174',['SetPreStepCallback',['../class_vehicle_constraint.html#ad6330e63345c4ab1e665edd015aab35b',1,'VehicleConstraint']]], + ['setratio_175',['setratio',['../class_gear_constraint_settings.html#a739f3d8c130d47170adb958626978b5a',1,'GearConstraintSettings::SetRatio()'],['../class_rack_and_pinion_constraint_settings.html#a90d5633a453c1921fa1f24480bba7944',1,'RackAndPinionConstraintSettings::SetRatio()']]], + ['setrestitution_176',['setrestitution',['../class_body.html#a6589465cd947d75f90b3975e6bdfd96e',1,'Body::SetRestitution()'],['../class_body_interface.html#a7fb8b9b6e59dfe3f78f9e8e3c2776675',1,'BodyInterface::SetRestitution()']]], + ['setrightinput_177',['SetRightInput',['../class_wheeled_vehicle_controller.html#aec55421b09ff5dc8421e133c01561da1',1,'WheeledVehicleController']]], + ['setrightratio_178',['SetRightRatio',['../class_tracked_vehicle_controller.html#a34fbd77864cfdbdb0e4bce68adff3d73',1,'TrackedVehicleController']]], + ['setrootoffset_179',['SetRootOffset',['../class_skeleton_pose.html#a83a440cd06f24159b01879670c4bf856',1,'SkeletonPose']]], + ['setrotation_180',['setrotation',['../class_body_interface.html#a199aec558e03ec611fc32e2e4fcbfc07',1,'BodyInterface::SetRotation()'],['../struct_compound_shape_1_1_sub_shape.html#aeb79df4468aca72a42c1c8dd68f564c1',1,'CompoundShape::SubShape::SetRotation()'],['../class_character_virtual.html#ac0b74d1e4ec29a6a4853bc8cbb72578d',1,'CharacterVirtual::SetRotation()'],['../class_character.html#a92dd19169cbf86dca78b423891eb2819',1,'Character::SetRotation()'],['../class_mat44.html#abd5dc78238403195cbd0cde87f40af49',1,'Mat44::SetRotation()'],['../class_d_mat44.html#a896557b839b1a9126819a44a092f6bb6',1,'DMat44::SetRotation()']]], + ['setrotationangle_181',['SetRotationAngle',['../class_wheel.html#aaa68b8841db1daed297d8c64ed19bef2',1,'Wheel']]], + ['setrotationlimits_182',['SetRotationLimits',['../class_six_d_o_f_constraint.html#ae203835b5e57cbdb0acd755bf65e87fd',1,'SixDOFConstraint']]], + ['setrpmmeter_183',['setrpmmeter',['../class_tracked_vehicle_controller.html#a678c77ec33688161c4f2ee0a2521deb3',1,'TrackedVehicleController::SetRPMMeter()'],['../class_wheeled_vehicle_controller.html#a65374d5dabe3c20c393a69ed780de89f',1,'WheeledVehicleController::SetRPMMeter()']]], + ['setshape_184',['setshape',['../class_character.html#a15f5407b7ccbe01588462989a4e0cfda',1,'Character::SetShape()'],['../class_body_creation_settings.html#a0c74dee7b551bce3c0a7477283f27145',1,'BodyCreationSettings::SetShape()'],['../class_body_interface.html#a051a4064706509e2b1c4dcc6d688676d',1,'BodyInterface::SetShape()'],['../class_character_virtual.html#a8149fcb7a9f932dd5154e23588e20763',1,'CharacterVirtual::SetShape()']]], + ['setshapeinternal_185',['SetShapeInternal',['../class_body.html#a63941e4493131921269e74ba993a6ccb',1,'Body']]], + ['setshapeoffset_186',['SetShapeOffset',['../class_character_virtual.html#a6fd639e0938a0c068ff683a33ee613c9',1,'CharacterVirtual']]], + ['setshapescale_187',['SetShapeScale',['../class_transformed_shape.html#a0923e9bc45b0d6ee42d5350da78d51cc',1,'TransformedShape']]], + ['setshapesettings_188',['SetShapeSettings',['../class_body_creation_settings.html#af8e4ddec15be3ad2ba87e99139fec1e5',1,'BodyCreationSettings']]], + ['setskeleton_189',['SetSkeleton',['../class_skeleton_pose.html#a16e37c44ea1f562854d8a6e3d0afafcf',1,'SkeletonPose']]], + ['setskinnedmaxdistancemultiplier_190',['SetSkinnedMaxDistanceMultiplier',['../class_soft_body_motion_properties.html#a1f4346ba3a5bf7c26f8db600a29ccd29',1,'SoftBodyMotionProperties']]], + ['setslideraxis_191',['SetSliderAxis',['../class_slider_constraint_settings.html#a78a43cf839d05c2679d11080875499df',1,'SliderConstraintSettings']]], + ['setsoftbodycontactlistener_192',['SetSoftBodyContactListener',['../class_physics_system.html#a3077d0538cb694338f8e466b9d36563c',1,'PhysicsSystem']]], + ['setsteerangle_193',['SetSteerAngle',['../class_wheel.html#a7efe681ffa418ed0e1724fbc1fef7ec8',1,'Wheel']]], + ['setsubgroupid_194',['SetSubGroupID',['../class_collision_group.html#a9ac2eb88530e8281a130bd73539d127b',1,'CollisionGroup']]], + ['setswingmotorstate_195',['SetSwingMotorState',['../class_swing_twist_constraint.html#a013809c4bb78158bd128514c043c3875',1,'SwingTwistConstraint']]], + ['setswingtype_196',['SetSwingType',['../class_swing_twist_constraint_part.html#a848425a649ffd87b994ea1efe3cf9944',1,'SwingTwistConstraintPart']]], + ['settargetangle_197',['SetTargetAngle',['../class_hinge_constraint.html#ac2efec9945040fae41af37498ba5f357',1,'HingeConstraint']]], + ['settargetangularvelocity_198',['SetTargetAngularVelocity',['../class_hinge_constraint.html#a8f17d0facd91bdaba60f9ac473db1b2f',1,'HingeConstraint']]], + ['settargetangularvelocitycs_199',['settargetangularvelocitycs',['../class_swing_twist_constraint.html#a352f4276b652ae5f31ec8ce7b63a321f',1,'SwingTwistConstraint::SetTargetAngularVelocityCS()'],['../class_six_d_o_f_constraint.html#a51543e5bc341f2812c0498eeb11ec8a2',1,'SixDOFConstraint::SetTargetAngularVelocityCS(Vec3Arg inAngularVelocity)']]], + ['settargetorientationbs_200',['settargetorientationbs',['../class_six_d_o_f_constraint.html#a27200e904e3f52704ce99c2d3f12ad16',1,'SixDOFConstraint::SetTargetOrientationBS()'],['../class_swing_twist_constraint.html#a96e0594e40bc6d63d72241e03cdebcc0',1,'SwingTwistConstraint::SetTargetOrientationBS()']]], + ['settargetorientationcs_201',['settargetorientationcs',['../class_six_d_o_f_constraint.html#abad5e4ae0dfe6e5da9518683a2f1959c',1,'SixDOFConstraint::SetTargetOrientationCS()'],['../class_swing_twist_constraint.html#a9d6def10e5b01c5dcf325164812a0380',1,'SwingTwistConstraint::SetTargetOrientationCS()']]], + ['settargetpathfraction_202',['SetTargetPathFraction',['../class_path_constraint.html#a22196b6a304d015a58ceb2b08923583d',1,'PathConstraint']]], + ['settargetposition_203',['SetTargetPosition',['../class_slider_constraint.html#aea6e58150ae68060810e6b1e6246b7a2',1,'SliderConstraint']]], + ['settargetpositioncs_204',['SetTargetPositionCS',['../class_six_d_o_f_constraint.html#a79b66cc0a8850f926aecbcc56dc52570',1,'SixDOFConstraint']]], + ['settargetvelocity_205',['settargetvelocity',['../class_slider_constraint.html#ad28c19b7263229a90d9514c23a816d82',1,'SliderConstraint::SetTargetVelocity()'],['../class_path_constraint.html#a1b6ed041ae2c5ca2e0622cc866ff10ce',1,'PathConstraint::SetTargetVelocity()']]], + ['settargetvelocitycs_206',['SetTargetVelocityCS',['../class_six_d_o_f_constraint.html#aa4fc743e2d8bbbe4eabcda4a0062d758',1,'SixDOFConstraint']]], + ['setthreadexitfunction_207',['SetThreadExitFunction',['../class_job_system_thread_pool.html#a2b29fcac624eeac4e5219158ef0c4912',1,'JobSystemThreadPool']]], + ['setthreadinitfunction_208',['SetThreadInitFunction',['../class_job_system_thread_pool.html#a7c1157b283998781be0e2164e5639ba3',1,'JobSystemThreadPool']]], + ['settiremaximpulsecallback_209',['SetTireMaxImpulseCallback',['../class_wheeled_vehicle_controller.html#a8b57f16d22c14cc0fc7a56a81b13aca9',1,'WheeledVehicleController']]], + ['settorquelimit_210',['SetTorqueLimit',['../class_motor_settings.html#a8eeaad102049c8586b180f516119ddeb',1,'MotorSettings']]], + ['settorquelimits_211',['SetTorqueLimits',['../class_motor_settings.html#a3953c02a21926f36d415e805ffce289c',1,'MotorSettings']]], + ['settotallambda_212',['settotallambda',['../class_axis_constraint_part.html#a21284d5ab7133a4e85f37fcfecb0be8e',1,'AxisConstraintPart::SetTotalLambda()'],['../class_dual_axis_constraint_part.html#ab75b06acf448414fefc7001524167795',1,'DualAxisConstraintPart::SetTotalLambda()']]], + ['settransform_213',['SetTransform',['../struct_compound_shape_1_1_sub_shape.html#a3805d809932e3f0d94a3b87e297a47bc',1,'CompoundShape::SubShape']]], + ['settranslation_214',['settranslation',['../class_d_mat44.html#a22da3bc4aa09a7285b79d63930c58637',1,'DMat44::SetTranslation()'],['../class_mat44.html#ae89e485f03d9a5dbaf317c057f4eac30',1,'Mat44::SetTranslation()']]], + ['settranslationlimits_215',['SetTranslationLimits',['../class_six_d_o_f_constraint.html#af5ff395b70a1170d8215850acf83826f',1,'SixDOFConstraint']]], + ['settwistmaxangle_216',['SetTwistMaxAngle',['../class_swing_twist_constraint.html#a505202f615a1842d430a4caff34b7a7d',1,'SwingTwistConstraint']]], + ['settwistminangle_217',['SetTwistMinAngle',['../class_swing_twist_constraint.html#a0276be01794b613f1e961227e774fb98',1,'SwingTwistConstraint']]], + ['settwistmotorstate_218',['SetTwistMotorState',['../class_swing_twist_constraint.html#ae69c1ec34e58f67f05aea6e393110f92',1,'SwingTwistConstraint']]], + ['setup_219',['SetUp',['../class_character_base.html#a46d5822b95a5e771adc1e33f1f9b891c',1,'CharacterBase']]], + ['setupdateposition_220',['SetUpdatePosition',['../class_soft_body_motion_properties.html#a4f74fee0d91efe0291d43f7f6433440c',1,'SoftBodyMotionProperties']]], + ['setupvelocityconstraint_221',['setupvelocityconstraint',['../class_vehicle_constraint.html#a7db85aa03eb1cadb974ca4600204daa5',1,'VehicleConstraint::SetupVelocityConstraint()'],['../class_swing_twist_constraint.html#a51932e901316b06ac2c5a55c5ce54856',1,'SwingTwistConstraint::SetupVelocityConstraint()'],['../class_slider_constraint.html#a2abb17d42a19f2e7110bdd1edbc864bd',1,'SliderConstraint::SetupVelocityConstraint()'],['../class_six_d_o_f_constraint.html#abee061c8025b392f637e0cd56ac40d8c',1,'SixDOFConstraint::SetupVelocityConstraint()'],['../class_rack_and_pinion_constraint.html#a46f28ec31eb4f5068c20843ec28d9c8f',1,'RackAndPinionConstraint::SetupVelocityConstraint()'],['../class_pulley_constraint.html#a577d6bca6063a4fe0bbbfb63fc6c1096',1,'PulleyConstraint::SetupVelocityConstraint()'],['../class_path_constraint.html#a334e81d911ed028bb007514d7dab7ed8',1,'PathConstraint::SetupVelocityConstraint()'],['../class_hinge_constraint.html#a4544b739d29da7059c04dd3ff87ac04f',1,'HingeConstraint::SetupVelocityConstraint()'],['../class_gear_constraint.html#aa9f34d205ecc9897c658025438c8a411',1,'GearConstraint::SetupVelocityConstraint()'],['../class_fixed_constraint.html#a357bd20813fdf9b5d6d6730ea1cb5cb7',1,'FixedConstraint::SetupVelocityConstraint()'],['../class_cone_constraint.html#a4cdc1ebd99d91003dbebedd91b1b8a4f',1,'ConeConstraint::SetupVelocityConstraint()'],['../class_constraint.html#a175a388f9989341951507e08876fdf30',1,'Constraint::SetupVelocityConstraint()'],['../class_distance_constraint.html#a6783513d7658a4979f309be36a94f2d3',1,'DistanceConstraint::SetupVelocityConstraint()'],['../class_point_constraint.html#a0c951929290c4069a5489beaf3b11c3c',1,'PointConstraint::SetupVelocityConstraint()']]], + ['setusemanifoldreduction_222',['setusemanifoldreduction',['../class_body.html#a8c24ff0c08f1a31fc57d01420f9cae8b',1,'Body::SetUseManifoldReduction()'],['../class_body_interface.html#a7f730135a74e9cb798d8a7d6c49acefb',1,'BodyInterface::SetUseManifoldReduction()']]], + ['setuserdata_223',['setuserdata',['../class_constraint.html#a2e643bd3c3a9167c70037d3eb87acb75',1,'Constraint::SetUserData()'],['../class_shape.html#abe1ea0795fb422387c3e41f260caea1c',1,'Shape::SetUserData()'],['../class_collision_collector.html#aefb07c8a9dd625efefeb0f37ee2957d6',1,'CollisionCollector::SetUserData()'],['../class_character_virtual.html#a06b2c2e7446c66a85bc7314f5b4fd71e',1,'CharacterVirtual::SetUserData()'],['../class_body_interface.html#abd152dcf89e6c0147a6929e04f96c578',1,'BodyInterface::SetUserData()'],['../class_body.html#a3fff2f601caed12dd89c6d7fcb04dad6',1,'Body::SetUserData()']]], + ['setvalidating_224',['SetValidating',['../class_state_recorder.html#a94551fc91c9a1580a818dab49ba6e26d',1,'StateRecorder']]], + ['setvalue_225',['SetValue',['../class_sub_shape_i_d.html#a1a908b7e19b2d792793830b751a66a27',1,'SubShapeID']]], + ['setvehiclecollisiontester_226',['SetVehicleCollisionTester',['../class_vehicle_constraint.html#a52476f3cd6814c10993dacb4e3dd03cd',1,'VehicleConstraint']]], + ['setw_227',['setw',['../class_quat.html#ae32d59954e6b05258af7123c00141654',1,'Quat::SetW()'],['../class_u_vec4.html#a2320003f191c827345c0c94392a4b09b',1,'UVec4::SetW()'],['../class_vec4.html#a2817970994c80c1d05c781943955a567',1,'Vec4::SetW()']]], + ['setworldtransform_228',['setworldtransform',['../class_transformed_shape.html#a8499fda3638a4246e152a2a298905852',1,'TransformedShape::SetWorldTransform(RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inScale)'],['../class_transformed_shape.html#a6634ea434c5877c1f458137d0b05e137',1,'TransformedShape::SetWorldTransform(RMat44Arg inTransform)']]], + ['setx_229',['setx',['../class_vec4.html#aab0192eabef50e920e398cb0b426a002',1,'Vec4::SetX()'],['../class_u_vec4.html#ac2cc1087c1eed84326aec2859ca006ab',1,'UVec4::SetX()'],['../class_quat.html#ae53457812ce9ffa5fb7b6b8a3c5c97e5',1,'Quat::SetX()'],['../class_d_vec3.html#af2ffc0234f93a9ba535204d9b35ecb8f',1,'DVec3::SetX()'],['../class_vec3.html#aa56cdd546b6bb8a63a7677b4915398f0',1,'Vec3::SetX()']]], + ['sety_230',['sety',['../class_d_vec3.html#a7a23eb2bdff0ab56356796bd6335d1a4',1,'DVec3::SetY()'],['../class_vec3.html#a546dea138085c70aab8ce65328c96636',1,'Vec3::SetY()'],['../class_u_vec4.html#a41f446b7d5a05ee286630365ebb6b8b9',1,'UVec4::SetY()'],['../class_quat.html#a4a4db6760750a34c25199455c07b6bb9',1,'Quat::SetY()'],['../class_vec4.html#a957c474862f9e846a9ff1dce1a930aeb',1,'Vec4::SetY()']]], + ['setz_231',['setz',['../class_d_vec3.html#ac180ba3a4c610e3ae77f3acfdff4139b',1,'DVec3::SetZ()'],['../class_quat.html#a3f494dde1e2e0bc50dbc2abd13210b23',1,'Quat::SetZ()'],['../class_u_vec4.html#a7f2a2b3fbc39fe921799d53d6bfb1b87',1,'UVec4::SetZ()'],['../class_vec4.html#a7b9e638ffb2e387617e3d0062c5abfda',1,'Vec4::SetZ()'],['../class_vec3.html#a91b9fad968034550f4681c14273c77d8',1,'Vec3::SetZ()']]], + ['setzero_232',['setzero',['../class_matrix.html#a7b98e3c672cc83e50b0cb6cf33b1ec65',1,'Matrix::SetZero()'],['../class_vector.html#a06ffa8aa3d40e7c93dde19725e77ff3a',1,'Vector::SetZero()']]], + ['seulerangles_233',['sEulerAngles',['../class_quat.html#a1ef2428c09a41f3d0549d216ecfca710',1,'Quat']]], + ['sexpandbits_234',['sExpandBits',['../class_morton_code.html#a84095b33bd99957d29c492f9e8a2f2c4',1,'MortonCode']]], + ['sfindcollidingpairscancollide_235',['sFindCollidingPairsCanCollide',['../class_body.html#a68c64581b2698ec41f1bbb50913bb48d',1,'Body']]], + ['sfixw_236',['sfixw',['../class_d_vec3.html#a2266a780190160ac4e0dd1747c496fa7',1,'DVec3::sFixW()'],['../class_vec3.html#a0fd5f4e55649a94f140bd9d6fe38be3c',1,'Vec3::sFixW()']]], + ['sfrompointandnormal_237',['sfrompointandnormal',['../class_plane.html#a65ed67db9667cdc78040f503b1bce933',1,'Plane::sFromPointAndNormal(DVec3Arg inPoint, Vec3Arg inNormal)'],['../class_plane.html#ab650685703d992f746e1934ffd20850d',1,'Plane::sFromPointAndNormal(Vec3Arg inPoint, Vec3Arg inNormal)']]], + ['sfrompointsccw_238',['sFromPointsCCW',['../class_plane.html#acf01f90a7839a26f8d1e0129b661c32d',1,'Plane']]], + ['sfromto_239',['sFromTo',['../class_quat.html#a7e32ae62e2b33bf30ba3c40f9e66bfed',1,'Quat']]], + ['sfromtwopoints_240',['sFromTwoPoints',['../class_a_a_box.html#a75910b6fcd958c465541efe5e3087987',1,'AABox']]], + ['sfromworldtransform_241',['sFromWorldTransform',['../struct_shape_cast_t.html#a0195f56ecbe283d8e393f1564d864823',1,'ShapeCastT']]], + ['sfusedmultiplyadd_242',['sfusedmultiplyadd',['../class_d_vec3.html#a204c205724d5eda5fcbdd9b28d4180c1',1,'DVec3::sFusedMultiplyAdd()'],['../class_vec3.html#af1046795a7c8524bcef538c32ff0089b',1,'Vec3::sFusedMultiplyAdd()'],['../class_vec4.html#a5dfc1722ee92f7a8ad6e068ad8551686',1,'Vec4::sFusedMultiplyAdd()'],['../class_vec8.html#a035b3515cf4ea077d4c78ccccb81f127',1,'Vec8::sFusedMultiplyAdd()']]], + ['sgatherfloat4_243',['sgatherfloat4',['../class_vec4.html#a8b0e5b020ac6f5248315b94216ae6acc',1,'Vec4::sGatherFloat4(const float *inBase, UVec4Arg inOffsets)'],['../class_vec4.html#a92ee61eea2038df551b9494cb4f013bb',1,'Vec4::sGatherFloat4(const float *inBase, UVec4Arg inOffsets)']]], + ['sgatherint4_244',['sgatherint4',['../class_u_vec4.html#a80d24f8e73a57edb4d6ed688c8e7e342',1,'UVec4::sGatherInt4(const uint32 *inBase, UVec4Arg inOffsets)'],['../class_u_vec4.html#a64f61c75e1595a8bbd98a964b1fb77ee',1,'UVec4::sGatherInt4(const uint32 *inBase, UVec4Arg inOffsets)']]], + ['sget_245',['sGet',['../class_shape_functions.html#a6a02ebed9c254a496076966ff5837ca7',1,'ShapeFunctions']]], + ['sgetbodyid_246',['sGetBodyID',['../class_transformed_shape.html#a2a845c1bfaae3c821a7c8b0f517bd02d',1,'TransformedShape']]], + ['sgetdistinctcolor_247',['sGetDistinctColor',['../class_color.html#a7ab76ccae9518b4e91bca83c6839f572',1,'Color']]], + ['sgetequivalentsolidboxsize_248',['sGetEquivalentSolidBoxSize',['../class_mass_properties.html#a0962451096c3563d970b3bd74438f25e',1,'MassProperties']]], + ['sgetflags_249',['sgetflags',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#a546c633b400007f4f848b1b86dc1be61',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::sGetFlags(const void *inTriangleStart, uint32 inNumTriangles, uint8 *outTriangleFlags)'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#a4e137a15d4867a854f9e4c94656a0773',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::sGetFlags(const void *inTriangleStart, int inTriangleIndex)']]], + ['sgetgroup_250',['sGetGroup',['../class_object_layer_pair_filter_mask.html#a3b6c480afe541160011ae06980a0a29c',1,'ObjectLayerPairFilterMask']]], + ['sgetinstance_251',['sGetInstance',['../class_profile_thread.html#a90519c92e016925589a4866b3dc916b7',1,'ProfileThread']]], + ['sgetinvinitialorientation_252',['sgetinvinitialorientation',['../class_rotation_quat_constraint_part.html#a8ab9f2a8f10bdbbe8000f7af5f0b7b5b',1,'RotationQuatConstraintPart::sGetInvInitialOrientation()'],['../class_rotation_euler_constraint_part.html#a40c10735335691be99e7911139dc2884',1,'RotationEulerConstraintPart::sGetInvInitialOrientation(const Body &inBody1, const Body &inBody2)']]], + ['sgetinvinitialorientationxy_253',['sGetInvInitialOrientationXY',['../class_rotation_euler_constraint_part.html#a6757c3b96eff4a145d9228fb1679222d',1,'RotationEulerConstraintPart']]], + ['sgetinvinitialorientationxz_254',['sGetInvInitialOrientationXZ',['../class_rotation_euler_constraint_part.html#ae84f7a33a2d609dd5138c9a7f3f82f65',1,'RotationEulerConstraintPart']]], + ['sgetitem_255',['sGetItem',['../class_large_island_splitter_1_1_splits.html#a3646186cdee64780aeb70ae237e3f0f3',1,'LargeIslandSplitter::Splits']]], + ['sgetiteration_256',['sGetIteration',['../class_large_island_splitter_1_1_splits.html#a8628a9e2d3eed8f7799dbc5a08c233dd',1,'LargeIslandSplitter::Splits']]], + ['sgetmask_257',['sGetMask',['../class_object_layer_pair_filter_mask.html#aa81f6ca1410dca3bcbf434a72a9403fd',1,'ObjectLayerPairFilterMask']]], + ['sgetmortoncode_258',['sGetMortonCode',['../class_morton_code.html#ac960ce088e48d87bb6957434cbf56115',1,'MortonCode']]], + ['sgetobjectlayer_259',['sGetObjectLayer',['../class_object_layer_pair_filter_mask.html#ae7310c04f7b7631e83d9bfe3a4a4278f',1,'ObjectLayerPairFilterMask']]], + ['sgetsplit_260',['sGetSplit',['../class_large_island_splitter_1_1_splits.html#aeeae8922407bff3fb6b24585fdc6359e',1,'LargeIslandSplitter::Splits']]], + ['sgettriangleblockstart_261',['sGetTriangleBlockStart',['../class_node_codec_quad_tree_half_float_1_1_decoding_context.html#a6897b5f58d055fde378516056dec1836',1,'NodeCodecQuadTreeHalfFloat::DecodingContext']]], + ['sgreater_262',['sgreater',['../class_d_vec3.html#a60c87539167a77817e6298bd8cdb1386',1,'DVec3::sGreater()'],['../class_vec3.html#a8eae791f0661b2c625a42034f6480bd1',1,'Vec3::sGreater()'],['../class_vec4.html#a0f083eb84bb57838bafaa1074a5c292e',1,'Vec4::sGreater()'],['../class_vec8.html#aa38a759ebef47cb63db5adc0f569d1c0',1,'Vec8::sGreater()']]], + ['sgreaterorequal_263',['sgreaterorequal',['../class_d_vec3.html#a382ba05ac29dcc57d91370768e3fc7de',1,'DVec3::sGreaterOrEqual()'],['../class_vec3.html#a3a5e5fc2d3bf17a05723d4e411e4202d',1,'Vec3::sGreaterOrEqual()'],['../class_vec4.html#a81da488f59d4a7a84b8ad78fb9d9832d',1,'Vec4::sGreaterOrEqual()']]], + ['shape_264',['shape',['../class_shape.html#a23734c9a65732276c51b77ba8542291d',1,'Shape::Shape(EShapeType inType, EShapeSubType inSubType)'],['../class_shape.html#a5c9ae4999b05e4334aede38781a536ad',1,'Shape::Shape(EShapeType inType, EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)']]], + ['shapecastresult_265',['shapecastresult',['../class_shape_cast_result.html#afb01699f4368bbbeec678f0c3c21108d',1,'ShapeCastResult::ShapeCastResult(float inFraction, Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inContactNormalOrPenetrationDepth, bool inBackFaceHit, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2)'],['../class_shape_cast_result.html#a79089f4b310168c5bfa51cc0bcf134dd',1,'ShapeCastResult::ShapeCastResult()=default']]], + ['shapecastt_266',['shapecastt',['../struct_shape_cast_t.html#a2b2b79fda0cdbef648d9ee22d348334f',1,'ShapeCastT::ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection, const AABox &inWorldSpaceBounds)'],['../struct_shape_cast_t.html#a72512e9621d9b3ecf84e215bef9ee535',1,'ShapeCastT::ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection)']]], + ['sharedlock_267',['SharedLock',['../class_shared_lock.html#a423a99cd3233c75dbf47e664351bab08',1,'SharedLock']]], + ['shiftcomponents4minus_268',['ShiftComponents4Minus',['../class_u_vec4.html#a8d9ff8b435e5475505c944e96d872b2b',1,'UVec4']]], + ['shouldabort_269',['shouldabort',['../struct_compound_shape_1_1_collide_point_visitor.html#aab907c8ad14bf917323ed88160cd861d',1,'CompoundShape::CollidePointVisitor::ShouldAbort()'],['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#a1ad05ea27186c07aebbc4f6d99bc859c',1,'MeshShape::MSGetTrianglesContext::ShouldAbort()'],['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#aa94c265db390c8d863f5e92d1b334241',1,'HeightFieldShape::HSGetTrianglesContext::ShouldAbort()'],['../struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a0747547a9895a7dc598391e602ae67e6',1,'CompoundShape::GetIntersectingSubShapesVisitor::ShouldAbort()'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a135fbf1825c7dfbfc0556005b92bc5c1',1,'CompoundShape::CollideCompoundVsShapeVisitor::ShouldAbort()'],['../struct_compound_shape_1_1_cast_shape_visitor.html#a11687e8851b02a264d77bfa665822398',1,'CompoundShape::CastShapeVisitor::ShouldAbort()'],['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#adcc33d30649befa932d49742db59986d',1,'CompoundShape::CastRayVisitorCollector::ShouldAbort()'],['../struct_compound_shape_1_1_cast_ray_visitor.html#a7668a1ea39d30feee8636f90626320c4',1,'CompoundShape::CastRayVisitor::ShouldAbort()'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a017c33d9b6a4dee82d757dc499999c01',1,'CompoundShape::CollideShapeVsCompoundVisitor::ShouldAbort()'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a0514f8498006d248fc1ca54e5420ba41',1,'CompoundShape::CollectTransformedShapesVisitor::ShouldAbort()']]], + ['shouldcollide_270',['shouldcollide',['../class_ignore_single_body_filter_chained.html#ad94457a47665f2ef204f382f2812393d',1,'IgnoreSingleBodyFilterChained::ShouldCollide()'],['../class_body_filter.html#af6f1c46fdb171ad70570c1ca83b0eab7',1,'BodyFilter::ShouldCollide()'],['../class_ignore_single_body_filter.html#a7b0ecbbf0eb0826fbee8e3e4d346a5c0',1,'IgnoreSingleBodyFilter::ShouldCollide()'],['../class_reversed_shape_filter.html#a78f5767dd29b71003df33a9743b3bb73',1,'ReversedShapeFilter::ShouldCollide(const Shape *inShape1, const SubShapeID &inSubShapeIDOfShape1, const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const override'],['../class_reversed_shape_filter.html#a0da8f32256715a06181081750a1d6229',1,'ReversedShapeFilter::ShouldCollide(const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const override'],['../class_shape_filter.html#a5e0b842fca969a0b6fee6e531273db51',1,'ShapeFilter::ShouldCollide(const Shape *inShape1, const SubShapeID &inSubShapeIDOfShape1, const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const'],['../class_shape_filter.html#a34e0af56ee8eff11096ed8926e87f2c5',1,'ShapeFilter::ShouldCollide(const Shape *inShape2, const SubShapeID &inSubShapeIDOfShape2) const'],['../class_object_layer_pair_filter_table.html#a77261471bc7057de4c292e22c645d718',1,'ObjectLayerPairFilterTable::ShouldCollide()'],['../class_object_layer_pair_filter_mask.html#a23e66d271d3cfa3977432941f767e994',1,'ObjectLayerPairFilterMask::ShouldCollide()'],['../class_specified_object_layer_filter.html#a14426a684c2264c1120bd2c60460057b',1,'SpecifiedObjectLayerFilter::ShouldCollide()'],['../class_default_object_layer_filter.html#a454d7b668f25a6301eba8a0a17276b79',1,'DefaultObjectLayerFilter::ShouldCollide()'],['../class_object_layer_pair_filter.html#a81cbe75cceb74bc262199206ac129c88',1,'ObjectLayerPairFilter::ShouldCollide()'],['../class_object_layer_filter.html#aa5d1889ba4f6adf8f7f4c46e57cd166b',1,'ObjectLayerFilter::ShouldCollide()'],['../class_object_vs_broad_phase_layer_filter_table.html#afe9699576b8dc801762a73e7d5244ff6',1,'ObjectVsBroadPhaseLayerFilterTable::ShouldCollide()'],['../class_object_vs_broad_phase_layer_filter_mask.html#ab6ba91976c330c45c088aa4fb1a5414e',1,'ObjectVsBroadPhaseLayerFilterMask::ShouldCollide()'],['../class_broad_phase_layer_interface_mask.html#ae96ef540e10bbd5d1dbed4260d8d179a',1,'BroadPhaseLayerInterfaceMask::ShouldCollide()'],['../class_specified_broad_phase_layer_filter.html#aedde7395b8b32b17168accd40be9860d',1,'SpecifiedBroadPhaseLayerFilter::ShouldCollide()'],['../class_default_broad_phase_layer_filter.html#af08a7bc5141b24385c4fc1a731657cda',1,'DefaultBroadPhaseLayerFilter::ShouldCollide()'],['../class_broad_phase_layer_filter.html#ac1ac3c869de6ebfe9fa1ded56faddb55',1,'BroadPhaseLayerFilter::ShouldCollide()'],['../class_object_vs_broad_phase_layer_filter.html#a6004607941fda1b8c6a88471440e0e86',1,'ObjectVsBroadPhaseLayerFilter::ShouldCollide()'],['../class_ignore_multiple_bodies_filter.html#a137d43d99694c431af49bcf1e1398b79',1,'IgnoreMultipleBodiesFilter::ShouldCollide()']]], + ['shouldcollidelocked_271',['shouldcollidelocked',['../class_body_filter.html#a1236e4cc531ca2268fb4fbb0d2c3e8f6',1,'BodyFilter::ShouldCollideLocked()'],['../class_ignore_single_body_filter_chained.html#ae841943960b45091f0fb253f086c6a12',1,'IgnoreSingleBodyFilterChained::ShouldCollideLocked()']]], + ['shoulddraw_272',['ShouldDraw',['../class_body_draw_filter.html#a46dc16be92346884c4c857af56763435',1,'BodyDrawFilter']]], + ['shouldearlyout_273',['ShouldEarlyOut',['../class_collision_collector.html#a45cb1cfbb5ec957d3c66b65d2333d825',1,'CollisionCollector']]], + ['shouldsavebody_274',['ShouldSaveBody',['../class_state_recorder_filter.html#af6eb66653cea36732871dbc269e8a59c',1,'StateRecorderFilter']]], + ['shouldsaveconstraint_275',['ShouldSaveConstraint',['../class_state_recorder_filter.html#a77644ce7e05d4a272178c705be69f3cc',1,'StateRecorderFilter']]], + ['shouldsavecontact_276',['ShouldSaveContact',['../class_state_recorder_filter.html#aa53d221987a810e76efd1e62484c922d',1,'StateRecorderFilter']]], + ['shouldvisitnode_277',['ShouldVisitNode',['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#ab48cfff2bdc317341376ff83be3138d4',1,'MeshShape::MSGetTrianglesContext']]], + ['shouldvisitrangeblock_278',['ShouldVisitRangeBlock',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a256be48964a14190655ca1327185acf1',1,'HeightFieldShape::HSGetTrianglesContext']]], + ['shrink_5fto_5ffit_279',['shrink_to_fit',['../class_array.html#aa0b6ed6d3fb2d6b28086e05f46ff8819',1,'Array']]], + ['sidentity_280',['sidentity',['../class_mat44.html#a1b8c82590f5034e8c7f35157fdfd944f',1,'Mat44::sIdentity()'],['../class_matrix.html#a80273dfe4027f98733b402245010c427',1,'Matrix::sIdentity()'],['../class_quat.html#a73a43fe262fbbbc0b1872d238b972794',1,'Quat::sIdentity()'],['../class_d_mat44.html#a643e38a7aff102e856cb17593d2fb368',1,'DMat44::sIdentity()']]], + ['sign_281',['Sign',['../_math_8h.html#a34ee8d229d5ba32162857cf660526a86',1,'Math.h']]], + ['signeddistance_282',['SignedDistance',['../class_plane.html#a96f5ba7b329fcccd22eaa63a7e282605',1,'Plane']]], + ['sin_283',['Sin',['../_trigonometry_8h.html#a89091907eb3da97f690e324849d773cb',1,'Trigonometry.h']]], + ['sincos_284',['SinCos',['../class_vec4.html#af7e7da5ada5c3e85aac45d62871a867c',1,'Vec4']]], + ['sinit_285',['sInit',['../class_collision_dispatch.html#a78989af31a71c0421249c9074b94a2e0',1,'CollisionDispatch']]], + ['sinternalgetrefcountoffset_286',['sInternalGetRefCountOffset',['../class_ref_target.html#a58b5a94748691b18ecf651ce918ae743',1,'RefTarget']]], + ['sintersectplanes_287',['sIntersectPlanes',['../class_plane.html#abffae87f2329df22fc511aaf4a40fb6e',1,'Plane']]], + ['sinverserotationtranslation_288',['sinverserotationtranslation',['../class_mat44.html#ac8be820a7eeb44bf570abb8dc01f4c59',1,'Mat44::sInverseRotationTranslation()'],['../class_d_mat44.html#a843dd24a84756b0d776f47913e510b41',1,'DMat44::sInverseRotationTranslation()']]], + ['sisvalidbodypointer_289',['sIsValidBodyPointer',['../class_body_manager.html#a2a95afcef6b2166321d1ba21dce19158',1,'BodyManager']]], + ['sixdofconstraint_290',['SixDOFConstraint',['../class_six_d_o_f_constraint.html#a3002dc33540a30ce549738faa272f868',1,'SixDOFConstraint']]], + ['size_291',['size',['../class_array.html#a9d2ab10879978f2c32e760a92fa0d585',1,'Array::size()'],['../class_static_array.html#aea449055e7dab910eca1a4af05d53b6f',1,'StaticArray::size()']]], + ['skinned_292',['skinned',['../class_soft_body_shared_settings_1_1_skinned.html#a544c250206111b01d89f27da60f3e6bf',1,'SoftBodySharedSettings::Skinned::Skinned()=default'],['../class_soft_body_shared_settings_1_1_skinned.html#a914dc545507fc78d06f6acaa7d7f9049',1,'SoftBodySharedSettings::Skinned::Skinned(uint32 inVertex, float inMaxDistance, float inBackStopDistance, float inBackStopRadius)']]], + ['skinvertices_293',['SkinVertices',['../class_soft_body_motion_properties.html#a790161d0d5a2b34be8b3ab40376a62c6',1,'SoftBodyMotionProperties']]], + ['skinweight_294',['skinweight',['../class_soft_body_shared_settings_1_1_skin_weight.html#ac3e68d2f34d7a4919a064cde2a16b20a',1,'SoftBodySharedSettings::SkinWeight::SkinWeight(uint32 inInvBindIndex, float inWeight)'],['../class_soft_body_shared_settings_1_1_skin_weight.html#a813145d1064289c66eb407ab43b1c807',1,'SoftBodySharedSettings::SkinWeight::SkinWeight()=default']]], + ['skipattributedata_295',['SkipAttributeData',['../class_object_stream_in.html#af6fad54cdc53d20f00a438c2b41af54b',1,'ObjectStreamIn']]], + ['slerp_296',['SLERP',['../class_quat.html#afc3276d69ac8713afddf3cf970c27371',1,'Quat']]], + ['sless_297',['sless',['../class_vec8.html#a239c0570785757c04ada2de8164df6f9',1,'Vec8::sLess()'],['../class_vec4.html#a4c8600bd26d971542437d4f31258dea4',1,'Vec4::sLess()'],['../class_vec3.html#ad376453f8dddd6653c2ead9c02951c48',1,'Vec3::sLess()'],['../class_d_vec3.html#a0055c9056c703cfb53e306a702843edb',1,'DVec3::sLess()']]], + ['slessorequal_298',['slessorequal',['../class_vec3.html#a483dc7054df9a3f8c48303a31be6c1e0',1,'Vec3::sLessOrEqual()'],['../class_d_vec3.html#aaf7417eac9dc51d1786a791ca94f4556',1,'DVec3::sLessOrEqual()'],['../class_vec4.html#a4880dd63dffd8c23e5a692279d8a8762',1,'Vec4::sLessOrEqual()']]], + ['sliderconstraint_299',['SliderConstraint',['../class_slider_constraint.html#ad70ecf5382d028c817f4ac1544927285',1,'SliderConstraint']]], + ['sloaddouble3unsafe_300',['sLoadDouble3Unsafe',['../class_d_vec3.html#ac19d415377cf91a317d29cc99d319134',1,'DVec3']]], + ['sloadfloat3unsafe_301',['sloadfloat3unsafe',['../class_vec3.html#aea30fe731618ffa249ecdcba2c66ab4e',1,'Vec3::sLoadFloat3Unsafe()'],['../class_quat.html#a60c11537faec1e7517a957f02afc4b6d',1,'Quat::sLoadFloat3Unsafe()']]], + ['sloadfloat4_302',['sLoadFloat4',['../class_vec4.html#aae23cc21ead458bce2968440134f350f',1,'Vec4']]], + ['sloadfloat4aligned_303',['sLoadFloat4Aligned',['../class_vec4.html#a1f1c3d12bab2296d6313caf8a9929919',1,'Vec4']]], + ['sloadfloat4x4_304',['sLoadFloat4x4',['../class_mat44.html#a3e2a056f901661fd715528c325df455d',1,'Mat44']]], + ['sloadfloat4x4aligned_305',['sLoadFloat4x4Aligned',['../class_mat44.html#a8bcbeea9029c5251ff4ea9bd4d518f4c',1,'Mat44']]], + ['sloadfloat8_306',['sLoadFloat8',['../class_vec8.html#af75fe8a764ca70357fbc20786fd1909b',1,'Vec8']]], + ['sloadfloat8aligned_307',['sLoadFloat8Aligned',['../class_vec8.html#a9078055cdd0cbcf99c3d2ddc0cfeaaab',1,'Vec8']]], + ['sloadint_308',['sLoadInt',['../class_u_vec4.html#a1fbc23618b7d0936c948c359fe5433e2',1,'UVec4']]], + ['sloadint4_309',['sLoadInt4',['../class_u_vec4.html#ab85dca4074b1a0cb400b92b2e50993c1',1,'UVec4']]], + ['sloadint4aligned_310',['sLoadInt4Aligned',['../class_u_vec4.html#ab7c6d553246416fecc7ad386ec247562',1,'UVec4']]], + ['slock_311',['sLock',['../class_physics_lock.html#ae103305ffa4e008ab2511866b88fc782',1,'PhysicsLock']]], + ['slockshared_312',['sLockShared',['../class_physics_lock.html#a625ab9c9ade9d679ea4b4fc9693f8f7d',1,'PhysicsLock']]], + ['slookat_313',['sLookAt',['../class_mat44.html#a48f32e1e7f27b3eeaa8913d53b2c808f',1,'Mat44']]], + ['smax_314',['smax',['../class_vec3.html#a0d01523ff685cea4e0c5173fac13fc61',1,'Vec3::sMax()'],['../class_vec4.html#ad41f746bf922376846050d932c0de23d',1,'Vec4::sMax()'],['../class_vec8.html#a688b26c034b1554a636581deaa721c08',1,'Vec8::sMax()'],['../class_u_vec4.html#a9b6f9b567c5b18179eff43ec527ef82d',1,'UVec4::sMax()'],['../class_d_vec3.html#a034bd1560d516612ff248c5b6eb5f245',1,'DVec3::sMax()']]], + ['smin_315',['smin',['../class_vec3.html#a20b4cc5ec27717e3ee651536e2a41a29',1,'Vec3::sMin()'],['../class_d_vec3.html#a110aacf67e0556aaf2fdad2e86578715',1,'DVec3::sMin()'],['../class_u_vec4.html#a158ea0e79cd9b012856caa45a79e9463',1,'UVec4::sMin()'],['../class_vec4.html#a85510ae45bcc02e079547de4bf4b6983',1,'Vec4::sMin()'],['../class_vec8.html#ad98f554b3a8aa0bbaccbf6a73e5f6509',1,'Vec8::sMin()']]], + ['snan_316',['snan',['../class_vec3.html#aee68177ac267822e1823a9a0f7525014',1,'Vec3::sNaN()'],['../class_d_vec3.html#a597fd4ed4cbf7af0c17bbd374afb4727',1,'DVec3::sNaN()'],['../class_mat44.html#a5c6898814660114482bbfc4908c3ad37',1,'Mat44::sNaN()'],['../class_vec4.html#ae55a1d16541b4d01f0904784dda18f54',1,'Vec4::sNaN()']]], + ['snot_317',['sNot',['../class_u_vec4.html#a089b92931aa8ae271a79f6c3684e647c',1,'UVec4']]], + ['softbodycreationsettings_318',['softbodycreationsettings',['../class_soft_body_creation_settings.html#ac5668582f2c4cd10a4d7b15d5aa57be9',1,'SoftBodyCreationSettings::SoftBodyCreationSettings()=default'],['../class_soft_body_creation_settings.html#a30778a139b72cd3eb8688798abc1d329',1,'SoftBodyCreationSettings::SoftBodyCreationSettings(const SoftBodySharedSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, ObjectLayer inObjectLayer)']]], + ['softbodyshape_319',['SoftBodyShape',['../class_soft_body_shape.html#a4536dbf0d8d3cf1d44639bf82edf3496',1,'SoftBodyShape']]], + ['softbodywithmotionpropertiesandshape_320',['SoftBodyWithMotionPropertiesAndShape',['../class_soft_body_with_motion_properties_and_shape.html#ac1b6418cacec69cc1b1b9bb168250ffa',1,'SoftBodyWithMotionPropertiesAndShape']]], + ['solvelateralconstraintpart_321',['SolveLateralConstraintPart',['../class_wheel.html#a155778dd99828ddbcc6b4e34305b40f5',1,'Wheel']]], + ['solvelongitudinalandlateralconstraints_322',['solvelongitudinalandlateralconstraints',['../class_wheeled_vehicle_controller.html#a00e70f705f6b7770e3e1e8461998e0bb',1,'WheeledVehicleController::SolveLongitudinalAndLateralConstraints()'],['../class_vehicle_controller.html#abb6de4527ea93a58f69791c7c7093846',1,'VehicleController::SolveLongitudinalAndLateralConstraints()'],['../class_tracked_vehicle_controller.html#a8fdb8ceb2f023e60141688cd680bc0aa',1,'TrackedVehicleController::SolveLongitudinalAndLateralConstraints()'],['../class_motorcycle_controller.html#a2cbe39aef2e451e60fb0a021e8d31d92',1,'MotorcycleController::SolveLongitudinalAndLateralConstraints()']]], + ['solvelongitudinalconstraintpart_323',['SolveLongitudinalConstraintPart',['../class_wheel.html#aca0c965685dee3f84fb830d76a4a00ba',1,'Wheel']]], + ['solvepositionconstraint_324',['solvepositionconstraint',['../class_hinge_constraint.html#a3ca88c214e95ffdd5b8725d456c23eee',1,'HingeConstraint::SolvePositionConstraint()'],['../class_path_constraint.html#a9041487754a378e24a54414325f214ef',1,'PathConstraint::SolvePositionConstraint()'],['../class_point_constraint.html#aac96ad33ba2e2218f72333a54580ab70',1,'PointConstraint::SolvePositionConstraint()'],['../class_pulley_constraint.html#a87b18f6a3e5e289beb7967227bd11e16',1,'PulleyConstraint::SolvePositionConstraint()'],['../class_rack_and_pinion_constraint.html#af9a89e5738bd0b01041dd67f57dcdb75',1,'RackAndPinionConstraint::SolvePositionConstraint()'],['../class_six_d_o_f_constraint.html#a636d378bc45470f3182c71e0a7b6ba59',1,'SixDOFConstraint::SolvePositionConstraint()'],['../class_slider_constraint.html#a3a2b09378bb8bf731279c89ab15152b0',1,'SliderConstraint::SolvePositionConstraint()'],['../class_swing_twist_constraint.html#a4b881638e8d9fbd49223ae4f3e649f4e',1,'SwingTwistConstraint::SolvePositionConstraint()'],['../class_vehicle_constraint.html#af344b4fb6def1c50f03f1c30d9fca3c2',1,'VehicleConstraint::SolvePositionConstraint()'],['../class_dual_axis_constraint_part.html#a61414f76e664b04fc7b99b4a96cfe032',1,'DualAxisConstraintPart::SolvePositionConstraint()'],['../class_fixed_constraint.html#a654022483ce0d0a4e0cd2574b0846cc1',1,'FixedConstraint::SolvePositionConstraint()'],['../class_gear_constraint.html#a4c71050abebf55fe2a8f1c5ad7d0e4ee',1,'GearConstraint::SolvePositionConstraint()'],['../class_gear_constraint_part.html#ad9da946340f02066a9031124bec183af',1,'GearConstraintPart::SolvePositionConstraint()'],['../class_axis_constraint_part.html#a12a0588911733208e89fa65de7e2b2fc',1,'AxisConstraintPart::SolvePositionConstraint()'],['../class_angle_constraint_part.html#a11bb8ed0daf36021dc407fd13cbfde90',1,'AngleConstraintPart::SolvePositionConstraint()'],['../class_constraint.html#adeae5677da3f7d76ca6af382be14e4eb',1,'Constraint::SolvePositionConstraint()'],['../class_cone_constraint.html#a1a39e014d33bfd39d6a22b951c2fbd65',1,'ConeConstraint::SolvePositionConstraint()'],['../class_hinge_rotation_constraint_part.html#a0f4c769c027f4efb2511d74f9658d8eb',1,'HingeRotationConstraintPart::SolvePositionConstraint()'],['../class_point_constraint_part.html#a123b2fd3e83ea307dfd8a946f6b7a449',1,'PointConstraintPart::SolvePositionConstraint()'],['../class_rack_and_pinion_constraint_part.html#acbff5e3cb39103c349d9a2a3866a8475',1,'RackAndPinionConstraintPart::SolvePositionConstraint()'],['../class_rotation_euler_constraint_part.html#ab2276b37dd0f8eaf4229469def2627b6',1,'RotationEulerConstraintPart::SolvePositionConstraint()'],['../class_rotation_quat_constraint_part.html#a598d2320bf1b6d19985a183d06183f13',1,'RotationQuatConstraintPart::SolvePositionConstraint()'],['../class_swing_twist_constraint_part.html#ae8a947eca657db9a653b0d3de921e7c1',1,'SwingTwistConstraintPart::SolvePositionConstraint()'],['../class_distance_constraint.html#a31ec535ef21936a97b305508858f862b',1,'DistanceConstraint::SolvePositionConstraint()'],['../class_independent_axis_constraint_part.html#a75f7e8a6d760c806d8aadc911965ecce',1,'IndependentAxisConstraintPart::SolvePositionConstraint()']]], + ['solvepositionconstraints_325',['SolvePositionConstraints',['../class_contact_constraint_manager.html#a45d8cb39a9e2a3644149661f4e01d2bd',1,'ContactConstraintManager']]], + ['solvepositionconstraintwithmassoverride_326',['SolvePositionConstraintWithMassOverride',['../class_axis_constraint_part.html#a981dad22bd1333ed2147264f3285c112',1,'AxisConstraintPart']]], + ['solvevelocityconstraint_327',['solvevelocityconstraint',['../class_hinge_constraint.html#ab4b3e0e2e12a3c79f7c7dfd4b01be004',1,'HingeConstraint::SolveVelocityConstraint()'],['../class_path_constraint.html#a4a217906d4d990d4222d2dfbd3e3de5b',1,'PathConstraint::SolveVelocityConstraint()'],['../class_point_constraint.html#a341bc9c8983b9988ec60e166caed0afe',1,'PointConstraint::SolveVelocityConstraint()'],['../class_pulley_constraint.html#a66e0ee2a47361e24d981cb27e5791bbe',1,'PulleyConstraint::SolveVelocityConstraint()'],['../class_rotation_euler_constraint_part.html#af9a7e556643d4162eb300045d9a40df1',1,'RotationEulerConstraintPart::SolveVelocityConstraint()'],['../class_rack_and_pinion_constraint.html#a1e19ef61ebcf132ce1dd056e8c3bfe92',1,'RackAndPinionConstraint::SolveVelocityConstraint()'],['../class_six_d_o_f_constraint.html#a37a955943b8f78e7ff8d98e044981b58',1,'SixDOFConstraint::SolveVelocityConstraint()'],['../class_slider_constraint.html#a7271357391f44e2ebc647a98fc0ce01b',1,'SliderConstraint::SolveVelocityConstraint()'],['../class_swing_twist_constraint.html#ae841a8acf92617eca1192909d2885f41',1,'SwingTwistConstraint::SolveVelocityConstraint()'],['../class_vehicle_constraint.html#a3706f414ea9608bcffc2b481f6a88549',1,'VehicleConstraint::SolveVelocityConstraint()'],['../class_fixed_constraint.html#afd06d88db92460bdf49fb4bf5c4e0e99',1,'FixedConstraint::SolveVelocityConstraint()'],['../class_cone_constraint.html#a6d9ec2215d7e54abb3277386ca1201f5',1,'ConeConstraint::SolveVelocityConstraint()'],['../class_constraint.html#a30636bfbf85cd0898a8ee3c543bf675f',1,'Constraint::SolveVelocityConstraint()'],['../class_angle_constraint_part.html#aab9cd08fa77ca04f5ab6a6d5cfd78538',1,'AngleConstraintPart::SolveVelocityConstraint()'],['../class_axis_constraint_part.html#a0f72dffd609be0cba29f2619c5a2c63a',1,'AxisConstraintPart::SolveVelocityConstraint()'],['../class_dual_axis_constraint_part.html#a05cd7b92a7bdf55e64e1e924fe941a29',1,'DualAxisConstraintPart::SolveVelocityConstraint()'],['../class_gear_constraint_part.html#a59066c4f97a31d73d74dc5ec277ca43e',1,'GearConstraintPart::SolveVelocityConstraint()'],['../class_hinge_rotation_constraint_part.html#aabd46260672295ed6df506bf81a2f326',1,'HingeRotationConstraintPart::SolveVelocityConstraint()'],['../class_independent_axis_constraint_part.html#a715a99f78d1e0f0cb03752d4279b4d05',1,'IndependentAxisConstraintPart::SolveVelocityConstraint()'],['../class_point_constraint_part.html#a217800970665e456d24664aad0b860a6',1,'PointConstraintPart::SolveVelocityConstraint()'],['../class_rack_and_pinion_constraint_part.html#a34c658b3b5b4a4fd6e2072e48f625f6f',1,'RackAndPinionConstraintPart::SolveVelocityConstraint()'],['../class_rotation_quat_constraint_part.html#ad464b428f6994ee02ac203b29c561324',1,'RotationQuatConstraintPart::SolveVelocityConstraint()'],['../class_swing_twist_constraint_part.html#ad62155a6ac18bfc95a038b72df927e02',1,'SwingTwistConstraintPart::SolveVelocityConstraint()'],['../class_distance_constraint.html#affedf1d2ef0d92264ffaeb579073d5b8',1,'DistanceConstraint::SolveVelocityConstraint()'],['../class_gear_constraint.html#ad15d60113726c103c9971694c47ef58b',1,'GearConstraint::SolveVelocityConstraint()']]], + ['solvevelocityconstraints_328',['SolveVelocityConstraints',['../class_contact_constraint_manager.html#a6be90138088b291b35baed7974887729',1,'ContactConstraintManager']]], + ['solvevelocityconstraintwithmassoverride_329',['SolveVelocityConstraintWithMassOverride',['../class_axis_constraint_part.html#aac25bbc0f7371f640c6e2af6a94c5cfc',1,'AxisConstraintPart']]], + ['sor_330',['sor',['../class_vec4.html#abf9062770dd98c683fc21edc2a2e8511',1,'Vec4::sOr()'],['../class_vec3.html#a86d172de30a6cbd55d82a2b54272533e',1,'Vec3::sOr()'],['../class_u_vec8.html#abaa2dd18e4ff3fee6465bb322733e7e6',1,'UVec8::sOr()'],['../class_u_vec4.html#a7a3a55e425174799fab88e508c62fa64',1,'UVec4::sOr()'],['../class_d_vec3.html#a7355bb9b4f08f3b419a9ff1d82356992',1,'DVec3::sOr()']]], + ['sort_331',['sort',['../class_all_hit_collision_collector.html#a6301883d4dfcfd89e61ac4cd62e5c92a',1,'AllHitCollisionCollector::Sort()'],['../class_linear_curve.html#ad78f856bc64b3249ffd1982a29e0178c',1,'LinearCurve::Sort()']]], + ['sortcontacts_332',['SortContacts',['../class_contact_constraint_manager.html#af45077f4de2c4ec57ebecf450e9b88f0',1,'ContactConstraintManager']]], + ['sortreverseandstore_333',['SortReverseAndStore',['../_sort_reverse_and_store_8h.html#ad8b5bed860245d59f9b986771e3a1a13',1,'SortReverseAndStore.h']]], + ['souterproduct_334',['sOuterProduct',['../class_mat44.html#a44ee960223f2270ce7ea2840418e3c72',1,'Mat44']]], + ['specifiedbroadphaselayerfilter_335',['SpecifiedBroadPhaseLayerFilter',['../class_specified_broad_phase_layer_filter.html#a61d243a9465b8e0f3e71ae585df1d18c',1,'SpecifiedBroadPhaseLayerFilter']]], + ['specifiedobjectlayerfilter_336',['SpecifiedObjectLayerFilter',['../class_specified_object_layer_filter.html#a3eea28cfe96db770a84b2bea3f39f08a',1,'SpecifiedObjectLayerFilter']]], + ['sperspective_337',['sPerspective',['../class_mat44.html#aef3d368ff37b2b927b1f74573371a06e',1,'Mat44']]], + ['sphere_338',['sphere',['../class_sphere.html#aad6e2c3173f9261f5aa87a10a03aef94',1,'Sphere::Sphere(const Float3 &inCenter, float inRadius)'],['../class_sphere.html#a1c4a9559681c92e3520ba68310805a06',1,'Sphere::Sphere()=default'],['../class_sphere.html#aa60bc919d16366e674f90fb6b37bd7a8',1,'Sphere::Sphere(Vec3Arg inCenter, float inRadius)']]], + ['spherenoconvex_339',['SphereNoConvex',['../class_sphere_shape_1_1_sphere_no_convex.html#af220bf4b31e425741bbc587f13bf3eb2',1,'SphereShape::SphereNoConvex']]], + ['sphereshape_340',['sphereshape',['../class_sphere_shape.html#a500c89d354a98bdec5597e302f9babf3',1,'SphereShape::SphereShape(float inRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_sphere_shape.html#a9a858fa962e57907a10dff50bca7b8b5',1,'SphereShape::SphereShape(const SphereShapeSettings &inSettings, ShapeResult &outResult)'],['../class_sphere_shape.html#a6a7e1d71ee2a8f08aa3fe20e079c586e',1,'SphereShape::SphereShape()']]], + ['sphereshapesettings_341',['sphereshapesettings',['../class_sphere_shape_settings.html#a63f7177c89598cccf4f1852d2a828076',1,'SphereShapeSettings::SphereShapeSettings()=default'],['../class_sphere_shape_settings.html#a33357c22dbf0b662617360972a88a796',1,'SphereShapeSettings::SphereShapeSettings(float inRadius, const PhysicsMaterial *inMaterial=nullptr)']]], + ['spherewithconvex_342',['SphereWithConvex',['../class_sphere_shape_1_1_sphere_with_convex.html#ac0c40365985e261513777a19d486b6d8',1,'SphereShape::SphereWithConvex']]], + ['splatw_343',['splatw',['../class_vec4.html#aa890d45169669b6845a2770a72166fcf',1,'Vec4::SplatW()'],['../class_u_vec4.html#aa387ab2fa75ac96fa21f35f119c60f8a',1,'UVec4::SplatW()']]], + ['splatx_344',['splatx',['../class_vec4.html#a02525e7f8473c93268058324115eeb02',1,'Vec4::SplatX()'],['../class_vec3.html#a1b03f087ce2755a85ccba4ba56f1e64b',1,'Vec3::SplatX()'],['../class_u_vec4.html#a434119d6c7174e6efda8bf7a9bfab3e7',1,'UVec4::SplatX()']]], + ['splaty_345',['splaty',['../class_vec4.html#a7ea3bcf62a6055b45527f720a51d0005',1,'Vec4::SplatY()'],['../class_u_vec4.html#a1dad43e9c11de6562500394e3c07a491',1,'UVec4::SplatY()'],['../class_vec3.html#aad5b4211a6d98be56362559eefd9b029',1,'Vec3::SplatY()']]], + ['splatz_346',['splatz',['../class_vec4.html#a8fcd8e6ed1b4cf308656cca7cf68d5ee',1,'Vec4::SplatZ()'],['../class_vec3.html#a81f4448e17219aafda0e3b886709d1f4',1,'Vec3::SplatZ()'],['../class_u_vec4.html#a9e56056fab7838ecd3017281a974755d',1,'UVec4::SplatZ()']]], + ['split_347',['split',['../class_triangle_splitter_longest_axis.html#a6e0fd86ca2d38f41bd6faffcd94e08a4',1,'TriangleSplitterLongestAxis::Split()'],['../class_triangle_splitter_mean.html#a8b8904aefe3c646d907b89a55730f9a9',1,'TriangleSplitterMean::Split()'],['../class_triangle_splitter_morton.html#af5f1aebe70225e7be5d67573ef7dd63e',1,'TriangleSplitterMorton::Split()'],['../class_triangle_splitter_fixed_leaf_size.html#a3c4cf349a59b88d2bed3656d82fa5ead',1,'TriangleSplitterFixedLeafSize::Split()'],['../class_triangle_splitter_binning.html#a03fd4c136a8b0e6a5eb6220723239490',1,'TriangleSplitterBinning::Split()'],['../class_triangle_splitter.html#ad9cb9d125c24255c964427e186e5076e',1,'TriangleSplitter::Split(const Range &inTriangles, Range &outLeft, Range &outRight)=0']]], + ['splitinternal_348',['SplitInternal',['../class_triangle_splitter.html#a1264db44ab782cdb4d8e3b7857422c1a',1,'TriangleSplitter']]], + ['splitisland_349',['SplitIsland',['../class_large_island_splitter.html#a0e0435f6f000b574ec4e9649400f38cd',1,'LargeIslandSplitter']]], + ['springsettings_350',['springsettings',['../class_spring_settings.html#a3cf17470851be12c258e0c2f200f27e4',1,'SpringSettings::SpringSettings(ESpringMode inMode, float inFrequencyOrStiffness, float inDamping)'],['../class_spring_settings.html#ad21b30d2d06ed66e8660ccfc14403827',1,'SpringSettings::SpringSettings(const SpringSettings &)=default'],['../class_spring_settings.html#aefa8b0caa0840d58f74b297ad275c1cf',1,'SpringSettings::SpringSettings()=default']]], + ['sqrt_351',['sqrt',['../class_d_vec3.html#a286f436889f911c0fcf7f58692bb039d',1,'DVec3::Sqrt()'],['../class_vec3.html#ae3693c78a72d92e9ab821025f8ed28cf',1,'Vec3::Sqrt()'],['../class_vec4.html#a904d46bea744b136e86a786a73199fcb',1,'Vec4::Sqrt()']]], + ['square_352',['Square',['../_math_8h.html#a61379b8b743a16fe823daeebc1482570',1,'Math.h']]], + ['squatleftmultiply_353',['sQuatLeftMultiply',['../class_mat44.html#adca3adc84118200afa5f4203164d241f',1,'Mat44']]], + ['squatrightmultiply_354',['sQuatRightMultiply',['../class_mat44.html#a2b688da0262b9096bfac9ddfa2c27e52',1,'Mat44']]], + ['srandom_355',['srandom',['../class_vec3.html#a2786cc1d2f3b3891dc2d41077a2ee12f',1,'Vec3::sRandom()'],['../class_quat.html#a0686810998da92e9ab857b314b282d91',1,'Quat::sRandom()']]], + ['sreadobject_356',['sreadobject',['../class_object_stream_in.html#aaa03094c441e2189fde008fa0cab5c9f',1,'ObjectStreamIn::sReadObject(istream &inStream, Ref< T > &outObject)'],['../class_object_stream_in.html#af0d35e52cfcbba526cb92f2f703c0ae7',1,'ObjectStreamIn::sReadObject(const char *inFileName, Ref< T > &outObject)'],['../class_object_stream_in.html#a9eb8ce4c6197d5589bb984e5599c59c9',1,'ObjectStreamIn::sReadObject(const char *inFileName, T *&outObject)'],['../class_object_stream_in.html#aefafcdd9389ca4f08e6d966ced1dcffa',1,'ObjectStreamIn::sReadObject(istream &inStream, T *&outObject)']]], + ['sregister_357',['sregister',['../class_soft_body_shape.html#a6a4dd933461dfb1d7bde91eed5a4dc6f',1,'SoftBodyShape::sRegister()'],['../class_triangle_shape.html#aa885e991ed9af4f6f0e30b9436157f9e',1,'TriangleShape::sRegister()'],['../class_tapered_cylinder_shape.html#a179858c48ee826db8881f132671d8efd',1,'TaperedCylinderShape::sRegister()'],['../class_tapered_capsule_shape.html#a3aa3504c24de44b20a5335e2e0f38a3d',1,'TaperedCapsuleShape::sRegister()'],['../class_static_compound_shape.html#abf647cf5959f82ceee6a99775d327546',1,'StaticCompoundShape::sRegister()'],['../class_sphere_shape.html#a437ffa58df3010d0acf7fe4127dc5b10',1,'SphereShape::sRegister()'],['../class_rotated_translated_shape.html#a97e601971075a0df64de311c4ca408b4',1,'RotatedTranslatedShape::sRegister()'],['../class_height_field_shape.html#af3dccac7e8316932c5def85fde0689da',1,'HeightFieldShape::sRegister()'],['../class_cylinder_shape.html#a37bdf0cb950d2e64dad83345ab8798d4',1,'CylinderShape::sRegister()'],['../class_convex_shape.html#aa7fa38607feb65b18ff6554b6b095f3e',1,'ConvexShape::sRegister()'],['../class_convex_hull_shape.html#a56ffb5845b2036bea29d1651ffa6e5a1',1,'ConvexHullShape::sRegister()'],['../class_compound_shape.html#a76f5b0d6e064aa361723e20870874c0e',1,'CompoundShape::sRegister()'],['../class_capsule_shape.html#a04197ebb51d8fb880b9ebd4ca3e2f156',1,'CapsuleShape::sRegister()'],['../class_box_shape.html#a00674282972d39ea632c2cf1f4478ec6',1,'BoxShape::sRegister()'],['../class_scaled_shape.html#a02cfebf2c001533beb2f08ef9aa5b59f',1,'ScaledShape::sRegister()'],['../class_plane_shape.html#a4029bfa803f2f44539c4096f6dca17ce',1,'PlaneShape::sRegister()'],['../class_offset_center_of_mass_shape.html#a75c33e6898de385e4574746247ccdf10',1,'OffsetCenterOfMassShape::sRegister()'],['../class_mutable_compound_shape.html#a1c9b4561e27c2a0180c51eea489cf9b9',1,'MutableCompoundShape::sRegister()'],['../class_mesh_shape.html#a7c65cb780134f5d289b977dab3993e5b',1,'MeshShape::sRegister()']]], + ['sregistercastshape_358',['sRegisterCastShape',['../class_collision_dispatch.html#a211b05424a9e6e7bff777af77edad6be',1,'CollisionDispatch']]], + ['sregistercollideshape_359',['sRegisterCollideShape',['../class_collision_dispatch.html#a20d56fd7360a0b72be7803eef2d616ed',1,'CollisionDispatch']]], + ['sremovedependencies_360',['sremovedependencies',['../class_job_system_1_1_job_handle.html#a822d3ea702c61fe9aa32b2c6e6925749',1,'JobSystem::JobHandle::sRemoveDependencies(StaticArray< JobHandle, N > &inHandles, int inCount=1)'],['../class_job_system_1_1_job_handle.html#a0daface7b509f0f9bd5b03a33554b6c4',1,'JobSystem::JobHandle::sRemoveDependencies(const JobHandle *inHandles, uint inNumHandles, int inCount=1)']]], + ['sreplicate_361',['sreplicate',['../class_d_vec3.html#aacd317439be46d73edb9c0272b9445d6',1,'DVec3::sReplicate()'],['../class_u_vec4.html#a4287a7bd825aaf6111f310e0c92bd152',1,'UVec4::sReplicate()'],['../class_u_vec8.html#a980a0e87ee35f33a2778022f6e95e50f',1,'UVec8::sReplicate()'],['../class_vec3.html#ad6be51ce14811d6c196784d20cb39b98',1,'Vec3::sReplicate()'],['../class_vec4.html#af18f350dd2885dc48ff7e7cbf4b8bc9d',1,'Vec4::sReplicate()'],['../class_vec8.html#affc8f77dd2b5411c7b27e8f037c2dcee',1,'Vec8::sReplicate()']]], + ['srestorefrombinarystate_362',['srestorefrombinarystate',['../class_ragdoll_settings.html#a290920d5a22f05282117b81a842504b0',1,'RagdollSettings::sRestoreFromBinaryState()'],['../class_skeleton.html#a3429d0d7e38215ebc548ec1668e5835f',1,'Skeleton::sRestoreFromBinaryState()'],['../class_physics_scene.html#a887f36659b18acde327e0d9741d8bbda',1,'PhysicsScene::sRestoreFromBinaryState()'],['../class_path_constraint_path.html#ac6fa79b918e711e6cd800463d9506663',1,'PathConstraintPath::sRestoreFromBinaryState()'],['../class_constraint_settings.html#a0e806046f09625624a7ecdec52aafa8b',1,'ConstraintSettings::sRestoreFromBinaryState()'],['../class_shape.html#a6e4794eda984be9d44335e38824eb1bb',1,'Shape::sRestoreFromBinaryState()'],['../class_physics_material.html#affe6eea0b427cc98523f32e5d1e494f9',1,'PhysicsMaterial::sRestoreFromBinaryState()'],['../class_group_filter.html#ab6ed0c1e98ac928c80b669dc82d7eed7',1,'GroupFilter::sRestoreFromBinaryState()']]], + ['srestorewithchildren_363',['srestorewithchildren',['../class_body_creation_settings.html#ace0c4cc07ee02c076d09ec966f510860',1,'BodyCreationSettings::sRestoreWithChildren()'],['../class_shape.html#a439b98c1569fb5d44570446306823f5e',1,'Shape::sRestoreWithChildren()'],['../class_soft_body_creation_settings.html#a1900ac31f68ba7ff3ed27d9cf7f5d382',1,'SoftBodyCreationSettings::sRestoreWithChildren()']]], + ['srestorewithmaterials_364',['sRestoreWithMaterials',['../class_soft_body_shared_settings.html#ae8be307a9bf23c82e7bf12575873973e',1,'SoftBodySharedSettings']]], + ['sreversedcastshape_365',['sReversedCastShape',['../class_collision_dispatch.html#a559aa7de19de882317f52329f88182ea',1,'CollisionDispatch']]], + ['sreversedcollideshape_366',['sReversedCollideShape',['../class_collision_dispatch.html#a931dfb0bf6aeeed8acc7d6c6907f903b',1,'CollisionDispatch']]], + ['srotation_367',['srotation',['../class_d_mat44.html#a748b82fc1980e7470c0da6a82ddb94b9',1,'DMat44::sRotation()'],['../class_mat44.html#ac3109f2d950061c0b4de57e76a132634',1,'Mat44::sRotation(Vec3Arg inAxis, float inAngle)'],['../class_mat44.html#a57c9e6198fcf68a50cb33609fac0980a',1,'Mat44::sRotation(QuatArg inQuat)'],['../class_quat.html#a3ac594bf7be610138e90735ae99ff8e9',1,'Quat::sRotation()']]], + ['srotationtranslation_368',['srotationtranslation',['../class_d_mat44.html#a2ff705d6cc881693661b4f30fe06a7d2',1,'DMat44::sRotationTranslation()'],['../class_mat44.html#aba5427f45393b40263d52ec614cfa985',1,'Mat44::sRotationTranslation(QuatArg inR, Vec3Arg inT)']]], + ['srotationx_369',['sRotationX',['../class_mat44.html#af243335b6d6acec2cf71d4cdc79bdff4',1,'Mat44']]], + ['srotationy_370',['sRotationY',['../class_mat44.html#afc881fca3e2d653815f0e7742ad4dce8',1,'Mat44']]], + ['srotationz_371',['sRotationZ',['../class_mat44.html#a3d393e34a43a22b0fbd2aba60f364434',1,'Mat44']]], + ['sscale_372',['sscale',['../class_d_mat44.html#a58693b06de99f17817c09a4c43bfe294',1,'DMat44::sScale()'],['../class_mat44.html#a858ecd5c9c124039f5c7adab5bcf5041',1,'Mat44::sScale(float inScale)'],['../class_mat44.html#a6059fd2921e0dc33405fe05a2d3aaa76',1,'Mat44::sScale(Vec3Arg inV)']]], + ['sselect_373',['sselect',['../class_vec4.html#a6ae67a60e24b50c1b59050ef3d171228',1,'Vec4::sSelect()'],['../class_vec8.html#ace631572dfd1ef87806ef62714d3fd89',1,'Vec8::sSelect()'],['../class_vec3.html#a9f893b7c7bc6ef51c19ceeb3c195dd22',1,'Vec3::sSelect()'],['../class_u_vec8.html#af6073e4bae8355de6c0965306f3d8c02',1,'UVec8::sSelect()'],['../class_u_vec4.html#ae71c2806661a22cb3a5c880a280f30c0',1,'UVec4::sSelect()'],['../class_d_vec3.html#a7a3873b0b6c20ede5c47eb88b237125e',1,'DVec3::sSelect()']]], + ['ssetinstance_374',['sSetInstance',['../class_profile_thread.html#ad957acc068d3fd9af54ba3d3e6f80d8f',1,'ProfileThread']]], + ['ssetupvelocityconstraints_375',['sSetupVelocityConstraints',['../class_constraint_manager.html#afe238a7b8236da9b32ab8f5d2805a9b0',1,'ConstraintManager']]], + ['ssolvepositionconstraints_376',['sSolvePositionConstraints',['../class_constraint_manager.html#a4229723017436afa53da329e916f35be',1,'ConstraintManager']]], + ['ssolvevelocityconstraints_377',['sSolveVelocityConstraints',['../class_constraint_manager.html#ac5b062e8c716c39c1ab6a9596cf38e27',1,'ConstraintManager']]], + ['ssort4_378',['sSort4',['../class_vec4.html#a07960f2e43abb163fe7ded729c3cac16',1,'Vec4']]], + ['ssort4reverse_379',['sSort4Reverse',['../class_vec4.html#a5474af2152aa33e6b02048aa2b279ece',1,'Vec4']]], + ['ssort4true_380',['sSort4True',['../class_u_vec4.html#a2c26ee49875159becb637c976cd7b589',1,'UVec4']]], + ['ssortconstraints_381',['sSortConstraints',['../class_constraint_manager.html#a2757e3b3d0529dc17e18f973962189a0',1,'ConstraintManager']]], + ['ssplatx_382',['ssplatx',['../class_u_vec8.html#a8feae856c89191c68f06b805203df53f',1,'UVec8::sSplatX()'],['../class_vec8.html#a33fb5192697f9c095b075025a067c4f4',1,'Vec8::sSplatX()']]], + ['ssplaty_383',['ssplaty',['../class_u_vec8.html#a7f27a397508f57859f2e8c87c4be3d3b',1,'UVec8::sSplatY()'],['../class_vec8.html#a6204d9f1086b05b6e5a6932337b12c80',1,'Vec8::sSplatY()']]], + ['ssplatz_384',['ssplatz',['../class_u_vec8.html#a284219a34c2eef183e1b66bfe96ae186',1,'UVec8::sSplatZ()'],['../class_vec8.html#ade8178e79b24927bb220857640b09bc0',1,'Vec8::sSplatZ()']]], + ['stabilize_385',['Stabilize',['../class_ragdoll_settings.html#ab47bfb4b4c4c9dc780307449f9907bae',1,'RagdollSettings']]], + ['startfirstbatch_386',['StartFirstBatch',['../class_large_island_splitter_1_1_splits.html#a42483726c98f92ac6b1c915da0fa8868',1,'LargeIslandSplitter::Splits']]], + ['startvertex_387',['StartVertex',['../class_collide_soft_body_vertices_vs_triangles.html#af5a3ecc5d8027b5e5ea5a313f3cd30cc',1,'CollideSoftBodyVerticesVsTriangles']]], + ['staterecorder_388',['staterecorder',['../class_state_recorder.html#ae41b09b37188ba73227dae4e070c53a8',1,'StateRecorder::StateRecorder()=default'],['../class_state_recorder.html#a3818f8d05147108719da00491da8569a',1,'StateRecorder::StateRecorder(const StateRecorder &inRHS)']]], + ['staterecorderimpl_389',['staterecorderimpl',['../class_state_recorder_impl.html#ac2062cdb1fffa9de6f0a4ca56c610573',1,'StateRecorderImpl::StateRecorderImpl(StateRecorderImpl &&inRHS)'],['../class_state_recorder_impl.html#a032ad810f2ab41da508ff62b35a93286',1,'StateRecorderImpl::StateRecorderImpl()=default']]], + ['staticarray_390',['staticarray',['../class_static_array.html#a9be0006e3a1a001893645dbd5b34b355',1,'StaticArray::StaticArray(const StaticArray< T, N > &inRHS)'],['../class_static_array.html#a4289f014eadc8aa60ff6785dabe32f11',1,'StaticArray::StaticArray(std::initializer_list< T > inList)'],['../class_static_array.html#a0b1020145a67d2f11ef8b6e21e56efda',1,'StaticArray::StaticArray()=default']]], + ['staticcast_391',['staticcast',['../_r_t_t_i_8h.html#ac456886504eedda859d757767b43b913',1,'StaticCast(const Ref< SrcType > &inObject): RTTI.h'],['../_r_t_t_i_8h.html#a30570b0c6bee40ac6353ddc6d6e22468',1,'StaticCast(const SrcType *inObject): RTTI.h'],['../_r_t_t_i_8h.html#ac0e76c143b5261a65c20f554bc37cab1',1,'StaticCast(SrcType *inObject): RTTI.h'],['../_r_t_t_i_8h.html#ad3e3c54382d1f619141d317cedfe5e5d',1,'StaticCast(const RefConst< SrcType > &inObject): RTTI.h']]], + ['staticcompoundshape_392',['staticcompoundshape',['../class_static_compound_shape.html#a38f22b35f96ae12c1b41d6503d47faf7',1,'StaticCompoundShape::StaticCompoundShape()'],['../class_static_compound_shape.html#a15254cd1ef605397c34cd1455c3ce317',1,'StaticCompoundShape::StaticCompoundShape(const StaticCompoundShapeSettings &inSettings, TempAllocator &inTempAllocator, ShapeResult &outResult)']]], + ['stats_393',['Stats',['../struct_shape_1_1_stats.html#a61e3cd06a767754cbc5150fe93f1e5fb',1,'Shape::Stats']]], + ['step_394',['step',['../struct_physics_update_context_1_1_step.html#a9ec562500a7a59cafbf7d6ce138f702a',1,'PhysicsUpdateContext::Step::Step()=default'],['../struct_physics_update_context_1_1_step.html#a806fa33748fb5724711d2244c55ac119',1,'PhysicsUpdateContext::Step::Step(const Step &)']]], + ['sticktofloor_395',['StickToFloor',['../class_character_virtual.html#a994b7c0aa38c4930117253eafdd9c9b9',1,'CharacterVirtual']]], + ['stlalignedallocator_396',['stlalignedallocator',['../class_s_t_l_aligned_allocator.html#adcbf21beef1553bd11174da4a4a4a274',1,'STLAlignedAllocator::STLAlignedAllocator(const STLAlignedAllocator< T2, N > &)'],['../class_s_t_l_aligned_allocator.html#a490bc5212d1eaa558cd629b920f7ab4f',1,'STLAlignedAllocator::STLAlignedAllocator()=default']]], + ['stlallocator_397',['stlallocator',['../class_s_t_l_allocator.html#aca939c9a9e8a37dbc3ace546d3c843a5',1,'STLAllocator::STLAllocator(const STLAllocator< T2 > &)'],['../class_s_t_l_allocator.html#a0971631bbfb181b844ee4f1f6cf987d8',1,'STLAllocator::STLAllocator()=default']]], + ['stltempallocator_398',['stltempallocator',['../class_s_t_l_temp_allocator.html#a584223fe52d48aafd4ab2b9f3d30ecd8',1,'STLTempAllocator::STLTempAllocator(const STLTempAllocator< T2 > &inRHS)'],['../class_s_t_l_temp_allocator.html#a96f2c3cf503f75f1deb7b97ce2d677e2',1,'STLTempAllocator::STLTempAllocator(TempAllocator &inAllocator)']]], + ['storeappliedimpulses_399',['StoreAppliedImpulses',['../class_contact_constraint_manager.html#ac825a74176ec59d9e2995e67fc8d43c1',1,'ContactConstraintManager']]], + ['storedouble3_400',['StoreDouble3',['../class_d_vec3.html#a660cd286454202510b44fa18c2283d4d',1,'DVec3']]], + ['storefloat3_401',['storefloat3',['../class_vec3.html#ab22c62c48d2de13947c0cd3413018364',1,'Vec3::StoreFloat3()'],['../class_quat.html#ae95e7b6c9f4167b91b674a696c681c6e',1,'Quat::StoreFloat3()']]], + ['storefloat4_402',['StoreFloat4',['../class_vec4.html#afdfae50fe6a7d86e7d1684fc71be7ed0',1,'Vec4']]], + ['storefloat4x4_403',['StoreFloat4x4',['../class_mat44.html#a1f51050b35215131c7da9a7de78a3e1e',1,'Mat44']]], + ['storeint4_404',['StoreInt4',['../class_u_vec4.html#aa7b95daa78a51ef877eca777c0389023',1,'UVec4']]], + ['storeint4aligned_405',['StoreInt4Aligned',['../class_u_vec4.html#af62228e490b01b95d5b008a54746473c',1,'UVec4']]], + ['stostring_406',['sToString',['../class_character_base.html#a269b97a0088e3651387c10f350d792cd',1,'CharacterBase']]], + ['stranslation_407',['stranslation',['../class_mat44.html#a8cc7184902ce670d0822a28a8906df52',1,'Mat44::sTranslation()'],['../class_d_mat44.html#a891c6a1cbe12676aedc8788ff5ec0b8a',1,'DMat44::sTranslation()']]], + ['streaminwrapper_408',['StreamInWrapper',['../class_stream_in_wrapper.html#a520dc1917ebc617092afe68cbaa4ed6b',1,'StreamInWrapper']]], + ['streamoutwrapper_409',['StreamOutWrapper',['../class_stream_out_wrapper.html#a31c8f3fb2fae07e695d9d7ab7bad604d',1,'StreamOutWrapper']]], + ['striangleblockidbits_410',['sTriangleBlockIDBits',['../class_node_codec_quad_tree_half_float_1_1_decoding_context.html#a90be34ac29998cfd210f0c1d28956a9c',1,'NodeCodecQuadTreeHalfFloat::DecodingContext']]], + ['strianglesorter_411',['sTriangleSorter',['../class_e_p_a_convex_hull_builder_1_1_triangle_queue.html#abcdf1b5b997b6520dc8123ac8e9bf84f',1,'EPAConvexHullBuilder::TriangleQueue']]], + ['stringformat_412',['stringformat',['../_string_tools_8h.html#a9829a5cb529d81ee7d6d6de1c294200c',1,'StringFormat(const char *inFMT,...): StringTools.cpp'],['../_string_tools_8cpp.html#acb1471934488a8e403995034bbc3d8b0',1,'StringFormat(const char *inFMT,...): StringTools.cpp']]], + ['stringreplace_413',['stringreplace',['../_string_tools_8cpp.html#a3cb1fdfee4bb3f11e76d9c0a5f690eec',1,'StringReplace(String &ioString, const string_view &inSearch, const string_view &inReplace): StringTools.cpp'],['../_string_tools_8h.html#abdea20f54434c5c987489835602a2668',1,'StringReplace(String &ioString, const string_view &inSearch, const string_view &inReplace): StringTools.cpp']]], + ['stringtovector_414',['stringtovector',['../_string_tools_8cpp.html#a353e97cf17bc7c6645c9354539f736d3',1,'StringToVector(const string_view &inString, Array< String > &outVector, const string_view &inDelimiter, bool inClearVector): StringTools.cpp'],['../_string_tools_8h.html#a6d6e2c32ceb88a41e7ab8623735a4a77',1,'StringToVector(const string_view &inString, Array< String > &outVector, const string_view &inDelimiter=",", bool inClearVector=true): StringTools.cpp']]], + ['subangularvelocitystep_415',['SubAngularVelocityStep',['../class_motion_properties.html#a98672fc0c6884643944e570e1d78ac07',1,'MotionProperties']]], + ['sublinearvelocitystep_416',['SubLinearVelocityStep',['../class_motion_properties.html#a81a597bd1f9f40f3fbf36991203a5280',1,'MotionProperties']]], + ['subpositionstep_417',['SubPositionStep',['../class_body.html#a3c0a6198eb89412439dfcaef56eadade',1,'Body']]], + ['subrotationstep_418',['SubRotationStep',['../class_body.html#ab0df53d82e3a8356fac91d178b30c369',1,'Body']]], + ['subshapeid_419',['SubShapeID',['../class_sub_shape_i_d.html#af367dd3acaba3f507a19ba0d27abd299',1,'SubShapeID']]], + ['subshapeidpair_420',['subshapeidpair',['../class_sub_shape_i_d_pair.html#a899aaabfed0fe32af496bf293e446228',1,'SubShapeIDPair::SubShapeIDPair()=default'],['../class_sub_shape_i_d_pair.html#abc493f2b834301d7787650dcf28752c1',1,'SubShapeIDPair::SubShapeIDPair(const BodyID &inBody1ID, const SubShapeID &inSubShapeID1, const BodyID &inBody2ID, const SubShapeID &inSubShapeID2)'],['../class_sub_shape_i_d_pair.html#abecaface9b0fca0e2724d1777cce12a8',1,'SubShapeIDPair::SubShapeIDPair(const SubShapeIDPair &)=default']]], + ['succeeded_421',['Succeeded',['../class_body_lock_base.html#a8ee09ef1fb31697b4f965c8e5ee09e5f',1,'BodyLockBase']]], + ['succeededandisinbroadphase_422',['SucceededAndIsInBroadPhase',['../class_body_lock_base.html#a9ed231a8aea3cfa9e1e721707dcd08fb',1,'BodyLockBase']]], + ['sunitspherical_423',['sUnitSpherical',['../class_vec3.html#aa1ab73a18c3b8b69303bde72cf8bc171',1,'Vec3']]], + ['sunlock_424',['sUnlock',['../class_physics_lock.html#a93408c0ca5bd7bd4668c3c78dbf49966',1,'PhysicsLock']]], + ['sunlockshared_425',['sUnlockShared',['../class_physics_lock.html#ab42fb21e1412524a772aa26b9f7411b3',1,'PhysicsLock']]], + ['swap_426',['swap',['../class_array.html#a8a91e5ebc333d5fc2373fe0fc597b6d3',1,'Array']]], + ['swapshapes_427',['SwapShapes',['../class_contact_manifold.html#a48787ecfb82e124dfa8cd1de71ed8027',1,'ContactManifold']]], + ['swarmstartvelocityconstraints_428',['sWarmStartVelocityConstraints',['../class_constraint_manager.html#ae6bcface0a71b17d95c48e2dddac5741',1,'ConstraintManager']]], + ['swingtwistconstraint_429',['SwingTwistConstraint',['../class_swing_twist_constraint.html#a68c8e6f8d1f25c3d593c7304d6804b6e',1,'SwingTwistConstraint']]], + ['swizzle_430',['swizzle',['../class_u_vec8.html#a2e355553378c7ecbac97bf9a52760f20',1,'UVec8::Swizzle()'],['../class_u_vec4.html#a03d1ddee4a58319e1fd6fb7a8c599874',1,'UVec4::Swizzle()'],['../class_vec3.html#afd477997c0834bd3080156e730ced38d',1,'Vec3::Swizzle()'],['../class_vec4.html#abc7417303ad93e9bbe7506e7cd045724',1,'Vec4::Swizzle()'],['../class_vec8.html#afa43e457f8368acb7b249d9f13e484eb',1,'Vec8::Swizzle()'],['../class_u_vec4.html#aebec00b09795b4b0bfb3acfdc9a52b3f',1,'UVec4::Swizzle()'],['../class_u_vec8.html#a907862ab1fd7c2886e2b75a1c6a2e9ac',1,'UVec8::Swizzle()'],['../class_vec3.html#aeeadce7b9b442cccab2d2f3cbde2ccb9',1,'Vec3::Swizzle()'],['../class_vec4.html#af28ba6db045e3e38be66dfdc93c78bda',1,'Vec4::Swizzle()'],['../class_vec8.html#a7e104be6684316118f94a6a0f2a8f488',1,'Vec8::Swizzle()']]], + ['swriteobject_431',['swriteobject',['../class_object_stream_out.html#aa2b5606b21a4dc250385941cda2ab26f',1,'ObjectStreamOut::sWriteObject(ostream &inStream, ObjectStream::EStreamType inType, const T &inObject)'],['../class_object_stream_out.html#a05f2b21699e0b6f60be034761681fdf6',1,'ObjectStreamOut::sWriteObject(const char *inFileName, ObjectStream::EStreamType inType, const T &inObject)']]], + ['sxor_432',['sxor',['../class_u_vec8.html#ac76cd233870c4735b88b298883e0569e',1,'UVec8::sXor()'],['../class_d_vec3.html#a2f3ad4f64ebffb752360f19225186886',1,'DVec3::sXor()'],['../class_u_vec4.html#abd3a979865d0b6df8f8ef5ce6410e583',1,'UVec4::sXor()'],['../class_vec3.html#a3327f133140fbd8cf8e0adaa59480ab3',1,'Vec3::sXor()'],['../class_vec4.html#a31e9dd5a7d6d4dc05efb55a36a8e80d9',1,'Vec4::sXor()']]], + ['syncleftrighttracks_433',['SyncLeftRightTracks',['../class_tracked_vehicle_controller.html#ab5064addb31d8c35e87492b48221503c',1,'TrackedVehicleController']]], + ['szero_434',['szero',['../class_d_mat44.html#a46c73fc4d7a4955c1173e8e210e92e6c',1,'DMat44::sZero()'],['../class_vector.html#ae70acad7587a3fa83a27f2ece2ba79b8',1,'Vector::sZero()'],['../class_vec8.html#abb275faf149d6f691487dcd3055a0898',1,'Vec8::sZero()'],['../class_vec4.html#ab3d9624594386baa4ebd8c1d340ce924',1,'Vec4::sZero()'],['../class_vec3.html#ad03c52ab27761bc1e64e33c47632ba51',1,'Vec3::sZero()'],['../class_u_vec4.html#ac95737616e92901bf3ebf5746a861233',1,'UVec4::sZero()'],['../class_quat.html#aed30764b796cee2d0169b126c3839bc1',1,'Quat::sZero()'],['../class_matrix.html#a0ff410c865209df6d236e3bd8ca50863',1,'Matrix::sZero()'],['../class_mat44.html#a1e3a8da1cf3a631ffaf478ca3f6bb1ed',1,'Mat44::sZero()'],['../class_d_vec3.html#a7b43808613023c4439455b887c566246',1,'DVec3::sZero()']]] +]; diff --git a/search/functions_12.js b/search/functions_12.js new file mode 100644 index 000000000..2b6bbd639 --- /dev/null +++ b/search/functions_12.js @@ -0,0 +1,63 @@ +var searchData= +[ + ['tan_0',['tan',['../_trigonometry_8h.html#a138c843d7c7c5f89c1757b159a86eb00',1,'Tan(): Trigonometry.h'],['../class_vec4.html#a3769f486156183d3cbecb6a37291fe5c',1,'Vec4::Tan()']]], + ['taperedcapsule_1',['TaperedCapsule',['../class_tapered_capsule_shape_1_1_tapered_capsule.html#a065b71c0f63e9ecfd7cfb30d8b724365',1,'TaperedCapsuleShape::TaperedCapsule']]], + ['taperedcapsuleshape_2',['taperedcapsuleshape',['../class_tapered_capsule_shape.html#a632f3cfdfb0c81974230eee592c47c97',1,'TaperedCapsuleShape::TaperedCapsuleShape(const TaperedCapsuleShapeSettings &inSettings, ShapeResult &outResult)'],['../class_tapered_capsule_shape.html#a26e7343399e7002fa535d95b208d6d55',1,'TaperedCapsuleShape::TaperedCapsuleShape()']]], + ['taperedcylinder_3',['TaperedCylinder',['../class_tapered_cylinder_shape_1_1_tapered_cylinder.html#afe58c3a31719ae32daf115455ff5ae7c',1,'TaperedCylinderShape::TaperedCylinder']]], + ['taperedcylindershape_4',['taperedcylindershape',['../class_tapered_cylinder_shape.html#af06fbca036211e78798e2605a8a70fd5',1,'TaperedCylinderShape::TaperedCylinderShape()'],['../class_tapered_cylinder_shape.html#a536246606d4ade28265a07058fc6fe1c',1,'TaperedCylinderShape::TaperedCylinderShape(const TaperedCylinderShapeSettings &inSettings, ShapeResult &outResult)']]], + ['tcsgettrianglescontext_5',['TCSGetTrianglesContext',['../class_tapered_cylinder_shape_1_1_t_c_s_get_triangles_context.html#a53e2d1e06cfd558ec2629b5cf74014b2',1,'TaperedCylinderShape::TCSGetTrianglesContext']]], + ['tempallocatorimpl_6',['TempAllocatorImpl',['../class_temp_allocator_impl.html#a9edf09cdde4563a221184b0a8653b97a',1,'TempAllocatorImpl']]], + ['tempallocatorimplwithmallocfallback_7',['TempAllocatorImplWithMallocFallback',['../class_temp_allocator_impl_with_malloc_fallback.html#a1dde46a11157eaac198e43fb63be9d82',1,'TempAllocatorImplWithMallocFallback']]], + ['templatedcalculateconstraintproperties_8',['TemplatedCalculateConstraintProperties',['../class_axis_constraint_part.html#a5a8bc2c7a35f60b63e233ed13db1749b',1,'AxisConstraintPart']]], + ['templatedsolvevelocityconstraint_9',['TemplatedSolveVelocityConstraint',['../class_axis_constraint_part.html#a24593248d2181c548e9621817beab264',1,'AxisConstraintPart']]], + ['templatedsolvevelocityconstraintapplylambda_10',['TemplatedSolveVelocityConstraintApplyLambda',['../class_axis_constraint_part.html#aaf10ea43c5acaac802523b68dfbaf51d',1,'AxisConstraintPart']]], + ['templatedsolvevelocityconstraintgettotallambda_11',['TemplatedSolveVelocityConstraintGetTotalLambda',['../class_axis_constraint_part.html#a9f2617fd84fcdd5a77f4502c6e327143',1,'AxisConstraintPart']]], + ['templatedwarmstart_12',['TemplatedWarmStart',['../class_axis_constraint_part.html#adb5b5d041b1261d227b2d657a93cabd9',1,'AxisConstraintPart']]], + ['testalltrue_13',['testalltrue',['../class_d_vec3.html#a7c7ae9dc9ebecde0e653c872fd6aad58',1,'DVec3::TestAllTrue()'],['../class_u_vec8.html#a3269b59051bb75bdb3c9f22ceb272492',1,'UVec8::TestAllTrue()'],['../class_u_vec4.html#a48549afaeaba00fc4b45a10c50656c9f',1,'UVec4::TestAllTrue() const']]], + ['testallxyztrue_14',['TestAllXYZTrue',['../class_u_vec4.html#a8a5a4714c700cab249106fe37bf1f74f',1,'UVec4']]], + ['testanytrue_15',['testanytrue',['../class_d_vec3.html#a0f06147fe78e9b54a1865579401fe97f',1,'DVec3::TestAnyTrue()'],['../class_u_vec4.html#afa8f229eccfd643197d92382bf8877f7',1,'UVec4::TestAnyTrue()'],['../class_u_vec8.html#a7cc280bb498d1da896005b682a768db9',1,'UVec8::TestAnyTrue()']]], + ['testanyxyztrue_16',['TestAnyXYZTrue',['../class_u_vec4.html#a57a26ddd10bb99e07e68096eb10d1244',1,'UVec4']]], + ['testbounds_17',['testbounds',['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#a814152f9307136c005f19c36131746d2',1,'CompoundShape::CastRayVisitorCollector::TestBounds()'],['../struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a0271b87f4c7610b317b82a77d7d255c6',1,'CompoundShape::GetIntersectingSubShapesVisitor::TestBounds()'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a7ee379618c3c642c3b84b1bdb6be6bb1',1,'CompoundShape::CollideShapeVsCompoundVisitor::TestBounds()'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#af43a759ff857d5f3ee1246425e146851',1,'CompoundShape::CollideCompoundVsShapeVisitor::TestBounds()'],['../struct_compound_shape_1_1_cast_shape_visitor.html#aa89ca00f54a79ed5ead44eebbc25f41e',1,'CompoundShape::CastShapeVisitor::TestBounds()'],['../struct_compound_shape_1_1_collide_point_visitor.html#a462fecb2d7a11225bc4b89015a4c6e9b',1,'CompoundShape::CollidePointVisitor::TestBounds()'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#ae2e78802ce43915c117bc1e0d91d08b5',1,'CompoundShape::CollectTransformedShapesVisitor::TestBounds()'],['../struct_compound_shape_1_1_cast_ray_visitor.html#a45ca32b8515b057633bdea8c47f3f044',1,'CompoundShape::CastRayVisitor::TestBounds()']]], + ['testray_18',['TestRay',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#ae532afd31a81a660a2602ce779449b23',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext']]], + ['textblob_19',['textblob',['../struct_debug_renderer_recorder_1_1_text_blob.html#a651d2fd99b808d04a93e0cda2894d244',1,'DebugRendererRecorder::TextBlob::TextBlob()=default'],['../struct_debug_renderer_recorder_1_1_text_blob.html#ab4f54cc8990295747f0ea8953345a64a',1,'DebugRendererRecorder::TextBlob::TextBlob(RVec3Arg inPosition, const string_view &inString, ColorArg inColor, float inHeight)']]], + ['toconstraintsettings_20',['ToConstraintSettings',['../class_constraint.html#aa117730922a803f0a12321bcd68583ab',1,'Constraint']]], + ['tofloat_21',['tofloat',['../class_u_vec8.html#aca1ec9006b80aa9845b81cdef795731d',1,'UVec8::ToFloat()'],['../namespace_half_float_conversion.html#a25cf44e188c51d03e061f23e1eabe36a',1,'HalfFloatConversion::ToFloat()'],['../class_u_vec4.html#aec14683a4f6c1c34bb27e7119a813184',1,'UVec4::ToFloat()']]], + ['tofloatfallback_22',['ToFloatFallback',['../namespace_half_float_conversion.html#a222fa9e87d5e494aa324defa2925d03e',1,'HalfFloatConversion']]], + ['tohandle_23',['ToHandle',['../class_lock_free_hash_map.html#ae1a2bd3a51575e8353470750d0ea9f4b',1,'LockFreeHashMap']]], + ['toint_24',['toint',['../class_vec3.html#aa3c728704083c719616638ceb698b2f1',1,'Vec3::ToInt()'],['../class_vec4.html#a37a85cfb52ff5a074877db484772cc63',1,'Vec4::ToInt()']]], + ['tolower_25',['tolower',['../_string_tools_8cpp.html#ac3399e40a8c21096dc8203af6a7519cc',1,'ToLower(const string_view &inString): StringTools.cpp'],['../_string_tools_8h.html#a0d6b59714c2e6686fdfc0535bffcd22d',1,'ToLower(const string_view &inString): StringTools.cpp']]], + ['tomat44_26',['tomat44',['../class_d_mat44.html#a358f19401d6b1d71fb10fbf2c1ff355e',1,'DMat44::ToMat44()'],['../class_mat44.html#a3445a728646fe8ad80381a0e55ea2289',1,'Mat44::ToMat44()']]], + ['tomatrix_27',['ToMatrix',['../class_skeletal_animation_1_1_joint_state.html#a9f73687fd3e02751c32b6815aa9293c4',1,'SkeletalAnimation::JointState']]], + ['tooffset_28',['ToOffset',['../class_l_f_h_m_allocator.html#a5b71c811049f9598a499cc58a1f2e8c0',1,'LFHMAllocator']]], + ['tovec3rounddown_29',['ToVec3RoundDown',['../class_d_vec3.html#a10a315fe487a61ec9fd93810a18477f5',1,'DVec3']]], + ['tovec3roundup_30',['ToVec3RoundUp',['../class_d_vec3.html#a825111b9afec36c79cfc63fa855f5cb1',1,'DVec3']]], + ['tovec4_31',['ToVec4',['../class_color.html#ab2a95c51874ddeb032fb6c08fd663873',1,'Color']]], + ['trackedvehiclecontroller_32',['TrackedVehicleController',['../class_tracked_vehicle_controller.html#a6a5ee14fd6717b24367090fa9efb52a3',1,'TrackedVehicleController']]], + ['trackedvehiclecontrollersettings_33',['TrackedVehicleControllerSettings',['../class_tracked_vehicle_controller_settings.html#a3e6e286db5b9b87b0300b81b4c5b33ea',1,'TrackedVehicleControllerSettings']]], + ['tracking_34',['tracking',['../struct_quad_tree_1_1_tracking.html#ace40c7c746daea352249919d962f3fc5',1,'QuadTree::Tracking::Tracking()=default'],['../struct_quad_tree_1_1_tracking.html#a49de4bd747c49f2b0c9dc0017740ec14',1,'QuadTree::Tracking::Tracking(const Tracking &inRHS)']]], + ['transformed_35',['transformed',['../struct_ray_cast_t.html#a89d5ea77b4b5f8c92e1ec515ea70d14b',1,'RayCastT::Transformed()'],['../class_a_a_box.html#abd7316d2e960c1a365acc924b1492ff3',1,'AABox::Transformed(Mat44Arg inMatrix) const'],['../class_a_a_box.html#a8be97ca2e05200438519a73994ca26a9',1,'AABox::Transformed(DMat44Arg inMatrix) const']]], + ['transformedconvexobject_36',['TransformedConvexObject',['../struct_transformed_convex_object.html#aee084d15cbc724e8a28b88298a557573',1,'TransformedConvexObject']]], + ['transformedshape_37',['transformedshape',['../class_transformed_shape.html#aa2bca98098fc17f1d18ea542a619eff0',1,'TransformedShape::TransformedShape()=default'],['../class_transformed_shape.html#a8a62ed0edd25b3a64ecdcaab55de237e',1,'TransformedShape::TransformedShape(RVec3Arg inPositionCOM, QuatArg inRotation, const Shape *inShape, const BodyID &inBodyID, const SubShapeIDCreator &inSubShapeIDCreator=SubShapeIDCreator())']]], + ['transformscale_38',['TransformScale',['../struct_compound_shape_1_1_sub_shape.html#a92de7326e077355d680f2d6ce860d7fc',1,'CompoundShape::SubShape']]], + ['transformshape_39',['transformshape',['../class_offset_center_of_mass_shape.html#a9d00bab2ce478091ebef5d20168988ac',1,'OffsetCenterOfMassShape::TransformShape()'],['../class_compound_shape.html#a10919d4b9069ed45d39e765f94e44b2c',1,'CompoundShape::TransformShape()'],['../class_rotated_translated_shape.html#a6d9ccc84cd701f0a90703f634a3aa09a',1,'RotatedTranslatedShape::TransformShape()'],['../class_scaled_shape.html#a9da292ba3e1f73783abacc9918f47607',1,'ScaledShape::TransformShape()'],['../class_shape.html#a4b4b180a41ffdf7369f79706b0e27570',1,'Shape::TransformShape()']]], + ['translate_40',['translate',['../class_mass_properties.html#aaa1db421f180e9955103953b822ad22c',1,'MassProperties::Translate()'],['../class_a_a_box.html#ad20ec5f347a638536bdcbeb91f8993f5',1,'AABox::Translate(Vec3Arg inTranslation)'],['../class_a_a_box.html#a2a472cf66982e1eb113185ccb8fde0f4',1,'AABox::Translate(DVec3Arg inTranslation)']]], + ['translated_41',['Translated',['../struct_ray_cast_t.html#a469b4e1823ef597e3a9d616634144c0c',1,'RayCastT']]], + ['transposed_42',['transposed',['../class_mat44.html#a388723db2d35de31efcee6ff0cfb711d',1,'Mat44::Transposed()'],['../class_matrix.html#aeb5a5dc25f6b890a27af8f0dbe55cf6d',1,'Matrix::Transposed()']]], + ['transposed3x3_43',['transposed3x3',['../class_mat44.html#a29830ba9d80d31e00d30abcc0c099e7c',1,'Mat44::Transposed3x3()'],['../class_d_mat44.html#a37bfd4712353f46ee35b3fe0717cbda8',1,'DMat44::Transposed3x3()']]], + ['triangle_44',['triangle',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a92c48e626fb4a9870c5aa18dd01cba3e',1,'EPAConvexHullBuilder::Triangle::Triangle()'],['../class_debug_renderer_1_1_triangle.html#a6cf43c4aef393778a403a3f5659e3a97',1,'DebugRenderer::Triangle::Triangle()'],['../class_triangle.html#ab77028569270c58b230bade2e050f0e8',1,'Triangle::Triangle()=default'],['../class_triangle.html#a63e1c516f7be617386e6fb7ba751e559',1,'Triangle::Triangle(const Float3 &inV1, const Float3 &inV2, const Float3 &inV3, uint32 inMaterialIndex=0, uint32 inUserData=0)'],['../class_triangle.html#afa9373651d38b12839903be6a01ccc6f',1,'Triangle::Triangle(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, uint32 inMaterialIndex=0, uint32 inUserData=0)'],['../class_debug_renderer_1_1_triangle.html#abb7298cfaf2d3cd85d5407969b626c36',1,'DebugRenderer::Triangle::Triangle()=default'],['../class_debug_renderer_1_1_triangle.html#ae6c997de70442ae4c2940f1a04a0fb9d',1,'DebugRenderer::Triangle::Triangle(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, ColorArg inColor)']]], + ['triangleconvexsupport_45',['TriangleConvexSupport',['../struct_triangle_convex_support.html#aff7b77e932e636e0fe582cd01c5c05fa',1,'TriangleConvexSupport']]], + ['trianglenoconvex_46',['TriangleNoConvex',['../class_triangle_shape_1_1_triangle_no_convex.html#af59be04eb9c46c649d12f0d14463e64a',1,'TriangleShape::TriangleNoConvex']]], + ['triangleshape_47',['triangleshape',['../class_triangle_shape.html#a8f50dd711b5be7bb02a0dd06e954a8d4',1,'TriangleShape::TriangleShape()'],['../class_triangle_shape.html#a00bc42b4bae3128d2aab79799d0ff223',1,'TriangleShape::TriangleShape(const TriangleShapeSettings &inSettings, ShapeResult &outResult)'],['../class_triangle_shape.html#a178af266e6fc0452b5ba413851b3a7c8',1,'TriangleShape::TriangleShape(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, float inConvexRadius=0.0f, const PhysicsMaterial *inMaterial=nullptr)']]], + ['triangleshapesettings_48',['triangleshapesettings',['../class_triangle_shape_settings.html#abbb22ef04b44f97c24dfbd48b8446dbc',1,'TriangleShapeSettings::TriangleShapeSettings(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3, float inConvexRadius=0.0f, const PhysicsMaterial *inMaterial=nullptr)'],['../class_triangle_shape_settings.html#af98052e609dd5012dc60dc23e6fc811d',1,'TriangleShapeSettings::TriangleShapeSettings()=default']]], + ['trianglesplitter_49',['TriangleSplitter',['../class_triangle_splitter.html#a3c2194216f5d24f127479da12dcd5cdf',1,'TriangleSplitter']]], + ['trianglesplitterbinning_50',['TriangleSplitterBinning',['../class_triangle_splitter_binning.html#a8000c311893ad133eb6fbe7a95ef2fe7',1,'TriangleSplitterBinning']]], + ['trianglesplitterfixedleafsize_51',['TriangleSplitterFixedLeafSize',['../class_triangle_splitter_fixed_leaf_size.html#a755f2d5fdd0b659ea5691be45fa1ede9',1,'TriangleSplitterFixedLeafSize']]], + ['trianglesplitterlongestaxis_52',['TriangleSplitterLongestAxis',['../class_triangle_splitter_longest_axis.html#a922ae63ab23366905d3a15f5e7c06630',1,'TriangleSplitterLongestAxis']]], + ['trianglesplittermean_53',['TriangleSplitterMean',['../class_triangle_splitter_mean.html#a24f3c71cb6b178fc31c5e1c3d71240be',1,'TriangleSplitterMean']]], + ['trianglesplittermorton_54',['TriangleSplitterMorton',['../class_triangle_splitter_morton.html#a5216ad05fe273a370120be3bb7025c43',1,'TriangleSplitterMorton']]], + ['trianglewithconvex_55',['TriangleWithConvex',['../class_triangle_shape_1_1_triangle_with_convex.html#a027145a2149945bd88bd362e1e6a25d0',1,'TriangleShape::TriangleWithConvex']]], + ['try_5flock_56',['try_lock',['../class_mutex.html#a85bdf2b7c3d9ce789c61f8bc2a127c8a',1,'Mutex::try_lock()'],['../class_shared_mutex.html#ae1867755a6f5457bc8bc24823373c66d',1,'SharedMutex::try_lock()']]], + ['trygetbody_57',['trygetbody',['../class_body_lock_interface.html#a69aba1e1549e9bc55c1ccd4b68cc171a',1,'BodyLockInterface::TryGetBody()'],['../class_body_manager.html#ac441f5d6015c113423972740f3e2815f',1,'BodyManager::TryGetBody(const BodyID &inID) const'],['../class_body_manager.html#a57535e1d1645cc00b57fb7e8ecccc259',1,'BodyManager::TryGetBody(const BodyID &inID)']]], + ['tsgettrianglescontext_58',['TSGetTrianglesContext',['../class_triangle_shape_1_1_t_s_get_triangles_context.html#aca666669db38498306a8dc3a29a39c9c',1,'TriangleShape::TSGetTrianglesContext']]], + ['twobodyconstraint_59',['TwoBodyConstraint',['../class_two_body_constraint.html#a8b370c3d2689b9ae1270b1dfc8f9c290',1,'TwoBodyConstraint']]] +]; diff --git a/search/functions_13.js b/search/functions_13.js new file mode 100644 index 000000000..a5826924c --- /dev/null +++ b/search/functions_13.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['unassignbodyid_0',['UnassignBodyID',['../class_body_interface.html#a90516454ed80b9ffd59dccb2dbcd8f2b',1,'BodyInterface']]], + ['unassignbodyids_1',['UnassignBodyIDs',['../class_body_interface.html#a88613a7d9e6ba099b3a02faf842ac7d7',1,'BodyInterface']]], + ['uniquelock_2',['UniqueLock',['../class_unique_lock.html#a6883cf8bdf6a648a540e5714f49a9605',1,'UniqueLock']]], + ['unlock_3',['unlock',['../class_mutex.html#a546a5b797ba29959357586aa2b3740a8',1,'Mutex::unlock()'],['../class_shared_mutex.html#a72e10c237bf7e8e771c864e4d800d9be',1,'SharedMutex::unlock()']]], + ['unlockall_4',['UnlockAll',['../class_mutex_array.html#a454120af29f8004e1dd3a81ea110d5b1',1,'MutexArray']]], + ['unlockallbodies_5',['UnlockAllBodies',['../class_body_manager.html#a5bfccfc12e83e13bc8ed0ceacff6ccc3',1,'BodyManager']]], + ['unlockallconstraints_6',['UnlockAllConstraints',['../class_constraint_manager.html#aef2a29f192caeb1209dfc1a6db0afb96',1,'ConstraintManager']]], + ['unlockmodifications_7',['unlockmodifications',['../class_broad_phase.html#a588463ac5567b3cc721c45cdb90138d6',1,'BroadPhase::UnlockModifications()'],['../class_broad_phase_quad_tree.html#aa60691ada837fd47ffcb53a969682661',1,'BroadPhaseQuadTree::UnlockModifications()']]], + ['unlockread_8',['unlockread',['../class_body_lock_interface_locking.html#a23ed101c9ed1d8266dc7742f002f908b',1,'BodyLockInterfaceLocking::UnlockRead()'],['../class_body_manager.html#a3cfb772a46e7495234f6f14bff09ba99',1,'BodyManager::UnlockRead()'],['../class_body_lock_interface_locking.html#a523d0b2ec0c63a14964ff67b407cf8dd',1,'BodyLockInterfaceLocking::UnlockRead()'],['../class_body_lock_interface_no_lock.html#ae073928dc06535a51719369ca70dda2f',1,'BodyLockInterfaceNoLock::UnlockRead()'],['../class_body_lock_interface.html#a01f2a12bf7200265b64aae3effd3a82d',1,'BodyLockInterface::UnlockRead(SharedMutex *inMutex) const =0'],['../class_body_lock_interface.html#a702e6d9dba53f21d054dc51397bd9c39',1,'BodyLockInterface::UnlockRead(MutexMask inMutexMask) const =0'],['../class_body_lock_interface_no_lock.html#a4d836b80b0c07e560833952731ccf407',1,'BodyLockInterfaceNoLock::UnlockRead()']]], + ['unlockwrite_9',['unlockwrite',['../class_body_lock_interface_locking.html#a0651763a01d010609627cf84153b65d9',1,'BodyLockInterfaceLocking::UnlockWrite()'],['../class_body_manager.html#a27ee56a1128b6d9df49d56ea8308d95b',1,'BodyManager::UnlockWrite()'],['../class_body_lock_interface_locking.html#a25822b34a4987988f2100790c1279eb2',1,'BodyLockInterfaceLocking::UnlockWrite()'],['../class_body_lock_interface_no_lock.html#ab745b6ced33c003efdc5877c6756128d',1,'BodyLockInterfaceNoLock::UnlockWrite(MutexMask inMutexMask) const override'],['../class_body_lock_interface_no_lock.html#a6ecbc0cbe52514464956d3a49b73d79f',1,'BodyLockInterfaceNoLock::UnlockWrite(SharedMutex *inMutex) const override'],['../class_body_lock_interface.html#ae7ab56617d45d42ee2935b0eaf9b57e6',1,'BodyLockInterface::UnlockWrite(MutexMask inMutexMask) const =0'],['../class_body_lock_interface.html#a786e43ce709b4214d7ebda26961d4725',1,'BodyLockInterface::UnlockWrite(SharedMutex *inMutex) const =0']]], + ['unmapped_10',['unmapped',['../class_skeleton_mapper_1_1_unmapped.html#a59408695490b38ff289316be1b90c8e2',1,'SkeletonMapper::Unmapped::Unmapped()=default'],['../class_skeleton_mapper_1_1_unmapped.html#a2420a9dbf237dfdd9fb74c7b8bd1eec0',1,'SkeletonMapper::Unmapped::Unmapped(int inJointIdx, int inParentJointIdx)']]], + ['unpack_11',['unpack',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#ada5a0630058e85675e03c6d054b5bff2',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::Unpack(const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles) const'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#ab2f3679c65f018d1dcb3e462dad0eef0',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::Unpack(const void *inTriangleStart, uint32 inNumTriangles, Vec3 *outTriangles, uint8 *outTriangleFlags) const']]], + ['unregistertypes_12',['unregistertypes',['../_register_types_8h.html#a1e0db6031789e773039c7fc15ef47057',1,'UnregisterTypes(): RegisterTypes.cpp'],['../_register_types_8cpp.html#a10487599cc35b86cfef75fae22227a8b',1,'UnregisterTypes(): RegisterTypes.cpp']]], + ['update_13',['update',['../class_vehicle_transmission.html#abd88a375576b8d35f854a5f687bf8acb',1,'VehicleTransmission::Update()'],['../class_character_virtual.html#ab9ce165035699a776a9d0b3e570def01',1,'CharacterVirtual::Update()'],['../class_physics_system.html#a4cdc76b2486dfaecfc9319d040e5e5f3',1,'PhysicsSystem::Update()'],['../class_wheel_t_v.html#a4c2e4c332e9e4e69c1431a1d19ae6bce',1,'WheelTV::Update()'],['../class_wheel_w_v.html#a5ac5b89c371660f4899a5fd4062599cb',1,'WheelWV::Update()']]], + ['updatecenterofmassinternal_14',['UpdateCenterOfMassInternal',['../class_body.html#a0c81be8ceb81f10124d14a45b670ea9a',1,'Body']]], + ['updateearlyoutfraction_15',['UpdateEarlyOutFraction',['../class_collision_collector.html#ac46233c07f2d69db516879fbbcef8be1',1,'CollisionCollector']]], + ['updatefinalize_16',['updatefinalize',['../class_quad_tree.html#a95788f7c5352a8b053be1ac426d5536d',1,'QuadTree::UpdateFinalize()'],['../class_broad_phase.html#ab78bec1eb43c0ff847eaf489bd2e95a2',1,'BroadPhase::UpdateFinalize()'],['../class_broad_phase_quad_tree.html#a851b5a33060fbd112d44cb3707829252',1,'BroadPhaseQuadTree::UpdateFinalize()']]], + ['updategroundvelocity_17',['UpdateGroundVelocity',['../class_character_virtual.html#a5817d937424e252d406f71f0ba8771da',1,'CharacterVirtual']]], + ['updateprepare_18',['updateprepare',['../class_quad_tree.html#ad819632f6a3b9912462c731eb017cd4f',1,'QuadTree::UpdatePrepare()'],['../class_broad_phase_quad_tree.html#a5a9eb444b1947b066fe77fc66d7899ff',1,'BroadPhaseQuadTree::UpdatePrepare()'],['../class_broad_phase.html#af28614224a9ae6463bce9f2039468852',1,'BroadPhase::UpdatePrepare()']]], + ['updaterigidbodyvelocities_19',['UpdateRigidBodyVelocities',['../class_soft_body_motion_properties.html#ab64fe12fb4966612d3de96f79a3e6991',1,'SoftBodyMotionProperties']]], + ['updatesleepstateinternal_20',['UpdateSleepStateInternal',['../class_body.html#a047680ce755ba6d66aa078b317bb037f',1,'Body']]], + ['uppervec4_21',['uppervec4',['../class_u_vec8.html#a11d69b0b6000ceac965236eb6ff5a4da',1,'UVec8::UpperVec4()'],['../class_vec8.html#a176799d71ae225bcdc87f3c9ed821a4d',1,'Vec8::UpperVec4()']]], + ['uvec4_22',['uvec4',['../class_u_vec4.html#ade18dcf5276cb800f91e55993f1f5270',1,'UVec4::UVec4()=default'],['../class_u_vec4.html#aadc81adaffb695788b5c0859ae3071d3',1,'UVec4::UVec4(const UVec4 &inRHS)=default'],['../class_u_vec4.html#ad935c0ba8397f8e1d7fbba4d70e519dd',1,'UVec4::UVec4(Type inRHS)'],['../class_u_vec4.html#a371ddfa754dc61e11f2c75f565eab0f9',1,'UVec4::UVec4(uint32 inX, uint32 inY, uint32 inZ, uint32 inW)']]], + ['uvec8_23',['uvec8',['../class_u_vec8.html#a01713cf88c3edb46c73aca8927447be3',1,'UVec8::UVec8()=default'],['../class_u_vec8.html#a99e3f32c276a508019f29aea02853158',1,'UVec8::UVec8(const UVec8 &inRHS)=default'],['../class_u_vec8.html#a8e85ff9a76203b1907bdf9fd43620512',1,'UVec8::UVec8(__m256i inRHS)'],['../class_u_vec8.html#a364573a06edffdbc4b6bcf321932aa2f',1,'UVec8::UVec8(UVec4Arg inLo, UVec4Arg inHi)']]] +]; diff --git a/search/functions_14.js b/search/functions_14.js new file mode 100644 index 000000000..44904321a --- /dev/null +++ b/search/functions_14.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['validatecontactcacheforallbodies_0',['ValidateContactCacheForAllBodies',['../class_body_manager.html#a4e5f1bfab762cd561b21320d97ef0594',1,'BodyManager']]], + ['validatecontactcacheinternal_1',['ValidateContactCacheInternal',['../class_body.html#aed0987087ec4b3c3571c6a6a339361ad',1,'Body']]], + ['validatecontactpoint_2',['ValidateContactPoint',['../class_contact_constraint_manager.html#a4abd47f225871f02cd3a0c964106439d',1,'ContactConstraintManager']]], + ['validationcontext_3',['ValidationContext',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html#adfe6c83baebc97d4103fad27e121e8c1',1,'TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext']]], + ['vec3_4',['vec3',['../class_vec3.html#aeecf02c008ca1e3a1695d8962a5b24da',1,'Vec3::Vec3()=default'],['../class_vec3.html#a268ea0715fd0914ffde63ca7451bde61',1,'Vec3::Vec3(const Vec3 &inRHS)=default'],['../class_vec3.html#a3ab8c224fb2c6be708e58e45fd0ee987',1,'Vec3::Vec3(Vec4Arg inRHS)'],['../class_vec3.html#a67ff481d7a24cf569cb694519dc3ff63',1,'Vec3::Vec3(Type inRHS)'],['../class_vec3.html#ac3696d27478b928d1cefab61a5178933',1,'Vec3::Vec3(const Float3 &inV)'],['../class_vec3.html#a0faea2347673a7eb375a071b9190b74e',1,'Vec3::Vec3(float inX, float inY, float inZ)']]], + ['vec4_5',['vec4',['../class_vec4.html#a6843f786e555729f18b3a07dc869029a',1,'Vec4::Vec4(Type inRHS)'],['../class_vec4.html#aef2bc5c8bacf84051fa67b015a52f7e0',1,'Vec4::Vec4(float inX, float inY, float inZ, float inW)'],['../class_vec4.html#a6615f4d5141a41f8c16a10734fc52391',1,'Vec4::Vec4(Vec3Arg inRHS, float inW)'],['../class_vec4.html#a7dcd153f6972570d02a9ec9504ca67bf',1,'Vec4::Vec4(Vec3Arg inRHS)'],['../class_vec4.html#a89dc3aa052aaedf229ad80c875ba625a',1,'Vec4::Vec4(const Vec4 &inRHS)=default'],['../class_vec4.html#a1940f74df37f29ae6cf77e11bb2e46cd',1,'Vec4::Vec4()=default']]], + ['vec8_6',['vec8',['../class_vec8.html#abbdb68a45ef818a365f358803a2d5820',1,'Vec8::Vec8()=default'],['../class_vec8.html#a3af12a0d40c2e64712a16b6e5d596eac',1,'Vec8::Vec8(const Vec8 &inRHS)=default'],['../class_vec8.html#a87dec3a15cde53d9ab439daa4ffe95d3',1,'Vec8::Vec8(__m256 inRHS)'],['../class_vec8.html#a535af944b1f32c306fb37a393ec16bd4',1,'Vec8::Vec8(Vec4Arg inLo, Vec4Arg inHi)']]], + ['vector_7',['vector',['../class_vector.html#acdfe438fc30b6e340cfecfd8bb04ab19',1,'Vector::Vector()=default'],['../class_vector.html#a9a11f44af42ffd08e2eb58b1fd38c613',1,'Vector::Vector(const Vector &)=default']]], + ['vectortostring_8',['vectortostring',['../_string_tools_8h.html#a3b31af4468a8347daef1aaa582dba39e',1,'VectorToString(const Array< String > &inVector, String &outString, const string_view &inDelimiter=","): StringTools.cpp'],['../_string_tools_8cpp.html#ae400232cec435a77c4b2526c82fe197a',1,'VectorToString(const Array< String > &inVector, String &outString, const string_view &inDelimiter): StringTools.cpp']]], + ['vehiclecollisiontester_9',['vehiclecollisiontester',['../class_vehicle_collision_tester.html#a69adc68284ed5dae7c4b5a1ca7568aca',1,'VehicleCollisionTester::VehicleCollisionTester()=default'],['../class_vehicle_collision_tester.html#a787dc72b49f3d3681d41785b54f9d33f',1,'VehicleCollisionTester::VehicleCollisionTester(ObjectLayer inObjectLayer)']]], + ['vehiclecollisiontestercastcylinder_10',['VehicleCollisionTesterCastCylinder',['../class_vehicle_collision_tester_cast_cylinder.html#a416a774b8cf740d496abe37d67d223ff',1,'VehicleCollisionTesterCastCylinder']]], + ['vehiclecollisiontestercastsphere_11',['VehicleCollisionTesterCastSphere',['../class_vehicle_collision_tester_cast_sphere.html#a6b514d0516167670bc2358b5073ba62d',1,'VehicleCollisionTesterCastSphere']]], + ['vehiclecollisiontesterray_12',['VehicleCollisionTesterRay',['../class_vehicle_collision_tester_ray.html#a05872b64dc0fc8b3206f24b513da2a91',1,'VehicleCollisionTesterRay']]], + ['vehicleconstraint_13',['VehicleConstraint',['../class_vehicle_constraint.html#af1d28eee52fc3cb7a2f8b8a81edfc464',1,'VehicleConstraint']]], + ['vehiclecontroller_14',['VehicleController',['../class_vehicle_controller.html#ad5cad3b5a580aaf05e36e4c350db37cb',1,'VehicleController']]], + ['vehicleenginesettings_15',['VehicleEngineSettings',['../class_vehicle_engine_settings.html#aa326151c7c343427669a4790b84d7697',1,'VehicleEngineSettings']]], + ['verifyjoltversionid_16',['VerifyJoltVersionID',['../_register_types_8h.html#a5f4143a97d828fbf326eaf25a5323e17',1,'RegisterTypes.h']]], + ['verifyjoltversionidinternal_17',['verifyjoltversionidinternal',['../_register_types_8h.html#a620b2773885e137277e118ddfee651bf',1,'VerifyJoltVersionIDInternal(uint64 inVersionID): RegisterTypes.cpp'],['../_register_types_8cpp.html#a3e619944349d251d8d720677175a809e',1,'VerifyJoltVersionIDInternal(uint64 inVersionID): RegisterTypes.cpp']]], + ['vertex_18',['vertex',['../struct_soft_body_shared_settings_1_1_vertex.html#ade523b548f25eefba83b33cc7632ee52',1,'SoftBodySharedSettings::Vertex::Vertex()=default'],['../struct_soft_body_shared_settings_1_1_vertex.html#a72596eb07dd2135d0908053327fe8b27',1,'SoftBodySharedSettings::Vertex::Vertex(const Float3 &inPosition, const Float3 &inVelocity=Float3(0, 0, 0), float inInvMass=1.0f)']]], + ['vertexattributes_19',['vertexattributes',['../struct_soft_body_shared_settings_1_1_vertex_attributes.html#a1fa560e1cb843e4cd51b58413f2befef',1,'SoftBodySharedSettings::VertexAttributes::VertexAttributes()=default'],['../struct_soft_body_shared_settings_1_1_vertex_attributes.html#a76a52d275de7b0362f5b0eba392b4479',1,'SoftBodySharedSettings::VertexAttributes::VertexAttributes(float inCompliance, float inShearCompliance, float inBendCompliance, ELRAType inLRAType=ELRAType::None, float inLRAMaxDistanceMultiplier=1.0f)']]], + ['visitnodes_20',['VisitNodes',['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#adba28fd45a275f92e03276643f058eb7',1,'MeshShape::MSGetTrianglesContext']]], + ['visitrangeblock_21',['VisitRangeBlock',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#abf84f1c35c412054c33815b39bcdd2ba',1,'HeightFieldShape::HSGetTrianglesContext']]], + ['visitshape_22',['visitshape',['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#a295365cb216ebe0c673cddae6fe7fcc6',1,'CompoundShape::CastRayVisitorCollector::VisitShape()'],['../struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a611d2a998517551ba3d1ad3355033135',1,'CompoundShape::GetIntersectingSubShapesVisitor::VisitShape()'],['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#ac29444555250eaf5cafdf944efadde2f',1,'CompoundShape::CollideShapeVsCompoundVisitor::VisitShape()'],['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#af575d07fd175a53c7c9039c9b91a060a',1,'CompoundShape::CollideCompoundVsShapeVisitor::VisitShape()'],['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a40155b16c19875b30971665976d2b3be',1,'CompoundShape::CollectTransformedShapesVisitor::VisitShape()'],['../struct_compound_shape_1_1_cast_shape_visitor.html#aa834797c904738fc3bee984367a46df4',1,'CompoundShape::CastShapeVisitor::VisitShape()'],['../struct_compound_shape_1_1_collide_point_visitor.html#aeeb14c482931fed4f18e825ee8bba908',1,'CompoundShape::CollidePointVisitor::VisitShape()'],['../struct_compound_shape_1_1_cast_ray_visitor.html#abcfb06db0c470f7b887bd1ccbdf293e9',1,'CompoundShape::CastRayVisitor::VisitShape()']]], + ['visittriangle_23',['VisitTriangle',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a6a195ee4d6b586ddff6cdceb48fa0371',1,'HeightFieldShape::HSGetTrianglesContext']]], + ['visittriangles_24',['VisitTriangles',['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#a361618c0f911d1d49692df906bf5f890',1,'MeshShape::MSGetTrianglesContext']]], + ['volume_25',['volume',['../struct_soft_body_shared_settings_1_1_volume.html#ae65d5d8fdfd059c396403e6ac23d7f8f',1,'SoftBodySharedSettings::Volume::Volume()=default'],['../struct_soft_body_shared_settings_1_1_volume.html#a60318d30fe02f4f64f4c00d9f7ac67cb',1,'SoftBodySharedSettings::Volume::Volume(uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inVertex4, float inCompliance=0.0f)']]] +]; diff --git a/search/functions_15.js b/search/functions_15.js new file mode 100644 index 000000000..f041211e4 --- /dev/null +++ b/search/functions_15.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['waitforjobs_0',['waitforjobs',['../class_job_system_single_threaded.html#aa491ca6999f7f2285a79b114b696e6ac',1,'JobSystemSingleThreaded::WaitForJobs()'],['../class_job_system.html#a32e93cf0a95e8893978cf1ee92eb41d7',1,'JobSystem::WaitForJobs()'],['../class_job_system_with_barrier.html#af33b27708e9ab2b343a0658cf14efe56',1,'JobSystemWithBarrier::WaitForJobs()']]], + ['walkheightfield_1',['WalkHeightField',['../class_height_field_shape_1_1_decoding_context.html#ada72d7edafb747b4b35afedb29670f1b',1,'HeightFieldShape::DecodingContext']]], + ['walkstairs_2',['WalkStairs',['../class_character_virtual.html#a7b92d577e9abb6193f971e26df9964f7',1,'CharacterVirtual']]], + ['walksubshapes_3',['WalkSubShapes',['../class_mutable_compound_shape.html#a3fc3b41a717b952d323ea9062e917693',1,'MutableCompoundShape']]], + ['walktree_4',['walktree',['../class_node_codec_quad_tree_half_float_1_1_decoding_context.html#a084241df274ee41e4bb4908b8bd5c943',1,'NodeCodecQuadTreeHalfFloat::DecodingContext::WalkTree()'],['../class_mesh_shape.html#ac4c96f9f280e727af47d95a0acccd61f',1,'MeshShape::WalkTree()'],['../class_static_compound_shape.html#a38ab691279f331aff75ebbafc6ed31b8',1,'StaticCompoundShape::WalkTree()']]], + ['walktreepertriangle_5',['WalkTreePerTriangle',['../class_mesh_shape.html#aa5e17d589f629cee9660984f03adf2ad',1,'MeshShape']]], + ['warmstart_6',['warmstart',['../class_independent_axis_constraint_part.html#a6ec13ff5361ad148d405ee79bbaedc6c',1,'IndependentAxisConstraintPart::WarmStart()'],['../class_swing_twist_constraint_part.html#a507f0506fd29b63f244e73670d85d55d',1,'SwingTwistConstraintPart::WarmStart()'],['../class_rotation_quat_constraint_part.html#a05fa3097154059e8d7814370182a7aa5',1,'RotationQuatConstraintPart::WarmStart()'],['../class_rotation_euler_constraint_part.html#a492a0801dd2881d0ab58f9c8b0abfec8',1,'RotationEulerConstraintPart::WarmStart()'],['../class_rack_and_pinion_constraint_part.html#a8dbe4e1891bffacf4575ddabd1df9699',1,'RackAndPinionConstraintPart::WarmStart()'],['../class_point_constraint_part.html#a5d4d5fcf514dd0d2ea3b26e2071ee75e',1,'PointConstraintPart::WarmStart()'],['../class_hinge_rotation_constraint_part.html#aa71c15ea49da0d82a70d8edf787f612b',1,'HingeRotationConstraintPart::WarmStart()'],['../class_gear_constraint_part.html#a3886e068476d7e0d700dcec934ac6250',1,'GearConstraintPart::WarmStart()'],['../class_dual_axis_constraint_part.html#a5eb24d0267626b638b94b33f09efa53b',1,'DualAxisConstraintPart::WarmStart()'],['../class_axis_constraint_part.html#a60befc8c7707dd567b633ecd7b870446',1,'AxisConstraintPart::WarmStart()'],['../class_angle_constraint_part.html#a8b54544706a1005ac865db7c445b76f1',1,'AngleConstraintPart::WarmStart()']]], + ['warmstartvelocityconstraint_7',['warmstartvelocityconstraint',['../class_slider_constraint.html#aeb34063ed62a9f400374f2ed6fb830c4',1,'SliderConstraint::WarmStartVelocityConstraint()'],['../class_vehicle_constraint.html#a74f3a452490769c8e1a110a967dc02ff',1,'VehicleConstraint::WarmStartVelocityConstraint()'],['../class_swing_twist_constraint.html#acf698847ac574454093180b23cc74a4e',1,'SwingTwistConstraint::WarmStartVelocityConstraint()'],['../class_six_d_o_f_constraint.html#a94451dc994375a631e767e76cc08fbb5',1,'SixDOFConstraint::WarmStartVelocityConstraint()'],['../class_rack_and_pinion_constraint.html#a68595c6143a8c238780ee6327cd77a01',1,'RackAndPinionConstraint::WarmStartVelocityConstraint()'],['../class_pulley_constraint.html#aef2753289be51db340b80fe44fbfb87f',1,'PulleyConstraint::WarmStartVelocityConstraint()'],['../class_point_constraint.html#a51737835feb28bf1f774976ba3fabf5d',1,'PointConstraint::WarmStartVelocityConstraint()'],['../class_hinge_constraint.html#a3c1c14996144a0a8dacaed226a6278f8',1,'HingeConstraint::WarmStartVelocityConstraint()'],['../class_gear_constraint.html#a17abbcffc7110afc9caa7c169733ff60',1,'GearConstraint::WarmStartVelocityConstraint()'],['../class_fixed_constraint.html#ac1bb8544bfebcf9b43d428c44b75809f',1,'FixedConstraint::WarmStartVelocityConstraint()'],['../class_distance_constraint.html#a459aed04f96a767cb395b114bb1860bb',1,'DistanceConstraint::WarmStartVelocityConstraint()'],['../class_constraint.html#abb0ee6b5bf11fb8b8aeb45271b24f1a7',1,'Constraint::WarmStartVelocityConstraint()'],['../class_cone_constraint.html#adeefa918b20db08c73d87cac71e93cfd',1,'ConeConstraint::WarmStartVelocityConstraint()'],['../class_path_constraint.html#a827e48452a23237e05665d3eeb668255',1,'PathConstraint::WarmStartVelocityConstraint()']]], + ['warmstartvelocityconstraints_8',['WarmStartVelocityConstraints',['../class_contact_constraint_manager.html#abaf06f1f9eb408cf99a8231bc8801e8f',1,'ContactConstraintManager']]], + ['werebodiesincontact_9',['werebodiesincontact',['../class_physics_system.html#ad8f5849a90549504d9f1705c324a9a83',1,'PhysicsSystem::WereBodiesInContact()'],['../class_contact_constraint_manager.html#a46532b93dfd2edb0b45be8e5af4a7111',1,'ContactConstraintManager::WereBodiesInContact()']]], + ['wheel_10',['Wheel',['../class_wheel.html#a1b32822acc30f1afc25f57de681c7389',1,'Wheel']]], + ['wheeledvehiclecontroller_11',['WheeledVehicleController',['../class_wheeled_vehicle_controller.html#ad00936264e25f1902bed6e7c86f198dc',1,'WheeledVehicleController']]], + ['wheelsettingswv_12',['WheelSettingsWV',['../class_wheel_settings_w_v.html#abc4a4ace195d5bc7c6e3a2c40ebad100',1,'WheelSettingsWV']]], + ['wheeltv_13',['WheelTV',['../class_wheel_t_v.html#a84f1cd74d7ee96248d68efe0ddb6fe3f',1,'WheelTV']]], + ['wheelwv_14',['WheelWV',['../class_wheel_w_v.html#a5824fc9dc6c81f4bd1d03b8a51f1fcb8',1,'WheelWV']]], + ['write_15',['write',['../class_stream_out.html#ae1b1f7fee2bcf46896c198ff13eabf10',1,'StreamOut::Write()'],['../class_object_stream_out.html#a00ac10a63cae82e5aa420739d243bb5e',1,'ObjectStreamOut::Write()'],['../class_stream_out.html#a076687e0453908f83336761c13b75f19',1,'StreamOut::Write(const DMat44 &inVec)'],['../class_stream_out.html#a5c9dec0ec5fb4af10a3258f03fa99bb1',1,'StreamOut::Write(const DVec3 &inVec)'],['../class_stream_out.html#a067f43db7805fa22f5ffefbefac23b13',1,'StreamOut::Write(const Vec3 &inVec)'],['../class_stream_out.html#a29fc4077677e5c0fea89194178326684',1,'StreamOut::Write(const Array< T, A > &inT, const F &inWriteElement)'],['../class_stream_out.html#a8e42be27dba5676379ba723df9171c4f',1,'StreamOut::Write(const Array< T, A > &inT)'],['../class_stream_out.html#a879dce6c6c6ca5e63835fe61cc745966',1,'StreamOut::Write(const T &inT)']]], + ['writebytes_16',['writebytes',['../class_stream_out.html#aa80bff3216178ef392693f1997803d99',1,'StreamOut::WriteBytes()'],['../class_stream_out_wrapper.html#a9021148d55d478d1431b9196e96c8125',1,'StreamOutWrapper::WriteBytes()'],['../class_state_recorder_impl.html#acb747a3036d744b372bc5c5ec5fda143',1,'StateRecorderImpl::WriteBytes()']]], + ['writeclassdata_17',['writeclassdata',['../class_i_object_stream_out.html#a671047916b3ab1dad2565d482437af88',1,'IObjectStreamOut::WriteClassData()'],['../class_object_stream_out.html#a3b57667e92d4f96bff979fb7a3d4f971',1,'ObjectStreamOut::WriteClassData()']]], + ['writecount_18',['writecount',['../class_i_object_stream_out.html#a8610a84161fd3f60736b3403f972ee8f',1,'IObjectStreamOut::WriteCount()'],['../class_object_stream_binary_out.html#a9a8860b8189ef78d0ed13b4d06bb2086',1,'ObjectStreamBinaryOut::WriteCount()'],['../class_object_stream_text_out.html#ae879ce81e2b436adc60a15dfd60ce6f7',1,'ObjectStreamTextOut::WriteCount()']]], + ['writedata_19',['WriteData',['../class_serializable_attribute.html#a2d75640f1636e85a47da938b71b3a736',1,'SerializableAttribute']]], + ['writedatatype_20',['writedatatype',['../class_serializable_attribute.html#a30c9f23371b5552485ebf5bfea47afef',1,'SerializableAttribute::WriteDataType()'],['../class_object_stream_text_out.html#a27ba41722490a37f58523464135861eb',1,'ObjectStreamTextOut::WriteDataType()'],['../class_i_object_stream_out.html#a6ff7df2bcd8b3a6808f14aea3250a09d',1,'IObjectStreamOut::WriteDataType()'],['../class_object_stream_binary_out.html#a3e4c46b7af4d61764078ce1f0910e1e1',1,'ObjectStreamBinaryOut::WriteDataType()']]], + ['writeidentifier_21',['writeidentifier',['../class_i_object_stream_out.html#a687b981cf61a2004438e534b87e3e91d',1,'IObjectStreamOut::WriteIdentifier()'],['../class_object_stream_binary_out.html#afc5f227a73e002dbf0e7fd61e6bfa041',1,'ObjectStreamBinaryOut::WriteIdentifier()'],['../class_object_stream_text_out.html#a7825ca05bdb8a4af27f109ede048d761',1,'ObjectStreamTextOut::WriteIdentifier()']]], + ['writename_22',['writename',['../class_i_object_stream_out.html#a96c7eeb4771f2a811aa36c6fd42cd781',1,'IObjectStreamOut::WriteName()'],['../class_object_stream_binary_out.html#a49bb92e7db5bc0206b8784456b20a34e',1,'ObjectStreamBinaryOut::WriteName()'],['../class_object_stream_text_out.html#a9aa76251bab9b55c4d341da5193c3bff',1,'ObjectStreamTextOut::WriteName()']]], + ['writeobject_23',['WriteObject',['../class_object_stream_out.html#a9277b8858ca05bb673daefecab467901',1,'ObjectStreamOut']]], + ['writepointerdata_24',['writepointerdata',['../class_i_object_stream_out.html#a176de45169c84baf875bee08790745c3',1,'IObjectStreamOut::WritePointerData()'],['../class_object_stream_out.html#a66b354aaac147096b7e213d5f32a3ea3',1,'ObjectStreamOut::WritePointerData()']]], + ['writeprimitivedata_25',['writeprimitivedata',['../class_object_stream_binary_out.html#a2d229729283be8d8eee6b58468bfee65',1,'ObjectStreamBinaryOut::WritePrimitiveData()'],['../class_object_stream_text_out.html#ab60c8760dfdb5bc2234ea78c7bbeec7f',1,'ObjectStreamTextOut::WritePrimitiveData(const int &inPrimitive) override'],['../class_object_stream_text_out.html#a27dc6c86eae3dfea32f2510372929eb4',1,'ObjectStreamTextOut::WritePrimitiveData(const uint16 &inPrimitive) override'],['../class_object_stream_text_out.html#a89ab9b82784f3d5effaa0271d1908859',1,'ObjectStreamTextOut::WritePrimitiveData(const uint8 &inPrimitive) override'],['../class_object_stream_binary_out.html#ae9fa7ac7be4c0b5bdbb24e6166a50784',1,'ObjectStreamBinaryOut::WritePrimitiveData()'],['../class_object_stream_text_out.html#ab64ddb49218167cc914987fc158f052c',1,'ObjectStreamTextOut::WritePrimitiveData()'],['../class_object_stream_binary_out.html#a7de7aaffbb11f6e6fc0a08812e0eef42',1,'ObjectStreamBinaryOut::WritePrimitiveData(const Mat44 &inPrimitive) override'],['../class_object_stream_binary_out.html#ae06af7cf0a39921c7dc8088037ee41d4',1,'ObjectStreamBinaryOut::WritePrimitiveData(const Quat &inPrimitive) override'],['../class_object_stream_binary_out.html#a87116604bea691da09f99454b324e85c',1,'ObjectStreamBinaryOut::WritePrimitiveData(const Vec4 &inPrimitive) override'],['../class_object_stream_binary_out.html#a7826f066654d0ac41a72f1695c07dc75',1,'ObjectStreamBinaryOut::WritePrimitiveData(const DVec3 &inPrimitive) override'],['../class_object_stream_binary_out.html#a342eeda59cdc448a0ecf28efd8e80aee',1,'ObjectStreamBinaryOut::WritePrimitiveData(const Vec3 &inPrimitive) override'],['../class_object_stream_binary_out.html#acf7a62f3df473c6b9f48ee7e86c9123f',1,'ObjectStreamBinaryOut::WritePrimitiveData(const Double3 &inPrimitive) override'],['../class_object_stream_binary_out.html#a948818cfda871440e31731647328e9ed',1,'ObjectStreamBinaryOut::WritePrimitiveData(const uint32 &inPrimitive) override'],['../class_object_stream_text_out.html#a10331f7980083d8c57d404091df88922',1,'ObjectStreamTextOut::WritePrimitiveData(const uint64 &inPrimitive) override'],['../class_object_stream_text_out.html#ae89da6b62649f9e90a14e9c36ea05549',1,'ObjectStreamTextOut::WritePrimitiveData(const float &inPrimitive) override'],['../class_object_stream_text_out.html#ae565ad15b730b986a4502a3bb8f98f7e',1,'ObjectStreamTextOut::WritePrimitiveData(const double &inPrimitive) override'],['../class_object_stream_text_out.html#ab2ca6f858d4f8f4101407705879a9d0d',1,'ObjectStreamTextOut::WritePrimitiveData(const bool &inPrimitive) override'],['../class_object_stream_text_out.html#a4b039dd07dfc79c9af1aaa680f5c9e7d',1,'ObjectStreamTextOut::WritePrimitiveData(const String &inPrimitive) override'],['../class_object_stream_text_out.html#a22b16b26d56a883b07fac755cdc8aaeb',1,'ObjectStreamTextOut::WritePrimitiveData(const Float3 &inPrimitive) override'],['../class_object_stream_text_out.html#a0b5b19e45beaded140033d1cb9a5959d',1,'ObjectStreamTextOut::WritePrimitiveData(const Double3 &inPrimitive) override'],['../class_object_stream_text_out.html#ae9e5c7c394023611aeb2913c1747424f',1,'ObjectStreamTextOut::WritePrimitiveData(const Vec3 &inPrimitive) override'],['../class_object_stream_text_out.html#ad4b59875d5fe76496c323922967438e6',1,'ObjectStreamTextOut::WritePrimitiveData(const DVec3 &inPrimitive) override'],['../class_object_stream_text_out.html#ab709b722d2a2b7ea2b5f867ae387849d',1,'ObjectStreamTextOut::WritePrimitiveData(const Vec4 &inPrimitive) override'],['../class_object_stream_text_out.html#abcd26a7be4af7a8c2e5240d173bb8622',1,'ObjectStreamTextOut::WritePrimitiveData(const Quat &inPrimitive) override'],['../class_object_stream_text_out.html#aa108e6984ae10e3df0f26aae50103e1a',1,'ObjectStreamTextOut::WritePrimitiveData(const Mat44 &inPrimitive) override'],['../class_object_stream_text_out.html#a91250a7c43130df76420d0646dd9b27d',1,'ObjectStreamTextOut::WritePrimitiveData(const DMat44 &inPrimitive) override'],['../class_object_stream_binary_out.html#a61fa64a09b0a198016555a219a3cea19',1,'ObjectStreamBinaryOut::WritePrimitiveData()'],['../class_i_object_stream_out.html#a45d8dc1ea62d053e6e48cb2e44395968',1,'IObjectStreamOut::WritePrimitiveData(const uint8 &inPrimitive)=0'],['../class_i_object_stream_out.html#ab17016faad9181b3d6dfbda9a48bd335',1,'IObjectStreamOut::WritePrimitiveData(const uint16 &inPrimitive)=0'],['../class_i_object_stream_out.html#a01c3723b59d67ad5e75a3dc56f7737cb',1,'IObjectStreamOut::WritePrimitiveData(const int &inPrimitive)=0'],['../class_i_object_stream_out.html#a66b6becb60ad5aec76867394d52e6cfd',1,'IObjectStreamOut::WritePrimitiveData(const uint32 &inPrimitive)=0'],['../class_i_object_stream_out.html#aecfe9968add8789f6e26723b6e9e651d',1,'IObjectStreamOut::WritePrimitiveData(const uint64 &inPrimitive)=0'],['../class_i_object_stream_out.html#a04ca1de7c6bd48ffab508b1db889ec09',1,'IObjectStreamOut::WritePrimitiveData(const float &inPrimitive)=0'],['../class_i_object_stream_out.html#ad1b81ff8b55799d95a6a9d8476b5e64a',1,'IObjectStreamOut::WritePrimitiveData(const double &inPrimitive)=0'],['../class_i_object_stream_out.html#ac5d377beb07d9dfacf1d4e0700bb8c0d',1,'IObjectStreamOut::WritePrimitiveData(const bool &inPrimitive)=0'],['../class_i_object_stream_out.html#a38350c40a7079608bdc92e4a1df7725c',1,'IObjectStreamOut::WritePrimitiveData(const String &inPrimitive)=0'],['../class_i_object_stream_out.html#a4b0132cf1e5ee6662efcbae07f39274c',1,'IObjectStreamOut::WritePrimitiveData(const Float3 &inPrimitive)=0'],['../class_i_object_stream_out.html#af0a7dc3485d1567a452bba37303d9976',1,'IObjectStreamOut::WritePrimitiveData(const Double3 &inPrimitive)=0'],['../class_i_object_stream_out.html#a053365595f486c12414c3e41532494e7',1,'IObjectStreamOut::WritePrimitiveData(const Vec3 &inPrimitive)=0'],['../class_i_object_stream_out.html#a24e68fa892ff29e52c4e71e137da272e',1,'IObjectStreamOut::WritePrimitiveData(const DVec3 &inPrimitive)=0'],['../class_i_object_stream_out.html#a6b47c5c4e89dd367b09a1de57c21bdbc',1,'IObjectStreamOut::WritePrimitiveData(const Vec4 &inPrimitive)=0'],['../class_i_object_stream_out.html#a397870b50706aeb7f390dd96e08dac3c',1,'IObjectStreamOut::WritePrimitiveData(const Quat &inPrimitive)=0'],['../class_i_object_stream_out.html#a5b5c4763d26fbda8fc7649e30fe99ea0',1,'IObjectStreamOut::WritePrimitiveData(const Mat44 &inPrimitive)=0'],['../class_i_object_stream_out.html#a5f9f86a460a4591dde4be795ad8259ef',1,'IObjectStreamOut::WritePrimitiveData(const DMat44 &inPrimitive)=0'],['../class_object_stream_binary_out.html#a3f2f8e67717d77df91eaee0f98655665',1,'ObjectStreamBinaryOut::WritePrimitiveData(const uint8 &inPrimitive) override'],['../class_object_stream_binary_out.html#a92b6ddd19e11fc94fced9470def2b1f1',1,'ObjectStreamBinaryOut::WritePrimitiveData(const uint16 &inPrimitive) override'],['../class_object_stream_binary_out.html#aa719c9bf4e43173378e68477ff585f20',1,'ObjectStreamBinaryOut::WritePrimitiveData(const int &inPrimitive) override'],['../class_object_stream_binary_out.html#a26f4c299ed2d5bdeb5dc3c8e182707df',1,'ObjectStreamBinaryOut::WritePrimitiveData(const uint64 &inPrimitive) override'],['../class_object_stream_binary_out.html#a2f1235bff136e028485875babbddde82',1,'ObjectStreamBinaryOut::WritePrimitiveData(const float &inPrimitive) override'],['../class_object_stream_binary_out.html#ae62c55f8ae870ffa024555ba8248f6a1',1,'ObjectStreamBinaryOut::WritePrimitiveData(const double &inPrimitive) override'],['../class_object_stream_binary_out.html#a9ea4d57d098b29425e9b4385157e1802',1,'ObjectStreamBinaryOut::WritePrimitiveData(const String &inPrimitive) override']]], + ['writertti_26',['WriteRTTI',['../class_object_stream_out.html#a959db81abfcbd73830c56f52cc953a41',1,'ObjectStreamOut']]] +]; diff --git a/search/functions_16.js b/search/functions_16.js new file mode 100644 index 000000000..10a59b190 --- /dev/null +++ b/search/functions_16.js @@ -0,0 +1,82 @@ +var searchData= +[ + ['_7earray_0',['~Array',['../class_array.html#a4aa206b27627450f5cfa5dbbc7b57c14',1,'Array']]], + ['_7ebarrier_1',['~Barrier',['../class_job_system_1_1_barrier.html#aa7553c8c987ca8bb810c2715ef8ffbbd',1,'JobSystem::Barrier']]], + ['_7ebodiestosleep_2',['~BodiesToSleep',['../class_physics_system_1_1_bodies_to_sleep.html#a6bd0148a631571a8996661f4246a5c42',1,'PhysicsSystem::BodiesToSleep']]], + ['_7ebodyactivationlistener_3',['~BodyActivationListener',['../class_body_activation_listener.html#a1fad22d1fc6b3dd2a7b31e7e230abca3',1,'BodyActivationListener']]], + ['_7ebodydrawfilter_4',['~BodyDrawFilter',['../class_body_draw_filter.html#af5f4640284a83886f0896d313126ad6d',1,'BodyDrawFilter']]], + ['_7ebodyfilter_5',['~BodyFilter',['../class_body_filter.html#a8a5a1a0ff7c5f292c8e90b0648fd4f9b',1,'BodyFilter']]], + ['_7ebodylockbase_6',['~BodyLockBase',['../class_body_lock_base.html#a30194dac9c9d2ca469894dd7c5719d40',1,'BodyLockBase']]], + ['_7ebodylockinterface_7',['~BodyLockInterface',['../class_body_lock_interface.html#ad019e65f235b7cc04199696fa0ef1fc2',1,'BodyLockInterface']]], + ['_7ebodylockmultibase_8',['~BodyLockMultiBase',['../class_body_lock_multi_base.html#a609defeb89fbcc31c19ee6af88844601',1,'BodyLockMultiBase']]], + ['_7ebodymanager_9',['~BodyManager',['../class_body_manager.html#afad1dc5c74c430f9210a84e553d259ee',1,'BodyManager']]], + ['_7ebroadphaselayerfilter_10',['~BroadPhaseLayerFilter',['../class_broad_phase_layer_filter.html#a925a1ef794d370861c3daa4c2aad3f97',1,'BroadPhaseLayerFilter']]], + ['_7ebroadphaselayerinterface_11',['~BroadPhaseLayerInterface',['../class_broad_phase_layer_interface.html#aefc74492347f08d653121e2f4af91e59',1,'BroadPhaseLayerInterface']]], + ['_7ebroadphasequadtree_12',['~BroadPhaseQuadTree',['../class_broad_phase_quad_tree.html#a0345666a910f38b25ec943d17a3131b5',1,'BroadPhaseQuadTree']]], + ['_7ebroadphasequery_13',['~BroadPhaseQuery',['../class_broad_phase_query.html#a3eb1b1cf5421ba7785cff7e7aa4bd702',1,'BroadPhaseQuery']]], + ['_7echaracter_14',['~Character',['../class_character.html#a5e399f512bf22a9e8558a4bae1ec9555',1,'Character']]], + ['_7echaracterbase_15',['~CharacterBase',['../class_character_base.html#a5e0ba80e28b9e012acf7b8c1fa605ef5',1,'CharacterBase']]], + ['_7echaracterbasesettings_16',['~CharacterBaseSettings',['../class_character_base_settings.html#adf1f42bae7e622c2c3a0ae2273f6f5f5',1,'CharacterBaseSettings']]], + ['_7echaractercontactlistener_17',['~CharacterContactListener',['../class_character_contact_listener.html#a1cbf56ca2333e878c3d7da75b9dfc0ba',1,'CharacterContactListener']]], + ['_7echaractervirtual_18',['~CharacterVirtual',['../class_character_virtual.html#ad932d26de4902065092ee3c6c30bc9de',1,'CharacterVirtual']]], + ['_7echaractervscharactercollision_19',['~CharacterVsCharacterCollision',['../class_character_vs_character_collision.html#ac761e9773325df331eb599af2f498525',1,'CharacterVsCharacterCollision']]], + ['_7ecollisioncollector_20',['~CollisionCollector',['../class_collision_collector.html#a428497d94c0d54c4fb4e7ce6a016fc0d',1,'CollisionCollector']]], + ['_7econstraint_21',['~Constraint',['../class_constraint.html#a1608cc2c7d701d0e9dbcb5656d5845bb',1,'Constraint']]], + ['_7econtactconstraintmanager_22',['~ContactConstraintManager',['../class_contact_constraint_manager.html#a99bbf2c00ef2ee156223858f2a2d6597',1,'ContactConstraintManager']]], + ['_7econtactlistener_23',['~ContactListener',['../class_contact_listener.html#a577b31dbf6d6e5a6ada2864a0b3f70bd',1,'ContactListener']]], + ['_7econvexhullbuilder_24',['~ConvexHullBuilder',['../class_convex_hull_builder.html#a3182f05659156aba23773cd1cdb5c0cd',1,'ConvexHullBuilder']]], + ['_7econvexhullbuilder2d_25',['~ConvexHullBuilder2D',['../class_convex_hull_builder2_d.html#a9fd6172b0d35d0f66114514b6a8a31b0',1,'ConvexHullBuilder2D']]], + ['_7edebugrenderer_26',['~DebugRenderer',['../class_debug_renderer.html#a4374b7c1ce3ee04f86f6f910c82aff09',1,'DebugRenderer']]], + ['_7eface_27',['~Face',['../class_convex_hull_builder_1_1_face.html#a76369d0554260d6e1405544d01422bec',1,'ConvexHullBuilder::Face']]], + ['_7efixedsizefreelist_28',['~FixedSizeFreeList',['../class_fixed_size_free_list.html#a71571a26f9bc002d714f0178e46177ba',1,'FixedSizeFreeList']]], + ['_7egroupfilter_29',['~GroupFilter',['../class_group_filter.html#aa8329399534ab5ced6cd41bac0fc511a',1,'GroupFilter']]], + ['_7eheightfieldshape_30',['~HeightFieldShape',['../class_height_field_shape.html#aa0ea34b1e8028766f96bdacebe06d62c',1,'HeightFieldShape']]], + ['_7eislandbuilder_31',['~IslandBuilder',['../class_island_builder.html#a88fd7d9e6a6982dc394fd7d647df41cb',1,'IslandBuilder']]], + ['_7ejobsystem_32',['~JobSystem',['../class_job_system.html#aaaf28c0a93f2d52eb2c936807f9e8ec9',1,'JobSystem']]], + ['_7ejobsystemthreadpool_33',['~JobSystemThreadPool',['../class_job_system_thread_pool.html#a56f9475443e5598d7176d9b94da6bdff',1,'JobSystemThreadPool']]], + ['_7ejobsystemwithbarrier_34',['~JobSystemWithBarrier',['../class_job_system_with_barrier.html#a7d3ef17ce10d2556e776375bef948b75',1,'JobSystemWithBarrier']]], + ['_7elargeislandsplitter_35',['~LargeIslandSplitter',['../class_large_island_splitter.html#a6453331c5fb852bb201b04f14dc9a281',1,'LargeIslandSplitter']]], + ['_7elfhmallocator_36',['~LFHMAllocator',['../class_l_f_h_m_allocator.html#a97034c25b38fd7a1c3e3cf59b818afbb',1,'LFHMAllocator']]], + ['_7elockfreehashmap_37',['~LockFreeHashMap',['../class_lock_free_hash_map.html#a9b01ab8548173830e9a1652cd7c16172',1,'LockFreeHashMap']]], + ['_7emutexarray_38',['~MutexArray',['../class_mutex_array.html#a15da55df0a388b4cbdabdedefb425af0',1,'MutexArray']]], + ['_7enode_39',['~Node',['../class_a_a_b_b_tree_builder_1_1_node.html#ac377068485ba4e2055d0b65d50bbb344',1,'AABBTreeBuilder::Node']]], + ['_7eobjectlayerfilter_40',['~ObjectLayerFilter',['../class_object_layer_filter.html#ac0a280c2c4c6d44714282f517899b6ef',1,'ObjectLayerFilter']]], + ['_7eobjectlayerpairfilter_41',['~ObjectLayerPairFilter',['../class_object_layer_pair_filter.html#aa5eb712c7da546d32b812ed018c714bb',1,'ObjectLayerPairFilter']]], + ['_7eobjectstream_42',['~ObjectStream',['../class_object_stream.html#a0a01e88706acdcadf4b7cc7af99a008e',1,'ObjectStream']]], + ['_7eobjectvsbroadphaselayerfilter_43',['~ObjectVsBroadPhaseLayerFilter',['../class_object_vs_broad_phase_layer_filter.html#a8da487435d0000d4106f63ba40ab4090',1,'ObjectVsBroadPhaseLayerFilter']]], + ['_7epathconstraintpath_44',['~PathConstraintPath',['../class_path_constraint_path.html#aff085b5af851482956c8696d0e87f73d',1,'PathConstraintPath']]], + ['_7ephysicsmaterial_45',['~PhysicsMaterial',['../class_physics_material.html#af9a5ad5383917d85f97bc81db9786948',1,'PhysicsMaterial']]], + ['_7ephysicssteplistener_46',['~PhysicsStepListener',['../class_physics_step_listener.html#ad977d0eae86ac63814eb9742f896ad4b',1,'PhysicsStepListener']]], + ['_7ephysicssystem_47',['~PhysicsSystem',['../class_physics_system.html#a2f13afc2b367634112f155934af9227e',1,'PhysicsSystem']]], + ['_7ephysicsupdatecontext_48',['~PhysicsUpdateContext',['../class_physics_update_context.html#a05bed2dc4226ffbf55b962da48ec1749',1,'PhysicsUpdateContext']]], + ['_7eprofilemeasurement_49',['~ProfileMeasurement',['../class_profile_measurement.html#a7c37dee2ce575e7324bdd1531ab6a3c6',1,'ProfileMeasurement']]], + ['_7eprofilethread_50',['~ProfileThread',['../class_profile_thread.html#a6d9ed54e26b6b8e37967a8dce6226e66',1,'ProfileThread']]], + ['_7equadtree_51',['~QuadTree',['../class_quad_tree.html#a236dde2058a3ccf2babbe4a289327b30',1,'QuadTree']]], + ['_7eragdoll_52',['~Ragdoll',['../class_ragdoll.html#afbd932bcd7ceae5811204c5c1219d5ac',1,'Ragdoll']]], + ['_7eref_53',['~Ref',['../class_ref.html#a607d75703495e2c67a6aa33b6d943ab5',1,'Ref']]], + ['_7erefconst_54',['~RefConst',['../class_ref_const.html#a3961f15d3f64693477de9f91684916a8',1,'RefConst']]], + ['_7ereftarget_55',['~RefTarget',['../class_ref_target.html#ac3110b9f511287f881d7afaf26871e1b',1,'RefTarget']]], + ['_7ereftargetvirtual_56',['~RefTargetVirtual',['../class_ref_target_virtual.html#a716938dd06b8a5be71588e501c8c2b7d',1,'RefTargetVirtual']]], + ['_7eresult_57',['~Result',['../class_result.html#ace4aa7515162bb6ca532d3be78150328',1,'Result']]], + ['_7escopeexit_58',['~ScopeExit',['../class_scope_exit.html#a02f185effcec724a51fc0c6d5b073340',1,'ScopeExit']]], + ['_7esemaphore_59',['~Semaphore',['../class_semaphore.html#a633658a6fde276bffc912028725c6ade',1,'Semaphore']]], + ['_7eserializableobject_60',['~SerializableObject',['../class_serializable_object.html#afad98c73b77e9cef11cf5083a5866d49',1,'SerializableObject']]], + ['_7eshape_61',['~Shape',['../class_shape.html#ac8ad2fd02e1e94beeb98e65ab795cd56',1,'Shape']]], + ['_7eshapefilter_62',['~ShapeFilter',['../class_shape_filter.html#acdf737ff32ada90df769acf6b25cc86a',1,'ShapeFilter']]], + ['_7esharedlock_63',['~SharedLock',['../class_shared_lock.html#ab0010e08e97ed9b28b93785fcc3c20c3',1,'SharedLock']]], + ['_7esoftbodycontactlistener_64',['~SoftBodyContactListener',['../class_soft_body_contact_listener.html#aec0e10073fc4e61069a7246717c4dda8',1,'SoftBodyContactListener']]], + ['_7estaterecorderfilter_65',['~StateRecorderFilter',['../class_state_recorder_filter.html#aa9561fad643e206c9b464e0ba954299a',1,'StateRecorderFilter']]], + ['_7estaticarray_66',['~StaticArray',['../class_static_array.html#afa25bd44899d047990eb77e996031756',1,'StaticArray']]], + ['_7estreamin_67',['~StreamIn',['../class_stream_in.html#a294d4a6d12c54b6bd31b67a627075c34',1,'StreamIn']]], + ['_7estreamout_68',['~StreamOut',['../class_stream_out.html#aed2cfe74214f89965cb640ac9d1bbb8d',1,'StreamOut']]], + ['_7esupport_69',['~Support',['../class_convex_shape_1_1_support.html#a24c8452338cbc755fb69f04aca229a4c',1,'ConvexShape::Support']]], + ['_7etempallocator_70',['~TempAllocator',['../class_temp_allocator.html#ad2799eadcc5b5972a55118e6c4156e25',1,'TempAllocator']]], + ['_7etempallocatorimpl_71',['~TempAllocatorImpl',['../class_temp_allocator_impl.html#a7ced1650e61db4a4917ac8eb2e1cbe30',1,'TempAllocatorImpl']]], + ['_7etrianglegrouper_72',['~TriangleGrouper',['../class_triangle_grouper.html#a5c9c53e78df6ff8a53cb144e42458cfa',1,'TriangleGrouper']]], + ['_7etrianglesplitter_73',['~TriangleSplitter',['../class_triangle_splitter.html#a29fdff34f24303ee9d3c52dec0ad73b3',1,'TriangleSplitter']]], + ['_7euniquelock_74',['~UniqueLock',['../class_unique_lock.html#ab6a03388e3040483ea88e86e9aa2aaae',1,'UniqueLock']]], + ['_7evehiclecollisiontester_75',['~VehicleCollisionTester',['../class_vehicle_collision_tester.html#a7c6e0505cf0d7741f501a03ac3228bb6',1,'VehicleCollisionTester']]], + ['_7evehicleconstraint_76',['~VehicleConstraint',['../class_vehicle_constraint.html#a9ea9a006933b3e0b1938b3b247957830',1,'VehicleConstraint']]], + ['_7evehiclecontroller_77',['~VehicleController',['../class_vehicle_controller.html#adaf1b8a1da0e7b167c8849e13743809c',1,'VehicleController']]], + ['_7ewheel_78',['~Wheel',['../class_wheel.html#aa6087eae383e857b8615993388ba8a5f',1,'Wheel']]] +]; diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 000000000..4a92b1d5e --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,157 @@ +var searchData= +[ + ['calculateangularvelocity_0',['CalculateAngularVelocity',['../class_wheel_t_v.html#a91b1fa8cf9b528c3ce45a5512afc106c',1,'WheelTV']]], + ['calculatebendconstraintconstants_1',['CalculateBendConstraintConstants',['../class_soft_body_shared_settings.html#a8bfed6fd17411a0638ad963f9ed083ea',1,'SoftBodySharedSettings']]], + ['calculatebitspersampleforerror_2',['CalculateBitsPerSampleForError',['../class_height_field_shape_settings.html#afa8076803d2d512fbe625d0eb9c90811',1,'HeightFieldShapeSettings']]], + ['calculatebodyindextoconstraintindex_3',['CalculateBodyIndexToConstraintIndex',['../class_ragdoll_settings.html#a1e23b51741e51dd17319254ab2314e8f',1,'RagdollSettings']]], + ['calculateconstraintindextobodyidxpair_4',['CalculateConstraintIndexToBodyIdxPair',['../class_ragdoll_settings.html#a549e9e4d95b8bb57fa1feb91fa142002',1,'RagdollSettings']]], + ['calculateconstraintproperties_5',['calculateconstraintproperties',['../class_rotation_euler_constraint_part.html#af37f613895af10af42c71f644fe3f2f5',1,'RotationEulerConstraintPart::CalculateConstraintProperties()'],['../class_swing_twist_constraint_part.html#aaf0e7de8bc6c556f7d1a1d2ef4c32317',1,'SwingTwistConstraintPart::CalculateConstraintProperties()'],['../class_rotation_quat_constraint_part.html#a0c752c045f216b2d9c0570faf3f71c44',1,'RotationQuatConstraintPart::CalculateConstraintProperties()'],['../class_rack_and_pinion_constraint_part.html#a02dfafdb136417f096927cc6cca34b3c',1,'RackAndPinionConstraintPart::CalculateConstraintProperties()'],['../class_point_constraint_part.html#abd3afc9ccf62aea6e07029b35d718a75',1,'PointConstraintPart::CalculateConstraintProperties()'],['../class_independent_axis_constraint_part.html#a0b42c35e39bcfe122954e5a2052dfafd',1,'IndependentAxisConstraintPart::CalculateConstraintProperties()'],['../class_hinge_rotation_constraint_part.html#a41471ce4cbe4f3b915ba40f883a3f924',1,'HingeRotationConstraintPart::CalculateConstraintProperties()'],['../class_gear_constraint_part.html#aa3a9c219aa2baf19edc577265ae2404f',1,'GearConstraintPart::CalculateConstraintProperties()'],['../class_dual_axis_constraint_part.html#af13f5a570f5b9f26edf310cf4eab5f23',1,'DualAxisConstraintPart::CalculateConstraintProperties()'],['../class_axis_constraint_part.html#aeff890db41d91de6fddb9a2872d9e146',1,'AxisConstraintPart::CalculateConstraintProperties()'],['../class_angle_constraint_part.html#a4db6fb3120c161301e04ee92276544d4',1,'AngleConstraintPart::CalculateConstraintProperties(const Body &inBody1, const Body &inBody2, Vec3Arg inWorldSpaceAxis, float inBias=0.0f)']]], + ['calculateconstraintpropertieswithfrequencyanddamping_6',['calculateconstraintpropertieswithfrequencyanddamping',['../class_angle_constraint_part.html#ace82e23e9129e1c30c93134a2d75504e',1,'AngleConstraintPart::CalculateConstraintPropertiesWithFrequencyAndDamping()'],['../class_axis_constraint_part.html#a5b0fcca001a8673716a9e6acaaf030a4',1,'AxisConstraintPart::CalculateConstraintPropertiesWithFrequencyAndDamping(float inDeltaTime, const Body &inBody1, Vec3Arg inR1PlusU, const Body &inBody2, Vec3Arg inR2, Vec3Arg inWorldSpaceAxis, float inBias, float inC, float inFrequency, float inDamping)']]], + ['calculateconstraintpropertieswithmassoverride_7',['CalculateConstraintPropertiesWithMassOverride',['../class_axis_constraint_part.html#a747c6cfe29af60b2e718af65f8066712',1,'AxisConstraintPart']]], + ['calculateconstraintpropertieswithsettings_8',['calculateconstraintpropertieswithsettings',['../class_angle_constraint_part.html#ac8eb562a067ed5596aca09e04ffc32d1',1,'AngleConstraintPart::CalculateConstraintPropertiesWithSettings()'],['../class_axis_constraint_part.html#a0fa7dab4d8e1aa0b78e38ba24d926a9b',1,'AxisConstraintPart::CalculateConstraintPropertiesWithSettings()']]], + ['calculateconstraintpropertieswithstiffnessanddamping_9',['calculateconstraintpropertieswithstiffnessanddamping',['../class_angle_constraint_part.html#a13c8d05c1aef17b2edc81da4ea754404',1,'AngleConstraintPart::CalculateConstraintPropertiesWithStiffnessAndDamping()'],['../class_axis_constraint_part.html#ae8c4a8375c2a6f88e2adf1398743bed3',1,'AxisConstraintPart::CalculateConstraintPropertiesWithStiffnessAndDamping()']]], + ['calculateedgelengths_10',['CalculateEdgeLengths',['../class_soft_body_shared_settings.html#a519313d5c58141ceb18011defc5db644',1,'SoftBodySharedSettings']]], + ['calculateinnerradius_11',['CalculateInnerRadius',['../class_compound_shape.html#ab1a1657fdb82a4b135872bacbca9ceaa',1,'CompoundShape']]], + ['calculatejointmatrices_12',['CalculateJointMatrices',['../class_skeleton_pose.html#a5ede20d56bfae3b3be7c26165a34fdbc',1,'SkeletonPose']]], + ['calculatejointstates_13',['CalculateJointStates',['../class_skeleton_pose.html#a39706bc656fd0c4907689bad870a45af',1,'SkeletonPose']]], + ['calculatelocalspacejointmatrices_14',['CalculateLocalSpaceJointMatrices',['../class_skeleton_pose.html#abbbb73391837675160aa67daba69c2eb',1,'SkeletonPose']]], + ['calculatelralengths_15',['CalculateLRALengths',['../class_soft_body_shared_settings.html#a6dd86b0bbeac51b146b3fcca5736510e',1,'SoftBodySharedSettings']]], + ['calculatemassandinertia_16',['CalculateMassAndInertia',['../class_soft_body_motion_properties.html#a9ad11aed026f33e1f26807870ccd1316',1,'SoftBodyMotionProperties']]], + ['calculatenormalandcentroid_17',['CalculateNormalAndCentroid',['../class_convex_hull_builder_1_1_face.html#a96233d9beb894b8c85c834b13868a4e1',1,'ConvexHullBuilder::Face']]], + ['calculateparentjointindices_18',['CalculateParentJointIndices',['../class_skeleton.html#a79ade25d7ec74a8bd21c87062844e21e',1,'Skeleton']]], + ['calculatesahcost_19',['CalculateSAHCost',['../class_a_a_b_b_tree_builder_1_1_node.html#af66f1c559bb11897ba3d2d996b931e5d',1,'AABBTreeBuilder::Node']]], + ['calculateskinnedconstraintnormals_20',['CalculateSkinnedConstraintNormals',['../class_soft_body_shared_settings.html#a4a2fd7676a705063111d0f429d2bdce9',1,'SoftBodySharedSettings']]], + ['calculatesolversteps_21',['CalculateSolverSteps',['../class_calculate_solver_steps.html#a0729dfc06ab52170861d1494fe051087',1,'CalculateSolverSteps']]], + ['calculatespringpropertieswithbias_22',['CalculateSpringPropertiesWithBias',['../class_spring_part.html#a75d1d4a45e975a5b9b0ad99525c9f52f',1,'SpringPart']]], + ['calculatespringpropertieswithfrequencyanddamping_23',['CalculateSpringPropertiesWithFrequencyAndDamping',['../class_spring_part.html#a0414048df549022dee152c2b18b31126',1,'SpringPart']]], + ['calculatespringpropertieswithstiffnessanddamping_24',['CalculateSpringPropertiesWithStiffnessAndDamping',['../class_spring_part.html#a318ab5426c6b10a8ceebd3258144d20a',1,'SpringPart']]], + ['calculatetorqueratio_25',['CalculateTorqueRatio',['../class_vehicle_differential_settings.html#adcf68680b07ae1a917bfa0a9ff0be829',1,'VehicleDifferentialSettings']]], + ['calculatevolumeconstraintvolumes_26',['CalculateVolumeConstraintVolumes',['../class_soft_body_shared_settings.html#a6541281d6fc5bd27579b71774fd4745a',1,'SoftBodySharedSettings']]], + ['calculateworldspaceboundsinternal_27',['CalculateWorldSpaceBoundsInternal',['../class_body.html#a1aace226a07f37492739bf10fd16a720',1,'Body']]], + ['canallocate_28',['CanAllocate',['../class_temp_allocator_impl.html#ac698ca89fe759ecd74899cd93d4028a6',1,'TempAllocatorImpl']]], + ['canbeexecuted_29',['CanBeExecuted',['../class_job_system_1_1_job.html#aaa223bb40f3b9a54e69440ae309a661f',1,'JobSystem::Job']]], + ['canbekinematicordynamic_30',['CanBeKinematicOrDynamic',['../class_body.html#a97addaa630b716fbc5b21ba19fdcf6ec',1,'Body']]], + ['canbeupdated_31',['CanBeUpdated',['../class_quad_tree.html#aa88f08218784b62ffdf8596c74f690d6',1,'QuadTree']]], + ['cancelvelocitytowardssteepslopes_32',['CancelVelocityTowardsSteepSlopes',['../class_character_virtual.html#a1e8c56bb848a852be4e63806fe6a74c6',1,'CharacterVirtual']]], + ['cancollide_33',['cancollide',['../class_collision_group.html#aa7e60aa0b9f6e5563ab4ca690c8e2b56',1,'CollisionGroup::CanCollide()'],['../class_group_filter_table.html#a9a654e5e8db25dc647563a10a47d3ab4',1,'GroupFilterTable::CanCollide()'],['../class_group_filter.html#a92d09279f5e311f401635dcb868ba838',1,'GroupFilter::CanCollide()']]], + ['canscaleberotated_34',['CanScaleBeRotated',['../namespace_scale_helpers.html#a024fa9a3c672218ce6b7aaa97d953ae1',1,'ScaleHelpers']]], + ['canwalkstairs_35',['CanWalkStairs',['../class_character_virtual.html#af44f8072c8e2687bbc20452b608fc5fe',1,'CharacterVirtual']]], + ['capacity_36',['capacity',['../class_static_array.html#a1313d0f5827afac5751b7a0a6fc23f83',1,'StaticArray::capacity()'],['../class_array.html#a42a530879c2fc250dfffdb6cfb275846',1,'Array::capacity()']]], + ['capsulenoconvex_37',['CapsuleNoConvex',['../class_capsule_shape_1_1_capsule_no_convex.html#a19beb7b16e30ad38c472ef12f35debce',1,'CapsuleShape::CapsuleNoConvex']]], + ['capsuleshape_38',['capsuleshape',['../class_capsule_shape.html#acd06172be8b996ff941844f1aa3ce35b',1,'CapsuleShape::CapsuleShape()'],['../class_capsule_shape.html#a28722612eca063d47b2e99c5d1a2e16c',1,'CapsuleShape::CapsuleShape(const CapsuleShapeSettings &inSettings, ShapeResult &outResult)'],['../class_capsule_shape.html#ab5b3085112fe4348a5831f9e94441f7c',1,'CapsuleShape::CapsuleShape(float inHalfHeightOfCylinder, float inRadius, const PhysicsMaterial *inMaterial=nullptr)']]], + ['capsulewithconvex_39',['CapsuleWithConvex',['../class_capsule_shape_1_1_capsule_with_convex.html#ab43fab2b559ee221f84cfff5038aba0d',1,'CapsuleShape::CapsuleWithConvex']]], + ['cast_40',['cast',['../class_cast_convex_vs_triangles.html#a50f5c573fd6198c72639e72cde71ca96',1,'CastConvexVsTriangles::Cast()'],['../class_cast_sphere_vs_triangles.html#ade8de510194b2a8bed2474f3b9605a80',1,'CastSphereVsTriangles::Cast()']]], + ['castaabox_41',['castaabox',['../class_broad_phase_brute_force.html#a56f59ffbc87333de2af4c7d995a048a3',1,'BroadPhaseBruteForce::CastAABox()'],['../class_broad_phase_quad_tree.html#abff5df5af5ebe792ad05fec8d7e8beb2',1,'BroadPhaseQuadTree::CastAABox()'],['../class_broad_phase_query.html#a8df87b27367ff5e9911f7966359d326a',1,'BroadPhaseQuery::CastAABox()'],['../class_quad_tree.html#aa28951f663c136f9b3faee823393cc1b',1,'QuadTree::CastAABox()']]], + ['castaaboxnolock_42',['castaaboxnolock',['../class_broad_phase_brute_force.html#a039672aad27d2a635e3f8ffccb3b7a69',1,'BroadPhaseBruteForce::CastAABoxNoLock()'],['../class_broad_phase_quad_tree.html#a91f3216a3baed7d4ee6cea9dea879d9a',1,'BroadPhaseQuadTree::CastAABoxNoLock()'],['../class_broad_phase.html#a324830206fb4032c6a6670fea6c15143',1,'BroadPhase::CastAABoxNoLock()']]], + ['castcharacter_43',['castcharacter',['../class_character_vs_character_collision.html#acaecf7e7bdb70d2cade8e585b64a1b82',1,'CharacterVsCharacterCollision::CastCharacter()'],['../class_character_vs_character_collision_simple.html#a3b514db9cada6a4fbb66cae3d39201bf',1,'CharacterVsCharacterCollisionSimple::CastCharacter()']]], + ['castconvexvstriangles_44',['CastConvexVsTriangles',['../class_cast_convex_vs_triangles.html#a242808830324f2586b4d4b747dac87e5',1,'CastConvexVsTriangles']]], + ['castray_45',['castray',['../class_plane_shape.html#a3bab1a182a2fcf42c0e76a2f3842c208',1,'PlaneShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_plane_shape.html#aa1ba28d2a8910ea410a5bc0a27762179',1,'PlaneShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_rotated_translated_shape.html#ac9ed2a8c195640f6b0b65a06749b3f33',1,'RotatedTranslatedShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_rotated_translated_shape.html#a397f3571c6e9f7f027b1acd2abaaac35',1,'RotatedTranslatedShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_scaled_shape.html#add12e8276eda4a003e528e1646836bec',1,'ScaledShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_scaled_shape.html#a4687967e5d1fdceabfd3bae64584eca8',1,'ScaledShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_shape.html#a955ec1953bc94c6c910dc4dc16114732',1,'Shape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const =0'],['../class_shape.html#a54b33219a3685aa4b964f6b69a2cfa7d',1,'Shape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const =0'],['../class_sphere_shape.html#a355bc794c757307e88159557d0f43d79',1,'SphereShape::CastRay()'],['../class_static_compound_shape.html#a7704a962778d0a00b4f808fa448c49c5',1,'StaticCompoundShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_static_compound_shape.html#a76efaa0b18ed8367a5865ce826a1b445',1,'StaticCompoundShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_triangle_shape.html#aadffe4301ac4d7a85693978a441b6c08',1,'TriangleShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_triangle_shape.html#a6095d8ea98d3e69ea17834a82ca1126e',1,'TriangleShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_transformed_shape.html#acd5399c06080e74de7f1ad8c61f9465a',1,'TransformedShape::CastRay(const RRayCast &inRay, RayCastResult &ioHit) const'],['../class_transformed_shape.html#ae4af56e1fa6544074e06b589de4d77b9',1,'TransformedShape::CastRay(const RRayCast &inRay, const RayCastSettings &inRayCastSettings, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const'],['../class_soft_body_shape.html#ac35d3b8df54c178044c0960d56691c9f',1,'SoftBodyShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_soft_body_shape.html#a851380d12087292cc55c87097b9afea5',1,'SoftBodyShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_capsule_shape.html#af2943e795c49300d95d68950231de8a3',1,'CapsuleShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_capsule_shape.html#ae1a5536cb1e4855bdd86433e08496b3b',1,'CapsuleShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_cylinder_shape.html#af2943e795c49300d95d68950231de8a3',1,'CylinderShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_cylinder_shape.html#ae1a5536cb1e4855bdd86433e08496b3b',1,'CylinderShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_sphere_shape.html#a961b5b5d30f21ea75df8bd1ef4ea7577',1,'SphereShape::CastRay()'],['../class_box_shape.html#a9c2aaae3c5b69a6154a5ef68b0faf764',1,'BoxShape::CastRay()'],['../class_offset_center_of_mass_shape.html#a624b715dc926521f7865d86e932cce7d',1,'OffsetCenterOfMassShape::CastRay()'],['../class_broad_phase_brute_force.html#aa802d83be23764261a739ad0dce2dd6d',1,'BroadPhaseBruteForce::CastRay()'],['../class_broad_phase_quad_tree.html#a15e9cc48cbd4838fb1f5f64faee99b80',1,'BroadPhaseQuadTree::CastRay()'],['../class_broad_phase_query.html#a1c74037652396c3584021f9b99341397',1,'BroadPhaseQuery::CastRay()'],['../class_quad_tree.html#a0f4c8a4eaa9c665153582c4a1e974457',1,'QuadTree::CastRay()'],['../class_narrow_phase_query.html#a820937ebfc2c8ab46daade8e007f2269',1,'NarrowPhaseQuery::CastRay(const RRayCast &inRay, RayCastResult &ioHit, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }) const'],['../class_narrow_phase_query.html#a6ef59f16467096fbb0ab9f476e15c8f3',1,'NarrowPhaseQuery::CastRay(const RRayCast &inRay, const RayCastSettings &inRayCastSettings, CastRayCollector &ioCollector, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter={ }, const ObjectLayerFilter &inObjectLayerFilter={ }, const BodyFilter &inBodyFilter={ }, const ShapeFilter &inShapeFilter={ }) const'],['../class_box_shape.html#afb509d4c0094c0f58a54590e5b801a0f',1,'BoxShape::CastRay()'],['../class_capsule_shape.html#a4db465fc9986e3c869fa5c0b65733403',1,'CapsuleShape::CastRay()'],['../class_convex_hull_shape.html#a4bd9f4df37b021fb520b8acfaa441794',1,'ConvexHullShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_convex_hull_shape.html#aebdc497b84304d41defc52341ff57dee',1,'ConvexHullShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_mutable_compound_shape.html#afd8f121a563bf40c32b8169765636a2b',1,'MutableCompoundShape::CastRay()'],['../class_offset_center_of_mass_shape.html#a5d0b1db48c88428b7be626d822e0599b',1,'OffsetCenterOfMassShape::CastRay()'],['../class_mutable_compound_shape.html#ab09749afef2d856a1a9b8834857ee5fa',1,'MutableCompoundShape::CastRay()'],['../class_convex_shape.html#af2943e795c49300d95d68950231de8a3',1,'ConvexShape::CastRay()'],['../class_mesh_shape.html#a6a7068bc26b41c75a7ccee0f4bf71cf2',1,'MeshShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_mesh_shape.html#a70a6a50967decae2c6bbb3b435857893',1,'MeshShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_height_field_shape.html#a64c5d6f9050de88be123f9d35512f7a7',1,'HeightFieldShape::CastRay(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter={ }) const override'],['../class_height_field_shape.html#a370b1fb907c0e7e7a5b4e03eeea4a220',1,'HeightFieldShape::CastRay(const RayCast &inRay, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit) const override'],['../class_g_j_k_closest_point.html#ade3cde48252b6f77f749f9ac29685ec7',1,'GJKClosestPoint::CastRay()'],['../class_cylinder_shape.html#a6685737b774a4fdbcc626aae25f27770',1,'CylinderShape::CastRay()'],['../class_convex_shape.html#ae1a5536cb1e4855bdd86433e08496b3b',1,'ConvexShape::CastRay()']]], + ['castrayvisitor_46',['CastRayVisitor',['../struct_compound_shape_1_1_cast_ray_visitor.html#a7adfe292a88805c33097245c07d2d529',1,'CompoundShape::CastRayVisitor']]], + ['castrayvisitorcollector_47',['CastRayVisitorCollector',['../struct_compound_shape_1_1_cast_ray_visitor_collector.html#af17b4ee8b0f590e72d35ced0d45563f0',1,'CompoundShape::CastRayVisitorCollector']]], + ['castshape_48',['castshape',['../class_e_p_a_penetration_depth.html#a37aeff94cc5402fd0a98bb299803f543',1,'EPAPenetrationDepth::CastShape()'],['../class_g_j_k_closest_point.html#a66d20557ad6d34a1c1f29b6df058b523',1,'GJKClosestPoint::CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float &ioLambda)'],['../class_g_j_k_closest_point.html#aa5b19da7e23744cb5c1af8fe2fee2940',1,'GJKClosestPoint::CastShape(Mat44Arg inStart, Vec3Arg inDirection, float inTolerance, const A &inA, const B &inB, float inConvexRadiusA, float inConvexRadiusB, float &ioLambda, Vec3 &outPointA, Vec3 &outPointB, Vec3 &outSeparatingAxis)'],['../class_narrow_phase_query.html#a5d9ab53431ed38e7d143d5cab9df08cb',1,'NarrowPhaseQuery::CastShape()'],['../class_transformed_shape.html#ab9b03e726e2992e5a4ca1df568d5ae75',1,'TransformedShape::CastShape()']]], + ['castshapevisitor_49',['CastShapeVisitor',['../struct_compound_shape_1_1_cast_shape_visitor.html#abbd8f9db973ff8289d6e7ec10374670b',1,'CompoundShape::CastShapeVisitor']]], + ['castspherevstriangles_50',['CastSphereVsTriangles',['../class_cast_sphere_vs_triangles.html#ae273e921a49cb110b61ab9f1c1480174',1,'CastSphereVsTriangles']]], + ['castto_51',['CastTo',['../class_r_t_t_i.html#a762f7b979423d8cbbc5aa6796611f190',1,'RTTI']]], + ['cbegin_52',['cbegin',['../class_array.html#a601b37256e5fffc49ce74a8c8b997c58',1,'Array']]], + ['ccdbody_53',['CCDBody',['../struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#acee03461decafebae0a2c85eea974a82',1,'PhysicsUpdateContext::Step::CCDBody']]], + ['cend_54',['cend',['../class_array.html#aa33f1fdcc692237993dd9df99768ebc7',1,'Array']]], + ['centeranglearoundzero_55',['CenterAngleAroundZero',['../_math_8h.html#a50121c6b962bb60d907d4f4c596935c4',1,'Math.h']]], + ['chain_56',['chain',['../class_skeleton_mapper_1_1_chain.html#a064edb182617eff4faefced1027cf9ad',1,'SkeletonMapper::Chain::Chain(Array< int > &&inJointIndices1, Array< int > &&inJointIndices2)'],['../class_skeleton_mapper_1_1_chain.html#aa5e326215c38ea7bd849bc4ba3b8704c',1,'SkeletonMapper::Chain::Chain()=default']]], + ['character_57',['Character',['../class_character.html#a7201fef809d55c2a7272634b373ead2c',1,'Character']]], + ['characterbase_58',['CharacterBase',['../class_character_base.html#ae105fe52be09ccb14a7e7aa57b83e8ca',1,'CharacterBase']]], + ['characterbasesettings_59',['characterbasesettings',['../class_character_base_settings.html#aef4e52d5c83775b714f3c6f545ab032b',1,'CharacterBaseSettings::CharacterBaseSettings()=default'],['../class_character_base_settings.html#ae04306c946170955be1189d60c562155',1,'CharacterBaseSettings::CharacterBaseSettings(const CharacterBaseSettings &inSettings)=default']]], + ['charactervirtual_60',['charactervirtual',['../class_character_virtual.html#a13f67f142bec57745727eb33250c1e01',1,'CharacterVirtual::CharacterVirtual(const CharacterVirtualSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, uint64 inUserData, PhysicsSystem *inSystem)'],['../class_character_virtual.html#ab1970bba46b2522707111bec95fa9e07',1,'CharacterVirtual::CharacterVirtual(const CharacterVirtualSettings *inSettings, RVec3Arg inPosition, QuatArg inRotation, PhysicsSystem *inSystem)']]], + ['checkcollision_61',['checkcollision',['../class_character.html#a1b1549f27b1b533f1b44c839ebdf3ed2',1,'Character::CheckCollision()'],['../class_character_virtual.html#ae70222c609c35c1acd94b9fc24e03681',1,'CharacterVirtual::CheckCollision()']]], + ['checkw_62',['checkw',['../class_d_vec3.html#a95c9295adcf9cea2990be8d4c6b71891',1,'DVec3::CheckW()'],['../class_vec3.html#a9dc70ce592b9de527bdf81b835b2e8f5',1,'Vec3::CheckW()']]], + ['chsgettrianglescontext_63',['CHSGetTrianglesContext',['../class_convex_hull_shape_1_1_c_h_s_get_triangles_context.html#a3c02ac3528dc01b7d2450eb4e19c1d95',1,'ConvexHullShape::CHSGetTrianglesContext']]], + ['clamp_64',['Clamp',['../_math_8h.html#a05be8f8200a1a67cbfacd3d16b17ac21',1,'Math.h']]], + ['clampangularvelocity_65',['ClampAngularVelocity',['../class_motion_properties.html#a098c27b3679ec968b9400a64c53f90c9',1,'MotionProperties']]], + ['clamplinearvelocity_66',['ClampLinearVelocity',['../class_motion_properties.html#a2cc70977a90ef8a3bed8a60902f3c2db',1,'MotionProperties']]], + ['clamprpm_67',['ClampRPM',['../class_vehicle_engine.html#a10cc014bfd4c08086fc83ef73948c7ba',1,'VehicleEngine']]], + ['clampswingtwist_68',['ClampSwingTwist',['../class_swing_twist_constraint_part.html#a63a4870b93b5bb0d90555edbacbf5229',1,'SwingTwistConstraintPart']]], + ['clear_69',['clear',['../class_l_f_h_m_allocator.html#add8458530312383491f936a7147a8ce3',1,'LFHMAllocator::Clear()'],['../class_static_array.html#a2cac2948666824fe7fee27bcf845f17b',1,'StaticArray::clear()'],['../class_array.html#aa16b46005583854b8db4570eaee59134',1,'Array::clear()'],['../class_state_recorder_impl.html#a77d8f8732e3193c3d785845147870806',1,'StateRecorderImpl::Clear()'],['../class_e_p_a_convex_hull_builder_1_1_triangle_factory.html#afbc2d65081b44d5574cdfa81e6b908ea',1,'EPAConvexHullBuilder::TriangleFactory::Clear()'],['../class_result.html#a14eed4aba60f359e04f44980adcf6125',1,'Result::Clear()'],['../class_lock_free_hash_map.html#afe0dc35025cb64372c9aef71ee997a0d',1,'LockFreeHashMap::Clear()'],['../class_ignore_multiple_bodies_filter.html#afc300f42ae1b503867a2c2da86cecc4a',1,'IgnoreMultipleBodiesFilter::Clear()'],['../class_linear_curve.html#aff2fa573a7368134091a91bd01274fca',1,'LinearCurve::Clear()'],['../class_factory.html#a8797d6707e3873ad2a3482d04782dc6a',1,'Factory::Clear()']]], + ['clearcachedresult_70',['ClearCachedResult',['../class_shape_settings.html#aa965a759e6c4cbc43ebf0aa8bd1f2d30',1,'ShapeSettings']]], + ['clippolyvsaabox_71',['ClipPolyVsAABox',['../_clip_poly_8h.html#acce14d72c569854e088c08101fc77f9f',1,'ClipPoly.h']]], + ['clippolyvsedge_72',['ClipPolyVsEdge',['../_clip_poly_8h.html#a3091df734384a4e35e6e73df4bd3778d',1,'ClipPoly.h']]], + ['clippolyvsplane_73',['ClipPolyVsPlane',['../_clip_poly_8h.html#a1e329aac71675f1c682331399d3cc86c',1,'ClipPoly.h']]], + ['clippolyvspoly_74',['ClipPolyVsPoly',['../_clip_poly_8h.html#a16e399a850db50914749f07fa7d3e38d',1,'ClipPoly.h']]], + ['clone_75',['clone',['../class_height_field_shape.html#a545611b0c6e3538e9dd1948ebf0af5f6',1,'HeightFieldShape::Clone()'],['../class_mutable_compound_shape.html#a00b71825b8bf3d4b4dfb577b061a2576',1,'MutableCompoundShape::Clone()'],['../class_soft_body_shared_settings.html#a3fcb933a19ef5e1d717de25e040f2b4f',1,'SoftBodySharedSettings::Clone()']]], + ['collecttransformedshapes_76',['collecttransformedshapes',['../class_shape.html#a3ed865e7eb30221b418cfd61d1430173',1,'Shape::CollectTransformedShapes()'],['../class_static_compound_shape.html#a48ff6b3a60b5da73dfac93fb8d1318bc',1,'StaticCompoundShape::CollectTransformedShapes()'],['../class_transformed_shape.html#a5379d6bf4807440be14c96829e7fa5bd',1,'TransformedShape::CollectTransformedShapes()'],['../class_narrow_phase_query.html#a9cb6ed9faecacb191cb15088e6c0de1e',1,'NarrowPhaseQuery::CollectTransformedShapes()'],['../class_scaled_shape.html#a1a005f193965690c37b87fc7365f962a',1,'ScaledShape::CollectTransformedShapes()'],['../class_mutable_compound_shape.html#a1d0db8584b022b03077a13f3d632e22c',1,'MutableCompoundShape::CollectTransformedShapes()'],['../class_rotated_translated_shape.html#a99bfa78dc0fc1967212e73dd3894f648',1,'RotatedTranslatedShape::CollectTransformedShapes()'],['../class_offset_center_of_mass_shape.html#a188ffe92a93f632954f03730fc1f1aed',1,'OffsetCenterOfMassShape::CollectTransformedShapes()']]], + ['collecttransformedshapesvisitor_77',['CollectTransformedShapesVisitor',['../struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a68b2dd66eeaafdf0fcb240f1bfd66b44',1,'CompoundShape::CollectTransformedShapesVisitor']]], + ['collide_78',['collide',['../class_vehicle_collision_tester_cast_sphere.html#a90248c4019ec139a1a6519d87b50e30f',1,'VehicleCollisionTesterCastSphere::Collide()'],['../class_vehicle_collision_tester_cast_cylinder.html#abdc5564939bc37738299098769cbbcbc',1,'VehicleCollisionTesterCastCylinder::Collide()'],['../class_vehicle_collision_tester_ray.html#abd279ac97d41c77e78c3a2db35cfc874',1,'VehicleCollisionTesterRay::Collide()'],['../class_vehicle_collision_tester.html#a2af9d0d5ab81d3321133ec0b408752b7',1,'VehicleCollisionTester::Collide()'],['../class_collide_sphere_vs_triangles.html#af95dc49f0b89ed30a49892cf5b881aa0',1,'CollideSphereVsTriangles::Collide()'],['../class_collide_convex_vs_triangles.html#ab9cbc3709c7d17d812ca1eba57f8f436',1,'CollideConvexVsTriangles::Collide()']]], + ['collideaabox_79',['collideaabox',['../class_quad_tree.html#a894acaffc70d6ef992626359b3c65284',1,'QuadTree::CollideAABox()'],['../class_broad_phase_brute_force.html#a942ee7721ab6b973d1ff0f84c5ec3c39',1,'BroadPhaseBruteForce::CollideAABox()'],['../class_broad_phase_quad_tree.html#ababb4885596fb1dd266438a0d57fe16f',1,'BroadPhaseQuadTree::CollideAABox()'],['../class_broad_phase_query.html#a4a63335c1c6b386af32b22d4e74dbf5a',1,'BroadPhaseQuery::CollideAABox()']]], + ['collidecharacter_80',['collidecharacter',['../class_character_vs_character_collision_simple.html#a7785735e8caff3effb04f2325d661d46',1,'CharacterVsCharacterCollisionSimple::CollideCharacter()'],['../class_character_vs_character_collision.html#a1336885e4964801d0812b3089faa674b',1,'CharacterVsCharacterCollision::CollideCharacter()']]], + ['collidecompoundvsshapevisitor_81',['CollideCompoundVsShapeVisitor',['../struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#aadc26efc419ef5f50163fcbb07d7d404',1,'CompoundShape::CollideCompoundVsShapeVisitor']]], + ['collideconvexvstriangles_82',['CollideConvexVsTriangles',['../class_collide_convex_vs_triangles.html#ade596a8c8b3a18d72739ead25ef0e569',1,'CollideConvexVsTriangles']]], + ['collideorientedbox_83',['collideorientedbox',['../class_broad_phase_quad_tree.html#a0b2255def43618e472f268d426596a46',1,'BroadPhaseQuadTree::CollideOrientedBox()'],['../class_quad_tree.html#a3bcf63c8fc180d29f75794e979399756',1,'QuadTree::CollideOrientedBox()'],['../class_broad_phase_query.html#aeec59baf944dd3f63f172dbf732768b2',1,'BroadPhaseQuery::CollideOrientedBox()'],['../class_broad_phase_brute_force.html#a7e8ac19b326adf19996bd1288089018b',1,'BroadPhaseBruteForce::CollideOrientedBox()']]], + ['collidepoint_84',['collidepoint',['../class_broad_phase_quad_tree.html#af5143b02d37873e6527da51ca6af9255',1,'BroadPhaseQuadTree::CollidePoint()'],['../class_soft_body_shape.html#ada1aa746b6692793aa8658a316967bb3',1,'SoftBodyShape::CollidePoint()'],['../class_transformed_shape.html#ad589cfe7574f79645c39f917e15aff08',1,'TransformedShape::CollidePoint()'],['../class_triangle_shape.html#a30e75a8329213c0df77088b28af7858d',1,'TriangleShape::CollidePoint()'],['../class_tapered_cylinder_shape.html#a369ff304ba00c6f9a8165ce7bc19d7ea',1,'TaperedCylinderShape::CollidePoint()'],['../class_static_compound_shape.html#ab2e2ccd7bd10816f6f919ca6aa3a405e',1,'StaticCompoundShape::CollidePoint()'],['../class_sphere_shape.html#ab8223102d141ca2fda0343ddfcb07ab4',1,'SphereShape::CollidePoint()'],['../class_shape.html#af6e77d16736434769d72152bf059a126',1,'Shape::CollidePoint()'],['../class_scaled_shape.html#ae5cef908731fb835103a01b2089aa361',1,'ScaledShape::CollidePoint()'],['../class_plane_shape.html#a1c5ada52854f738733c1820abd848888',1,'PlaneShape::CollidePoint()'],['../class_convex_hull_shape.html#a735042a5743c3f86f5a57efdf0326c85',1,'ConvexHullShape::CollidePoint()'],['../class_capsule_shape.html#a8474d2a38ac14d1d950829f284a0ca97',1,'CapsuleShape::CollidePoint()'],['../class_box_shape.html#ac79f1b2e03b7c9c374f8f8dbeb3104bb',1,'BoxShape::CollidePoint()'],['../class_narrow_phase_query.html#afcfabe1320517d1bdc956cded95f0f8a',1,'NarrowPhaseQuery::CollidePoint()'],['../class_quad_tree.html#ab5538217d4a9a42986da28d64b65740d',1,'QuadTree::CollidePoint()'],['../class_broad_phase_query.html#a191877420623144ad7ba7a78db56baa9',1,'BroadPhaseQuery::CollidePoint()'],['../class_broad_phase_brute_force.html#af8ccb4b811426b36bfb2e51e1e61b92b',1,'BroadPhaseBruteForce::CollidePoint()'],['../class_rotated_translated_shape.html#ae878ff562cc8dbd769853db0b1fa7271',1,'RotatedTranslatedShape::CollidePoint()'],['../class_convex_shape.html#a6257c07e716aa0654965b5a72ac31d39',1,'ConvexShape::CollidePoint()'],['../class_cylinder_shape.html#ae24a72e2cc4218687cd7ab1bc1baaa4a',1,'CylinderShape::CollidePoint()'],['../class_height_field_shape.html#a3dd607a4ac0f540c51a60e49cf84e224',1,'HeightFieldShape::CollidePoint()'],['../class_mesh_shape.html#a9f8a2bd04e4f014f21cf5da738909fa1',1,'MeshShape::CollidePoint()'],['../class_mutable_compound_shape.html#aa145b08202a26df921533b5f2db9f55f',1,'MutableCompoundShape::CollidePoint()'],['../class_offset_center_of_mass_shape.html#a2acee14056b7beb439004b66f9f76c13',1,'OffsetCenterOfMassShape::CollidePoint()']]], + ['collidepointvisitor_85',['CollidePointVisitor',['../struct_compound_shape_1_1_collide_point_visitor.html#a832d09b2ee2731828915fb29183b5960',1,'CompoundShape::CollidePointVisitor']]], + ['collideshape_86',['collideshape',['../class_transformed_shape.html#ad302129a3ff14b43463ec6514a79f988',1,'TransformedShape::CollideShape()'],['../class_narrow_phase_query.html#a6874ff06a6884c2706a1bbf8ed2590a8',1,'NarrowPhaseQuery::CollideShape()']]], + ['collideshaperesult_87',['collideshaperesult',['../class_collide_shape_result.html#a89e76885c988cdc177f121c6bb18801d',1,'CollideShapeResult::CollideShapeResult(Vec3Arg inContactPointOn1, Vec3Arg inContactPointOn2, Vec3Arg inPenetrationAxis, float inPenetrationDepth, const SubShapeID &inSubShapeID1, const SubShapeID &inSubShapeID2, const BodyID &inBodyID2)'],['../class_collide_shape_result.html#a7fe57d79718e199535fa4d9601e646ff',1,'CollideShapeResult::CollideShapeResult()=default']]], + ['collideshapevscompoundvisitor_88',['CollideShapeVsCompoundVisitor',['../struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#af99172bf5598b022f42e3b071d7dd7e9',1,'CompoundShape::CollideShapeVsCompoundVisitor']]], + ['collidesoftbodyvertices_89',['collidesoftbodyvertices',['../class_height_field_shape.html#aa521e6c10159a6cd54075b45ac0e2371',1,'HeightFieldShape::CollideSoftBodyVertices()'],['../class_convex_hull_shape.html#ad18b9b99f430af79e5d4ea67a90cb9fd',1,'ConvexHullShape::CollideSoftBodyVertices()'],['../class_compound_shape.html#add02d7783abadeb5c303c55aae10c11b',1,'CompoundShape::CollideSoftBodyVertices()'],['../class_capsule_shape.html#a86ec075742fb7f9f617b81216ff59e68',1,'CapsuleShape::CollideSoftBodyVertices()'],['../class_box_shape.html#a959bd34253ac2ce5b13986ee2e1da393',1,'BoxShape::CollideSoftBodyVertices()'],['../class_cylinder_shape.html#a22b362194bf9ad37d323ac646bc271be',1,'CylinderShape::CollideSoftBodyVertices()'],['../class_soft_body_shape.html#a7bba88197d25665160207c137e9a741e',1,'SoftBodyShape::CollideSoftBodyVertices()'],['../class_triangle_shape.html#af59dc4e9b420698bca4944751a866627',1,'TriangleShape::CollideSoftBodyVertices()'],['../class_tapered_cylinder_shape.html#aa9bc27b1e8dd94f290a9ab497d755365',1,'TaperedCylinderShape::CollideSoftBodyVertices()'],['../class_tapered_capsule_shape.html#ab88253790d7cff61bd92d7cf317092eb',1,'TaperedCapsuleShape::CollideSoftBodyVertices()'],['../class_sphere_shape.html#a6a1d356c6756e27d8a6780fc56c5717c',1,'SphereShape::CollideSoftBodyVertices()'],['../class_shape.html#ac351f347171376cd988ec415748a78ff',1,'Shape::CollideSoftBodyVertices()'],['../class_scaled_shape.html#a53065cdbb98b72f751b2a7349172a1eb',1,'ScaledShape::CollideSoftBodyVertices()'],['../class_rotated_translated_shape.html#ace49d7035c03331da9999356bbc5b574',1,'RotatedTranslatedShape::CollideSoftBodyVertices()'],['../class_plane_shape.html#a87873f0ba100b55cd2f53e4edd4873ae',1,'PlaneShape::CollideSoftBodyVertices()'],['../class_offset_center_of_mass_shape.html#aea5299762988ab387c53e4a071342477',1,'OffsetCenterOfMassShape::CollideSoftBodyVertices()'],['../class_mesh_shape.html#aa27e85bf5246ff4d4456b42164eb8c62',1,'MeshShape::CollideSoftBodyVertices()']]], + ['collidesoftbodyverticesvstriangles_90',['CollideSoftBodyVerticesVsTriangles',['../class_collide_soft_body_vertices_vs_triangles.html#a801e7995617c6fb1b447d75fd703ed4b',1,'CollideSoftBodyVerticesVsTriangles']]], + ['collidesphere_91',['collidesphere',['../class_broad_phase_brute_force.html#a1550bc80cf969b9db8c1acc327902b00',1,'BroadPhaseBruteForce::CollideSphere()'],['../class_broad_phase_quad_tree.html#ae7611ff0242bf2fa18f035db22a28d5a',1,'BroadPhaseQuadTree::CollideSphere()'],['../class_broad_phase_query.html#afb74ce9d61cf7048e3ea8a48a2997d38',1,'BroadPhaseQuery::CollideSphere()'],['../class_quad_tree.html#ab83e557e1224ba241789ce7d7da982de',1,'QuadTree::CollideSphere()']]], + ['collidespherevstriangles_92',['CollideSphereVsTriangles',['../class_collide_sphere_vs_triangles.html#a5201a21ae7222f10f6bb06b0c4e70bbb',1,'CollideSphereVsTriangles']]], + ['collisioncollector_93',['collisioncollector',['../class_collision_collector.html#a9ece66bb7cac504d660f412ded03e024',1,'CollisionCollector::CollisionCollector(const CollisionCollector< ResultTypeArg, TraitsType > &inRHS)=default'],['../class_collision_collector.html#a7d7b02e890a7ea24b0030027ce4851f9',1,'CollisionCollector::CollisionCollector(const CollisionCollector< ResultTypeArg2, TraitsType > &inRHS)'],['../class_collision_collector.html#a1da599bacd865c579f31e64676e36206',1,'CollisionCollector::CollisionCollector()=default']]], + ['collisiongroup_94',['collisiongroup',['../class_collision_group.html#a5428cf2e49b467026e833c0955d35b30',1,'CollisionGroup::CollisionGroup(const GroupFilter *inFilter, GroupID inGroupID, SubGroupID inSubGroupID)'],['../class_collision_group.html#ad9f6cce170470d571b3927c44d7104ec',1,'CollisionGroup::CollisionGroup()=default']]], + ['color_95',['color',['../class_color.html#affa4da76e6fbf13ef771c90473426362',1,'Color::Color(uint8 inRed, uint8 inGreen, uint8 inBlue, uint8 inAlpha=255)'],['../class_color.html#a2f0eb176e87b5a207f349b8117695091',1,'Color::Color(ColorArg inRHS, uint8 inAlpha)'],['../class_color.html#a79a97521474802216413085579b5ac25',1,'Color::Color(uint32 inColor)'],['../class_color.html#ab0984656578d1e7f385df33e89b5cea3',1,'Color::Color(const Color &inRHS)=default'],['../class_color.html#a6fae8aa8b75d27cb134234e75b41caf2',1,'Color::Color()=default']]], + ['compoundshape_96',['compoundshape',['../class_compound_shape.html#a6e087096097e738d9cb0547d1be060c9',1,'CompoundShape::CompoundShape(EShapeSubType inSubType)'],['../class_compound_shape.html#ac6d8a7e5c9f6758682f1a85437b09014',1,'CompoundShape::CompoundShape(EShapeSubType inSubType, const ShapeSettings &inSettings, ShapeResult &outResult)']]], + ['compoundshapesettings_97',['CompoundShapeSettings',['../class_compound_shape_settings.html#a203d5072fa51f2c61b999cfb76ed9867',1,'CompoundShapeSettings']]], + ['coneconstraint_98',['ConeConstraint',['../class_cone_constraint.html#a2fcce97ba85a4eba463a59524d9b9f8c',1,'ConeConstraint']]], + ['configurelayer_99',['ConfigureLayer',['../class_broad_phase_layer_interface_mask.html#a01a9ec0c57462e3cda401b73edbf3573',1,'BroadPhaseLayerInterfaceMask']]], + ['conjugated_100',['Conjugated',['../class_quat.html#ac69dfd8cdf79a19b8c3f385125ff5ddc',1,'Quat']]], + ['connectedconstraint_101',['connectedconstraint',['../class_physics_scene_1_1_connected_constraint.html#abc1ce879afcaa745d1a73d4e6a793f84',1,'PhysicsScene::ConnectedConstraint::ConnectedConstraint(const TwoBodyConstraintSettings *inSettings, uint inBody1, uint inBody2)'],['../class_physics_scene_1_1_connected_constraint.html#a8bfeb5b065806f40ace0e0a28e054a0a',1,'PhysicsScene::ConnectedConstraint::ConnectedConstraint()=default']]], + ['constraint_102',['Constraint',['../class_constraint.html#ae16420a87c4410ab9586397805c909bb',1,'Constraint']]], + ['constructcontroller_103',['constructcontroller',['../class_wheeled_vehicle_controller_settings.html#a6ab2f1877dd58bc447f4392b553bfb6a',1,'WheeledVehicleControllerSettings::ConstructController()'],['../class_vehicle_controller_settings.html#a463f96865e70f8ebecaa95b4e71a4c4d',1,'VehicleControllerSettings::ConstructController()'],['../class_tracked_vehicle_controller_settings.html#a7148f42436e98a8be5b3e877e2a52d99',1,'TrackedVehicleControllerSettings::ConstructController()'],['../class_motorcycle_controller_settings.html#a182ceaeed3e3c7f76d507ecf9ef5a4ef',1,'MotorcycleControllerSettings::ConstructController()']]], + ['constructobject_104',['ConstructObject',['../class_fixed_size_free_list.html#a54bb676ae1632d32f3f07dea3e5b4ba8',1,'FixedSizeFreeList']]], + ['constructwheel_105',['constructwheel',['../class_tracked_vehicle_controller.html#a66ae1eabf51f75a52b2c53f43228454d',1,'TrackedVehicleController::ConstructWheel()'],['../class_wheeled_vehicle_controller.html#a87526c2489ef5c417f2ef34a69d19cbb',1,'WheeledVehicleController::ConstructWheel()'],['../class_vehicle_controller.html#a67f4c989e175054bb615082afef27c45',1,'VehicleController::ConstructWheel()']]], + ['contactconstraintmanager_106',['ContactConstraintManager',['../class_contact_constraint_manager.html#ad99d5188de106b071b28914b4bece25f',1,'ContactConstraintManager']]], + ['contains_107',['contains',['../class_a_a_box.html#af09ba30f5f27874bbd9f407341a2dc42',1,'AABox::Contains(DVec3Arg inOther) const'],['../class_a_a_box.html#a374d1dc1d0889a919b9c3fbaea694750',1,'AABox::Contains(Vec3Arg inOther) const'],['../class_a_a_box.html#ae52734145d3a50ef7536bda72b553797',1,'AABox::Contains(const AABox &inOther) const']]], + ['containsface_108',['ContainsFace',['../class_convex_hull_builder.html#a423d9e378746f1e9d6edb19bb2afa11f',1,'ConvexHullBuilder']]], + ['convert_109',['Convert',['../class_a_a_b_b_tree_to_buffer.html#aaabe4187b0d51fd57d3922ded7b450fc',1,'AABBTreeToBuffer']]], + ['convertrpmtoangle_110',['ConvertRPMToAngle',['../class_vehicle_engine.html#a39842ae2cd4c9520f0d194814c92d3d1',1,'VehicleEngine']]], + ['convertshapesettings_111',['ConvertShapeSettings',['../class_body_creation_settings.html#ac3bf8e14319df094679f6644f6b80e48',1,'BodyCreationSettings']]], + ['converttostring_112',['ConvertToString',['../_string_tools_8h.html#a12b5bdab675fcd7004cbf9dbf2197538',1,'StringTools.h']]], + ['convexhullbuilder_113',['ConvexHullBuilder',['../class_convex_hull_builder.html#a245e3c9f2ac5137c9ee5d66c9f7a7b9d',1,'ConvexHullBuilder']]], + ['convexhullbuilder2d_114',['ConvexHullBuilder2D',['../class_convex_hull_builder2_d.html#ab299706e0b4a473b763116a31ff234c8',1,'ConvexHullBuilder2D']]], + ['convexhullshape_115',['convexhullshape',['../class_convex_hull_shape.html#ab2c0f1f214f4542f932fc0de78ad9312',1,'ConvexHullShape::ConvexHullShape()'],['../class_convex_hull_shape.html#aad25bb2ae100d80bf90b5f2a4a3f2436',1,'ConvexHullShape::ConvexHullShape(const ConvexHullShapeSettings &inSettings, ShapeResult &outResult)']]], + ['convexhullshapesettings_116',['convexhullshapesettings',['../class_convex_hull_shape_settings.html#a3922b9c1f60a1e6b49fd1600304ed9dd',1,'ConvexHullShapeSettings::ConvexHullShapeSettings(const Array< Vec3 > &inPoints, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_convex_hull_shape_settings.html#aa1f2ab646bf6c5b3dfed2733d59d5a3b',1,'ConvexHullShapeSettings::ConvexHullShapeSettings(const Vec3 *inPoints, int inNumPoints, float inMaxConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_convex_hull_shape_settings.html#a524da03e0e78e8bd774c322547e97e2b',1,'ConvexHullShapeSettings::ConvexHullShapeSettings()=default']]], + ['convexshape_117',['convexshape',['../class_convex_shape.html#a99d3262f306f702b0e6ae40ab53e6b34',1,'ConvexShape::ConvexShape(EShapeSubType inSubType, const PhysicsMaterial *inMaterial)'],['../class_convex_shape.html#a221da2b420dd837cee4aeb37dd3e7078',1,'ConvexShape::ConvexShape(EShapeSubType inSubType, const ConvexShapeSettings &inSettings, ShapeResult &outResult)'],['../class_convex_shape.html#a6454ef09933ded91976c8f77bec976db',1,'ConvexShape::ConvexShape(EShapeSubType inSubType)']]], + ['convexshapesettings_118',['convexshapesettings',['../class_convex_shape_settings.html#a80f5baa702dc1c5733daca4f72529cd1',1,'ConvexShapeSettings::ConvexShapeSettings(const PhysicsMaterial *inMaterial)'],['../class_convex_shape_settings.html#a88a8f361fef655ab590b7bda895f6461',1,'ConvexShapeSettings::ConvexShapeSettings()=default']]], + ['copypart_119',['copypart',['../class_vector.html#ac3bd9feb76f783d2e4168f2cf9fb3b2a',1,'Vector::CopyPart()'],['../class_matrix.html#a5e445d50e6137117917385b43e3bbe42',1,'Matrix::CopyPart()']]], + ['cos_120',['Cos',['../_trigonometry_8h.html#a40fafb1c427199b6855d704fc79cd1cf',1,'Trigonometry.h']]], + ['count_121',['Count',['../struct_triangle_splitter_1_1_range.html#ac12fcc73a1363b85a915d255f01dd176',1,'TriangleSplitter::Range']]], + ['countandsorttrues_122',['CountAndSortTrues',['../_sort_reverse_and_store_8h.html#ac0cd431ab99bf4ad6169c0583c65675d',1,'SortReverseAndStore.h']]], + ['countbits_123',['CountBits',['../_math_8h.html#a59413d7cb307df1856ec71deb3cc1a5b',1,'Math.h']]], + ['countleadingzeros_124',['CountLeadingZeros',['../_math_8h.html#abd13b5df498e6de8a050b25766543658',1,'Math.h']]], + ['counttrailingzeros_125',['CountTrailingZeros',['../_math_8h.html#aacba3fe18847d926ab86e86dbf94d219',1,'Math.h']]], + ['counttrues_126',['CountTrues',['../class_u_vec4.html#a1b44f57941f0fd3237bc0c6ff638e91e',1,'UVec4']]], + ['create_127',['create',['../class_lock_free_hash_map.html#a9a758f6a4dbf7bb4e25bac764a948266',1,'LockFreeHashMap::Create()'],['../class_swing_twist_constraint_settings.html#af22ef48647d68461c43534fc1f808e83',1,'SwingTwistConstraintSettings::Create()'],['../class_two_body_constraint_settings.html#a42e353e736b0254b02008b050a28f55b',1,'TwoBodyConstraintSettings::Create()'],['../class_plane_shape_settings.html#a988344346e7e5bf5253ea56c7b79ee59',1,'PlaneShapeSettings::Create()'],['../class_rotated_translated_shape_settings.html#ada2d2b814d70fe2935f1cc2b6bba2382',1,'RotatedTranslatedShapeSettings::Create()'],['../class_box_shape_settings.html#a25dd77e367eb83a372690aab9c9e744a',1,'BoxShapeSettings::Create()'],['../class_convex_hull_shape_settings.html#ad3143893a432135229b6780d3ff379a2',1,'ConvexHullShapeSettings::Create()'],['../class_cylinder_shape_settings.html#a39406c7bd89e09425edf21b209a1519a',1,'CylinderShapeSettings::Create()'],['../class_height_field_shape_settings.html#aba3ca652ae38def1bcdc999738eb7b61',1,'HeightFieldShapeSettings::Create()'],['../class_mesh_shape_settings.html#a637b6c63fe4144952b553754b2463a58',1,'MeshShapeSettings::Create()'],['../class_mutable_compound_shape_settings.html#a3f60b9fb32be86347adb1bfafb5bfd77',1,'MutableCompoundShapeSettings::Create()'],['../class_offset_center_of_mass_shape_settings.html#a641fb6993b220f935bed063a509acf38',1,'OffsetCenterOfMassShapeSettings::Create()'],['../class_six_d_o_f_constraint_settings.html#a81635495977742c547f592996574fada',1,'SixDOFConstraintSettings::Create()'],['../class_static_compound_shape_settings.html#a354d96bbea984e976b4e0bba6d8e659a',1,'StaticCompoundShapeSettings::Create()'],['../class_triangle_shape_settings.html#ae2a8bff03ce1978d9e0f04b97e6c7966',1,'TriangleShapeSettings::Create()'],['../class_cone_constraint_settings.html#ad1912e12def073c5c5c9c93fbfb76298',1,'ConeConstraintSettings::Create()'],['../class_distance_constraint_settings.html#aee6dc14294bbf16036e149724f01c6e8',1,'DistanceConstraintSettings::Create()'],['../class_fixed_constraint_settings.html#a5633cc7f7c00e518fe57a2623b725256',1,'FixedConstraintSettings::Create()'],['../class_gear_constraint_settings.html#a798d52ae206f83abe6a8ec362348a4a0',1,'GearConstraintSettings::Create()'],['../class_hinge_constraint_settings.html#a9c33cc4f73d2d92dac9b270e1e15a216',1,'HingeConstraintSettings::Create()'],['../class_path_constraint_settings.html#ab49bfcf55710c49a87f060e7b4593fad',1,'PathConstraintSettings::Create()'],['../class_point_constraint_settings.html#ae907012c2cecdd8df49afe781b66c1a3',1,'PointConstraintSettings::Create()'],['../class_pulley_constraint_settings.html#a803fa3c6f15331888d3189918deb52f8',1,'PulleyConstraintSettings::Create()'],['../class_static_compound_shape_settings.html#ad12438b5a92461663171c7295cc9d756',1,'StaticCompoundShapeSettings::Create()'],['../class_sphere_shape_settings.html#a8559852faf9a10923a7e5e0cca89d600',1,'SphereShapeSettings::Create()'],['../class_shape_settings.html#a21e53b5758542a5527c7941d61d838fa',1,'ShapeSettings::Create()'],['../class_slider_constraint_settings.html#abf465eb2615ffac5ecb0047f682a31c2',1,'SliderConstraintSettings::Create()'],['../class_rack_and_pinion_constraint_settings.html#a7d110449eb5677dff23aa5199ab97929',1,'RackAndPinionConstraintSettings::Create()']]], + ['createandaddbody_128',['CreateAndAddBody',['../class_body_interface.html#a1484650a796607c688529fe600dc9e9f',1,'BodyInterface']]], + ['createandaddsoftbody_129',['CreateAndAddSoftBody',['../class_body_interface.html#a0424b908e93229e76b8e2577931abe3f',1,'BodyInterface']]], + ['createbarrier_130',['createbarrier',['../class_job_system_with_barrier.html#a19401113c3246594dd83bc4563823ec5',1,'JobSystemWithBarrier::CreateBarrier()'],['../class_job_system_single_threaded.html#ade901f3e457e5f60b071388bc6557778',1,'JobSystemSingleThreaded::CreateBarrier()'],['../class_job_system.html#a2bd7c3efdc8f934b728ee1787e0bd58e',1,'JobSystem::CreateBarrier()']]], + ['createbodies_131',['CreateBodies',['../class_physics_scene.html#a279e3c7758abc7691ab0ecf067083f1e',1,'PhysicsScene']]], + ['createbody_132',['CreateBody',['../class_body_interface.html#ae0205e33e033e932177183c7b20da0f1',1,'BodyInterface']]], + ['createbodywithid_133',['CreateBodyWithID',['../class_body_interface.html#a6ce6c1e2646429777f65e66e7a21e05b',1,'BodyInterface']]], + ['createbodywithoutid_134',['CreateBodyWithoutID',['../class_body_interface.html#abb17d2706f2ee0c0aac4c82d774bece2',1,'BodyInterface']]], + ['createconstraint_135',['CreateConstraint',['../class_body_interface.html#ac5d2f3a832968329c91af032409abc68',1,'BodyInterface']]], + ['createconstraints_136',['CreateConstraints',['../class_soft_body_shared_settings.html#a9880c4cadc96bb24402b3cf3021aff2b',1,'SoftBodySharedSettings']]], + ['createjob_137',['createjob',['../class_job_system_single_threaded.html#ac183b901c9be0f04f21ff493cb5b2ec7',1,'JobSystemSingleThreaded::CreateJob()'],['../class_job_system_thread_pool.html#aa345080efb7aec00011c102b37988fa3',1,'JobSystemThreadPool::CreateJob()'],['../class_job_system.html#a0766c8acd5ed9ef0e6baf1c2b8f3c38b',1,'JobSystem::CreateJob()']]], + ['createobject_138',['createobject',['../class_factory.html#a8952fd138cc4a7625f009fda6d47f078',1,'Factory::CreateObject()'],['../class_r_t_t_i.html#a97cb905567f96a8e766aa8f769394ee0',1,'RTTI::CreateObject()']]], + ['createragdoll_139',['CreateRagdoll',['../class_ragdoll_settings.html#a6f5c2dd947c77b071431f91a1f1b6251',1,'RagdollSettings']]], + ['createsoftbody_140',['CreateSoftBody',['../class_body_interface.html#ab96c4bc3e0015772d42d48c094b72388',1,'BodyInterface']]], + ['createsoftbodywithid_141',['CreateSoftBodyWithID',['../class_body_interface.html#a06ffc5520f0460fed075bced2c4de434',1,'BodyInterface']]], + ['createsoftbodywithoutid_142',['CreateSoftBodyWithoutID',['../class_body_interface.html#ad6e464f89f991661c201fecad8dbe324',1,'BodyInterface']]], + ['createtriangle_143',['CreateTriangle',['../class_e_p_a_convex_hull_builder_1_1_triangle_factory.html#a10150659d6967c3da5444f42b257eda8',1,'EPAConvexHullBuilder::TriangleFactory']]], + ['createtrianglebatch_144',['createtrianglebatch',['../class_debug_renderer.html#a9537e347fe16d3d0c55e8409299a1979',1,'DebugRenderer::CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount)=0'],['../class_debug_renderer.html#a8dcd601e14892e4d00a6fbb9c6781fc7',1,'DebugRenderer::CreateTriangleBatch(const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount)=0'],['../class_debug_renderer.html#ab85edd30ad2f32371df796353b6ebdca',1,'DebugRenderer::CreateTriangleBatch(const Array< Triangle > &inTriangles)'],['../class_debug_renderer.html#ac3bd1caeea7a7e42085927d729336d19',1,'DebugRenderer::CreateTriangleBatch(const Array< Vertex > &inVertices, const Array< uint32 > &inIndices)'],['../class_debug_renderer.html#aaff229ea353f72b38b70771612de7ae2',1,'DebugRenderer::CreateTriangleBatch(const VertexList &inVertices, const IndexedTriangleNoMaterialList &inTriangles)'],['../class_debug_renderer_recorder.html#ad67f25e318187c3098011124ea5875a2',1,'DebugRendererRecorder::CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount) override'],['../class_debug_renderer_recorder.html#afa424a96fbae0b56050b27dffa2c4b02',1,'DebugRendererRecorder::CreateTriangleBatch(const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount) override'],['../class_debug_renderer_simple.html#a7f93b6ccb5960002544ce00fc743dd87',1,'DebugRendererSimple::CreateTriangleBatch(const Vertex *inVertices, int inVertexCount, const uint32 *inIndices, int inIndexCount) override'],['../class_debug_renderer_simple.html#a159b563111495231a05b7c7143336954',1,'DebugRendererSimple::CreateTriangleBatch(const Triangle *inTriangles, int inTriangleCount) override']]], + ['createtrianglebatchforconvex_145',['CreateTriangleBatchForConvex',['../class_debug_renderer.html#a0bad1eb221a0bb765405b76a69de51d7',1,'DebugRenderer']]], + ['createtrianglegeometryforconvex_146',['CreateTriangleGeometryForConvex',['../class_debug_renderer.html#a10539e59c9323113348a85744d1ca054',1,'DebugRenderer']]], + ['cross_147',['cross',['../class_vec3.html#a224811af391ccfd1e05282eda22d1de8',1,'Vec3::Cross()'],['../class_d_vec3.html#adcd2e18b680e40bbd4ac71c6b0463bd3',1,'DVec3::Cross()']]], + ['csgettrianglescontext_148',['CSGetTrianglesContext',['../class_convex_shape_1_1_c_s_get_triangles_context.html#a894b10f5caa797d008eff4064a563b28',1,'ConvexShape::CSGetTrianglesContext']]], + ['cubed_149',['Cubed',['../_math_8h.html#a6a1a326c0e5f6b61307d2458bcce0eb8',1,'Math.h']]], + ['customupdate_150',['CustomUpdate',['../class_soft_body_motion_properties.html#ad4d7a9296f3a573698a253763391a2ef',1,'SoftBodyMotionProperties']]], + ['cylinder_151',['Cylinder',['../class_cylinder_shape_1_1_cylinder.html#a932e1101233f69024d2ba24094d3a7c2',1,'CylinderShape::Cylinder']]], + ['cylindershape_152',['cylindershape',['../class_cylinder_shape.html#afcb1b0ed67b7cfbfd8d85bdad5744808',1,'CylinderShape::CylinderShape(float inHalfHeight, float inRadius, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_cylinder_shape.html#a1079164769598081f54bd33700747b57',1,'CylinderShape::CylinderShape(const CylinderShapeSettings &inSettings, ShapeResult &outResult)'],['../class_cylinder_shape.html#ada372990ab7de7c92a34c81a01cd37d5',1,'CylinderShape::CylinderShape()']]], + ['cylindershapesettings_153',['cylindershapesettings',['../class_cylinder_shape_settings.html#ab24905d9ebd23c56f21db0233bf606e9',1,'CylinderShapeSettings::CylinderShapeSettings(float inHalfHeight, float inRadius, float inConvexRadius=cDefaultConvexRadius, const PhysicsMaterial *inMaterial=nullptr)'],['../class_cylinder_shape_settings.html#a4933a4e035e0f25e3c4bacbb3a6a355c',1,'CylinderShapeSettings::CylinderShapeSettings()=default']]] +]; diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 000000000..9bfa06c69 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,88 @@ +var searchData= +[ + ['data_0',['data',['../class_array.html#a5b7aadb17c283136252c6d0c4bb92009',1,'Array::data()'],['../class_array.html#a981fa99850b2f859c24c554596a19cfb',1,'Array::data() const'],['../class_static_array.html#a28fd92f5eed107bfaef2e94f23ce4f12',1,'StaticArray::data()'],['../class_static_array.html#a7698b4e3e7cf608eeba5a48f25c284d9',1,'StaticArray::data() const']]], + ['deactivate_1',['deactivate',['../class_angle_constraint_part.html#a27c8bf9c172f0d3867c1a489aa08c840',1,'AngleConstraintPart::Deactivate()'],['../class_axis_constraint_part.html#a6b2103009bf467876c92689dc3fec29d',1,'AxisConstraintPart::Deactivate()'],['../class_dual_axis_constraint_part.html#ad42c35a8c5bd8b609c1a3910a71194f6',1,'DualAxisConstraintPart::Deactivate()'],['../class_gear_constraint_part.html#ab05807faf3573b42a9a7a0a280aed05c',1,'GearConstraintPart::Deactivate()'],['../class_hinge_rotation_constraint_part.html#a4ae072cae1beb84f1e87eafff60f0022',1,'HingeRotationConstraintPart::Deactivate()'],['../class_independent_axis_constraint_part.html#a75a0e94426831c24d9a05022788a33a0',1,'IndependentAxisConstraintPart::Deactivate()'],['../class_point_constraint_part.html#a79eddd21eea247c5560ab8208a627019',1,'PointConstraintPart::Deactivate()'],['../class_rack_and_pinion_constraint_part.html#ae283f92c8107a3ce86212c2885f4ea5f',1,'RackAndPinionConstraintPart::Deactivate()'],['../class_rotation_euler_constraint_part.html#ab5ff022582eb45db942a196a32795661',1,'RotationEulerConstraintPart::Deactivate()'],['../class_rotation_quat_constraint_part.html#a6fbaaa5c64ed9b01753780cbad3efb8b',1,'RotationQuatConstraintPart::Deactivate()'],['../class_swing_twist_constraint_part.html#ae76162c3dfe72782a020162752a7ccf5',1,'SwingTwistConstraintPart::Deactivate()']]], + ['deactivatebodies_2',['deactivatebodies',['../class_body_interface.html#a0dea3b8edb237b9dd29fb05da84a1331',1,'BodyInterface::DeactivateBodies()'],['../class_body_manager.html#ac8e13efcbe3e2fab505e2c9047f9d2ef',1,'BodyManager::DeactivateBodies()']]], + ['deactivatebody_3',['DeactivateBody',['../class_body_interface.html#a62255f9678f727b3838fc7f25d3c47e0',1,'BodyInterface']]], + ['deallocate_4',['deallocate',['../class_s_t_l_temp_allocator.html#ac9000fbc979ae4fc5f7bd9f978781128',1,'STLTempAllocator::deallocate()'],['../class_s_t_l_aligned_allocator.html#a7ee785ea3499d6b21ce7872cb66988eb',1,'STLAlignedAllocator::deallocate()'],['../class_s_t_l_allocator.html#aabc649e7365a3815c5f7fdd9f9d2b2df',1,'STLAllocator::deallocate()']]], + ['debugrenderer_5',['DebugRenderer',['../class_debug_renderer.html#a6e3bda3b06b01b6f8e4257ef02cb435f',1,'DebugRenderer']]], + ['debugrendererplayback_6',['DebugRendererPlayback',['../class_debug_renderer_playback.html#a33c8fd5a6bbdf90c9710f5aa625ac6a4',1,'DebugRendererPlayback']]], + ['debugrendererrecorder_7',['DebugRendererRecorder',['../class_debug_renderer_recorder.html#ae016c0c6e1951199b26be47d0e58e2e4',1,'DebugRendererRecorder']]], + ['debugrenderersimple_8',['DebugRendererSimple',['../class_debug_renderer_simple.html#a9af1945bf20facfc39310fff5b692d9b',1,'DebugRendererSimple']]], + ['decodingcontext_9',['decodingcontext',['../class_node_codec_quad_tree_half_float_1_1_decoding_context.html#aa3ed16d2ad735587cc31672b2db9c6f4',1,'NodeCodecQuadTreeHalfFloat::DecodingContext::DecodingContext()'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#af84b416ab6da3ec2c8b3285e18537dc0',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::DecodingContext()'],['../class_height_field_shape_1_1_decoding_context.html#a7622cbd7f7338a38654def62a270dd34',1,'HeightFieldShape::DecodingContext::DecodingContext()']]], + ['decompose_10',['decompose',['../class_d_mat44.html#ac179f093b7e89e2b71f9d5cea1c84d90',1,'DMat44::Decompose()'],['../class_mat44.html#aa11f571efdce00289f87a65317fbdd58',1,'Mat44::Decompose()']]], + ['decomposeprincipalmomentsofinertia_11',['DecomposePrincipalMomentsOfInertia',['../class_mass_properties.html#a37bb3a2b21209e7da35c5fbc4102d8de',1,'MassProperties']]], + ['decoratedshape_12',['decoratedshape',['../class_decorated_shape.html#a9619e07b18da28f6c4cb04bf931e4c15',1,'DecoratedShape::DecoratedShape(EShapeSubType inSubType)'],['../class_decorated_shape.html#abacdd80b00fe8afc00c50db7eac53a28',1,'DecoratedShape::DecoratedShape(EShapeSubType inSubType, const Shape *inInnerShape)'],['../class_decorated_shape.html#a1c95daf857b7433b85e88da194e53147',1,'DecoratedShape::DecoratedShape(EShapeSubType inSubType, const DecoratedShapeSettings &inSettings, ShapeResult &outResult)']]], + ['defaultbroadphaselayerfilter_13',['DefaultBroadPhaseLayerFilter',['../class_default_broad_phase_layer_filter.html#a6df10c5326c2190b934694510851d7b0',1,'DefaultBroadPhaseLayerFilter']]], + ['defaultobjectlayerfilter_14',['defaultobjectlayerfilter',['../class_default_object_layer_filter.html#aadd5a15cd5f3f980b89a95a843155a51',1,'DefaultObjectLayerFilter::DefaultObjectLayerFilter(const ObjectLayerPairFilter &inObjectLayerPairFilter, ObjectLayer inLayer)'],['../class_default_object_layer_filter.html#abeeea7ecb8636d9c103ed66cf016fcbd',1,'DefaultObjectLayerFilter::DefaultObjectLayerFilter(const DefaultObjectLayerFilter &inRHS)']]], + ['degreestoradians_15',['DegreesToRadians',['../_math_8h.html#a636689581f2a6ce1d3030dc4dd83b2f5',1,'Math.h']]], + ['deindexify_16',['deindexify',['../_indexify_8h.html#a2914ee656dfa981f96f1c6bcd70e1c4b',1,'Deindexify(const VertexList &inVertices, const IndexedTriangleList &inTriangles, TriangleList &outTriangles): Indexify.cpp'],['../_indexify_8cpp.html#ac61c7f9c3b965f9cbff3cc10733988ec',1,'Deindexify(const VertexList &inVertices, const IndexedTriangleList &inTriangles, TriangleList &outTriangles): Indexify.cpp']]], + ['destroybarrier_17',['destroybarrier',['../class_job_system_with_barrier.html#a4827161974dbd03dff9c84424d75107e',1,'JobSystemWithBarrier::DestroyBarrier()'],['../class_job_system.html#a51c615924cf4f8eefb8e3fbe72041373',1,'JobSystem::DestroyBarrier()'],['../class_job_system_single_threaded.html#a9333b0d4cb69ade4b4045b518c77a120',1,'JobSystemSingleThreaded::DestroyBarrier()']]], + ['destroybodies_18',['destroybodies',['../class_body_manager.html#a5c0cc30ec7f2c4a5bcd1119906a6632e',1,'BodyManager::DestroyBodies()'],['../class_body_interface.html#a95b819fbbcd8a85c25cbce1a319a9037',1,'BodyInterface::DestroyBodies(const BodyID *inBodyIDs, int inNumber)']]], + ['destroybody_19',['DestroyBody',['../class_body_interface.html#a43fb4ffc35661c67642ffa804d1dad8a',1,'BodyInterface']]], + ['destroybodywithoutid_20',['DestroyBodyWithoutID',['../class_body_interface.html#a6263a2b21c5544789bdf4040deacc377',1,'BodyInterface']]], + ['destructobject_21',['destructobject',['../class_fixed_size_free_list.html#a7446e6f32dac053462c14dfefcb467a0',1,'FixedSizeFreeList::DestructObject(uint32 inObjectIndex)'],['../class_fixed_size_free_list.html#a80ff23d54800cfa02da08d6e77171397',1,'FixedSizeFreeList::DestructObject(Object *inObject)'],['../class_r_t_t_i.html#a224cbb3037f84324f9604ecd4218674e',1,'RTTI::DestructObject()']]], + ['destructobjectbatch_22',['DestructObjectBatch',['../class_fixed_size_free_list.html#a0bf25bd9e2c35e584e0bc14d40054bc2',1,'FixedSizeFreeList']]], + ['determinecollidingshapes_23',['DetermineCollidingShapes',['../class_soft_body_motion_properties.html#ac769f97c554975c25bd37860946d63cb',1,'SoftBodyMotionProperties']]], + ['determinemaxerror_24',['DetermineMaxError',['../class_convex_hull_builder.html#aae519c2ae09443413ef0c9e91dd26076',1,'ConvexHullBuilder']]], + ['determineminandmaxsample_25',['DetermineMinAndMaxSample',['../class_height_field_shape_settings.html#a461c9c2289620877314186af163ebf73',1,'HeightFieldShapeSettings']]], + ['dihedralbend_26',['dihedralbend',['../struct_soft_body_shared_settings_1_1_dihedral_bend.html#abe9fe03ca75f96fea20b8ee693a2f873',1,'SoftBodySharedSettings::DihedralBend::DihedralBend()=default'],['../struct_soft_body_shared_settings_1_1_dihedral_bend.html#afe227a4f69c416f8047b276dcf350585',1,'SoftBodySharedSettings::DihedralBend::DihedralBend(uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inVertex4, float inCompliance=0.0f)']]], + ['disablecollision_27',['disablecollision',['../class_group_filter_table.html#a21f49a18fb98bbd35151022505fe275f',1,'GroupFilterTable::DisableCollision()'],['../class_object_layer_pair_filter_table.html#a24646de71a6a06550b0db5addf81b78e',1,'ObjectLayerPairFilterTable::DisableCollision()']]], + ['disableparentchildcollisions_28',['DisableParentChildCollisions',['../class_ragdoll_settings.html#a4fa33727be725de16620f446fbb420f6',1,'RagdollSettings']]], + ['discardoldtree_29',['DiscardOldTree',['../class_quad_tree.html#a6e7b9e3242b2af8c7ba11d9b6eeb0d64',1,'QuadTree']]], + ['distanceconstraint_30',['DistanceConstraint',['../class_distance_constraint.html#a341078be34cb228a4ab7402c960aacb5',1,'DistanceConstraint']]], + ['dmat44_31',['dmat44',['../class_d_mat44.html#adf1f915521ba1e3409213613c6286a04',1,'DMat44::DMat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, DVec3Arg inC4)'],['../class_d_mat44.html#a52a39db3b4bfe06308b9daecf707d72d',1,'DMat44::DMat44(Type inC1, Type inC2, Type inC3, DTypeArg inC4)'],['../class_d_mat44.html#a60e1e9ecc98846282182af2d3e5f5f54',1,'DMat44::DMat44(Mat44Arg inRot, DVec3Arg inT)'],['../class_d_mat44.html#a5a0ebccf6fd317512f2be4ea790f29e9',1,'DMat44::DMat44(Mat44Arg inM)'],['../class_d_mat44.html#ac36f72aa17f21f89ef16a9a419c2646e',1,'DMat44::DMat44(const DMat44 &inM2)=default'],['../class_d_mat44.html#a61262e4bb014f696551e9513fd19808e',1,'DMat44::DMat44()=default']]], + ['dot_32',['dot',['../class_d_vec3.html#aa0634b13605c6233650f7ccac571be75',1,'DVec3::Dot()'],['../class_quat.html#aa95ff0fd4a249749b023c32a5be3a44f',1,'Quat::Dot()'],['../class_vec3.html#a0e078ff09f69e669db71a2b0e37939ff',1,'Vec3::Dot()'],['../class_vec4.html#ad6b9e883a8a97a115e9d98017c9849a9',1,'Vec4::Dot()'],['../class_vector.html#ad187891cbfdaad7c7b9ed6d496ef0606',1,'Vector::Dot()']]], + ['dotv_33',['dotv',['../class_vec3.html#ae94bad18d2f3d3b2a75f69022f67c7e0',1,'Vec3::DotV()'],['../class_vec4.html#aac21b2e88ff0e543a11fd1c4e2c743d8',1,'Vec4::DotV()']]], + ['dotv4_34',['DotV4',['../class_vec3.html#a609366221e50c7b3134d80a80d963312',1,'Vec3']]], + ['double3_35',['double3',['../class_double3.html#ab0081bc08f995dd22c3b96f48ae491d1',1,'Double3::Double3()=default'],['../class_double3.html#ab5aa082b210fbdd05635916c0ae50be9',1,'Double3::Double3(const Double3 &inRHS)=default'],['../class_double3.html#acc10e82457b89d0ce6100ba58922735f',1,'Double3::Double3(double inX, double inY, double inZ)']]], + ['draw_36',['draw',['../class_box_shape.html#a4d5f89d904e7044077b0b187aa74e474',1,'BoxShape::Draw()'],['../class_skeleton_pose.html#af5874cab5f76ecc0df0d7d9e93b2eaf8',1,'SkeletonPose::Draw()'],['../class_wheeled_vehicle_controller.html#a254e0402efc01e79154b4bde178918a4',1,'WheeledVehicleController::Draw()'],['../class_vehicle_controller.html#a274a1450cbb816e3150d26237bf3725a',1,'VehicleController::Draw()'],['../class_tracked_vehicle_controller.html#a9f56bbde7c73183fb8b2a6cb122976af',1,'TrackedVehicleController::Draw()'],['../class_motorcycle_controller.html#ad6cec4ca1b528d91c5ff6e5d6f225b2b',1,'MotorcycleController::Draw()'],['../class_soft_body_shape.html#a4259140bb1fef6e7d7d2692d7dcd8577',1,'SoftBodyShape::Draw()'],['../class_triangle_shape.html#a3d39b9ad69e1da9c16eb1f0a9221090b',1,'TriangleShape::Draw()'],['../class_tapered_cylinder_shape.html#a47be7d0b3613f8a0b16d7eef11a2dafc',1,'TaperedCylinderShape::Draw()'],['../class_tapered_capsule_shape.html#ace616f13de2f3cb7acf8f66194c01442',1,'TaperedCapsuleShape::Draw()'],['../class_shape.html#af00149d141125f15e56d9aa82f07b6d4',1,'Shape::Draw()'],['../class_body_manager.html#a877463f0189e8e131edec5d83413726b',1,'BodyManager::Draw()'],['../class_capsule_shape.html#a4e38d9480d6ce322203bc484f5ec9b12',1,'CapsuleShape::Draw()'],['../class_compound_shape.html#ae6d820f0033d6933b35babdd50cabe29',1,'CompoundShape::Draw()'],['../class_convex_hull_shape.html#a539ee8eb075e2011e67dfd10292f0c12',1,'ConvexHullShape::Draw()'],['../class_cylinder_shape.html#a216fefbc620f08d2e40a7c2ea4d5aa90',1,'CylinderShape::Draw()'],['../class_height_field_shape.html#a996a3f59d7ad00c4df53f817254f5ae1',1,'HeightFieldShape::Draw()'],['../class_mesh_shape.html#afb09372cb71fdbe4cca9718557e144d0',1,'MeshShape::Draw()'],['../class_offset_center_of_mass_shape.html#a24398fdf876a5577fc6261429af7e66a',1,'OffsetCenterOfMassShape::Draw()'],['../class_plane_shape.html#a22d45c2285a901e1334383ea4ee3a19b',1,'PlaneShape::Draw()'],['../class_rotated_translated_shape.html#a896a8828b726e57a15b696e85ce7f1c7',1,'RotatedTranslatedShape::Draw()'],['../class_scaled_shape.html#aef8f4170bcd5d01f62862f08c3af3ce0',1,'ScaledShape::Draw()'],['../class_sphere_shape.html#a278bd4a5d3c605638c48438eacc80124',1,'SphereShape::Draw()']]], + ['drawarrow_37',['DrawArrow',['../class_debug_renderer.html#ad3208b1f011a70927082d734591c0e83',1,'DebugRenderer']]], + ['drawbendconstraints_38',['DrawBendConstraints',['../class_soft_body_motion_properties.html#abeca8c133c3aadb669b31f69cf70a2cf',1,'SoftBodyMotionProperties']]], + ['drawbodies_39',['DrawBodies',['../class_physics_system.html#a8d4eda1c25d2c2e57a6964167870fe93',1,'PhysicsSystem']]], + ['drawbox_40',['drawbox',['../class_debug_renderer.html#acdb1f479a56884e8744f5f08104f556b',1,'DebugRenderer::DrawBox(RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)'],['../class_debug_renderer.html#a47b78c771e85a3d8931b911417737591',1,'DebugRenderer::DrawBox(const AABox &inBox, ColorArg inColor, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)']]], + ['drawcapsule_41',['DrawCapsule',['../class_debug_renderer.html#a124eec53b294b9d6e2ef72cea8fb760f',1,'DebugRenderer']]], + ['drawconstraint_42',['drawconstraint',['../class_distance_constraint.html#a77a9f420d8b2e91f852af61cbcecceb0',1,'DistanceConstraint::DrawConstraint()'],['../class_cone_constraint.html#ab5002a97909c7f2c8d4b7b589ee93a46',1,'ConeConstraint::DrawConstraint()'],['../class_constraint.html#acd05177b26e3251b1a9aff9dded18701',1,'Constraint::DrawConstraint()'],['../class_vehicle_constraint.html#af2493620d3e9d960b3cbf0641c182251',1,'VehicleConstraint::DrawConstraint()'],['../class_swing_twist_constraint.html#a7ac554fd24b5b89297f13405808991a6',1,'SwingTwistConstraint::DrawConstraint()'],['../class_slider_constraint.html#a09317cd6ab2f56cb7a15a950a420f5f8',1,'SliderConstraint::DrawConstraint()'],['../class_six_d_o_f_constraint.html#a3e482be52b58ddefa10fd4fe941b4e79',1,'SixDOFConstraint::DrawConstraint()'],['../class_pulley_constraint.html#a7ae0d37c406ebdf990d0596028945409',1,'PulleyConstraint::DrawConstraint()'],['../class_hinge_constraint.html#ab73c3ac05525ab37e8dd8875ce74ac74',1,'HingeConstraint::DrawConstraint()'],['../class_gear_constraint.html#a235385454fa5996217ddd2f7085f47d5',1,'GearConstraint::DrawConstraint()'],['../class_fixed_constraint.html#afebbb16e9900672eebfcfa9d10e01b5b',1,'FixedConstraint::DrawConstraint()'],['../class_rack_and_pinion_constraint.html#a69a8d281fdc1f250625d718dabbc18ed',1,'RackAndPinionConstraint::DrawConstraint()'],['../class_point_constraint.html#ab49bd368d3d5042348299f4bf76dd6d7',1,'PointConstraint::DrawConstraint()'],['../class_path_constraint.html#a538c03ec9bda5767332e77595d1dab9c',1,'PathConstraint::DrawConstraint()']]], + ['drawconstraintlimits_43',['drawconstraintlimits',['../class_constraint_manager.html#ada42a650942ca12b4ffef3bc772ccaed',1,'ConstraintManager::DrawConstraintLimits()'],['../class_hinge_constraint.html#a7fbe9f4f52961a1fa196122c735249d7',1,'HingeConstraint::DrawConstraintLimits()'],['../class_six_d_o_f_constraint.html#ad7cf9ea81cc6d05443936cff5f9f63e0',1,'SixDOFConstraint::DrawConstraintLimits()'],['../class_slider_constraint.html#ae1378d973e0d535040c6bb36eb368dc5',1,'SliderConstraint::DrawConstraintLimits()'],['../class_swing_twist_constraint.html#a820235859442463871552b2f24eaf499',1,'SwingTwistConstraint::DrawConstraintLimits()'],['../class_physics_system.html#a58612f2c07412ae75580710d0b0047d9',1,'PhysicsSystem::DrawConstraintLimits()'],['../class_vehicle_constraint.html#aa5ecf61104253599b367ce944f9a3dba',1,'VehicleConstraint::DrawConstraintLimits()'],['../class_constraint.html#a528e67a83b796e469b10d5c473dc195f',1,'Constraint::DrawConstraintLimits()'],['../class_cone_constraint.html#ab9c5d6d9a767242a2d593d5592ca83e2',1,'ConeConstraint::DrawConstraintLimits()']]], + ['drawconstraintreferenceframe_44',['drawconstraintreferenceframe',['../class_two_body_constraint.html#aab88ca80622557a5a14cbc1f2e6d0ec0',1,'TwoBodyConstraint::DrawConstraintReferenceFrame()'],['../class_physics_system.html#a0535d433ffd7c3d00595ba784ada4f91',1,'PhysicsSystem::DrawConstraintReferenceFrame()'],['../class_constraint_manager.html#a8e8f3c781d808b7676cb6a7e8e377a3b',1,'ConstraintManager::DrawConstraintReferenceFrame()'],['../class_constraint.html#a9789129d9dcf3f78e84322b374d0a2c9',1,'Constraint::DrawConstraintReferenceFrame()']]], + ['drawconstraints_45',['drawconstraints',['../class_constraint_manager.html#acbfe993a9253a89c1a75f1fa8318a706',1,'ConstraintManager::DrawConstraints()'],['../class_physics_system.html#a4fa500f710dcc423062fd1514fe07780',1,'PhysicsSystem::DrawConstraints()']]], + ['drawcoordinatesystem_46',['DrawCoordinateSystem',['../class_debug_renderer.html#a7d64d230d835d560b34282b5402ae05e',1,'DebugRenderer']]], + ['drawcylinder_47',['DrawCylinder',['../class_debug_renderer.html#adf3acc6633c87d5dc00a4db27646586f',1,'DebugRenderer']]], + ['drawedgeconstraints_48',['DrawEdgeConstraints',['../class_soft_body_motion_properties.html#a0a5b90a07601d664cabf9bc51d335307',1,'SoftBodyMotionProperties']]], + ['drawframe_49',['DrawFrame',['../class_debug_renderer_playback.html#a7253cd6ee053738333ffada2a28c5d70',1,'DebugRendererPlayback']]], + ['drawgeometry_50',['drawgeometry',['../class_debug_renderer.html#a9542e23f59dcb2dbe19d5cc870e1efcf',1,'DebugRenderer::DrawGeometry(RMat44Arg inModelMatrix, const AABox &inWorldSpaceBounds, float inLODScaleSq, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)=0'],['../class_debug_renderer.html#ac548f9103671727c4f750f4d21fa0972',1,'DebugRenderer::DrawGeometry(RMat44Arg inModelMatrix, ColorArg inModelColor, const GeometryRef &inGeometry, ECullMode inCullMode=ECullMode::CullBackFace, ECastShadow inCastShadow=ECastShadow::On, EDrawMode inDrawMode=EDrawMode::Solid)'],['../class_debug_renderer_simple.html#a745b3cf4af4cf5e61c18945940dd5fa6',1,'DebugRendererSimple::DrawGeometry()'],['../class_debug_renderer_recorder.html#af551847dd6e112a52b7830acb7f639c6',1,'DebugRendererRecorder::DrawGeometry()']]], + ['drawgetsupportfunction_51',['drawgetsupportfunction',['../class_compound_shape.html#afe32beff5208c480e33fd9177ab8a6be',1,'CompoundShape::DrawGetSupportFunction()'],['../class_convex_shape.html#a6b8a3a589361aaa51d2bb77c70fea79f',1,'ConvexShape::DrawGetSupportFunction()'],['../class_offset_center_of_mass_shape.html#a76d792b27cb24f5e39358c58cbb8d92e',1,'OffsetCenterOfMassShape::DrawGetSupportFunction()'],['../class_rotated_translated_shape.html#aa38b6b32591db13a3848b2eb4bbdfbe6',1,'RotatedTranslatedShape::DrawGetSupportFunction()'],['../class_scaled_shape.html#a5150fdb5370cf6aeb27d975cc1ef5c6f',1,'ScaledShape::DrawGetSupportFunction()'],['../class_shape.html#aba9738d09ec43b40f10e32d1793b7ef5',1,'Shape::DrawGetSupportFunction()']]], + ['drawgetsupportingface_52',['drawgetsupportingface',['../class_offset_center_of_mass_shape.html#a3bf3f16aa5100aa0a9e63c74e570b6dd',1,'OffsetCenterOfMassShape::DrawGetSupportingFace()'],['../class_shape.html#a4feaa49afdf6c19764d939dc0bb2698d',1,'Shape::DrawGetSupportingFace()'],['../class_scaled_shape.html#a4768be2571bafce12be7fc759bb666af',1,'ScaledShape::DrawGetSupportingFace()'],['../class_rotated_translated_shape.html#a111ac2a8df9ae1a243f1eceda27a8d76',1,'RotatedTranslatedShape::DrawGetSupportingFace()'],['../class_convex_shape.html#ad53dad63ff9dccff4c3feb90d79091ae',1,'ConvexShape::DrawGetSupportingFace()'],['../class_compound_shape.html#ad881834415dfef9c84b044402818d7fd',1,'CompoundShape::DrawGetSupportingFace()']]], + ['drawline_53',['drawline',['../class_debug_renderer.html#acea9470f13a1d50b677e2aaaeb9eeaed',1,'DebugRenderer::DrawLine()'],['../class_debug_renderer_recorder.html#adac560af23095581dd49d670b7d608f5',1,'DebugRendererRecorder::DrawLine()']]], + ['drawlraconstraints_54',['DrawLRAConstraints',['../class_soft_body_motion_properties.html#a814e392c5f59ad3879f102f7576e79fe',1,'SoftBodyMotionProperties']]], + ['drawmarker_55',['DrawMarker',['../class_debug_renderer.html#a146eec1ac4bb44258fc748e66cd154ba',1,'DebugRenderer']]], + ['drawopencone_56',['DrawOpenCone',['../class_debug_renderer.html#ac2121da7fd301d74c83d4dc3291101e6',1,'DebugRenderer']]], + ['drawpath_57',['DrawPath',['../class_path_constraint_path.html#a666c1696bf4a1f468efb89a87ca7461b',1,'PathConstraintPath']]], + ['drawpie_58',['DrawPie',['../class_debug_renderer.html#a9bb950c4d28eb5130df08b3050dd5db8',1,'DebugRenderer']]], + ['drawplane_59',['DrawPlane',['../class_debug_renderer.html#a1478418243e18bf7ce002e35ff6706b7',1,'DebugRenderer']]], + ['drawpredictedbounds_60',['DrawPredictedBounds',['../class_soft_body_motion_properties.html#abf1d47bf116f2efc6d8d0cc7f5dac806',1,'SoftBodyMotionProperties']]], + ['drawrpm_61',['DrawRPM',['../class_vehicle_engine.html#a1b616470faf6ab7c46026706a7c708df',1,'VehicleEngine']]], + ['drawshrunkshape_62',['DrawShrunkShape',['../class_convex_hull_shape.html#ac286a6da6e3f7df5e7dc8fb507f80e2e',1,'ConvexHullShape']]], + ['drawskinconstraints_63',['DrawSkinConstraints',['../class_soft_body_motion_properties.html#ad7ecbec356136a9cb231fb0695a07720',1,'SoftBodyMotionProperties']]], + ['drawsphere_64',['DrawSphere',['../class_debug_renderer.html#a582b69ddbe6fe2481716729b6330422d',1,'DebugRenderer']]], + ['drawswingconelimits_65',['DrawSwingConeLimits',['../class_debug_renderer.html#ae7f33744765068114b22875784511e6d',1,'DebugRenderer']]], + ['drawswingpyramidlimits_66',['DrawSwingPyramidLimits',['../class_debug_renderer.html#ae56eecfee8d7539571edfe613c00b159',1,'DebugRenderer']]], + ['drawtaperedcylinder_67',['DrawTaperedCylinder',['../class_debug_renderer.html#a4ded1b55c66d08e643043680145d0dc8',1,'DebugRenderer']]], + ['drawtext3d_68',['drawtext3d',['../class_debug_renderer.html#a0caa614c01a9879eed46e55755884c75',1,'DebugRenderer::DrawText3D()'],['../class_debug_renderer_recorder.html#a2956edbe34418b7546424c68e9dc6132',1,'DebugRendererRecorder::DrawText3D()']]], + ['drawtriangle_69',['drawtriangle',['../class_debug_renderer.html#afc6b62590e5a26de8cbd98a29bf8b1a3',1,'DebugRenderer::DrawTriangle()'],['../class_debug_renderer_recorder.html#a4b0a137f2f193e8ce732be37ff906fab',1,'DebugRendererRecorder::DrawTriangle()'],['../class_debug_renderer_simple.html#a8fd3084fc71d7e361d8744bf90db7a1d',1,'DebugRendererSimple::DrawTriangle()']]], + ['drawunitsphere_70',['DrawUnitSphere',['../class_debug_renderer.html#af23920b42208da32b57c2de2c45de78f',1,'DebugRenderer']]], + ['drawvertexvelocities_71',['DrawVertexVelocities',['../class_soft_body_motion_properties.html#afe71edf0ec3dad256fffa93c845e866c',1,'SoftBodyMotionProperties']]], + ['drawvertices_72',['DrawVertices',['../class_soft_body_motion_properties.html#a064819f04932e34d238692905175a9d5',1,'SoftBodyMotionProperties']]], + ['drawvolumeconstraints_73',['DrawVolumeConstraints',['../class_soft_body_motion_properties.html#a8514cb206c911c1b6ecd39754fb49e33',1,'SoftBodyMotionProperties']]], + ['drawwirebox_74',['drawwirebox',['../class_debug_renderer.html#abbb732acdeee7ae2bb597e3b7abe01de',1,'DebugRenderer::DrawWireBox(const OrientedBox &inBox, ColorArg inColor)'],['../class_debug_renderer.html#a00aa83bcc27424dde91b6ee53962cd41',1,'DebugRenderer::DrawWireBox(RMat44Arg inMatrix, const AABox &inBox, ColorArg inColor)'],['../class_debug_renderer.html#ab53b82d3cf818165e290e21691271de0',1,'DebugRenderer::DrawWireBox(const AABox &inBox, ColorArg inColor)']]], + ['drawwirepolygon_75',['DrawWirePolygon',['../class_debug_renderer.html#aca22a303524616a95259d7ab3df65eb9',1,'DebugRenderer']]], + ['drawwiresphere_76',['DrawWireSphere',['../class_debug_renderer.html#aa2e758e772dd9b51ea778cb74265090e',1,'DebugRenderer']]], + ['drawwiretriangle_77',['DrawWireTriangle',['../class_debug_renderer.html#a54813e4e95f78cdfc22d938ba15bcb8d',1,'DebugRenderer']]], + ['drawwireunitsphere_78',['DrawWireUnitSphere',['../class_debug_renderer.html#a08387fe20ef6b38d160f97ec902072ce',1,'DebugRenderer']]], + ['drivetoposeusingkinematics_79',['drivetoposeusingkinematics',['../class_ragdoll.html#a5708fad69260914b0fdfd6d80a834d23',1,'Ragdoll::DriveToPoseUsingKinematics(const SkeletonPose &inPose, float inDeltaTime, bool inLockBodies=true)'],['../class_ragdoll.html#a1a25f99af9c3a3d8eb7a069143db34e6',1,'Ragdoll::DriveToPoseUsingKinematics(RVec3Arg inRootOffset, const Mat44 *inJointMatrices, float inDeltaTime, bool inLockBodies=true)']]], + ['drivetoposeusingmotors_80',['DriveToPoseUsingMotors',['../class_ragdoll.html#a367f16f5385eb377e5419d12457c22c6',1,'Ragdoll']]], + ['dump_81',['Dump',['../class_profiler.html#a4a8f82d68bd5c67cf7ad8259487bb821',1,'Profiler']]], + ['dvec3_82',['dvec3',['../class_d_vec3.html#a14bb3fa7ea76c4c32d2ff6066a8e0732',1,'DVec3::DVec3(const Double3 &inV)'],['../class_d_vec3.html#ac908a3c045ea6d465602de318ccc2423',1,'DVec3::DVec3(double inX, double inY, double inZ)'],['../class_d_vec3.html#a286758dc45b39340db99639276d229a6',1,'DVec3::DVec3(TypeArg inRHS)'],['../class_d_vec3.html#aab5b5eca15f3f129ff6781cb0e2c27a7',1,'DVec3::DVec3(Vec4Arg inRHS)'],['../class_d_vec3.html#aae9ec5d5349d1d8139cc4eb4943187f9',1,'DVec3::DVec3(Vec3Arg inRHS)'],['../class_d_vec3.html#ae4beefad0c345ffc3516f9f2dcb7abba',1,'DVec3::DVec3(const DVec3 &inRHS)=default'],['../class_d_vec3.html#a8dee0ba62485a3b2fe924f1fa582c269',1,'DVec3::DVec3()=default']]], + ['dynamiccast_83',['dynamiccast',['../_r_t_t_i_8h.html#ae90cb64879c34484002e2b1dffa6cfe3',1,'DynamicCast(const SrcType *inObject): RTTI.h'],['../_r_t_t_i_8h.html#a71969ae61cdfe78b730ae80bfde295b3',1,'DynamicCast(SrcType *inObject): RTTI.h'],['../_r_t_t_i_8h.html#ae21beea7a22545176b0ba9af79acb36c',1,'DynamicCast(const RefConst< SrcType > &inObject): RTTI.h'],['../_r_t_t_i_8h.html#a0fb0ad7ca393258307fd76c11cd3383c',1,'DynamicCast(const Ref< SrcType > &inObject): RTTI.h']]], + ['dynmatrix_84',['dynmatrix',['../class_dyn_matrix.html#a0cb3ea3a8ccc5abca8edbbe6b8d22031',1,'DynMatrix::DynMatrix(const DynMatrix &)=default'],['../class_dyn_matrix.html#a765a9a91db4ca8fd8789a9529809c478',1,'DynMatrix::DynMatrix(uint inRows, uint inCols)']]] +]; diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 000000000..6b8530036 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['edge_0',['edge',['../struct_soft_body_shared_settings_1_1_edge.html#a6330e512065ff11935b9fb0f04b5db6c',1,'SoftBodySharedSettings::Edge::Edge()'],['../class_convex_hull_builder_1_1_edge.html#a0d350bab8acf2ad5360554e87c2c5b0e',1,'ConvexHullBuilder::Edge::Edge()'],['../struct_soft_body_shared_settings_1_1_edge.html#a88c7b84c4d66a6bcfd19939c30c837ac',1,'SoftBodySharedSettings::Edge::Edge()']]], + ['eigenvaluesymmetric_1',['EigenValueSymmetric',['../_eigen_value_symmetric_8h.html#a63488e363acda8a1bd4cd3d297bf4d54',1,'EigenValueSymmetric.h']]], + ['ellipse_2',['Ellipse',['../class_ellipse.html#a35e3c1cc223333a5e227ea0ff9b120de',1,'Ellipse']]], + ['emplace_5fback_3',['emplace_back',['../class_array.html#aaae2b09589c5ac4cf96d98aa5df75f61',1,'Array::emplace_back()'],['../class_static_array.html#a80c134d64d82df7e26efc48dc629389f',1,'StaticArray::emplace_back()']]], + ['empty_4',['empty',['../class_array.html#a3184fd974ff46c9a1bccbc6428008c93',1,'Array::empty()'],['../class_static_array.html#a90462c290631eb3139ea41b91a14f99a',1,'StaticArray::empty()']]], + ['enablecollision_5',['enablecollision',['../class_group_filter_table.html#a6b25689191afbfdb272feb4e57df4035',1,'GroupFilterTable::EnableCollision()'],['../class_object_layer_pair_filter_table.html#a92530da6280163ab73c27304dd911167',1,'ObjectLayerPairFilterTable::EnableCollision()']]], + ['enableleancontroller_6',['EnableLeanController',['../class_motorcycle_controller.html#ac0d6c78cc5ee2dd850f535a972875df8',1,'MotorcycleController']]], + ['enableleansteeringlimit_7',['EnableLeanSteeringLimit',['../class_motorcycle_controller.html#a70f9325f8dde2c3ef76148f45332fc1a',1,'MotorcycleController']]], + ['encapsulate_8',['encapsulate',['../class_a_a_box.html#a83d2f26869e8870c2d6dfd41804d5438',1,'AABox::Encapsulate(const AABox &inRHS)'],['../class_a_a_box.html#af29df5ecf944d7ec92eea7d016e49320',1,'AABox::Encapsulate(const Triangle &inRHS)'],['../class_a_a_box.html#a88aa8b06db963335016bcb124091feec',1,'AABox::Encapsulate(const VertexList &inVertices, const IndexedTriangle &inTriangle)'],['../class_a_a_box.html#addccf5b511ece1be10dbae4818d4aaa0',1,'AABox::Encapsulate(Vec3Arg inPos)']]], + ['encapsulatepoint_9',['EncapsulatePoint',['../class_sphere.html#ae662c4e0d3f338fe5c5bfa844aaa22ea',1,'Sphere']]], + ['encodingcontext_10',['EncodingContext',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#a1a7a9c8bdd917bf0e4b95a88694c8630',1,'TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext']]], + ['end_11',['end',['../class_static_array.html#a26023a8948ef582b35b2d808f95915b4',1,'StaticArray::end()'],['../class_static_array.html#acc8368b80a4756c0ea7f5354dad6b2df',1,'StaticArray::end() const'],['../class_array.html#a660a72e00524f911c812c9c69206c75f',1,'Array::end()'],['../class_lock_free_hash_map.html#af90c81d993eb139aded4c89bff98998d',1,'LockFreeHashMap::end()'],['../class_array.html#aeb0fa5a613a57fab1931331f95c61908',1,'Array::end()']]], + ['endframe_12',['EndFrame',['../class_debug_renderer_recorder.html#a1beee4021111b00774e99dd134716b44',1,'DebugRendererRecorder']]], + ['ensureminimaledgelength_13',['EnsureMinimalEdgeLength',['../class_a_a_box.html#a377eb9ef3dfdd76f62d0faf6e0a54525',1,'AABox']]], + ['ensurewpositive_14',['EnsureWPositive',['../class_quat.html#a9f563ca8c8a8b71a0aa340d12080c2ef',1,'Quat']]], + ['epaconvexhullbuilder_15',['EPAConvexHullBuilder',['../class_e_p_a_convex_hull_builder.html#ae55b89fd27a0cab9a97a1475245dec9d',1,'EPAConvexHullBuilder']]], + ['erase_16',['erase',['../class_array.html#ae826452f2c7b1e7fa97cb5ad6aaf17c8',1,'Array::erase(const_iterator inIter)'],['../class_array.html#a6ad56d9150990119cd932d750b06f83d',1,'Array::erase(const_iterator inBegin, const_iterator inEnd)'],['../class_static_array.html#a61742c51d0d5ab0a7a4593e1f907bc2b',1,'StaticArray::erase(const_iterator inIter)'],['../class_static_array.html#a8160d86021d1033d74e9e434458517ef',1,'StaticArray::erase(const_iterator inBegin, const_iterator inEnd)']]], + ['estimatecollisionresponse_17',['estimatecollisionresponse',['../_estimate_collision_response_8h.html#aca51bbbf4aaefaa7850fd9b0365b031c',1,'EstimateCollisionResponse(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, CollisionEstimationResult &outResult, float inCombinedFriction, float inCombinedRestitution, float inMinVelocityForRestitution=1.0f, uint inNumIterations=10): EstimateCollisionResponse.cpp'],['../_estimate_collision_response_8cpp.html#a64da30a754090f2e72e7cb37b55b035f',1,'EstimateCollisionResponse(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, CollisionEstimationResult &outResult, float inCombinedFriction, float inCombinedRestitution, float inMinVelocityForRestitution, uint inNumIterations): EstimateCollisionResponse.cpp']]], + ['execute_18',['Execute',['../class_job_system_1_1_job.html#a51718f809ac43edfcd1a3ae87acc2bd4',1,'JobSystem::Job']]], + ['expand4byte0_19',['Expand4Byte0',['../class_u_vec4.html#a4e1d53e419791f3a1d73e96fe905cb9a',1,'UVec4']]], + ['expand4byte12_20',['Expand4Byte12',['../class_u_vec4.html#ab90115fc1e9f272b053cd5e593eefecd',1,'UVec4']]], + ['expand4byte4_21',['Expand4Byte4',['../class_u_vec4.html#a43c0348b32fe2a8a8a3fe3e82adbf4e1',1,'UVec4']]], + ['expand4byte8_22',['Expand4Byte8',['../class_u_vec4.html#ab576b5e89a741b942e5a0eee30221fff',1,'UVec4']]], + ['expand4uint16hi_23',['Expand4Uint16Hi',['../class_u_vec4.html#ac7ecdcc40c2437edb94d824902084471',1,'UVec4']]], + ['expand4uint16lo_24',['Expand4Uint16Lo',['../class_u_vec4.html#a231db23152af3fc49272a7842432b2d8',1,'UVec4']]], + ['expandby_25',['ExpandBy',['../class_a_a_box.html#a7023c1c28f073fa0d14ecee0f5fc8ee8',1,'AABox']]], + ['extendedupdate_26',['ExtendedUpdate',['../class_character_virtual.html#ae03c43c12e8eb6496b8c8044c70b591f',1,'CharacterVirtual']]] +]; diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 000000000..5fa6bfb14 --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['face_0',['face',['../struct_soft_body_shared_settings_1_1_face.html#a5206e7ff17d5f1912738717c8527f944',1,'SoftBodySharedSettings::Face::Face(uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inMaterialIndex=0)'],['../struct_soft_body_shared_settings_1_1_face.html#a0eeac3e099f764d8b9697888b1603aa1',1,'SoftBodySharedSettings::Face::Face()=default']]], + ['fetchnextbatch_1',['fetchnextbatch',['../class_large_island_splitter.html#a3f35114156b5519b85f82988fe3944b9',1,'LargeIslandSplitter::FetchNextBatch()'],['../class_large_island_splitter_1_1_splits.html#a6757c784f684e5fb2ac4ce79f3c0a2f0',1,'LargeIslandSplitter::Splits::FetchNextBatch()']]], + ['finalize_2',['finalize',['../class_node_codec_quad_tree_half_float_1_1_encoding_context.html#a744d6e02ea549980927d888129f8fc79',1,'NodeCodecQuadTreeHalfFloat::EncodingContext::Finalize()'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#a795673261b70c6dcf35cc2b95cc6e901',1,'TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::Finalize()'],['../class_calculate_solver_steps.html#a589b3b000f0552ebbaf507f133d73046',1,'CalculateSolverSteps::Finalize()'],['../class_island_builder.html#af8e0ac69b3e021ab24317116ded1c622',1,'IslandBuilder::Finalize()']]], + ['finalizecontactcacheandcallcontactpointremovedcallbacks_3',['FinalizeContactCacheAndCallContactPointRemovedCallbacks',['../class_contact_constraint_manager.html#a3b9cf92154e49319463950b66e692f56',1,'ContactConstraintManager']]], + ['find_4',['find',['../class_factory.html#a87756d7feaaeabb5cf29b95266ea418b',1,'Factory::Find(const char *inName)'],['../class_factory.html#a962c9d57a3bce85b649c3ebd1259b9a0',1,'Factory::Find(uint32 inHash)'],['../class_lock_free_hash_map.html#abf0f1e866eba5975400db74cc3da6913',1,'LockFreeHashMap::Find()']]], + ['findcollidingpairs_5',['findcollidingpairs',['../class_quad_tree.html#a1752afb7a82b6ca130cfbad4f4f02c4e',1,'QuadTree::FindCollidingPairs()'],['../class_broad_phase_quad_tree.html#af5fd975a61944a35c8ea2ea1daaa22de',1,'BroadPhaseQuadTree::FindCollidingPairs()'],['../class_broad_phase_brute_force.html#a2d0f339251687a983a58b516350e93ac',1,'BroadPhaseBruteForce::FindCollidingPairs()'],['../class_broad_phase.html#aecd92cc792c15c624b97eeeac11cc468',1,'BroadPhase::FindCollidingPairs()']]], + ['findfacingtriangle_6',['FindFacingTriangle',['../class_e_p_a_convex_hull_builder.html#aba8a5ac94c67e4c96e5eb533dfca3a83',1,'EPAConvexHullBuilder']]], + ['findroot_7',['FindRoot',['../_find_root_8h.html#a3bec219d038a3c84a22b1c07b49b9eca',1,'FindRoot.h']]], + ['finishconstraintbuffer_8',['FinishConstraintBuffer',['../class_contact_constraint_manager.html#a08550dcab7e85e7f82fcc0c7658baa32',1,'ContactConstraintManager']]], + ['finishvertex_9',['FinishVertex',['../class_collide_soft_body_vertices_vs_triangles.html#ace145cd2baa9706d2b2ebb786db53066',1,'CollideSoftBodyVerticesVsTriangles']]], + ['fixedconstraint_10',['FixedConstraint',['../class_fixed_constraint.html#a570a3365a0a9e3017075d5169cf3344c',1,'FixedConstraint']]], + ['fixinvalidscales_11',['FixInvalidScales',['../class_physics_scene.html#a5d76aa6b4a1c9166bc905b13f99faabe',1,'PhysicsScene']]], + ['float2_12',['float2',['../class_float2.html#a31453e22a3a71b53b16f33c8ea050fa3',1,'Float2::Float2()=default'],['../class_float2.html#a242b0c3c7ee3f270ad64a0a3ee6e0286',1,'Float2::Float2(const Float2 &inRHS)=default'],['../class_float2.html#abb998c59ebedddb6fe8742b7e7f8e990',1,'Float2::Float2(float inX, float inY)']]], + ['float3_13',['float3',['../class_float3.html#aba5b9d056afa088269bfe243c44380b7',1,'Float3::Float3()=default'],['../class_float3.html#ae71f5544521095ffdeed2109dbf54d96',1,'Float3::Float3(const Float3 &inRHS)=default'],['../class_float3.html#a4d2277dc1efc95eb284c72c1313809fc',1,'Float3::Float3(float inX, float inY, float inZ)']]], + ['float4_14',['float4',['../class_float4.html#a541c6d53368a661afb71418ce24776e4',1,'Float4::Float4(const Float4 &inRHS)=default'],['../class_float4.html#a767b3a966085ef9e5a0909df91cee272',1,'Float4::Float4(float inX, float inY, float inZ, float inW)'],['../class_float4.html#ad5656578ebf1056a5763c1d5c33dd75c',1,'Float4::Float4()=default']]], + ['flush_15',['Flush',['../class_internal_edge_removing_collector.html#a33af5c7be55c31c27215b2bffd7d1428',1,'InternalEdgeRemovingCollector']]], + ['forceearlyout_16',['ForceEarlyOut',['../class_collision_collector.html#a04a9260170d7c96389b50c6f6843c8b5',1,'CollisionCollector']]], + ['framesync_17',['framesync',['../class_broad_phase.html#a4772ae4d99f16342a494b7c1e0066d8d',1,'BroadPhase::FrameSync()'],['../class_broad_phase_quad_tree.html#aed698682cac2d4b1ab94dcd65ccd5ebf',1,'BroadPhaseQuadTree::FrameSync()']]], + ['free_18',['free',['../class_temp_allocator.html#a1d9399cbf93c253a7f03d8ffea249bfe',1,'TempAllocator::Free()'],['../class_temp_allocator_impl.html#aa7b2ea67b67c57c776d4c2a415b430ba',1,'TempAllocatorImpl::Free()'],['../class_temp_allocator_malloc.html#a03b9827f7300d701f22d6ca53ba9d686',1,'TempAllocatorMalloc::Free()'],['../class_temp_allocator_impl_with_malloc_fallback.html#a2cdead10d53265be2316934e55684b29',1,'TempAllocatorImplWithMallocFallback::Free()'],['../_memory_8cpp.html#a186d7d4171081fcb2fe0434d2267bf39',1,'Free(): Memory.cpp']]], + ['freebody_19',['FreeBody',['../class_body_manager.html#ac9b3fea305ee74fb2cb1d70d4773aee0',1,'BodyManager']]], + ['freejob_20',['freejob',['../class_job_system.html#aa74329d956a01e3f2f219ea22bdc5097',1,'JobSystem::FreeJob()'],['../class_job_system_single_threaded.html#abb23fc08db8c653059c7ab32e44fd7fd',1,'JobSystemSingleThreaded::FreeJob()'],['../class_job_system_thread_pool.html#af916eac26591613c671484a3b60ab047',1,'JobSystemThreadPool::FreeJob()']]], + ['freetriangle_21',['freetriangle',['../class_e_p_a_convex_hull_builder.html#a8a5be413b034888eeb3ccc384e1ca9ec',1,'EPAConvexHullBuilder::FreeTriangle()'],['../class_e_p_a_convex_hull_builder_1_1_triangle_factory.html#a9a830ace866a248b1238eed4157e8925',1,'EPAConvexHullBuilder::TriangleFactory::FreeTriangle()']]], + ['fromfloat_22',['FromFloat',['../namespace_half_float_conversion.html#a65b0aba81626b49a45fb9ac238c04d2d',1,'HalfFloatConversion']]], + ['fromfloatfallback_23',['FromFloatFallback',['../namespace_half_float_conversion.html#af81e63a2dc6f5cdfeb150d4dab3fdcbc',1,'HalfFloatConversion']]], + ['fromhandle_24',['FromHandle',['../class_lock_free_hash_map.html#a0705a68e432c61be72d5f6fdfffb2d85',1,'LockFreeHashMap']]], + ['frommatrix_25',['FromMatrix',['../class_skeletal_animation_1_1_joint_state.html#a1481a144208ed55cecd270be18ff0744',1,'SkeletalAnimation::JointState']]], + ['fromoffset_26',['FromOffset',['../class_l_f_h_m_allocator.html#abcf9394d71567a53088ce79cf96ed0e1',1,'LFHMAllocator']]], + ['fromphysicssystem_27',['FromPhysicsSystem',['../class_physics_scene.html#a1d9c48d1813a7109550be1b5f8d94c20',1,'PhysicsScene']]], + ['fromsettings_28',['FromSettings',['../struct_compound_shape_1_1_sub_shape.html#a2ea825bfb79c5d059768e60d7b8997d2',1,'CompoundShape::SubShape']]], + ['front_29',['front',['../class_array.html#ad8c3916e62ff98cbe99f94be4dbaeb5a',1,'Array::front() const'],['../class_array.html#aed0c6709d99c58e1fa69467d44b7c933',1,'Array::front()'],['../class_static_array.html#aa0626580d53d352633f0a1f5af5ecb12',1,'StaticArray::front() const'],['../class_static_array.html#a519467de065745ac462b4bb3878ef8a3',1,'StaticArray::front()']]] +]; diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 000000000..85c0b7e4d --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,517 @@ +var searchData= +[ + ['gaussianelimination_0',['GaussianElimination',['../_gaussian_elimination_8h.html#a292d56457a5c67858f083798c34b111c',1,'GaussianElimination.h']]], + ['gearconstraint_1',['GearConstraint',['../class_gear_constraint.html#a0eedf414f9aa01e1ceab2a400c2b2a02',1,'GearConstraint']]], + ['geometry_2',['geometry',['../class_debug_renderer_1_1_geometry.html#ab8b592353d4dc5893906a109bfaf7a5c',1,'DebugRenderer::Geometry::Geometry(const AABox &inBounds)'],['../class_debug_renderer_1_1_geometry.html#adbeec8d400a76ce450aa03945fb3e68f',1,'DebugRenderer::Geometry::Geometry(const Batch &inBatch, const AABox &inBounds)']]], + ['get_3',['get',['../class_byte_buffer.html#a502a857a7380d4ef9cdf880563a426ef',1,'ByteBuffer::Get(size_t inPosition)'],['../class_byte_buffer.html#afc33bc408efa8e38051debb2c4f64aa8',1,'ByteBuffer::Get(size_t inPosition) const'],['../class_result.html#ab3d845db638a6a51467760867bfc472a',1,'Result::Get()'],['../class_fixed_size_free_list.html#afcfce9ec76b8df6291beac70ab699080',1,'FixedSizeFreeList::Get(uint32 inObjectIndex) const'],['../class_fixed_size_free_list.html#accd9130a85781885d0d5f669ce0a86f1',1,'FixedSizeFreeList::Get(uint32 inObjectIndex)']]], + ['get_5fallocator_4',['get_allocator',['../class_array.html#ae5fb070c8068c0ac54d5c7f62d8f39dc',1,'Array::get_allocator()'],['../class_array.html#aa786807555ceba5b3ba76839aff2a92b',1,'Array::get_allocator() const']]], + ['getaccumulatedforce_5',['getaccumulatedforce',['../class_motion_properties.html#ab2db20476c9ab24b796a9f5877caaea5',1,'MotionProperties::GetAccumulatedForce()'],['../class_body.html#ad6c366c23710a8f103f6504cfccccc93',1,'Body::GetAccumulatedForce() const']]], + ['getaccumulatedtorque_6',['getaccumulatedtorque',['../class_body.html#a9294deeff168fbb210f24f25e063fb38',1,'Body::GetAccumulatedTorque()'],['../class_motion_properties.html#a73cef0ab26c9bc15a2908e632c953bc2',1,'MotionProperties::GetAccumulatedTorque()']]], + ['getactivebodies_7',['getactivebodies',['../class_body_manager.html#aae54df1753149fbac33cb8ea6f930da7',1,'BodyManager::GetActiveBodies()'],['../class_physics_system.html#aac0c682798c1fc5c78977b0dc4b24b7d',1,'PhysicsSystem::GetActiveBodies()']]], + ['getactivebodiesunsafe_8',['getactivebodiesunsafe',['../class_body_manager.html#ac646f95e699a7d4525d65407ee3bea69',1,'BodyManager::GetActiveBodiesUnsafe()'],['../class_physics_system.html#ae3f5ce308a831074e1e0fff453862584',1,'PhysicsSystem::GetActiveBodiesUnsafe()']]], + ['getactiveconstraints_9',['GetActiveConstraints',['../class_constraint_manager.html#a6620266366dc35c2bf3877530a0d0c2a',1,'ConstraintManager']]], + ['getactivecontacts_10',['GetActiveContacts',['../class_character_virtual.html#a2fcecdf5b3e0f584f2bb7ec5a128dbe6',1,'CharacterVirtual']]], + ['getaffectedbodies_11',['GetAffectedBodies',['../class_contact_constraint_manager.html#a81dea14ac1bd33f74a07085690095403',1,'ContactConstraintManager']]], + ['getallbodiesmutexmask_12',['getallbodiesmutexmask',['../class_body_manager.html#a4e54107c92d7ac62098e267ab8d16eb2',1,'BodyManager::GetAllBodiesMutexMask()'],['../class_body_lock_interface.html#a76bee9cac091824dea84407a94a557f6',1,'BodyLockInterface::GetAllBodiesMutexMask()']]], + ['getallclasses_13',['GetAllClasses',['../class_factory.html#aa67bdc2e09c649caf997ffbe9ce32fa5',1,'Factory']]], + ['getallkeyvalues_14',['GetAllKeyValues',['../class_lock_free_hash_map.html#a483d330f8722f8ad6f6398b1d4d81653',1,'LockFreeHashMap']]], + ['getallocator_15',['GetAllocator',['../class_s_t_l_temp_allocator.html#ae25b34d6dc7cb58c9108f4ba197353f2',1,'STLTempAllocator']]], + ['getalloweddofs_16',['GetAllowedDOFs',['../class_motion_properties.html#ae2bc5e1e111514783c9df29987815516',1,'MotionProperties']]], + ['getallowsleeping_17',['getallowsleeping',['../class_body.html#a1de301b3077fe2ae6339b910573ef3c6',1,'Body::GetAllowSleeping()'],['../class_motion_properties.html#ae85a09814d25c0550eb408d3798e7f08',1,'MotionProperties::GetAllowSleeping() const']]], + ['getangulardamping_18',['GetAngularDamping',['../class_motion_properties.html#a778022ed795539ac55eb26f7bd4080e6',1,'MotionProperties']]], + ['getangulardofsmask_19',['GetAngularDOFsMask',['../class_motion_properties.html#ae0c08282aaf3b1a38cd958c32840e329',1,'MotionProperties']]], + ['getangularvelocity_20',['getangularvelocity',['../class_motion_properties.html#a66348339a05a43b730e1591273aace18',1,'MotionProperties::GetAngularVelocity()'],['../class_vehicle_engine.html#ae6735223f4b1d1fc898309e671504731',1,'VehicleEngine::GetAngularVelocity()'],['../class_wheel.html#ad2da83076a68424179c3928b123c086c',1,'Wheel::GetAngularVelocity()'],['../class_body_interface.html#a0e14c414d534c2eefc77b218bb36c197',1,'BodyInterface::GetAngularVelocity()'],['../class_body.html#adb1bb49db094ac2ef7c4951d07ba8417',1,'Body::GetAngularVelocity()']]], + ['getanimatedjoints_21',['getanimatedjoints',['../class_skeletal_animation.html#a97437c1bae4626bb0c1e289db73dd712',1,'SkeletalAnimation::GetAnimatedJoints() const'],['../class_skeletal_animation.html#a364b26f699464be275b70b5cf9f4f76c',1,'SkeletalAnimation::GetAnimatedJoints()']]], + ['getapplygyroscopicforce_22',['GetApplyGyroscopicForce',['../class_body.html#af7a0aaf1d49d9be5ffb7d6f195d3c74a',1,'Body']]], + ['getattribute_23',['GetAttribute',['../class_r_t_t_i.html#af400a619d0e542926dba2f0a557bcd4b',1,'RTTI']]], + ['getattributecount_24',['GetAttributeCount',['../class_r_t_t_i.html#a0fbba51204c3fbdef9a3ca57ed1951e7',1,'RTTI']]], + ['getaxisangle_25',['GetAxisAngle',['../class_quat.html#a618a8eb64122263b8c64109f03ac47b5',1,'Quat']]], + ['getaxisx_26',['getaxisx',['../class_mat44.html#aa71942f9a684cf2e0e55f8c9ba8f5b99',1,'Mat44::GetAxisX()'],['../class_d_mat44.html#ab5982c4a0d185632cb8a734741b74f69',1,'DMat44::GetAxisX() const']]], + ['getaxisy_27',['getaxisy',['../class_d_mat44.html#aea9981dbffac1c05f195bf1ad1391523',1,'DMat44::GetAxisY()'],['../class_mat44.html#a03967bba6efbe4a03e6f1b888e1436a7',1,'Mat44::GetAxisY()']]], + ['getaxisz_28',['getaxisz',['../class_d_mat44.html#ae8a76e5a80b166da697b2581567ff5af',1,'DMat44::GetAxisZ()'],['../class_mat44.html#a19fc28cb3d425e8b4f462c939bc595fa',1,'Mat44::GetAxisZ()']]], + ['getbarycentriccoordinates_29',['getbarycentriccoordinates',['../namespace_closest_point.html#ae01251b466c3944d7c9cc6a9e01ce915',1,'ClosestPoint::GetBaryCentricCoordinates(Vec3Arg inA, Vec3Arg inB, Vec3Arg inC, float &outU, float &outV, float &outW)'],['../namespace_closest_point.html#a194f91c80641bfd1071c5316705a2c85',1,'ClosestPoint::GetBaryCentricCoordinates(Vec3Arg inA, Vec3Arg inB, float &outU, float &outV)']]], + ['getbaseclass_30',['GetBaseClass',['../class_r_t_t_i.html#a381b52d75fb6242d201da76ff685412c',1,'RTTI']]], + ['getbaseclasscount_31',['GetBaseClassCount',['../class_r_t_t_i.html#a99d67628c5549e56c77ba1ef5294d64f',1,'RTTI']]], + ['getbias_32',['GetBias',['../class_spring_part.html#a42a39d96e15ae84419256c35067e12ad',1,'SpringPart']]], + ['getblocksize_33',['GetBlockSize',['../class_height_field_shape.html#ad67c93d5bb0e12774afb528509767a7e',1,'HeightFieldShape']]], + ['getbodies_34',['getbodies',['../class_body_manager.html#ac6c6a208195a666e62fc3bd9c4456bfa',1,'BodyManager::GetBodies()'],['../class_physics_scene.html#a181babf1dcea362ab2077564b0f98b97',1,'PhysicsScene::GetBodies()'],['../class_physics_scene.html#aeceb248f05ae64111f2d05f223cfbeed',1,'PhysicsScene::GetBodies() const'],['../class_body_manager.html#ace4bb400f2a6b4f17e04aa10134dee4f',1,'BodyManager::GetBodies()'],['../class_physics_system.html#a01018de422e55bc7e23a17f318ecdd1f',1,'PhysicsSystem::GetBodies()']]], + ['getbodiesinisland_35',['GetBodiesInIsland',['../class_island_builder.html#ace0201e247b5fcb9639bba23b385e718',1,'IslandBuilder']]], + ['getbody_36',['getbody',['../class_body_lock_base.html#aa79bd3d8f64b4f92a2744737eddc6e59',1,'BodyLockBase::GetBody()'],['../class_body_manager.html#a2ac7db2095cb425b04bdad508e2acc4f',1,'BodyManager::GetBody()'],['../class_body_lock_multi_base.html#a4598ff93b693a8679203b4fc72965786',1,'BodyLockMultiBase::GetBody()'],['../class_body_manager.html#ae89bc88048a56cbf21d70e78ec142a18',1,'BodyManager::GetBody()']]], + ['getbody1_37',['GetBody1',['../class_two_body_constraint.html#ae09dc01720e01f71e480f2ce3da32918',1,'TwoBodyConstraint']]], + ['getbody1id_38',['GetBody1ID',['../class_sub_shape_i_d_pair.html#a990a2912033187dda623e9ed0c265f9b',1,'SubShapeIDPair']]], + ['getbody2_39',['GetBody2',['../class_two_body_constraint.html#a9ede1df27455ff0177a7a4501bf3342a',1,'TwoBodyConstraint']]], + ['getbody2id_40',['GetBody2ID',['../class_sub_shape_i_d_pair.html#af3c86ba7be149254f34e9244e83e8914',1,'SubShapeIDPair']]], + ['getbodyactivationlistener_41',['getbodyactivationlistener',['../class_body_manager.html#a3bb9c3e62332a39fd9ac1eac4c12ca52',1,'BodyManager::GetBodyActivationListener()'],['../class_physics_system.html#a8fd2362a6a9377d74902653f42e83170',1,'PhysicsSystem::GetBodyActivationListener()']]], + ['getbodycount_42',['GetBodyCount',['../class_ragdoll.html#a6395143c1655e5272eccdf0895d57c53',1,'Ragdoll']]], + ['getbodycreationsettings_43',['GetBodyCreationSettings',['../class_body.html#aad1ce1d84e95cab008fb239465b3496f',1,'Body']]], + ['getbodyfilter_44',['GetBodyFilter',['../class_vehicle_collision_tester.html#a939d34aac9aaf7f481c4959784597605',1,'VehicleCollisionTester']]], + ['getbodyid_45',['getbodyid',['../class_character.html#a3d54e80af16da4731c1ec83f2a2f06f2',1,'Character::GetBodyID()'],['../class_ragdoll.html#ac57cdfcd77dc9dce4679fcb45012083a',1,'Ragdoll::GetBodyID(int inBodyIndex) const']]], + ['getbodyids_46',['getbodyids',['../class_ragdoll.html#a98603396696b276256ffe74283a26fca',1,'Ragdoll::GetBodyIDs()'],['../class_body_manager.html#aa65000b18f18a1d02bf432446dff7c05',1,'BodyManager::GetBodyIDs()']]], + ['getbodyindextoconstraintindex_47',['GetBodyIndexToConstraintIndex',['../class_ragdoll_settings.html#a0d32abac6067ec311bb89c65f1fd6e3e',1,'RagdollSettings']]], + ['getbodyindicesforconstraintindex_48',['GetBodyIndicesForConstraintIndex',['../class_ragdoll_settings.html#abf5abd1cf5ac17cd649c7ad69366b63e',1,'RagdollSettings']]], + ['getbodyinterface_49',['getbodyinterface',['../class_physics_system.html#a35474557b977d2a03e7b5e7c920bf2ee',1,'PhysicsSystem::GetBodyInterface() const'],['../class_physics_system.html#a579bc839c332cf3523c3eb2b03c98e3e',1,'PhysicsSystem::GetBodyInterface()']]], + ['getbodyinterfacenolock_50',['getbodyinterfacenolock',['../class_physics_system.html#a55216f4cfc718d052548baac4ba098d7',1,'PhysicsSystem::GetBodyInterfaceNoLock() const'],['../class_physics_system.html#a9da48916fec4a9b9af533a84785aa455',1,'PhysicsSystem::GetBodyInterfaceNoLock()']]], + ['getbodylockinterface_51',['GetBodyLockInterface',['../class_physics_system.html#a3ec396058f674026726e59dc7ad20609',1,'PhysicsSystem']]], + ['getbodylockinterfacenolock_52',['GetBodyLockInterfaceNoLock',['../class_physics_system.html#ad381ea5bd5568b20ae05c1229dbff49e',1,'PhysicsSystem']]], + ['getbodystats_53',['getbodystats',['../class_body_manager.html#a63c55f1d5d3ed30c4aa6a19ad14713ac',1,'BodyManager::GetBodyStats()'],['../class_physics_system.html#ad826f67ef4fd3a1457cf9d8d6892d5cb',1,'PhysicsSystem::GetBodyStats()']]], + ['getbodytype_54',['getbodytype',['../class_body.html#a864a31f176da8e3329f83cb65c23f3d6',1,'Body::GetBodyType()'],['../class_body_interface.html#abeb48122f4f459d13cea20f1f4dbaf07',1,'BodyInterface::GetBodyType()']]], + ['getbottomradius_55',['GetBottomRadius',['../class_tapered_cylinder_shape.html#aaee64d4f2c1c12cb97908be7872dbd66',1,'TaperedCylinderShape']]], + ['getbounds_56',['getbounds',['../class_broad_phase.html#ac1c7ee25257e8b1c1e89f6bd610d77fb',1,'BroadPhase::GetBounds()'],['../class_broad_phase_brute_force.html#a64c0008d13703a25a0bfb3f3d1556f5d',1,'BroadPhaseBruteForce::GetBounds()'],['../class_broad_phase_quad_tree.html#ab985dcdd61af886d4bcfbb3858fb1b1d',1,'BroadPhaseQuadTree::GetBounds()'],['../class_quad_tree.html#a809502262f3bd9d11318763758ae6e7e',1,'QuadTree::GetBounds()'],['../class_physics_system.html#a7f87f05d94f62054d6f3e975b613d2f0',1,'PhysicsSystem::GetBounds()']]], + ['getbrakeinput_57',['getbrakeinput',['../class_tracked_vehicle_controller.html#a3643a17beaee68e91eb2777b8a6639c7',1,'TrackedVehicleController::GetBrakeInput()'],['../class_wheeled_vehicle_controller.html#aa087571387d316eee2e8ed7fb500b291',1,'WheeledVehicleController::GetBrakeInput()']]], + ['getbroadphaselayer_58',['getbroadphaselayer',['../class_broad_phase_layer_interface_table.html#a0606a1dec4b344e326ed643f97929d2f',1,'BroadPhaseLayerInterfaceTable::GetBroadPhaseLayer()'],['../class_broad_phase_layer_interface_mask.html#a75300021e8d32e840ec8eb0d4a292b5a',1,'BroadPhaseLayerInterfaceMask::GetBroadPhaseLayer()'],['../class_broad_phase_layer_interface.html#a5007c9b9beab5c16af36e89b48cd06cb',1,'BroadPhaseLayerInterface::GetBroadPhaseLayer()'],['../class_body.html#a4b9b625f789caa55cc9a3c7663644011',1,'Body::GetBroadPhaseLayer()']]], + ['getbroadphaselayerfilter_59',['GetBroadPhaseLayerFilter',['../class_vehicle_collision_tester.html#aab2fe07b1c74654b925b64409d5a6210',1,'VehicleCollisionTester']]], + ['getbroadphaselayername_60',['getbroadphaselayername',['../class_broad_phase_layer_interface.html#af599bec360da5437bfc74cb0fd749225',1,'BroadPhaseLayerInterface::GetBroadPhaseLayerName()'],['../class_broad_phase_layer_interface_mask.html#aaf3574120e2a6941af759af7feec9746',1,'BroadPhaseLayerInterfaceMask::GetBroadPhaseLayerName()'],['../class_broad_phase_layer_interface_table.html#ac85f1b6915faa433719b8d6a28886428',1,'BroadPhaseLayerInterfaceTable::GetBroadPhaseLayerName()']]], + ['getbroadphasequery_61',['GetBroadPhaseQuery',['../class_physics_system.html#a3d621cc72c69b73cdcc13bdb3b0dddc4',1,'PhysicsSystem']]], + ['getbuffer_62',['getbuffer',['../class_a_a_b_b_tree_to_buffer.html#a841bb385899da6eb30c41c225ff61ddf',1,'AABBTreeToBuffer::GetBuffer() const'],['../class_a_a_b_b_tree_to_buffer.html#acae333f2766987a53f64a7beea67904b',1,'AABBTreeToBuffer::GetBuffer()']]], + ['getcenter_63',['getcenter',['../class_a_a_box.html#ae39e3c3fee87093735787b4c3fd58a8d',1,'AABox::GetCenter()'],['../class_sphere.html#a58cd6715b3ab45d6ad8baaa369f31fd1',1,'Sphere::GetCenter()']]], + ['getcenterofmass_64',['getcenterofmass',['../class_offset_center_of_mass_shape.html#a9479ac77a9f53c5664f85b7a93135d95',1,'OffsetCenterOfMassShape::GetCenterOfMass()'],['../class_convex_hull_shape.html#a0f05c53d66e43a401aca34de00d700c1',1,'ConvexHullShape::GetCenterOfMass()'],['../class_compound_shape.html#aeec4b7c1a31225a01b314f2528f27b24',1,'CompoundShape::GetCenterOfMass()'],['../class_decorated_shape.html#aa17a9fb29ce78eafc01cc8140d754dd6',1,'DecoratedShape::GetCenterOfMass()'],['../class_soft_body_shape.html#ade435c48ffcf2c054b84dedd23e87148',1,'SoftBodyShape::GetCenterOfMass()'],['../class_tapered_capsule_shape.html#a66f2f00aa6cbbc1fe683d15993c3e736',1,'TaperedCapsuleShape::GetCenterOfMass()'],['../class_shape.html#a7e34b0626a40c31db0b2a761922adb1a',1,'Shape::GetCenterOfMass()'],['../class_scaled_shape.html#af9e8b8bdbc341d1b0f0caa497505d0f7',1,'ScaledShape::GetCenterOfMass()'],['../class_rotated_translated_shape.html#a7d7b6b0edc6dd89125cab13d77eb3585',1,'RotatedTranslatedShape::GetCenterOfMass()'],['../class_tapered_cylinder_shape.html#aeb0b2e5422e70ba7e8c707f3445e960a',1,'TaperedCylinderShape::GetCenterOfMass()']]], + ['getcenterofmassandvolume_65',['GetCenterOfMassAndVolume',['../class_convex_hull_builder.html#a4e3fbe324250233f9a3d527004d08c09',1,'ConvexHullBuilder']]], + ['getcenterofmassposition_66',['getcenterofmassposition',['../class_character.html#a9c169077da6b5931e1f0bb2431e8f02f',1,'Character::GetCenterOfMassPosition()'],['../class_character_virtual.html#a44dfb8aa6d88860b6a4ff094d211871e',1,'CharacterVirtual::GetCenterOfMassPosition()'],['../class_body_interface.html#a2d3c9157b54b0dad58af5d90056a1334',1,'BodyInterface::GetCenterOfMassPosition()'],['../class_body.html#a10bf9dd2b7c39a93568e8eb3ada8da2a',1,'Body::GetCenterOfMassPosition() const']]], + ['getcenterofmasstransform_67',['getcenterofmasstransform',['../class_body.html#a9431bfa66a018714074fe149c7a65ac5',1,'Body::GetCenterOfMassTransform()'],['../class_body_interface.html#a4a0420af0583a689216522fb1c367edc',1,'BodyInterface::GetCenterOfMassTransform()'],['../class_character_virtual.html#aad9788892410b982d43bbd34ef8a016c',1,'CharacterVirtual::GetCenterOfMassTransform()'],['../class_transformed_shape.html#afba760db30ccff8c59547cce78bd97a4',1,'TransformedShape::GetCenterOfMassTransform()']]], + ['getcentroid_68',['getcentroid',['../class_indexed_triangle_no_material.html#a279fe96ec89d38fe6eaafa515ff27cb1',1,'IndexedTriangleNoMaterial::GetCentroid()'],['../class_triangle.html#a680a9a904aaad1f8a495f8ec667fbf70',1,'Triangle::GetCentroid()']]], + ['getchains_69',['getchains',['../class_skeleton_mapper.html#ad60ebc6d5ff4c2d1402199c56f698c4a',1,'SkeletonMapper::GetChains() const'],['../class_skeleton_mapper.html#a5438aa5e4ec00c89a000a12db4d4c8d4',1,'SkeletonMapper::GetChains()']]], + ['getcharacterpadding_70',['GetCharacterPadding',['../class_character_virtual.html#a643ed04caa01ba9e4e4fc9d5058dc3d7',1,'CharacterVirtual']]], + ['getclosestpoint_71',['getclosestpoint',['../class_ellipse.html#a07b49662cd16799da0e0b1a1d67a8d84',1,'Ellipse::GetClosestPoint()'],['../class_path_constraint_path.html#aa84329614fd89561c555e2af0d4381a2',1,'PathConstraintPath::GetClosestPoint()'],['../class_path_constraint_path_hermite.html#a9675ad7e14e9cc9f7b07b9df0d6cfffc',1,'PathConstraintPathHermite::GetClosestPoint()'],['../class_a_a_box.html#aac4e2dce7616f266b7ef3ae25a9a9aac',1,'AABox::GetClosestPoint()']]], + ['getclosestpointonline_72',['GetClosestPointOnLine',['../namespace_closest_point.html#ad687ef98922a03b7128a5d3a5a64ab39',1,'ClosestPoint']]], + ['getclosestpointontetrahedron_73',['GetClosestPointOnTetrahedron',['../namespace_closest_point.html#abafebdbe3dea0fe6674c20fc9ccc8540',1,'ClosestPoint']]], + ['getclosestpointontriangle_74',['GetClosestPointOnTriangle',['../namespace_closest_point.html#a25fcaaf786d8724b11d02406ab74e0bc',1,'ClosestPoint']]], + ['getclosestpoints_75',['GetClosestPoints',['../class_g_j_k_closest_point.html#abb7cfdd49d708007d75b4c2e9b90ebb9',1,'GJKClosestPoint']]], + ['getclosestpointssimplex_76',['GetClosestPointsSimplex',['../class_g_j_k_closest_point.html#a73d6f276fb275026a0126ca7361fb2bf',1,'GJKClosestPoint']]], + ['getclutchfriction_77',['GetClutchFriction',['../class_vehicle_transmission.html#a2dc82e524311127f8bb8d5fe2cd63809',1,'VehicleTransmission']]], + ['getcollidekinematicvsnondynamic_78',['GetCollideKinematicVsNonDynamic',['../class_body.html#a8bb48012c114b300a9bfdd296cfe0546',1,'Body']]], + ['getcollisiongroup_79',['getcollisiongroup',['../class_body.html#a5865492b92c7c2e321c6916e80f5b7cb',1,'Body::GetCollisionGroup() const'],['../class_body.html#aca55936886e8c9d4dc072efa6e7baa47',1,'Body::GetCollisionGroup()']]], + ['getcols_80',['getcols',['../class_matrix.html#a45bd49a18dec51ca82c58aa5d12572be',1,'Matrix::GetCols()'],['../class_dyn_matrix.html#a14b89bcd36316ecbf0fd94ea6a7d255e',1,'DynMatrix::GetCols()']]], + ['getcolumn_81',['getcolumn',['../class_matrix.html#a92a370676cc7e0788bc217a358170b4a',1,'Matrix::GetColumn(int inIdx) const'],['../class_matrix.html#a82a128d3923926e678aa6acc94f2f05d',1,'Matrix::GetColumn(int inIdx)']]], + ['getcolumn3_82',['getcolumn3',['../class_d_mat44.html#ae81ea58eee1dbea2c92d11272b9e8f7b',1,'DMat44::GetColumn3()'],['../class_mat44.html#a4d34298d2040673cfd9b86c5cb83a5b9',1,'Mat44::GetColumn3()']]], + ['getcolumn4_83',['getcolumn4',['../class_d_mat44.html#a2b3ddba8891381c2728bba83638a1003',1,'DMat44::GetColumn4()'],['../class_mat44.html#a97c469ed78611039f85415381a67f312',1,'Mat44::GetColumn4()']]], + ['getcombinefriction_84',['getcombinefriction',['../class_vehicle_constraint.html#a2d6d79ed657818da23c2ede0bc326f13',1,'VehicleConstraint::GetCombineFriction()'],['../class_physics_system.html#ae19842257ae5c36c88dd4dbead21e55f',1,'PhysicsSystem::GetCombineFriction()'],['../class_contact_constraint_manager.html#a2f9d4fe92f6b8a2952b51acb10f55258',1,'ContactConstraintManager::GetCombineFriction()']]], + ['getcombinerestitution_85',['getcombinerestitution',['../class_physics_system.html#aad39e9dd77faf9b578460b66451334e7',1,'PhysicsSystem::GetCombineRestitution()'],['../class_contact_constraint_manager.html#a3e9f74aa49c583d6656430fa421326ab',1,'ContactConstraintManager::GetCombineRestitution()']]], + ['getcompounduserdata_86',['GetCompoundUserData',['../class_compound_shape.html#a596eae9a25f8ed13ac35f2a58b318368',1,'CompoundShape']]], + ['getconfigurationstring_87',['GetConfigurationString',['../_configuration_string_8h.html#afe111af004398b9269362467f062bf75',1,'ConfigurationString.h']]], + ['getconstant_88',['GetConstant',['../class_plane.html#a3510818ed64a5d821041da28102fc4d1',1,'Plane']]], + ['getconstraint_89',['getconstraint',['../class_ragdoll.html#a001b9a360f16a8a24d7cc547c763bbd8',1,'Ragdoll::GetConstraint(int inConstraintIndex) const'],['../class_ragdoll.html#a86b347f11599361d0cf8bddcacad4295',1,'Ragdoll::GetConstraint(int inConstraintIndex)']]], + ['getconstraintcount_90',['GetConstraintCount',['../class_ragdoll.html#a4aed9348c613c386d5cf32c25e3931f2',1,'Ragdoll']]], + ['getconstraintindexforbodyindex_91',['GetConstraintIndexForBodyIndex',['../class_ragdoll_settings.html#a1749cda0e9b21d71951d950561eed206',1,'RagdollSettings']]], + ['getconstraintindextobodyidxpair_92',['GetConstraintIndexToBodyIdxPair',['../class_ragdoll_settings.html#a7e1760aeb58718b818dc1c30f7049678',1,'RagdollSettings']]], + ['getconstraintpriority_93',['GetConstraintPriority',['../class_constraint.html#a6c75250d651da3854eda9e929193e585',1,'Constraint']]], + ['getconstraints_94',['getconstraints',['../class_constraint_manager.html#a28696554e9f5f7b0b2169fa523e80440',1,'ConstraintManager::GetConstraints()'],['../class_physics_scene.html#ab95da1c01a9f35cc651d383308cc9de1',1,'PhysicsScene::GetConstraints() const'],['../class_physics_scene.html#ad728df0dcebeab7a8796f6e0bb44a97f',1,'PhysicsScene::GetConstraints()'],['../class_physics_system.html#a69c9f67351312d43f8e1c1f5d23fdf99',1,'PhysicsSystem::GetConstraints()']]], + ['getconstraintsettings_95',['getconstraintsettings',['../class_slider_constraint.html#a79e425837bce0b6d9955ce61fba14c43',1,'SliderConstraint::GetConstraintSettings()'],['../class_vehicle_constraint.html#af953060386f731482956bb772840262c',1,'VehicleConstraint::GetConstraintSettings()'],['../class_swing_twist_constraint.html#ad3c1a46d28973d5ce39917aa2b7a32b0',1,'SwingTwistConstraint::GetConstraintSettings()'],['../class_six_d_o_f_constraint.html#aec39d055e72169c5f805a00c16b12ff1',1,'SixDOFConstraint::GetConstraintSettings()'],['../class_rack_and_pinion_constraint.html#ade013a7ea7be65d4d9001e852ff4782d',1,'RackAndPinionConstraint::GetConstraintSettings()'],['../class_pulley_constraint.html#a56ea0bb8295e74fff225c54325df0bb4',1,'PulleyConstraint::GetConstraintSettings()'],['../class_point_constraint.html#a8214c8380eabc71845572309a3f49f53',1,'PointConstraint::GetConstraintSettings()'],['../class_path_constraint.html#a88bfac1b3c744a15f78dbce0d31a4b08',1,'PathConstraint::GetConstraintSettings()'],['../class_hinge_constraint.html#aba9c90a3d3565e738758d6ee5b17dcba',1,'HingeConstraint::GetConstraintSettings()'],['../class_gear_constraint.html#a43c6cb408e182a507528fc2397480a62',1,'GearConstraint::GetConstraintSettings()'],['../class_fixed_constraint.html#a038968466ddd1ca74b02572145a7a7dc',1,'FixedConstraint::GetConstraintSettings()'],['../class_distance_constraint.html#adaee116897c67e802f2c294c44df106d',1,'DistanceConstraint::GetConstraintSettings()'],['../class_constraint.html#a2cb32f0fbbc03050fd09c975e01277d2',1,'Constraint::GetConstraintSettings()'],['../class_cone_constraint.html#aa88d6b874c14c0bfb2d435100fef4c04',1,'ConeConstraint::GetConstraintSettings()']]], + ['getconstraintsinisland_96',['GetConstraintsInIsland',['../class_island_builder.html#abb0ec0d343289ee4294fa3abbde16a82',1,'IslandBuilder']]], + ['getconstraintsinsplit_97',['GetConstraintsInSplit',['../class_large_island_splitter_1_1_splits.html#a45545f0a9f20090f2992a09b015c494c',1,'LargeIslandSplitter::Splits']]], + ['getconstrainttobody1_98',['GetConstraintToBody1',['../class_swing_twist_constraint.html#a4b15b5eed50bb023141968a6eb05a307',1,'SwingTwistConstraint']]], + ['getconstrainttobody1matrix_99',['getconstrainttobody1matrix',['../class_swing_twist_constraint.html#ab89ec6165c3789f22964700f21695c32',1,'SwingTwistConstraint::GetConstraintToBody1Matrix()'],['../class_two_body_constraint.html#a0edd748869643b1c904a7bc1314dad7a',1,'TwoBodyConstraint::GetConstraintToBody1Matrix()'],['../class_distance_constraint.html#affc0247d5a56e7448372aea456e0bd04',1,'DistanceConstraint::GetConstraintToBody1Matrix()'],['../class_slider_constraint.html#aa61f48ae475bbe2130bb1053e4358f24',1,'SliderConstraint::GetConstraintToBody1Matrix()'],['../class_six_d_o_f_constraint.html#a93b7ceef3c7017e4a1a0bc53e29c93d8',1,'SixDOFConstraint::GetConstraintToBody1Matrix()'],['../class_rack_and_pinion_constraint.html#a0f1f6f27b197ba607c5c4d8d20e7c193',1,'RackAndPinionConstraint::GetConstraintToBody1Matrix()'],['../class_pulley_constraint.html#a8afedbd3de6a5484fda155337ee04b64',1,'PulleyConstraint::GetConstraintToBody1Matrix()'],['../class_point_constraint.html#a11b6acce9456cc5d0c2f34ecaf224f30',1,'PointConstraint::GetConstraintToBody1Matrix()'],['../class_path_constraint.html#a7fd4ca9762f295af3146258606a6e22a',1,'PathConstraint::GetConstraintToBody1Matrix()'],['../class_hinge_constraint.html#a2b528317cc292b5538af7df466934016',1,'HingeConstraint::GetConstraintToBody1Matrix()'],['../class_gear_constraint.html#a6e107e42ffd882394b0affda86ef6008',1,'GearConstraint::GetConstraintToBody1Matrix()'],['../class_fixed_constraint.html#a852ac2a355651a1ba586554d1551bcbc',1,'FixedConstraint::GetConstraintToBody1Matrix()'],['../class_cone_constraint.html#a90969c19baeb56184ffed487ecca0864',1,'ConeConstraint::GetConstraintToBody1Matrix()']]], + ['getconstrainttobody2_100',['GetConstraintToBody2',['../class_swing_twist_constraint.html#a79760736ee2bc3afecdf80dfe703fa45',1,'SwingTwistConstraint']]], + ['getconstrainttobody2matrix_101',['getconstrainttobody2matrix',['../class_hinge_constraint.html#aae6aa9af08443b65a7ea85323876dde4',1,'HingeConstraint::GetConstraintToBody2Matrix()'],['../class_two_body_constraint.html#a0966503073a315b6087f10208e8a61ff',1,'TwoBodyConstraint::GetConstraintToBody2Matrix()'],['../class_swing_twist_constraint.html#a2ada7d7eadcc3f9d235cb1d8c75f3e4a',1,'SwingTwistConstraint::GetConstraintToBody2Matrix()'],['../class_six_d_o_f_constraint.html#a92d86c092002bec9d22d529f8616aa29',1,'SixDOFConstraint::GetConstraintToBody2Matrix()'],['../class_gear_constraint.html#a100fdd22b7dc94df36529b4be8c27b60',1,'GearConstraint::GetConstraintToBody2Matrix()'],['../class_path_constraint.html#aefa354c9926217e88db8741736121f20',1,'PathConstraint::GetConstraintToBody2Matrix()'],['../class_point_constraint.html#a03ec92ce018cfae4900a11ac65032988',1,'PointConstraint::GetConstraintToBody2Matrix()'],['../class_pulley_constraint.html#aab9c03ae617d8c20d3844f499b33463f',1,'PulleyConstraint::GetConstraintToBody2Matrix()'],['../class_fixed_constraint.html#a7782ad778c9f110835e6be7a299bfcc7',1,'FixedConstraint::GetConstraintToBody2Matrix()'],['../class_distance_constraint.html#a32c46e7b4a137df6a68f9bd7752ee0cc',1,'DistanceConstraint::GetConstraintToBody2Matrix()'],['../class_cone_constraint.html#a49faa7b82a46f13d0cddec8ee9a1986e',1,'ConeConstraint::GetConstraintToBody2Matrix()'],['../class_slider_constraint.html#a364ce918555ae4df05f788b9e5e041ca',1,'SliderConstraint::GetConstraintToBody2Matrix()'],['../class_rack_and_pinion_constraint.html#a06a84a89bfdc1be4679f60e56defe18a',1,'RackAndPinionConstraint::GetConstraintToBody2Matrix()']]], + ['getcontactallocator_102',['GetContactAllocator',['../class_contact_constraint_manager.html#ae52944ca4945e6255a0f31794cf2aed5',1,'ContactConstraintManager']]], + ['getcontactbodyid_103',['getcontactbodyid',['../class_wheel.html#acc31f12c9bf9049d98397fc721219d10',1,'Wheel::GetContactBodyID()'],['../class_soft_body_manifold.html#a417c2c3d01bddd24f9115fa7641a3baf',1,'SoftBodyManifold::GetContactBodyID()']]], + ['getcontactlateral_104',['GetContactLateral',['../class_wheel.html#a23056c4f6164ec0b1e7a0448a54135c3',1,'Wheel']]], + ['getcontactlistener_105',['getcontactlistener',['../class_physics_system.html#ae7f5894935da5a4652a6d7ac60ad82e0',1,'PhysicsSystem::GetContactListener()'],['../class_contact_constraint_manager.html#a7aa47c7b4d7470e83735deb74eae608d',1,'ContactConstraintManager::GetContactListener()']]], + ['getcontactlongitudinal_106',['GetContactLongitudinal',['../class_wheel.html#a4f4df6da668a8f3d147ee53a3c46910c',1,'Wheel']]], + ['getcontactnormal_107',['getcontactnormal',['../class_soft_body_manifold.html#abb6aad92c3678d927ab04481e30850db',1,'SoftBodyManifold::GetContactNormal()'],['../class_wheel.html#aaff3b5c0de2d6becbebbdbd886b2c7cf',1,'Wheel::GetContactNormal() const']]], + ['getcontactpointvelocity_108',['GetContactPointVelocity',['../class_wheel.html#a909988d11cc3e43ba357a1f9b1d4f101',1,'Wheel']]], + ['getcontactposition_109',['GetContactPosition',['../class_wheel.html#afe7cd7933c99164aefd66c9d5fe2a3eb',1,'Wheel']]], + ['getcontactsfromcache_110',['GetContactsFromCache',['../class_contact_constraint_manager.html#ac438b9748b641a504658e700f0e43305',1,'ContactConstraintManager']]], + ['getcontactsinisland_111',['GetContactsInIsland',['../class_island_builder.html#a39454ff17c3dc0d7b133c79ac2d0d7e0',1,'IslandBuilder']]], + ['getcontactsinsplit_112',['GetContactsInSplit',['../class_large_island_splitter_1_1_splits.html#a9cc12d58718a4c7da7f6ea2508e8b8fc',1,'LargeIslandSplitter::Splits']]], + ['getcontactsubshapeid_113',['GetContactSubShapeID',['../class_wheel.html#a4ed45e80dae82a05fe3a07bd8f81d96f',1,'Wheel']]], + ['getcontext_114',['GetContext',['../class_collision_collector.html#ab9bfe5f6799afc12509d8dbad2c5b90b',1,'CollisionCollector']]], + ['getcontroller_115',['getcontroller',['../class_vehicle_constraint.html#a4f55ac332056282078f054e099b147cc',1,'VehicleConstraint::GetController()'],['../class_vehicle_constraint.html#ab0b1fdc09970442c9cb800cbadcf9643',1,'VehicleConstraint::GetController() const']]], + ['getconvexradius_116',['getconvexradius',['../class_convex_hull_shape_1_1_hull_no_convex.html#a9eb3d10a97e5ff7728db7f2ab218eff5',1,'ConvexHullShape::HullNoConvex::GetConvexRadius()'],['../class_triangle_shape.html#ad05039d8e56aca9a7f1e83453f4e897e',1,'TriangleShape::GetConvexRadius()'],['../class_triangle_shape_1_1_triangle_with_convex.html#ac62eb3e67195f25c99f68e752afb7082',1,'TriangleShape::TriangleWithConvex::GetConvexRadius()'],['../class_triangle_shape_1_1_triangle_no_convex.html#a9a3136e6697ef368555225a6e12f0149',1,'TriangleShape::TriangleNoConvex::GetConvexRadius()'],['../class_tapered_cylinder_shape.html#a626dfe4f1a56689fa8e3792c2c2f47b1',1,'TaperedCylinderShape::GetConvexRadius()'],['../class_tapered_cylinder_shape_1_1_tapered_cylinder.html#a1a34aff6da2ce5e2a274d484a8460cb4',1,'TaperedCylinderShape::TaperedCylinder::GetConvexRadius()'],['../class_sphere_shape_1_1_sphere_with_convex.html#a63950fdd2ab3281634f5521a08fb6793',1,'SphereShape::SphereWithConvex::GetConvexRadius()'],['../class_convex_hull_shape.html#ae130c8434054b8c5778bde9eee608598',1,'ConvexHullShape::GetConvexRadius()'],['../class_convex_hull_shape_1_1_hull_with_convex_scaled.html#a35a3f457cbdae6352227be61c356bba1',1,'ConvexHullShape::HullWithConvexScaled::GetConvexRadius()'],['../class_convex_hull_shape_1_1_hull_with_convex.html#a069ec0a55025c42b3496246b949cd596',1,'ConvexHullShape::HullWithConvex::GetConvexRadius()'],['../class_capsule_shape_1_1_capsule_with_convex.html#a8848a4436820ea01656a3dc6f0700c12',1,'CapsuleShape::CapsuleWithConvex::GetConvexRadius()'],['../class_capsule_shape_1_1_capsule_no_convex.html#ac5c3f5013f55a44ca8a27f4f26bcdd7e',1,'CapsuleShape::CapsuleNoConvex::GetConvexRadius()'],['../class_box_shape.html#a3e4280756f0e7d044f6473224f5e5097',1,'BoxShape::GetConvexRadius()'],['../class_box_shape_1_1_box.html#aae4ca0e522c6bf8bfd05b2ac5a8f3657',1,'BoxShape::Box::GetConvexRadius()'],['../class_tapered_capsule_shape_1_1_tapered_capsule.html#a44fd5dde5c0b781753c7d58005272a5b',1,'TaperedCapsuleShape::TaperedCapsule::GetConvexRadius()'],['../class_convex_shape_1_1_support.html#ab6255a297bd904ef2c09a9cce6c3c05b',1,'ConvexShape::Support::GetConvexRadius()'],['../class_cylinder_shape_1_1_cylinder.html#a0427aea83069b39420bcc5d84e02e11a',1,'CylinderShape::Cylinder::GetConvexRadius()'],['../class_cylinder_shape.html#a4c725b9796a592daafff0476543c4629',1,'CylinderShape::GetConvexRadius()'],['../class_sphere_shape_1_1_sphere_no_convex.html#afd8c26363093475f569d9b01710e66d9',1,'SphereShape::SphereNoConvex::GetConvexRadius()']]], + ['getcoshalfconeangle_117',['GetCosHalfConeAngle',['../class_cone_constraint.html#a0f739908f826f4db4600278ebd0e05ba',1,'ConeConstraint']]], + ['getcosmaxslopeangle_118',['GetCosMaxSlopeAngle',['../class_character_base.html#aa7d43079f3b6c40c3fa1ccc30a8682bf',1,'CharacterBase']]], + ['getcurrentangle_119',['GetCurrentAngle',['../class_hinge_constraint.html#a7184e290eab00d8b27ad6366adb131f3',1,'HingeConstraint']]], + ['getcurrentgear_120',['GetCurrentGear',['../class_vehicle_transmission.html#a2770cd2da41162587a2addd366ba4535',1,'VehicleTransmission']]], + ['getcurrentlength_121',['GetCurrentLength',['../class_pulley_constraint.html#a2e6fd4f7a548c5fe09497fd31a27af02',1,'PulleyConstraint']]], + ['getcurrentposition_122',['GetCurrentPosition',['../class_slider_constraint.html#ac30befccebcc95bcaaab4ff784f3867f',1,'SliderConstraint']]], + ['getcurrentratio_123',['GetCurrentRatio',['../class_vehicle_transmission.html#aa58a4bc8d9ede0b99f622a0f20b36012',1,'VehicleTransmission']]], + ['getcurrentrpm_124',['GetCurrentRPM',['../class_vehicle_engine.html#ac1f11f381d186b50721cbc058931a2b5',1,'VehicleEngine']]], + ['getdata_125',['GetData',['../class_state_recorder_impl.html#a369ad05841edbb115007fe8632ce963f',1,'StateRecorderImpl']]], + ['getdebugcolor_126',['getdebugcolor',['../class_physics_material_simple.html#a753a983d027c83d1758d8f89e79d3c7e',1,'PhysicsMaterialSimple::GetDebugColor()'],['../class_physics_material.html#af8673b7c2cefec46b38fd90fb8fe7784',1,'PhysicsMaterial::GetDebugColor()']]], + ['getdebugname_127',['getdebugname',['../class_physics_material_simple.html#ae6e3111c1feb14e0494a168ed783c43e',1,'PhysicsMaterialSimple::GetDebugName()'],['../class_physics_material.html#a1ace7fb4d595955c50f02bd67a108446',1,'PhysicsMaterial::GetDebugName()']]], + ['getdefaultbroadphaselayerfilter_128',['GetDefaultBroadPhaseLayerFilter',['../class_physics_system.html#a9473bc5d3e3cd861b58b0db3240b4f1d',1,'PhysicsSystem']]], + ['getdefaultlayerfilter_129',['GetDefaultLayerFilter',['../class_physics_system.html#adaf3b2dbc230ee329461e47f096ef467',1,'PhysicsSystem']]], + ['getdensity_130',['GetDensity',['../class_convex_shape.html#a25975ed48abd058648020ee11498ce4e',1,'ConvexShape']]], + ['getdeterminant3x3_131',['GetDeterminant3x3',['../class_mat44.html#a2b5ba5e6c68b059ae61a1bbc1b7fbb87',1,'Mat44']]], + ['getdiagonal3_132',['GetDiagonal3',['../class_mat44.html#a6eb3cbc676f2ce57f63bcee9d0b40171',1,'Mat44']]], + ['getdiagonal4_133',['GetDiagonal4',['../class_mat44.html#aefb86266992d843e5de8e53cdbc5bdc6',1,'Mat44']]], + ['getdifferentiallimitedslipratio_134',['GetDifferentialLimitedSlipRatio',['../class_wheeled_vehicle_controller.html#a54518ef2b442bd0a1fe7a871d36d167f',1,'WheeledVehicleController']]], + ['getdifferentials_135',['getdifferentials',['../class_wheeled_vehicle_controller.html#abc5128d2c64bd0081380279ed025e2ed',1,'WheeledVehicleController::GetDifferentials()'],['../class_wheeled_vehicle_controller.html#a7364b136c27cf5330968729518859a1d',1,'WheeledVehicleController::GetDifferentials() const']]], + ['getdirectionpreservingmatrix_136',['getdirectionpreservingmatrix',['../class_mat44.html#a2bb16051fdd324325ac9be5e5e7619b7',1,'Mat44::GetDirectionPreservingMatrix()'],['../class_d_mat44.html#a276e9d5393c45b4dbba222c23db3a58c',1,'DMat44::GetDirectionPreservingMatrix()']]], + ['getdrawconstraintsize_137',['GetDrawConstraintSize',['../class_constraint.html#a719b99d4d20e0c67d5412fb40a00ada3',1,'Constraint']]], + ['getduration_138',['GetDuration',['../class_skeletal_animation.html#abfab43ab605ec8a52b89adc38e1e092d',1,'SkeletalAnimation']]], + ['getearlyoutfraction_139',['getearlyoutfraction',['../class_collision_collector.html#ab972bb0e68e602c5eea898dfb7166d07',1,'CollisionCollector::GetEarlyOutFraction()'],['../class_shape_cast_result.html#a0b91d796ee4e127cac91c9d82f292e57',1,'ShapeCastResult::GetEarlyOutFraction()'],['../class_collide_shape_result.html#abe452fa6ddc8670a0c020d5420a92f3b',1,'CollideShapeResult::GetEarlyOutFraction()'],['../class_collide_point_result.html#a2fe473a4baa681ab11ce3a291d8a26a8',1,'CollidePointResult::GetEarlyOutFraction()'],['../class_broad_phase_cast_result.html#a06287289bf870782bbfc79f5ea3ac2bc',1,'BroadPhaseCastResult::GetEarlyOutFraction()']]], + ['getenabled_140',['GetEnabled',['../class_constraint.html#a2e0b8708469ecb3ea071c1b37ca8ea26',1,'Constraint']]], + ['getenableskinconstraints_141',['GetEnableSkinConstraints',['../class_soft_body_motion_properties.html#a0211a0376f1d3fcbe20eb246d3ba01db',1,'SoftBodyMotionProperties']]], + ['getengine_142',['getengine',['../class_tracked_vehicle_controller.html#acb2deddabb17190a97fbeee604d6a845',1,'TrackedVehicleController::GetEngine()'],['../class_tracked_vehicle_controller.html#a8e4de97e46ec73d36fce4d32d38f6ed2',1,'TrackedVehicleController::GetEngine() const'],['../class_wheeled_vehicle_controller.html#acf0f3be1d9270518b59691310c28769b',1,'WheeledVehicleController::GetEngine()'],['../class_wheeled_vehicle_controller.html#a459374f72146ee0bfe05ead3151d346c',1,'WheeledVehicleController::GetEngine() const']]], + ['getenhancedinternaledgeremoval_143',['getenhancedinternaledgeremoval',['../class_character_virtual.html#a9e39a28dbce389399848347dbf95956a',1,'CharacterVirtual::GetEnhancedInternalEdgeRemoval()'],['../class_body.html#aa32a2192fa7e0ad595c63113e367d606',1,'Body::GetEnhancedInternalEdgeRemoval() const']]], + ['getenhancedinternaledgeremovalwithbody_144',['GetEnhancedInternalEdgeRemovalWithBody',['../class_body.html#a264f4c99047d880e0ec05ba558f64ee9',1,'Body']]], + ['geterror_145',['GetError',['../class_result.html#a3d0fc76c48e6db9cf5918dcc248ee4cb',1,'Result']]], + ['geteulerangles_146',['GetEulerAngles',['../class_quat.html#ae0e71415ee746c38c27b04e7dbc9b4ed',1,'Quat']]], + ['getextent_147',['GetExtent',['../class_a_a_box.html#a094a8548424826014024349fd7b96766',1,'AABox']]], + ['getface_148',['GetFace',['../class_soft_body_motion_properties.html#afcbcb8a86be08dddf2f33027741d321b',1,'SoftBodyMotionProperties']]], + ['getfaceindex_149',['GetFaceIndex',['../class_soft_body_shape.html#ad5f6a2eb0f01c7d83d8aa630559c4d7b',1,'SoftBodyShape']]], + ['getfaces_150',['getfaces',['../class_soft_body_motion_properties.html#a8166377ba1eaf8dea4589bc90e8baf23',1,'SoftBodyMotionProperties::GetFaces()'],['../class_convex_hull_builder.html#a2eade6ba63e25c3bda4eaf159d1128ce',1,'ConvexHullBuilder::GetFaces()']]], + ['getfacevertices_151',['GetFaceVertices',['../class_convex_hull_shape.html#a264fca49465c3fcfd2b261b6ee795f3a',1,'ConvexHullShape']]], + ['getforwardinput_152',['getforwardinput',['../class_wheeled_vehicle_controller.html#a781e75a695c39395e56b91cfcd780bdc',1,'WheeledVehicleController::GetForwardInput()'],['../class_tracked_vehicle_controller.html#ab6609714cd395abb6a9d29552dc5fb85',1,'TrackedVehicleController::GetForwardInput()']]], + ['getfriction_153',['getfriction',['../class_body_interface.html#a098e8a339528606a7d3f41c5ba5da8a2',1,'BodyInterface::GetFriction()'],['../class_body.html#abb35a0778672e9f3622d8cfa93b428b3',1,'Body::GetFriction()']]], + ['getgravity_154',['GetGravity',['../class_physics_system.html#a73776df14d1f0f10ba9a5fa033eefafd',1,'PhysicsSystem']]], + ['getgravityfactor_155',['getgravityfactor',['../class_motion_properties.html#a512531eb6b5f90a69deca6a0d0889243',1,'MotionProperties::GetGravityFactor()'],['../class_body_interface.html#a2e3bf749aa0626529b43f173437a9ec0',1,'BodyInterface::GetGravityFactor()']]], + ['getgravityoverride_156',['GetGravityOverride',['../class_vehicle_constraint.html#a557d0f6ff57dd2b6aa3a2f6da7e38f8e',1,'VehicleConstraint']]], + ['getgroundbodyid_157',['GetGroundBodyID',['../class_character_base.html#ab677215920d0b4cd10874b3a56a35026',1,'CharacterBase']]], + ['getgroundmaterial_158',['GetGroundMaterial',['../class_character_base.html#ac4771494235c54165b6b4c9ad64dcdc8',1,'CharacterBase']]], + ['getgroundnormal_159',['GetGroundNormal',['../class_character_base.html#adde62ba706430b59595bb8d56731eaa8',1,'CharacterBase']]], + ['getgroundposition_160',['GetGroundPosition',['../class_character_base.html#a0ecc9be497c5fc46bef4277a734a691a',1,'CharacterBase']]], + ['getgroundstate_161',['GetGroundState',['../class_character_base.html#ab8ce7589bd0e97901030bceeda7a513b',1,'CharacterBase']]], + ['getgroundsubshapeid_162',['GetGroundSubShapeID',['../class_character_base.html#a2ab264ce1b5888134b38177f71a81f91',1,'CharacterBase']]], + ['getgrounduserdata_163',['GetGroundUserData',['../class_character_base.html#ae8c2a236d46c2e362021c1ab3364c432',1,'CharacterBase']]], + ['getgroundvelocity_164',['GetGroundVelocity',['../class_character_base.html#a692578285569b48d19d53684360a5656',1,'CharacterBase']]], + ['getgroupfilter_165',['GetGroupFilter',['../class_collision_group.html#abcda9f0cd8d5d8b2ee42bee0a19430a7',1,'CollisionGroup']]], + ['getgroupid_166',['GetGroupID',['../class_collision_group.html#a1521cec7d03c83265aecca64ec684433',1,'CollisionGroup']]], + ['gethalfextent_167',['gethalfextent',['../class_box_shape.html#a44e8965153d83d24e534d6278f9d6e0d',1,'BoxShape::GetHalfExtent()'],['../class_plane_shape.html#a964fc4a57ddf2bea8c52ea18e4b4e7f0',1,'PlaneShape::GetHalfExtent()']]], + ['gethalfheight_168',['gethalfheight',['../class_tapered_cylinder_shape.html#af7c1b08a97e16176cdaf429accaade8b',1,'TaperedCylinderShape::GetHalfHeight()'],['../class_cylinder_shape.html#a6ed4653b983e5e91e0a86f16b4186a25',1,'CylinderShape::GetHalfHeight()']]], + ['gethalfheightofcylinder_169',['GetHalfHeightOfCylinder',['../class_capsule_shape.html#a24208af1f0e53c7de6e62c821699a2c3',1,'CapsuleShape']]], + ['gethandbrakeinput_170',['GetHandBrakeInput',['../class_wheeled_vehicle_controller.html#a785dc39a5b664a71b5c08ca00db4886d',1,'WheeledVehicleController']]], + ['gethash_171',['gethash',['../struct_body_pair.html#a5c584f3eda9897aa691047f585fdde06',1,'BodyPair::GetHash()'],['../class_r_t_t_i.html#ad5a67a7623941aeb6a7a75fc89082a92',1,'RTTI::GetHash()'],['../class_sub_shape_i_d_pair.html#a88b839da3754801d6bfe6f6f2734a026',1,'SubShapeIDPair::GetHash()']]], + ['getheights_172',['GetHeights',['../class_height_field_shape.html#ad7197b2f27b98899bc5b4b66b0fd9a27',1,'HeightFieldShape']]], + ['gethighestcomponentindex_173',['GetHighestComponentIndex',['../class_vec3.html#aefba3895f1a98e1a5854b7e79598a408',1,'Vec3']]], + ['gethitreductioncosmaxangle_174',['GetHitReductionCosMaxAngle',['../class_character_virtual.html#ae8dcc6de2efd2ad646722e92ed1ba38a',1,'CharacterVirtual']]], + ['getid_175',['getid',['../class_sub_shape_i_d_creator.html#a54023c5ee7e3547f2211e7a5ae9d620b',1,'SubShapeIDCreator::GetID()'],['../class_body.html#acbcb599679bb6a330a7ea3427fe90604',1,'Body::GetID()']]], + ['getindex_176',['GetIndex',['../class_body_i_d.html#ae7455ec3e8eec8ec963fb99ea4176fd6',1,'BodyID']]], + ['getindexandsequencenumber_177',['GetIndexAndSequenceNumber',['../class_body_i_d.html#aaff1cc7e76b557c1ce750bea2286290c',1,'BodyID']]], + ['getindexinactivebodiesinternal_178',['getindexinactivebodiesinternal',['../class_motion_properties.html#a8f27aeee8dec3e0e94479bd233ca9d2f',1,'MotionProperties::GetIndexInActiveBodiesInternal()'],['../class_body.html#a61c94ac7d927ff8e5b3c980fc11af5a1',1,'Body::GetIndexInActiveBodiesInternal()']]], + ['getinertiarotation_179',['GetInertiaRotation',['../class_motion_properties.html#a300d1a36925946850e301155c70b7bef',1,'MotionProperties']]], + ['getinfo_180',['GetInfo',['../class_object_stream_in.html#a728e6ca9a1dbcadbf185768421f392ae',1,'ObjectStreamIn']]], + ['getinitialrange_181',['GetInitialRange',['../class_triangle_splitter.html#afdc1efd952e2db0b80a3a29af8e5da9e',1,'TriangleSplitter']]], + ['getinnerbodyid_182',['GetInnerBodyID',['../class_character_virtual.html#a7d6637e5d42ab04152b831b609014af1',1,'CharacterVirtual']]], + ['getinnerradius_183',['getinnerradius',['../class_soft_body_shape.html#a5c4e7f0e89d968da93b5759b642d5493',1,'SoftBodyShape::GetInnerRadius()'],['../class_triangle_shape.html#a0810f695ee3695e5206e9c8b4d506727',1,'TriangleShape::GetInnerRadius()'],['../class_tapered_cylinder_shape.html#a147aacad19ced7e278abd34f6fcf2dd8',1,'TaperedCylinderShape::GetInnerRadius()'],['../class_tapered_capsule_shape.html#a84f84f37f87624d107b363e1fe0f54a6',1,'TaperedCapsuleShape::GetInnerRadius()'],['../class_shape.html#a249fa4e0fc7fdd25071be9f45db6a25a',1,'Shape::GetInnerRadius()'],['../class_sphere_shape.html#afb194e610fbe0025a2edebf8b0c20be3',1,'SphereShape::GetInnerRadius()'],['../class_scaled_shape.html#ac7caaa3409a215d6b7dd97ef08c1309b',1,'ScaledShape::GetInnerRadius()'],['../class_rotated_translated_shape.html#a2d4eb8d7ec3b1b8e68fccd31bd6ffda9',1,'RotatedTranslatedShape::GetInnerRadius()'],['../class_plane_shape.html#acf2b5b3f2bf76cb25f19cfd254992c6f',1,'PlaneShape::GetInnerRadius()'],['../class_offset_center_of_mass_shape.html#a032a8fc143be25c8194a28c3a491c702',1,'OffsetCenterOfMassShape::GetInnerRadius()'],['../class_mesh_shape.html#a7c2e775c8d2691c71de1243732dc702a',1,'MeshShape::GetInnerRadius()'],['../class_height_field_shape.html#a6546d622ca1ff86ea3c3cf7dc39753d3',1,'HeightFieldShape::GetInnerRadius()'],['../class_cylinder_shape.html#ad0434b32d80b3256e9ad76524604598c',1,'CylinderShape::GetInnerRadius()'],['../class_convex_hull_shape.html#a43f64b08407a44d5c441f41ce520dfe5',1,'ConvexHullShape::GetInnerRadius()'],['../class_compound_shape.html#ae17025f3ed04cdf063dc0f3b180468a4',1,'CompoundShape::GetInnerRadius()'],['../class_capsule_shape.html#aff824c6f74dbd43d6ddbb577e2324e50',1,'CapsuleShape::GetInnerRadius()'],['../class_box_shape.html#a50c713511a3e73d2c69cb03843eb06e8',1,'BoxShape::GetInnerRadius()']]], + ['getinnershape_184',['GetInnerShape',['../class_decorated_shape.html#a23b4182bc69407c3c9f6e33419a8cbed',1,'DecoratedShape']]], + ['getintensity_185',['GetIntensity',['../class_color.html#afca651317831a93dba25464c5325f0ce',1,'Color']]], + ['getintersectingsubshapes_186',['getintersectingsubshapes',['../class_mutable_compound_shape.html#a384f4371999246795c2e3f84ad75eca0',1,'MutableCompoundShape::GetIntersectingSubShapes()'],['../class_static_compound_shape.html#a4cd2a844ebd860f507e798199dd77583',1,'StaticCompoundShape::GetIntersectingSubShapes(const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override'],['../class_static_compound_shape.html#a5e78840b9d9ba2b080352b8366f3472c',1,'StaticCompoundShape::GetIntersectingSubShapes(const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const override'],['../class_mutable_compound_shape.html#ad254423b72d228ee50b548c9d4b52696',1,'MutableCompoundShape::GetIntersectingSubShapes()'],['../class_compound_shape.html#a3f38b90e13eccc4d52de7bbc2cbcb9aa',1,'CompoundShape::GetIntersectingSubShapes(const OrientedBox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const =0'],['../class_compound_shape.html#abe5c3a8558c840abba213a6a48149f85',1,'CompoundShape::GetIntersectingSubShapes(const AABox &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices) const =0']]], + ['getintersectingsubshapesvisitor_187',['GetIntersectingSubShapesVisitor',['../struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a0f676ecd2951cd9c1abd7d3ebfa24561',1,'CompoundShape::GetIntersectingSubShapesVisitor']]], + ['getinversecenterofmasstransform_188',['getinversecenterofmasstransform',['../class_body.html#a9c317394889f2064a20693935036eeb3',1,'Body::GetInverseCenterOfMassTransform()'],['../class_transformed_shape.html#a928f396b885e8fea11417ba0e651c678',1,'TransformedShape::GetInverseCenterOfMassTransform()']]], + ['getinverseinertia_189',['getinverseinertia',['../class_body.html#a731f2a92e9e215ff87efc831999e0e6e',1,'Body::GetInverseInertia()'],['../class_body_interface.html#a9f6a8905527bc1a025eda4f97f76f573',1,'BodyInterface::GetInverseInertia()']]], + ['getinverseinertiadiagonal_190',['GetInverseInertiaDiagonal',['../class_motion_properties.html#a4a60f30bee17d06efaa9fa368f70e260',1,'MotionProperties']]], + ['getinverseinertiaforrotation_191',['GetInverseInertiaForRotation',['../class_motion_properties.html#ab95f2b1c9b6bd9b6082f8cee8a7e1858',1,'MotionProperties']]], + ['getinversemass_192',['GetInverseMass',['../class_motion_properties.html#a8a959bd2f7d8eb581d999e3b01920aa8',1,'MotionProperties']]], + ['getinversemassunchecked_193',['GetInverseMassUnchecked',['../class_motion_properties.html#a5f3ae7ce5fe716cf9dc83f05553164b0',1,'MotionProperties']]], + ['getislandindex_194',['GetIslandIndex',['../class_large_island_splitter.html#a9c0c434f77d1e58d2fce4fbe9247236e',1,'LargeIslandSplitter']]], + ['getislandindexinternal_195',['GetIslandIndexInternal',['../class_motion_properties.html#a0907c71717fa56d6af7dfc642bc56e2b',1,'MotionProperties']]], + ['getjobsystem_196',['GetJobSystem',['../class_job_system_1_1_job.html#aa3922bb7442e7e778cec6a8ea984f454',1,'JobSystem::Job']]], + ['getjoint_197',['getjoint',['../class_skeleton.html#aec4d0e10a2ea5d08f7ea2ab4c40263c7',1,'Skeleton::GetJoint(int inJoint) const'],['../class_skeleton.html#a707d5fe6d41b2d5c2e8ecd1778c96551',1,'Skeleton::GetJoint(int inJoint)'],['../class_skeleton_pose.html#ae567801b0a70313f684d36c3137328ec',1,'SkeletonPose::GetJoint(int inJoint) const'],['../class_skeleton_pose.html#a91f801a519aa40ed65e4ff2aee71bc93',1,'SkeletonPose::GetJoint(int inJoint)']]], + ['getjointcount_198',['getjointcount',['../class_skeleton.html#a42baf00a00f27baa28254ebcd638ecd3',1,'Skeleton::GetJointCount()'],['../class_skeleton_pose.html#ada9b4b8c72f7573109277f36c5ad5eb0',1,'SkeletonPose::GetJointCount()']]], + ['getjointindex_199',['GetJointIndex',['../class_skeleton.html#a8cd408fd1003399fcdd91c9272ccf06d',1,'Skeleton']]], + ['getjointmatrices_200',['getjointmatrices',['../class_skeleton_pose.html#aa8669194e2646ec9de2fbab978e299be',1,'SkeletonPose::GetJointMatrices()'],['../class_skeleton_pose.html#a123163a0e50b7f76a7cb208df96d59b3',1,'SkeletonPose::GetJointMatrices() const']]], + ['getjointmatrix_201',['getjointmatrix',['../class_skeleton_pose.html#a067c1fa5353fa017050c331a43aeb63c',1,'SkeletonPose::GetJointMatrix(int inJoint)'],['../class_skeleton_pose.html#a9c8491b64eb337b033003d67f9c1d962',1,'SkeletonPose::GetJointMatrix(int inJoint) const']]], + ['getjoints_202',['getjoints',['../class_skeleton.html#a70591341dd88358d31e0b8dd442c0ac2',1,'Skeleton::GetJoints() const'],['../class_skeleton.html#a9f6a4cc9a5272704684dc07cea7e2fd9',1,'Skeleton::GetJoints()'],['../class_skeleton_pose.html#a7c8c656a80fb4b9509744d5a991cc34c',1,'SkeletonPose::GetJoints() const'],['../class_skeleton_pose.html#a62ddf1ab02eaf223875eeebcb2dfa617',1,'SkeletonPose::GetJoints()']]], + ['getkey_203',['GetKey',['../class_lock_free_hash_map_1_1_key_value.html#a0f063445f1fc087c20061ecf8ad157cb',1,'LockFreeHashMap::KeyValue']]], + ['getlaterallambda_204',['GetLateralLambda',['../class_wheel.html#a3a6c1824707b2851548c01bb3bcaceec',1,'Wheel']]], + ['getlayer_205',['GetLayer',['../class_character.html#a58a00716728ad3592066cb999b33ecdc',1,'Character']]], + ['getleafnodecount_206',['GetLeafNodeCount',['../class_a_a_b_b_tree_builder_1_1_node.html#a26388038bedeaa6f463327ca1542fb06',1,'AABBTreeBuilder::Node']]], + ['getleafshape_207',['getleafshape',['../class_decorated_shape.html#a3b29a28fcd37ade91f30f6e85640c688',1,'DecoratedShape::GetLeafShape()'],['../class_compound_shape.html#a40578c3218a3282bb4a39e858f01e4b0',1,'CompoundShape::GetLeafShape()'],['../class_shape.html#a11453c55f44f37cf405eee79afdbfe00',1,'Shape::GetLeafShape()']]], + ['getleansmoothingfactor_208',['GetLeanSmoothingFactor',['../class_motorcycle_controller.html#a9d7a05e2d9311d373f33354e4d75e543',1,'MotorcycleController']]], + ['getleanspringconstant_209',['GetLeanSpringConstant',['../class_motorcycle_controller.html#a7e63f90a4b0c4a787374c1724d3999d6',1,'MotorcycleController']]], + ['getleanspringdamping_210',['GetLeanSpringDamping',['../class_motorcycle_controller.html#adfe9afcb3c52f6f6012f61e55cb9fc1d',1,'MotorcycleController']]], + ['getleanspringintegrationcoefficient_211',['GetLeanSpringIntegrationCoefficient',['../class_motorcycle_controller.html#ad4a48da07b7959ee53165b149d82c7e9',1,'MotorcycleController']]], + ['getleanspringintegrationcoefficientdecay_212',['GetLeanSpringIntegrationCoefficientDecay',['../class_motorcycle_controller.html#a52a7c8e605868fe0905235c8baa598b0',1,'MotorcycleController']]], + ['getleftratio_213',['GetLeftRatio',['../class_tracked_vehicle_controller.html#a21f5ddb54144f1978e08491e236f2969',1,'TrackedVehicleController']]], + ['getlimitsmax_214',['getlimitsmax',['../class_six_d_o_f_constraint.html#a78e19363677045ac960e57d0deb166e6',1,'SixDOFConstraint::GetLimitsMax()'],['../class_slider_constraint.html#a9788e92ed539c24ab428e2e7195fe8de',1,'SliderConstraint::GetLimitsMax()'],['../class_hinge_constraint.html#a519d665c4924aa96430f28b082f0075f',1,'HingeConstraint::GetLimitsMax() const']]], + ['getlimitsmin_215',['getlimitsmin',['../class_hinge_constraint.html#a88442c3ae9fa433d4aed1484704d3b6a',1,'HingeConstraint::GetLimitsMin()'],['../class_six_d_o_f_constraint.html#a19166b2e56147da794b2651896007294',1,'SixDOFConstraint::GetLimitsMin()'],['../class_slider_constraint.html#a309ff85b227384666212461ae2a31256',1,'SliderConstraint::GetLimitsMin()']]], + ['getlimitsspringsettings_216',['getlimitsspringsettings',['../class_six_d_o_f_constraint.html#a70687b51cd67ed48ec11975e8799fcc5',1,'SixDOFConstraint::GetLimitsSpringSettings()'],['../class_slider_constraint.html#a8a6cd36dd2dfa9c9ed970222fd86ac6a',1,'SliderConstraint::GetLimitsSpringSettings()'],['../class_slider_constraint.html#acb556b36d40cbc06845355442e62b32b',1,'SliderConstraint::GetLimitsSpringSettings() const'],['../class_hinge_constraint.html#a4291ba13c80bfe5a166c5125d541c796',1,'HingeConstraint::GetLimitsSpringSettings()'],['../class_hinge_constraint.html#a24ef12595b64ec30ec2a49470b83b55f',1,'HingeConstraint::GetLimitsSpringSettings() const'],['../class_distance_constraint.html#aff807f66dc7ea24c932ac32c94d37ec4',1,'DistanceConstraint::GetLimitsSpringSettings()'],['../class_distance_constraint.html#a1f191ffd4cf8e11747be8b483a71f298',1,'DistanceConstraint::GetLimitsSpringSettings() const']]], + ['getlinearandangularvelocity_217',['GetLinearAndAngularVelocity',['../class_body_interface.html#ab10d8f90079351e23596e1abadfe7e5d',1,'BodyInterface']]], + ['getlineardamping_218',['GetLinearDamping',['../class_motion_properties.html#a8f94e1d248e0ff62aa7496e2092924a8',1,'MotionProperties']]], + ['getlineardofsmask_219',['GetLinearDOFsMask',['../class_motion_properties.html#a8da4f3c3b9d4afe28293492923f1dee0',1,'MotionProperties']]], + ['getlinearvelocity_220',['getlinearvelocity',['../class_character_virtual.html#a9f8aca4dbbb9c926e52ca8b7337c4c71',1,'CharacterVirtual::GetLinearVelocity()'],['../class_character.html#a38468a2f17e15c84019c98496909c7a9',1,'Character::GetLinearVelocity()'],['../class_motion_properties.html#a6478c1ccabfc23ee9ce98faa0643c080',1,'MotionProperties::GetLinearVelocity()'],['../class_body_interface.html#a3e25561a23fd268d649e3c968b9ffada',1,'BodyInterface::GetLinearVelocity()'],['../class_body.html#a6451197a038f1d99b4b92beae4656842',1,'Body::GetLinearVelocity()']]], + ['getlistener_221',['GetListener',['../class_character_virtual.html#aacf19c0b42216d6dc497c20556b642e7',1,'CharacterVirtual']]], + ['getlocalbounds_222',['getlocalbounds',['../class_capsule_shape.html#ac70e898196e639abb8602e67fed64848',1,'CapsuleShape::GetLocalBounds()'],['../class_soft_body_shape.html#aa6cb675060af07d4d24c6e7d6fca3d3d',1,'SoftBodyShape::GetLocalBounds()'],['../class_soft_body_motion_properties.html#a9e0c2b0a3a39fb1d97c1318c7b65f9f0',1,'SoftBodyMotionProperties::GetLocalBounds()'],['../class_triangle_shape.html#acb85ccdd921dcc7f1018bafd6cc54af0',1,'TriangleShape::GetLocalBounds()'],['../class_tapered_cylinder_shape.html#a60b656f7b68e0418f44baad933706675',1,'TaperedCylinderShape::GetLocalBounds()'],['../class_tapered_capsule_shape.html#abd2b0eee5fe8019f104f3fa8db182ef0',1,'TaperedCapsuleShape::GetLocalBounds()'],['../class_shape.html#a30ea165596e01df087f6e4980ed6b0cb',1,'Shape::GetLocalBounds()'],['../class_compound_shape.html#aed1247824e7919d8a948293f586b15dc',1,'CompoundShape::GetLocalBounds()'],['../class_convex_hull_shape.html#a49b4086adc746e5b69c772b4607cd2ec',1,'ConvexHullShape::GetLocalBounds()'],['../class_cylinder_shape.html#a2a80687423f2a189488cb20e3b8b0b18',1,'CylinderShape::GetLocalBounds()'],['../class_height_field_shape.html#aee35a24a90e88fd6858a648fcc3e8928',1,'HeightFieldShape::GetLocalBounds()'],['../class_mesh_shape.html#a81ce8f3c413f4a72f2a5a5fb00fcc256',1,'MeshShape::GetLocalBounds()'],['../class_offset_center_of_mass_shape.html#a68d4124fd359bd6f37718080371617f0',1,'OffsetCenterOfMassShape::GetLocalBounds()'],['../class_box_shape.html#a5abe98f791addef880ea73ea813ec372',1,'BoxShape::GetLocalBounds()'],['../class_sphere_shape.html#a1941ec6970a8a1daf084f5cbbf173094',1,'SphereShape::GetLocalBounds()'],['../class_plane_shape.html#a6e50ca0c9466229d8a15275bde03c2e0',1,'PlaneShape::GetLocalBounds()'],['../class_rotated_translated_shape.html#adaffc4cb4b4ecb75c984b4dd655f8e53',1,'RotatedTranslatedShape::GetLocalBounds()'],['../class_scaled_shape.html#a98bf01077d911fb1ece20a2c11aa6d8c',1,'ScaledShape::GetLocalBounds()']]], + ['getlocalcontactpoint_223',['GetLocalContactPoint',['../class_soft_body_manifold.html#a1df540bbc021bfd1c7e14caa2f1c77aa',1,'SoftBodyManifold']]], + ['getlocalforward_224',['GetLocalForward',['../class_vehicle_constraint.html#a5a54f4f23549e7d828e4a2e51fcfc312',1,'VehicleConstraint']]], + ['getlocalspacehingeaxis1_225',['GetLocalSpaceHingeAxis1',['../class_hinge_constraint.html#ac42523160446c880453eacb77d0453fa',1,'HingeConstraint']]], + ['getlocalspacehingeaxis2_226',['GetLocalSpaceHingeAxis2',['../class_hinge_constraint.html#aa3feb036294982548963aa7351b14981',1,'HingeConstraint']]], + ['getlocalspaceinverseinertia_227',['GetLocalSpaceInverseInertia',['../class_motion_properties.html#ad52e9ac8d614918a8dc9c80f22b4847e',1,'MotionProperties']]], + ['getlocalspaceinverseinertiaunchecked_228',['GetLocalSpaceInverseInertiaUnchecked',['../class_motion_properties.html#a994dad1b2bf71b0f0394bec77fcb9b8e',1,'MotionProperties']]], + ['getlocalspacenormalaxis1_229',['GetLocalSpaceNormalAxis1',['../class_hinge_constraint.html#a9dc2dd124efb401c50169f67c0958b81',1,'HingeConstraint']]], + ['getlocalspacenormalaxis2_230',['GetLocalSpaceNormalAxis2',['../class_hinge_constraint.html#a4c3ac4ceae329cf7910f28d2bcf9c8bf',1,'HingeConstraint']]], + ['getlocalspacepoint1_231',['getlocalspacepoint1',['../class_point_constraint.html#a8fcc860c0b8ee43e08d599d8c3aaa3cd',1,'PointConstraint::GetLocalSpacePoint1()'],['../class_hinge_constraint.html#af0cd2640d5ea0e2c8fecd6af90d90a0a',1,'HingeConstraint::GetLocalSpacePoint1()']]], + ['getlocalspacepoint2_232',['getlocalspacepoint2',['../class_point_constraint.html#aec29f6eef0cbafd0b0f9a97caa50b83a',1,'PointConstraint::GetLocalSpacePoint2()'],['../class_hinge_constraint.html#a86cca7ab010c4fe5ef29c514a2b3e651',1,'HingeConstraint::GetLocalSpacePoint2()']]], + ['getlocalspaceposition1_233',['GetLocalSpacePosition1',['../class_swing_twist_constraint.html#a5cf8ea24972bf6fd7c614d8e5a851b37',1,'SwingTwistConstraint']]], + ['getlocalspaceposition2_234',['GetLocalSpacePosition2',['../class_swing_twist_constraint.html#ab2ddd5c601f20912ceeaeb2cd01cc601',1,'SwingTwistConstraint']]], + ['getlocaltransformnoscale_235',['GetLocalTransformNoScale',['../struct_compound_shape_1_1_sub_shape.html#a18ba22cc1d5ad095bce61a7fcfcbcc25',1,'CompoundShape::SubShape']]], + ['getlocalup_236',['GetLocalUp',['../class_vehicle_constraint.html#a9e88c415ed7c4ae5cea93506fd53ae28',1,'VehicleConstraint']]], + ['getlockedtranslations_237',['getlockedtranslations',['../class_skeleton_mapper.html#ae866ae2bc8b6461888f555b6a9be0d16',1,'SkeletonMapper::GetLockedTranslations() const'],['../class_skeleton_mapper.html#a9e9a4605520a2d38d190e0f651b3b6c2',1,'SkeletonMapper::GetLockedTranslations()']]], + ['getlod_238',['GetLOD',['../class_debug_renderer_1_1_geometry.html#a1e5eb47480d97915873308ba4fa97ed9',1,'DebugRenderer::Geometry']]], + ['getlongitudinallambda_239',['GetLongitudinalLambda',['../class_wheel.html#acb42426249dba7e845b7ea288cda99dd',1,'Wheel']]], + ['getlowestcomponentindex_240',['GetLowestComponentIndex',['../class_vec3.html#a502453ae3005d5b84a221adf80721f92',1,'Vec3']]], + ['getlowestindexfirst_241',['GetLowestIndexFirst',['../class_indexed_triangle.html#ab22b9836ef1955232fd0ec1099d69965',1,'IndexedTriangle']]], + ['getmappedjointidx_242',['GetMappedJointIdx',['../class_skeleton_mapper.html#a21b16b76b464cf207878aa382c6cfde4',1,'SkeletonMapper']]], + ['getmappings_243',['getmappings',['../class_skeleton_mapper.html#a13fa458d09dbb5f053aff54bb009d0eb',1,'SkeletonMapper::GetMappings() const'],['../class_skeleton_mapper.html#a120855b77dff525cd820068b115e101f',1,'SkeletonMapper::GetMappings()']]], + ['getmass_244',['GetMass',['../class_character_virtual.html#a1ae032d5f31f955686e3c519abfaa1a4',1,'CharacterVirtual']]], + ['getmassproperties_245',['getmassproperties',['../class_offset_center_of_mass_shape.html#ac1699a722db6d84580b59a3058af572c',1,'OffsetCenterOfMassShape::GetMassProperties()'],['../class_height_field_shape.html#ae44d36f0e2b925556c4f6f2f30803b62',1,'HeightFieldShape::GetMassProperties()'],['../class_cylinder_shape.html#ac3f61c0e5ec4913f57a7842fcd8569fe',1,'CylinderShape::GetMassProperties()'],['../class_mesh_shape.html#aeb665b7fb7702d516f965441b421f997',1,'MeshShape::GetMassProperties()'],['../class_convex_hull_shape.html#aef499d89aadc1f62c7d2acc527d54e4f',1,'ConvexHullShape::GetMassProperties()'],['../class_compound_shape.html#a24b8501f64dae77c9cb4cfa408fc7537',1,'CompoundShape::GetMassProperties()'],['../class_capsule_shape.html#a5eb19a20ae866f171dbbb7b2d5449d1c',1,'CapsuleShape::GetMassProperties()'],['../class_box_shape.html#a2a6f91fa07d5ef9ef2541c0acfcdf9e8',1,'BoxShape::GetMassProperties()'],['../class_body_creation_settings.html#acce5eaf6c72e325d23d8d791039c6954',1,'BodyCreationSettings::GetMassProperties()'],['../class_soft_body_shape.html#ac8e3e81fea2706ab86fcf9aa9302d40d',1,'SoftBodyShape::GetMassProperties()'],['../class_triangle_shape.html#aed1e73c2a8e181beb5c775bd5bddca6f',1,'TriangleShape::GetMassProperties()'],['../class_tapered_cylinder_shape.html#a2b7b27c9244c7e2812161608125fbebd',1,'TaperedCylinderShape::GetMassProperties()'],['../class_tapered_capsule_shape.html#ad3455a4df764b73c9b62450ab39ee7e0',1,'TaperedCapsuleShape::GetMassProperties()'],['../class_sphere_shape.html#a1febf0517dfc8b724d1bd3b3c2decf55',1,'SphereShape::GetMassProperties()'],['../class_shape.html#a00d0953c120d9e175960c9e6629f108f',1,'Shape::GetMassProperties()'],['../class_scaled_shape.html#a8e96fae113643ee75eb5f6355abd5425',1,'ScaledShape::GetMassProperties()'],['../class_rotated_translated_shape.html#a05206d318c8849d711695b1ae36c98b2',1,'RotatedTranslatedShape::GetMassProperties()'],['../class_plane_shape.html#a079aa97d19c887ae416439fcbd55388d',1,'PlaneShape::GetMassProperties()']]], + ['getmaterial_246',['getmaterial',['../class_height_field_shape.html#a0a17b135a1676e5588f012978824316b',1,'HeightFieldShape::GetMaterial()'],['../class_soft_body_shape.html#a3123c23cde35ee4b94cfa9639321193d',1,'SoftBodyShape::GetMaterial()'],['../class_transformed_shape.html#a8995638ea07aab36ba41e63bce603002',1,'TransformedShape::GetMaterial()'],['../class_shape.html#a7f92a050d292158b83ef016eb5d3f168',1,'Shape::GetMaterial()'],['../class_plane_shape.html#ab0b17f6459d40f97980bcf004eff5cdb',1,'PlaneShape::GetMaterial()'],['../class_mesh_shape.html#a78ab194a4c2f30c0e0f22160ba06fd37',1,'MeshShape::GetMaterial()'],['../class_height_field_shape.html#aceccce9f2e21821c5e4f34c6f1e556b1',1,'HeightFieldShape::GetMaterial()'],['../class_decorated_shape.html#a14df32d1573050287d989ce5171a1a86',1,'DecoratedShape::GetMaterial()'],['../class_convex_shape.html#a7c9d827d2e8d38b5ba1ed2d4f9263b15',1,'ConvexShape::GetMaterial() const'],['../class_convex_shape.html#a7a9e29e9a33f123f0ab8b25dd4e04cc0',1,'ConvexShape::GetMaterial(const SubShapeID &inSubShapeID) const override'],['../class_compound_shape.html#a53e888da6c84a5a7a8b96bacd0a12f92',1,'CompoundShape::GetMaterial()'],['../class_body_interface.html#a4b76f55d8fcbb5bb8c170069d03c1f79',1,'BodyInterface::GetMaterial()']]], + ['getmaterialindex_247',['GetMaterialIndex',['../class_mesh_shape.html#affe7babd3e7126cb8cb089b7a33d3410',1,'MeshShape']]], + ['getmateriallist_248',['getmateriallist',['../class_height_field_shape.html#a22b4896fe8cc6cce3f0553dc7d81922b',1,'HeightFieldShape::GetMaterialList()'],['../class_mesh_shape.html#abc932809f3332fac2caafb8cb9ff6daf',1,'MeshShape::GetMaterialList()']]], + ['getmaterials_249',['getmaterials',['../class_soft_body_motion_properties.html#a1fc5838f0275d998d9431767dc516a71',1,'SoftBodyMotionProperties::GetMaterials()'],['../class_height_field_shape.html#aa9f1b2b52ce3e1475c70d79f4befd5d8',1,'HeightFieldShape::GetMaterials()']]], + ['getmaxangularvelocity_250',['GetMaxAngularVelocity',['../class_motion_properties.html#a5c7901aaa430061775c7c39af08168db',1,'MotionProperties']]], + ['getmaxbodies_251',['getmaxbodies',['../class_body_manager.html#ad54b2a378ee3653de2130da1ab3f69a5',1,'BodyManager::GetMaxBodies()'],['../class_physics_system.html#a77646a1768d1cfc892b6238bf614ed9f',1,'PhysicsSystem::GetMaxBodies()']]], + ['getmaxbuckets_252',['GetMaxBuckets',['../class_lock_free_hash_map.html#a99097bb01c8c980e4fe1be3bc63c8415',1,'LockFreeHashMap']]], + ['getmaxconcurrency_253',['getmaxconcurrency',['../class_job_system_single_threaded.html#a4e99aebfb2308cf3c4bdd8e54bb71799',1,'JobSystemSingleThreaded::GetMaxConcurrency()'],['../class_job_system.html#a5953ad34be5c47e7896b87ac7409b7d7',1,'JobSystem::GetMaxConcurrency()'],['../class_physics_update_context.html#a26f629d14c71383b17923a0544158680',1,'PhysicsUpdateContext::GetMaxConcurrency()'],['../class_job_system_thread_pool.html#ad9d1ead2ffc5ab1ec9aa6e06948c98ac',1,'JobSystemThreadPool::GetMaxConcurrency()']]], + ['getmaxconstraints_254',['GetMaxConstraints',['../class_contact_constraint_manager.html#a50938b07679f8a97fff61e98a209c87c',1,'ContactConstraintManager']]], + ['getmaxdepth_255',['GetMaxDepth',['../class_a_a_b_b_tree_builder_1_1_node.html#aef9d9d0695306595e4b6f16b2b47e60c',1,'AABBTreeBuilder::Node']]], + ['getmaxdistance_256',['GetMaxDistance',['../class_distance_constraint.html#a4ed1c3635f00b8f94624290bb7b11f4f',1,'DistanceConstraint']]], + ['getmaxfriction_257',['GetMaxFriction',['../class_six_d_o_f_constraint.html#a874ef6ddc1368b003ba0eb2808adf17c',1,'SixDOFConstraint']]], + ['getmaxfrictionforce_258',['getmaxfrictionforce',['../class_slider_constraint.html#ae28f6bc1a08e8d68beee8ad0678a7c23',1,'SliderConstraint::GetMaxFrictionForce()'],['../class_path_constraint.html#a0de4a86654e7757baf2e0715aae9e221',1,'PathConstraint::GetMaxFrictionForce()']]], + ['getmaxfrictiontorque_259',['getmaxfrictiontorque',['../class_hinge_constraint.html#a9695f177868118de9520091ac2eb8585',1,'HingeConstraint::GetMaxFrictionTorque()'],['../class_swing_twist_constraint.html#a663ea09e2e7019d0d43fec36cd3b89f1',1,'SwingTwistConstraint::GetMaxFrictionTorque()']]], + ['getmaxheightvalue_260',['GetMaxHeightValue',['../class_height_field_shape.html#a802b254c4c64f55ddfe84b399dae0a1b',1,'HeightFieldShape']]], + ['getmaxhitsexceeded_261',['GetMaxHitsExceeded',['../class_character_virtual.html#a4bcaf2938288d8a8cbf907f74851b109',1,'CharacterVirtual']]], + ['getmaxlength_262',['GetMaxLength',['../class_pulley_constraint.html#aabb79ec76059c338d98d5ca9b2cd2d98',1,'PulleyConstraint']]], + ['getmaxlinearvelocity_263',['GetMaxLinearVelocity',['../class_motion_properties.html#a322397545544a5b330d68fa894e021cf',1,'MotionProperties']]], + ['getmaxnumhits_264',['GetMaxNumHits',['../class_character_virtual.html#a6b037237b95355079f9aca7904899004',1,'CharacterVirtual']]], + ['getmaxstrength_265',['GetMaxStrength',['../class_character_virtual.html#a6d11baa32abe7ab7f75100daca4fda2c',1,'CharacterVirtual']]], + ['getmaxx_266',['GetMaxX',['../class_linear_curve.html#aa92a24bc4fff522ea56c5a0dadbf6ff4',1,'LinearCurve']]], + ['getmemberpointer_267',['getmemberpointer',['../class_serializable_attribute.html#a72008d94009acc09cec81d10486783eb',1,'SerializableAttribute::GetMemberPointer(const void *inObject) const'],['../class_serializable_attribute.html#a835cd7db4edd6bd36f2130e9498122c2',1,'SerializableAttribute::GetMemberPointer(void *inObject) const']]], + ['getmemberprimitivetype_268',['GetMemberPrimitiveType',['../class_serializable_attribute.html#a6738344c9c5ddbf28680db6511dda210',1,'SerializableAttribute']]], + ['getmindepth_269',['GetMinDepth',['../class_a_a_b_b_tree_builder_1_1_node.html#a22a2cb2691825e2935516c36bc936875',1,'AABBTreeBuilder::Node']]], + ['getmindistance_270',['GetMinDistance',['../class_distance_constraint.html#a4417a1efabd5ff92a82b5657479eab93',1,'DistanceConstraint']]], + ['getminheightvalue_271',['GetMinHeightValue',['../class_height_field_shape.html#a9111226dd889b546f466da2b53d1a01b',1,'HeightFieldShape']]], + ['getminlength_272',['GetMinLength',['../class_pulley_constraint.html#a7736c362467fcdcc9e1922b6847cd77a',1,'PulleyConstraint']]], + ['getminvertexindex_273',['getminvertexindex',['../struct_soft_body_shared_settings_1_1_dihedral_bend.html#af40fcceebc4074cd387372bb8bd60044',1,'SoftBodySharedSettings::DihedralBend::GetMinVertexIndex()'],['../struct_soft_body_shared_settings_1_1_edge.html#a2542e95a101443bb88ef41b38e569a8d',1,'SoftBodySharedSettings::Edge::GetMinVertexIndex()'],['../class_soft_body_shared_settings_1_1_l_r_a.html#a084ffb68e51232e9462952f97effea6d',1,'SoftBodySharedSettings::LRA::GetMinVertexIndex()'],['../struct_soft_body_shared_settings_1_1_volume.html#a57d932ebc0d377fd39b109991ebbc51c',1,'SoftBodySharedSettings::Volume::GetMinVertexIndex()']]], + ['getminx_274',['GetMinX',['../class_linear_curve.html#ac23b16f88bf858f9ff79e9a94500b549',1,'LinearCurve']]], + ['getmotionproperties_275',['getmotionproperties',['../class_body.html#aa9e634771e2ed719757a71cb9751b353',1,'Body::GetMotionProperties()'],['../class_body.html#a0d39987255227c4221fcea66cb1fc041',1,'Body::GetMotionProperties() const']]], + ['getmotionpropertiesunchecked_276',['getmotionpropertiesunchecked',['../class_body.html#ad0cc27e6920daa31fc9e42a7824d2d02',1,'Body::GetMotionPropertiesUnchecked()'],['../class_body.html#abe012219037c12313c7ef1116ee74865',1,'Body::GetMotionPropertiesUnchecked() const']]], + ['getmotionquality_277',['getmotionquality',['../class_motion_properties.html#acd43aa954cec19be744724fd633f892a',1,'MotionProperties::GetMotionQuality()'],['../class_body_interface.html#a3b3b74fdcf84502aaa693303bf0a91a5',1,'BodyInterface::GetMotionQuality(const BodyID &inBodyID) const']]], + ['getmotiontype_278',['getmotiontype',['../class_body_interface.html#a28dc9afdb017050075993e360cfc83ec',1,'BodyInterface::GetMotionType()'],['../class_body.html#a146a4745ed28c3d9b06abe02ee3d3490',1,'Body::GetMotionType()']]], + ['getmotorsettings_279',['getmotorsettings',['../class_slider_constraint.html#a312b98bfdc4c378cdbabdbd7c34e5458',1,'SliderConstraint::GetMotorSettings() const'],['../class_slider_constraint.html#ad920e0c8e131f4c9e3eae8be918daea2',1,'SliderConstraint::GetMotorSettings()'],['../class_six_d_o_f_constraint.html#a12db08dc07d7ae6cf63acdb8e17547b7',1,'SixDOFConstraint::GetMotorSettings(EAxis inAxis) const'],['../class_six_d_o_f_constraint.html#a3e4372d1567140760e6cf46710108675',1,'SixDOFConstraint::GetMotorSettings(EAxis inAxis)'],['../class_hinge_constraint.html#a41dac9c0b4fcaf494aea48d3347203fd',1,'HingeConstraint::GetMotorSettings() const'],['../class_hinge_constraint.html#a7fe69abe4b705d335b485eaa97b13ef1',1,'HingeConstraint::GetMotorSettings()']]], + ['getmotorstate_280',['getmotorstate',['../class_hinge_constraint.html#a1dd81b1a4fa3416340a80680124dce2a',1,'HingeConstraint::GetMotorState()'],['../class_six_d_o_f_constraint.html#adcda93c3a6ca21bf6ed39b264a020f38',1,'SixDOFConstraint::GetMotorState()'],['../class_slider_constraint.html#af4b5d7b41aa1514342586fef277fabd5',1,'SliderConstraint::GetMotorState()']]], + ['getmutexbyindex_281',['GetMutexByIndex',['../class_mutex_array.html#ab1837f7f0a9b0ce63ccbf6d34ca26058',1,'MutexArray']]], + ['getmutexbyobjectindex_282',['GetMutexByObjectIndex',['../class_mutex_array.html#a39bf8c118d368c256e5a5c09b39a42be',1,'MutexArray']]], + ['getmutexforbody_283',['GetMutexForBody',['../class_body_manager.html#a608703b173fa10233dfd617150a2db67',1,'BodyManager']]], + ['getmutexindex_284',['GetMutexIndex',['../class_mutex_array.html#a149c27328334bbe38b64230f2a5251f8',1,'MutexArray']]], + ['getmutexmask_285',['getmutexmask',['../class_body_manager.html#a447a132451ef5c4def8e0c51450b2701',1,'BodyManager::GetMutexMask()'],['../class_body_lock_interface_locking.html#ad5654fb1a33df17e9bc1aada33b5dcab',1,'BodyLockInterfaceLocking::GetMutexMask()'],['../class_body_lock_interface_no_lock.html#a49bd93a0cda1adce88e20921774d94a6',1,'BodyLockInterfaceNoLock::GetMutexMask()'],['../class_body_lock_interface.html#a3bfe95981277029552253f953f5e2179',1,'BodyLockInterface::GetMutexMask()']]], + ['getname_286',['getname',['../class_job_system_1_1_job.html#a426bcf2faa48d1ba4cf7874a32910f83',1,'JobSystem::Job::GetName()'],['../class_quad_tree.html#a06027549b2942685a32f433f9c304d03',1,'QuadTree::GetName()'],['../class_serializable_attribute.html#aeef84793af0dbf4397f0e0ca4590a39c',1,'SerializableAttribute::GetName()'],['../class_r_t_t_i.html#a0d8d743280e7d661ef74c26b8b45e3a9',1,'RTTI::GetName()']]], + ['getnarrowphasequery_287',['GetNarrowPhaseQuery',['../class_physics_system.html#a1ced58861f3fbb7cfea901128bb7a84d',1,'PhysicsSystem']]], + ['getnarrowphasequerynolock_288',['GetNarrowPhaseQueryNoLock',['../class_physics_system.html#a472f122c70806d1a2b88fbb441be42e0',1,'PhysicsSystem']]], + ['getnchildren_289',['GetNChildren',['../class_a_a_b_b_tree_builder_1_1_node.html#a8babc5943488e1ca48b9768c647f599a',1,'AABBTreeBuilder::Node']]], + ['getnextedge_290',['GetNextEdge',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a6a342146811919c9bdd18ee827e1ee87',1,'EPAConvexHullBuilder::Triangle']]], + ['getnextpowerof2_291',['GetNextPowerOf2',['../_math_8h.html#ae0004008e30f155d5c7b71eafe3c4790',1,'Math.h']]], + ['getnodecount_292',['GetNodeCount',['../class_a_a_b_b_tree_builder_1_1_node.html#ae1245ceb7193257c465b0916c9c19f10',1,'AABBTreeBuilder::Node']]], + ['getnodeheader_293',['GetNodeHeader',['../class_a_a_b_b_tree_to_buffer.html#ab50a5ee87130c340d6b3cf8816ebf249',1,'AABBTreeToBuffer']]], + ['getnormal_294',['getnormal',['../class_plane.html#a70e66a46d4eb8b334c929ad71c48ba42',1,'Plane::GetNormal()'],['../class_ellipse.html#a827cce3196e44e983b0fb525eb9d52ac',1,'Ellipse::GetNormal()']]], + ['getnormalhalfconeangle_295',['GetNormalHalfConeAngle',['../class_swing_twist_constraint.html#a01fffaa54b35ffbe9321bd6549346b4d',1,'SwingTwistConstraint']]], + ['getnormalizedperpendicular_296',['GetNormalizedPerpendicular',['../class_vec3.html#a24a96972fdbe04ae9a3e340fd4c39b81',1,'Vec3']]], + ['getnumactivebodies_297',['getnumactivebodies',['../class_physics_system.html#a294887e565856fe5305419aa4432e33e',1,'PhysicsSystem::GetNumActiveBodies()'],['../class_body_manager.html#afc847edf3623bce165d4c872f0dc4d68',1,'BodyManager::GetNumActiveBodies(EBodyType inType) const']]], + ['getnumactiveccdbodies_298',['GetNumActiveCCDBodies',['../class_body_manager.html#a462f40b51e2bbdae500c62584d0376be',1,'BodyManager']]], + ['getnumbitswritten_299',['GetNumBitsWritten',['../class_sub_shape_i_d_creator.html#a788289a4af585ce7f0bc7416d6b5d93c',1,'SubShapeIDCreator']]], + ['getnumbodies_300',['getnumbodies',['../class_physics_scene.html#acfb0a143a8984c6ca97f010c9ea94a08',1,'PhysicsScene::GetNumBodies()'],['../class_physics_system.html#a25eb1c752bffdd53c2c7cd610f2708f7',1,'PhysicsSystem::GetNumBodies()'],['../class_body_manager.html#a28e008be233691bbccef7d17e20d113d',1,'BodyManager::GetNumBodies()']]], + ['getnumbroadphaselayers_301',['getnumbroadphaselayers',['../class_broad_phase_layer_interface_mask.html#a5c4d1d6ac5321a8bd30ddd54be36f24d',1,'BroadPhaseLayerInterfaceMask::GetNumBroadPhaseLayers()'],['../class_broad_phase_layer_interface_table.html#a0b15a05cfa5251b19bd3f1e5c14b38f3',1,'BroadPhaseLayerInterfaceTable::GetNumBroadPhaseLayers()'],['../class_broad_phase_layer_interface.html#a3eeb469199592955036a5b24633b8f53',1,'BroadPhaseLayerInterface::GetNumBroadPhaseLayers()']]], + ['getnumbuckets_302',['GetNumBuckets',['../class_lock_free_hash_map.html#ab0b1ca4bac3c00813a024ed4b462e44d',1,'LockFreeHashMap']]], + ['getnumconstraints_303',['getnumconstraints',['../class_physics_scene.html#a62a1ad6dbbb7d6ef95f3556608be1717',1,'PhysicsScene::GetNumConstraints()'],['../struct_large_island_splitter_1_1_split.html#a7be7a84dab98a3ec965a98117dde3267',1,'LargeIslandSplitter::Split::GetNumConstraints()'],['../class_contact_constraint_manager.html#aad540014a518a8f5942842e1a347447f',1,'ContactConstraintManager::GetNumConstraints()'],['../class_constraint_manager.html#acd910b293c763c5c5a6f7c29a37721fb',1,'ConstraintManager::GetNumConstraints()']]], + ['getnumcontacts_304',['GetNumContacts',['../struct_large_island_splitter_1_1_split.html#abf23d7df82ca57e028f02e98b0dc578b',1,'LargeIslandSplitter::Split']]], + ['getnumfaces_305',['GetNumFaces',['../class_convex_hull_shape.html#a93a52de78a436f3c3a54c72a9c9e1e05',1,'ConvexHullShape']]], + ['getnumframes_306',['GetNumFrames',['../class_debug_renderer_playback.html#afd7aac14421906d07df334e1d3a8f31c',1,'DebugRendererPlayback']]], + ['getnumislands_307',['GetNumIslands',['../class_island_builder.html#a6f0d6d67425a9d02cf561a06784431f4',1,'IslandBuilder']]], + ['getnumitems_308',['GetNumItems',['../struct_large_island_splitter_1_1_split.html#a360a0aa43dfc7ff2943a77d99f4c3513',1,'LargeIslandSplitter::Split']]], + ['getnumiterations_309',['GetNumIterations',['../class_soft_body_motion_properties.html#adc98275db06cee84d06be488a9806ca5',1,'SoftBodyMotionProperties']]], + ['getnummutexes_310',['GetNumMutexes',['../class_mutex_array.html#afa901f85cfe3dff0c32edc0d8a852813',1,'MutexArray']]], + ['getnumobjectlayers_311',['GetNumObjectLayers',['../class_object_layer_pair_filter_table.html#a1f1540757a584e5409d8dd8f6d8c64b4',1,'ObjectLayerPairFilterTable']]], + ['getnumpoints_312',['GetNumPoints',['../class_convex_hull_shape.html#adb56ee374395d692a32d08975e8d91ff',1,'ConvexHullShape']]], + ['getnumpositionsteps_313',['getnumpositionsteps',['../class_island_builder.html#a213561deca43cb4c9bde6560bed5a0e1',1,'IslandBuilder::GetNumPositionSteps()'],['../class_calculate_solver_steps.html#acdbd82e652ad5f8e4f1ebd10081dbae3',1,'CalculateSolverSteps::GetNumPositionSteps()']]], + ['getnumpositionstepsoverride_314',['getnumpositionstepsoverride',['../class_constraint.html#ad2530947a5b0c4c24e965ab85fdf9ec8',1,'Constraint::GetNumPositionStepsOverride()'],['../class_motion_properties.html#a4e7820bc189da3db3f2135686bfa0e9d',1,'MotionProperties::GetNumPositionStepsOverride()']]], + ['getnumresults_315',['GetNumResults',['../struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a61d8a2add21106dc7b21b46cab11bc93',1,'CompoundShape::GetIntersectingSubShapesVisitor']]], + ['getnumsoftbodies_316',['GetNumSoftBodies',['../class_physics_scene.html#a53902e4b6f7f482fb490bb9f4219ed78',1,'PhysicsScene']]], + ['getnumsplits_317',['GetNumSplits',['../class_large_island_splitter_1_1_splits.html#a9a7977a12a99fe498e1ca8445eb73409',1,'LargeIslandSplitter::Splits']]], + ['getnumstepsbetweencollisiontestactive_318',['GetNumStepsBetweenCollisionTestActive',['../class_vehicle_constraint.html#aa5612804e5026fcc8c90b0bfab6aba48',1,'VehicleConstraint']]], + ['getnumstepsbetweencollisiontestinactive_319',['GetNumStepsBetweenCollisionTestInactive',['../class_vehicle_constraint.html#a261afc478f9af64ffbf377f86b705f55',1,'VehicleConstraint']]], + ['getnumsubshapes_320',['GetNumSubShapes',['../class_compound_shape.html#abe1e5333a667ccd80b6146b951abf918',1,'CompoundShape']]], + ['getnumvelocitysteps_321',['GetNumVelocitySteps',['../class_calculate_solver_steps.html#a262debb9c3b307d430c154b91306268a',1,'CalculateSolverSteps']]], + ['getnumvelocitystepsoverride_322',['getnumvelocitystepsoverride',['../class_motion_properties.html#a5f3564a6a505e92239eea4ba544fc119',1,'MotionProperties::GetNumVelocityStepsOverride()'],['../class_constraint.html#a56624d10dcf6dd18fa8903897fcc2a03',1,'Constraint::GetNumVelocityStepsOverride()']]], + ['getnumverticesinface_323',['GetNumVerticesInFace',['../class_convex_hull_shape.html#a57b08042d580d3cecbef5cb5e7dd179f',1,'ConvexHullShape']]], + ['getnumverticesused_324',['GetNumVerticesUsed',['../class_convex_hull_builder.html#af5deecbd010d00845107696af6797e63',1,'ConvexHullBuilder']]], + ['getobjectlayer_325',['getobjectlayer',['../class_body.html#a652dca18d0969696d5a4a589c30eddc2',1,'Body::GetObjectLayer()'],['../class_body_interface.html#a4b8d499ac748154a6bdaf948377a0071',1,'BodyInterface::GetObjectLayer()'],['../class_vehicle_collision_tester.html#a168d396a1e2431a984b36e83c2affe07',1,'VehicleCollisionTester::GetObjectLayer() const']]], + ['getobjectlayerfilter_326',['GetObjectLayerFilter',['../class_vehicle_collision_tester.html#ae02f257dee03c198b8ae2acd26143236',1,'VehicleCollisionTester']]], + ['getoffset_327',['GetOffset',['../class_offset_center_of_mass_shape.html#a39dd403b80dac228ece27bae9f03cf90',1,'OffsetCenterOfMassShape']]], + ['getpath_328',['GetPath',['../class_path_constraint.html#ab2fd78b89e5df020c5ed865c900326d4',1,'PathConstraint']]], + ['getpathfraction_329',['GetPathFraction',['../class_path_constraint.html#af0f434b2bb5e416a6efc402aaa5eba22',1,'PathConstraint']]], + ['getpathmaxfraction_330',['getpathmaxfraction',['../class_path_constraint_path_hermite.html#aafea15f5e08786a10baea9f92e01426c',1,'PathConstraintPathHermite::GetPathMaxFraction()'],['../class_path_constraint_path.html#aae9ea1aede3ece72c5620bf88776757d',1,'PathConstraintPath::GetPathMaxFraction()']]], + ['getpenetrationdepth_331',['GetPenetrationDepth',['../class_e_p_a_penetration_depth.html#a8368ab4825b799eb57d6f6cf841087e2',1,'EPAPenetrationDepth']]], + ['getpenetrationdepthstepepa_332',['GetPenetrationDepthStepEPA',['../class_e_p_a_penetration_depth.html#acff8a6121c0896e3aabbe3a18019f201',1,'EPAPenetrationDepth']]], + ['getpenetrationdepthstepgjk_333',['GetPenetrationDepthStepGJK',['../class_e_p_a_penetration_depth.html#a903dc39955aae9b4e9eced5a396eb5a7',1,'EPAPenetrationDepth']]], + ['getpenetrationrecoveryspeed_334',['GetPenetrationRecoverySpeed',['../class_character_virtual.html#a2407cd5fec2965214f0d9c3c27eb47ca',1,'CharacterVirtual']]], + ['getperpendicular_335',['GetPerpendicular',['../class_quat.html#abba5ae611cba89b67e967945ffe32c8f',1,'Quat']]], + ['getpessimisticmemoryestimate_336',['getpessimisticmemoryestimate',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#ae8eb05b5245787f87587b5d24aa4f469',1,'TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext::GetPessimisticMemoryEstimate()'],['../class_node_codec_quad_tree_half_float_1_1_encoding_context.html#a743407baa5c478e69bb3f36dcd4b0e5e',1,'NodeCodecQuadTreeHalfFloat::EncodingContext::GetPessimisticMemoryEstimate()']]], + ['getphysicssettings_337',['GetPhysicsSettings',['../class_physics_system.html#a54b6d93365bca8fda1edf68997c29b9e',1,'PhysicsSystem']]], + ['getplane_338',['GetPlane',['../class_plane_shape.html#a036800bdcab80d0612d530a1fef3de7e',1,'PlaneShape']]], + ['getplanehalfconeangle_339',['GetPlaneHalfConeAngle',['../class_swing_twist_constraint.html#a6529b62b9a91f1f1093116a789f1d5ca',1,'SwingTwistConstraint']]], + ['getplanes_340',['GetPlanes',['../class_convex_hull_shape.html#a82497cbbe81983826a5f13a0dd0f3b2b',1,'ConvexHullShape']]], + ['getpoint_341',['GetPoint',['../class_convex_hull_shape.html#a611a3efc9d9016c15917bf329eadf2ec',1,'ConvexHullShape']]], + ['getpointonpath_342',['getpointonpath',['../class_path_constraint_path_hermite.html#a5645f67f35fd20fe9a966a40a19d0eb8',1,'PathConstraintPathHermite::GetPointOnPath()'],['../class_path_constraint_path.html#aa0dc6d3e2b57196ca90da9c10d37f9ea',1,'PathConstraintPath::GetPointOnPath()']]], + ['getpointonray_343',['getpointonray',['../struct_shape_cast_t.html#a90dcaf5d1e22122cf08862b9da811c96',1,'ShapeCastT::GetPointOnRay()'],['../struct_ray_cast_t.html#abe1d2e9b088ca71ca732e0b5234696fd',1,'RayCastT::GetPointOnRay()']]], + ['getpoints_344',['getpoints',['../class_convex_hull_shape_1_1_hull_no_convex.html#ae04c0e70e714f921fadc87f564dba26e',1,'ConvexHullShape::HullNoConvex::GetPoints()'],['../class_convex_hull_shape_1_1_hull_no_convex.html#a92d3e4199e5b0f75fb4726659a67b4f3',1,'ConvexHullShape::HullNoConvex::GetPoints() const']]], + ['getpointvelocity_345',['getpointvelocity',['../class_body.html#a04705ba7fe0c4cfac8bda79a43421beb',1,'Body::GetPointVelocity()'],['../class_body_interface.html#a0861d123b1e074d35c8f9e0151e391d6',1,'BodyInterface::GetPointVelocity()']]], + ['getpointvelocitycom_346',['getpointvelocitycom',['../class_body.html#a19540cae81c6338eb7023bb9c923b0d4',1,'Body::GetPointVelocityCOM()'],['../class_motion_properties.html#a3b3277de19d5dc081a6e15111f7dc14c',1,'MotionProperties::GetPointVelocityCOM()']]], + ['getpose_347',['getpose',['../class_ragdoll.html#aeb6b26fdc0eefbb815af1d06c9e5da69',1,'Ragdoll::GetPose(SkeletonPose &outPose, bool inLockBodies=true)'],['../class_ragdoll.html#a9c9a6d0791b776f4360d0cd9ddfc6f84',1,'Ragdoll::GetPose(RVec3 &outRootOffset, Mat44 *outJointMatrices, bool inLockBodies=true)']]], + ['getposition_348',['getposition',['../class_height_field_shape.html#a402509e2c2280d728b9e0a1290e680ba',1,'HeightFieldShape::GetPosition()'],['../class_body.html#adce53bad2dc9f79804d6a01d435c06e0',1,'Body::GetPosition()'],['../class_body_interface.html#a97f114a5663f7a5e9461c73c01d4b2af',1,'BodyInterface::GetPosition()'],['../class_character.html#abb9ac0e79c04c6e1016511a162bc0855',1,'Character::GetPosition()'],['../class_character_virtual.html#a24f025912ca62c15e830bd6213129d6b',1,'CharacterVirtual::GetPosition()'],['../class_rotated_translated_shape.html#ab7cda756537d468e9260ed98a9ddb523',1,'RotatedTranslatedShape::GetPosition()']]], + ['getpositionandrotation_349',['getpositionandrotation',['../class_body_interface.html#a48912c55b281718dbd1cb25e6797c46e',1,'BodyInterface::GetPositionAndRotation()'],['../class_character.html#acbe6e08d5f65047764e825dad49c8cc3',1,'Character::GetPositionAndRotation()']]], + ['getpositioncom_350',['GetPositionCOM',['../struct_compound_shape_1_1_sub_shape.html#ac3fea8705474011f4f5681c18fcdaaa2',1,'CompoundShape::SubShape']]], + ['getpositionmotorsettings_351',['getpositionmotorsettings',['../class_path_constraint.html#aae30cd39beec4628b22295eec9fdb66b',1,'PathConstraint::GetPositionMotorSettings()'],['../class_path_constraint.html#afe1f87898534471bb7dc888dd9676262',1,'PathConstraint::GetPositionMotorSettings() const']]], + ['getpositionmotorstate_352',['GetPositionMotorState',['../class_path_constraint.html#a2d073636288d7a79e0453fff543c0660',1,'PathConstraint']]], + ['getpositiveearlyoutfraction_353',['GetPositiveEarlyOutFraction',['../class_collision_collector.html#aeb1fb262127298ec8bc296ead30a2e77',1,'CollisionCollector']]], + ['getpostcollidecallback_354',['GetPostCollideCallback',['../class_vehicle_constraint.html#aa666c4c14ae6b42d5d578ce3c425726b',1,'VehicleConstraint']]], + ['getpoststepcallback_355',['GetPostStepCallback',['../class_vehicle_constraint.html#a55c495a44c94d98437ea4254ee8ecfb7',1,'VehicleConstraint']]], + ['getpressure_356',['GetPressure',['../class_soft_body_motion_properties.html#ae15a2a2fdf14951fe7d9cd22e9e848e6',1,'SoftBodyMotionProperties']]], + ['getprestepcallback_357',['GetPreStepCallback',['../class_vehicle_constraint.html#a06c77bdf083e33a1814e09b9cdaa74f9',1,'VehicleConstraint']]], + ['getpreviousedge_358',['GetPreviousEdge',['../class_convex_hull_builder_1_1_edge.html#af8a79bb1db1fa4f8cdbc67dc04261563',1,'ConvexHullBuilder::Edge']]], + ['getprimitivetypeoftype_359',['getprimitivetypeoftype',['../_get_primitive_type_of_type_8h.html#a98487e1613e4448be96935228a098209',1,'GetPrimitiveTypeOfType(Ref< T > *): GetPrimitiveTypeOfType.h'],['../_get_primitive_type_of_type_8h.html#ae02d0a3c24fabff8ce59cd5394e337e0',1,'GetPrimitiveTypeOfType(T *): GetPrimitiveTypeOfType.h'],['../_get_primitive_type_of_type_8h.html#a8261b0b71c3f84b13c6ab396ba807993',1,'GetPrimitiveTypeOfType(T **): GetPrimitiveTypeOfType.h'],['../_get_primitive_type_of_type_8h.html#a333329c022169319150ccbed1266cee5',1,'GetPrimitiveTypeOfType(RefConst< T > *): GetPrimitiveTypeOfType.h'],['../_get_primitive_type_of_type_8h.html#aeac5a3169dddfc36ae8112d8a152133e',1,'GetPrimitiveTypeOfType(Array< T, A > *): GetPrimitiveTypeOfType.h'],['../_get_primitive_type_of_type_8h.html#a28bd8139f78b17ea7c2c3c8dac5ad754',1,'GetPrimitiveTypeOfType(StaticArray< T, N > *): GetPrimitiveTypeOfType.h'],['../_get_primitive_type_of_type_8h.html#afcbff43d21c5b1818c1663b88b724ebe',1,'GetPrimitiveTypeOfType(T(*)[N]): GetPrimitiveTypeOfType.h']]], + ['getprocessortickcount_360',['GetProcessorTickCount',['../_tick_counter_8h.html#ae23ab4860bcfb31beb5c9905f23426c1',1,'TickCounter.h']]], + ['getptr_361',['getptr',['../class_ref.html#a11ddc0decf3451568dc47178bed5e2aa',1,'Ref::GetPtr()'],['../class_ref_const.html#a1dcd19b921fc3022e10cbde1c5ac36e2',1,'RefConst::GetPtr()']]], + ['getquaternion_362',['getquaternion',['../class_d_mat44.html#a73d9f99570455f596fb3b7fcd1937b29',1,'DMat44::GetQuaternion()'],['../class_mat44.html#a1e977c53b5f6a0c03f8da33ebef2c05a',1,'Mat44::GetQuaternion()']]], + ['getradius_363',['getradius',['../class_sphere.html#a1be9f865028172ade600ed25ca0aee4f',1,'Sphere::GetRadius()'],['../class_capsule_shape.html#aa8b10abff70cdeb364e5663344a4c793',1,'CapsuleShape::GetRadius()'],['../class_cylinder_shape.html#aaff85dbcc24db20b60dc9e75363f1c04',1,'CylinderShape::GetRadius()'],['../class_sphere_shape.html#a05f8c7b1d7501c040804bb14c7d9ea84',1,'SphereShape::GetRadius()']]], + ['getragdollsettings_364',['GetRagdollSettings',['../class_ragdoll.html#adf2f2237288c30779260c4b1e744a76d',1,'Ragdoll']]], + ['getrefcount_365',['GetRefCount',['../class_ref_target.html#acaf07366183c51cd8460c7d3dcd07c2d',1,'RefTarget']]], + ['getreferencepointidx_366',['GetReferencePointIdx',['../class_polyhedron_submerged_volume_calculator.html#af52627bf533a56d1b951f32030010eeb',1,'PolyhedronSubmergedVolumeCalculator']]], + ['getrestitution_367',['getrestitution',['../class_body.html#a5657cc63a5fd9ee1e4a8408ac51affcc',1,'Body::GetRestitution()'],['../class_body_interface.html#a4a4947d638e0d8b6663f50824c9cbd58',1,'BodyInterface::GetRestitution()']]], + ['getresult_368',['GetResult',['../class_polyhedron_submerged_volume_calculator.html#a5a1c107b68d02c02bde9493400549faf',1,'PolyhedronSubmergedVolumeCalculator']]], + ['getrightinput_369',['GetRightInput',['../class_wheeled_vehicle_controller.html#a3fa4fcaa580f6bb5c47894858144397d',1,'WheeledVehicleController']]], + ['getrightratio_370',['GetRightRatio',['../class_tracked_vehicle_controller.html#a56d16548d8180759d16746c4e4024ba5',1,'TrackedVehicleController']]], + ['getroot_371',['GetRoot',['../class_a_a_b_b_tree_to_buffer.html#ae2034a353c9336f3e7df4bcdf9f97d8c',1,'AABBTreeToBuffer']]], + ['getrootoffset_372',['GetRootOffset',['../class_skeleton_pose.html#ace1c753663d81c68c7896c95c34a6b2a',1,'SkeletonPose']]], + ['getroottransform_373',['GetRootTransform',['../class_ragdoll.html#ab6ccff7d0aee7c9931a308c722614fff',1,'Ragdoll']]], + ['getrotation_374',['getrotation',['../struct_compound_shape_1_1_sub_shape.html#a13d700b0e7064e9ecdf99afdc0262eae',1,'CompoundShape::SubShape::GetRotation()'],['../class_rotated_translated_shape.html#a6d164a126cd4dea6185b8fb4ec918199',1,'RotatedTranslatedShape::GetRotation()'],['../class_character_virtual.html#afdec9f01a8b449ba9b29f39c42afe0d8',1,'CharacterVirtual::GetRotation()'],['../class_character.html#a5e63091e4ec6920b9054a835d5a1e93e',1,'Character::GetRotation()'],['../class_body_interface.html#a1afec2cfd709e9f48e21f1112da9b21b',1,'BodyInterface::GetRotation()'],['../class_body.html#aaee24bfb5e32e756f50113b9d1f45a2c',1,'Body::GetRotation()'],['../class_mat44.html#a4cc37dcc7b9be4ab8f8e94bf49e06204',1,'Mat44::GetRotation()'],['../class_d_mat44.html#ad488caa68ce5121590b731778edac0d6',1,'DMat44::GetRotation()']]], + ['getrotationangle_375',['getrotationangle',['../class_quat.html#ac72ff53fa4780399aa0755e2ca31b450',1,'Quat::GetRotationAngle()'],['../class_wheel.html#a06226466b8c4ff0f65ae329bb3b7a3b2',1,'Wheel::GetRotationAngle()']]], + ['getrotationinconstraintspace_376',['getrotationinconstraintspace',['../class_six_d_o_f_constraint.html#ae4af627f61bd4bd61d242756dd7f838a',1,'SixDOFConstraint::GetRotationInConstraintSpace()'],['../class_swing_twist_constraint.html#adef556a69c073651dc5370213dff405e',1,'SwingTwistConstraint::GetRotationInConstraintSpace()']]], + ['getrotationlimitsmax_377',['GetRotationLimitsMax',['../class_six_d_o_f_constraint.html#a9d5cd3757370c1c95a19828cfe8ed7ce',1,'SixDOFConstraint']]], + ['getrotationlimitsmin_378',['GetRotationLimitsMin',['../class_six_d_o_f_constraint.html#ae130846346f47a470d08e7e916955bf6',1,'SixDOFConstraint']]], + ['getrotationsafe_379',['GetRotationSafe',['../class_mat44.html#a564ee35616cca9a01624760e58bfb9ca',1,'Mat44']]], + ['getrows_380',['getrows',['../class_matrix.html#a295baf4af956351b6bf05548e16887ee',1,'Matrix::GetRows()'],['../class_dyn_matrix.html#a6cacfcbd4295e7cb5a40a8a8dc51bd01',1,'DynMatrix::GetRows()'],['../class_vector.html#a8c1387fdaa60b9569f5e9acb1363b7fb',1,'Vector::GetRows()']]], + ['getsamplecount_381',['GetSampleCount',['../class_height_field_shape.html#a574a78817c0d2bfe1b46dc7e1ca2c9a5',1,'HeightFieldShape']]], + ['getscale_382',['GetScale',['../class_scaled_shape.html#a7324baba8e06fe9ed476bd5644f8f34e',1,'ScaledShape']]], + ['getsequencenumber_383',['GetSequenceNumber',['../class_body_i_d.html#af327d342cd7e2a6be188bc836270ba51',1,'BodyID']]], + ['getsettings_384',['getsettings',['../class_wheel.html#ab93b1087453249915b72e74733ea2af3',1,'Wheel::GetSettings()'],['../class_wheel_w_v.html#a3c72a249175961c0cb86b691b2980d06',1,'WheelWV::GetSettings()'],['../class_wheel_t_v.html#a7189cbd04b92e8babd4fc9e01826d030',1,'WheelTV::GetSettings()'],['../class_soft_body_motion_properties.html#af56ddceaa1945447bf214647d44ca8f1',1,'SoftBodyMotionProperties::GetSettings()']]], + ['getshape_385',['getshape',['../class_body.html#a45950d9b3f8f28aafa13a81374912bf1',1,'Body::GetShape()'],['../class_body_creation_settings.html#ab668ffb9415e2e9d8790bb532b83bf53',1,'BodyCreationSettings::GetShape()'],['../class_body_interface.html#af67cf1a0f9c7fa744d4e2387d63e04ba',1,'BodyInterface::GetShape()'],['../class_character_base.html#afe046cfb3333be1fcb186f42821ddb19',1,'CharacterBase::GetShape()']]], + ['getshapeoffset_386',['GetShapeOffset',['../class_character_virtual.html#ad36f1869421eeee298f3230d27841071',1,'CharacterVirtual']]], + ['getshapescale_387',['GetShapeScale',['../class_transformed_shape.html#a9f0559c4106b9b17becd5f401389b354',1,'TransformedShape']]], + ['getshapesettings_388',['GetShapeSettings',['../class_body_creation_settings.html#a35093b07ed1677438e4f3d004d0d8a2e',1,'BodyCreationSettings']]], + ['getsign_389',['getsign',['../class_vec3.html#aecf767007e342e11f109b83a09449c7f',1,'Vec3::GetSign()'],['../class_d_vec3.html#a298f2bc29cc4d55a9f9d30a9512cada3',1,'DVec3::GetSign()'],['../class_vec4.html#a28b864dcc901d9bd5061b34e9551346c',1,'Vec4::GetSign() const']]], + ['getsignbits_390',['GetSignBits',['../class_vec4.html#aeccf9a2f8d2742fba6c62d4419cfa5d6',1,'Vec4']]], + ['getsize_391',['getsize',['../class_r_t_t_i.html#a84f77151d163bb24c230c0af4a5c2682',1,'RTTI::GetSize()'],['../class_temp_allocator_impl.html#ac8ffac8efe60b8922f9da58082f7dcae',1,'TempAllocatorImpl::GetSize()'],['../class_a_a_box.html#a376b8319c2ac3e843b1dfac1b8288e94',1,'AABox::GetSize()']]], + ['getsizeref_392',['GetSizeRef',['../class_e_p_a_convex_hull_builder_1_1_points.html#a5b85570fd72e9b7e9575981fe7464383',1,'EPAConvexHullBuilder::Points']]], + ['getskeleton_393',['getskeleton',['../class_skeleton_pose.html#a2e60e72ebf66740c7d9d99274b70efe7',1,'SkeletonPose::GetSkeleton()'],['../class_ragdoll_settings.html#a10ee1dfde20a1031ba99268be5b60157',1,'RagdollSettings::GetSkeleton()'],['../class_ragdoll_settings.html#a5f7c10c07d5cdaa2800bda61897f8852',1,'RagdollSettings::GetSkeleton() const']]], + ['getskinnedmaxdistancemultiplier_394',['GetSkinnedMaxDistanceMultiplier',['../class_soft_body_motion_properties.html#a6201339ce0eaf31374525cf645c7babb',1,'SoftBodyMotionProperties']]], + ['getsoftbodies_395',['getsoftbodies',['../class_physics_scene.html#afe41447c0b307d2844a16e288fd412af',1,'PhysicsScene::GetSoftBodies() const'],['../class_physics_scene.html#abcb7d9317c3e8d91d3e9b0799a7596f8',1,'PhysicsScene::GetSoftBodies()']]], + ['getsoftbodycontactlistener_396',['GetSoftBodyContactListener',['../class_physics_system.html#ae0014dc0eb3cf650db692bb24e0c3f75',1,'PhysicsSystem']]], + ['getsoftbodycreationsettings_397',['GetSoftBodyCreationSettings',['../class_body.html#a61a0607212ae03156e55dbfdabceb886',1,'Body']]], + ['getsqdistanceto_398',['GetSqDistanceTo',['../class_a_a_box.html#a9d68bc754580c6a3055ce4e6a305460f',1,'AABox']]], + ['getstats_399',['getstats',['../class_capsule_shape.html#a274bd9ad407e747585488727e4697357',1,'CapsuleShape::GetStats()'],['../class_triangle_splitter_morton.html#a874a5423ed55acbabc662812a0a5ec4f',1,'TriangleSplitterMorton::GetStats()'],['../class_triangle_splitter_mean.html#a32235dae954e916c9e3235ebe3704345',1,'TriangleSplitterMean::GetStats()'],['../class_triangle_splitter_longest_axis.html#a45cde2072d3a6c30b46c6afa0e9bec51',1,'TriangleSplitterLongestAxis::GetStats()'],['../class_plane_shape.html#a8a1251dffea8135e57a8863160d49828',1,'PlaneShape::GetStats()'],['../class_triangle_shape.html#a41afaef8725be99a40861e777de22119',1,'TriangleShape::GetStats()'],['../class_tapered_cylinder_shape.html#a8807be9437040acbac4cdd69baa20635',1,'TaperedCylinderShape::GetStats()'],['../class_tapered_capsule_shape.html#a5f3e2462c74c498511d4b010797ddbab',1,'TaperedCapsuleShape::GetStats()'],['../class_static_compound_shape.html#ad973e13f69ffa355e172f8a37d5fc347',1,'StaticCompoundShape::GetStats()'],['../class_sphere_shape.html#adff6e55656d0dc2048f40b3dad359fd8',1,'SphereShape::GetStats()'],['../class_shape.html#a87ae161e649ab6af75a60fe130dd195b',1,'Shape::GetStats()'],['../class_scaled_shape.html#a1d1237076dc542497e7ca6b917cc7d68',1,'ScaledShape::GetStats()'],['../class_rotated_translated_shape.html#a33919b6a211cae9bd392914c25923111',1,'RotatedTranslatedShape::GetStats()'],['../class_triangle_splitter_binning.html#a528500c9d8c6ba8225ec945e135c9588',1,'TriangleSplitterBinning::GetStats()'],['../class_offset_center_of_mass_shape.html#a656e5b4eee8f07b32ef59fb20858771b',1,'OffsetCenterOfMassShape::GetStats()'],['../class_mutable_compound_shape.html#aabd799e121f048e83a6ef43490422fbe',1,'MutableCompoundShape::GetStats()'],['../class_mesh_shape.html#a9996003623615ba708c420e90e86349e',1,'MeshShape::GetStats()'],['../class_height_field_shape.html#a9d3783be079e3d425bf049abf2c6a9e4',1,'HeightFieldShape::GetStats()'],['../class_cylinder_shape.html#a30d8aeffc7430806287324f7f55eb5a5',1,'CylinderShape::GetStats()'],['../class_convex_hull_shape.html#abdfd4a2a43587db1b5d726c78d3ee2b5',1,'ConvexHullShape::GetStats()'],['../class_box_shape.html#aa47cad6cf56f35a41e8626c3fd587fb3',1,'BoxShape::GetStats()'],['../class_triangle_splitter_fixed_leaf_size.html#a6d3cb63db9a9f4d5f48fc0db60ef4717',1,'TriangleSplitterFixedLeafSize::GetStats()'],['../class_triangle_splitter.html#ad58e7ea8a806e7e9df8ea5117ff2ebe8',1,'TriangleSplitter::GetStats()'],['../class_soft_body_shape.html#ae275b4c0b3e23b493bda12687d93970c',1,'SoftBodyShape::GetStats()']]], + ['getstatsrecursive_400',['getstatsrecursive',['../class_compound_shape.html#acd0cdb69e92db34899880f3f6b596bec',1,'CompoundShape::GetStatsRecursive()'],['../class_decorated_shape.html#a24a5fc486a279b6afaf2cada33f28272',1,'DecoratedShape::GetStatsRecursive()'],['../class_shape.html#ae90566019bdce3edf3be921044b38ea6',1,'Shape::GetStatsRecursive()']]], + ['getsteerangle_401',['GetSteerAngle',['../class_wheel.html#a1972924bef7c43ef8544a7ba2dc28c07',1,'Wheel']]], + ['getsubgroupid_402',['GetSubGroupID',['../class_collision_group.html#a156fd729674403783be12fe41ee5b288',1,'CollisionGroup']]], + ['getsubmergedvolume_403',['getsubmergedvolume',['../class_shape.html#a99f077aa0ffef0d518ced9b69ca21d18',1,'Shape::GetSubmergedVolume()'],['../class_compound_shape.html#a9a5f3e80546cee592d5a79cd4e3561ee',1,'CompoundShape::GetSubmergedVolume()'],['../class_convex_hull_shape.html#ab050ca44e34a8329d661019c379b39c6',1,'ConvexHullShape::GetSubmergedVolume()'],['../class_convex_shape.html#a49e7da39c873a9b8e3c3ffde94d31972',1,'ConvexShape::GetSubmergedVolume()'],['../class_height_field_shape.html#ab7cc33f5afd734cf43238fe8550cc069',1,'HeightFieldShape::GetSubmergedVolume()'],['../class_mesh_shape.html#a08a4d8b005fedbf05db4082bdb39b1aa',1,'MeshShape::GetSubmergedVolume()'],['../class_offset_center_of_mass_shape.html#a5f9a701d7ec907aaf816abf05ec25805',1,'OffsetCenterOfMassShape::GetSubmergedVolume()'],['../class_plane_shape.html#a270b08b26cc533e7cfb04ca85f5abaff',1,'PlaneShape::GetSubmergedVolume()'],['../class_rotated_translated_shape.html#a6c89e34ea8f2407b0821aa5e340a1d3e',1,'RotatedTranslatedShape::GetSubmergedVolume()'],['../class_scaled_shape.html#aca3913c54c796de4014330c508484005',1,'ScaledShape::GetSubmergedVolume()'],['../class_sphere_shape.html#accef575dd77414652ae4c1c0f68b6c88',1,'SphereShape::GetSubmergedVolume()'],['../class_triangle_shape.html#aaf0e4efd78402e813ebd25d219020773',1,'TriangleShape::GetSubmergedVolume()'],['../class_soft_body_shape.html#aa1909263e9c7099933d817f6a6d5eab0',1,'SoftBodyShape::GetSubmergedVolume()']]], + ['getsubshape_404',['GetSubShape',['../class_compound_shape.html#af70b012c88d2bedfb9541d40e6e46fb2',1,'CompoundShape']]], + ['getsubshapecoordinates_405',['GetSubShapeCoordinates',['../class_height_field_shape.html#aa98bc099a0466ff6e4284d5942b738ce',1,'HeightFieldShape']]], + ['getsubshapeid1_406',['GetSubShapeID1',['../class_sub_shape_i_d_pair.html#ada31f15601de55a64463899ed5ec67b8',1,'SubShapeIDPair']]], + ['getsubshapeid2_407',['GetSubShapeID2',['../class_sub_shape_i_d_pair.html#a6fd1caef92ab138b72a0663030ba1b14',1,'SubShapeIDPair']]], + ['getsubshapeidbits_408',['getsubshapeidbits',['../class_compound_shape.html#a3f4a71f903b9b37eb61262257ca268f2',1,'CompoundShape::GetSubShapeIDBits()'],['../class_soft_body_shape.html#ae83f9a5588e05aab0dd66f96750a3b15',1,'SoftBodyShape::GetSubShapeIDBits() const']]], + ['getsubshapeidbitsrecursive_409',['getsubshapeidbitsrecursive',['../class_soft_body_shape.html#a3ff7ce4976bb19746e58ac06d90f1695',1,'SoftBodyShape::GetSubShapeIDBitsRecursive()'],['../class_compound_shape.html#ab0cb754108355742e26e08614beaaec1',1,'CompoundShape::GetSubShapeIDBitsRecursive()'],['../class_convex_shape.html#aeda184c70bca8f98105bd58df579eb87',1,'ConvexShape::GetSubShapeIDBitsRecursive()'],['../class_decorated_shape.html#a0369b0f4e52b29f3625022bfd98a6924',1,'DecoratedShape::GetSubShapeIDBitsRecursive()'],['../class_height_field_shape.html#ab7c2e6fc0f60fa4290474d758473b3ab',1,'HeightFieldShape::GetSubShapeIDBitsRecursive()'],['../class_mesh_shape.html#a7e26f8abf395dc62026f5c4789e3c378',1,'MeshShape::GetSubShapeIDBitsRecursive()'],['../class_plane_shape.html#af2df250d4d28fd2efe1f432126b15d2d',1,'PlaneShape::GetSubShapeIDBitsRecursive()'],['../class_shape.html#aee463ecaa01e871524f5396871b5e8c6',1,'Shape::GetSubShapeIDBitsRecursive()']]], + ['getsubshapeidfromindex_410',['GetSubShapeIDFromIndex',['../class_compound_shape.html#a66ae55d5b737c492d73286dff4615215',1,'CompoundShape']]], + ['getsubshapeindexfromid_411',['GetSubShapeIndexFromID',['../class_compound_shape.html#a6ff804957bb05620ab762532d2f2ab3d',1,'CompoundShape']]], + ['getsubshapes_412',['GetSubShapes',['../class_compound_shape.html#a3c4efdc6b41fc47e604ee8154425a80a',1,'CompoundShape']]], + ['getsubshapetransformedshape_413',['getsubshapetransformedshape',['../class_scaled_shape.html#adc6c23ae1479cd048a6b6c87b8b0aa2a',1,'ScaledShape::GetSubShapeTransformedShape()'],['../class_transformed_shape.html#a8ef1a33902094dcdd6f20f63868c5ea2',1,'TransformedShape::GetSubShapeTransformedShape()'],['../class_shape.html#acf8d5f8e430acc87c88fbd558407efc7',1,'Shape::GetSubShapeTransformedShape()'],['../class_rotated_translated_shape.html#a28982c9e515052eed5e3e6663b020cb8',1,'RotatedTranslatedShape::GetSubShapeTransformedShape()'],['../class_offset_center_of_mass_shape.html#adcef4fa526642a2cdd565352f278c9f5',1,'OffsetCenterOfMassShape::GetSubShapeTransformedShape()'],['../class_compound_shape.html#ae21a8dff0919f928ae1d282293018a8c',1,'CompoundShape::GetSubShapeTransformedShape(const SubShapeID &inSubShapeID, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, SubShapeID &outRemainder) const override']]], + ['getsubshapeuserdata_414',['getsubshapeuserdata',['../class_compound_shape.html#adf93c781343189f225f39656a64240db',1,'CompoundShape::GetSubShapeUserData()'],['../class_decorated_shape.html#afdcd8fb7a79bc210ca792d2db1fdfe09',1,'DecoratedShape::GetSubShapeUserData()'],['../class_shape.html#a29de5bb2f770d7e521f0d939436faa1b',1,'Shape::GetSubShapeUserData()'],['../class_transformed_shape.html#a98ca3c64d2bc65548a4845085c53eba5',1,'TransformedShape::GetSubShapeUserData()']]], + ['getsubtype_415',['getsubtype',['../class_distance_constraint.html#aca72385bb8b1dede13ca841681e37cae',1,'DistanceConstraint::GetSubType()'],['../class_shape.html#a864cef23ca0a3add699adea26ed1fef7',1,'Shape::GetSubType()'],['../class_cone_constraint.html#a174c2fdca09d8ceddbf14f71384791b7',1,'ConeConstraint::GetSubType()'],['../class_constraint.html#a632a8161ad49c443c2e3a8b600a730a1',1,'Constraint::GetSubType()'],['../class_vehicle_constraint.html#a989fc35253ed8da61981107b0fc19fba',1,'VehicleConstraint::GetSubType()'],['../class_swing_twist_constraint.html#a259cdffe333947fb29e1455619b81dd5',1,'SwingTwistConstraint::GetSubType()'],['../class_slider_constraint.html#a4655336347868e54cf484f9f43a830fe',1,'SliderConstraint::GetSubType()'],['../class_six_d_o_f_constraint.html#ae13f824a4eddf95835fdeffe61c7ffba',1,'SixDOFConstraint::GetSubType()'],['../class_rack_and_pinion_constraint.html#ae8c15998c1efe563c3153b27c58ab87a',1,'RackAndPinionConstraint::GetSubType()'],['../class_pulley_constraint.html#a175acacfe8fcc7518a90d7b29e0ad8eb',1,'PulleyConstraint::GetSubType()'],['../class_point_constraint.html#a0993bfa066a32b159d45cf54b346163f',1,'PointConstraint::GetSubType()'],['../class_path_constraint.html#a73052367b302ac8b30a9505aa1901795',1,'PathConstraint::GetSubType()'],['../class_hinge_constraint.html#ac6c68736fa26f85a973b0aa95daa7674',1,'HingeConstraint::GetSubType()'],['../class_gear_constraint.html#ad760c5afd1f0a52d595b4788247d892c',1,'GearConstraint::GetSubType()'],['../class_fixed_constraint.html#ae4a226e769a4bab140f41f72a2aff9b5',1,'FixedConstraint::GetSubType()']]], + ['getsupport_416',['getsupport',['../struct_triangle_convex_support.html#ac824e6c13d9702af6699e7ba4beccb4c',1,'TriangleConvexSupport::GetSupport()'],['../class_a_a_box.html#aaea4b8b5fc160778df59859a1c4dc69b',1,'AABox::GetSupport()'],['../struct_transformed_convex_object.html#a0fa745b8d15e71629ebb719716d16fa8',1,'TransformedConvexObject::GetSupport()'],['../struct_add_convex_radius.html#a77576ad6fd2ef0aafc34d245b578ef59',1,'AddConvexRadius::GetSupport()'],['../struct_minkowski_difference.html#ad9e15e934b19be1df6e09a926a1e26dd',1,'MinkowskiDifference::GetSupport()'],['../class_convex_hull_shape_1_1_hull_with_convex.html#a0abf6518afb0203d73ed2308d3bb83b1',1,'ConvexHullShape::HullWithConvex::GetSupport()'],['../class_triangle_shape_1_1_triangle_no_convex.html#a03cf50acfaaafb83ae5f2c1efc445c7c',1,'TriangleShape::TriangleNoConvex::GetSupport()'],['../class_tapered_cylinder_shape_1_1_tapered_cylinder.html#a450d358fbfb9f7313c000bfad68142b5',1,'TaperedCylinderShape::TaperedCylinder::GetSupport()'],['../class_tapered_capsule_shape_1_1_tapered_capsule.html#a91c8bdbd45deec0013bf3f383adcb149',1,'TaperedCapsuleShape::TaperedCapsule::GetSupport()'],['../class_sphere_shape_1_1_sphere_with_convex.html#a503b8f57aa6e001cda690534f3c723a1',1,'SphereShape::SphereWithConvex::GetSupport()'],['../class_sphere_shape_1_1_sphere_no_convex.html#a38a13c00c2b11db056767b4f67241845',1,'SphereShape::SphereNoConvex::GetSupport()'],['../class_cylinder_shape_1_1_cylinder.html#ac2fbf97f298eabff324fe1200d1e6974',1,'CylinderShape::Cylinder::GetSupport()'],['../class_convex_shape_1_1_support.html#ab2a715898d419c03321366a009539ae0',1,'ConvexShape::Support::GetSupport()'],['../class_convex_hull_shape_1_1_hull_with_convex_scaled.html#aad0e71dae0215de9d65abee32e3d5bb7',1,'ConvexHullShape::HullWithConvexScaled::GetSupport()'],['../class_convex_hull_shape_1_1_hull_no_convex.html#ac12140f541d4dcf2b1c6a58108c0b026',1,'ConvexHullShape::HullNoConvex::GetSupport()'],['../class_capsule_shape_1_1_capsule_with_convex.html#a15a15b4961f231684a30f4fbcdbee693',1,'CapsuleShape::CapsuleWithConvex::GetSupport()'],['../class_capsule_shape_1_1_capsule_no_convex.html#a0be6a5849883349f4d1e7bfa2107b4c6',1,'CapsuleShape::CapsuleNoConvex::GetSupport()'],['../class_box_shape_1_1_box.html#addae08ce81d2c3eaca0acd914c2fe662',1,'BoxShape::Box::GetSupport()'],['../class_sphere.html#a3ccfa118fbdbd2c7346d3f7f9d29595e',1,'Sphere::GetSupport()'],['../struct_polygon_convex_support.html#a4e117627d895a0466b06b76f267aa605',1,'PolygonConvexSupport::GetSupport()'],['../struct_point_convex_support.html#af9f294c5aa22abc2f9c826cbb8e2b05a',1,'PointConvexSupport::GetSupport()'],['../class_triangle_shape_1_1_triangle_with_convex.html#addb17c65c6b1c99b7a4b2862ac796446',1,'TriangleShape::TriangleWithConvex::GetSupport()']]], + ['getsupportfunction_417',['getsupportfunction',['../class_box_shape.html#a8078cbdc696e4fb8e65fb7c312dfb1f6',1,'BoxShape::GetSupportFunction()'],['../class_capsule_shape.html#a5f226d8512e8a2612438200932d3986c',1,'CapsuleShape::GetSupportFunction()'],['../class_triangle_shape.html#a218f85b8e0fe0e50bb8dbf6de81b1986',1,'TriangleShape::GetSupportFunction()'],['../class_tapered_cylinder_shape.html#a2522fd2429951460c394308a0545440d',1,'TaperedCylinderShape::GetSupportFunction()'],['../class_tapered_capsule_shape.html#a5d84081d417194e6a80742162a9e5361',1,'TaperedCapsuleShape::GetSupportFunction()'],['../class_sphere_shape.html#a69de38369e7a6e0927d7bbcce1ae5759',1,'SphereShape::GetSupportFunction()'],['../class_cylinder_shape.html#af7f045327fa7c9e506bd304bb78ba781',1,'CylinderShape::GetSupportFunction()'],['../class_convex_shape.html#ae043918f1de4d0049c6cb2a92b545e06',1,'ConvexShape::GetSupportFunction()'],['../class_convex_hull_shape.html#ae343a96fe9cce1424f7ddeb7a98a393b',1,'ConvexHullShape::GetSupportFunction()']]], + ['getsupportingface_418',['getsupportingface',['../class_decorated_shape.html#abda124dcb2cd84b591101a32544e1c94',1,'DecoratedShape::GetSupportingFace()'],['../class_a_a_box.html#a8ebca3740082c6ad5359d8c42d6c5f69',1,'AABox::GetSupportingFace()'],['../struct_transformed_convex_object.html#ae7e5d51b4cbb01eb146274711eec26e2',1,'TransformedConvexObject::GetSupportingFace()'],['../struct_triangle_convex_support.html#ab06eab6917e292cdf749432e50ac9159',1,'TriangleConvexSupport::GetSupportingFace()'],['../struct_polygon_convex_support.html#a25e370fc7ce4db9df032a10e3caee238',1,'PolygonConvexSupport::GetSupportingFace()'],['../class_box_shape.html#a10628c6c084267e249ef86fa924ac620',1,'BoxShape::GetSupportingFace()'],['../class_capsule_shape.html#ae0226a091e853142536c48e5462ee463',1,'CapsuleShape::GetSupportingFace()'],['../class_compound_shape.html#aaa7ac5ce56a586d8179181add8af60fa',1,'CompoundShape::GetSupportingFace()'],['../class_convex_hull_shape.html#a9707b7f687ecaac45496dc111535782e',1,'ConvexHullShape::GetSupportingFace()'],['../class_cylinder_shape.html#aa2ef3b2d1a7889c6a55d868ac8549280',1,'CylinderShape::GetSupportingFace()'],['../class_soft_body_shape.html#a034dea7c47610c270711b8c4a19f8b87',1,'SoftBodyShape::GetSupportingFace()'],['../class_transformed_shape.html#abf8db8122d754ad62720f3da6f67be4d',1,'TransformedShape::GetSupportingFace()'],['../class_triangle_shape.html#ad35f626bfc8807441d6b200ebf74e216',1,'TriangleShape::GetSupportingFace()'],['../class_tapered_cylinder_shape.html#a7974bcb9e5385af82984e0b7a478c839',1,'TaperedCylinderShape::GetSupportingFace()'],['../class_tapered_capsule_shape.html#a9634a3049b0006aefe65e52c72f3b3d1',1,'TaperedCapsuleShape::GetSupportingFace()'],['../class_sphere_shape.html#a9619a007d4bd51efef15792e464d8c0f',1,'SphereShape::GetSupportingFace()'],['../class_shape.html#a4f6591e1a1329278568bc99b035c9928',1,'Shape::GetSupportingFace()'],['../class_scaled_shape.html#aacf906339a566563005b35af3a474385',1,'ScaledShape::GetSupportingFace()'],['../class_rotated_translated_shape.html#abab2852c1625584a5849d7a9ef96efcb',1,'RotatedTranslatedShape::GetSupportingFace()'],['../class_plane_shape.html#acb01f52337cecc64b73cff24348b0b47',1,'PlaneShape::GetSupportingFace()'],['../class_offset_center_of_mass_shape.html#aa18209657783f704b64fa02351c29fca',1,'OffsetCenterOfMassShape::GetSupportingFace()'],['../class_mesh_shape.html#ac15cb5e42c9123d08b5dfd7d5928bcad',1,'MeshShape::GetSupportingFace()'],['../class_height_field_shape.html#a39e1a2fa721479131b1fefe0b2ea98a7',1,'HeightFieldShape::GetSupportingFace()']]], + ['getsurfacearea_419',['GetSurfaceArea',['../class_a_a_box.html#ace160fe5908ca1b3125b757bdfde8d22',1,'AABox']]], + ['getsurfacenormal_420',['getsurfacenormal',['../class_compound_shape.html#a4f1bcd2e95e17efeff42556cbc729110',1,'CompoundShape::GetSurfaceNormal()'],['../class_box_shape.html#ae279a012b515691509f4d15927925664',1,'BoxShape::GetSurfaceNormal()'],['../class_soft_body_shape.html#af8f830edd7a8620969c68da8c4ff40f8',1,'SoftBodyShape::GetSurfaceNormal()'],['../class_capsule_shape.html#ac8ed07dee809bbe362b3dd4ec286aa35',1,'CapsuleShape::GetSurfaceNormal()'],['../class_convex_hull_shape.html#a586cf0e80d2f705fb104d4b6c3cb5d13',1,'ConvexHullShape::GetSurfaceNormal()'],['../class_cylinder_shape.html#a33a3dcb04ee6b0905b2992936acaa71c',1,'CylinderShape::GetSurfaceNormal()'],['../class_height_field_shape.html#ad652d9d9e8fc9a987722d222077b111a',1,'HeightFieldShape::GetSurfaceNormal()'],['../class_mesh_shape.html#aad9c34de931c5c15d19cfc7ac200583a',1,'MeshShape::GetSurfaceNormal()'],['../class_offset_center_of_mass_shape.html#a0af1704c7f1a2109f9b55343c4a6db7d',1,'OffsetCenterOfMassShape::GetSurfaceNormal()'],['../class_plane_shape.html#a5a720f71f09b5c2cecb0c45b3cb0d571',1,'PlaneShape::GetSurfaceNormal()'],['../class_rotated_translated_shape.html#afb856f2a26b063d3f6d4aff131ce1a31',1,'RotatedTranslatedShape::GetSurfaceNormal()'],['../class_scaled_shape.html#a8d44329b0d06995572b38bbe3f23879f',1,'ScaledShape::GetSurfaceNormal()'],['../class_shape.html#adc7c6aeed1cde2ae1be099a4a5a4bd0c',1,'Shape::GetSurfaceNormal()'],['../class_sphere_shape.html#a2ae3fdc9da393a59106c6f4f75c20b25',1,'SphereShape::GetSurfaceNormal()'],['../class_tapered_capsule_shape.html#ac8a542296217b1a4ccad96133c07a35e',1,'TaperedCapsuleShape::GetSurfaceNormal()'],['../class_tapered_cylinder_shape.html#ac4cf24a6fd1f49bea27939615891c332',1,'TaperedCylinderShape::GetSurfaceNormal()'],['../class_triangle_shape.html#af2073f91655595dde2662482e5821006',1,'TriangleShape::GetSurfaceNormal()']]], + ['getsuspensionlambda_421',['GetSuspensionLambda',['../class_wheel.html#af1a126080ae277a8b3578b8f3f6854e7',1,'Wheel']]], + ['getsuspensionlength_422',['GetSuspensionLength',['../class_wheel.html#ad03e749022ce451237c8731a7b59eb79',1,'Wheel']]], + ['getswingmotorsettings_423',['getswingmotorsettings',['../class_swing_twist_constraint.html#a62867e2044909678e7eb8ae1a60fc30e',1,'SwingTwistConstraint::GetSwingMotorSettings() const'],['../class_swing_twist_constraint.html#adc142775611a925dfdc755c0fa35bdbc',1,'SwingTwistConstraint::GetSwingMotorSettings()']]], + ['getswingmotorstate_424',['GetSwingMotorState',['../class_swing_twist_constraint.html#aff96015babd85fab3b262eee70a2a283',1,'SwingTwistConstraint']]], + ['getswingtwist_425',['GetSwingTwist',['../class_quat.html#a7bb8b016622e5ad8f361c52f9037f1aa',1,'Quat']]], + ['getswingtype_426',['GetSwingType',['../class_swing_twist_constraint_part.html#a1e8cca76a13bf4490e18086adfe44fb5',1,'SwingTwistConstraintPart']]], + ['gettargetangle_427',['GetTargetAngle',['../class_hinge_constraint.html#a952152a6165614d7e000cc61e8820edf',1,'HingeConstraint']]], + ['gettargetangularvelocity_428',['GetTargetAngularVelocity',['../class_hinge_constraint.html#ad05474eff39452c49ee10c70b780f687',1,'HingeConstraint']]], + ['gettargetangularvelocitycs_429',['gettargetangularvelocitycs',['../class_six_d_o_f_constraint.html#aa8906a979a8a5bfcb1887997849d3f0c',1,'SixDOFConstraint::GetTargetAngularVelocityCS()'],['../class_swing_twist_constraint.html#a7ba465390161d081cbfa4f6d313308e5',1,'SwingTwistConstraint::GetTargetAngularVelocityCS()']]], + ['gettargetorientationcs_430',['gettargetorientationcs',['../class_six_d_o_f_constraint.html#ab3f325802dc065ba6fbeeea76884e0c8',1,'SixDOFConstraint::GetTargetOrientationCS()'],['../class_swing_twist_constraint.html#ab490bdbf00a2c76b00b2d3d2afe19419',1,'SwingTwistConstraint::GetTargetOrientationCS()']]], + ['gettargetpathfraction_431',['GetTargetPathFraction',['../class_path_constraint.html#a48f8818d18d5c46c27a6ba69d91c36b3',1,'PathConstraint']]], + ['gettargetposition_432',['GetTargetPosition',['../class_slider_constraint.html#ac1c0aa099da5599ddc21d7f0519c72f7',1,'SliderConstraint']]], + ['gettargetpositioncs_433',['GetTargetPositionCS',['../class_six_d_o_f_constraint.html#a5e3a3ca4dd727cabe3fbc97a43fffc1d',1,'SixDOFConstraint']]], + ['gettargetvelocity_434',['gettargetvelocity',['../class_slider_constraint.html#ad704564787a3b73406849659c29f3a6b',1,'SliderConstraint::GetTargetVelocity()'],['../class_path_constraint.html#a9c6d88045a77cb4f442e3ef239b20d84',1,'PathConstraint::GetTargetVelocity()']]], + ['gettargetvelocitycs_435',['GetTargetVelocityCS',['../class_six_d_o_f_constraint.html#adea943442830716a4e865fe336910729',1,'SixDOFConstraint']]], + ['gettiremaximpulsecallback_436',['GetTireMaxImpulseCallback',['../class_wheeled_vehicle_controller.html#a9f0a4d01b9c0db904d5e6aa79484bc63',1,'WheeledVehicleController']]], + ['gettopradius_437',['GetTopRadius',['../class_tapered_cylinder_shape.html#a4327c117bf16630693b65d1a8f2edd7e',1,'TaperedCylinderShape']]], + ['gettorque_438',['GetTorque',['../class_vehicle_engine.html#a22815f9d97cb6318b0b6a3df66e0f6d5',1,'VehicleEngine']]], + ['gettotallambda_439',['gettotallambda',['../class_angle_constraint_part.html#af482295498d9ca4f6fcdd0c034d0fb90',1,'AngleConstraintPart::GetTotalLambda()'],['../class_axis_constraint_part.html#a012581aad01dbf091d9f8e2cf0ea6605',1,'AxisConstraintPart::GetTotalLambda()'],['../class_dual_axis_constraint_part.html#a89e53a1884747a98a2b2e8647f219c2c',1,'DualAxisConstraintPart::GetTotalLambda()'],['../class_gear_constraint_part.html#a0884cffe567c6cfe93e555996ba8bad9',1,'GearConstraintPart::GetTotalLambda()'],['../class_hinge_rotation_constraint_part.html#aa99c7f68df35ac1e3bef098c7e20225b',1,'HingeRotationConstraintPart::GetTotalLambda()'],['../class_independent_axis_constraint_part.html#a14a6dfff54b12cacff9f4794c5fa4fa8',1,'IndependentAxisConstraintPart::GetTotalLambda()'],['../class_point_constraint_part.html#a268ba07c6a229a0b8d2c3504566c355d',1,'PointConstraintPart::GetTotalLambda()'],['../class_rack_and_pinion_constraint_part.html#a87e64ffdc1897211336d35bc8077ebcc',1,'RackAndPinionConstraintPart::GetTotalLambda()'],['../class_rotation_euler_constraint_part.html#aada1e7c8fcf62c1674aa5080cd70687e',1,'RotationEulerConstraintPart::GetTotalLambda()'],['../class_rotation_quat_constraint_part.html#a4aaed47e0905087e32e5dc82f6c4dca5',1,'RotationQuatConstraintPart::GetTotalLambda()'],['../class_gear_constraint.html#a0e2ee073695aedec977446582365ed3b',1,'GearConstraint::GetTotalLambda()'],['../class_rack_and_pinion_constraint.html#a10684549bb08d47150e26754db83179d',1,'RackAndPinionConstraint::GetTotalLambda()']]], + ['gettotallambdamotor_440',['gettotallambdamotor',['../class_slider_constraint.html#a8f67a775520b7f735c77b4aabb9187e4',1,'SliderConstraint::GetTotalLambdaMotor()'],['../class_path_constraint.html#ad9f21a4ed20007ceb8181db0bf999ce3',1,'PathConstraint::GetTotalLambdaMotor()'],['../class_hinge_constraint.html#ac9320fb87c8a7de22bc822f0f9cf2f74',1,'HingeConstraint::GetTotalLambdaMotor()'],['../class_swing_twist_constraint.html#a41ac135d5eb9c233fe50ff9fc8b3d40e',1,'SwingTwistConstraint::GetTotalLambdaMotor()']]], + ['gettotallambdamotorrotation_441',['GetTotalLambdaMotorRotation',['../class_six_d_o_f_constraint.html#a84ad5f919ccfff953b8de5ae421425b4',1,'SixDOFConstraint']]], + ['gettotallambdamotortranslation_442',['GetTotalLambdaMotorTranslation',['../class_six_d_o_f_constraint.html#a244e5b919415ca1feec2d707e3ad64bf',1,'SixDOFConstraint']]], + ['gettotallambdaposition_443',['gettotallambdaposition',['../class_pulley_constraint.html#adac156b26e519ea9f183609b731b81b5',1,'PulleyConstraint::GetTotalLambdaPosition()'],['../class_swing_twist_constraint.html#a82b21f86dc816c6a989df827c04d2a7b',1,'SwingTwistConstraint::GetTotalLambdaPosition()'],['../class_slider_constraint.html#a7e004ec04d0e7a7fe00ba2b0a8840b6a',1,'SliderConstraint::GetTotalLambdaPosition()'],['../class_six_d_o_f_constraint.html#a01a2d0f0a38d57af09fb86f5432df79b',1,'SixDOFConstraint::GetTotalLambdaPosition()'],['../class_point_constraint.html#a393464647f68f5dbfcdb034b00d4b1d1',1,'PointConstraint::GetTotalLambdaPosition()'],['../class_path_constraint.html#aad8272de843a287e26bf320fdf2755a3',1,'PathConstraint::GetTotalLambdaPosition()'],['../class_hinge_constraint.html#af03b0287d856815e5a9cff82588d2578',1,'HingeConstraint::GetTotalLambdaPosition()'],['../class_fixed_constraint.html#a1f2e160cf0bac4e5a08a10a4db32fe27',1,'FixedConstraint::GetTotalLambdaPosition()'],['../class_distance_constraint.html#a9c2f0f9859df29f33e5688f42e14471d',1,'DistanceConstraint::GetTotalLambdaPosition()'],['../class_cone_constraint.html#af2d889a7774303768a6cde6dee342378',1,'ConeConstraint::GetTotalLambdaPosition()']]], + ['gettotallambdapositionlimits_444',['gettotallambdapositionlimits',['../class_path_constraint.html#afef42c01cab96ed8cb32c607a6a0baf8',1,'PathConstraint::GetTotalLambdaPositionLimits()'],['../class_slider_constraint.html#a75ac80302b69828523d3fe1aa55348a5',1,'SliderConstraint::GetTotalLambdaPositionLimits()']]], + ['gettotallambdarotation_445',['gettotallambdarotation',['../class_six_d_o_f_constraint.html#a660cc3a7a434504917d71b2c463cef47',1,'SixDOFConstraint::GetTotalLambdaRotation()'],['../class_cone_constraint.html#a08b441d44cc4d9adbad89d88d6d48d91',1,'ConeConstraint::GetTotalLambdaRotation()'],['../class_fixed_constraint.html#a28f17b6379474d45e29faebfef63e670',1,'FixedConstraint::GetTotalLambdaRotation()'],['../class_hinge_constraint.html#a69121251820ce4c305f3275b15242f7a',1,'HingeConstraint::GetTotalLambdaRotation()'],['../class_path_constraint.html#a7dc7086987fb9a1761fc9fab81ceadb3',1,'PathConstraint::GetTotalLambdaRotation()'],['../class_slider_constraint.html#a10e5c1d92324b6df087498f75b4f83e4',1,'SliderConstraint::GetTotalLambdaRotation()']]], + ['gettotallambdarotationhinge_446',['GetTotalLambdaRotationHinge',['../class_path_constraint.html#abb7f43813e7aa47c1719550303e8b768',1,'PathConstraint']]], + ['gettotallambdarotationlimits_447',['GetTotalLambdaRotationLimits',['../class_hinge_constraint.html#a689cbcabdb90d98b59fcdffc5417a3e7',1,'HingeConstraint']]], + ['gettotallambdaswingy_448',['GetTotalLambdaSwingY',['../class_swing_twist_constraint.html#a0c2292aef09fef869c8264e0735a6f26',1,'SwingTwistConstraint']]], + ['gettotallambdaswingz_449',['GetTotalLambdaSwingZ',['../class_swing_twist_constraint.html#a2e87742bbeac9f5b0b0ee75050326c7b',1,'SwingTwistConstraint']]], + ['gettotallambdatwist_450',['GetTotalLambdaTwist',['../class_swing_twist_constraint.html#afc81f0c8d931210044e2a05cea0988c6',1,'SwingTwistConstraint']]], + ['gettotalswingylambda_451',['GetTotalSwingYLambda',['../class_swing_twist_constraint_part.html#a16832ee912d335e0865e78f37fe7ad81',1,'SwingTwistConstraintPart']]], + ['gettotalswingzlambda_452',['GetTotalSwingZLambda',['../class_swing_twist_constraint_part.html#a31a518f141eab3f601906193d7b56ada',1,'SwingTwistConstraintPart']]], + ['gettotaltwistlambda_453',['GetTotalTwistLambda',['../class_swing_twist_constraint_part.html#a45a880db0765176f7e807f4aba08da6e',1,'SwingTwistConstraintPart']]], + ['gettracks_454',['gettracks',['../class_tracked_vehicle_controller.html#a197ca759987300cb86170ac747e34d61',1,'TrackedVehicleController::GetTracks() const'],['../class_tracked_vehicle_controller.html#a778d53e87c6d3c769079b71961123745',1,'TrackedVehicleController::GetTracks()']]], + ['gettransformed_455',['GetTransformed',['../class_plane.html#a23c3f6c2eaf6344447cb5e0a8a52d63d',1,'Plane']]], + ['gettransformedshape_456',['gettransformedshape',['../class_character.html#a494c0f369f5aa12f2b5933b4cf4ba102',1,'Character::GetTransformedShape()'],['../class_body_interface.html#ae468b34e460759f4cf4e76486e404ee4',1,'BodyInterface::GetTransformedShape()'],['../class_body.html#ab29a0e2490187a1e08d21c4e9235f2a3',1,'Body::GetTransformedShape()'],['../class_character_virtual.html#a181bbafd30966b7ecc4313283c3a1252',1,'CharacterVirtual::GetTransformedShape()']]], + ['gettranslation_457',['gettranslation',['../class_d_mat44.html#ac47b990d006488e24ad4c0512cdaf9b1',1,'DMat44::GetTranslation()'],['../class_mat44.html#abd89da8ac7b4e4c5b87c02caabbf10b8',1,'Mat44::GetTranslation()']]], + ['gettranslationlimitsmax_458',['GetTranslationLimitsMax',['../class_six_d_o_f_constraint.html#a9dc7e49353c01c96388125cc6510bb92',1,'SixDOFConstraint']]], + ['gettranslationlimitsmin_459',['GetTranslationLimitsMin',['../class_six_d_o_f_constraint.html#adca299a0d75c785bb120d381cdb1e6ee',1,'SixDOFConstraint']]], + ['gettransmission_460',['gettransmission',['../class_wheeled_vehicle_controller.html#a8c3ab1fdbdcec9b95237e2b727c378ac',1,'WheeledVehicleController::GetTransmission()'],['../class_tracked_vehicle_controller.html#a18af9ade5be94c6740c888b61c922419',1,'TrackedVehicleController::GetTransmission() const'],['../class_tracked_vehicle_controller.html#af251172b17a496ce895bd39709b86065',1,'TrackedVehicleController::GetTransmission()'],['../class_wheeled_vehicle_controller.html#a3a14cc53afb7a84709927cd9b5fc863b',1,'WheeledVehicleController::GetTransmission()']]], + ['gettriangle_461',['gettriangle',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#a3fb4bf3fda3a5fe7fede50bdfad3ed17',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::GetTriangle()'],['../class_triangle_splitter.html#aec081c5b0f705cbee59ed5de06436122',1,'TriangleSplitter::GetTriangle()']]], + ['gettriangleblock_462',['GetTriangleBlock',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html#a9965a86ef8ae2822aeb95ee98f4811fd',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader']]], + ['gettrianglecount_463',['GetTriangleCount',['../class_a_a_b_b_tree_builder_1_1_node.html#ab9f14f78dc59d08126ca910121c173e0',1,'AABBTreeBuilder::Node']]], + ['gettrianglecountintree_464',['GetTriangleCountInTree',['../class_a_a_b_b_tree_builder_1_1_node.html#ad4227473a354d52097ead61c6fa8d992',1,'AABBTreeBuilder::Node']]], + ['gettrianglecountpernode_465',['GetTriangleCountPerNode',['../class_a_a_b_b_tree_builder_1_1_node.html#a03a6ef7fe1cfc46cb4cb85d49c0188ed',1,'AABBTreeBuilder::Node']]], + ['gettriangleheader_466',['GetTriangleHeader',['../class_a_a_b_b_tree_to_buffer.html#aabe86791c5d2da2af6dcba505090b989',1,'AABBTreeToBuffer']]], + ['gettrianglescontextmultivertexlist_467',['GetTrianglesContextMultiVertexList',['../class_get_triangles_context_multi_vertex_list.html#aa9cd165a98d96373c2d112a9c8ec258f',1,'GetTrianglesContextMultiVertexList']]], + ['gettrianglescontextvertexlist_468',['GetTrianglesContextVertexList',['../class_get_triangles_context_vertex_list.html#ad42b38dbd910b48adc48cbeb2e7d3eee',1,'GetTrianglesContextVertexList']]], + ['gettrianglesnext_469',['gettrianglesnext',['../class_capsule_shape.html#ac735140fc6d8d36ca5c598deba432ae2',1,'CapsuleShape::GetTrianglesNext()'],['../class_soft_body_shape.html#aef58794da013b5ec5993744dab56f4b5',1,'SoftBodyShape::GetTrianglesNext()'],['../class_rotated_translated_shape.html#a2ecf8af0d2d44459c7fbce83d6323eb3',1,'RotatedTranslatedShape::GetTrianglesNext()'],['../class_scaled_shape.html#ad222933cc81e3136f2b02cc70db545d9',1,'ScaledShape::GetTrianglesNext()'],['../class_height_field_shape.html#a08fee5448036495db2d6154bb4632a65',1,'HeightFieldShape::GetTrianglesNext()'],['../class_offset_center_of_mass_shape.html#a5a7033c9950e7ec7253047e8a257c360',1,'OffsetCenterOfMassShape::GetTrianglesNext()'],['../class_tapered_cylinder_shape.html#a20441e1137b077b87cd592679377cf62',1,'TaperedCylinderShape::GetTrianglesNext()'],['../class_sphere_shape.html#aab3a1e57553613d5ce94557f6175ca93',1,'SphereShape::GetTrianglesNext()'],['../class_box_shape.html#a90ed6d83a46a7311750bfa7877d72def',1,'BoxShape::GetTrianglesNext()'],['../class_cylinder_shape.html#a6cfbb512a0c4dc1a9f02d4a830829721',1,'CylinderShape::GetTrianglesNext()'],['../class_shape.html#a4b6ba637f676d38c24bdb5da9a2f345f',1,'Shape::GetTrianglesNext()'],['../class_get_triangles_context_multi_vertex_list.html#adb9476df77af2728b5054c8c1ec6c0bb',1,'GetTrianglesContextMultiVertexList::GetTrianglesNext()'],['../class_transformed_shape.html#a7f4d127145d57e13ff41523a3c8ecd9e',1,'TransformedShape::GetTrianglesNext()'],['../class_get_triangles_context_vertex_list.html#ac42ac006966e5e9819b97f3764be4fc4',1,'GetTrianglesContextVertexList::GetTrianglesNext()'],['../class_plane_shape.html#a87e30ad80dcbb0987323b236e85d02a6',1,'PlaneShape::GetTrianglesNext()'],['../class_convex_shape.html#ac067fd156edf8fa249c8ed65bc9f5f18',1,'ConvexShape::GetTrianglesNext()'],['../class_compound_shape.html#a86dbc7e794fdf43a39fed13e60731a0b',1,'CompoundShape::GetTrianglesNext()'],['../class_triangle_shape.html#aea1cb87c9bdf927b353459aec286218f',1,'TriangleShape::GetTrianglesNext()'],['../class_convex_hull_shape.html#a7def260c11540094261de145227efa04',1,'ConvexHullShape::GetTrianglesNext()'],['../class_mesh_shape.html#a9c170a3cbeccfbfa9349038d0aa5f10c',1,'MeshShape::GetTrianglesNext()']]], + ['gettrianglesstart_470',['gettrianglesstart',['../class_capsule_shape.html#ac5f59452b7a3fc2c31ba77f2997ec493',1,'CapsuleShape::GetTrianglesStart()'],['../class_convex_hull_shape.html#a6c4c9fd637e19f6d7d7aa32a0389a6a6',1,'ConvexHullShape::GetTrianglesStart()'],['../class_tapered_cylinder_shape.html#a2aca46ff56852aa97e3734a9fff25bb8',1,'TaperedCylinderShape::GetTrianglesStart()'],['../class_sphere_shape.html#ae00fa28f36870678e33dc16085cafc5b',1,'SphereShape::GetTrianglesStart()'],['../class_mesh_shape.html#a409b6ac0a7548e275d6f1f2a9b57a19d',1,'MeshShape::GetTrianglesStart()'],['../class_height_field_shape.html#a03ddda27200f07afc08f6439ce36d491',1,'HeightFieldShape::GetTrianglesStart()'],['../class_plane_shape.html#a1f75622c86ebecaf63bde5430b00eb55',1,'PlaneShape::GetTrianglesStart()'],['../class_scaled_shape.html#af3c0586193bee5223c9a94556ee019de',1,'ScaledShape::GetTrianglesStart()'],['../class_compound_shape.html#a1e3571fbe4835d1bfec50d9d7a1a2b1f',1,'CompoundShape::GetTrianglesStart()'],['../class_offset_center_of_mass_shape.html#a928422bd2dd3f8a9ac2107bdf503446e',1,'OffsetCenterOfMassShape::GetTrianglesStart()'],['../class_cylinder_shape.html#aabb7fa62446dd36b1d18f149cef8fb22',1,'CylinderShape::GetTrianglesStart()'],['../class_triangle_shape.html#a3fe954485d3333b502acd074ebd3d405',1,'TriangleShape::GetTrianglesStart()'],['../class_convex_shape.html#a063b182d0bc6eddcde2b3fd422fca7a7',1,'ConvexShape::GetTrianglesStart()'],['../class_rotated_translated_shape.html#a801257f7a7ea6c26a728170cbd7ba55f',1,'RotatedTranslatedShape::GetTrianglesStart()'],['../class_soft_body_shape.html#a28d58a8068af4f051eb33f5545524f8d',1,'SoftBodyShape::GetTrianglesStart()'],['../class_transformed_shape.html#ab5c4bf71ad1569f890bccf3b71248b43',1,'TransformedShape::GetTrianglesStart()'],['../class_box_shape.html#a287e16289c491cd9dbd980e59ca7725b',1,'BoxShape::GetTrianglesStart()'],['../class_shape.html#a703f5419cf3f3cb216cbe0433ce1a625',1,'Shape::GetTrianglesStart()']]], + ['gettriangleuserdata_471',['GetTriangleUserData',['../class_mesh_shape.html#a3f4c544b5cab768beeefe4d8c8639cff',1,'MeshShape']]], + ['gettrues_472',['gettrues',['../class_d_vec3.html#a11971a6122b035009707efe51f5a1169',1,'DVec3::GetTrues()'],['../class_u_vec4.html#a4e62bc4e8238a1742d9cde03a0520252',1,'UVec4::GetTrues()']]], + ['gettwist_473',['GetTwist',['../class_quat.html#aa30f29eff5df0de717de979bf3aae295',1,'Quat']]], + ['gettwistmaxangle_474',['GetTwistMaxAngle',['../class_swing_twist_constraint.html#a167f8f552fae981543530a4bd225b763',1,'SwingTwistConstraint']]], + ['gettwistminangle_475',['GetTwistMinAngle',['../class_swing_twist_constraint.html#ae2220254397365c2d99a026cdfeb5243',1,'SwingTwistConstraint']]], + ['gettwistmotorsettings_476',['gettwistmotorsettings',['../class_swing_twist_constraint.html#ae63b6cda1826e0b1aa6b6960780e92e3',1,'SwingTwistConstraint::GetTwistMotorSettings() const'],['../class_swing_twist_constraint.html#aec236c29d446311925a62f2004ae6974',1,'SwingTwistConstraint::GetTwistMotorSettings()']]], + ['gettwistmotorstate_477',['GetTwistMotorState',['../class_swing_twist_constraint.html#a44ce1ccf1c4d95f88bb6ab2571035196',1,'SwingTwistConstraint']]], + ['gettype_478',['gettype',['../class_two_body_constraint.html#a25655ebd463476c1ada660d3a292d3c7',1,'TwoBodyConstraint::GetType()'],['../class_shape.html#a35b8f1a8a02f90d3edc02db22f03932a',1,'Shape::GetType()'],['../class_constraint.html#a6e290088c6049b1f1d1fb26df96dce3a',1,'Constraint::GetType()']]], + ['getuint32_479',['GetUInt32',['../class_color.html#aedcaed2b19d4b10e7c994ed8ab1ac58d',1,'Color']]], + ['getunmapped_480',['getunmapped',['../class_skeleton_mapper.html#a4b67e8a430be5b9150676f5103ef0974',1,'SkeletonMapper::GetUnmapped() const'],['../class_skeleton_mapper.html#ae5c8deb7c2eebbfd0f2088c33f991ec8',1,'SkeletonMapper::GetUnmapped()']]], + ['getup_481',['GetUp',['../class_character_base.html#a2a437049ade0a3ab8ab7aeafb64f5163',1,'CharacterBase']]], + ['getupdateposition_482',['GetUpdatePosition',['../class_soft_body_motion_properties.html#ac798aa56fce5a89d404e164c4b483ddd',1,'SoftBodyMotionProperties']]], + ['getusage_483',['GetUsage',['../class_temp_allocator_impl.html#af2fadcba643a00f16de5f59e0cee0579',1,'TempAllocatorImpl']]], + ['getusemanifoldreduction_484',['getusemanifoldreduction',['../class_body.html#ae2732111d3d846bfceb19459fa2ee963',1,'Body::GetUseManifoldReduction()'],['../class_body_interface.html#af83d47bf486a2e3c70b485ede215b412',1,'BodyInterface::GetUseManifoldReduction()']]], + ['getusemanifoldreductionwithbody_485',['GetUseManifoldReductionWithBody',['../class_body.html#a602ae16f05ab73cd5cae80c2fd9b4a0d',1,'Body']]], + ['getuserdata_486',['getuserdata',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html#ad05b875676147545245c4086c4588ca7',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader::GetUserData()'],['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_decoding_context.html#a556ef7c4049df729a89803a23a210d4c',1,'TriangleCodecIndexed8BitPackSOA4Flags::DecodingContext::GetUserData()'],['../class_body.html#a48b9455aae90fe4d73302389f6c7d9b5',1,'Body::GetUserData()'],['../class_body_interface.html#a34942329fd9b3230e938f4418302138c',1,'BodyInterface::GetUserData()'],['../class_character_virtual.html#acc49b466797667ae5f4bb1ee44e83b2e',1,'CharacterVirtual::GetUserData()'],['../class_shape.html#a7146c658ddb5c7b0fec4489535ca664f',1,'Shape::GetUserData()'],['../class_constraint.html#a51361e09906d05f85d341d1bad2cecd5',1,'Constraint::GetUserData()']]], + ['getvalue_487',['getvalue',['../class_linear_curve.html#a24eda4be408b24e5dfeba9bf94edb295',1,'LinearCurve::GetValue()'],['../class_lock_free_hash_map_1_1_key_value.html#a7998c182167f381dcb2bfe6d1932bad8',1,'LockFreeHashMap::KeyValue::GetValue()'],['../class_lock_free_hash_map_1_1_key_value.html#ae392d930ad47864c4121fbdf4444044e',1,'LockFreeHashMap::KeyValue::GetValue() const'],['../class_semaphore.html#a8e4d787c14be5d3191ba1353594267e4',1,'Semaphore::GetValue()'],['../class_broad_phase_layer.html#a88ef7f609071bbf53e1c018966e65c36',1,'BroadPhaseLayer::GetValue()'],['../class_sub_shape_i_d.html#a93de7475867625a7b2dc053d2af57c2b',1,'SubShapeID::GetValue()']]], + ['getvehiclebody_488',['GetVehicleBody',['../class_vehicle_constraint.html#a402cd50d87d5f478036104b9185fb2db',1,'VehicleConstraint']]], + ['getvertex_489',['getvertex',['../class_soft_body_motion_properties.html#aa2581182a2773f19f17bb868419eced1',1,'SoftBodyMotionProperties::GetVertex(uint inIndex) const'],['../class_soft_body_motion_properties.html#a043b0f7b9bcc457d12af67a184c82b8e',1,'SoftBodyMotionProperties::GetVertex(uint inIndex)']]], + ['getvertexdata_490',['GetVertexData',['../struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html#a065d0f2f856b48f8ae6c44a7f7ec8a0f',1,'TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader']]], + ['getvertices_491',['getvertices',['../class_soft_body_manifold.html#aa00527a000cd0b485d7a838ac5e288a8',1,'SoftBodyManifold::GetVertices()'],['../class_soft_body_motion_properties.html#a39f8a1dd664ca0cdbbaed3893885e60a',1,'SoftBodyMotionProperties::GetVertices() const'],['../class_soft_body_motion_properties.html#a14aaefdff39da80c5d00f3733618bebb',1,'SoftBodyMotionProperties::GetVertices()'],['../class_triangle_splitter.html#a4ca9c0334863bd8615fbe9e498cfde44',1,'TriangleSplitter::GetVertices()']]], + ['getvolume_492',['getvolume',['../class_box_shape.html#a22a7afcc6db8041d6e0f335bfee62ec0',1,'BoxShape::GetVolume()'],['../class_capsule_shape.html#aeeab148856a7d53ddf1a42934fbb048c',1,'CapsuleShape::GetVolume()'],['../class_compound_shape.html#a2c66ad490f6662e3ef81e44cabee11fa',1,'CompoundShape::GetVolume()'],['../class_convex_hull_shape.html#a0f6066d340c3db1d1d06373fa18b4691',1,'ConvexHullShape::GetVolume()'],['../class_cylinder_shape.html#a85e3891076275d55c6274d3cfd480b18',1,'CylinderShape::GetVolume()'],['../class_height_field_shape.html#aefe0c0c9d3017a94ac8835e84e698e9a',1,'HeightFieldShape::GetVolume()'],['../class_mesh_shape.html#a69ed9404f75cceb172a608c746994c09',1,'MeshShape::GetVolume()'],['../class_offset_center_of_mass_shape.html#a92a8fbf01df9c36b9176c18889b92f58',1,'OffsetCenterOfMassShape::GetVolume()'],['../class_plane_shape.html#a401cd22b9f6fbc2f79d565f4e8eb33ba',1,'PlaneShape::GetVolume()'],['../class_rotated_translated_shape.html#a551123649d86e6cef5a8499c4318aa6d',1,'RotatedTranslatedShape::GetVolume()'],['../class_scaled_shape.html#ae0c292389243763cf6abd92048200cf3',1,'ScaledShape::GetVolume()'],['../class_shape.html#a2b07e3d1b554ff77d18e86af7cd451b7',1,'Shape::GetVolume()'],['../class_sphere_shape.html#a67684ecf3156eed16a5da749fcaad002',1,'SphereShape::GetVolume()'],['../class_tapered_capsule_shape.html#a7899c1aa1dbb08bd5b79c2b8d01711a0',1,'TaperedCapsuleShape::GetVolume()'],['../class_tapered_cylinder_shape.html#a59bf42adddb7139199282ee755299782',1,'TaperedCylinderShape::GetVolume()'],['../class_triangle_shape.html#ae85456e8f22b77ebef19e814221b9ec9',1,'TriangleShape::GetVolume()'],['../class_soft_body_motion_properties.html#acfcc07bc8fe8e5a34767df2383eaf7ff',1,'SoftBodyMotionProperties::GetVolume()'],['../class_soft_body_shape.html#aa6126864f8ab7dc383063d46f9f89a4a',1,'SoftBodyShape::GetVolume()'],['../class_a_a_box.html#aab14f598d69dfa94daf74cc8d7721a21',1,'AABox::GetVolume()']]], + ['getw_493',['getw',['../class_quat.html#a13d0159a54a94e6a90dc5952f454b09e',1,'Quat::GetW()'],['../class_u_vec4.html#a8524d1d2a92eb5b564976d7d2a5f8a57',1,'UVec4::GetW()'],['../class_vec4.html#a3779a0a05de85b286afeb12f65d08090',1,'Vec4::GetW()']]], + ['getwheel_494',['getwheel',['../class_vehicle_constraint.html#a6d90f054b9fa121d8ec9b1e2f0dcba65',1,'VehicleConstraint::GetWheel(uint inIdx)'],['../class_vehicle_constraint.html#a205699c8c9916b774790a8f87a43d61c',1,'VehicleConstraint::GetWheel(uint inIdx) const']]], + ['getwheelbase_495',['GetWheelBase',['../class_motorcycle_controller.html#ab3fdaf44396f6325dccb7cc1e8aab6a7',1,'MotorcycleController']]], + ['getwheellocalbasis_496',['GetWheelLocalBasis',['../class_vehicle_constraint.html#ad752f73785ddd88b0e4776101d914f38',1,'VehicleConstraint']]], + ['getwheellocaltransform_497',['GetWheelLocalTransform',['../class_vehicle_constraint.html#a26fa80f7292448dd869df47c46a30adf',1,'VehicleConstraint']]], + ['getwheels_498',['getwheels',['../class_vehicle_constraint.html#af2a24975a01de3cf22ab55ba2ac6ed74',1,'VehicleConstraint::GetWheels() const'],['../class_vehicle_constraint.html#a5b39b845e91504642e180a4f35df0a45',1,'VehicleConstraint::GetWheels()']]], + ['getwheelspeedatclutch_499',['GetWheelSpeedAtClutch',['../class_wheeled_vehicle_controller.html#a0ef079b5815d391cedacbceb40105c6f',1,'WheeledVehicleController']]], + ['getwheelworldtransform_500',['GetWheelWorldTransform',['../class_vehicle_constraint.html#ab4e43b201b7379b643820447daae173c',1,'VehicleConstraint']]], + ['getworldspacebounds_501',['getworldspacebounds',['../class_body.html#a2be34f0150bb5f520f21330ee6b7cb41',1,'Body::GetWorldSpaceBounds()'],['../class_capsule_shape.html#ae745928604f1c1a87d3b6f60e4b25224',1,'CapsuleShape::GetWorldSpaceBounds()'],['../class_compound_shape.html#a4c52ac0245dea72dd6fc63c7f6f2ef4b',1,'CompoundShape::GetWorldSpaceBounds()'],['../class_offset_center_of_mass_shape.html#aa7cf35aee4a9d6b6e1afaf4e0a67a457',1,'OffsetCenterOfMassShape::GetWorldSpaceBounds()'],['../class_rotated_translated_shape.html#af35a0921b0454466b5a24882acba7ddb',1,'RotatedTranslatedShape::GetWorldSpaceBounds()'],['../class_scaled_shape.html#a1873be9425e42d2af4aece1ddd24cf35',1,'ScaledShape::GetWorldSpaceBounds()'],['../class_shape.html#a9f8379fa338802436700b86a07fab3be',1,'Shape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'Shape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_sphere_shape.html#a637eb08a63c6bd5e8cc57c0f7e5c08a7',1,'SphereShape::GetWorldSpaceBounds()'],['../class_tapered_capsule_shape.html#a1372f0cdbfcc07e4946972a7aa275ea1',1,'TaperedCapsuleShape::GetWorldSpaceBounds()'],['../class_triangle_shape.html#aa28d229f86caa87f195cf1bf9b0529f2',1,'TriangleShape::GetWorldSpaceBounds()'],['../class_transformed_shape.html#a33b12d09ebaf2071dd49a3873978ac0a',1,'TransformedShape::GetWorldSpaceBounds()'],['../class_ragdoll.html#a8ab1cc3715aafa05d4b04647c54282a3',1,'Ragdoll::GetWorldSpaceBounds()'],['../class_capsule_shape.html#a9f8379fa338802436700b86a07fab3be',1,'CapsuleShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_capsule_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'CapsuleShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_compound_shape.html#a9f8379fa338802436700b86a07fab3be',1,'CompoundShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_compound_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'CompoundShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_offset_center_of_mass_shape.html#a9f8379fa338802436700b86a07fab3be',1,'OffsetCenterOfMassShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_offset_center_of_mass_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'OffsetCenterOfMassShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_rotated_translated_shape.html#a9f8379fa338802436700b86a07fab3be',1,'RotatedTranslatedShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_rotated_translated_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'RotatedTranslatedShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_scaled_shape.html#a9f8379fa338802436700b86a07fab3be',1,'ScaledShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_scaled_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'ScaledShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_sphere_shape.html#a9f8379fa338802436700b86a07fab3be',1,'SphereShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_sphere_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'SphereShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_tapered_capsule_shape.html#a9f8379fa338802436700b86a07fab3be',1,'TaperedCapsuleShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_tapered_capsule_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'TaperedCapsuleShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_triangle_shape.html#a9f8379fa338802436700b86a07fab3be',1,'TriangleShape::GetWorldSpaceBounds(Mat44Arg inCenterOfMassTransform, Vec3Arg inScale) const'],['../class_triangle_shape.html#adc0e48fe3e684665c0b4ba3ec9e9ed6b',1,'TriangleShape::GetWorldSpaceBounds(DMat44Arg inCenterOfMassTransform, Vec3Arg inScale) const']]], + ['getworldspacecontactpointon1_502',['GetWorldSpaceContactPointOn1',['../class_contact_manifold.html#a1112cfe6df7934c56e585d5985d2870a',1,'ContactManifold']]], + ['getworldspacecontactpointon2_503',['GetWorldSpaceContactPointOn2',['../class_contact_manifold.html#a28d3d860f9bb992c0c581b7a68df6681',1,'ContactManifold']]], + ['getworldspacesurfacenormal_504',['getworldspacesurfacenormal',['../class_body.html#a12422310c7aa9ec72e2376d08fbee6b5',1,'Body::GetWorldSpaceSurfaceNormal()'],['../class_transformed_shape.html#a38fdd1585da3137083b8ee9f9bdcdd98',1,'TransformedShape::GetWorldSpaceSurfaceNormal()']]], + ['getworldtransform_505',['getworldtransform',['../class_body_interface.html#a8409d75ef7758e7c61675be89629cb6c',1,'BodyInterface::GetWorldTransform()'],['../class_character.html#a860a13343fac533562e20f01a0b5ca2d',1,'Character::GetWorldTransform()'],['../class_character_virtual.html#a36a2e0c44e55954fbc62aed4e030ab01',1,'CharacterVirtual::GetWorldTransform()'],['../class_transformed_shape.html#af233e9488d9738108c192ab850758cd9',1,'TransformedShape::GetWorldTransform()'],['../class_body.html#a4bab5d07f84d5a9d38119a1923298b5c',1,'Body::GetWorldTransform()']]], + ['getworldup_506',['GetWorldUp',['../class_vehicle_constraint.html#a6f86aee9e1cde819a5cbe56fa0a6aa4e',1,'VehicleConstraint']]], + ['getx_507',['getx',['../class_d_vec3.html#afb533f92f55c1e9dc3e7eece73e87dda',1,'DVec3::GetX()'],['../class_quat.html#a3fb43a7bca4b20ce7573030fd826aa96',1,'Quat::GetX()'],['../class_u_vec4.html#ab2f2894975c86cd37303d8454aa37fcf',1,'UVec4::GetX()'],['../class_vec3.html#a284e29f161ae7709a934f402bd2a848c',1,'Vec3::GetX()'],['../class_vec4.html#aad89aa3a9c4215f45c0dbe1fb65830c3',1,'Vec4::GetX()']]], + ['getxyz_508',['GetXYZ',['../class_quat.html#afa7fe10bf8a457fb2d524791ccd79ec4',1,'Quat']]], + ['getxyzw_509',['GetXYZW',['../class_quat.html#a7800c0c4cb017273d86793d8a09bf136',1,'Quat']]], + ['gety_510',['gety',['../class_d_vec3.html#ad5aa83813d9db92bd0f04610ff6da1d4',1,'DVec3::GetY()'],['../class_quat.html#a21f44684684b475d9f5d02ed9c580def',1,'Quat::GetY()'],['../class_u_vec4.html#a33a55cd5fde9b7bfdbb408faafc1f11b',1,'UVec4::GetY()'],['../class_vec3.html#aac08ebd63b9ab4fa089a5ed3224a8679',1,'Vec3::GetY()'],['../class_vec4.html#aee5a8598cce851f687263d9b3a163989',1,'Vec4::GetY()']]], + ['getz_511',['getz',['../class_d_vec3.html#a829a6fd58f3d3bd2da8f4f56f09df728',1,'DVec3::GetZ()'],['../class_quat.html#a38dfc20f7628eee4492125a41ad91764',1,'Quat::GetZ()'],['../class_u_vec4.html#a0eeba4ed35bd749af316be5bc0949a0a',1,'UVec4::GetZ()'],['../class_vec3.html#aeca36d050a7c2b41d3ac0438874d8c60',1,'Vec3::GetZ()'],['../class_vec4.html#ae5f0ef8f9fd4deb1359806fac122f309',1,'Vec4::GetZ()']]], + ['group_512',['group',['../class_triangle_grouper.html#a002940499a58b60dafdcdedb7e26fbb5',1,'TriangleGrouper::Group()'],['../class_triangle_grouper_closest_centroid.html#a41cf43b8c59cd10eedf1fafbca09fd42',1,'TriangleGrouperClosestCentroid::Group()'],['../class_triangle_grouper_morton.html#ac20ae93a828b828b47e20f1b0630c4fb',1,'TriangleGrouperMorton::Group()']]], + ['groupfiltertable_513',['groupfiltertable',['../class_group_filter_table.html#ace82879585ebeb7f322700733349fa37',1,'GroupFilterTable::GroupFilterTable(uint inNumSubGroups=0)'],['../class_group_filter_table.html#a91ed666a7043cd932da78adce8e8920e',1,'GroupFilterTable::GroupFilterTable(const GroupFilterTable &inRHS)']]] +]; diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 000000000..b89c8ff02 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['hadhit_0',['hadhit',['../class_closest_hit_collision_collector.html#aa9679e95456d67c8f813e6f13de6e65c',1,'ClosestHitCollisionCollector::HadHit()'],['../class_any_hit_collision_collector.html#a91c5757d891295842942599a359fdf36',1,'AnyHitCollisionCollector::HadHit()'],['../class_all_hit_collision_collector.html#abb747117423ae48dc5e4f661084ef32a',1,'AllHitCollisionCollector::HadHit()']]], + ['hasbodies_1',['HasBodies',['../class_quad_tree.html#a0f40b5da772779a14a6d6aedd28ae8a0',1,'QuadTree']]], + ['haschildren_2',['HasChildren',['../class_a_a_b_b_tree_builder_1_1_node.html#ae10ed18604852aa130a4770fe72c9240',1,'AABBTreeBuilder::Node']]], + ['hascollidedwith_3',['hascollidedwith',['../class_character_virtual.html#a59a36680856b7f106bbad79345c1525b',1,'CharacterVirtual::HasCollidedWith(const BodyID &inBody) const'],['../class_character_virtual.html#adacc8eaa741dfd330fbf2d58fa4b7541',1,'CharacterVirtual::HasCollidedWith(const CharacterVirtual *inCharacter) const']]], + ['hascontact_4',['hascontact',['../class_soft_body_manifold.html#a05c6d3d048b62669bde92ad457317523',1,'SoftBodyManifold::HasContact()'],['../class_wheel.html#ad5ab9bb3ed8151044ad41de572945eac',1,'Wheel::HasContact()']]], + ['haserror_5',['HasError',['../class_result.html#a2de3e8315a673e4fc3e627eafad42586',1,'Result']]], + ['hash64_6',['Hash64',['../_hash_combine_8h.html#a8ce241fe287672b4a559499d341d2ee7',1,'HashCombine.h']]], + ['hashbytes_7',['HashBytes',['../_hash_combine_8h.html#a396c677c4eb61f19e11cc202aac23c38',1,'HashCombine.h']]], + ['hashcombine_8',['HashCombine',['../_hash_combine_8h.html#a4c51b5041a1dac503b2bcadfb351c3a4',1,'HashCombine.h']]], + ['hashcombinehelper_9',['HashCombineHelper',['../_hash_combine_8h.html#a6f53710c5b84fefd0968e1ebc5810bd3',1,'HashCombine.h']]], + ['hashithardpoint_10',['HasHitHardPoint',['../class_wheel.html#a61eabff8238d2b284c9a286309e05806',1,'Wheel']]], + ['hashstring_11',['HashString',['../_string_tools_8h.html#aa8f608a4239b6a863e405b05f5318fe6',1,'StringTools.h']]], + ['haslimits_12',['haslimits',['../class_hinge_constraint.html#af1934023ab6d537ecc04cb605c6fada3',1,'HingeConstraint::HasLimits()'],['../class_slider_constraint.html#a7b5b4709994b7a7f4133e0e7d129d3c5',1,'SliderConstraint::HasLimits()']]], + ['hasmassproperties_13',['HasMassProperties',['../class_body_creation_settings.html#a9386fbbcc940bfb89b8442f342748e32',1,'BodyCreationSettings']]], + ['hasnexttriangle_14',['HasNextTriangle',['../class_e_p_a_convex_hull_builder.html#a233403c7274da823fb6b96b539dc5f95',1,'EPAConvexHullBuilder']]], + ['hasstiffness_15',['HasStiffness',['../class_spring_settings.html#afb683eddb2db25f62403a6af6410eebb',1,'SpringSettings']]], + ['heightfieldshape_16',['heightfieldshape',['../class_height_field_shape.html#a1f6a09590e095c6950e7afff423aa0a7',1,'HeightFieldShape::HeightFieldShape(const HeightFieldShapeSettings &inSettings, ShapeResult &outResult)'],['../class_height_field_shape.html#aa3defa4f1ee1a3e606a4dbe41cd6f515',1,'HeightFieldShape::HeightFieldShape()']]], + ['heightfieldshapesettings_17',['heightfieldshapesettings',['../class_height_field_shape_settings.html#adf01e409660816defec790e752348cc0',1,'HeightFieldShapeSettings::HeightFieldShapeSettings(const float *inSamples, Vec3Arg inOffset, Vec3Arg inScale, uint32 inSampleCount, const uint8 *inMaterialIndices=nullptr, const PhysicsMaterialList &inMaterialList=PhysicsMaterialList())'],['../class_height_field_shape_settings.html#a3bd65c794f1651b192e95a4fc7c60576',1,'HeightFieldShapeSettings::HeightFieldShapeSettings()=default']]], + ['hingeconstraint_18',['HingeConstraint',['../class_hinge_constraint.html#a7337c51b877bbc1c3848d3de7b3dae8f',1,'HingeConstraint']]], + ['hintindentdown_19',['hintindentdown',['../class_object_stream_text_out.html#abb8c8ed67d0c0093551de3e8e35f1602',1,'ObjectStreamTextOut::HintIndentDown()'],['../class_i_object_stream_out.html#ad8f41874c06223db415f29a57f72caa1',1,'IObjectStreamOut::HintIndentDown()']]], + ['hintindentup_20',['hintindentup',['../class_i_object_stream_out.html#ac24c86e1d5fba43f2dcfdd3557269a3d',1,'IObjectStreamOut::HintIndentUp()'],['../class_object_stream_text_out.html#a9fc1cac8ca74e8897ec19b2df8de1eb9',1,'ObjectStreamTextOut::HintIndentUp()']]], + ['hintnextitem_21',['hintnextitem',['../class_i_object_stream_out.html#aa414a76c2459d6346da50c61b279f6f3',1,'IObjectStreamOut::HintNextItem()'],['../class_object_stream_text_out.html#acc5aff4eec5365eaf3b43070cd893485',1,'ObjectStreamTextOut::HintNextItem()']]], + ['hsgettrianglescontext_22',['HSGetTrianglesContext',['../struct_height_field_shape_1_1_h_s_get_triangles_context.html#a59ff92ab62ae7b8de0fa381aed8e54b6',1,'HeightFieldShape::HSGetTrianglesContext']]], + ['hullnoconvex_23',['HullNoConvex',['../class_convex_hull_shape_1_1_hull_no_convex.html#a652a6ba8e320db5f9bd800be8a09b383',1,'ConvexHullShape::HullNoConvex']]], + ['hullwithconvex_24',['HullWithConvex',['../class_convex_hull_shape_1_1_hull_with_convex.html#a2cc182e90ba06f5fdf0db6824c4173ee',1,'ConvexHullShape::HullWithConvex']]], + ['hullwithconvexscaled_25',['HullWithConvexScaled',['../class_convex_hull_shape_1_1_hull_with_convex_scaled.html#a909efa72b31f796f8b86bc2fbe00d620',1,'ConvexHullShape::HullWithConvexScaled']]] +]; diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 000000000..5de13fc58 --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,84 @@ +var searchData= +[ + ['ignorebody_0',['IgnoreBody',['../class_ignore_multiple_bodies_filter.html#ad3bfab720ac4fcd05cef194b6ec0106a',1,'IgnoreMultipleBodiesFilter']]], + ['ignoresinglebodyfilter_1',['IgnoreSingleBodyFilter',['../class_ignore_single_body_filter.html#adcc8cbdc3b3cd657ce832f13b6b4bf68',1,'IgnoreSingleBodyFilter']]], + ['ignoresinglebodyfilterchained_2',['IgnoreSingleBodyFilterChained',['../class_ignore_single_body_filter_chained.html#a92bbf17cd704ae6e64c4d7c86bfcf7fc',1,'IgnoreSingleBodyFilterChained']]], + ['indexedtriangle_3',['IndexedTriangle',['../class_indexed_triangle.html#afa13a5b9104c4fe6f17c848a786f66b6',1,'IndexedTriangle']]], + ['indexedtrianglenomaterial_4',['indexedtrianglenomaterial',['../class_indexed_triangle_no_material.html#a23f00d353bda9289c5a686975d443a81',1,'IndexedTriangleNoMaterial::IndexedTriangleNoMaterial()=default'],['../class_indexed_triangle_no_material.html#aa602ab6944f42f9103f36ce13b47d7cd',1,'IndexedTriangleNoMaterial::IndexedTriangleNoMaterial(uint32 inI1, uint32 inI2, uint32 inI3)'],['../class_indexed_triangle.html#a23f00d353bda9289c5a686975d443a81',1,'IndexedTriangle::IndexedTriangleNoMaterial()=default'],['../class_indexed_triangle.html#aa602ab6944f42f9103f36ce13b47d7cd',1,'IndexedTriangle::IndexedTriangleNoMaterial(uint32 inI1, uint32 inI2, uint32 inI3)']]], + ['indexify_5',['indexify',['../_indexify_8cpp.html#ab6b21642fd35795ec65d252b58614f0f',1,'Indexify(const TriangleList &inTriangles, VertexList &outVertices, IndexedTriangleList &outTriangles, float inVertexWeldDistance): Indexify.cpp'],['../_indexify_8h.html#ab7b184ebf9ddcef48642e7cfea156909',1,'Indexify(const TriangleList &inTriangles, VertexList &outVertices, IndexedTriangleList &outTriangles, float inVertexWeldDistance=1.0e-4f): Indexify.cpp']]], + ['init_6',['init',['../class_job_system_with_barrier.html#a07c53b2eecf2984531affd3867815214',1,'JobSystemWithBarrier::Init()'],['../class_job_system_single_threaded.html#a9a7a97646eaa417b4860df72739a64d9',1,'JobSystemSingleThreaded::Init()'],['../class_fixed_size_free_list.html#a083084370fcf7fde019f6d4d8b99378e',1,'FixedSizeFreeList::Init()'],['../class_job_system_thread_pool.html#ad8d40e63f28b99fcffdbb2e237864482',1,'JobSystemThreadPool::Init()'],['../class_physics_system.html#ae578fcd0c58f678156b7cd8b44f811a6',1,'PhysicsSystem::Init()'],['../class_island_builder.html#a060b323839a30c3096ec581b4684290d',1,'IslandBuilder::Init()'],['../class_contact_constraint_manager.html#a8225433cfdf9f63fa149fdac25e0a263',1,'ContactConstraintManager::Init()'],['../class_narrow_phase_query.html#a85be5810a9b3d96dcb527767f499c852',1,'NarrowPhaseQuery::Init()'],['../class_quad_tree.html#a61023e566be172a288dfcd728118ec46',1,'QuadTree::Init()'],['../class_broad_phase.html#ad7d7ba03cddb7946ad487176458ffce4',1,'BroadPhase::Init()'],['../class_lock_free_hash_map.html#a64add1094aa66c55413b2488e8ae8d16',1,'LockFreeHashMap::Init()'],['../class_l_f_h_m_allocator.html#a9eda23a0f8dd6fac54adab81b97e7c60',1,'LFHMAllocator::Init()'],['../class_broad_phase_quad_tree.html#aff006c957ae78fae8652ed352f7f1bc2',1,'BroadPhaseQuadTree::Init()'],['../class_body_manager.html#a2d0f5cce4bc65b5dd60e79edc37fd0d9',1,'BodyManager::Init()'],['../class_mutex_array.html#a882ec12f80ee295c78857d266cb69340',1,'MutexArray::Init()'],['../class_body_interface.html#a53d3b19282c77d972f684abeb16b42a8',1,'BodyInterface::Init()']]], + ['initialize_7',['initialize',['../class_convex_hull_builder_1_1_face.html#ad7bd1a953fcc40b6987a3d51c90f61ce',1,'ConvexHullBuilder::Face::Initialize()'],['../class_convex_hull_builder.html#afa4a4a97fc8ae9e58c039b3c36d10c54',1,'ConvexHullBuilder::Initialize()'],['../class_convex_hull_builder2_d.html#aa7047be80b54c2b14497e3d34c3dd956',1,'ConvexHullBuilder2D::Initialize()'],['../class_e_p_a_convex_hull_builder.html#ac6b69723ed9d2c1b815769f9953ef8e7',1,'EPAConvexHullBuilder::Initialize()'],['../class_soft_body_motion_properties.html#a999ca42bb024698adfa2bac1cf971d02',1,'SoftBodyMotionProperties::Initialize()'],['../class_debug_renderer.html#a1ca028ffb521cc342e2d34cfc03f5d46',1,'DebugRenderer::Initialize()'],['../class_skeleton_mapper.html#a4c6938fe3c8557ea55e10cc3c8bfc387',1,'SkeletonMapper::Initialize()']]], + ['initializeupdatecontext_8',['InitializeUpdateContext',['../class_soft_body_motion_properties.html#aec0e4f9a14bad868339c95357a8c37ab',1,'SoftBodyMotionProperties']]], + ['insert_9',['insert',['../class_array.html#ac6af5bac62e99ef93d1ab63077eeda24',1,'Array::insert(const_iterator inPos, const T &inValue)'],['../class_array.html#a621b4ce6e5e1bdc2e158ba276b89aeae',1,'Array::insert(const_iterator inPos, Iterator inBegin, Iterator inEnd)']]], + ['insertionsort_10',['insertionsort',['../_insertion_sort_8h.html#a80e0fb97467b162da908954c2625ddbc',1,'InsertionSort(Iterator inBegin, Iterator inEnd): InsertionSort.h'],['../_insertion_sort_8h.html#a1c833812e3ce3c4848ccd57826ab2463',1,'InsertionSort(Iterator inBegin, Iterator inEnd, Compare inCompare): InsertionSort.h']]], + ['internaledgeremovingcollector_11',['InternalEdgeRemovingCollector',['../class_internal_edge_removing_collector.html#a871712a392dc701428cd3da7e872cd6d',1,'InternalEdgeRemovingCollector']]], + ['internalgetpointer_12',['internalgetpointer',['../class_ref.html#a77d70f3060879921e889cb1bb14c676f',1,'Ref::InternalGetPointer()'],['../class_ref_const.html#a87a9a9c835eaabab406c8015c8ef2033',1,'RefConst::InternalGetPointer()']]], + ['intersect_13',['Intersect',['../class_a_a_box.html#a5dfffd69562c679b789599bb3b30f736',1,'AABox']]], + ['intersects_14',['Intersects',['../class_g_j_k_closest_point.html#a20ab4d36efcf62ceae244ec75eb4bc23',1,'GJKClosestPoint']]], + ['invalidatecontactcache_15',['InvalidateContactCache',['../class_body_interface.html#af554a69ffbdfb5290c03cc9562ed21e5',1,'BodyInterface']]], + ['invalidatecontactcacheforbody_16',['InvalidateContactCacheForBody',['../class_body_manager.html#a2d9975b3a1fb311c3956820eae65b7ce',1,'BodyManager']]], + ['invalidatecontactcacheinternal_17',['InvalidateContactCacheInternal',['../class_body.html#a469ea05f3200587491082a0f11f54fc6',1,'Body']]], + ['invbind_18',['invbind',['../class_soft_body_shared_settings_1_1_inv_bind.html#a9fd7d2b0a344f06e51c2ff0b86224a58',1,'SoftBodySharedSettings::InvBind::InvBind(uint32 inJointIndex, Mat44Arg inInvBind)'],['../class_soft_body_shared_settings_1_1_inv_bind.html#a8545f4208959bc7ca55c73ecb595ac71',1,'SoftBodySharedSettings::InvBind::InvBind()=default']]], + ['inversed_19',['inversed',['../class_d_mat44.html#a9dd1f19d169fa56c3797b3160ec6e01e',1,'DMat44::Inversed()'],['../class_mat44.html#aae48032b0b6d27778617b8546135b057',1,'Mat44::Inversed()'],['../class_matrix.html#ad36508b39c6773cc40fdd6a27f14b4eb',1,'Matrix::Inversed()'],['../class_quat.html#ac04a00570e1a5e96d49398d40d493bf3',1,'Quat::Inversed()']]], + ['inversed3x3_20',['Inversed3x3',['../class_mat44.html#ad9f5df546296a7bdc816e6be5627926b',1,'Mat44']]], + ['inversedrotationtranslation_21',['inversedrotationtranslation',['../class_d_mat44.html#a99c3fff7120735262343accfb677cca0',1,'DMat44::InversedRotationTranslation()'],['../class_mat44.html#af962ad0ed20cb6112f8249cb9573c233',1,'Mat44::InversedRotationTranslation()']]], + ['inverserotate_22',['InverseRotate',['../class_quat.html#a108350bfce9aa53b1af87fbe2698f6f4',1,'Quat']]], + ['invoke_23',['Invoke',['../class_scope_exit.html#a634992233a59f3f178d921cf141584d8',1,'ScopeExit']]], + ['isabstract_24',['IsAbstract',['../class_r_t_t_i.html#a8d9df5eaf6fce27b44ccc4c2bb728fd7',1,'RTTI']]], + ['isactive_25',['isactive',['../class_path_constraint.html#a5f6d3c7d860ee5c715f8fef818fd4f1f',1,'PathConstraint::IsActive()'],['../class_angle_constraint_part.html#a470e2813d397af02acc6bf8e8373431c',1,'AngleConstraintPart::IsActive()'],['../class_axis_constraint_part.html#a20095a523dff24e09134b315841f1fcb',1,'AxisConstraintPart::IsActive()'],['../class_constraint.html#a2181f0c1fdc1de4b22afcd42e1b2273a',1,'Constraint::IsActive()'],['../class_body_interface.html#a762f492665332fe71e31d0e37d4355c7',1,'BodyInterface::IsActive()'],['../class_body.html#ae172c10ebdda3e473ae54f7e35c62cd1',1,'Body::IsActive()'],['../class_vehicle_constraint.html#a44c4c794a9bc8e0812e72ee67644418e',1,'VehicleConstraint::IsActive()'],['../class_ragdoll.html#aa86e5cf49f753abc4ad077440d08faa0',1,'Ragdoll::IsActive()'],['../class_two_body_constraint.html#a9ec4e14ada31bf5172141c2d50663e76',1,'TwoBodyConstraint::IsActive()'],['../class_swing_twist_constraint_part.html#af3c12b4e902bc93120df5ec5a706de99',1,'SwingTwistConstraintPart::IsActive()'],['../class_spring_part.html#a9dbe7d09f4a6aaf7f5edd106fb6fe335',1,'SpringPart::IsActive()'],['../class_rotation_quat_constraint_part.html#ab38b8a217a4dc990ed58e9dc7210e2fc',1,'RotationQuatConstraintPart::IsActive()'],['../class_rotation_euler_constraint_part.html#a5580f01673bcbbde31fd75108d2866b4',1,'RotationEulerConstraintPart::IsActive()'],['../class_rack_and_pinion_constraint_part.html#aecf166daf465d11438885115f506d1b6',1,'RackAndPinionConstraintPart::IsActive()'],['../class_point_constraint_part.html#a9b183e233b8fc258ab72f447499c5ad8',1,'PointConstraintPart::IsActive()'],['../class_independent_axis_constraint_part.html#a564752c8c4a381de55000c66debc8b0f',1,'IndependentAxisConstraintPart::IsActive()'],['../class_gear_constraint_part.html#a5e5f8097c8a062b98d9bedcfa37859c5',1,'GearConstraintPart::IsActive()'],['../class_dual_axis_constraint_part.html#abb7c86b1b65526e284e71c3b126a53e1',1,'DualAxisConstraintPart::IsActive()']]], + ['isadded_26',['IsAdded',['../class_body_interface.html#a1a67ebf158316c8ce40768aab624680b',1,'BodyInterface']]], + ['isaligned_27',['IsAligned',['../_math_8h.html#a92bab343999851b4ded776dd2a70c742',1,'Math.h']]], + ['isclose_28',['isclose',['../class_vec3.html#a0b134a58f09912cb5cac913313487fad',1,'Vec3::IsClose()'],['../class_d_mat44.html#ad27b57cba8e9b24759bb4d6f83160da7',1,'DMat44::IsClose()'],['../class_vector.html#af792d9902858de9e315caa8eddd89f29',1,'Vector::IsClose()'],['../class_d_vec3.html#a4841bd14fcbce5a9a03edde10d9c6b30',1,'DVec3::IsClose()'],['../class_mat44.html#a69e383afe2897a0179fdeb7a418d961d',1,'Mat44::IsClose()'],['../class_vec4.html#aad49c5695caae942208e05168c10f086',1,'Vec4::IsClose()'],['../class_quat.html#a9c0afa78ae80b13a6c8adf1240a7c95e',1,'Quat::IsClose()']]], + ['iscollisioncacheinvalid_29',['IsCollisionCacheInvalid',['../class_body.html#a6e13ebc7a47c0170acc0c976f7724ea8',1,'Body']]], + ['iscollisionenabled_30',['IsCollisionEnabled',['../class_group_filter_table.html#acfa23ff8483cdeec0926623ebb9dd8f3',1,'GroupFilterTable']]], + ['isdegenerate_31',['isdegenerate',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_validation_context.html#a516aa9477446fe411a4d0eaab643f0d8',1,'TriangleCodecIndexed8BitPackSOA4Flags::ValidationContext::IsDegenerate()'],['../class_indexed_triangle_no_material.html#a439540e1770cfdda6ef0a663ef5eff3c',1,'IndexedTriangleNoMaterial::IsDegenerate()'],['../struct_soft_body_shared_settings_1_1_face.html#ae962b7b0a75c52698410e6dfd8aba428',1,'SoftBodySharedSettings::Face::IsDegenerate()']]], + ['isdirty_32',['IsDirty',['../class_quad_tree.html#a92ac4f8879ce137be588d0c9f1d0582c',1,'QuadTree']]], + ['isdone_33',['isdone',['../class_job_system_1_1_job.html#abd9fad54e1b18a2a0c9795e86e222875',1,'JobSystem::Job::IsDone()'],['../class_job_system_1_1_job_handle.html#a787e04af05eea5f3eda568956cca9f10',1,'JobSystem::JobHandle::IsDone()']]], + ['isdonewalking_34',['isdonewalking',['../class_height_field_shape_1_1_decoding_context.html#a07f0c967d33e29768081ff5eded07452',1,'HeightFieldShape::DecodingContext::IsDoneWalking()'],['../class_node_codec_quad_tree_half_float_1_1_decoding_context.html#a497beb4af569cc217d1b6d8b311f89ae',1,'NodeCodecQuadTreeHalfFloat::DecodingContext::IsDoneWalking()']]], + ['isdynamic_35',['IsDynamic',['../class_body.html#a1b21c30907c8c9ce30c176a054057bef',1,'Body']]], + ['isempty_36',['isempty',['../class_sub_shape_i_d.html#a353cb40946046c09d50b31d73c122729',1,'SubShapeID::IsEmpty()'],['../class_temp_allocator_impl.html#ac998e260e54f25b3493d30e24b15bef2',1,'TempAllocatorImpl::IsEmpty()'],['../class_result.html#a596c71aec4992abce2ecda10cf827573',1,'Result::IsEmpty()']]], + ['iseof_37',['iseof',['../class_stream_in_wrapper.html#ae426f7046722abc95d5e1a9205d535da',1,'StreamInWrapper::IsEOF()'],['../class_stream_in.html#a9a2a616b63703ec5c80423ad2692d06e',1,'StreamIn::IsEOF()'],['../class_state_recorder_impl.html#a3b68bb167e95e3bfe5777fc1c6f5b398',1,'StateRecorderImpl::IsEOF() const override']]], + ['isequal_38',['IsEqual',['../class_state_recorder_impl.html#aeb311a860d29ccff107125d907359466',1,'StateRecorderImpl']]], + ['isequivalent_39',['IsEquivalent',['../class_indexed_triangle_no_material.html#ac0ae1c29594b849761b0db20c1f84fb9',1,'IndexedTriangleNoMaterial']]], + ['isfacing_40',['isfacing',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a60543dea65ee8e56fa77132610302412',1,'EPAConvexHullBuilder::Triangle::IsFacing()'],['../class_convex_hull_builder_1_1_face.html#ab6cda375e944b9d24410dab0ee120c4e',1,'ConvexHullBuilder::Face::IsFacing()']]], + ['isfacingorigin_41',['IsFacingOrigin',['../class_e_p_a_convex_hull_builder_1_1_triangle.html#a7c793273642a25acaf54c8b2a63a5c3a',1,'EPAConvexHullBuilder::Triangle']]], + ['isfailed_42',['isfailed',['../class_stream_out_wrapper.html#a2da7c93d54165f7cbab4678fe83abb32',1,'StreamOutWrapper::IsFailed()'],['../class_stream_in.html#abda7a049c94885abd04a6e583e4c5b37',1,'StreamIn::IsFailed()'],['../class_stream_out.html#a30c9fa2d50a64c0da4d6dc5ae614e756',1,'StreamOut::IsFailed()'],['../class_stream_in_wrapper.html#a239494d64eb786bb0d4b0fb55cc621e0',1,'StreamInWrapper::IsFailed()'],['../class_state_recorder_impl.html#a30053c8a2baa5e3cb4e5e26c37afda05',1,'StateRecorderImpl::IsFailed()']]], + ['isfixedaxis_43',['isfixedaxis',['../class_six_d_o_f_constraint_settings.html#a8b211ad9cdf8dee7b453b10f2f747a89',1,'SixDOFConstraintSettings::IsFixedAxis()'],['../class_six_d_o_f_constraint.html#a9388c6c3c237389fa77aec2862fba244',1,'SixDOFConstraint::IsFixedAxis()']]], + ['isfreeaxis_44',['isfreeaxis',['../class_six_d_o_f_constraint_settings.html#afd2fee3c13a064451e982eb6f375f71c',1,'SixDOFConstraintSettings::IsFreeAxis()'],['../class_six_d_o_f_constraint.html#aaa234472e01794bfa881cf59d0c5d6be',1,'SixDOFConstraint::IsFreeAxis()']]], + ['isgravityoverridden_45',['IsGravityOverridden',['../class_vehicle_constraint.html#a47a9c30e28487e4a50e88b618168c01b',1,'VehicleConstraint']]], + ['isidentity_46',['IsIdentity',['../class_matrix.html#a35353d8c2a5a249e5368e654bca5fc79',1,'Matrix']]], + ['isinbroadphase_47',['IsInBroadPhase',['../class_body.html#a0d17f6ccde9ed070cdead2585ee87446',1,'Body']]], + ['isinside_48',['IsInside',['../class_ellipse.html#a5592d2e8e6bb560567b3c9236babd545',1,'Ellipse']]], + ['isinsideout_49',['IsInsideOut',['../namespace_scale_helpers.html#a968d814e04071d431f79a2ba4e9d4da1',1,'ScaleHelpers']]], + ['isinvalid_50',['IsInvalid',['../class_body_i_d.html#a0967deb4e1f200037bf32e14c4fec9e1',1,'BodyID']]], + ['isjointtranslationlocked_51',['IsJointTranslationLocked',['../class_skeleton_mapper.html#a6fcd34ef9c18a53f65679b5d671e6147',1,'SkeletonMapper']]], + ['iskindof_52',['iskindof',['../_r_t_t_i_8h.html#a5776b9c127f537d17eb0fe3c859dec5d',1,'IsKindOf(const Ref< Type > &inObject, const RTTI *inRTTI): RTTI.h'],['../_r_t_t_i_8h.html#a6fa76c579cc82e306b9bdcf2bfea470c',1,'IsKindOf(const RefConst< Type > &inObject, const RTTI *inRTTI): RTTI.h'],['../_r_t_t_i_8h.html#a7c84a67a84c5fd402ed48a5e8301e1d1',1,'IsKindOf(const Type *inObject, const RTTI *inRTTI): RTTI.h'],['../class_r_t_t_i.html#a91cf4ad4740ffd16fe63e945ef288315',1,'RTTI::IsKindOf()']]], + ['iskinematic_53',['IsKinematic',['../class_body.html#ab49045bc1738e110dea9cbc020528338',1,'Body']]], + ['isleancontrollerenabled_54',['IsLeanControllerEnabled',['../class_motorcycle_controller.html#a45023171410fa8b5abcdce36068dd10c',1,'MotorcycleController']]], + ['isleansteeringlimitenabled_55',['IsLeanSteeringLimitEnabled',['../class_motorcycle_controller.html#ab992be424860c4da8e88968ca7cbe45b',1,'MotorcycleController']]], + ['islooping_56',['IsLooping',['../class_path_constraint_path.html#a8ec3b671b2e5abaa571a24baa0fae9fa',1,'PathConstraintPath']]], + ['isnan_57',['isnan',['../class_quat.html#a62b95b1c1d36ecbd6f9732ca4789a7bf',1,'Quat::IsNaN()'],['../class_vec4.html#ade30350c3a4167764d6b44b43f78e1db',1,'Vec4::IsNaN()'],['../class_vec3.html#ae2ae38edbb4672657e92bf1c67bb7bea',1,'Vec3::IsNaN()'],['../class_d_vec3.html#a8215efb6695dc1ff3d1d3c6625bfb977',1,'DVec3::IsNaN() const']]], + ['isnearzero_58',['isnearzero',['../class_d_vec3.html#aed8a5c005467d9089c5e2397529a1c53',1,'DVec3::IsNearZero()'],['../class_vec3.html#acee93ea875b86bc0f63edebe2b592dbc',1,'Vec3::IsNearZero()']]], + ['isnocollision_59',['IsNoCollision',['../class_height_field_shape.html#abc679be9c4d45bd5217dc7ef9a1b1511',1,'HeightFieldShape']]], + ['isnormalized_60',['isnormalized',['../class_vector.html#a5420a12386bf0d4cdba1c3605929b6ba',1,'Vector::IsNormalized()'],['../class_vec4.html#a9b1dca50b3e7fb2408064eb24a7196ae',1,'Vec4::IsNormalized()'],['../class_vec3.html#a2f10743d69960eaac721399e4ede190a',1,'Vec3::IsNormalized()'],['../class_quat.html#ae628a9685f0be008f18752ea9302b4e4',1,'Quat::IsNormalized()'],['../class_d_vec3.html#a4f71719e4f963c925c4981ea049c3f15',1,'DVec3::IsNormalized()']]], + ['isnotscaled_61',['IsNotScaled',['../namespace_scale_helpers.html#abf3b185a98bea874b96fa82a0db2d7e2',1,'ScaleHelpers']]], + ['isopposite_62',['IsOpposite',['../class_indexed_triangle_no_material.html#ac117960e5b26bec04ed736d18b99219d',1,'IndexedTriangleNoMaterial']]], + ['ispowerof2_63',['IsPowerOf2',['../_math_8h.html#a531058b1613a4e5123a68a704673e1a2',1,'Math.h']]], + ['isrigidbody_64',['IsRigidBody',['../class_body.html#a8365154663e94343e1045893ee3b4c16',1,'Body']]], + ['issamebody_65',['IsSameBody',['../struct_character_virtual_1_1_contact.html#aa812c74d8ef437c690bafc818fb62c50',1,'CharacterVirtual::Contact']]], + ['issensor_66',['IsSensor',['../class_body.html#a251e1c9d8c9c7e40ddabc73420ac9ab1',1,'Body']]], + ['isslopetoosteep_67',['IsSlopeTooSteep',['../class_character_base.html#a87e7e3bcc174d5e498844dcac7f7f173',1,'CharacterBase']]], + ['issoftbody_68',['IsSoftBody',['../class_body.html#a454781f1340576ad7f752b51dd8a179d',1,'Body']]], + ['isstatic_69',['IsStatic',['../class_body.html#a83748a3d5a5b0a5b0242ba91875b8e13',1,'Body']]], + ['issubshapeidvalid_70',['IsSubShapeIDValid',['../class_compound_shape.html#a3fd5589e3e33b94b8c112393b431152b',1,'CompoundShape']]], + ['issupported_71',['IsSupported',['../class_character_base.html#a700e706b9c1710409fc16c6f9a083e0b',1,'CharacterBase']]], + ['isswitchinggear_72',['IsSwitchingGear',['../class_vehicle_transmission.html#aebbd24ac8a0b55f474d7654507739059',1,'VehicleTransmission']]], + ['istype_73',['istype',['../class_serializable_attribute.html#ab928f1de1446823484b4437a79214924',1,'SerializableAttribute::IsType()'],['../_r_t_t_i_8h.html#a4f2ba2fa904f27bafd5046ffa01a370d',1,'IsType(const Ref< Type > &inObject, const RTTI *inRTTI): RTTI.h'],['../_r_t_t_i_8h.html#ae4426a9694f255b1b6151e97186512a8',1,'IsType(const RefConst< Type > &inObject, const RTTI *inRTTI): RTTI.h'],['../_r_t_t_i_8h.html#a7a5bbd60ebd3ba5f69f0afccf05a4d08',1,'IsType(const Type *inObject, const RTTI *inRTTI): RTTI.h']]], + ['isuniformscale_74',['IsUniformScale',['../namespace_scale_helpers.html#a8ff2f9310527acbb4b02a00150fe02fe',1,'ScaleHelpers']]], + ['isuniformscalexz_75',['IsUniformScaleXZ',['../namespace_scale_helpers.html#ab4d95f2ecd59a1a77263a3be465fd34e',1,'ScaleHelpers']]], + ['isvalid_76',['isvalid',['../class_job_system_1_1_job_handle.html#a8f060c8caed0f0d1a5cfa45490790529',1,'JobSystem::JobHandle::IsValid()'],['../class_result.html#a06b7e3b8ea77cb4b1fc5ecfa45494167',1,'Result::IsValid()'],['../class_motor_settings.html#a86075f9a0d21b35897e7f6f7e9c50fbc',1,'MotorSettings::IsValid()'],['../class_a_a_box.html#ad68947562ff18e440f87d50265001647',1,'AABox::IsValid()']]], + ['isvalidating_77',['IsValidating',['../class_state_recorder.html#a347912d4c7bbcb1e1c1e3689a3fccd56',1,'StateRecorder']]], + ['isvalidscale_78',['isvalidscale',['../struct_compound_shape_1_1_sub_shape.html#a33448959f96311ef875a912b8a104dcf',1,'CompoundShape::SubShape::IsValidScale()'],['../class_triangle_shape.html#aa130f6df7eb934713fce70d29bd5d526',1,'TriangleShape::IsValidScale()'],['../class_tapered_cylinder_shape.html#af79a03631dba5393a3964064aafc661f',1,'TaperedCylinderShape::IsValidScale()'],['../class_tapered_capsule_shape.html#ab5112ce12b79437d76b676c5554a81a2',1,'TaperedCapsuleShape::IsValidScale()'],['../class_sphere_shape.html#a94316a5849ea7c0bdbd55b9cf9da1195',1,'SphereShape::IsValidScale()'],['../class_shape.html#a59f32110193561295a7d721909e07adc',1,'Shape::IsValidScale()'],['../class_scaled_shape.html#aaa13e40988ae29754e637e5baa31a868',1,'ScaledShape::IsValidScale()'],['../class_rotated_translated_shape.html#ab85aaba12f9b0080fb7eee3a49530efe',1,'RotatedTranslatedShape::IsValidScale()'],['../class_decorated_shape.html#a778d6bb612a571ba44001768efca994c',1,'DecoratedShape::IsValidScale()'],['../class_cylinder_shape.html#a588bfdea87ca78a28f2c02c4d9d05630',1,'CylinderShape::IsValidScale()'],['../class_compound_shape.html#a8d582144c0bcce878f9a956aaf116c79',1,'CompoundShape::IsValidScale()'],['../class_capsule_shape.html#aaf0e3b1687a9af015aaf19ccc214f8a2',1,'CapsuleShape::IsValidScale()']]], + ['iszero_79',['iszero',['../class_vector.html#ab1368364228755bfe9e64af3654ea995',1,'Vector::IsZero()'],['../class_matrix.html#a8d6bed263967c53112cafe858e32eb9e',1,'Matrix::IsZero()']]], + ['iszeroscale_80',['IsZeroScale',['../namespace_scale_helpers.html#a3f452edeafb5aeb1ea965c1a2b1d9912',1,'ScaleHelpers']]] +]; diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 000000000..d1a63d0e3 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['job_0',['Job',['../class_job_system_1_1_job.html#a50f9de63538bb632101548fef86258e1',1,'JobSystem::Job']]], + ['jobhandle_1',['jobhandle',['../class_job_system_1_1_job_handle.html#a07f9178968f17e7bcb8b876f46ee916d',1,'JobSystem::JobHandle::JobHandle()=default'],['../class_job_system_1_1_job_handle.html#a968f1e7b128e82c864214452ad9ae168',1,'JobSystem::JobHandle::JobHandle(const JobHandle &inHandle)=default'],['../class_job_system_1_1_job_handle.html#a5324a68c829e11b6f9cfbcb27ec6451d',1,'JobSystem::JobHandle::JobHandle(JobHandle &&inHandle) noexcept'],['../class_job_system_1_1_job_handle.html#a08f33876c4c56f09acc8447c68af002a',1,'JobSystem::JobHandle::JobHandle(Job *inJob)']]], + ['jobsystemsinglethreaded_2',['jobsystemsinglethreaded',['../class_job_system_single_threaded.html#ac04954b37964301fdc8c569fff04a6eb',1,'JobSystemSingleThreaded::JobSystemSingleThreaded()=default'],['../class_job_system_single_threaded.html#a9c9d96208c3ff6d3fc601da994b56198',1,'JobSystemSingleThreaded::JobSystemSingleThreaded(uint inMaxJobs)']]], + ['jobsystemthreadpool_3',['jobsystemthreadpool',['../class_job_system_thread_pool.html#adaccd4fc1faa23f3883c2d16e32d0382',1,'JobSystemThreadPool::JobSystemThreadPool(uint inMaxJobs, uint inMaxBarriers, int inNumThreads=-1)'],['../class_job_system_thread_pool.html#acf4a8888977261556ec87fea4ceb64aa',1,'JobSystemThreadPool::JobSystemThreadPool()=default']]], + ['jobsystemwithbarrier_4',['jobsystemwithbarrier',['../class_job_system_with_barrier.html#aaf97f3f021e97a501e5383f55c3625e6',1,'JobSystemWithBarrier::JobSystemWithBarrier()=default'],['../class_job_system_with_barrier.html#a8bb3d115433cfb6bb59eea3105e1c8e1',1,'JobSystemWithBarrier::JobSystemWithBarrier(uint inMaxBarriers)']]], + ['joint_5',['joint',['../class_skeleton_1_1_joint.html#a87e1ff289639d959858305f1fb06635f',1,'Skeleton::Joint::Joint()=default'],['../class_skeleton_1_1_joint.html#aa9efa0126fb47778e2a95f81c512ad0b',1,'Skeleton::Joint::Joint(const string_view &inName, const string_view &inParentName, int inParentJointIndex)']]], + ['jph_5fdeclare_5frtti_5foutside_5fclass_6',['jph_declare_rtti_outside_class',['../_type_declarations_8h.html#a7c4ea05a76fed4b97d6855db129fa69e',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, Float3): TypeDeclarations.h'],['../_type_declarations_8h.html#adaba06ca5abfb45048832e78d55bfaed',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, DMat44): TypeDeclarations.h'],['../_type_declarations_8h.html#a1a8c7c60f7c3128fe7218e02ba9acfc4',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, Mat44): TypeDeclarations.h'],['../_type_declarations_8h.html#a086d80a51af31bdeb74cb6bacde605ee',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, Quat): TypeDeclarations.h'],['../_type_declarations_8h.html#a73b1f26e619891542ef0f9be9c7cd7e3',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, Vec4): TypeDeclarations.h'],['../_type_declarations_8h.html#a2dada4edc12396d421aad54fd3a880a0',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, DVec3): TypeDeclarations.h'],['../_type_declarations_8h.html#a272e1bdcd39d7965dfb3fb42656ef299',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, Vec3): TypeDeclarations.h'],['../_type_declarations_8h.html#a2704d2ff1bdac3b5b820248cc72cc875',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, Double3): TypeDeclarations.h'],['../_type_declarations_8h.html#afe2e6efd40a082563570a021ccbb1f6f',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, String): TypeDeclarations.h'],['../_type_declarations_8h.html#a8fa8a1bb547d4ea5dbf4be01b474a825',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, bool): TypeDeclarations.h'],['../_type_declarations_8h.html#afb5600d9c1155a5b4946275be8a46083',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, double): TypeDeclarations.h'],['../_type_declarations_8h.html#ad74edb5e5392c4131cd54b55d54acc3f',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, float): TypeDeclarations.h'],['../_type_declarations_8h.html#a2fc933ca3173ed626632e00eacdf8ce3',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, uint64): TypeDeclarations.h'],['../_type_declarations_8h.html#a06065058d89eb12bed3964edef601a05',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, uint32): TypeDeclarations.h'],['../_type_declarations_8h.html#a8f9ef9e4c01f888b64b76fc06c440a25',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, int): TypeDeclarations.h'],['../_type_declarations_8h.html#a2cd12a5e336b2c97efa2937a9bb8edc2',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, uint16): TypeDeclarations.h'],['../_type_declarations_8h.html#a6fdb6f424008bf062968d001645ba55b',1,'JPH_DECLARE_RTTI_OUTSIDE_CLASS(JPH_EXPORT, uint8): TypeDeclarations.h']]], + ['jph_5fdeclare_5fserializable_5foutside_5fclass_7',['jph_declare_serializable_outside_class',['../_type_declarations_8h.html#a768396b208134898d9b3f3d871b75c40',1,'JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(JPH_EXPORT, Color): TypeDeclarations.h'],['../_type_declarations_8h.html#a899ce9c69d02389a49b27a56e225f5ee',1,'JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(JPH_EXPORT, Plane): TypeDeclarations.h'],['../_type_declarations_8h.html#aa8644cc8a0f9f5f4082156a79d8fd20d',1,'JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(JPH_EXPORT, IndexedTriangle): TypeDeclarations.h'],['../_type_declarations_8h.html#afce6572cad2ba9edd1d52d86f50fc357',1,'JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(JPH_EXPORT, Triangle): TypeDeclarations.h'],['../_type_declarations_8h.html#a9c4abaf178f1c1c6ab48d44c02c3bf4b',1,'JPH_DECLARE_SERIALIZABLE_OUTSIDE_CLASS(JPH_EXPORT, AABox): TypeDeclarations.h']]], + ['jph_5fimplement_5frtti_5foutside_5fclass_8',['jph_implement_rtti_outside_class',['../_type_declarations_8cpp.html#af343628ba183647c57887e6775472ac7',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(Float3): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a2c44a516ef07f3c1c2751a2708d58d1e',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(Double3): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#ab260e46e7681343e510c92433d3580a1',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(Vec3): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#ac80a9f367fc05d3611c29302c735bd4d',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(DVec3): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a6b0342b461d651a6b91d2d5d44c82c5c',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(Vec4): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a9b9cfd1ad3f7bc0cebce9c1b56cb6269',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(Quat): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a2b010525b68e5c2a57eb1025be64d97f',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(Mat44): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a11182afe7612145c69d171d7a70e6ca8',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(DMat44): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a221b2591d49ca3ada970057fcc3f2225',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(uint64): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#aeb0656ddcc6a028148147995151f00b3',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(bool): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a68f66008287ed2cbc9c1bd96514d9eba',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(double): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#ac9b74fbe4f4d9a2d54cb2b38a1c886eb',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(float): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a4669015ea8629e3740f310ae91eef460',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(String): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a2cb138a68f4b62b2f2eca331965db174',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(uint32): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a0d364d20a949b53123721b4a1dadd211',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(int): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a6e266be4d9b6001f95cdc7f0c00a1466',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(uint16): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a930470ec4ef64437920078ecfbf35bb3',1,'JPH_IMPLEMENT_RTTI_OUTSIDE_CLASS(uint8): TypeDeclarations.cpp']]], + ['jph_5fimplement_5fserializable_5fabstract_9',['jph_implement_serializable_abstract',['../_path_constraint_path_8cpp.html#afeb55065feac7e761af72ad1ece4f881',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(PathConstraintPath): PathConstraintPath.cpp'],['../_vehicle_controller_8cpp.html#aaab0104360bd2a64084fdc7cc3a8e5b9',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(VehicleControllerSettings): VehicleController.cpp'],['../_two_body_constraint_8cpp.html#ab5fb5645c9d70816376dbc17a2ef8319',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(TwoBodyConstraintSettings): TwoBodyConstraint.cpp'],['../_decorated_shape_8cpp.html#a8370ba1be883863dbda714bda7dc109e',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(DecoratedShapeSettings): DecoratedShape.cpp'],['../_convex_shape_8cpp.html#a9cf42585bb42addd8eabed35352f18bc',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(ConvexShapeSettings): ConvexShape.cpp'],['../_compound_shape_8cpp.html#abc5239a29f3d49bd5cdc17e9d593f020',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(CompoundShapeSettings): CompoundShape.cpp'],['../_serializable_object_8cpp.html#a2c9c50d8b76d16955954601525c1f0fd',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT(SerializableObject): SerializableObject.cpp']]], + ['jph_5fimplement_5fserializable_5fabstract_5fbase_10',['jph_implement_serializable_abstract_base',['../_group_filter_8cpp.html#a8dee56aaf9f404b0a43cb140076ac750',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE(GroupFilter): GroupFilter.cpp'],['../_shape_8cpp.html#a952cf80ba8a1269fe371badfa12fbfc4',1,'JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE(ShapeSettings): Shape.cpp']]], + ['jph_5fimplement_5fserializable_5fnon_5fvirtual_11',['jph_implement_serializable_non_virtual',['../_soft_body_shared_settings_8cpp.html#a12fcdd1fd56a0281ddf5b3b216e7d875',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::Volume): SoftBodySharedSettings.cpp'],['../_soft_body_shared_settings_8cpp.html#af3f8d69825ce7e23c14a9b6171fe8522',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::InvBind): SoftBodySharedSettings.cpp'],['../_soft_body_shared_settings_8cpp.html#aa5d42a7512a1465b8b4fd39c222c4f50',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::SkinWeight): SoftBodySharedSettings.cpp'],['../_soft_body_shared_settings_8cpp.html#a3b6fc8c7eaaad65967efe1c2d9c99df6',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::Skinned): SoftBodySharedSettings.cpp'],['../_soft_body_shared_settings_8cpp.html#a1d597c7362d005d1300da695068b51ba',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::LRA): SoftBodySharedSettings.cpp'],['../_soft_body_shared_settings_8cpp.html#afaccb21a4bbd49131642bc49dbf2603d',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings): SoftBodySharedSettings.cpp'],['../_vehicle_anti_roll_bar_8cpp.html#a191ec6adc8e236ae5ff9b6297d247ce1',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(VehicleAntiRollBar): VehicleAntiRollBar.cpp'],['../_vehicle_differential_8cpp.html#a50cc79d549a72c59bef3260836a30b46',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(VehicleDifferentialSettings): VehicleDifferential.cpp'],['../_vehicle_engine_8cpp.html#a2ab35424822ea37f7e7619790fb8b4fc',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(VehicleEngineSettings): VehicleEngine.cpp'],['../_vehicle_track_8cpp.html#a98e0dcbeb9696e18946fcf90bb3a303f',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(VehicleTrackSettings): VehicleTrack.cpp'],['../_vehicle_transmission_8cpp.html#a65a211b8b63e58b3974b9cf5dce4943c',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(VehicleTransmissionSettings): VehicleTransmission.cpp'],['../_skeletal_animation_8cpp.html#a2fe8f4fd6f63d6b4c2db4f93507704fd',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SkeletalAnimation::JointState): SkeletalAnimation.cpp'],['../_skeletal_animation_8cpp.html#a3fb4e2d9ae2adffc561671eebfdbd741',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SkeletalAnimation::Keyframe): SkeletalAnimation.cpp'],['../_skeletal_animation_8cpp.html#af8f3be7ebc9fd400cc0079158c7c7b2b',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SkeletalAnimation::AnimatedJoint): SkeletalAnimation.cpp'],['../_skeletal_animation_8cpp.html#aa35a66aa122a627a187f615e67ea292b',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SkeletalAnimation): SkeletalAnimation.cpp'],['../_skeleton_8cpp.html#a66c2401b3f742ef958235469e069214f',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(Skeleton::Joint): Skeleton.cpp'],['../_skeleton_8cpp.html#a7aca54fb94c9423d77c04278237fab25',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(Skeleton): Skeleton.cpp'],['../_ragdoll_8cpp.html#aa82ef8ce262899911ba7fdc45f209afa',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(RagdollSettings::Part): Ragdoll.cpp'],['../_soft_body_shared_settings_8cpp.html#a02e0760eed402a4d64bf9ec84e8cd905',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::Edge): SoftBodySharedSettings.cpp'],['../_soft_body_shared_settings_8cpp.html#a046b7f7838890eeac5f938d4623c0a61',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::DihedralBend): SoftBodySharedSettings.cpp'],['../_linear_curve_8cpp.html#a92de0d7f032f46f2861e2c288235e149',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(LinearCurve::Point): LinearCurve.cpp'],['../_linear_curve_8cpp.html#a754b0eff0f4aa2d91c8fb20b90eea023',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(LinearCurve): LinearCurve.cpp'],['../_body_creation_settings_8cpp.html#a68abc39f80927978924c4fa79c9a04de',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(BodyCreationSettings): BodyCreationSettings.cpp'],['../_mass_properties_8cpp.html#ad44a914c8e4dc302d0d1772c2576f202',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(MassProperties): MassProperties.cpp'],['../_collision_group_8cpp.html#a3e7fe78695055e5ca077341741e349e0',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(CollisionGroup): CollisionGroup.cpp'],['../_compound_shape_8cpp.html#a6da7739bc136c8ca3cb6c48c5c339d56',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(CompoundShapeSettings::SubShapeSettings): CompoundShape.cpp'],['../_motor_settings_8cpp.html#a18cea24767f7614ea127a8c84a93514e',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(MotorSettings): MotorSettings.cpp'],['../_path_constraint_path_hermite_8cpp.html#a396455a934fe536ea1ce7bdc58e70af4',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(PathConstraintPathHermite::Point): PathConstraintPathHermite.cpp'],['../_spring_settings_8cpp.html#a833aa2302db474872ff674d47d4504df',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SpringSettings): SpringSettings.cpp'],['../_physics_scene_8cpp.html#a10ab4cf4963e09c967fb295fa6b9c8d0',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(PhysicsScene): PhysicsScene.cpp'],['../_physics_scene_8cpp.html#a9c81bd82f76a31a2144094340bbe869f',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(PhysicsScene::ConnectedConstraint): PhysicsScene.cpp'],['../_ragdoll_8cpp.html#a156cb7c4ba37a5088a457802db82e9cc',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(RagdollSettings::AdditionalConstraint): Ragdoll.cpp'],['../_ragdoll_8cpp.html#a3f5bf275d929461fa92729fc389ecde8',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(RagdollSettings): Ragdoll.cpp'],['../_soft_body_creation_settings_8cpp.html#a4942de1919bd58e6ca881e54995c32b7',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodyCreationSettings): SoftBodyCreationSettings.cpp'],['../_soft_body_shared_settings_8cpp.html#adfaa805a48d870efa8197431b2734bef',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::Vertex): SoftBodySharedSettings.cpp'],['../_soft_body_shared_settings_8cpp.html#a9694e07edcc17e8a412d31cf4702fb67',1,'JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(SoftBodySharedSettings::Face): SoftBodySharedSettings.cpp']]], + ['jph_5fimplement_5fserializable_5foutside_5fclass_12',['jph_implement_serializable_outside_class',['../_type_declarations_8cpp.html#ad81c2911255e517b2e2b8112832839b1',1,'JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS(IndexedTriangle): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#acd8339b06e15d4f5eca371cbc12c27fc',1,'JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS(Plane): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a5c2ee98781c23edfab9859047cdf3056',1,'JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS(AABox): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#a8e9b26575c4126cf92f6a53aeb8cc179',1,'JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS(Triangle): TypeDeclarations.cpp'],['../_type_declarations_8cpp.html#abbf30c5c8ff9ec0d405fad2199843d0c',1,'JPH_IMPLEMENT_SERIALIZABLE_OUTSIDE_CLASS(Color): TypeDeclarations.cpp']]], + ['jph_5fimplement_5fserializable_5fvirtual_13',['jph_implement_serializable_virtual',['../_slider_constraint_8cpp.html#a6f65997071022bfad771bb529bb21d5f',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(SliderConstraintSettings): SliderConstraint.cpp'],['../_distance_constraint_8cpp.html#ac6925a5681a34ff551aeb3276e4f06db',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(DistanceConstraintSettings): DistanceConstraint.cpp'],['../_fixed_constraint_8cpp.html#a03a99c0021002c2836af157b408dbc3c',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(FixedConstraintSettings): FixedConstraint.cpp'],['../_gear_constraint_8cpp.html#a121621e2af4057b49d6e5d846a63e6f5',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(GearConstraintSettings): GearConstraint.cpp'],['../_hinge_constraint_8cpp.html#a5be6374a3fa4b1e23c2995a196a45b44',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(HingeConstraintSettings): HingeConstraint.cpp'],['../_path_constraint_8cpp.html#a2f3d2d80cb4696ddbaf87e12784c8b20',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PathConstraintSettings): PathConstraint.cpp'],['../_path_constraint_path_hermite_8cpp.html#aba02114ddc7cb36ea05d3f34d26cd84e',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PathConstraintPathHermite): PathConstraintPathHermite.cpp'],['../_point_constraint_8cpp.html#ab260ca2f1fec0fa18e1a43e15616b14a',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PointConstraintSettings): PointConstraint.cpp'],['../_pulley_constraint_8cpp.html#a246a1b1100c00c0cd1c52854fe804f68',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PulleyConstraintSettings): PulleyConstraint.cpp'],['../_rack_and_pinion_constraint_8cpp.html#a47a53e6c2d586af41ae6ae3acbea1b1a',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(RackAndPinionConstraintSettings): RackAndPinionConstraint.cpp'],['../_six_d_o_f_constraint_8cpp.html#a76c5c26fda576727a88c3fd50f75bea4',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(SixDOFConstraintSettings): SixDOFConstraint.cpp'],['../_swing_twist_constraint_8cpp.html#a1513293e8c5fb785aa7142d42159c3f2',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(SwingTwistConstraintSettings): SwingTwistConstraint.cpp'],['../_motorcycle_controller_8cpp.html#aa283374558777814feb8215807c1f470',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(MotorcycleControllerSettings): MotorcycleController.cpp'],['../_tracked_vehicle_controller_8cpp.html#a2f27e133cbe090ced4a2382ffe497b11',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(TrackedVehicleControllerSettings): TrackedVehicleController.cpp'],['../_tracked_vehicle_controller_8cpp.html#a0749145a349e1a00cb3a991296540235',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(WheelSettingsTV): TrackedVehicleController.cpp'],['../_vehicle_constraint_8cpp.html#ad9be5dcb275ef54ffd9f94e0f8dcc17d',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(VehicleConstraintSettings): VehicleConstraint.cpp'],['../_wheel_8cpp.html#aae9ec94c4fcc6c80a0e8004da1e2d0f8',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(WheelSettings): Wheel.cpp'],['../_wheeled_vehicle_controller_8cpp.html#a0afad877c24e4be183c0adcff929113f',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(WheeledVehicleControllerSettings): WheeledVehicleController.cpp'],['../_wheeled_vehicle_controller_8cpp.html#ab7e91fcc1e60b7a9b1feba7b85213e50',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(WheelSettingsWV): WheeledVehicleController.cpp'],['../_mutable_compound_shape_8cpp.html#ac8f982526acd7284d64a445a2ac95488',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(MutableCompoundShapeSettings): MutableCompoundShape.cpp'],['../_cone_constraint_8cpp.html#a3d8d9451b39e9e1813644586363f1c03',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(ConeConstraintSettings): ConeConstraint.cpp'],['../_group_filter_table_8cpp.html#a6275781c1018ee14c6e4080444c2a415',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(GroupFilterTable): GroupFilterTable.cpp'],['../_physics_material_8cpp.html#a54dbb763e103e61c3a27f508a63aa6aa',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PhysicsMaterial): PhysicsMaterial.cpp'],['../_physics_material_simple_8cpp.html#acd50f300ea4f0614243ab5ebd721c0cd',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PhysicsMaterialSimple): PhysicsMaterialSimple.cpp'],['../_box_shape_8cpp.html#ad8b757db11e2517ae31d0751931502bf',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(BoxShapeSettings): BoxShape.cpp'],['../_capsule_shape_8cpp.html#a1089f509712863264e2a34c91c82c1f1',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(CapsuleShapeSettings): CapsuleShape.cpp'],['../_convex_hull_shape_8cpp.html#a1117da9e9762ac1d9953954311651b38',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(ConvexHullShapeSettings): ConvexHullShape.cpp'],['../_cylinder_shape_8cpp.html#aa2d67f34026bab44416c0d170da0864a',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(CylinderShapeSettings): CylinderShape.cpp'],['../_height_field_shape_8cpp.html#a248be81259944632d64acf6f25ecc449',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(HeightFieldShapeSettings): HeightFieldShape.cpp'],['../_mesh_shape_8cpp.html#a08ddf233bf0bd05ab5e4c1a3a3ffea7a',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(MeshShapeSettings): MeshShape.cpp'],['../_offset_center_of_mass_shape_8cpp.html#ad754d091ac34e946817ffb47e030bbf5',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(OffsetCenterOfMassShapeSettings): OffsetCenterOfMassShape.cpp'],['../_plane_shape_8cpp.html#aba8509e05ae5bdfd29eb71dd427f0038',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(PlaneShapeSettings): PlaneShape.cpp'],['../_rotated_translated_shape_8cpp.html#ae5f217944c30117a567d080357de864c',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(RotatedTranslatedShapeSettings): RotatedTranslatedShape.cpp'],['../_scaled_shape_8cpp.html#a90a7b7c9fc2cf88380027f5fc3cfaf60',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(ScaledShapeSettings): ScaledShape.cpp'],['../_sphere_shape_8cpp.html#adc7645fc4173fbca96e3d74b6beca4e5',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(SphereShapeSettings): SphereShape.cpp'],['../_static_compound_shape_8cpp.html#ac5f468c0b9fc344b1bfc578a0e4d04a7',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(StaticCompoundShapeSettings): StaticCompoundShape.cpp'],['../_tapered_capsule_shape_8cpp.html#ae25b5dc9fc5b3a1ae324484315ac8c93',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(TaperedCapsuleShapeSettings): TaperedCapsuleShape.cpp'],['../_tapered_cylinder_shape_8cpp.html#a8fc8ae859ee63bf3d3502a32a9d2adee',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(TaperedCylinderShapeSettings): TaperedCylinderShape.cpp'],['../_triangle_shape_8cpp.html#ac6189fd63691be735ece12b15f32d0f5',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(TriangleShapeSettings): TriangleShape.cpp'],['../_constraint_8cpp.html#ab0532b53f75294bf0bdb08fd2a71f5ed',1,'JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(ConstraintSettings): Constraint.cpp']]], + ['jph_5fmake_5fhashable_14',['jph_make_hashable',['../_d_vec3_8inl.html#ad63a526073dd7f77a10ad035f668caed',1,'JPH_MAKE_HASHABLE(JPH::DVec3, t.GetX(), t.GetY(), t.GetZ()) JPH_NAMESPACE_BEGIN DVec3: DVec3.inl'],['../_vec3_8inl.html#abc96ec3d90dc5dc02f759c39265376ee',1,'JPH_MAKE_HASHABLE(JPH::Vec3, t.GetX(), t.GetY(), t.GetZ()) JPH_NAMESPACE_BEGIN void Vec3: Vec3.inl']]] +]; diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 000000000..61fd53698 --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['length_0',['length',['../class_quat.html#ab93ff288ad62172d343e11ce4fbf07d0',1,'Quat::Length()'],['../class_vec3.html#a38a9efffc3f9413f3dd702abc73eb9a2',1,'Vec3::Length()'],['../class_vec4.html#a4eb731c3e56eb2eab155f38a1c888834',1,'Vec4::Length()'],['../class_vector.html#a83748e43a3d85e50140c24f0aa093cb9',1,'Vector::Length()'],['../class_d_vec3.html#a7d1feb75db248b954ef774ee33e46014',1,'DVec3::Length() const']]], + ['lengthsq_1',['lengthsq',['../class_d_vec3.html#a95fe01b11cc216e8d718d1122392a018',1,'DVec3::LengthSq()'],['../class_quat.html#a60f30c650e027a892e699c156c7eca67',1,'Quat::LengthSq()'],['../class_vec3.html#aba501a6a474028084799f871c9083dc1',1,'Vec3::LengthSq()'],['../class_vec4.html#acff7d4f95f6dcce1d825c0bfb3798c9a',1,'Vec4::LengthSq()'],['../class_vector.html#afa80dcde530acc7b7911526d921b60e8',1,'Vector::LengthSq()']]], + ['lerp_2',['LERP',['../class_quat.html#a54dc8061046dd6ba3fb3a1965cf7319c',1,'Quat']]], + ['lfhmallocatorcontext_3',['lfhmallocatorcontext',['../class_l_f_h_m_allocator_context.html#a4937e72fe7c08c45687b9deb3c3dba32',1,'LFHMAllocatorContext::LFHMAllocatorContext()'],['../class_contact_constraint_manager_1_1_contact_allocator.html#a4937e72fe7c08c45687b9deb3c3dba32',1,'ContactConstraintManager::ContactAllocator::LFHMAllocatorContext()']]], + ['linkbodies_4',['LinkBodies',['../class_island_builder.html#ad3c6e43cef523989bab88ed8cc11575f',1,'IslandBuilder']]], + ['linkconstraint_5',['LinkConstraint',['../class_island_builder.html#a323b5204fe8c9fdb7a15791469780259',1,'IslandBuilder']]], + ['linkcontact_6',['LinkContact',['../class_island_builder.html#a32b2a16b2eca88110ad2604e2b129132',1,'IslandBuilder']]], + ['lock_7',['lock',['../class_mutex.html#ad91be808bf0a60a16f10b897ec246d3a',1,'Mutex::lock()'],['../class_shared_mutex.html#a9fa5be0817cac255fc1a1b57046468ec',1,'SharedMutex::lock()']]], + ['lock_5fshared_8',['lock_shared',['../class_shared_mutex.html#a39d069ffca3b0e8e42a72c756d4dbae1',1,'SharedMutex']]], + ['lockall_9',['LockAll',['../class_mutex_array.html#a6b7192bee3d37aa5fcc12074081a66a6',1,'MutexArray']]], + ['lockallbodies_10',['LockAllBodies',['../class_body_manager.html#a425eaf59b68a237d6821267ed1474f35',1,'BodyManager']]], + ['lockallconstraints_11',['LockAllConstraints',['../class_constraint_manager.html#ae8d4baabaedc6f26b774d40b71b6bf85',1,'ConstraintManager']]], + ['lockalltranslations_12',['LockAllTranslations',['../class_skeleton_mapper.html#abbaa0b7c3a89c8332342c2cc6aa74262',1,'SkeletonMapper']]], + ['lockangular_13',['LockAngular',['../class_motion_properties.html#a6bfec52a7ff3345d6fefd3f84faf6be7',1,'MotionProperties']]], + ['lockfreehashmap_14',['LockFreeHashMap',['../class_lock_free_hash_map.html#a99cc8576eb24e276e64a720f51516d62',1,'LockFreeHashMap']]], + ['lockmodifications_15',['lockmodifications',['../class_broad_phase.html#a09a84eceb64acb6636984a06bbb7a73a',1,'BroadPhase::LockModifications()'],['../class_broad_phase_quad_tree.html#a7d387d77d1d6e8f388dde9470458da81',1,'BroadPhaseQuadTree::LockModifications()']]], + ['lockread_16',['lockread',['../class_body_lock_interface.html#a8a771b3c89803fee5e6d1c90f2f96a07',1,'BodyLockInterface::LockRead()'],['../class_body_manager.html#ab9fe4438ea3c96fa4b2cbc724f425024',1,'BodyManager::LockRead()'],['../class_body_lock_interface_locking.html#adedab6f41d8e601a0780462678235b19',1,'BodyLockInterfaceLocking::LockRead(MutexMask inMutexMask) const override'],['../class_body_lock_interface_locking.html#a5324dd788c8358e092527e3c68d9a682',1,'BodyLockInterfaceLocking::LockRead(const BodyID &inBodyID) const override'],['../class_body_lock_interface_no_lock.html#a53465d00162795f90dd2fba3910723bd',1,'BodyLockInterfaceNoLock::LockRead()'],['../class_body_lock_interface.html#ae146eecd6e18c0b9b5e19f72a2696572',1,'BodyLockInterface::LockRead()'],['../class_body_lock_interface_no_lock.html#ae134b2fa9fc485ed7b6db8283d6b2088',1,'BodyLockInterfaceNoLock::LockRead()']]], + ['locktranslation_17',['LockTranslation',['../class_motion_properties.html#ab7168117a82829c137798ff843900104',1,'MotionProperties']]], + ['locktranslations_18',['LockTranslations',['../class_skeleton_mapper.html#a2741193b04cb2cbe14996962fbf71b97',1,'SkeletonMapper']]], + ['lockwrite_19',['lockwrite',['../class_body_lock_interface.html#a9d17ddb805293e6495f3569a4ed32969',1,'BodyLockInterface::LockWrite(const BodyID &inBodyID) const =0'],['../class_body_lock_interface.html#a8ec7191e60755953798e570d01c0b30b',1,'BodyLockInterface::LockWrite(MutexMask inMutexMask) const =0'],['../class_body_lock_interface_no_lock.html#a785146858bb1499ca0af9a45aeaeef2f',1,'BodyLockInterfaceNoLock::LockWrite(const BodyID &inBodyID) const override'],['../class_body_lock_interface_no_lock.html#a235037dc08d8880dab6ab247f4066b8a',1,'BodyLockInterfaceNoLock::LockWrite(MutexMask inMutexMask) const override'],['../class_body_lock_interface_locking.html#a109d30a7639dde11979c5e1ccb62707c',1,'BodyLockInterfaceLocking::LockWrite(const BodyID &inBodyID) const override'],['../class_body_lock_interface_locking.html#a518e5c21911dbfd54f7f2c6390dc7d35',1,'BodyLockInterfaceLocking::LockWrite(MutexMask inMutexMask) const override'],['../class_body_manager.html#a21232e25b634203c299d6192180b6fe6',1,'BodyManager::LockWrite()']]], + ['logicalshiftleft_20',['logicalshiftleft',['../class_u_vec4.html#a159c5fb6e8cb1c49a87a48d3977b50b6',1,'UVec4::LogicalShiftLeft()'],['../class_u_vec8.html#a5f5de5fcc8c6ac9e44b2bc79f82df48c',1,'UVec8::LogicalShiftLeft()'],['../class_u_vec4.html#a2ef3289c1b66cfad1da798a5d3cd412b',1,'UVec4::LogicalShiftLeft()'],['../class_u_vec8.html#af26e70e8e238b9765bc5ab12b817e5d1',1,'UVec8::LogicalShiftLeft()']]], + ['logicalshiftright_21',['logicalshiftright',['../class_u_vec4.html#a42597d44e823feee9c343624b72ece79',1,'UVec4::LogicalShiftRight()'],['../class_u_vec8.html#a4d13b9d84a398e856caf4f072483bf0d',1,'UVec8::LogicalShiftRight()'],['../class_u_vec4.html#a529d377fac0983a7c590d7df16db3f36',1,'UVec4::LogicalShiftRight()'],['../class_u_vec8.html#a6ec179075eeb442c9fde60f6a997c414',1,'UVec8::LogicalShiftRight() const']]], + ['lowervec4_22',['lowervec4',['../class_u_vec8.html#ac1befe2c88fff8ac646f1c34bedbc9d3',1,'UVec8::LowerVec4()'],['../class_vec8.html#ac6b079a5fb892087e7f29eb49d8de0ed',1,'Vec8::LowerVec4()']]], + ['lra_23',['lra',['../class_soft_body_shared_settings_1_1_l_r_a.html#a4aab07b503827f2a165ec62c83ab531b',1,'SoftBodySharedSettings::LRA::LRA()=default'],['../class_soft_body_shared_settings_1_1_l_r_a.html#af3f3a0e0a0948ff3dd1a4ec850019dd2',1,'SoftBodySharedSettings::LRA::LRA(uint32 inVertex1, uint32 inVertex2, float inMaxDistance)']]] +]; diff --git a/search/functions_b.js b/search/functions_b.js new file mode 100644 index 000000000..73cc2d458 --- /dev/null +++ b/search/functions_b.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['makefixedaxis_0',['MakeFixedAxis',['../class_six_d_o_f_constraint_settings.html#ad7888719516a85b67a8fc957c9158144',1,'SixDOFConstraintSettings']]], + ['makefreeaxis_1',['MakeFreeAxis',['../class_six_d_o_f_constraint_settings.html#ad5cff2e8b147d7697aa317df476dcddf',1,'SixDOFConstraintSettings']]], + ['makenonzeroscale_2',['MakeNonZeroScale',['../namespace_scale_helpers.html#a7445e71cd125deb818c71e867ea9275e',1,'ScaleHelpers']]], + ['makescalevalid_3',['makescalevalid',['../class_compound_shape.html#a7c3c686e436b80d627b038ccac943b48',1,'CompoundShape::MakeScaleValid()'],['../class_cylinder_shape.html#ac0a0648f2d6fe2f16f5fc19cd028c7b4',1,'CylinderShape::MakeScaleValid()'],['../class_decorated_shape.html#ab8608332a025b38ae101d50f31365187',1,'DecoratedShape::MakeScaleValid()'],['../class_rotated_translated_shape.html#a01f12883df324277825192ce1a1e121e',1,'RotatedTranslatedShape::MakeScaleValid()'],['../class_scaled_shape.html#abc64b66c45b52bd4248ffee1823c3c2d',1,'ScaledShape::MakeScaleValid()'],['../class_shape.html#a92b9228a95f194e9e1e2962bed861e22',1,'Shape::MakeScaleValid()'],['../class_sphere_shape.html#a2c0027a034604bb763ef0b8092f13eda',1,'SphereShape::MakeScaleValid()'],['../class_tapered_capsule_shape.html#af38c3d6f322fc99ab1cc4b2199b44cb3',1,'TaperedCapsuleShape::MakeScaleValid()'],['../class_tapered_cylinder_shape.html#ab6d103843721053ea6e010723c32460b',1,'TaperedCylinderShape::MakeScaleValid()'],['../class_triangle_shape.html#a425faa91c050f75c9e1e4bfb1f0e6ca6',1,'TriangleShape::MakeScaleValid()'],['../class_capsule_shape.html#a27e36ca5e59ea1a3846a4160404b600a',1,'CapsuleShape::MakeScaleValid()']]], + ['makesubshapeidrelativetoshape_4',['MakeSubShapeIDRelativeToShape',['../class_transformed_shape.html#a1ac86317085e88189d1b8a2635dcec44',1,'TransformedShape']]], + ['makeuniformscale_5',['MakeUniformScale',['../namespace_scale_helpers.html#a1eeb857fb92f13a5ddd9dac662146b96',1,'ScaleHelpers']]], + ['makeuniformscalexz_6',['MakeUniformScaleXZ',['../namespace_scale_helpers.html#a18833eca6231a55b302eaa70c81b5162',1,'ScaleHelpers']]], + ['manifoldbetweentwofaces_7',['manifoldbetweentwofaces',['../_manifold_between_two_faces_8cpp.html#a61f6c9a0571c93ab42d6c33342b1d4f9',1,'ManifoldBetweenTwoFaces(Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inPenetrationAxis, float inMaxContactDistanceSq, const ConvexShape::SupportingFace &inShape1Face, const ConvexShape::SupportingFace &inShape2Face, ContactPoints &outContactPoints1, ContactPoints &outContactPoints2 JPH_IF_DEBUG_RENDERER(, RVec3Arg inCenterOfMass)): ManifoldBetweenTwoFaces.cpp'],['../_manifold_between_two_faces_8h.html#a3507ddf0602b2e30aba85a652b7d1105',1,'ManifoldBetweenTwoFaces(Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inPenetrationAxis, float inMaxContactDistanceSq, const ConvexShape::SupportingFace &inShape1Face, const ConvexShape::SupportingFace &inShape2Face, ContactPoints &outContactPoints1, ContactPoints &outContactPoints2, RVec3Arg inCenterOfMass): ManifoldBetweenTwoFaces.h']]], + ['map_8',['Map',['../class_skeleton_mapper.html#aa5ea82586d40fbdc0d2930e51b008c9c',1,'SkeletonMapper']]], + ['mapobjecttobroadphaselayer_9',['MapObjectToBroadPhaseLayer',['../class_broad_phase_layer_interface_table.html#a1c93b211dfb3e39b7c4cfed49ce961ad',1,'BroadPhaseLayerInterfaceTable']]], + ['mapping_10',['mapping',['../class_skeleton_mapper_1_1_mapping.html#a4fa976d827f778a48ce2ab5f24b9c9b5',1,'SkeletonMapper::Mapping::Mapping()=default'],['../class_skeleton_mapper_1_1_mapping.html#ad74f176d784c420dc3816c47f100a91f',1,'SkeletonMapper::Mapping::Mapping(int inJointIdx1, int inJointIdx2, Mat44Arg inJoint1To2)']]], + ['mapreverse_11',['MapReverse',['../class_skeleton_mapper.html#a64ebec9cb8e8f0f7a4ec68fa0c30bfd6',1,'SkeletonMapper']]], + ['markbatchprocessed_12',['markbatchprocessed',['../class_large_island_splitter.html#a2934ec09e8492356eab6360ba6091fb4',1,'LargeIslandSplitter::MarkBatchProcessed()'],['../class_large_island_splitter_1_1_splits.html#a44bf9c63b7a2e97e385d4fb5160735ae',1,'LargeIslandSplitter::Splits::MarkBatchProcessed()']]], + ['mat44_13',['mat44',['../class_mat44.html#af8719f405d2de3e6310ba091f79aa518',1,'Mat44::Mat44(Type inC1, Type inC2, Type inC3, Type inC4)'],['../class_mat44.html#ad95a3b3f36bf3216574383e3dfb927ed',1,'Mat44::Mat44()=default'],['../class_mat44.html#a9e544288786bacea509de796f7a2a224',1,'Mat44::Mat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec4Arg inC4)'],['../class_mat44.html#a5448dda46fe8a36d0ae9b6168607e3cb',1,'Mat44::Mat44(Vec4Arg inC1, Vec4Arg inC2, Vec4Arg inC3, Vec3Arg inC4)'],['../class_mat44.html#ab804bcb6a2583f7bf966d3d5a3a24161',1,'Mat44::Mat44(const Mat44 &inM2)=default']]], + ['matrix_14',['matrix',['../class_matrix.html#a70866296048d7f18cf1cf92d480f5023',1,'Matrix::Matrix()=default'],['../class_matrix.html#a90d5c7ad748e454acb4391cd1686ed36',1,'Matrix::Matrix(const Matrix &inM2)']]], + ['meshshape_15',['meshshape',['../class_mesh_shape.html#a1a765e94540451cae2d8d01e44f3cf14',1,'MeshShape::MeshShape()'],['../class_mesh_shape.html#abf6a6e3387b360337377a77659e9e24d',1,'MeshShape::MeshShape(const MeshShapeSettings &inSettings, ShapeResult &outResult)']]], + ['meshshapesettings_16',['meshshapesettings',['../class_mesh_shape_settings.html#a1d3907cc9968cdaff1b6b02dd82a1440',1,'MeshShapeSettings::MeshShapeSettings(VertexList inVertices, IndexedTriangleList inTriangles, PhysicsMaterialList inMaterials=PhysicsMaterialList())'],['../class_mesh_shape_settings.html#a53088eb2ee555b196c0e50cd5972e07b',1,'MeshShapeSettings::MeshShapeSettings()=default'],['../class_mesh_shape_settings.html#a4349489150b22e58ecaf7047ea1f71ef',1,'MeshShapeSettings::MeshShapeSettings(const TriangleList &inTriangles, PhysicsMaterialList inMaterials=PhysicsMaterialList())']]], + ['minkowskidifference_17',['MinkowskiDifference',['../struct_minkowski_difference.html#a057663b9fae33081006e0ae3c51bbffb',1,'MinkowskiDifference']]], + ['modifyshape_18',['modifyshape',['../class_mutable_compound_shape.html#a3992cb7a984307a08139812e44da14ae',1,'MutableCompoundShape::ModifyShape(uint inIndex, Vec3Arg inPosition, QuatArg inRotation)'],['../class_mutable_compound_shape.html#a6b947de024a9a91039f4b472072efdba',1,'MutableCompoundShape::ModifyShape(uint inIndex, Vec3Arg inPosition, QuatArg inRotation, const Shape *inShape)']]], + ['modifyshapes_19',['ModifyShapes',['../class_mutable_compound_shape.html#a48172d558ec67cb67e4a4d0ec7b48133',1,'MutableCompoundShape']]], + ['motorcyclecontroller_20',['MotorcycleController',['../class_motorcycle_controller.html#aed5939c4ba195b16de315229faa5d64f',1,'MotorcycleController']]], + ['motorsettings_21',['motorsettings',['../class_motor_settings.html#a81a42488fb27a4e36f3f2802bca0bdcc',1,'MotorSettings::MotorSettings(float inFrequency, float inDamping)'],['../class_motor_settings.html#a9931c598c884e6be4baea88a612ef59e',1,'MotorSettings::MotorSettings()=default'],['../class_motor_settings.html#a3da51e1a3f8feb8e6a2b056c7e26d24b',1,'MotorSettings::MotorSettings(const MotorSettings &)=default'],['../class_motor_settings.html#a280a8c958af57873bd500de0104ef574',1,'MotorSettings::MotorSettings(float inFrequency, float inDamping, float inForceLimit, float inTorqueLimit)']]], + ['movekinematic_22',['movekinematic',['../class_body.html#a015be9d70225c08eb10d01753415febd',1,'Body::MoveKinematic()'],['../class_body_interface.html#a511b9da7dae147b6d8d3227f30724334',1,'BodyInterface::MoveKinematic()'],['../class_motion_properties.html#afc2471d63f11da6c88141a1adedf6149',1,'MotionProperties::MoveKinematic()']]], + ['msgettrianglescontext_23',['MSGetTrianglesContext',['../struct_mesh_shape_1_1_m_s_get_triangles_context.html#ad92277aa44b23b015efb63d110824297',1,'MeshShape::MSGetTrianglesContext']]], + ['multiply3x3_24',['multiply3x3',['../class_d_mat44.html#a7782f799086b0eabe8095a65475018b7',1,'DMat44::Multiply3x3(Vec3Arg inV) const'],['../class_d_mat44.html#accf6a572b4d458e23a882db2e7bd8449',1,'DMat44::Multiply3x3(DVec3Arg inV) const'],['../class_mat44.html#ab599aaeab3e4b832f7f4097816650b14',1,'Mat44::Multiply3x3(Vec3Arg inV) const'],['../class_mat44.html#a03490bf0526b79cc14125d9e6500576e',1,'Mat44::Multiply3x3(Mat44Arg inM) const']]], + ['multiply3x3lefttransposed_25',['Multiply3x3LeftTransposed',['../class_mat44.html#a1c302e1f10c6c5a233aed4a540e0f598',1,'Mat44']]], + ['multiply3x3righttransposed_26',['Multiply3x3RightTransposed',['../class_mat44.html#a595ae3cf26d9fb87761e20b6b35d3d10',1,'Mat44']]], + ['multiply3x3transposed_27',['multiply3x3transposed',['../class_mat44.html#a3ed66bc4c5e8e010657bd5bb109f1406',1,'Mat44::Multiply3x3Transposed()'],['../class_d_mat44.html#a3e74c4052e9dbbdc87f1d865d6679e74',1,'DMat44::Multiply3x3Transposed()']]], + ['multiplyworldspaceinverseinertiabyvector_28',['MultiplyWorldSpaceInverseInertiaByVector',['../class_motion_properties.html#aa8a73ea7940a316151262ed9a28c4fbb',1,'MotionProperties']]], + ['mustbestatic_29',['mustbestatic',['../class_mesh_shape.html#a99a0706d71a876e3fd589a09a438f84f',1,'MeshShape::MustBeStatic()'],['../class_plane_shape.html#ad42d77da7871ee1b6658faffeae0b93a',1,'PlaneShape::MustBeStatic()'],['../class_shape.html#a6abbf113475435c0c694d3199e352c3a',1,'Shape::MustBeStatic()'],['../class_soft_body_shape.html#ab0e06455cdee319947603a03d4d653fe',1,'SoftBodyShape::MustBeStatic()'],['../class_height_field_shape.html#ab850b5af741a24d3abc431d4b73d7caf',1,'HeightFieldShape::MustBeStatic()'],['../class_decorated_shape.html#ae68d25802b5bbe3e86cb3cb71698b78b',1,'DecoratedShape::MustBeStatic()'],['../class_compound_shape.html#a1fe017e41afb14b1192689a5fa81ad2e',1,'CompoundShape::MustBeStatic()']]], + ['mutablecompoundshape_30',['mutablecompoundshape',['../class_mutable_compound_shape.html#a661ed40beb5af222c420b5746c16f431',1,'MutableCompoundShape::MutableCompoundShape()'],['../class_mutable_compound_shape.html#aa1412a6fbb245ef5476d7c72597f7aa9',1,'MutableCompoundShape::MutableCompoundShape(const MutableCompoundShapeSettings &inSettings, ShapeResult &outResult)']]], + ['mutexarray_31',['mutexarray',['../class_mutex_array.html#a7440b62f6b4d1a8bfd608f88a26299e8',1,'MutexArray::MutexArray()=default'],['../class_mutex_array.html#a04bd4348871aea46fe2d567e5fa83861',1,'MutexArray::MutexArray(uint inNumMutexes)']]] +]; diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 000000000..7df5a2577 --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['nextframe_0',['nextframe',['../class_debug_renderer.html#acc84d230ba90d923f47a651d53ce2489',1,'DebugRenderer::NextFrame()'],['../class_profiler.html#afc3cc44c232d261765b9a305846354cb',1,'Profiler::NextFrame()']]], + ['nibbletobinary_1',['nibbletobinary',['../_string_tools_8h.html#acd6971b94f2b801aed310443d05c85d9',1,'NibbleToBinary(uint32 inNibble): StringTools.cpp'],['../_string_tools_8cpp.html#a479eac2df35b47887f8dbfa014f6923d',1,'NibbleToBinary(uint32 inNibble): StringTools.cpp']]], + ['node_2',['Node',['../class_a_a_b_b_tree_builder_1_1_node.html#a8db3648f4a90b334c170c51f4545b2c0',1,'AABBTreeBuilder::Node']]], + ['nodeallocate_3',['NodeAllocate',['../class_node_codec_quad_tree_half_float_1_1_encoding_context.html#ac621a13ec8689e7cc9ff1fb995115874',1,'NodeCodecQuadTreeHalfFloat::EncodingContext']]], + ['nodefinalize_4',['NodeFinalize',['../class_node_codec_quad_tree_half_float_1_1_encoding_context.html#a500c6a27c04555f154c00b5ad85654d3',1,'NodeCodecQuadTreeHalfFloat::EncodingContext']]], + ['noncopyable_5',['noncopyable',['../class_non_copyable.html#a809b6e4ade7ae32f6d248f2a3b783d45',1,'NonCopyable::NonCopyable()=default'],['../class_non_copyable.html#a501d34ffcc34b30de6d541887a901057',1,'NonCopyable::NonCopyable(const NonCopyable &)=delete']]], + ['normalized_6',['normalized',['../class_vec3.html#a0f7559f2691ad67826f42ca19916b7a9',1,'Vec3::Normalized()'],['../class_d_vec3.html#a98414033d7ebc2af3b1e950f378a77b7',1,'DVec3::Normalized()'],['../class_vector.html#a0bd36049fd0025624665df06e1e390ff',1,'Vector::Normalized()'],['../class_quat.html#a9d4b1ee8c4685a4589766e1c8cacc268',1,'Quat::Normalized()'],['../class_vec4.html#a5e1fefaa806551ca4fae202b62965e93',1,'Vec4::Normalized()']]], + ['normalizedor_7',['NormalizedOr',['../class_vec3.html#a6c6409cad56e4e357f73d43cd719ffe8',1,'Vec3']]], + ['normalizeweights_8',['NormalizeWeights',['../class_soft_body_shared_settings_1_1_skinned.html#a39217b9d64f7924974d4b5405a8073cd',1,'SoftBodySharedSettings::Skinned']]], + ['notifybodiesaabbchanged_9',['notifybodiesaabbchanged',['../class_broad_phase_quad_tree.html#a1ef1e671fbf1837a502f7033bd946ca3',1,'BroadPhaseQuadTree::NotifyBodiesAABBChanged()'],['../class_broad_phase.html#a1a88ea16a35689cad897fcffa428a2ed',1,'BroadPhase::NotifyBodiesAABBChanged()'],['../class_broad_phase_brute_force.html#a59e4b801e711b42da8018c7f9e8362be',1,'BroadPhaseBruteForce::NotifyBodiesAABBChanged()'],['../class_quad_tree.html#a903406946b47220890c1a2091a5c38ad',1,'QuadTree::NotifyBodiesAABBChanged()']]], + ['notifybodieslayerchanged_10',['notifybodieslayerchanged',['../class_broad_phase_brute_force.html#a533303a0786892359c0e2e64ac4371cc',1,'BroadPhaseBruteForce::NotifyBodiesLayerChanged()'],['../class_broad_phase.html#a9acfe24c8f30529d412a26174dba503c',1,'BroadPhase::NotifyBodiesLayerChanged()'],['../class_broad_phase_quad_tree.html#a332de5255be585631ba7d353dc45575b',1,'BroadPhaseQuadTree::NotifyBodiesLayerChanged()']]], + ['notifyshapechanged_11',['notifyshapechanged',['../class_point_constraint.html#a988ec795ba7e071d1cd256afc5edd6cf',1,'PointConstraint::NotifyShapeChanged()'],['../class_vehicle_constraint.html#ac3df25ba1e2c0a85e46a1b93702155cf',1,'VehicleConstraint::NotifyShapeChanged()'],['../class_swing_twist_constraint.html#ab510d96b7f9f7df51cea9b2400474db4',1,'SwingTwistConstraint::NotifyShapeChanged()'],['../class_slider_constraint.html#a13363a2168538544705cff396e1eab28',1,'SliderConstraint::NotifyShapeChanged()'],['../class_six_d_o_f_constraint.html#a7da40332bca888038baa167dc1cb0d8b',1,'SixDOFConstraint::NotifyShapeChanged()'],['../class_rack_and_pinion_constraint.html#ae5158af0c72fb1b412c1b17a2f8389aa',1,'RackAndPinionConstraint::NotifyShapeChanged()'],['../class_pulley_constraint.html#abf1f2d838a54008edca4ee2a907ac0f6',1,'PulleyConstraint::NotifyShapeChanged()'],['../class_body_interface.html#aa2e0c12f152375b42b3de56faf9bec86',1,'BodyInterface::NotifyShapeChanged()'],['../class_path_constraint.html#ae10bed0a11582fbe738f8339aa1257d5',1,'PathConstraint::NotifyShapeChanged()'],['../class_hinge_constraint.html#ab9dd0d5de72165fcb15b85d02308213a',1,'HingeConstraint::NotifyShapeChanged()'],['../class_gear_constraint.html#a16af2cebb97b81fb5d7061a810f22bd7',1,'GearConstraint::NotifyShapeChanged()'],['../class_fixed_constraint.html#a2c3cfcfafdde98e5cc2ef15e300edbce',1,'FixedConstraint::NotifyShapeChanged()'],['../class_distance_constraint.html#aa6ac58843c176b849972406a38f50c89',1,'DistanceConstraint::NotifyShapeChanged()'],['../class_constraint.html#a3072411d2c9da10356f2087cdc02ec70',1,'Constraint::NotifyShapeChanged()'],['../class_cone_constraint.html#a59b0a0be6774c77193b8209b6be988f2',1,'ConeConstraint::NotifyShapeChanged()']]] +]; diff --git a/search/functions_d.js b/search/functions_d.js new file mode 100644 index 000000000..debe0caa4 --- /dev/null +++ b/search/functions_d.js @@ -0,0 +1,76 @@ +var searchData= +[ + ['objectlayerpairfiltertable_0',['ObjectLayerPairFilterTable',['../class_object_layer_pair_filter_table.html#a374488a93f35824127860cab6452136b',1,'ObjectLayerPairFilterTable']]], + ['objectstreambinaryin_1',['ObjectStreamBinaryIn',['../class_object_stream_binary_in.html#a5b06493c2d5b32cbe534183d2452e48b',1,'ObjectStreamBinaryIn']]], + ['objectstreambinaryout_2',['ObjectStreamBinaryOut',['../class_object_stream_binary_out.html#a95c257e2db19513f1222b8b8a7e96bc7',1,'ObjectStreamBinaryOut']]], + ['objectstreamin_3',['ObjectStreamIn',['../class_object_stream_in.html#ad45c7ba064bf63506d6d53d295b67d77',1,'ObjectStreamIn']]], + ['objectstreamout_4',['ObjectStreamOut',['../class_object_stream_out.html#abadcecd0476fc4bba8b9df42f36de777',1,'ObjectStreamOut']]], + ['objectstreamtextin_5',['ObjectStreamTextIn',['../class_object_stream_text_in.html#af134b8a2a22f563c4b550f48aff21741',1,'ObjectStreamTextIn']]], + ['objectstreamtextout_6',['ObjectStreamTextOut',['../class_object_stream_text_out.html#a26dd20490fddafd53c66bf6b0bae4e18',1,'ObjectStreamTextOut']]], + ['objectvsbroadphaselayerfiltermask_7',['ObjectVsBroadPhaseLayerFilterMask',['../class_object_vs_broad_phase_layer_filter_mask.html#a91030107a0decb550875823bf5f7dd25',1,'ObjectVsBroadPhaseLayerFilterMask']]], + ['objectvsbroadphaselayerfiltertable_8',['ObjectVsBroadPhaseLayerFilterTable',['../class_object_vs_broad_phase_layer_filter_table.html#afc97e0c90982e30a48f249562d2b8886',1,'ObjectVsBroadPhaseLayerFilterTable']]], + ['offset_9',['Offset',['../class_plane.html#adce0e2bf9f6e85a2788ede7adfbe031d',1,'Plane']]], + ['offsetcenterofmassshape_10',['offsetcenterofmassshape',['../class_offset_center_of_mass_shape.html#a4066cbb4b851269605cd5ad0a31694ef',1,'OffsetCenterOfMassShape::OffsetCenterOfMassShape()'],['../class_offset_center_of_mass_shape.html#a8e82168a95eb463f51e2c109b789c22b',1,'OffsetCenterOfMassShape::OffsetCenterOfMassShape(const OffsetCenterOfMassShapeSettings &inSettings, ShapeResult &outResult)'],['../class_offset_center_of_mass_shape.html#a5ea993204b5ccaad71e55e4d0bfed76b',1,'OffsetCenterOfMassShape::OffsetCenterOfMassShape(const Shape *inShape, Vec3Arg inOffset)']]], + ['offsetcenterofmassshapesettings_11',['offsetcenterofmassshapesettings',['../class_offset_center_of_mass_shape_settings.html#a068e37b92d684a38ba5cd5ab58425d53',1,'OffsetCenterOfMassShapeSettings::OffsetCenterOfMassShapeSettings(Vec3Arg inOffset, const ShapeSettings *inShape)'],['../class_offset_center_of_mass_shape_settings.html#ae797f24e598e1cc5ff88343858dfe8cd',1,'OffsetCenterOfMassShapeSettings::OffsetCenterOfMassShapeSettings(Vec3Arg inOffset, const Shape *inShape)'],['../class_offset_center_of_mass_shape_settings.html#a656e0a7d3d016abc387ffff34c2baed7',1,'OffsetCenterOfMassShapeSettings::OffsetCenterOfMassShapeSettings()=default']]], + ['onadjustbodyvelocity_12',['OnAdjustBodyVelocity',['../class_character_contact_listener.html#a861889d3b1f2349eb1726ebfd979bf53',1,'CharacterContactListener']]], + ['onbody_13',['onbody',['../class_collision_collector.html#ac2986bb5d0b4f6147d2507571ee3a014',1,'CollisionCollector::OnBody()'],['../class_internal_edge_removing_collector.html#a266df30d8625b5deb67257e5d10a0f24',1,'InternalEdgeRemovingCollector::OnBody()']]], + ['onbodyactivated_14',['OnBodyActivated',['../class_body_activation_listener.html#a448ea399091ddce1e908977b90e286c6',1,'BodyActivationListener']]], + ['onbodydeactivated_15',['OnBodyDeactivated',['../class_body_activation_listener.html#aa92b184061db51e535acfa215895b47f',1,'BodyActivationListener']]], + ['onccdcontactadded_16',['OnCCDContactAdded',['../class_contact_constraint_manager.html#a95c132f19384bb01d869331e9faf3757',1,'ContactConstraintManager']]], + ['oncharactercontactadded_17',['OnCharacterContactAdded',['../class_character_contact_listener.html#a66b85f5bafb3d0fd5a07ef1b278826e4',1,'CharacterContactListener']]], + ['oncharactercontactsolve_18',['OnCharacterContactSolve',['../class_character_contact_listener.html#ad611891b1e902a1bc9596935362c141e',1,'CharacterContactListener']]], + ['oncharactercontactvalidate_19',['OnCharacterContactValidate',['../class_character_contact_listener.html#a5ede2bdf086dafcaa1f53fd6fe4a5e7b',1,'CharacterContactListener']]], + ['oncontactadded_20',['oncontactadded',['../class_character_contact_listener.html#a07550deec345e7d94ca05afdd341b11d',1,'CharacterContactListener::OnContactAdded()'],['../class_contact_listener.html#aeb1d7908c8556ce24448ac572d7ad944',1,'ContactListener::OnContactAdded(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, ContactSettings &ioSettings)']]], + ['oncontactpersisted_21',['OnContactPersisted',['../class_contact_listener.html#aa11e4d0107c2764e1c7e04eef72cb404',1,'ContactListener']]], + ['oncontactremoved_22',['OnContactRemoved',['../class_contact_listener.html#aef8f0cac1d560622743420afcd1ce17a',1,'ContactListener']]], + ['oncontactsolve_23',['OnContactSolve',['../class_character_contact_listener.html#a4d1a8b09ee3a923d4aa7bc53aec160b6',1,'CharacterContactListener']]], + ['oncontactvalidate_24',['oncontactvalidate',['../class_contact_listener.html#abb704483e4e1f2eba7109b504afdf482',1,'ContactListener::OnContactValidate()'],['../class_character_contact_listener.html#a46fc7a819cf904aa3db5cf1648f21530',1,'CharacterContactListener::OnContactValidate()']]], + ['onjobfinished_25',['onjobfinished',['../class_job_system_1_1_barrier.html#ab76635eef3bb293a2bceb429192adb2a',1,'JobSystem::Barrier::OnJobFinished()'],['../class_job_system_single_threaded_1_1_barrier_impl.html#ad13990ca369c5cb94826dd026a447733',1,'JobSystemSingleThreaded::BarrierImpl::OnJobFinished()']]], + ['onsoftbodycontactadded_26',['OnSoftBodyContactAdded',['../class_soft_body_contact_listener.html#a5b875d9411f869298407501bc3d98199',1,'SoftBodyContactListener']]], + ['onsoftbodycontactvalidate_27',['OnSoftBodyContactValidate',['../class_soft_body_contact_listener.html#a88fe3a41025942d5e4c1f144b20bfbd9',1,'SoftBodyContactListener']]], + ['onstep_28',['OnStep',['../class_physics_step_listener.html#af2180e766b5fc038b7ce5ab2799c0230',1,'PhysicsStepListener']]], + ['open_29',['open',['../class_object_stream_in.html#a20be61d968a2f31e1039f364ba4ee44a',1,'ObjectStreamIn::Open()'],['../class_object_stream_out.html#ab6d07cfe9606730ae27e3c5fd3174f83',1,'ObjectStreamOut::Open()']]], + ['operator_20const_20t_20_2a_30',['operator const T *',['../class_ref_const.html#abb26c088acecc5b04ee18402ab8aed00',1,'RefConst']]], + ['operator_20raycast_31',['operator RayCast',['../struct_r_ray_cast.html#a5e8ecad2361e2396e95614c74f1282dd',1,'RRayCast']]], + ['operator_20shapecast_32',['operator ShapeCast',['../struct_r_shape_cast.html#a991ebdb11b9ea565ddf0d3ad68bcdfaa',1,'RShapeCast']]], + ['operator_20t_2a_33',['operator T*',['../class_ref.html#a7815a268701499cc6516ea180c1e7761',1,'Ref']]], + ['operator_20type_34',['operator Type',['../class_broad_phase_layer.html#ae0cc32e470894d6c842ace0ab9054360',1,'BroadPhaseLayer']]], + ['operator_20vec3_35',['operator Vec3',['../class_d_vec3.html#aea862e04fd4041a3d10035275fe995e0',1,'DVec3']]], + ['operator_21_3d_36',['operator!=',['../class_d_vec3.html#afcf4835749ee0cf9dffcb3d02822c198',1,'DVec3::operator!=()'],['../class_a_a_box.html#a0b29e5ea5c5dd1df0d7a2ad484ba7e82',1,'AABox::operator!=()'],['../class_float2.html#a96fca2374dcba65591ea81c7d16b9aa9',1,'Float2::operator!=()'],['../class_float3.html#acc6115cac5c0209c110e319de7a5f01a',1,'Float3::operator!=()'],['../class_mat44.html#a13b1fe0d8085ba8cf9845394c1433d89',1,'Mat44::operator!=()'],['../class_matrix.html#ad83804c5ac0ed0ad487b2c60a0815344',1,'Matrix::operator!=()'],['../class_quat.html#a23c4e00d9d6905c284c728cf3e184934',1,'Quat::operator!=()'],['../class_u_vec4.html#ab111b839ccfe094607cfa52f35ba79bd',1,'UVec4::operator!=()'],['../class_u_vec8.html#af273dd7e633a1508222b9092cb334180',1,'UVec8::operator!=()'],['../class_vec3.html#a43de7b2b748f26d8854afee5edb944d5',1,'Vec3::operator!=()'],['../class_vec4.html#a66f5baa144587d92d92bd22a311d894e',1,'Vec4::operator!=()'],['../class_vector.html#a97ea23f0596e27b87424d91cd79e19da',1,'Vector::operator!=()'],['../class_body_i_d.html#a7bdbfe3abcab2c0d393187423a40c9a4',1,'BodyID::operator!=()'],['../class_broad_phase_layer.html#ab0429cbf863c7c513553a36ea154b849',1,'BroadPhaseLayer::operator!=()'],['../class_sub_shape_i_d.html#a139169c43883bdc72791c61a4c40f30d',1,'SubShapeID::operator!=()'],['../class_double3.html#a1a82ae13009bf31cdb037cab5e4a1adf',1,'Double3::operator!=()'],['../class_d_mat44.html#a5b8ba1f914bb4a7243be497c552d0992',1,'DMat44::operator!=()'],['../class_s_t_l_temp_allocator.html#a523ba43212ea2640c688da9b14366742',1,'STLTempAllocator::operator!=()'],['../class_s_t_l_allocator.html#a9fc4be52711444b202331eca017b5e40',1,'STLAllocator::operator!=()'],['../class_s_t_l_aligned_allocator.html#a07e008a7bc893d0386c0e98f2f2d485e',1,'STLAlignedAllocator::operator!=()'],['../class_static_array.html#ac8d17328522928bec933dc594245c895',1,'StaticArray::operator!=()'],['../class_r_t_t_i.html#a11f57b37456ad4373bb3ca03e9a5cacd',1,'RTTI::operator!=()'],['../class_ref_const.html#a4bf0ce88b38379fb6aab094530391080',1,'RefConst::operator!=(const Ref< T > &inRHS) const'],['../class_ref_const.html#af7109de8d546a1bcf49c87ffcdcf443e',1,'RefConst::operator!=(const RefConst< T > &inRHS) const'],['../class_ref_const.html#a23fa7e171fc7404b20e23eb826b3f10a',1,'RefConst::operator!=(const T *inRHS) const'],['../class_ref.html#abbc5455c642ef5997c3abc91d47b3119',1,'Ref::operator!=(const Ref< T > &inRHS) const'],['../class_ref.html#a35e7936167af8457b141f0fe817f4b61',1,'Ref::operator!=(const T *inRHS) const'],['../struct_lock_free_hash_map_1_1_iterator.html#ac41d9d1e14de5e0d26edf2c004e7b4b0',1,'LockFreeHashMap::Iterator::operator!=()'],['../class_color.html#a71e5796a05f70a9c800c094ff87a515d',1,'Color::operator!=()'],['../class_array.html#a44b682273941051e9bab4d8b2200b937',1,'Array::operator!=()']]], + ['operator_22_22_5fr_37',['operator""_r',['../namespaceliterals.html#af3efaa9e7258f2fe6e02e8d05931473b',1,'literals']]], + ['operator_26_38',['operator&',['../_allowed_d_o_fs_8h.html#afe95ed30c0537646dfdabb25414d939a',1,'operator&(EAllowedDOFs inLHS, EAllowedDOFs inRHS): AllowedDOFs.h'],['../_e_physics_update_error_8h.html#af38237fdd96afc7f0ca862bdff6d4cb9',1,'operator&(EPhysicsUpdateError inA, EPhysicsUpdateError inB): EPhysicsUpdateError.h']]], + ['operator_26_3d_39',['operator&=',['../_allowed_d_o_fs_8h.html#a3003da2a6c8c46e329556000e4b3c458',1,'AllowedDOFs.h']]], + ['operator_28_29_40',['operator()',['../structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.html#a27cb00ccb4f41397fd464f69e200b8f7',1,'std::hash< JPH::StaticArray< T, N > >::operator()()'],['../class_color.html#aa52025f450b77f4d76a76d822245eb69',1,'Color::operator()(uint inIdx) const'],['../class_color.html#a55d48519d8f98cc395a6b30e87f6a023',1,'Color::operator()(uint inIdx)'],['../class_dummy_calculate_solver_steps.html#ab7e2c25f8cdd044fbba4942cc202081c',1,'DummyCalculateSolverSteps::operator()()'],['../class_calculate_solver_steps.html#a9fce04eeb077b4f258a71de586113359',1,'CalculateSolverSteps::operator()()'],['../class_matrix.html#aa2c6fb4dd5793351db17038cb563a56e',1,'Matrix::operator()()'],['../class_mat44.html#a608a5ec6255c02bfdfa11f4b9d66d438',1,'Mat44::operator()()'],['../class_matrix.html#a67cd0d0e04d64a43b570bba1ac87110f',1,'Matrix::operator()()'],['../class_mat44.html#a7a74f3bb8a8ee63470c5b73e9fbfd5e9',1,'Mat44::operator()()'],['../class_dyn_matrix.html#a24fa187bff17009ca0883b1fb01f134d',1,'DynMatrix::operator()(uint inRow, uint inCol)'],['../class_dyn_matrix.html#aa597ffabf9e1b50016a1a3144476676a',1,'DynMatrix::operator()(uint inRow, uint inCol) const'],['../structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.html#a0571f6933c199a1ded43c68ca4b173f0',1,'std::hash< JPH::String >::operator()()']]], + ['operator_2a_41',['operator*',['../class_quat.html#a4e344b30517b4411443b17078e5bb218',1,'Quat::operator*(QuatArg inRHS) const'],['../class_quat.html#ae6b513e0018c4191b92eee8fb4594a5e',1,'Quat::operator*(float inValue) const'],['../class_quat.html#a646b3edebee182d86159eed987ba91a0',1,'Quat::operator*(Vec3Arg inValue) const'],['../class_u_vec4.html#ae2b7e062cd567b34fe691d46b15b072b',1,'UVec4::operator*()'],['../class_vec3.html#aad39352503c4bf9184727dde9dc11f04',1,'Vec3::operator*(Vec3Arg inV2) const'],['../class_vec3.html#ab8c89d26b3b090939173acf1ccd2d2e5',1,'Vec3::operator*(float inV2) const'],['../class_vec4.html#a3b17e39450cc5af4ab75661f2ab76d6f',1,'Vec4::operator*(Vec4Arg inV2) const'],['../class_vec4.html#a03151fec0517ac59f467e6400bd2e79d',1,'Vec4::operator*(float inV2) const'],['../class_vec8.html#a8c58ab6a636af411c1aa0484c2378f0c',1,'Vec8::operator*(Vec8Arg inV2) const'],['../class_vec8.html#a5b527ce885b1b22c56173d4e48425bb3',1,'Vec8::operator*(float inV2) const'],['../class_vector.html#a13077d539d6cac0b3415c96c54256a09',1,'Vector::operator*()'],['../_vec4_8inl.html#a90fa6632d6bf46f715945f2ae7b2e2ec',1,'operator*(float inV1, Vec4Arg inV2): Vec4.inl'],['../_d_vec3_8inl.html#a786dfc8f87f225995cb77bbf53c39244',1,'operator*(double inV1, DVec3Arg inV2): DVec3.inl'],['../_vec3_8inl.html#a14695ec9e4b68a40e47bf9cbd11e62a4',1,'operator*(float inV1, Vec3Arg inV2): Vec3.inl'],['../class_matrix.html#a08c8beaf4e7332332cf1ca3e08a4e736',1,'Matrix::operator*()'],['../class_color.html#a0c9f1a84dc0774797c3ca7f08e2f2369',1,'Color::operator*(const Color &inRHS) const'],['../class_color.html#a2693356ec20fc6aa66b6e5eafd931a63',1,'Color::operator*(float inIntensity) const'],['../struct_lock_free_hash_map_1_1_iterator.html#af2b164af90f8efbeb7c5a5bc19333f34',1,'LockFreeHashMap::Iterator::operator*()'],['../class_ref.html#af541f814b9fe7fbe7c353c6280606b37',1,'Ref::operator*()'],['../class_ref_const.html#a468e29d26ab1621fc62a18020e181fd9',1,'RefConst::operator*()'],['../class_d_mat44.html#aca2af5f8afaf528035bc5fd0791d9608',1,'DMat44::operator*(Mat44Arg inM) const'],['../class_d_mat44.html#a33dbadd50287afe81c339ee89ee9c7dc',1,'DMat44::operator*(DMat44Arg inM) const'],['../class_d_mat44.html#a1bfdf30fa6926f6f2076c90beeb588dc',1,'DMat44::operator*(Vec3Arg inV) const'],['../class_d_mat44.html#a086981712295420afe35262a13989f06',1,'DMat44::operator*(DVec3Arg inV) const'],['../class_d_vec3.html#a407ecd0e3be7e4f60cd02c4e47ef5adb',1,'DVec3::operator*(DVec3Arg inV2) const'],['../class_d_vec3.html#af4b10fe57b6cb3e07ebd55c59054d213',1,'DVec3::operator*(double inV2) const'],['../class_mat44.html#ae64ca2f2b40571def45845fecd505c64',1,'Mat44::operator*(Mat44Arg inM) const'],['../class_mat44.html#a8bbaea1aac790dd55a59b25a9ef7cd16',1,'Mat44::operator*(Vec3Arg inV) const'],['../class_mat44.html#a087d4151cced62fdce757c1895d2d834',1,'Mat44::operator*(Vec4Arg inV) const'],['../class_mat44.html#adde2d0df064c3457190cdc6fb0da5dc3',1,'Mat44::operator*(float inV) const'],['../class_matrix.html#afd8729a9684ca684a16e95dac59b9499',1,'Matrix::operator*(const Matrix< Cols, OtherCols > &inM) const'],['../class_matrix.html#a9daf57728f2ba01747ef258a12aec758',1,'Matrix::operator*(float inV) const']]], + ['operator_2a_3d_42',['operator*=',['../class_vec3.html#a8d7e6d43ffa3bac48b87aa69c278e420',1,'Vec3::operator*=()'],['../class_d_vec3.html#a1dc42bd495d9c8b63a856a1d516e4365',1,'DVec3::operator*=()'],['../class_vector.html#a5d3e058866ab4898fd9d1b6860159303',1,'Vector::operator*=()'],['../class_d_vec3.html#a9e5a82ae492dbea121d220ed21fbd503',1,'DVec3::operator*=()'],['../class_mat44.html#a2a3d5b10d49ac1eed4eae855a0fd25d9',1,'Mat44::operator*=()'],['../class_quat.html#ada769d2a82345ec6a2abd706216d46e2',1,'Quat::operator*=()'],['../class_vec3.html#ae0bbf04d3791ef12a0b2d114e190ed8e',1,'Vec3::operator*=()'],['../class_vec4.html#a914f0d0d23cb0cfc6cc7a58bd5f2ac01',1,'Vec4::operator*=(float inV2)'],['../class_vec4.html#a01e7322229eaf37c8b9479c6e648d221',1,'Vec4::operator*=(Vec4Arg inV2)']]], + ['operator_2b_43',['operator+',['../class_vector.html#a31f30c627ca27a20be651946fa685789',1,'Vector::operator+()'],['../class_vec8.html#aefa8b1857e93a3e0afc29f5ffc2eed8e',1,'Vec8::operator+()'],['../class_vec4.html#a95761b89f39348a82aa084b9647f8d2a',1,'Vec4::operator+()'],['../class_vec3.html#a7405124af9f071f00992b85f5c25af61',1,'Vec3::operator+()'],['../class_u_vec4.html#aca855486776f06c4948abdf178ba17f2',1,'UVec4::operator+()'],['../class_quat.html#a05bb92518353f7309399282af7e906e3',1,'Quat::operator+()'],['../class_matrix.html#ab11023ceac2685bb1d103620c348cdd2',1,'Matrix::operator+()'],['../class_mat44.html#ac0c3181759450b3498b5dc53967f803d',1,'Mat44::operator+()'],['../class_d_vec3.html#ae931145b41d6b5db001e40bd014bb183',1,'DVec3::operator+(DVec3Arg inV2) const'],['../class_d_vec3.html#a40e55c7777c00682e04610c67101d659',1,'DVec3::operator+(Vec3Arg inV2) const']]], + ['operator_2b_2b_44',['operator++',['../struct_lock_free_hash_map_1_1_iterator.html#aaaf8062e981a1be7118d1dde98968ba6',1,'LockFreeHashMap::Iterator']]], + ['operator_2b_3d_45',['operator+=',['../class_quat.html#a581ca135acfa86ebf00bb6e1636aef29',1,'Quat::operator+=()'],['../class_vector.html#adc8030b84f60c2ddbc1ddf981f5f8d6f',1,'Vector::operator+=()'],['../class_vec4.html#a443fbe63a61166e98e61af3aac0849ee',1,'Vec4::operator+=()'],['../class_vec3.html#ae0dfbede4fa779658ba48bd13449c3f1',1,'Vec3::operator+=()'],['../class_u_vec4.html#a602f5243d8a4c73dc6796a03cecdc5f3',1,'UVec4::operator+=()'],['../class_mat44.html#a60273e38c2e5071066f14905698ef994',1,'Mat44::operator+=()'],['../class_d_vec3.html#aebfafc1078630f38852907c0be0e4a76',1,'DVec3::operator+=(DVec3Arg inV2)'],['../class_d_vec3.html#ac071add2c7d9a00bd3f4342198e5aca2',1,'DVec3::operator+=(Vec3Arg inV2)']]], + ['operator_2d_46',['operator-',['../class_d_vec3.html#a89b578e95bc0e6a1f97d28afc66256fd',1,'DVec3::operator-()'],['../class_vector.html#accad08b149fe8c9527974434f1620032',1,'Vector::operator-(const Vector &inV2) const'],['../class_vector.html#a3548d197b9099a6ce78bb9805f6b08ed',1,'Vector::operator-() const'],['../class_vec8.html#a4eabbb36d0b5c18dd521daa41d202b3c',1,'Vec8::operator-()'],['../class_vec4.html#ae103f6fa940366aed241a62a820d209e',1,'Vec4::operator-(Vec4Arg inV2) const'],['../class_vec4.html#a1638cef5793ee08b5a62bcb8dd06c17c',1,'Vec4::operator-() const'],['../class_vec3.html#a4f5d105c3b92a557557906ebd6003647',1,'Vec3::operator-(Vec3Arg inV2) const'],['../class_vec3.html#ab05753413af282b8cbd879c334c8e5aa',1,'Vec3::operator-() const'],['../class_quat.html#a7c2cc189b41905f2d02154a2d4863e19',1,'Quat::operator-(QuatArg inRHS) const'],['../class_quat.html#abdb3a55008ba319143df69f97b94d7e5',1,'Quat::operator-() const'],['../class_matrix.html#a863621d29437a8ef7c38b3e214ca1f9c',1,'Matrix::operator-()'],['../class_mat44.html#acb281c6516de9bfd045aa029f95ba0d0',1,'Mat44::operator-(Mat44Arg inM) const'],['../class_mat44.html#a22b266ee0c8cb215e96edaebc50d2cbf',1,'Mat44::operator-() const'],['../class_d_vec3.html#a4a2fd5bf39a1cad1a63913ee8f54dc9c',1,'DVec3::operator-(DVec3Arg inV2) const'],['../class_d_vec3.html#a7e0f61fe354f1886485f0814a8881cd0',1,'DVec3::operator-() const']]], + ['operator_2d_3d_47',['operator-=',['../class_vector.html#a75eedde4d36c47ec408dc454dcf236a7',1,'Vector::operator-=()'],['../class_d_vec3.html#adefdf792db358b7bc0f9259c3b685574',1,'DVec3::operator-=(Vec3Arg inV2)'],['../class_d_vec3.html#a9913eae45efd88f12df0d709d719e283',1,'DVec3::operator-=(DVec3Arg inV2)'],['../class_quat.html#a8297012460ea2f4851ed1f0f80eeddb9',1,'Quat::operator-=()'],['../class_vec3.html#a3c73495e25d5c416f1108ad89fb614d6',1,'Vec3::operator-=()'],['../class_vec4.html#acf0547ac2bda01b7dd5af8f163be7244',1,'Vec4::operator-=()']]], + ['operator_2d_3e_48',['operator->',['../class_ref.html#a67057f06ec2a5e7ee2be030c03f028a9',1,'Ref::operator->()'],['../class_ref_const.html#a9d1007543402ab4cf1bde9945763d202',1,'RefConst::operator->()']]], + ['operator_2f_49',['operator/',['../class_d_vec3.html#a80844acdcc20d872097060f18a49dfae',1,'DVec3::operator/(DVec3Arg inV2) const'],['../class_d_vec3.html#a98c87bc69aa4aaf5efff2f7371026213',1,'DVec3::operator/(double inV2) const'],['../class_quat.html#a022e859768c59cdbdef45cdacada80d2',1,'Quat::operator/()'],['../class_vec3.html#a4c3d1ff36432563aef787f8ce7172bff',1,'Vec3::operator/(float inV2) const'],['../class_vec3.html#a8dd428d3cc8fff37c91a4c01de2f5078',1,'Vec3::operator/(Vec3Arg inV2) const'],['../class_vec4.html#a373487accbd0489d99738e3455966739',1,'Vec4::operator/(float inV2) const'],['../class_vec4.html#a6572e8beb4a23be2a80d78eafd33c981',1,'Vec4::operator/(Vec4Arg inV2) const'],['../class_vec8.html#a7ba524244b34059777fa93a63d551fda',1,'Vec8::operator/()'],['../class_vector.html#a220efce0a2765fca904fef087b9d9e81',1,'Vector::operator/()']]], + ['operator_2f_3d_50',['operator/=',['../class_quat.html#afc3765d179c478cf2c08d76bd9391bfa',1,'Quat::operator/=()'],['../class_vector.html#aeb9aa93e33f09f1dedd41c4768f8f584',1,'Vector::operator/=()'],['../class_vec4.html#a9a1e7de84652c605adf934da37d5e00f',1,'Vec4::operator/=()'],['../class_vec3.html#a50f5b360029a35374a1b811107e22a81',1,'Vec3::operator/=()'],['../class_d_vec3.html#ac4311882ae51a22074b22caa012fb600',1,'DVec3::operator/=()']]], + ['operator_3c_51',['operator<',['../class_broad_phase_layer.html#a5408ee98531f1a48e1931c71ea2955e9',1,'BroadPhaseLayer::operator<()'],['../struct_body_pair.html#a20493f29c36b3f20e8db0e86849e1547',1,'BodyPair::operator<()'],['../class_body_i_d.html#a198e4c4fe4c671e614e4fa664a004b9d',1,'BodyID::operator<()'],['../class_sub_shape_i_d_pair.html#ae6188138a93c9a7121c01d043e537631',1,'SubShapeIDPair::operator<()']]], + ['operator_3d_52',['operator=',['../class_float2.html#ae430c9638f1d2c59dff1a3ef1367709c',1,'Float2::operator=()'],['../class_float3.html#aaafccfdb546279ec28fcabc6c3dda3e8',1,'Float3::operator=()'],['../class_mat44.html#a84bfaec450f946db0a29c1a6036f4043',1,'Mat44::operator=()'],['../class_matrix.html#abf9e34f58c34dbb9790a82ab0e892f9a',1,'Matrix::operator=()'],['../class_quat.html#a4a0da4e3fde81586973da99956f7d51c',1,'Quat::operator=()'],['../class_u_vec4.html#a9c25aa219fee97d2f183894eed6fd66d',1,'UVec4::operator=()'],['../class_vec3.html#ad08ae539c06ae81a334c530bcb024b35',1,'Vec3::operator=()'],['../class_vec4.html#a25d3f9debf76d58efd3686eee43833ea',1,'Vec4::operator=()'],['../class_vector.html#a89f9252fff5149df7ee3bbee4cc7dfce',1,'Vector::operator=()'],['../class_character_base_settings.html#af7d10fafd91664c8d175bf04785940f2',1,'CharacterBaseSettings::operator=()'],['../class_broad_phase_layer.html#ab0344f5719acb04f80e27ca65e48e81e',1,'BroadPhaseLayer::operator=()'],['../class_sub_shape_i_d_pair.html#ac0d41cb46190b64395b1e199b78215b6',1,'SubShapeIDPair::operator=()'],['../class_motor_settings.html#a33d51a2bb5a231a689a1620577aed53a',1,'MotorSettings::operator=()'],['../class_spring_settings.html#a035ab930afc30365053d1814f838f335',1,'SpringSettings::operator=()'],['../class_static_array.html#a07d7915d51d4ad8a3191756fdb6bfc4d',1,'StaticArray::operator=()'],['../class_double3.html#a5995277938a70289c78cbb95afef9bc0',1,'Double3::operator=()'],['../class_array.html#a3888af658dde61b5449bccdff1b42f2f',1,'Array::operator=(const Array< T, Allocator > &inRHS)'],['../class_array.html#ab8763ef20b9d72b7efc5181ea4378e4d',1,'Array::operator=(Array< T, Allocator > &&inRHS) noexcept'],['../class_array.html#a44429f86d45dfbec15bc1e37e2f130fd',1,'Array::operator=(std::initializer_list< T > inRHS)'],['../class_color.html#af17368dfb9bb92e736c5cca7fe5911e7',1,'Color::operator=()'],['../class_job_system_1_1_job_handle.html#adfe0bc1784be03e007aedfc86a8a0b99',1,'JobSystem::JobHandle::operator=(const JobHandle &inHandle)=default'],['../class_job_system_1_1_job_handle.html#a434a0bf97c5ade28fcf116de7bd1c0e1',1,'JobSystem::JobHandle::operator=(JobHandle &&inHandle) noexcept=default'],['../class_non_copyable.html#aaf9b12dcaae80c9d304df7a941d4e21f',1,'NonCopyable::operator=()'],['../class_ref_target.html#a1fc15bfe979bc43a7fa71c7c34f87ed0',1,'RefTarget::operator=()'],['../class_ref.html#a98da0b0d44b287129cf18f34f4f0eaea',1,'Ref::operator=(T *inRHS)'],['../class_ref.html#a29d3889d6c706c3ebdc43c81e7aa06dd',1,'Ref::operator=(const Ref< T > &inRHS)'],['../class_ref.html#a998bf794d80e6235b98d1fd7f795cfaf',1,'Ref::operator=(Ref< T > &&inRHS) noexcept'],['../class_ref_const.html#a18cb3711847569eee946938afa1e7e36',1,'RefConst::operator=(const RefConst< T > &inRHS)'],['../class_ref_const.html#ac67ad88f734b452b19d653e032168fc5',1,'RefConst::operator=(RefConst< T > &&inRHS) noexcept'],['../class_ref_const.html#a89fe348876fdbfcb951c4363f49b7dff',1,'RefConst::operator=(const Ref< T > &inRHS)'],['../class_ref_const.html#a3b97e739b76a3c026046a81343188d62',1,'RefConst::operator=(Ref< T > &&inRHS) noexcept'],['../class_result.html#acc819aa9c4d980d9a06b48cce8bc2d9a',1,'Result::operator=(const Result< Type > &inRHS)'],['../class_result.html#acc2f80e7cd0157e8428e1039bea3be9c',1,'Result::operator=(Result< Type > &&inRHS) noexcept'],['../class_static_array.html#a9c1a2dbce480923942dbce2f3492eb3c',1,'StaticArray::operator=()'],['../class_ref_const.html#a48180be53b5fa9cd49d2ce05c7fbe006',1,'RefConst::operator=()'],['../class_d_mat44.html#a4c37a399a449603c4e611b81d58e004d',1,'DMat44::operator=()'],['../class_d_vec3.html#a90e7c899c1d5f2dddc3f332ba62c8de1',1,'DVec3::operator=()']]], + ['operator_3d_3d_53',['operator==',['../class_mat44.html#a3be30e0ae2ded68ebb5ceea9afbfe5c1',1,'Mat44::operator==()'],['../class_matrix.html#ad5017409ae677eedd5e05ecf4cc41557',1,'Matrix::operator==()'],['../class_quat.html#a55ec695a492daa028921cca4740db11b',1,'Quat::operator==()'],['../class_u_vec4.html#a998274caec249b2255973d43fcdd6111',1,'UVec4::operator==()'],['../class_vec3.html#a154b889fe51e3cc420716ad087b524ec',1,'Vec3::operator==()'],['../class_vec4.html#aa5f9555c7ddf5cdf6648ec64e9fd0c8f',1,'Vec4::operator==()'],['../class_vector.html#afb6e90055ff4de9274867a43c8a569c9',1,'Vector::operator==()'],['../class_body_i_d.html#a717e575a515906ef45ab9f152175e6f4',1,'BodyID::operator==()'],['../struct_body_pair.html#a9170bf752664d8527564d386e428930a',1,'BodyPair::operator==()'],['../class_broad_phase_layer.html#adfb985183ea3a872650b100859883a6e',1,'BroadPhaseLayer::operator==()'],['../class_sub_shape_i_d.html#a08bb5c298b21da17f8ff31502f5f90d7',1,'SubShapeID::operator==()'],['../class_sub_shape_i_d_pair.html#a553026ae2b87e33df1b3c5a82b48287b',1,'SubShapeIDPair::operator==()'],['../class_u_vec8.html#a42797ff3cc1bf751ce42d71302851d13',1,'UVec8::operator==()'],['../class_float2.html#a7ac3a21d32590f4e2fb7d5d12800175d',1,'Float2::operator==()'],['../class_ref.html#ae00dda1e64272c9ba178d6ace26f68a9',1,'Ref::operator==(const T *inRHS) const'],['../class_ref.html#a888c6dc5198e4d5012fcdab607ebe46e',1,'Ref::operator==(const Ref< T > &inRHS) const'],['../class_ref_const.html#acc0653f6d7ae2556d1a97230e87ccf2a',1,'RefConst::operator==(const T *inRHS) const'],['../class_ref_const.html#a1609b10cb02f2138130396f4862df7f5',1,'RefConst::operator==(const RefConst< T > &inRHS) const'],['../struct_lock_free_hash_map_1_1_iterator.html#a0511ff0a1aee60f26352f0caddee732a',1,'LockFreeHashMap::Iterator::operator==()'],['../class_color.html#a03d0301862c3ad6820ced1619c30ab2b',1,'Color::operator==()'],['../class_array.html#a7bc128d07bcc35a13aed911cb4496017',1,'Array::operator==()'],['../class_float3.html#a6fdec8037d0ca21ee14cca74ddd00a71',1,'Float3::operator==()'],['../class_ref_const.html#a1237c1b7b36e3c2bbccaeccf34cb0570',1,'RefConst::operator==()'],['../class_r_t_t_i.html#ae19fcaadd5a43ddb52e689920920b0b2',1,'RTTI::operator==()'],['../class_s_t_l_aligned_allocator.html#a187d266d7db5bbd12a876eb83641602e',1,'STLAlignedAllocator::operator==()'],['../class_static_array.html#a81a62786704d57f04e8a63c188259e34',1,'StaticArray::operator==()'],['../class_s_t_l_temp_allocator.html#afe0ff9b69805be725b54c35f238f8c6f',1,'STLTempAllocator::operator==()'],['../class_a_a_box.html#a41d9c76bb5347116f892a98e00b39a08',1,'AABox::operator==()'],['../class_indexed_triangle_no_material.html#ae51f167ef9a45334dad213a2f46cf79e',1,'IndexedTriangleNoMaterial::operator==()'],['../class_indexed_triangle.html#a8c2db62a600bd2f296c8473fc0ee44dc',1,'IndexedTriangle::operator==()'],['../class_d_mat44.html#a016d3a8c02d9a88d1fca7e6d73fea3fc',1,'DMat44::operator==()'],['../class_double3.html#a00c600f37480ab7ce55073cc4bfb05d7',1,'Double3::operator==()'],['../class_d_vec3.html#af9f3df26312b07df5e6ea770e250e5bf',1,'DVec3::operator==()'],['../class_s_t_l_allocator.html#a851d3b50a4ebb59404de83b8da468df5',1,'STLAllocator::operator==()']]], + ['operator_3e_54',['operator>',['../class_body_i_d.html#a97ad33ad13e398831574a7a5bb97e741',1,'BodyID']]], + ['operator_5b_5d_55',['operator[]',['../class_vector.html#a32ee1f49f9b9b9cc21f202e93aa92344',1,'Vector::operator[](uint inCoordinate)'],['../class_vector.html#a4eaa88a67fe83953b5ac8d472f4e9ff5',1,'Vector::operator[](uint inCoordinate) const'],['../class_vec8.html#ad43ee4cb80f186dcdd2f0a71fc64fe13',1,'Vec8::operator[](uint inCoordinate)'],['../class_vec8.html#ac1997a67bd8996f29bf165b26f45ab06',1,'Vec8::operator[](uint inCoordinate) const'],['../class_vec4.html#afdf1e42953e1b879b265b9ac02f168c2',1,'Vec4::operator[](uint inCoordinate)'],['../class_vec4.html#a0cf39ae9e73fcf06096e4de57165c528',1,'Vec4::operator[](uint inCoordinate) const'],['../class_u_vec8.html#ac83adccdf335b7fab19aa812bfc4f140',1,'UVec8::operator[]()'],['../class_float3.html#a89ad9c4781e5a529fd150e72b1e234ee',1,'Float3::operator[]()'],['../class_vec3.html#abaa362706e12d5e3fa8d950ba80d173e',1,'Vec3::operator[]()'],['../class_d_vec3.html#a6cdaec58545b032bd9c73e5da12cc50a',1,'DVec3::operator[]()'],['../class_double3.html#a6e5ecbdc4bec96b0a033ad090f0a38ba',1,'Double3::operator[]()'],['../class_static_array.html#aba42dce13b07203fafa2135d8ef06581',1,'StaticArray::operator[](size_type inIdx) const'],['../class_static_array.html#a94028ccdb4d9f55f0ada779b03be8e55',1,'StaticArray::operator[](size_type inIdx)'],['../class_array.html#ad555cccefb5cb1f9b0e761f5939bfbcd',1,'Array::operator[](size_type inIdx) const'],['../class_array.html#a3db15f447d9e9d229ba10fd90189d305',1,'Array::operator[](size_type inIdx)'],['../class_float4.html#a20f4a71de6acfa030da5f1e3ec5e2577',1,'Float4::operator[]()'],['../class_u_vec4.html#a7a36608ab17fe736f68c0ff7c3f6ea04',1,'UVec4::operator[](uint inCoordinate) const'],['../class_u_vec4.html#a78e0cb1202ed92a559990923167ef077',1,'UVec4::operator[](uint inCoordinate)'],['../class_u_vec8.html#af4b5d732eccd1cce573ea07e1d005dea',1,'UVec8::operator[]()']]], + ['operator_5e_56',['operator^',['../_allowed_d_o_fs_8h.html#a371213476af99435f3ab12f02f53ec48',1,'AllowedDOFs.h']]], + ['operator_5e_3d_57',['operator^=',['../_allowed_d_o_fs_8h.html#abdf6d90389c231402b383d003c609379',1,'AllowedDOFs.h']]], + ['operator_7c_58',['operator|',['../_e_physics_update_error_8h.html#a8f7b83ff42ced4840cfbb0d3d0f02f0d',1,'operator|(EPhysicsUpdateError inA, EPhysicsUpdateError inB): EPhysicsUpdateError.h'],['../_allowed_d_o_fs_8h.html#aaa1b26e8bc12ba3755cc10db87c0bd0b',1,'operator|(EAllowedDOFs inLHS, EAllowedDOFs inRHS): AllowedDOFs.h']]], + ['operator_7c_3d_59',['operator|=',['../_allowed_d_o_fs_8h.html#af7f3f5b21c11112fe7c7c467403b44a6',1,'operator|=(EAllowedDOFs &ioLHS, EAllowedDOFs inRHS): AllowedDOFs.h'],['../_e_physics_update_error_8h.html#abaecadefb2cb3ff68d5c610b8cb0968a',1,'operator|=(EPhysicsUpdateError &ioA, EPhysicsUpdateError inB): EPhysicsUpdateError.h']]], + ['operator_7e_60',['operator~',['../_allowed_d_o_fs_8h.html#a7560b098399ec920c9dc6fed56f338b1',1,'AllowedDOFs.h']]], + ['optimize_61',['optimize',['../class_soft_body_shared_settings.html#a4dbaa7142dca56c869a395bc88022cd7',1,'SoftBodySharedSettings::Optimize()'],['../class_soft_body_shared_settings.html#ac449c2bf234bdf947aa9454adc728964',1,'SoftBodySharedSettings::Optimize(OptimizationResults &outResults)'],['../class_broad_phase_quad_tree.html#a0314ec8db348c144f5e4c722e5d26bca',1,'BroadPhaseQuadTree::Optimize()'],['../class_broad_phase.html#ab209cd12e5b3c915ed9d9c65e5d34089',1,'BroadPhase::Optimize()']]], + ['optimizebroadphase_62',['OptimizeBroadPhase',['../class_physics_system.html#ab3cd9f2562f0f051c032b3bc298d9604',1,'PhysicsSystem']]], + ['orientedbox_63',['orientedbox',['../class_oriented_box.html#ac9d787ceb1d5ce11d768e463901dc8f8',1,'OrientedBox::OrientedBox()=default'],['../class_oriented_box.html#aa452a08a66dacf55bdfb5d8d0cff7c8c',1,'OrientedBox::OrientedBox(Mat44Arg inOrientation, const AABox &inBox)'],['../class_oriented_box.html#a79f2a5a1c1a93d269c19062895c5708e',1,'OrientedBox::OrientedBox(Mat44Arg inOrientation, Vec3Arg inHalfExtents)']]], + ['originoutsideofplane_64',['OriginOutsideOfPlane',['../namespace_closest_point.html#ad4bc500e8c3ea1bc2b2bc1a289408f1b',1,'ClosestPoint']]], + ['originoutsideoftetrahedronplanes_65',['OriginOutsideOfTetrahedronPlanes',['../namespace_closest_point.html#a7221bb45d1aec01527f66683bf2611e0',1,'ClosestPoint']]], + ['osistype_66',['osistype',['../_object_stream_8h.html#a046ca0bf5695cd0bf7e3f4421f27f080',1,'OSIsType(RefConst< T > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName): ObjectStream.h'],['../_object_stream_8h.html#a0084d42d85c675f42282b38b31be8173',1,'OSIsType(Ref< T > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName): ObjectStream.h'],['../_object_stream_8h.html#a652b1b1dc359b5107edbcc394b3b22fd',1,'OSIsType(T(*)[N], int inArrayDepth, EOSDataType inDataType, const char *inClassName): ObjectStream.h'],['../_object_stream_8h.html#a2d4f6a65eacb30124ed4d3221fe6f360',1,'OSIsType(StaticArray< T, N > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName): ObjectStream.h'],['../_object_stream_8h.html#a0015bbd813668757e43b8752bf08d703',1,'OSIsType(Array< T, A > *, int inArrayDepth, EOSDataType inDataType, const char *inClassName): ObjectStream.h']]], + ['osreaddata_67',['osreaddata',['../_object_stream_8h.html#a6ee64ba79371cef9ffbbe1f8b82e8867',1,'OSReadData(IObjectStreamIn &ioStream, Array< T, A > &inArray): ObjectStream.h'],['../_object_stream_8h.html#a561abe3e70484909b480d7f8e1cef9d7',1,'OSReadData(IObjectStreamIn &ioStream, StaticArray< T, N > &inArray): ObjectStream.h'],['../_object_stream_8h.html#a6f6f2c3ed5a0f399d93f1fde1a99ded5',1,'OSReadData(IObjectStreamIn &ioStream, T(&inArray)[N]): ObjectStream.h'],['../_object_stream_8h.html#a60dfa58686d942e47bc72a77984bb8e2',1,'OSReadData(IObjectStreamIn &ioStream, Ref< T > &inRef): ObjectStream.h'],['../_object_stream_8h.html#a8731cf8e985c6fe5cb4e1dabf4206db2',1,'OSReadData(IObjectStreamIn &ioStream, RefConst< T > &inRef): ObjectStream.h']]], + ['oswritedata_68',['oswritedata',['../_object_stream_8h.html#a9849145a2f3c49430e72a3cb8cb6dc2b',1,'OSWriteData(IObjectStreamOut &ioStream, const Array< T, A > &inArray): ObjectStream.h'],['../_object_stream_8h.html#a16b39e4dc5964aadc07f57ed7cd38393',1,'OSWriteData(IObjectStreamOut &ioStream, const T(&inArray)[N]): ObjectStream.h'],['../_object_stream_8h.html#a622732ce94e09f59da810bb6e1ca3fb9',1,'OSWriteData(IObjectStreamOut &ioStream, const StaticArray< T, N > &inArray): ObjectStream.h'],['../_object_stream_8h.html#a44012e4b882f982ef372d342479f481c',1,'OSWriteData(IObjectStreamOut &ioStream, const RefConst< T > &inRef): ObjectStream.h'],['../_object_stream_8h.html#afeabe7de6bcd1f6b092dfc230e236a1f',1,'OSWriteData(IObjectStreamOut &ioStream, const Ref< T > &inRef): ObjectStream.h']]], + ['oswritedatatype_69',['oswritedatatype',['../_object_stream_8h.html#a38a1d19a6b325964f4c8e808c38630ab',1,'OSWriteDataType(IObjectStreamOut &ioStream, RefConst< T > *): ObjectStream.h'],['../_object_stream_8h.html#a8f946429439a23c334be4a1a80471ce1',1,'OSWriteDataType(IObjectStreamOut &ioStream, Ref< T > *): ObjectStream.h'],['../_object_stream_8h.html#a4447bfccc098e716657dfb4c183692e6',1,'OSWriteDataType(IObjectStreamOut &ioStream, T(*)[N]): ObjectStream.h'],['../_object_stream_8h.html#aad34e2f2bc03433e8db638ac1d14a0f0',1,'OSWriteDataType(IObjectStreamOut &ioStream, StaticArray< T, N > *): ObjectStream.h'],['../_object_stream_8h.html#afb9e2d82b290a1baca2546e66a38ac4f',1,'OSWriteDataType(IObjectStreamOut &ioStream, Array< T, A > *): ObjectStream.h']]], + ['overlaps_70',['overlaps',['../class_sphere.html#a0b2393b6b42f0efdf33ae666b3fac39f',1,'Sphere::Overlaps(const AABox &inOther) const'],['../class_sphere.html#a6aa30078ee8ea3742c9df2aa2cfbcb2c',1,'Sphere::Overlaps(const Sphere &inB) const'],['../class_oriented_box.html#a2829c629a9c5565d2aabae1f53a51c97',1,'OrientedBox::Overlaps(const OrientedBox &inBox, float inEpsilon=1.0e-6f) const'],['../class_oriented_box.html#aac962fad97b4c7dd85d4a430a7e2f2ca',1,'OrientedBox::Overlaps(const AABox &inBox, float inEpsilon=1.0e-6f) const'],['../class_a_a_box.html#abd758e269f2b5b508a7dd66a427e4dba',1,'AABox::Overlaps(const Plane &inPlane) const'],['../class_a_a_box.html#ac0d76efbc7bd7904881eeb5911df8457',1,'AABox::Overlaps(const AABox &inOther) const']]], + ['overridegravity_71',['OverrideGravity',['../class_vehicle_constraint.html#ad2bda8140c63b7f54330e34c5050c23a',1,'VehicleConstraint']]], + ['ownsmemory_72',['OwnsMemory',['../class_temp_allocator_impl.html#a5d90cdbf402b46a9429593da08008bdc',1,'TempAllocatorImpl']]] +]; diff --git a/search/functions_e.js b/search/functions_e.js new file mode 100644 index 000000000..62c03ad75 --- /dev/null +++ b/search/functions_e.js @@ -0,0 +1,49 @@ +var searchData= +[ + ['pack_0',['Pack',['../class_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_encoding_context.html#ab92e9d36f948042d9682f00291422e76',1,'TriangleCodecIndexed8BitPackSOA4Flags::EncodingContext']]], + ['parallelupdate_1',['ParallelUpdate',['../class_soft_body_motion_properties.html#a0a3aecce82ba325ca55922f4068f3c12',1,'SoftBodyMotionProperties']]], + ['parse_2',['Parse',['../class_debug_renderer_playback.html#a3de254c045bb6f7f102480666f0a3046',1,'DebugRendererPlayback']]], + ['pathconstraint_3',['PathConstraint',['../class_path_constraint.html#a6a5b13762673f613fd49d5b0d3873853',1,'PathConstraint']]], + ['peekclosest_4',['PeekClosest',['../class_e_p_a_convex_hull_builder_1_1_triangle_queue.html#a13516948e75d7fd3dca02c1ec7b72504',1,'EPAConvexHullBuilder::TriangleQueue']]], + ['peekclosesttriangleinqueue_5',['PeekClosestTriangleInQueue',['../class_e_p_a_convex_hull_builder.html#a0b52c132a7365cd272f3ca14a8f25145',1,'EPAConvexHullBuilder']]], + ['physicsmaterialsimple_6',['physicsmaterialsimple',['../class_physics_material_simple.html#afd4cf9d7b19fb00dba26cbfb7a8ed80d',1,'PhysicsMaterialSimple::PhysicsMaterialSimple()=default'],['../class_physics_material_simple.html#a3760b4ee0fd7ab82f3767709de168b73',1,'PhysicsMaterialSimple::PhysicsMaterialSimple(const string_view &inName, ColorArg inColor)']]], + ['physicssystem_7',['PhysicsSystem',['../class_physics_system.html#aaefedca1b6619cf11f5c45f7f2176148',1,'PhysicsSystem']]], + ['physicsupdatecontext_8',['PhysicsUpdateContext',['../class_physics_update_context.html#a8214e323d04690550bc2380d827e4e36',1,'PhysicsUpdateContext']]], + ['plane_9',['plane',['../class_plane.html#ac7a2eaef6e334fba41a0ac6ab7a97a6e',1,'Plane::Plane()=default'],['../class_plane.html#a71ec3665a225eda8f201e30fa2ee5544',1,'Plane::Plane(Vec4Arg inNormalAndConstant)'],['../class_plane.html#a06bce37f1586abd31ea5c2863f5ff2a3',1,'Plane::Plane(Vec3Arg inNormal, float inConstant)']]], + ['planeshape_10',['planeshape',['../class_plane_shape.html#a99f8e798035cc6a1c119da0b4dee7593',1,'PlaneShape::PlaneShape()'],['../class_plane_shape.html#a51e5e0eeb6bfa3df2b63bd44589b3ad5',1,'PlaneShape::PlaneShape(const Plane &inPlane, const PhysicsMaterial *inMaterial=nullptr, float inHalfExtent=PlaneShapeSettings::cDefaultHalfExtent)'],['../class_plane_shape.html#ace32775da4269f016475372eef4e7e21',1,'PlaneShape::PlaneShape(const PlaneShapeSettings &inSettings, ShapeResult &outResult)']]], + ['planeshapesettings_11',['planeshapesettings',['../class_plane_shape_settings.html#a33dae2d759e796b2d454711b37da6730',1,'PlaneShapeSettings::PlaneShapeSettings(const Plane &inPlane, const PhysicsMaterial *inMaterial=nullptr, float inHalfExtent=cDefaultHalfExtent)'],['../class_plane_shape_settings.html#a666082ced89b84d2f8dcf2a3df7de6de',1,'PlaneShapeSettings::PlaneShapeSettings()=default']]], + ['pointconstraint_12',['PointConstraint',['../class_point_constraint.html#ad9271852e82f6d2e67648c51a6e7c9ee',1,'PointConstraint']]], + ['polygonconvexsupport_13',['PolygonConvexSupport',['../struct_polygon_convex_support.html#a7597917acd3f2a6f73aa47045f22b69c',1,'PolygonConvexSupport']]], + ['polyhedronsubmergedvolumecalculator_14',['PolyhedronSubmergedVolumeCalculator',['../class_polyhedron_submerged_volume_calculator.html#a4c0ac9f1d2eb133112745844ec770512',1,'PolyhedronSubmergedVolumeCalculator']]], + ['pop_5fback_15',['pop_back',['../class_array.html#a2c37797c7b03253cf8917b02ff91ce64',1,'Array::pop_back()'],['../class_static_array.html#aed109d7f64345b6e7e956bd80de27387',1,'StaticArray::pop_back()']]], + ['popclosest_16',['PopClosest',['../class_e_p_a_convex_hull_builder_1_1_triangle_queue.html#a1d5149d9d7342650de71477538043991',1,'EPAConvexHullBuilder::TriangleQueue']]], + ['popclosesttrianglefromqueue_17',['PopClosestTriangleFromQueue',['../class_e_p_a_convex_hull_builder.html#a7095af90fda9266b9ae7258025623499',1,'EPAConvexHullBuilder']]], + ['popid_18',['PopID',['../class_sub_shape_i_d.html#a8f78ff809c7af2dfbd2e61ba2314ca9d',1,'SubShapeID']]], + ['postcollide_19',['postcollide',['../class_tracked_vehicle_controller.html#a6e29a4c4ab48f2563bd78d839ea38b7b',1,'TrackedVehicleController::PostCollide()'],['../class_wheeled_vehicle_controller.html#ad3bf9ef08870494a7bf762b67beea1ef',1,'WheeledVehicleController::PostCollide()'],['../class_vehicle_controller.html#a0a005727385292dd06ad30398e1eef0a',1,'VehicleController::PostCollide()']]], + ['postscaled_20',['postscaled',['../class_d_mat44.html#a7d108f0330578e1274b9232c28a39326',1,'DMat44::PostScaled()'],['../class_mat44.html#a6503ccd1384b6681d191c327961fbb6d',1,'Mat44::PostScaled()']]], + ['postsimulation_21',['PostSimulation',['../class_character.html#a6fd02888e30d3a718e81680857ca3968',1,'Character']]], + ['posttransformed_22',['PostTransformed',['../struct_shape_cast_t.html#ab07dbf4278d79895fb480781d24db2f3',1,'ShapeCastT']]], + ['posttranslated_23',['posttranslated',['../struct_shape_cast_t.html#a053b353deba2ee41bf6c42d3be33f18e',1,'ShapeCastT::PostTranslated()'],['../class_mat44.html#a16b90363d2e120bd570c4200e29f5ba6',1,'Mat44::PostTranslated()'],['../class_d_mat44.html#a3288220df03214eb138fb4d312b82870',1,'DMat44::PostTranslated(Vec3Arg inTranslation) const'],['../class_d_mat44.html#a14f62e1b746001ac1dac9af1ba432ad2',1,'DMat44::PostTranslated(DVec3Arg inTranslation) const']]], + ['precollide_24',['precollide',['../class_motorcycle_controller.html#a8ef4e6dc7edda1ad1d6219b38c4a8e66',1,'MotorcycleController::PreCollide()'],['../class_tracked_vehicle_controller.html#a38308bb8eec8096a3fea79cd00419c64',1,'TrackedVehicleController::PreCollide()'],['../class_vehicle_controller.html#a3561ef0070d906d1f0fbfa11bfa28210',1,'VehicleController::PreCollide()'],['../class_wheeled_vehicle_controller.html#a8b2dc5370272f15c968425a422ccaeff',1,'WheeledVehicleController::PreCollide()']]], + ['predictcontactproperties_25',['predictcontactproperties',['../class_vehicle_collision_tester.html#a3e8069ca50a846d4984a99314ecc3aa6',1,'VehicleCollisionTester::PredictContactProperties()'],['../class_vehicle_collision_tester_ray.html#a7c3bda4f43f4a22eb83d06357ca72abd',1,'VehicleCollisionTesterRay::PredictContactProperties()'],['../class_vehicle_collision_tester_cast_sphere.html#aa0af62e38e9b59a1ed0a8be597773a0f',1,'VehicleCollisionTesterCastSphere::PredictContactProperties()'],['../class_vehicle_collision_tester_cast_cylinder.html#afa5fbf9c0bbb3de0b9bd5cf6625af54a',1,'VehicleCollisionTesterCastCylinder::PredictContactProperties()']]], + ['prepare_26',['Prepare',['../class_large_island_splitter.html#a6423724ea978d94f3faff78bb5a5965d',1,'LargeIslandSplitter']]], + ['prepareconstraintbuffer_27',['PrepareConstraintBuffer',['../class_contact_constraint_manager.html#a56fbdeb8c26a568919d431973830111a',1,'ContactConstraintManager']]], + ['preparecontactconstraints_28',['PrepareContactConstraints',['../class_island_builder.html#aaf615d7e17f6b82156eef5932a4bc9d6',1,'IslandBuilder']]], + ['prepareforsolvepositions_29',['PrepareForSolvePositions',['../class_large_island_splitter.html#acf4099c9cd655a77a1c7331724608d22',1,'LargeIslandSplitter']]], + ['preparenoncontactconstraints_30',['PrepareNonContactConstraints',['../class_island_builder.html#ac70b90cc284ac3999e18b865724392da',1,'IslandBuilder']]], + ['prepareroundtoinf_31',['PrepareRoundToInf',['../class_d_vec3.html#ab9a393f086d70f1a5a42e20a28f6278b',1,'DVec3']]], + ['prepareroundtozero_32',['PrepareRoundToZero',['../class_d_vec3.html#ae4f056668680a0741aeda962d0dc794c',1,'DVec3']]], + ['prescaled_33',['prescaled',['../class_mat44.html#af9c9948eced621a54424f05c397824dd',1,'Mat44::PreScaled()'],['../class_d_mat44.html#a998e1a8c9f387e16517c47f12eed4b3e',1,'DMat44::PreScaled(Vec3Arg inScale) const']]], + ['pretranslated_34',['pretranslated',['../class_d_mat44.html#a3823b9cdfec0b409ea3964f31411b3af',1,'DMat44::PreTranslated(Vec3Arg inTranslation) const'],['../class_d_mat44.html#a03d5f4994002026a1b89692eb044786f',1,'DMat44::PreTranslated(DVec3Arg inTranslation) const'],['../class_mat44.html#a16f19b423139db52503bb8d6526d947f',1,'Mat44::PreTranslated()']]], + ['processtriangle_35',['ProcessTriangle',['../class_collide_soft_body_vertices_vs_triangles.html#a54442c53c1d2fefa091bec3fb6a14b2d',1,'CollideSoftBodyVerticesVsTriangles']]], + ['profilemeasurement_36',['ProfileMeasurement',['../class_profile_measurement.html#a174b63f72966b5d0ebf090a7f56f50d7',1,'ProfileMeasurement']]], + ['profiler_37',['Profiler',['../class_profiler.html#a3cc0eb01aa7df555747074f3ccf1ab34',1,'Profiler']]], + ['profilethread_38',['ProfileThread',['../class_profile_thread.html#a8c68606dc2529e513bae6809fa85d47b',1,'ProfileThread']]], + ['projectontosurface_39',['ProjectOntoSurface',['../class_height_field_shape.html#a177f33234760b2fcf48a9b23e8a17fec',1,'HeightFieldShape']]], + ['projectpointonplane_40',['ProjectPointOnPlane',['../class_plane.html#af35d1f676dc5be67464deaed71c883f0',1,'Plane']]], + ['prunecontactpoints_41',['prunecontactpoints',['../_manifold_between_two_faces_8cpp.html#a0f6a5a08a650bb28e4f8692e93b9a884',1,'PruneContactPoints(Vec3Arg inPenetrationAxis, ContactPoints &ioContactPointsOn1, ContactPoints &ioContactPointsOn2 JPH_IF_DEBUG_RENDERER(, RVec3Arg inCenterOfMass)): ManifoldBetweenTwoFaces.cpp'],['../_manifold_between_two_faces_8h.html#a75e0a7ac1c7d9a4e410265839934c8e9',1,'PruneContactPoints(Vec3Arg inPenetrationAxis, ContactPoints &ioContactPointsOn1, ContactPoints &ioContactPointsOn2, RVec3Arg inCenterOfMass): ManifoldBetweenTwoFaces.h']]], + ['pulleyconstraint_42',['PulleyConstraint',['../class_pulley_constraint.html#ac6fed08a3d543db628a269cca927fb63',1,'PulleyConstraint']]], + ['push_5fback_43',['push_back',['../class_array.html#ac5d65863953f43e8a5effc2dce32ecd1',1,'Array::push_back(const T &inValue)'],['../class_array.html#a255bfb0bbc74db48e0a1b30b959dfa90',1,'Array::push_back(T &&inValue)'],['../class_static_array.html#a1117d7fa5ecfe22248396f1632d842cb',1,'StaticArray::push_back()'],['../class_e_p_a_convex_hull_builder_1_1_triangle_queue.html#a10ca88c6483424a3c1853759cde34cbd',1,'EPAConvexHullBuilder::TriangleQueue::push_back()']]], + ['pushid_44',['PushID',['../class_sub_shape_i_d_creator.html#a29997885833b2c9625bcbcba4548273d',1,'SubShapeIDCreator']]], + ['puttosleep_45',['PutToSleep',['../class_physics_system_1_1_bodies_to_sleep.html#afe53f6626002783f517ee62f61160ba8',1,'PhysicsSystem::BodiesToSleep']]] +]; diff --git a/search/functions_f.js b/search/functions_f.js new file mode 100644 index 000000000..957b6d38b --- /dev/null +++ b/search/functions_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['quat_0',['quat',['../class_quat.html#aab09b7638f6936a9ad7a1e4ffce606e8',1,'Quat::Quat()=default'],['../class_quat.html#a0657861b58c5638d657b9232d0872789',1,'Quat::Quat(const Quat &inRHS)=default'],['../class_quat.html#add07307f26b40e8ad4dc1bad89e837b9',1,'Quat::Quat(float inX, float inY, float inZ, float inW)'],['../class_quat.html#aa27e46b0f37c06e419e552ec8473abd1',1,'Quat::Quat(Vec4Arg inV)']]], + ['queuejob_1',['queuejob',['../class_job_system.html#ae6bae9c5725c2009c8e9a2d79f60cb40',1,'JobSystem::QueueJob()'],['../class_job_system_single_threaded.html#ac3eead674dbe8a93398dcbc13b324da5',1,'JobSystemSingleThreaded::QueueJob()'],['../class_job_system_thread_pool.html#ab915a93f53fed71c48afb2fdf0d40910',1,'JobSystemThreadPool::QueueJob()']]], + ['queuejobs_2',['queuejobs',['../class_job_system.html#a5820eef46d040e6ae17e51a828201118',1,'JobSystem::QueueJobs()'],['../class_job_system_single_threaded.html#a1581f359dde3922b6b3f973ec78c73df',1,'JobSystemSingleThreaded::QueueJobs()'],['../class_job_system_thread_pool.html#a60fe80b85a7711b87c51983d5fb5eb4a',1,'JobSystemThreadPool::QueueJobs()']]], + ['queuertti_3',['QueueRTTI',['../class_object_stream_out.html#ae90b49dd2e05f23afc92697282dc0bc2',1,'ObjectStreamOut']]], + ['quicksort_4',['quicksort',['../_quick_sort_8h.html#a09973cb7cb8a1e98a51005ecedaf6eff',1,'QuickSort(Iterator inBegin, Iterator inEnd, Compare inCompare): QuickSort.h'],['../_quick_sort_8h.html#ada159782c0a49512044e5eb1cdb97684',1,'QuickSort(Iterator inBegin, Iterator inEnd): QuickSort.h']]], + ['quicksortmedianofthree_5',['QuickSortMedianOfThree',['../_quick_sort_8h.html#aa6450fb30b4a42e991c89908bd3575b9',1,'QuickSort.h']]], + ['quicksortninther_6',['QuickSortNinther',['../_quick_sort_8h.html#a7f9496a620493fec0bb6e08af489dc27',1,'QuickSort.h']]] +]; diff --git a/search/mag.svg b/search/mag.svg new file mode 100644 index 000000000..ffb6cf0d0 --- /dev/null +++ b/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_d.svg b/search/mag_d.svg new file mode 100644 index 000000000..4122773f9 --- /dev/null +++ b/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 000000000..553dba877 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/mag_seld.svg b/search/mag_seld.svg new file mode 100644 index 000000000..c906f84c8 --- /dev/null +++ b/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/search/namespaces_0.js b/search/namespaces_0.js new file mode 100644 index 000000000..5ea0ac76e --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['activeedges_0',['ActiveEdges',['../namespace_active_edges.html',1,'']]] +]; diff --git a/search/namespaces_1.js b/search/namespaces_1.js new file mode 100644 index 000000000..5411815b0 --- /dev/null +++ b/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['closestpoint_0',['ClosestPoint',['../namespace_closest_point.html',1,'']]] +]; diff --git a/search/namespaces_2.js b/search/namespaces_2.js new file mode 100644 index 000000000..6697fb4a0 --- /dev/null +++ b/search/namespaces_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['halffloatconversion_0',['HalfFloatConversion',['../namespace_half_float_conversion.html',1,'']]], + ['heightfieldshapeconstants_1',['HeightFieldShapeConstants',['../namespace_height_field_shape_constants.html',1,'']]] +]; diff --git a/search/namespaces_3.js b/search/namespaces_3.js new file mode 100644 index 000000000..dbfe9247c --- /dev/null +++ b/search/namespaces_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['literals_0',['literals',['../namespaceliterals.html',1,'']]] +]; diff --git a/search/namespaces_4.js b/search/namespaces_4.js new file mode 100644 index 000000000..9e7717d5d --- /dev/null +++ b/search/namespaces_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['scalehelpers_0',['ScaleHelpers',['../namespace_scale_helpers.html',1,'']]], + ['std_1',['std',['../namespacestd.html',1,'']]], + ['streamutils_2',['StreamUtils',['../namespace_stream_utils.html',1,'']]] +]; diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 000000000..108a30d69 --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20using_20jolt_20physics_0',['Building and Using Jolt Physics',['../md__build_2_r_e_a_d_m_e.html',1,'']]], + ['api_20changes_1',['Breaking API Changes',['../md__docs_2_a_p_i_changes.html',1,'']]] +]; diff --git a/search/pages_1.js b/search/pages_1.js new file mode 100644 index 000000000..dd01436d2 --- /dev/null +++ b/search/pages_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['breaking_20api_20changes_0',['Breaking API Changes',['../md__docs_2_a_p_i_changes.html',1,'']]], + ['building_20and_20using_20jolt_20physics_1',['Building and Using Jolt Physics',['../md__build_2_r_e_a_d_m_e.html',1,'']]] +]; diff --git a/search/pages_2.js b/search/pages_2.js new file mode 100644 index 000000000..6a8561d5c --- /dev/null +++ b/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['changes_0',['Breaking API Changes',['../md__docs_2_a_p_i_changes.html',1,'']]] +]; diff --git a/search/pages_3.js b/search/pages_3.js new file mode 100644 index 000000000..cda446d7d --- /dev/null +++ b/search/pages_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['jolt_0',['Projects Using Jolt',['../md__docs_2_projects_using_jolt.html',1,'']]], + ['jolt_20physics_1',['jolt physics',['../md__build_2_r_e_a_d_m_e.html',1,'Building and Using Jolt Physics'],['../index.html',1,'Jolt Physics']]], + ['jolt_20physics_20samples_2',['Jolt Physics Samples',['../md__docs_2_samples.html',1,'']]] +]; diff --git a/search/pages_4.js b/search/pages_4.js new file mode 100644 index 000000000..168735e96 --- /dev/null +++ b/search/pages_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['notes_0',['Release Notes',['../md__docs_2_release_notes.html',1,'']]] +]; diff --git a/search/pages_5.js b/search/pages_5.js new file mode 100644 index 000000000..44969ad8c --- /dev/null +++ b/search/pages_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['performance_20test_0',['Performance Test',['../md__docs_2_performance_test.html',1,'']]], + ['physics_1',['physics',['../md__build_2_r_e_a_d_m_e.html',1,'Building and Using Jolt Physics'],['../index.html',1,'Jolt Physics']]], + ['physics_20samples_2',['Jolt Physics Samples',['../md__docs_2_samples.html',1,'']]], + ['projects_20using_20jolt_3',['Projects Using Jolt',['../md__docs_2_projects_using_jolt.html',1,'']]] +]; diff --git a/search/pages_6.js b/search/pages_6.js new file mode 100644 index 000000000..3ad203bac --- /dev/null +++ b/search/pages_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['release_20notes_0',['Release Notes',['../md__docs_2_release_notes.html',1,'']]] +]; diff --git a/search/pages_7.js b/search/pages_7.js new file mode 100644 index 000000000..bdb00f83e --- /dev/null +++ b/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['samples_0',['Jolt Physics Samples',['../md__docs_2_samples.html',1,'']]] +]; diff --git a/search/pages_8.js b/search/pages_8.js new file mode 100644 index 000000000..ffb831922 --- /dev/null +++ b/search/pages_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['test_0',['Performance Test',['../md__docs_2_performance_test.html',1,'']]] +]; diff --git a/search/pages_9.js b/search/pages_9.js new file mode 100644 index 000000000..d8a82667b --- /dev/null +++ b/search/pages_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['using_20jolt_0',['Projects Using Jolt',['../md__docs_2_projects_using_jolt.html',1,'']]], + ['using_20jolt_20physics_1',['Building and Using Jolt Physics',['../md__build_2_r_e_a_d_m_e.html',1,'']]] +]; diff --git a/search/related_0.js b/search/related_0.js new file mode 100644 index 000000000..7e89face9 --- /dev/null +++ b/search/related_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['aabbtreebuilder_0',['AABBTreeBuilder',['../class_a_a_b_b_tree_builder_1_1_node.html#a27094b8ce6a5cd4a6edb184d2ae9b302',1,'AABBTreeBuilder::Node']]] +]; diff --git a/search/related_1.js b/search/related_1.js new file mode 100644 index 000000000..ddbc56651 --- /dev/null +++ b/search/related_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['body_0',['Body',['../class_motion_properties.html#a8858f397a273114ddc1443880bb5540e',1,'MotionProperties']]], + ['bodymanager_1',['bodymanager',['../class_body.html#a58dc89a83d8c4dc28bd5f6e8c0ed35c8',1,'Body::BodyManager'],['../class_motion_properties.html#a58dc89a83d8c4dc28bd5f6e8c0ed35c8',1,'MotionProperties::BodyManager'],['../class_soft_body_shape.html#a58dc89a83d8c4dc28bd5f6e8c0ed35c8',1,'SoftBodyShape::BodyManager']]], + ['bodywithmotionproperties_2',['BodyWithMotionProperties',['../class_body.html#a9e3350c41c89f980a2198b359ba62857',1,'Body']]] +]; diff --git a/search/related_2.js b/search/related_2.js new file mode 100644 index 000000000..1e24be66d --- /dev/null +++ b/search/related_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['constraintmanager_0',['ConstraintManager',['../class_constraint.html#ad0bf54a2be7863a42cdd8ee748f89582',1,'Constraint']]], + ['createrttiplane_1',['CreateRTTIPlane',['../class_plane.html#a20fe6b1c13e76385b9ea63d022cc1c89',1,'Plane']]] +]; diff --git a/search/related_3.js b/search/related_3.js new file mode 100644 index 000000000..791b13ba0 --- /dev/null +++ b/search/related_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['job_0',['Job',['../class_job_system_1_1_barrier.html#a965d805cf4fa6e7ef721cfad15d99bcd',1,'JobSystem::Barrier']]] +]; diff --git a/search/related_4.js b/search/related_4.js new file mode 100644 index 000000000..137ab1049 --- /dev/null +++ b/search/related_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['lockfreehashmap_0',['LockFreeHashMap',['../class_lock_free_hash_map_1_1_key_value.html#a5652d2eccd527298f2252a27fbd3b489',1,'LockFreeHashMap::KeyValue']]] +]; diff --git a/search/related_5.js b/search/related_5.js new file mode 100644 index 000000000..5491fe0a4 --- /dev/null +++ b/search/related_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['operator_2a_0',['operator*',['../class_mat44.html#afe860f899612b75ff8be07c018614c5b',1,'Mat44::operator*'],['../class_matrix.html#a9d56aa1cdf39b7267b15c3f839bcce43',1,'Matrix::operator*'],['../class_quat.html#a889abe46c8a28cfafa2a20492ecb9b3a',1,'Quat::operator*'],['../class_vec3.html#a4f514df42b1d780285645f9ac4ab984d',1,'Vec3::operator*'],['../class_vec4.html#aff8d5cf747d2cfa658ac6bc5822b6434',1,'Vec4::operator*'],['../class_vector.html#a4629e622d2f5cabbc8bee88e8ed448f2',1,'Vector::operator*'],['../class_d_vec3.html#a5eb373a1eec5f1e81d8523e6efeedcb3',1,'DVec3::operator*']]], + ['operator_3c_3c_1',['operator<<',['../class_vector.html#adb80018fc58d6f0da4b2a3bb92fe3c03',1,'Vector::operator<<'],['../class_vec4.html#a4aa88b04387365a68c74880173fabc60',1,'Vec4::operator<<'],['../class_vec3.html#a846e7ac0cd20c95921db85cddb24a0f8',1,'Vec3::operator<<'],['../class_u_vec4.html#aef78a8e4bbbc79b876775c0f3618a32e',1,'UVec4::operator<<'],['../class_quat.html#add2e8fbe3d49728e6cd82834f0f2ef3c',1,'Quat::operator<<'],['../class_matrix.html#a1d555eff0c64dbcd766b74b86a160269',1,'Matrix::operator<<'],['../class_mat44.html#abc0855ee1ce37289515c5b55dfeac1a6',1,'Mat44::operator<<'],['../class_float2.html#af71f1835f0b82c7faac9d7c3d27558e8',1,'Float2::operator<<'],['../class_d_vec3.html#a68288c7a72386e912ef1372110da2b27',1,'DVec3::operator<<'],['../class_d_mat44.html#ac2c17e5dbdf97a76d8807d6662ac0ec2',1,'DMat44::operator<<']]] +]; diff --git a/search/related_6.js b/search/related_6.js new file mode 100644 index 000000000..cebc51773 --- /dev/null +++ b/search/related_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ragdollsettings_0',['RagdollSettings',['../class_ragdoll.html#af287d5dd184fd0349ba44a279f6cacdf',1,'Ragdoll']]], + ['refconst_1',['RefConst',['../class_ref.html#aa53661c4e37b268c10c4a2a7cdcbfeba',1,'Ref']]] +]; diff --git a/search/related_7.js b/search/related_7.js new file mode 100644 index 000000000..9bf18a017 --- /dev/null +++ b/search/related_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['softbodymanifold_0',['SoftBodyManifold',['../class_soft_body_motion_properties.html#a733acf8aae3ee3af252725fd38bcc12a',1,'SoftBodyMotionProperties']]], + ['softbodymotionproperties_1',['softbodymotionproperties',['../class_soft_body_manifold.html#aa52bab293ad7cec288c33c81d5f38ea9',1,'SoftBodyManifold::SoftBodyMotionProperties'],['../class_soft_body_shared_settings.html#aa52bab293ad7cec288c33c81d5f38ea9',1,'SoftBodySharedSettings::SoftBodyMotionProperties']]], + ['softbodywithmotionpropertiesandshape_2',['SoftBodyWithMotionPropertiesAndShape',['../class_body.html#adce65bfd20d74b92a90a53883a218dee',1,'Body']]], + ['subshapeidcreator_3',['SubShapeIDCreator',['../class_sub_shape_i_d.html#a2ce5af4bbd248b1e44de16419d09beee',1,'SubShapeID']]] +]; diff --git a/search/related_8.js b/search/related_8.js new file mode 100644 index 000000000..9e68bb56a --- /dev/null +++ b/search/related_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vehicleconstraint_0',['vehicleconstraint',['../class_vehicle_controller.html#a30b73bf12f0dea921ce21318d08cb7c0',1,'VehicleController::VehicleConstraint'],['../class_wheel.html#a30b73bf12f0dea921ce21318d08cb7c0',1,'Wheel::VehicleConstraint']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 000000000..19f76f9d5 --- /dev/null +++ b/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 000000000..6fd40c677 --- /dev/null +++ b/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/struct_a_a_b_b_tree_builder_stats.html b/struct_a_a_b_b_tree_builder_stats.html new file mode 100644 index 000000000..fb765ff3e --- /dev/null +++ b/struct_a_a_b_b_tree_builder_stats.html @@ -0,0 +1,320 @@ + + + + + + + +Jolt Physics: AABBTreeBuilderStats Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    AABBTreeBuilderStats Struct Reference
    +
    +
    + +

    #include <AABBTreeBuilder.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    Splitter stats
    TriangleSplitter::Stats mSplitterStats
     Stats returned by the triangle splitter algorithm.
     
    Tree structure
    float mSAHCost = 0.0f
     Surface Area Heuristic cost of this tree.
     
    int mMinDepth = 0
     Minimal depth of tree (number of nodes)
     
    int mMaxDepth = 0
     Maximum depth of tree (number of nodes)
     
    int mNodeCount = 0
     Number of nodes in the tree.
     
    int mLeafNodeCount = 0
     Number of leaf nodes (that contain triangles)
     
    Configured stats
    int mMaxTrianglesPerLeaf = 0
     Configured max triangles per leaf.
     
    Actual stats
    int mTreeMinTrianglesPerLeaf = 0
     Minimal amount of triangles in a leaf.
     
    int mTreeMaxTrianglesPerLeaf = 0
     Maximal amount of triangles in a leaf.
     
    float mTreeAvgTrianglesPerLeaf = 0.0f
     Average amount of triangles in leaf nodes.
     
    +

    Member Data Documentation

    + +

    ◆ mLeafNodeCount

    + +
    +
    + + + + +
    int AABBTreeBuilderStats::mLeafNodeCount = 0
    +
    + +

    Number of leaf nodes (that contain triangles)

    + +
    +
    + +

    ◆ mMaxDepth

    + +
    +
    + + + + +
    int AABBTreeBuilderStats::mMaxDepth = 0
    +
    + +

    Maximum depth of tree (number of nodes)

    + +
    +
    + +

    ◆ mMaxTrianglesPerLeaf

    + +
    +
    + + + + +
    int AABBTreeBuilderStats::mMaxTrianglesPerLeaf = 0
    +
    + +

    Configured max triangles per leaf.

    + +
    +
    + +

    ◆ mMinDepth

    + +
    +
    + + + + +
    int AABBTreeBuilderStats::mMinDepth = 0
    +
    + +

    Minimal depth of tree (number of nodes)

    + +
    +
    + +

    ◆ mNodeCount

    + +
    +
    + + + + +
    int AABBTreeBuilderStats::mNodeCount = 0
    +
    + +

    Number of nodes in the tree.

    + +
    +
    + +

    ◆ mSAHCost

    + +
    +
    + + + + +
    float AABBTreeBuilderStats::mSAHCost = 0.0f
    +
    + +

    Surface Area Heuristic cost of this tree.

    + +
    +
    + +

    ◆ mSplitterStats

    + +
    +
    + + + + +
    TriangleSplitter::Stats AABBTreeBuilderStats::mSplitterStats
    +
    + +

    Stats returned by the triangle splitter algorithm.

    + +
    +
    + +

    ◆ mTreeAvgTrianglesPerLeaf

    + +
    +
    + + + + +
    float AABBTreeBuilderStats::mTreeAvgTrianglesPerLeaf = 0.0f
    +
    + +

    Average amount of triangles in leaf nodes.

    + +
    +
    + +

    ◆ mTreeMaxTrianglesPerLeaf

    + +
    +
    + + + + +
    int AABBTreeBuilderStats::mTreeMaxTrianglesPerLeaf = 0
    +
    + +

    Maximal amount of triangles in a leaf.

    + +
    +
    + +

    ◆ mTreeMinTrianglesPerLeaf

    + +
    +
    + + + + +
    int AABBTreeBuilderStats::mTreeMinTrianglesPerLeaf = 0
    +
    + +

    Minimal amount of triangles in a leaf.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_a_a_b_b_tree_builder_stats.js b/struct_a_a_b_b_tree_builder_stats.js new file mode 100644 index 000000000..558614e3a --- /dev/null +++ b/struct_a_a_b_b_tree_builder_stats.js @@ -0,0 +1,13 @@ +var struct_a_a_b_b_tree_builder_stats = +[ + [ "mLeafNodeCount", "struct_a_a_b_b_tree_builder_stats.html#a62c8f089af5a357cf40d50d27961ee1b", null ], + [ "mMaxDepth", "struct_a_a_b_b_tree_builder_stats.html#a5722b3c6619dc1793e79e902685aaaa5", null ], + [ "mMaxTrianglesPerLeaf", "struct_a_a_b_b_tree_builder_stats.html#a567b593b4f4bb7cdc2977a2a624da662", null ], + [ "mMinDepth", "struct_a_a_b_b_tree_builder_stats.html#aa59fbfa1cd92eb27ca7c1e13c4d28163", null ], + [ "mNodeCount", "struct_a_a_b_b_tree_builder_stats.html#ab3bb28a53eb8276008b3be628713ab4e", null ], + [ "mSAHCost", "struct_a_a_b_b_tree_builder_stats.html#a3864a59872b7d9ae1241a9e2d9561b04", null ], + [ "mSplitterStats", "struct_a_a_b_b_tree_builder_stats.html#ab1b2df872750bdff4622582ab59b1aa3", null ], + [ "mTreeAvgTrianglesPerLeaf", "struct_a_a_b_b_tree_builder_stats.html#a7d0f12dbcbee2af06c05d40ae3df5f93", null ], + [ "mTreeMaxTrianglesPerLeaf", "struct_a_a_b_b_tree_builder_stats.html#aee50ad973c7fe3651d81dcd0377b5299", null ], + [ "mTreeMinTrianglesPerLeaf", "struct_a_a_b_b_tree_builder_stats.html#a18bfd03d4c5760089e7a6900965a7dc1", null ] +]; \ No newline at end of file diff --git a/struct_a_a_box_cast-members.html b/struct_a_a_box_cast-members.html new file mode 100644 index 000000000..a37c6c8d5 --- /dev/null +++ b/struct_a_a_box_cast-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    AABoxCast Member List
    +
    +
    + +

    This is the complete list of members for AABoxCast, including all inherited members.

    + + + +
    mBoxAABoxCast
    mDirectionAABoxCast
    +
    + + + + diff --git a/struct_a_a_box_cast.html b/struct_a_a_box_cast.html new file mode 100644 index 000000000..d7460cff7 --- /dev/null +++ b/struct_a_a_box_cast.html @@ -0,0 +1,170 @@ + + + + + + + +Jolt Physics: AABoxCast Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    AABoxCast Struct Reference
    +
    +
    + +

    Structure that holds AABox moving linearly through 3d space. + More...

    + +

    #include <AABoxCast.h>

    + + + + + + + + +

    +Public Attributes

    JPH_OVERRIDE_NEW_DELETE AABox mBox
     Axis aligned box at starting location.
     
    Vec3 mDirection
     Direction and length of the cast (anything beyond this length will not be reported as a hit)
     
    +

    Detailed Description

    +

    Structure that holds AABox moving linearly through 3d space.

    +

    Member Data Documentation

    + +

    ◆ mBox

    + +
    +
    + + + + +
    JPH_OVERRIDE_NEW_DELETE AABox AABoxCast::mBox
    +
    + +

    Axis aligned box at starting location.

    + +
    +
    + +

    ◆ mDirection

    + +
    +
    + + + + +
    Vec3 AABoxCast::mDirection
    +
    + +

    Direction and length of the cast (anything beyond this length will not be reported as a hit)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_a_a_box_cast.js b/struct_a_a_box_cast.js new file mode 100644 index 000000000..2031d9786 --- /dev/null +++ b/struct_a_a_box_cast.js @@ -0,0 +1,5 @@ +var struct_a_a_box_cast = +[ + [ "mBox", "struct_a_a_box_cast.html#ab9e386d215fdea363fb71ca846edb992", null ], + [ "mDirection", "struct_a_a_box_cast.html#aeace724c59e69d8bcee630641cdab310", null ] +]; \ No newline at end of file diff --git a/struct_add_convex_radius-members.html b/struct_add_convex_radius-members.html new file mode 100644 index 000000000..9975c15d2 --- /dev/null +++ b/struct_add_convex_radius-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    AddConvexRadius< ConvexObject > Member List
    +
    +
    + +

    This is the complete list of members for AddConvexRadius< ConvexObject >, including all inherited members.

    + + + + + +
    AddConvexRadius(const ConvexObject &inObject, float inRadius)AddConvexRadius< ConvexObject >inline
    GetSupport(Vec3Arg inDirection) constAddConvexRadius< ConvexObject >inline
    mObjectAddConvexRadius< ConvexObject >
    mRadiusAddConvexRadius< ConvexObject >
    +
    + + + + diff --git a/struct_add_convex_radius.html b/struct_add_convex_radius.html new file mode 100644 index 000000000..62d2ca560 --- /dev/null +++ b/struct_add_convex_radius.html @@ -0,0 +1,248 @@ + + + + + + + +Jolt Physics: AddConvexRadius< ConvexObject > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    AddConvexRadius< ConvexObject > Struct Template Reference
    +
    +
    + +

    Structure that adds a convex radius. + More...

    + +

    #include <ConvexSupport.h>

    + + + + + + + +

    +Public Member Functions

     AddConvexRadius (const ConvexObject &inObject, float inRadius)
     
    Vec3 GetSupport (Vec3Arg inDirection) const
     Calculate the support vector for this convex shape.
     
    + + + + + +

    +Public Attributes

    const ConvexObject & mObject
     
    float mRadius
     
    +

    Detailed Description

    +
    template<typename ConvexObject>
    +struct AddConvexRadius< ConvexObject >

    Structure that adds a convex radius.

    +

    Constructor & Destructor Documentation

    + +

    ◆ AddConvexRadius()

    + +
    +
    +
    +template<typename ConvexObject >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    AddConvexRadius< ConvexObject >::AddConvexRadius (const ConvexObject & inObject,
    float inRadius 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetSupport()

    + +
    +
    +
    +template<typename ConvexObject >
    + + + + + +
    + + + + + + + + +
    Vec3 AddConvexRadius< ConvexObject >::GetSupport (Vec3Arg inDirection) const
    +
    +inline
    +
    + +

    Calculate the support vector for this convex shape.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mObject

    + +
    +
    +
    +template<typename ConvexObject >
    + + + + +
    const ConvexObject& AddConvexRadius< ConvexObject >::mObject
    +
    + +
    +
    + +

    ◆ mRadius

    + +
    +
    +
    +template<typename ConvexObject >
    + + + + +
    float AddConvexRadius< ConvexObject >::mRadius
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_add_convex_radius.js b/struct_add_convex_radius.js new file mode 100644 index 000000000..443b82810 --- /dev/null +++ b/struct_add_convex_radius.js @@ -0,0 +1,7 @@ +var struct_add_convex_radius = +[ + [ "AddConvexRadius", "struct_add_convex_radius.html#a7483095d1f4aaf1f8003adb2696d37f6", null ], + [ "GetSupport", "struct_add_convex_radius.html#a77576ad6fd2ef0aafc34d245b578ef59", null ], + [ "mObject", "struct_add_convex_radius.html#a2b18bb69a25bf6973cbe22024a357194", null ], + [ "mRadius", "struct_add_convex_radius.html#aa75c5abeaac64104be1a5520b8d141d1", null ] +]; \ No newline at end of file diff --git a/struct_allocator_has_reallocate-members.html b/struct_allocator_has_reallocate-members.html new file mode 100644 index 000000000..1a6bbf2dc --- /dev/null +++ b/struct_allocator_has_reallocate-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    AllocatorHasReallocate< T > Member List
    +
    +
    + +

    This is the complete list of members for AllocatorHasReallocate< T >, including all inherited members.

    + + +
    sValueAllocatorHasReallocate< T >static
    +
    + + + + diff --git a/struct_allocator_has_reallocate.html b/struct_allocator_has_reallocate.html new file mode 100644 index 000000000..54d52c3b0 --- /dev/null +++ b/struct_allocator_has_reallocate.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: AllocatorHasReallocate< T > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    AllocatorHasReallocate< T > Struct Template Reference
    +
    +
    + +

    Default implementation of AllocatorHasReallocate which tells if an allocator has a reallocate function. + More...

    + +

    #include <STLAllocator.h>

    + + + + +

    +Static Public Attributes

    static constexpr bool sValue = false
     
    +

    Detailed Description

    +
    template<class T>
    +struct AllocatorHasReallocate< T >

    Default implementation of AllocatorHasReallocate which tells if an allocator has a reallocate function.

    +

    Member Data Documentation

    + +

    ◆ sValue

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + +
    constexpr bool AllocatorHasReallocate< T >::sValue = false
    +
    +staticconstexpr
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_allocator_has_reallocate_3_01_s_t_l_allocator_3_01_t_01_4_01_4-members.html b/struct_allocator_has_reallocate_3_01_s_t_l_allocator_3_01_t_01_4_01_4-members.html new file mode 100644 index 000000000..cc35aad13 --- /dev/null +++ b/struct_allocator_has_reallocate_3_01_s_t_l_allocator_3_01_t_01_4_01_4-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    AllocatorHasReallocate< STLAllocator< T > > Member List
    +
    +
    + +

    This is the complete list of members for AllocatorHasReallocate< STLAllocator< T > >, including all inherited members.

    + + +
    sValueAllocatorHasReallocate< STLAllocator< T > >static
    +
    + + + + diff --git a/struct_allocator_has_reallocate_3_01_s_t_l_allocator_3_01_t_01_4_01_4.html b/struct_allocator_has_reallocate_3_01_s_t_l_allocator_3_01_t_01_4_01_4.html new file mode 100644 index 000000000..5e197afd4 --- /dev/null +++ b/struct_allocator_has_reallocate_3_01_s_t_l_allocator_3_01_t_01_4_01_4.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: AllocatorHasReallocate< STLAllocator< T > > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    AllocatorHasReallocate< STLAllocator< T > > Struct Template Reference
    +
    +
    + +

    The STLAllocator implements the reallocate function if the alignment of the class is smaller or equal to the default alignment for the platform. + More...

    + +

    #include <STLAllocator.h>

    + + + + +

    +Static Public Attributes

    static constexpr bool sValue = STLAllocator<T>::has_reallocate
     
    +

    Detailed Description

    +
    template<class T>
    +struct AllocatorHasReallocate< STLAllocator< T > >

    The STLAllocator implements the reallocate function if the alignment of the class is smaller or equal to the default alignment for the platform.

    +

    Member Data Documentation

    + +

    ◆ sValue

    + +
    +
    +
    +template<class T >
    + + + + + +
    + + + + +
    constexpr bool AllocatorHasReallocate< STLAllocator< T > >::sValue = STLAllocator<T>::has_reallocate
    +
    +staticconstexpr
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_body_manager_1_1_body_stats-members.html b/struct_body_manager_1_1_body_stats-members.html new file mode 100644 index 000000000..5e20f50ae --- /dev/null +++ b/struct_body_manager_1_1_body_stats-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/struct_body_manager_1_1_body_stats.html b/struct_body_manager_1_1_body_stats.html new file mode 100644 index 000000000..fcb457cb9 --- /dev/null +++ b/struct_body_manager_1_1_body_stats.html @@ -0,0 +1,303 @@ + + + + + + + +Jolt Physics: BodyManager::BodyStats Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    BodyManager::BodyStats Struct Reference
    +
    +
    + +

    Helper struct that counts the number of bodies of each type. + More...

    + +

    #include <BodyManager.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    uint mNumBodies = 0
     Total number of bodies in the body manager.
     
    uint mMaxBodies = 0
     Max allowed number of bodies in the body manager (as configured in Init(...))
     
    uint mNumBodiesStatic = 0
     Number of static bodies.
     
    uint mNumBodiesDynamic = 0
     Number of dynamic bodies.
     
    uint mNumActiveBodiesDynamic = 0
     Number of dynamic bodies that are currently active.
     
    uint mNumBodiesKinematic = 0
     Number of kinematic bodies.
     
    uint mNumActiveBodiesKinematic = 0
     Number of kinematic bodies that are currently active.
     
    uint mNumSoftBodies = 0
     Number of soft bodies.
     
    uint mNumActiveSoftBodies = 0
     Number of soft bodies that are currently active.
     
    +

    Detailed Description

    +

    Helper struct that counts the number of bodies of each type.

    +

    Member Data Documentation

    + +

    ◆ mMaxBodies

    + +
    +
    + + + + +
    uint BodyManager::BodyStats::mMaxBodies = 0
    +
    + +

    Max allowed number of bodies in the body manager (as configured in Init(...))

    + +
    +
    + +

    ◆ mNumActiveBodiesDynamic

    + +
    +
    + + + + +
    uint BodyManager::BodyStats::mNumActiveBodiesDynamic = 0
    +
    + +

    Number of dynamic bodies that are currently active.

    + +
    +
    + +

    ◆ mNumActiveBodiesKinematic

    + +
    +
    + + + + +
    uint BodyManager::BodyStats::mNumActiveBodiesKinematic = 0
    +
    + +

    Number of kinematic bodies that are currently active.

    + +
    +
    + +

    ◆ mNumActiveSoftBodies

    + +
    +
    + + + + +
    uint BodyManager::BodyStats::mNumActiveSoftBodies = 0
    +
    + +

    Number of soft bodies that are currently active.

    + +
    +
    + +

    ◆ mNumBodies

    + +
    +
    + + + + +
    uint BodyManager::BodyStats::mNumBodies = 0
    +
    + +

    Total number of bodies in the body manager.

    + +
    +
    + +

    ◆ mNumBodiesDynamic

    + +
    +
    + + + + +
    uint BodyManager::BodyStats::mNumBodiesDynamic = 0
    +
    + +

    Number of dynamic bodies.

    + +
    +
    + +

    ◆ mNumBodiesKinematic

    + +
    +
    + + + + +
    uint BodyManager::BodyStats::mNumBodiesKinematic = 0
    +
    + +

    Number of kinematic bodies.

    + +
    +
    + +

    ◆ mNumBodiesStatic

    + +
    +
    + + + + +
    uint BodyManager::BodyStats::mNumBodiesStatic = 0
    +
    + +

    Number of static bodies.

    + +
    +
    + +

    ◆ mNumSoftBodies

    + +
    +
    + + + + +
    uint BodyManager::BodyStats::mNumSoftBodies = 0
    +
    + +

    Number of soft bodies.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_body_manager_1_1_body_stats.js b/struct_body_manager_1_1_body_stats.js new file mode 100644 index 000000000..1d1d7d555 --- /dev/null +++ b/struct_body_manager_1_1_body_stats.js @@ -0,0 +1,12 @@ +var struct_body_manager_1_1_body_stats = +[ + [ "mMaxBodies", "struct_body_manager_1_1_body_stats.html#af523de7c042e3938507160de0377356c", null ], + [ "mNumActiveBodiesDynamic", "struct_body_manager_1_1_body_stats.html#a90093dbd0710776837eb79efe56e976d", null ], + [ "mNumActiveBodiesKinematic", "struct_body_manager_1_1_body_stats.html#a7ded35b48e2adbb4ce2f8ccb1740d7e8", null ], + [ "mNumActiveSoftBodies", "struct_body_manager_1_1_body_stats.html#ab35d057b00908a87b8ffc2b9bf0ff3e7", null ], + [ "mNumBodies", "struct_body_manager_1_1_body_stats.html#a92eda2694c18702a18cf0fb0655bf2d7", null ], + [ "mNumBodiesDynamic", "struct_body_manager_1_1_body_stats.html#a511161e1cafdb900a27757884c8b909f", null ], + [ "mNumBodiesKinematic", "struct_body_manager_1_1_body_stats.html#a943216c07627d14e78c93e4d6dae668e", null ], + [ "mNumBodiesStatic", "struct_body_manager_1_1_body_stats.html#a3130890dd64c4f77e59e0e7c2d67fa7d", null ], + [ "mNumSoftBodies", "struct_body_manager_1_1_body_stats.html#ac2c7e1a28cc3bf544f914fcbc3b1a192", null ] +]; \ No newline at end of file diff --git a/struct_body_manager_1_1_draw_settings-members.html b/struct_body_manager_1_1_draw_settings-members.html new file mode 100644 index 000000000..13699d72e --- /dev/null +++ b/struct_body_manager_1_1_draw_settings-members.html @@ -0,0 +1,137 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/struct_body_manager_1_1_draw_settings.html b/struct_body_manager_1_1_draw_settings.html new file mode 100644 index 000000000..1c4f221be --- /dev/null +++ b/struct_body_manager_1_1_draw_settings.html @@ -0,0 +1,531 @@ + + + + + + + +Jolt Physics: BodyManager::DrawSettings Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    BodyManager::DrawSettings Struct Reference
    +
    +
    + +

    Draw settings. + More...

    + +

    #include <BodyManager.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    bool mDrawGetSupportFunction = false
     Draw the GetSupport() function, used for convex collision detection.
     
    bool mDrawSupportDirection = false
     When drawing the support function, also draw which direction mapped to a specific support point.
     
    bool mDrawGetSupportingFace = false
     Draw the faces that were found colliding during collision detection.
     
    bool mDrawShape = true
     Draw the shapes of all bodies.
     
    bool mDrawShapeWireframe = false
     When mDrawShape is true and this is true, the shapes will be drawn in wireframe instead of solid.
     
    EShapeColor mDrawShapeColor = EShapeColor::MotionTypeColor
     Coloring scheme to use for shapes.
     
    bool mDrawBoundingBox = false
     Draw a bounding box per body.
     
    bool mDrawCenterOfMassTransform = false
     Draw the center of mass for each body.
     
    bool mDrawWorldTransform = false
     Draw the world transform (which can be different than the center of mass) for each body.
     
    bool mDrawVelocity = false
     Draw the velocity vector for each body.
     
    bool mDrawMassAndInertia = false
     Draw the mass and inertia (as the box equivalent) for each body.
     
    bool mDrawSleepStats = false
     Draw stats regarding the sleeping algorithm of each body.
     
    bool mDrawSoftBodyVertices = false
     Draw the vertices of soft bodies.
     
    bool mDrawSoftBodyVertexVelocities = false
     Draw the velocities of the vertices of soft bodies.
     
    bool mDrawSoftBodyEdgeConstraints = false
     Draw the edge constraints of soft bodies.
     
    bool mDrawSoftBodyBendConstraints = false
     Draw the bend constraints of soft bodies.
     
    bool mDrawSoftBodyVolumeConstraints = false
     Draw the volume constraints of soft bodies.
     
    bool mDrawSoftBodySkinConstraints = false
     Draw the skin constraints of soft bodies.
     
    bool mDrawSoftBodyLRAConstraints = false
     Draw the LRA constraints of soft bodies.
     
    bool mDrawSoftBodyPredictedBounds = false
     Draw the predicted bounds of soft bodies.
     
    ESoftBodyConstraintColor mDrawSoftBodyConstraintColor = ESoftBodyConstraintColor::ConstraintType
     Coloring scheme to use for soft body constraints.
     
    +

    Detailed Description

    +

    Draw settings.

    +

    Member Data Documentation

    + +

    ◆ mDrawBoundingBox

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawBoundingBox = false
    +
    + +

    Draw a bounding box per body.

    + +
    +
    + +

    ◆ mDrawCenterOfMassTransform

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawCenterOfMassTransform = false
    +
    + +

    Draw the center of mass for each body.

    + +
    +
    + +

    ◆ mDrawGetSupportFunction

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawGetSupportFunction = false
    +
    + +

    Draw the GetSupport() function, used for convex collision detection.

    + +
    +
    + +

    ◆ mDrawGetSupportingFace

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawGetSupportingFace = false
    +
    + +

    Draw the faces that were found colliding during collision detection.

    + +
    +
    + +

    ◆ mDrawMassAndInertia

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawMassAndInertia = false
    +
    + +

    Draw the mass and inertia (as the box equivalent) for each body.

    + +
    +
    + +

    ◆ mDrawShape

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawShape = true
    +
    + +

    Draw the shapes of all bodies.

    + +
    +
    + +

    ◆ mDrawShapeColor

    + +
    +
    + + + + +
    EShapeColor BodyManager::DrawSettings::mDrawShapeColor = EShapeColor::MotionTypeColor
    +
    + +

    Coloring scheme to use for shapes.

    + +
    +
    + +

    ◆ mDrawShapeWireframe

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawShapeWireframe = false
    +
    + +

    When mDrawShape is true and this is true, the shapes will be drawn in wireframe instead of solid.

    + +
    +
    + +

    ◆ mDrawSleepStats

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawSleepStats = false
    +
    + +

    Draw stats regarding the sleeping algorithm of each body.

    + +
    +
    + +

    ◆ mDrawSoftBodyBendConstraints

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawSoftBodyBendConstraints = false
    +
    + +

    Draw the bend constraints of soft bodies.

    + +
    +
    + +

    ◆ mDrawSoftBodyConstraintColor

    + +
    +
    + + + + +
    ESoftBodyConstraintColor BodyManager::DrawSettings::mDrawSoftBodyConstraintColor = ESoftBodyConstraintColor::ConstraintType
    +
    + +

    Coloring scheme to use for soft body constraints.

    + +
    +
    + +

    ◆ mDrawSoftBodyEdgeConstraints

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawSoftBodyEdgeConstraints = false
    +
    + +

    Draw the edge constraints of soft bodies.

    + +
    +
    + +

    ◆ mDrawSoftBodyLRAConstraints

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawSoftBodyLRAConstraints = false
    +
    + +

    Draw the LRA constraints of soft bodies.

    + +
    +
    + +

    ◆ mDrawSoftBodyPredictedBounds

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawSoftBodyPredictedBounds = false
    +
    + +

    Draw the predicted bounds of soft bodies.

    + +
    +
    + +

    ◆ mDrawSoftBodySkinConstraints

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawSoftBodySkinConstraints = false
    +
    + +

    Draw the skin constraints of soft bodies.

    + +
    +
    + +

    ◆ mDrawSoftBodyVertexVelocities

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawSoftBodyVertexVelocities = false
    +
    + +

    Draw the velocities of the vertices of soft bodies.

    + +
    +
    + +

    ◆ mDrawSoftBodyVertices

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawSoftBodyVertices = false
    +
    + +

    Draw the vertices of soft bodies.

    + +
    +
    + +

    ◆ mDrawSoftBodyVolumeConstraints

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawSoftBodyVolumeConstraints = false
    +
    + +

    Draw the volume constraints of soft bodies.

    + +
    +
    + +

    ◆ mDrawSupportDirection

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawSupportDirection = false
    +
    + +

    When drawing the support function, also draw which direction mapped to a specific support point.

    + +
    +
    + +

    ◆ mDrawVelocity

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawVelocity = false
    +
    + +

    Draw the velocity vector for each body.

    + +
    +
    + +

    ◆ mDrawWorldTransform

    + +
    +
    + + + + +
    bool BodyManager::DrawSettings::mDrawWorldTransform = false
    +
    + +

    Draw the world transform (which can be different than the center of mass) for each body.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_body_manager_1_1_draw_settings.js b/struct_body_manager_1_1_draw_settings.js new file mode 100644 index 000000000..6e3d26d78 --- /dev/null +++ b/struct_body_manager_1_1_draw_settings.js @@ -0,0 +1,24 @@ +var struct_body_manager_1_1_draw_settings = +[ + [ "mDrawBoundingBox", "struct_body_manager_1_1_draw_settings.html#af0e9db05229aeed5c25593b5f8825a41", null ], + [ "mDrawCenterOfMassTransform", "struct_body_manager_1_1_draw_settings.html#abc6a0e739e3880499a5172aab73b412f", null ], + [ "mDrawGetSupportFunction", "struct_body_manager_1_1_draw_settings.html#a00eee185fb605003647a3f9838a69510", null ], + [ "mDrawGetSupportingFace", "struct_body_manager_1_1_draw_settings.html#a549281bbff3273af8fc2ee6a1abd5c06", null ], + [ "mDrawMassAndInertia", "struct_body_manager_1_1_draw_settings.html#a8e21880e28252a47283a9915a48de982", null ], + [ "mDrawShape", "struct_body_manager_1_1_draw_settings.html#ad08ed37f301e239df4c10965332f327c", null ], + [ "mDrawShapeColor", "struct_body_manager_1_1_draw_settings.html#a5ac74c40c61db70320bc76b745e691ca", null ], + [ "mDrawShapeWireframe", "struct_body_manager_1_1_draw_settings.html#a45faca582ce3ba4844789bccf736a965", null ], + [ "mDrawSleepStats", "struct_body_manager_1_1_draw_settings.html#ab4521660f84ef2ddb7422686794564fb", null ], + [ "mDrawSoftBodyBendConstraints", "struct_body_manager_1_1_draw_settings.html#acde7730c0b8928f053355afdb3cbe33f", null ], + [ "mDrawSoftBodyConstraintColor", "struct_body_manager_1_1_draw_settings.html#a3fe361c5c4aa4c1d59d1f891c52cbee6", null ], + [ "mDrawSoftBodyEdgeConstraints", "struct_body_manager_1_1_draw_settings.html#aae6f634585850b102c3f276302d0d4a7", null ], + [ "mDrawSoftBodyLRAConstraints", "struct_body_manager_1_1_draw_settings.html#a6fced0ff434161eaa1ddbf79faa5cf15", null ], + [ "mDrawSoftBodyPredictedBounds", "struct_body_manager_1_1_draw_settings.html#a55d3594fa72dc4a59c2cffb9828c31f7", null ], + [ "mDrawSoftBodySkinConstraints", "struct_body_manager_1_1_draw_settings.html#af152e8b07ea06d5b62501a598ce9aacb", null ], + [ "mDrawSoftBodyVertexVelocities", "struct_body_manager_1_1_draw_settings.html#ae342c75ee4e3c72bd39f378b41e5d6f9", null ], + [ "mDrawSoftBodyVertices", "struct_body_manager_1_1_draw_settings.html#a586529cbe14b25bb864ef4736db1d950", null ], + [ "mDrawSoftBodyVolumeConstraints", "struct_body_manager_1_1_draw_settings.html#a6142b1847878d24a4e7f7ac831d610bb", null ], + [ "mDrawSupportDirection", "struct_body_manager_1_1_draw_settings.html#af16847645d9fd741e363740c7f329812", null ], + [ "mDrawVelocity", "struct_body_manager_1_1_draw_settings.html#a69ad1647a82e8904b2387981351a95f5", null ], + [ "mDrawWorldTransform", "struct_body_manager_1_1_draw_settings.html#a0355178c88d216e7c933ba8320d94498", null ] +]; \ No newline at end of file diff --git a/struct_body_pair-members.html b/struct_body_pair-members.html new file mode 100644 index 000000000..040059b29 --- /dev/null +++ b/struct_body_pair-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    BodyPair Member List
    +
    +
    + +

    This is the complete list of members for BodyPair, including all inherited members.

    + + + + + + + + +
    BodyPair()=defaultBodyPair
    BodyPair(BodyID inA, BodyID inB)BodyPairinline
    GetHash() constBodyPairinline
    mBodyABodyPair
    mBodyBBodyPair
    operator<(const BodyPair &inRHS) constBodyPairinline
    operator==(const BodyPair &inRHS) constBodyPairinline
    +
    + + + + diff --git a/struct_body_pair.html b/struct_body_pair.html new file mode 100644 index 000000000..918f1ee11 --- /dev/null +++ b/struct_body_pair.html @@ -0,0 +1,330 @@ + + + + + + + +Jolt Physics: BodyPair Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    BodyPair Struct Reference
    +
    +
    + +

    Structure that holds a body pair. + More...

    + +

    #include <BodyPair.h>

    + + + + + + + + + + + + + + + + +

    +Public Member Functions

    JPH_OVERRIDE_NEW_DELETE BodyPair ()=default
     Constructor.
     
     BodyPair (BodyID inA, BodyID inB)
     
    bool operator== (const BodyPair &inRHS) const
     Equals operator.
     
    bool operator< (const BodyPair &inRHS) const
     Smaller than operator, used for consistently ordering body pairs.
     
    uint64 GetHash () const
     Get the hash value of this object.
     
    + + + + + +

    +Public Attributes

    BodyID mBodyA
     
    BodyID mBodyB
     
    +

    Detailed Description

    +

    Structure that holds a body pair.

    +

    Constructor & Destructor Documentation

    + +

    ◆ BodyPair() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    JPH_OVERRIDE_NEW_DELETE BodyPair::BodyPair ()
    +
    +default
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ BodyPair() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    BodyPair::BodyPair (BodyID inA,
    BodyID inB 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetHash()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint64 BodyPair::GetHash () const
    +
    +inline
    +
    + +

    Get the hash value of this object.

    + +
    +
    + +

    ◆ operator<()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool BodyPair::operator< (const BodyPairinRHS) const
    +
    +inline
    +
    + +

    Smaller than operator, used for consistently ordering body pairs.

    + +
    +
    + +

    ◆ operator==()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool BodyPair::operator== (const BodyPairinRHS) const
    +
    +inline
    +
    + +

    Equals operator.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mBodyA

    + +
    +
    + + + + +
    BodyID BodyPair::mBodyA
    +
    + +
    +
    + +

    ◆ mBodyB

    + +
    +
    + + + + +
    BodyID BodyPair::mBodyB
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_body_pair.js b/struct_body_pair.js new file mode 100644 index 000000000..5ff06eb21 --- /dev/null +++ b/struct_body_pair.js @@ -0,0 +1,10 @@ +var struct_body_pair = +[ + [ "BodyPair", "struct_body_pair.html#af07fc6b828c249ac30e5ad5f406016f8", null ], + [ "BodyPair", "struct_body_pair.html#a89d92908491717f39027b1f51a50088c", null ], + [ "GetHash", "struct_body_pair.html#a5c584f3eda9897aa691047f585fdde06", null ], + [ "operator<", "struct_body_pair.html#a20493f29c36b3f20e8db0e86849e1547", null ], + [ "operator==", "struct_body_pair.html#a9170bf752664d8527564d386e428930a", null ], + [ "mBodyA", "struct_body_pair.html#a9071ec4a6f8552717d3a397528e3b2b8", null ], + [ "mBodyB", "struct_body_pair.html#aeb1186aac2ffbb99da346a15569f1855", null ] +]; \ No newline at end of file diff --git a/struct_broad_phase_1_1_update_state-members.html b/struct_broad_phase_1_1_update_state-members.html new file mode 100644 index 000000000..6092b6b05 --- /dev/null +++ b/struct_broad_phase_1_1_update_state-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    BroadPhase::UpdateState Member List
    +
    +
    + +

    This is the complete list of members for BroadPhase::UpdateState, including all inherited members.

    + + +
    mDataBroadPhase::UpdateState
    +
    + + + + diff --git a/struct_broad_phase_1_1_update_state.html b/struct_broad_phase_1_1_update_state.html new file mode 100644 index 000000000..08295cf3c --- /dev/null +++ b/struct_broad_phase_1_1_update_state.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: BroadPhase::UpdateState Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    BroadPhase::UpdateState Struct Reference
    +
    +
    + +

    Context used during broadphase update. + More...

    + +

    #include <BroadPhase.h>

    + + + + +

    +Public Attributes

    void * mData [4]
     
    +

    Detailed Description

    +

    Context used during broadphase update.

    +

    Member Data Documentation

    + +

    ◆ mData

    + +
    +
    + + + + +
    void* BroadPhase::UpdateState::mData[4]
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_broad_phase_1_1_update_state.js b/struct_broad_phase_1_1_update_state.js new file mode 100644 index 000000000..e08154d28 --- /dev/null +++ b/struct_broad_phase_1_1_update_state.js @@ -0,0 +1,4 @@ +var struct_broad_phase_1_1_update_state = +[ + [ "mData", "struct_broad_phase_1_1_update_state.html#a8460ba8beb83aa9919bf50eac7134ff1", null ] +]; \ No newline at end of file diff --git a/struct_character_virtual_1_1_contact-members.html b/struct_character_virtual_1_1_contact-members.html new file mode 100644 index 000000000..7b4d973dd --- /dev/null +++ b/struct_character_virtual_1_1_contact-members.html @@ -0,0 +1,135 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/struct_character_virtual_1_1_contact.html b/struct_character_virtual_1_1_contact.html new file mode 100644 index 000000000..a33c4786a --- /dev/null +++ b/struct_character_virtual_1_1_contact.html @@ -0,0 +1,505 @@ + + + + + + + +Jolt Physics: CharacterVirtual::Contact Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CharacterVirtual::Contact Struct Reference
    +
    +
    + +

    #include <CharacterVirtual.h>

    + + + + + + + + +

    +Public Member Functions

    void SaveState (StateRecorder &inStream) const
     
    void RestoreState (StateRecorder &inStream)
     
    bool IsSameBody (const Contact &inOther) const
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    RVec3 mPosition
     Position where the character makes contact.
     
    Vec3 mLinearVelocity
     Velocity of the contact point.
     
    Vec3 mContactNormal
     Contact normal, pointing towards the character.
     
    Vec3 mSurfaceNormal
     Surface normal of the contact.
     
    float mDistance
     Distance to the contact <= 0 means that it is an actual contact, > 0 means predictive.
     
    float mFraction
     Fraction along the path where this contact takes place.
     
    BodyID mBodyB
     ID of body we're colliding with (if not invalid)
     
    CharacterVirtualmCharacterB = nullptr
     Character we're colliding with (if not null)
     
    SubShapeID mSubShapeIDB
     Sub shape ID of body we're colliding with.
     
    EMotionType mMotionTypeB
     Motion type of B, used to determine the priority of the contact.
     
    bool mIsSensorB
     If B is a sensor.
     
    uint64 mUserData
     User data of B.
     
    const PhysicsMaterialmMaterial
     Material of B.
     
    bool mHadCollision = false
     If the character actually collided with the contact (can be false if a predictive contact never becomes a real one)
     
    bool mWasDiscarded = false
     If the contact validate callback chose to discard this contact.
     
    bool mCanPushCharacter = true
     When true, the velocity of the contact point can push the character.
     
    +

    Member Function Documentation

    + +

    ◆ IsSameBody()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool CharacterVirtual::Contact::IsSameBody (const ContactinOther) const
    +
    +inline
    +
    + +
    +
    + +

    ◆ RestoreState()

    + +
    +
    + + + + + + + + +
    void CharacterVirtual::Contact::RestoreState (StateRecorderinStream)
    +
    + +
    +
    + +

    ◆ SaveState()

    + +
    +
    + + + + + + + + +
    void CharacterVirtual::Contact::SaveState (StateRecorderinStream) const
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mBodyB

    + +
    +
    + + + + +
    BodyID CharacterVirtual::Contact::mBodyB
    +
    + +

    ID of body we're colliding with (if not invalid)

    + +
    +
    + +

    ◆ mCanPushCharacter

    + +
    +
    + + + + +
    bool CharacterVirtual::Contact::mCanPushCharacter = true
    +
    + +

    When true, the velocity of the contact point can push the character.

    + +
    +
    + +

    ◆ mCharacterB

    + +
    +
    + + + + +
    CharacterVirtual* CharacterVirtual::Contact::mCharacterB = nullptr
    +
    + +

    Character we're colliding with (if not null)

    + +
    +
    + +

    ◆ mContactNormal

    + +
    +
    + + + + +
    Vec3 CharacterVirtual::Contact::mContactNormal
    +
    + +

    Contact normal, pointing towards the character.

    + +
    +
    + +

    ◆ mDistance

    + +
    +
    + + + + +
    float CharacterVirtual::Contact::mDistance
    +
    + +

    Distance to the contact <= 0 means that it is an actual contact, > 0 means predictive.

    + +
    +
    + +

    ◆ mFraction

    + +
    +
    + + + + +
    float CharacterVirtual::Contact::mFraction
    +
    + +

    Fraction along the path where this contact takes place.

    + +
    +
    + +

    ◆ mHadCollision

    + +
    +
    + + + + +
    bool CharacterVirtual::Contact::mHadCollision = false
    +
    + +

    If the character actually collided with the contact (can be false if a predictive contact never becomes a real one)

    + +
    +
    + +

    ◆ mIsSensorB

    + +
    +
    + + + + +
    bool CharacterVirtual::Contact::mIsSensorB
    +
    + +

    If B is a sensor.

    + +
    +
    + +

    ◆ mLinearVelocity

    + +
    +
    + + + + +
    Vec3 CharacterVirtual::Contact::mLinearVelocity
    +
    + +

    Velocity of the contact point.

    + +
    +
    + +

    ◆ mMaterial

    + +
    +
    + + + + +
    const PhysicsMaterial* CharacterVirtual::Contact::mMaterial
    +
    + +

    Material of B.

    + +
    +
    + +

    ◆ mMotionTypeB

    + +
    +
    + + + + +
    EMotionType CharacterVirtual::Contact::mMotionTypeB
    +
    + +

    Motion type of B, used to determine the priority of the contact.

    + +
    +
    + +

    ◆ mPosition

    + +
    +
    + + + + +
    RVec3 CharacterVirtual::Contact::mPosition
    +
    + +

    Position where the character makes contact.

    + +
    +
    + +

    ◆ mSubShapeIDB

    + +
    +
    + + + + +
    SubShapeID CharacterVirtual::Contact::mSubShapeIDB
    +
    + +

    Sub shape ID of body we're colliding with.

    + +
    +
    + +

    ◆ mSurfaceNormal

    + +
    +
    + + + + +
    Vec3 CharacterVirtual::Contact::mSurfaceNormal
    +
    + +

    Surface normal of the contact.

    + +
    +
    + +

    ◆ mUserData

    + +
    +
    + + + + +
    uint64 CharacterVirtual::Contact::mUserData
    +
    + +

    User data of B.

    + +
    +
    + +

    ◆ mWasDiscarded

    + +
    +
    + + + + +
    bool CharacterVirtual::Contact::mWasDiscarded = false
    +
    + +

    If the contact validate callback chose to discard this contact.

    + +
    +
    +
    The documentation for this struct was generated from the following files: +
    +
    + + + + diff --git a/struct_character_virtual_1_1_contact.js b/struct_character_virtual_1_1_contact.js new file mode 100644 index 000000000..54d66154b --- /dev/null +++ b/struct_character_virtual_1_1_contact.js @@ -0,0 +1,22 @@ +var struct_character_virtual_1_1_contact = +[ + [ "IsSameBody", "struct_character_virtual_1_1_contact.html#aa812c74d8ef437c690bafc818fb62c50", null ], + [ "RestoreState", "struct_character_virtual_1_1_contact.html#a952dfd4d7f5eaf9c790ae88d88cdb83a", null ], + [ "SaveState", "struct_character_virtual_1_1_contact.html#ae726dbb4b578dfa2f083a74e3eb5c544", null ], + [ "mBodyB", "struct_character_virtual_1_1_contact.html#a96b288a9886ddc8003154087e32a10ab", null ], + [ "mCanPushCharacter", "struct_character_virtual_1_1_contact.html#ab702ce98262a29981d4bd1c5f6e86ca5", null ], + [ "mCharacterB", "struct_character_virtual_1_1_contact.html#a9039e3eae10f46b3ae0199dee5d1c83c", null ], + [ "mContactNormal", "struct_character_virtual_1_1_contact.html#a3e0e1203d15a972c0b52b08940439664", null ], + [ "mDistance", "struct_character_virtual_1_1_contact.html#abbbf77d2cdfb572d1f637812bbca93e9", null ], + [ "mFraction", "struct_character_virtual_1_1_contact.html#a85abb6cf7ff39090dba7f596603c8f23", null ], + [ "mHadCollision", "struct_character_virtual_1_1_contact.html#a90d33cabd5e7e175186d781efa42031f", null ], + [ "mIsSensorB", "struct_character_virtual_1_1_contact.html#ae19592c8bdfb0e4fc0b22b88e12f3ebd", null ], + [ "mLinearVelocity", "struct_character_virtual_1_1_contact.html#ab4c53990ab4c51b1b7f9abe59de0775c", null ], + [ "mMaterial", "struct_character_virtual_1_1_contact.html#a668d987b784e7b11dd030ad79f202cab", null ], + [ "mMotionTypeB", "struct_character_virtual_1_1_contact.html#a1f227d6b89bbddbc35de63b1c8f7d306", null ], + [ "mPosition", "struct_character_virtual_1_1_contact.html#ae0c5dd762716d33d3c0289846b4126ff", null ], + [ "mSubShapeIDB", "struct_character_virtual_1_1_contact.html#a9bf8135c5166ab8a22092656b2f6ebb1", null ], + [ "mSurfaceNormal", "struct_character_virtual_1_1_contact.html#ac8573f10d6b69928672603e63490d450", null ], + [ "mUserData", "struct_character_virtual_1_1_contact.html#a904ea0676f8406e735f23ff45fa2d57a", null ], + [ "mWasDiscarded", "struct_character_virtual_1_1_contact.html#a8137b339f63f6693ed3bb5449ea18ec0", null ] +]; \ No newline at end of file diff --git a/struct_character_virtual_1_1_extended_update_settings-members.html b/struct_character_virtual_1_1_extended_update_settings-members.html new file mode 100644 index 000000000..b3ed86fab --- /dev/null +++ b/struct_character_virtual_1_1_extended_update_settings-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/struct_character_virtual_1_1_extended_update_settings.html b/struct_character_virtual_1_1_extended_update_settings.html new file mode 100644 index 000000000..562728fb8 --- /dev/null +++ b/struct_character_virtual_1_1_extended_update_settings.html @@ -0,0 +1,246 @@ + + + + + + + +Jolt Physics: CharacterVirtual::ExtendedUpdateSettings Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CharacterVirtual::ExtendedUpdateSettings Struct Reference
    +
    +
    + +

    Settings struct with settings for ExtendedUpdate. + More...

    + +

    #include <CharacterVirtual.h>

    + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    Vec3 mStickToFloorStepDown { 0, -0.5f, 0 }
     See StickToFloor inStepDown parameter. Can be zero to turn off.
     
    Vec3 mWalkStairsStepUp { 0, 0.4f, 0 }
     See WalkStairs inStepUp parameter. Can be zero to turn off.
     
    float mWalkStairsMinStepForward { 0.02f }
     See WalkStairs inStepForward parameter. Note that the parameter only indicates a magnitude, direction is taken from current velocity.
     
    float mWalkStairsStepForwardTest { 0.15f }
     See WalkStairs inStepForwardTest parameter. Note that the parameter only indicates a magnitude, direction is taken from current velocity.
     
    float mWalkStairsCosAngleForwardContact { Cos(DegreesToRadians(75.0f)) }
     Cos(angle) where angle is the maximum angle between the ground normal in the horizontal plane and the character forward vector where we're willing to adjust the step forward test towards the contact normal.
     
    Vec3 mWalkStairsStepDownExtra { Vec3::sZero() }
     See WalkStairs inStepDownExtra.
     
    +

    Detailed Description

    +

    Settings struct with settings for ExtendedUpdate.

    +

    Member Data Documentation

    + +

    ◆ mStickToFloorStepDown

    + +
    +
    + + + + +
    Vec3 CharacterVirtual::ExtendedUpdateSettings::mStickToFloorStepDown { 0, -0.5f, 0 }
    +
    + +

    See StickToFloor inStepDown parameter. Can be zero to turn off.

    + +
    +
    + +

    ◆ mWalkStairsCosAngleForwardContact

    + +
    +
    + + + + +
    float CharacterVirtual::ExtendedUpdateSettings::mWalkStairsCosAngleForwardContact { Cos(DegreesToRadians(75.0f)) }
    +
    + +

    Cos(angle) where angle is the maximum angle between the ground normal in the horizontal plane and the character forward vector where we're willing to adjust the step forward test towards the contact normal.

    + +
    +
    + +

    ◆ mWalkStairsMinStepForward

    + +
    +
    + + + + +
    float CharacterVirtual::ExtendedUpdateSettings::mWalkStairsMinStepForward { 0.02f }
    +
    + +

    See WalkStairs inStepForward parameter. Note that the parameter only indicates a magnitude, direction is taken from current velocity.

    + +
    +
    + +

    ◆ mWalkStairsStepDownExtra

    + +
    +
    + + + + +
    Vec3 CharacterVirtual::ExtendedUpdateSettings::mWalkStairsStepDownExtra { Vec3::sZero() }
    +
    + +

    See WalkStairs inStepDownExtra.

    + +
    +
    + +

    ◆ mWalkStairsStepForwardTest

    + +
    +
    + + + + +
    float CharacterVirtual::ExtendedUpdateSettings::mWalkStairsStepForwardTest { 0.15f }
    +
    + +

    See WalkStairs inStepForwardTest parameter. Note that the parameter only indicates a magnitude, direction is taken from current velocity.

    + +
    +
    + +

    ◆ mWalkStairsStepUp

    + +
    +
    + + + + +
    Vec3 CharacterVirtual::ExtendedUpdateSettings::mWalkStairsStepUp { 0, 0.4f, 0 }
    +
    + +

    See WalkStairs inStepUp parameter. Can be zero to turn off.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_character_virtual_1_1_extended_update_settings.js b/struct_character_virtual_1_1_extended_update_settings.js new file mode 100644 index 000000000..c1a4d03a5 --- /dev/null +++ b/struct_character_virtual_1_1_extended_update_settings.js @@ -0,0 +1,9 @@ +var struct_character_virtual_1_1_extended_update_settings = +[ + [ "mStickToFloorStepDown", "struct_character_virtual_1_1_extended_update_settings.html#a1c5ed3a437d5b284f4ce9b271bfebbf8", null ], + [ "mWalkStairsCosAngleForwardContact", "struct_character_virtual_1_1_extended_update_settings.html#aa1710035a7d1b96b4b1d2ba526452528", null ], + [ "mWalkStairsMinStepForward", "struct_character_virtual_1_1_extended_update_settings.html#a175073b371406a720d7e381fc9103110", null ], + [ "mWalkStairsStepDownExtra", "struct_character_virtual_1_1_extended_update_settings.html#a8cd00377425d16b8b2fbee1eb8dc97dc", null ], + [ "mWalkStairsStepForwardTest", "struct_character_virtual_1_1_extended_update_settings.html#a773f3fecf53db30cd8a6381b307a3cb4", null ], + [ "mWalkStairsStepUp", "struct_character_virtual_1_1_extended_update_settings.html#ac716eaa1338501e45efa6b6d0100e931", null ] +]; \ No newline at end of file diff --git a/struct_collision_estimation_result-members.html b/struct_collision_estimation_result-members.html new file mode 100644 index 000000000..339e10eee --- /dev/null +++ b/struct_collision_estimation_result-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    CollisionEstimationResult Member List
    +
    + +
    + + + + diff --git a/struct_collision_estimation_result.html b/struct_collision_estimation_result.html new file mode 100644 index 000000000..3487e3164 --- /dev/null +++ b/struct_collision_estimation_result.html @@ -0,0 +1,289 @@ + + + + + + + +Jolt Physics: CollisionEstimationResult Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CollisionEstimationResult Struct Reference
    +
    +
    + +

    A structure that contains the estimated contact and friction impulses and the resulting body velocities. + More...

    + +

    #include <EstimateCollisionResponse.h>

    + + + + +

    +Classes

    struct  Impulse
     
    + + + +

    +Public Types

    using Impulses = StaticArray< Impulse, ContactPoints::Capacity >
     
    + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    Vec3 mLinearVelocity1
     The estimated linear velocity of body 1 after collision.
     
    Vec3 mAngularVelocity1
     The estimated angular velocity of body 1 after collision.
     
    Vec3 mLinearVelocity2
     The estimated linear velocity of body 2 after collision.
     
    Vec3 mAngularVelocity2
     The estimated angular velocity of body 2 after collision.
     
    Vec3 mTangent1
     Normalized tangent of contact normal.
     
    Vec3 mTangent2
     Second normalized tangent of contact normal (forms a basis with mTangent1 and mWorldSpaceNormal)
     
    Impulses mImpulses
     
    +

    Detailed Description

    +

    A structure that contains the estimated contact and friction impulses and the resulting body velocities.

    +

    Member Typedef Documentation

    + +

    ◆ Impulses

    + + +

    Member Data Documentation

    + +

    ◆ mAngularVelocity1

    + +
    +
    + + + + +
    Vec3 CollisionEstimationResult::mAngularVelocity1
    +
    + +

    The estimated angular velocity of body 1 after collision.

    + +
    +
    + +

    ◆ mAngularVelocity2

    + +
    +
    + + + + +
    Vec3 CollisionEstimationResult::mAngularVelocity2
    +
    + +

    The estimated angular velocity of body 2 after collision.

    + +
    +
    + +

    ◆ mImpulses

    + +
    +
    + + + + +
    Impulses CollisionEstimationResult::mImpulses
    +
    + +
    +
    + +

    ◆ mLinearVelocity1

    + +
    +
    + + + + +
    Vec3 CollisionEstimationResult::mLinearVelocity1
    +
    + +

    The estimated linear velocity of body 1 after collision.

    + +
    +
    + +

    ◆ mLinearVelocity2

    + +
    +
    + + + + +
    Vec3 CollisionEstimationResult::mLinearVelocity2
    +
    + +

    The estimated linear velocity of body 2 after collision.

    + +
    +
    + +

    ◆ mTangent1

    + +
    +
    + + + + +
    Vec3 CollisionEstimationResult::mTangent1
    +
    + +

    Normalized tangent of contact normal.

    + +
    +
    + +

    ◆ mTangent2

    + +
    +
    + + + + +
    Vec3 CollisionEstimationResult::mTangent2
    +
    + +

    Second normalized tangent of contact normal (forms a basis with mTangent1 and mWorldSpaceNormal)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_collision_estimation_result.js b/struct_collision_estimation_result.js new file mode 100644 index 000000000..92e17d4c9 --- /dev/null +++ b/struct_collision_estimation_result.js @@ -0,0 +1,12 @@ +var struct_collision_estimation_result = +[ + [ "Impulse", "struct_collision_estimation_result_1_1_impulse.html", "struct_collision_estimation_result_1_1_impulse" ], + [ "Impulses", "struct_collision_estimation_result.html#ae20ee6182689df63b71afc3edb34dbbb", null ], + [ "mAngularVelocity1", "struct_collision_estimation_result.html#a2dda95e1b040950e758d2a15b3cc0aef", null ], + [ "mAngularVelocity2", "struct_collision_estimation_result.html#af8db3dcccbc454c945d0bc6e6b21dec6", null ], + [ "mImpulses", "struct_collision_estimation_result.html#a5d4cfce2e09e021aef88daca461111fa", null ], + [ "mLinearVelocity1", "struct_collision_estimation_result.html#ac162c5b8c86cd927de472acbe76adae0", null ], + [ "mLinearVelocity2", "struct_collision_estimation_result.html#a24e229dac9d990dd915e0365c34d0167", null ], + [ "mTangent1", "struct_collision_estimation_result.html#a4bbba50d9d52cc075e49fc3c9f65b7a3", null ], + [ "mTangent2", "struct_collision_estimation_result.html#a48883412273db08fa7bd1d2e1d219ee4", null ] +]; \ No newline at end of file diff --git a/struct_collision_estimation_result_1_1_impulse-members.html b/struct_collision_estimation_result_1_1_impulse-members.html new file mode 100644 index 000000000..9b4bd56d0 --- /dev/null +++ b/struct_collision_estimation_result_1_1_impulse-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    CollisionEstimationResult::Impulse Member List
    +
    + +
    + + + + diff --git a/struct_collision_estimation_result_1_1_impulse.html b/struct_collision_estimation_result_1_1_impulse.html new file mode 100644 index 000000000..d8ef31de1 --- /dev/null +++ b/struct_collision_estimation_result_1_1_impulse.html @@ -0,0 +1,184 @@ + + + + + + + +Jolt Physics: CollisionEstimationResult::Impulse Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CollisionEstimationResult::Impulse Struct Reference
    +
    +
    + +

    #include <EstimateCollisionResponse.h>

    + + + + + + + + + + + +

    +Public Attributes

    float mContactImpulse
     Estimated contact impulses (kg m / s)
     
    float mFrictionImpulse1
     Estimated friction impulses in the direction of tangent 1 (kg m / s)
     
    float mFrictionImpulse2
     Estimated friction impulses in the direction of tangent 2 (kg m / s)
     
    +

    Member Data Documentation

    + +

    ◆ mContactImpulse

    + +
    +
    + + + + +
    float CollisionEstimationResult::Impulse::mContactImpulse
    +
    + +

    Estimated contact impulses (kg m / s)

    + +
    +
    + +

    ◆ mFrictionImpulse1

    + +
    +
    + + + + +
    float CollisionEstimationResult::Impulse::mFrictionImpulse1
    +
    + +

    Estimated friction impulses in the direction of tangent 1 (kg m / s)

    + +
    +
    + +

    ◆ mFrictionImpulse2

    + +
    +
    + + + + +
    float CollisionEstimationResult::Impulse::mFrictionImpulse2
    +
    + +

    Estimated friction impulses in the direction of tangent 2 (kg m / s)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_collision_estimation_result_1_1_impulse.js b/struct_collision_estimation_result_1_1_impulse.js new file mode 100644 index 000000000..610ee41a5 --- /dev/null +++ b/struct_collision_estimation_result_1_1_impulse.js @@ -0,0 +1,6 @@ +var struct_collision_estimation_result_1_1_impulse = +[ + [ "mContactImpulse", "struct_collision_estimation_result_1_1_impulse.html#ad672fbc096b11969fc9ef19a0ba5a225", null ], + [ "mFrictionImpulse1", "struct_collision_estimation_result_1_1_impulse.html#aebeff7b76e005ba545aa77eb670f11e7", null ], + [ "mFrictionImpulse2", "struct_collision_estimation_result_1_1_impulse.html#a2cb7bb86ca170e986cb89a85e5abf354", null ] +]; \ No newline at end of file diff --git a/struct_compound_shape_1_1_cast_ray_visitor-members.html b/struct_compound_shape_1_1_cast_ray_visitor-members.html new file mode 100644 index 000000000..ca9e11c70 --- /dev/null +++ b/struct_compound_shape_1_1_cast_ray_visitor-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    CompoundShape::CastRayVisitor Member List
    +
    +
    + +

    This is the complete list of members for CompoundShape::CastRayVisitor, including all inherited members.

    + + + + + + + + + + + +
    CastRayVisitor(const RayCast &inRay, const CompoundShape *inShape, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit)CompoundShape::CastRayVisitorinline
    mHitCompoundShape::CastRayVisitor
    mInvDirectionCompoundShape::CastRayVisitor
    mRayCompoundShape::CastRayVisitor
    mReturnValueCompoundShape::CastRayVisitor
    mSubShapeBitsCompoundShape::CastRayVisitor
    mSubShapeIDCreatorCompoundShape::CastRayVisitor
    ShouldAbort() constCompoundShape::CastRayVisitorinline
    TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) constCompoundShape::CastRayVisitorinline
    VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)CompoundShape::CastRayVisitorinline
    +
    + + + + diff --git a/struct_compound_shape_1_1_cast_ray_visitor.html b/struct_compound_shape_1_1_cast_ray_visitor.html new file mode 100644 index 000000000..48db0df74 --- /dev/null +++ b/struct_compound_shape_1_1_cast_ray_visitor.html @@ -0,0 +1,415 @@ + + + + + + + +Jolt Physics: CompoundShape::CastRayVisitor Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CompoundShape::CastRayVisitor Struct Reference
    +
    +
    + +

    #include <CompoundShapeVisitors.h>

    + + + + + + + + + + + + + +

    +Public Member Functions

    JPH_INLINE CastRayVisitor (const RayCast &inRay, const CompoundShape *inShape, const SubShapeIDCreator &inSubShapeIDCreator, RayCastResult &ioHit)
     
    JPH_INLINE bool ShouldAbort () const
     Returns true when collision detection should abort because it's not possible to find a better hit.
     
    JPH_INLINE Vec4 TestBounds (Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
     Test ray against 4 bounding boxes and returns the distance where the ray enters the bounding box.
     
    JPH_INLINE void VisitShape (const SubShape &inSubShape, uint32 inSubShapeIndex)
     Test the ray against a single subshape.
     
    + + + + + + + + + + + + + +

    +Public Attributes

    RayInvDirection mInvDirection
     
    const RayCastmRay
     
    RayCastResultmHit
     
    SubShapeIDCreator mSubShapeIDCreator
     
    uint mSubShapeBits
     
    bool mReturnValue = false
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ CastRayVisitor()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE CompoundShape::CastRayVisitor::CastRayVisitor (const RayCastinRay,
    const CompoundShapeinShape,
    const SubShapeIDCreatorinSubShapeIDCreator,
    RayCastResultioHit 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ ShouldAbort()

    + +
    +
    + + + + + +
    + + + + + + + +
    JPH_INLINE bool CompoundShape::CastRayVisitor::ShouldAbort () const
    +
    +inline
    +
    + +

    Returns true when collision detection should abort because it's not possible to find a better hit.

    + +
    +
    + +

    ◆ TestBounds()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE Vec4 CompoundShape::CastRayVisitor::TestBounds (Vec4Arg inBoundsMinX,
    Vec4Arg inBoundsMinY,
    Vec4Arg inBoundsMinZ,
    Vec4Arg inBoundsMaxX,
    Vec4Arg inBoundsMaxY,
    Vec4Arg inBoundsMaxZ 
    ) const
    +
    +inline
    +
    + +

    Test ray against 4 bounding boxes and returns the distance where the ray enters the bounding box.

    + +
    +
    + +

    ◆ VisitShape()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    JPH_INLINE void CompoundShape::CastRayVisitor::VisitShape (const SubShapeinSubShape,
    uint32 inSubShapeIndex 
    )
    +
    +inline
    +
    + +

    Test the ray against a single subshape.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mHit

    + +
    +
    + + + + +
    RayCastResult& CompoundShape::CastRayVisitor::mHit
    +
    + +
    +
    + +

    ◆ mInvDirection

    + +
    +
    + + + + +
    RayInvDirection CompoundShape::CastRayVisitor::mInvDirection
    +
    + +
    +
    + +

    ◆ mRay

    + +
    +
    + + + + +
    const RayCast& CompoundShape::CastRayVisitor::mRay
    +
    + +
    +
    + +

    ◆ mReturnValue

    + +
    +
    + + + + +
    bool CompoundShape::CastRayVisitor::mReturnValue = false
    +
    + +
    +
    + +

    ◆ mSubShapeBits

    + +
    +
    + + + + +
    uint CompoundShape::CastRayVisitor::mSubShapeBits
    +
    + +
    +
    + +

    ◆ mSubShapeIDCreator

    + +
    +
    + + + + +
    SubShapeIDCreator CompoundShape::CastRayVisitor::mSubShapeIDCreator
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_compound_shape_1_1_cast_ray_visitor.js b/struct_compound_shape_1_1_cast_ray_visitor.js new file mode 100644 index 000000000..b2fd85434 --- /dev/null +++ b/struct_compound_shape_1_1_cast_ray_visitor.js @@ -0,0 +1,13 @@ +var struct_compound_shape_1_1_cast_ray_visitor = +[ + [ "CastRayVisitor", "struct_compound_shape_1_1_cast_ray_visitor.html#a7adfe292a88805c33097245c07d2d529", null ], + [ "ShouldAbort", "struct_compound_shape_1_1_cast_ray_visitor.html#a7668a1ea39d30feee8636f90626320c4", null ], + [ "TestBounds", "struct_compound_shape_1_1_cast_ray_visitor.html#a45ca32b8515b057633bdea8c47f3f044", null ], + [ "VisitShape", "struct_compound_shape_1_1_cast_ray_visitor.html#abcfb06db0c470f7b887bd1ccbdf293e9", null ], + [ "mHit", "struct_compound_shape_1_1_cast_ray_visitor.html#aa4f2babd360c7683d26e6d089179999e", null ], + [ "mInvDirection", "struct_compound_shape_1_1_cast_ray_visitor.html#a848fb221cd472001c314498be3ad4f71", null ], + [ "mRay", "struct_compound_shape_1_1_cast_ray_visitor.html#a67db40d3d39442109dff46d6c8962f6e", null ], + [ "mReturnValue", "struct_compound_shape_1_1_cast_ray_visitor.html#a8b14b4e32934a67cbd94a7ff0f362ac5", null ], + [ "mSubShapeBits", "struct_compound_shape_1_1_cast_ray_visitor.html#a3d68ed7fbf5ccbb853e1ef47e45e72bb", null ], + [ "mSubShapeIDCreator", "struct_compound_shape_1_1_cast_ray_visitor.html#a5d6fbbcbcb0a268582642c731d542c8f", null ] +]; \ No newline at end of file diff --git a/struct_compound_shape_1_1_cast_ray_visitor_collector-members.html b/struct_compound_shape_1_1_cast_ray_visitor_collector-members.html new file mode 100644 index 000000000..2f224b0c8 --- /dev/null +++ b/struct_compound_shape_1_1_cast_ray_visitor_collector-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    CompoundShape::CastRayVisitorCollector Member List
    +
    +
    + +

    This is the complete list of members for CompoundShape::CastRayVisitorCollector, including all inherited members.

    + + + + + + + + + + + + +
    CastRayVisitorCollector(const RayCast &inRay, const RayCastSettings &inRayCastSettings, const CompoundShape *inShape, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter)CompoundShape::CastRayVisitorCollectorinline
    mCollectorCompoundShape::CastRayVisitorCollector
    mInvDirectionCompoundShape::CastRayVisitorCollector
    mRayCompoundShape::CastRayVisitorCollector
    mRayCastSettingsCompoundShape::CastRayVisitorCollector
    mShapeFilterCompoundShape::CastRayVisitorCollector
    mSubShapeBitsCompoundShape::CastRayVisitorCollector
    mSubShapeIDCreatorCompoundShape::CastRayVisitorCollector
    ShouldAbort() constCompoundShape::CastRayVisitorCollectorinline
    TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) constCompoundShape::CastRayVisitorCollectorinline
    VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)CompoundShape::CastRayVisitorCollectorinline
    +
    + + + + diff --git a/struct_compound_shape_1_1_cast_ray_visitor_collector.html b/struct_compound_shape_1_1_cast_ray_visitor_collector.html new file mode 100644 index 000000000..a6fc22746 --- /dev/null +++ b/struct_compound_shape_1_1_cast_ray_visitor_collector.html @@ -0,0 +1,443 @@ + + + + + + + +Jolt Physics: CompoundShape::CastRayVisitorCollector Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CompoundShape::CastRayVisitorCollector Struct Reference
    +
    +
    + +

    #include <CompoundShapeVisitors.h>

    + + + + + + + + + + + + + +

    +Public Member Functions

    JPH_INLINE CastRayVisitorCollector (const RayCast &inRay, const RayCastSettings &inRayCastSettings, const CompoundShape *inShape, const SubShapeIDCreator &inSubShapeIDCreator, CastRayCollector &ioCollector, const ShapeFilter &inShapeFilter)
     
    JPH_INLINE bool ShouldAbort () const
     Returns true when collision detection should abort because it's not possible to find a better hit.
     
    JPH_INLINE Vec4 TestBounds (Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
     Test ray against 4 bounding boxes and returns the distance where the ray enters the bounding box.
     
    JPH_INLINE void VisitShape (const SubShape &inSubShape, uint32 inSubShapeIndex)
     Test the ray against a single subshape.
     
    + + + + + + + + + + + + + + + +

    +Public Attributes

    RayInvDirection mInvDirection
     
    const RayCastmRay
     
    CastRayCollectormCollector
     
    SubShapeIDCreator mSubShapeIDCreator
     
    uint mSubShapeBits
     
    RayCastSettings mRayCastSettings
     
    const ShapeFiltermShapeFilter
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ CastRayVisitorCollector()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE CompoundShape::CastRayVisitorCollector::CastRayVisitorCollector (const RayCastinRay,
    const RayCastSettingsinRayCastSettings,
    const CompoundShapeinShape,
    const SubShapeIDCreatorinSubShapeIDCreator,
    CastRayCollectorioCollector,
    const ShapeFilterinShapeFilter 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ ShouldAbort()

    + +
    +
    + + + + + +
    + + + + + + + +
    JPH_INLINE bool CompoundShape::CastRayVisitorCollector::ShouldAbort () const
    +
    +inline
    +
    + +

    Returns true when collision detection should abort because it's not possible to find a better hit.

    + +
    +
    + +

    ◆ TestBounds()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE Vec4 CompoundShape::CastRayVisitorCollector::TestBounds (Vec4Arg inBoundsMinX,
    Vec4Arg inBoundsMinY,
    Vec4Arg inBoundsMinZ,
    Vec4Arg inBoundsMaxX,
    Vec4Arg inBoundsMaxY,
    Vec4Arg inBoundsMaxZ 
    ) const
    +
    +inline
    +
    + +

    Test ray against 4 bounding boxes and returns the distance where the ray enters the bounding box.

    + +
    +
    + +

    ◆ VisitShape()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    JPH_INLINE void CompoundShape::CastRayVisitorCollector::VisitShape (const SubShapeinSubShape,
    uint32 inSubShapeIndex 
    )
    +
    +inline
    +
    + +

    Test the ray against a single subshape.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mCollector

    + +
    +
    + + + + +
    CastRayCollector& CompoundShape::CastRayVisitorCollector::mCollector
    +
    + +
    +
    + +

    ◆ mInvDirection

    + +
    +
    + + + + +
    RayInvDirection CompoundShape::CastRayVisitorCollector::mInvDirection
    +
    + +
    +
    + +

    ◆ mRay

    + +
    +
    + + + + +
    const RayCast& CompoundShape::CastRayVisitorCollector::mRay
    +
    + +
    +
    + +

    ◆ mRayCastSettings

    + +
    +
    + + + + +
    RayCastSettings CompoundShape::CastRayVisitorCollector::mRayCastSettings
    +
    + +
    +
    + +

    ◆ mShapeFilter

    + +
    +
    + + + + +
    const ShapeFilter& CompoundShape::CastRayVisitorCollector::mShapeFilter
    +
    + +
    +
    + +

    ◆ mSubShapeBits

    + +
    +
    + + + + +
    uint CompoundShape::CastRayVisitorCollector::mSubShapeBits
    +
    + +
    +
    + +

    ◆ mSubShapeIDCreator

    + +
    +
    + + + + +
    SubShapeIDCreator CompoundShape::CastRayVisitorCollector::mSubShapeIDCreator
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_compound_shape_1_1_cast_ray_visitor_collector.js b/struct_compound_shape_1_1_cast_ray_visitor_collector.js new file mode 100644 index 000000000..63012921f --- /dev/null +++ b/struct_compound_shape_1_1_cast_ray_visitor_collector.js @@ -0,0 +1,14 @@ +var struct_compound_shape_1_1_cast_ray_visitor_collector = +[ + [ "CastRayVisitorCollector", "struct_compound_shape_1_1_cast_ray_visitor_collector.html#af17b4ee8b0f590e72d35ced0d45563f0", null ], + [ "ShouldAbort", "struct_compound_shape_1_1_cast_ray_visitor_collector.html#adcc33d30649befa932d49742db59986d", null ], + [ "TestBounds", "struct_compound_shape_1_1_cast_ray_visitor_collector.html#a814152f9307136c005f19c36131746d2", null ], + [ "VisitShape", "struct_compound_shape_1_1_cast_ray_visitor_collector.html#a295365cb216ebe0c673cddae6fe7fcc6", null ], + [ "mCollector", "struct_compound_shape_1_1_cast_ray_visitor_collector.html#aa482aff5292c183077270554b7053fb5", null ], + [ "mInvDirection", "struct_compound_shape_1_1_cast_ray_visitor_collector.html#afe91b86d85eebf7f35660efeb535ae9d", null ], + [ "mRay", "struct_compound_shape_1_1_cast_ray_visitor_collector.html#a27e6f90c97311cb2274d1c15b7088367", null ], + [ "mRayCastSettings", "struct_compound_shape_1_1_cast_ray_visitor_collector.html#a279153b159b17f4bf1fb7a1a4df46122", null ], + [ "mShapeFilter", "struct_compound_shape_1_1_cast_ray_visitor_collector.html#a085af308c94408bd9f45fb3195402ba1", null ], + [ "mSubShapeBits", "struct_compound_shape_1_1_cast_ray_visitor_collector.html#a77fc1dbc8b79d5ec9cb3bf6803f9ca33", null ], + [ "mSubShapeIDCreator", "struct_compound_shape_1_1_cast_ray_visitor_collector.html#a3a9a5655d3583d15e247d7c3ce94da35", null ] +]; \ No newline at end of file diff --git a/struct_compound_shape_1_1_cast_shape_visitor-members.html b/struct_compound_shape_1_1_cast_shape_visitor-members.html new file mode 100644 index 000000000..15cbb3807 --- /dev/null +++ b/struct_compound_shape_1_1_cast_shape_visitor-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    CompoundShape::CastShapeVisitor Member List
    +
    +
    + +

    This is the complete list of members for CompoundShape::CastShapeVisitor, including all inherited members.

    + + + + + + + + + + + + + + + + + +
    CastShapeVisitor(const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const CompoundShape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)CompoundShape::CastShapeVisitorinline
    mBoxCenterCompoundShape::CastShapeVisitor
    mBoxExtentCompoundShape::CastShapeVisitor
    mCenterOfMassTransform2CompoundShape::CastShapeVisitor
    mCollectorCompoundShape::CastShapeVisitor
    mInvDirectionCompoundShape::CastShapeVisitor
    mScaleCompoundShape::CastShapeVisitor
    mShapeCastCompoundShape::CastShapeVisitor
    mShapeCastSettingsCompoundShape::CastShapeVisitor
    mShapeFilterCompoundShape::CastShapeVisitor
    mSubShapeBitsCompoundShape::CastShapeVisitor
    mSubShapeIDCreator1CompoundShape::CastShapeVisitor
    mSubShapeIDCreator2CompoundShape::CastShapeVisitor
    ShouldAbort() constCompoundShape::CastShapeVisitorinline
    TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) constCompoundShape::CastShapeVisitorinline
    VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)CompoundShape::CastShapeVisitorinline
    +
    + + + + diff --git a/struct_compound_shape_1_1_cast_shape_visitor.html b/struct_compound_shape_1_1_cast_shape_visitor.html new file mode 100644 index 000000000..0be25ed71 --- /dev/null +++ b/struct_compound_shape_1_1_cast_shape_visitor.html @@ -0,0 +1,541 @@ + + + + + + + +Jolt Physics: CompoundShape::CastShapeVisitor Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CompoundShape::CastShapeVisitor Struct Reference
    +
    +
    + +

    #include <CompoundShapeVisitors.h>

    + + + + + + + + + + + + + +

    +Public Member Functions

    JPH_INLINE CastShapeVisitor (const ShapeCast &inShapeCast, const ShapeCastSettings &inShapeCastSettings, const CompoundShape *inShape, Vec3Arg inScale, const ShapeFilter &inShapeFilter, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, CastShapeCollector &ioCollector)
     
    JPH_INLINE bool ShouldAbort () const
     Returns true when collision detection should abort because it's not possible to find a better hit.
     
    JPH_INLINE Vec4 TestBounds (Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
     Tests the shape cast against 4 bounding boxes, returns the distance along the shape cast where the shape first enters the bounding box.
     
    JPH_INLINE void VisitShape (const SubShape &inSubShape, uint32 inSubShapeIndex)
     Test the cast shape against a single subshape.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    RayInvDirection mInvDirection
     
    Vec3 mBoxCenter
     
    Vec3 mBoxExtent
     
    Vec3 mScale
     
    const ShapeCastmShapeCast
     
    const ShapeCastSettingsmShapeCastSettings
     
    const ShapeFiltermShapeFilter
     
    CastShapeCollectormCollector
     
    Mat44 mCenterOfMassTransform2
     
    SubShapeIDCreator mSubShapeIDCreator1
     
    SubShapeIDCreator mSubShapeIDCreator2
     
    uint mSubShapeBits
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ CastShapeVisitor()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE CompoundShape::CastShapeVisitor::CastShapeVisitor (const ShapeCastinShapeCast,
    const ShapeCastSettingsinShapeCastSettings,
    const CompoundShapeinShape,
    Vec3Arg inScale,
    const ShapeFilterinShapeFilter,
    Mat44Arg inCenterOfMassTransform2,
    const SubShapeIDCreatorinSubShapeIDCreator1,
    const SubShapeIDCreatorinSubShapeIDCreator2,
    CastShapeCollectorioCollector 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ ShouldAbort()

    + +
    +
    + + + + + +
    + + + + + + + +
    JPH_INLINE bool CompoundShape::CastShapeVisitor::ShouldAbort () const
    +
    +inline
    +
    + +

    Returns true when collision detection should abort because it's not possible to find a better hit.

    + +
    +
    + +

    ◆ TestBounds()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE Vec4 CompoundShape::CastShapeVisitor::TestBounds (Vec4Arg inBoundsMinX,
    Vec4Arg inBoundsMinY,
    Vec4Arg inBoundsMinZ,
    Vec4Arg inBoundsMaxX,
    Vec4Arg inBoundsMaxY,
    Vec4Arg inBoundsMaxZ 
    ) const
    +
    +inline
    +
    + +

    Tests the shape cast against 4 bounding boxes, returns the distance along the shape cast where the shape first enters the bounding box.

    + +
    +
    + +

    ◆ VisitShape()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    JPH_INLINE void CompoundShape::CastShapeVisitor::VisitShape (const SubShapeinSubShape,
    uint32 inSubShapeIndex 
    )
    +
    +inline
    +
    + +

    Test the cast shape against a single subshape.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mBoxCenter

    + +
    +
    + + + + +
    Vec3 CompoundShape::CastShapeVisitor::mBoxCenter
    +
    + +
    +
    + +

    ◆ mBoxExtent

    + +
    +
    + + + + +
    Vec3 CompoundShape::CastShapeVisitor::mBoxExtent
    +
    + +
    +
    + +

    ◆ mCenterOfMassTransform2

    + +
    +
    + + + + +
    Mat44 CompoundShape::CastShapeVisitor::mCenterOfMassTransform2
    +
    + +
    +
    + +

    ◆ mCollector

    + +
    +
    + + + + +
    CastShapeCollector& CompoundShape::CastShapeVisitor::mCollector
    +
    + +
    +
    + +

    ◆ mInvDirection

    + +
    +
    + + + + +
    RayInvDirection CompoundShape::CastShapeVisitor::mInvDirection
    +
    + +
    +
    + +

    ◆ mScale

    + +
    +
    + + + + +
    Vec3 CompoundShape::CastShapeVisitor::mScale
    +
    + +
    +
    + +

    ◆ mShapeCast

    + +
    +
    + + + + +
    const ShapeCast& CompoundShape::CastShapeVisitor::mShapeCast
    +
    + +
    +
    + +

    ◆ mShapeCastSettings

    + +
    +
    + + + + +
    const ShapeCastSettings& CompoundShape::CastShapeVisitor::mShapeCastSettings
    +
    + +
    +
    + +

    ◆ mShapeFilter

    + +
    +
    + + + + +
    const ShapeFilter& CompoundShape::CastShapeVisitor::mShapeFilter
    +
    + +
    +
    + +

    ◆ mSubShapeBits

    + +
    +
    + + + + +
    uint CompoundShape::CastShapeVisitor::mSubShapeBits
    +
    + +
    +
    + +

    ◆ mSubShapeIDCreator1

    + +
    +
    + + + + +
    SubShapeIDCreator CompoundShape::CastShapeVisitor::mSubShapeIDCreator1
    +
    + +
    +
    + +

    ◆ mSubShapeIDCreator2

    + +
    +
    + + + + +
    SubShapeIDCreator CompoundShape::CastShapeVisitor::mSubShapeIDCreator2
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_compound_shape_1_1_cast_shape_visitor.js b/struct_compound_shape_1_1_cast_shape_visitor.js new file mode 100644 index 000000000..332e2038c --- /dev/null +++ b/struct_compound_shape_1_1_cast_shape_visitor.js @@ -0,0 +1,19 @@ +var struct_compound_shape_1_1_cast_shape_visitor = +[ + [ "CastShapeVisitor", "struct_compound_shape_1_1_cast_shape_visitor.html#abbd8f9db973ff8289d6e7ec10374670b", null ], + [ "ShouldAbort", "struct_compound_shape_1_1_cast_shape_visitor.html#a11687e8851b02a264d77bfa665822398", null ], + [ "TestBounds", "struct_compound_shape_1_1_cast_shape_visitor.html#aa89ca00f54a79ed5ead44eebbc25f41e", null ], + [ "VisitShape", "struct_compound_shape_1_1_cast_shape_visitor.html#aa834797c904738fc3bee984367a46df4", null ], + [ "mBoxCenter", "struct_compound_shape_1_1_cast_shape_visitor.html#abc86dba5d2e4f85caf6e84e0926fae26", null ], + [ "mBoxExtent", "struct_compound_shape_1_1_cast_shape_visitor.html#a6fa233b683235d32096365a5d9ac5894", null ], + [ "mCenterOfMassTransform2", "struct_compound_shape_1_1_cast_shape_visitor.html#af4a7cfe31a9090b41b803e94f6a35ed5", null ], + [ "mCollector", "struct_compound_shape_1_1_cast_shape_visitor.html#a290ab12059bcc67d2a199f8a57a69027", null ], + [ "mInvDirection", "struct_compound_shape_1_1_cast_shape_visitor.html#ae3d1ce73b6255f42f50e9acb10608477", null ], + [ "mScale", "struct_compound_shape_1_1_cast_shape_visitor.html#a012a8f770d2d7c6722d0ea074a0ce272", null ], + [ "mShapeCast", "struct_compound_shape_1_1_cast_shape_visitor.html#a7bcdd12bb40a5694b8cea6c6b72ee730", null ], + [ "mShapeCastSettings", "struct_compound_shape_1_1_cast_shape_visitor.html#a31cf68987698a4a4d01d6c3db7a25bb8", null ], + [ "mShapeFilter", "struct_compound_shape_1_1_cast_shape_visitor.html#a87b65ee6239d12e86511a22e35911181", null ], + [ "mSubShapeBits", "struct_compound_shape_1_1_cast_shape_visitor.html#a71060cc2b409ddda0dd6a8d6da5086a7", null ], + [ "mSubShapeIDCreator1", "struct_compound_shape_1_1_cast_shape_visitor.html#a88be6d8856ed44ab1bce0e18c6716f69", null ], + [ "mSubShapeIDCreator2", "struct_compound_shape_1_1_cast_shape_visitor.html#a6e39d022fd61dff3cd0572c0a76c0894", null ] +]; \ No newline at end of file diff --git a/struct_compound_shape_1_1_collect_transformed_shapes_visitor-members.html b/struct_compound_shape_1_1_collect_transformed_shapes_visitor-members.html new file mode 100644 index 000000000..7a9c298f3 --- /dev/null +++ b/struct_compound_shape_1_1_collect_transformed_shapes_visitor-members.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    CompoundShape::CollectTransformedShapesVisitor Member List
    +
    +
    + +

    This is the complete list of members for CompoundShape::CollectTransformedShapesVisitor, including all inherited members.

    + + + + + + + + + + + + + + +
    CollectTransformedShapesVisitor(const AABox &inBox, const CompoundShape *inShape, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter)CompoundShape::CollectTransformedShapesVisitorinline
    mBoxCompoundShape::CollectTransformedShapesVisitor
    mCollectorCompoundShape::CollectTransformedShapesVisitor
    mLocalBoxCompoundShape::CollectTransformedShapesVisitor
    mPositionCOMCompoundShape::CollectTransformedShapesVisitor
    mRotationCompoundShape::CollectTransformedShapesVisitor
    mScaleCompoundShape::CollectTransformedShapesVisitor
    mShapeFilterCompoundShape::CollectTransformedShapesVisitor
    mSubShapeBitsCompoundShape::CollectTransformedShapesVisitor
    mSubShapeIDCreatorCompoundShape::CollectTransformedShapesVisitor
    ShouldAbort() constCompoundShape::CollectTransformedShapesVisitorinline
    TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) constCompoundShape::CollectTransformedShapesVisitorinline
    VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)CompoundShape::CollectTransformedShapesVisitorinline
    +
    + + + + diff --git a/struct_compound_shape_1_1_collect_transformed_shapes_visitor.html b/struct_compound_shape_1_1_collect_transformed_shapes_visitor.html new file mode 100644 index 000000000..2ee33d22f --- /dev/null +++ b/struct_compound_shape_1_1_collect_transformed_shapes_visitor.html @@ -0,0 +1,487 @@ + + + + + + + +Jolt Physics: CompoundShape::CollectTransformedShapesVisitor Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CompoundShape::CollectTransformedShapesVisitor Struct Reference
    +
    +
    + +

    #include <CompoundShapeVisitors.h>

    + + + + + + + + + + + + + +

    +Public Member Functions

    JPH_INLINE CollectTransformedShapesVisitor (const AABox &inBox, const CompoundShape *inShape, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale, const SubShapeIDCreator &inSubShapeIDCreator, TransformedShapeCollector &ioCollector, const ShapeFilter &inShapeFilter)
     
    JPH_INLINE bool ShouldAbort () const
     Returns true when collision detection should abort because it's not possible to find a better hit.
     
    JPH_INLINE UVec4 TestBounds (Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
     Tests 4 bounding boxes against the query box, returns true for the ones that collide.
     
    JPH_INLINE void VisitShape (const SubShape &inSubShape, uint32 inSubShapeIndex)
     Collect the transformed sub shapes for a single subshape.
     
    + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    AABox mBox
     
    OrientedBox mLocalBox
     
    Vec3 mPositionCOM
     
    Quat mRotation
     
    Vec3 mScale
     
    SubShapeIDCreator mSubShapeIDCreator
     
    TransformedShapeCollectormCollector
     
    uint mSubShapeBits
     
    const ShapeFiltermShapeFilter
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ CollectTransformedShapesVisitor()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE CompoundShape::CollectTransformedShapesVisitor::CollectTransformedShapesVisitor (const AABoxinBox,
    const CompoundShapeinShape,
    Vec3Arg inPositionCOM,
    QuatArg inRotation,
    Vec3Arg inScale,
    const SubShapeIDCreatorinSubShapeIDCreator,
    TransformedShapeCollectorioCollector,
    const ShapeFilterinShapeFilter 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ ShouldAbort()

    + +
    +
    + + + + + +
    + + + + + + + +
    JPH_INLINE bool CompoundShape::CollectTransformedShapesVisitor::ShouldAbort () const
    +
    +inline
    +
    + +

    Returns true when collision detection should abort because it's not possible to find a better hit.

    + +
    +
    + +

    ◆ TestBounds()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE UVec4 CompoundShape::CollectTransformedShapesVisitor::TestBounds (Vec4Arg inBoundsMinX,
    Vec4Arg inBoundsMinY,
    Vec4Arg inBoundsMinZ,
    Vec4Arg inBoundsMaxX,
    Vec4Arg inBoundsMaxY,
    Vec4Arg inBoundsMaxZ 
    ) const
    +
    +inline
    +
    + +

    Tests 4 bounding boxes against the query box, returns true for the ones that collide.

    + +
    +
    + +

    ◆ VisitShape()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    JPH_INLINE void CompoundShape::CollectTransformedShapesVisitor::VisitShape (const SubShapeinSubShape,
    uint32 inSubShapeIndex 
    )
    +
    +inline
    +
    + +

    Collect the transformed sub shapes for a single subshape.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mBox

    + +
    +
    + + + + +
    AABox CompoundShape::CollectTransformedShapesVisitor::mBox
    +
    + +
    +
    + +

    ◆ mCollector

    + +
    +
    + + + + +
    TransformedShapeCollector& CompoundShape::CollectTransformedShapesVisitor::mCollector
    +
    + +
    +
    + +

    ◆ mLocalBox

    + +
    +
    + + + + +
    OrientedBox CompoundShape::CollectTransformedShapesVisitor::mLocalBox
    +
    + +
    +
    + +

    ◆ mPositionCOM

    + +
    +
    + + + + +
    Vec3 CompoundShape::CollectTransformedShapesVisitor::mPositionCOM
    +
    + +
    +
    + +

    ◆ mRotation

    + +
    +
    + + + + +
    Quat CompoundShape::CollectTransformedShapesVisitor::mRotation
    +
    + +
    +
    + +

    ◆ mScale

    + +
    +
    + + + + +
    Vec3 CompoundShape::CollectTransformedShapesVisitor::mScale
    +
    + +
    +
    + +

    ◆ mShapeFilter

    + +
    +
    + + + + +
    const ShapeFilter& CompoundShape::CollectTransformedShapesVisitor::mShapeFilter
    +
    + +
    +
    + +

    ◆ mSubShapeBits

    + +
    +
    + + + + +
    uint CompoundShape::CollectTransformedShapesVisitor::mSubShapeBits
    +
    + +
    +
    + +

    ◆ mSubShapeIDCreator

    + +
    +
    + + + + +
    SubShapeIDCreator CompoundShape::CollectTransformedShapesVisitor::mSubShapeIDCreator
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_compound_shape_1_1_collect_transformed_shapes_visitor.js b/struct_compound_shape_1_1_collect_transformed_shapes_visitor.js new file mode 100644 index 000000000..d5ed65596 --- /dev/null +++ b/struct_compound_shape_1_1_collect_transformed_shapes_visitor.js @@ -0,0 +1,16 @@ +var struct_compound_shape_1_1_collect_transformed_shapes_visitor = +[ + [ "CollectTransformedShapesVisitor", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a68b2dd66eeaafdf0fcb240f1bfd66b44", null ], + [ "ShouldAbort", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a0514f8498006d248fc1ca54e5420ba41", null ], + [ "TestBounds", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#ae2e78802ce43915c117bc1e0d91d08b5", null ], + [ "VisitShape", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a40155b16c19875b30971665976d2b3be", null ], + [ "mBox", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a55cc06cb9e9d00cc51e902e0b038d96e", null ], + [ "mCollector", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a888023b455a023aa817178a3ccc50797", null ], + [ "mLocalBox", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#ae803bcfcf769987698f075c49f34708b", null ], + [ "mPositionCOM", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a0b73160273b742d692193d37e4f5e571", null ], + [ "mRotation", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a47b09d94bdefcf6a75a756f3e37c339f", null ], + [ "mScale", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a760002fad6044539aaa17b42c293032c", null ], + [ "mShapeFilter", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#ab0b166da6e14b8694b567f68605c3225", null ], + [ "mSubShapeBits", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#ae36c22c62df54bfaabe0272463b0b32c", null ], + [ "mSubShapeIDCreator", "struct_compound_shape_1_1_collect_transformed_shapes_visitor.html#a613d75816ac10978847612943afa504e", null ] +]; \ No newline at end of file diff --git a/struct_compound_shape_1_1_collide_compound_vs_shape_visitor-members.html b/struct_compound_shape_1_1_collide_compound_vs_shape_visitor-members.html new file mode 100644 index 000000000..9c228696f --- /dev/null +++ b/struct_compound_shape_1_1_collide_compound_vs_shape_visitor-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    CompoundShape::CollideCompoundVsShapeVisitor Member List
    +
    +
    + +

    This is the complete list of members for CompoundShape::CollideCompoundVsShapeVisitor, including all inherited members.

    + + + + + + + + + + + + + + + + + +
    CollideCompoundVsShapeVisitor(const CompoundShape *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)CompoundShape::CollideCompoundVsShapeVisitorinline
    mBoundsOf2InSpaceOf1CompoundShape::CollideCompoundVsShapeVisitor
    mCollectorCompoundShape::CollideCompoundVsShapeVisitor
    mCollideShapeSettingsCompoundShape::CollideCompoundVsShapeVisitor
    mScale1CompoundShape::CollideCompoundVsShapeVisitor
    mScale2CompoundShape::CollideCompoundVsShapeVisitor
    mShape2CompoundShape::CollideCompoundVsShapeVisitor
    mShapeFilterCompoundShape::CollideCompoundVsShapeVisitor
    mSubShapeBitsCompoundShape::CollideCompoundVsShapeVisitor
    mSubShapeIDCreator1CompoundShape::CollideCompoundVsShapeVisitor
    mSubShapeIDCreator2CompoundShape::CollideCompoundVsShapeVisitor
    mTransform1CompoundShape::CollideCompoundVsShapeVisitor
    mTransform2CompoundShape::CollideCompoundVsShapeVisitor
    ShouldAbort() constCompoundShape::CollideCompoundVsShapeVisitorinline
    TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) constCompoundShape::CollideCompoundVsShapeVisitorinline
    VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)CompoundShape::CollideCompoundVsShapeVisitorinline
    +
    + + + + diff --git a/struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html b/struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html new file mode 100644 index 000000000..0d1e4b21b --- /dev/null +++ b/struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html @@ -0,0 +1,553 @@ + + + + + + + +Jolt Physics: CompoundShape::CollideCompoundVsShapeVisitor Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CompoundShape::CollideCompoundVsShapeVisitor Struct Reference
    +
    +
    + +

    #include <CompoundShapeVisitors.h>

    + + + + + + + + + + + + + +

    +Public Member Functions

    JPH_INLINE CollideCompoundVsShapeVisitor (const CompoundShape *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)
     
    JPH_INLINE bool ShouldAbort () const
     Returns true when collision detection should abort because it's not possible to find a better hit.
     
    JPH_INLINE UVec4 TestBounds (Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
     Tests the bounds of shape 2 vs 4 bounding boxes, returns true for the ones that intersect.
     
    JPH_INLINE void VisitShape (const SubShape &inSubShape, uint32 inSubShapeIndex)
     Test the shape against a single subshape.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    const CollideShapeSettingsmCollideShapeSettings
     
    CollideShapeCollectormCollector
     
    const ShapemShape2
     
    Vec3 mScale1
     
    Vec3 mScale2
     
    Mat44 mTransform1
     
    Mat44 mTransform2
     
    AABox mBoundsOf2InSpaceOf1
     
    SubShapeIDCreator mSubShapeIDCreator1
     
    SubShapeIDCreator mSubShapeIDCreator2
     
    uint mSubShapeBits
     
    const ShapeFiltermShapeFilter
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ CollideCompoundVsShapeVisitor()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE CompoundShape::CollideCompoundVsShapeVisitor::CollideCompoundVsShapeVisitor (const CompoundShapeinShape1,
    const ShapeinShape2,
    Vec3Arg inScale1,
    Vec3Arg inScale2,
    Mat44Arg inCenterOfMassTransform1,
    Mat44Arg inCenterOfMassTransform2,
    const SubShapeIDCreatorinSubShapeIDCreator1,
    const SubShapeIDCreatorinSubShapeIDCreator2,
    const CollideShapeSettingsinCollideShapeSettings,
    CollideShapeCollectorioCollector,
    const ShapeFilterinShapeFilter 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ ShouldAbort()

    + +
    +
    + + + + + +
    + + + + + + + +
    JPH_INLINE bool CompoundShape::CollideCompoundVsShapeVisitor::ShouldAbort () const
    +
    +inline
    +
    + +

    Returns true when collision detection should abort because it's not possible to find a better hit.

    + +
    +
    + +

    ◆ TestBounds()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE UVec4 CompoundShape::CollideCompoundVsShapeVisitor::TestBounds (Vec4Arg inBoundsMinX,
    Vec4Arg inBoundsMinY,
    Vec4Arg inBoundsMinZ,
    Vec4Arg inBoundsMaxX,
    Vec4Arg inBoundsMaxY,
    Vec4Arg inBoundsMaxZ 
    ) const
    +
    +inline
    +
    + +

    Tests the bounds of shape 2 vs 4 bounding boxes, returns true for the ones that intersect.

    + +
    +
    + +

    ◆ VisitShape()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    JPH_INLINE void CompoundShape::CollideCompoundVsShapeVisitor::VisitShape (const SubShapeinSubShape,
    uint32 inSubShapeIndex 
    )
    +
    +inline
    +
    + +

    Test the shape against a single subshape.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mBoundsOf2InSpaceOf1

    + +
    +
    + + + + +
    AABox CompoundShape::CollideCompoundVsShapeVisitor::mBoundsOf2InSpaceOf1
    +
    + +
    +
    + +

    ◆ mCollector

    + +
    +
    + + + + +
    CollideShapeCollector& CompoundShape::CollideCompoundVsShapeVisitor::mCollector
    +
    + +
    +
    + +

    ◆ mCollideShapeSettings

    + +
    +
    + + + + +
    const CollideShapeSettings& CompoundShape::CollideCompoundVsShapeVisitor::mCollideShapeSettings
    +
    + +
    +
    + +

    ◆ mScale1

    + +
    +
    + + + + +
    Vec3 CompoundShape::CollideCompoundVsShapeVisitor::mScale1
    +
    + +
    +
    + +

    ◆ mScale2

    + +
    +
    + + + + +
    Vec3 CompoundShape::CollideCompoundVsShapeVisitor::mScale2
    +
    + +
    +
    + +

    ◆ mShape2

    + +
    +
    + + + + +
    const Shape* CompoundShape::CollideCompoundVsShapeVisitor::mShape2
    +
    + +
    +
    + +

    ◆ mShapeFilter

    + +
    +
    + + + + +
    const ShapeFilter& CompoundShape::CollideCompoundVsShapeVisitor::mShapeFilter
    +
    + +
    +
    + +

    ◆ mSubShapeBits

    + +
    +
    + + + + +
    uint CompoundShape::CollideCompoundVsShapeVisitor::mSubShapeBits
    +
    + +
    +
    + +

    ◆ mSubShapeIDCreator1

    + +
    +
    + + + + +
    SubShapeIDCreator CompoundShape::CollideCompoundVsShapeVisitor::mSubShapeIDCreator1
    +
    + +
    +
    + +

    ◆ mSubShapeIDCreator2

    + +
    +
    + + + + +
    SubShapeIDCreator CompoundShape::CollideCompoundVsShapeVisitor::mSubShapeIDCreator2
    +
    + +
    +
    + +

    ◆ mTransform1

    + +
    +
    + + + + +
    Mat44 CompoundShape::CollideCompoundVsShapeVisitor::mTransform1
    +
    + +
    +
    + +

    ◆ mTransform2

    + +
    +
    + + + + +
    Mat44 CompoundShape::CollideCompoundVsShapeVisitor::mTransform2
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_compound_shape_1_1_collide_compound_vs_shape_visitor.js b/struct_compound_shape_1_1_collide_compound_vs_shape_visitor.js new file mode 100644 index 000000000..905c894d5 --- /dev/null +++ b/struct_compound_shape_1_1_collide_compound_vs_shape_visitor.js @@ -0,0 +1,19 @@ +var struct_compound_shape_1_1_collide_compound_vs_shape_visitor = +[ + [ "CollideCompoundVsShapeVisitor", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#aadc26efc419ef5f50163fcbb07d7d404", null ], + [ "ShouldAbort", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a135fbf1825c7dfbfc0556005b92bc5c1", null ], + [ "TestBounds", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#af43a759ff857d5f3ee1246425e146851", null ], + [ "VisitShape", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#af575d07fd175a53c7c9039c9b91a060a", null ], + [ "mBoundsOf2InSpaceOf1", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#ade932f2552ec9da071d7c588fd4bde34", null ], + [ "mCollector", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a0baf1b449eed819cb072a676d72398cd", null ], + [ "mCollideShapeSettings", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a350f11e56d89c4f9200163a131f3f444", null ], + [ "mScale1", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a7b3698ab299d4e1f2881337c09892cd5", null ], + [ "mScale2", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a80a7872b09611c352c0c02cf18a0fa67", null ], + [ "mShape2", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#af4eac4c381d05d1c7cfb1512a2f202f7", null ], + [ "mShapeFilter", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a63d01e5f27bd4944b066e6a33c3f4698", null ], + [ "mSubShapeBits", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a5b0a740a68fd32de56518ab00e2d5afa", null ], + [ "mSubShapeIDCreator1", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#afd4c304df5e719a22c21e479fbfffa32", null ], + [ "mSubShapeIDCreator2", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a7d54b29e53e0fb097be48c090307afa2", null ], + [ "mTransform1", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a10a2d8ac67f9978eeacf09dae77c894b", null ], + [ "mTransform2", "struct_compound_shape_1_1_collide_compound_vs_shape_visitor.html#a3e53fc715eeb683b4b753c43923f5839", null ] +]; \ No newline at end of file diff --git a/struct_compound_shape_1_1_collide_point_visitor-members.html b/struct_compound_shape_1_1_collide_point_visitor-members.html new file mode 100644 index 000000000..cb159d41d --- /dev/null +++ b/struct_compound_shape_1_1_collide_point_visitor-members.html @@ -0,0 +1,125 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    CompoundShape::CollidePointVisitor Member List
    +
    +
    + +

    This is the complete list of members for CompoundShape::CollidePointVisitor, including all inherited members.

    + + + + + + + + + + +
    CollidePointVisitor(Vec3Arg inPoint, const CompoundShape *inShape, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)CompoundShape::CollidePointVisitorinline
    mCollectorCompoundShape::CollidePointVisitor
    mPointCompoundShape::CollidePointVisitor
    mShapeFilterCompoundShape::CollidePointVisitor
    mSubShapeBitsCompoundShape::CollidePointVisitor
    mSubShapeIDCreatorCompoundShape::CollidePointVisitor
    ShouldAbort() constCompoundShape::CollidePointVisitorinline
    TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) constCompoundShape::CollidePointVisitorinline
    VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)CompoundShape::CollidePointVisitorinline
    +
    + + + + diff --git a/struct_compound_shape_1_1_collide_point_visitor.html b/struct_compound_shape_1_1_collide_point_visitor.html new file mode 100644 index 000000000..2487e7150 --- /dev/null +++ b/struct_compound_shape_1_1_collide_point_visitor.html @@ -0,0 +1,405 @@ + + + + + + + +Jolt Physics: CompoundShape::CollidePointVisitor Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CompoundShape::CollidePointVisitor Struct Reference
    +
    +
    + +

    #include <CompoundShapeVisitors.h>

    + + + + + + + + + + + + + +

    +Public Member Functions

    JPH_INLINE CollidePointVisitor (Vec3Arg inPoint, const CompoundShape *inShape, const SubShapeIDCreator &inSubShapeIDCreator, CollidePointCollector &ioCollector, const ShapeFilter &inShapeFilter)
     
    JPH_INLINE bool ShouldAbort () const
     Returns true when collision detection should abort because it's not possible to find a better hit.
     
    JPH_INLINE UVec4 TestBounds (Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
     Test if point overlaps with 4 boxes, returns true for the ones that do.
     
    JPH_INLINE void VisitShape (const SubShape &inSubShape, uint32 inSubShapeIndex)
     Test the point against a single subshape.
     
    + + + + + + + + + + + +

    +Public Attributes

    Vec3 mPoint
     
    SubShapeIDCreator mSubShapeIDCreator
     
    CollidePointCollectormCollector
     
    uint mSubShapeBits
     
    const ShapeFiltermShapeFilter
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ CollidePointVisitor()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE CompoundShape::CollidePointVisitor::CollidePointVisitor (Vec3Arg inPoint,
    const CompoundShapeinShape,
    const SubShapeIDCreatorinSubShapeIDCreator,
    CollidePointCollectorioCollector,
    const ShapeFilterinShapeFilter 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ ShouldAbort()

    + +
    +
    + + + + + +
    + + + + + + + +
    JPH_INLINE bool CompoundShape::CollidePointVisitor::ShouldAbort () const
    +
    +inline
    +
    + +

    Returns true when collision detection should abort because it's not possible to find a better hit.

    + +
    +
    + +

    ◆ TestBounds()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE UVec4 CompoundShape::CollidePointVisitor::TestBounds (Vec4Arg inBoundsMinX,
    Vec4Arg inBoundsMinY,
    Vec4Arg inBoundsMinZ,
    Vec4Arg inBoundsMaxX,
    Vec4Arg inBoundsMaxY,
    Vec4Arg inBoundsMaxZ 
    ) const
    +
    +inline
    +
    + +

    Test if point overlaps with 4 boxes, returns true for the ones that do.

    + +
    +
    + +

    ◆ VisitShape()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    JPH_INLINE void CompoundShape::CollidePointVisitor::VisitShape (const SubShapeinSubShape,
    uint32 inSubShapeIndex 
    )
    +
    +inline
    +
    + +

    Test the point against a single subshape.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mCollector

    + +
    +
    + + + + +
    CollidePointCollector& CompoundShape::CollidePointVisitor::mCollector
    +
    + +
    +
    + +

    ◆ mPoint

    + +
    +
    + + + + +
    Vec3 CompoundShape::CollidePointVisitor::mPoint
    +
    + +
    +
    + +

    ◆ mShapeFilter

    + +
    +
    + + + + +
    const ShapeFilter& CompoundShape::CollidePointVisitor::mShapeFilter
    +
    + +
    +
    + +

    ◆ mSubShapeBits

    + +
    +
    + + + + +
    uint CompoundShape::CollidePointVisitor::mSubShapeBits
    +
    + +
    +
    + +

    ◆ mSubShapeIDCreator

    + +
    +
    + + + + +
    SubShapeIDCreator CompoundShape::CollidePointVisitor::mSubShapeIDCreator
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_compound_shape_1_1_collide_point_visitor.js b/struct_compound_shape_1_1_collide_point_visitor.js new file mode 100644 index 000000000..c011080a7 --- /dev/null +++ b/struct_compound_shape_1_1_collide_point_visitor.js @@ -0,0 +1,12 @@ +var struct_compound_shape_1_1_collide_point_visitor = +[ + [ "CollidePointVisitor", "struct_compound_shape_1_1_collide_point_visitor.html#a832d09b2ee2731828915fb29183b5960", null ], + [ "ShouldAbort", "struct_compound_shape_1_1_collide_point_visitor.html#aab907c8ad14bf917323ed88160cd861d", null ], + [ "TestBounds", "struct_compound_shape_1_1_collide_point_visitor.html#a462fecb2d7a11225bc4b89015a4c6e9b", null ], + [ "VisitShape", "struct_compound_shape_1_1_collide_point_visitor.html#aeeb14c482931fed4f18e825ee8bba908", null ], + [ "mCollector", "struct_compound_shape_1_1_collide_point_visitor.html#ac192bb3d8ea53f93de9e6fb523b2949a", null ], + [ "mPoint", "struct_compound_shape_1_1_collide_point_visitor.html#a47156e21c9dd5a4cc626690185907836", null ], + [ "mShapeFilter", "struct_compound_shape_1_1_collide_point_visitor.html#aef8c2ccc7305949bb69db4cfcc56cf85", null ], + [ "mSubShapeBits", "struct_compound_shape_1_1_collide_point_visitor.html#adb322db658c73032656a070fad686949", null ], + [ "mSubShapeIDCreator", "struct_compound_shape_1_1_collide_point_visitor.html#a7f36227c8d0f4ad5e2cf940616f41670", null ] +]; \ No newline at end of file diff --git a/struct_compound_shape_1_1_collide_shape_vs_compound_visitor-members.html b/struct_compound_shape_1_1_collide_shape_vs_compound_visitor-members.html new file mode 100644 index 000000000..aba2443e3 --- /dev/null +++ b/struct_compound_shape_1_1_collide_shape_vs_compound_visitor-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    CompoundShape::CollideShapeVsCompoundVisitor Member List
    +
    +
    + +

    This is the complete list of members for CompoundShape::CollideShapeVsCompoundVisitor, including all inherited members.

    + + + + + + + + + + + + + + + + + +
    CollideShapeVsCompoundVisitor(const Shape *inShape1, const CompoundShape *inShape2, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector, const ShapeFilter &inShapeFilter)CompoundShape::CollideShapeVsCompoundVisitorinline
    mBoundsOf1InSpaceOf2CompoundShape::CollideShapeVsCompoundVisitor
    mCollectorCompoundShape::CollideShapeVsCompoundVisitor
    mCollideShapeSettingsCompoundShape::CollideShapeVsCompoundVisitor
    mScale1CompoundShape::CollideShapeVsCompoundVisitor
    mScale2CompoundShape::CollideShapeVsCompoundVisitor
    mShape1CompoundShape::CollideShapeVsCompoundVisitor
    mShapeFilterCompoundShape::CollideShapeVsCompoundVisitor
    mSubShapeBitsCompoundShape::CollideShapeVsCompoundVisitor
    mSubShapeIDCreator1CompoundShape::CollideShapeVsCompoundVisitor
    mSubShapeIDCreator2CompoundShape::CollideShapeVsCompoundVisitor
    mTransform1CompoundShape::CollideShapeVsCompoundVisitor
    mTransform2CompoundShape::CollideShapeVsCompoundVisitor
    ShouldAbort() constCompoundShape::CollideShapeVsCompoundVisitorinline
    TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) constCompoundShape::CollideShapeVsCompoundVisitorinline
    VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)CompoundShape::CollideShapeVsCompoundVisitorinline
    +
    + + + + diff --git a/struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html b/struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html new file mode 100644 index 000000000..b5b6939d4 --- /dev/null +++ b/struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html @@ -0,0 +1,553 @@ + + + + + + + +Jolt Physics: CompoundShape::CollideShapeVsCompoundVisitor Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CompoundShape::CollideShapeVsCompoundVisitor Struct Reference
    +
    +
    + +

    #include <CompoundShapeVisitors.h>

    + + + + + + + + + + + + + +

    +Public Member Functions

    JPH_INLINE CollideShapeVsCompoundVisitor (const Shape *inShape1, const CompoundShape *inShape2, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector, const ShapeFilter &inShapeFilter)
     
    JPH_INLINE bool ShouldAbort () const
     Returns true when collision detection should abort because it's not possible to find a better hit.
     
    JPH_INLINE UVec4 TestBounds (Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
     Tests the bounds of shape 1 vs 4 bounding boxes, returns true for the ones that intersect.
     
    JPH_INLINE void VisitShape (const SubShape &inSubShape, uint32 inSubShapeIndex)
     Test the shape against a single subshape.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    const CollideShapeSettingsmCollideShapeSettings
     
    CollideShapeCollectormCollector
     
    const ShapemShape1
     
    Vec3 mScale1
     
    Vec3 mScale2
     
    Mat44 mTransform1
     
    Mat44 mTransform2
     
    AABox mBoundsOf1InSpaceOf2
     
    SubShapeIDCreator mSubShapeIDCreator1
     
    SubShapeIDCreator mSubShapeIDCreator2
     
    uint mSubShapeBits
     
    const ShapeFiltermShapeFilter
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ CollideShapeVsCompoundVisitor()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE CompoundShape::CollideShapeVsCompoundVisitor::CollideShapeVsCompoundVisitor (const ShapeinShape1,
    const CompoundShapeinShape2,
    Vec3Arg inScale1,
    Vec3Arg inScale2,
    Mat44Arg inCenterOfMassTransform1,
    Mat44Arg inCenterOfMassTransform2,
    const SubShapeIDCreatorinSubShapeIDCreator1,
    const SubShapeIDCreatorinSubShapeIDCreator2,
    const CollideShapeSettingsinCollideShapeSettings,
    CollideShapeCollectorioCollector,
    const ShapeFilterinShapeFilter 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ ShouldAbort()

    + +
    +
    + + + + + +
    + + + + + + + +
    JPH_INLINE bool CompoundShape::CollideShapeVsCompoundVisitor::ShouldAbort () const
    +
    +inline
    +
    + +

    Returns true when collision detection should abort because it's not possible to find a better hit.

    + +
    +
    + +

    ◆ TestBounds()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE UVec4 CompoundShape::CollideShapeVsCompoundVisitor::TestBounds (Vec4Arg inBoundsMinX,
    Vec4Arg inBoundsMinY,
    Vec4Arg inBoundsMinZ,
    Vec4Arg inBoundsMaxX,
    Vec4Arg inBoundsMaxY,
    Vec4Arg inBoundsMaxZ 
    ) const
    +
    +inline
    +
    + +

    Tests the bounds of shape 1 vs 4 bounding boxes, returns true for the ones that intersect.

    + +
    +
    + +

    ◆ VisitShape()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    JPH_INLINE void CompoundShape::CollideShapeVsCompoundVisitor::VisitShape (const SubShapeinSubShape,
    uint32 inSubShapeIndex 
    )
    +
    +inline
    +
    + +

    Test the shape against a single subshape.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mBoundsOf1InSpaceOf2

    + +
    +
    + + + + +
    AABox CompoundShape::CollideShapeVsCompoundVisitor::mBoundsOf1InSpaceOf2
    +
    + +
    +
    + +

    ◆ mCollector

    + +
    +
    + + + + +
    CollideShapeCollector& CompoundShape::CollideShapeVsCompoundVisitor::mCollector
    +
    + +
    +
    + +

    ◆ mCollideShapeSettings

    + +
    +
    + + + + +
    const CollideShapeSettings& CompoundShape::CollideShapeVsCompoundVisitor::mCollideShapeSettings
    +
    + +
    +
    + +

    ◆ mScale1

    + +
    +
    + + + + +
    Vec3 CompoundShape::CollideShapeVsCompoundVisitor::mScale1
    +
    + +
    +
    + +

    ◆ mScale2

    + +
    +
    + + + + +
    Vec3 CompoundShape::CollideShapeVsCompoundVisitor::mScale2
    +
    + +
    +
    + +

    ◆ mShape1

    + +
    +
    + + + + +
    const Shape* CompoundShape::CollideShapeVsCompoundVisitor::mShape1
    +
    + +
    +
    + +

    ◆ mShapeFilter

    + +
    +
    + + + + +
    const ShapeFilter& CompoundShape::CollideShapeVsCompoundVisitor::mShapeFilter
    +
    + +
    +
    + +

    ◆ mSubShapeBits

    + +
    +
    + + + + +
    uint CompoundShape::CollideShapeVsCompoundVisitor::mSubShapeBits
    +
    + +
    +
    + +

    ◆ mSubShapeIDCreator1

    + +
    +
    + + + + +
    SubShapeIDCreator CompoundShape::CollideShapeVsCompoundVisitor::mSubShapeIDCreator1
    +
    + +
    +
    + +

    ◆ mSubShapeIDCreator2

    + +
    +
    + + + + +
    SubShapeIDCreator CompoundShape::CollideShapeVsCompoundVisitor::mSubShapeIDCreator2
    +
    + +
    +
    + +

    ◆ mTransform1

    + +
    +
    + + + + +
    Mat44 CompoundShape::CollideShapeVsCompoundVisitor::mTransform1
    +
    + +
    +
    + +

    ◆ mTransform2

    + +
    +
    + + + + +
    Mat44 CompoundShape::CollideShapeVsCompoundVisitor::mTransform2
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_compound_shape_1_1_collide_shape_vs_compound_visitor.js b/struct_compound_shape_1_1_collide_shape_vs_compound_visitor.js new file mode 100644 index 000000000..df88af937 --- /dev/null +++ b/struct_compound_shape_1_1_collide_shape_vs_compound_visitor.js @@ -0,0 +1,19 @@ +var struct_compound_shape_1_1_collide_shape_vs_compound_visitor = +[ + [ "CollideShapeVsCompoundVisitor", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#af99172bf5598b022f42e3b071d7dd7e9", null ], + [ "ShouldAbort", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a017c33d9b6a4dee82d757dc499999c01", null ], + [ "TestBounds", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a7ee379618c3c642c3b84b1bdb6be6bb1", null ], + [ "VisitShape", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#ac29444555250eaf5cafdf944efadde2f", null ], + [ "mBoundsOf1InSpaceOf2", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a6e2e736800b3999118fe4ba13a500f26", null ], + [ "mCollector", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a3592c0f8c400489c4545be9f65db26c5", null ], + [ "mCollideShapeSettings", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a20a3312bd10ca3d58c70f963a279f76b", null ], + [ "mScale1", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a78626c6f58d5682180522b6304e9aa5e", null ], + [ "mScale2", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a7c826e2194c6d76f3022473123346869", null ], + [ "mShape1", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a0692931a0b827d909c886b3b9cd1c94e", null ], + [ "mShapeFilter", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a1078f83004c82a93a7674180fe0e0667", null ], + [ "mSubShapeBits", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a05854f0c5dc41a5e299b988edb4936d8", null ], + [ "mSubShapeIDCreator1", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a9746a70a1987e1a6bf752cd959559335", null ], + [ "mSubShapeIDCreator2", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a1c496d4fffaa54a2bb1119811ead6906", null ], + [ "mTransform1", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#a5aaf192557a3ec7462f9615d2982f21e", null ], + [ "mTransform2", "struct_compound_shape_1_1_collide_shape_vs_compound_visitor.html#acecad887d6ab8d8d243679afcb0146eb", null ] +]; \ No newline at end of file diff --git a/struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor-members.html b/struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor-members.html new file mode 100644 index 000000000..f85ae3c1d --- /dev/null +++ b/struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    CompoundShape::GetIntersectingSubShapesVisitor< BoxType > Member List
    +
    +
    + +

    This is the complete list of members for CompoundShape::GetIntersectingSubShapesVisitor< BoxType >, including all inherited members.

    + + + + + + +
    GetIntersectingSubShapesVisitor(const BoxType &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices)CompoundShape::GetIntersectingSubShapesVisitor< BoxType >inline
    GetNumResults() constCompoundShape::GetIntersectingSubShapesVisitor< BoxType >inline
    ShouldAbort() constCompoundShape::GetIntersectingSubShapesVisitor< BoxType >inline
    TestBounds(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) constCompoundShape::GetIntersectingSubShapesVisitor< BoxType >inline
    VisitShape(const SubShape &inSubShape, uint32 inSubShapeIndex)CompoundShape::GetIntersectingSubShapesVisitor< BoxType >inline
    +
    + + + + diff --git a/struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html b/struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html new file mode 100644 index 000000000..8780cb8a3 --- /dev/null +++ b/struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html @@ -0,0 +1,349 @@ + + + + + + + +Jolt Physics: CompoundShape::GetIntersectingSubShapesVisitor< BoxType > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CompoundShape::GetIntersectingSubShapesVisitor< BoxType > Struct Template Reference
    +
    +
    + +

    #include <CompoundShapeVisitors.h>

    + + + + + + + + + + + + + + + + +

    +Public Member Functions

    JPH_INLINE GetIntersectingSubShapesVisitor (const BoxType &inBox, uint *outSubShapeIndices, int inMaxSubShapeIndices)
     
    JPH_INLINE bool ShouldAbort () const
     Returns true when collision detection should abort because the buffer is full.
     
    JPH_INLINE UVec4 TestBounds (Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ) const
     Tests the box vs 4 bounding boxes, returns true for the ones that intersect.
     
    JPH_INLINE void VisitShape (const SubShape &inSubShape, uint32 inSubShapeIndex)
     Records a hit.
     
    JPH_INLINE int GetNumResults () const
     Get the number of indices that were found.
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ GetIntersectingSubShapesVisitor()

    + +
    +
    +
    +template<class BoxType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE CompoundShape::GetIntersectingSubShapesVisitor< BoxType >::GetIntersectingSubShapesVisitor (const BoxType & inBox,
    uintoutSubShapeIndices,
    int inMaxSubShapeIndices 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetNumResults()

    + +
    +
    +
    +template<class BoxType >
    + + + + + +
    + + + + + + + +
    JPH_INLINE int CompoundShape::GetIntersectingSubShapesVisitor< BoxType >::GetNumResults () const
    +
    +inline
    +
    + +

    Get the number of indices that were found.

    + +
    +
    + +

    ◆ ShouldAbort()

    + +
    +
    +
    +template<class BoxType >
    + + + + + +
    + + + + + + + +
    JPH_INLINE bool CompoundShape::GetIntersectingSubShapesVisitor< BoxType >::ShouldAbort () const
    +
    +inline
    +
    + +

    Returns true when collision detection should abort because the buffer is full.

    + +
    +
    + +

    ◆ TestBounds()

    + +
    +
    +
    +template<class BoxType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE UVec4 CompoundShape::GetIntersectingSubShapesVisitor< BoxType >::TestBounds (Vec4Arg inBoundsMinX,
    Vec4Arg inBoundsMinY,
    Vec4Arg inBoundsMinZ,
    Vec4Arg inBoundsMaxX,
    Vec4Arg inBoundsMaxY,
    Vec4Arg inBoundsMaxZ 
    ) const
    +
    +inline
    +
    + +

    Tests the box vs 4 bounding boxes, returns true for the ones that intersect.

    + +
    +
    + +

    ◆ VisitShape()

    + +
    +
    +
    +template<class BoxType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    JPH_INLINE void CompoundShape::GetIntersectingSubShapesVisitor< BoxType >::VisitShape (const SubShapeinSubShape,
    uint32 inSubShapeIndex 
    )
    +
    +inline
    +
    + +

    Records a hit.

    + +
    +
    +
    The documentation for this struct was generated from the following files: +
    +
    + + + + diff --git a/struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.js b/struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.js new file mode 100644 index 000000000..2262b97f9 --- /dev/null +++ b/struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.js @@ -0,0 +1,8 @@ +var struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor = +[ + [ "GetIntersectingSubShapesVisitor", "struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a0f676ecd2951cd9c1abd7d3ebfa24561", null ], + [ "GetNumResults", "struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a61d8a2add21106dc7b21b46cab11bc93", null ], + [ "ShouldAbort", "struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a0747547a9895a7dc598391e602ae67e6", null ], + [ "TestBounds", "struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a0271b87f4c7610b317b82a77d7d255c6", null ], + [ "VisitShape", "struct_compound_shape_1_1_get_intersecting_sub_shapes_visitor.html#a611d2a998517551ba3d1ad3355033135", null ] +]; \ No newline at end of file diff --git a/struct_compound_shape_1_1_sub_shape-members.html b/struct_compound_shape_1_1_sub_shape-members.html new file mode 100644 index 000000000..acdc563ed --- /dev/null +++ b/struct_compound_shape_1_1_sub_shape-members.html @@ -0,0 +1,130 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    CompoundShape::SubShape Member List
    +
    +
    + +

    This is the complete list of members for CompoundShape::SubShape, including all inherited members.

    + + + + + + + + + + + + + + + +
    FromSettings(const CompoundShapeSettings::SubShapeSettings &inSettings, ShapeResult &outResult)CompoundShape::SubShapeinline
    GetLocalTransformNoScale(Vec3Arg inScale) constCompoundShape::SubShapeinline
    GetPositionCOM() constCompoundShape::SubShapeinline
    GetRotation() constCompoundShape::SubShapeinline
    IsValidScale(Vec3Arg inScale) constCompoundShape::SubShapeinline
    mIsRotationIdentityCompoundShape::SubShape
    mPositionCOMCompoundShape::SubShape
    mRotationCompoundShape::SubShape
    mShapeCompoundShape::SubShape
    mUserDataCompoundShape::SubShape
    SetPositionCOM(Vec3Arg inPositionCOM)CompoundShape::SubShapeinline
    SetRotation(QuatArg inRotation)CompoundShape::SubShapeinline
    SetTransform(Vec3Arg inPosition, QuatArg inRotation, Vec3Arg inCenterOfMass)CompoundShape::SubShapeinline
    TransformScale(Vec3Arg inScale) constCompoundShape::SubShapeinline
    +
    + + + + diff --git a/struct_compound_shape_1_1_sub_shape.html b/struct_compound_shape_1_1_sub_shape.html new file mode 100644 index 000000000..72bc4bb2f --- /dev/null +++ b/struct_compound_shape_1_1_sub_shape.html @@ -0,0 +1,540 @@ + + + + + + + +Jolt Physics: CompoundShape::SubShape Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CompoundShape::SubShape Struct Reference
    +
    +
    + +

    #include <CompoundShape.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    bool FromSettings (const CompoundShapeSettings::SubShapeSettings &inSettings, ShapeResult &outResult)
     
    JPH_INLINE void SetTransform (Vec3Arg inPosition, QuatArg inRotation, Vec3Arg inCenterOfMass)
     
    JPH_INLINE Mat44 GetLocalTransformNoScale (Vec3Arg inScale) const
     
    bool IsValidScale (Vec3Arg inScale) const
     Test if inScale is valid for this sub shape.
     
    Vec3 TransformScale (Vec3Arg inScale) const
     Transform the scale to the local space of the child shape.
     
    JPH_INLINE void SetPositionCOM (Vec3Arg inPositionCOM)
     Compress the center of mass position.
     
    JPH_INLINE Vec3 GetPositionCOM () const
     Uncompress the center of mass position.
     
    JPH_INLINE void SetRotation (QuatArg inRotation)
     Compress the rotation.
     
    JPH_INLINE Quat GetRotation () const
     Uncompress the rotation.
     
    + + + + + + + + + + + + + + + +

    +Public Attributes

    RefConst< ShapemShape
     
    Float3 mPositionCOM
     Note: Position of center of mass of sub shape!
     
    Float3 mRotation
     Note: X, Y, Z of rotation quaternion - note we read 4 bytes beyond this so make sure there's something there.
     
    uint32 mUserData
     User data value (put here because it falls in padding bytes)
     
    bool mIsRotationIdentity
     If mRotation is close to identity (put here because it falls in padding bytes)
     
    +

    Member Function Documentation

    + +

    ◆ FromSettings()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool CompoundShape::SubShape::FromSettings (const CompoundShapeSettings::SubShapeSettingsinSettings,
    ShapeResultoutResult 
    )
    +
    +inline
    +
    +

    Initialize sub shape from sub shape settings

    Parameters
    + + + +
    inSettingsSettings object
    outResultResult object, only used in case of error
    +
    +
    +
    Returns
    True on success, false on failure
    + +
    +
    + +

    ◆ GetLocalTransformNoScale()

    + +
    +
    + + + + + +
    + + + + + + + + +
    JPH_INLINE Mat44 CompoundShape::SubShape::GetLocalTransformNoScale (Vec3Arg inScale) const
    +
    +inline
    +
    +

    Get the local transform for this shape given the scale of the child shape The total transform of the child shape will be GetLocalTransformNoScale(inScale) * Mat44::sScaling(TransformScale(inScale))

    Parameters
    + + +
    inScaleThe scale of the child shape (in local space of this shape)
    +
    +
    + +
    +
    + +

    ◆ GetPositionCOM()

    + +
    +
    + + + + + +
    + + + + + + + +
    JPH_INLINE Vec3 CompoundShape::SubShape::GetPositionCOM () const
    +
    +inline
    +
    + +

    Uncompress the center of mass position.

    + +
    +
    + +

    ◆ GetRotation()

    + +
    +
    + + + + + +
    + + + + + + + +
    JPH_INLINE Quat CompoundShape::SubShape::GetRotation () const
    +
    +inline
    +
    + +

    Uncompress the rotation.

    + +
    +
    + +

    ◆ IsValidScale()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool CompoundShape::SubShape::IsValidScale (Vec3Arg inScale) const
    +
    +inline
    +
    + +

    Test if inScale is valid for this sub shape.

    + +
    +
    + +

    ◆ SetPositionCOM()

    + +
    +
    + + + + + +
    + + + + + + + + +
    JPH_INLINE void CompoundShape::SubShape::SetPositionCOM (Vec3Arg inPositionCOM)
    +
    +inline
    +
    + +

    Compress the center of mass position.

    + +
    +
    + +

    ◆ SetRotation()

    + +
    +
    + + + + + +
    + + + + + + + + +
    JPH_INLINE void CompoundShape::SubShape::SetRotation (QuatArg inRotation)
    +
    +inline
    +
    + +

    Compress the rotation.

    + +
    +
    + +

    ◆ SetTransform()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE void CompoundShape::SubShape::SetTransform (Vec3Arg inPosition,
    QuatArg inRotation,
    Vec3Arg inCenterOfMass 
    )
    +
    +inline
    +
    +

    Update the transform of this sub shape

    Parameters
    + + + + +
    inPositionNew position
    inRotationNew orientation
    inCenterOfMassThe center of mass of the compound shape
    +
    +
    + +
    +
    + +

    ◆ TransformScale()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Vec3 CompoundShape::SubShape::TransformScale (Vec3Arg inScale) const
    +
    +inline
    +
    + +

    Transform the scale to the local space of the child shape.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mIsRotationIdentity

    + +
    +
    + + + + +
    bool CompoundShape::SubShape::mIsRotationIdentity
    +
    + +

    If mRotation is close to identity (put here because it falls in padding bytes)

    + +
    +
    + +

    ◆ mPositionCOM

    + +
    +
    + + + + +
    Float3 CompoundShape::SubShape::mPositionCOM
    +
    + +

    Note: Position of center of mass of sub shape!

    + +
    +
    + +

    ◆ mRotation

    + +
    +
    + + + + +
    Float3 CompoundShape::SubShape::mRotation
    +
    + +

    Note: X, Y, Z of rotation quaternion - note we read 4 bytes beyond this so make sure there's something there.

    + +
    +
    + +

    ◆ mShape

    + +
    +
    + + + + +
    RefConst<Shape> CompoundShape::SubShape::mShape
    +
    + +
    +
    + +

    ◆ mUserData

    + +
    +
    + + + + +
    uint32 CompoundShape::SubShape::mUserData
    +
    + +

    User data value (put here because it falls in padding bytes)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_compound_shape_1_1_sub_shape.js b/struct_compound_shape_1_1_sub_shape.js new file mode 100644 index 000000000..23373b7d1 --- /dev/null +++ b/struct_compound_shape_1_1_sub_shape.js @@ -0,0 +1,17 @@ +var struct_compound_shape_1_1_sub_shape = +[ + [ "FromSettings", "struct_compound_shape_1_1_sub_shape.html#a2ea825bfb79c5d059768e60d7b8997d2", null ], + [ "GetLocalTransformNoScale", "struct_compound_shape_1_1_sub_shape.html#a18ba22cc1d5ad095bce61a7fcfcbcc25", null ], + [ "GetPositionCOM", "struct_compound_shape_1_1_sub_shape.html#ac3fea8705474011f4f5681c18fcdaaa2", null ], + [ "GetRotation", "struct_compound_shape_1_1_sub_shape.html#a13d700b0e7064e9ecdf99afdc0262eae", null ], + [ "IsValidScale", "struct_compound_shape_1_1_sub_shape.html#a33448959f96311ef875a912b8a104dcf", null ], + [ "SetPositionCOM", "struct_compound_shape_1_1_sub_shape.html#ad02db108fee2f4caeb4d2709a4f14671", null ], + [ "SetRotation", "struct_compound_shape_1_1_sub_shape.html#aeb79df4468aca72a42c1c8dd68f564c1", null ], + [ "SetTransform", "struct_compound_shape_1_1_sub_shape.html#a3805d809932e3f0d94a3b87e297a47bc", null ], + [ "TransformScale", "struct_compound_shape_1_1_sub_shape.html#a92de7326e077355d680f2d6ce860d7fc", null ], + [ "mIsRotationIdentity", "struct_compound_shape_1_1_sub_shape.html#a25c797febba76594f53b5303867fe0fb", null ], + [ "mPositionCOM", "struct_compound_shape_1_1_sub_shape.html#a16bb59f7313e95ee322d576f5d2d85a7", null ], + [ "mRotation", "struct_compound_shape_1_1_sub_shape.html#a42a1dc09f0d3bd15367f87d26452bd44", null ], + [ "mShape", "struct_compound_shape_1_1_sub_shape.html#af0e288762fbe4fcdec676ce1836d5375", null ], + [ "mUserData", "struct_compound_shape_1_1_sub_shape.html#a8528ca1f6ee3908b418283517762bd57", null ] +]; \ No newline at end of file diff --git a/struct_compound_shape_settings_1_1_sub_shape_settings-members.html b/struct_compound_shape_settings_1_1_sub_shape_settings-members.html new file mode 100644 index 000000000..57c8317de --- /dev/null +++ b/struct_compound_shape_settings_1_1_sub_shape_settings-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    CompoundShapeSettings::SubShapeSettings Member List
    +
    + +
    + + + + diff --git a/struct_compound_shape_settings_1_1_sub_shape_settings.html b/struct_compound_shape_settings_1_1_sub_shape_settings.html new file mode 100644 index 000000000..d0351e4f8 --- /dev/null +++ b/struct_compound_shape_settings_1_1_sub_shape_settings.html @@ -0,0 +1,222 @@ + + + + + + + +Jolt Physics: CompoundShapeSettings::SubShapeSettings Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    CompoundShapeSettings::SubShapeSettings Struct Reference
    +
    +
    + +

    #include <CompoundShape.h>

    + + + + + + + + + + + + + + + + + +

    +Public Attributes

    RefConst< ShapeSettingsmShape
     Sub shape (either this or mShapePtr needs to be filled up)
     
    RefConst< ShapemShapePtr
     Sub shape (either this or mShape needs to be filled up)
     
    Vec3 mPosition
     Position of the sub shape.
     
    Quat mRotation
     Rotation of the sub shape.
     
    uint32 mUserData = 0
     User data value (can be used by the application for any purpose)
     
    +

    Member Data Documentation

    + +

    ◆ mPosition

    + +
    +
    + + + + +
    Vec3 CompoundShapeSettings::SubShapeSettings::mPosition
    +
    + +

    Position of the sub shape.

    + +
    +
    + +

    ◆ mRotation

    + +
    +
    + + + + +
    Quat CompoundShapeSettings::SubShapeSettings::mRotation
    +
    + +

    Rotation of the sub shape.

    + +
    +
    + +

    ◆ mShape

    + +
    +
    + + + + +
    RefConst<ShapeSettings> CompoundShapeSettings::SubShapeSettings::mShape
    +
    + +

    Sub shape (either this or mShapePtr needs to be filled up)

    + +
    +
    + +

    ◆ mShapePtr

    + +
    +
    + + + + +
    RefConst<Shape> CompoundShapeSettings::SubShapeSettings::mShapePtr
    +
    + +

    Sub shape (either this or mShape needs to be filled up)

    + +
    +
    + +

    ◆ mUserData

    + +
    +
    + + + + +
    uint32 CompoundShapeSettings::SubShapeSettings::mUserData = 0
    +
    + +

    User data value (can be used by the application for any purpose)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_compound_shape_settings_1_1_sub_shape_settings.js b/struct_compound_shape_settings_1_1_sub_shape_settings.js new file mode 100644 index 000000000..36e10c6d6 --- /dev/null +++ b/struct_compound_shape_settings_1_1_sub_shape_settings.js @@ -0,0 +1,8 @@ +var struct_compound_shape_settings_1_1_sub_shape_settings = +[ + [ "mPosition", "struct_compound_shape_settings_1_1_sub_shape_settings.html#aaf84c1bfaed3898a81e184c11d05988d", null ], + [ "mRotation", "struct_compound_shape_settings_1_1_sub_shape_settings.html#a865bfef885778f2221f8a4dccf0e941e", null ], + [ "mShape", "struct_compound_shape_settings_1_1_sub_shape_settings.html#aa79a4e31ee31e2d2760a15e01de76a71", null ], + [ "mShapePtr", "struct_compound_shape_settings_1_1_sub_shape_settings.html#ae1a012a16565000879fbe836e22c5a07", null ], + [ "mUserData", "struct_compound_shape_settings_1_1_sub_shape_settings.html#a05791518abbef530de3bc631efa4d8dc", null ] +]; \ No newline at end of file diff --git a/struct_debug_renderer_recorder_1_1_frame-members.html b/struct_debug_renderer_recorder_1_1_frame-members.html new file mode 100644 index 000000000..4556f148e --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_frame-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    DebugRendererRecorder::Frame Member List
    +
    + +
    + + + + diff --git a/struct_debug_renderer_recorder_1_1_frame.html b/struct_debug_renderer_recorder_1_1_frame.html new file mode 100644 index 000000000..00d7296a1 --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_frame.html @@ -0,0 +1,196 @@ + + + + + + + +Jolt Physics: DebugRendererRecorder::Frame Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    DebugRendererRecorder::Frame Struct Reference
    +
    +
    + +

    All information for a single frame. + More...

    + +

    #include <DebugRendererRecorder.h>

    + + + + + + + + + + +

    +Public Attributes

    Array< LineBlobmLines
     
    Array< TriangleBlobmTriangles
     
    Array< TextBlobmTexts
     
    Array< GeometryBlobmGeometries
     
    +

    Detailed Description

    +

    All information for a single frame.

    +

    Member Data Documentation

    + +

    ◆ mGeometries

    + +
    +
    + + + + +
    Array<GeometryBlob> DebugRendererRecorder::Frame::mGeometries
    +
    + +
    +
    + +

    ◆ mLines

    + +
    +
    + + + + +
    Array<LineBlob> DebugRendererRecorder::Frame::mLines
    +
    + +
    +
    + +

    ◆ mTexts

    + +
    +
    + + + + +
    Array<TextBlob> DebugRendererRecorder::Frame::mTexts
    +
    + +
    +
    + +

    ◆ mTriangles

    + +
    +
    + + + + +
    Array<TriangleBlob> DebugRendererRecorder::Frame::mTriangles
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_debug_renderer_recorder_1_1_frame.js b/struct_debug_renderer_recorder_1_1_frame.js new file mode 100644 index 000000000..33d4f396a --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_frame.js @@ -0,0 +1,7 @@ +var struct_debug_renderer_recorder_1_1_frame = +[ + [ "mGeometries", "struct_debug_renderer_recorder_1_1_frame.html#a82fd5de8dc097519fa4b70ca850e37af", null ], + [ "mLines", "struct_debug_renderer_recorder_1_1_frame.html#a0fde95e5dfd6877e0f6b56cba94dd58b", null ], + [ "mTexts", "struct_debug_renderer_recorder_1_1_frame.html#a558929bf365bb2a6ca152fc58426f0c9", null ], + [ "mTriangles", "struct_debug_renderer_recorder_1_1_frame.html#a87c788213b449661626611c59b917560", null ] +]; \ No newline at end of file diff --git a/struct_debug_renderer_recorder_1_1_geometry_blob-members.html b/struct_debug_renderer_recorder_1_1_geometry_blob-members.html new file mode 100644 index 000000000..235324779 --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_geometry_blob-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    DebugRendererRecorder::GeometryBlob Member List
    +
    + +
    + + + + diff --git a/struct_debug_renderer_recorder_1_1_geometry_blob.html b/struct_debug_renderer_recorder_1_1_geometry_blob.html new file mode 100644 index 000000000..c72de9d74 --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_geometry_blob.html @@ -0,0 +1,228 @@ + + + + + + + +Jolt Physics: DebugRendererRecorder::GeometryBlob Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    DebugRendererRecorder::GeometryBlob Struct Reference
    +
    +
    + +

    Holds a single geometry draw call. + More...

    + +

    #include <DebugRendererRecorder.h>

    + + + + + + + + + + + + + + +

    +Public Attributes

    RMat44 mModelMatrix
     
    Color mModelColor
     
    uint32 mGeometryID
     
    ECullMode mCullMode
     
    ECastShadow mCastShadow
     
    EDrawMode mDrawMode
     
    +

    Detailed Description

    +

    Holds a single geometry draw call.

    +

    Member Data Documentation

    + +

    ◆ mCastShadow

    + +
    +
    + + + + +
    ECastShadow DebugRendererRecorder::GeometryBlob::mCastShadow
    +
    + +
    +
    + +

    ◆ mCullMode

    + +
    +
    + + + + +
    ECullMode DebugRendererRecorder::GeometryBlob::mCullMode
    +
    + +
    +
    + +

    ◆ mDrawMode

    + +
    +
    + + + + +
    EDrawMode DebugRendererRecorder::GeometryBlob::mDrawMode
    +
    + +
    +
    + +

    ◆ mGeometryID

    + +
    +
    + + + + +
    uint32 DebugRendererRecorder::GeometryBlob::mGeometryID
    +
    + +
    +
    + +

    ◆ mModelColor

    + +
    +
    + + + + +
    Color DebugRendererRecorder::GeometryBlob::mModelColor
    +
    + +
    +
    + +

    ◆ mModelMatrix

    + +
    +
    + + + + +
    RMat44 DebugRendererRecorder::GeometryBlob::mModelMatrix
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_debug_renderer_recorder_1_1_geometry_blob.js b/struct_debug_renderer_recorder_1_1_geometry_blob.js new file mode 100644 index 000000000..43d7b5864 --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_geometry_blob.js @@ -0,0 +1,9 @@ +var struct_debug_renderer_recorder_1_1_geometry_blob = +[ + [ "mCastShadow", "struct_debug_renderer_recorder_1_1_geometry_blob.html#a806c5e30a1c544659e24664d62b32516", null ], + [ "mCullMode", "struct_debug_renderer_recorder_1_1_geometry_blob.html#a7e4f7ad0aa55d37149b5c53636282569", null ], + [ "mDrawMode", "struct_debug_renderer_recorder_1_1_geometry_blob.html#a1ca5b00a5c93d6b65a2fc76b6576133e", null ], + [ "mGeometryID", "struct_debug_renderer_recorder_1_1_geometry_blob.html#a3f71849ede55ddf41f62c291d2f0e720", null ], + [ "mModelColor", "struct_debug_renderer_recorder_1_1_geometry_blob.html#ab579338ada87514ef770f127b68ac54f", null ], + [ "mModelMatrix", "struct_debug_renderer_recorder_1_1_geometry_blob.html#afed8fc1371a12e786f36fa878d76d463", null ] +]; \ No newline at end of file diff --git a/struct_debug_renderer_recorder_1_1_line_blob-members.html b/struct_debug_renderer_recorder_1_1_line_blob-members.html new file mode 100644 index 000000000..c36f6b9a2 --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_line_blob-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    DebugRendererRecorder::LineBlob Member List
    +
    + +
    + + + + diff --git a/struct_debug_renderer_recorder_1_1_line_blob.html b/struct_debug_renderer_recorder_1_1_line_blob.html new file mode 100644 index 000000000..128c45485 --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_line_blob.html @@ -0,0 +1,180 @@ + + + + + + + +Jolt Physics: DebugRendererRecorder::LineBlob Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    DebugRendererRecorder::LineBlob Struct Reference
    +
    +
    + +

    Holds a single line segment. + More...

    + +

    #include <DebugRendererRecorder.h>

    + + + + + + + + +

    +Public Attributes

    RVec3 mFrom
     
    RVec3 mTo
     
    Color mColor
     
    +

    Detailed Description

    +

    Holds a single line segment.

    +

    Member Data Documentation

    + +

    ◆ mColor

    + +
    +
    + + + + +
    Color DebugRendererRecorder::LineBlob::mColor
    +
    + +
    +
    + +

    ◆ mFrom

    + +
    +
    + + + + +
    RVec3 DebugRendererRecorder::LineBlob::mFrom
    +
    + +
    +
    + +

    ◆ mTo

    + +
    +
    + + + + +
    RVec3 DebugRendererRecorder::LineBlob::mTo
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_debug_renderer_recorder_1_1_line_blob.js b/struct_debug_renderer_recorder_1_1_line_blob.js new file mode 100644 index 000000000..c97fcc819 --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_line_blob.js @@ -0,0 +1,6 @@ +var struct_debug_renderer_recorder_1_1_line_blob = +[ + [ "mColor", "struct_debug_renderer_recorder_1_1_line_blob.html#a8989fefbef3d5563bf87be98e29eca7e", null ], + [ "mFrom", "struct_debug_renderer_recorder_1_1_line_blob.html#a343f8c5de1b54cea546e3e4c1c85f657", null ], + [ "mTo", "struct_debug_renderer_recorder_1_1_line_blob.html#a1f5c643be8a76700f8196487f3387bbb", null ] +]; \ No newline at end of file diff --git a/struct_debug_renderer_recorder_1_1_text_blob-members.html b/struct_debug_renderer_recorder_1_1_text_blob-members.html new file mode 100644 index 000000000..0ef3d2329 --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_text_blob-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    DebugRendererRecorder::TextBlob Member List
    +
    +
    + +

    This is the complete list of members for DebugRendererRecorder::TextBlob, including all inherited members.

    + + + + + + + +
    mColorDebugRendererRecorder::TextBlob
    mHeightDebugRendererRecorder::TextBlob
    mPositionDebugRendererRecorder::TextBlob
    mStringDebugRendererRecorder::TextBlob
    TextBlob()=defaultDebugRendererRecorder::TextBlob
    TextBlob(RVec3Arg inPosition, const string_view &inString, ColorArg inColor, float inHeight)DebugRendererRecorder::TextBlobinline
    +
    + + + + diff --git a/struct_debug_renderer_recorder_1_1_text_blob.html b/struct_debug_renderer_recorder_1_1_text_blob.html new file mode 100644 index 000000000..0a6e40fef --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_text_blob.html @@ -0,0 +1,278 @@ + + + + + + + +Jolt Physics: DebugRendererRecorder::TextBlob Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    DebugRendererRecorder::TextBlob Struct Reference
    +
    +
    + +

    Holds a single text entry. + More...

    + +

    #include <DebugRendererRecorder.h>

    + + + + + + +

    +Public Member Functions

     TextBlob ()=default
     
     TextBlob (RVec3Arg inPosition, const string_view &inString, ColorArg inColor, float inHeight)
     
    + + + + + + + + + +

    +Public Attributes

    RVec3 mPosition
     
    String mString
     
    Color mColor
     
    float mHeight
     
    +

    Detailed Description

    +

    Holds a single text entry.

    +

    Constructor & Destructor Documentation

    + +

    ◆ TextBlob() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    DebugRendererRecorder::TextBlob::TextBlob ()
    +
    +default
    +
    + +
    +
    + +

    ◆ TextBlob() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    DebugRendererRecorder::TextBlob::TextBlob (RVec3Arg inPosition,
    const string_view & inString,
    ColorArg inColor,
    float inHeight 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mColor

    + +
    +
    + + + + +
    Color DebugRendererRecorder::TextBlob::mColor
    +
    + +
    +
    + +

    ◆ mHeight

    + +
    +
    + + + + +
    float DebugRendererRecorder::TextBlob::mHeight
    +
    + +
    +
    + +

    ◆ mPosition

    + +
    +
    + + + + +
    RVec3 DebugRendererRecorder::TextBlob::mPosition
    +
    + +
    +
    + +

    ◆ mString

    + +
    +
    + + + + +
    String DebugRendererRecorder::TextBlob::mString
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_debug_renderer_recorder_1_1_text_blob.js b/struct_debug_renderer_recorder_1_1_text_blob.js new file mode 100644 index 000000000..f402e633a --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_text_blob.js @@ -0,0 +1,9 @@ +var struct_debug_renderer_recorder_1_1_text_blob = +[ + [ "TextBlob", "struct_debug_renderer_recorder_1_1_text_blob.html#a651d2fd99b808d04a93e0cda2894d244", null ], + [ "TextBlob", "struct_debug_renderer_recorder_1_1_text_blob.html#ab4f54cc8990295747f0ea8953345a64a", null ], + [ "mColor", "struct_debug_renderer_recorder_1_1_text_blob.html#ad6271bb0149760a239bdf01038714243", null ], + [ "mHeight", "struct_debug_renderer_recorder_1_1_text_blob.html#aabc4e3cc9c5a27ee8b151cbea90e20e3", null ], + [ "mPosition", "struct_debug_renderer_recorder_1_1_text_blob.html#ad7e5b3d003443e4c28617ef14294dac6", null ], + [ "mString", "struct_debug_renderer_recorder_1_1_text_blob.html#a7f42273b0a4ed68bf7a3ae6322bc925e", null ] +]; \ No newline at end of file diff --git a/struct_debug_renderer_recorder_1_1_triangle_blob-members.html b/struct_debug_renderer_recorder_1_1_triangle_blob-members.html new file mode 100644 index 000000000..6d74ec96a --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_triangle_blob-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    DebugRendererRecorder::TriangleBlob Member List
    +
    + +
    + + + + diff --git a/struct_debug_renderer_recorder_1_1_triangle_blob.html b/struct_debug_renderer_recorder_1_1_triangle_blob.html new file mode 100644 index 000000000..24ef3c7e6 --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_triangle_blob.html @@ -0,0 +1,212 @@ + + + + + + + +Jolt Physics: DebugRendererRecorder::TriangleBlob Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    DebugRendererRecorder::TriangleBlob Struct Reference
    +
    +
    + +

    Holds a single triangle. + More...

    + +

    #include <DebugRendererRecorder.h>

    + + + + + + + + + + + + +

    +Public Attributes

    RVec3 mV1
     
    RVec3 mV2
     
    RVec3 mV3
     
    Color mColor
     
    ECastShadow mCastShadow
     
    +

    Detailed Description

    +

    Holds a single triangle.

    +

    Member Data Documentation

    + +

    ◆ mCastShadow

    + +
    +
    + + + + +
    ECastShadow DebugRendererRecorder::TriangleBlob::mCastShadow
    +
    + +
    +
    + +

    ◆ mColor

    + +
    +
    + + + + +
    Color DebugRendererRecorder::TriangleBlob::mColor
    +
    + +
    +
    + +

    ◆ mV1

    + +
    +
    + + + + +
    RVec3 DebugRendererRecorder::TriangleBlob::mV1
    +
    + +
    +
    + +

    ◆ mV2

    + +
    +
    + + + + +
    RVec3 DebugRendererRecorder::TriangleBlob::mV2
    +
    + +
    +
    + +

    ◆ mV3

    + +
    +
    + + + + +
    RVec3 DebugRendererRecorder::TriangleBlob::mV3
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_debug_renderer_recorder_1_1_triangle_blob.js b/struct_debug_renderer_recorder_1_1_triangle_blob.js new file mode 100644 index 000000000..fbac6cb01 --- /dev/null +++ b/struct_debug_renderer_recorder_1_1_triangle_blob.js @@ -0,0 +1,8 @@ +var struct_debug_renderer_recorder_1_1_triangle_blob = +[ + [ "mCastShadow", "struct_debug_renderer_recorder_1_1_triangle_blob.html#a80df9fb9a4b0f775f631a3a391f0fca1", null ], + [ "mColor", "struct_debug_renderer_recorder_1_1_triangle_blob.html#a25ce9acc7f799de155e66f799a84def9", null ], + [ "mV1", "struct_debug_renderer_recorder_1_1_triangle_blob.html#a0e4f340eeb4bc951608c839d125706b7", null ], + [ "mV2", "struct_debug_renderer_recorder_1_1_triangle_blob.html#ad9b9200852056347b72aab08a003e314", null ], + [ "mV3", "struct_debug_renderer_recorder_1_1_triangle_blob.html#a31f1167b7d3996c0c402d54ebfa0a9d7", null ] +]; \ No newline at end of file diff --git a/struct_fixed_size_free_list_1_1_batch-members.html b/struct_fixed_size_free_list_1_1_batch-members.html new file mode 100644 index 000000000..3ef6c2404 --- /dev/null +++ b/struct_fixed_size_free_list_1_1_batch-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    FixedSizeFreeList< Object >::Batch Member List
    +
    + +
    + + + + diff --git a/struct_fixed_size_free_list_1_1_batch.html b/struct_fixed_size_free_list_1_1_batch.html new file mode 100644 index 000000000..611af518e --- /dev/null +++ b/struct_fixed_size_free_list_1_1_batch.html @@ -0,0 +1,187 @@ + + + + + + + +Jolt Physics: FixedSizeFreeList< Object >::Batch Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    FixedSizeFreeList< Object >::Batch Struct Reference
    +
    +
    + +

    A batch of objects that can be destructed. + More...

    + +

    #include <FixedSizeFreeList.h>

    + + + + + + + + +

    +Public Attributes

    uint32 mFirstObjectIndex = cInvalidObjectIndex
     
    uint32 mLastObjectIndex = cInvalidObjectIndex
     
    uint32 mNumObjects = 0
     
    +

    Detailed Description

    +
    template<typename Object>
    +struct FixedSizeFreeList< Object >::Batch

    A batch of objects that can be destructed.

    +

    Member Data Documentation

    + +

    ◆ mFirstObjectIndex

    + +
    +
    +
    +template<typename Object >
    + + + + +
    uint32 FixedSizeFreeList< Object >::Batch::mFirstObjectIndex = cInvalidObjectIndex
    +
    + +
    +
    + +

    ◆ mLastObjectIndex

    + +
    +
    +
    +template<typename Object >
    + + + + +
    uint32 FixedSizeFreeList< Object >::Batch::mLastObjectIndex = cInvalidObjectIndex
    +
    + +
    +
    + +

    ◆ mNumObjects

    + +
    +
    +
    +template<typename Object >
    + + + + +
    uint32 FixedSizeFreeList< Object >::Batch::mNumObjects = 0
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_fixed_size_free_list_1_1_batch.js b/struct_fixed_size_free_list_1_1_batch.js new file mode 100644 index 000000000..6af2bb987 --- /dev/null +++ b/struct_fixed_size_free_list_1_1_batch.js @@ -0,0 +1,6 @@ +var struct_fixed_size_free_list_1_1_batch = +[ + [ "mFirstObjectIndex", "struct_fixed_size_free_list_1_1_batch.html#a381cfe3af06bf97888cfbe25909acdae", null ], + [ "mLastObjectIndex", "struct_fixed_size_free_list_1_1_batch.html#ae7d23513b20b319c101f195c86a94a79", null ], + [ "mNumObjects", "struct_fixed_size_free_list_1_1_batch.html#a5ab07ee680a46976849c6d97ed0c20d3", null ] +]; \ No newline at end of file diff --git a/struct_height_field_shape_1_1_h_s_get_triangles_context-members.html b/struct_height_field_shape_1_1_h_s_get_triangles_context-members.html new file mode 100644 index 000000000..fea901755 --- /dev/null +++ b/struct_height_field_shape_1_1_h_s_get_triangles_context-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    HeightFieldShape::HSGetTrianglesContext Member List
    +
    + +
    + + + + diff --git a/struct_height_field_shape_1_1_h_s_get_triangles_context.html b/struct_height_field_shape_1_1_h_s_get_triangles_context.html new file mode 100644 index 000000000..abcebbed7 --- /dev/null +++ b/struct_height_field_shape_1_1_h_s_get_triangles_context.html @@ -0,0 +1,554 @@ + + + + + + + +Jolt Physics: HeightFieldShape::HSGetTrianglesContext Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    HeightFieldShape::HSGetTrianglesContext Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Member Functions

     HSGetTrianglesContext (const HeightFieldShape *inShape, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale)
     
    bool ShouldAbort () const
     
    bool ShouldVisitRangeBlock (int inStackTop) const
     
    int VisitRangeBlock (Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ, UVec4 &ioProperties, int inStackTop) const
     
    void VisitTriangle (uint inX, uint inY, uint inTriangle, Vec3Arg inV0, Vec3Arg inV1, Vec3Arg inV2)
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    DecodingContext mDecodeCtx
     
    const HeightFieldShapemShape
     
    OrientedBox mLocalBox
     
    Vec3 mHeightFieldScale
     
    Mat44 mLocalToWorld
     
    int mMaxTrianglesRequested
     
    Float3mTriangleVertices
     
    int mNumTrianglesFound
     
    const PhysicsMaterial ** mMaterials
     
    bool mShouldAbort
     
    bool mIsInsideOut
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ HSGetTrianglesContext()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    HeightFieldShape::HSGetTrianglesContext::HSGetTrianglesContext (const HeightFieldShapeinShape,
    const AABoxinBox,
    Vec3Arg inPositionCOM,
    QuatArg inRotation,
    Vec3Arg inScale 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ ShouldAbort()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool HeightFieldShape::HSGetTrianglesContext::ShouldAbort () const
    +
    +inline
    +
    + +
    +
    + +

    ◆ ShouldVisitRangeBlock()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool HeightFieldShape::HSGetTrianglesContext::ShouldVisitRangeBlock (int inStackTop) const
    +
    +inline
    +
    + +
    +
    + +

    ◆ VisitRangeBlock()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int HeightFieldShape::HSGetTrianglesContext::VisitRangeBlock (Vec4Arg inBoundsMinX,
    Vec4Arg inBoundsMinY,
    Vec4Arg inBoundsMinZ,
    Vec4Arg inBoundsMaxX,
    Vec4Arg inBoundsMaxY,
    Vec4Arg inBoundsMaxZ,
    UVec4ioProperties,
    int inStackTop 
    ) const
    +
    +inline
    +
    + +
    +
    + +

    ◆ VisitTriangle()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void HeightFieldShape::HSGetTrianglesContext::VisitTriangle (uint inX,
    uint inY,
    uint inTriangle,
    Vec3Arg inV0,
    Vec3Arg inV1,
    Vec3Arg inV2 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mDecodeCtx

    + +
    +
    + + + + +
    DecodingContext HeightFieldShape::HSGetTrianglesContext::mDecodeCtx
    +
    + +
    +
    + +

    ◆ mHeightFieldScale

    + +
    +
    + + + + +
    Vec3 HeightFieldShape::HSGetTrianglesContext::mHeightFieldScale
    +
    + +
    +
    + +

    ◆ mIsInsideOut

    + +
    +
    + + + + +
    bool HeightFieldShape::HSGetTrianglesContext::mIsInsideOut
    +
    + +
    +
    + +

    ◆ mLocalBox

    + +
    +
    + + + + +
    OrientedBox HeightFieldShape::HSGetTrianglesContext::mLocalBox
    +
    + +
    +
    + +

    ◆ mLocalToWorld

    + +
    +
    + + + + +
    Mat44 HeightFieldShape::HSGetTrianglesContext::mLocalToWorld
    +
    + +
    +
    + +

    ◆ mMaterials

    + +
    +
    + + + + +
    const PhysicsMaterial** HeightFieldShape::HSGetTrianglesContext::mMaterials
    +
    + +
    +
    + +

    ◆ mMaxTrianglesRequested

    + +
    +
    + + + + +
    int HeightFieldShape::HSGetTrianglesContext::mMaxTrianglesRequested
    +
    + +
    +
    + +

    ◆ mNumTrianglesFound

    + +
    +
    + + + + +
    int HeightFieldShape::HSGetTrianglesContext::mNumTrianglesFound
    +
    + +
    +
    + +

    ◆ mShape

    + +
    +
    + + + + +
    const HeightFieldShape* HeightFieldShape::HSGetTrianglesContext::mShape
    +
    + +
    +
    + +

    ◆ mShouldAbort

    + +
    +
    + + + + +
    bool HeightFieldShape::HSGetTrianglesContext::mShouldAbort
    +
    + +
    +
    + +

    ◆ mTriangleVertices

    + +
    +
    + + + + +
    Float3* HeightFieldShape::HSGetTrianglesContext::mTriangleVertices
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_height_field_shape_1_1_h_s_get_triangles_context.js b/struct_height_field_shape_1_1_h_s_get_triangles_context.js new file mode 100644 index 000000000..29adc64c4 --- /dev/null +++ b/struct_height_field_shape_1_1_h_s_get_triangles_context.js @@ -0,0 +1,19 @@ +var struct_height_field_shape_1_1_h_s_get_triangles_context = +[ + [ "HSGetTrianglesContext", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#a59ff92ab62ae7b8de0fa381aed8e54b6", null ], + [ "ShouldAbort", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#aa94c265db390c8d863f5e92d1b334241", null ], + [ "ShouldVisitRangeBlock", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#a256be48964a14190655ca1327185acf1", null ], + [ "VisitRangeBlock", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#abf84f1c35c412054c33815b39bcdd2ba", null ], + [ "VisitTriangle", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#a6a195ee4d6b586ddff6cdceb48fa0371", null ], + [ "mDecodeCtx", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#aeee3a7f20977ea6d9480486c123a684b", null ], + [ "mHeightFieldScale", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#af095f971b28c201d485692e5899d6651", null ], + [ "mIsInsideOut", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#a55fbabce067d73ce77dde891c6ba347a", null ], + [ "mLocalBox", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#a949f66e2b77e7cce9aff85ae630dfc74", null ], + [ "mLocalToWorld", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#a2097185e599e86009416c769e159aa0c", null ], + [ "mMaterials", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#ad87f4db5f7a76c71bb2fa5981f1e6d3c", null ], + [ "mMaxTrianglesRequested", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#acf57508ac110ac8582919e62b01c0b81", null ], + [ "mNumTrianglesFound", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#a4e6aec803eb1738b1f7c90f05100b422", null ], + [ "mShape", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#a2f023479973ac88867b30298c209df5a", null ], + [ "mShouldAbort", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#a0ad068a4a5602db56c266019226226d0", null ], + [ "mTriangleVertices", "struct_height_field_shape_1_1_h_s_get_triangles_context.html#a728e112e9c545273d009368eaf893b1d", null ] +]; \ No newline at end of file diff --git a/struct_large_island_splitter_1_1_split-members.html b/struct_large_island_splitter_1_1_split-members.html new file mode 100644 index 000000000..00d8937fa --- /dev/null +++ b/struct_large_island_splitter_1_1_split-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    LargeIslandSplitter::Split Member List
    +
    + +
    + + + + diff --git a/struct_large_island_splitter_1_1_split.html b/struct_large_island_splitter_1_1_split.html new file mode 100644 index 000000000..eefb309d7 --- /dev/null +++ b/struct_large_island_splitter_1_1_split.html @@ -0,0 +1,294 @@ + + + + + + + +Jolt Physics: LargeIslandSplitter::Split Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    LargeIslandSplitter::Split Struct Reference
    +
    +
    + +

    Describes a split of constraints and contacts. + More...

    + +

    #include <LargeIslandSplitter.h>

    + + + + + + + + +

    +Public Member Functions

    uint GetNumContacts () const
     
    uint GetNumConstraints () const
     
    uint GetNumItems () const
     
    + + + + + + + + + + + + + +

    +Public Attributes

    uint32 mContactBufferBegin
     Begin of the contact buffer (offset relative to mContactAndConstraintIndices)
     
    uint32 mContactBufferEnd
     End of the contact buffer.
     
    uint32 mConstraintBufferBegin
     Begin of the constraint buffer (offset relative to mContactAndConstraintIndices)
     
    uint32 mConstraintBufferEnd
     End of the constraint buffer.
     
    +

    Detailed Description

    +

    Describes a split of constraints and contacts.

    +

    Member Function Documentation

    + +

    ◆ GetNumConstraints()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint LargeIslandSplitter::Split::GetNumConstraints () const
    +
    +inline
    +
    + +
    +
    + +

    ◆ GetNumContacts()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint LargeIslandSplitter::Split::GetNumContacts () const
    +
    +inline
    +
    + +
    +
    + +

    ◆ GetNumItems()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint LargeIslandSplitter::Split::GetNumItems () const
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mConstraintBufferBegin

    + +
    +
    + + + + +
    uint32 LargeIslandSplitter::Split::mConstraintBufferBegin
    +
    + +

    Begin of the constraint buffer (offset relative to mContactAndConstraintIndices)

    + +
    +
    + +

    ◆ mConstraintBufferEnd

    + +
    +
    + + + + +
    uint32 LargeIslandSplitter::Split::mConstraintBufferEnd
    +
    + +

    End of the constraint buffer.

    + +
    +
    + +

    ◆ mContactBufferBegin

    + +
    +
    + + + + +
    uint32 LargeIslandSplitter::Split::mContactBufferBegin
    +
    + +

    Begin of the contact buffer (offset relative to mContactAndConstraintIndices)

    + +
    +
    + +

    ◆ mContactBufferEnd

    + +
    +
    + + + + +
    uint32 LargeIslandSplitter::Split::mContactBufferEnd
    +
    + +

    End of the contact buffer.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_large_island_splitter_1_1_split.js b/struct_large_island_splitter_1_1_split.js new file mode 100644 index 000000000..205dfb7ca --- /dev/null +++ b/struct_large_island_splitter_1_1_split.js @@ -0,0 +1,10 @@ +var struct_large_island_splitter_1_1_split = +[ + [ "GetNumConstraints", "struct_large_island_splitter_1_1_split.html#a7be7a84dab98a3ec965a98117dde3267", null ], + [ "GetNumContacts", "struct_large_island_splitter_1_1_split.html#abf23d7df82ca57e028f02e98b0dc578b", null ], + [ "GetNumItems", "struct_large_island_splitter_1_1_split.html#a360a0aa43dfc7ff2943a77d99f4c3513", null ], + [ "mConstraintBufferBegin", "struct_large_island_splitter_1_1_split.html#a28c42cf9312a3e37c131ebdc1ad81479", null ], + [ "mConstraintBufferEnd", "struct_large_island_splitter_1_1_split.html#af7738261a4e5e40816c3be9db89b6500", null ], + [ "mContactBufferBegin", "struct_large_island_splitter_1_1_split.html#aeace1bcbc7c914f22476358a9851daba", null ], + [ "mContactBufferEnd", "struct_large_island_splitter_1_1_split.html#a6a88a677ec69868a94fbb451ab253342", null ] +]; \ No newline at end of file diff --git a/struct_lock_free_hash_map_1_1_iterator-members.html b/struct_lock_free_hash_map_1_1_iterator-members.html new file mode 100644 index 000000000..acc9e94fe --- /dev/null +++ b/struct_lock_free_hash_map_1_1_iterator-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    LockFreeHashMap< Key, Value >::Iterator Member List
    +
    + +
    + + + + diff --git a/struct_lock_free_hash_map_1_1_iterator.html b/struct_lock_free_hash_map_1_1_iterator.html new file mode 100644 index 000000000..7fa53831f --- /dev/null +++ b/struct_lock_free_hash_map_1_1_iterator.html @@ -0,0 +1,304 @@ + + + + + + + +Jolt Physics: LockFreeHashMap< Key, Value >::Iterator Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    LockFreeHashMap< Key, Value >::Iterator Struct Reference
    +
    +
    + +

    Non-const iterator. + More...

    + +

    #include <LockFreeHashMap.h>

    + + + + + + + + + + + + + +

    +Public Member Functions

    bool operator== (const Iterator &inRHS) const
     Comparison.
     
    bool operator!= (const Iterator &inRHS) const
     
    KeyValueoperator* ()
     Convert to key value pair.
     
    Iteratoroperator++ ()
     Next item.
     
    + + + + + + + +

    +Public Attributes

    MapTypemMap
     
    uint32 mBucket
     
    uint32 mOffset
     
    +

    Detailed Description

    +
    template<class Key, class Value>
    +struct LockFreeHashMap< Key, Value >::Iterator

    Non-const iterator.

    +

    Member Function Documentation

    + +

    ◆ operator!=()

    + +
    +
    +
    +template<class Key , class Value >
    + + + + + +
    + + + + + + + + +
    bool LockFreeHashMap< Key, Value >::Iterator::operator!= (const IteratorinRHS) const
    +
    +inline
    +
    + +
    +
    + +

    ◆ operator*()

    + +
    +
    +
    +template<class Key , class Value >
    + + + + + + + +
    LockFreeHashMap< Key, Value >::KeyValue & LockFreeHashMap< Key, Value >::Iterator::operator* ()
    +
    + +

    Convert to key value pair.

    + +
    +
    + +

    ◆ operator++()

    + +
    +
    +
    +template<class Key , class Value >
    + + + + + + + +
    LockFreeHashMap< Key, Value >::Iterator & LockFreeHashMap< Key, Value >::Iterator::operator++ ()
    +
    + +

    Next item.

    + +
    +
    + +

    ◆ operator==()

    + +
    +
    +
    +template<class Key , class Value >
    + + + + + +
    + + + + + + + + +
    bool LockFreeHashMap< Key, Value >::Iterator::operator== (const IteratorinRHS) const
    +
    +inline
    +
    + +

    Comparison.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mBucket

    + +
    +
    +
    +template<class Key , class Value >
    + + + + +
    uint32 LockFreeHashMap< Key, Value >::Iterator::mBucket
    +
    + +
    +
    + +

    ◆ mMap

    + +
    +
    +
    +template<class Key , class Value >
    + + + + +
    MapType* LockFreeHashMap< Key, Value >::Iterator::mMap
    +
    + +
    +
    + +

    ◆ mOffset

    + +
    +
    +
    +template<class Key , class Value >
    + + + + +
    uint32 LockFreeHashMap< Key, Value >::Iterator::mOffset
    +
    + +
    +
    +
    The documentation for this struct was generated from the following files: +
    +
    + + + + diff --git a/struct_lock_free_hash_map_1_1_iterator.js b/struct_lock_free_hash_map_1_1_iterator.js new file mode 100644 index 000000000..9a534dd09 --- /dev/null +++ b/struct_lock_free_hash_map_1_1_iterator.js @@ -0,0 +1,10 @@ +var struct_lock_free_hash_map_1_1_iterator = +[ + [ "operator!=", "struct_lock_free_hash_map_1_1_iterator.html#ac41d9d1e14de5e0d26edf2c004e7b4b0", null ], + [ "operator*", "struct_lock_free_hash_map_1_1_iterator.html#af2b164af90f8efbeb7c5a5bc19333f34", null ], + [ "operator++", "struct_lock_free_hash_map_1_1_iterator.html#aaaf8062e981a1be7118d1dde98968ba6", null ], + [ "operator==", "struct_lock_free_hash_map_1_1_iterator.html#a0511ff0a1aee60f26352f0caddee732a", null ], + [ "mBucket", "struct_lock_free_hash_map_1_1_iterator.html#ab977da84511df37816a8856402dfef60", null ], + [ "mMap", "struct_lock_free_hash_map_1_1_iterator.html#af25da5da601250661337b73982cddde8", null ], + [ "mOffset", "struct_lock_free_hash_map_1_1_iterator.html#a1142200c7ea0ad1195007f410ccb8942", null ] +]; \ No newline at end of file diff --git a/struct_mesh_shape_1_1_m_s_get_triangles_context-members.html b/struct_mesh_shape_1_1_m_s_get_triangles_context-members.html new file mode 100644 index 000000000..8128ac755 --- /dev/null +++ b/struct_mesh_shape_1_1_m_s_get_triangles_context-members.html @@ -0,0 +1,132 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    MeshShape::MSGetTrianglesContext Member List
    +
    +
    + +

    This is the complete list of members for MeshShape::MSGetTrianglesContext, including all inherited members.

    + + + + + + + + + + + + + + + + + +
    mDecodeCtxMeshShape::MSGetTrianglesContext
    mIsInsideOutMeshShape::MSGetTrianglesContext
    mLocalBoxMeshShape::MSGetTrianglesContext
    mLocalToWorldMeshShape::MSGetTrianglesContext
    mMaterialsMeshShape::MSGetTrianglesContext
    mMaxTrianglesRequestedMeshShape::MSGetTrianglesContext
    mMeshScaleMeshShape::MSGetTrianglesContext
    mNumTrianglesFoundMeshShape::MSGetTrianglesContext
    MSGetTrianglesContext(const MeshShape *inShape, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale)MeshShape::MSGetTrianglesContextinline
    mShapeMeshShape::MSGetTrianglesContext
    mShouldAbortMeshShape::MSGetTrianglesContext
    mTriangleVerticesMeshShape::MSGetTrianglesContext
    ShouldAbort() constMeshShape::MSGetTrianglesContextinline
    ShouldVisitNode(int inStackTop) constMeshShape::MSGetTrianglesContextinline
    VisitNodes(Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ, UVec4 &ioProperties, int inStackTop) constMeshShape::MSGetTrianglesContextinline
    VisitTriangles(const TriangleCodec::DecodingContext &ioContext, const void *inTriangles, int inNumTriangles, uint32 inTriangleBlockID)MeshShape::MSGetTrianglesContextinline
    +
    + + + + diff --git a/struct_mesh_shape_1_1_m_s_get_triangles_context.html b/struct_mesh_shape_1_1_m_s_get_triangles_context.html new file mode 100644 index 000000000..9af6edc0d --- /dev/null +++ b/struct_mesh_shape_1_1_m_s_get_triangles_context.html @@ -0,0 +1,542 @@ + + + + + + + +Jolt Physics: MeshShape::MSGetTrianglesContext Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    MeshShape::MSGetTrianglesContext Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Member Functions

    JPH_INLINE MSGetTrianglesContext (const MeshShape *inShape, const AABox &inBox, Vec3Arg inPositionCOM, QuatArg inRotation, Vec3Arg inScale)
     
    JPH_INLINE bool ShouldAbort () const
     
    JPH_INLINE bool ShouldVisitNode (int inStackTop) const
     
    JPH_INLINE int VisitNodes (Vec4Arg inBoundsMinX, Vec4Arg inBoundsMinY, Vec4Arg inBoundsMinZ, Vec4Arg inBoundsMaxX, Vec4Arg inBoundsMaxY, Vec4Arg inBoundsMaxZ, UVec4 &ioProperties, int inStackTop) const
     
    JPH_INLINE void VisitTriangles (const TriangleCodec::DecodingContext &ioContext, const void *inTriangles, int inNumTriangles, uint32 inTriangleBlockID)
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    NodeCodec::DecodingContext mDecodeCtx
     
    const MeshShapemShape
     
    OrientedBox mLocalBox
     
    Vec3 mMeshScale
     
    Mat44 mLocalToWorld
     
    int mMaxTrianglesRequested
     
    Float3mTriangleVertices
     
    int mNumTrianglesFound
     
    const PhysicsMaterial ** mMaterials
     
    bool mShouldAbort
     
    bool mIsInsideOut
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ MSGetTrianglesContext()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE MeshShape::MSGetTrianglesContext::MSGetTrianglesContext (const MeshShapeinShape,
    const AABoxinBox,
    Vec3Arg inPositionCOM,
    QuatArg inRotation,
    Vec3Arg inScale 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ ShouldAbort()

    + +
    +
    + + + + + +
    + + + + + + + +
    JPH_INLINE bool MeshShape::MSGetTrianglesContext::ShouldAbort () const
    +
    +inline
    +
    + +
    +
    + +

    ◆ ShouldVisitNode()

    + +
    +
    + + + + + +
    + + + + + + + + +
    JPH_INLINE bool MeshShape::MSGetTrianglesContext::ShouldVisitNode (int inStackTop) const
    +
    +inline
    +
    + +
    +
    + +

    ◆ VisitNodes()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE int MeshShape::MSGetTrianglesContext::VisitNodes (Vec4Arg inBoundsMinX,
    Vec4Arg inBoundsMinY,
    Vec4Arg inBoundsMinZ,
    Vec4Arg inBoundsMaxX,
    Vec4Arg inBoundsMaxY,
    Vec4Arg inBoundsMaxZ,
    UVec4ioProperties,
    int inStackTop 
    ) const
    +
    +inline
    +
    + +
    +
    + +

    ◆ VisitTriangles()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_INLINE void MeshShape::MSGetTrianglesContext::VisitTriangles (const TriangleCodec::DecodingContextioContext,
    const void * inTriangles,
    int inNumTriangles,
    uint32 inTriangleBlockID 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mDecodeCtx

    + +
    +
    + + + + +
    NodeCodec::DecodingContext MeshShape::MSGetTrianglesContext::mDecodeCtx
    +
    + +
    +
    + +

    ◆ mIsInsideOut

    + +
    +
    + + + + +
    bool MeshShape::MSGetTrianglesContext::mIsInsideOut
    +
    + +
    +
    + +

    ◆ mLocalBox

    + +
    +
    + + + + +
    OrientedBox MeshShape::MSGetTrianglesContext::mLocalBox
    +
    + +
    +
    + +

    ◆ mLocalToWorld

    + +
    +
    + + + + +
    Mat44 MeshShape::MSGetTrianglesContext::mLocalToWorld
    +
    + +
    +
    + +

    ◆ mMaterials

    + +
    +
    + + + + +
    const PhysicsMaterial** MeshShape::MSGetTrianglesContext::mMaterials
    +
    + +
    +
    + +

    ◆ mMaxTrianglesRequested

    + +
    +
    + + + + +
    int MeshShape::MSGetTrianglesContext::mMaxTrianglesRequested
    +
    + +
    +
    + +

    ◆ mMeshScale

    + +
    +
    + + + + +
    Vec3 MeshShape::MSGetTrianglesContext::mMeshScale
    +
    + +
    +
    + +

    ◆ mNumTrianglesFound

    + +
    +
    + + + + +
    int MeshShape::MSGetTrianglesContext::mNumTrianglesFound
    +
    + +
    +
    + +

    ◆ mShape

    + +
    +
    + + + + +
    const MeshShape* MeshShape::MSGetTrianglesContext::mShape
    +
    + +
    +
    + +

    ◆ mShouldAbort

    + +
    +
    + + + + +
    bool MeshShape::MSGetTrianglesContext::mShouldAbort
    +
    + +
    +
    + +

    ◆ mTriangleVertices

    + +
    +
    + + + + +
    Float3* MeshShape::MSGetTrianglesContext::mTriangleVertices
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_mesh_shape_1_1_m_s_get_triangles_context.js b/struct_mesh_shape_1_1_m_s_get_triangles_context.js new file mode 100644 index 000000000..6561bf6b1 --- /dev/null +++ b/struct_mesh_shape_1_1_m_s_get_triangles_context.js @@ -0,0 +1,19 @@ +var struct_mesh_shape_1_1_m_s_get_triangles_context = +[ + [ "MSGetTrianglesContext", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#ad92277aa44b23b015efb63d110824297", null ], + [ "ShouldAbort", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#a1ad05ea27186c07aebbc4f6d99bc859c", null ], + [ "ShouldVisitNode", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#ab48cfff2bdc317341376ff83be3138d4", null ], + [ "VisitNodes", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#adba28fd45a275f92e03276643f058eb7", null ], + [ "VisitTriangles", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#a361618c0f911d1d49692df906bf5f890", null ], + [ "mDecodeCtx", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#a4e096804b145a331076fc7b8102bc7e4", null ], + [ "mIsInsideOut", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#add05557242b27f0f618b6da317445f21", null ], + [ "mLocalBox", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#ad807e0e7e746e3f0486051df92e0d87e", null ], + [ "mLocalToWorld", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#a80d76f1cb4cac85d57bd62a9f05b16cb", null ], + [ "mMaterials", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#a6ef8c591e534e7c551cd807f98e4db15", null ], + [ "mMaxTrianglesRequested", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#ae533add6a3202271139f9a1e6b3b3492", null ], + [ "mMeshScale", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#aa843a8656ead9188361add0ed4e0c20e", null ], + [ "mNumTrianglesFound", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#a77dc72cce068489bf1a6514c9e8c0ba5", null ], + [ "mShape", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#aed1c23e9ef77d2d26bbe50f2094164f8", null ], + [ "mShouldAbort", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#a96602baa292532ce49ae7b808e42fe2c", null ], + [ "mTriangleVertices", "struct_mesh_shape_1_1_m_s_get_triangles_context.html#a16014a0cba1dc41756ad4cb65d155163", null ] +]; \ No newline at end of file diff --git a/struct_minkowski_difference-members.html b/struct_minkowski_difference-members.html new file mode 100644 index 000000000..fb19d9d05 --- /dev/null +++ b/struct_minkowski_difference-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    MinkowskiDifference< ConvexObjectA, ConvexObjectB > Member List
    +
    + +
    + + + + diff --git a/struct_minkowski_difference.html b/struct_minkowski_difference.html new file mode 100644 index 000000000..7e1a100ff --- /dev/null +++ b/struct_minkowski_difference.html @@ -0,0 +1,248 @@ + + + + + + + +Jolt Physics: MinkowskiDifference< ConvexObjectA, ConvexObjectB > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    MinkowskiDifference< ConvexObjectA, ConvexObjectB > Struct Template Reference
    +
    +
    + +

    Structure that performs a Minkowski difference A - B. + More...

    + +

    #include <ConvexSupport.h>

    + + + + + + + +

    +Public Member Functions

     MinkowskiDifference (const ConvexObjectA &inObjectA, const ConvexObjectB &inObjectB)
     
    Vec3 GetSupport (Vec3Arg inDirection) const
     Calculate the support vector for this convex shape.
     
    + + + + + +

    +Public Attributes

    const ConvexObjectA & mObjectA
     
    const ConvexObjectB & mObjectB
     
    +

    Detailed Description

    +
    template<typename ConvexObjectA, typename ConvexObjectB>
    +struct MinkowskiDifference< ConvexObjectA, ConvexObjectB >

    Structure that performs a Minkowski difference A - B.

    +

    Constructor & Destructor Documentation

    + +

    ◆ MinkowskiDifference()

    + +
    +
    +
    +template<typename ConvexObjectA , typename ConvexObjectB >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    MinkowskiDifference< ConvexObjectA, ConvexObjectB >::MinkowskiDifference (const ConvexObjectA & inObjectA,
    const ConvexObjectB & inObjectB 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetSupport()

    + +
    +
    +
    +template<typename ConvexObjectA , typename ConvexObjectB >
    + + + + + +
    + + + + + + + + +
    Vec3 MinkowskiDifference< ConvexObjectA, ConvexObjectB >::GetSupport (Vec3Arg inDirection) const
    +
    +inline
    +
    + +

    Calculate the support vector for this convex shape.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mObjectA

    + +
    +
    +
    +template<typename ConvexObjectA , typename ConvexObjectB >
    + + + + +
    const ConvexObjectA& MinkowskiDifference< ConvexObjectA, ConvexObjectB >::mObjectA
    +
    + +
    +
    + +

    ◆ mObjectB

    + +
    +
    +
    +template<typename ConvexObjectA , typename ConvexObjectB >
    + + + + +
    const ConvexObjectB& MinkowskiDifference< ConvexObjectA, ConvexObjectB >::mObjectB
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_minkowski_difference.js b/struct_minkowski_difference.js new file mode 100644 index 000000000..918c8e6c9 --- /dev/null +++ b/struct_minkowski_difference.js @@ -0,0 +1,7 @@ +var struct_minkowski_difference = +[ + [ "MinkowskiDifference", "struct_minkowski_difference.html#a057663b9fae33081006e0ae3c51bbffb", null ], + [ "GetSupport", "struct_minkowski_difference.html#ad9e15e934b19be1df6e09a926a1e26dd", null ], + [ "mObjectA", "struct_minkowski_difference.html#a9ec95eca1b2f1e8420746f40e6544f85", null ], + [ "mObjectB", "struct_minkowski_difference.html#af2117c9f519daa7e35d2824fa979917f", null ] +]; \ No newline at end of file diff --git a/struct_node_codec_quad_tree_half_float_1_1_header-members.html b/struct_node_codec_quad_tree_half_float_1_1_header-members.html new file mode 100644 index 000000000..d531013d9 --- /dev/null +++ b/struct_node_codec_quad_tree_half_float_1_1_header-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    NodeCodecQuadTreeHalfFloat< Alignment >::Header Member List
    +
    + +
    + + + + diff --git a/struct_node_codec_quad_tree_half_float_1_1_header.html b/struct_node_codec_quad_tree_half_float_1_1_header.html new file mode 100644 index 000000000..cde7e3c5b --- /dev/null +++ b/struct_node_codec_quad_tree_half_float_1_1_header.html @@ -0,0 +1,187 @@ + + + + + + + +Jolt Physics: NodeCodecQuadTreeHalfFloat< Alignment >::Header Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    NodeCodecQuadTreeHalfFloat< Alignment >::Header Struct Reference
    +
    +
    + +

    Header for the tree. + More...

    + +

    #include <NodeCodecQuadTreeHalfFloat.h>

    + + + + + + + + +

    +Public Attributes

    Float3 mRootBoundsMin
     
    Float3 mRootBoundsMax
     
    uint32 mRootProperties
     
    +

    Detailed Description

    +
    template<int Alignment>
    +struct NodeCodecQuadTreeHalfFloat< Alignment >::Header

    Header for the tree.

    +

    Member Data Documentation

    + +

    ◆ mRootBoundsMax

    + +
    +
    +
    +template<int Alignment>
    + + + + +
    Float3 NodeCodecQuadTreeHalfFloat< Alignment >::Header::mRootBoundsMax
    +
    + +
    +
    + +

    ◆ mRootBoundsMin

    + +
    +
    +
    +template<int Alignment>
    + + + + +
    Float3 NodeCodecQuadTreeHalfFloat< Alignment >::Header::mRootBoundsMin
    +
    + +
    +
    + +

    ◆ mRootProperties

    + +
    +
    +
    +template<int Alignment>
    + + + + +
    uint32 NodeCodecQuadTreeHalfFloat< Alignment >::Header::mRootProperties
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_node_codec_quad_tree_half_float_1_1_header.js b/struct_node_codec_quad_tree_half_float_1_1_header.js new file mode 100644 index 000000000..80df19b17 --- /dev/null +++ b/struct_node_codec_quad_tree_half_float_1_1_header.js @@ -0,0 +1,6 @@ +var struct_node_codec_quad_tree_half_float_1_1_header = +[ + [ "mRootBoundsMax", "struct_node_codec_quad_tree_half_float_1_1_header.html#a13661d6f0399e913b49c25e53aa03883", null ], + [ "mRootBoundsMin", "struct_node_codec_quad_tree_half_float_1_1_header.html#a0b88f06ad8cd0a0cd782637c66bb04bc", null ], + [ "mRootProperties", "struct_node_codec_quad_tree_half_float_1_1_header.html#a815f737e0b69facd9b5aac34ea911232", null ] +]; \ No newline at end of file diff --git a/struct_node_codec_quad_tree_half_float_1_1_node-members.html b/struct_node_codec_quad_tree_half_float_1_1_node-members.html new file mode 100644 index 000000000..89c1a8d93 --- /dev/null +++ b/struct_node_codec_quad_tree_half_float_1_1_node-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/struct_node_codec_quad_tree_half_float_1_1_node.html b/struct_node_codec_quad_tree_half_float_1_1_node.html new file mode 100644 index 000000000..7e78fb1cd --- /dev/null +++ b/struct_node_codec_quad_tree_half_float_1_1_node.html @@ -0,0 +1,265 @@ + + + + + + + +Jolt Physics: NodeCodecQuadTreeHalfFloat< Alignment >::Node Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    NodeCodecQuadTreeHalfFloat< Alignment >::Node Struct Reference
    +
    +
    + +

    Node structure. + More...

    + +

    #include <NodeCodecQuadTreeHalfFloat.h>

    + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    HalfFloat mBoundsMinX [4]
     4 child bounding boxes
     
    HalfFloat mBoundsMinY [4]
     
    HalfFloat mBoundsMinZ [4]
     
    HalfFloat mBoundsMaxX [4]
     
    HalfFloat mBoundsMaxY [4]
     
    HalfFloat mBoundsMaxZ [4]
     
    uint32 mNodeProperties [4]
     4 child node properties
     
    +

    Detailed Description

    +
    template<int Alignment>
    +struct NodeCodecQuadTreeHalfFloat< Alignment >::Node

    Node structure.

    +

    Member Data Documentation

    + +

    ◆ mBoundsMaxX

    + +
    +
    +
    +template<int Alignment>
    + + + + +
    HalfFloat NodeCodecQuadTreeHalfFloat< Alignment >::Node::mBoundsMaxX[4]
    +
    + +
    +
    + +

    ◆ mBoundsMaxY

    + +
    +
    +
    +template<int Alignment>
    + + + + +
    HalfFloat NodeCodecQuadTreeHalfFloat< Alignment >::Node::mBoundsMaxY[4]
    +
    + +
    +
    + +

    ◆ mBoundsMaxZ

    + +
    +
    +
    +template<int Alignment>
    + + + + +
    HalfFloat NodeCodecQuadTreeHalfFloat< Alignment >::Node::mBoundsMaxZ[4]
    +
    + +
    +
    + +

    ◆ mBoundsMinX

    + +
    +
    +
    +template<int Alignment>
    + + + + +
    HalfFloat NodeCodecQuadTreeHalfFloat< Alignment >::Node::mBoundsMinX[4]
    +
    + +

    4 child bounding boxes

    + +
    +
    + +

    ◆ mBoundsMinY

    + +
    +
    +
    +template<int Alignment>
    + + + + +
    HalfFloat NodeCodecQuadTreeHalfFloat< Alignment >::Node::mBoundsMinY[4]
    +
    + +
    +
    + +

    ◆ mBoundsMinZ

    + +
    +
    +
    +template<int Alignment>
    + + + + +
    HalfFloat NodeCodecQuadTreeHalfFloat< Alignment >::Node::mBoundsMinZ[4]
    +
    + +
    +
    + +

    ◆ mNodeProperties

    + +
    +
    +
    +template<int Alignment>
    + + + + +
    uint32 NodeCodecQuadTreeHalfFloat< Alignment >::Node::mNodeProperties[4]
    +
    + +

    4 child node properties

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_node_codec_quad_tree_half_float_1_1_node.js b/struct_node_codec_quad_tree_half_float_1_1_node.js new file mode 100644 index 000000000..2ccb38623 --- /dev/null +++ b/struct_node_codec_quad_tree_half_float_1_1_node.js @@ -0,0 +1,10 @@ +var struct_node_codec_quad_tree_half_float_1_1_node = +[ + [ "mBoundsMaxX", "struct_node_codec_quad_tree_half_float_1_1_node.html#a664881f33b2c72d863669f597a08b5f1", null ], + [ "mBoundsMaxY", "struct_node_codec_quad_tree_half_float_1_1_node.html#a1f661d07d95917d39d42d92fe3ae4afe", null ], + [ "mBoundsMaxZ", "struct_node_codec_quad_tree_half_float_1_1_node.html#af97feaea54b713343bb32a1c9fe0b833", null ], + [ "mBoundsMinX", "struct_node_codec_quad_tree_half_float_1_1_node.html#a260bf9fa0305ae1201ab7ee903c24219", null ], + [ "mBoundsMinY", "struct_node_codec_quad_tree_half_float_1_1_node.html#ae9185f05be2d2e73b535cb62842dca44", null ], + [ "mBoundsMinZ", "struct_node_codec_quad_tree_half_float_1_1_node.html#a303fe22d2d9d469d7e58a3b96fcec103", null ], + [ "mNodeProperties", "struct_node_codec_quad_tree_half_float_1_1_node.html#a959db7e79da8e791a53fa9a8e9f86d1c", null ] +]; \ No newline at end of file diff --git a/struct_path_constraint_path_hermite_1_1_point-members.html b/struct_path_constraint_path_hermite_1_1_point-members.html new file mode 100644 index 000000000..d51ebbcbb --- /dev/null +++ b/struct_path_constraint_path_hermite_1_1_point-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    PathConstraintPathHermite::Point Member List
    +
    + +
    + + + + diff --git a/struct_path_constraint_path_hermite_1_1_point.html b/struct_path_constraint_path_hermite_1_1_point.html new file mode 100644 index 000000000..5b21d179d --- /dev/null +++ b/struct_path_constraint_path_hermite_1_1_point.html @@ -0,0 +1,184 @@ + + + + + + + +Jolt Physics: PathConstraintPathHermite::Point Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    PathConstraintPathHermite::Point Struct Reference
    +
    +
    + +

    #include <PathConstraintPathHermite.h>

    + + + + + + + + + + + +

    +Public Attributes

    Vec3 mPosition
     Position on the path.
     
    Vec3 mTangent
     Tangent of the path, does not need to be normalized (in the direction of the path)
     
    Vec3 mNormal
     Normal of the path (together with the tangent along the curve this forms a basis for the constraint)
     
    +

    Member Data Documentation

    + +

    ◆ mNormal

    + +
    +
    + + + + +
    Vec3 PathConstraintPathHermite::Point::mNormal
    +
    + +

    Normal of the path (together with the tangent along the curve this forms a basis for the constraint)

    + +
    +
    + +

    ◆ mPosition

    + +
    +
    + + + + +
    Vec3 PathConstraintPathHermite::Point::mPosition
    +
    + +

    Position on the path.

    + +
    +
    + +

    ◆ mTangent

    + +
    +
    + + + + +
    Vec3 PathConstraintPathHermite::Point::mTangent
    +
    + +

    Tangent of the path, does not need to be normalized (in the direction of the path)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_path_constraint_path_hermite_1_1_point.js b/struct_path_constraint_path_hermite_1_1_point.js new file mode 100644 index 000000000..29ae4b671 --- /dev/null +++ b/struct_path_constraint_path_hermite_1_1_point.js @@ -0,0 +1,6 @@ +var struct_path_constraint_path_hermite_1_1_point = +[ + [ "mNormal", "struct_path_constraint_path_hermite_1_1_point.html#aa269d2329d09267440c119c1d4b74125", null ], + [ "mPosition", "struct_path_constraint_path_hermite_1_1_point.html#ae184b6a8fe926a6ef48bdacb1057c04e", null ], + [ "mTangent", "struct_path_constraint_path_hermite_1_1_point.html#a4cd15236568584e92fdd3807a7a50231", null ] +]; \ No newline at end of file diff --git a/struct_physics_settings-members.html b/struct_physics_settings-members.html new file mode 100644 index 000000000..c9835ec90 --- /dev/null +++ b/struct_physics_settings-members.html @@ -0,0 +1,142 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/struct_physics_settings.html b/struct_physics_settings.html new file mode 100644 index 000000000..98e7a99a1 --- /dev/null +++ b/struct_physics_settings.html @@ -0,0 +1,620 @@ + + + + + + + +Jolt Physics: PhysicsSettings Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    PhysicsSettings Struct Reference
    +
    +
    + +

    #include <PhysicsSettings.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    JPH_OVERRIDE_NEW_DELETE int mMaxInFlightBodyPairs = 16384
     
    int mStepListenersBatchSize = 8
     How many PhysicsStepListeners to notify in 1 batch.
     
    int mStepListenerBatchesPerJob = 1
     How many step listener batches are needed before spawning another job (set to INT_MAX if no parallelism is desired)
     
    float mBaumgarte = 0.2f
     Baumgarte stabilization factor (how much of the position error to 'fix' in 1 update) (unit: dimensionless, 0 = nothing, 1 = 100%)
     
    float mSpeculativeContactDistance = 0.02f
     
    float mPenetrationSlop = 0.02f
     How much bodies are allowed to sink into each other (unit: meters)
     
    float mLinearCastThreshold = 0.75f
     Fraction of its inner radius a body must move per step to enable casting for the LinearCast motion quality.
     
    float mLinearCastMaxPenetration = 0.25f
     Fraction of its inner radius a body may penetrate another body for the LinearCast motion quality.
     
    float mManifoldToleranceSq = 1.0e-6f
     Max squared distance to use to determine if two points are on the same plane for determining the contact manifold between two shape faces (unit: meter^2)
     
    float mMaxPenetrationDistance = 0.2f
     Maximum distance to correct in a single iteration when solving position constraints (unit: meters)
     
    float mBodyPairCacheMaxDeltaPositionSq = Square(0.001f)
     Maximum relative delta position for body pairs to be able to reuse collision results from last frame (units: meter^2)
     
    float mBodyPairCacheCosMaxDeltaRotationDiv2 = 0.99984769515639123915701155881391f
     Maximum relative delta orientation for body pairs to be able to reuse collision results from last frame, stored as cos(max angle / 2)
     
    float mContactNormalCosMaxDeltaRotation = 0.99619469809174553229501040247389f
     Maximum angle between normals that allows manifolds between different sub shapes of the same body pair to be combined.
     
    float mContactPointPreserveLambdaMaxDistSq = Square(0.01f)
     Maximum allowed distance between old and new contact point to preserve contact forces for warm start (units: meter^2)
     
    uint mNumVelocitySteps = 10
     
    uint mNumPositionSteps = 2
     Number of solver position iterations to run.
     
    float mMinVelocityForRestitution = 1.0f
     Minimal velocity needed before a collision can be elastic (unit: m)
     
    float mTimeBeforeSleep = 0.5f
     Time before object is allowed to go to sleep (unit: seconds)
     
    float mPointVelocitySleepThreshold = 0.03f
     Velocity of points on bounding box of object below which an object can be considered sleeping (unit: m/s)
     
    bool mDeterministicSimulation = true
     By default the simulation is deterministic, it is possible to turn this off by setting this setting to false. This will make the simulation run faster but it will no longer be deterministic.
     
    These variables are mainly for debugging purposes, they allow turning on/off certain subsystems. You probably want to leave them alone.
    bool mConstraintWarmStart = true
     Whether or not to use warm starting for constraints (initially applying previous frames impulses)
     
    bool mUseBodyPairContactCache = true
     Whether or not to use the body pair cache, which removes the need for narrow phase collision detection when orientation between two bodies didn't change.
     
    bool mUseManifoldReduction = true
     Whether or not to reduce manifolds with similar contact normals into one contact manifold (see description at Body::SetUseManifoldReduction)
     
    bool mUseLargeIslandSplitter = true
     If we split up large islands into smaller parallel batches of work (to improve performance)
     
    bool mAllowSleeping = true
     If objects can go to sleep or not.
     
    bool mCheckActiveEdges = true
     When false, we prevent collision against non-active (shared) edges. Mainly for debugging the algorithm.
     
    +

    Member Data Documentation

    + +

    ◆ mAllowSleeping

    + +
    +
    + + + + +
    bool PhysicsSettings::mAllowSleeping = true
    +
    + +

    If objects can go to sleep or not.

    + +
    +
    + +

    ◆ mBaumgarte

    + +
    +
    + + + + +
    float PhysicsSettings::mBaumgarte = 0.2f
    +
    + +

    Baumgarte stabilization factor (how much of the position error to 'fix' in 1 update) (unit: dimensionless, 0 = nothing, 1 = 100%)

    + +
    +
    + +

    ◆ mBodyPairCacheCosMaxDeltaRotationDiv2

    + +
    +
    + + + + +
    float PhysicsSettings::mBodyPairCacheCosMaxDeltaRotationDiv2 = 0.99984769515639123915701155881391f
    +
    + +

    Maximum relative delta orientation for body pairs to be able to reuse collision results from last frame, stored as cos(max angle / 2)

    +

    cos(2 degrees / 2)

    + +
    +
    + +

    ◆ mBodyPairCacheMaxDeltaPositionSq

    + +
    +
    + + + + +
    float PhysicsSettings::mBodyPairCacheMaxDeltaPositionSq = Square(0.001f)
    +
    + +

    Maximum relative delta position for body pairs to be able to reuse collision results from last frame (units: meter^2)

    +

    1 mm

    + +
    +
    + +

    ◆ mCheckActiveEdges

    + +
    +
    + + + + +
    bool PhysicsSettings::mCheckActiveEdges = true
    +
    + +

    When false, we prevent collision against non-active (shared) edges. Mainly for debugging the algorithm.

    + +
    +
    + +

    ◆ mConstraintWarmStart

    + +
    +
    + + + + +
    bool PhysicsSettings::mConstraintWarmStart = true
    +
    + +

    Whether or not to use warm starting for constraints (initially applying previous frames impulses)

    + +
    +
    + +

    ◆ mContactNormalCosMaxDeltaRotation

    + +
    +
    + + + + +
    float PhysicsSettings::mContactNormalCosMaxDeltaRotation = 0.99619469809174553229501040247389f
    +
    + +

    Maximum angle between normals that allows manifolds between different sub shapes of the same body pair to be combined.

    +

    cos(5 degree)

    + +
    +
    + +

    ◆ mContactPointPreserveLambdaMaxDistSq

    + +
    +
    + + + + +
    float PhysicsSettings::mContactPointPreserveLambdaMaxDistSq = Square(0.01f)
    +
    + +

    Maximum allowed distance between old and new contact point to preserve contact forces for warm start (units: meter^2)

    +

    1 cm

    + +
    +
    + +

    ◆ mDeterministicSimulation

    + +
    +
    + + + + +
    bool PhysicsSettings::mDeterministicSimulation = true
    +
    + +

    By default the simulation is deterministic, it is possible to turn this off by setting this setting to false. This will make the simulation run faster but it will no longer be deterministic.

    + +
    +
    + +

    ◆ mLinearCastMaxPenetration

    + +
    +
    + + + + +
    float PhysicsSettings::mLinearCastMaxPenetration = 0.25f
    +
    + +

    Fraction of its inner radius a body may penetrate another body for the LinearCast motion quality.

    + +
    +
    + +

    ◆ mLinearCastThreshold

    + +
    +
    + + + + +
    float PhysicsSettings::mLinearCastThreshold = 0.75f
    +
    + +

    Fraction of its inner radius a body must move per step to enable casting for the LinearCast motion quality.

    + +
    +
    + +

    ◆ mManifoldToleranceSq

    + +
    +
    + + + + +
    float PhysicsSettings::mManifoldToleranceSq = 1.0e-6f
    +
    + +

    Max squared distance to use to determine if two points are on the same plane for determining the contact manifold between two shape faces (unit: meter^2)

    + +
    +
    + +

    ◆ mMaxInFlightBodyPairs

    + +
    +
    + + + + +
    JPH_OVERRIDE_NEW_DELETE int PhysicsSettings::mMaxInFlightBodyPairs = 16384
    +
    +

    Size of body pairs array, corresponds to the maximum amount of potential body pairs that can be in flight at any time. Setting this to a low value will use less memory but slow down simulation as threads may run out of narrow phase work.

    + +
    +
    + +

    ◆ mMaxPenetrationDistance

    + +
    +
    + + + + +
    float PhysicsSettings::mMaxPenetrationDistance = 0.2f
    +
    + +

    Maximum distance to correct in a single iteration when solving position constraints (unit: meters)

    + +
    +
    + +

    ◆ mMinVelocityForRestitution

    + +
    +
    + + + + +
    float PhysicsSettings::mMinVelocityForRestitution = 1.0f
    +
    + +

    Minimal velocity needed before a collision can be elastic (unit: m)

    + +
    +
    + +

    ◆ mNumPositionSteps

    + +
    +
    + + + + +
    uint PhysicsSettings::mNumPositionSteps = 2
    +
    + +

    Number of solver position iterations to run.

    + +
    +
    + +

    ◆ mNumVelocitySteps

    + +
    +
    + + + + +
    uint PhysicsSettings::mNumVelocitySteps = 10
    +
    +

    Number of solver velocity iterations to run Note that this needs to be >= 2 in order for friction to work (friction is applied using the non-penetration impulse from the previous iteration)

    + +
    +
    + +

    ◆ mPenetrationSlop

    + +
    +
    + + + + +
    float PhysicsSettings::mPenetrationSlop = 0.02f
    +
    + +

    How much bodies are allowed to sink into each other (unit: meters)

    + +
    +
    + +

    ◆ mPointVelocitySleepThreshold

    + +
    +
    + + + + +
    float PhysicsSettings::mPointVelocitySleepThreshold = 0.03f
    +
    + +

    Velocity of points on bounding box of object below which an object can be considered sleeping (unit: m/s)

    + +
    +
    + +

    ◆ mSpeculativeContactDistance

    + +
    +
    + + + + +
    float PhysicsSettings::mSpeculativeContactDistance = 0.02f
    +
    +

    Radius around objects inside which speculative contact points will be detected. Note that if this is too big you will get ghost collisions as speculative contacts are based on the closest points during the collision detection step which may not be the actual closest points by the time the two objects hit (unit: meters)

    + +
    +
    + +

    ◆ mStepListenerBatchesPerJob

    + +
    +
    + + + + +
    int PhysicsSettings::mStepListenerBatchesPerJob = 1
    +
    + +

    How many step listener batches are needed before spawning another job (set to INT_MAX if no parallelism is desired)

    + +
    +
    + +

    ◆ mStepListenersBatchSize

    + +
    +
    + + + + +
    int PhysicsSettings::mStepListenersBatchSize = 8
    +
    + +

    How many PhysicsStepListeners to notify in 1 batch.

    + +
    +
    + +

    ◆ mTimeBeforeSleep

    + +
    +
    + + + + +
    float PhysicsSettings::mTimeBeforeSleep = 0.5f
    +
    + +

    Time before object is allowed to go to sleep (unit: seconds)

    + +
    +
    + +

    ◆ mUseBodyPairContactCache

    + +
    +
    + + + + +
    bool PhysicsSettings::mUseBodyPairContactCache = true
    +
    + +

    Whether or not to use the body pair cache, which removes the need for narrow phase collision detection when orientation between two bodies didn't change.

    + +
    +
    + +

    ◆ mUseLargeIslandSplitter

    + +
    +
    + + + + +
    bool PhysicsSettings::mUseLargeIslandSplitter = true
    +
    + +

    If we split up large islands into smaller parallel batches of work (to improve performance)

    + +
    +
    + +

    ◆ mUseManifoldReduction

    + +
    +
    + + + + +
    bool PhysicsSettings::mUseManifoldReduction = true
    +
    + +

    Whether or not to reduce manifolds with similar contact normals into one contact manifold (see description at Body::SetUseManifoldReduction)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_physics_settings.js b/struct_physics_settings.js new file mode 100644 index 000000000..b942bfbe9 --- /dev/null +++ b/struct_physics_settings.js @@ -0,0 +1,29 @@ +var struct_physics_settings = +[ + [ "mAllowSleeping", "struct_physics_settings.html#a5386b79ed560a23cdbe06482b5a58de6", null ], + [ "mBaumgarte", "struct_physics_settings.html#ae1969d17d76a46e36471e1289d02355f", null ], + [ "mBodyPairCacheCosMaxDeltaRotationDiv2", "struct_physics_settings.html#ac56cd29f1987d79e105e5bf443254c3e", null ], + [ "mBodyPairCacheMaxDeltaPositionSq", "struct_physics_settings.html#a739d00b8a125095ee04c70981244f1be", null ], + [ "mCheckActiveEdges", "struct_physics_settings.html#ad5b9533124cc07d57c5dd7ff050caba7", null ], + [ "mConstraintWarmStart", "struct_physics_settings.html#ad477a1ff8add4e1f8684b131c1485480", null ], + [ "mContactNormalCosMaxDeltaRotation", "struct_physics_settings.html#aefc600483ad1234713fbd572f80f00da", null ], + [ "mContactPointPreserveLambdaMaxDistSq", "struct_physics_settings.html#a69350ac3ff30bca78c45d402938a3ebf", null ], + [ "mDeterministicSimulation", "struct_physics_settings.html#aee2d7c40a127dc9c347d3b84b24ab4e3", null ], + [ "mLinearCastMaxPenetration", "struct_physics_settings.html#aa5090787a0d12a9e7519da9e752de0e7", null ], + [ "mLinearCastThreshold", "struct_physics_settings.html#ab5580db2e8580b84eb6be01a24cc54c4", null ], + [ "mManifoldToleranceSq", "struct_physics_settings.html#ae045877d52a061978eb78569b96b0b62", null ], + [ "mMaxInFlightBodyPairs", "struct_physics_settings.html#a4b51fef768d4839927757e9b3ae65177", null ], + [ "mMaxPenetrationDistance", "struct_physics_settings.html#a85f7318d995294af04d6a5c0fe0d01a6", null ], + [ "mMinVelocityForRestitution", "struct_physics_settings.html#a3f68f35ad1244421ad126d3db5a617f3", null ], + [ "mNumPositionSteps", "struct_physics_settings.html#a3724f8c1ef9269076dac93c4d7b7cfdb", null ], + [ "mNumVelocitySteps", "struct_physics_settings.html#a66af679ba7f202b402bb23d0a0e117ad", null ], + [ "mPenetrationSlop", "struct_physics_settings.html#a9aff2f46a311da4e48974dce7e3b4cee", null ], + [ "mPointVelocitySleepThreshold", "struct_physics_settings.html#aae6093b99380ed5b72f5af1cc6529785", null ], + [ "mSpeculativeContactDistance", "struct_physics_settings.html#a9d7cb8a2c982e6c63e4def8fcd88d7fb", null ], + [ "mStepListenerBatchesPerJob", "struct_physics_settings.html#af9a3ca565935d36351a646e82ffe0867", null ], + [ "mStepListenersBatchSize", "struct_physics_settings.html#a646cc49b1095c6c682189ba15d4de67f", null ], + [ "mTimeBeforeSleep", "struct_physics_settings.html#a0bd7d6eb98c547488f874a9577fff451", null ], + [ "mUseBodyPairContactCache", "struct_physics_settings.html#a5a6d3286936ff2f74d1cf106e8ebf3f6", null ], + [ "mUseLargeIslandSplitter", "struct_physics_settings.html#ad391d29bbd9cd0cc0ce6358adb501e97", null ], + [ "mUseManifoldReduction", "struct_physics_settings.html#af715e8c12331e908a82768501d09db97", null ] +]; \ No newline at end of file diff --git a/struct_physics_update_context_1_1_body_pair_queue-members.html b/struct_physics_update_context_1_1_body_pair_queue-members.html new file mode 100644 index 000000000..e9b309074 --- /dev/null +++ b/struct_physics_update_context_1_1_body_pair_queue-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    PhysicsUpdateContext::BodyPairQueue Member List
    +
    + +
    + + + + diff --git a/struct_physics_update_context_1_1_body_pair_queue.html b/struct_physics_update_context_1_1_body_pair_queue.html new file mode 100644 index 000000000..bdcd06f54 --- /dev/null +++ b/struct_physics_update_context_1_1_body_pair_queue.html @@ -0,0 +1,203 @@ + + + + + + + +Jolt Physics: PhysicsUpdateContext::BodyPairQueue Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    PhysicsUpdateContext::BodyPairQueue Struct Reference
    +
    +
    + +

    #include <PhysicsUpdateContext.h>

    + + + + + + + + + + + + + + +

    +Public Attributes

    atomic< uint32mWriteIdx { 0 }
     Next index to write in mBodyPair array (need to add thread index * mMaxBodyPairsPerQueue and modulo mMaxBodyPairsPerQueue)
     
    uint8 mPadding1 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
     Moved to own cache line to avoid conflicts with consumer jobs.
     
    atomic< uint32mReadIdx { 0 }
     Next index to read in mBodyPair array (need to add thread index * mMaxBodyPairsPerQueue and modulo mMaxBodyPairsPerQueue)
     
    uint8 mPadding2 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
     Moved to own cache line to avoid conflicts with producer/consumer jobs.
     
    +

    Member Data Documentation

    + +

    ◆ mPadding1

    + +
    +
    + + + + +
    uint8 PhysicsUpdateContext::BodyPairQueue::mPadding1[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
    +
    + +

    Moved to own cache line to avoid conflicts with consumer jobs.

    + +
    +
    + +

    ◆ mPadding2

    + +
    +
    + + + + +
    uint8 PhysicsUpdateContext::BodyPairQueue::mPadding2[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
    +
    + +

    Moved to own cache line to avoid conflicts with producer/consumer jobs.

    + +
    +
    + +

    ◆ mReadIdx

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::BodyPairQueue::mReadIdx { 0 }
    +
    + +

    Next index to read in mBodyPair array (need to add thread index * mMaxBodyPairsPerQueue and modulo mMaxBodyPairsPerQueue)

    + +
    +
    + +

    ◆ mWriteIdx

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::BodyPairQueue::mWriteIdx { 0 }
    +
    + +

    Next index to write in mBodyPair array (need to add thread index * mMaxBodyPairsPerQueue and modulo mMaxBodyPairsPerQueue)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_physics_update_context_1_1_body_pair_queue.js b/struct_physics_update_context_1_1_body_pair_queue.js new file mode 100644 index 000000000..7a1c7f96f --- /dev/null +++ b/struct_physics_update_context_1_1_body_pair_queue.js @@ -0,0 +1,7 @@ +var struct_physics_update_context_1_1_body_pair_queue = +[ + [ "mPadding1", "struct_physics_update_context_1_1_body_pair_queue.html#a6b5b5872901d9cdfa32c9507b53e4920", null ], + [ "mPadding2", "struct_physics_update_context_1_1_body_pair_queue.html#a72e1a83841d0ef254a8f242537d93b96", null ], + [ "mReadIdx", "struct_physics_update_context_1_1_body_pair_queue.html#a2022c7c479b154d1c42d4351c8d12ea4", null ], + [ "mWriteIdx", "struct_physics_update_context_1_1_body_pair_queue.html#abbf11d72c4fe4c3e5f7558f1b87c0495", null ] +]; \ No newline at end of file diff --git a/struct_physics_update_context_1_1_step-members.html b/struct_physics_update_context_1_1_step-members.html new file mode 100644 index 000000000..ab6504931 --- /dev/null +++ b/struct_physics_update_context_1_1_step-members.html @@ -0,0 +1,171 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    PhysicsUpdateContext::Step Member List
    +
    +
    + +

    This is the complete list of members for PhysicsUpdateContext::Step, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    mActiveBodyReadIdxPhysicsUpdateContext::Step
    mActiveBodyToCCDBodyPhysicsUpdateContext::Step
    mActiveFindCollisionJobsPhysicsUpdateContext::Step
    mApplyGravityPhysicsUpdateContext::Step
    mApplyGravityReadIdxPhysicsUpdateContext::Step
    mBodyPairQueuesPhysicsUpdateContext::Step
    mBodySetIslandIndexPhysicsUpdateContext::Step
    mBroadPhasePreparePhysicsUpdateContext::Step
    mBroadPhaseUpdateStatePhysicsUpdateContext::Step
    mBuildIslandsFromConstraintsPhysicsUpdateContext::Step
    mCCDBodiesPhysicsUpdateContext::Step
    mCCDBodiesCapacityPhysicsUpdateContext::Step
    mContactRemovedCallbacksPhysicsUpdateContext::Step
    mContextPhysicsUpdateContext::Step
    mDetermineActiveConstraintReadIdxPhysicsUpdateContext::Step
    mDetermineActiveConstraintsPhysicsUpdateContext::Step
    mFinalizeIslandsPhysicsUpdateContext::Step
    mFindCollisionsPhysicsUpdateContext::Step
    mIntegrateVelocityPhysicsUpdateContext::Step
    mIntegrateVelocityReadIdxPhysicsUpdateContext::Step
    mIsFirstPhysicsUpdateContext::Step
    mIsLastPhysicsUpdateContext::Step
    mMaxBodyPairsPerQueuePhysicsUpdateContext::Step
    mNextCCDBodyPhysicsUpdateContext::Step
    mNumActiveBodiesAtStepStartPhysicsUpdateContext::Step
    mNumActiveBodyToCCDBodyPhysicsUpdateContext::Step
    mNumActiveConstraintsPhysicsUpdateContext::Step
    mNumBodyPairsPhysicsUpdateContext::Step
    mNumCCDBodiesPhysicsUpdateContext::Step
    mNumManifoldsPhysicsUpdateContext::Step
    mPadding1PhysicsUpdateContext::Step
    mPadding2PhysicsUpdateContext::Step
    mPadding3PhysicsUpdateContext::Step
    mPadding4PhysicsUpdateContext::Step
    mPadding5PhysicsUpdateContext::Step
    mPadding6PhysicsUpdateContext::Step
    mPostIntegrateVelocityPhysicsUpdateContext::Step
    mPreIntegrateVelocityPhysicsUpdateContext::Step
    mResolveCCDContactsPhysicsUpdateContext::Step
    mSetupVelocityConstraintsPhysicsUpdateContext::Step
    mSetupVelocityConstraintsReadIdxPhysicsUpdateContext::Step
    mSoftBodyCollidePhysicsUpdateContext::Step
    mSoftBodyFinalizePhysicsUpdateContext::Step
    mSoftBodyPreparePhysicsUpdateContext::Step
    mSoftBodySimulatePhysicsUpdateContext::Step
    mSolvePositionConstraintsPhysicsUpdateContext::Step
    mSolvePositionConstraintsNextIslandPhysicsUpdateContext::Step
    mSolveVelocityConstraintsPhysicsUpdateContext::Step
    mSolveVelocityConstraintsNextIslandPhysicsUpdateContext::Step
    mStartNextStepPhysicsUpdateContext::Step
    mStepListenerReadIdxPhysicsUpdateContext::Step
    mStepListenersPhysicsUpdateContext::Step
    mUpdateBroadphaseFinalizePhysicsUpdateContext::Step
    Step()=defaultPhysicsUpdateContext::Step
    Step(const Step &)PhysicsUpdateContext::Stepinline
    +
    + + + + diff --git a/struct_physics_update_context_1_1_step.html b/struct_physics_update_context_1_1_step.html new file mode 100644 index 000000000..c2dfc36c5 --- /dev/null +++ b/struct_physics_update_context_1_1_step.html @@ -0,0 +1,1206 @@ + + + + + + + +Jolt Physics: PhysicsUpdateContext::Step Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    PhysicsUpdateContext::Step Struct Reference
    +
    +
    + +

    Structure that contains data needed for each collision step. + More...

    + +

    #include <PhysicsUpdateContext.h>

    + + + + + +

    +Classes

    struct  CCDBody
     Contains the information needed to cast a body through the scene to do continuous collision detection. More...
     
    + + + + + +

    +Public Member Functions

     Step ()=default
     
     Step (const Step &)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    PhysicsUpdateContextmContext
     The physics update context.
     
    bool mIsFirst
     If this is the first step.
     
    bool mIsLast
     If this is the last step.
     
    BroadPhase::UpdateState mBroadPhaseUpdateState
     Handle returned by Broadphase::UpdatePrepare.
     
    uint32 mNumActiveBodiesAtStepStart
     Number of bodies that were active at the start of the physics update step. Only these bodies will receive gravity (they are the first N in the active body list).
     
    atomic< uint32mDetermineActiveConstraintReadIdx { 0 }
     Next constraint for determine active constraints.
     
    uint8 mPadding1 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
     Padding to avoid sharing cache line with the next atomic.
     
    atomic< uint32mNumActiveConstraints { 0 }
     Number of constraints in the mActiveConstraints array.
     
    uint8 mPadding2 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
     Padding to avoid sharing cache line with the next atomic.
     
    atomic< uint32mSetupVelocityConstraintsReadIdx { 0 }
     Next constraint for setting up velocity constraints.
     
    uint8 mPadding3 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
     Padding to avoid sharing cache line with the next atomic.
     
    atomic< uint32mStepListenerReadIdx { 0 }
     Next step listener to call.
     
    uint8 mPadding4 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
     Padding to avoid sharing cache line with the next atomic.
     
    atomic< uint32mApplyGravityReadIdx { 0 }
     Next body to apply gravity to.
     
    uint8 mPadding5 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
     Padding to avoid sharing cache line with the next atomic.
     
    atomic< uint32mActiveBodyReadIdx { 0 }
     Index of fist active body that has not yet been processed by the broadphase.
     
    uint8 mPadding6 [JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
     Padding to avoid sharing cache line with the next atomic.
     
    BodyPairQueues mBodyPairQueues
     Queues in which to put body pairs that need to be tested by the narrowphase.
     
    uint32 mMaxBodyPairsPerQueue
     Amount of body pairs that we can queue per queue.
     
    atomic< JobMaskmActiveFindCollisionJobs
     A bitmask that indicates which jobs are still active.
     
    atomic< uintmNumBodyPairs { 0 }
     The number of body pairs found in this step (used to size the contact cache in the next step)
     
    atomic< uintmNumManifolds { 0 }
     The number of manifolds found in this step (used to size the contact cache in the next step)
     
    atomic< uint32mSolveVelocityConstraintsNextIsland { 0 }
     Next island that needs to be processed for the solve velocity constraints step (doesn't need own cache line since position jobs don't run at same time)
     
    atomic< uint32mSolvePositionConstraintsNextIsland { 0 }
     Next island that needs to be processed for the solve position constraints step (doesn't need own cache line since velocity jobs don't run at same time)
     
    atomic< uint32mIntegrateVelocityReadIdx { 0 }
     Next active body index to take when integrating velocities.
     
    CCDBodymCCDBodies = nullptr
     List of bodies that need to do continuous collision detection.
     
    uint32 mCCDBodiesCapacity = 0
     Capacity of the mCCDBodies list.
     
    atomic< uint32mNumCCDBodies = 0
     Number of CCD bodies in mCCDBodies.
     
    atomic< uint32mNextCCDBody { 0 }
     Next unprocessed body index in mCCDBodies.
     
    int * mActiveBodyToCCDBody = nullptr
     A mapping between an index in BodyManager::mActiveBodies and the index in mCCDBodies.
     
    uint32 mNumActiveBodyToCCDBody = 0
     Number of indices in mActiveBodyToCCDBody.
     
    JobHandle mBroadPhasePrepare
     Prepares the new tree in the background.
     
    JobHandleArray mStepListeners
     Listeners to notify of the beginning of a physics step.
     
    JobHandleArray mDetermineActiveConstraints
     Determine which constraints will be active during this step.
     
    JobHandleArray mApplyGravity
     Update velocities of bodies with gravity.
     
    JobHandleArray mFindCollisions
     Find all collisions between active bodies an the world.
     
    JobHandle mUpdateBroadphaseFinalize
     Swap the newly built tree with the current tree.
     
    JobHandleArray mSetupVelocityConstraints
     Calculate properties for all constraints in the constraint manager.
     
    JobHandle mBuildIslandsFromConstraints
     Go over all constraints and assign the bodies they're attached to to an island.
     
    JobHandle mFinalizeIslands
     Finalize calculation simulation islands.
     
    JobHandle mBodySetIslandIndex
     Set the current island index on each body (not used by the simulation, only for drawing purposes)
     
    JobHandleArray mSolveVelocityConstraints
     Solve the constraints in the velocity domain.
     
    JobHandle mPreIntegrateVelocity
     Setup integration of all body positions.
     
    JobHandleArray mIntegrateVelocity
     Integrate all body positions.
     
    JobHandle mPostIntegrateVelocity
     Finalize integration of all body positions.
     
    JobHandle mResolveCCDContacts
     Updates the positions and velocities for all bodies that need continuous collision detection.
     
    JobHandleArray mSolvePositionConstraints
     Solve all constraints in the position domain.
     
    JobHandle mContactRemovedCallbacks
     Calls the contact removed callbacks.
     
    JobHandle mSoftBodyPrepare
     Prepares updating the soft bodies.
     
    JobHandleArray mSoftBodyCollide
     Finds all colliding shapes for soft bodies.
     
    JobHandleArray mSoftBodySimulate
     Simulates all particles.
     
    JobHandle mSoftBodyFinalize
     Finalizes the soft body update.
     
    JobHandle mStartNextStep
     Job that kicks the next step (empty for the last step)
     
    +

    Detailed Description

    +

    Structure that contains data needed for each collision step.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Step() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    PhysicsUpdateContext::Step::Step ()
    +
    +default
    +
    + +
    +
    + +

    ◆ Step() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    PhysicsUpdateContext::Step::Step (const Step)
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mActiveBodyReadIdx

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::Step::mActiveBodyReadIdx { 0 }
    +
    + +

    Index of fist active body that has not yet been processed by the broadphase.

    + +
    +
    + +

    ◆ mActiveBodyToCCDBody

    + +
    +
    + + + + +
    int* PhysicsUpdateContext::Step::mActiveBodyToCCDBody = nullptr
    +
    + +

    A mapping between an index in BodyManager::mActiveBodies and the index in mCCDBodies.

    + +
    +
    + +

    ◆ mActiveFindCollisionJobs

    + +
    +
    + + + + +
    atomic<JobMask> PhysicsUpdateContext::Step::mActiveFindCollisionJobs
    +
    + +

    A bitmask that indicates which jobs are still active.

    + +
    +
    + +

    ◆ mApplyGravity

    + +
    +
    + + + + +
    JobHandleArray PhysicsUpdateContext::Step::mApplyGravity
    +
    + +

    Update velocities of bodies with gravity.

    + +
    +
    + +

    ◆ mApplyGravityReadIdx

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::Step::mApplyGravityReadIdx { 0 }
    +
    + +

    Next body to apply gravity to.

    + +
    +
    + +

    ◆ mBodyPairQueues

    + +
    +
    + + + + +
    BodyPairQueues PhysicsUpdateContext::Step::mBodyPairQueues
    +
    + +

    Queues in which to put body pairs that need to be tested by the narrowphase.

    + +
    +
    + +

    ◆ mBodySetIslandIndex

    + +
    +
    + + + + +
    JobHandle PhysicsUpdateContext::Step::mBodySetIslandIndex
    +
    + +

    Set the current island index on each body (not used by the simulation, only for drawing purposes)

    + +
    +
    + +

    ◆ mBroadPhasePrepare

    + +
    +
    + + + + +
    JobHandle PhysicsUpdateContext::Step::mBroadPhasePrepare
    +
    + +

    Prepares the new tree in the background.

    + +
    +
    + +

    ◆ mBroadPhaseUpdateState

    + +
    +
    + + + + +
    BroadPhase::UpdateState PhysicsUpdateContext::Step::mBroadPhaseUpdateState
    +
    + +

    Handle returned by Broadphase::UpdatePrepare.

    + +
    +
    + +

    ◆ mBuildIslandsFromConstraints

    + +
    +
    + + + + +
    JobHandle PhysicsUpdateContext::Step::mBuildIslandsFromConstraints
    +
    + +

    Go over all constraints and assign the bodies they're attached to to an island.

    + +
    +
    + +

    ◆ mCCDBodies

    + +
    +
    + + + + +
    CCDBody* PhysicsUpdateContext::Step::mCCDBodies = nullptr
    +
    + +

    List of bodies that need to do continuous collision detection.

    + +
    +
    + +

    ◆ mCCDBodiesCapacity

    + +
    +
    + + + + +
    uint32 PhysicsUpdateContext::Step::mCCDBodiesCapacity = 0
    +
    + +

    Capacity of the mCCDBodies list.

    + +
    +
    + +

    ◆ mContactRemovedCallbacks

    + +
    +
    + + + + +
    JobHandle PhysicsUpdateContext::Step::mContactRemovedCallbacks
    +
    + +

    Calls the contact removed callbacks.

    + +
    +
    + +

    ◆ mContext

    + +
    +
    + + + + +
    PhysicsUpdateContext* PhysicsUpdateContext::Step::mContext
    +
    + +

    The physics update context.

    + +
    +
    + +

    ◆ mDetermineActiveConstraintReadIdx

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::Step::mDetermineActiveConstraintReadIdx { 0 }
    +
    + +

    Next constraint for determine active constraints.

    + +
    +
    + +

    ◆ mDetermineActiveConstraints

    + +
    +
    + + + + +
    JobHandleArray PhysicsUpdateContext::Step::mDetermineActiveConstraints
    +
    + +

    Determine which constraints will be active during this step.

    + +
    +
    + +

    ◆ mFinalizeIslands

    + +
    +
    + + + + +
    JobHandle PhysicsUpdateContext::Step::mFinalizeIslands
    +
    + +

    Finalize calculation simulation islands.

    + +
    +
    + +

    ◆ mFindCollisions

    + +
    +
    + + + + +
    JobHandleArray PhysicsUpdateContext::Step::mFindCollisions
    +
    + +

    Find all collisions between active bodies an the world.

    + +
    +
    + +

    ◆ mIntegrateVelocity

    + +
    +
    + + + + +
    JobHandleArray PhysicsUpdateContext::Step::mIntegrateVelocity
    +
    + +

    Integrate all body positions.

    + +
    +
    + +

    ◆ mIntegrateVelocityReadIdx

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::Step::mIntegrateVelocityReadIdx { 0 }
    +
    + +

    Next active body index to take when integrating velocities.

    + +
    +
    + +

    ◆ mIsFirst

    + +
    +
    + + + + +
    bool PhysicsUpdateContext::Step::mIsFirst
    +
    + +

    If this is the first step.

    + +
    +
    + +

    ◆ mIsLast

    + +
    +
    + + + + +
    bool PhysicsUpdateContext::Step::mIsLast
    +
    + +

    If this is the last step.

    + +
    +
    + +

    ◆ mMaxBodyPairsPerQueue

    + +
    +
    + + + + +
    uint32 PhysicsUpdateContext::Step::mMaxBodyPairsPerQueue
    +
    + +

    Amount of body pairs that we can queue per queue.

    + +
    +
    + +

    ◆ mNextCCDBody

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::Step::mNextCCDBody { 0 }
    +
    + +

    Next unprocessed body index in mCCDBodies.

    + +
    +
    + +

    ◆ mNumActiveBodiesAtStepStart

    + +
    +
    + + + + +
    uint32 PhysicsUpdateContext::Step::mNumActiveBodiesAtStepStart
    +
    + +

    Number of bodies that were active at the start of the physics update step. Only these bodies will receive gravity (they are the first N in the active body list).

    + +
    +
    + +

    ◆ mNumActiveBodyToCCDBody

    + +
    +
    + + + + +
    uint32 PhysicsUpdateContext::Step::mNumActiveBodyToCCDBody = 0
    +
    + +

    Number of indices in mActiveBodyToCCDBody.

    + +
    +
    + +

    ◆ mNumActiveConstraints

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::Step::mNumActiveConstraints { 0 }
    +
    + +

    Number of constraints in the mActiveConstraints array.

    + +
    +
    + +

    ◆ mNumBodyPairs

    + +
    +
    + + + + +
    atomic<uint> PhysicsUpdateContext::Step::mNumBodyPairs { 0 }
    +
    + +

    The number of body pairs found in this step (used to size the contact cache in the next step)

    + +
    +
    + +

    ◆ mNumCCDBodies

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::Step::mNumCCDBodies = 0
    +
    + +

    Number of CCD bodies in mCCDBodies.

    + +
    +
    + +

    ◆ mNumManifolds

    + +
    +
    + + + + +
    atomic<uint> PhysicsUpdateContext::Step::mNumManifolds { 0 }
    +
    + +

    The number of manifolds found in this step (used to size the contact cache in the next step)

    + +
    +
    + +

    ◆ mPadding1

    + +
    +
    + + + + +
    uint8 PhysicsUpdateContext::Step::mPadding1[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
    +
    + +

    Padding to avoid sharing cache line with the next atomic.

    + +
    +
    + +

    ◆ mPadding2

    + +
    +
    + + + + +
    uint8 PhysicsUpdateContext::Step::mPadding2[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
    +
    + +

    Padding to avoid sharing cache line with the next atomic.

    + +
    +
    + +

    ◆ mPadding3

    + +
    +
    + + + + +
    uint8 PhysicsUpdateContext::Step::mPadding3[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
    +
    + +

    Padding to avoid sharing cache line with the next atomic.

    + +
    +
    + +

    ◆ mPadding4

    + +
    +
    + + + + +
    uint8 PhysicsUpdateContext::Step::mPadding4[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
    +
    + +

    Padding to avoid sharing cache line with the next atomic.

    + +
    +
    + +

    ◆ mPadding5

    + +
    +
    + + + + +
    uint8 PhysicsUpdateContext::Step::mPadding5[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
    +
    + +

    Padding to avoid sharing cache line with the next atomic.

    + +
    +
    + +

    ◆ mPadding6

    + +
    +
    + + + + +
    uint8 PhysicsUpdateContext::Step::mPadding6[JPH_CACHE_LINE_SIZE - sizeof(atomic< uint32 >)]
    +
    + +

    Padding to avoid sharing cache line with the next atomic.

    + +
    +
    + +

    ◆ mPostIntegrateVelocity

    + +
    +
    + + + + +
    JobHandle PhysicsUpdateContext::Step::mPostIntegrateVelocity
    +
    + +

    Finalize integration of all body positions.

    + +
    +
    + +

    ◆ mPreIntegrateVelocity

    + +
    +
    + + + + +
    JobHandle PhysicsUpdateContext::Step::mPreIntegrateVelocity
    +
    + +

    Setup integration of all body positions.

    + +
    +
    + +

    ◆ mResolveCCDContacts

    + +
    +
    + + + + +
    JobHandle PhysicsUpdateContext::Step::mResolveCCDContacts
    +
    + +

    Updates the positions and velocities for all bodies that need continuous collision detection.

    + +
    +
    + +

    ◆ mSetupVelocityConstraints

    + +
    +
    + + + + +
    JobHandleArray PhysicsUpdateContext::Step::mSetupVelocityConstraints
    +
    + +

    Calculate properties for all constraints in the constraint manager.

    + +
    +
    + +

    ◆ mSetupVelocityConstraintsReadIdx

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::Step::mSetupVelocityConstraintsReadIdx { 0 }
    +
    + +

    Next constraint for setting up velocity constraints.

    + +
    +
    + +

    ◆ mSoftBodyCollide

    + +
    +
    + + + + +
    JobHandleArray PhysicsUpdateContext::Step::mSoftBodyCollide
    +
    + +

    Finds all colliding shapes for soft bodies.

    + +
    +
    + +

    ◆ mSoftBodyFinalize

    + +
    +
    + + + + +
    JobHandle PhysicsUpdateContext::Step::mSoftBodyFinalize
    +
    + +

    Finalizes the soft body update.

    + +
    +
    + +

    ◆ mSoftBodyPrepare

    + +
    +
    + + + + +
    JobHandle PhysicsUpdateContext::Step::mSoftBodyPrepare
    +
    + +

    Prepares updating the soft bodies.

    + +
    +
    + +

    ◆ mSoftBodySimulate

    + +
    +
    + + + + +
    JobHandleArray PhysicsUpdateContext::Step::mSoftBodySimulate
    +
    + +

    Simulates all particles.

    + +
    +
    + +

    ◆ mSolvePositionConstraints

    + +
    +
    + + + + +
    JobHandleArray PhysicsUpdateContext::Step::mSolvePositionConstraints
    +
    + +

    Solve all constraints in the position domain.

    + +
    +
    + +

    ◆ mSolvePositionConstraintsNextIsland

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::Step::mSolvePositionConstraintsNextIsland { 0 }
    +
    + +

    Next island that needs to be processed for the solve position constraints step (doesn't need own cache line since velocity jobs don't run at same time)

    + +
    +
    + +

    ◆ mSolveVelocityConstraints

    + +
    +
    + + + + +
    JobHandleArray PhysicsUpdateContext::Step::mSolveVelocityConstraints
    +
    + +

    Solve the constraints in the velocity domain.

    + +
    +
    + +

    ◆ mSolveVelocityConstraintsNextIsland

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::Step::mSolveVelocityConstraintsNextIsland { 0 }
    +
    + +

    Next island that needs to be processed for the solve velocity constraints step (doesn't need own cache line since position jobs don't run at same time)

    + +
    +
    + +

    ◆ mStartNextStep

    + +
    +
    + + + + +
    JobHandle PhysicsUpdateContext::Step::mStartNextStep
    +
    + +

    Job that kicks the next step (empty for the last step)

    + +
    +
    + +

    ◆ mStepListenerReadIdx

    + +
    +
    + + + + +
    atomic<uint32> PhysicsUpdateContext::Step::mStepListenerReadIdx { 0 }
    +
    + +

    Next step listener to call.

    + +
    +
    + +

    ◆ mStepListeners

    + +
    +
    + + + + +
    JobHandleArray PhysicsUpdateContext::Step::mStepListeners
    +
    + +

    Listeners to notify of the beginning of a physics step.

    + +
    +
    + +

    ◆ mUpdateBroadphaseFinalize

    + +
    +
    + + + + +
    JobHandle PhysicsUpdateContext::Step::mUpdateBroadphaseFinalize
    +
    + +

    Swap the newly built tree with the current tree.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_physics_update_context_1_1_step.js b/struct_physics_update_context_1_1_step.js new file mode 100644 index 000000000..779c15565 --- /dev/null +++ b/struct_physics_update_context_1_1_step.js @@ -0,0 +1,59 @@ +var struct_physics_update_context_1_1_step = +[ + [ "CCDBody", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html", "struct_physics_update_context_1_1_step_1_1_c_c_d_body" ], + [ "Step", "struct_physics_update_context_1_1_step.html#a9ec562500a7a59cafbf7d6ce138f702a", null ], + [ "Step", "struct_physics_update_context_1_1_step.html#a806fa33748fb5724711d2244c55ac119", null ], + [ "mActiveBodyReadIdx", "struct_physics_update_context_1_1_step.html#a5f32b22178d4cc044a96d59d41250916", null ], + [ "mActiveBodyToCCDBody", "struct_physics_update_context_1_1_step.html#aef1c5722bfe92d852c8525347e175f3d", null ], + [ "mActiveFindCollisionJobs", "struct_physics_update_context_1_1_step.html#aa3ef4344525797671470875550d736fc", null ], + [ "mApplyGravity", "struct_physics_update_context_1_1_step.html#a6c7ca3641f8ae1ab1f8b808b6cf25356", null ], + [ "mApplyGravityReadIdx", "struct_physics_update_context_1_1_step.html#ad8016f86c45bb3092259e91ff0f6c426", null ], + [ "mBodyPairQueues", "struct_physics_update_context_1_1_step.html#af8fbffcba6d3b5adbdeb98c1d63903fe", null ], + [ "mBodySetIslandIndex", "struct_physics_update_context_1_1_step.html#aa88b6bb72d389f72577406ed0f96cfbb", null ], + [ "mBroadPhasePrepare", "struct_physics_update_context_1_1_step.html#aff65a027fe90606d02f82dec03e62c3c", null ], + [ "mBroadPhaseUpdateState", "struct_physics_update_context_1_1_step.html#af2f3ce30f63e94c229d1363a43da9aca", null ], + [ "mBuildIslandsFromConstraints", "struct_physics_update_context_1_1_step.html#a3176929769d4b2fa200a279beb127d33", null ], + [ "mCCDBodies", "struct_physics_update_context_1_1_step.html#a895ea4985300d99b5aa9e042fe1e3f70", null ], + [ "mCCDBodiesCapacity", "struct_physics_update_context_1_1_step.html#a2d6f2ae1c7e3744a5189bc8ecc958978", null ], + [ "mContactRemovedCallbacks", "struct_physics_update_context_1_1_step.html#a2fc477198ee62afd4f842070754fe46e", null ], + [ "mContext", "struct_physics_update_context_1_1_step.html#acfb1fe9af1d8ea1e6c10964a1a73915d", null ], + [ "mDetermineActiveConstraintReadIdx", "struct_physics_update_context_1_1_step.html#af1cea849e2511fadd96fec484c84ab43", null ], + [ "mDetermineActiveConstraints", "struct_physics_update_context_1_1_step.html#aeb981c58858a0e99712f3561f12d72e9", null ], + [ "mFinalizeIslands", "struct_physics_update_context_1_1_step.html#aac4325e64e7bb9a135478c4378185dcf", null ], + [ "mFindCollisions", "struct_physics_update_context_1_1_step.html#a07546c1e4391dbf65e4d5a615f5432b4", null ], + [ "mIntegrateVelocity", "struct_physics_update_context_1_1_step.html#a6acbdc84376f0eb1eb55e0f24bd704ec", null ], + [ "mIntegrateVelocityReadIdx", "struct_physics_update_context_1_1_step.html#aeb6a6b1469da472e0c419341085c12e1", null ], + [ "mIsFirst", "struct_physics_update_context_1_1_step.html#a88d7397f7a46e0455738d46efa50a1ac", null ], + [ "mIsLast", "struct_physics_update_context_1_1_step.html#a0ec883309d690e463275cb9932cb64c1", null ], + [ "mMaxBodyPairsPerQueue", "struct_physics_update_context_1_1_step.html#ad93f9b39dad02dee27f009f63468d5f0", null ], + [ "mNextCCDBody", "struct_physics_update_context_1_1_step.html#ad1486be5c2c1c60f8307cd6a2c66f1f1", null ], + [ "mNumActiveBodiesAtStepStart", "struct_physics_update_context_1_1_step.html#a6a113f4d900ccaaf2bcc52584654f569", null ], + [ "mNumActiveBodyToCCDBody", "struct_physics_update_context_1_1_step.html#a0d2367602d2e7b6d33387458c0eb3e8b", null ], + [ "mNumActiveConstraints", "struct_physics_update_context_1_1_step.html#af0ee5aea31c2282efaa0df4b55401424", null ], + [ "mNumBodyPairs", "struct_physics_update_context_1_1_step.html#a2f4b4efc242a2e45e369bbf6cc6a9d0b", null ], + [ "mNumCCDBodies", "struct_physics_update_context_1_1_step.html#a25ec4e61e44004a320440ed279a8da4c", null ], + [ "mNumManifolds", "struct_physics_update_context_1_1_step.html#a694dd2809042d7614c64b2abdf26e73f", null ], + [ "mPadding1", "struct_physics_update_context_1_1_step.html#a77e0a019809ed80613a75e3f7b5217c6", null ], + [ "mPadding2", "struct_physics_update_context_1_1_step.html#a4b8740c5f4ed9785bac06320cc762487", null ], + [ "mPadding3", "struct_physics_update_context_1_1_step.html#a16b0d33b3a5f7755e033bb2c400ab8ac", null ], + [ "mPadding4", "struct_physics_update_context_1_1_step.html#a07c8e8051345d5106cf1cd8ee8df14d3", null ], + [ "mPadding5", "struct_physics_update_context_1_1_step.html#a806337c54e4bd1ef4dcb3eae0dd4ea72", null ], + [ "mPadding6", "struct_physics_update_context_1_1_step.html#a16066c34dd3882810d28dc9d0e8dd2d5", null ], + [ "mPostIntegrateVelocity", "struct_physics_update_context_1_1_step.html#a1c491fd0b7d20d6b49e7be2b55ef48d5", null ], + [ "mPreIntegrateVelocity", "struct_physics_update_context_1_1_step.html#a1f089199fc6b1d0fc6fb973d2750d32a", null ], + [ "mResolveCCDContacts", "struct_physics_update_context_1_1_step.html#a6bd9110000ab8f670192a1c91677571f", null ], + [ "mSetupVelocityConstraints", "struct_physics_update_context_1_1_step.html#aa342675e2a78c65451953075a0facbb8", null ], + [ "mSetupVelocityConstraintsReadIdx", "struct_physics_update_context_1_1_step.html#a6be869a18ebbdd1cc59cd2b27da5e488", null ], + [ "mSoftBodyCollide", "struct_physics_update_context_1_1_step.html#a15902e388880930871d31f3c93e509fa", null ], + [ "mSoftBodyFinalize", "struct_physics_update_context_1_1_step.html#a5b44a2bcca8b605084adaa148bcfa090", null ], + [ "mSoftBodyPrepare", "struct_physics_update_context_1_1_step.html#afce2da019e38496dac8112213ca0cbf9", null ], + [ "mSoftBodySimulate", "struct_physics_update_context_1_1_step.html#acd7047a6c7f6bcf496cdf8250f143780", null ], + [ "mSolvePositionConstraints", "struct_physics_update_context_1_1_step.html#a42542a887195fdbe5451a4c6dc38d4f9", null ], + [ "mSolvePositionConstraintsNextIsland", "struct_physics_update_context_1_1_step.html#a664416b66a92b704fa6557311862c9e0", null ], + [ "mSolveVelocityConstraints", "struct_physics_update_context_1_1_step.html#a17baea78265815e3873c968326eb08e6", null ], + [ "mSolveVelocityConstraintsNextIsland", "struct_physics_update_context_1_1_step.html#a0a81eaf0dd6d5042c7ad171c626b8ecb", null ], + [ "mStartNextStep", "struct_physics_update_context_1_1_step.html#a8648fd2c91cb4f4fc003682c09a56779", null ], + [ "mStepListenerReadIdx", "struct_physics_update_context_1_1_step.html#a295a55ea8456a023f402bdd731b59922", null ], + [ "mStepListeners", "struct_physics_update_context_1_1_step.html#ab660abd26126a1e92afee5e2d08dc4d5", null ], + [ "mUpdateBroadphaseFinalize", "struct_physics_update_context_1_1_step.html#abd9bafeccce1674c48d08f4edc56e739", null ] +]; \ No newline at end of file diff --git a/struct_physics_update_context_1_1_step_1_1_c_c_d_body-members.html b/struct_physics_update_context_1_1_step_1_1_c_c_d_body-members.html new file mode 100644 index 000000000..fda5c5b56 --- /dev/null +++ b/struct_physics_update_context_1_1_step_1_1_c_c_d_body-members.html @@ -0,0 +1,128 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/struct_physics_update_context_1_1_step_1_1_c_c_d_body.html b/struct_physics_update_context_1_1_step_1_1_c_c_d_body.html new file mode 100644 index 000000000..1d317ddc9 --- /dev/null +++ b/struct_physics_update_context_1_1_step_1_1_c_c_d_body.html @@ -0,0 +1,396 @@ + + + + + + + +Jolt Physics: PhysicsUpdateContext::Step::CCDBody Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    PhysicsUpdateContext::Step::CCDBody Struct Reference
    +
    +
    + +

    Contains the information needed to cast a body through the scene to do continuous collision detection. + More...

    + +

    #include <PhysicsUpdateContext.h>

    + + + + +

    +Public Member Functions

     CCDBody (BodyID inBodyID1, Vec3Arg inDeltaPosition, float inLinearCastThresholdSq, float inMaxPenetration)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    Vec3 mDeltaPosition
     Desired rotation step.
     
    Vec3 mContactNormal
     World space normal of closest hit (only valid if mFractionPlusSlop < 1)
     
    RVec3 mContactPointOn2
     World space contact point on body 2 of closest hit (only valid if mFractionPlusSlop < 1)
     
    BodyID mBodyID1
     Body 1 (the body that is performing collision detection)
     
    BodyID mBodyID2
     Body 2 (the body of the closest hit, only valid if mFractionPlusSlop < 1)
     
    SubShapeID mSubShapeID2
     Sub shape of body 2 that was hit (only valid if mFractionPlusSlop < 1)
     
    float mFraction = 1.0f
     Fraction at which the hit occurred.
     
    float mFractionPlusSlop = 1.0f
     Fraction at which the hit occurred + extra delta to allow body to penetrate by mMaxPenetration.
     
    float mLinearCastThresholdSq
     Maximum allowed squared movement before doing a linear cast (determined by inner radius of shape)
     
    float mMaxPenetration
     Maximum allowed penetration (determined by inner radius of shape)
     
    ContactSettings mContactSettings
     The contact settings for this contact.
     
    +

    Detailed Description

    +

    Contains the information needed to cast a body through the scene to do continuous collision detection.

    +

    Constructor & Destructor Documentation

    + +

    ◆ CCDBody()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    PhysicsUpdateContext::Step::CCDBody::CCDBody (BodyID inBodyID1,
    Vec3Arg inDeltaPosition,
    float inLinearCastThresholdSq,
    float inMaxPenetration 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mBodyID1

    + +
    +
    + + + + +
    BodyID PhysicsUpdateContext::Step::CCDBody::mBodyID1
    +
    + +

    Body 1 (the body that is performing collision detection)

    + +
    +
    + +

    ◆ mBodyID2

    + +
    +
    + + + + +
    BodyID PhysicsUpdateContext::Step::CCDBody::mBodyID2
    +
    + +

    Body 2 (the body of the closest hit, only valid if mFractionPlusSlop < 1)

    + +
    +
    + +

    ◆ mContactNormal

    + +
    +
    + + + + +
    Vec3 PhysicsUpdateContext::Step::CCDBody::mContactNormal
    +
    + +

    World space normal of closest hit (only valid if mFractionPlusSlop < 1)

    + +
    +
    + +

    ◆ mContactPointOn2

    + +
    +
    + + + + +
    RVec3 PhysicsUpdateContext::Step::CCDBody::mContactPointOn2
    +
    + +

    World space contact point on body 2 of closest hit (only valid if mFractionPlusSlop < 1)

    + +
    +
    + +

    ◆ mContactSettings

    + +
    +
    + + + + +
    ContactSettings PhysicsUpdateContext::Step::CCDBody::mContactSettings
    +
    + +

    The contact settings for this contact.

    + +
    +
    + +

    ◆ mDeltaPosition

    + +
    +
    + + + + +
    Vec3 PhysicsUpdateContext::Step::CCDBody::mDeltaPosition
    +
    + +

    Desired rotation step.

    + +
    +
    + +

    ◆ mFraction

    + +
    +
    + + + + +
    float PhysicsUpdateContext::Step::CCDBody::mFraction = 1.0f
    +
    + +

    Fraction at which the hit occurred.

    + +
    +
    + +

    ◆ mFractionPlusSlop

    + +
    +
    + + + + +
    float PhysicsUpdateContext::Step::CCDBody::mFractionPlusSlop = 1.0f
    +
    + +

    Fraction at which the hit occurred + extra delta to allow body to penetrate by mMaxPenetration.

    + +
    +
    + +

    ◆ mLinearCastThresholdSq

    + +
    +
    + + + + +
    float PhysicsUpdateContext::Step::CCDBody::mLinearCastThresholdSq
    +
    + +

    Maximum allowed squared movement before doing a linear cast (determined by inner radius of shape)

    + +
    +
    + +

    ◆ mMaxPenetration

    + +
    +
    + + + + +
    float PhysicsUpdateContext::Step::CCDBody::mMaxPenetration
    +
    + +

    Maximum allowed penetration (determined by inner radius of shape)

    + +
    +
    + +

    ◆ mSubShapeID2

    + +
    +
    + + + + +
    SubShapeID PhysicsUpdateContext::Step::CCDBody::mSubShapeID2
    +
    + +

    Sub shape of body 2 that was hit (only valid if mFractionPlusSlop < 1)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_physics_update_context_1_1_step_1_1_c_c_d_body.js b/struct_physics_update_context_1_1_step_1_1_c_c_d_body.js new file mode 100644 index 000000000..131deb539 --- /dev/null +++ b/struct_physics_update_context_1_1_step_1_1_c_c_d_body.js @@ -0,0 +1,15 @@ +var struct_physics_update_context_1_1_step_1_1_c_c_d_body = +[ + [ "CCDBody", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#acee03461decafebae0a2c85eea974a82", null ], + [ "mBodyID1", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#aec632d3b29f373db9f7e948315e1509c", null ], + [ "mBodyID2", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a795af390323d8a3fa5611c87c75c376f", null ], + [ "mContactNormal", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a977f14cb8637f2f5cfe80e7fa7a30909", null ], + [ "mContactPointOn2", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a3a66d945cc9f9f778d4309be685af2df", null ], + [ "mContactSettings", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a993db6e5c8993fdc978f813fea921759", null ], + [ "mDeltaPosition", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a600b083a1951ed5d7d5bb3e622474477", null ], + [ "mFraction", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#ad8fd1d07aa868351147166971b648163", null ], + [ "mFractionPlusSlop", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#ae085ff6f3acdcca6fb1aae40d191bf37", null ], + [ "mLinearCastThresholdSq", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a3dab2c4142f45798d20aa1d77012099a", null ], + [ "mMaxPenetration", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a006b8fd2ec68238645cc7c4b48bf43fa", null ], + [ "mSubShapeID2", "struct_physics_update_context_1_1_step_1_1_c_c_d_body.html#a645c052846be8d140657dbe261829ad3", null ] +]; \ No newline at end of file diff --git a/struct_plane_shape_1_1_p_s_get_triangles_context-members.html b/struct_plane_shape_1_1_p_s_get_triangles_context-members.html new file mode 100644 index 000000000..51f37fa44 --- /dev/null +++ b/struct_plane_shape_1_1_p_s_get_triangles_context-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    PlaneShape::PSGetTrianglesContext Member List
    +
    +
    + +

    This is the complete list of members for PlaneShape::PSGetTrianglesContext, including all inherited members.

    + + + +
    mDonePlaneShape::PSGetTrianglesContext
    mVerticesPlaneShape::PSGetTrianglesContext
    +
    + + + + diff --git a/struct_plane_shape_1_1_p_s_get_triangles_context.html b/struct_plane_shape_1_1_p_s_get_triangles_context.html new file mode 100644 index 000000000..8668bcad5 --- /dev/null +++ b/struct_plane_shape_1_1_p_s_get_triangles_context.html @@ -0,0 +1,157 @@ + + + + + + + +Jolt Physics: PlaneShape::PSGetTrianglesContext Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    PlaneShape::PSGetTrianglesContext Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    Float3 mVertices [4]
     
    bool mDone = false
     
    +

    Member Data Documentation

    + +

    ◆ mDone

    + +
    +
    + + + + +
    bool PlaneShape::PSGetTrianglesContext::mDone = false
    +
    + +
    +
    + +

    ◆ mVertices

    + +
    +
    + + + + +
    Float3 PlaneShape::PSGetTrianglesContext::mVertices[4]
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_plane_shape_1_1_p_s_get_triangles_context.js b/struct_plane_shape_1_1_p_s_get_triangles_context.js new file mode 100644 index 000000000..5c88e7151 --- /dev/null +++ b/struct_plane_shape_1_1_p_s_get_triangles_context.js @@ -0,0 +1,5 @@ +var struct_plane_shape_1_1_p_s_get_triangles_context = +[ + [ "mDone", "struct_plane_shape_1_1_p_s_get_triangles_context.html#afda286ce7a439dee77e585919216e040", null ], + [ "mVertices", "struct_plane_shape_1_1_p_s_get_triangles_context.html#ad19e185ae61b748f9d2e67d0248ebca3", null ] +]; \ No newline at end of file diff --git a/struct_point_convex_support-members.html b/struct_point_convex_support-members.html new file mode 100644 index 000000000..92302a7d8 --- /dev/null +++ b/struct_point_convex_support-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    PointConvexSupport Member List
    +
    +
    + +

    This is the complete list of members for PointConvexSupport, including all inherited members.

    + + + +
    GetSupport(Vec3Arg inDirection) constPointConvexSupportinline
    mPointPointConvexSupport
    +
    + + + + diff --git a/struct_point_convex_support.html b/struct_point_convex_support.html new file mode 100644 index 000000000..98438fb83 --- /dev/null +++ b/struct_point_convex_support.html @@ -0,0 +1,184 @@ + + + + + + + +Jolt Physics: PointConvexSupport Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    PointConvexSupport Struct Reference
    +
    +
    + +

    Class that wraps a point so that it can be used with convex collision detection. + More...

    + +

    #include <ConvexSupport.h>

    + + + + + +

    +Public Member Functions

    Vec3 GetSupport (Vec3Arg inDirection) const
     Calculate the support vector for this convex shape.
     
    + + + +

    +Public Attributes

    Vec3 mPoint
     
    +

    Detailed Description

    +

    Class that wraps a point so that it can be used with convex collision detection.

    +

    Member Function Documentation

    + +

    ◆ GetSupport()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Vec3 PointConvexSupport::GetSupport (Vec3Arg inDirection) const
    +
    +inline
    +
    + +

    Calculate the support vector for this convex shape.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mPoint

    + +
    +
    + + + + +
    Vec3 PointConvexSupport::mPoint
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_point_convex_support.js b/struct_point_convex_support.js new file mode 100644 index 000000000..46d980c12 --- /dev/null +++ b/struct_point_convex_support.js @@ -0,0 +1,5 @@ +var struct_point_convex_support = +[ + [ "GetSupport", "struct_point_convex_support.html#af9f294c5aa22abc2f9c826cbb8e2b05a", null ], + [ "mPoint", "struct_point_convex_support.html#aa87104a74dbc5656e4937786790aa7e4", null ] +]; \ No newline at end of file diff --git a/struct_polygon_convex_support-members.html b/struct_polygon_convex_support-members.html new file mode 100644 index 000000000..726cade0a --- /dev/null +++ b/struct_polygon_convex_support-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    PolygonConvexSupport< VERTEX_ARRAY > Member List
    +
    +
    + +

    This is the complete list of members for PolygonConvexSupport< VERTEX_ARRAY >, including all inherited members.

    + + + + + +
    GetSupport(Vec3Arg inDirection) constPolygonConvexSupport< VERTEX_ARRAY >inline
    GetSupportingFace(Vec3Arg inDirection, VERTEX_ARRAY_ARG &outVertices) constPolygonConvexSupport< VERTEX_ARRAY >inline
    mVerticesPolygonConvexSupport< VERTEX_ARRAY >
    PolygonConvexSupport(const VERTEX_ARRAY &inVertices)PolygonConvexSupport< VERTEX_ARRAY >inlineexplicit
    +
    + + + + diff --git a/struct_polygon_convex_support.html b/struct_polygon_convex_support.html new file mode 100644 index 000000000..26b9d091c --- /dev/null +++ b/struct_polygon_convex_support.html @@ -0,0 +1,272 @@ + + + + + + + +Jolt Physics: PolygonConvexSupport< VERTEX_ARRAY > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    PolygonConvexSupport< VERTEX_ARRAY > Struct Template Reference
    +
    +
    + +

    Class that wraps a polygon so that it can used with convex collision detection. + More...

    + +

    #include <ConvexSupport.h>

    + + + + + + + + + + + + +

    +Public Member Functions

     PolygonConvexSupport (const VERTEX_ARRAY &inVertices)
     Constructor.
     
    Vec3 GetSupport (Vec3Arg inDirection) const
     Calculate the support vector for this convex shape.
     
    template<class VERTEX_ARRAY_ARG >
    void GetSupportingFace (Vec3Arg inDirection, VERTEX_ARRAY_ARG &outVertices) const
     Get the vertices of the face that faces inDirection the most.
     
    + + + + +

    +Public Attributes

    const VERTEX_ARRAY & mVertices
     The vertices of the polygon.
     
    +

    Detailed Description

    +
    template<class VERTEX_ARRAY>
    +struct PolygonConvexSupport< VERTEX_ARRAY >

    Class that wraps a polygon so that it can used with convex collision detection.

    +

    Constructor & Destructor Documentation

    + +

    ◆ PolygonConvexSupport()

    + +
    +
    +
    +template<class VERTEX_ARRAY >
    + + + + + +
    + + + + + + + + +
    PolygonConvexSupport< VERTEX_ARRAY >::PolygonConvexSupport (const VERTEX_ARRAY & inVertices)
    +
    +inlineexplicit
    +
    + +

    Constructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetSupport()

    + +
    +
    +
    +template<class VERTEX_ARRAY >
    + + + + + +
    + + + + + + + + +
    Vec3 PolygonConvexSupport< VERTEX_ARRAY >::GetSupport (Vec3Arg inDirection) const
    +
    +inline
    +
    + +

    Calculate the support vector for this convex shape.

    + +
    +
    + +

    ◆ GetSupportingFace()

    + +
    +
    +
    +template<class VERTEX_ARRAY >
    +
    +template<class VERTEX_ARRAY_ARG >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void PolygonConvexSupport< VERTEX_ARRAY >::GetSupportingFace (Vec3Arg inDirection,
    VERTEX_ARRAY_ARG & outVertices 
    ) const
    +
    +inline
    +
    + +

    Get the vertices of the face that faces inDirection the most.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mVertices

    + +
    +
    +
    +template<class VERTEX_ARRAY >
    + + + + +
    const VERTEX_ARRAY& PolygonConvexSupport< VERTEX_ARRAY >::mVertices
    +
    + +

    The vertices of the polygon.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_polygon_convex_support.js b/struct_polygon_convex_support.js new file mode 100644 index 000000000..cf56d9e5c --- /dev/null +++ b/struct_polygon_convex_support.js @@ -0,0 +1,7 @@ +var struct_polygon_convex_support = +[ + [ "PolygonConvexSupport", "struct_polygon_convex_support.html#a7597917acd3f2a6f73aa47045f22b69c", null ], + [ "GetSupport", "struct_polygon_convex_support.html#a4e117627d895a0466b06b76f267aa605", null ], + [ "GetSupportingFace", "struct_polygon_convex_support.html#a25e370fc7ce4db9df032a10e3caee238", null ], + [ "mVertices", "struct_polygon_convex_support.html#ab038bf1e11e180f9663d1a5f877c4ee7", null ] +]; \ No newline at end of file diff --git a/struct_quad_tree_1_1_add_state-members.html b/struct_quad_tree_1_1_add_state-members.html new file mode 100644 index 000000000..043da4cbf --- /dev/null +++ b/struct_quad_tree_1_1_add_state-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    QuadTree::AddState Member List
    +
    +
    + +

    This is the complete list of members for QuadTree::AddState, including all inherited members.

    + + + +
    mLeafBoundsQuadTree::AddState
    mLeafIDQuadTree::AddState
    +
    + + + + diff --git a/struct_quad_tree_1_1_add_state.html b/struct_quad_tree_1_1_add_state.html new file mode 100644 index 000000000..8b1c48b82 --- /dev/null +++ b/struct_quad_tree_1_1_add_state.html @@ -0,0 +1,164 @@ + + + + + + + +Jolt Physics: QuadTree::AddState Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    QuadTree::AddState Struct Reference
    +
    +
    + +

    Temporary data structure to pass information between AddBodiesPrepare and AddBodiesFinalize/Abort. + More...

    + +

    #include <QuadTree.h>

    + + + + + + +

    +Public Attributes

    NodeID mLeafID = NodeID::sInvalid()
     
    AABox mLeafBounds
     
    +

    Detailed Description

    +

    Temporary data structure to pass information between AddBodiesPrepare and AddBodiesFinalize/Abort.

    +

    Member Data Documentation

    + +

    ◆ mLeafBounds

    + +
    +
    + + + + +
    AABox QuadTree::AddState::mLeafBounds
    +
    + +
    +
    + +

    ◆ mLeafID

    + +
    +
    + + + + +
    NodeID QuadTree::AddState::mLeafID = NodeID::sInvalid()
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_quad_tree_1_1_add_state.js b/struct_quad_tree_1_1_add_state.js new file mode 100644 index 000000000..13364898e --- /dev/null +++ b/struct_quad_tree_1_1_add_state.js @@ -0,0 +1,5 @@ +var struct_quad_tree_1_1_add_state = +[ + [ "mLeafBounds", "struct_quad_tree_1_1_add_state.html#a1b7c0c242edfab856c4ccf10bd514f44", null ], + [ "mLeafID", "struct_quad_tree_1_1_add_state.html#a789c4af727fb9a0ab0a0fac83c57ac5f", null ] +]; \ No newline at end of file diff --git a/struct_quad_tree_1_1_tracking-members.html b/struct_quad_tree_1_1_tracking-members.html new file mode 100644 index 000000000..8d9a7b3c6 --- /dev/null +++ b/struct_quad_tree_1_1_tracking-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    QuadTree::Tracking Member List
    +
    +
    + +

    This is the complete list of members for QuadTree::Tracking, including all inherited members.

    + + + + + + + +
    cInvalidBodyLocationQuadTree::Trackingstatic
    mBodyLocationQuadTree::Tracking
    mBroadPhaseLayerQuadTree::Tracking
    mObjectLayerQuadTree::Tracking
    Tracking()=defaultQuadTree::Tracking
    Tracking(const Tracking &inRHS)QuadTree::Trackinginline
    +
    + + + + diff --git a/struct_quad_tree_1_1_tracking.html b/struct_quad_tree_1_1_tracking.html new file mode 100644 index 000000000..fb92766cb --- /dev/null +++ b/struct_quad_tree_1_1_tracking.html @@ -0,0 +1,274 @@ + + + + + + + +Jolt Physics: QuadTree::Tracking Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    QuadTree::Tracking Struct Reference
    +
    +
    + +

    Data to track location of a Body in the tree. + More...

    + +

    #include <QuadTree.h>

    + + + + + + + +

    +Public Member Functions

     Tracking ()=default
     Constructor to satisfy the vector class.
     
     Tracking (const Tracking &inRHS)
     
    + + + + + + + +

    +Public Attributes

    atomic< BroadPhaseLayer::TypemBroadPhaseLayer = (BroadPhaseLayer::Type)cBroadPhaseLayerInvalid
     
    atomic< ObjectLayermObjectLayer = cObjectLayerInvalid
     
    atomic< uint32mBodyLocation { cInvalidBodyLocation }
     
    + + + + +

    +Static Public Attributes

    static const uint32 cInvalidBodyLocation = 0xffffffff
     Invalid body location identifier.
     
    +

    Detailed Description

    +

    Data to track location of a Body in the tree.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Tracking() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    QuadTree::Tracking::Tracking ()
    +
    +default
    +
    + +

    Constructor to satisfy the vector class.

    + +
    +
    + +

    ◆ Tracking() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    QuadTree::Tracking::Tracking (const TrackinginRHS)
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ cInvalidBodyLocation

    + +
    +
    + + + + + +
    + + + + +
    const uint32 QuadTree::Tracking::cInvalidBodyLocation = 0xffffffff
    +
    +static
    +
    + +

    Invalid body location identifier.

    + +
    +
    + +

    ◆ mBodyLocation

    + +
    +
    + + + + +
    atomic<uint32> QuadTree::Tracking::mBodyLocation { cInvalidBodyLocation }
    +
    + +
    +
    + +

    ◆ mBroadPhaseLayer

    + +
    +
    + + + + +
    atomic<BroadPhaseLayer::Type> QuadTree::Tracking::mBroadPhaseLayer = (BroadPhaseLayer::Type)cBroadPhaseLayerInvalid
    +
    + +
    +
    + +

    ◆ mObjectLayer

    + +
    +
    + + + + +
    atomic<ObjectLayer> QuadTree::Tracking::mObjectLayer = cObjectLayerInvalid
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_quad_tree_1_1_tracking.js b/struct_quad_tree_1_1_tracking.js new file mode 100644 index 000000000..44a4b6977 --- /dev/null +++ b/struct_quad_tree_1_1_tracking.js @@ -0,0 +1,8 @@ +var struct_quad_tree_1_1_tracking = +[ + [ "Tracking", "struct_quad_tree_1_1_tracking.html#ace40c7c746daea352249919d962f3fc5", null ], + [ "Tracking", "struct_quad_tree_1_1_tracking.html#a49de4bd747c49f2b0c9dc0017740ec14", null ], + [ "mBodyLocation", "struct_quad_tree_1_1_tracking.html#a8ae18cd9469f2da62366feede85b7ea1", null ], + [ "mBroadPhaseLayer", "struct_quad_tree_1_1_tracking.html#a004a8ed217c3b5d7ddc2364cf4884adb", null ], + [ "mObjectLayer", "struct_quad_tree_1_1_tracking.html#a56e9c2be5a5d2c9ab2a06ee6be1b9a58", null ] +]; \ No newline at end of file diff --git a/struct_quad_tree_1_1_update_state-members.html b/struct_quad_tree_1_1_update_state-members.html new file mode 100644 index 000000000..526af1fb6 --- /dev/null +++ b/struct_quad_tree_1_1_update_state-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    QuadTree::UpdateState Member List
    +
    +
    + +

    This is the complete list of members for QuadTree::UpdateState, including all inherited members.

    + + +
    mRootNodeIDQuadTree::UpdateState
    +
    + + + + diff --git a/struct_quad_tree_1_1_update_state.html b/struct_quad_tree_1_1_update_state.html new file mode 100644 index 000000000..f2a841735 --- /dev/null +++ b/struct_quad_tree_1_1_update_state.html @@ -0,0 +1,146 @@ + + + + + + + +Jolt Physics: QuadTree::UpdateState Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    QuadTree::UpdateState Struct Reference
    +
    +
    + +

    #include <QuadTree.h>

    + + + + + +

    +Public Attributes

    NodeID mRootNodeID
     This will be the new root node id.
     
    +

    Member Data Documentation

    + +

    ◆ mRootNodeID

    + +
    +
    + + + + +
    NodeID QuadTree::UpdateState::mRootNodeID
    +
    + +

    This will be the new root node id.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_quad_tree_1_1_update_state.js b/struct_quad_tree_1_1_update_state.js new file mode 100644 index 000000000..ae0bbd5f7 --- /dev/null +++ b/struct_quad_tree_1_1_update_state.js @@ -0,0 +1,4 @@ +var struct_quad_tree_1_1_update_state = +[ + [ "mRootNodeID", "struct_quad_tree_1_1_update_state.html#a66a138d55a9cfc44fd213bdace17b4a6", null ] +]; \ No newline at end of file diff --git a/struct_r_ray_cast-members.html b/struct_r_ray_cast-members.html new file mode 100644 index 000000000..3d36da167 --- /dev/null +++ b/struct_r_ray_cast-members.html @@ -0,0 +1,126 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    RRayCast Member List
    +
    +
    + +

    This is the complete list of members for RRayCast, including all inherited members.

    + + + + + + + + + + + +
    GetPointOnRay(float inFraction) constRayCastT< RVec3, RMat44, RRayCast >inline
    mDirectionRayCastT< RVec3, RMat44, RRayCast >
    mOriginRayCastT< RVec3, RMat44, RRayCast >
    operator RayCast() constRRayCastinlineexplicit
    RayCastT()=defaultRayCastT< RVec3, RMat44, RRayCast >
    RayCastT(typename Vec::ArgType inOrigin, Vec3Arg inDirection)RayCastT< RVec3, RMat44, RRayCast >inline
    RayCastT(const RayCastT< RVec3, RMat44, RRayCast > &)=defaultRayCastT< RVec3, RMat44, RRayCast >
    RRayCast(const RayCast &inRay)RRayCastinlineexplicit
    Transformed(typename Mat::ArgType inTransform) constRayCastT< RVec3, RMat44, RRayCast >inline
    Translated(typename Vec::ArgType inTranslation) constRayCastT< RVec3, RMat44, RRayCast >inline
    +
    + + + + diff --git a/struct_r_ray_cast.html b/struct_r_ray_cast.html new file mode 100644 index 000000000..97613e94c --- /dev/null +++ b/struct_r_ray_cast.html @@ -0,0 +1,225 @@ + + + + + + + +Jolt Physics: RRayCast Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    RRayCast Struct Reference
    +
    +
    + +

    #include <RayCast.h>

    +
    +Inheritance diagram for RRayCast:
    +
    +
    + + +RayCastT< RVec3, RMat44, RRayCast > + +
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     RRayCast (const RayCast &inRay)
     Convert from RayCast, converts single to double precision.
     
     operator RayCast () const
     Convert to RayCast, which implies casting from double precision to single precision.
     
    - Public Member Functions inherited from RayCastT< RVec3, RMat44, RRayCast >
    JPH_OVERRIDE_NEW_DELETE RayCastT ()=default
     Constructors.
     
     RayCastT (typename Vec::ArgType inOrigin, Vec3Arg inDirection)
     
     RayCastT (const RayCastT< RVec3, RMat44, RRayCast > &)=default
     
    RRayCast Transformed (typename Mat::ArgType inTransform) const
     Transform this ray using inTransform.
     
    RRayCast Translated (typename Vec::ArgType inTranslation) const
     Translate ray using inTranslation.
     
    RVec3 GetPointOnRay (float inFraction) const
     Get point with fraction inFraction on ray (0 = start of ray, 1 = end of ray)
     
    + + + + + + + + +

    +Additional Inherited Members

    - Public Attributes inherited from RayCastT< RVec3, RMat44, RRayCast >
    RVec3 mOrigin
     Origin of the ray.
     
    Vec3 mDirection
     Direction and length of the ray (anything beyond this length will not be reported as a hit)
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ RRayCast()

    + +
    +
    + + + + + +
    + + + + + + + + +
    RRayCast::RRayCast (const RayCastinRay)
    +
    +inlineexplicit
    +
    + +

    Convert from RayCast, converts single to double precision.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator RayCast()

    + +
    +
    + + + + + +
    + + + + + + + +
    RRayCast::operator RayCast () const
    +
    +inlineexplicit
    +
    + +

    Convert to RayCast, which implies casting from double precision to single precision.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_r_ray_cast.js b/struct_r_ray_cast.js new file mode 100644 index 000000000..2fa182e53 --- /dev/null +++ b/struct_r_ray_cast.js @@ -0,0 +1,5 @@ +var struct_r_ray_cast = +[ + [ "RRayCast", "struct_r_ray_cast.html#a2c5b7e63adeca394564930ff9e6d6205", null ], + [ "operator RayCast", "struct_r_ray_cast.html#a5e8ecad2361e2396e95614c74f1282dd", null ] +]; \ No newline at end of file diff --git a/struct_r_ray_cast.png b/struct_r_ray_cast.png new file mode 100644 index 000000000..61f70555c Binary files /dev/null and b/struct_r_ray_cast.png differ diff --git a/struct_r_shape_cast-members.html b/struct_r_shape_cast-members.html new file mode 100644 index 000000000..ae23db4b2 --- /dev/null +++ b/struct_r_shape_cast-members.html @@ -0,0 +1,129 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    RShapeCast Member List
    +
    +
    + +

    This is the complete list of members for RShapeCast, including all inherited members.

    + + + + + + + + + + + + + + +
    GetPointOnRay(float inFraction) constShapeCastT< RVec3, RMat44, RShapeCast >inline
    mCenterOfMassStartShapeCastT< RVec3, RMat44, RShapeCast >
    mDirectionShapeCastT< RVec3, RMat44, RShapeCast >
    mScaleShapeCastT< RVec3, RMat44, RShapeCast >
    mShapeShapeCastT< RVec3, RMat44, RShapeCast >
    mShapeWorldBoundsShapeCastT< RVec3, RMat44, RShapeCast >
    operator ShapeCast() constRShapeCastinlineexplicit
    PostTransformed(typename Mat::ArgType inTransform) constShapeCastT< RVec3, RMat44, RShapeCast >inline
    PostTranslated(typename Vec::ArgType inTranslation) constShapeCastT< RVec3, RMat44, RShapeCast >inline
    RShapeCast(const ShapeCast &inCast)RShapeCastinlineexplicit
    sFromWorldTransform(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inWorldTransform, Vec3Arg inDirection)ShapeCastT< RVec3, RMat44, RShapeCast >inlinestatic
    ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection, const AABox &inWorldSpaceBounds)ShapeCastT< RVec3, RMat44, RShapeCast >inline
    ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection)ShapeCastT< RVec3, RMat44, RShapeCast >inline
    +
    + + + + diff --git a/struct_r_shape_cast.html b/struct_r_shape_cast.html new file mode 100644 index 000000000..5c25c3844 --- /dev/null +++ b/struct_r_shape_cast.html @@ -0,0 +1,237 @@ + + + + + + + +Jolt Physics: RShapeCast Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    RShapeCast Struct Reference
    +
    +
    + +

    #include <ShapeCast.h>

    +
    +Inheritance diagram for RShapeCast:
    +
    +
    + + +ShapeCastT< RVec3, RMat44, RShapeCast > + +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

     RShapeCast (const ShapeCast &inCast)
     Convert from ShapeCast, converts single to double precision.
     
     operator ShapeCast () const
     Convert to ShapeCast, which implies casting from double precision to single precision.
     
    - Public Member Functions inherited from ShapeCastT< RVec3, RMat44, RShapeCast >
    JPH_OVERRIDE_NEW_DELETE ShapeCastT (const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection, const AABox &inWorldSpaceBounds)
     Constructor.
     
     ShapeCastT (const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection)
     Constructor.
     
    RShapeCast PostTransformed (typename Mat::ArgType inTransform) const
     Transform this shape cast using inTransform. Multiply transform on the left left hand side.
     
    RShapeCast PostTranslated (typename Vec::ArgType inTranslation) const
     Translate this shape cast by inTranslation.
     
    RVec3 GetPointOnRay (float inFraction) const
     Get point with fraction inFraction on ray from mCenterOfMassStart to mCenterOfMassStart + mDirection (0 = start of ray, 1 = end of ray)
     
    + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Static Public Member Functions inherited from ShapeCastT< RVec3, RMat44, RShapeCast >
    static RShapeCast sFromWorldTransform (const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inWorldTransform, Vec3Arg inDirection)
     Construct a shape cast using a world transform for a shape instead of a center of mass transform.
     
    - Public Attributes inherited from ShapeCastT< RVec3, RMat44, RShapeCast >
    const ShapemShape
     Shape that's being cast (cannot be mesh shape). Note that this structure does not assume ownership over the shape for performance reasons.
     
    const Vec3 mScale
     Scale in local space of the shape being cast (scales relative to its center of mass)
     
    const RMat44 mCenterOfMassStart
     Start position and orientation of the center of mass of the shape (construct using sFromWorldTransform if you have a world transform for your shape)
     
    const Vec3 mDirection
     Direction and length of the cast (anything beyond this length will not be reported as a hit)
     
    const AABox mShapeWorldBounds
     Cached shape's world bounds, calculated in constructor.
     
    +

    Constructor & Destructor Documentation

    + +

    ◆ RShapeCast()

    + +
    +
    + + + + + +
    + + + + + + + + +
    RShapeCast::RShapeCast (const ShapeCastinCast)
    +
    +inlineexplicit
    +
    + +

    Convert from ShapeCast, converts single to double precision.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator ShapeCast()

    + +
    +
    + + + + + +
    + + + + + + + +
    RShapeCast::operator ShapeCast () const
    +
    +inlineexplicit
    +
    + +

    Convert to ShapeCast, which implies casting from double precision to single precision.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_r_shape_cast.js b/struct_r_shape_cast.js new file mode 100644 index 000000000..b9e9a78c2 --- /dev/null +++ b/struct_r_shape_cast.js @@ -0,0 +1,5 @@ +var struct_r_shape_cast = +[ + [ "RShapeCast", "struct_r_shape_cast.html#a006aae5be875eba47b5bdd3778e36e2f", null ], + [ "operator ShapeCast", "struct_r_shape_cast.html#a991ebdb11b9ea565ddf0d3ad68bcdfaa", null ] +]; \ No newline at end of file diff --git a/struct_r_shape_cast.png b/struct_r_shape_cast.png new file mode 100644 index 000000000..9d5c2eff0 Binary files /dev/null and b/struct_r_shape_cast.png differ diff --git a/struct_r_t_t_i_1_1_base_class-members.html b/struct_r_t_t_i_1_1_base_class-members.html new file mode 100644 index 000000000..9e4436684 --- /dev/null +++ b/struct_r_t_t_i_1_1_base_class-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    RTTI::BaseClass Member List
    +
    +
    + +

    This is the complete list of members for RTTI::BaseClass, including all inherited members.

    + + + +
    mOffsetRTTI::BaseClass
    mRTTIRTTI::BaseClass
    +
    + + + + diff --git a/struct_r_t_t_i_1_1_base_class.html b/struct_r_t_t_i_1_1_base_class.html new file mode 100644 index 000000000..c9a1d2073 --- /dev/null +++ b/struct_r_t_t_i_1_1_base_class.html @@ -0,0 +1,164 @@ + + + + + + + +Jolt Physics: RTTI::BaseClass Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    RTTI::BaseClass Struct Reference
    +
    +
    + +

    Base class information. + More...

    + +

    #include <RTTI.h>

    + + + + + + +

    +Public Attributes

    const RTTImRTTI
     
    int mOffset
     
    +

    Detailed Description

    +

    Base class information.

    +

    Member Data Documentation

    + +

    ◆ mOffset

    + +
    +
    + + + + +
    int RTTI::BaseClass::mOffset
    +
    + +
    +
    + +

    ◆ mRTTI

    + +
    +
    + + + + +
    const RTTI* RTTI::BaseClass::mRTTI
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_r_t_t_i_1_1_base_class.js b/struct_r_t_t_i_1_1_base_class.js new file mode 100644 index 000000000..647e4dc01 --- /dev/null +++ b/struct_r_t_t_i_1_1_base_class.js @@ -0,0 +1,5 @@ +var struct_r_t_t_i_1_1_base_class = +[ + [ "mOffset", "struct_r_t_t_i_1_1_base_class.html#a685cef473333c65c8e8b2215cb54394c", null ], + [ "mRTTI", "struct_r_t_t_i_1_1_base_class.html#a21424ceac4d2a12c5af3fc6f7d5833af", null ] +]; \ No newline at end of file diff --git a/struct_ray_cast-members.html b/struct_ray_cast-members.html new file mode 100644 index 000000000..5a2b6c4b1 --- /dev/null +++ b/struct_ray_cast-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    RayCast Member List
    +
    +
    + +

    This is the complete list of members for RayCast, including all inherited members.

    + + + + + + + + + +
    GetPointOnRay(float inFraction) constRayCastT< Vec3, Mat44, RayCast >inline
    mDirectionRayCastT< Vec3, Mat44, RayCast >
    mOriginRayCastT< Vec3, Mat44, RayCast >
    RayCastT()=defaultRayCastT< Vec3, Mat44, RayCast >
    RayCastT(typename Vec::ArgType inOrigin, Vec3Arg inDirection)RayCastT< Vec3, Mat44, RayCast >inline
    RayCastT(const RayCastT< Vec3, Mat44, RayCast > &)=defaultRayCastT< Vec3, Mat44, RayCast >
    Transformed(typename Mat::ArgType inTransform) constRayCastT< Vec3, Mat44, RayCast >inline
    Translated(typename Vec::ArgType inTranslation) constRayCastT< Vec3, Mat44, RayCast >inline
    +
    + + + + diff --git a/struct_ray_cast.html b/struct_ray_cast.html new file mode 100644 index 000000000..3f5e03dba --- /dev/null +++ b/struct_ray_cast.html @@ -0,0 +1,158 @@ + + + + + + + +Jolt Physics: RayCast Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    RayCast Struct Reference
    +
    +
    + +

    #include <RayCast.h>

    +
    +Inheritance diagram for RayCast:
    +
    +
    + + +RayCastT< Vec3, Mat44, RayCast > + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Public Member Functions inherited from RayCastT< Vec3, Mat44, RayCast >
    JPH_OVERRIDE_NEW_DELETE RayCastT ()=default
     Constructors.
     
     RayCastT (typename Vec::ArgType inOrigin, Vec3Arg inDirection)
     
     RayCastT (const RayCastT< Vec3, Mat44, RayCast > &)=default
     
    RayCast Transformed (typename Mat::ArgType inTransform) const
     Transform this ray using inTransform.
     
    RayCast Translated (typename Vec::ArgType inTranslation) const
     Translate ray using inTranslation.
     
    Vec3 GetPointOnRay (float inFraction) const
     Get point with fraction inFraction on ray (0 = start of ray, 1 = end of ray)
     
    - Public Attributes inherited from RayCastT< Vec3, Mat44, RayCast >
    Vec3 mOrigin
     Origin of the ray.
     
    Vec3 mDirection
     Direction and length of the ray (anything beyond this length will not be reported as a hit)
     
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_ray_cast.png b/struct_ray_cast.png new file mode 100644 index 000000000..a4b917fb1 Binary files /dev/null and b/struct_ray_cast.png differ diff --git a/struct_ray_cast_t-members.html b/struct_ray_cast_t-members.html new file mode 100644 index 000000000..b9ee8142b --- /dev/null +++ b/struct_ray_cast_t-members.html @@ -0,0 +1,124 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    RayCastT< Vec, Mat, RayCastType > Member List
    +
    +
    + +

    This is the complete list of members for RayCastT< Vec, Mat, RayCastType >, including all inherited members.

    + + + + + + + + + +
    GetPointOnRay(float inFraction) constRayCastT< Vec, Mat, RayCastType >inline
    mDirectionRayCastT< Vec, Mat, RayCastType >
    mOriginRayCastT< Vec, Mat, RayCastType >
    RayCastT()=defaultRayCastT< Vec, Mat, RayCastType >
    RayCastT(typename Vec::ArgType inOrigin, Vec3Arg inDirection)RayCastT< Vec, Mat, RayCastType >inline
    RayCastT(const RayCastT< Vec, Mat, RayCastType > &)=defaultRayCastT< Vec, Mat, RayCastType >
    Transformed(typename Mat::ArgType inTransform) constRayCastT< Vec, Mat, RayCastType >inline
    Translated(typename Vec::ArgType inTranslation) constRayCastT< Vec, Mat, RayCastType >inline
    +
    + + + + diff --git a/struct_ray_cast_t.html b/struct_ray_cast_t.html new file mode 100644 index 000000000..206c0a4e5 --- /dev/null +++ b/struct_ray_cast_t.html @@ -0,0 +1,382 @@ + + + + + + + +Jolt Physics: RayCastT< Vec, Mat, RayCastType > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    RayCastT< Vec, Mat, RayCastType > Struct Template Reference
    +
    +
    + +

    Structure that holds a single ray cast. + More...

    + +

    #include <RayCast.h>

    + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    JPH_OVERRIDE_NEW_DELETE RayCastT ()=default
     Constructors.
     
     RayCastT (typename Vec::ArgType inOrigin, Vec3Arg inDirection)
     
     RayCastT (const RayCastT< Vec, Mat, RayCastType > &)=default
     
    RayCastType Transformed (typename Mat::ArgType inTransform) const
     Transform this ray using inTransform.
     
    RayCastType Translated (typename Vec::ArgType inTranslation) const
     Translate ray using inTranslation.
     
    Vec GetPointOnRay (float inFraction) const
     Get point with fraction inFraction on ray (0 = start of ray, 1 = end of ray)
     
    + + + + + + + +

    +Public Attributes

    Vec mOrigin
     Origin of the ray.
     
    Vec3 mDirection
     Direction and length of the ray (anything beyond this length will not be reported as a hit)
     
    +

    Detailed Description

    +
    template<class Vec, class Mat, class RayCastType>
    +struct RayCastT< Vec, Mat, RayCastType >

    Structure that holds a single ray cast.

    +

    Constructor & Destructor Documentation

    + +

    ◆ RayCastT() [1/3]

    + +
    +
    +
    +template<class Vec , class Mat , class RayCastType >
    + + + + + +
    + + + + + + + +
    JPH_OVERRIDE_NEW_DELETE RayCastT< Vec, Mat, RayCastType >::RayCastT ()
    +
    +default
    +
    + +

    Constructors.

    + +
    +
    + +

    ◆ RayCastT() [2/3]

    + +
    +
    +
    +template<class Vec , class Mat , class RayCastType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    RayCastT< Vec, Mat, RayCastType >::RayCastT (typename Vec::ArgType inOrigin,
    Vec3Arg inDirection 
    )
    +
    +inline
    +
    + +
    +
    + +

    ◆ RayCastT() [3/3]

    + +
    +
    +
    +template<class Vec , class Mat , class RayCastType >
    + + + + + +
    + + + + + + + + +
    RayCastT< Vec, Mat, RayCastType >::RayCastT (const RayCastT< Vec, Mat, RayCastType > & )
    +
    +default
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetPointOnRay()

    + +
    +
    +
    +template<class Vec , class Mat , class RayCastType >
    + + + + + +
    + + + + + + + + +
    Vec RayCastT< Vec, Mat, RayCastType >::GetPointOnRay (float inFraction) const
    +
    +inline
    +
    + +

    Get point with fraction inFraction on ray (0 = start of ray, 1 = end of ray)

    + +
    +
    + +

    ◆ Transformed()

    + +
    +
    +
    +template<class Vec , class Mat , class RayCastType >
    + + + + + +
    + + + + + + + + +
    RayCastType RayCastT< Vec, Mat, RayCastType >::Transformed (typename Mat::ArgType inTransform) const
    +
    +inline
    +
    + +

    Transform this ray using inTransform.

    + +
    +
    + +

    ◆ Translated()

    + +
    +
    +
    +template<class Vec , class Mat , class RayCastType >
    + + + + + +
    + + + + + + + + +
    RayCastType RayCastT< Vec, Mat, RayCastType >::Translated (typename Vec::ArgType inTranslation) const
    +
    +inline
    +
    + +

    Translate ray using inTranslation.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mDirection

    + +
    +
    +
    +template<class Vec , class Mat , class RayCastType >
    + + + + +
    Vec3 RayCastT< Vec, Mat, RayCastType >::mDirection
    +
    + +

    Direction and length of the ray (anything beyond this length will not be reported as a hit)

    + +
    +
    + +

    ◆ mOrigin

    + +
    +
    +
    +template<class Vec , class Mat , class RayCastType >
    + + + + +
    Vec RayCastT< Vec, Mat, RayCastType >::mOrigin
    +
    + +

    Origin of the ray.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_ray_cast_t.js b/struct_ray_cast_t.js new file mode 100644 index 000000000..32ea415f0 --- /dev/null +++ b/struct_ray_cast_t.js @@ -0,0 +1,11 @@ +var struct_ray_cast_t = +[ + [ "RayCastT", "struct_ray_cast_t.html#a3d875537a981684b35d6a1a1cf2e59d2", null ], + [ "RayCastT", "struct_ray_cast_t.html#a721f50a5edf395ccc83bbe68e90de3c4", null ], + [ "RayCastT", "struct_ray_cast_t.html#a1347e0a1a6182923730a694a0f9d4b6e", null ], + [ "GetPointOnRay", "struct_ray_cast_t.html#abe1d2e9b088ca71ca732e0b5234696fd", null ], + [ "Transformed", "struct_ray_cast_t.html#a89d5ea77b4b5f8c92e1ec515ea70d14b", null ], + [ "Translated", "struct_ray_cast_t.html#a469b4e1823ef597e3a9d616634144c0c", null ], + [ "mDirection", "struct_ray_cast_t.html#a7eb5c3b516f95411ede61d7fd282bbd9", null ], + [ "mOrigin", "struct_ray_cast_t.html#ae66dc4b0c20b242f17bcf70cb5507e51", null ] +]; \ No newline at end of file diff --git a/struct_s_t_l_aligned_allocator_1_1rebind-members.html b/struct_s_t_l_aligned_allocator_1_1rebind-members.html new file mode 100644 index 000000000..8ec7fc0b6 --- /dev/null +++ b/struct_s_t_l_aligned_allocator_1_1rebind-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    STLAlignedAllocator< T, N >::rebind< T2 > Member List
    +
    +
    + +

    This is the complete list of members for STLAlignedAllocator< T, N >::rebind< T2 >, including all inherited members.

    + + +
    other typedefSTLAlignedAllocator< T, N >::rebind< T2 >
    +
    + + + + diff --git a/struct_s_t_l_aligned_allocator_1_1rebind.html b/struct_s_t_l_aligned_allocator_1_1rebind.html new file mode 100644 index 000000000..40f237ee4 --- /dev/null +++ b/struct_s_t_l_aligned_allocator_1_1rebind.html @@ -0,0 +1,154 @@ + + + + + + + +Jolt Physics: STLAlignedAllocator< T, N >::rebind< T2 > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    STLAlignedAllocator< T, N >::rebind< T2 > Struct Template Reference
    +
    +
    + +

    Converting to allocator for other type. + More...

    + +

    #include <STLAlignedAllocator.h>

    + + + + +

    +Public Types

    using other = STLAlignedAllocator< T2, N >
     
    +

    Detailed Description

    +
    template<typename T, size_t N>
    +template<typename T2>
    +struct STLAlignedAllocator< T, N >::rebind< T2 >

    Converting to allocator for other type.

    +

    Member Typedef Documentation

    + +

    ◆ other

    + +
    +
    +
    +template<typename T , size_t N>
    +
    +template<typename T2 >
    + + + + +
    using STLAlignedAllocator< T, N >::rebind< T2 >::other = STLAlignedAllocator<T2, N>
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_s_t_l_aligned_allocator_1_1rebind.js b/struct_s_t_l_aligned_allocator_1_1rebind.js new file mode 100644 index 000000000..f698fe50b --- /dev/null +++ b/struct_s_t_l_aligned_allocator_1_1rebind.js @@ -0,0 +1,4 @@ +var struct_s_t_l_aligned_allocator_1_1rebind = +[ + [ "other", "struct_s_t_l_aligned_allocator_1_1rebind.html#af0093b423c73df604270680226325d1e", null ] +]; \ No newline at end of file diff --git a/struct_s_t_l_allocator_1_1rebind-members.html b/struct_s_t_l_allocator_1_1rebind-members.html new file mode 100644 index 000000000..1a8b48615 --- /dev/null +++ b/struct_s_t_l_allocator_1_1rebind-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    STLAllocator< T >::rebind< T2 > Member List
    +
    +
    + +

    This is the complete list of members for STLAllocator< T >::rebind< T2 >, including all inherited members.

    + + +
    other typedefSTLAllocator< T >::rebind< T2 >
    +
    + + + + diff --git a/struct_s_t_l_allocator_1_1rebind.html b/struct_s_t_l_allocator_1_1rebind.html new file mode 100644 index 000000000..33ab57333 --- /dev/null +++ b/struct_s_t_l_allocator_1_1rebind.html @@ -0,0 +1,154 @@ + + + + + + + +Jolt Physics: STLAllocator< T >::rebind< T2 > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    STLAllocator< T >::rebind< T2 > Struct Template Reference
    +
    +
    + +

    Converting to allocator for other type. + More...

    + +

    #include <STLAllocator.h>

    + + + + +

    +Public Types

    using other = STLAllocator< T2 >
     
    +

    Detailed Description

    +
    template<typename T>
    +template<typename T2>
    +struct STLAllocator< T >::rebind< T2 >

    Converting to allocator for other type.

    +

    Member Typedef Documentation

    + +

    ◆ other

    + +
    +
    +
    +template<typename T >
    +
    +template<typename T2 >
    + + + + +
    using STLAllocator< T >::rebind< T2 >::other = STLAllocator<T2>
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_s_t_l_allocator_1_1rebind.js b/struct_s_t_l_allocator_1_1rebind.js new file mode 100644 index 000000000..b6169a2e8 --- /dev/null +++ b/struct_s_t_l_allocator_1_1rebind.js @@ -0,0 +1,4 @@ +var struct_s_t_l_allocator_1_1rebind = +[ + [ "other", "struct_s_t_l_allocator_1_1rebind.html#a764b696ca1430862cf1226209b38bd34", null ] +]; \ No newline at end of file diff --git a/struct_s_t_l_temp_allocator_1_1rebind-members.html b/struct_s_t_l_temp_allocator_1_1rebind-members.html new file mode 100644 index 000000000..a4fb4cd71 --- /dev/null +++ b/struct_s_t_l_temp_allocator_1_1rebind-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    STLTempAllocator< T >::rebind< T2 > Member List
    +
    +
    + +

    This is the complete list of members for STLTempAllocator< T >::rebind< T2 >, including all inherited members.

    + + +
    other typedefSTLTempAllocator< T >::rebind< T2 >
    +
    + + + + diff --git a/struct_s_t_l_temp_allocator_1_1rebind.html b/struct_s_t_l_temp_allocator_1_1rebind.html new file mode 100644 index 000000000..184981a6b --- /dev/null +++ b/struct_s_t_l_temp_allocator_1_1rebind.html @@ -0,0 +1,154 @@ + + + + + + + +Jolt Physics: STLTempAllocator< T >::rebind< T2 > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    STLTempAllocator< T >::rebind< T2 > Struct Template Reference
    +
    +
    + +

    Converting to allocator for other type. + More...

    + +

    #include <STLTempAllocator.h>

    + + + + +

    +Public Types

    using other = STLTempAllocator< T2 >
     
    +

    Detailed Description

    +
    template<typename T>
    +template<typename T2>
    +struct STLTempAllocator< T >::rebind< T2 >

    Converting to allocator for other type.

    +

    Member Typedef Documentation

    + +

    ◆ other

    + +
    +
    +
    +template<typename T >
    +
    +template<typename T2 >
    + + + + +
    using STLTempAllocator< T >::rebind< T2 >::other = STLTempAllocator<T2>
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_s_t_l_temp_allocator_1_1rebind.js b/struct_s_t_l_temp_allocator_1_1rebind.js new file mode 100644 index 000000000..8a16d8d6e --- /dev/null +++ b/struct_s_t_l_temp_allocator_1_1rebind.js @@ -0,0 +1,4 @@ +var struct_s_t_l_temp_allocator_1_1rebind = +[ + [ "other", "struct_s_t_l_temp_allocator_1_1rebind.html#abfdedf8e13231a72e1f193b5f70853dd", null ] +]; \ No newline at end of file diff --git a/struct_shape_1_1_get_triangles_context-members.html b/struct_shape_1_1_get_triangles_context-members.html new file mode 100644 index 000000000..1cf657759 --- /dev/null +++ b/struct_shape_1_1_get_triangles_context-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Shape::GetTrianglesContext Member List
    +
    +
    + +

    This is the complete list of members for Shape::GetTrianglesContext, including all inherited members.

    + + +
    mDataShape::GetTrianglesContext
    +
    + + + + diff --git a/struct_shape_1_1_get_triangles_context.html b/struct_shape_1_1_get_triangles_context.html new file mode 100644 index 000000000..65175a77e --- /dev/null +++ b/struct_shape_1_1_get_triangles_context.html @@ -0,0 +1,148 @@ + + + + + + + +Jolt Physics: Shape::GetTrianglesContext Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    Shape::GetTrianglesContext Struct Reference
    +
    +
    + +

    An opaque buffer that holds shape specific information during GetTrianglesStart/Next. + More...

    + +

    #include <Shape.h>

    + + + + +

    +Public Attributes

    uint8 mData [4288]
     
    +

    Detailed Description

    +

    An opaque buffer that holds shape specific information during GetTrianglesStart/Next.

    +

    Member Data Documentation

    + +

    ◆ mData

    + +
    +
    + + + + +
    uint8 Shape::GetTrianglesContext::mData[4288]
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • Jolt/Physics/Collision/Shape/Shape.h
    • +
    +
    +
    + + + + diff --git a/struct_shape_1_1_get_triangles_context.js b/struct_shape_1_1_get_triangles_context.js new file mode 100644 index 000000000..eae14ec62 --- /dev/null +++ b/struct_shape_1_1_get_triangles_context.js @@ -0,0 +1,4 @@ +var struct_shape_1_1_get_triangles_context = +[ + [ "mData", "struct_shape_1_1_get_triangles_context.html#a762a72b95f7fc1f801dc05bc9aaa755c", null ] +]; \ No newline at end of file diff --git a/struct_shape_1_1_stats-members.html b/struct_shape_1_1_stats-members.html new file mode 100644 index 000000000..f8fa40b79 --- /dev/null +++ b/struct_shape_1_1_stats-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Shape::Stats Member List
    +
    +
    + +

    This is the complete list of members for Shape::Stats, including all inherited members.

    + + + + +
    mNumTrianglesShape::Stats
    mSizeBytesShape::Stats
    Stats(size_t inSizeBytes, uint inNumTriangles)Shape::Statsinline
    +
    + + + + diff --git a/struct_shape_1_1_stats.html b/struct_shape_1_1_stats.html new file mode 100644 index 000000000..a72a0883c --- /dev/null +++ b/struct_shape_1_1_stats.html @@ -0,0 +1,213 @@ + + + + + + + +Jolt Physics: Shape::Stats Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    Shape::Stats Struct Reference
    +
    +
    + +

    Class that holds information about the shape that can be used for logging / data collection purposes. + More...

    + +

    #include <Shape.h>

    + + + + +

    +Public Member Functions

     Stats (size_t inSizeBytes, uint inNumTriangles)
     
    + + + + + + + +

    +Public Attributes

    size_t mSizeBytes
     Amount of memory used by this shape (size in bytes)
     
    uint mNumTriangles
     Number of triangles in this shape (when applicable)
     
    +

    Detailed Description

    +

    Class that holds information about the shape that can be used for logging / data collection purposes.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Stats()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Shape::Stats::Stats (size_t inSizeBytes,
    uint inNumTriangles 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mNumTriangles

    + +
    +
    + + + + +
    uint Shape::Stats::mNumTriangles
    +
    + +

    Number of triangles in this shape (when applicable)

    + +
    +
    + +

    ◆ mSizeBytes

    + +
    +
    + + + + +
    size_t Shape::Stats::mSizeBytes
    +
    + +

    Amount of memory used by this shape (size in bytes)

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • Jolt/Physics/Collision/Shape/Shape.h
    • +
    +
    +
    + + + + diff --git a/struct_shape_1_1_stats.js b/struct_shape_1_1_stats.js new file mode 100644 index 000000000..9613b4a5e --- /dev/null +++ b/struct_shape_1_1_stats.js @@ -0,0 +1,6 @@ +var struct_shape_1_1_stats = +[ + [ "Stats", "struct_shape_1_1_stats.html#a61e3cd06a767754cbc5150fe93f1e5fb", null ], + [ "mNumTriangles", "struct_shape_1_1_stats.html#a478540fbad3d607c5dffb39ced542429", null ], + [ "mSizeBytes", "struct_shape_1_1_stats.html#a97505a3dbba1ee77a2e59c845f7a571a", null ] +]; \ No newline at end of file diff --git a/struct_shape_cast-members.html b/struct_shape_cast-members.html new file mode 100644 index 000000000..bd3bdab65 --- /dev/null +++ b/struct_shape_cast-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ShapeCast Member List
    +
    +
    + +

    This is the complete list of members for ShapeCast, including all inherited members.

    + + + + + + + + + + + + +
    GetPointOnRay(float inFraction) constShapeCastT< Vec3, Mat44, ShapeCast >inline
    mCenterOfMassStartShapeCastT< Vec3, Mat44, ShapeCast >
    mDirectionShapeCastT< Vec3, Mat44, ShapeCast >
    mScaleShapeCastT< Vec3, Mat44, ShapeCast >
    mShapeShapeCastT< Vec3, Mat44, ShapeCast >
    mShapeWorldBoundsShapeCastT< Vec3, Mat44, ShapeCast >
    PostTransformed(typename Mat::ArgType inTransform) constShapeCastT< Vec3, Mat44, ShapeCast >inline
    PostTranslated(typename Vec::ArgType inTranslation) constShapeCastT< Vec3, Mat44, ShapeCast >inline
    sFromWorldTransform(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inWorldTransform, Vec3Arg inDirection)ShapeCastT< Vec3, Mat44, ShapeCast >inlinestatic
    ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection, const AABox &inWorldSpaceBounds)ShapeCastT< Vec3, Mat44, ShapeCast >inline
    ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection)ShapeCastT< Vec3, Mat44, ShapeCast >inline
    +
    + + + + diff --git a/struct_shape_cast.html b/struct_shape_cast.html new file mode 100644 index 000000000..c5a05625e --- /dev/null +++ b/struct_shape_cast.html @@ -0,0 +1,170 @@ + + + + + + + +Jolt Physics: ShapeCast Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ShapeCast Struct Reference
    +
    +
    + +

    #include <ShapeCast.h>

    +
    +Inheritance diagram for ShapeCast:
    +
    +
    + + +ShapeCastT< Vec3, Mat44, ShapeCast > + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Additional Inherited Members

    - Public Member Functions inherited from ShapeCastT< Vec3, Mat44, ShapeCast >
    JPH_OVERRIDE_NEW_DELETE ShapeCastT (const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection, const AABox &inWorldSpaceBounds)
     Constructor.
     
     ShapeCastT (const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection)
     Constructor.
     
    ShapeCast PostTransformed (typename Mat::ArgType inTransform) const
     Transform this shape cast using inTransform. Multiply transform on the left left hand side.
     
    ShapeCast PostTranslated (typename Vec::ArgType inTranslation) const
     Translate this shape cast by inTranslation.
     
    Vec3 GetPointOnRay (float inFraction) const
     Get point with fraction inFraction on ray from mCenterOfMassStart to mCenterOfMassStart + mDirection (0 = start of ray, 1 = end of ray)
     
    - Static Public Member Functions inherited from ShapeCastT< Vec3, Mat44, ShapeCast >
    static ShapeCast sFromWorldTransform (const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inWorldTransform, Vec3Arg inDirection)
     Construct a shape cast using a world transform for a shape instead of a center of mass transform.
     
    - Public Attributes inherited from ShapeCastT< Vec3, Mat44, ShapeCast >
    const ShapemShape
     Shape that's being cast (cannot be mesh shape). Note that this structure does not assume ownership over the shape for performance reasons.
     
    const Vec3 mScale
     Scale in local space of the shape being cast (scales relative to its center of mass)
     
    const Mat44 mCenterOfMassStart
     Start position and orientation of the center of mass of the shape (construct using sFromWorldTransform if you have a world transform for your shape)
     
    const Vec3 mDirection
     Direction and length of the cast (anything beyond this length will not be reported as a hit)
     
    const AABox mShapeWorldBounds
     Cached shape's world bounds, calculated in constructor.
     
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_shape_cast.png b/struct_shape_cast.png new file mode 100644 index 000000000..f089360f4 Binary files /dev/null and b/struct_shape_cast.png differ diff --git a/struct_shape_cast_t-members.html b/struct_shape_cast_t-members.html new file mode 100644 index 000000000..d58ec0b03 --- /dev/null +++ b/struct_shape_cast_t-members.html @@ -0,0 +1,127 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    ShapeCastT< Vec, Mat, ShapeCastType > Member List
    +
    +
    + +

    This is the complete list of members for ShapeCastT< Vec, Mat, ShapeCastType >, including all inherited members.

    + + + + + + + + + + + + +
    GetPointOnRay(float inFraction) constShapeCastT< Vec, Mat, ShapeCastType >inline
    mCenterOfMassStartShapeCastT< Vec, Mat, ShapeCastType >
    mDirectionShapeCastT< Vec, Mat, ShapeCastType >
    mScaleShapeCastT< Vec, Mat, ShapeCastType >
    mShapeShapeCastT< Vec, Mat, ShapeCastType >
    mShapeWorldBoundsShapeCastT< Vec, Mat, ShapeCastType >
    PostTransformed(typename Mat::ArgType inTransform) constShapeCastT< Vec, Mat, ShapeCastType >inline
    PostTranslated(typename Vec::ArgType inTranslation) constShapeCastT< Vec, Mat, ShapeCastType >inline
    sFromWorldTransform(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inWorldTransform, Vec3Arg inDirection)ShapeCastT< Vec, Mat, ShapeCastType >inlinestatic
    ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection, const AABox &inWorldSpaceBounds)ShapeCastT< Vec, Mat, ShapeCastType >inline
    ShapeCastT(const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection)ShapeCastT< Vec, Mat, ShapeCastType >inline
    +
    + + + + diff --git a/struct_shape_cast_t.html b/struct_shape_cast_t.html new file mode 100644 index 000000000..226d9edd6 --- /dev/null +++ b/struct_shape_cast_t.html @@ -0,0 +1,518 @@ + + + + + + + +Jolt Physics: ShapeCastT< Vec, Mat, ShapeCastType > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ShapeCastT< Vec, Mat, ShapeCastType > Struct Template Reference
    +
    +
    + +

    Structure that holds a single shape cast (a shape moving along a linear path in 3d space with no rotation) + More...

    + +

    #include <ShapeCast.h>

    + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    JPH_OVERRIDE_NEW_DELETE ShapeCastT (const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection, const AABox &inWorldSpaceBounds)
     Constructor.
     
     ShapeCastT (const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inCenterOfMassStart, Vec3Arg inDirection)
     Constructor.
     
    ShapeCastType PostTransformed (typename Mat::ArgType inTransform) const
     Transform this shape cast using inTransform. Multiply transform on the left left hand side.
     
    ShapeCastType PostTranslated (typename Vec::ArgType inTranslation) const
     Translate this shape cast by inTranslation.
     
    Vec GetPointOnRay (float inFraction) const
     Get point with fraction inFraction on ray from mCenterOfMassStart to mCenterOfMassStart + mDirection (0 = start of ray, 1 = end of ray)
     
    + + + + +

    +Static Public Member Functions

    static ShapeCastType sFromWorldTransform (const Shape *inShape, Vec3Arg inScale, typename Mat::ArgType inWorldTransform, Vec3Arg inDirection)
     Construct a shape cast using a world transform for a shape instead of a center of mass transform.
     
    + + + + + + + + + + + + + + + + +

    +Public Attributes

    const ShapemShape
     Shape that's being cast (cannot be mesh shape). Note that this structure does not assume ownership over the shape for performance reasons.
     
    const Vec3 mScale
     Scale in local space of the shape being cast (scales relative to its center of mass)
     
    const Mat mCenterOfMassStart
     Start position and orientation of the center of mass of the shape (construct using sFromWorldTransform if you have a world transform for your shape)
     
    const Vec3 mDirection
     Direction and length of the cast (anything beyond this length will not be reported as a hit)
     
    const AABox mShapeWorldBounds
     Cached shape's world bounds, calculated in constructor.
     
    +

    Detailed Description

    +
    template<class Vec, class Mat, class ShapeCastType>
    +struct ShapeCastT< Vec, Mat, ShapeCastType >

    Structure that holds a single shape cast (a shape moving along a linear path in 3d space with no rotation)

    +

    Constructor & Destructor Documentation

    + +

    ◆ ShapeCastT() [1/2]

    + +
    +
    +
    +template<class Vec , class Mat , class ShapeCastType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    JPH_OVERRIDE_NEW_DELETE ShapeCastT< Vec, Mat, ShapeCastType >::ShapeCastT (const ShapeinShape,
    Vec3Arg inScale,
    typename Mat::ArgType inCenterOfMassStart,
    Vec3Arg inDirection,
    const AABoxinWorldSpaceBounds 
    )
    +
    +inline
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ ShapeCastT() [2/2]

    + +
    +
    +
    +template<class Vec , class Mat , class ShapeCastType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ShapeCastT< Vec, Mat, ShapeCastType >::ShapeCastT (const ShapeinShape,
    Vec3Arg inScale,
    typename Mat::ArgType inCenterOfMassStart,
    Vec3Arg inDirection 
    )
    +
    +inline
    +
    + +

    Constructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetPointOnRay()

    + +
    +
    +
    +template<class Vec , class Mat , class ShapeCastType >
    + + + + + +
    + + + + + + + + +
    Vec ShapeCastT< Vec, Mat, ShapeCastType >::GetPointOnRay (float inFraction) const
    +
    +inline
    +
    + +

    Get point with fraction inFraction on ray from mCenterOfMassStart to mCenterOfMassStart + mDirection (0 = start of ray, 1 = end of ray)

    + +
    +
    + +

    ◆ PostTransformed()

    + +
    +
    +
    +template<class Vec , class Mat , class ShapeCastType >
    + + + + + +
    + + + + + + + + +
    ShapeCastType ShapeCastT< Vec, Mat, ShapeCastType >::PostTransformed (typename Mat::ArgType inTransform) const
    +
    +inline
    +
    + +

    Transform this shape cast using inTransform. Multiply transform on the left left hand side.

    + +
    +
    + +

    ◆ PostTranslated()

    + +
    +
    +
    +template<class Vec , class Mat , class ShapeCastType >
    + + + + + +
    + + + + + + + + +
    ShapeCastType ShapeCastT< Vec, Mat, ShapeCastType >::PostTranslated (typename Vec::ArgType inTranslation) const
    +
    +inline
    +
    + +

    Translate this shape cast by inTranslation.

    + +
    +
    + +

    ◆ sFromWorldTransform()

    + +
    +
    +
    +template<class Vec , class Mat , class ShapeCastType >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    static ShapeCastType ShapeCastT< Vec, Mat, ShapeCastType >::sFromWorldTransform (const ShapeinShape,
    Vec3Arg inScale,
    typename Mat::ArgType inWorldTransform,
    Vec3Arg inDirection 
    )
    +
    +inlinestatic
    +
    + +

    Construct a shape cast using a world transform for a shape instead of a center of mass transform.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mCenterOfMassStart

    + +
    +
    +
    +template<class Vec , class Mat , class ShapeCastType >
    + + + + +
    const Mat ShapeCastT< Vec, Mat, ShapeCastType >::mCenterOfMassStart
    +
    + +

    Start position and orientation of the center of mass of the shape (construct using sFromWorldTransform if you have a world transform for your shape)

    + +
    +
    + +

    ◆ mDirection

    + +
    +
    +
    +template<class Vec , class Mat , class ShapeCastType >
    + + + + +
    const Vec3 ShapeCastT< Vec, Mat, ShapeCastType >::mDirection
    +
    + +

    Direction and length of the cast (anything beyond this length will not be reported as a hit)

    + +
    +
    + +

    ◆ mScale

    + +
    +
    +
    +template<class Vec , class Mat , class ShapeCastType >
    + + + + +
    const Vec3 ShapeCastT< Vec, Mat, ShapeCastType >::mScale
    +
    + +

    Scale in local space of the shape being cast (scales relative to its center of mass)

    + +
    +
    + +

    ◆ mShape

    + +
    +
    +
    +template<class Vec , class Mat , class ShapeCastType >
    + + + + +
    const Shape* ShapeCastT< Vec, Mat, ShapeCastType >::mShape
    +
    + +

    Shape that's being cast (cannot be mesh shape). Note that this structure does not assume ownership over the shape for performance reasons.

    + +
    +
    + +

    ◆ mShapeWorldBounds

    + +
    +
    +
    +template<class Vec , class Mat , class ShapeCastType >
    + + + + +
    const AABox ShapeCastT< Vec, Mat, ShapeCastType >::mShapeWorldBounds
    +
    + +

    Cached shape's world bounds, calculated in constructor.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_shape_cast_t.js b/struct_shape_cast_t.js new file mode 100644 index 000000000..c47c228ac --- /dev/null +++ b/struct_shape_cast_t.js @@ -0,0 +1,13 @@ +var struct_shape_cast_t = +[ + [ "ShapeCastT", "struct_shape_cast_t.html#a2b2b79fda0cdbef648d9ee22d348334f", null ], + [ "ShapeCastT", "struct_shape_cast_t.html#a72512e9621d9b3ecf84e215bef9ee535", null ], + [ "GetPointOnRay", "struct_shape_cast_t.html#a90dcaf5d1e22122cf08862b9da811c96", null ], + [ "PostTransformed", "struct_shape_cast_t.html#ab07dbf4278d79895fb480781d24db2f3", null ], + [ "PostTranslated", "struct_shape_cast_t.html#a053b353deba2ee41bf6c42d3be33f18e", null ], + [ "mCenterOfMassStart", "struct_shape_cast_t.html#accfdbb9a3a66304f8cec4c918f83ce87", null ], + [ "mDirection", "struct_shape_cast_t.html#a4b45c3421b2f87e1553bb3325ca64752", null ], + [ "mScale", "struct_shape_cast_t.html#aed62d5fadde28ac5dea4f8a44d3dddf2", null ], + [ "mShape", "struct_shape_cast_t.html#a68df269e004434dd4c2dec18e29b1f8d", null ], + [ "mShapeWorldBounds", "struct_shape_cast_t.html#aef82ae03a83e2026e3af3d2f18d9710c", null ] +]; \ No newline at end of file diff --git a/struct_skeleton_pose_1_1_draw_settings-members.html b/struct_skeleton_pose_1_1_draw_settings-members.html new file mode 100644 index 000000000..d49f8bc68 --- /dev/null +++ b/struct_skeleton_pose_1_1_draw_settings-members.html @@ -0,0 +1,119 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SkeletonPose::DrawSettings Member List
    +
    + +
    + + + + diff --git a/struct_skeleton_pose_1_1_draw_settings.html b/struct_skeleton_pose_1_1_draw_settings.html new file mode 100644 index 000000000..321687589 --- /dev/null +++ b/struct_skeleton_pose_1_1_draw_settings.html @@ -0,0 +1,180 @@ + + + + + + + +Jolt Physics: SkeletonPose::DrawSettings Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    SkeletonPose::DrawSettings Struct Reference
    +
    +
    + +

    Draw settings. + More...

    + +

    #include <SkeletonPose.h>

    + + + + + + + + +

    +Public Attributes

    bool mDrawJoints = true
     
    bool mDrawJointOrientations = true
     
    bool mDrawJointNames = false
     
    +

    Detailed Description

    +

    Draw settings.

    +

    Member Data Documentation

    + +

    ◆ mDrawJointNames

    + +
    +
    + + + + +
    bool SkeletonPose::DrawSettings::mDrawJointNames = false
    +
    + +
    +
    + +

    ◆ mDrawJointOrientations

    + +
    +
    + + + + +
    bool SkeletonPose::DrawSettings::mDrawJointOrientations = true
    +
    + +
    +
    + +

    ◆ mDrawJoints

    + +
    +
    + + + + +
    bool SkeletonPose::DrawSettings::mDrawJoints = true
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_skeleton_pose_1_1_draw_settings.js b/struct_skeleton_pose_1_1_draw_settings.js new file mode 100644 index 000000000..cedf7709f --- /dev/null +++ b/struct_skeleton_pose_1_1_draw_settings.js @@ -0,0 +1,6 @@ +var struct_skeleton_pose_1_1_draw_settings = +[ + [ "mDrawJointNames", "struct_skeleton_pose_1_1_draw_settings.html#a8ea7aef6d43a09142d91848226741da3", null ], + [ "mDrawJointOrientations", "struct_skeleton_pose_1_1_draw_settings.html#a13dc9b1ccd594f04c92c6a4b70147d04", null ], + [ "mDrawJoints", "struct_skeleton_pose_1_1_draw_settings.html#a986b1e3a3989766f0584e092cde44eaa", null ] +]; \ No newline at end of file diff --git a/struct_soft_body_shape_1_1_s_b_s_get_triangles_context-members.html b/struct_soft_body_shape_1_1_s_b_s_get_triangles_context-members.html new file mode 100644 index 000000000..0887b1e60 --- /dev/null +++ b/struct_soft_body_shape_1_1_s_b_s_get_triangles_context-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SoftBodyShape::SBSGetTrianglesContext Member List
    +
    + +
    + + + + diff --git a/struct_soft_body_shape_1_1_s_b_s_get_triangles_context.html b/struct_soft_body_shape_1_1_s_b_s_get_triangles_context.html new file mode 100644 index 000000000..07dc07c49 --- /dev/null +++ b/struct_soft_body_shape_1_1_s_b_s_get_triangles_context.html @@ -0,0 +1,157 @@ + + + + + + + +Jolt Physics: SoftBodyShape::SBSGetTrianglesContext Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    SoftBodyShape::SBSGetTrianglesContext Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    Mat44 mCenterOfMassTransform
     
    int mTriangleIndex
     
    +

    Member Data Documentation

    + +

    ◆ mCenterOfMassTransform

    + +
    +
    + + + + +
    Mat44 SoftBodyShape::SBSGetTrianglesContext::mCenterOfMassTransform
    +
    + +
    +
    + +

    ◆ mTriangleIndex

    + +
    +
    + + + + +
    int SoftBodyShape::SBSGetTrianglesContext::mTriangleIndex
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_soft_body_shape_1_1_s_b_s_get_triangles_context.js b/struct_soft_body_shape_1_1_s_b_s_get_triangles_context.js new file mode 100644 index 000000000..ffed6a6ea --- /dev/null +++ b/struct_soft_body_shape_1_1_s_b_s_get_triangles_context.js @@ -0,0 +1,5 @@ +var struct_soft_body_shape_1_1_s_b_s_get_triangles_context = +[ + [ "mCenterOfMassTransform", "struct_soft_body_shape_1_1_s_b_s_get_triangles_context.html#ab9255dc35a9feceec9b35236099a0582", null ], + [ "mTriangleIndex", "struct_soft_body_shape_1_1_s_b_s_get_triangles_context.html#a6b26488a2950bf9da8780a30d7e6bfc0", null ] +]; \ No newline at end of file diff --git a/struct_soft_body_shared_settings_1_1_dihedral_bend-members.html b/struct_soft_body_shared_settings_1_1_dihedral_bend-members.html new file mode 100644 index 000000000..8d4b76297 --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_dihedral_bend-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SoftBodySharedSettings::DihedralBend Member List
    +
    +
    + +

    This is the complete list of members for SoftBodySharedSettings::DihedralBend, including all inherited members.

    + + + + + + + +
    DihedralBend()=defaultSoftBodySharedSettings::DihedralBend
    DihedralBend(uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inVertex4, float inCompliance=0.0f)SoftBodySharedSettings::DihedralBendinline
    GetMinVertexIndex() constSoftBodySharedSettings::DihedralBendinline
    mComplianceSoftBodySharedSettings::DihedralBend
    mInitialAngleSoftBodySharedSettings::DihedralBend
    mVertexSoftBodySharedSettings::DihedralBend
    +
    + + + + diff --git a/struct_soft_body_shared_settings_1_1_dihedral_bend.html b/struct_soft_body_shared_settings_1_1_dihedral_bend.html new file mode 100644 index 000000000..b0cbf18ee --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_dihedral_bend.html @@ -0,0 +1,320 @@ + + + + + + + +Jolt Physics: SoftBodySharedSettings::DihedralBend Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    SoftBodySharedSettings::DihedralBend Struct Reference
    +
    +
    + +

    #include <SoftBodySharedSettings.h>

    + + + + + + + + + + +

    +Public Member Functions

     DihedralBend ()=default
     Constructor.
     
     DihedralBend (uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inVertex4, float inCompliance=0.0f)
     
    uint32 GetMinVertexIndex () const
     Return the lowest vertex index of this constraint.
     
    + + + + + + + + + + +

    +Public Attributes

    uint32 mVertex [4]
     Indices of the vertices of the 2 triangles that share an edge (the first 2 vertices are the shared edge)
     
    float mCompliance = 0.0f
     Inverse of the stiffness of the constraint.
     
    float mInitialAngle = 0.0f
     Initial angle between the normals of the triangles (pi - dihedral angle).
     
    +

    Detailed Description

    +

    A dihedral bend constraint keeps the angle between two triangles constant along their shared edge.

       x2
    +  /  \
    + / t0 \
    +x0----x1
    + \ t1 /
    +  \  /
    +   x3
    +

    x0..x3 are the vertices, t0 and t1 are the triangles that share the edge x0..x1

    +

    Based on:

      +
    • "Position Based Dynamics" - Matthias Muller et al.
    • +
    • "Strain Based Dynamics" - Matthias Muller et al.
    • +
    • "Simulation of Clothing with Folds and Wrinkles" - R. Bridson et al.
    • +
    +

    Constructor & Destructor Documentation

    + +

    ◆ DihedralBend() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    SoftBodySharedSettings::DihedralBend::DihedralBend ()
    +
    +default
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ DihedralBend() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SoftBodySharedSettings::DihedralBend::DihedralBend (uint32 inVertex1,
    uint32 inVertex2,
    uint32 inVertex3,
    uint32 inVertex4,
    float inCompliance = 0.0f 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetMinVertexIndex()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint32 SoftBodySharedSettings::DihedralBend::GetMinVertexIndex () const
    +
    +inline
    +
    + +

    Return the lowest vertex index of this constraint.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mCompliance

    + +
    +
    + + + + +
    float SoftBodySharedSettings::DihedralBend::mCompliance = 0.0f
    +
    + +

    Inverse of the stiffness of the constraint.

    + +
    +
    + +

    ◆ mInitialAngle

    + +
    +
    + + + + +
    float SoftBodySharedSettings::DihedralBend::mInitialAngle = 0.0f
    +
    + +

    Initial angle between the normals of the triangles (pi - dihedral angle).

    + +
    +
    + +

    ◆ mVertex

    + +
    +
    + + + + +
    uint32 SoftBodySharedSettings::DihedralBend::mVertex[4]
    +
    + +

    Indices of the vertices of the 2 triangles that share an edge (the first 2 vertices are the shared edge)

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_soft_body_shared_settings_1_1_dihedral_bend.js b/struct_soft_body_shared_settings_1_1_dihedral_bend.js new file mode 100644 index 000000000..3aadec5ad --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_dihedral_bend.js @@ -0,0 +1,9 @@ +var struct_soft_body_shared_settings_1_1_dihedral_bend = +[ + [ "DihedralBend", "struct_soft_body_shared_settings_1_1_dihedral_bend.html#abe9fe03ca75f96fea20b8ee693a2f873", null ], + [ "DihedralBend", "struct_soft_body_shared_settings_1_1_dihedral_bend.html#afe227a4f69c416f8047b276dcf350585", null ], + [ "GetMinVertexIndex", "struct_soft_body_shared_settings_1_1_dihedral_bend.html#af40fcceebc4074cd387372bb8bd60044", null ], + [ "mCompliance", "struct_soft_body_shared_settings_1_1_dihedral_bend.html#ae2c290464bd3a9c43f12c48c8548b76d", null ], + [ "mInitialAngle", "struct_soft_body_shared_settings_1_1_dihedral_bend.html#a24ecaca4a5cb72ca51eef8a9fa739ea5", null ], + [ "mVertex", "struct_soft_body_shared_settings_1_1_dihedral_bend.html#a8a2a36d080d6ca92f8badb53ef6e7f83", null ] +]; \ No newline at end of file diff --git a/struct_soft_body_shared_settings_1_1_edge-members.html b/struct_soft_body_shared_settings_1_1_edge-members.html new file mode 100644 index 000000000..4b49b7c60 --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_edge-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SoftBodySharedSettings::Edge Member List
    +
    +
    + +

    This is the complete list of members for SoftBodySharedSettings::Edge, including all inherited members.

    + + + + + + + +
    Edge()=defaultSoftBodySharedSettings::Edge
    Edge(uint32 inVertex1, uint32 inVertex2, float inCompliance=0.0f)SoftBodySharedSettings::Edgeinline
    GetMinVertexIndex() constSoftBodySharedSettings::Edgeinline
    mComplianceSoftBodySharedSettings::Edge
    mRestLengthSoftBodySharedSettings::Edge
    mVertexSoftBodySharedSettings::Edge
    +
    + + + + diff --git a/struct_soft_body_shared_settings_1_1_edge.html b/struct_soft_body_shared_settings_1_1_edge.html new file mode 100644 index 000000000..7764fbc64 --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_edge.html @@ -0,0 +1,299 @@ + + + + + + + +Jolt Physics: SoftBodySharedSettings::Edge Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    SoftBodySharedSettings::Edge Struct Reference
    +
    +
    + +

    An edge keeps two vertices at a constant distance using a spring: |x1 - x2| = rest length. + More...

    + +

    #include <SoftBodySharedSettings.h>

    + + + + + + + + + + +

    +Public Member Functions

     Edge ()=default
     Constructor.
     
     Edge (uint32 inVertex1, uint32 inVertex2, float inCompliance=0.0f)
     
    uint32 GetMinVertexIndex () const
     Return the lowest vertex index of this constraint.
     
    + + + + + + + + + + +

    +Public Attributes

    uint32 mVertex [2]
     Indices of the vertices that form the edge.
     
    float mRestLength = 1.0f
     Rest length of the spring.
     
    float mCompliance = 0.0f
     Inverse of the stiffness of the spring.
     
    +

    Detailed Description

    +

    An edge keeps two vertices at a constant distance using a spring: |x1 - x2| = rest length.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Edge() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    SoftBodySharedSettings::Edge::Edge ()
    +
    +default
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ Edge() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    SoftBodySharedSettings::Edge::Edge (uint32 inVertex1,
    uint32 inVertex2,
    float inCompliance = 0.0f 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetMinVertexIndex()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint32 SoftBodySharedSettings::Edge::GetMinVertexIndex () const
    +
    +inline
    +
    + +

    Return the lowest vertex index of this constraint.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mCompliance

    + +
    +
    + + + + +
    float SoftBodySharedSettings::Edge::mCompliance = 0.0f
    +
    + +

    Inverse of the stiffness of the spring.

    + +
    +
    + +

    ◆ mRestLength

    + +
    +
    + + + + +
    float SoftBodySharedSettings::Edge::mRestLength = 1.0f
    +
    + +

    Rest length of the spring.

    + +
    +
    + +

    ◆ mVertex

    + +
    +
    + + + + +
    uint32 SoftBodySharedSettings::Edge::mVertex[2]
    +
    + +

    Indices of the vertices that form the edge.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_soft_body_shared_settings_1_1_edge.js b/struct_soft_body_shared_settings_1_1_edge.js new file mode 100644 index 000000000..ed90173a8 --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_edge.js @@ -0,0 +1,9 @@ +var struct_soft_body_shared_settings_1_1_edge = +[ + [ "Edge", "struct_soft_body_shared_settings_1_1_edge.html#a6330e512065ff11935b9fb0f04b5db6c", null ], + [ "Edge", "struct_soft_body_shared_settings_1_1_edge.html#a88c7b84c4d66a6bcfd19939c30c837ac", null ], + [ "GetMinVertexIndex", "struct_soft_body_shared_settings_1_1_edge.html#a2542e95a101443bb88ef41b38e569a8d", null ], + [ "mCompliance", "struct_soft_body_shared_settings_1_1_edge.html#a2a10f9d5aad98552ac275597a4f991fb", null ], + [ "mRestLength", "struct_soft_body_shared_settings_1_1_edge.html#a4a1fbe8d069c6c9c13a12dc8f951959a", null ], + [ "mVertex", "struct_soft_body_shared_settings_1_1_edge.html#a10368fe4bdfd3de764f0e5cbbf48371c", null ] +]; \ No newline at end of file diff --git a/struct_soft_body_shared_settings_1_1_face-members.html b/struct_soft_body_shared_settings_1_1_face-members.html new file mode 100644 index 000000000..940957171 --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_face-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SoftBodySharedSettings::Face Member List
    +
    +
    + +

    This is the complete list of members for SoftBodySharedSettings::Face, including all inherited members.

    + + + + + + +
    Face()=defaultSoftBodySharedSettings::Face
    Face(uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inMaterialIndex=0)SoftBodySharedSettings::Faceinline
    IsDegenerate() constSoftBodySharedSettings::Faceinline
    mMaterialIndexSoftBodySharedSettings::Face
    mVertexSoftBodySharedSettings::Face
    +
    + + + + diff --git a/struct_soft_body_shared_settings_1_1_face.html b/struct_soft_body_shared_settings_1_1_face.html new file mode 100644 index 000000000..3ba52a3a4 --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_face.html @@ -0,0 +1,286 @@ + + + + + + + +Jolt Physics: SoftBodySharedSettings::Face Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    SoftBodySharedSettings::Face Struct Reference
    +
    +
    + +

    A face defines the surface of the body. + More...

    + +

    #include <SoftBodySharedSettings.h>

    + + + + + + + + + + +

    +Public Member Functions

     Face ()=default
     Constructor.
     
     Face (uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inMaterialIndex=0)
     
    bool IsDegenerate () const
     Check if this is a degenerate face (a face which points to the same vertex twice)
     
    + + + + + + + +

    +Public Attributes

    uint32 mVertex [3]
     Indices of the vertices that form the face.
     
    uint32 mMaterialIndex = 0
     Index of the material of the face in SoftBodySharedSettings::mMaterials.
     
    +

    Detailed Description

    +

    A face defines the surface of the body.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Face() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    SoftBodySharedSettings::Face::Face ()
    +
    +default
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ Face() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SoftBodySharedSettings::Face::Face (uint32 inVertex1,
    uint32 inVertex2,
    uint32 inVertex3,
    uint32 inMaterialIndex = 0 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ IsDegenerate()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool SoftBodySharedSettings::Face::IsDegenerate () const
    +
    +inline
    +
    + +

    Check if this is a degenerate face (a face which points to the same vertex twice)

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mMaterialIndex

    + +
    +
    + + + + +
    uint32 SoftBodySharedSettings::Face::mMaterialIndex = 0
    +
    + +

    Index of the material of the face in SoftBodySharedSettings::mMaterials.

    + +
    +
    + +

    ◆ mVertex

    + +
    +
    + + + + +
    uint32 SoftBodySharedSettings::Face::mVertex[3]
    +
    + +

    Indices of the vertices that form the face.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_soft_body_shared_settings_1_1_face.js b/struct_soft_body_shared_settings_1_1_face.js new file mode 100644 index 000000000..b1947fc5e --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_face.js @@ -0,0 +1,8 @@ +var struct_soft_body_shared_settings_1_1_face = +[ + [ "Face", "struct_soft_body_shared_settings_1_1_face.html#a0eeac3e099f764d8b9697888b1603aa1", null ], + [ "Face", "struct_soft_body_shared_settings_1_1_face.html#a5206e7ff17d5f1912738717c8527f944", null ], + [ "IsDegenerate", "struct_soft_body_shared_settings_1_1_face.html#ae962b7b0a75c52698410e6dfd8aba428", null ], + [ "mMaterialIndex", "struct_soft_body_shared_settings_1_1_face.html#a475a4ba9dfb9a957ac0d8036ca46faba", null ], + [ "mVertex", "struct_soft_body_shared_settings_1_1_face.html#af289ee75cdbf4d3204ef06f385a2eafd", null ] +]; \ No newline at end of file diff --git a/struct_soft_body_shared_settings_1_1_vertex-members.html b/struct_soft_body_shared_settings_1_1_vertex-members.html new file mode 100644 index 000000000..f9f7b6431 --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_vertex-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SoftBodySharedSettings::Vertex Member List
    +
    +
    + +

    This is the complete list of members for SoftBodySharedSettings::Vertex, including all inherited members.

    + + + + + + +
    mInvMassSoftBodySharedSettings::Vertex
    mPositionSoftBodySharedSettings::Vertex
    mVelocitySoftBodySharedSettings::Vertex
    Vertex()=defaultSoftBodySharedSettings::Vertex
    Vertex(const Float3 &inPosition, const Float3 &inVelocity=Float3(0, 0, 0), float inInvMass=1.0f)SoftBodySharedSettings::Vertexinline
    +
    + + + + diff --git a/struct_soft_body_shared_settings_1_1_vertex.html b/struct_soft_body_shared_settings_1_1_vertex.html new file mode 100644 index 000000000..58b63fccf --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_vertex.html @@ -0,0 +1,268 @@ + + + + + + + +Jolt Physics: SoftBodySharedSettings::Vertex Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    SoftBodySharedSettings::Vertex Struct Reference
    +
    +
    + +

    A vertex is a particle, the data in this structure is only used during creation of the soft body and not during simulation. + More...

    + +

    #include <SoftBodySharedSettings.h>

    + + + + + + + +

    +Public Member Functions

     Vertex ()=default
     Constructor.
     
     Vertex (const Float3 &inPosition, const Float3 &inVelocity=Float3(0, 0, 0), float inInvMass=1.0f)
     
    + + + + + + + + + + +

    +Public Attributes

    Float3 mPosition { 0, 0, 0 }
     Initial position of the vertex.
     
    Float3 mVelocity { 0, 0, 0 }
     Initial velocity of the vertex.
     
    float mInvMass = 1.0f
     Initial inverse of the mass of the vertex.
     
    +

    Detailed Description

    +

    A vertex is a particle, the data in this structure is only used during creation of the soft body and not during simulation.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Vertex() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    SoftBodySharedSettings::Vertex::Vertex ()
    +
    +default
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ Vertex() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    SoftBodySharedSettings::Vertex::Vertex (const Float3inPosition,
    const Float3inVelocity = Float3(0, 0, 0),
    float inInvMass = 1.0f 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mInvMass

    + +
    +
    + + + + +
    float SoftBodySharedSettings::Vertex::mInvMass = 1.0f
    +
    + +

    Initial inverse of the mass of the vertex.

    + +
    +
    + +

    ◆ mPosition

    + +
    +
    + + + + +
    Float3 SoftBodySharedSettings::Vertex::mPosition { 0, 0, 0 }
    +
    + +

    Initial position of the vertex.

    + +
    +
    + +

    ◆ mVelocity

    + +
    +
    + + + + +
    Float3 SoftBodySharedSettings::Vertex::mVelocity { 0, 0, 0 }
    +
    + +

    Initial velocity of the vertex.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_soft_body_shared_settings_1_1_vertex.js b/struct_soft_body_shared_settings_1_1_vertex.js new file mode 100644 index 000000000..6b3b7a878 --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_vertex.js @@ -0,0 +1,8 @@ +var struct_soft_body_shared_settings_1_1_vertex = +[ + [ "Vertex", "struct_soft_body_shared_settings_1_1_vertex.html#ade523b548f25eefba83b33cc7632ee52", null ], + [ "Vertex", "struct_soft_body_shared_settings_1_1_vertex.html#a72596eb07dd2135d0908053327fe8b27", null ], + [ "mInvMass", "struct_soft_body_shared_settings_1_1_vertex.html#aadc3a31d93e636681372f53ed66df26c", null ], + [ "mPosition", "struct_soft_body_shared_settings_1_1_vertex.html#aefc61e301f8ba7f7ad8209a69dabeeb1", null ], + [ "mVelocity", "struct_soft_body_shared_settings_1_1_vertex.html#a2f830cc1795b028e3ca2043ce2cf5a63", null ] +]; \ No newline at end of file diff --git a/struct_soft_body_shared_settings_1_1_vertex_attributes-members.html b/struct_soft_body_shared_settings_1_1_vertex_attributes-members.html new file mode 100644 index 000000000..0b35696a7 --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_vertex_attributes-members.html @@ -0,0 +1,123 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SoftBodySharedSettings::VertexAttributes Member List
    +
    + +
    + + + + diff --git a/struct_soft_body_shared_settings_1_1_vertex_attributes.html b/struct_soft_body_shared_settings_1_1_vertex_attributes.html new file mode 100644 index 000000000..8a957d92a --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_vertex_attributes.html @@ -0,0 +1,315 @@ + + + + + + + +Jolt Physics: SoftBodySharedSettings::VertexAttributes Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    SoftBodySharedSettings::VertexAttributes Struct Reference
    +
    +
    + +

    #include <SoftBodySharedSettings.h>

    + + + + + + + +

    +Public Member Functions

     VertexAttributes ()=default
     Constructor.
     
     VertexAttributes (float inCompliance, float inShearCompliance, float inBendCompliance, ELRAType inLRAType=ELRAType::None, float inLRAMaxDistanceMultiplier=1.0f)
     
    + + + + + + + + + + + + + + + + +

    +Public Attributes

    float mCompliance = 0.0f
     The compliance of the normal edges. Set to FLT_MAX to disable regular edges for any edge involving this vertex.
     
    float mShearCompliance = 0.0f
     The compliance of the shear edges. Set to FLT_MAX to disable shear edges for any edge involving this vertex.
     
    float mBendCompliance = FLT_MAX
     The compliance of the bend edges. Set to FLT_MAX to disable bend edges for any bend constraint involving this vertex.
     
    ELRAType mLRAType = ELRAType::None
     The type of long range attachment constraint to create.
     
    float mLRAMaxDistanceMultiplier = 1.0f
     Multiplier for the max distance of the LRA constraint, e.g. 1.01 means the max distance is 1% longer than the calculated distance in the rest pose.
     
    +

    Detailed Description

    +

    Per vertex attributes used during the CreateConstraints function. For an edge or shear constraint, the compliance is averaged between the two attached vertices. For a bend constraint, the compliance is averaged between the two vertices on the shared edge.

    +

    Constructor & Destructor Documentation

    + +

    ◆ VertexAttributes() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    SoftBodySharedSettings::VertexAttributes::VertexAttributes ()
    +
    +default
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ VertexAttributes() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SoftBodySharedSettings::VertexAttributes::VertexAttributes (float inCompliance,
    float inShearCompliance,
    float inBendCompliance,
    ELRAType inLRAType = ELRAType::None,
    float inLRAMaxDistanceMultiplier = 1.0f 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mBendCompliance

    + +
    +
    + + + + +
    float SoftBodySharedSettings::VertexAttributes::mBendCompliance = FLT_MAX
    +
    + +

    The compliance of the bend edges. Set to FLT_MAX to disable bend edges for any bend constraint involving this vertex.

    + +
    +
    + +

    ◆ mCompliance

    + +
    +
    + + + + +
    float SoftBodySharedSettings::VertexAttributes::mCompliance = 0.0f
    +
    + +

    The compliance of the normal edges. Set to FLT_MAX to disable regular edges for any edge involving this vertex.

    + +
    +
    + +

    ◆ mLRAMaxDistanceMultiplier

    + +
    +
    + + + + +
    float SoftBodySharedSettings::VertexAttributes::mLRAMaxDistanceMultiplier = 1.0f
    +
    + +

    Multiplier for the max distance of the LRA constraint, e.g. 1.01 means the max distance is 1% longer than the calculated distance in the rest pose.

    + +
    +
    + +

    ◆ mLRAType

    + +
    +
    + + + + +
    ELRAType SoftBodySharedSettings::VertexAttributes::mLRAType = ELRAType::None
    +
    + +

    The type of long range attachment constraint to create.

    + +
    +
    + +

    ◆ mShearCompliance

    + +
    +
    + + + + +
    float SoftBodySharedSettings::VertexAttributes::mShearCompliance = 0.0f
    +
    + +

    The compliance of the shear edges. Set to FLT_MAX to disable shear edges for any edge involving this vertex.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_soft_body_shared_settings_1_1_vertex_attributes.js b/struct_soft_body_shared_settings_1_1_vertex_attributes.js new file mode 100644 index 000000000..183ba0d92 --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_vertex_attributes.js @@ -0,0 +1,10 @@ +var struct_soft_body_shared_settings_1_1_vertex_attributes = +[ + [ "VertexAttributes", "struct_soft_body_shared_settings_1_1_vertex_attributes.html#a1fa560e1cb843e4cd51b58413f2befef", null ], + [ "VertexAttributes", "struct_soft_body_shared_settings_1_1_vertex_attributes.html#a76a52d275de7b0362f5b0eba392b4479", null ], + [ "mBendCompliance", "struct_soft_body_shared_settings_1_1_vertex_attributes.html#a08bc90b80ef1a8af33dc8b7cebae8367", null ], + [ "mCompliance", "struct_soft_body_shared_settings_1_1_vertex_attributes.html#a041f1223d302ca1f2314f07d15a24d06", null ], + [ "mLRAMaxDistanceMultiplier", "struct_soft_body_shared_settings_1_1_vertex_attributes.html#a11c3e0f080ed6c5b738a2e0800a07909", null ], + [ "mLRAType", "struct_soft_body_shared_settings_1_1_vertex_attributes.html#a450d6c1dce4eb0747df02c81529812ab", null ], + [ "mShearCompliance", "struct_soft_body_shared_settings_1_1_vertex_attributes.html#a2b7dc88022a2596675aa9b551aa67d98", null ] +]; \ No newline at end of file diff --git a/struct_soft_body_shared_settings_1_1_volume-members.html b/struct_soft_body_shared_settings_1_1_volume-members.html new file mode 100644 index 000000000..4d0f3f394 --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_volume-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    SoftBodySharedSettings::Volume Member List
    +
    +
    + +

    This is the complete list of members for SoftBodySharedSettings::Volume, including all inherited members.

    + + + + + + + +
    GetMinVertexIndex() constSoftBodySharedSettings::Volumeinline
    mComplianceSoftBodySharedSettings::Volume
    mSixRestVolumeSoftBodySharedSettings::Volume
    mVertexSoftBodySharedSettings::Volume
    Volume()=defaultSoftBodySharedSettings::Volume
    Volume(uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inVertex4, float inCompliance=0.0f)SoftBodySharedSettings::Volumeinline
    +
    + + + + diff --git a/struct_soft_body_shared_settings_1_1_volume.html b/struct_soft_body_shared_settings_1_1_volume.html new file mode 100644 index 000000000..29c61fc16 --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_volume.html @@ -0,0 +1,311 @@ + + + + + + + +Jolt Physics: SoftBodySharedSettings::Volume Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    SoftBodySharedSettings::Volume Struct Reference
    +
    +
    + +

    Volume constraint, keeps the volume of a tetrahedron constant. + More...

    + +

    #include <SoftBodySharedSettings.h>

    + + + + + + + + + + +

    +Public Member Functions

     Volume ()=default
     Constructor.
     
     Volume (uint32 inVertex1, uint32 inVertex2, uint32 inVertex3, uint32 inVertex4, float inCompliance=0.0f)
     
    uint32 GetMinVertexIndex () const
     Return the lowest vertex index of this constraint.
     
    + + + + + + + + + + +

    +Public Attributes

    uint32 mVertex [4]
     Indices of the vertices that form the tetrhedron.
     
    float mSixRestVolume = 1.0f
     6 times the rest volume of the tetrahedron (calculated by CalculateVolumeConstraintVolumes())
     
    float mCompliance = 0.0f
     Inverse of the stiffness of the constraint.
     
    +

    Detailed Description

    +

    Volume constraint, keeps the volume of a tetrahedron constant.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Volume() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    SoftBodySharedSettings::Volume::Volume ()
    +
    +default
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ Volume() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SoftBodySharedSettings::Volume::Volume (uint32 inVertex1,
    uint32 inVertex2,
    uint32 inVertex3,
    uint32 inVertex4,
    float inCompliance = 0.0f 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetMinVertexIndex()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint32 SoftBodySharedSettings::Volume::GetMinVertexIndex () const
    +
    +inline
    +
    + +

    Return the lowest vertex index of this constraint.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mCompliance

    + +
    +
    + + + + +
    float SoftBodySharedSettings::Volume::mCompliance = 0.0f
    +
    + +

    Inverse of the stiffness of the constraint.

    + +
    +
    + +

    ◆ mSixRestVolume

    + +
    +
    + + + + +
    float SoftBodySharedSettings::Volume::mSixRestVolume = 1.0f
    +
    + +

    6 times the rest volume of the tetrahedron (calculated by CalculateVolumeConstraintVolumes())

    + +
    +
    + +

    ◆ mVertex

    + +
    +
    + + + + +
    uint32 SoftBodySharedSettings::Volume::mVertex[4]
    +
    + +

    Indices of the vertices that form the tetrhedron.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_soft_body_shared_settings_1_1_volume.js b/struct_soft_body_shared_settings_1_1_volume.js new file mode 100644 index 000000000..5b969b16e --- /dev/null +++ b/struct_soft_body_shared_settings_1_1_volume.js @@ -0,0 +1,9 @@ +var struct_soft_body_shared_settings_1_1_volume = +[ + [ "Volume", "struct_soft_body_shared_settings_1_1_volume.html#ae65d5d8fdfd059c396403e6ac23d7f8f", null ], + [ "Volume", "struct_soft_body_shared_settings_1_1_volume.html#a60318d30fe02f4f64f4c00d9f7ac67cb", null ], + [ "GetMinVertexIndex", "struct_soft_body_shared_settings_1_1_volume.html#a57d932ebc0d377fd39b109991ebbc51c", null ], + [ "mCompliance", "struct_soft_body_shared_settings_1_1_volume.html#abd571991d3bc19d1ab150a65553b29c4", null ], + [ "mSixRestVolume", "struct_soft_body_shared_settings_1_1_volume.html#adc67607f0f6f7f6e5e8ff1b77c463c2d", null ], + [ "mVertex", "struct_soft_body_shared_settings_1_1_volume.html#ac93843ad9233c36b55ae93cc522773bd", null ] +]; \ No newline at end of file diff --git a/struct_static_array_1_1_storage-members.html b/struct_static_array_1_1_storage-members.html new file mode 100644 index 000000000..65807b669 --- /dev/null +++ b/struct_static_array_1_1_storage-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    StaticArray< T, N >::Storage Member List
    +
    +
    + +

    This is the complete list of members for StaticArray< T, N >::Storage, including all inherited members.

    + + +
    mDataStaticArray< T, N >::Storage
    +
    + + + + diff --git a/struct_static_array_1_1_storage.html b/struct_static_array_1_1_storage.html new file mode 100644 index 000000000..4ac20088e --- /dev/null +++ b/struct_static_array_1_1_storage.html @@ -0,0 +1,145 @@ + + + + + + + +Jolt Physics: StaticArray< T, N >::Storage Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    StaticArray< T, N >::Storage Struct Reference
    +
    +
    + +

    #include <StaticArray.h>

    + + + + +

    +Public Attributes

    uint8 mData [sizeof(T)]
     
    +

    Member Data Documentation

    + +

    ◆ mData

    + +
    +
    +
    +template<class T , uint N>
    + + + + +
    uint8 StaticArray< T, N >::Storage::mData[sizeof(T)]
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_static_array_1_1_storage.js b/struct_static_array_1_1_storage.js new file mode 100644 index 000000000..3fcc0e6f8 --- /dev/null +++ b/struct_static_array_1_1_storage.js @@ -0,0 +1,4 @@ +var struct_static_array_1_1_storage = +[ + [ "mData", "struct_static_array_1_1_storage.html#a5f53efe1f6db4285e85139037cb7d7d5", null ] +]; \ No newline at end of file diff --git a/struct_transformed_convex_object-members.html b/struct_transformed_convex_object-members.html new file mode 100644 index 000000000..c9d867b22 --- /dev/null +++ b/struct_transformed_convex_object-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    TransformedConvexObject< ConvexObject > Member List
    +
    +
    + +

    This is the complete list of members for TransformedConvexObject< ConvexObject >, including all inherited members.

    + + + + + + +
    GetSupport(Vec3Arg inDirection) constTransformedConvexObject< ConvexObject >inline
    GetSupportingFace(Vec3Arg inDirection, VERTEX_ARRAY &outVertices) constTransformedConvexObject< ConvexObject >inline
    mObjectTransformedConvexObject< ConvexObject >
    mTransformTransformedConvexObject< ConvexObject >
    TransformedConvexObject(Mat44Arg inTransform, const ConvexObject &inObject)TransformedConvexObject< ConvexObject >inline
    +
    + + + + diff --git a/struct_transformed_convex_object.html b/struct_transformed_convex_object.html new file mode 100644 index 000000000..599807ab0 --- /dev/null +++ b/struct_transformed_convex_object.html @@ -0,0 +1,294 @@ + + + + + + + +Jolt Physics: TransformedConvexObject< ConvexObject > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    TransformedConvexObject< ConvexObject > Struct Template Reference
    +
    +
    + +

    #include <ConvexSupport.h>

    + + + + + + + + + + + + +

    +Public Member Functions

     TransformedConvexObject (Mat44Arg inTransform, const ConvexObject &inObject)
     Create transformed convex object.
     
    Vec3 GetSupport (Vec3Arg inDirection) const
     Calculate the support vector for this convex shape.
     
    template<class VERTEX_ARRAY >
    void GetSupportingFace (Vec3Arg inDirection, VERTEX_ARRAY &outVertices) const
     Get the vertices of the face that faces inDirection the most.
     
    + + + + + +

    +Public Attributes

    Mat44 mTransform
     
    const ConvexObject & mObject
     
    +

    Detailed Description

    +
    template<typename ConvexObject>
    +struct TransformedConvexObject< ConvexObject >

    Helper functions to get the support point for a convex object Structure that transforms a convex object (supports only uniform scaling)

    +

    Constructor & Destructor Documentation

    + +

    ◆ TransformedConvexObject()

    + +
    +
    +
    +template<typename ConvexObject >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    TransformedConvexObject< ConvexObject >::TransformedConvexObject (Mat44Arg inTransform,
    const ConvexObject & inObject 
    )
    +
    +inline
    +
    + +

    Create transformed convex object.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetSupport()

    + +
    +
    +
    +template<typename ConvexObject >
    + + + + + +
    + + + + + + + + +
    Vec3 TransformedConvexObject< ConvexObject >::GetSupport (Vec3Arg inDirection) const
    +
    +inline
    +
    + +

    Calculate the support vector for this convex shape.

    + +
    +
    + +

    ◆ GetSupportingFace()

    + +
    +
    +
    +template<typename ConvexObject >
    +
    +template<class VERTEX_ARRAY >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void TransformedConvexObject< ConvexObject >::GetSupportingFace (Vec3Arg inDirection,
    VERTEX_ARRAY & outVertices 
    ) const
    +
    +inline
    +
    + +

    Get the vertices of the face that faces inDirection the most.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mObject

    + +
    +
    +
    +template<typename ConvexObject >
    + + + + +
    const ConvexObject& TransformedConvexObject< ConvexObject >::mObject
    +
    + +
    +
    + +

    ◆ mTransform

    + +
    +
    +
    +template<typename ConvexObject >
    + + + + +
    Mat44 TransformedConvexObject< ConvexObject >::mTransform
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_transformed_convex_object.js b/struct_transformed_convex_object.js new file mode 100644 index 000000000..e5121d859 --- /dev/null +++ b/struct_transformed_convex_object.js @@ -0,0 +1,8 @@ +var struct_transformed_convex_object = +[ + [ "TransformedConvexObject", "struct_transformed_convex_object.html#aee084d15cbc724e8a28b88298a557573", null ], + [ "GetSupport", "struct_transformed_convex_object.html#a0fa745b8d15e71629ebb719716d16fa8", null ], + [ "GetSupportingFace", "struct_transformed_convex_object.html#ae7e5d51b4cbb01eb146274711eec26e2", null ], + [ "mObject", "struct_transformed_convex_object.html#a8c84c2341aa11607eea77a7c09329f63", null ], + [ "mTransform", "struct_transformed_convex_object.html#a4314714041c688936d9c9078af6c37e1", null ] +]; \ No newline at end of file diff --git a/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block-members.html b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block-members.html new file mode 100644 index 000000000..65b5e52fc --- /dev/null +++ b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlock Member List
    +
    + +
    + + + + diff --git a/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.html b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.html new file mode 100644 index 000000000..6a8df633a --- /dev/null +++ b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.html @@ -0,0 +1,170 @@ + + + + + + + +Jolt Physics: TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlock Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlock Struct Reference
    +
    +
    + +

    A block of 4 triangles. + More...

    + +

    #include <TriangleCodecIndexed8BitPackSOA4Flags.h>

    + + + + + + + + +

    +Public Attributes

    uint8 mIndices [3][4]
     8 bit indices to triangle vertices for 4 triangles in the form mIndices[vertex][triangle] where vertex in [0, 2] and triangle in [0, 3]
     
    uint8 mFlags [4]
     Triangle flags (could contain material and active edges)
     
    +

    Detailed Description

    +

    A block of 4 triangles.

    +

    Member Data Documentation

    + +

    ◆ mFlags

    + +
    +
    + + + + +
    uint8 TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlock::mFlags[4]
    +
    + +

    Triangle flags (could contain material and active edges)

    + +
    +
    + +

    ◆ mIndices

    + +
    +
    + + + + +
    uint8 TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlock::mIndices[3][4]
    +
    + +

    8 bit indices to triangle vertices for 4 triangles in the form mIndices[vertex][triangle] where vertex in [0, 2] and triangle in [0, 3]

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.js b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.js new file mode 100644 index 000000000..27e3c6678 --- /dev/null +++ b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.js @@ -0,0 +1,5 @@ +var struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block = +[ + [ "mFlags", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.html#a60f89a38a5a24637c79e79e7283afcff", null ], + [ "mIndices", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block.html#a68cd4254b336df34bec84b1f2a01a781", null ] +]; \ No newline at end of file diff --git a/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header-members.html b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header-members.html new file mode 100644 index 000000000..d42b51bf7 --- /dev/null +++ b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header-members.html @@ -0,0 +1,120 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader Member List
    +
    + +
    + + + + diff --git a/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html new file mode 100644 index 000000000..2e26f490f --- /dev/null +++ b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html @@ -0,0 +1,234 @@ + + + + + + + +Jolt Physics: TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader Struct Reference
    +
    +
    + +

    A triangle header, will be followed by one or more TriangleBlocks. + More...

    + +

    #include <TriangleCodecIndexed8BitPackSOA4Flags.h>

    + + + + + + + + +

    +Public Member Functions

    const VertexDataGetVertexData () const
     
    const TriangleBlockGetTriangleBlock () const
     
    const uint32GetUserData () const
     
    + + + +

    +Public Attributes

    uint32 mFlags
     
    +

    Detailed Description

    +

    A triangle header, will be followed by one or more TriangleBlocks.

    +

    Member Function Documentation

    + +

    ◆ GetTriangleBlock()

    + +
    +
    + + + + + +
    + + + + + + + +
    const TriangleBlock * TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader::GetTriangleBlock () const
    +
    +inline
    +
    + +
    +
    + +

    ◆ GetUserData()

    + +
    +
    + + + + + +
    + + + + + + + +
    const uint32 * TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader::GetUserData () const
    +
    +inline
    +
    + +
    +
    + +

    ◆ GetVertexData()

    + +
    +
    + + + + + +
    + + + + + + + +
    const VertexData * TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader::GetVertexData () const
    +
    +inline
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mFlags

    + +
    +
    + + + + +
    uint32 TriangleCodecIndexed8BitPackSOA4Flags::TriangleBlockHeader::mFlags
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.js b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.js new file mode 100644 index 000000000..134ca7204 --- /dev/null +++ b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.js @@ -0,0 +1,7 @@ +var struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header = +[ + [ "GetTriangleBlock", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html#a9965a86ef8ae2822aeb95ee98f4811fd", null ], + [ "GetUserData", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html#ad05b875676147545245c4086c4588ca7", null ], + [ "GetVertexData", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html#a065d0f2f856b48f8ae6c44a7f7ec8a0f", null ], + [ "mFlags", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_triangle_block_header.html#a4f9d7524935e5df1acbdea40b2ccbd19", null ] +]; \ No newline at end of file diff --git a/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data-members.html b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data-members.html new file mode 100644 index 000000000..549cbcf0a --- /dev/null +++ b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    TriangleCodecIndexed8BitPackSOA4Flags::VertexData Member List
    +
    + +
    + + + + diff --git a/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.html b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.html new file mode 100644 index 000000000..1da3555d0 --- /dev/null +++ b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.html @@ -0,0 +1,164 @@ + + + + + + + +Jolt Physics: TriangleCodecIndexed8BitPackSOA4Flags::VertexData Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    TriangleCodecIndexed8BitPackSOA4Flags::VertexData Struct Reference
    +
    +
    + +

    A single packed vertex. + More...

    + +

    #include <TriangleCodecIndexed8BitPackSOA4Flags.h>

    + + + + + + +

    +Public Attributes

    uint32 mVertexXY
     
    uint32 mVertexZY
     
    +

    Detailed Description

    +

    A single packed vertex.

    +

    Member Data Documentation

    + +

    ◆ mVertexXY

    + +
    +
    + + + + +
    uint32 TriangleCodecIndexed8BitPackSOA4Flags::VertexData::mVertexXY
    +
    + +
    +
    + +

    ◆ mVertexZY

    + +
    +
    + + + + +
    uint32 TriangleCodecIndexed8BitPackSOA4Flags::VertexData::mVertexZY
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.js b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.js new file mode 100644 index 000000000..431232102 --- /dev/null +++ b/struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.js @@ -0,0 +1,5 @@ +var struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data = +[ + [ "mVertexXY", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.html#ad2e1750c341249ae3793b2db7c68648a", null ], + [ "mVertexZY", "struct_triangle_codec_indexed8_bit_pack_s_o_a4_flags_1_1_vertex_data.html#ae2776c91a44cddc8ee6daa495c725e2f", null ] +]; \ No newline at end of file diff --git a/struct_triangle_convex_support-members.html b/struct_triangle_convex_support-members.html new file mode 100644 index 000000000..b4d18ba03 --- /dev/null +++ b/struct_triangle_convex_support-members.html @@ -0,0 +1,122 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    TriangleConvexSupport Member List
    +
    +
    + +

    This is the complete list of members for TriangleConvexSupport, including all inherited members.

    + + + + + + + +
    GetSupport(Vec3Arg inDirection) constTriangleConvexSupportinline
    GetSupportingFace(Vec3Arg inDirection, VERTEX_ARRAY &outVertices) constTriangleConvexSupportinline
    mV1TriangleConvexSupport
    mV2TriangleConvexSupport
    mV3TriangleConvexSupport
    TriangleConvexSupport(Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3)TriangleConvexSupportinline
    +
    + + + + diff --git a/struct_triangle_convex_support.html b/struct_triangle_convex_support.html new file mode 100644 index 000000000..60a54ae99 --- /dev/null +++ b/struct_triangle_convex_support.html @@ -0,0 +1,311 @@ + + + + + + + +Jolt Physics: TriangleConvexSupport Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    TriangleConvexSupport Struct Reference
    +
    +
    + +

    Class that wraps a triangle so that it can used with convex collision detection. + More...

    + +

    #include <ConvexSupport.h>

    + + + + + + + + + + + + +

    +Public Member Functions

     TriangleConvexSupport (Vec3Arg inV1, Vec3Arg inV2, Vec3Arg inV3)
     Constructor.
     
    Vec3 GetSupport (Vec3Arg inDirection) const
     Calculate the support vector for this convex shape.
     
    template<class VERTEX_ARRAY >
    void GetSupportingFace (Vec3Arg inDirection, VERTEX_ARRAY &outVertices) const
     Get the vertices of the face that faces inDirection the most.
     
    + + + + + + + + +

    +Public Attributes

    Vec3 mV1
     The three vertices of the triangle.
     
    Vec3 mV2
     
    Vec3 mV3
     
    +

    Detailed Description

    +

    Class that wraps a triangle so that it can used with convex collision detection.

    +

    Constructor & Destructor Documentation

    + +

    ◆ TriangleConvexSupport()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    TriangleConvexSupport::TriangleConvexSupport (Vec3Arg inV1,
    Vec3Arg inV2,
    Vec3Arg inV3 
    )
    +
    +inline
    +
    + +

    Constructor.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetSupport()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Vec3 TriangleConvexSupport::GetSupport (Vec3Arg inDirection) const
    +
    +inline
    +
    + +

    Calculate the support vector for this convex shape.

    + +
    +
    + +

    ◆ GetSupportingFace()

    + +
    +
    +
    +template<class VERTEX_ARRAY >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void TriangleConvexSupport::GetSupportingFace (Vec3Arg inDirection,
    VERTEX_ARRAY & outVertices 
    ) const
    +
    +inline
    +
    + +

    Get the vertices of the face that faces inDirection the most.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mV1

    + +
    +
    + + + + +
    Vec3 TriangleConvexSupport::mV1
    +
    + +

    The three vertices of the triangle.

    + +
    +
    + +

    ◆ mV2

    + +
    +
    + + + + +
    Vec3 TriangleConvexSupport::mV2
    +
    + +
    +
    + +

    ◆ mV3

    + +
    +
    + + + + +
    Vec3 TriangleConvexSupport::mV3
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_triangle_convex_support.js b/struct_triangle_convex_support.js new file mode 100644 index 000000000..7fb27c4ad --- /dev/null +++ b/struct_triangle_convex_support.js @@ -0,0 +1,9 @@ +var struct_triangle_convex_support = +[ + [ "TriangleConvexSupport", "struct_triangle_convex_support.html#aff7b77e932e636e0fe582cd01c5c05fa", null ], + [ "GetSupport", "struct_triangle_convex_support.html#ac824e6c13d9702af6699e7ba4beccb4c", null ], + [ "GetSupportingFace", "struct_triangle_convex_support.html#ab06eab6917e292cdf749432e50ac9159", null ], + [ "mV1", "struct_triangle_convex_support.html#a50d0969071796932f1e6463f44d6265d", null ], + [ "mV2", "struct_triangle_convex_support.html#af687a449850628811fad039fe5d7e308", null ], + [ "mV3", "struct_triangle_convex_support.html#a9ffeaa522b588040a0e6ccb36904ec99", null ] +]; \ No newline at end of file diff --git a/struct_triangle_splitter_1_1_range-members.html b/struct_triangle_splitter_1_1_range-members.html new file mode 100644 index 000000000..2db49cfe3 --- /dev/null +++ b/struct_triangle_splitter_1_1_range-members.html @@ -0,0 +1,121 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    TriangleSplitter::Range Member List
    +
    +
    + +

    This is the complete list of members for TriangleSplitter::Range, including all inherited members.

    + + + + + + +
    Count() constTriangleSplitter::Rangeinline
    mBeginTriangleSplitter::Range
    mEndTriangleSplitter::Range
    Range()=defaultTriangleSplitter::Range
    Range(uint inBegin, uint inEnd)TriangleSplitter::Rangeinline
    +
    + + + + diff --git a/struct_triangle_splitter_1_1_range.html b/struct_triangle_splitter_1_1_range.html new file mode 100644 index 000000000..9c25ff119 --- /dev/null +++ b/struct_triangle_splitter_1_1_range.html @@ -0,0 +1,271 @@ + + + + + + + +Jolt Physics: TriangleSplitter::Range Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    TriangleSplitter::Range Struct Reference
    +
    +
    + +

    Helper struct to indicate triangle range before and after the split. + More...

    + +

    #include <TriangleSplitter.h>

    + + + + + + + + + + +

    +Public Member Functions

     Range ()=default
     Constructor.
     
     Range (uint inBegin, uint inEnd)
     
    uint Count () const
     Get number of triangles in range.
     
    + + + + + + +

    +Public Attributes

    uint mBegin
     Start and end index (end = 1 beyond end)
     
    uint mEnd
     
    +

    Detailed Description

    +

    Helper struct to indicate triangle range before and after the split.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Range() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    TriangleSplitter::Range::Range ()
    +
    +default
    +
    + +

    Constructor.

    + +
    +
    + +

    ◆ Range() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    TriangleSplitter::Range::Range (uint inBegin,
    uint inEnd 
    )
    +
    +inline
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ Count()

    + +
    +
    + + + + + +
    + + + + + + + +
    uint TriangleSplitter::Range::Count () const
    +
    +inline
    +
    + +

    Get number of triangles in range.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ mBegin

    + +
    +
    + + + + +
    uint TriangleSplitter::Range::mBegin
    +
    + +

    Start and end index (end = 1 beyond end)

    + +
    +
    + +

    ◆ mEnd

    + +
    +
    + + + + +
    uint TriangleSplitter::Range::mEnd
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_triangle_splitter_1_1_range.js b/struct_triangle_splitter_1_1_range.js new file mode 100644 index 000000000..7ffbbdd82 --- /dev/null +++ b/struct_triangle_splitter_1_1_range.js @@ -0,0 +1,8 @@ +var struct_triangle_splitter_1_1_range = +[ + [ "Range", "struct_triangle_splitter_1_1_range.html#afb985794a6e2aec93427d7336f308753", null ], + [ "Range", "struct_triangle_splitter_1_1_range.html#a82090fe51800c354e7b86c60aade57d8", null ], + [ "Count", "struct_triangle_splitter_1_1_range.html#ac12fcc73a1363b85a915d255f01dd176", null ], + [ "mBegin", "struct_triangle_splitter_1_1_range.html#aca70a315ff7dcbd97b4171751dd97afd", null ], + [ "mEnd", "struct_triangle_splitter_1_1_range.html#a360b002f40882d5fa400954934efec22", null ] +]; \ No newline at end of file diff --git a/struct_triangle_splitter_1_1_stats-members.html b/struct_triangle_splitter_1_1_stats-members.html new file mode 100644 index 000000000..bf8e50f8b --- /dev/null +++ b/struct_triangle_splitter_1_1_stats-members.html @@ -0,0 +1,118 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    TriangleSplitter::Stats Member List
    +
    +
    + +

    This is the complete list of members for TriangleSplitter::Stats, including all inherited members.

    + + + +
    mLeafSizeTriangleSplitter::Stats
    mSplitterNameTriangleSplitter::Stats
    +
    + + + + diff --git a/struct_triangle_splitter_1_1_stats.html b/struct_triangle_splitter_1_1_stats.html new file mode 100644 index 000000000..635000043 --- /dev/null +++ b/struct_triangle_splitter_1_1_stats.html @@ -0,0 +1,159 @@ + + + + + + + +Jolt Physics: TriangleSplitter::Stats Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    TriangleSplitter::Stats Struct Reference
    +
    +
    + +

    #include <TriangleSplitter.h>

    + + + + + + +

    +Public Attributes

    const char * mSplitterName = nullptr
     
    int mLeafSize = 0
     
    +

    Member Data Documentation

    + +

    ◆ mLeafSize

    + +
    +
    + + + + +
    int TriangleSplitter::Stats::mLeafSize = 0
    +
    + +
    +
    + +

    ◆ mSplitterName

    + +
    +
    + + + + +
    const char* TriangleSplitter::Stats::mSplitterName = nullptr
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/struct_triangle_splitter_1_1_stats.js b/struct_triangle_splitter_1_1_stats.js new file mode 100644 index 000000000..8b774d003 --- /dev/null +++ b/struct_triangle_splitter_1_1_stats.js @@ -0,0 +1,5 @@ +var struct_triangle_splitter_1_1_stats = +[ + [ "mLeafSize", "struct_triangle_splitter_1_1_stats.html#a33499dd8acab67cf3456bf92b774c1b7", null ], + [ "mSplitterName", "struct_triangle_splitter_1_1_stats.html#ab1f9c15898ed3aa0fa0586ef851e0863", null ] +]; \ No newline at end of file diff --git a/structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4-members.html b/structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4-members.html new file mode 100644 index 000000000..521263c54 --- /dev/null +++ b/structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    std::hash< JPH::StaticArray< T, N > > Member List
    +
    +
    + +

    This is the complete list of members for std::hash< JPH::StaticArray< T, N > >, including all inherited members.

    + + +
    operator()(const JPH::StaticArray< T, N > &inRHS) conststd::hash< JPH::StaticArray< T, N > >inline
    +
    + + + + diff --git a/structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.html b/structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.html new file mode 100644 index 000000000..870ebbf73 --- /dev/null +++ b/structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.html @@ -0,0 +1,163 @@ + + + + + + + +Jolt Physics: std::hash< JPH::StaticArray< T, N > > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    std::hash< JPH::StaticArray< T, N > > Struct Template Reference
    +
    +
    + +

    Declare std::hash for StaticArray. + More...

    + +

    #include <StaticArray.h>

    + + + + +

    +Public Member Functions

    size_t operator() (const JPH::StaticArray< T, N > &inRHS) const
     
    +

    Detailed Description

    +
    template<class T, JPH::uint N>
    +struct std::hash< JPH::StaticArray< T, N > >

    Declare std::hash for StaticArray.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class T , JPH::uint N>
    + + + + + +
    + + + + + + + + +
    size_t std::hash< JPH::StaticArray< T, N > >::operator() (const JPH::StaticArray< T, N > & inRHS) const
    +
    +inline
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.js b/structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.js new file mode 100644 index 000000000..23594eb0d --- /dev/null +++ b/structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.js @@ -0,0 +1,4 @@ +var structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4 = +[ + [ "operator()", "structstd_1_1hash_3_01_j_p_h_1_1_static_array_3_01_t_00_01_n_01_4_01_4.html#a27cb00ccb4f41397fd464f69e200b8f7", null ] +]; \ No newline at end of file diff --git a/structstd_1_1hash_3_01_j_p_h_1_1_string_01_4-members.html b/structstd_1_1hash_3_01_j_p_h_1_1_string_01_4-members.html new file mode 100644 index 000000000..61931ad16 --- /dev/null +++ b/structstd_1_1hash_3_01_j_p_h_1_1_string_01_4-members.html @@ -0,0 +1,117 @@ + + + + + + + +Jolt Physics: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    std::hash< JPH::String > Member List
    +
    +
    + +

    This is the complete list of members for std::hash< JPH::String >, including all inherited members.

    + + +
    operator()(const JPH::String &inRHS) conststd::hash< JPH::String >inline
    +
    + + + + diff --git a/structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.html b/structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.html new file mode 100644 index 000000000..6c53febf0 --- /dev/null +++ b/structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.html @@ -0,0 +1,160 @@ + + + + + + + +Jolt Physics: std::hash< JPH::String > Struct Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    Jolt Physics +
    +
    A multi core friendly Game Physics Engine
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    std::hash< JPH::String > Struct Reference
    +
    +
    + +

    Declare std::hash for String, for some reason on Linux based platforms template deduction takes the wrong variant. + More...

    + +

    #include <STLAllocator.h>

    + + + + +

    +Public Member Functions

    size_t operator() (const JPH::String &inRHS) const
     
    +

    Detailed Description

    +

    Declare std::hash for String, for some reason on Linux based platforms template deduction takes the wrong variant.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    + + + + + +
    + + + + + + + + +
    size_t std::hash< JPH::String >::operator() (const JPH::String & inRHS) const
    +
    +inline
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.js b/structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.js new file mode 100644 index 000000000..8cbda7c2b --- /dev/null +++ b/structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.js @@ -0,0 +1,4 @@ +var structstd_1_1hash_3_01_j_p_h_1_1_string_01_4 = +[ + [ "operator()", "structstd_1_1hash_3_01_j_p_h_1_1_string_01_4.html#a0571f6933c199a1ded43c68ca4b173f0", null ] +]; \ No newline at end of file diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 000000000..3b443fc62 Binary files /dev/null and b/sync_off.png differ diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 000000000..e08320fb6 Binary files /dev/null and b/sync_on.png differ diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 000000000..3b725c41c Binary files /dev/null and b/tab_a.png differ diff --git a/tab_ad.png b/tab_ad.png new file mode 100644 index 000000000..e34850acf Binary files /dev/null and b/tab_ad.png differ diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 000000000..e2b4a8638 Binary files /dev/null and b/tab_b.png differ diff --git a/tab_bd.png b/tab_bd.png new file mode 100644 index 000000000..91c252498 Binary files /dev/null and b/tab_bd.png differ diff --git a/tab_h.png b/tab_h.png new file mode 100644 index 000000000..fd5cb7054 Binary files /dev/null and b/tab_h.png differ diff --git a/tab_hd.png b/tab_hd.png new file mode 100644 index 000000000..2489273d4 Binary files /dev/null and b/tab_hd.png differ diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 000000000..ab478c95b Binary files /dev/null and b/tab_s.png differ diff --git a/tab_sd.png b/tab_sd.png new file mode 100644 index 000000000..757a565ce Binary files /dev/null and b/tab_sd.png differ diff --git a/tabs.css b/tabs.css new file mode 100644 index 000000000..71c8a4704 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file